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.13.35] - 2026-04-08
Added
- Duplicate growing recipes from action menu (list and detail page), copying name, potted plant product link, and growing phase specifications with durations
[0.13.34] - 2026-04-08
Added
- Consistent color scale for growing phases across charts and tables
- Configurable color palette (ECharts, D3 Category10, Google Charts, D3 Category20) on the settings page
- Growing phase colors auto-assigned from active palette
- Utilization chart uses growing phase colors instead of hardcoded positional colors
- Tracking table shows growing phase colors as column header and washed-out cell backgrounds
[0.13.33] - 2026-04-07
Added
- Serra Vine deployment support: settings module, example compose file, and Gitea Actions workflow for building and pushing Docker images
[0.13.32] - 2026-03-30
[0.13.31] - 2026-03-30
[0.13.30] - 2026-03-30
[0.13.29] - 2026-03-30
Added
- ADR-004: Shared recipe templates for product definitions
- Recipe detail page with duration grid (growing phase specifications)
- Management command
consolidate_potted_plantsfor cleaning up orphan segments - Migration guide for shared recipe templates upgrade
Changed
- Growing phase specifications now belong to the recipe (ProductDefinition), not the potted plant (PottedPlantSegment)
- ProductDefinition uses a direct FK to PottedPlantSegment (replacing M2M)
- Multiple recipes can now share the same potted plant template
- Cultivar and pot_size moved from PottedPlantSegment to Article
- Duration grid UI moved from potted plant page to recipe detail page
[0.13.28] - 2026-03-23
Added
- ADR-003: Document Django ORM architecture consequences and mitigation patterns
Changed
- Fix N+1 queries in forecast requests and bulk delete confirmation views
- Optimize bulk delete: skip auditlog for segment requirements (derived data), reducing queries from 166 to 71 for 20 requests
[0.13.27] - 2026-03-23
Changed
- Use django-sequences for production request sequence numbers to guarantee monotonic assignment — numbers are never reused after deletion, which is critical for Logiqs integration where sequence numbers are external references.
[0.13.26] - 2026-03-21
Changed
- Optimize batch creation of production requests: memoize segment tree and duration lookups, skip auditlog for derived segment requirements, pass description at creation to avoid post-creation updates. Copy-to-weeks (8×25=200 requests) reduced from ~11s to ~2s on PostgreSQL.
[0.13.25] - 2026-03-21
Fixed
- Editing a production request no longer clears the growing recipe
Changed
ProductionRequest.product_definitionandSegmentRequirement.product_segmentare now NOT NULL with PROTECT (prevents orphaned records)GrowingPhaseDuration.growing_phaseandGrowingPhaseSpecification.potted_plant_segmentnow use PROTECT instead of CASCADE (prevents silent config loss on deletion)
[0.13.24] - 2026-03-20
Added
- Audit logging for all models using django-auditlog (tracks who changed what and when)
- Correlation ID per request so related audit entries (e.g. cascade deletes) can be traced together
- ADR-001 documenting the audit logging design decision
- History button in action menus (staff-only) linking to audit log for each model instance
Changed
- Refactored
reorder_children()to use.save()instead ofQuerySet.update()so phase reordering is audited
[0.13.23] - 2026-03-20
Changed
- Production request growing recipe is now read-only after creation (prevents inconsistent segment requirements)
- Changing start date via edit form now properly reschedules segment requirements
[0.13.22] - 2026-03-19
Changed
- Copy-to-weeks now uses flexible week pattern input instead of fixed number of consecutive weeks (Actie #69)
[0.13.21] - 2026-03-19
Changed
- Potted plant detail: remove growing recipes tab and duration column from structure tab (Actie #76)
[0.13.20] - 2026-03-19
Changed
- Hide articles and growing recipes from navigation for non-admin users (Actie #75)
[0.13.19] - 2026-03-19
Changed
- Simplify production request creation: selecting a growing recipe now auto-fills the potted plant product. Removed the article field and its cascade from the create form (Actie #74)
[0.13.18] - 2026-03-18
Changed
- Refactor schedule detail template: extract partials and static JS files for clarity and maintainability (1060 → 226 lines)
Fixed
- Copy schedule modal submit button now disables after first click, preventing duplicate copies
[0.13.17] - 2026-03-17
Changed
- Schedule overview and tracking: show potted plant name instead of production request name, with request name in tooltip and link to details
[0.13.16] - 2026-03-17
Added
- Apply response times to all forecast requests in a schedule via the schedule action menu, with streaming progress indicator
- Apply response times to selected forecast requests via the bulk actions bar
[0.13.15] - 2026-03-17
[0.13.14] - 2026-03-17
[0.13.13] - 2026-03-16
Added
- "Copy durations to..." action on potted plants: copy the week-dependent duration grid from one potted plant to one or more others, replacing existing specifications on the targets. Supports partial copy when growing phases differ. Uses Select2 for user-friendly target selection.
Removed
- "Copy to recipes" action on potted plants and growing recipes (replaced by the simpler "Copy durations to..." action).
[0.13.12] - 2026-03-16
Changed
- Replace numeric "repeat weeks" field with print-dialog-style week pattern
input: supports count (
3x), ranges (5-10), lists (7,9,13), and combined patterns (5-10, 13, 15). Ranges wrap around year boundaries and clip to start week.
[0.13.11] - 2026-03-16
Fixed
- Week separator on overview shown incorrectly for weeks 1-9 due to format mismatch between Python and Django template filter
Changed
- Unified week separator logic across overview and production request pages:
computed in Python instead of template
ifchangedtags, matching the tracking page pattern. Also adds pagination boundary handling to the production request list (previously missing).
[0.13.10] - 2026-03-16
[0.13.9] - 2026-03-13
[0.13.8] - 2026-03-13
[0.13.7] - 2026-03-13
[0.13.6] - 2026-03-13
[0.13.5] - 2026-03-13
[0.13.4] - 2026-03-13
[0.13.3] - 2026-03-13
[0.13.2] - 2026-03-13
[0.13.1] - 2026-03-12
[0.13.0] - 2026-03-06
Added
- Logiqs API integration: starting a production request now creates an article and lot in the Logiqs InventoryService via OAuth2-authenticated API calls
- Operator sees error feedback when Logiqs is unavailable (local start still proceeds)
Fixed
- Start date on production request start page now always renders in ISO format
(
YYYY-MM-DD), fixing flatpickr parse failures under non-English locales
[0.12.2] - 2026-03-06
Fixed
- Add missing migration for Meta.ordering pk tiebreaker (caused Release Checks CI failure)
- Add
check-migrationstarget tocheck-qualityand quality monitor to catch missing migrations locally
[0.12.1] - 2026-03-06
Fixed
- Split production requests now preserve parent-child segment requirement hierarchy (was broken on PostgreSQL due to NULLs-last ordering)
[0.12.0] - 2026-03-05
Added
- New Execution section for operators at the potting station
- Operator can view released production requests for the current week (with period filter)
- Operator can start a production request (full or partial quantity), with editable start date
- Personas documentation (Planner and Operator roles)
Fixed
- Unstable model ordering caused missing/duplicate rows in paginated views
[0.11.1] - 2026-03-05
Added
- Admin links in model action menus, visible only to staff users
- Registered ProductionRequest and ProductionSchedule in Django admin
Fixed
- Renamed
requesttemplate variable toproduction_requestto prevent shadowing Django's HTTP request context
[0.11.0] - 2026-03-04
Added
- Split production requests into two with configurable quantity
- Supports both plant quantity and area units input modes
- Available on any production request from the action menu
[0.10.24] - 2026-03-04
Changed
- Switch to full-width layout for better use of wide monitors
[0.10.23] - 2026-03-04
[0.10.22] - 2026-03-03
[0.10.21] - 2026-03-03
Added
- Release individual production requests within a released schedule
- Sequence number: globally unique business identifier assigned on release
- Bulk release action to release multiple production requests at once
- Status icon and sequence number shown on schedule detail and request detail
- Schedule revert blocked when any production requests are released
[0.10.20] - 2026-03-02
Added
- Release and revert production schedules (FORECAST / RELEASED state)
- Schedule status shown with icons on list and detail pages
[0.10.19] - 2026-03-02
[0.10.18] - 2026-02-27
Added
- Copy potted plant product to other growing recipes (reference or duplicate) from potted plant action menu and growing recipe action menu
- Remove potted plant product from a growing recipe inline via HTMX
[0.10.17] - 2026-02-27
[0.10.16] - 2026-02-27
[0.10.15] - 2026-02-27
- Rename "Articles" / "Product Definition" to "Growing Recipe" / "Teeltrecept" across UI, forms, translations, and BDD specs
- Fix missing Edit button on empty growing phase specifications page
- New specification rows now copy durations and week range from last row
[0.10.14] - 2026-02-26
[0.10.13] - 2026-02-26
- Fix tracking tab not refreshing when adding a production request via modal
[0.10.12] - 2026-02-26
- Fix inline quantity editor clipped behind left table border on tracking tab
[0.10.11] - 2026-02-26
- Fix tracking tab growing phase columns appearing in wrong order when schedule has multiple product definitions
[0.10.10] - 2026-02-26
- Comprehensive review and fix of wording, screen layouts, and UI consistency
- Rewrite style guide with principles-first approach (Obvious, Minimal, Consistent, Multilingual)
- Extract cardemptystate component for card-level empty states
- Replace hand-coded dropdowns with model_actions template tag
- Fix shared components to match style guide (button colors, inline styles)
- Add per-row HTMX refresh to overview tab (matching tracking tab behavior)
- Fix tab persistence on page refresh via URL hash
- Fix calendar date picker breaking table structure on inline edits
- Document inline editing pattern in style guide
[0.10.9] - 2026-02-24
[0.10.8] - 2026-02-24
[0.10.7] - 2026-02-24
- Bundle all CDN dependencies (jQuery, HTMX, Bootstrap Icons, ECharts) as static files for offline use
- Standardize ECharts version across all templates
- Add VENDORS.md documenting all vendored libraries with versions and source URLs
[0.10.6] - 2026-02-24
- Replace django-select2 with client-side Select2 for form dropdowns
- Bundle Select2 CSS and JS as static files instead of CDN
[0.10.5] - 2026-02-23
- Add
/ui-reviewskill for UI consistency guidance - Publish style guide as in-app page at
/style-guide/with live reference links - Link style guide from About page under Resources section
- Review and expand style guide with missing patterns (sticky tabs, breadcrumbs, week navigator, bulk actions bar, detail page headers)
- Fix UI inconsistencies: hardcoded colors, button classes, breadcrumb spacing, action column widths, link styles across all pages
- Detail pages use compact three-dots dropdown for actions instead of prominent buttons
- Schedule detail: sticky sidebar, reordered columns (name, qty, dates), removed card header from production requests list
- Tracking table: subtle phase column separators
- Breadcrumb links no longer show underline
[0.10.4] - 2026-02-22
[0.10.3] - 2026-02-21
- Compact quantity display: show only primary number with tooltip for full details
- Configurable quantity unit label in Planning Configuration
- Column headers show area unit or quantity unit based on input mode
[0.10.2] - 2026-02-20
- Show yield and utilization chart sidebar on both overview and tracking tabs
[0.10.1] - 2026-02-20
- Compact tracking screen: single-row header, table-sm, Qty column
- Inline editing for start week and quantity on tracking page
- Full row refresh after inline edits (only edited row, via HTMX event filtering)
- Add production request button on tracking tab (navigates back to tracking)
- Short date format (W15-1) and short week separators (25W15) on both pages
- Fix missing phase data on tracking page (pagination queryset bug)
- Fix duplicate week separators at pagination boundaries on overview page
[0.10.0] - 2026-02-19
Added
- Copy a potted plant from the list page action menu, duplicating growing phase relations and duration specifications
- Expand icon on yield overview sidebar chart to open full-screen chart view
- Configurable decimal places for area unit display (PlanningConfig setting, default 0 for whole numbers)
[0.9.3] - 2026-02-19
Fixed
- Empty state on potted plant grid now guides users to the Edit button instead of incorrectly directing them to the admin page
[0.9.2] - 2026-02-18
[0.9.1] - 2026-02-18
Added
- Production size can be entered as area units instead of plant quantity, controlled by a config setting
- Area units and plant quantity are shown alongside each other (one editable, one derived)
- Create, edit, and inline edit forms all support area units input mode
[0.9.0] - 2026-02-18
Added
- Area units are now configurable
[0.8.5] - 2026-02-18
[0.8.4] - 2026-02-17
[0.8.3] - 2026-02-17
Added
- Auto-refresh sidebar yield and utilization charts when production requests are edited inline on the schedule detail page
[0.8.2] - 2026-02-17
Added
- Configurable capacity thresholds on greenhouse utilization charts
- PlanningConfig singleton with CapacityThreshold entries (value + hex color)
- Both charts show horizontal dashed lines at each threshold
- Bars colored by highest exceeded threshold
- Expand icon on sidebar mini-chart linking to full-page chart
- Config menu page to view thresholds with link to Django admin
- Default thresholds seeded with Serra Vine theme colors
[0.8.1] - 2026-02-17
Added
- Tracking tab on schedule detail page showing production requests with per-growing-phase columns (start week + area)
- Actions menu on each tracking row for quick access to edit, duplicate, delete
- Lazy-loaded tab content via HTMX (loads only when tab is activated)
[0.8.0] - 2026-02-15
[0.7.19] - 2026-02-15
Added
- Auto-publish BDD feature files as documentation on the Sphinx docs site using sphinx-gherkindoc
[0.7.18] - 2026-02-15
Changed
- Hardened input validation:
@login_requiredonget_product_segmentsAJAX view, try/except forshift_weeksin schedule copy,CheckConstraintto prevent self-referencing product segment relations - Extracted shared
table_loaderandempty_statetemplate components to reduce duplication across list pages
[0.7.17] - 2026-02-13
Added
- CHANGELOG.md following keepachangelog format, with backfilled entries for 0.7.10–0.7.15
- Changelog page at /changelog/, linked from version number on about page
make releaseautomatically moves [Unreleased] entries to versioned heading via bump-my-version- "Update CHANGELOG.md" added to Definition of Done
/verify-doneskill updated with changelog check step
[0.7.16] - 2026-02-13
[0.7.15] - 2026-02-13
Changed
- Improve exploratory test report titles and docs index ordering
[0.7.14] - 2026-02-13
Changed
- Split views.py into views/ package (base, schedule, production_request, reporting, product) for maintainability
- Add docstrings to complex model methods (getweeklydistribution, getweeklyoverview)
- Add djlint template formatting to
make format
Fixed
- Fix djlint formatting in productdefinition rows template
[0.7.13] - 2026-02-12
Fixed
- Fix pre-commit issues: template formatting and test header style
[0.7.12] - 2026-02-12
Added
- Articles (product definitions) list page with HTMX lazy loading
- Three-dots action menu with admin link on article rows
- BDD scenarios for articles list page
- Config dropdown in navigation (replaces Potted Plants link)
- Dutch and Polish translations for articles-related strings
[0.7.11] - 2026-02-12
Added
- Publish exploratory test reports on Sphinx docs site
[0.7.10] - 2026-02-12
Added
- Docs site as development tool: test reports, version info, git commit hash
- Move docs service into local docker compose
[0.6.0] - [0.7.9]
Initial development: production scheduling, growing phase specifications, potted plant management, yield forecasting, greenhouse utilization reporting, HTMX inline editing, schedule copy, bulk operations, rescheduling.