Changelog

What’s new in CrossBoard

Every change that landed, newest first, up to November 6, 2026. 119 changes so far.

CrossBoard 0.2.0Release notes

Full Changelog: https://github.com/nervesscat/agent-board/commits/v0.2.0

  1. PR 142

    Release 0.2.0: project repositories, renamed Agents pages, find_project, tag filter

    Release 0.2.0: merges dev into main. Once this merges, the v0.2.0 tag on the merged commit publishes the Windows and Linux installers (docs/releasing.md).

  2. PR 134

    Version 0.2.0

    Sets the desktop app's version to 0.2.0 in desktop/app/package.json. That file is the only place the release version is kept: .github/workflows/release.yml and scripts/release.mjs read the tag (v0.2.0) and the installers' versioned names from it.

  3. PR 136

    Rename the three Agents pages: Connect, Team, Agent tokens

    Three different things were all labelled "Agents".

  4. PR 139

    Remove the Hand-off card; the summary check becomes a phase the board ticks

    The ticket page's Hand-off card listed the same facts the task list already shows. The card's one unique check was whether an agent wrote the summary after the branch's last commit.

  5. PR 141

    Make the tag filter searchable, paged from the server, capped and in tag colours

    The Board's tag filter was a plain select holding every tag at once, with no search, no height cap, and labels in the plain text colour. It is now a searchable combobox that loads its tags from the server one page at a time.

  6. PR 140
  7. PR 138

    Keep the project sidebar in view while the page scrolls

    From md up, the project sidebar sticks below the header and scrolls on its own when it is taller than the window. On narrow screens it stays above the content, as before. The page still scrolls as it does today, so scroll restoration and the other sticky bars are unchanged.

  8. PR 137

    Agents find their board project at run time with find_project

    The board skill carried a table of every project and repo, filled in when the skill was rendered. A project or repo added, moved or renamed afterwards stayed invisible to every installed copy until it was copied again.

  9. PR 135

    Move Repositories into each project's menu, scoped to that project

    Repositories was a board-wide page in the top bar. It is now a page in each project's sidebar (/projects/ /repositories), listing and managing only that project's repos.

  10. PR 131
  11. PR 133

    Let wide markdown tables keep their natural width and scroll sideways

    A markdown table in its scroll box was still 100% wide (typography plugin), so a wide one shrank every column to its narrowest word: sentences wrapped word by word, rows got very tall, headers left gaps.

  12. PR 132

    Make the gallery day-filter test independent of today's date

    In the first ten days of a month that day is in the previous month, and the calendar opens on the current month, so the check failed.

  13. PR 125

    Let agents add, change and delete a repo's runs

    Agents can now configure a repo's runs themselves, so they can get a preview for a repo nobody set up without waiting on the human.

  14. PR 126
  15. PR 130

    Make the Linux CI jobs pass: gh probe and repo request tests,.deb install test

    The check and desktop-linux jobs fail on Linux for every pull request built from dev, whatever the pull request changes. The product code was right in each case.

  16. PR 127
  17. PR 124

    Put a remembered choice in the URL only once the move to its page has finished

    Pages that remember a choice in this browser (the PR queue's filter, the Ongoing features view, the Previews stage, the agents shell) put it in their URL with a replace as they mounted, while the router's push to the page was still loading.

  18. PR 123

    Scroll wide markdown tables inside their own column

    A wide table in rendered markdown (instructions, posts, comments, summaries) pushed past its column and ran under the right sidebar.

  19. PR 122

    Release: dev to main

    Releases dev into main.

  20. PR 121

    Let agents ask for a repo and move their ticket onto one

    Agents can now ask for a repo to be added to their project, and can move a ticket onto another repo of its project.

  21. PR 120

    Show, hide and reorder a project's pages, Overview cards and ticket sections from its settings

    A visual layout editor in a project's settings. The Layout section shows a small picture of the project's menu, its Overview cards and a ticket page with two columns.

  22. PR 119

    Agent roles: orchestrators edit project instructions, workers get clear identities

    No agent route can raise a role. - Delegated workers identify themselves as / , using X-Agent-Name or the agentName argument on every MCP tool. A sub-identity is always a worker.

  23. PR 118

    Runs: previews and background jobs per repo, and tickets that span several repos

    The board's one hard-coded managed preview becomes runs: long-running processes the board starts from a ticket's worktree. Tickets also stop being tied to one repo.

  24. PR 117
  25. PR 116

    Prepare the repository to be made public

    Prepares the repository to be made public.

  26. PR 115
  27. PR 114

    Work timeline: record agents' spans, hand-offs, waits and heartbeats, and flag stalled tickets

    A work timeline per ticket, so it is visible what agents (and the sub-agents they start) are doing, what they wait on, and when a ticket has gone quiet.

  28. PR 113

    Close tooltips on scroll and position them fixed

    Last, hover and Tab open the tooltip again. Against the old tooltip.tsx it fails.

  29. PR 112

    Linux packages of the desktop app: AppImage,.deb,.rpm and pacman

    The desktop app now builds and runs on Linux as well as Windows: pnpm desktop:package on Linux x64 produces an AppImage, a .deb, an .rpm and a pacman package. Windows still builds the same NSIS installer.

  30. PR 111

    Say why a JSON body was refused, with a hint for collapsed backslashes

    Adding a repo through the API with a Windows path answered a bare 400 body must be JSON.

  31. PR 110

    PR queue: a second link to the same PR in one visit shows its card

    On the PR queue, a second link to the same PR in one visit now shows its card again. Before, following #pr- switched the stage and filter to show that PR.

  32. PR 109

    Warn when git, gh, claude, node or pnpm are missing

    The board runs git, gh, claude (CLAUDE_BIN), node and pnpm. Until now a missing one only showed up as a feature failing quietly or with a raw spawn … ENOENT.

  33. PR 108

    Let agents ask to archive finished tickets; the human confirms

    Agents could not archive tickets. Now they can ask: the human confirms, and only the human's answer archives.

  34. PR 107

    Edit default phases and tag suggestions as lists in project settings

    Project settings' Default phases and Tag suggestions were textareas (one item per line). They now use the list editor from the New ticket dialog's Initial tasks: bulleted rows, × to remove, an add input with a + button ("Add a phase" / "Add a tag").

  35. PR 104

    Overview: Needs you and In progress share one height and scroll

    The Needs you and In progress cards on the Overview now have the same fixed height (28rem) on desktop and the same cap on a phone. Content that does not fit scrolls under the header, using the existing slim global scrollbar.

  36. PR 105

    Roadmap: in-progress tickets and lanes as swimlane timelines

    A new project page, Roadmap (/projects/:id/roadmap, in the project nav), that shows every ticket being worked side by side as horizontal swimlanes: one row per top-level ticket, a thinner row under it for each of its lanes, and the tasks of each running left to right as a…

  37. PR 103

    Install the board as a desktop app with its own passkey sign-in

    Ships the board as an installable desktop program with its own sign-in, replacing passkey-gate.

  38. PR 97

    Offer tag suggestions per project and filter the board by tag

    Each project now keeps a list of tag suggestions, Bug, UI, Implementation and Report by default. The tag fields offer them, together with the tags already used in the project, and the board can be filtered by tag.

  39. PR 92

    Use the board from other devices over HTTPS on the tailnet

    Lets the board be used from other devices over HTTPS on a tailnet, through tailscale serve.

  40. PR 98

    Add a project Gallery of every file on its tickets

    Adds a Gallery module to every project: one place to find a file again without remembering which ticket it was on.

  41. PR 99

    Split a ticket's feed into Main and Agents tabs, with a living summary

    A ticket's feed now has two tabs. Main is for the human; Agents holds the agents' working record. One living summary at the top of Main takes the place of the hand-off post.

  42. PR 96
  43. PR 95

    Let agents delete landed local branches of closed tickets

    Agents may now delete the landed local branches of closed tickets (done, cancelled or archived). They get the same checks the Cleanup page applies to a human's delete. Removing worktrees, and deleting branches on origin, stay with the human, on the Cleanup page.

  44. PR 94

    Give each ticket a review level and scale the review rounds by it

    Each ticket now carries a review level, low, mid or high. It is chosen when the ticket is created (New ticket dialog, REST, MCP) and can be changed on the ticket page.

  45. PR 90

    Tag a task as blocked on the human, with what they must do

    When a step needs the human, an agent can tag that task blocked and keep working on the rest. Examples are a credential, a manual action, or a call only the human can make. The tag carries an optional reason that says what the human must do.

  46. PR 89

    Cleanup: delete worked branches and worktrees, with safety checks

    Every item is checked again at delete time against the commit the person saw.

  47. PR 66

    Nest subtasks under tasks, start tickets with default phases, and add Implementation to the hand-off

    A ticket's to-do list gets two levels, new tickets start with default phases, and the hand-off gets an Implementation item.

  48. PR 51

    Show whether the review skills are current, with a diff per file, in ~/.claude or in each repo

    The Agents pages now show whether the copy you rely on matches what the server serves, and give the one line that updates it.

  49. PR 74

    Show every hover hint through one shadcn tooltip

    Every hover hint in the app now uses one shadcn tooltip instead of the browser's native title. These hints used to look different from one place to the next and never showed on keyboard focus.

  50. PR 85

    Check a PR's merge state against origin's base, and re-ask GitHub when it moves

    A PR could show mergeable on a ticket and in the PR queue while GitHub already reported conflicts.

  51. PR 86

    Filter the Previews page by stage, In review by default

    The Previews page listed every preview of the project at once. It now has a Stage filter, set by default to the project's review stage ("In review").

  52. PR 87

    Search the List and Archived tickets by name, then instructions and thread

    The List and Archived views of Ongoing features get a search field. Finding a ticket in a long list or archive no longer means scrolling.

  53. PR 84

    Show one Resume here card after moving to another ticket

    Moving from one ticket to another inside the app (Next/Previous, [ and ], Back and Forward, a lane link) left the previous ticket's Resume here card on the page, above the new one's.

  54. PR 72

    Add a Previews module listing every preview of a project

    A new Previews module in the project sidebar, after "Ongoing features", at /projects/:id/previews. It lists every preview of the project's tickets in one place, running or not.

  55. PR 71

    Put open decisions at the top of a ticket's Activity feed

    A question an agent asks the human (a decision card) used to sink below newer posts in a ticket's Activity feed, so one asked a few days ago could sit far down the timeline unnoticed.

  56. PR 73

    Set consecutive paragraphs a quarter em apart in the editor and rendered markdown

    Lines typed one under the other in the rich text editor read as double spaced. Enter starts a new paragraph, and the typography plugin's prose-sm puts 16px above and below every paragraph, so each line started 40px below the last at a 24px line height.

  57. PR 78

    Make the Daily page where each project's report is made: AI reports, shifts, calendar, alert, pushed today

    The Daily page was mainly a log, and a project's report and its three-line daily summary were two separate things.

  58. PR 82
  59. PR 67

    Link each Needs you entry to the exact post, reply or section

    Every entry of the Needs you card (Home and Overview) linked to the top of its ticket or of the PR queue. Now each one lands on what waits on the human, scrolls it into view below the sticky header once the page's data has loaded, and highlights it for a moment.

  60. PR 65

    Make the New ticket dialog's tags a chips input

    The New ticket dialog's Tags field was a single text box of comma-separated words. It is now a chips input: what you type turns into chips inside the field, in the same look tags have on the board. The New lane dialog uses the same field.

  61. PR 64

    Keep the list a ticket page steps through when a ticket in it changes stage

    On a top-level ticket's page, the ‹ › buttons (and [ ]) stepped through the ticket's current board column, worked out again on every render.

  62. PR 63

    PR queue: drop the All filter and keep its tabs from scrolling

    The PR queue's controls no longer scroll, and its author filter keeps only the two views it needs.

  63. PR 61

    Put the rich editor's attach button first in its toolbar

    The paperclip attach button in the rich editor's formatting toolbar used to sit at the right end of the row (ml-auto).

  64. PR 60

    Drop the branch picker from the New ticket dialog

    People creating a ticket no longer pick its branch: whoever works the ticket sets it, from the ticket page or through the API and MCP tools. This removes the "Branch (optional)" field from the New ticket dialog. The New lane dialog uses the same form, so it loses the field too.

  65. PR 68

    List the New ticket dialog's initial tasks as they are added

    The Initial tasks field of the New ticket (and New lane) dialog was a textarea, one task per line, so the tasks a ticket would start with were never shown as tasks.

  66. PR 69

    Keep the New ticket dialog within the screen and scroll its fields

    The New ticket dialog (and New lane, the same component) had no height limit. Long instructions, many tasks or attachments pushed it past the top and bottom of the window, so the heading and the Create button could not be reached.

  67. PR 70

    Hand-off card: show whether the branch is merged, green border when all is done

    The ticket page's Hand-off card gets a Merged row at the top, above PR. When every row on the card is green, Merged included, the whole card gets a green border.

  68. PR 55

    Keep a ticket's git state until its commits move

    A ticket's git state (GET /api/tickets/:id/git, the get_ticket_git tool) was worked out from scratch on every read: about ten git processes for a ticket with one workspace (branchInfo per branch, a fresh ref and worktree listing per request, built twice).

  69. PR 49

    PR queue: split by author, stage by review state, add Done

    The PR queue's two filters used to split PRs by whose move it was. They now split them by who wrote them, and each filter tracks where the reviews stand.

  70. PR 56

    Move the post and reply attach into the editor toolbar

    The New post box on a ticket and the Reply box in threads (under posts, on PRs, on review results) had their own "attach" text button in the row under the editor. The New ticket dialog instead puts attach at the end of the editor's formatting toolbar.

  71. PR 54

    Show the editor toolbar's attach as a paperclip only

    The attach button at the end of the rich editor's formatting toolbar showed a paperclip and the word "attach". It now shows only the paperclip, like every other toolbar button.

  72. PR 57

    Drop the progress switch from the ticket page's New post box

    Removes the "progress" switch from the row under the New post editor on the ticket page. The row now holds attach, the pending files and Post (still on the right).

  73. PR 53

    Pick the stage of a new ticket in the New ticket dialog, Backlog by default

    The New ticket dialog gets a Stage control, so a new ticket can start in any stage of the project. Left alone it starts on the first open stage in board order (Backlog in the default layout), where before the dialog sent no stage and every new ticket landed in To do.

  74. PR 50

    Brand the browser UI as CrossBoard: cable mark, wordmark and favicon

    The browser UI gets a name and a logo: CrossBoard. The top bar and the tab said "Agent Board" in plain text, and there was no favicon.

  75. PR 52

    Cleanup: account for worktrees checked out detached at a ticket's commit

    The Cleanup report listed a worktree as untracked while an in-progress ticket was using it.

  76. PR 48

    Post and reply actions as icons under their text

    Moves the actions on a post and on a thread reply from their header to a row under their text, next to where the reply box opens, and turns the text buttons into icons with tooltips.

  77. PR 46

    Feed timestamps run vertically down the timeline rail

    On a ticket page, every post in the Activity feed has a time legend left of the timeline rail: "10 minutes ago" over "01:20", or a short date for older posts. It sat in a 5.5rem / 7rem column, which squeezed posts on a phone.

  78. PR 39

    One board on 47100, with hot reload

    One board instead of two: the built board on 47100 plus a pnpm dev copy with its own data was easy to confuse. While the built board was down, work was created on the copy (47101) by mistake, because it looked exactly like the real one.

  79. PR 42

    Dev server: a reset connection no longer opens Vite's error overlay

    On the hot-reload board (pnpm dev), Vite's red error overlay kept popping up with read ECONNRESET / at TCP.onStreamRead (node:internal/stream_base_commons:216:20). It covered whatever was on screen, open dialogs included, in every open tab.

  80. PR 45

    Rich editor: Tab reaches the text first, attach moves into the toolbar

    Tab from the field before a rich editor now lands in the editor's text, not on its first formatting button. The attach button of the New ticket dialog moved from the row above the editor into the editor's formatting toolbar, after Link.

  81. PR 44

    Keep the ticket header in view while the page scrolls

    On a ticket page the window scrolls and the title scrolled away with the feed. The ticket header (title, opened-by line, status select and actions) is now sticky just under the top bar, so the title stays in view while reading a long page. At rest it looks exactly as before.

  82. PR 43

    Align the author with the text around it

    In the ticket header, "opened by 1 d ago" had the author 2-4px off the line of the text around it. The cause was in Actor.

  83. PR 36
  84. PR 33

    Resume notes: where work on a ticket was left off

    Work that takes more than a day had nowhere to say how to continue it. The next session (another agent, the same one tomorrow, or the human) had to rebuild the state from the feed and the branch.

  85. PR 31

    Home page and project Overview with a summary of the work

    There was no single place that says where things stand. To see what waits on the human, what is moving and what got done, you had to open the PR queue, the board and the Daily page of each project in turn.

  86. PR 30

    Project reports on the Daily page: prompt, cadence and tracking

    Projects owe their progress reports on different rhythms: some every day (by the hour), some once a week, some as a couple of lines, others as a PDF.

  87. PR 38

    Hand-off checklist for agents; the board says what a ticket in review lacks

    Agents handed work to review without a preview link. The agent docs only asked for "the preview link if there is one", and nothing pointed out what was missing.

  88. PR 32

    Declare what a ticket needs merged first, and hold done to it

    A ticket can now declare which tickets it needs merged first, the board checks it against git, and a ticket cannot be marked done while one of them has not landed in its base.

  89. PR 35

    Let the board build and run previews of its own branches

    Previews of a branch were pnpm dev processes an agent started in its own session (scripts/dev.mjs). They died with the session, and the Vite dev server behaves differently from the built board the human uses. The board now builds and runs them itself.

  90. PR 34

    Playwright e2e suite, CI and a migration check

    UI changes have shipped without being exercised in a browser, and nothing runs the checks on a pull request.

  91. PR 29

    Run the board without the passkey gate outside production only

    Agents can't get past the passkey gate, so UI changes ship without anyone trying them. The live board must never be able to run that way.

  92. PR 28

    Show whether each branch is pushed to origin

    Nothing showed whether a branch had reached origin. A branch that only exists in one checkout is easy to lose and cannot be reviewed, so the board should say red or green, and agents should not hand off work that is not pushed.

  93. PR 27

    Delete unattached uploads after a day

    Files uploaded but never attached stayed in the store forever: images added to a New ticket window that was closed without creating, files removed from a post before sending, uploads an agent never used.

  94. PR 26

    Let agents poll for new comments with a cursor

    Feedback left in a ticket's feed or replies only reached a working agent when the human told it to "check comments". Agents need a cheap way to ask "anything new for me?" and a routine that keeps asking while they have work in progress or in review.

  95. PR 25

    Give each project ticket list its own query key

    The Agents page fetched every ticket of the project, lanes included, under the query key ['tickets', id]. The features board and the ticket page's stage navigation use that same key for top-level tickets only (?parent=root).

  96. PR 24

    Inline code: no literal backticks, a tinted chip instead

    Code blocks are unchanged. The rule sits outside Tailwind's layers, so it wins over the plugin's.

  97. PR 17

    MCP instructions: drop the stale copy of step 6

    A merge kept two versions of step 6 in the instructions the board gives connected agents: the current one (posts, replies and ask_decision) and the older one from before tickets had a single feed of posts, which still talked about threads and comment counts.

  98. PR 21

    Attach files in the New ticket dialog: button, paste and drop

    The New ticket dialog (and New lane) had no way to add files: a screenshot that explains the work could only be attached after the ticket existed, from the ticket page.

  99. PR 22

    Edit project instructions in the rich text editor

    The project's Instructions page was the last markdown field on the board edited in a raw monospace textarea. Ticket instructions, posts and agents all use the rich text editor.

  100. PR 23

    Archive finished tickets, one at a time or a whole done column

    Done and cancelled columns only grow, so the board gets harder to read over time. Finished tickets need a way off the board that keeps them, either all at once from a column or one at a time.

  101. PR 20
  102. PR 19

    Step to the previous / next ticket in the same stage from a ticket page

    On a lane's page you can step to the previous / next sibling lane, but a top-level ticket's page had no way to reach the ticket beside it on the board without going back to the board.

  103. PR 18

    Fold the top bar's page links into a menu on phones

    On a phone (390px) the top bar ran to about 540px: brand, project switcher and the Repositories, Daily, Agents and Settings links did not fit, so every page scrolled sideways.

  104. PR 16

    PR queue: filter by whose move it is, and show merge and CI state

    Filter: To review / Waiting on others / All.

  105. PR 15

    Ticket page: a Preview card with the preview link and whether it runs

    Agents start a branch from its worktree on a free port so it can be tried before merging, but the link only lived inside a post's text, and nothing said whether the server behind it was still up. This puts it in plain sight on the ticket page with its state.

  106. PR 14
  107. PR 13

    Attachments can live in MinIO (STORAGE=s3), with a local copy for agents

    Attachments lived only in data/uploads. This makes an S3-compatible store (the board's own MinIO) an option, without changing what anyone sees: the browser still gets files from the board, and agents still get a path on this machine to open.

  108. PR 12

    Decision cards: agents ask the human to choose between options

    When an agent is blocked on a call it should not make alone (an approach, a trade-off, a scope call), a free-form question in a thread is easy to miss and slow to answer. A card with the options laid out is quick to read and answers with one click.

  109. PR 11
  110. PR 10

    Tickets have one feed of posts; replies, editing and deleting everywhere

    A ticket had two kinds of message, updates (progress) and comments (discussion), shown together behind an Update / Comment switch, with different rules for each (updates only on tickets, comments with replies, neither editable).

  111. PR 9

    Ongoing features: the board fills the window and keeps its scroll

    At phone width the page also scrolls sideways, but that is the top bar's links on every page, not this change.

  112. PR 8

    Previews: agents post a link to their branch running on a free port

    Reviewing a change meant merging it first, or someone switching branches in the main checkout (which changes the code under anything already running there). Agents should hand over something the human can open and try before deciding to merge.

  113. PR 7

    Board cards are as tall as their content, up to the old fixed height

    Cards on the features board had a fixed height (h-40, 160px). A ticket with only a title left most of its card empty, and a column of such tickets took far more room than it needed.

  114. PR 5
  115. PR 3

    Project agents, and tickets shared between connected agents

    A project can define its own agents on a new Agents page (project menu): a name, a picture and instructions. They are personas, not connections: a connected agent (a gate token: claude, codex, …) works for them.

  116. PR 2

    Reviews: drop Run now, automatic reviews and the run history

    The Reviews module no longer launches reviews itself.

  117. PR 6

    PR queue: also list open PRs assigned to me

    The PR queue lists open PRs from two GitHub searches: review-requested:@me and reviewed-by:@me. A PR opened with my own account (which is how agents push here) can match neither: GitHub silently ignores a review request for the PR's own author, and I have not reviewed it yet.

  118. PR 1