Release Notes

7 releases · newest first

What each deploy changed, and whether it changed the API contract. Scheme in docs/10-versioning.md.

Running

1.6.0

1.6.0

Running
c2396ad

Fixed

  • Approve now moves a task to Staged, not straight to Done — the same place the [APPROVED] marker has always sent it. Until now the two ways of accepting work disagreed: posting the marker reached Staged, clicking the button skipped it, and anything approved by button lost the distinction between accepted and actually released. The button predates Staged existing, and PROEN-46 updated only the marker path, so this shipped alongside Staged rather than breaking afterwards. Done is still reachable from the status dropdown (PROEN-61).

  • The e2e suite no longer asserts before a page has its data. Every surface that loads client-side now publishes a data-page-loading attribute from the same flag that gates its skeleton, and the tests wait on that instead of on hydration — which only ever proved the framework was interactive, not that the content had arrived. This was CI going red about half the time on a different test each run, with no application defect behind it (PROEN-55, absorbing PROEN-36).

Nothing in this release changes the /api/v1 contract, so no client needs to do anything.

One known issue is deliberately not fixed here and is worth knowing about if CI goes red. This entry originally described it as the e2e dev server accepting a request and never answering it. That was wrong, and PROEN-62 has since established what actually happens: in development Nuxt compiles a route on its first request, inside that request, which costs 8-13 seconds. Nothing hangs — under load, 2400 requests produced four slow ones and every one returned a 200. The "never answered" reading came from Playwright recording a request it gave up on and a request the browser cancelled in exactly the same way, which is indistinguishable from one that was never answered. The harness now compiles those routes before any test is timed.

The two things this entry said that were true remain true: PROEN-55 closed with four consecutive green CI runs rather than the five its own acceptance criteria asked for, and this affects the test harness rather than production traffic. The second is now measured rather than assumed — the same load against a production build peaked at 1.4 seconds against development's 12.7, with nothing left outstanding, because a production build compiles its routes ahead of time.

1.5.0

Added

  • A new status, Staged: work you have accepted that is not yet running in production. A ticket sat at Done while its code had not reached the server; that gap now has a name. Nothing automatic moves a task out of Staged — it waits until you mark it Done (PROEN-46).

  • The review gate has all three answers. [APPROVED] accepts finished work and moves it to Staged, [REJECTED] sends it back, and [FOLLOWUP] accepts it and adds something on top of the same ticket — for the findings that turn up during implementation and are cheapest to take along rather than raise separately (PROEN-46).

  • Markers are now grouped by what you are answering. [GO] and [CHANGE] respond to a plan; the three above respond to finished work. [CHANGE] used to serve both, which is why it could not say which one you meant.

  • A marker toolbar on the comment box, on the task page and in the detail panel. It inserts a marker at the start of your draft and never posts on its own — a misclicked [BLOCKED] is a real cost. Each button carries a tooltip naming exactly what posting it will do (PROEN-46, PROEN-38).

  • Markers render as coloured badges on comments, each with its own colour and a tooltip explaining the transition it caused. Three different markers previously shared one colour.

  • A clear control on each individual filter, so one filter can be dropped without resetting the rest (PROEN-33).

Fixed

  • The project page could sit at loading skeletons indefinitely. Four requests shared a single loading gate, so one slow endpoint held the whole page hostage — including tabs that did not need it. Each tab now loads on its own and reports its own failure (PROEN-48).

  • The reset control on the tasks page cleared the filter inputs but left the query string untouched, so a reload brought the filters back. One failed request during page load was enough to cause it, permanently, for as long as the page stayed open.

  • A comment containing two markers could show a badge for one while the server had acted on the other — the badge named a transition that never happened.

  • Status filter chips started out all selected, so the first click removed a status instead of choosing one, and the global reset applied a filter rather than clearing it (PROEN-33).

  • Database backups kept 60 days by default instead of relying on an unset value, and the backup script is now tracked in the repository rather than existing only on the server (PROEN-42).

  • Removed two unresolvable entries from the build's dependency pre-bundling, which produced a warning on every single build (PROEN-53).

The status formerly called Prepared is now called Backlog. Its meaning is unchanged — the ticket exists but has not been released to agents — and no stored value moved, so nothing needs migrating. Only the label changed, everywhere it appears. This release adds to the /api/v1 contract without altering any existing part of it: a new status value, new markers, and no change to what any existing marker does.

1.4.0

d3b70f8

Added

  • A full-page task editor at /tasks/new. The New Task button in the sidebar led to a placeholder that bounced you to the task list; it now opens the real form (PROEN-40).

  • The task form shows content and settings side by side on a wide screen, and as two tabs on a phone. What you came to write is the first thing on the page instead of sitting below six dropdowns.

  • A Write/Preview switch on the task form, so markdown can be checked before saving.

  • The task dialog can be expanded to fill the screen, and the prompt field is more than twice as tall as it was.

Fixed

  • Closing the task form with unsaved changes now asks first, instead of discarding them silently (PROEN-40).

  • Acceptance criteria, constraints and out-of-scope were three-line boxes, which made a ten-item list unreadable. They start at eight lines and grow with the text.

This release also carries 1.3.0, which was prepared but never deployed — so the release notes page and the version display arrive at the same time as the form redesign.

1.3.0

Added

  • This page. Every release from 1.0.0 onward is recorded here with its date, what changed, and whether it touched the API contract.

  • The running version is shown at the bottom of the sidebar — and in the More menu on mobile — and links here.

The versioning scheme itself is written down in docs/10-versioning.md, including what makes a change major, minor or patch.

1.2.0

8336f35

Added

  • Task descriptions, acceptance criteria and comments render as markdown instead of showing their raw source (PROEN-4).

Fixed

  • Every list surface refreshes from one shared poller instead of three separate timers, so a status change appears without a reload — and polling stops entirely while the tab is hidden (PROEN-3).

  • pnpm build now exits when the build finishes. It previously completed and then hung forever, leaking a Node process on every deploy; one was found still running after 72 days (PROEN-27).

1.1.0

56233be

Added

  • Dashboard cards collapse into accordions on mobile, and stay plain cards on desktop (PROEN-25).

  • Agent Activity comes before My Queue on the dashboard (PROEN-32).

Fixed

  • The colour mode defaults to light instead of following the operating system.

1.0.0

2 breaking
d5d3f71
Breaking changes
  • POST /projects/:id/reorder now enforces authorization. It previously performed no check beyond "is authenticated", so any caller — including an agent key scoped to a different project — could rewrite sortOrder on any task in any project, which reached into what agents pick up next. Out-of-scope agent keys now get 403, and the route is cookie-only as the OpenAPI spec had always declared (PROEN-7).

  • GET /tasks/next no longer hands out tasks from paused or inactive projects. A pre-assigned Open task was treated as work the agent already held, and was returned after lazily moving it to InProgress — bypassing the active-project filter and the key's project scope alike. A task already InProgress is still returned unscoped, deliberately, so that pausing a project cannot strand an agent mid-task (PROEN-21).

Added

  • CI runs the unit, integration and e2e suites on every push to main and rollup and on pull requests. Green CI now means the tests passed, not merely that the code compiled (PROEN-10).

  • Task filters persist in the URL, so a filtered view can be linked and survives a reload (PROEN-2).

Fixed

  • pnpm lint resolves its config and runs. @nuxt/eslint was neither installed nor registered, so the config it was supposed to generate never existed (PROEN-9).

  • Markdown output is sanitised through a single shared helper rather than per call site (PROEN-8).

  • vue and vue-router are declared dependencies. Application code imported both while they were only present transitively (PROEN-31).

The first release under this scheme, covering the 2026-08-05 deploy of the build that had been running since 24 May. The two breaking entries are recorded relative to that previously deployed build (c832d66) — it carried no version number, but it is what clients were actually talking to.