Merge remote-tracking branch 'origin/main'

# Conflicts:
#	AGENTS.md
#	README.md
#	index.html
#	package.json
#	src/data/buildings.js
#	src/data/grid.js
#	src/data/pavement.js
#	src/data/plants.js
#	src/data/yard.js
#	src/lib/feature-types.js
#	src/lib/yard-features.js
#	src/main.js
#	styles.css
This commit is contained in:
2026-07-25 21:59:24 -05:00
20 changed files with 2031 additions and 191 deletions
+9 -9
View File
@@ -1,4 +1,4 @@
# Yard Map Agent Notes
# A Plot of Plants Agent Notes
This file is a fast handoff for future coding agents working in this repo.
@@ -19,14 +19,15 @@ Core files:
- `src/lib/feature-types.js`: feature-kind labels, geometry constraints, detail field schemas, and style defaults.
- `src/lib/yard-features.js`: typed feature classes, stable ids, groups, parent-child relationships, schema metadata, GeoJSON export.
- `src/data/*.js`: yard content split by domain.
- `src/main.js`: MapLibre map, yard layers, legend, popup rendering.
- `src/main.js`: MapLibre map, visibility controls, popup rendering.
Top-level exported data shape from `src/data/yard.js`:
- `type: "FeatureCollection"`
- `schemaVersion: 2`
- `schemaVersion: 4`
- `lifecycleFields: { plantedDate: "date", removedDate: "date" }`
- `featureTypes: [...]`
- `featureCategories: [...]`
- `features: [...]`
- `groups: [...]`
@@ -53,8 +54,8 @@ Each feature currently exports:
3. Local rotation is per anchor.
`offset(...)` reads `assumedNorthClockwiseDegrees` from the anchor point used as the origin. Do not reintroduce a global lot rotation unless there is a strong reason.
4. Grouping and parent-child metadata are already part of the data model.
Future visibility controls should consume `groupIds` and `parentId` rather than inventing a second relationship system.
4. Feature categories, grouping, and parent-child metadata are part of the data model.
Top-level visibility categories come from `featureCategories` and each feature type's `categoryId`. Visibility controls consume those schemas and `groupIds` rather than inventing a second relationship system.
5. The GPKG was only a seed source.
The app does not depend on GIS tooling at runtime.
@@ -70,14 +71,13 @@ Each feature currently exports:
## What is already modeled
- Porch and deck are children of the main house and also part of the `House Parts` group.
- Medora junipers are part of the `Juniper Trees` group.
- Medora junipers are bushes in the `Junipers` group.
- A test tree exists that is offset from the top-left lot corner using per-anchor rotation.
## Likely next steps
1. Add show/hide controls driven by `yardGeoJSON.groups` and possibly `parentId`.
2. Decide whether toggles should be by feature kind, by group, by parent object, or a combination.
3. The basemap uses local vector tiles and is overzoomed from source zoom 15
1. Decide whether parent-child feature relationships should also affect the visibility hierarchy.
2. The basemap uses local vector tiles and is overzoomed from source zoom 15
through the yard map's maximum zoom of 24. Symbol layers are deliberately
omitted so the map has no remote font or sprite dependency.