Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.3.0 - 2026-10-05¶
🏗️ Breaking changes¶
- Defer startup command sync to post_migrate and a management command (#12)
🐛 Fixes¶
- Enforce ScheduledCommand.source choices at database level (#11)
🌀 Others¶
- Build release notes from CHANGELOG.md via just changelog (#10)
0.2.0 - 2026-09-20¶
🚀 Features¶
- xterm.js terminal output, scheduling, cancellation, and execution UX overhaul (#7)
- Live terminal output — stdout/stderr render in an embedded, vendored xterm.js terminal (no CDN): ANSI colors and progress bars display as in a real terminal, replacing the old ANSI-to-HTML conversion; cursor-based delta polling every 250 ms transfers only new characters regardless of output size
- Scalable output storage — append-only 512 KB
CommandOutputPartrows with browser-cacheable sealed parts and a 500 MB retention cap per field (ADMIN_RUNNER_MAX_OUTPUT); deterministic terminal layout viaADMIN_RUNNER_TERM_COLS/TERM_ROWS(exported asCOLUMNS/LINES) and per-commandflush_interval - Scheduling — interactive "Add schedule" admin UI (cron / interval / one-off) and declarative
@register_command(schedule=…)viaCronSchedule/IntervalSchedule/ClockedSchedule, materialized into django-q2's native periodic tasks with an overlap guard and one-off auto-disable - Cancellation & timeouts — graceful Stop via the output-flush heartbeat escalating to Force Stop (Celery
revoke(terminate=True), django-q2 PID-targeted kill); newTIMEOUTstatus with Celery soft-limit mapping (detected by class name regardless of Celery's presence) and a stale-run sweeper that finalizes executions of dead workers - Execution page UX — output/stderr/result tabs, rerun action prefilled with the original parameters, run labels, schedule filter, and status badges on a redesigned changelist
🐛 Fixes¶
0.1.0 - 2026-04-08¶
Features¶
- Initial release
@register_commanddecorator withgroup,permission,params,exclude_params, andmodelssupport- Auto-generated forms from argparse introspection
- Pluggable task runners:
SyncCommandRunner,DjangoTaskRunner,CeleryCommandRunner CommandRunnerModelAdminMixinfor attaching run links to model admin pages- Plain Django admin and Unfold admin support
CommandExecutionmodel with full audit trail