Board series: link boards into a chain you can page back through#146
Merged
Conversation
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>
✅ Deploy Preview for kanbanish ready!
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
boards/{id}/previousBoardId+nextBoardId— a doubly-linked chain, adjacent paging only.← Previous / Next →) appears only when a link exists; navigates via the existing?board=mechanism.BoardGateis now keyed onactiveBoardIdso board→board navigation remounts the provider and re-subscribes to the new board.How to test (Netlify preview)
Verification
useBoardSeries(9) +BoardSeriesPager(5).e2e/board-series.spec.js(start-next + page back/forth, and link-to-previous via paste) — both pass. Runs in CI'se2e-testsjob.Notes
AGENTS.mdand corrected the stale "Firebase config is hardcoded" note (it's env-var based now).Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com