- Wire up lists and todos to C# backend with full CRUD persistence
- Add models, DTOs, repositories, and services for lists and todo lists/items
- Preserve SQLite DB across vault rebuild/load cycles
- Add session store for vault password persistence across navigation
- Add inline name input for creating lists and todo lists in SidePanel
- Clear editor panel on section change with empty state placeholder
- Default markdown editor to preview mode on item selection
- Decompose EditorPanel into sub-components:
- editor/FragmentEditor, editor/TodoEditor, editor/MarkdownEditor
- Shared markdown utilities in utils/markdown.ts
- Strip verbose console/eprintln logging from frontend and Tauri backend
- Add graceful shutdown with vault persistence on window close
Co-Authored-By: Oz <oz-agent@warp.dev>
- Add Rust shutdown command that kills sidecar and exits app cleanly
- Frontend calls invoke('shutdown') after vault flush on close
- Add auth.ts, entries.ts, and normalize.ts backend modules
- Add EditorPanel.svelte component
- Expand entries store with full CRUD support
- Add JournalEntryDtos and JournalEntryDtoMapper in Journal.Core
- Update entry search, fragments, and sidecar CLI
Co-Authored-By: Oz <oz-agent@warp.dev>
- Add Debug.WriteLine to VaultStorageService empty catch blocks for diagnostics
- Replace .ToList() with collection expressions [..] in fragment repositories
- Remove redundant comments in DatabaseSessionService and VaultStorageService
Co-Authored-By: Oz <oz-agent@warp.dev>
- Convert HtmlSanitizer to partial class with [GeneratedRegex] attributes
- Replace 11 runtime Regex.Replace/Matches calls with generated methods
- Eliminates regex compilation overhead for HTML sanitization operations
- Update REFACTORING_SUMMARY.md to document the optimization
Co-Authored-By: Oz <oz-agent@warp.dev>
- Delete unused FileFragmentRepository.cs
- DatabaseSessionService delegates to JournalDatabaseService for
OpenEncryptedConnection/EnsureSchema instead of duplicating logic
- Make IJournalDatabaseService expose OpenEncryptedConnection and
EnsureSchema as public
- Convert entire fragment chain from fake async (Task.FromResult
wrappers) to synchronous: IFragmentRepository, SqliteFragmentRepository,
InMemoryFragmentRepository, IFragmentService, FragmentService,
Entry.cs dispatch, and SmokeTests
Co-Authored-By: Warp <agent@warp.dev>
- Slim Entry.cs from ~550 to ~330 lines (thin dispatcher only)
- Extract HtmlSanitizer, CommandLogger, EntryFileService from Entry.cs
- Extract PythonSidecarClient from duplicated sidecar plumbing
- Add IEntryFileRepository + DiskEntryFileRepository (mirrors Fragment pattern)
- Move payload records to Dtos/CommandDtos.cs
- Move database result records to Dtos/DatabaseDtos.cs
- Register new services and repository in DI
- All 70/70 smoke tests pass, no behavior changes
Co-Authored-By: Warp <agent@warp.dev>
- Fragment model with validation, DTOs (immutable records), repository, service
- Sidecar stdin/stdout JSON protocol for Tauri integration
- DI wiring via ServiceCollectionExtensions
- Scaffolded Journal.Api (not yet wired)
Co-Authored-By: Warp <agent@warp.dev>