Skip to content

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 CommandOutputPart rows with browser-cacheable sealed parts and a 500 MB retention cap per field (ADMIN_RUNNER_MAX_OUTPUT); deterministic terminal layout via ADMIN_RUNNER_TERM_COLS/TERM_ROWS (exported as COLUMNS/LINES) and per-command flush_interval
  • Scheduling — interactive "Add schedule" admin UI (cron / interval / one-off) and declarative @register_command(schedule=…) via CronSchedule / 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); new TIMEOUT status 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

  • Improve subtitle in admin view (#6)
  • Fixed parameter type parsing (#5)

0.1.0 - 2026-04-08

Features

  • Initial release
  • @register_command decorator with group, permission, params, exclude_params, and models support
  • Auto-generated forms from argparse introspection
  • Pluggable task runners: SyncCommandRunner, DjangoTaskRunner, CeleryCommandRunner
  • CommandRunnerModelAdminMixin for attaching run links to model admin pages
  • Plain Django admin and Unfold admin support
  • CommandExecution model with full audit trail