Changelog

223releases tagged fix

Every PAPI release carrying the fix tag. What shipped, when.

Get started free

September 20267 releases

v0.402.52

Backup restore checks can run repeatedly

  • Scheduled restore checks use the newest completed backup and clear publications left by the previous isolated restore.
  • Each drill uses fresh temporary storage, cleans up its own output, and preserves existing files in the parent directory.
  • Missing packaged skills and invalid release summaries are caught before compilation and in hosted checks.
Full detail
  • Isolate hosted MCP child from audit database settings
  • Enforce skill and changelog integrity before builds
  • Make scheduled drills safely repeatable
  • Clear publications before replay
  • Map vibetycoon-derive and prompts-ui-aesthetics in the test inventory
  • Rebuild /projects/vibetycoon as a visual build-in-public insights page
  • Require tracked source in test inventory
  • Recover legacy successful dependency stamps
  • Recover missing warm dependencies and check docs locally
  • Include ranked prior work from history search
  • Record runtime model evidence
  • Qualify final tag against prior release
  • Build artifact from published version tag
  • Make aesthetics a real acceptance criterion in plan and review
  • Collapse the design skills into one project-agnostic design skill
  • Genericize the shipped design-critique skill

v0.402.50

  • Fix Cycle 56 release board read and bump 0.402.50
  • Close cycles explicitly
  • Reduce duplicate release builds and record approval-to-live time
  • Orchestrate measured app-only VPS releases
  • Reuse release qualification and include proxy changelog in tag

v0.402.12

  • Launch release qualification on Windows
  • Batch the hub's 18 concurrent data fetches to cut peak memory
  • Admin OAuth login loop + hub blanking on one failed fetch
  • Scope admin redirect to getpapi.ai host, not admin.getpapi.ai
  • Hub 502s from unbounded queries + admin route 404

v0.402.11

  • Recognize durable build report evidence in health

v0.402.9

  • One shared Task-vocabulary normalizer module (priority/complexity/effort)
  • Move shared helpers out of tools/ to restore the dependency direction
  • Fail closed when cycle scope is unavailable
  • Scope health reads to selected cycle
  • Normalize worktree dependency marker paths
  • Project dashboard history reads
  • Remove redundant complete inventory counts

v0.402.1

  • Aggregate portfolio statistics in postgres
  • Reuse dashboard project read context
  • Page complete build-report history reads
  • Page complete tasks inventories by default

v0.402.0

  • Add evidence-backed hot-read indexes
  • Enforce hosted project context routing

August 202611 releases

v0.392.0

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

v0.369.0

  • Authenticate logical operation proofs
  • Propagate logical rate-limit operations across proxy routes

v0.368.0

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

v0.362.0

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

v0.361.0

  • Record GOTRUE_DISABLE_SIGNUP=true as config-as-code for the VPS
  • Strip the run-setup card to the command and one signal
  • Collapse onboarding to four steps, referral moves after setup
  • Widen the connect step, cut the chatty copy, split the manual path
  • Actually compress the hub fold, and clear the board chrome
  • Connect step becomes a 2-stepper, and stops narrating
  • Invert the hub fold — the next move becomes the hero
  • Bulk task actions on the board
  • Connect panel: "This is your project / this is your prompt" — project id + connection token first-class under the copy block, one auth story
  • MCPConnectBanner: name setup as the pre-setup next step and poll so it clears without navigation
  • Build_execute reports a successful auto-commit over a PARTIAL commit when the pre-commit hook fails
  • Stop the autostash sweeping a concurrent session's tracked-dirty files
  • Stop the auto-stash eating untracked work, and the review dispatch showing the wrong task's diff
  • Worktree ci:local blocked by Turbopack node_modules symlink-boundary check
  • Worktree:setup accepts a stray/broken node_modules dir instead of symlinking
  • Close two injection gaps found in pre-merge review
  • A build can propose a Decision or a Convention
  • Conventions — per-project build rules that ride every handoff
  • Pair the AD rejection guard with an admission rule
  • Tool descriptions sell the what/why at selection time
  • Orient's missing-.papi/ error is a Promise.all race — an unset-up user gets an arbitrary one of three "not found" messages
  • Secret-filter client-supplied codebase_scan server-side + make hosted "no filesystem scan" messaging match what the agent is then asked to read
  • Setup AD-seed failure handling misblames the LLM: any error reported as "invalid JSON", partial seeds reported as zero
  • Fix stale .impeccable.md pointer in planner prompts — it directs every external user to a file the skill stopped reading
  • Verify-project.test.ts's INTERNAL_IDENTIFIER regex is narrower than its own comment claims — hardcodes 2 tables, only catches 3-digit cycle refs
  • Hosted 403 minting Active Decisions: add allocateActiveDecision + applyActiveDecisionUpdates to proxy-adapter NO_FORWARD
  • Clear the two gates that were red on main

v0.359.0

  • Stop the exit-criteria evaluators crashing on a missing project id
  • Rebuild HubSkeleton out of the hub's own classes, measured to zero jump
  • Give the connect step an in-flight state, and finish 3236's sweep
  • Make the hub command an inset value, and put the rule in canon
  • UX-B12 Surface owner actions to non-owner users
  • Make the agent-directed band the one primary action on connect
  • Take the OAuth browser hop off the critical install path
  • Hosted setup merges mcp__papi__* into an existing settings.json
  • Stop the hosted manifest depending on the server's own filesystem
  • Mark the OAuth sign-in as human-only at the command, not 12 lines upstream
  • Sync the shipped skill bundle and the plugin version after the C359 merges
  • Resolve project slugs per-user, and stop one null telemetry row killing /admin
  • One unattributed telemetry row no longer takes down the whole admin page
  • Resolve project slugs per-user, and stop asking for a singular row
  • Stop handing a GitHub token to an npm namesquat
  • Content section — build-in-public drafts per release and review
  • Wire the dead attention panel, cut the duplicate roadsigns, collapse the caught fold
  • AD contradiction surfaces as a decision, never a silent shelve
  • UX-B1 Invite button in the Hub → Team empty state

v0.358.1

  • Scope dashboard slug lookup to accessible projects
  • Cycle 358: integrated release — core, auth, distribution, dashboard
  • Cross-tenant read on horizons/stages, and the unwrapped hosted adapter
  • Close the three auth/data gaps held back from the P2 sweep
  • Give warning its own hue and clear the held contrast failures
  • 26 live P2 defects recovered from the auto-cleared ledger
  • Md_adapter_pings policy named service_role applied to PUBLIC
  • Make burn-watch blindness visible instead of silent
  • Sweep the live defects hiding in auto-cleared discovered-issues
  • Normalise created_at to ISO in the pg adapter
  • Close two ci:local gate failures surfaced by the sweep
  • Sweep 36 live discovered-issues found by full ledger triage

v0.358.0

  • Make VPS deployment atomic and rollback-safe
  • Bypass hosted project quotas

v0.357.0

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

v0.356.0

The cycle that made "fixed" mean fixed, and gave your docs somewhere durable to live

  • Your registered docs now keep their content. A doc living in a gitignored folder survives a branch switch or a stash, and doc_read restores it byte for byte.
  • PAPI no longer marks an issue fixed just because the task that found it closed. Fixed now means someone actually fixed it, so expect your open count to jump the first time you look.
  • Found a problem and fixed it in the same session? Record it as fixed on the spot, instead of filing a task just to close it a minute later.
  • A new Discoveries tab charts caught against fixed across every cycle, so you can see whether your quality loop is closing or just filling up.
Full detail
  • The migration-replay auth.users stub was missing columns migrations read
  • Discoveries analytics tab — is the quality loop actually closing
  • Close five defects found by the risk-tier review of the C356 Dashboard branch
  • Hub caught panel becomes one open-debt tile with age and a resolve control
  • Resolve route so a discovered issue can be closed from the hub
  • Discovery read layer — caught-ledger.json and discoveries-by-cycle.json
  • Doc_read restores a stored body from the database
  • Staleness warning compares bundle content, and says it once
  • Hosted re-register no longer throws; doc bodies reach hosted users
  • Doc_register stores the body, .md-only, tier-scaled storage cap
  • Stage exit criteria are evaluated, and unevaluated stops reading as false
  • Hosted callers can finally see a fixed issue; appendCycleLearnings via RPC
  • Discoveries reach planning, build start and strategy review
  • Fix-or-file gate on build_execute; auto-triage cut to filed P0/P1
  • Orient stops auto-clearing; fixes attributed to the build
  • Adapters write per-finding via RPC; delete the auto-clear sweep
  • One shared findings parser, key and gate in @papi-ai/shared
  • Per-finding schema, dedup index, append_cycle_learnings RPC
  • The funnel becomes the page, not its fifth section
  • Make the S5 scorecard the actual exit criteria
  • Document the Hermes Agent install path
  • Instrument the second authentication and add web visitors as stage 0
  • Noindex auth routes, drop redundant robots Allow lines
  • Close the four blind spots in the acquisition funnel
  • Never send automated win-back copy to a paying customer
  • Programmatic Search Console access + gsc-report CLI
  • Alert on paid conversion and surface tier in admin

v0.355.0

Your pages load with real content, and PAPI asks instead of guessing which project you meant

  • Connecting with more than one project now asks which one, by name, instead of failing with an error you could not act on.
  • Your hub, board and roadmap arrive with real content on first load instead of an empty frame.
  • Task Flow counts every task in your project. It was quietly stopping at the newest 1000.
  • Teammates you invite can now see the projects they were added to.
Full detail
  • One owner-facing fold, not two competing attention surfaces
  • Cycle 355 — dashboard: server-rendered first paint, project-scoped routes, whole-project analytics, S5 exit criteria
  • Cycle 355 — core: connect ask-don't-refuse, stall correlation, product-first orient, CI colour + migration gates