Skip to content

Feat/nev 64 65 66 hardening - #39

Open
mneveroff wants to merge 2 commits into
feat/infrastructure-hardeningfrom
feat/nev-64-65-66-hardening
Open

Feat/nev 64 65 66 hardening#39
mneveroff wants to merge 2 commits into
feat/infrastructure-hardeningfrom
feat/nev-64-65-66-hardening

Conversation

@mneveroff

@mneveroff mneveroff commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • NEV-64: Extract share-URL sync into useLensUrlSync so LensApp only composes map, controls, and legend.
  • NEV-65: Use Zustand useShallow for multi-field store picks; keep Context for harness isolation and document the Zustand / Context / local-state split in AGENTS.md.
  • NEV-66: Dual-buffer map overlays with stable source IDs so year changes keep the prior paint until the replacement tiles load; legend keeps prior area totals until the next response arrives.
  • Stabilize Vitest browser deps (React dedupe + zustand/react/shallow pre-bundle) so useShallow works in browser and map-harness configs.

Test plan

  • Change Timeline year: map overlay should not blank to basemap-only before the new year tiles paint
  • Legend totals should not flash to “None”/0 while the next area request is in flight
  • Split/Swipe: change comparison year and confirm the same stability
  • Share URL / browser history still updates for mode, dataset, years, and view
  • pnpm test (node + browser) and map-harness suite still pass with the Vitest dep tweaks

Extract URL sync into useLensUrlSync, use useShallow for multi-field picks, and dual-buffer map overlays so year swaps keep prior paint and legend totals.
Dedupe React and pre-bundle zustand/react/shallow in root and map-harness configs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant