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-cliconsumer 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-skillsto 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-django0.7.0 runtime contract. cabinet_booking/blueprint: Booking cabinet integration extracted into its own top-level blueprint family, separate from the basecabinet/scaffold. Scaffolded only whenwith_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 whenwith_booking=True.settings/modules/notifications.py: Dedicated settings module for ARQ worker + email notification config — generated only whenwith_notifications=True.cabinet/fixtures/demo_analytics.json: Demo data extracted fromAnalyticsServiceinto 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.notificationsmodule option: Addednotificationsflag toInstallSelection,ResolvedInstallPlan, CLI (--with-notifications), and interactive menu.get_report_page()inAnalyticsService: Returns fully typedReportPageDatausingcodex_django.cabinetreport 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_pluralin model Meta classes now wrapped ingettext_lazy.apps.pyblueprints includeverbose_name. Booking cabinet modal UI strings (label=,title=,placeholder=, select options) wrapped in_(). Zero Cyrillic strings outside_()in blueprint.py.j2files. - 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 usescodex-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_cabinetmerged into singlebookingflag. One selection scaffolds both the booking engine and cabinet integration. - Analytics views:
AnalyticsReportsViewnow uses library templatecabinet/reports/page.html(0.4.4+) and passes typedcontext["report"] = ReportPageData. LOGIN_URLparametrised: No longer hardcoded/cabinet/login/; now reads fromCABINET_LOGIN_URLenv 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 inselectors/. Each method is independently testable without HTTP context.
Removed
booking_cabinetflag fromInstallSelection— replaced by unifiedbookingflag.- 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.messaginginINSTALLED_APPSso generated models load during Django startup. - Standard init no longer generates booking layer in cabinet —
test_scaffold_new_project_standard_does_not_include_bookingguards this regression. analytics.py.j2booking metric isolation —"bookings"KPI and table column only present whenwith_booking=True; verified by fixture JSON tests.booking/cabinetimport path —services/cabinet.py.j2now imports fromcodex_django.booking.cabinet(public API), not from internalbooking.cabinet.types.
[0.3.0] - 2026-04-05
Added
- Cabinet blueprint package: Extracted a dedicated top-level
cabinetblueprint 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/conversationsblueprint 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
installandrepocommands 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/cabinetinto 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 sharedcodex-core>=0.3.0,<0.4.0check 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 startserverworkflow. - 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, andnotificationscommand modules from the standalone CLI package. - Obsolete scaffold pieces: Removed legacy cabinet mock/selector/users templates and replaced the old
runserver_plusmanagement command template withstartserver.
[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.j2template. - Tests: Updated integration tests.
[0.2.3] - 2026-03-30
Changed
- CLI/runtime boundary: Removed the generated
manage.pybridge into the CLI so scaffolded Django projects keeppython manage.py ...as a pure runtime entrypoint, whilecodex-django ...remains the separate scaffolding tool. - Project-local CLI flow: Added an explicit
Init new projectaction 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.pyfiles 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.pyso unit tests keep coverage, e2e can run with live subprocess output, and integration/e2e runs are prompted explicitly. - Pytest default flags: Removed global coverage
addoptsfrompyproject.tomlso 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.mdwith concrete local and online install-chain e2e command examples and environment variable toggles.
Fixed
- Secret scanner false positives: Added allowlist pragmas to scaffolded
.envexample secret placeholders and the commentedDATABASE_URLtemplate line generated during project init.
[0.2.1] - 2026-03-29
Changed
- Notifications as base layer: Moved notification scaffolding into the shared
systemandcore/arqlayers and removed it from optional init module selection so generated projects start with a consistent messaging foundation. - Project bootstrap environment:
initnow creates a real local.envwith a generated DjangoSECRET_KEYand a valid FernetFIELD_ENCRYPTION_KEY, while.env.exampleremains 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 languageand rendered a validMODELTRANSLATION_LANGUAGEStuple for that case.
Fixed
- Notification template filenames: Renamed notification blueprints to
*.py.j2so generated projects no longer receive Python source files without the.pyextension. - Generated app config consistency: Aligned local
AppConfig.namevalues forsystemandfeatures.mainwith the scaffold's short import model, fixing startup failures such asStaticPageSeonot 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.mdand adocs/changelog.mdinclude 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, andcodex-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
mikeversioning support and published changelog navigation. - Packaging boundaries: Removed the direct runtime dependency on
codex-djangofromcodex-django-cliafter confirming thatcodex-djangois required by generated projects, not by the CLI package itself. - Checker standardization: Reworked
tools/dev/check.pyto use the shared flag-basedBaseCheckRunnerpattern fromcodex-core, restoring a consistent quality-gate interface across Codex repositories. - Development dependency policy: Added
codex-core>=0.2.2,<0.3.0as the bounded development dependency required by the shared check runner. - Lockfile scope: Regenerated
uv.lockafter 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-commitpasses 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.managementdirectly.
[0.1.0] - 2026-03-28
Added
- Standalone package extraction: Created
codex-django-clias a dedicated repository by extracting the CLI layer fromcodex-djangoon March 28, 2026. - Interactive CLI ownership: Moved the
codex-djangocommand, 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-djangocan depend on the CLI optionally, while generated projects continue to depend oncodex-djangoitself.