# Frontend Agent Task List > Use this file to track steps for complex features or bug fixes. > **Status:** Stable โ€” ongoing development. ## ๐Ÿ”ด CMSC Charlotte โ€” May 27 (Presentation Management) **Drive down:** May 25 | **Setup:** May 26 morning | **Show:** May 27+ - [x] **[Launcher] Composable open flow** โ€” `handle_open_file()` uses `copy_from_cache_to_temp` + `run_osascript` / `run_cmd` directly with per-step error handling. Complete. - [x] **[Launcher] Slide control scripts in Svelte config** โ€” AppleScript post_scripts live in `ae_launcher__default_launch_profiles.ts`. VLC focus-stealing fix applied. Complete. - [x] **[Launcher] Kill Apps button** โ€” "Kill Apps" button added to Native OS config (System Actions, edit mode only). Kills PowerPoint, Keynote, Adobe Acrobat Reader DC, VLC, soffice. List overridable via `event_device.other_json.launcher.kill_process_li`. Auto-cleanup on file open (deferred โ€” manual button sufficient for CMSC). - [x] **[Launcher] Hidden/deleted files still visible in Presenter file list** โ€” Fixed by API-to-Dexie stale-record pruning plus Launcher background refresh loops for file lists. `ae_events__event_file.ts` now prunes stale records after refresh, and `launcher_background_sync.svelte` refreshes/prunes selected session and presenter file lists. (`fix(launcher): refresh file lists periodically to prune deleted/hidden files`, 2026-05) - [ ] **[Launcher/Electron] Wallpaper stops applying after several changes (post-CMSC)** โ€” Append timestamp/random suffix to temp filename so macOS always sees a new path. - [ ] **[Launcher/Electron] Wallpaper drift after display hotplug (post-CMSC)** โ€” Add resilient reconciliation loop or event-driven reapply on topology change. --- ## ๐Ÿ”ด Axonius DC โ€” June 9 (Badge Printing) **Setup/Registration:** June 8 | **Show:** June 9 - [ ] **[Badges] Epson C3500 fanfold badge layout** โ€” Create/configure a fanfold badge layout compatible with the Epson C3500 continuous stock format. --- ## ๐Ÿšง V3 CRUD Migration (Surgical Cleanup) Finalizing the 100% adoption of V3 Standard endpoints and retirement of legacy wrappers. - [x] **[Badges] Presenter Agreement Form** โ€” migrated to `update_ae_obj` (2026-05-21) - [x] **[Core] Site Domain Bootstrap Refactor** โ€” Bootstrap path is already on V3 in `ae_core__site.ts` via `lookup_site_domain()` using `api.search_ae_obj` with FQDN filter (used by `src/routes/+layout.ts`). Follow-up cleanup complete: retired legacy helper `core__site_domain.ts`. (2026-06-02) - [ ] **[Core] Legacy Utility Helpers** โ€” Refactor `ae_core_functions.ts` to use V3 helpers. - [ ] **[Cleanup] Delete Legacy Wrappers** โ€” Once all callsites are migrated, remove `src/lib/ae_api/api_get__crud_obj_id.ts` and the legacy exports from `api.ts`. --- ## ๐Ÿšง High Priority Workstreams ### [Stores] Svelte 4 โ†’ Svelte 5 State Migration The app uses `svelte-persisted-store` (coarse reactivity). Migration target: replace with Svelte 5 `$state`-based persistence for fine-grained updates. - [ ] **Phase A โ€” Project plan + wrapper decision:** Write `PROJECT__Stores_Svelte5_Migration.md`. - [ ] **Phase B โ€” Core auth stores (highest impact):** `ae_loc`, `idaa_loc`. - [ ] **Phase C โ€” Remaining persisted stores:** `ae_api`, `ae_events_stores`. - [ ] **Phase D โ€” Non-persisted writable stores:** `ae_sess`, `slct`, `ae_snip`, etc. ### [IDB Sort] `build_tmp_sort` rollout Shared utility in `src/lib/ae_core/core__idb_sort.ts` โ€” fixes priority direction (inverted, trueโ†’'0' sorts first ASC) and zero-pads sort field (8 chars). No `.reverse()` needed. Sort chain: `group โ†’ priority DESC โ†’ sort ASC โ†’ [module-specific fields] โ†’ name`. **โš ๏ธ Never use `.reverse()` on a `tmp_sort_*`-sorted list โ€” inverted priority makes it wrong.** Documented in `GUIDE__SvelteKit2_Svelte5_DexieJS.md` (IDB Sort section). - [x] `ae_events__event_presentation` โ€” group + priority + sort + start_datetime + code + name - [x] `ae_journals__journal` + `ae_journals__journal_entry` โ€” group + priority + sort + name + updated_on - [ ] `ae_events__event_session` โ€” roll out when sort behavior is reviewed - [ ] `ae_events__event_presenter` โ€” roll out when sort behavior is reviewed - [ ] `ae_events__event_location` โ€” roll out when sort behavior is reviewed - [ ] `ae_posts__post` + `ae_posts__post_comment` โ€” note: currently use 3-char padding; align to 8 - [ ] `ae_core__person` + `ae_core__account` โ€” roll out when sort behavior is reviewed ### [Stores] IDB Content Version System - [x] Write `check_and_clear_idb_tables()` helper. - [x] Wire helper into `db_journals.ts` and IDAA layout. - [ ] Roll out to `db_events.ts` (module-wide: session, presenter, badge, etc.). - [ ] Roll out to `db_core.ts` (site_domain, person, user). ### [TypeScript] svelte-check hidden errors - [x] **[flowbite-svelte] `ModalProps.children` โ€” 31 errors across 26 files.** Verified no remaining `children={...}` bindings on `` and `npx svelte-check` is clean. (2026-06-02) ### [Journals] Journal Entry Config follow-ups - [ ] **[Journals] Entry passcode secondary auth** โ€” implement `passcode_hash` comparison. - [ ] **[Journals] Summary AI shortcut** โ€” add button to modal. Note: AI tools are already available in entry edit view (`AE_Comp_Journal_Entry_AiTools`), but no dedicated shortcut button exists yet inside `ae_comp__modal_journal_entry_config.svelte`. ### [Cleanup] Migrate remaining `lucide-svelte` imports to `@lucide/svelte` - [x] **[Cleanup] Migrate remaining `lucide-svelte` imports to `@lucide/svelte`** Migrated all 5 listed files to `@lucide/svelte` and uninstalled `lucide-svelte` from dependencies. (2026-06-02) --- ### [Pres Mgmt] Sessions hide/show toggle - [x] **[Pres Mgmt] Hidden sessions blink on initial load** โ€” SCENARIO 2 fallback in `pres_mgmt/+page.svelte` now captures `qry_hidden` as a `$derived.by` dependency and applies the filter in the fallback path. No blink on page load. (2026-05-28) - [x] **[Pres Mgmt] API call uses live store instead of snapshot** โ€” changed `pres_mgmt_loc.current.qry_hidden` โ†’ `params.qry_hidden` in `handle_search_refresh` API call to be consistent with fast path snapshot. (2026-05-28) - **Note:** `hide_event_launcher` is still active โ€” used in `menu_session_list.svelte` (Launcher) to CSS-hide sessions from the list. Button to toggle it is in `session_page_menu.svelte`. Not used in Pres Mgmt (intentional โ€” Pres Mgmt always shows all). - **Note:** Non-trusted users always have `!item.hide` applied at the component level in `ae_comp__event_session_obj_li.svelte` regardless of `qry_hidden`. Toggle is trusted-access-only in practice; direct session links still work for non-trusted users. --- ## ๐Ÿงช Testing & Optimization - [ ] **[IDAA] IDB fast-path contact search** โ€” parse `contact_li_json` in `search__event()`. - [ ] **[IDAA] Optimize Recovery Meetings SQL VIEW and indexes.** - [ ] **[IDAA / Events] Audit `default_qry_str` coverage** in all other event search pages. - [ ] **[Launcher/VLC] Linux playback investigation** โ€” fullscreen + pause-on-end flags. --- ## โš™๏ธ DevOps & Backend - [ ] **[Backend] `event_file` โ€” add `cfg_json` column (post-CMSC)** โ€” The per-file display override currently uses a localStorage workaround (`$events_loc.launcher.file_display_overrides`) because `event_file` has no JSON blob column. Proper fix: add `cfg_json` to the `event_file` DB table, expose it through the FastAPI model, then migrate the frontend back to reading/writing the backend field (restoring global/cross-device persistence). Frontend code is in `launcher_file_cont.svelte` โ€” search for `file_display_overrides`. - [ ] **[Backend] Re-add `Access-Control-Allow-Private-Network: true` CORS header.** - [ ] **[DevOps] Nginx caching** โ€” Investigate `index.html` cache-pickup issues. - [ ] **[DevOps] Simplify Dockerfile env file selection** โ€” Use plain `.env` instead of `BUILD_MODE`. --- ## โœ… Completed (archived) See the full completed history in: [documentation/archive/TODO__Agents__ARCHIVE_2026-03.md](documentation/archive/TODO__Agents__ARCHIVE_2026-03.md) [documentation/archive/TODO__Agents__ARCHIVE_2026-04.md](documentation/archive/TODO__Agents__ARCHIVE_2026-04.md) [documentation/archive/TODO__Agents__ARCHIVE_2026-05.md](documentation/archive/TODO__Agents__ARCHIVE_2026-05.md)