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_plants for 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_definition and SegmentRequirement.product_segment are now NOT NULL with PROTECT (prevents orphaned records)
  • GrowingPhaseDuration.growing_phase and GrowingPhaseSpecification.potted_plant_segment now 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 of QuerySet.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 ifchanged tags, 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-migrations target to check-quality and 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 request template variable to production_request to 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-review skill 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_required on get_product_segments AJAX view, try/except for shift_weeks in schedule copy, CheckConstraint to prevent self-referencing product segment relations
  • Extracted shared table_loader and empty_state template 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 release automatically moves [Unreleased] entries to versioned heading via bump-my-version
  • "Update CHANGELOG.md" added to Definition of Done
  • /verify-done skill 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.