Port: note detail page from playground #71

Closed
opened 2026-03-27 21:14:38 +00:00 by forgejo_admin · 2 comments

Type

Feature

Lineage

Depends on #68 (CSS + sidebar foundation). Part of SvelteKit port pipeline.

Repo

forgejo_admin/pal-e-app

User Story

As a reader, I want rich note rendering with all block types, so I can read documentation with proper formatting.

Context

Port ~/pal-e-docs-playground/note.html to src/routes/notes/[slug]/+page.svelte. This is the kitchen-sink renderer — headings, code blocks, tables, lists, mermaid diagrams. The existing NoteLayout.svelte component handles block rendering and type-colored styling. Data fetching uses client-side onMount, not SvelteKit load functions. The existing +page.ts in this route is SSR config only (ssr = false), not a data fetcher.

File Targets

  • src/routes/notes/[slug]/+page.svelte — note detail matching playground note.html layout
  • src/lib/components/NoteLayout.svelte — existing layout component (may need restyle)

Acceptance Criteria

  • Note detail layout matches playground note.html
  • All block types render via existing NoteLayout.svelte
  • Table of contents sidebar (if present in playground)
  • Board redirect logic preserved (notes with note_type=board redirect to /boards/[slug])
  • App builds without errors

Test Expectations

  • Run command: cd ~/pal-e-app && npm run build

Constraints

  • Copy playground HTML literally, swap data bindings.
  • Reuse existing NoteLayout.svelte — don't rebuild block rendering.
  • Depends on #68 being merged first.

Checklist

  • Page ported
  • NoteLayout integrated
  • Board redirect preserved
  • Build passes
  • forgejo_admin/pal-e-app#68 — foundation (dependency)
  • board-pal-e-docs — project board
### Type Feature ### Lineage Depends on #68 (CSS + sidebar foundation). Part of SvelteKit port pipeline. ### Repo `forgejo_admin/pal-e-app` ### User Story As a reader, I want rich note rendering with all block types, so I can read documentation with proper formatting. ### Context Port `~/pal-e-docs-playground/note.html` to `src/routes/notes/[slug]/+page.svelte`. This is the kitchen-sink renderer — headings, code blocks, tables, lists, mermaid diagrams. The existing `NoteLayout.svelte` component handles block rendering and type-colored styling. Data fetching uses client-side `onMount`, not SvelteKit load functions. The existing `+page.ts` in this route is SSR config only (`ssr = false`), not a data fetcher. ### File Targets - `src/routes/notes/[slug]/+page.svelte` — note detail matching playground note.html layout - `src/lib/components/NoteLayout.svelte` — existing layout component (may need restyle) ### Acceptance Criteria - [ ] Note detail layout matches playground note.html - [ ] All block types render via existing NoteLayout.svelte - [ ] Table of contents sidebar (if present in playground) - [ ] Board redirect logic preserved (notes with note_type=board redirect to `/boards/[slug]`) - [ ] App builds without errors ### Test Expectations - Run command: `cd ~/pal-e-app && npm run build` ### Constraints - Copy playground HTML literally, swap data bindings. - Reuse existing NoteLayout.svelte — don't rebuild block rendering. - Depends on #68 being merged first. ### Checklist - [ ] Page ported - [ ] NoteLayout integrated - [ ] Board redirect preserved - [ ] Build passes ### Related - `forgejo_admin/pal-e-app#68` — foundation (dependency) - `board-pal-e-docs` — project board
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-473-2026-03-27

Three issues found:

  • src/routes/notes/[slug]/+page.ts does not exist — app uses client-side fetching via onMount. Remove from file targets.
  • "Reuse existing BlockRenderer" — component is actually NoteLayout.svelte at $lib/components/NoteLayout.svelte with block components in $lib/components/blocks/. "BlockRenderer" does not exist.
  • Missing constraint: must preserve note_type === 'board' redirect to /boards/{slug}.
## Scope Review: NEEDS_REFINEMENT Review note: `review-473-2026-03-27` Three issues found: - `src/routes/notes/[slug]/+page.ts` does not exist — app uses client-side fetching via `onMount`. Remove from file targets. - "Reuse existing BlockRenderer" — component is actually `NoteLayout.svelte` at `$lib/components/NoteLayout.svelte` with block components in `$lib/components/blocks/`. "BlockRenderer" does not exist. - Missing constraint: must preserve `note_type === 'board'` redirect to `/boards/{slug}`.
Author
Owner

Issue body updated per scope review corrections.

Issue body updated per scope review corrections.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo_admin/pal-e-docs-app#71
No description provided.