learning_ai_common_plat/packages
saravanakumardb1 8562711f49 fix(workspace+theme): sanitise corrupt spans, short-circuit re-reconcile, drop unreachable regex
──────────────────────────────────────────────────────────────────
customizable-workspace
──────────────────────────────────────────────────────────────────

Two issues caught in the audit pass:

1. **Corrupt persisted spans broke the grid layout.**
   localStorage entries from older versions (or hand-edited debug
   sessions) could contain span=NaN / 0 / -3 / 99. These flowed
   straight into `grid-column: span <bad>` which silently broke
   the whole row. The visual symptom was a tile rendering at zero
   width or pushing every sibling off-screen.
   Fix: `reconcile()` now clamps every span (including newly
   appended tiles' defaultSpan) to the legal `[1, 4]` range via
   `sanitiseSpan()`.

2. **Re-reconcile effect could loop when callers forget to memoise.**
   The `useEffect([tiles, hydrated])` always called `setLayout`
   with a fresh `{ entries: [...] }` object reference, even when
   the content was identical. If `tiles` itself was a fresh
   reference per parent render (e.g. `tiles=[{...}]` inline),
   every render \u2192 setLayout \u2192 save effect \u2192 (no loop because
   tiles ref same), but constant unnecessary writes to
   localStorage.
   Fix: added `sameLayout(a, b)` structural-equality check;
   setLayout now short-circuits to the previous state when the
   reconciled output is identical.

Tests: 10 \u2192 11
  reconcile  \u00b7 sanitises corrupt spans (NaN/0/negative/>4) \u2192 clamp

──────────────────────────────────────────────────────────────────
generative-theme
──────────────────────────────────────────────────────────────────

Cosmetic but worth fixing: the `rose` palette regex included
`warm` as a keyword, but the `citrus` palette \u2014 listed earlier in
the PALETTES table \u2014 also matched `warm`. Since first-match wins,
`warm` was unreachable in rose and the entry was misleading.

Dropped `warm` from the rose regex. Citrus retains it (was always
where it routed in practice). All 18 existing tests still pass.
2026-05-27 18:46:19 -07:00
..
accessibility fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
ai-ui docs+chore: CC.6 ANTIPATTERNS.md + DebugOverlay dead-code cleanup + roadmap flips (37/202) 2026-05-27 17:08:08 -07:00
api-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
auth fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
auth-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
auth-ui fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
backend-config fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
backend-flags fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
backend-telemetry fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
billing-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
blob fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
blob-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
broadcast-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
celebrations fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
charts fix(charts): drop NaN/Infinity from series; DRY-up compactNumber 2026-05-27 18:43:18 -07:00
client-encrypt fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
command-palette feat(packages): Wave 2 v0.4 + Wave 3 v0.1 — ai-ui expanded, command-palette new 2026-05-27 12:43:23 -07:00
config chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
cosmos fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
create-app fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
customizable-workspace fix(workspace+theme): sanitise corrupt spans, short-circuit re-reconcile, drop unreachable regex 2026-05-27 18:46:19 -07:00
dashboard-components fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
dashboard-shell feat(packages): close ROADMAP TODOs #1, #2, #3 — density tier, react-auth fix, routePrefix 2026-05-27 11:49:20 -07:00
data-viz fix(data-viz): SSR-safe gradient id + NaN-safe ProgressRing 2026-05-27 14:46:27 -07:00
datastore fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
design-tokens feat(packages): close ROADMAP TODOs #1, #2, #3 — density tier, react-auth fix, routePrefix 2026-05-27 11:49:20 -07:00
devops fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
diagnostics-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
errors fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
event-store fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
events fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
extraction fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
fastify-auth fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
fastify-core fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
fastify-sse fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
feature-flag-client chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
feedback-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
field-encrypt fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
generative-theme fix(workspace+theme): sanitise corrupt spans, short-circuit re-reconcile, drop unreachable regex 2026-05-27 18:46:19 -07:00
gentle-notifications fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
kill-switch-client chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
kotlin-platform-sdk feat(native-sdks): add Keychain/SecureStore key derivation to BLFieldEncrypt 2026-03-21 11:10:02 -07:00
llm fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
llm-router fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
logger fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
marketplace-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
mcp-client chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
media-ui fix(media-ui): plug AudioContext leak + guard <img> against undefined src 2026-05-27 18:44:50 -07:00
monitoring fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
motion feat: Wave 9.E (ai-ui@0.6.0) + Wave 13.D.1/.5 (motion@0.2.1) 2026-05-27 16:59:28 -07:00
notifications-ui feat(packages): Wave 4 motion + Wave 5b data-viz + Wave 7 notifications-ui 2026-05-27 13:08:30 -07:00
offline-queue fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
ollama-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
org-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
palace fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
platform-client chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
push fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
queue fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
quick-actions fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
react-auth feat(packages): close ROADMAP TODOs #1, #2, #3 — density tier, react-auth fix, routePrefix 2026-05-27 11:49:20 -07:00
react-native-platform-sdk chore: remove embedded Gitea package registry 2026-05-08 21:10:03 -07:00
referral-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
secure-storage-web fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
speech fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
storage fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
subscription-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
survey-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
swift-diagnostics fix(swift-diagnostics): T5.2 \u2014 replace print() with os.Logger 2026-05-23 15:21:39 -07:00
swift-platform-sdk feat(native-sdks): add Keychain/SecureStore key derivation to BLFieldEncrypt 2026-03-21 11:10:02 -07:00
sync fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
telemetry-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
testing fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
time-references fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
ui feat(ui): @bytelyst/ui Wave 9.D.5 — TagInput + Combobox 2026-05-27 15:55:49 -07:00
use-keyboard-shortcuts fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
use-theme fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
webhook-dispatch fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00