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.5
CompareFeatures
- 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
CompareBug Fixes
- cli: the live transcript tails instead of jumping to the top7cd81af
0.7.3
CompareBug 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
CompareFeatures
- 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
0.7.1
CompareFeatures
- 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
CompareFeatures
- 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
Compare0.6.7
CompareFeatures
- 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
0.6.6
CompareFeatures
- 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
0.6.5
CompareFeatures
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
CompareFeatures
- 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
CompareFeatures
Bug Fixes
0.6.2
Compare0.6.1
CompareFeatures
- api,dashboard: derived analysis_status — Analyzing badge, honest polling46b9dc7
- api: add notetaker_upload JWT scope for local capture0a45e5a
- api: alert on Tika egress-drop counters via mTLS health scrapeadd96c2
- api: batch reprocessing for artifact analysis (#496 stage 3)710f793
- api: chunked map-reduce coverage for artifact analysis (#496 stage 2)ddabff4
- api: default artifact analysis to Opus 5a4749f1
- api: default artifact analysis to Opus 5590daeb
- api: expose artifact attachments23b3848
- api: expose batch request seams for artifact analysis#496375d3a0
- api: ingest email attachments (scan-then-extract, resident defer)d3e4e9b
- api: let developers create projects and link repositories83d2b4f
- api: local audio capture ingestion — slice 1 (WIP checkpoint)b4a9434
- api: local meeting transcript ingestion for crewkit Notetaker (slice 1)429222e
- api: office-format text extraction via configurable Tika seam55fa233
- api: parent_artifact FK and deferred status for email attachmentse733def
- api: re-extract deferred office artifacts once a backend existsa3b96d2
- api: seed AUP v3 from db/seeds.rb + gate-3 disposition (slice 1)1e18b91
- api: shadow-eval harness for artifact analysis models (#496 stage 4)f8fb274
- api: structured artifact analysis core (#496 stage 1)81f95f6
- artifacts: move context confirmation to librarycc51925
- cli: add C20 login-item gating and the update-authority state machine3ca3890
- cli: add crewkit auth token for local companion processesbde3bba
- cli: add crewkit notetaker install/update/status/runab924e1
- cli: add notetaker capture core crate953b47d
- cli: add system-output-only capture and an audio topology snapshotb844c26
- cli: add text-free health observability and close CARRY-2b2c3cc7
- cli: add the macOS notetaker capture backend2df9d2a
- cli: add the notetaker transcription pipeline448c833
- cli: add the notetaker tray shell as a separate cratee8d3dd4
- cli: add the real icon set and the Notetaker bundle pipeline6fe7d5a
- cli: add the review gate, upload path and C5 network confinementf86e325
- cli: add the spool reader, the L7 resume path, and UI-event provenance8e6aab6
- cli: ask the crewkit CLI for the notetaker's credential12a8c1a
- cli: build the review gate the menu was only claiming to have (BLOCKING-2)a9f37cb
- cli: check-mark and remember the notetaker's selectionsd44ddb6
- cli: compose the notetaker transcription pipeline520bdee
- cli: decide about a transcript in the review window981febf
- cli: derive the capture language default from the machine's localed0b72f7
- cli: disclose the OS speech service (disclosure-2026-08-31)555984c
- cli: expose notetaker capture counters for observabilityfa890db
- cli: gate the notetaker on its preconditions, and recover crashes6717aa3
- cli: give the disclosure fence a second engine to refuse6640fa5
- cli: hold notetaker transcripts in a queue, not in the machine5a6fac5
- cli: keep notetaker transcripts in crewkit's own home487a9c7
- cli: keep the notetaker transcript off disk and off other screens2e35940
- cli: let a meeting vocabulary reach the decoder3f641d4
- cli: let the notetaker download the model the user picks688468c
- cli: let the notetaker hand a finished transcript to its callerb5dfe4e
- cli: let the user remove a spool the reader refuseda55a6b8
- cli: let the user say what language the meeting is in7097346
- cli: load the notetaker's model before Start is offered54ba4f8
- cli: make an engine declare where audio goes, and refuse it if undisclosed021ccd3
- cli: make the capture default the quantized turbo model62ba9fc
- cli: make the default capture model one that speaks Frenche9dcd60
- cli: make the notetaker actually transcribe9a940f8
- cli: move the C1 witness into the verifying module, add disclosure subsystem85c8c0e
- cli: notetaker capture engine — core, transcription, macOS backend (slice 2)68cf2a4
- cli: Notetaker slice 3 — the macOS app27a4845
- cli: pin a download URL per notetaker model21800c0
- cli: pin distil-whisper large-v3.5, and state a model's language5614c38
- cli: pin medium, large-v3 and multilingual whisper modelsb38307d
- cli: point the notetaker's C5 observable at the real decision path09f59e8
- cli: re-open a notetaker capture leg in place after a route change46f7b15
- cli: read the meeting vocabulary from a user-editable liste4da2fd
- cli: record the project and attestation in the notetaker spoolc5b285c
- cli: record what transcribed each capture in its spool headerfb45421
- cli: record which vocabulary shaped a decode, never the terms086b89d
- cli: recover the notetaker capture from mid-session route changesa996e18
- cli: register projects non-interactively (bfab4c1), closes #482
- cli: say when a transcript's model is no longer here to check001615a
- cli: show notetaker state in the menu bar, and log the lifecycle79e60c9
- cli: show project names in the notetaker menu, add opt-in debug logging7d8fef8
- cli: show project names, never ids, in the notetaker97cce0a
- cli: spare a Bluetooth headset from the notetaker's microphonec1fba36
- cli: timestamp the notetaker debug lines06d2c7f
- cli: verify the Notetaker's designated requirement before installing (C19)234d71b
- dashboard: bounded auto-refresh on the project documents page4afaa91
- dashboard: bounded auto-refresh on the project documents pagee94779a
- dashboard: enable artifact attachment downloadsb2db212
- dashboard: promote project context library50aa81c
- dashboard: render structured artifact analysis and fetch full detail (#496 stage 5)e1bf65a
- dashboard: surface project email contacts (c4c1470), closes #465
- monorepo: add Tika firewall drift monitor + drop-counter alerting design (Ruling 1)5227535
- monorepo: clamd — zero-egress scanner container, host nftables, encrypted-archive detection, freshness healthchecks6e32791
- monorepo: clamd droplet IaC for the malware gate; quiet the Tika box's host egress attempts05564c4
- monorepo: fold founder shared-box decisions into the Tika real-box IaC/runbooka200320
- sessions: artifact ingest receipts, and the objects key semantics that never worked446ed94
- sessions: artifacts with a structural tombstone, one write path, one uniform read1d9041f
- sessions: bind-first plane boot with /readyz and one boot guard1b5306d
- sessions: coverage as an answer, the prose read path, and its retention floora1e6352
- sessions: daily partitioning in a dedicated plane_parts schemac81fe14
- sessions: data-plane v1 stage B — Erasure core628c931
- sessions: data-plane v1 stage C — Plane storagede23b40
- sessions: data-plane v1 stage D — Analysis in-plane40b5823
- sessions: hand-rolled SigV4 object store with derived keys and a latched scope canary58196b8
- sessions: land the tenancy attestation crewkit was told to receive, and make four pins able to fail52b8181
- sessions: let the plane apply its erasure log, and retire the inbound destroy4c86abd
- sessions: make a no-op erasure claim provable, not believed895f836
- sessions: partitioned vector_chunks, both retention sweeps, orphan reconciliation75d313e
- sessions: pin Rails-vs-plane erasure parity, and re-anchor a pin that had already expired (fac3a9e), closes #479
- sessions: plane-resident prose, vector schema v2, erasure reach, receipts76301b2
- sessions: seed the outbound inventory, close stage-C carries, fix the secret surface5aa9f76
- sessions: the analysis worker container and its egress release gatea90992f
- sessions: the retention floor is the plane's own, and ruling 44 is enumerated305adc2
- sessions: the signed policy channel, live retention terms, N-org pushb94ccf8
- structured artifact analysis, honest content contracts, and batch reprocessing#4964658b42
Bug Fixes
- api: align schema version with the renumbered #496 migrationd2db2b8
- api: align schema version with the renumbered #496 migrationefe3135
- api: apply gate-3 review findings to artifact analysis#496d6cd6d5
- api: bound scanner error recovery18da3ef
- api: close security-audit findings on artifact analysis#49641818a2
- api: compose attachment authorization1626b15
- api: correct Tika host drop thresholdcb65689
- api: deduplicate rescan exhaustion alertse93b131
- api: defer office extraction when no backend is configured1b2e6c3
- api: document transcript ingestion 400 + regenerate stale api typesa8d3c64
- api: drain the mTLS test server fully and dial it by IPc0a336b
- api: fail child serialization closed3cfd36f
- api: find analysis text blocks by type and raise validator capsc51dba5
- api: find analysis text blocks by type and raise validator caps8e488de
- api: gate-3 adversarial findings — all blocking + carry items77e369f
- api: gate-3 validator gaps — mine role floor + migration hygiene67f02ad
- api: harden processing reaper queue lookup640c931
- api: make artifact remote io generation-safe7e123d5
- api: make captured_by migration safe to re-run mid-flight37356db
- api: make JWT scope enforcement default-deny2abf3ff
- api: make KB retraction retries durablecd0540a
- api: make the Sentry blackout loud, and give the reporting guard one homefd00e38
- api: narrow scanner size errors7f72b56
- api: parse transcript body below the egress gate898713e
- api: pin the org terms the retention-sweep tests age against63763d7
- api: reconcile artifact remote erasuref45ff26
- api: recover stranded processing artifactsa7d0542
- api: reject scanner protocol errorsbbb1d03
- api: rescan stuck pending artifacts26bac8c
- api: restore schema.rb lines lost to a pg14 regeneration306c165
- api: restrict vCard photos to HTTPS (0eeb92c), closes #465
- api: retract artifact knowledge copies274ad72
- api: retry artifacts after failed queue jobs2adbbb0
- api: retry transient malware scan outagesbac1587
- api: rotate failed artifact reaper rows0d70541
- api: simplify artifact generation cleanupce341b7
- api: slice-1 test fallout — association, error codes, sentinel classifications7d0a231
- api: strip machine-local timescaledb extensions from schema.rb24a27f3
- api: strip unsupported constraint keywords from the analysis output schema75bb718
- api: strip unsupported constraint keywords from the analysis output schema72f530c
- api: tighten attachment child contract425df33
- api: tune Tika host egress alerts5ac5c8d
- artifacts: harden confirmation recoveryee7d21a
- attachments: close final cleanup gaps53ddbe1
- ci: guard all workflow changes090de99
- ci: harden Bundler sentinel coverage (b2c5aae), closes #441
- ci: use shipped Bundler on self-hosted runners (9cfc782), closes #441
- cli: accumulate speech to a floor instead of flushing at every pause2b7e6a4
- cli: activate the notetaker once at setup0c6c892
- cli: announce every refused spool, not only the removable ones933d74a
- cli: apply the notetaker's transport floor on every credential path1b9e471
- cli: assert the cloud fence through the gate, not the constant8c17a0f
- cli: bind the disclosure copy to the version that names it32a7e9b
- cli: bound the bundle id and never report an appearance as zero683dd41
- cli: close slice-2 capture blind spots in the notetaker backend4f5d14d
- cli: close the blocking security findings on notetaker recoverycde24d1
- cli: close the gate-3 findings on the capture diagnostics9b1bd5a
- cli: close the slice-3 review carries (1, 2, 3, 4, 5, 6, 7, 8)6b2afcc
- cli: compile the webview data-url feature the review window needsfabce21
- cli: complete headless project output routing (354102e), closes #481
- cli: decide loopback by IP parse, not string prefix7895012
- cli: decode pre-correlation spools and pin the spool version ruleb6955a1
- cli: decode the daemon status line as the internally-tagged shape it actually is4cd59dc
- cli: disclose the notetaker's transcription and spool failures5ac9ba6
- cli: disclose windows dropped for being too shorte13bebf
- cli: enforce non-interactive launch policyae46427
- cli: explain a permission refusal instead of printing "Error"2baa7d2
- cli: fail closed on headless session errors (2fd1717), closes #481
- cli: gate the capture smoke test to macOS so Linux clippy can compile the crate316911d
- cli: guard resolver progress routing (a296b94), closes #481
- cli: harden project registration (858df6b), closes #482
- cli: honour device pinning in the macOS capture backend110c4e2
- cli: isolate project slug normalization (30f3479), closes #482
- cli: join a headset's two halves so the mic policy can actually fire51d8a01
- cli: keep a notetaker leg recoverable when its rebuild failsd18c57c
- cli: keep headless no-git path non-interactive (58c0adb), closes #481
- cli: keep no-git headless stdout clean (f76a10f), closes #481
- cli: keep notetaker transcripts where the OS cannot reclaim thema03f139
- cli: keep registration refusal off stdout6b34662
- cli: keep teardown order on worker-spawn failure5b421d1
- cli: keep the notetaker resident, honest and readable13e7a1a
- cli: keep unmatched resolver output parseable (c0e05bf), closes #481
- cli: keep unregistered headless output parseable (52306a3), closes #481
- cli: make notetaker start detached by default and pin the token contract839db6b
- cli: make the capture disclosure true about what leaves at Start6bcf640
- cli: make the confirmation a gate, not a drawn button85b7d3e
- cli: make the notetaker's liveness reprieve earned, and pin the8a2b31c
- cli: mint capture session ids randomly, not from the clock (BLOCKING-3)cd5de1e
- cli: never leave half a transcript where a whole one should go242d8f4
- cli: never remember a placeholder as a project namea533a95
- cli: open the notetaker review center from the queue, not the machinec5a513f
- cli: read errno through std so the capture crate links on Linux29fefd0
- cli: resolve code org override to UUID (c3e6aae), closes #471
- cli: route the review center on the whole url, not its pathc082399
- cli: serve the notetaker review window from memory8c8cf5f
- cli: stop an unreachable server from deleting a transcript (BLOCKING-1)907ea1a
- cli: stop losing the upload receipt when its directory is missinga760093
- cli: stop segment timestamps outrunning the audio they came fromf528a97
- cli: stop spending the prompt budget on carryover4041ad7
- cli: stop the speech gate cutting sentences in halfab97810
- cli: stop writing whisper's silence markers into the transcriptbd16319
- cli: strip a review url's query before splitting its scheme78accfb
- cli: warm the transcription engine before a capture can lose audio8e6dad2
- cli: warn on unknown code org override (0b4fceb), closes #471
- dashboard: avoid remote project avatar fetches30d2792
- dashboard: centralize document body renderingbf71aa7
- dashboard: clarify project email behavior (ac03d45), closes #465
- dashboard: drop the finally block from the attachment download handlerb2c9892
- dashboard: gate project creation on the server's create linka03ecd0
- dashboard: gate-3 findings — ocr_needed filter, wire content_excerpt#4964808dcb
- dashboard: handle linkless artifact lists5a2abc6
- dashboard: keep contact downloads compiler-safe369bd80
- dashboard: neutralize image/link surface in document summary markdown#4962803345
- dashboard: restore document library carries80df988
- dashboard: restore document search safeguardseca3f2b
- dashboard: satisfy biome format on the artifact-analysis test files80fd0b0
- dashboard: use MDX comments in experiments docs so the site builds#4875ddbd71
- e2e: assert the terminal demo renders a command, not one spelling of it#4893e2c60e
- monorepo: also mask update-notifier and droplet-agent timers on the zero-egress Tika boxafe07e6
- monorepo: emit -1 on per-counter nft read failure, not a quiet 05294120
- monorepo: fix 5 rehearsal-found bugs in isolated-Tika stacke94ccd6
- monorepo: keep the Tika cloud-init template ASCII-only so cloud-init accepts it6952d28
- monorepo: make the Tika mTLS wiring proof wait for a real readiness signal4085dd2
- monorepo: register an SSH key on the Tika droplet so DO does not expire a generated root passworda56c31e
- monorepo: resolve rehearsal IaC findings B + C for the real-box tofu path6fe400e
- monorepo: set public_networking=true explicitly in the Tika droplet06ba1bd
- monorepo: wait for ghostunnel's own listen line in the Tika wiring proofc370010
- sessions: artifact erasure actually erases, and the metadata is boundeda3b32ed
- sessions: attest the read that decides an object delete, and one erasure error table724f16b
- sessions: close the D3 review — persist coverage, pin the receipts, cut the inert knobfd4227f
- sessions: close the D4 review — cut the unwired code, make the egress gate measure8850636
- sessions: close the D5 review — one render path, one terminality decisionec79edb
- sessions: close the restore-path read bypass and stream-scope the erasure dedupebe1adcc
- sessions: close the two gaps the merge with main opened6ff2afc
- sessions: delete the migration ceremony that did nothing, and stop three comments claiming a bug that never happened5c0b2f1
- sessions: enforce the D1 rules that were only asserted in comments0d0d7c2
- sessions: give the analysis worker a retention key and an eligibility gateb121475
- sessions: make main green after stage D — suite-order Sentry poison, binds? call sites, egress-gate resolution95833d9
- sessions: make the erasure loop reachable from a test, local in its backoff, and visible to its operatorc94bf44
- sessions: make the policy channel's term state per-org and wire its writer0d63a39
- sessions: one probe object, one encoder, one signed path in the object store0566928
- sessions: pin the documented retention defaults, and say the bound in words an admin can act one55403b
- sessions: scope every partition catalog predicate to the plane's own schemafb8b14f
- sessions: stop asserting one platform's grep quirk as universale4e4f03
- sessions: stop the receipt rule wedging on ordinary operation, and make the residual it depends on reala3784b5
- sessions: the custody counters stop lying, and the closed check is one queryebeab89
- sessions: the plane's two new failure codes reach crewkit, not a 4223687aef
Performance Improvements
- cli: build whisper with Metal and default to a model that spells crewkit7e30cac
- cli: run the Notetaker upload off the menu thread23b8b26
- cli: stop hashing 3 GB to answer whether a model is already here746e1d2
- cli: stop hashing every model to draw a menu label2c2ce2a
- cli: turn on flash attention, measured on our own workload97e2029
Code Refactoring
- api: reuse attachment associationsdd7dfe9
- api: unify Tika mTLS configuration4f0d663
- cli: delete the notetaker's unreachable review-document slot8a39e0f
- cli: delete the pre-center review pathc48e956
- cli: expose notetaker_install through the lib, not the binf879367
- cli: let a start choose its engine at runtime, not at build time1c14e63
0.6.0
Compare⚠ BREAKING CHANGES
- cli: top-level `crewkit --json` and `crewkit --tui` are removed — use `crewkit status --json` and `crewkit tui`. Bare `crewkit` in a terminal now starts a session from any directory (the old project/`$HOME`/ownership guardrails are gone). Resource sync now anchors at the repo root: `.claude/` trees and `.crewkit/cache/` fragments previously created in subdirectories by subdirectory launches are no longer updated or retracted — remove them manually if present.
Features
- agents: add data-plane-expert and correct two misleading referencesf59b556
- agents: per-project agent email addressing + default intake agentae4dc16
- api: verify SendGrid inbound Parse webhook signatures56e77af
- cli: make bare `crewkit` a full alias of `crewkit code`, add `crewkit tui`79894b5
- sessions: raise default telemetry retention from 90 to 365 daysbcbe15e
Bug Fixes
- api: make agent email ingest-only, remove the reply pathb988d43
Code Refactoring
- api: remove SendGrid basic-auth/shadow/mode scaffolding (R10)aa85f01
0.5.6
CompareFeatures
- sessions: session-scoped plane write tokens, ingest_url auditing, and #352 follow-ups85c6156
Bug Fixes
- cli: strip resident content before anything can enter the Rails path8ad4063
0.5.5
CompareFeatures
- agents: data-plane rollout plan, ingestion-parity rule, and delegation workflowsf915b61
- api: add an artifact download endpoint (2e91284), closes #450
- api: let a marketplace listing carry a resource_type (e35a415), closes #333
- api: lint the catalog for credentials at authoring time (88ed118), closes #415
- api: persist the stacks the CLI detects (887058e), closes #381
- api: veto scan egress for resident orgs and reconcile scan drift2a3f580
- cli: retrieve artifact context per prompt, not once at launch (21e0b6b), closes #368
- dashboard: add applyServerErrors to put 422s on the fields that caused them5343464
- dashboard: add project-shape components for workspaces vs projects3276f13
- dashboard: add ProseBlock, TranscriptView, TaskLedger, PhaseTrackerd4feef5
- dashboard: add shadcn empty, kbd, spinner primitives95e86a6
- dashboard: add statusTone resolver, reconcile score thresholds994f9c5
- dashboard: add the context library component family35c498a
- dashboard: design system v0.1 — tokens, Storybook, status badgea1f4cd9
- dashboard: give the home KPIs the period they are measured againstceb1053
- dashboard: guard the five form interactions that silently destroy work40822e5
- dashboard: land the deferred primitives and finish the radix-ui migration50ee092
- dashboard: move the transcript onto the role-rail presentationd5b339e
- dashboard: move to TypeScript 73f9b7df
- dashboard: promote ink to the shared always-dark surface token53de45d
- dashboard: put TaskLedger and ProseBlock on the conversation page3152bdc
- dashboard: put the active plan's phases on the project overviewd09750f
- dashboard: route project overviews by shape via ProjectShapeView792af6e
- dashboard: route the project overview on shape, not repository countfe78789
Bug Fixes
- api: close the adoption-gate governance residue from the #378 reviews (be5b75f), closes #383
- api: close the AUP ingest-gate residue left by #3703f044c9
- api: fail external-source creation closed, and serialize display_name raw0c6d5c2
- api: gate every artifact-content egress seam on the org's three vetoes9999016
- api: move artifact storage off ephemeral disk, without waking the KB patheddd2c7
- api: move the admin chat stream to POST so prompts leave the query string (15efa50), closes #449
- api: null the whodunnit=0 residue and stop the migration producing it628661f
- api: provision the artifact bucket and move storage creds into credentials345d4b3
- api: realign schema.rb with the convention_overrides migration64ce27d
- api: scan the surface that is actually served, and gate the inherit chain377f475
- api: serve repository_count on the projects list (3e8f0cd), closes #452
- api: stop retrieval reporting success it never achieved (9cf200a), closes #367
- api: stop unreviewed and demoted content reaching .claude/ through name-matched swaps4dca26d
- api: store invitation tokens as digests, not plaintextb7106ca
- api: surface why an embedding was skipped, and count provider faults as failures (16cbacc), closes #401
- AUP CLI follow-ups, marketplace resource_type, and persist detected stacksb4146d6
- cli: carry organization context on resources list|show|inspect (ab4ac53), closes #416
- cli: give a missing AUP route a witness, and detect locale without a shell (854c5d0), closes #373
- cli: remove the experiments command surface that could only 4049eceeb2
- cli: resolve --org to an external_id before building org-scoped URLs (f3d9b2d), closes #435
- cli: stop internal `claude -p` children inheriting the user's setupb29a1a8
- dashboard: add /kit/settings index pageecf188f
- dashboard: address adversarial review of design system v0.12c2f287
- dashboard: announce form validation errors to screen readersb871f1b
- dashboard: catch one-line URLSearchParams, and satisfy Biome3dc7c4a
- dashboard: close adversarial-review findings 3, 4 and 63cdab6f
- dashboard: close the fifteen verified review findings on the Phase 4 sweep3ed67c7
- dashboard: close the review findings on the KPI comparison345700c
- dashboard: close the transcript migration's parity losses8bec038
- dashboard: close three design-system constraint violationsbf04148
- dashboard: collapse the server client's duplicate ApiError onto the real onedb19385
- dashboard: compare seven complete days, derived in UTC77903cf
- dashboard: default Button to type=button instead of submit2cede0b
- dashboard: detect inline code so assistant turns stop showing backticks317fa29
- dashboard: draw no inspector action bar when nothing is wired upb79fb70
- dashboard: fail the platform-wide default closed, and give admin its accessible names4aa19b7
- dashboard: give AlertDialogAction a variant, and restore destructive contrast7f26976
- dashboard: keep signup retryable when creating the account fails0eedc6c
- dashboard: label activity buckets by the day they name, not the local instant986101e
- dashboard: let document type read as text, and close the palette sweep6afc680
- dashboard: make an unmapped status noticeable in development10f395a
- dashboard: make the disabled download's reason readableb32e97c
- dashboard: make the documents form, chatbot, and blueprint dialog tell the truth8e4136b
- dashboard: make the error mocks speak the serializer's wire shape5f6c4ee
- dashboard: mount the AUP consent dialog where it can actually render (cb2e50c), closes #370
- dashboard: move five surfaces onto the theme their contents already usedccea9ac
- dashboard: open the external-source Edit dialog on the real recordf1cb25f
- dashboard: pin the auth shell's text to the light surface it paints onb376aab
- dashboard: point settings subpage back links at the settings index81bfa3b
- dashboard: reach a readable not-found state on admin editors56c8587
- dashboard: reconcile artifact types with what the API serves646f764
- dashboard: render /kit/settings as a client page under the kit layoutbb882c8
- dashboard: repair chart token paint bug, migrate primitives to status tokensba55a7d
- dashboard: repair the skill builder's dark-mode header bare9a6c25
- dashboard: reset dialogs on close, and stop resource dialogs lying about destinationsd835166
- dashboard: route surviving solid status pills onto StatusBadgece57454
- dashboard: route the remaining solid status pills onto StatusBadge4dacba5
- dashboard: run the chat playground on the model it displaysff8de84
- dashboard: scope ProseBlock DOM ids to the instanceb0ee2af
- dashboard: serve Monaco from our own origin instead of a CDNddb63e4
- dashboard: stop announcing false unsaved changes on playbook edit6ba6df9
- dashboard: stop offering Configure on playbooks it cannot editd5b0c16
- dashboard: stop pointing aria-describedby at a missing description2da3a75
- dashboard: stop replacing a real API error message with "Request failed"cb46446
- dashboard: stop the KPI comparison double-counting its boundary dayddf772a
- dashboard: stop the last two chat prompts travelling in the URLa9482f2
- dashboard: stop the logo disappearing in dark mode on product surfaces83c1486
- dashboard: surface 422 field errors in the remaining 18 forms359b1bd
- dashboard: tell the user the KPI window ends yesterday1f18b10
- dashboard: type ApiError details to what the API actually sends3261144
- dashboard: un-sweep the auth surface; close the guard's blind spot9d669f3
- dashboard: wire the last four forms, and give the playbook editor a surfacec27398a
- deps: clear 17 of 22 advisories with npm audit fixeb3cac1
- resource swap gating, admin chat POST, artifact download, CLI org resolutionb0f287d
- resources: scan skills published by the skill builder (d130a2e), closes #414
- sensitivity by conversation, scan the served surface, and governance residue174ca61
- sessions: make POST /sessions idempotent for a sid the caller already holds (def6b99), closes #400
- sessions: make sensitivity a property of the conversation, not the segment (d551451), closes #402
- work a batch of tracked issues and the defects found verifying them4dd57d7
Code Refactoring
- api: collapse the two rollback implementations into one (f75f718), closes #427
- dashboard: adopt DashboardShell on project agents, skills and conversations5dafa82
- dashboard: adopt DashboardShell on project, profile and docs pagesb839d79
- dashboard: adopt DashboardShell on the runs coming-soon screenedda2e0
- dashboard: adopt DashboardShell on the runs pages1056fbb
- dashboard: adopt DashboardShell on the settings pagesa460805
- dashboard: clear lint warnings in the context library548c72b
- dashboard: close the transcript re-review residualsf9aa59a
- dashboard: collapse categorical colour maps to tokens45522be
- dashboard: collapse ProseBlock onto MarkdownSummaryc1899b7
- dashboard: drop eslint-config-next for a hybrid lint setupf0acccc
- dashboard: drop PhaseTrackerd66df2b
- dashboard: drop the context library's local palette guard02c25e8
- dashboard: drop TranscriptView, keep TranscriptViewer51cdfa7
- dashboard: finish status-map collapse; one tone system everywhered416027
- dashboard: finish the admin-list family's AdminListShell adoption679df78
- dashboard: fold cli-adoption palette into global ramp tokens2795e81
- dashboard: migrate admin + kit status maps to StatusBadge14eba4c
- dashboard: migrate blueprint + admin badges to StatusBadge4e58865
- dashboard: quarantine context-library and workspace under staged/41c3076
- dashboard: quarantine transcript-view and phase-tracker under staged/4b237e6
- dashboard: record and pin the skills/builder shell exemption8869f38
- dashboard: sweep /kit palette classes to design tokensae1d55a
- dashboard: sweep admin neutrals to design tokens1c19c3f
- dashboard: sweep admin semantic colours to design tokensea38cbf
- dashboard: sweep app chrome to design tokensa6f6518
- dashboard: sweep feature neutrals to design tokens9a94879
- dashboard: sweep feature semantics to status tokens5620d24
0.5.4
CompareFeatures
- api: enforce acceptable-use consent server-side at ingest40a7b5e
- api: enforce acceptable-use consent server-side at ingest (15cf666), closes #370
- api: give the consent stamp a durable marker and a reader60d724b
- api: hold unlicensed conversation content out of third-party processingb5ba744
- cli: surface the server's acceptable-use refusal instead of swallowing it21791a1
- dashboard: add the acceptable-use acceptance surfacef83bb31
Bug Fixes
- api: close the consent hold's three unmirrored egress paths91f2bc8
- api: close three security-gate gaps found reviewing the publish paths6446e6f
- api: gate security_score on every publish path and both read paths7902f8f
- api: gate security_score on resource publish and adopt worktree mechanismse9a2178
- api: make the publish grace mean the same thing at ingest and at egress1089131
- ci: point sentry release at the name the CLI actually reportsb9469d4
0.5.3
CompareFeatures
- cli: add --remote-control for a remotely drivable session145c9bf
- dashboard: admin embedding coverage surface and backfill trigger (da799fd), closes #404
Bug Fixes
Showing the 20 most recent releases. Older releases are on GitHub.