- New 'Import Obsidian' action on site settings page
- Upload a zip file of an Obsidian vault to import all notes as posts
- Markdown notes imported with title from filename, published date from
file timestamp, and body with front-matter stripped
- Images and other attachments saved as Upload records
- New obsimport service handles zip traversal and import logic
- Unit tests for front-matter stripping
Co-authored-by: Shelley <shelley@exe.dev>
Co-authored-by: exe.dev user <exedev@kernel-leviathan.exe.xyz>
Reviewed-on: #8
Implements the pages service with ListPages, GetPage, CreatePage,
UpdatePage, DeletePage, and ReorderPages methods. Wires the service
into the service registry and generalises SlugConflictError message.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wire up categories service, add CategoriesHandler with full CRUD, create index/edit templates, register routes in server.go, and add Categories nav link.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>