Commit Graph

1665 Commits

Author SHA1 Message Date
Scott Idem
4711f41c34 Expanded Recovery Meeting sort options and refined development SOP.
Implemented 'Meeting Name (A-Z)' and 'Meeting Name (Z-A)' sorting for Recovery Meetings, including UI dropdown updates and client-side re-sorting logic.

Updated documentation/GUIDE__DEVELOPMENT.md to v1.1 with clarified verification steps and inter-agent coordination protocols.

Minor label cleanup in Journal editor.
2026-02-16 15:58:17 -05:00
Scott Idem
f34e24aa02 Standardized robust chronological sorting across modules.
Updated '_process_generic_props' in multiple libraries to ensure 'updated' timestamp always falls back to 'created_on' or epoch start, preventing null values from breaking newest-first ordering in IndexedDB.

Aligned Recovery Meetings and Archives list views to use these pre-computed sort keys for consistent UI behavior even when 'updated_on' is null.
2026-02-16 15:40:00 -05:00
Scott Idem
fdfba0f752 Clean up of the email notifications for Post, Post Comment, and Event create and update. 2026-02-16 13:34:38 -05:00
Scott Idem
6c4cdb4ed0 Notes 2026-02-13 19:52:45 -05:00
Scott Idem
b03888d37f Serious notes about security updates. 2026-02-13 19:21:51 -05:00
Scott Idem
f62bd9fb79 security(api): harden V3 authentication and unify CRUD endpoint patterns
Implemented critical security and architectural fixes to align the frontend with the Aether API V3 standard and resolve 403 Forbidden race conditions.

- Unified CRUD Helpers: Updated get, create, update, and delete helpers to use the standard /v3/crud/{obj_type}/{id} paths, ensuring correct backend isolation context.
- Auth Scavenging: Implemented direct localStorage scavenging for 'x-account-id' in core fetch helpers to prevent hydration race conditions in Svelte 5.
- Header Cleanup: Purged redundant 'x-aether-api-token' and fixed misplaced protocol headers in global stores.
- Reliability: Fixed 'Content-Type' typos and standardized kebab-case header normalization.
2026-02-13 19:10:32 -05:00
Scott Idem
3e83890932 feat(framework): implement AE Obj Field Editor v3 and test playground
- Created consolidated AE_Obj_Field_Editor_V3 component using Svelte 5 Runes.
- Standardized on V3 CRUD API (PATCH /v3/crud/{obj_type}/{obj_id}).
- Implemented local state guards to prevent reactivity loops.
- Added support for multiple field types (text, textarea, select, checkbox, tiptap).
- Created a dedicated testing playground with real Demo account data.
- Updated the PROJECT_AE_OBJECT_FIELD_EDITOR_V3_UPGRADE.md plan.
2026-02-13 16:07:21 -05:00
Scott Idem
6bfd13f52c refactor(events, idaa): standardize on String-only IDs and remove '_random' suffix
Aligned the Events Badges, Templates, and IDAA Bulletin Board modules with
Aether UI/UX v3 standards by prioritizing semantic String IDs (e.g., event_id,
badge_id) over legacy '_random' variants in API helpers, Dexie processors,
and UI components.

- Refactored badge and template loaders to use clean ID field names.
- Updated search and LiveQuery logic in badge management views.
- Cleaned up unused imports and legacy code in +layout and +page components.
- Standardized ID mapping in generic object processors.
- Improved IDAA post creation UX with autofocus and empty title defaults.
2026-02-13 13:51:55 -05:00
Scott Idem
de947c827a ui(hosted_files): update clipping components and fix count reference bug 2026-02-12 19:57:42 -05:00
Scott Idem
5998389e3a ui(hosted_files): improve upload component accessibility and dark mode 2026-02-12 19:57:25 -05:00
Scott Idem
52ff50457d ui(hosted_files): update video util page for dark mode consistency 2026-02-12 19:57:10 -05:00
Scott Idem
4f4f16478d refactor(core): adjust root layout data structure and clean up site config 2026-02-12 15:29:17 -05:00
Scott Idem
a7e17283e4 fix(events): robust date sorting in core event processors 2026-02-12 15:24:18 -05:00
Scott Idem
60771c5ba1 fix(journals): robust date sorting in journal and entry processors 2026-02-12 15:23:22 -05:00
Scott Idem
c4009391c0 fix(posts): robust date sorting in post and comment processors 2026-02-12 15:22:28 -05:00
Scott Idem
5e9457580c fix(bb): robust date sorting in Bulletin Board list 2026-02-12 15:21:44 -05:00
Scott Idem
64be14249c ui(recovery_meetings): update meeting editor and search components 2026-02-12 15:07:37 -05:00
Scott Idem
4266bef352 ui(bb): update post list surface colors 2026-02-12 15:07:05 -05:00
Scott Idem
6977867ed8 feat(idaa): add IDAA module dashboard 2026-02-12 15:06:10 -05:00
Scott Idem
299367ae62 Updating notes 2026-02-11 19:29:26 -05:00
Scott Idem
f785907792 Updating the documentation for things. Hopefully improvements to Gemini CLI. 2026-02-11 17:59:09 -05:00
Scott Idem
7549749d14 Launcher: Resolved session selection hang and improved reactivity pattern. 2026-02-11 17:18:55 -05:00
Scott Idem
cda7a5421c General code clean up. Removing old stuff. 2026-02-11 13:41:41 -05:00
Scott Idem
3ffe9cbcc9 More general code clean up. Updating Lucide icons. 2026-02-11 13:21:38 -05:00
Scott Idem
3ca041383f More general code clean up. More removing of the _random bits. 2026-02-11 13:00:42 -05:00
Scott Idem
87d74e5b4b Just general code clean up. Also removing more of the extra _random bits. 2026-02-11 12:51:55 -05:00
Scott Idem
5bea72f02e Doing general clean up to remove old code and keep removing the _random bits that I find. Bug fix for new hosted files not showing immediately for BB Posts. Just directly updating the selected Post and its linked_li_json. 2026-02-11 12:39:20 -05:00
Scott Idem
ae03cbb27f Saving notes 2026-02-10 19:45:45 -05:00
Scott Idem
c5bfc140af fix(launcher): resolve 'download' filename bug and refactor data_url to global page state
- Updated 'handle_open_file' in launcher_file_cont.svelte to correctly pass filename to API.
- Fixed WebSocket ae_download command in launcher layout to include filename.
- Implemented a safety net in api_get_object.ts to extract filename from params if missing.
- Added 'download' attribute to Hosted Files download button for direct links.
- Refactored launcher menu components to use Svelte 5 global 'page' state instead of obsolete 'data_url' prop.
2026-02-10 19:12:55 -05:00
Scott Idem
72abd8034e fix(launcher): resolve session selection hang and reactive header sync
- Optimized session navigation by switching from static data_url to reactive $page.url.\n- Fixed selection hang when entering the Launcher without an initial session ID.\n- Synchronized global header and idle logic with derived layout observables.\n- Streamlined prop passing to ensure clean state transitions during session switching.
2026-02-10 18:49:31 -05:00
Scott Idem
d300825312 fix(sync): restrict room refreshes to selected session to prevent flickering
- Optimized background API refreshes to focus on the selected session instead of the entire room.\n- Eliminated redundant bulk database writes that were causing UI flickering during refresh cycles.\n- Staggered initial data fetches to prevent API request storms.\n- Added detailed logging for easier tracing of background sync operations.
2026-02-10 18:38:39 -05:00
Scott Idem
ab2b984c25 fix(launcher): resolve metadata flickering and harden session reactivity
- Standardized default view to 'alt' for session loading to ensure persistent file counts.\n- Hardened 'No files' warning logic to prevent false positives during background refreshes.\n- Restored reactive session observable in layout for global header and idle logic.\n- Documented overwrite pitfalls in SVELTE_DEXIE_GUIDE.md.
2026-02-10 18:31:59 -05:00
Scott Idem
475954b791 feat(sync): persist polling intervals across all Launcher variants
- Migrated background timers to persistent 'sync_intervals' store.\n- Updated Sync Monitor and Config UI to display and edit all six polling loops.\n- Ensured timer settings are applied and persisted regardless of native mode status.\n- Refined initialization logic to prioritize user configuration with robust fallbacks.
2026-02-10 18:28:13 -05:00
Scott Idem
b91adfd8cf feat(sync): implement dedicated presentation and presenter refresh loops
- Added background API refresh loops for room-level presentation and presenter metadata.\n- Updated Sync Monitor UI to display all six loop intervals.\n- Added UI controls in Launcher Config for fine-tuning polling periods.\n- Staggered initial background fetches to prevent API connection flooding.\n- Corrected timer assignments to separate structural metadata from room content.
2026-02-10 18:15:34 -05:00
Scott Idem
ddefd94f03 feat(sync): implement separate API refresh loops for presentations and presenters
- Added dedicated background timers for room-level presentation and presenter metadata.\n- Staggered initial data fetches to prevent request storms during room entry.\n- Cleaned up redundant timer assignments and separated API refresh from native file sync.\n- Optimized loop frequencies for better balance between freshness and performance.
2026-02-10 18:13:16 -05:00
Scott Idem
cf18257fb4 fix(sync): refine heartbeat logic and silence non-native warnings
- Silenced 'Heartbeat skipped' warnings when not running in native Electron mode.\n- Hardened device ID retrieval using String-Only ID prioritization logic.\n- Improved reliability of background sync cycles during session transitions.
2026-02-10 18:04:19 -05:00
Scott Idem
1ab13eaf96 fix(launcher): optimize layout reactivity and implement staggered data pipeline
- Moved session observable to child component to ensure reactive header updates.\n- Implemented deferred loading for presenters and files to prevent request storms.\n- Fixed WebSocket navigation paths to use store-backed IDs.\n- Streamlined Svelte 5 component lifecycle for better performance and SWR responsiveness.
2026-02-10 17:57:28 -05:00
Scott Idem
be53e12d63 perf(launcher): implement staggered data loading for sessions and presentations
- Optimized session list load to be shell-only, preventing initial request storms.\n- Moved deep data fetching (presenters/files) into the Presentation component level using Svelte effects.\n- Deferred child collection lookups until components are rendered in the DOM.\n- Fixed ae_api import in launcher_presentation_view.\n- Hardened background refresh logic to respect requested views.
2026-02-10 17:30:30 -05:00
Scott Idem
8a05e48514 fix(launcher): resolve hydration errors and missing file counts
- Initialized event_session_id to null in store template to prevent Svelte 5 binding errors.\n- Fixed invalid bind expressions in Launcher layout.\n- Corrected view: alt propagation in session list background refresh to ensure file counts are retrieved.\n- Hardened duplicate launch protection with verify_hash enabled by default.\n- Updated SVELTE_DEXIE_GUIDE.md with binding pitfall documentation.
2026-02-10 16:00:13 -05:00
Scott Idem
900105913b Documentation clean up. 2026-02-10 14:08:35 -05:00
Scott Idem
b5b44e4016 feat(launcher): harden native caching and telemetry; consolidate documentation
- Implemented SHA-256 integrity checks and stale temp purge in native download logic.\n- Enabled strict hash verification in background sync cycle.\n- Made CPU load gauge dynamic using real-time loadavg metadata.\n- Consolidated native app documentation into single master manual.\n- Marked legacy electron_native.js as deprecated.\n- Updated roadmap with temp cleanup and launch protection tasks.
2026-02-10 14:07:45 -05:00
Scott Idem
6abfff293c refactor: bulk convert decorative labels to spans across core modules
Addresses 'a11y-label-has-associated-control' warnings by converting
non-functional styling labels into spans with 'block' layout.
2026-02-09 22:00:49 -05:00
Scott Idem
f24449457f refactor: address Svelte compiler warnings and improve a11y/security
- Convert decorative labels to spans to fix a11y warnings in Accounts and Sites pages
- Add rel="noopener noreferrer" to external links for security
- Use untrack for Svelte 5 state initialization from props in e_app_sign_in_out.svelte
- Make TipTap editor styles global to fix scoping warnings for dynamic content
2026-02-09 20:22:51 -05:00
Scott Idem
c1750dd04e fix(data_store): implement hierarchical priority logic in liveQuery; update project plans 2026-02-09 19:03:06 -05:00
Scott Idem
fe4380f819 Standardize Exhibit Leads module: Rich text support and naming alignment
- Integrated TipTap rich text editor for Booth Descriptions and Exhibitor Notes.
- Implemented strip_html utility for clean search/preview of rich text fields.
- Renamed exhibit loading functions to follow load_ae_obj_id__event_exhibit* pattern.
- Hardened property processors with 'undefined' string guards and automatic reload triggers.
- Resolved type mismatches and naming inconsistencies across the Leads module.
- Verified zero-error state via svelte-check.
2026-02-09 15:30:00 -05:00
Scott Idem
e7895cee07 Fix Exhibit Licensee list parsing and standardize terminology
- Hardened 'Comp_exhibit_license_list' to handle both raw JSON and IDB object formats.
- Updated all labels to 'Licensed Leads User' or 'Licensee' for consistency.
- Verified Admin-only restriction for the licensee management section.
- Fixed silent parsing failures that caused empty staff lists.
2026-02-08 23:17:47 -05:00
Scott Idem
c88904beb1 Implement 'Already Added' detection for Lead Capture
- Added real-time checking for existing leads in manual search.
- Implemented 'Already Captured' status for QR scanner with direct 'View Lead' link.
- Resolved all remaining TypeScript typing issues in capture components.
- Optimized Dexie lookups for existing lead detection.
2026-02-08 23:08:36 -05:00
Scott Idem
1dd80cc974 Implement dynamic Custom Questions editor in Lead Detail view
- Added 'Comp_lead_detail_form' for editing licensee responses.
- Implemented reactive form generation based on Exhibit question definitions.
- Wired up 'Edit Mode' toggle in Lead Detail page.
- Added CRUD editors for lead notes, priority, and visibility status.
2026-02-08 23:06:09 -05:00
Scott Idem
111ef76d14 Fix Lead List filtering and resolve Svelte 5 subscription crash
- Refactored Lead List to use direct observable subscription for better reactivity.
- Implemented in-memory 'Hard Guard' filter to ensure licensee selection is strictly enforced.
- Fixed 'TypeError: s.subscribe is not a function' by removing legacy $ prefix from resolved props.
- Resolved TypeScript typing errors in Lead Detail and Search components.
- Migrated Badge Search icons to Lucide.
2026-02-08 23:03:35 -05:00
Scott Idem
8787f8c2ff Harden Licensed User dropdown logic and resolve data parsing errors
- Implemented dual-format parsing for 'license_li_json' (handles raw string and IDB objects).
- Added fallback lookup by 'event_exhibit_id_random' for robust record resolution.
- Fixed reactivity for licensee dropdown population.
- Hardened default selection logic based on Aether access levels.
2026-02-08 22:25:56 -05:00