Allow moving cards to different boards #111
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/Ponente#111
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Needs some interop work, as e.g. tags might not exist, but could be handy.
🤖 On it — follow along in the action run; the reply will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the task runs.
Cards can now move between boards. Branch pushed:
claude/issue-111.What it does
The card dialog has a fourth details panel, "Move to another board" — a menu of the other boards you can see, a sentence saying what the move would do, and a Move button.
The interop the issue flagged is answered by one sentence, and both halves of it follow the same rule: the card keeps whatever the other board also has a word for.
Doing→Doing), or in that board's first column if there is no such name.How it is built
Services/CardMove.csis the rule itself, pure and static likeBoardFilter, soCardMoveTestspins the cases that would cost a board apiece in Playwright (same word in another case, two tags that are one word over there, no such column, no columns at all).CardService.MoveCardToBoardAsyncperforms it;PlanMoveAsyncanswers the same question without writing, which is what the sentence on screen is. Both take the actor — this is a card edit (it changes what the card is tagged with and takes it off the board its readers were on), so unlike a drag it follows the card's own author-or-admin rule — and both check the target board against the viewer, since it is the one board id in that service a member puts on the wire.BoardHasNoColumnsException) with its own copy, because an admin really can delete every column. Both boards are notified; the one being left is the one that would otherwise go stale.IsNew="false".ReloadAsync— that runs in every circuit on every notifier event.Docs updated in the same commit: a new Moving a card to another board section in
docs/boards-and-permissions.md(the old "a card cannot be dragged to another board" bullet now says what it actually refuses), the card-dialog section ofdocs/ui.md, the "nothing is created from it" bullet indocs/calendar.md, the service table indocs/orientation.md, and a changelog line in both locales. New strings are inenandde.Verified
dotnet build Ponente.slnanddotnet test Ponente.sln— 322 passed, 0 failed (10 of them the newCardMoveTests).tests/e2e/boards.spec.js— two boards, a tag both have and a tag only one has, a card inDone— passes against a real app instance driven by Playwright, and the screenshot above is that instance.boards.spec.js board.spec.js filter.spec.js share.spec.jsalongside it: 47 passed, 2 failed. One isshare.spec.jsasserting the literallocalhost:8090origin of the compose stack (I ran on127.0.0.1:5000). The other,boards.spec.js"the nav switches boards", fails identically on an unmodified tree here — I stashed the change and re-ran to confirm — and is the prerender/circuit racedocs/testing.mdalready describes for runs outside the compose stack. No container engine is available in this job, so the compose stack itself could not be used.No follow-up issues filed.
⏱ 22m 19s · 119 turns · tokens: 208.6k in / 70.9k out (+17735.9k cache-read)
📜 Full session transcript
→ Opened PR: #127