Port: note detail page from playground #71

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

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
Contributor

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
Contributor

Issue body updated per scope review corrections.

Issue body updated per scope review corrections.
Commenting is not possible because the repository is archived.
No milestone
No project
No assignees
1 participant
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
ldraney/pal-e-app#71
No description provided.