82 lines
3.1 KiB
Markdown
82 lines
3.1 KiB
Markdown
# Aether Journals — Module Overview
|
|
|
|
**Status:** Active module
|
|
**Last Updated:** 2026-06-12
|
|
**Library:** `src/lib/ae_journals/`
|
|
**Routes:** `src/routes/journals/`
|
|
|
|
This module manages private personal journals and journal entries with offline-first behavior and Svelte 5 runes patterns.
|
|
|
|
---
|
|
|
|
## Core Responsibilities
|
|
|
|
- Journal and journal-entry CRUD via V3 API wrappers.
|
|
- Dexie-backed local cache with liveQuery-driven UI updates.
|
|
- Private/passcode-aware access behavior and client-side content encryption.
|
|
- Quick Add, Append/Prepend, import/export, and entry auto-save workflows.
|
|
- Tabbed module, journal, and entry configuration modals.
|
|
|
|
---
|
|
|
|
## Key Data Objects
|
|
|
|
- `journal`
|
|
- `journal_entry`
|
|
|
|
Common fields and behavior follow Aether object conventions (`code`, `name`, `enable`, `hide`, `priority`, `sort`, `cfg_json`, `data_json`).
|
|
|
|
---
|
|
|
|
## Storage and Reactivity
|
|
|
|
- Local cache: Dexie tables in journals DB layer.
|
|
- UI reactivity: Svelte 5 runes (`$state`, `$derived`, `$effect`) plus liveQuery wrappers (`lq__*`, `lqw__*`).
|
|
- Persisted module settings: see config map.
|
|
|
|
Related config map:
|
|
- `documentation/MODULE__AE_Journals_Config_Map.md`
|
|
|
|
---
|
|
|
|
## Implemented Entry Workflows
|
|
|
|
- Quick Add creates a plaintext note in a selected journal without opening the full editor.
|
|
- Append/Prepend injects timestamped content into an existing entry.
|
|
- Bulk import creates entries from parsed files; export supports centralized templates.
|
|
- Entry edits support debounced auto-save when `journals_loc.entry.auto_save` is enabled.
|
|
- Full entry saves encrypt `content` into `content_encrypted` when the entry's `private`
|
|
flag is enabled; disabling `private` clears encrypted content/history fields.
|
|
- The non-reactive `decrypt_journal_entry()` helper isolates decryption from Svelte effects.
|
|
- Entry configuration exposes Actions, Metadata, Security, and JSON views. Trusted users
|
|
can Remove (disable); managers and administrators can hard Delete.
|
|
|
|
## Current Security Limitations
|
|
|
|
- `passcode_hash` is editable but is not compared as secondary authentication before
|
|
decryption. This remains an active task.
|
|
- Quick Add explicitly creates entries with `private: false`; import creates plaintext
|
|
content without setting encryption fields. These paths do not currently offer E2EE.
|
|
- Successful decryption currently logs a short plaintext preview to the browser console.
|
|
Removal is tracked as an active privacy fix.
|
|
- Outbound email sharing is not implemented and requires a product/security decision
|
|
because journal content is private.
|
|
|
|
---
|
|
|
|
## Access and Privacy
|
|
|
|
Journals contain private personal data. The Journals layout renders module content only when
|
|
the user has `user_id`, `person_id`, and `trusted_access`. Treat all journal and journal-entry
|
|
routes, API responses, decrypted state, logs, exports, and future sharing features as private.
|
|
|
|
---
|
|
|
|
## Related Docs
|
|
|
|
- `documentation/archive/PROJECT__AE_UI_Journals_Module_Update_2026.md`
|
|
- `documentation/TODO__Agents.md`
|
|
- `documentation/GUIDE__SvelteKit2_Svelte5_DexieJS.md`
|
|
- `documentation/GUIDE__AE_API_V3_for_Frontend.md`
|
|
- `documentation/BOOTSTRAP__AI_Agent_Quickstart.md`
|