journal/Journal.App
Jacob Schmidt e2bfa0e6ff fix: sidecar project root resolution and Tauri frontend wiring
- Set JOURNAL_PROJECT_ROOT and CWD when spawning sidecar so data
  lands at repo root instead of under src-tauri/ (fixes dev watcher
  hot-reload loop triggered by schema file writes)
- Add backend client layer (auth.ts, client.ts, fragments.ts, types.ts)
- Wire vault unlock flow with password prompt modal on locked DB
- Update fragments store with full sidecar CRUD integration
- Update EditorPanel and AppModal for fragment editing support
- Gitignore runtime journal/ and logs/ directories

Co-Authored-By: Oz <oz-agent@warp.dev>
2026-02-25 22:02:49 -06:00
..
2026-02-24 22:16:51 -06:00
2026-02-24 22:16:51 -06:00
2026-02-24 22:16:51 -06:00
2026-02-24 22:16:51 -06:00
2026-02-24 22:16:51 -06:00
2026-02-24 22:16:51 -06:00

Tauri + SvelteKit + TypeScript

This template should help get you started developing with Tauri, SvelteKit and TypeScript in Vite.

Frontend State Management

This app uses Svelte stores as the source of truth for feature state.

Current Stores

  • src/lib/stores/entries.ts
    • state: entriesStore
    • helpers: getDefaultEntry, createEntryDraft
  • src/lib/stores/fragments.ts
    • state: fragmentsStore
    • helpers: parse/serialize + fragment CRUD helpers (createFragmentItem, updateFragmentItem, prependFragmentItem, removeFragmentItem)
  • src/lib/stores/todos.ts
    • state: todoListsStore, todosStore
    • helpers: parse/serialize + todo list/item CRUD helpers
  • src/lib/stores/lists.ts
    • state: listsStore
    • helpers: createListDraft
  • src/lib/stores/settings.ts
    • state: settingsTags, settingsFragmentTypes

Store-First Rule

  • Components should call store helper functions for CRUD operations.
  • Components should avoid embedding feature-specific mutation/parsing logic.
  • UI components should focus on rendering, local form state, and invoking store operations.

What Still Needs Setup

  1. Move settings CRUD helpers into settings.ts (currently add/edit/remove logic lives in routes/settings/+page.svelte).
  2. Add full CRUD helpers for entries and lists stores (update/remove/reorder and optional find-by-id helpers).
  3. Consolidate todo state into a single custom store API (or a single store object) so todoListsStore and todosStore updates are atomic.
  4. Move calendar-created notes into a dedicated calendar store (currently local to SidePanel.svelte).
  5. Add persistence/hydration layer so store state survives app restart and can be synchronized with backend commands.

Suggested Next Refactor

  • Introduce feature service wrappers per store (for example entriesService, fragmentsService) that handle:
    • in-memory store mutation
    • backend command call (sendCommand)
    • optimistic update / rollback policy
    • error normalization for UI

VS Code + Svelte + Tauri + rust-analyzer.