Skip to content

Changelog

Every CrewKit CLI release

Every released version of the CrewKit CLI, with the features and fixes that shipped in it. Subscribe with RSS.

0.7.11

Compare

Features

  • api: declared repository commands and workspace agent settings (CREW-16)c0b98db
  • api: declared repository commands and workspace agent settings (CREW-16)4b984da
  • api: feature progress from the epic's children (CREW-14)8c692ba
  • api: read a feature's progress from its epic's children (CREW-14)4a9cd4d
  • api: record work saves and emit the assigned event (CREW-8)48dcc49
  • cli: print a feature's progress in work show and list (CREW-14)f7cafa0
  • cli: sync workspace agent settings with per-user consent (CREW-16)bc8cbdb
  • cli: work save, pickup and assign (CREW-8)9262aa0
  • cli: work save, pickup and assign (CREW-8)5f78636
  • dashboard: show a feature's epic progress on its work item row (CREW-14)8cd4481
  • dashboard: show work saves and reassign from the row (CREW-8)0c20ecb
  • dashboard: workspace agent settings panel and repository commands editor (CREW-16)5701824

Bug Fixes

  • api,cli,dashboard: never undercount an epic, never blame it for a big field list (CREW-14)7b0ca81
  • api,dashboard: agent settings need developer+ as well as the lead role (CREW-16)662695c
  • api: parse the OpenAPI spec once per process, never in a shared cache8c9f986
  • api: serve each build's own OpenAPI spec, never a cached one (CREW-27)b726183
  • api: serve the internal OpenAPI spec per process too, through one loader939de3b
  • cli: harden work save against stranded pushes, hooks and refusals (CREW-28)66a1263
  • cli: harden work save against stranded pushes, hooks and refusals (CREW-28)a616c50
  • cli: keep in-flight save markers per sha and read origin attended (CREW-28)f7c9806
  • cli: kill an unattended work save push after two minutes (CREW-8)329822c
  • cli: read git in the C locale and report entries a non-TTY sync drops (CREW-16)0b67199
  • cli: retract removed MCP servers anywhere and fail closed on git (CREW-16)70ba0c7

Code Refactoring

  • api: one Jira client per org batch, order the sync by its one read time (CREW-14)5b8e823
  • cli: flatten the stranded-save check and share the save test mock (CREW-28)e24cce6
  • cli: keep the push time of a stranded save, name git subcommands (CREW-8)6e84066
  • cli: share the marker pattern and skip a needless origin read (CREW-28)6f13137
  • cli: share the printable rule and list the vetted set whole (CREW-16)9768641
  • monorepo: tighten work save after review (CREW-8)545a873

0.7.10

Compare

Bug Fixes

  • dashboard: accept the /up health stub in the MSW handler guard1c802b1
  • dashboard: accept the /up health stub in the MSW handler guard (CREW-26)559a372
  • dashboard: lead with Settings, and say crewkit links only when asked4270c7b
  • dashboard: point empty repository states at paths that link one5e965d5
  • dashboard: point empty repository states at paths that link one (CREW-21)453adbd
  • dashboard: reset project settings to what the server saved (CREW-25)#1580f561f86
  • explain work start's 422 when there is no Jira connection (CREW-24)#1579827195f

0.7.9

Compare

Bug Fixes

  • api: list a project's git remote as one of its repositories72c7b57
  • api: list a project's git remote as one of its repositories (CREW-22)553da66
  • api: match a listed repository in any spelling, keep removed ones removedbc40bb8
  • cli: a judged registry-lock corpse is pinned so a reused inode cannot pass for it; cli-ci test on webirak-tt-4c16ga9c526c
  • cli: ask origin for a branch without ever prompting939b76c
  • cli: link repositories with their origin's default branchd2da86e
  • cli: link repositories with their origin's default branch (CREW-23)c8956f9
  • cli: pin a judged registry-lock corpse so a reused inode cannot pass for it (a30770b), closes #1443
  • cli: pin the registry-lock corpse on Unix only and name what guards the pin (d2d63e1), closes #1443
  • dashboard: let the New Project form create a workspace2f1c497
  • dashboard: let the New Project form create a workspace (CREW-20)b5acf94
  • dashboard: name the project kind group, never send a workspace remote6a8eb9e
  • sessions: allowlist structured file results and strip nested edit content#1482624d4e9
  • sessions: allowlist structured tool results and strip nested edit content#1482f2f18ef
  • sessions: clear stored subagent team names in the residency purge#14830555700
  • sessions: keep only metadata from Grep, LSP and WebFetch results#1482dbe1009
  • sessions: make minimal capture fail closed for every event type#1483491a133
  • sessions: make minimal capture fail closed for every event type#1483f17b431
  • sessions: purge resident event data by allowlist and strip team names#1483dc08496
  • sessions: strip teammate_id under residency and drop the unused teammates scope#1483c5df723

0.7.8

Compare

Bug Fixes

  • api: refuse control characters in a stored link name (862095d), closes #1424
  • api: store any remote path segment on a link, refuse only dot-only ones (e66c43b), closes #1424
  • cli: detect GitLab subgroup remotes21b3cb6
  • cli: detect GitLab subgroup remotes and resolve SSH host aliases (228fb12), closes #1424
  • cli: drop the ssh alias rewrite and keep subgroup names off the fallbacks (db41640), closes #1424
  • cli: keep legacy cache reads to owner/repo and register sibling subgroups (b8e2215), closes #1424
  • cli: register subgroup projects and keep sibling subgroups apart (4beeac9), closes #1424
  • cli: remove the pre-digest cache file and bound the cache filename length (83831cf), closes #1424

0.7.7

Compare

Features

  • agents: stop a job container when the API answers 409#1147fa6dfac
  • agents: stop a job's container when the API answers 409#11474802093
  • api: a convention-set edit creates a ResourceVersion, and key swaps keep ids#1166b65d4e3
  • api: a playbook version carries its conventions, and rollback restores them#1229d041484
  • api: a playbook version carries its conventions, and rollback restores them#12298c74c5d
  • api: add provisioning states to the GitLab grant and reap stale ones#12524360067
  • api: add provisioning states to the GitLab grant and reap stale ones#1252205cd35
  • api: add the GitLab grant lifecycle: add projects, reconnect, remove the account#1257b1ef7f5
  • api: add the GitLab grant lifecycle: add projects, reconnect, remove the account#12577ff0561
  • api: add the GitLab Owner-token client and the gitlab_connect state#12515344710
  • api: add the GitLab Owner-token client and the gitlab_connect state#1251409fceb
  • api: age-prune and meter artifact analysis spend#500ca79847
  • api: age-prune artifact analysis spend ledger#5002abcedc
  • api: cap waitlist confirmation mails per UTC day#117712a225a
  • api: cap waitlist confirmation mails per UTC day#1177afe2977
  • api: clear resource version content after the content-bearing term#1246ca3f46f
  • api: clear resource version content after the content-bearing term#124622a1312
  • api: connect GitLab in one sign-in: start, callback, claim and service account#125486cc1f3
  • api: connect GitLab in one sign-in: start, callback, claim and service account#125459082f1
  • api: convention-set edits create a ResourceVersion; key swaps keep ids; admin Inert badge#11661161c01
  • api: derive adaptation spend caps from billing plans#3840db2297
  • api: derive adaptation spend caps from billing plans#3845aeaee9
  • api: enforce GitLab default-branch protection at link and each job handshake#1163f7b59d5
  • api: enforce GitLab default-branch protection at link and handshake#1163321c7dc
  • api: fall back to ENV adaptation cap for lapsed subscriptions#11795943bca
  • api: fall back to ENV adaptation cap for lapsed subscriptions#11799aff06f
  • api: filter the picker's handle from the request log and Sentry#12513733cf4
  • api: gate the waitlist Slack post on the daily confirmation budget#1188a234c70
  • api: GitHub sign-in through the detour, and social buttons on device verify (#790, #792)0f3cad9
  • api: Google sign-in for a hosted mailbox#7881a33d21
  • api: Google sign-in for a hosted mailbox, end to end#78830322a4
  • api: hold the GitLab Owner token for one picker submit, then destroy it#12533b77f7c
  • api: hold the GitLab Owner token for one picker submit, then destroy it#12537a55e34
  • api: magic-link detour for social addresses the provider cannot vouch for#789ddc942f
  • api: mint and revoke GitLab job credentials through a host-neutral seam#106093bf070
  • api: name GitLab job credentials per install so sweeps stay apart#11866a77a06
  • api: name the platform provider in the social amr#6891070c42
  • api: one-click GitLab connect: sign in once as the group Owner, service account, project picker, lifecycle#1210df01c24
  • api: open a GitLab job's merge request at push_checked_sha, and admit GitLab jobs#106531c21cb
  • api: open a GitLab job's merge request at push_checked_sha; admit GitLab jobs#1065bbee78f
  • api: per-install discriminator on GitLab job credential names#11868bebacc
  • api: picker submit adds the service account, protects consented branches, revokes the Owner token#125535e9ad9
  • api: picker submit adds the service account, protects consented branches, revokes the Owner token#125527e8095
  • api: platform-admin kill switch that force-ends a live cloud job#1131050e4b7
  • api: platform-admin kill switch that force-ends a live cloud job#1131d04156b
  • api: playbook wizards write real conventions in one transaction#328a10b81d
  • api: promote the GitLab spec (#1046) into develop1043405
  • api: retire removed playbook conventions instead of destroying them#12335e5d979
  • api: revoke the GitLab Owner tokens no picker submit took#12533a9f82d
  • api: serve the orchestrator's GitLab clone-and-push handshake#1064ff1d3df
  • api: serve the orchestrator's GitLab clone-and-push handshake#1064d0c046c
  • api: sign in with GitHub through the magic-link detour#79062c63aa
  • api: sign-in methods panel and social unlink with suppression#791e27c055
  • api: sign-in methods panel, and unlink with suppression#7917081630
  • api: soft-retire removed playbook conventions so rollback and re-add keep the same row#1233db0e1ab
  • api: sweep retired playbook conventions after the content-bearing term#1240ed59545
  • api: sweep retired playbook conventions after the content-bearing term#1240cacad02
  • api: the social detour — magic link for every non-hosted address, link and create, with device relay#78974cc687
  • api: warn at boot when the API's public URL is not https#121237944d6
  • api: write a playbook and its conventions in one transaction#328ebd57ef
  • auth: social sign-in with Google and GitHub#689b9d11c0
  • cli: surface dropped telemetry on the statusline, sidebar and Sentry#1128299d96e
  • cli: surface dropped telemetry on the statusline, sidebar and Sentry#11287f08031
  • dashboard: add github to the provider contract, with its refusal copy#79031a2304
  • dashboard: add the GitLab grant lifecycle: add projects, reconnect, remove the account#12576a9644a
  • dashboard: catalog vocabulary for Yours and builder; clarify running sessions#648968a12a
  • dashboard: catalog vocabulary for Yours and the skill builder; honest removal copy#6483973702
  • dashboard: connect GitLab in one sign-in with a project picker#1256b96ee74
  • dashboard: Continue with Google on the login page#78846870f3
  • dashboard: deep-link the GitLab connect steps for the typed group#1122a7c451c
  • dashboard: label throttled magic-link and passkey events in the activity feed#1176ce681ab
  • dashboard: label throttled magic-link and passkey events in the activity feed#1176f608615
  • dashboard: playbook wizards write real conventions and flag inert playbooks#32855d64f9
  • dashboard: show a GitLab link refusal in the link dialog#121191dec23
  • dashboard: show the Inert badge on admin playbook pages#116694c558a
  • dashboard: sign-in methods panel on the profile page#79104b81d7
  • dashboard: social buttons on the device-verify page#792c11614a
  • dashboard: social detour consent page and check-your-mail notice#7893417d0a
  • dashboard: the GitLab connect dialog takes the group; partial connects and unreadable rules#1269339e307
  • dashboard: the GitLab connect dialog takes the group; partial connects and unreadable rules#126965171d3

Bug Fixes

  • agents: own the exec in the terminal watcher and test the run#114765c3c7f
  • api: #1046 outside review — mint only on the checked default branch; close only a closed MRd34738c
  • api: #1046 stage audit — linear GitLab glob matching, HTTP status in protection refusals61fc688
  • api: #1046 stage audit — merge-request lock scope and one leave-group/bound-project path5a662da
  • api: #1210 fix round: org-delete custody, group-rules 404 on Free, one revoke pathdbe0a60
  • api: #1236 review — create op's conventions text drops the update clause; sentinel compares keys by YAML valueb8e3a3c
  • api: #689 stage audit + outside review — unlink/detour race, atomic device approval, provider amr, provider-list sentinel48f50a2
  • api: 404 unpublished platform resources for orgs that do not hold them#1152a6f01d6
  • api: a failed hand-off no longer 500s a committed force-end#1131deb49db
  • api: a live GitLab connect answers 200, and review fixes for the callback#1254b83a94b
  • api: a playbook's stacks go to the framework_stacks column, not frontmatter#3289bac56d
  • api: a project with no default branch never meets the group's rules#1254e64f06c
  • api: a short head leaves its unused LLM room to the conventions#32851c31da
  • api: a social detour replacement is described and mailed as one#789026ec24
  • api: abandoned GitLab grants no longer hold their group#12526275251
  • api: accept current and previous orchestrator secrets for rotation#109963f1b10
  • api: account erasure deletes the email-bound sign-in tokens and passkey challenges#1243e215ba1
  • api: account erasure deletes the email-bound sign-in tokens and passkey challenges#12432738d99
  • api: address the GitLab grant lifecycle review#12572d67f2a
  • api: address the picker submit review#1255e31df65
  • api: allowlist resource frontmatter keys on write, import and serve#444b419176
  • api: an expired trial uses the ENV adaptation cap#117962c97db
  • api: answer a failed dependency with its validation reason, not a class#9162e6f5ff
  • api: answer a failed token credit with its validation reason, not a class#916759dacc
  • api: answer a raced org delete 409, and keep the two sentinels green (5b63217), closes #1210
  • api: answer delete_raced only for the gitlab holds' restrict fk (de09bf8), closes #1210
  • api: apply the unpublished platform rule to listings and skill toggles#1152cb390f6
  • api: approve a device code in one conditional statement#6898d87e2a
  • api: approve the integration test's device code by its current name#6898a11b46
  • api: ask GitHub for 100 emails a page; one set of social sign-in assertions#79063116ac
  • api: audit a capped waitlist day once per cap, not once per signup#117773f18d4
  • api: backfill home-directory owners on unattributed sessions#1132b14e811
  • api: batch the retraction under short locks, retry deadlocks, audit a failed enqueue#473c9a37ac
  • api: bind erased addresses and scrub social sign-in addresses too#124394d633a
  • api: bind MCP search and forks into the transcript taint#1034b79c399
  • api: bound GitLab branch protection checks and audit refusals#1046827b73c
  • api: bound the disconnect's wait on a job lock and record the lost id#1060aa6398a
  • api: bound user-written framework_stacks#3285e768ad
  • api: close the in-flight embed race and record each retraction#4730621c5a
  • api: close the prepared-statements guard gaps found in review#1244ac52acc
  • api: close the review findings on GitLab grant provisioning#12528b4cbf3
  • api: close the review findings on the retired-convention sweep#12405dc495c
  • api: close the review findings on the version content term#12460a0c532
  • api: count grants disconnected before a refused hard delete#1060b73d901
  • api: count group_projects truncation before dropping malformed rows (0caea5c), closes #1251
  • api: declare the sign-in methods controller account-scoped#68913b17c6
  • api: disconnect GitLab first in the admin hard delete, refusing on Busy#1060b272fbc
  • api: document the inbound-message and admin source verbs; fix the two bugs the docs exposed#1123d356d12
  • api: drop client-written Forwarded and Client-IP headers before the client IP is read#122138f3a34
  • api: drop client-written Forwarded and Client-IP headers before the client IP is read#122179b6a9c
  • api: drop the author id from every agent note the departed user wrote#1103d0f36cb
  • api: drop the departed user's author id from their agent notes; state the note rule#1103fb69905
  • api: erasure clears the session analysis a document renders from, and reaches agent notes#1103c77eb88
  • api: erasure retires the vectorized session copy of a departed user's conversations#1103b187951
  • api: erasure scrubs departed logins from session paths; home-segment backfill#11321040d3e
  • api: erasure scrubs the vectorized session copy and deletes its chunks (#1103) (b14f268), closes #942
  • api: evaluate every protection rule matching the default branch#1163c81f988
  • api: every convention writer versions and re-scans; rollback refuses a lost set#116624771a3
  • api: fail a job whose push credential fails, and record a passed push check#10646cbfd7c
  • api: fork copies playbook conventions; set edits re-scan a published playbook#32867f92ba
  • api: framework_stacks bounds apply to every resource type, not playbooks only#328e16d477
  • api: gate the waitlist Slack backfill on a confirmed count#11889163e37
  • api: gate the waitlist Slack post on the daily cap#11881de0e42
  • api: give the social sign-in events deliberate severities#788a19c7ca
  • api: grant partial artifact batches within exact spend caps#500108f678
  • api: guard the unvalidated served-version save and word the rollback refusal#11668a414a4
  • api: hide unpublished marketplace playbooks from nonsubscribers#112011d523a
  • api: hide unpublished marketplace playbooks from nonsubscribers#112042e1a9b
  • api: hide unpublished platform resources from orgs that do not hold them#11524b51caa
  • api: keep a holder's drafts on flat effective; C8 reads not_found#1152de6c23c
  • api: keep a nil status on a revoke failure event, drop only a missing session id#12556bfcd5f
  • api: keep an identity provider's client_secret out of its JSON#7889328053
  • api: keep org bulk off markers for unheld drafts#1152c6df330
  • api: keep provider and database prose out of exception log lines, lane D3#916cc5be55
  • api: keep provider and database prose out of exception log lines, lane D3#916115e72d
  • api: keep transcript deliveries for the life of their user, project or org#124731f1d18
  • api: keep transcript deliveries for the life of their user, project or org#1247822da75
  • api: keep transcript-tainted session artifacts manager-floored#103486927b9
  • api: key every IP throttle on one client-address helper#1180fa11d60
  • api: key every IP throttle on one client-address helper#1180f28d78c
  • api: leave_group re-checks the link under its lock before destroying it#10461ec5cd2
  • api: LLM leg always sees playbook conventions; sweep and findings know them#3282bd48e1
  • api: lock the job FOR NO KEY UPDATE so a disconnect cannot deadlock the MR open#10656efe373
  • api: log an unconfirmed MR close, and pin the protection check's branch#104655e35bd
  • api: log each SSO auth-time fallback so an enabled opt-out is visible#73000c70d6
  • api: log the unswept pasted-account mint plainly, clear a taken-over row's PAT ids#125718121d4
  • api: mint on the re-read link and bound, guard and record the job lock#1060b85edcc
  • api: mint only on the default branch checked, and close only a closed MR#1046b80a17c
  • api: name force push in a picker refusal, keep revoking past an audit failure#12556fd423f
  • api: neither body nor conventions can starve the LLM leg; token before bytes#3288c050d2
  • api: never return a credential minted on a disconnected grant#1060b1668cd
  • api: one POST /admin/resources in the internal spec, and a sentinel for duplicate YAML keys95eb69d
  • api: one POST /admin/resources in the internal spec; sentinel for duplicate YAML keys27eb11d
  • api: only a playbook's framework_stacks are writable through the org resource route#328e2f12f3
  • api: pin the platform provider list to one source#689659b87b
  • api: post only the confirmed waitlist backfill set#1188f864324
  • api: prevent orphan inbound messages and clamp admin source pagination#11231726d9c
  • api: prune transcript deliveries at the session content retention term#1247719e397
  • api: re-check a terminal job under its row lock before any handshake GitLab call#11485044ce5
  • api: re-check a terminal job under its row lock before handshake GitLab calls#11489ca456c
  • api: re-read the link at mint completion and revoke on every unlink path#10604a7de64
  • api: read the GitLab project before the merge-request lock#1046a332f92
  • api: read the rotation map as credentials deliver it, add the pre-deploy check#109914fb6ac
  • api: reap the committed rows a non-transactional test leaves behind#123429856ad
  • api: reap the committed rows a non-transactional test leaves behind#1234ae057ad
  • api: record a veto-lifted retraction as stopped, never completed#473f0eca50
  • api: refuse missing SSO auth time unless the owner opts out#7300775c4a
  • api: refuse missing SSO auth time unless the owner opts out#730d5c4401
  • api: refuse to boot production or staging with prepared statements off#12446d461f7
  • api: refuse to boot production with prepared statements off#1244f8f3292
  • api: reject malformed admin and artifact input#1164bd88434
  • api: reject malformed admin and artifact input instead of raising#1164da0689c
  • api: report a failed enqueue_failed audit to Sentry like the other rescues#473e4ddcb9
  • api: restrict an org delete past a late gitlab hold, withhold erased user id (4e2b921), closes #1210
  • api: restrict new subscriptions to published platform playbooks#11200945a81
  • api: retract embedding chunks when an egress veto turns on#4736910439
  • api: retract embedding chunks when an egress veto turns on#473ac113be
  • api: revoke an erased account's GitLab Owner holds after its transaction commits#1253967b7ce
  • api: revoke an unlinked project's job credentials at the unlink#106030e56d3
  • api: revoke held GitLab Owner tokens in one transaction, and before erasure#1253b60f068
  • api: revoke held gitlab owner tokens on org delete, one revoke path with its receipt (96a6543), closes #1210
  • api: revoke the GitHub sign-in token after the account read#6893ca10fb
  • api: roll back a refused PATCH's park of a retired convention#1233c40e5e6
  • api: rotate the orchestrator secret with current and previous values#1099fdb047c
  • api: scan a playbook's conventions; keep plain-save error contracts#328bd76cd3
  • api: schedule the expired auth-token sweep in every environment#12268e40753
  • api: schedule the expired auth-token sweep in every environment#12269268dbe
  • api: scrub departed logins from session JSON paths#1132dc68074
  • api: scrub every agent note the departed user wrote; one result shape#1103962fc23
  • api: serialise detour completion with unlink on the account row#6897cd0152
  • api: serialise the callback's link on the account's lock#6891e42b3d
  • api: serialize a segment mint with a concurrent lineage taint#10340dfefcb
  • api: state what the IP helper assumes and bucket mapped IPv4#11808a4c423
  • api: strip any format suffix in route_path and bucket IPv6 per /64#1171b7f95dc
  • api: take both #1229 reviews: verify restored conventions, snapshot every writere7cb8c2
  • api: take both D3 reviews: follow prose through a local, pin allowlist counts#9168070b4f
  • api: take the #1233 review findings on convention retirement#12334067efd
  • api: take the #1251 review findings and the group project list ruling56d8100
  • api: take the #689 review findings#68955d1f12
  • api: take the transcript-delivery advisory lock through a bind#1034689726b
  • api: test the prepared-statements guard against URL-built configs#124431d4ffa
  • api: test the public-URL boot gate, and toast a refusal after the dialog closes (#1212) (b0dedde), closes #1211
  • api: test the real lineage walk under the lock and note the lock order#1034367d031
  • api: the grade re-score probe loads resource_type for scanned bytes#328c052cb6
  • api: the home-segment backfill never deletes; case-blind prefixes#1132903caeb
  • api: throttle public waitlist signups per IP#117109eaccf
  • api: throttle public waitlist signups per IP and strip any format suffix#1171d18fb8f
  • api: tighten the paste-flow removal tests and comments#1258117f6b8
  • api: unknown branch rules preview as null, and two re-check fixes#12549490176
  • api: unlink social identities on an address move; gate 3 round 1#788eb3d730
  • api: use literal GitLab globs and retain HTTP diagnostics#10463f29f13
  • api: warn on a pre-label mint the sweep cannot resolve by name#1186d197f5f
  • api: write a passed push check once, and bound the mint lock for the head read#10641cb6cef
  • auth: cap magic links and passkey challenges per address in the app#1154c6c98d2
  • auth: cap magic links and passkey challenges per address in the app#11545ab47ef
  • auth: count the login cap per mailbox on an indexed key#115488933ee
  • ci: create the coverage comment when a PR has none yet4b707aa
  • ci: fall back to a new coverage comment instead of --create-if-nonefd88d13
  • ci: find the API coverage comment by its marker instead of --edit-last#12183ded715
  • ci: find the API coverage comment by its marker instead of --edit-last#1218f2816a0
  • cli: accept real subagent ids and type the remaining path ids#1084318f611
  • cli: count a 2xx delivered only for a data envelope#108477080dd
  • cli: give share_update's 422 fixture the envelope the API sendsa01de9a
  • cli: give share_update's 500 fixture the real error envelope tooc58ee17
  • cli: give share_update's error fixtures the envelope the API sendsf47b0e0
  • cli: key vaults by exact recorded host and re-home legacy ones#809722544c
  • cli: key vaults by exact recorded host and re-home legacy ones#80913fa956
  • cli: pass typed ids in the resumed-context test after the develop merge#10341e56477
  • cli: per-conversation, identity-free telemetry-loss reports#11287a4f078
  • cli: redact all buffer failures and pin stop refusals#7626db1ddc
  • cli: refuse pidfile signals without a recorded start time#762677334f
  • cli: refuse pidfile signals without a recorded start time#7622679de9
  • cli: refuse re-homing on an unreadable uid; re-check twins before removal#80959f8f48
  • cli: refuse vault re-homing beside any crewkit process; logout takes twins#80942146cc
  • cli: reset the loss ledger in one critical section; floor stall events#1128c10237f
  • cli: surface discarded telemetry and require accepted in 2xx#10848551353
  • cli: take the gate-3 findings on vault re-homing#8099807452
  • cli: typed, validated ids for every API path segment#108468b1b44
  • cli: typed, validated ids for session, task and save-state path segments#10844db9d08
  • dashboard: claim the catalog fallback only for agents and skills; badge forks Your copy#6483298f94
  • dashboard: clamp the protect request at submit for unreadable rules#1269be86b5b
  • dashboard: clear the GitLab carrier on every callback exit, trim and cap the group#1122588b554
  • dashboard: close the PostHog paths before_send cannot see#1228f6770f0
  • dashboard: contain long artifact names in blueprint generation#1153a62624b
  • dashboard: contain long artifact names in blueprint generation#11535581f15
  • dashboard: hold the AUP publish open in its in-flight test#121758a35d4
  • dashboard: hold the AUP publish open in its in-flight test#1217c17a345
  • dashboard: keep one-time tokens out of analytics pageviews and take review findings#689fd50586
  • dashboard: keep the connect group across the callback; accurate disclosure#1269945762e
  • dashboard: keep the GitLab connect handle and callback code out of URLs#1256dea45d5
  • dashboard: keep the GitLab connect handler free of a throw the React Compiler cannot optimize#1256396a239
  • dashboard: keep the GitLab connect handler free of a throw the React Compiler cannot optimize#12569b05a07
  • dashboard: move the picker-submit spec entry to T6, with its route#125686c4924
  • dashboard: name pushes and force push together in a picker refusal#12557cdc057
  • dashboard: name what Yours' button really does and drop the unverified session claim#648d18e745
  • dashboard: passkey changes refresh the sign-in panel; pin the unlink notice failure#791a1c16c3
  • dashboard: protect social sign-in completion and explain refusals#689d7fa9bb
  • dashboard: read only the detour preview fields the page uses#68973677d7
  • dashboard: scope the Sentry code/state redaction and cover transactions#1256c44a46e
  • dashboard: send the gitlab picker back to a fresh start once its handle is spent (2c43006), closes #1210
  • dashboard: social sign-in dashboard and docs, lane B#68973f15d4
  • dashboard: strip query and fragment from every URL PostHog records#122811fd5f7
  • dashboard: strip query and fragment from every URL PostHog records#1228dba32c9

Performance Improvements

  • api: preload conventions in the grade re-score probe#328cb5fbf0

Code Refactoring

  • api: /simplify pass over the one-click GitLab connect#1210e372f50
  • api: build the resource Scope with the flat effective org#115233a2f3a
  • api: check the GitLab group once per connect purpose and mint PATs through one helper#1210a4c4417
  • api: count the refused hard delete's grants on a plain relation#1060b7a8d2c
  • api: drop the legacy job-credential name branch#1186f42ee28
  • api: drop the needless rollback guard on the GitLab safety CHECKs#1252ab644ee
  • api: drop the redundant integer type guard and a duplicate assertion#1164b1f8fb5
  • api: drop the unobservable refusal guard on the relayed code#689b15b2b1
  • api: fold the social sign-in migrations#6894763dfd
  • api: framework stack bounds live on Resource, shared with for_stacks#328ab466c6
  • api: keep JobMergeRequest's post-commit link re-derivation#1046b558d25
  • api: let pundit_user build the context for a given org#1152c670d42
  • api: let the unique indexes refuse a stale social detour#789f8c8885
  • api: meter artifact analysis batches once per org#500caf5f3d
  • api: name the erasure's artifact set QUALIFYING_ARTIFACTS#1103c41b6a5
  • api: name the Owner-token revoke event by T4's constant#1254f1afd3e
  • api: one list of detour refusal codes#689ae91e1f
  • api: one provider registry and one detour result#689b520fa7
  • api: one provider-name fallback and an inline unlink notice#79148f3235
  • api: one version lookup per snapshot, and cite the pin-serving issue (#1246) (b08dc08), closes #1264
  • api: plainer lapsed-subscription check; drop an unreachable test#11798afcfea
  • api: read push_checked_sha under the job's row lock alone#10657f7cfe6
  • api: read the adaptation cap through BillingPlan#limit#38467e2b2e
  • api: read the install label from per-environment credentials#118633bc2a2
  • api: remove the paste-a-token GitLab connect flow#12588bee255
  • api: remove the paste-a-token GitLab connect flow#1258c1a927a
  • api: retire artifact collection content after consumer audit#500990abf1
  • api: share one GitLab list pager and pin the group-rule ruling#1163371fb23
  • api: share the browser sign-in leg and the sign-up follow-up#788d709398
  • api: simplify the GitLab spec before its develop merge#10467c58bb5
  • api: stack constants beside the model's others; #444 comment names its bound#32864977cb
  • cli: trim the vault re-homing module#809c1be560
  • dashboard: drop the detour notice's fragment guard, which guarded nothing#789f9b0417
  • dashboard: inline the shared social refusal copy#6891d10f69
  • dashboard: name the trimmed GitLab group instead of reassigning the parameter#112251ed1b5
  • dashboard: one hook for a wizard's convention check#3281bb2afc
  • dashboard: one loading card and one copy of the shared social refusals#789a29b800
  • dashboard: remove the paste-a-token GitLab connect form#12580ce4d4f
  • dashboard: share activity feed and filter labels#11760ba9169
  • dashboard: type pickedProjects from the submit request#126968a216e

0.7.6

Compare

Features

  • api: catch "disregard previous …" without a quantifier in the injection scan (#463) (3271d84), closes #462
  • api: catch "disregard previous" at high and narrow two rows against prose (#463) (e5b6377), closes #462
  • api: count-only mode for the residency purge that reports what it would destroy#694f337b43
  • api: count-only rake task listing active_storage_blobs whose object is gone (#803) (78c31a1), closes #467
  • api: let org admins set the embedding egress opt-out#47467d155f
  • api: let org admins set the embedding egress opt-out (#474) (1feb108), closes #466 #473 #437
  • api: mark the attribution pre-fix window with a constant meta.attribution_since (#612) (8a7de4a), closes #615 #645
  • api: per-source generally_available under the global marketplace GA flag#646c9e1c1b
  • api: per-source generally_available under the global marketplace GA flag (#646) (0dfed8a), closes #158 #640
  • api: port the prompt-injection patterns into the static security scan#463c37281d
  • api: port the prompt-injection patterns into the static security scan (#463) (e03274a), closes #462
  • api: record the version a subagent ran on, bucket nil as unattributed#612158e458
  • api: record the version a subagent ran on, bucket nil as unattributed (#612) (417b3db), closes #615 #645
  • api: register this repo's colliding .claude/ resources as project-tier Resources#3352fe35e9
  • api: register this repo's colliding .claude/ resources as project-tier Resources (#335) (a8440e6), closes #378 #158
  • api: serve a project's vocabulary terms to the Notetaker#5266f2ccef
  • api: serve a project's vocabulary terms to the Notetaker#526668f669
  • api: store how a resource adoption originated instead of inferring it (#651) (860159d), closes #258
  • ci: lift the mutation-check harness into scripts/ with four verdicts and three runners#77635aa573
  • ci: lift the mutation-check harness into scripts/ with four verdicts and three runners (#776) (9534ba7), closes #752 #586
  • cli: add --sensitive and --no-llm-gateway to crewkit blueprint (#822) (7bc48f2), closes #805
  • cli: give status an injectable runtime dir and config dir through the _in seam#830ec31719
  • cli: merge bound-project vocabulary ahead of the user list in the one resolver (#526) (a47f7ef), closes #529
  • cli: read the org's telemetry settings for a session-less command (#822) (0fd7f9c), closes #805
  • cli: run the LLM gateway for the life of a crewkit blueprint command, uploads off (#822) (ce05448), closes #805
  • cli: send the served resource version hash with subagent stats (#612) (638252d), closes #615 #645
  • dashboard: give the AUP consent dialog a Decline path (#518) (af34f8b), closes #370 #372
  • dashboard: regenerate the API types for the project vocabulary route#5261b036d5
  • dashboard: show an external source's last sync error and retry state#6408c8449a
  • dashboard: tell the user to remove the Slack app when the revoke was not confirmed (#771) (b83dda7), closes #756 #770

Bug Fixes

  • api: attribute invitation declines too, and say what versions.organization_id means (#437) (42b2259), closes #424 #447 #355
  • api: attribute the opt-out flip's version and refuse non-scalar values (#474) (1ba743d), closes #466 #473 #437
  • api: cite Law 25 s. 27/28.1 and drop the stale skeleton comments (#518) (e4b6dc6), closes #370
  • api: clear cloud-job diffs, patches and logs under the session-content retention term#51949cc33e
  • api: clear cloud-job diffs, patches and logs under the session-content retention term (#519) (f03242a), closes #513 #493 #447
  • api: close the bulk envelope's error tokens and survive one item's raise#650219e056
  • api: close the bulk envelope's error tokens and survive one item's raise (#650) (4c160df), closes #647
  • api: compare whodunnit as an integer so privilege-escalation detection can fire (#437) (6a5b0c5), closes #424 #447 #355
  • api: count only the embedding chunks the purge retracts, stop materialising version ids#6949403951
  • api: deliver the unconfirmed-revoke event to Sentry and allowlist Slack's error detail#77192e28dd
  • api: document only the statuses the import and convention-override routes emit#8546dd0057
  • api: document the seven CLI-consumed routes and the object error envelope in the spec#8544e63044
  • api: document the seven CLI-consumed routes and the object error envelope in the spec (#854) (229b27f), closes #816 #375
  • api: drop attribution_since meta and bound every version-hash writer#6129a1ee33
  • api: drop the inert trailing-dot guard from the TXT lookup#7670c3572d
  • api: encrypt session_shares.share_token at rest, deterministic for lookups#434505ba47
  • api: encrypt session_shares.share_token at rest, deterministic for lookups (#434) (9e750ee), closes #433 #356 #447
  • api: exempt agent_job ingest from the AUP gate — consent is at the door#440695b610
  • api: exempt agent_job ingest from the AUP gate — consent is at the door (#440) (51c6bc7), closes #370 #373 #478
  • api: fold the PR-write test into its existing peer and sharpen #800's comments (1214238), closes #514
  • api: four defects the first executed run found in the slug guard and bulk item (#649) (bb89887), closes #650 #651
  • api: gate the plane token mints on AUP consent and put them under the sentinel#478f386464
  • api: gate the plane token mints on AUP consent and put them under the sentinel (#478) (7392519), closes #370
  • api: gate the single-listing adopt route on the per-source bit#646db286ba
  • api: keep a per-source dark group out of the slug-holder annotation#6466f9d376
  • api: keep cloud-job diffs, patches and prompts out of PaperTrail versions (#519) (d94ca9e), closes #447
  • api: keep every cloud-job content column out of PaperTrail versions#5194fd2928
  • api: keep the primary key in the origin backfill's batched select (#651) (234e186), closes #650
  • api: key the slug lock per tenant, lock the marketplace batch door, cap ids (#649) (6074833), closes #650 #651
  • api: lock the slug per organization, keep malformed bulk items in request order (#649) (cae867f), closes #650
  • api: make the active integration scope require a token like active? does#5106329dfd
  • api: name no per-source dark holder in the slug guard's 409; count on from lit items#646c126a00
  • api: park budget-exhausted and deterministic parser refusals instead of retrying#6400266e1a
  • api: populate PaperTrail whodunnit from the API's auth, drop IP/user-agent#43713a1157
  • api: populate PaperTrail whodunnit from the API's auth, drop IP/user-agent (#437) (2e991f4), closes #424 #447 #355
  • api: preload the agent directory's projects on the plane policy pull#6769f105a4
  • api: preload the agent directory's projects on the plane policy pull#676d878da1
  • api: purge SaveState versions with no created_at, and close the purge's public door#69405ee068
  • api: purge SaveState versions with no created_at, and close the purge's public door#694e5f4aa7
  • api: queue the re-scan a failed platform publish refuses on, and log the refusal (#462) (7e8627b), closes #436 #422 #463
  • api: record the account deletion and export routes as consent-exempt rights#51838420d3
  • api: record the account deletion and export routes as consent-exempt rights (#518) (0f866ef), closes #370
  • api: record the delivered-slug advisory lock as a Brakeman false positive#6507dfd22e
  • api: refuse a same-slug adoption at write time with 409 slug_taken (#649) (0ec563e), closes #641 #650
  • api: refuse the ciphertext envelope as a share token (#434) (debeddd), closes #433 #356 #447
  • api: refuse the unattributed bucket as a comparison arm at the door#61239bb2ae
  • api: refuse to publish a platform resource whose LLM scan failed or never ran#4629a78538
  • api: refuse to publish a platform resource whose LLM scan failed or never ran (#462) (aed261b), closes #436 #422 #463
  • api: renumber the generally_available migration after the #651 origin migration#646a5403aa
  • api: report whether Slack confirmed the auth.revoke on disconnect#771bea184b
  • api: report whether Slack confirmed the auth.revoke on disconnect#77131c0d8a
  • api: rescue only the storage call and pin the orphan task's no-write contract#803c736343
  • api: rescue only the storage call and pin the orphan task's no-write contract#8039efb8ae
  • api: resolve the domain-verification TXT name as absolute#7676e38c90
  • api: resolve the domain-verification TXT name as absolute#76757f7dbf
  • api: retry a failed LLM security leg instead of leaving the row refused (#462) (c9cf61e), closes #422
  • api: retry only classified transient failures, and select them through one scope#64019b6b10
  • api: retry transient external-source sync failures after a backoff#640c0f3626
  • api: retry transient external-source sync failures after a backoff (#640) (a78d4e4), closes #646
  • api: revoke the GitHub token upstream when a connection or integration is disconnected#799b196560
  • api: run batch_adopt's per-source gate inside the item guard#64664af0c1
  • api: say what the dark-marketplace holder withholds, and gate it in one place#650052f57b
  • api: scan registered local resources and share the frontmatter parser#3358016e96
  • api: scope, bound and sanitize the derived project vocabulary#526ba3c4f9
  • api: share the log-capture and residency test helpers behind #804's gates (a46affe), closes #475
  • api: stamp whodunnit on the optional-auth path and the org id on every audited write (#437) (5279455), closes #424 #447 #355
  • api: stop the orchestrator worker setting a cloud job's PR fields#800c5c6586
  • api: stop the orchestrator worker setting a cloud job's PR fields (#800) (58abac1), closes #514
  • api: take the gate-3 findings on the per-source GA bit#6466ab271a
  • api: withdraw the gitlab and bitbucket connect flows until they are real#510979c670
  • api: withdraw the gitlab and bitbucket connect flows until they are real (#510) (8901043), closes #509
  • api: withhold artifact context from Blueprint and agent-reply prompts for resident orgs#80432425d2
  • api: withhold artifact context from Blueprint and agent-reply prompts for resident orgs (#804) (11fef0e), closes #475
  • api: zero an empty aggregate scope and give tests real version hashes#612b7ebbcf
  • ci: close four mutation-check instrument gaps found in review#7769e21b54
  • ci: kill the runner's process group on timeout and name the backup on interrupt#7760e4526d
  • ci: make the process-group case fail under a reverted group kill#776850bddc
  • cli: budget the vocabulary fetch at its own timeout and test the non-200 path#5267dece32
  • cli: check the error envelope rule before the free-form early return#81627c0d48
  • cli: count recovery outcomes, not decisions, and pin the recovery entry points#639b7a5d72
  • cli: decide a bounded run's timeout on the kill, not on a clock that races it#82388ca608
  • cli: decide a bounded run's timeout on the kill, not on a clock that races it#8235bdcda0
  • cli: escape bidi controls in refusal paths too#778fac3ca2
  • cli: fail closed on the orphan re-read and count sidecars apart (#811) (dafea1b), closes #775
  • cli: fold #774's review — fd-based repair, symlink-refusing reader, one marker seam (0a80f8d), closes #752
  • cli: guard config::cache_dir_opt like the config and data doors#828fbdc13f
  • cli: guard config::cache_dir_opt like the config and data doors (#828) (47d7b2c), closes #808
  • cli: isolate every cli/tests binary from the real HOME and pin it with a sentinel (#828) (7ec68d8), closes #808
  • cli: keep the sidebar's Remote Control hint silent where it would clip the command#7720d6545f
  • cli: log the runtime-dir listing refusal and record an unreadable subdir in the digest#8303e91940
  • cli: make the bound-probe control block instead of racing the binary (#823) (87d3192), closes #830
  • cli: make the HOME-isolation sentinel see every spelling of a test binary spawn (#828) (c8c9d2f), closes #808
  • cli: name a refused cache dir in status and escape control bytes in refusals#77854c2c27
  • cli: pin the cache guard's relocation half and name a refused cache dir#778a1b74fd
  • cli: pin the exempt door's caller list and refuse it an unrelocated HOME (#808) (3978676), closes #781 #692
  • cli: reap Notetaker account sidecars whose capture never wrote a transcript#811600c2d8
  • cli: reap Notetaker account sidecars whose capture never wrote a transcript (#811) (b288e59), closes #775
  • cli: refuse a credential dir under a devcontainer, .envrc or .vscode tree, not only .git#778f12da75
  • cli: refuse a credential dir under a devcontainer, .envrc or .vscode tree, not only .git#778e395a71
  • cli: refuse the real config directory from a test binary#808d74942c
  • cli: refuse the real config directory from a test binary (#808) (fe3d931), closes #781 #692
  • cli: reopen audio legs with the machine lock released, and log the decision#639171d223
  • cli: reopen audio legs with the machine lock released, and log the decision#639cd54469
  • cli: repair an owner-read-stripped dir before the fd checks, label the open failure (#774) (57583af), closes #752
  • cli: require an explicit directory at every config-dir door in a test binary (#808) (e5e5481), closes #781
  • cli: route crewkit blueprint's claude children through the LLM gateway#822ab62410
  • cli: route crewkit blueprint's claude children through the LLM gateway (#822) (e32b913), closes #805
  • cli: route the observer's own claude children through the LLM gateway#805fb5acc0
  • cli: route the observer's own claude children through the LLM gateway (#805) (9736fa3), closes #364
  • cli: show the Remote Control state in the TUI sidebar, off the same gateway value#772fdc0b33
  • cli: show the Remote Control state in the TUI sidebar, off the same gateway value (#772) (bc3623c), closes #533
  • cli: survive a lost runtime-dir create race; drive the LSP marker test#774a29bdb2
  • cli: survive a lost runtime-dir create race; drive the LSP marker test (#774) (38d4860), closes #752
  • cli: take the gate-3 findings on the blueprint gateway seam (#822) (fdd39a1), closes #805
  • cli: take the gate-3 findings on the cache-dir door's in-suite control (#828) (01d1c69), closes #808
  • cli: take the gate-3 findings on the fixture guard#8165f8b2da
  • cli: take the gate-3 findings on the gateway child routing (#805) (fab92d2), closes #364
  • dashboard: decline the AUP in one navigation and pin the exemption (#518) (a5b20f7), closes #370
  • dashboard: do not call a paused source retrying#640a1de4b0
  • dashboard: explain a user-level GitHub failure on the Runs page#798eb7c77c
  • dashboard: explain a user-level GitHub failure on the Runs page#7985ce04be
  • dashboard: keep a connected legacy provider visible so it can be disconnected#5109e5b2c2
  • dashboard: keep connect disabled past the redirect bound and clear it on pagehide#520a27586c
  • dashboard: label the unattributed bucket instead of rendering it as a hash#6127c80ec5
  • dashboard: list only the git providers that can be connected#510ce2c63d
  • dashboard: match the API GitHub-connection error exactly before offering support#798acabd7d
  • dashboard: name the cloud-job columns the retention term clears#5196a20daf
  • dashboard: pin the integrations outline and bound the connect spinner#520b9d8734
  • dashboard: pin the integrations outline and bound the connect spinner (#520) (a1b8f19), closes #459
  • dashboard: read slack_revoked as required and say when no token was held#77112503ea
  • dashboard: regenerate api types for unavailable bulk-item token after the #875 rebase#6466e5d6bf
  • dashboard: regenerate the API types after the vocabulary description change#52618ad94b
  • dashboard: show nothing for a paused source's error summary#6407552ea4
  • dashboard: state the retention term for cloud-job content on the integrations page (#519) (6166b52), closes #513
  • dashboard: wrap the last bare logout callback and release the decline lock#518e2bee8b
  • sessions: match a multipart field on its Content-Disposition name, pin the boundary#900d9d7806
  • sessions: match a multipart field on its Content-Disposition name, refuse duplicates#90026dd209
  • sessions: pin the multipart boundary and refuse ambiguous parts#900f07e27d

Code Refactoring

  • api: normalise the share token once and share the test helper#434c7267bd
  • api: pin the NULL provenance stamp and share the agent_job test helpers#440c4944c9
  • api: table the residency purge's steps so a count can read the same relations#694c248bc8
  • ci: drop the redundant OSError subclasses from the group reaper#776d5f8016
  • cli: one telling of the #808 incident, and a for_test constructor (#808) (003c62f), closes #781
  • cli: read a path in both spellings through one helper#77897b94d4
  • dashboard: rename transcript-view to transcript-presentation#801d854379
  • dashboard: rename transcript-view to transcript-presentation (#801) (b6c25da), closes #457
  • sessions: bind the form-data kind once and fold the raw multipart helper#9007c09889

0.7.5

Compare

Features

  • agents: add the code-simplifier agent for the implement-queue reduce step3e3a214
  • api: a sourced skill may share its name with a first-party one, one name per library83ee0b5
  • api: accept sales inquiries from the public site573b972
  • api: back-fill the offboarding decommissions owed by already-departed orgsb543ff3
  • api: bulk on/off for first-party adoptions and project exclusions with a durable opt-outf3904ad
  • api: catalog read with per-item adoption state at org and project scope656e311
  • api: detect first-seen wire model ids priced by a family prefix row#625f940b84
  • api: every skill-source sync is a recorded run with per-path entries9539877
  • api: offboarding issues the plane decommission that destroys a departed org's credentials1fc8f82
  • api: offboarding issues the plane decommission, from a DB trigger (045e161), closes #681
  • api: one live decommission per side as a table property (826f116), closes #681
  • api: org_offboarded is a DECOMMISSION-ONLY reason on both sides (7c29438), closes #681
  • api: org-wide synced-but-unused skill report#586105b8c4
  • api: publish data_plane.decommission_issued after an org soft deleteeed7051
  • api: read one marketplace adoption by id5e1d420
  • api: refuse analysis-worker readiness unless it connects as its own role#6544f4f1e0
  • api: show which library a platform skill belongs to522fee1
  • api: source-wide adopt and unadopt for marketplace skills, bulk throttle89e6b7f
  • api: sync run ledger for external skill sources, with paused-respecting outcomes51063a0
  • api: the offboarding decommission's audit event and its backfillcca81b3
  • api: the skill parser reports every skip as data and types its errors0911316
  • auth: account email change with confirmation and an old-address lock leverf14291e
  • auth: account email change with confirmation and an old-address lock lever (62846cf), closes #699
  • auth: claim an existing account through SCIM under a verified domaindd1fb04
  • auth: claim an existing account through SCIM under a verified domain (ed59b91), closes #700
  • auth: make the manager stamp lifecycle true end to end1f08cd6
  • auth: make the manager stamp lifecycle true end to end (368222f), closes #697
  • auth: offer discoverable passkeys before email entry68a3a13
  • auth: record every manager-stamp release as a security event5ef6608
  • auth: restrict OIDC providers to a hosted domain and mint the asserted auth_time9bbd177
  • auth: restrict OIDC providers to a hosted domain and mint the asserted auth_time (f6c8d86), closes #698
  • cli: a second login adds an Account; switch, scoped logout, token label (bd9c3db), closes #711
  • cli: auth status --verify, the live per-Account check5d82b96
  • cli: auth status --verify, the live per-Account check (8342cf7), closes #713
  • cli: directory rules and the ask-once Account picker851512a
  • cli: directory rules, auth use, and status naming this directory's Account (da35f2a), closes #712
  • cli: hand the MCP server and the statusline the session's Account (2286c97), closes #710
  • cli: let a plain-http deployment opt in to cleartext, loudly (deca0d3), closes #754
  • cli: multi-account support — per-Account vaults, registry, switch and scoped logout1c7e2ff
  • cli: per-Account vaults and the secretless Account registry (18ebf8e), closes #708
  • cli: pin the Notetaker's Account at Start and pass it at Uploadd81ba01
  • cli: pin the Notetaker's Account at Start and pass it at Upload (83a48a9), closes #701
  • cli: resolve one Account per process, refuse by name, split login (c8ba307), closes #706
  • cli: the ask-once Account picker and the off-terminal Default (e4c4736), closes #714
  • cli: the tap-scoping mechanism, dormant, and no PID in a rendered error923e242
  • dashboard: admin skills show which library a skill belongs toccb7414
  • dashboard: align the app logo with the public-site identity37b93a0
  • dashboard: catalog client, hooks and MSW handlers for the skills catalog7a1aa6d
  • dashboard: give the public site a truthful, crawlable surface0c46e75
  • dashboard: let the hero email field carry the early-access requestc3fa446
  • dashboard: make the theme switcher obvious in the header and in Settings7eb3d92
  • dashboard: public site — fixes, Lighthouse ≥ 90 and SEO/AI-engine presence6fff577
  • dashboard: publish the integration pages, the changelog and the docs metadata1341c46
  • dashboard: rebuild /integrations in the marketplace idiomc430d09
  • dashboard: replace the sales mailto with an in-place inquiry dialogf92ccab
  • dashboard: Skills & agents at project scope, the catalog's project columna33c5e0
  • dashboard: Skills & agents catalog replaces the marketplace and adopted pages76125eb
  • sessions: record which rung selected the Account a session runs under0790ca3
  • sessions: record which rung selected the Account a session runs under (fcb5b6c), closes #707
  • site: harmonize 404 and shared conversation surfaces346acba
  • site: public-site redesign, aligned app logo and Talk to Sales inquiry flow1be6c03
  • site: unify public auth and onboarding presentation8fb7224

Bug Fixes

  • api: a library the column names but nothing holds is an error, not a null1d8d6a2
  • api: a named pin the existing adoption lacks is refused, not ignored6805388
  • api: a refusal must not contradict itself, nor name a role that does not exist#6548c32462
  • api: a remedy must not break the plane to satisfy the check#654af10edb
  • api: a removed skill source keeps naming the skills imported from it9e7dc68
  • api: a revive keeps the original adopteraa4145d
  • api: a skill whose source was soft-deleted is no longer usablef42fa48
  • api: a sync run's verdict is written under the row lock and never stamped over a live sync82e422f
  • api: adopt's 422 names the pin it refuses, not a bare tokenccffd20
  • api: ask the worker's PRIVILEGES, not its role attributes#65426b1de7
  • api: assert the worker's role by MEMBERSHIP, not identity#6544649f8d
  • api: bound and order the first-seen model detector's reads#6253dbd859
  • api: close the offboarding decommission follow-ups#780b524ac9
  • api: close the un-adopt oracle and stop rendering those rows inverted#5869e6c2d4
  • api: complete the race-control reduction left half-applied#780464a8ae
  • api: confine a losing decommission insert to its own savepoint (83a504b), closes #681
  • api: confine SecurityEventService audit writes to their own savepoint#7822786719
  • api: confine the audit insert to its own savepoint (a602010), closes #782
  • api: custody must ask what the connection can REACH, not what is in force#654c3e4c41
  • api: derive the TXT record name from one source0596bd5
  • api: derive the TXT record name from one source (1f50831), closes #745
  • api: discharge a WRITTEN-OFF offboarding row, and share the revoke verb#7801ac5927
  • api: drop the ActiveRecord tracing span so no SQL page reaches Sentry#65898cb94c
  • api: filter the client secret on the JSON path Rails uses, and type jwks_keys#787c671bfc
  • api: import skills nested under category folders from GitHub sources4dab56f
  • api: keep a quoted value out of a SQL span's relation#658cce801b
  • api: normalize organization_domains.domain on write, with an audited backfill19cb18e
  • api: normalize organization_domains.domain on write, with an audited backfill (7888a75), closes #748
  • api: one authority for the opt-out marker, and anomalies that name the org2610f30
  • api: one failing skill no longer takes a GitHub skill source down388a024
  • api: open notify's savepoint only inside a caller's transaction#782dd94b06
  • api: preserve session summaries when closing without a final summary0729cb3
  • api: re-assert installation liveness and name an empty tokens file01bdf03
  • api: refuse destroying an Essential opt-out marker on a draft resource5e05f99
  • api: say what the un-adopt row actually knows, and make its diagnostic runnable#586ec621f0
  • api: say what the un-adopt row actually knows, and make its diagnostic runnable#5869ca5454
  • api: scope the data-plane installation index through Pundit#6161c054db
  • api: single skill adopt revives a removed row like bulk does633749d
  • api: stop refusing the hardened worker deployment#654cad1e08
  • api: stop the model detector starving its own alerts#625c8ab418
  • api: sync-run ledger keeps the parser's skips ahead of the 200-entry bounddd7ccc6
  • api: sync-run ledger keeps upstream text and raw errors out of stored rowscec9fee
  • api: take the adversarial review — scan on revive, pin the cap boundary3b34d2d
  • api: take the gate-3 findings on the offboarding backfillb31a77c
  • api: take the stage A1 review — one serving predicate, pinned ordering, shared user summary1863d34
  • api: take the stage A2 review — bulk never aborts, marker-gated adopted_at, project exclusion service4ad0211
  • api: take the stage A3 review — capped source expansion, mode conflicts, honest authz paths04a08a0
  • api: the BYPASSRLS remedy must not alter a shared role#65430d50da
  • api: the catalog preloads the source it now asks every sourced row aboutcc42b14
  • auth: bound the SAML AuthnInstant like the OIDC auth_timeff7c8b8
  • auth: claim the manager stamp under the membership seam's own lock (d432721), closes #697
  • auth: close the auth_time bound at both ends and pin the SAML skew1aece8a
  • auth: keep the email-change tokens out of analytics, and make the lever honest223c3e5
  • auth: preserve router history state on the scrub, and lock even when the restore losesd171536
  • auth: require a live membership before the manager stamp is claimed (1ea775f), closes #697
  • auth: take the residency-flip lock when a membership ENDS, not only when it starts (8b5cc1c), closes #697
  • cli: a cleartext login refusal exits rather than degrading the launch (#781) (d882226), closes #752
  • cli: a cloud launch no longer greys Start with "Preparing the model…"d39342f
  • cli: a label names one Account per machine#752672f3c3
  • cli: a refused control connect is Silent, and telemetry flushes before suspend659f69e
  • cli: an Account's credential goes only to the host it recorded, over the scheme it recorded17e5b90
  • cli: bound the BSD saturation loop in TIME, not only in countebeb42d
  • cli: bound the credential-directory walk to this user's own space#752fc15ad9
  • cli: bound the observer control round-trip so stop cannot hang#6868dfccce
  • cli: canonicalise before judging, and pin what the command prints#752c589718
  • cli: canonicalise CREWKIT_API_URL at one seam, and stop echoing it (d7b167b), closes #784 #785
  • cli: canonicalise CREWKIT_API_URL at one seam, and stop echoing it (#784, #785)7392b8b
  • cli: carry the credential-directory refusal onto the launch path#7525619a6b
  • cli: carry the credential-directory refusal onto the launch path#7528016717
  • cli: classify a refused control connect as Silent on every platform (99673ec), closes #720
  • cli: close the pin's two-read window and drain the label-only pins (#775) (76eaa92), closes #752
  • cli: correct the Remote Control notice's docs, scope and width#533feb1699
  • cli: correct the Remote Control notice's docs, scope and width#53348d384c
  • cli: describe a connection failure's base URL instead of echoing it (#785) (926e44b), closes #784
  • cli: do not spend the cleartext warning on a request that is refused#754a9ac864
  • cli: file a legacy vault only from a call made with its own credential (0b730d8), closes #753
  • cli: flush buffered telemetry before the observer suspends itself (7536bdd), closes #687
  • cli: fold the probe's refusal and canonicalisation into one seam#75258e3b4a
  • cli: gate-3 findings — every login adds an Account, and nothing destroys on a guess (b072bf3), closes #711
  • cli: guarantee the terminal restore, and bound the log when a stop is discarded (e432b17), closes #683
  • cli: guard the credential directory by where it IS, not where we run#752d4f19a8
  • cli: judge the cleartext host before the entry lookup, not after (#781) (9f9833a), closes #752
  • cli: keep the registry secretless and quote the real --verify wait#7520a411be
  • cli: locate the config dir instead of rebuilding it in account testscdcad1a
  • cli: log why an unusable CREWKIT_API_URL is refused (#784) (ac9e62e), closes #785
  • cli: make job control and its test harness report their own failures (10f22be), closes #683
  • cli: never hand the shell back a raw terminal, and never spin on a discarded stop03a7e3c
  • cli: one failed cloud request no longer costs the notetaker a whole window2ffbe70
  • cli: pass the API URL where there is none to give, and keep the fragment checks (#785) (6f108a6), closes #784
  • cli: pin a Notetaker meeting to an Account's identity, not its label#7752d038f0
  • cli: pin a Notetaker meeting to an Account's identity, not its label (#775) (42ae3f1), closes #752
  • cli: pin CREWKIT_ALLOW_CLEARTEXT to the deployments it names#754da3b1ec
  • cli: prove the full-backlog precondition with each platform's own signal11e9c4b
  • cli: re-validate before calling a silent observer running, bound the drain5428ca9
  • cli: reach a stopped observer with SIGCONT, and bound the connect1e006f4
  • cli: reach a stopped observer with SIGCONT, and bound the connect (30c6273), closes #685
  • cli: record each Account's deployment URL and report --verify progress#7522012635
  • cli: recovery no longer moves a spared-headset microphone onto the headset#639d707cc1
  • cli: redact the deployment URL at every site that prints it#752f0db6b0
  • cli: refuse /home and /Users as Directory rule prefixes#752febc57d
  • cli: refuse a cleartext downgrade of an Account's own deployment8f72fd8
  • cli: refuse a credential directory the repository chose#7526450865
  • cli: refuse a non-UTF-8 API URL and canonicalise the web URL (#784) (0eca5b9), closes #785
  • cli: refuse a Start the CLI could not confirm, and pin the token's holder (#775) (2cf18a3), closes #752
  • cli: refuse an offsite cleartext login before the first request leaves#781b90f6de
  • cli: refuse an offsite cleartext login before the first request leaves (#781) (37af18d), closes #752
  • cli: refuse to send an Account's credential to a host it did not record (6908569), closes #754
  • cli: register the legacy vault lazily; auth status stops clearing (ec91f53), closes #709
  • cli: say what is wrong when the scheme, not the host, is the problem3493bff
  • cli: say why Remote Control is missing when the gateway runs#5334c1e18c
  • cli: send SIGTERM before SIGCONT at both sidecar stop paths1a74bc4
  • cli: send SIGTERM before SIGCONT at both sidecar stop paths (85d9dbf), closes #721
  • cli: stop the auth tests logging the developer out (#808) (d2a47bb), closes #752 #781
  • cli: suspend the observer when claude stops, instead of spinning (40c11c6), closes #684
  • cli: suspend the pair when claude stops, instead of hanging (a3b09e6), closes #683 #682
  • cli: the health log says WHICH microphone outcome fired7cbf30a
  • cli: the Model menu is "one of" — the cloud row and the local models are alternatives75f25cd
  • cli: the notetaker probes its microphone at Start and falls through to a live input3703421
  • cli: the notetaker retry test no longer races the macOS runnerd2510d0
  • cli: the notetaker's two streams share one clock, so lines interleave as spoken22f0d03
  • cli: whoami never removes a credential#75272f2fe1
  • cli: write the Account-pin marker on the migration path too (#775) (ecac80a), closes #752
  • dashboard: clear the copy-confirmation timers in install-tabs002c212
  • dashboard: clear the copy-confirmation timers in install-tabs (3e3a022), closes #729
  • dashboard: clear the React Doctor errors CI gates on the branch diff67419b5
  • dashboard: de-flake the footer navigation test against smooth scrollinge607aa1
  • dashboard: don't beat the versions card in beside a catalog errore939f99
  • dashboard: keep the beta flag prerenderable when the build has no APIb362fff
  • dashboard: omit the Turbopack-only cssChunking under Storybook18b0f26
  • dashboard: reconcile the performance lanes on the public surfacef63845f
  • dashboard: take the gate-3 review on the skills catalog and its project column1adbbb3
  • dashboard: the SCIM rotation dialog promised 24 hours the code gives as a ceiling082c800
  • dashboard: undo a half-written project turn-off, and drop two fillerscf73f6a
  • sessions: an artifact erasure cancels the queued reply it would have sent#6723eb1f46
  • sessions: bound the poll interval and pin the current_term caller set#656773d014
  • sessions: kill the surviving mutant at the statement layer#672d2a318e
  • sessions: name the residual composer race the status clause does not close#6724903191
  • sessions: pin the reply egress terms and meter a delivered call at a floor#6557523c64
  • sessions: split the outbox erasure by status, keeping the delivery record#6722a83565
  • sessions: take the gate-3 findings on the expired-manifest veto#65645ec124
  • sessions: take the gate-3 findings on the outbox erasure split#67201461d7
  • sessions: veto agent replies on an expired policy manifest#656aa4c6bf

Performance Improvements

  • api: apply a Kind 1 session page in one bound statement#660772265d
  • api: apply a Kind 2 period page in one bound statement per chunk#6599072510
  • cli: don't preload the local weights when the cloud engine is chosend49c53c
  • dashboard: drive the public-site motion from CSS instead of JavaScript307f820
  • dashboard: hoist the deferred Sentry and Lenis imports out of the componentscea3e91
  • dashboard: keep the marketing routes light on first paintab39ca9
  • dashboard: put the common performance floor under every route244f232
  • dashboard: serve the login, shared and docs LCP from the prerendered shell51fad42
  • dashboard: validate the public forms without a form libraryba07504

Code Refactoring

  • api: delete the dead #reason, and lead every refusal with its action#654c2e3d9d
  • api: make the security event's organization explicit, never guessede0636fa
  • api: make the security event's organization explicit, never guessedfda9b4b
  • api: one resolution loop in FirstPartyGroups, one shared bulk itemdaa29d7
  • api: re-home the orphaned egress-vetoes doc block#617eab834e
  • api: share the rollup receiver's query counter, cost mapping and id normalisation#657ea58971
  • api: the destroy refusal reads the Essentials relation, minus publicationc32b6e7
  • api: validate OIDC tokens against a configuration, not a row#787c7e08ea
  • api: validate OIDC tokens against a configuration, not a row#7875a3b682
  • api: write one ingest-receipt page per arm instead of one upsert per subject#6586bd51e1
  • cli: drop ConnectionFailed's base URL so it cannot carry one (#785) (43df13b), closes #784
  • cli: make the child guard the single owner of child-state observationc926d66
  • cli: name the job-control decisions apart from the methods that delegate to them (c53917b), closes #683
  • cli: split the job-control outcome that merged an absence with a failure (6e93e62), closes #683
  • dashboard: take the public-site theme out of the URL and prerender the pagesadf2d0a
  • sessions: correct the rung guard's justification and dedupe its pinsec53c18
  • sessions: delete the org-level credential purge nothing called#6541c3de07

0.7.4

Compare

Bug Fixes

  • cli: the live transcript tails instead of jumping to the top7cd81af

0.7.3

Compare

Bug Fixes

  • api: accept the released Notetaker's capture id spelling#53050e6cae
  • api: canonicalize the capture id before any reader, for every locus#530ce7cabc
  • api: no-store on the token body, and prove the mint refusals over HTTP#5308ad3354
  • api: the legacy-spelling flag rides on refusals too#5302fa5dc7
  • cli: notetaker sends the capture id the mint allowlists#530311823f
  • cli: the notetaker's cloud option says "Cloud", not the vendor49c096a

0.7.2

Compare

Features

  • api: add ElevenlabsTokenService for server-minted single-use Scribe tokens#530812f218
  • api: add the cloud transcription mint ledger with advisory-locked daily caps#530724e9ec
  • api: add the cloud transcription org sub-grant under local capture#530bf8786d
  • api: add the cloud transcription token mint endpoint#530bb60ff2
  • api: cloud transcription grant, ledger, token mint and upload controls#5302f2e03b
  • api: control off-device transcripts at upload and expose the cloud capability#5301f241f9
  • api: revoking local capture revokes the cloud transcription sub-grant#5303929461
  • auth: bind SCIM tokens to an identity provider for provisioning (#588 3b)2b95424
  • auth: name the provider and organization in the SSO pending blob for the consent page (#588 1g)3e8ed09
  • auth: owner endpoints to mint, rotate and revoke SCIM tokens and to write group-role mappings (#588 3e api)0a600b6
  • auth: SAML 2.0 login behind the SSO adapter seam, with certificate lifecycle and SP metadata (#588 stage 2)6126336
  • auth: SAML adapter with the seven assertion checks behind the adapter seam (#588 2b)e9c9d58
  • auth: SAML certificate overlap and assertion replay ledger (#588 2a)0e8bff6
  • auth: SAML metadata refresh with certificate overlap, and certificate admin endpoints (#588 2c)24f2172
  • auth: SCIM /Groups, role mappings with the manager ceiling, PATCH allowlist (#588 3c)edfbd64
  • auth: SCIM /Users with the tokenised filter grammar (#588 3b)15798ce
  • auth: SCIM 2.0 provisioning and deprovisioning with owner-managed tokens and role mappings (#588 stage 3)656c453
  • auth: SCIM deprovisioning with the revocation set, throttle and audit (#588 3d)a394d1e
  • auth: SCIM v2 base — token tenancy and discovery (#588 3a)e8274ff
  • auth: SP metadata endpoint and SAML admin fields (#588 2c api)0de96b9
  • cli: add the cloud disclosure variant seam to the notetaker capture crate#530251e7a6
  • cli: add the ElevenLabs Scribe client and the single-use token pool#53048a121a
  • cli: add the ElevenLabs Scribe engine behind the cloud arm#530eb3f55a
  • cli: add the token-mint transport purpose and the cloud capability tri-state#53091b3f0e
  • cli: ElevenLabs Scribe as a user-selected cloud transcription engine for the Notetaker#53070155ad
  • cli: let the user select the ElevenLabs engine and thread one read through Start#530ed2c100
  • cli: say where the audio goes in the tray and on the upload claim#5308dfed93
  • dashboard: global SSO step-up interceptor and named consent screen (#588 1g)81fc333
  • dashboard: identity-provider settings with domain verification and the enforce-SSO preflight (#588 1g)5d95038
  • dashboard: SAML fields, SP metadata and certificate lifecycle on the provider form (#588 3e)b471797
  • dashboard: SCIM tokens and group-role mappings on the SSO settings page (#588 3e)0ad0ae2
  • dashboard: SCIM tokens, group-role mappings, and SAML certificate lifecycle on the SSO settings page (#588 3e)9862617
  • dashboard: SSO callback and step-up consent pages (#588 1g)61a4f10
  • dashboard: SSO settings, domain verification, enforce-SSO preflight, callback and consent pages (#588 1g)ef2543c

Bug Fixes

  • api: answer 409 when a replay re-stamp finds the capture bound elsewhere#53010cc2d7
  • api: give the cloud transcription events deliberate severities and one guarded publisher#5301dd15d1
  • api: read ElevenLabs credentials with .presence, re-stamp captures on replay, floor Retry-After#530e75e231
  • api: stamp the capture binding atomically with the artifact insert#53076e170c
  • api: stub ElevenLabs credentials in tests; reap the erasure log the race test leaves#530e6fba3b
  • api: take the gate-3 carries on the cloud transcription grant and ledger#530c7900eb
  • api: take the gate-3 carries on the cloud transcription mint endpoint#530e79d16d
  • api: take the stage security audit on cloud transcription#53028f8889
  • auth: accept RelayState on the SAML callback, bind InResponseTo to the signed assertion, and harden the replay sweep (#588 2b)c4ab9f0
  • auth: compare the SAML status code against the full Success URN3b86318
  • auth: expose the certificate id the dashboard retires by (#588 3e)ea63794
  • auth: issue the SSO refresh token as an HttpOnly cookie, not in the fragment (#588 1g)f4f9c98
  • auth: make SCIM group writes atomic, scope /Users on identities so deprovisioned users stay addressable (#588 3b-3d)9d60acc
  • auth: name the certificate refusal codes the dashboard explains (#588 3e)dd0ec8b
  • auth: refuse to rotate a revoked SCIM token and bound the mapping resync (#588 3e api)dc00353
  • auth: serve SP metadata per SAML provider, including before it is enabled (#588 3e)a67aa40
  • cli: claim the locus the server allows, end an exhausted capture once, ask the cloud early#53005bb5a1
  • cli: count only failed mint attempts and check the pool's clock arithmetic#530f44614d
  • cli: follow Claude Code's own transcript path for tokens and keep the 5m/1h cache split3e2f204
  • cli: make prime() the one mint, give the mint its own timeout, present through a trait#5304858863
  • cli: notetaker cloud row says when the server would not answerdceaf9e
  • cli: read the engine into a plan, present after the cloud checks, fail unknown versions loud#5309a76710
  • cli: stamp the hook-bound transcript with its session; harden the Kind-1 and 1h edges9b2425a
  • cli: take the gate-3 carries on the disclosure variant seam#530accb609
  • cli: take the gate-3 findings on the token pool and the ElevenLabs client#5308170d8a
  • cli: wait for the in-flight mint and classify the mint's transport failures#53053f2e3e
  • dashboard: only follow step-up paths under the SSO namespace (#588 1g)6323bf9
  • dashboard: per-provider SP metadata URL, certificate id required, PEM cap, secret cache reset on unmount (#588 3e)6e71ffc
  • dashboard: release the SSO step-up latch when no navigation follows (#588 1g)333b727
  • dashboard: render the login form once on the SSO branch (#588 1g)4a46a01
  • dashboard: satisfy React Doctor on the SSO pages and stop rendering two email fields on /login (#588 1g)13c0ffe
  • dashboard: settle auth before gating device-verify, confirm destructive SSO actions, pin the write-only secret (#588 1g)600cff7
  • sessions: bound the int4 counters on the end, Task, plan and import routes5bd868c
  • sessions: bound the summed token totals and the import route's conversation and Task counts9692c3b
  • sessions: close the status vocabulary, bound client token counts, claim the split only if seen2993ed0
  • sessions: correct conversation tokens and cost on every surface (gateway, transcript, remote control)98820d9
  • sessions: land the plane's Kind-1 token totals and status counts on the conversationf74dd20
  • sessions: make the plane's built-in rate table the Rails export, pinned by a sentineldb855bf
  • sessions: name the field in every client-count 400 and refuse non-count valuesadb3833
  • sessions: pin the rate tables both ways — CI path, regenerate task, Claude 3 aliases2e8bfbd
  • sessions: price a Task's cache writes by its conversation's rule; tally rejection logs09c000d
  • sessions: shape-check an import subagent's duration before to_f84ae314

Code Refactoring

  • api: extract CaptureConsentGate from ProjectTranscriptsController#530e5c8aa8

0.7.1

Compare

Features

  • sessions: model-policy conventions enforced at PreModelSwitch (annotate and confirm)29312ca

0.7.0

Compare

⚠ BREAKING CHANGES

  • cli: `crewkit code -p` / `crewkit sidecar -p` and the orchestrator's cloud-job launcher now start claude with `--permission-mode auto --permission-prompts none` instead of relying on `--dangerously-skip-permissions`. The permission mode stays IN FORCE: deny rules, `permissions.ask` rules and the auto-mode classifier keep deciding, and anything that would still prompt is denied rather than auto-approved. A headless run whose deny rules were previously bypassed will now be stopped by them. Pass `--dangerously-skip-permissions` explicitly to keep the old posture. Requires claude >= 2.1.259; on older binaries both paths keep exactly their previous argv.

Features

  • api: accept disclosure copy version 2026-09-04 ahead of the Notetaker that stamps it6b2e2ea
  • api: accept disclosure copy version 2026-09-04 ahead of the Notetaker that stamps it423a883
  • api: record model switches and resume cost on the session from hook events68e3af5
  • api: serve per-user session tips and project conventions for the spinner48b6efc
  • api: store per-session prompt-cache metrics from the observer (70f2778), closes #583
  • cli: add subagent context file and --permission-prompts to the claude launch seam14693ec
  • cli: capture prompt-cache metrics from the statusline and forward them to the sessionf8483a8
  • cli: fetch the Notetaker's speaker model with the transcription modelfe1e3e5
  • cli: forward PostModelSwitch/PreModelSwitch hooks and SessionStart resume costa9e7b88
  • cli: give the Notetaker's Model menu three plain choices and keep the catalog under All models508236f
  • cli: headless launches deny prompts under auto mode instead of skipping permissionsa214186
  • cli: Notetaker UX round — screenshots, a curated Model menu, labelling by default, a live transcriptcf64476
  • cli: show the Notetaker's transcript as it forms, in the review window, on its own routee4e0b96
  • cli: surface crewkit tips in the Claude Code spinner (ac2e497), closes #585
  • dashboard: show model switches and resume cost on the conversation page8a6cd25
  • sessions: capture prompt-cache metrics from the Claude Code statuslinecd411df
  • sessions: record model switches and resume cost from the new Claude Code hooks1b31903
  • sessions: surface coaching tips and playbook conventions in the Claude Code spinner00fec46

Bug Fixes

  • api: emit cache_metrics on shared sessions, write it without validations, keep the cache tip under the cap (48e6855), closes #583
  • api: make the tip-bearing session filter real, derive the id key, drop the hand-rolled serializer2a01a96
  • api: pin the cache-read invariant and drop the untested 5_1 spelling460dc11
  • api: price Fable 5.1 cache reads at $0.25 and Sonnet 5 at $2/$10 list1c2f9a2
  • api: price Fable 5.1 cache reads at $0.25/Mtok and Sonnet 5 at $2/$10 list7990025
  • api: read resume fields at the event root, scope the switch lock, gate the serializer12b6829
  • cli: bound the tips fetch, share the project config reader, pin no project writesc6a2e73
  • cli: follow a Notetaker model download only to hosts the disclosure namesdecbb63
  • cli: gate-2 carries — one refusal sentence, a named screen-capture risk, a pinned engine261ffcc
  • cli: gate-3 carries — one recording predicate, a leaner live page, an explicit https rule369a0c5
  • cli: keep the headless permission default inside the launch seam and make the orchestrator probe fall back0450d09
  • cli: keep the LSP index in line with disk without the cliente820e43
  • cli: keep the LSP index in line with disk without the clientb4615e0
  • cli: keep the LSP reconcile parser, and drop a subtree in one commit292cc8a
  • cli: let the LSP watcher thread finish, and make subtree drops cheapd57b5c2
  • cli: let the Notetaker's transcript window be screenshotted3ed5e91
  • cli: make the cache-sample round trip fire-and-forget and bounded, split the drop counters1ec5df7
  • cli: refuse to replace a Notetaker bundle this user cannot move, before fetching ite791904
  • cli: refuse to start the Notetaker on a language the model cannot servecc288ed
  • cli: restore the set_context docs and pin the degraded withhold of --permission-prompts95c96bd
  • cli: review nits — the language pairing checked on the weights, a walked sentinel, two docscdefe9a
  • cli: security carries — one language read at Start, a download sentinel, the live predicate2127bd5
  • dashboard: cap the model-switch sequence in the conversation meta rowcb841d1
  • dashboard: correct platform and MCP claims in public copy (fa11d80), closes #587
  • dashboard: stop the status page reporting a major outage when GitHub is unreachable96f6c5a

Code Refactoring

  • cli: drop the SessionStart resume wrapper, the root fields already reach the API479650c

0.6.9

Compare

Features

  • cli: --passive launch mode — observe a session without writing to the checkout or injectinga447450

Bug Fixes

  • api: bound the client-supplied version hashes to the column they land in48a96de
  • cli: attribute a passive session to the resource version it actually loadsb0a2475
  • cli: stamp the stale hash on the chain tier the server actually reads97c6989
  • cli: take the QA findings on the passive stage0af29e0
  • cli: take the S5 gate-3 findings899306e

0.6.8

Compare

Bug Fixes

  • cli: say a failed unsigned copy may be the disk, not the archivea2c7ae1
  • cli: unpack the Notetaker archive from a copy without its signature blocka31e01c
  • cli: unpack the Notetaker archive from a copy without its signature block74a337b

0.6.7

Compare

Features

  • cli: keep the Notetaker in lockstep and update it with crewkit updateb97f475
  • cli: update the installed Notetaker with crewkit updatef68479b
  • dashboard: bring the project sub-pages onto the design grammar7c0adc9
  • dashboard: redesign the Inbox tray as a triage list6ec324f
  • dashboard: redesign the marketplace, playbooks, runs and agents rosters3ffb0ad
  • dashboard: redesign the project Documents library in the app grammar5c549b4
  • dashboard: redesign the Team agents roster and plane install card918336a
  • dashboard: shell-consistent loading fallbacks and sentence-case breadcrumbs across /kit1ee9bdd
  • dashboard: sweep the resource, playbook, run and marketplace detail pages onto the design grammara8b2790

Bug Fixes

  • cli: reap stale download directories only after the work directory is proved oursaddbad8
  • cli: refuse a relative Notetaker work directory, and copy a payload across volumes2f64ab3
  • cli: stage the Notetaker download where only its user can writea44cac8
  • dashboard: allow React's dev-only eval in the CSP and stop instant-navigation noise under /kitd24a134
  • dashboard: render playbook stats the API actually reportsb79c040
  • sessions: a hard delete of a chunked artifact records one artifact_delete entry#5592e8b17f
  • sessions: a hard delete of a chunked artifact records one artifact_delete entry, not a re_embed_replacement#559c09dcd5

Code Refactoring

  • dashboard: bring conversations onto the design grammar1e1e1f3
  • dashboard: clear every React Doctor error on the redesign diff180c03c

0.6.6

Compare

Features

  • api: accept the Notetaker's labelling-stop and speaker-cap claims#55523334b9
  • api: stamp each transcript line with the wall clock in the meeting's zone369c379
  • cli: show the wall clock on every transcript line and send the capture's local offset24196d5
  • sessions: data-plane v1 stage F — Phase B residentbd48aed
  • sessions: data-plane v1 stage F — Phase B resident#556bd48aed

Bug Fixes

  • cli: record a mid-capture labelling stop and the speaker cap in the spool#555ec3cbba

0.6.5

Compare

Features

  • api: accept and banner the Notetaker's speaker-label provenance84ddaa7
  • cli: label participants by voice in the Notetaker7365f5f

Bug Fixes

  • cli: a live project status, and a recovery notice repaints cannot clobbere3b7b27
  • cli: gate-2 findings — the caveat names the labels, one download host, a live switch623cced
  • cli: last carries — an unidentified-speaker label, a counted shortfall, a wider scan8e4b325
  • cli: no guessed speakers, labeller counters reach the log, spectrum zeroized for real70972d0
  • cli: refuse notetaker install off-macOS instead of prescribing a download2317bdd
  • cli: review carries — reachable attribution, fail-closed switch, one writer8fd7a5d
  • cli: review findings — the notice spares refusals, the disclosure names every scopec326f61
  • cli: third-wave carries — a verifier witness, self-checking sentinels, a content-shaped caveat00e6533
  • dashboard: tell the truth about repository access and storage#519a0a4619

0.6.4

Compare

Features

  • sessions: data-plane v1 stage E — The line + readscfdd635

Bug Fixes

  • cli: ask for the microphone at launch instead of hiding it in a menu6aede4a
  • cli: declare the audio-input entitlement the hardened runtime requires52b252d
  • cli: declare the usage string the system-audio tap prompt requiresfa1f3c3
  • cli: harden the audio-entitlement check, and hop the mic repaint to the main threaddab75bd
  • sessions: close the E-x-main integration seams PR CI exposedba64922

0.6.3

Compare

Features

  • cli: publish the Notetaker, and make its blocked states readable#543731c8f1
  • cli: report microphone and system-audio state honestly in the Notetaker#546a6a078f

Bug Fixes

  • api: fence the attachment pipeline's erasure-obligation residuals523766e
  • api: read Anthropic text blocks by type, not by position#504#539ca8b6db
  • cli: let the Notetaker actually ask for the microphone#541#5426a9656c
  • cli: sync the notetaker constants with their authorities, and detect drift#5389a99918

0.6.2

Compare

Bug Fixes

  • ci: make the notetaker designated-requirement check actually evaluate#534ece18c9

Showing the 20 most recent releases. Older releases are on GitHub.