Skip to content

v0.1.0

Choose a tag to compare

@dmcaulay dmcaulay released this 25 Oct 17:51
· 50 commits to main since this release
d5e49a3

0.1.0 (2026-10-25)

Features

  • accept and return sessionId on the admin cron-runs API (#2406) (facd005)
  • accept app/ bot logins in author-allowlist validation (#3165) (0236fbd)
  • add 'Use existing GitHub App' detail-page connect action (UAP-5.4) (#3053) (8d57b81)
  • add a signed-commits toggle to the agent admin settings (#6) (de862b7)
  • add admin dev auto-login route (LPP-2.1) (#200) (383a868)
  • add admin proxy routes for task-store token CRUD (#771) (158e2d8)
  • add Agent Type Zod schema, parser, and generated JSON Schema artifact (#2191) (57ecf39)
  • add agent-policy DB fields + backfill script, remove dead allowed_events (#3738) (e184548)
  • add Agent.typeName column, migration, and API plumbing (#2192) (6e120ee)
  • add AgentCronRunModelBreakdown table and per-model cron stats (#917) (1b50b46)
  • add AgentMemberService + extend AgentService with missing query/update methods (#2131) (122189a)
  • add AgentPhaseMethodology table and CRUD routes (PMC-1.1) (#3725) (357cd5c)
  • add AgentWorkQueueSnapshot model + push/read API endpoints (#1803) (e3687f9)
  • add All-agents option to per-agent queue-activity dropdown (#3230) (3c41533)
  • add authenticated session detail view to admin UI (#1471) (c6de2e9)
  • add authorAllowlist column + service-layer threading (#2211) (b08c165)
  • add bearer token auth to admin CRUD middleware (ADMD-3.1) (#205) (5aa5a43)
  • add Blocked tab and hitl badges to admin PRs page (#2080) (ab2094f)
  • add browser launch helper and CI sandbox verification step (#2343) (3e83a64)
  • add buildSessionNotificationPayload in push-content.ts (#3322) (7a942d8)
  • add check-name breakdown to Recent Verification Activity rollup (#3714) (228e655)
  • add Claude Code and gh CLI to agent/Dockerfile (LPP-1.1) (#204) (ed8e955)
  • add computeDependencyLayout pure layered-DAG layout function (#1843) (583929e)
  • add Created column to Tasks list (ATC-1.5) (#1918) (9db7827)
  • add cron-run token stats aggregation to admin service (#881) (78da34c)
  • add cross-agent cron-run listing + startedAt index (#3224) (93c6010)
  • add default-agent route and navbar Queue & Activity tab (#3203) (1e97a05)
  • add dev-task adherence report from admin run data (#4203) (464a30c)
  • add disabled prompt-audit-maintenance cron and manifest test (#4241) (ed52617)
  • add expand all / collapse all control to agent detail groups (#3786) (7d8ae51)
  • add explicit chaining instruction to error-patrol-maintenance cron prompt (#2804) (cbeb76d)
  • add flagged chat-credential mint and revoke routes (#17) (bce8d52)
  • add GET/POST /admin/settings/notifications page (#3314) (b30f017)
  • add GitHub App installation discovery and selection (#3897) (f217b65)
  • add GithubAppProvisioningClient (manifest builder + code-exchange client) (#2761) (e7d72ec)
  • add hitl filter to admin task list view (#1789) (9f75e11)
  • add in-page agent-selector to Queue & Activity (#3207) (ad108f4)
  • add last-heartbeat tracking to cron run history (#3583) (0013c08)
  • add listForAgent() cross-cron query to AgentCronRunService (#1592) (ae894b8)
  • add listTokensForAgent and deleteThreadsForAgent to ChatServiceProvisioningClient (#1338) (cd54134)
  • add metrics Dockerfile and build-push workflow (#210) (1fe2ee2)
  • add Monitor to coding agent's default tool set (#3519) (1ae76fe)
  • add new local agent create flow (#794) (5ed7b42)
  • add nullable sessionId column to AgentCronRun (#2397) (2edcf2b)
  • add Okta OIDC auth client (#2724) (e652e10)
  • add org and repo multiselect filters to admin PRs page (#2427) (8748d11)
  • add org and repo multiselect filters to admin Task Store page (#2420) (813ab07)
  • add org filter to GET /sessions (#3490) (f9b75dd)
  • add parentCronId self-relation to AgentCronJob + phaseId to AgentCronRun (#1842) (ea12bb8)
  • add parseFlags CLI helper to lib/ (#3432) (b0cb596)
  • add patch-allowlist admin UI card + add/delete routes (#3129) (52e33d1)
  • add patchAuthorAllowlist DB column + admin API field (#3117) (1f4ae10)
  • add phase column to AgentCronRun + admin API support (#1306) (6017f4a)
  • add platform.read and platform.ops admin key scopes (#16) (d263b41)
  • add pool observability to admin (#4403) (75e0655)
  • add pool observability to task-store (#4401) (3c39a0d)
  • add POST /admin/sessions/:slug/{follow,unfollow} routes (#3330) (188f38b)
  • add POST /agents admin-API route (#3661) (e4aeddb)
  • add PR column to task list table (#779) (d83fdbd), closes #N
  • add PR list/detail render functions and nav link (#748) (2198745)
  • add PR origin fields, stamp, filter, and census endpoints (#3474) (61e1ff9)
  • add prCreatedAt column to PullRequest and wire it into the claim endpoint (#1293) (7670a6a)
  • add pre-expiry Slack warning check for trial agents (#3668) (fcdef0f)
  • add public-App option and GH_APP_SLUG to GitHub App connect (#3910) (c2ffb88)
  • add PVC name template support to K8s provisioner (#559) (a6b98e3)
  • add reinstall-after-sync flow (SMR-1.1) (#552) (16226b5)
  • add repos add and remove routes for agents (#18) (a46e01a)
  • add repos field to agent detail page (#701) (d1f4b67)
  • add repos field to Agent model with org/repo validation (#676) (1a03506)
  • add repos to agent config response schema + handler (#1299) (2ebe12b)
  • add required agent-type picker to the new-agent UI (#2203) (fc41f06)
  • add responsive hamburger menu to shared toolbar (#931) (b4a0407)
  • add restrictSlackToMembers toggle to Agent (#2763) (d25c5ba)
  • add secret checklist builder for agent deletion cleanup (#1321) (0679d54)
  • add self-serve chat-token daily stats route scoped to the caller's own agent (#4270) (de38322)
  • add self-serve cron-run outcomes route scoped to the caller's own agent (#4273) (87103a1)
  • add self-serve cron-run token stats route scoped to the caller's own agent (#4271) (79583b7)
  • add self-serve dev-task-adherence route scoped to the caller's own agent (#4269) (5b02524)
  • add server-side itemId/phaseId filters to cron-runs API (#2553) (4a47a13)
  • add session-alert-sweeper.ts and wire into main.ts (#3337) (d54b210)
  • add SessionFollow/UserNotificationPrefs/SessionAlertState models + service (#3309) (49a9c90)
  • add Sessions list page + toolbar link + member-scoped detail route (#3335) (c4b183b)
  • add shared claim-TTL constants to @shipwright/lib (#1756) (52ed3f5)
  • add shared CSS component classes for redesigned admin pages (#3172) (283e358)
  • add shared pg pool observability helpers (#4400) (14726d4)
  • add shared pricing module to @shipwright/lib (PCE-1.1) (#897) (faf9a4e)
  • add shared request-context module to lib (#1326) (b0b2bf6)
  • add shared Sentry module to @shipwright/lib (#1151) (6646eb2)
  • add SHIPWRIGHT_ADMIN_TZ timezone formatting to admin UI (#734) (f874162)
  • add Sign in with Okta button to login page (#2742) (6120bdf)
  • add Slack app deletion client method (#1316) (ff2d699)
  • add slide-over drawer to task board cards (#3192) (c65926f)
  • add sort query param to GET /prs (ADS-1.3) (#1608) (afe22d8)
  • add source column to admin session detail view (#2003) (87fee0f)
  • add source filter to admin task list UI (#1992) (3d1ee7b)
  • add stat strip to agent detail page (#3785) (42641bb)
  • add task age display to board cards (#3215) (4850e40)
  • add task_id/pr_number Sentry tag to loop-orchestrator dispatch() (#2552) (a30ed86)
  • add task-PR join and board column-bucketing to Tasks handler (#3173) (9bf1b34)
  • add the flagged agent ask route with allowlist, depth cap and audit (#31) (9fffb62)
  • add the git wrapper that routes push through signed-push (#25) (7b2e3e7)
  • add the pre-publication audit for the extracted repo (AGR-2.1) (#4465) (c8fa85c)
  • add the signed-push helper for GitHub App agents (#5) (3c44937)
  • add Thread and Message Prisma models with migration (#907) (de36542)
  • add token columns to AgentCronRun and PATCH complete endpoint (#750) (9a427cd)
  • add trial-expiry lockdown for crons and Slack messages (#3670) (8907e38)
  • add trialExpiresAt and trialExpiryWarnedAt fields to Agent + admin API (#3656) (8689890)
  • add updatedAt index + server-side updatedSince/repo filtering to task-store (#1675) (c01027f)
  • add users:read.email Slack scope (#2770) (fe8c69b)
  • add weekly-cron collapsing to Queue & Activity (#3182) (4d04faf)
  • add Work Queue admin page (AWQ-2.1) (#1808) (90ae3b5)
  • add Work Queue nav link next to Manage/Cron Logs (#1811) (2889f6b)
  • admin session archive/unarchive/rename controls (SESH-5.2) (#3347) (90e2dfc)
  • admin tasks page (TSS-3.1) (#585) (fb3d03b)
  • admin UI author allowlist create-form field + detail-page add/delete rows (#2217) (d324331)
  • admin UI panel for phase methodology config (PMC-1.2) (#3739) (4ca2dda)
  • admin-ui: show run stats on cron job rows (#718) (bf5ff92)
  • admin: account trial expiry, warning, suspend and reactivate lifecycle (SSP-8.2) (#4086) (4bfd533)
  • admin: account-aware caller scope resolver (SSP-2.1) (#4030) (7464d88)
  • admin: accountId + race-safe quota enforcement in createAgent (SSP-4.1) (#4031) (e2d8e03)
  • admin: add /cron-runs/outcomes endpoint (PAU-1.7) (#3995) (ca66135)
  • admin: add Account, AccountMember, AccountInvite models and services (#3996) (265d7ce)
  • admin: add admin Accounts pages and Account column on agents list (SSP-5.2) (#4062) (7d90e3d)
  • admin: add admin API key parsing to auth middleware (VOP-1.1) (#255) (be95094)
  • admin: add admin-only /accounts API (SSP-5.1) (#4039) (eb21feb)
  • admin: add AgentCronRun schema migration (#704) (3aae2ea)
  • admin: add Anthropic Admin API identity client with federated sign-in (04895a3)
  • admin: add Anthropic identity name allocator (67d438e)
  • admin: add bySkill and baselines to cron-run stats (PAU-1.6) (#3993) (2370ab8)
  • admin: add conversation window, send/poll flow, and markdown rendering (CHT-4.2) (#1007) (02cf9a4)
  • admin: add cron log viewer to admin UI (#817) (c4fbf15)
  • admin: add federated identity token to provisioned agent pods (#4284) (9bfca3e)
  • admin: add GitHub installations card (MGI-4.3) (#3928) (6a729cb)
  • admin: add HttpChatClient + Chat tab shell + agent selector UI (CHT-4.1) (#993) (477860d)
  • admin: add inline create-new-agent toggle to provisioning wizard (#988) (b815824)
  • admin: add installation snapshot storage and route (MGI-4.1) (#3907) (4294524)
  • admin: add KubernetesAgentProvisioner + NoopAgentProvisioner (HD-1.3) (#350) (512577c)
  • admin: add KubernetesClient interface + HttpKubernetesClient + recorded double (HD-1.1) (#340) (f3ffea9)
  • admin: add mobile column hiding to task list (AMB-1.2) (#934) (09b3625)
  • admin: add openapi deps and Zod entity schemas (OAS-1.1) (#540) (3ee8277)
  • admin: add owner and Anthropic identity columns to Agent (ca1f72c)
  • admin: add patchDeployment to KubernetesClient (SHI-1.2) (#635) (61929ea)
  • admin: add POST /admin/api/agents create endpoint (VOP-1.2) (#264) (b094d54)
  • admin: add prompt-audit telemetry columns and skillUsage upserts (#3985) (7154182)
  • admin: add public read-only task board route (PPL-2.1) (#842) (f5f4e91)
  • admin: add pure agent Kubernetes manifest builders (HD-1.2) (#349) (4a87467)
  • admin: add PVC name template support to K8s provisioner (#561) (db55625)
  • admin: add reviewAuthorAllowlist column; dual-return; migrate data (#3077) (5eb78fc)
  • admin: add reviewCycles to PR list and detail views (#773) (561ffd5), closes #775 #777
  • admin: add secret flag to AgentEnv (#938) (0ab50e1)
  • admin: add self-serve account page, Account nav entry, zero-quota notice (SSP-3.2) (#4049) (593cc70)
  • admin: add self-serve feature flag, default-quota and contact env config (#3997) (c9fe41b)
  • admin: add ServiceAccount support to Kubernetes client and provisioner RBAC (f6fce99)
  • admin: add Sync Manifest button to agent detail page (#504) (a0ea3d1)
  • admin: add task detail page (#657) (791247e)
  • admin: add web delete agent danger-zone + POST route (ALP-B.2) (#456) (516f7d0)
  • admin: agent member sharing (#385) (1e33831)
  • admin: agent-access holders manage settings, members and delete when self-serve on (SSP-4.3) (#4044) (f8af74a)
  • admin: derive anthropic federation flag from identity mode (52ea5df)
  • admin: detect and reconcile claude policy drift (68dba2e)
  • admin: Dockerfile, GKE deployment manifest, and README (ADM-3.1) (#173) (191ce33)
  • admin: full cron edit (schedule/prompt/channel/preCheck) on the agent page (#304) (b9339a4)
  • admin: gate web chat message-send on account status (SSP-8.4) (#4075) (efca725)
  • admin: image-update detection and patching in reconcile (SHI-1.3) (#637) (96f94d1)
  • admin: join via invite or auto-create account on Google sign-in (SSP-3.1) (#4042) (a54b1f2)
  • admin: K8s reconcile — deploymentExists, listDeployments, POST /agents/reconcile (#471) (f732a2a)
  • admin: keep installation id on callback, add Add another org (MGI-5.2) (#3935) (1a107fe)
  • admin: let /admin/agents/new provision an in-cluster agent without Slack (#2712) (acc82a0)
  • admin: let account users create and delete their own agents (SSP-4.2) (#4053) (d4714ba)
  • admin: merge work queue and cron logs into Queue & Activity route (#3166) (06c8c29)
  • admin: migrate agents-api routes to OpenAPIHono (OAS-2.2) (#542) (5de9f6f)
  • admin: migrate PR-detail page off stored PR.taskId (#3068) (d8e84b1)
  • admin: migrate runtime API to OpenAPIHono (OAS-2.1) (#543) (e50858b)
  • admin: mint + inject per-agent chat service token on provision (CHT-3.2) (#986) (b17aa49)
  • admin: mobile-friendly horizontal scroll for tasks table (#745) (f09a910)
  • admin: mount claude policy configmap into agent pods (9a64d72)
  • admin: move existing agents to per-agent identity during reconcile (4d46a7c)
  • admin: notify operators when a self-serve account is created (SSP-3.3) (#4050) (d736943)
  • admin: Playwright e2e tests — login page and agents page (ADM-3.2) (#176) (7d7a30a)
  • admin: provision per-agent Anthropic identity in perAgent mode (c191298)
  • admin: PVC lifecycle — KubernetesClient + manifest builder + provisioner (ALP-B.1) (#473) (c5f772d)
  • admin: record agent owner on create (7f84773)
  • admin: record lockdown-disabled crons and add restore method (SSP-8.1) (#4055) (0147821)
  • admin: relabel author allowlist UI to review, migrate routes (#3094) (8a9bf99)
  • admin: remove per-agent Anthropic identity on agent delete (6585825)
  • admin: replace AgentChatTokenUsageDaily with per-model breakdown table (#921) (2b12bd8)
  • admin: run policy-only reconcile on admin startup (9b94b1e)
  • admin: scoped Tasks, PRs and Sessions views for account users (SSP-6.8) (#4080) (182dbbd)
  • admin: seed default ANTHROPIC_MODEL env on new agents (#3971) (9326e85)
  • admin: show empty state instead of hiding verification activity card (#4082) (c009b8f)
  • admin: show linked PullRequest on task detail page (PRI-3.1) (#724) (bebae77)
  • admin: show only configured providers on login page (#3944) (9188a9e)
  • admin: show owner and Anthropic identity on agent page and API (cae9b1e)
  • admin: swap schema to Postgres provider, rename DATABASE_URL_AGENT → DATABASE_URL (ADM-1.2) (#172) (482e854)
  • admin: tasks show-all default and Reset button (#764) (9c2bafc)
  • admin: tokens page agent pre-select and env block (#797) (69980b4)
  • admin: upgrade admin service to Prisma 7 (#3385) (cc7e854)
  • admin: wire AgentProvisioner into POST /agents + add DELETE /agents/:id (HD-1.4) (#352) (d10f932)
  • admin: wire full manifest through provisioner for proper PVC mounts (#586) (bf7f076)
  • admin: wire selfHosted through agent API layer (#658) (e61549b)
  • admin: wire SHIPWRIGHT_ADMIN_PUBLIC_REPO into task board bootstrap (PPL-2.2) (#856) (6b5878c)
  • admin: wire task-store token into KubernetesAgentProvisioner (TSS-5.1) (#644) (90cef24)
  • agent detail page connect-later actions for Slack/GitHub (#3025) (019ec04)
  • agent: add per-run command variant switch to the loop orchestrator (#4199) (b032023)
  • agent: add run-telemetry accumulator and wire into claude stream (#3982) (8243579)
  • agent: always write per-owner github token files (#4472) (f58f12b)
  • agent: bundle Piper TTS binary + default voice in agent image (#2148) (433b2e3)
  • agent: gate Slack on account status (SSP-8.3) (#4057) (287715e)
  • agent: pin claude-code via Dockerfile ARG, assert version at build, disable auto-updater (#3866) (da4e09e)
  • agent: reshape run-agent.ts into minimal health server (UNI-1.3) (#281) (1809094)
  • agent: strip admin routes from run-agent.ts — thin agent (ADM-3.1b) (#174) (bd84e19)
  • API schemas + CRUD/config route handlers for authorAllowlist (#2213) (d86e0be)
  • auto-clone newly-configured repos on config sync (#3849) (bd69160)
  • auto-provision task-store token/URL in the Slack wizard (#1105) (b25c9a9)
  • bake chromium-headless-shell into agent/Dockerfile (#2291) (75755fe)
  • block Anthropic credentials for federated agents (#4286) (5b5ef3b)
  • bump default model and pricing aliases to Sonnet 5.5 (PAU-2.2) (#4238) (b2d88d1)
  • bump pinned claude-code CLI to 2.1.236 (#3091) (5a940aa)
  • cancel an in-flight reply via the heartbeat tick (CFB-2.4) (#2936) (85b6dcc)
  • capture Claude session id from earliest system/init stream-json line (#2390) (6658367)
  • chart: add agent voice STT/TTS as configurable chart option (#446) (9975bcd)
  • chart: generate the inter-service token mesh so a fresh install needs no Secrets (#2484) (f27d74f), closes #2485
  • chat: file upload browser→admin→chat service→agent workspace (CHT-5.1) (#1022) (c89ccde)
  • chat: render upload/plan markers in chat message bubbles (#1030) (a1d44c0)
  • chat: scaffold @shipwright/chat service (CHT-1.1) (#929) (6654d8f)
  • consolidate cron-run token accounting onto AgentCronRunModelBreakdown (#1252) (8cd93a5)
  • cron log model + cost columns (#1011) (12e8e7b), closes #932
  • cut cron reconcile over to manifest-driven per-type crons (#2197) (0109275)
  • delete agent PVC on deprovision (#1323) (06f6ad0)
  • deleteAgentFully() — idempotent orchestration, Agent row deleted last (#1350) (1db95ad)
  • deps: migrate to zod 4 and @hono/zod-openapi 1.x (ZOD-1.1) (#3932) (eb9a5a0)
  • derive generic progress phases from the Claude stream (#2906) (74cfaa4)
  • detect cross-org repo name collisions in clone sync (#3901) (e705f0c)
  • drop AgentCronRun.model and costUsd legacy columns (#932) (d74150c)
  • drop Claimed/Done from default board query, raise active-column cap to 200 (#3221) (b33878b)
  • drop the addedAt column from task-store schema (#1719) (159b1d3)
  • enrich admin service OpenAPI route descriptions (#3395) (2f4d9e8)
  • exclude parented cron rows from generic scheduler dispatch (LPC-1.3) (#1851) (f097e5b), closes #1849
  • export task-store-types from @shipwright/lib (#2266) (aa65b25)
  • expose restrictSlackToMembers and member emails on the runtime config lookup (SMR-1.2) (#2782) (6da79d4)
  • extend GET /agents/:id/config with 6 agent-policy fields (#3811) (34d5173)
  • extend SlackProvisioningClient to return OAuth credentials (BP-1.1) (#276) (7d1c1b4)
  • extract atomic createAgent() service function (APA-1.1) (#3653) (8744d45)
  • extract sendToUsers/notifySession in push-service.ts (#3310) (aa7689f)
  • extract shared login logic and add Okta routes (#2727) (27987e2)
  • extract Slack + GitHub provisioning into services + connect-slack/connect-github routes (UAP-1.1, UAP-1.2) (#3012) (1182878)
  • fix Session Detail back link to honor its actual entry point (ABL-1.1) (#1887) (258add2)
  • gate eligibility index on loopEnabled (#3293) (4ba7ab0)
  • gate Slack/GitHub sections behind runtime=in-cluster on the New Agent form (#3054) (d164ac3)
  • generate OpenAPI spec and types for admin service (OAS-3.1) (#546) (c3d3d3f)
  • group agent detail page cards into accordion sections (#3766) (e497359), closes #env-vars
  • group dev-task adherence by commandVariant and count task-bearing runs (#4246) (275e18c)
  • group session dependencies by ready/in_progress/blocked/closed state (#1647) (318c5a1)
  • guard Sentry init against NODE_ENV=test (#1313) (94e011c)
  • honour owner hint in gh owner resolver (#4469) (0032586)
  • inject owner hint into claude spawn and clone paths (#4482) (972d891)
  • installable PWA shell — manifest, icons, offline service worker (#2935) (d28a7b1)
  • introduce TaskKind enum, replace autonomousPlanSession internally (#3459) (f8a365a)
  • label tenant pods and apply a CPU limit in the agent manifest (#4040) (bdf26d1)
  • layered workspace files with runtime-owned RUNTIME.md and specialty-owned SPECIALTY.md (#4338) (8cf8100)
  • lean local-agent detail page (#796) (d89a026)
  • let admins assign or reassign an agent to an account (#4077) (aeb6932)
  • lib: add 5.x model rates and CONTEXT_WINDOW to pricing (#3980) (61854c8)
  • link legacy phase crons as shipwright-loop children in reconcileSystemCrons (#1849) (750de15)
  • live progress, elapsed timer and stall state in chat UI (CFB-2.3) (#2925) (e120eba)
  • make admin readiness probe DB-aware, decoupled from liveness (#1561) (140caa0)
  • make agent container resources configurable via env var overrides (#3300) (2dc7568)
  • make bulk() atomic with single task.write event and document behavior change (#3378) (09ba562)
  • make PWA install start_url reflect the current page (#3220) (2ae2d1c)
  • make task list rows clickable (TS-web-list-row-click) (#673) (b167604), closes #39
  • metrics: add METRICS_BASE_PATH for sub-path deployment (#282) (5fb182a)
  • metrics: repoint costEfficiency() to run-level aggregate + add byCronModel (PCE-1.5) (#947) (9b7a33b)
  • metrics: surface commits-per-PR in /metrics/merged-prs (CPP-1.3) (#3688) (4f729a4)
  • mic input + audio playback in the admin chat UI (VM-3.1) (#3634) (3860dee), closes #file-input
  • migrate admin console PR/task linking off stored taskId (PTL-2.1) (#2980) (4815dcf)
  • migrate Slack app manifest to agent_view (#2996) (eb4d5c8)
  • migrate work queue table onto shared data-table CSS (#1917) (9952704)
  • mobile chat view with collapsible thread drawer and sticky composer (#2929) (cde3928)
  • nest phase toggles under shipwright-loop in admin cron UI (#1901) (0e1b388)
  • OAuth callback + xapp-token + cron seeding (BP-2.2) (#280) (f70fc35), closes #278
  • optional outbound reply-notification webhook from chat service (CFB-4.3) (#2981) (6783a02)
  • per-chat token/cost tracking and display (#1027) (3d378c1)
  • point admin Tasks nav link at ready-state filter (#1136) (76f5233)
  • port the gh wrapper into the platform scripts/bin (#8) (911dbda)
  • preserve list filters/pagination in task detail back link (#1352) (12a0073)
  • provision start form with agent selector and GitHub/Claude fields (BP-2.1) (#279) (136a845)
  • PRs view — State/ReviewState dropdowns + Repo datalist + fix tab reviewState drop (#793) (4d93963)
  • redesign tasks page as unified board with org+repo filters and table-view toggle (#3185) (a0b7837)
  • reject colliding repos in admin (#3923) (fa909fe)
  • reject PATCH on system cron rows via the JSON API (#1957) (7c846e3)
  • remove analytics.ts, route error and session-fallback signals to Sentry (#1686) (769bacb)
  • remove authorAllowlist column and fallback (DBR-2.4) (#3124) (d57fd7c), closes #3094 #3115 #3129
  • remove deprecated /admin/provision callback alias routes (UAP-3.3) (#3036) (36984f5)
  • remove legacy autonomousPlanSession field (TKD-1.3) (#3484) (b0bde11)
  • remove PostHog analytics vars from site public docs (#874) (fb5bfe2)
  • remove PullRequest.taskId column, ?taskId= param, and dead backfill (#3108) (295f2cc)
  • remove requiresHumanApproval merge-gate from deploy.md (#2554) (8e4613c)
  • remove review-patch cron and ship-loop skill; enable review+patch by default (#1685) (34c65c2)
  • remove SHIPWRIGHT_INTERNAL_API_KEY (UNI-1.2) (#278) (8fc10c6)
  • remove task store tokens web UI from shipwright admin (#3153) (e0e392d)
  • rename OAuth routes to /admin/auth/* and add build-admin CI workflow (ADMD-1.2) (#201) (0567cb4)
  • rename Tokens UI labels to Task Store Tokens (#882) (e78a7c1)
  • render blockers and markdown on task detail view (#707) (b240b8c)
  • render error field on failed cron runs in admin UI (#1556) (e67b2b6)
  • render sessionId in the admin cron-logs table (#2407) (a223c4d)
  • render work item id/type column in admin cron-runs UI (#1778) (ae1dd4c)
  • replace password login with Google OAuth (ADM-2.1) (#171) (779cdcd)
  • repoint admin task-detail Added field from addedAt to createdAt (#1593) (0be9183)
  • request sort=desc on admin task and PR list views (ADS-1.2) (#1702) (69e93e7)
  • require owner hint in gh wrapper and git credential helper (#4485) (cf524a9)
  • responsive/mobile chat layout (#1034) (2b5e0e0)
  • restyle PRs page to match Tasks board visual language (AXR-2.1) (#3186) (93ab8b7)
  • retire /admin/provision entry-point pages (UAP-3.1) (#3047) (8667665)
  • retire POST /agents JSON API (ABF-3.2) (#3506) (e3b9217)
  • retry GitHub App auth setup on syncConfig tick (ABF-2.1) (#3472) (8619623)
  • scaffold mcp-server bun workspace (#1165) (3ca0275)
  • scaffold task-store package with Prisma schema and integration test (#581) (90a6491)
  • scope entropy/security patrol crons to configured repos (#3853) (a8ee98b)
  • scrub vitals-os from admin service fixtures (SEV-1.2) (#636) (e616fc9)
  • scrub vitals-os references from agent service (#639) (ae9788e)
  • seed default AgentTool rows at agent creation (#2104) (e0d8150)
  • seed manifest tools + plugins on POST /admin/agents (#3475) (2b54628)
  • seed new agents from the type manifest at create time (#2200) (5452e98)
  • serve the platform OpenAPI document at /doc behind a flag (#19) (e99045a)
  • session detail Needs-you panel + header state badge (SESH-5.1) (#3344) (a42541a)
  • sessions list UI Pacific time, agent names, merged columns, filter autocomplete (#3504) (fafd994)
  • she-5.1: port setup.ts with dynamic plugin registry integration (#102) (63356a7)
  • she-5.2: port entrypoint, scripts, and Dockerfile (#117) (134be8c)
  • show blocker badges on task list view (#697) (124c246)
  • show cron run error/skip detail in a Detail column (#2315) (05ff487)
  • show per-phase cron cost breakdown in metrics dashboard and admin UI (#1310) (2da190e)
  • single "+ New agent" CTA on the agents list page (UAP-2.2) (#3037) (51e1dd1)
  • skip re-minting SHIPWRIGHT_AGENT_API_KEY when already set (#984) (530cc15)
  • stack: wire chat service + UI chat into task stack, remove dev-only /chat transport (#1051) (b5ac4cc)
  • stamp plugin version into the agent image at build time (PVS-1.2) (#1035) (889d11c)
  • stream-parse claude -p output, accumulate per-model usage (#2004) (eb3cefe)
  • subscribe to and handle Slack's agent_session_stopped event (#3074) (92f7933)
  • surface agent-policy fields in admin UI panel (#3748) (e027208)
  • surface environmental-cause breakdown on verification activity card (#3810) (e584af5)
  • surface kind in admin UI (#3473) (04cb4fb)
  • surface missing required env keys on agent detail view (#2204) (93d8e87), closes #2203
  • surface skip count on task and PR detail views (#2114) (374637e)
  • surface verification-check outcomes in admin UI (LVB-5.3) (#3642) (f01ea28)
  • SW push handler honors payload.tag, bumps cache version (#3332) (cebcb20)
  • swap AgentCronRun.phase string for phaseId FK across writer and reader (LPC-3.1) (#1907) (fdbbd77)
  • tag Sentry initialScope with agent_id so events are filterable per-agent fleet-wide (#1680) (9bb1e72)
  • task-store client — revoke tokens for an agent (#1332) (1d80c0f)
  • task-store schema + filter for autonomousPlanSession (#3358) (7362ffd)
  • task-store: add accountId (default 'default') and new unique keys (#4020) (00fca6d)
  • task-store: add GET /tasks/distinct endpoint (#694) (069be9b)
  • task-store: agent token scoping (#651) (4539de1)
  • task-store: extend state filter to ready/in_progress/blocked (#695) (f697bdf)
  • task-store: generate TS client types from OpenAPI spec (#1227) (c3894fb)
  • task-store: return accountId from scope resolver and plumb through auth (#4063) (2459842)
  • task-store: split hitl/blocked signals + data migration (HSR-1.1) (#2382) (9862549)
  • task-store: state filter, pagination, and status dropdown fix (#670) (b36b50f)
  • task-store: wire Sentry error reporting into task-store (#1155) (f6c6241)
  • thread list pane, search, and rename/delete for admin chat (#1009) (ed790be)
  • thread work item id/type through cron-run records (WLS-2.2) (#1763) (8cd2a32), closes #1310
  • type-aware workspace templates with coding fallback (Feature 5) (#4335) (8367f41)
  • UNI-1.1: merge /admin/api/agents/* routes into unified /agents/* surface (#263) (702db79)
  • unified agent-creation page with inline Slack/GitHub connect (UAP-2.1) (#3024) (ebfe6dc)
  • unify claim TTL to one 35-minute constant for Task + PR (#1369) (ac2d175), closes #1321
  • web push notifications for agent replies (CFB-4.2) (#2964) (3a4ee7e)
  • wire autonomous plan-session dispatch phase into loop-orchestrator (#3361) (d795dc2)
  • wire deleteAgentFully() into DELETE /agents/:id (#1362) (5bf9110)
  • wire GET /tasks and /tasks/distinct routes for repeated repo/org params (#2403) (daacf2b)
  • wire GitHub App manifest-flow routes and provision-form UI (GAP-2.1) (#2772) (af098ab)
  • wire notifySession() to buildSessionNotificationPayload() (#3577) (61348bd)
  • wire Sentry into admin service (#1215) (be79b6c)
  • wire session detail page follow/unfollow button (SESH-5.3) (#3346) (baead5c)
  • wire sessions list Follow button to SessionFollowService (#3533) (6be32d1)
  • wire shared Caller into admin auth + onError logging (#1331) (dde7a8e)
  • wire the shipwright-site-docs-freshness cron (#3435) (521d2af)
  • wrap agent detail sub-tables and add Created columns (ATC-1.2) (#1919) (c5d2b1f)
  • wrap tokens page table for consistent mobile scroll (#1923) (26406db)

Bug Fixes

  • add NOT NULL constraint to Agent.authorAllowlist, matching Agent.repos (#2247) (14159fa), closes #2223
  • add required url field to GitHub App manifest (#3180) (2046e78)
  • add status getter alias to ApiError for Sentry defaultShouldHandleError (#3239) (5d41adf)
  • admin blocked-task badge/detail render crash + BlockedByEntry parity test (#2565) (d73f731)
  • admin: accept Chromium/Safari mic-recording MIME types for voice notes (#3975) (ba81505)
  • admin: accept xoxe.xoxp rotating tokens in Slack token validation (#527) (1b5f2ab)
  • admin: add enabled toggle to PATCH /crons/:cronId (#289) (3b7a1b2)
  • admin: alert allowlisted admins on followed sessions and add a Send test notification button (#3373) (8da5daa)
  • admin: consolidate Slack manifest into buildAgentManifest, fix sync-manifest (#529) (7670ed1)
  • admin: correct Metrics toolbar link default from /sw/dashboard to /dashboard (#388) (1e174b5)
  • admin: explicit 5s timeoutSeconds on agent liveness/readiness probes (#1567) (8a4d1c3)
  • admin: handle bare-array response from ready/blocked task endpoints (#730) (1d8d60a)
  • admin: honor session isAdmin and scope non-admin cookies in the JSON API (#3989) (150ffe0)
  • admin: key claude policy mount drift on mountPath (648c954)
  • admin: let agent members use the chat UI for their own agents (#3962) (f30f36e)
  • admin: make /admin/agents/new the primary agent-create CTA (#2767) (24c1e06)
  • admin: make task and PR references clickable across admin UI (#1823) (0488f5a), closes repo#number
  • admin: navbar highlight reflects current path (#258) (085d236)
  • admin: parse plugin records as canonical claude install spec (#381) (f564c75)
  • admin: pass redirectUri in sync-manifest handler (#554) (4bc239c)
  • admin: redirect GET / → /admin/login (#444) (51aca63), closes #443
  • admin: relabel the toolbar 'Provision' nav link to 'Slack' (#2769) (3f59881)
  • admin: show real user email in navbar instead of "admin" (#259) (e0fc041)
  • admin: show system crons for self-hosted agents (#870) (eb545b9)
  • admin: simplify PR list tabs — Open/Merged only (#753) (eb799b9)
  • admin: stagger SYSTEM_CRONS pipeline schedules to prevent simultaneous firing (#1006) (ad57e6f)
  • admin: widen agent probe timeoutSeconds 5s -> 15s as a bridge to SIO-1.2 (#1594) (335dbb7), closes #1567
  • admin: widen chat token daily counters to BIGINT (#4155) (2d4c271)
  • admin: wrap PrismaPromise in async fn for rejects assertion (a8a055a)
  • agent: add native build toolchain (build-essential, libssl-dev, pkg-config, jq) (#300) (44814ce), closes #566 714/#715 #1403 #1354
  • agent: copy lib/ source into the agent Docker image, not just its package.json (#901) (ddaacd3)
  • agent: explicit adminApiUrl + remove duplicate HttpShipwrightConfigClient (AVP-1.2 review) (#237) (a43570b)
  • agent: install claude/node system-wide, not via mise (matches vitals-os) (#299) (7fa1afd)
  • agent: install shipwright plugin from local disk, not remote GitHub slug (#291) (b899c86)
  • agent: patch @slack/socket-mode's undici ping for Bun compat (#3017) (9de4025), closes #3006 oven-sh/bun#37110
  • agent: pin Go/npm/bun caches to the PVC and raise ephemeral storage to 4Gi (#2695) (7aae8aa)
  • agent: raise startup watchdog to 180s + gate probes with a startupProbe (#727) (b69c261)
  • agent: remove duplicate health server in entrypoint-main (EADDRINUSE) (#298) (cdc6ca4)
  • agent: seed mise PVC from image on first boot + configurable startup timeout (#274) (f298d1a), closes #265
  • agent: spawn index.ts instead of run-agent.ts in entrypoint (#286) (0f298b3)
  • align the changelog preset with the locked changelog writer (#14) (ee55b51)
  • allow enabled-only PATCH on system crons via JSON API (#3581) (732ec99)
  • auto-fix mechanical v2 lint warnings (#3433) (697c57d)
  • centralize NODE_ENV=test guard via bunfig.toml preload, retire piecemeal prefixing (#2308) (61a00f2)
  • chart: emit a 64-char-hex SHIPWRIGHT_ENCRYPTION_KEY so admin can encrypt agent envs (#2764) (9ba1721)
  • chat: heartbeat long-running replies instead of a flat 90s UI timeout (#2899) (fa3cb95)
  • chat: make the reply heartbeat interval-driven and owner-scoped (#2902) (26a8dc2)
  • chat: stop serializing attachmentBytes into message JSON responses (#4172) (47aed5a)
  • check blockedBy before in_progress in classifyTaskState() (#2054) (9c3c314)
  • correct BOOTSTRAP.md.template cron listing to reflect enabled-by-default state (#990) (1dfca82)
  • correct cron/chat model-usage field mapping to match real Claude CLI output (#1140) (38a8680)
  • correct stale cron cadence/discovery claims in BOOTSTRAP.md.template (#3466) (7af1e0f)
  • db: pin legacy pg sslmode aliases to verify-full (#3719) (88a1123)
  • defensively copy lib/node_modules in admin, metrics, chat Dockerfiles (#1189) (8a94fd1), closes #1187
  • deps: bump vulnerable dependencies to patched versions (osv-cve security patrol) (#2536) (389b910)
  • deps: update routine dependency updates (#3266) (211b693)
  • docker: copy workspace node_modules and run images as non-root (#212) (e434233)
  • docker: set NODE_ENV=production in all three service images (#290) (9916a95)
  • don't fall back to coding crons for a non-coding agent type (#4296) (56a3b19)
  • drop unused export keywords flagged by dead_exports entropy rule (#4227) (f0725bf)
  • fail-closed isAdmin default in getSessionUser (admin-ui.ts) (#3270) (65d6550)
  • gate mise install RUN step on curl exit code and binary existence (#3721) (f289253)
  • gate queue-activity links when the coding extension is absent (#4415) (3cc7a4f)
  • graceful SIGTERM shutdown for admin, task-store, and chat (#3287) (7ccc772)
  • keep Slack OAuth authorize link in the same tab (#979) (006fec6)
  • keep table-view state and filters on Tasks-page navigation (#3209) (98ae5d1)
  • mask agent secret env vars and stop minting duplicate provisioning tokens (#1300) (cec2f26)
  • metrics: public dashboard read-only toolbar + guard token render against missing section (#863) (b1d10c8)
  • migrate cron logs table onto shared .data-table + wrapper CSS (ATC-1.3) (#1916) (b20e115)
  • mobile responsive defects across admin console (CFB-3.1) (#2914) (6df82cf)
  • persist GitHub App client id/secret and reconcile crons after install (#3026) (752257f)
  • pin conventionalcommits preset to v8 for release notes (#30) (542cbaa)
  • preserve AgentCronJob id in reconcileSystemCrons to keep cron run history (#1131) (b09cc77)
  • provisioner: remove ownerReferences from provisioned agent resources (#593) (f510627)
  • raise drawer/scrim z-index above sticky toolbar (DNZ-1.1) (#3223) (c7c1b47)
  • reconcile drift-corrects agent container env/resources + memory limit (#1282) (3fe6803)
  • register ChatThreadWatch on the chat UI's actual send route (CFB-4.4) (#3050) (1538e87)
  • remove dead exports flagged by entropy patrol (admin, metrics, scripts) (#3413) (422e3f5)
  • remove dead exports flagged by entropy patrol (dead_exports) (#2932) (f8306de)
  • remove dead exports from lib/sentry.ts unused interfaces (#2027) (21b6aaa)
  • remove dead loadInClusterConfig export and unexport KubernetesCassette (#1468) (de4537f)
  • render edge-less tasks in session dependency graph (#4405) (58f5e24)
  • renderer guard + prUrl fallback on task board PR cell (#943) (abf1b65)
  • repair Slack Thinking Steps stream schema, delivery, status, and queued-message handling (#3057) (27df65d), closes #3034 #7
  • resolve and persist agent.slackId after Slack OAuth completes (#3027) (040533c)
  • resolve Sessions page Agent filter names to agent IDs (#3511) (541964a)
  • route agent prisma calls through AgentService layer (entropy-architecture_layering-2026-W29) (#1474) (05c4c35)
  • route agent repo clones and worktrees to the PVC via SHIPWRIGHT_REPO_DIR/SHIPWRIGHT_WORKTREE_DIR (#1266) (0dbac51)
  • route agent-config plugin fetch through AgentPluginService (#2265) (8310b93)
  • route push subscription/watch writes through PushService (#3277) (f1f1165)
  • security: bump lockfile deps for 13 OSV/CVE findings (#2250) (6fa8edf)
  • seed renderedIds from upload response to prevent duplicate chat bubble (#3069) (533db9b)
  • show skipped badge on agent detail cron list (#1149) (8dba749)
  • skip provision-state check for additional-org installs (#4463) (6c22850)
  • stack: make the local dev stack work end-to-end (+ pane labels & stack:down) (#265) (f815a73)
  • state+status conflict in admin tasks route handler (#775) (fce453a)
  • stop chat poll from resetting scroll when user scrolled up (#3957) (85b58c3)
  • task-store: unify list response shape — ready/blocked now return { tasks, total } (#733) (5113f1d), closes #730
  • upgrade npm with sudo in the publish job (#32) (d5e49a3)
  • use recorded-fixture terminology for Anthropic client test doubles (cf905d9)
  • use workspace:* for @shipwright/lib deps to resolve Renovate lookup warning (#2884) (ca0894e)
  • wrap dependency graph in scrollable container on mobile (#1924) (94d9d8b)
  • wrap PRs table and align sort/display columns (ATC-1.1) (#1912) (a01757f)

Reverts