Skip to content
Crop Steering
Browse the documents

Repository map

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
testsIntegration and repository contract tests
docsCurrent install, operation, architecture and validation evidence
archive/2026-09-08Superseded dashboards, documentation and tools with original paths/hashes
docs/TESTING.md / docs/ENTITIES.mdDevelopment checks and entity reference
imgCurrent screenshots; superseded captures are archived
repository.yamlHA app repository discovery metadata
scripts/prepare_addon_release.pyReviewed tracked-file packaging for the existing dedicated controller repository

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.

Historical files in archive are not shipped as active dashboards or installation configuration. They can contain outdated claims and facility examples. The root formerly named config.yaml was archived as configuration.legacy.yaml to prevent Supervisor's recursive app scan from treating it as an app manifest.

Historical facility dashboards, packages, deploy YAML, environment templates, generated Lovelace sample and disabled workflows are in archive/2026-09-08. They are not needed for installation. The portable Lovelace generator remains in scripts/build_lovelace.py.