Skip to content

Updating from 3.17 or earlier? Read the upgrade guide first.

Crop Steering
Browse the documents

Repository map

Applies to release 3.18.1 · View source at the tag · Markdown

PathResponsibility
frontend/srcReact, TypeScript and shadcn UI source; theme, adapter, planning and setup screens
frontend/scriptsSingle-file packaging and reproducible browser verification
mcp-serverOptional local stdio MCP connector, scoped HA configuration tools and protocol tests
custom_components/crop_steeringHA config flow, entities, setup/strategy/run APIs, storage and sidebar registration
addons/f2_controlCompanion controller app, hardware coordinator, runtime validation and tests
crop-steering-enginePure decision core and its tests; vendored copy must remain identical
www/dashboard.htmlGenerated static web application
custom_components/crop_steering/www/dashboard.htmlIdentical generated application served by the integration
addons/f2_control/www/public/dashboard.htmlIdentical generated application served through ingress
doctrineThe crop-steering doctrine pack for the optional AI brain: hand-edited rules, outputs generated and checked against the code by doctrine/tools/build_doctrine.py; nothing reads it yet
testsIntegration and repository contract tests
docsInstall, operation, architecture and release process
docs/README.mdThe documentation index
docs/featuresOne page per 3.18 feature area: supply, timers, presets, history, alerts, calibration, system status, dashboards
docs/devWorking notes for developers: design specs, implementation plans and review write-ups. Not operator documentation
docs/TESTING.md / docs/ENTITIES.mdDevelopment checks and entity reference
docs/DOSING.mdThe batch-tank dosing contract between the integration, the controller app and the dashboard: configuration, services, requests, the batch sequence, restart recovery and status
docs/NOTIFICATIONS.mdThe contract for who gets which alerts on the phones: the kinds of alert, the site's one store, the services, the routing, and the controller's fallback to its own notify service
docs/error-codes.jsonThe one list of error codes (CS-101 …); docs/ERROR_CODES.md is written from it by scripts/render_error_codes.py, and the dashboard's Settings > Help page imports it
imgScreenshots used by the README and docs
repository.yamlHA app repository discovery metadata; the controller app is installed from this repository only

Edit source in frontend/src and run the build; do not hand-edit generated dashboards. Small old-name HTML files are intentional compatibility redirects. Runtime entity IDs, room prefixes and the f2_control app slug remain stable; friendly names can change without breaking references.

The integration owns plan/configuration storage and per-room run metadata. Run records retain dates, stable zone/sensor IDs and timestamped reference targets; sensor readings stay in HA Recorder, with bounded authenticated history retrieval. Comparison and runtime calculators do not call actuator services.

The controller reads one atomic, versioned strategy snapshot, validates freshness and runs the pure decision core before its hardware IO sequence. Configuration revision and controller acknowledgement are distinct so the UI cannot mistake a saved mapping for a running configuration.