feat: render board note html_content above kanban columns #104

Open
opened 2026-04-12 23:58:17 +00:00 by forgejo_admin · 0 comments
Contributor

Type

Feature

Lineage

Discovered while setting up board-gdocs-daily-mcp-remote. The template-board convention defines User Stories, Architecture, and Acceptance Criteria sections as board note content rendered above the kanban. The app doesn't implement this — board note html_content is completely ignored.

Repo

forgejo_admin/pal-e-app

User Story

As a project owner
I want to see the board's user stories, architecture references, and acceptance criteria rendered above the kanban columns
So that the board is a self-contained project hub — context and execution in one view

Context

The template-board in pal-e-docs defines sections (User Stories, Architecture, Acceptance Criteria) that live in the board note's html_content. Currently:

  1. notes/[slug]/+page.svelte:40-42 detects note_type === 'board' and redirects to /boards/{slug}
  2. boards/[slug]/+page.svelte calls getBoardWithItems() which fetches board metadata + items
  3. BoardOut schema (pal_e_docs/schemas.py:274) has note_id but no html_content
  4. The board page renders only kanban columns — zero references to note content

Board notes are created with html_content="" by default (boards.py:254), but the content CAN be populated via update_note. The template-board structure is valid; the app just doesn't fetch or render it.

File Targets

Files the agent should modify:

  • src/pal_e_docs/schemas.py — add html_content: str | None = None to BoardOut
  • src/pal_e_docs/routes/boards.py — populate html_content in _board_to_out() from the board's linked note
  • src/lib/api-client.ts (pal-e-app) — add html_content to Board interface, pass through BoardDetail
  • src/routes/boards/[slug]/+page.svelte (pal-e-app) — render html_content above the kanban columns using existing NoteContent/block renderer

Files the agent should NOT touch:

  • src/routes/notes/[slug]/+page.svelte — the board redirect is correct behavior

Acceptance Criteria

  • When a board note has html_content, it renders above the kanban columns on /boards/{slug}
  • When a board note has empty html_content, the board page looks the same as today (no empty section)
  • Links in the board note content (e.g., to arch notes, story notes) are clickable
  • Mermaid code blocks in the content render as diagrams

Test Expectations

  • Manual: navigate to board-gdocs-daily-mcp-remote, verify User Stories + Architecture sections render above kanban
  • Manual: navigate to board-pal-e-platform (empty content), verify no visual regression

Constraints

  • Reuse existing block/note content rendering components — don't build a new renderer
  • The content section should be collapsible or visually separated so it doesn't overwhelm the kanban on small screens
  • Two repos involved: pal-e-docs (API) and pal-e-app (frontend). Backend change is minimal (add one field to schema + serializer). Frontend is the main work.

Checklist

  • PR opened
  • Tests pass
  • No unrelated changes
  • template-board — the spec that defines board note content structure
  • board-gdocs-daily-mcp-remote — first board with populated content (the test case)
  • project-pal-e-docs — pal-e-docs API changes
  • project-gdocs-daily-mcp-remote — discovered during this project's setup
### Type Feature ### Lineage Discovered while setting up `board-gdocs-daily-mcp-remote`. The `template-board` convention defines User Stories, Architecture, and Acceptance Criteria sections as board note content rendered above the kanban. The app doesn't implement this — board note `html_content` is completely ignored. ### Repo `forgejo_admin/pal-e-app` ### User Story As a **project owner** I want to **see the board's user stories, architecture references, and acceptance criteria rendered above the kanban columns** So that **the board is a self-contained project hub — context and execution in one view** ### Context The `template-board` in pal-e-docs defines sections (User Stories, Architecture, Acceptance Criteria) that live in the board note's `html_content`. Currently: 1. `notes/[slug]/+page.svelte:40-42` detects `note_type === 'board'` and redirects to `/boards/{slug}` 2. `boards/[slug]/+page.svelte` calls `getBoardWithItems()` which fetches board metadata + items 3. `BoardOut` schema (`pal_e_docs/schemas.py:274`) has `note_id` but no `html_content` 4. The board page renders only kanban columns — zero references to note content Board notes are created with `html_content=""` by default (`boards.py:254`), but the content CAN be populated via `update_note`. The template-board structure is valid; the app just doesn't fetch or render it. ### File Targets Files the agent should modify: - `src/pal_e_docs/schemas.py` — add `html_content: str | None = None` to `BoardOut` - `src/pal_e_docs/routes/boards.py` — populate `html_content` in `_board_to_out()` from the board's linked note - `src/lib/api-client.ts` (pal-e-app) — add `html_content` to `Board` interface, pass through `BoardDetail` - `src/routes/boards/[slug]/+page.svelte` (pal-e-app) — render `html_content` above the kanban columns using existing NoteContent/block renderer Files the agent should NOT touch: - `src/routes/notes/[slug]/+page.svelte` — the board redirect is correct behavior ### Acceptance Criteria - [ ] When a board note has `html_content`, it renders above the kanban columns on `/boards/{slug}` - [ ] When a board note has empty `html_content`, the board page looks the same as today (no empty section) - [ ] Links in the board note content (e.g., to arch notes, story notes) are clickable - [ ] Mermaid code blocks in the content render as diagrams ### Test Expectations - [ ] Manual: navigate to `board-gdocs-daily-mcp-remote`, verify User Stories + Architecture sections render above kanban - [ ] Manual: navigate to `board-pal-e-platform` (empty content), verify no visual regression ### Constraints - Reuse existing block/note content rendering components — don't build a new renderer - The content section should be collapsible or visually separated so it doesn't overwhelm the kanban on small screens - Two repos involved: pal-e-docs (API) and pal-e-app (frontend). Backend change is minimal (add one field to schema + serializer). Frontend is the main work. ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] No unrelated changes ### Related - `template-board` — the spec that defines board note content structure - `board-gdocs-daily-mcp-remote` — first board with populated content (the test case) - `project-pal-e-docs` — pal-e-docs API changes - `project-gdocs-daily-mcp-remote` — discovered during this project's setup
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#104
No description provided.