# Frontend Agent Task List > Use this file to track steps for complex features or bug fixes. > **Status:** Stable β€” ongoing development. ## 🚧 Upcoming High Priority ### [Stores] Svelte 4 β†’ Svelte 5 State Migration (prerequisite for Phase 2c) The app uses `svelte-persisted-store` (Svelte 4 store contract) for all core persisted state (`ae_loc`, `idaa_loc`, `ae_api`, `ae_sess`, etc.). In Svelte 5 `$effect`, reading **any field** of a Svelte 4 store subscribes to the **entire store** β€” coarse-grained reactivity. This is the root cause of the IDAA Novi re-auth bug (2026-03-30): unrelated `$ae_loc` writes (e.g. iframe height, SWR cfg reload) triggered the Novi verification effect repeatedly. Migration target: replace `svelte-persisted-store` with Svelte 5 `$state`-based persistence (e.g. `runed` `PersistedState`, or a lightweight custom wrapper). This gives fine-grained reactivity β€” only effects that actually read a changed field re-run. **Phased approach (do NOT do all at once):** - [ ] **Phase A β€” Project plan + wrapper decision:** Write `PROJECT__Stores_Svelte5_Migration.md`. Decide: `runed` library vs. custom `$state` + localStorage wrapper. Audit all store consumers. Identify stores in priority order. Estimate blast radius per store. - [ ] **Phase B β€” Core auth stores (highest impact, start here):** - `ae_loc` (persisted) β€” auth flags, site cfg, UI state; ~471 consumer sites across 150+ files - `idaa_loc` (persisted) β€” Novi auth, IDAA query prefs These two cause the most reactive noise. Migrating them also unlocks Phase 2c (separate `ae_auth` store) since the callsite sweep is now required anyway. - [ ] **Phase C β€” Remaining persisted stores:** - `ae_api` (persisted) β€” API config / JWT - `ae_events_stores` persisted entries (badges, launcher, leads, pres_mgmt loc stores) - [ ] **Phase D β€” Non-persisted writable stores:** - `ae_sess`, `idaa_sess`, `slct`, `slct_trigger`, `ae_auth_error`, `ae_trig`, `ae_snip`, etc. - Lower urgency (no localStorage churn), but fine-grained reactivity still beneficial. - [ ] **Phase E β€” Phase 2c (unblocked after B):** Split `ae_loc` into `ae_auth` + `ae_app` (see entry below β€” ~471 callsites, but sweep is cheap once already touching every consumer). **Project plan doc needed:** Yes β€” scope is app-wide. Do NOT start Phase B without Phase A. --- ### [Stores] Refactor β€” Phase 2c (deferred) Phases 1, 2a, 2b are complete (see βœ… Completed below). One phase remaining: - [ ] **Phase 2c β€” Actual separate stores (`ae_auth`, `ae_app`):** Requires touching ~471 `$ae_loc.*` auth-field read sites across 150+ files. Deferred until a Svelte runes migration of the store layer itself (touching every component anyway makes the callsite sweep cheap). ### [Backend] Join event_location_id onto event_presenter API view The `event_presenter` object currently has `event_session_id` but not `event_location_id`. When navigating from the Presenter View to the Launcher, the frontend has to do a secondary session lookup to discover the location (magic redirect in launcher base `+page.svelte`). Joining `event_session.event_location_id` into the presenter view/response would let the frontend pass the location directly in the Launcher URL without the extra lookup. - Backend: add `event_location_id` (and `event_location_id_random`) to the `event_presenter` view or API response - Frontend: add `event_location_id` to `ae_EventPresenter` type and `properties_to_save`; pass as `events__launcher_id` in `presenter_page_menu.svelte` ### [Launcher] Active features (identified 2026-03-06) - [x] **Font size cycler (Launcher sidebar):** Font size cycler and light/dark toggle added to new `menu_launcher_controls.svelte` component; wired into `launcher_menu.svelte`. Visibility toggles (All Files / All Sessions) moved to same component and restyled to `preset-tonal-tertiary`. (2026-03-11) - [x] **Minor Svelte warning:** `slct_event_location_id` in `menu_location_list.svelte` β€” prop already has `$bindable(null)`; stale comment in file updated. (2026-03-11) ### [Svelte] State reference warnings - [x] **`svelte-check` fully clean β€” 0 errors, 0 warnings.** All 42 `state_referenced_locally` warnings fixed (2026-03-11). CSS `@apply`/`@reference` warnings in `ae_idaa_comp__event_obj_id_edit.svelte` also resolved β€” Tailwind utilities inlined, `