Phase 2: read API and the MudBlazor pages #4

Merged
k.renner merged 2 commits from feat/read-api into main 2026-09-24 13:38:51 +00:00
Member

Read API (/api/v1): GET /notes (list by updated, ?tag=, or ?q= ranked through the active index), GET /notes/{slug} (frontmatter, body, outgoing links, backlinks, sources resolved to their raw file, unresolved link targets), GET /tags, GET /raw + /raw/{slug} (the distill queue), GET /reports + /reports/{slug} (output/ by type). NoteQueries in Application, tested with fakes; a host test drives every endpoint.

Pages (interactive server, MudBlazor, drawer nav): Search (/, recent notes when empty, ranked results with score and tags), Note (/notes/{slug}: Markdown via Markdig with DisableHtml, [[wikilinks]] rewritten to note links before rendering, unresolved ones muted, code fences and inline code untouched; sources, backlinks, outgoing links), Browse (/browse?tag=), Raw (/raw/{slug}), Maintenance (raw queue, reports, index status), Report (/reports/{slug}), Status (/status, the previous landing page). Shared NoteCard, TagChips, StatusPanel components. No JavaScript beyond MudBlazor, no CDN.

WikiMarkdown has 8 unit tests (fences, inline code, alias, heading, unresolved, plain Markdown, HTML injection via alias). 95 tests green.

🤖 Generated with Claude Code

**Read API** (`/api/v1`): `GET /notes` (list by `updated`, `?tag=`, or `?q=` ranked through the active index), `GET /notes/{slug}` (frontmatter, body, outgoing links, backlinks, sources resolved to their raw file, unresolved link targets), `GET /tags`, `GET /raw` + `/raw/{slug}` (the distill queue), `GET /reports` + `/reports/{slug}` (output/ by type). `NoteQueries` in Application, tested with fakes; a host test drives every endpoint. **Pages** (interactive server, MudBlazor, drawer nav): Search (`/`, recent notes when empty, ranked results with score and tags), Note (`/notes/{slug}`: Markdown via Markdig with `DisableHtml`, `[[wikilinks]]` rewritten to note links before rendering, unresolved ones muted, code fences and inline code untouched; sources, backlinks, outgoing links), Browse (`/browse?tag=`), Raw (`/raw/{slug}`), Maintenance (raw queue, reports, index status), Report (`/reports/{slug}`), Status (`/status`, the previous landing page). Shared NoteCard, TagChips, StatusPanel components. No JavaScript beyond MudBlazor, no CDN. `WikiMarkdown` has 8 unit tests (fences, inline code, alias, heading, unresolved, plain Markdown, HTML injection via alias). 95 tests green. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-bot added 2 commits 2026-09-24 11:58:59 +00:00
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
feat(ui): add MudBlazor read pages for search, notes, browse, raw, reports and maintenance
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/push/test Pipeline was successful
123850f975
Adds /  (search, with recent notes as default view), /notes/{slug}, /browse,
/raw/{slug}, /reports/{slug} and /maintenance, all InteractiveServer, built on
NoteQueries and IEmbeddingModel injected directly (no HTTP). Moves the former
status page from / to /status and factors its markup into a shared
StatusPanel used by both /status and /maintenance. Adds a MudDrawer/NavMenu
nav in MainLayout.

Wikilinks ([[slug]], [[slug|alias]], [[slug#heading]]) are rewritten to note
links (or a muted "no such note" span when unresolved) by a new
Wiki.Host.Rendering.WikiMarkdown, before the body goes through Markdig with
DisableHtml() so note content can't inject script. Fenced code blocks and
inline code spans are left untouched. Covered by WikiMarkdownTests.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
k.renner merged commit a02e4df939 into main 2026-09-24 13:38:51 +00:00
k.renner deleted branch feat/read-api 2026-09-24 13:38:51 +00:00
Sign in to join this conversation.