Saving notes

This commit is contained in:
Scott Idem
2026-02-10 19:45:45 -05:00
parent c5bfc140af
commit ae03cbb27f
2 changed files with 31 additions and 46 deletions

View File

@@ -95,55 +95,44 @@
- [ ] **[Recipient Agent]**: [Description of request] (Sent: [YYYY-MM-DD])
### 🎯 Strategic Goals (Current Sprint)
- **Primary:** Performance Sprint & Journals Standardization.
- **Primary:** Launcher Stabilization & Performance.
- **Secondary:** V3 API Migration and System Health Stability.
### 🚧 Active Workstreams
- **[Launcher Stabilization]:** Hardening the native bridge and resolving session selection reactivity issues.
- **[Leads Module V3]:** Transitioning Exhibitor Leads to V3 API and mobile-first dashboard.
- **[Hydration Optimization]:** Implemented SWR pattern and non-blocking layouts to eliminate "white page" delays.
- **[Search Hardening]:** Standardized debounced reactive search logic across Recovery Meetings, Badge Search, and Journals modules.
- **[Service Worker]:** Re-enabled registration and implemented robust asset caching.
- **[Telemetry]:** Modern dashboard in Launcher Config with visual CPU/RAM gauges.
- **[Journals Module]:** Standardized naming (`ae_comp__*`), normalized props to snake_case, and unified icons.
### 🧠 Recent Learnings & Decisions
- **V3 Search Context:** POST search for child objects (e.g. `event_exhibit_tracking`) requires explicit `for_obj_type` and `for_obj_id` query parameters to assist the backend in partitioning, otherwise it may inject incorrect legacy filters like `event_id_random`.
- **SWR Pattern:** Crucial for eliminating page load delays in Sites, Events, and Journals.
- **Debounced Search:** Replacing manual triggers and loops (like setInterval) with reactive debounced effects significantly improves UX and reduces API noise.
- **Quiet Logs:** Silenced noisy `AbortError` and `NetworkError` in background fetches to reduce noise.
- **Details Toggle:** Optimized Event Session list by deferring expensive sub-components.
- **LiveQuery Reactivity:** `liveQuery` observables require explicit prefixing ($) in templates. Re-assigning them to `$state` variables in effects can lead to `store_invalid_shape` errors if prefixes aren't updated.
- **Global Page State:** Migrating from manual prop-passing (like `data_url`) to the global `$page` state significantly simplifies component trees and avoids "undefined" errors during navigation.
- **Native Handover:** Using `.tmp` files for downloads and only renaming to `.file` after SHA-256 verification ensures cache integrity in the native bridge.
---
## 3. 🧠 Short Term Memory (Session Context)
- **Status:** Session Concluded / System Stable.
- **Status:** Session Concluded / System Reverted to Stable.
- **Last Action:** Finalized V3 Leads foundations, fixed dashboard routing, and implemented booth management.
- **Last Action:** Reverted uncommitted reactivity refactors in `launcher/+layout.svelte` and `launcher_session_view.svelte` due to page load failure.
- **Key Learnings:**
- **Backend API Bug:** Identified a 400 Database Schema error in `event_exhibit_tracking` search caused by the backend incorrectly injecting legacy `event_id_random` filters. Frontend is verified clean and strictly follows base `_id` standards.
- **Nested Routing Logic:** Lead Detail routes MUST be nested under the Exhibit ID to maintain context and resolve 404 errors in the capturing workflow.
- **Property Processor Hardening:** Hardened processors to prioritize base `_id` mapping to internal `id` fields, ensuring robust Dexie synchronization for string-only identifiers.
- **Reactivity Race Conditions:** Manual store updates synchronized via URL can clash with layout effects, leading to clobbered states.
- **Svelte 5 Store Prefixes:** Standardizing on `$lq__obj` for observables is critical; switching to direct state variables requires surgical template updates.
- **Accomplishments:**
- **V3 Leads Module Foundations:** Modularized `ae_events__exhibit` and `ae_events__exhibit_tracking` with V3 SWR standards and trace-ready performance logging.
- **'download' Filename Bug Fix:** Explicitly passed filenames to V3 Action endpoints and implemented a safety net in `api_get_object.ts`.
- **Menu Refactor:** Migrated `menu_session_list.svelte` and `menu_location_list.svelte` to use global `$page.url` state.
- **Native Caching:** Implemented SHA-256 verification and stale temp purge in the Electron bridge.
- **UI Initialization:** Ensured `event_session_id` defaults to `null` and added explicit no-session prompts.
- **String-Only ID Standardization:** Standardized all Lead capture and search functions to use base `_id` keys instead of the `_random` suffix dependency.
- **Current Blocker:** Session Selection Hang (Page fails to load or UI hangs when selecting a session if starting from a path without an initial ID).
- **Leads Dashboard Orchestration:** Implemented a mobile-first, high-contrast dashboard with persistent tab navigation (Add Lead, Lead List, Manage).
- **Lead Detail Profile:** Implemented a comprehensive read-only Lead Profile view featuring custom responses and exhibitor notes.
- **Booth Management:** Implemented the Manage/Config tab using `Element_ae_crud_v2` for live-revalidating booth profile updates.
- **Current Blocker:** Backend Search Bug for `event_exhibit_tracking` (injecting `event_id_random`).
- **Immediate Next Step:** Verify Staff Sign-in workflow and License assignment logic once the search bug is resolved.
- **Immediate Next Step:** Investigate Dexie/Svelte reactivity in the Launcher layout without introducing breaking clobbers.
---
@@ -177,22 +166,11 @@
## Gemini Added Memories
- The Aether Docker environment now has a robust physical database management suite: restore_db.sh, check_and_import.sh, and export_db.sh. Password escaping issues resolved using single quotes in .env.
- Standalone DB tests in API project: Use virtual environment at 'environment/bin/python3', extract credentials from container env, and manually construct SQLAlchemy URI to bypass 'app.config' dependency issues.
- [Harden: ID Integrity] Generic object processors MUST use truthy checks when mapping `_random` variants to clean keys to prevent `null` or `undefined` values from clobbering valid linking IDs received from V3 API responses.
- [Harden: Event File Loader] Implemented a "Safety Net" in `_refresh_file_li_background` to inject missing `for_id` and `for_type` from the query context before saving to Dexie, ensuring robust indexing even with partial API responses.
- Centralized 'public_read' flag in object definitions (core.py, cms.py, etc.) controls guest access in V3 API.
- V3 API 'view' parameter rollout complete across core event library modules.
- Presentation Management reports utilize the 'alt' view for file data shapes.
- [Harden: ID Integrity] Generic object processors MUST use truthy checks when mapping `_random` variants to clean keys.
- [Harden: Event File Loader] Safety Net in `_refresh_file_li_background` to inject missing metadata from query context.
- [Harden: API Safety Net] `api_get_object.ts` fallback-extracts `filename` from `params` if the explicit argument is missing.
- [Native: Cache Reliability] Implemented SHA-256 integrity checks and stale `.tmp` purge in Electron `file_handlers.ts`.
- [Layout: Page State] Use `page` from `$app/state` for layout-level store synchronization to avoid clobbering manual updates.
- The user prefers snake_case or Snake_Case over CamelCase for all naming and identifiers.
- Formatting Standard: Prettier printWidth is set to 80 to force multi-line expansion for attributes and calls.
- The Aether API V3 search for 'event_exhibit_tracking' currently has a backend bug where it incorrectly injects a filter for 'event_id_random' instead of 'event_id', causing a 400 Database Schema error (MariaDB code 1054). The frontend is sending the correct V3 payload, but the backend mapping needs to be updated by the API agent.
- Formatting Standard: Prettier printWidth is set to 80.
- The Aether API V3 search for 'event_exhibit_tracking' has a backend bug injecting 'event_id_random'.

11
TODO.md
View File

@@ -29,14 +29,21 @@ This is a list of tasks to be completed before the next event/show/conference.
- [x] **Session Search:** Modernized logic, fixed layout bugs and icon exports. (Completed 2026-01-27)
- [x] **Exhibit Search:** Standardized Exhibitor and Lead Tracking reactive search. (Completed 2026-01-28)
## Recent Accomplishments (Feb 10, 2026)
- **AE Events Launcher Stabilization:**
- [x] **'download' Filename Bug:** Resolved issue where files were downloaded as generic 'download' by explicitly passing `filename` to the API and implementing a safety net in `api_get_object.ts`.
- [x] **Global Page State Migration:** Refactored menu components (`menu_session_list.svelte`, `menu_location_list.svelte`, `launcher_menu.svelte`) to use Svelte 5's reactive `page` state instead of obsolete `data_url` props.
- [x] **Native Bridge Hardening:** Implemented SHA-256 integrity checks, stale `.tmp` purge, and "Safe Handover" pattern in the native Electron bridge.
- [x] **UI/UX Refinements:** Initialized `event_session_id` to `null` and added explicit "No session selected" prompts to improve the empty-state experience.
## Urgent Tasks (Feb 10, 2026)
1. **AE Events Launcher Hardening:**
- [ ] **Session Selection Hang:** Investigate why the page fails to load or hangs after selecting a session when starting from a path without an initial ID. (Current Attempt: Derived LiveQuery vs state-driven subscription).
- [ ] **Temp Cleanup:** Implement auto/manual removal of `[tmp]` files older than 24 hours.
- [ ] **Recording Access:** Add button to open `[recording]` directory in Finder (macOS).
- [ ] **JWT Lifecycle:** Implement silent auto-refresh for long-running podium sessions.
- [ ] **Launch Protection:** Prevent "Duplicate Launch" via UI locking and status messaging.
- [ ] **Cache Reliability:** Implement `.tmp -> .file` rename pattern with post-download checksum verification.
- [ ] **Native Actuators:** Plan macOS-specific commands for window focus and system orientation.
- [ ] **Self-Update:** Implement simple directory/URL-based auto-update mechanism.
- [x] **Audit:** Marked `electron_native.js` as `[DEPRECATED]` in favor of active native repo logic.