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

0.6.1

Compare

Features

  • 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

Compare

Features

  • 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

Compare

Features

  • 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

Compare

Features

  • 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

Compare

Features

  • cli: add --remote-control for a remotely drivable session145c9bf
  • dashboard: admin embedding coverage surface and backfill trigger (da799fd), closes #404

Bug Fixes

  • api: name an unreachable embedding provider, audit refused runs, cache the estimate (6cafa14), closes #404
  • cli: disable git's fsmonitor hook on every crewkit fork1fc1513
  • cli: show the worktree's branch, not the launch directory's7f74c12
  • dashboard: close the adversarial review findings on #404d3bcb34

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