diff --git a/documentation/TODO__Agents.md b/documentation/TODO__Agents.md index 71fd997a..9b8c907d 100644 --- a/documentation/TODO__Agents.md +++ b/documentation/TODO__Agents.md @@ -1,27 +1,14 @@ # Frontend Agent Task List > Use this file to track steps for complex features or bug fixes. > **Status:** Stable โ€” ongoing development. +> **Scope:** Active/open work only. Completed detail lives in archive files. ## ๐Ÿ”ด CMSC Charlotte โ€” May 27 (Presentation Management) -**Drive down:** May 25 | **Setup:** May 26 morning | **Show:** May 27+ +**Post-show hardening only** -- [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. +- [ ] **[Launcher/Electron] Wallpaper reliability (post-CMSC)** + - [ ] Use timestamp/randomized temp filename so macOS always sees a new path. + - [ ] Add resilient reconciliation loop or event-driven reapply on display topology changes. --- @@ -36,11 +23,6 @@ ## ๐Ÿšง 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`. @@ -58,54 +40,18 @@ The app uses `svelte-persisted-store` (coarse reactivity). Migration target: rep - [ ] **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). +### [Data Layer] IDB sorting + content version rollout +Sorting baseline is now `build_tmp_sort` (ASC chain, no `.reverse()` on tmp-sort lists). -- [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 -- [x] `ae_posts__post` + `ae_posts__post_comment` โ€” migrated to `build_tmp_sort` with 8-char padding; BB comment list consumer updated for ASC tmp_sort ordering. (2026-06-02) -- [ ] `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) +- [ ] **[IDB Sort] Roll out to `ae_events__event_session`** after sort behavior review. +- [ ] **[IDB Sort] Roll out to `ae_events__event_presenter`** after sort behavior review. +- [ ] **[IDB Sort] Roll out to `ae_events__event_location`** after sort behavior review. +- [ ] **[IDB Sort] Roll out to `ae_core__person` + `ae_core__account`** after sort behavior review. +- [ ] **[IDB Version] Roll out to `db_events.ts`** (session, presenter, badge, etc.). +- [ ] **[IDB Version] Roll out to `db_core.ts`** (site_domain, person, user). ### [Journals] Journal Entry Config follow-ups - [ ] **[Journals] Entry passcode secondary auth** โ€” implement `passcode_hash` comparison. -- [x] **[Journals] Summary AI shortcut** โ€” added Quick Actions button in entry config modal and wired it to close modal + scroll to AI tools panel in entry edit view. (2026-06-02) - -### [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. --- @@ -137,3 +83,4 @@ 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) +[documentation/archive/TODO__Agents__ARCHIVE_2026-06.md](documentation/archive/TODO__Agents__ARCHIVE_2026-06.md) diff --git a/documentation/archive/TODO__Agents__ARCHIVE_2026-06.md b/documentation/archive/TODO__Agents__ARCHIVE_2026-06.md new file mode 100644 index 00000000..71fd997a --- /dev/null +++ b/documentation/archive/TODO__Agents__ARCHIVE_2026-06.md @@ -0,0 +1,139 @@ +# 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 +- [x] `ae_posts__post` + `ae_posts__post_comment` โ€” migrated to `build_tmp_sort` with 8-char padding; BB comment list consumer updated for ASC tmp_sort ordering. (2026-06-02) +- [ ] `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. +- [x] **[Journals] Summary AI shortcut** โ€” added Quick Actions button in entry config modal and wired it to close modal + scroll to AI tools panel in entry edit view. (2026-06-02) + +### [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)