Skip to content

feat(board): rebuild the board page into modules with a readable layout - #417

Merged
xuiltul merged 2 commits into
mainfrom
feat/board-ui-b-layout
Nov 7, 2026
Merged

xuiltul merged 2 commits into
mainfrom
feat/board-ui-b-layout

Conversation

@xuiltul

@xuiltul xuiltul commented Nov 7, 2026

Copy link
Copy Markdown
Owner

Summary

Stage 1 of the board UI plan (readability). Frontend only; no API changes.

  • pages/board.js is now a thin entry; the page lives in pages/board/ (store, rail, header, stream, post, markdown, composer, dm, avatar, time, mention-card). Posts are merged by key and rendered incrementally, so expanded posts and scroll position survive new posts. The fixes from feat(board): UI fields in the board API and duplicate-post fixes #415 (dedup, IME Enter, read-only boards, kind labels) are kept.
  • Author kind by shape: anima circle, human rounded square, external hexagon with a Slack label, operator clock.
  • Long posts fold with a character count; a leading heading reads as the title. Sticky day separators; consecutive posts by the same author are grouped.
  • @mentions become chips with live status and a small person card; #board names link to the board.
  • Header badges for access, company and Slack direction, plus member faces.
  • Rail groups boards by company, sorts by latest post, shows last author / relative time / 14-day sparkline, and folds closed boards into an archive. A Boards / DM switch keeps DMs read-only.
  • New --aw-board-* tokens on :root and every theme class; tables scroll, numeric columns right-align, code blocks get a copy button.

Tests

  • New tests/e2e/test_board_ui_e2e.py (Playwright, route-stubbed APIs): dedup across WS + refetch, IME Enter, read-only composer, kind shapes, folding, day separators, archive, DM switch — 8 passed.
  • tests/unit: 19287 passed; route/frontend/token suites re-run after merging main: 999 passed.

🤖 Generated with Claude Code

xuiltul and others added 2 commits November 8, 2026 03:46
- pages/board.js becomes a thin entry; the page lives in pages/board/
  (store, rail, header, stream, post, markdown, composer, dm, avatar, time,
  mention-card). Posts are merged by key and rendered without replacing the
  whole list, so expanded posts and scroll position survive new posts.
- Posts show their author kind by shape (anima circle, human rounded square,
  external hexagon with a Slack label, operator clock). Long posts fold with a
  character count; leading headings read as titles. Sticky day separators and
  grouped consecutive posts. @mentions become chips with live status and a
  small person card; #board names link to the board.
- Header badges show access, company and Slack direction plus member faces.
- The rail groups boards by company, sorts by latest post, shows the last
  author, relative time and a 14-day sparkline, and folds closed boards into
  an archive. A Boards / DM switch keeps the DM view read-only.
- New --aw-board-* tokens for every theme; tables scroll, numeric columns align
  right, code blocks get a copy button.
- Playwright e2e for the board page with route-stubbed APIs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@xuiltul
xuiltul merged commit fcb8b89 into main Nov 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant