Skip to content

Board series: link boards into a chain you can page back through#146

Merged
crittermike merged 2 commits into
mainfrom
board-series
Jun 9, 2026
Merged

Board series: link boards into a chain you can page back through#146
crittermike merged 2 commits into
mainfrom
board-series

Conversation

@crittermike

Copy link
Copy Markdown
Owner

What & why

Lets a board be marked as the next in a series of a previous board, so you can page back/forward between linked boards — e.g. to review the previous retro's commitments. Works in both kanban and retrospective formats (it links boards, independent of workflow phases). No content is copied.

How it works

  • Schema (Firebase, shared): boards/{id}/previousBoardId + nextBoardId — a doubly-linked chain, adjacent paging only.
  • Header pager (← Previous / Next →) appears only when a link exists; navigates via the existing ?board= mechanism.
  • Start next board (Settings → Share & Export): clones the current board's column structure + settings (empty cards), links the pointers, and jumps to the new board.
  • Link to previous board: modal to pick a recent board or paste a board URL/ID.
  • Fixes a latent nav bug: BoardGate is now keyed on activeBoardId so board→board navigation remounts the provider and re-subscribes to the new board.

How to test (Netlify preview)

  1. Open a board → Settings → Share & Export → Start next board → you land on a new board showing a ← Previous control. Click it to page back; the original board now shows Next →.
  2. On a different board, Settings → Share & Export → Link to previous board → paste a board URL/ID (or pick a recent board) → a ← Previous control appears and pages back to it.

⚠️ The Netlify preview needs the VITE_FIREBASE_* env vars set in its build environment (the app throws without them). If the preview is blank, that's the cause.

Verification

  • ✅ Lint clean; production build compiles all modules.
  • ✅ Unit tests: useBoardSeries (9) + BoardSeriesPager (5).
  • Live e2e against real Firebase: e2e/board-series.spec.js (start-next + page back/forth, and link-to-previous via paste) — both pass. Runs in CI's e2e-tests job.

Notes

  • Documented the new schema in AGENTS.md and corrected the stale "Firebase config is hardcoded" note (it's env-var based now).

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Let a board be marked as the next in a series of a previous board so you
can page back/forward to earlier boards (e.g. to review a prior retro's
commitments). Works in both kanban and retrospective formats — it links
boards, independent of workflow phases. No content is copied.

- Schema: boards/{id}/previousBoardId + nextBoardId (doubly-linked,
  adjacent paging), loaded by BoardContext's onValue listener.
- useBoardSeries hook: startNextBoard (clones column structure + settings
  with empty cards, links pointers, returns new id), linkToPreviousBoard,
  unlinkFromSeries.
- BoardSeriesPager in the header (Prev/Next), shown only when links exist;
  navigates via the existing ?board= mechanism.
- "Start next board" and "Link to previous board" actions in Settings →
  Share & Export; LinkPreviousBoardModal picks a recent board or parses a
  pasted URL/ID (utils/boardLink.js).
- App: key BoardGate on activeBoardId so board→board navigation remounts
  the provider and re-subscribes.
- Tests: useBoardSeries + BoardSeriesPager unit tests; e2e/board-series
  spec covering start-next, page back/forth, and link-to-previous.
- Docs: document the schema in AGENTS.md and correct the stale note about
  Firebase config being hardcoded (it is env-var based).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@netlify

netlify Bot commented Jun 8, 2026

Copy link
Copy Markdown

Deploy Preview for kanbanish ready!

Name Link
🔨 Latest commit 4be4bb9
🔍 Latest deploy log https://app.netlify.com/projects/kanbanish/deploys/6a2861afb9202e0008b44231
😎 Deploy Preview https://deploy-preview-146--kanbanish.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

- Detach displaced neighbours' reciprocal pointers when a link is
  replaced (startNextBoard over an existing nextBoardId, and
  linkToPreviousBoard over an existing predecessor/successor), so
  chains can no longer go asymmetric with dangling back-references.
- Refuse links that would create a cycle: linkToPreviousBoard walks
  the target's predecessor chain (bounded) and bails if the current
  board is already an ancestor.
- Splice neighbours together when unlinking a middle board, keeping
  the rest of the series intact instead of splitting it in two.
- Accept protocol-less URLs (e.g. www.kanbanish.com/?board=x) in
  extractBoardId, with tests.
- Update confirm/notification copy to match the new behaviour.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@crittermike crittermike merged commit 7984c7d into main Jun 9, 2026
6 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