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
The cycle that put a second lock on your private work, and proved the first one was the only one holding
- Your private tasks and docs are now protected by the database itself, not just the app - a second lock behind the first.
- Project settings pages work again, reachable straight from each project card.
- Your personal queue is now "Needs You", and the nav says Admin where it used to say Owner.
- Creating tasks no longer fails on bigger projects.
Full detail
- Landing V2: simplify the explanation
- Copy the production database to the VPS for self-host testing
- Give ADMIN_USER_IDS holders a nav, not just a URL
- Stop leaking internal identifiers into first-run user copy
- C360 Core — display_id atomicity, escaped-defect linkage, executable acceptance, adapter-md split
Hosted builds and task claims stop crashing, and the dashboard shows what's actually fixed
- Claiming or releasing a task no longer fails when connecting through the hosted server.
- A build no longer crashes partway through completing when connecting via npx.
- The dashboard's caught-issues view now shows what's actually been fixed, with a found-vs-fixed count for the cycle and all time.
- Time Machine chart labels no longer overlap or get clipped, at any screen size.
Full detail
- Cycle 357: Core module
- Width-aware Time Machine X axis so dates never squash
- Two live hosted P0s — claimTask/unclaimTask ReferenceError, commit* methods 403ing
- Cycle 357: Dashboard module
- The migration gate's 3-state branch was unreachable under bash -e
- Flag discoveries a shipped task fixed in passing
- Prompt and validator agree on the handoff shape again
- Estimation calibration is computed, and hosted users stop being sent to a file they lack
- Refuse to retag when the local build differs from the published tarball
- Two gates stop reporting green having checked nothing
- Pre-commit no longer destroys unstaged work