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.

[Unreleased]

[0.4.0] - 2026-10-09

Added

  • Versioned codex-django-cli consumer skill with focused scaffolding and blueprint references, plus offline install, update, status, and delete commands. Managed-file hashes protect local edits and unrelated project instructions.
  • Project-owned CLI development skill under docs/agent-skills to keep source maintenance guidance separate from installed consumer content.
  • Optional messaging cabinet blueprint with project-owned models, selectors, services, views, and templates backed by the codex-django 0.7.0 runtime contract.
  • cabinet_booking/ blueprint: Booking cabinet integration extracted into its own top-level blueprint family, separate from the base cabinet/ scaffold. Scaffolded only when with_booking=True; standard init no longer generates booking artefacts in cabinet.
  • settings/modules/booking.py: Dedicated settings module for booking configuration (BOOKING_DEFAULT_SLOT_MINUTES, BOOKING_MAX_ADVANCE_DAYS, BOOKING_CHAIN_MODE, etc.) — all env-backed, generated only when with_booking=True.
  • settings/modules/notifications.py: Dedicated settings module for ARQ worker + email notification config — generated only when with_notifications=True.
  • cabinet/fixtures/demo_analytics.json: Demo data extracted from AnalyticsService into a scaffolded JSON fixture. Service methods read from disk on first call (functools.cache). Replace method bodies with real DB queries when ready; delete the fixture file — no other changes required.
  • notifications module option: Added notifications flag to InstallSelection, ResolvedInstallPlan, CLI (--with-notifications), and interactive menu.
  • get_report_page() in AnalyticsService: Returns fully typed ReportPageData using codex_django.cabinet report types (ReportChartData, ReportTableData, ReportTabData, ReportSummaryCardData, ChartDatasetData, TableColumn, resolve_report_period).
  • Cabinet shell URL settings in codex.py: CODEX_CABINET_SITE_URL, CODEX_CABINET_LOGIN_URL_NAME, CODEX_CABINET_LOGOUT_URL_NAME, CODEX_CABINET_STAFF_URL_NAME, CODEX_CABINET_CLIENT_URL_NAME — all env-backed (codex-django 0.4.4+).
  • i18n coverage: All verbose_name / verbose_name_plural in model Meta classes now wrapped in gettext_lazy. apps.py blueprints include verbose_name. Booking cabinet modal UI strings (label=, title=, placeholder=, select options) wrapped in _(). Zero Cyrillic strings outside _() in blueprint .py.j2 files.
  • New integration tests: booking isolation (8), cabinet API surface (4), settings modules (9), demo fixture JSON validity (4). Total: +25 tests vs 0.3.0.

Changed

  • Generated projects require codex-django>=0.7.0,<1.0.0, and the CLI development environment uses codex-core>=0.5.0,<1.0.0.
  • Admin scaffolding can use Unfold or Django's built-in admin via --with-unfold / --without-unfold.
  • Booking-specific client appointments moved out of the base cabinet scaffold; the booking option owns that flow.
  • Module selection model simplified: booking_engine + booking_cabinet merged into single booking flag. One selection scaffolds both the booking engine and cabinet integration.
  • Analytics views: AnalyticsReportsView now uses library template cabinet/reports/page.html (0.4.4+) and passes typed context["report"] = ReportPageData.
  • LOGIN_URL parametrised: No longer hardcoded /cabinet/login/; now reads from CABINET_LOGIN_URL env var with the same default.
  • Thin Views / Service Layer enforced: All generated views call service/selector methods only. Business logic lives in services/, read queries in selectors/. Each method is independently testable without HTTP context.

Removed

  • booking_cabinet flag from InstallSelection — replaced by unified booking flag.
  • Hardcoded demo data in Python layer — moved to cabinet/fixtures/demo_analytics.json.j2.
  • DRF API scaffold stage — removed from roadmap; DRF is not part of this project's stack.

Fixed

  • Messaging projects register features.messaging in INSTALLED_APPS so generated models load during Django startup.
  • Standard init no longer generates booking layer in cabinet — test_scaffold_new_project_standard_does_not_include_booking guards this regression.
  • analytics.py.j2 booking metric isolation — "bookings" KPI and table column only present when with_booking=True; verified by fixture JSON tests.
  • booking/cabinet import path — services/cabinet.py.j2 now imports from codex_django.booking.cabinet (public API), not from internal booking.cabinet.types.

[0.3.0] - 2026-04-05

Added

  • Cabinet blueprint package: Extracted a dedicated top-level cabinet blueprint family with templates, services, views, assets, and cabinet routing for richer scaffold generation.
  • Booking scaffolding layers: Added booking_core, booking_public, and expanded booking feature templates for providers, runtime services, public flow steps, and cabinet booking builders.
  • Conversations scaffolding: Added the features/conversations blueprint set with models, migrations, services, selectors, cabinet integration, and contact flow templates.
  • System/project templates: Added scaffold templates for startserver, compile_assets, client profile selectors/services, site settings services, user profile model, manifest/robots/sw assets, and LLM-facing text templates.
  • CLI utilities: Added install and repo commands plus project-tree generation helpers and dedicated unit coverage for the new command surface.

Changed

  • CLI command architecture: Refactored the main command registry and prompts, consolidating legacy command flows into the new install/repo oriented structure.
  • Cabinet layout organization: Moved cabinet scaffold assets out of blueprints/project/cabinet into a reusable top-level blueprint package and aligned dependent project templates accordingly.
  • Developer quality gates: Updated pyproject.toml, tools/dev/check.py, and scaffolded repo tooling to use the shared codex-core>=0.3.0,<0.4.0 check flow and restored default unit coverage settings.
  • Documentation: Updated English and Russian CLI architecture/getting-started pages to reflect the new scaffold layout and the python ... manage.py startserver workflow.
  • Release hygiene: Ignored local sandbox and generated overview artifacts so exploratory audit output does not leak into future release commits.

Removed

  • Legacy CLI entrypoints: Removed the old add_app, booking, client_cabinet, and notifications command modules from the standalone CLI package.
  • Obsolete scaffold pieces: Removed legacy cabinet mock/selector/users templates and replaced the old runserver_plus management command template with startserver.

[0.2.4] - 2026-03-30

Changed

  • Documentation: Updated and reorganized the documentation in both English and Russian.
  • Styling: Minor updates to the documentation stylesheets.
  • Templates: Updated the urls.py.j2 template.
  • Tests: Updated integration tests.

[0.2.3] - 2026-03-30

Changed

  • CLI/runtime boundary: Removed the generated manage.py bridge into the CLI so scaffolded Django projects keep python manage.py ... as a pure runtime entrypoint, while codex-django ... remains the separate scaffolding tool.
  • Project-local CLI flow: Added an explicit Init new project action to the project-local CLI menu so creating another project instance no longer depends on any runtime menu coupling.
  • Architecture docs alignment: Updated English and Russian CLI architecture guides to document the hard separation between runtime management commands and scaffolding entrypoints.

Added

  • E2E boundary checks: Added end-to-end assertions that generated manage.py files do not import the CLI bridge and remain plain Django management entrypoints.

[0.2.2] - 2026-03-30

Added

  • Install-chain E2E smoke coverage: Added a parametrized end-to-end smoke test for both local editable install chain and optional online install chain, including generated-project runtime sanity checks.
  • Subprocess diagnostics fixture: Added a shared helper fixture for subprocess-based tests with command tracing, elapsed time logging, and rich failure output.

Changed

  • Developer check flow: Updated tools/dev/check.py so unit tests keep coverage, e2e can run with live subprocess output, and integration/e2e runs are prompted explicitly.
  • Pytest default flags: Removed global coverage addopts from pyproject.toml so integration/e2e runs are not forced through coverage instrumentation by default.
  • Scaffold verification tests: Refined integration and unit expectations around notification scaffolding paths and generated app configuration values.
  • Install-chain documentation: Expanded README.md with concrete local and online install-chain e2e command examples and environment variable toggles.

Fixed

  • Secret scanner false positives: Added allowlist pragmas to scaffolded .env example secret placeholders and the commented DATABASE_URL template line generated during project init.

[0.2.1] - 2026-03-29

Changed

  • Notifications as base layer: Moved notification scaffolding into the shared system and core/arq layers and removed it from optional init module selection so generated projects start with a consistent messaging foundation.
  • Project bootstrap environment: init now creates a real local .env with a generated Django SECRET_KEY and a valid Fernet FIELD_ENCRYPTION_KEY, while .env.example remains a repository-safe example file.
  • Security menu output: Split the interactive security helper into separate Django and Fernet key generation so scaffold users do not confuse the two values.
  • Single-language i18n support: Kept translation-aware mode enabled for i18n + 1 language and rendered a valid MODELTRANSLATION_LANGUAGES tuple for that case.

Fixed

  • Notification template filenames: Renamed notification blueprints to *.py.j2 so generated projects no longer receive Python source files without the .py extension.
  • Generated app config consistency: Aligned local AppConfig.name values for system and features.main with the scaffold's short import model, fixing startup failures such as StaticPageSeo not belonging to an installed app.
  • Scaffold onboarding text: Clarified generated-project next steps and i18n messaging so user-facing output matches the actual bootstrap flow.

[0.2.0] - 2026-03-29

Added

  • Release automation baseline: Added standard GitHub Actions workflows for CI, documentation deployment, and PyPI publishing so the package can follow the same release pipeline as the other codex-* repositories.
  • Versioned docs changelog page: Added a root CHANGELOG.md and a docs/changelog.md include page so release notes are published with the MkDocs site.
  • Roadmap documentation: Added a roadmap entry documenting the planned extraction of deployment, CI/CD, and pre-commit scaffolding into a separate reusable library for future use by codex-django, codex-bot, and codex-fastapi.
  • Coverage-complete command tests: Expanded unit coverage for the standalone command layer, including booking and client-cabinet scaffolding flows, bringing unit coverage to the release target.

Changed

  • Documentation metadata: Updated the documentation URL and MkDocs configuration to align the repository with the shared Codex documentation pattern, including mike versioning support and published changelog navigation.
  • Packaging boundaries: Removed the direct runtime dependency on codex-django from codex-django-cli after confirming that codex-django is required by generated projects, not by the CLI package itself.
  • Checker standardization: Reworked tools/dev/check.py to use the shared flag-based BaseCheckRunner pattern from codex-core, restoring a consistent quality-gate interface across Codex repositories.
  • Development dependency policy: Added codex-core>=0.2.2,<0.3.0 as the bounded development dependency required by the shared check runner.
  • Lockfile scope: Regenerated uv.lock after the dependency cleanup so the standalone CLI environment no longer pulls in the Django runtime stack unnecessarily.
  • Lazy Django command bridge: Switched the CLI utility bridge to lazy runtime imports so standalone typing and installation no longer require Django to be installed.

Fixed

  • detect-secrets false positives: Marked scaffold example values in deploy templates and workflow templates with allowlist pragmas so pre-commit passes without treating example credentials as real leaked secrets.
  • Standalone mypy boundary: Removed the last direct Django import from the CLI runtime code path so type-checking succeeds without a Django dependency in the package environment.
  • Unit test compatibility: Updated CLI utility tests to mock the new lazy import path instead of importing django.core.management directly.

[0.1.0] - 2026-03-28

Added

  • Standalone package extraction: Created codex-django-cli as a dedicated repository by extracting the CLI layer from codex-django on March 28, 2026.
  • Interactive CLI ownership: Moved the codex-django command, prompt flow, scaffold handlers, and blueprint rendering engine into the standalone package.
  • Packaged blueprint assets: Brought over project, feature, deployment, and repository templates required to scaffold Codex Django projects.
  • CLI documentation set: Added English and Russian guides covering installation modes, runtime vs CLI responsibilities, architecture, commands, and generated project output.
  • Developer quality tooling: Added pytest, Ruff, Mypy, Bandit, pip-audit, pre-commit, MkDocs, and uv-based project metadata for independent CLI development.

Changed

  • Repository boundaries: Separated CLI concerns from the runtime library so codex-django can depend on the CLI optionally, while generated projects continue to depend on codex-django itself.