Teams can now run their own decision lifecycle without everything queuing on one person
- Decisions are now typed and attributable, with per-project resolution modes, and you can propose, resolve or inspect any live decision right from your session.
- Idea capture stops hijacking: titles containing ordinary engineering words now file to the backlog correctly, with an explicit override when you know better.
- A passive status line shows your current cycle, work in flight, items awaiting review and actions waiting on you, rendered in your prompt bar at zero effort.
Full detail
- Cycle 366 — Team Decisions epic + reliability sweep
- Add decision type + authorship + per-project resolution mode (expand migration)
- Decision authority by resolution mode + stop proposal events releasing gated tasks
- MCP surface for typed, proposable decisions (strategy_change args, decision_resolve, ad_view, orient, build filter)
- Decision-conflict gate must fire on ad_hoc and at build time, not only at idea intake
- Owner Action Queue classifier hijacks plain build tasks and its advertised override does not work
- Release readiness and orient cycle counts ignore assignee — one member's cycle includes another member's claimed tasks of the same number
- Audit every task/cycle read path for single-operator assumptions — six per-user scoping bugs have been found reactively, one call site at a time
- Prompt-line cycle indicator — cached peek endpoint plus a CLI renderer for MCP client status bars
- Repair AD outcome vocabulary: illegal 'confirmed' write, unreachable branches, and the dropped action arg on hosted
- Move project bootstrapping into the tools and shrink bootstrap-project to a thin shippable skill
- Edge-function deploy was broken post-VPS-cutover — rebuilt for the self-hosted stack
The cycle that made your work publishable, and hosted releases finish themselves
- Public sharing goes live. Publish your brief and cycles from the dashboard with consent-gated toggles.
- Hosted releases now end with exact git steps to finish locally, not vague prose.
- Cycle updates can point at your own team Discord channel instead of a private one.
- Fixed color tokens that could render without fallbacks on dashboard surfaces.
Full detail
- Merge shared cycle branch — core
- Cycle 365: public surfaces, sharing toggles, and the dead-Supabase cleanup
- Rate-limit logical PAPI operations
- Bind Vibe route to approved artifact
- Add Vibe Tycoon project route
The cycle that made starting a session fast again, and stopped hosted projects hitting dead ends
- Opening a session is fast again. The first read of your project used to pull the whole board five times over and could time out; it now takes a single pass.
- Hosted projects no longer hit dead ends on features that work locally. PAPI asks your connection what it genuinely supports instead of guessing.
- Settings has one Connections tab: your tools, endpoint, keys, linked repo and connection health in one place, with a live status dot in the header.
- Coming back after time away, PAPI tells you how long you have been gone and names the work waiting for you instead of showing an id.
Full detail
- Collapse orient's 5 full-board pulls to 1 compact read
- Build C9 and C13 — the tour is reachable again, and the demo that already existed is now pointed at
- Rebuild light mode — close the token island, fix the toggle, invert the canon's default
- Hub restyle round 2 — density, colour reduction, one stage map, no ambient pulse, ledger surfaced
- Re-entry — say how long they were away, and name the work not its id
- Connections as one surface — client, endpoint, keys, repo and health
- Detect orphaned components in ci:local
- Per-user release notes, rendered from the cycle log
- Empty and error states name the next action instead of apologising
- Close the dead data paths — 9 routes, 6 endpoints, 1 table
- Mount HubMomentumStrip — the lifetime stats had no reader
- Stop review_submit rolling back an accept whose branch was folded into a cycle branch
- Stop /api/actions/* returning raw error text, and start logging it
- Claim the device-flow API key atomically instead of read-then-write
- Apply the Origin allow-list to /auth/collision and /oauth/revoke-all
- LPAD truncation made br-/rv- allocation deterministically collide past 999
- UX-O · Perceived performance — consistent skeletons, optimistic board updates, kill the 30s cache surprise
- Br- and rv- display_id allocation is read-then-insert, and edge writeReview orders rv-NN lexicographically
- A migration exists on production that is on no branch in this repo — reconcile or capture it
- Assignee_id/reviewer_id on task update are not validated against project membership
- EnsureDocDurable reports a false "NOT durable" for a doc committed on a different branch
- Make PapiAdapter non-optional — kill the 45 capability-sniff sites that fork behaviour between owner and paying customers
- Weekly Active Builders cannot be computed from tool_runs — re-key it on build_reports and move the bucketing into @papi-ai/shared
- ClassifyIcp defaults every unrecognised signup to 'dev' — classify on positive signal, add an 'unknown' bucket