

# CHANGELOG

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).


## v0.1.16 - 2026-01-17

**Changed**:

-   Dropped docs/README.md and dropped CHANGELOG.md TOC
-   Deleted root README.md, relying on org mode rendering
-   Updated documentation and changelog structure


## v0.1.15 - 2026-01-17

**Changed**:

-   Dropped and ignored Gemfile.lock


## v0.1.14 - 2026-01-17

**Changed**:

-   Pulled v0.1.16
-   Updated docs, added CHANGELOG, and fixed a couple small testing bugs
-   Updated READMEs


## v0.1.13 - 2025-05-15

**Added**:

-   More flexible control/ondemand check window

**Changed**:

-   Debugging control & ondemand out-of-loop
-   Debugging PyBee, dispatch and models
-   Moved load<sub>plugins</sub> to only non-admin commands
-   Fixed regression bugs involving PyBee.run()


## v0.1.12 - 2025-05-16

**Added**:

-   CommandNotReady exception handling for some commands
-   User/group support for systemd service templates and logic
-   Working directory configuration for systemd services

**Changed**:

-   Fixed path resolution for scripts directory
-   Removed extra output from admin service
-   Updated documentation for test.pypi.org release


## v0.1.11 - 2025-05-14

**Changed**:

-   Major refactor to use [Hatch](https://hatch.pypa.io) project manager for PyPI packaging
-   Restructured project layout with all modules under `src/wurker`
-   Converted from argparse to Click for CLI framework with nested subcommands
-   Implemented plugin system for injected dependencies
-   Updated SQLAlchemy to v2.0 syntax
-   Revised CLI commands to use `--slug` option and `--drone` filtering
-   Enhanced service configuration with user/group support
-   Improved exception handling for `CommandNotReady` errors
-   Updated documentation and configuration for system dependencies


## v0.1.10 - 2025-05-12

**Added**:

-   CommandNotReady exception handling for some commands
-   User/group support for systemd service templates and logic
-   Working directory configuration for systemd services

**Changed**:

-   Fixed path resolution for scripts directory
-   Removed extra output from admin service
-   Updated documentation for test.pypi.org release


## v0.1.7 - 2025-04-15

**Added**:

-   Logic to restrict some CLI commands until resources are marshalled
-   Bundled node<sub>modules</sub> for UI dependencies

**Changed**:

-   Various bug fixes and improvements
-   Removed sudo-required functionality
-   Updated documentation


## v0.1.6 - 2025-04-15

**Added**:

-   No specific changes noted in commit history


## v0.1.5 - 2025-04-15

**Added**:

-   Bundled node<sub>modules</sub> for UI dependencies
-   Updated pyproject.toml for Hatch configuration
-   Include src/wurker/etc/ data in package

**Changed**:

-   Updated documentation in preparation for test.pypi.org release


## v0.1.4 - 2025-04-14

**Added**:

-   Plugin system implementation for injected dependencies
-   Support for MySQL and PostgreSQL databases

**Changed**:

-   Major revisions to multiple components for improved functionality


## v0.1.3 - 2025-04-13

**Added**:

-   No specific changes noted in commit history


## v0.1.2 - 2025-04-13

**Added**:

-   No specific changes noted in commit history


## v0.1.1 - 2025-04-13

**Added**:

-   No specific changes noted in commit history


## v0.1.0 - 2025-04-09

**Added**:

-   Complete transition to Hatch project structure
-   Full Click-based CLI implementation
-   Enhanced documentation system
-   GitLab CI/CD integration

**Changed**:

-   Refactored to use modern Python packaging standards
-   Updated all dependencies and configurations for PyPI distribution


## v0.0.20 - 2024-04-26

**Added**:

-   Add `overrun` column to `wurker_cron` table (model).
-   Refactor UIs, seeder and seeds. Make optional everywhere.
-   Add `runcount` field to `wurker_bee_report.status_info` for display.
-   Wurkers should know if they're Queens or Drones. Both should have an API, but only Queens have a GUI.
-   The Queen's Court should provide the same intuitive display and control of Drone data.
-   Wurker UI should have a login screen and session.
-   Wurker UI and API should support HTTPS.
-   After login, the Queen may use Basic HTTP Auth to access Drone APIs.
-   User logins should be configured via Stinger.
-   Accessing Wurker UI or API (nginx) should be via HTTPS, not HTTP. Should support self-signed certs by default.
-   Add `wurk report` subcommand with filtering.
-   Add Report view to Wurker UI (separate page) with same filters as CLI.
-   Add Action buttons per Bee row, and Cron table, for pre-filtered Report views.
-   Implement Alembic migrations in place of current create schema logic.

**Changed**:

-   Derive `timeout` instead of setting it. If the Bee has a scheduled Cron, then use that as the timeout. If it is a supervised Cron, then it should have no timeout. Ondemand should use the same timeout logic.
-   Derive `runcount` from Cron to `BaseBee.runcount` for runtime reference.
-   Upon timeout in `_run_scheduled()`:
    -   If `bee.overrun == 0` then timeout as normal. Set report status to `TIMEOUT`.
    -   If `bee.overrun > 0 and bee.runcount < bee.overrun` then increment `bee.runcount`, and let this Cron overrun the next Cron. Set report status to `OVERRUN`.
    -   If `bee.overrun > 0 and bee.runcount >= bee.overrun` then `TIMEOUT` the overrun.
-   Deleting a Bee or Cron should cascade into Report table.
-   Add `pid` and `timestamp` Hive columns, and set them when the Bee is added to the Hive.
-   Add nullable `duration` Hive column, which is set only when the Cron ends.
-   Change `wurker_bee_report.status` enum to: `PROCESSING, OVERRUN, COMPLETED, TIMEOUT, ERROR`
-   Insert record on `bee.run()` as `PROCESSING`
-   Update status to `OVERRUN` upon allowed overrun, or to `TIMEOUT` if not allowed.
-   Record `stdout` errors from Bees, and PyBee exceptions into `status_info` JSON.
-   Every Cron ending should cause a final write, setting `duration`, `status`, and `status_info`.

\*/ Changelog Entries

