Changelog

578releases across 9 months

Every PAPI release, cycle by cycle. Each one pushes back against project drift.

Get started free

September 202616 releases

v0.402.11

  • Recognize durable build report evidence in health

v0.402.10

  • Cycle 39: protect release integrity and rollout evidence
  • Cycle 39: harden PAPI project scope resolution

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.6

  • Hosted headerless MCP calls now honor exactly one access-validated persisted project default before returning an ambiguity prompt.
  • Missing or duplicate hosted defaults remain fail-closed, with regression coverage for cross-project isolation.

v0.402.5

  • Hosted project defaults now persist only after access validation, preserving fail-closed cross-project isolation.
  • Hosted project switching now gives truthful stateless reconnect guidance and regression coverage.

v0.402.4

  • Make the self-hosted edge deploy backup loop safe when the remote shared-module directory is newly created and empty.

v0.402.3

  • Self-hosted data-proxy deployments now stage the canonical shared edge modules into the VPS function mount, preventing merged edge code from booting with unresolved repository imports.
  • Edge deploy backups and rollback instructions now cover both the function files and their shared-module boundary.

v0.402.2

  • Hosted board reads now honor compact projections and request the exact count once per paginated query; connect diagnostics are asynchronous with bounded retention.
  • Cycle metrics and project timeline reads now use project-scoped SQL summaries instead of draining full task, report, cycle, and strategy histories.
  • Added regression coverage for hosted column parity, diagnostic retention, and summary RPC response contracts.

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

v0.401.0-feat-cycle-12-core

  • Create unified Badge component
  • Add dark mode elevation tokens
  • Typography hierarchy pass
  • Establish visual identity and design direction
  • Kill the silent default-project fallback for multi-project accounts — always show the project picker (reverses RECORD-ONLY)
  • "Reset connection" is mislabeled and returns a bare key: relabel to "reset all agent connections" + return the full per-project connector snippet
  • Hosted connection doctor: a remote-user equivalent of npx @papi-ai/server doctor — dashboard surface showing projects, which one the active credential resolves to, and recent connect failures
  • Add Pi coding agent (pi.dev / @earendil-works) as a first-class connect target: connect-UI tab, install-snippets builder, and llms.txt entry
  • Orient: emit local-divergence check instruction on hosted transport instead of no-op
  • MCP initialize accepts a revoked bearer; only the first tools/call 401s — client shows "connected" then every action fails

v0.400.0-codex-cycle-10-record-committed

  • Search and filter across all views
  • Alerts — blocked tasks, strategy review due, stale in-progress items
  • Multi-project support — project switcher and configurable .papi/ directory
  • Master dashboard as default landing page
  • Multi-project UI view with papi-projects.json
  • Migrate inline styles to Tailwind classes
  • Parallel task mutation drops task IDs and Cycle 1 member dashboard remains empty
  • Fast-path to record a cycle whose code is already written and committed — bulk create cycle + handoffs + build reports + mark shipped in one flow

v0.399.0

  • Add the canonical strategy decision-history route
  • Send customer receipts for paid Stripe checkouts
  • Include project owners in contributor lists
  • Restore historical hub member metrics
  • Make the WSL full gate safe for clean checkouts
  • Harmonize incremental TypeScript checks
  • Consolidate incremental TypeScript checks
  • Run targeted checks and qualify the full suite twice daily
  • Make the pull-request gate sub-minute
  • Avoid duplicate workspace builds
  • Keep Santa Fe dependency setup warm
  • Make hosted progress steps idempotent

v0.397.0

  • In-Cycle tasks parked in a non-live cycle no longer vanish from the hub and team view — a write guard stops the strand and the read surfaces them
  • Phantom active cycle from a half-finished plan apply no longer traps you — plan absorbs it and re-plans over it, and orient tells you how
  • board_view and orient cycle counts now show the whole cycle's contents, not just your slice, and warn when the two membership records disagree
  • The bound project is now unmissable on every orient, and a write on a session that can't be cross-checked says so
  • On a near-empty board, the AI is told to route a work-dump through idea → plan instead of hand-writing code
  • The install runbook forbids handing over a config with a placeholder still in it — no more silent "connected" that isn't
  • Parallel/batch board_deprioritise calls no longer silently drop tasks — a batch request is rejected loudly instead of half-applying
  • New plan task_ids=[...] — take a chosen set of backlog tasks straight into a cycle with build handoffs, atomically
  • plan only hands a Claude-Code Task() prompt to Claude Code; every other client gets an inline path and a stated fallback
  • A contributor's first cycle no longer pulls the whole project history into the planner context

v0.396.0

  • Site-wide soft 404: auth proxy redirects every unknown path to /login instead of returning HTTP 404
  • Public-page SEO hygiene batch: breadcrumbs, /features double h1, /api/auth/me console error, sitemap fixes
  • Strategy page: make Roadmap and Time-machine (renamed "Decision history") actual tabs beside Brief and Dogfood
  • Strategy page: bring Brief and Dogfood tabs up to the same UI/UX quality as the other tabs
  • Orient scaffolding hardcodes CLAUDE.md regardless of MCP client harness — use the harness-appropriate file
  • Connection banner reads 'Connected' even on a degraded (no-adapter) MCP boot
  • Add durable release-activation logging so a future telemetry/instrumentation blackout can be root-caused
  • Regression: orient's unblock-candidate false positive on recurred at C372 despite (C370) supposedly fixing it
  • Restore the PAPI VPS monitor's deployment-drift check against origin/main

v0.395.8

  • Bearer-token storage: hardening guidance plus evaluate env-indirection / OS-keychain / api_keys expiry
  • BYOK Anthropic key for the dashboard brief-import extraction
  • Dependency-isolation / air-gap position for PAPI — research and AD-16 gate
  • Shared working-directory sessions: a commit lands on whichever branch happens to be checked out, not the session's logical branch
  • Plan apply reports "Cycle 5" but createCycle failure silently wrote tasks into stale cycle
  • A Cancelled prerequisite permanently blocks its dependents — build_execute treats Cancelled as unresolved
  • Task assignee not persisted after claim; team dashboard shows unassigned in-progress task
  • Reject authenticated GET /mcp to avoid hanging clients (stateless server, no server-initiated SSE)
  • Pricing page: Team tier shows "€19 / seat" — change the displayed price to "Custom"
  • Detect legacy database configurations and guide users to regenerate their setup
  • Investigate the Aug 29 telemetry emit blackout — zero /telemetry POSTs attempted while /invoke kept succeeding

August 20262 releases

v0.395.7

  • Identify the source of the mass cycle_tasks.updated_at bulk update (1,918 rows across 28 projects stamped to one timestamp)
  • Make the /trust surface discoverable by an evaluating agent (security.txt, SECURITY.md, llms.txt, README)
  • Surface PAPI's data-handling posture and a /trust link at MCP connect (server initialize + server.json)
  • Board: add team-member filter; scope cycle dropdown to selected member's cycles
  • Orient / Team dashboard use colliding cycle-number counters, causing wrong "next cycle" guidance
  • Fix silent tool_call/milestone telemetry drop on data-proxy /telemetry project-resolver 403 (slug->UUID resolution rejecting external users)
  • Telemetry blackout canary: count OAuth users (union api_keys + oauth_tokens.last_used_at) and ignore pure ping/initialize as 'active work'
  • Hub task attribution: show the model used instead of the person who did the task
  • Plan prepare blocks on stale reviews from other members' parallel cycles — scope the stale-review guard to the caller's cycle sequence
  • Sign-in with a non-existent account dead-ends instead of becoming sign-up — new users cannot self-serve activate
  • Projects.papi_dir is shared single-column state — teammate's workspace mapping clobbers yours (hard-blocks all mutations)

v0.395.6

  • Decide the tradeoff: Supabase session cookie is not httpOnly on the primary web/OAuth-connect auth path
  • Fold /briefs into Strategy as tabs — Project Overview and Cycle Briefs alongside the product brief that already lives at ?tab=brief
  • Decide the fate of per-cycle cost reporting: cost_snapshots has a live MCP reader, no writer, and no live data source exists to give it one
  • Auto-propose an Active Decision when a build report or review contains a durable choice
  • Dashboard hub/team UI bug sweep: next-move overflow, tour button, duplicate stat rows, discoveries CTA, builder attribution, capabilities panel
  • Surface capabilities PATCH failures instead of failing silently
  • Close the remaining Nova/vibe-tycoon gaps: ad_hoc ownership block + name the colliding PR/branch
  • Guard test — decision-gate consumers must resolve superseded ADs via resolveCurrentDecision, never read .superseded directly