From b375151817dd20ec855bd182b0caefca3c4a4717 Mon Sep 17 00:00:00 2001 From: Tobias Burgherr Date: Sun, 20 Sep 2026 22:19:16 +0200 Subject: [PATCH 1/2] Release ready --- .bumpversion.cfg | 2 +- .gitignore | 1 + CHANGELOG.md | 23 +++++++++++++++++++++++ pyproject.toml | 8 ++------ src/django_admin_runner/__init__.py | 2 +- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 715b1ce..c5f867b 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.1.0 +current_version = 0.2.0 commit = False tag = False allow_dirty = True diff --git a/.gitignore b/.gitignore index 6cd8d77..a590b0a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ __pycache__/ +coverage.xml *.py[cod] *.pyo .venv/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 3209dfd..28102ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ + + # 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). + +## [0.2.0] - 2026-09-20 + +#### 🚀 Features + +- xterm.js terminal output, scheduling, cancellation, and execution UX overhaul ([#7](https://github.com/burgdev/django-admin-runner/pull/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](https://github.com/burgdev/django-admin-runner/pull/6)) +- Fixed parameter type parsing ([#5](https://github.com/burgdev/django-admin-runner/pull/5)) + ## [0.1.0] - 2026-04-08 ### Features diff --git a/pyproject.toml b/pyproject.toml index b37c518..23e24e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "django-admin-runner" -version = "0.1.0" +version = "0.2.0" description = "Run Django management commands from the admin with auto-generated forms and pluggable task runners" readme = "README.md" license = { text = "MIT" } @@ -46,11 +46,7 @@ docs = [ "mkdocs-section-index>=0.3.9", "mkdocstrings[python]>=0.22.0", ] -test = [ - "pytest>=8.3.4", - "pytest-django>=4.10.0", - "pytest-cov>=4.1.0", -] +test = ["pytest>=8.3.4", "pytest-django>=4.10.0", "pytest-cov>=4.1.0"] [build-system] requires = ["hatchling"] diff --git a/src/django_admin_runner/__init__.py b/src/django_admin_runner/__init__.py index 262898a..45abbcd 100644 --- a/src/django_admin_runner/__init__.py +++ b/src/django_admin_runner/__init__.py @@ -2,7 +2,7 @@ from django_admin_runner.forms import FileField, FileOrPathField, FileOrPathWidget, ImageField from django_admin_runner.registry import register_command -__version__ = "0.1.0" +__version__ = "0.2.0" __all__ = [ "register_command", From 53a868ee609dd5572975bbdbbc3eea0d4cc6a837 Mon Sep 17 00:00:00 2001 From: Tobias Burgherr Date: Sun, 20 Sep 2026 22:37:24 +0200 Subject: [PATCH 2/2] Add links --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28102ef..656a47a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,3 +34,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `CommandRunnerModelAdminMixin` for attaching run links to model admin pages - Plain Django admin and Unfold admin support - `CommandExecution` model with full audit trail + +[0.2.0]: https://github.com/burgdev/django-admin-runner/compare/v0.1.0..v0.2.0 +[0.1.0]: https://github.com/burgdev/django-admin-runner/releases/tag/v0.1.0