This is the canonical product changelog for Codewith, the @hasna/codewith
CLI, and the stable Codewith rust-v0.1.* product release tags in this fork.
GitHub Releases remain the place for binaries, checksums, installers, and
DotSlash artifacts, but release notes should be copied from this file instead
of generated from the release bump commit.
The fork-specific history starts after upstream commit 20fedafff8 on
2026-05-21. The first fork-only commit is 809fe3130c, feat: add scheduled loop tasks.
Sources used to rebuild this changelog: local git history and tags,
origin/main, release branches for 0.1.27, 0.1.28, and 0.1.46,
GitHub Releases, and npm metadata for @hasna/codewith.
Known evidence gaps:
- GitHub Releases currently exist for
0.1.26,0.1.27,0.1.28,0.1.29,0.1.33,0.1.39,0.1.40,0.1.41,0.1.42,0.1.43,0.1.45, and0.1.46. - GitHub Releases were not found for
0.1.30,0.1.31,0.1.32,0.1.34,0.1.35,0.1.36,0.1.37,0.1.38, or0.1.44, though matching local tags and/or npm publications exist for some of these versions. - The GitHub Release bodies for
0.1.29and0.1.33were generated from tag commit messages, not this changelog. - npm has published
0.1.4,0.1.6, and0.1.15, but no matching local tag or committed release bump was found in the current refs. - npm metadata still has old timestamps for
0.1.0and0.1.1, butnpm view @hasna/codewith versionscurrently starts at0.1.2. 0.1.27,0.1.28, and0.1.46live on release branches, notorigin/main;0.1.46was cut fromfix/loops-runtime-0.1.46.origin/mainnow carries therust-v0.1.66release tag. Earlier notes aboutorigin/mainlagging at0.1.45were superseded by later release trains.- The
rust-v0.1.46GitHub Release is metadata-only and is not marked latest; use a later full asset-bearing release once platform assets are available for that tag. - This file intentionally excludes pre-fork alpha tags
rust-v0.1.0-alpha.*, upstream high-versionrust-v*tags,python-v*SDK tags, andrusty-v8-v*dependency artifact tags. rust-v0.1.81tag exists (workspace version bump only, PR #465) but its release run failed at the changelog-notes step beforepublish-npm, so nothing was ever published to npm under that version. Its two included fixes (#462, #463) are documented under0.1.82below instead, which is the first version this fork actually published after0.1.80.rust-v0.1.89tag exists, but its release run was cancelled beforepublish-npmafter the hosted app-server test exposed an invalid idle schedule fixture. No0.1.89package was published; the candidate's product changes and the corrected fixture are published together in0.1.90.
Tag: rust-v0.1.90
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.90
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.88...rust-v0.1.90
This release publishes the complete 0.1.89 candidate after correcting the
hosted idle-schedule regression fixture that stopped the earlier release. It
completes the post-0.1.88 workflow execution and scheduling repairs, adds
verifiable Instructions provenance for background-agent launches, restores the
Blacksmith remote test route, and includes the goal, loop, and skill-loading
repairs that landed on current main before publication.
- Background agents now validate the managed Instructions session-render manifest before thread startup, revalidate its bytes and rendered files after the thread starts, and persist a redacted, immutable launch receipt binding the adopted session prompt and instruction-source set to adapter, source provenance, route, permissions, capabilities, runtime, and durable lineage. (#545)
- Test infrastructure now includes a supported Blacksmith Testbox workflow and skill for remote Codewith validation. (#497)
- Goal plans can explicitly clear inherited per-goal and plan-wide token budgets while preserving omitted budget fields. (#555)
- Workflows now propagate scoped branch execution packets, including the requested worktree and task context, into isolated branch workers. (#540)
- Workflow verifier failures now stop the affected workflow at the configured boundary instead of allowing later steps to proceed. (#543)
codewith start-workernow loads the runtime context required by the delegated worker before execution begins. (#542)- Workflow activation failures are surfaced to callers, and cancellation now reaches a terminal state instead of remaining partially active. (#544)
- Background-agent retries now reject changed launch receipts atomically while accepting byte-identical receipt replays. (#545)
- Instructions manifest, source-hash, adapter, or capability expectations now fail closed when no managed session-render manifest is present. (#545)
- Workflow supervisors remain attached after post-admission errors so the run can report and finalize its actual failure state. (#546)
- Scheduled loops now reuse one pending occurrence while the target thread is busy, preserving the configured recurrence instead of creating counted deferred runs and repeated deferred notifications on every idle retry. (#547)
- The hosted idle-admission regression fixture now claims owner-scoped due occurrences, so the release gate exercises the intended busy-retry behavior without failing before product admission logic. (#550)
- Delegated goal-plan work now resumes correctly after inherited budgets are cleared. (#556)
- Native loops can persist without an expiry while an omitted expiry still receives the existing seven-day default. (#558)
- Skill discovery treats unreadable directories as non-fatal and continues loading from the remaining configured roots. (#569)
- The app-server busy-deferral regression now covers the configured ten-minute recurrence interval.
Tag: rust-v0.1.89
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.89
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.88...rust-v0.1.89
This release completes the post-0.1.88 workflow execution and scheduling repairs, adds verifiable Instructions provenance for background-agent launches, and restores the Blacksmith remote test route.
- Background agents now validate the managed Instructions session-render manifest before thread startup, revalidate its bytes and rendered files after the thread starts, and persist a redacted, immutable launch receipt binding the adopted session prompt and instruction-source set to adapter, source provenance, route, permissions, capabilities, runtime, and durable lineage. (#545)
- Test infrastructure now includes a supported Blacksmith Testbox workflow and skill for remote Codewith validation. (#497)
- Workflows now propagate scoped branch execution packets, including the requested worktree and task context, into isolated branch workers. (#540)
- Workflow verifier failures now stop the affected workflow at the configured boundary instead of allowing later steps to proceed. (#543)
codewith start-workernow loads the runtime context required by the delegated worker before execution begins. (#542)- Workflow activation failures are surfaced to callers, and cancellation now reaches a terminal state instead of remaining partially active. (#544)
- Background-agent retries now reject changed launch receipts atomically while accepting byte-identical receipt replays. (#545)
- Instructions manifest, source-hash, adapter, or capability expectations now fail closed when no managed session-render manifest is present. (#545)
- Workflow supervisors remain attached after post-admission errors so the run can report and finalize its actual failure state. (#546)
- Scheduled loops now reuse one pending occurrence while the target thread is busy, preserving the configured recurrence instead of creating counted deferred runs and repeated deferred notifications on every idle retry. (#547)
Tag: rust-v0.1.88
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.88
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.87...rust-v0.1.88
This release prepares the workflow activation repair for publication and
includes the full post-0.1.87 monitor, provider-profile, migration, and
workflow execution delta on main.
- Monitors: persist and enforce command authorization before running persistent monitor commands. (#527)
- Provider profiles: persist dispatch leases for mailbox and scheduled work so concurrent automation keeps using the reserved provider profile. (#528)
- State: move usage-profile lease migration
0068to0069to repair the duplicate migration version. (#532) - State: repair stores that already stamped the legacy usage-profile migration under the old duplicate version. (#534)
- Monitors: reauthorize monitor commands immediately before spawning their process. (#535)
- Monitors: close the stopped-monitor pre-spawn race so stopped monitors do not launch after cancellation. (#536)
- Workflows: activate workflows correctly when goal plans already have active goals and when workflow sources are not repository-backed. (#537)
Tag: rust-v0.1.87
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.87
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.86...rust-v0.1.87
This release prevents capability-shaped values stored in coordination metadata from reaching the model through compact mission-control overview fields. It also keeps long-lived prompt input responsive, scopes spawned-child listeners to their parent lineage, and avoids reusing incompatible app-server daemons.
- Mission control: redact capability-shaped values from session titles and compact schedule or interaction previews before returning model-visible overview data. (#525)
- App server: inherit spawned-child listeners only from connections subscribed to the parent thread, while preserving global manual-thread discovery.
- TUI: update pending-approval state incrementally and compact buffered transcript events when a persisted closed thread can be reloaded.
- TUI: reuse the default app-server daemon only when its reported version exactly matches the TUI; fall back to the embedded server after a mismatch, failed handshake, or two-second version-probe timeout without restarting the existing daemon.
Tag: rust-v0.1.86
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.86
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.85...rust-v0.1.86
This release makes workflow execution and review context deterministic across retries, resumes, and branch work, and restores unsigned macOS npm staging when the preferred signed artifact is unavailable.
- Workflows: persist and revalidate immutable requested and effective model routes across execution retries and resumptions. (#512)
- Workflows: deliver persisted branch bootstrap context and deterministic, bounded review contracts for oversized candidates. (#520)
- Release packaging: accept unsigned macOS npm artifacts when the preferred signed artifact is absent, while preserving signed precedence and canonical archive validation. (#523)
Tag: rust-v0.1.85
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.85
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.84...rust-v0.1.85
This release gives station-local coordination checks a stable, non-secret task
identity in live codewith exec process arguments without changing task
authority or execution behavior.
- Exec: add a global
--task-marker <TASK_UUID>identity option that accepts only canonical lowercase hyphenated Todos UUIDs and remains present in the leaf process argv for local liveness accounting. The marker grants no task or credential authority. (#507)
- Release packaging: reject unsigned-only macOS workflow artifacts before downloading them for npm staging because they do not contain the required Codex package archives. (#507)
Tag: rust-v0.1.84
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.84
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.83...rust-v0.1.84
This release hardens authentication and provider-error handling, durable-worker and workflow execution, unified exec sessions, and goal-plan continuity. It also makes review and release automation safer while improving release metadata and CI coverage.
- Durable workers: validate admission before spawning a background worker, including the persisted evidence and external-system checks needed to reject an unsafe or ambiguous launch. (#469)
- Workflow isolation: add an inert safety foundation for later isolated execution without changing current runtime behavior. (#496)
- Model configuration: reject a configured reasoning effort that the selected model does not support instead of starting a session with an invalid combination. (#473)
- Login: fail a forced API-versus-ChatGPT method mismatch without deleting shared root authentication or clearing the active-profile marker. (#487)
- Provider errors: remove reflected credential fragments from HTTP and Responses WebSocket authentication failures before they can reach logs, retries, protocol events, JSONL, or stderr, while preserving safe diagnostics such as status, request ID, and allowlisted provider codes. (#488)
- Unified exec: carry process and session IDs as unsigned 32-bit values so
write_stdinaccepts valid live IDs abovei32::MAX; signed exit codes and the allocator range remain unchanged. (#492) - Durable workers: require model attestation before a background agent starts. (#499)
- Skill installation: make retries transactional, preserving prior destinations and cleaning failed clone state. (#498)
- Workflow verification: fence verifier effects by run generation and allow a successor to reclaim expired verifier ownership safely. (#500)
- PR babysitting: keep signed CI capability URLs out of transcripts while preserving URL-free status and rerun controls. (#502)
- Unified exec: keep code cells live while nested descendant sessions are still running. (#501)
- Goal plans: restore deferred nodes to pending when a durable plan resumes. (#505)
- Goal plans: prevent an unfinished active plan from ending on a terminal response while allowing completed delegate sessions to stop. (#506)
- Review workflows: accept one independent adversarial reviewer and retain same-reviewer focused remediation semantics. (#494)
- npm metadata: add searchable keywords to the published
@hasna/codewithpackage. (#485) - CI: name receipt-cursor literal arguments and make the required
argument-comment lint include manually declared Rust test binaries instead
of relying only on the
//codex-rs/...wildcard. (#490, #491) - Release process: route Codewith releases through the hosted workflow, reject
unsafe tag movement, and verify the installer that owns the active
executable. (
49be67a) - Dependencies: update
async-traitto 0.1.91,diffyto 0.5.1,predicatesto 3.1.4, andsocket2to 0.6.5. (#479, #482, #483, #484)
Tag: rust-v0.1.83
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.83
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.82...rust-v0.1.83
This release keeps secret-assignment redaction from breaking shell snapshots
that contain trailing escape backslashes. It also restores selectable
repository-local agent roles in the default MultiAgentV2 spawn_agent tool
without exposing its locked execution metadata controls.
- Shell snapshots: preserve the trailing backslash run when redacting a secret-like assignment value, so the following quote keeps its escape parity and fresh sessions can validate and use the redacted Bash snapshot. (#471)
- Multi-agent tools: restore
agent_typeas the repository-local role selector in the default MultiAgentV2spawn_agentschema. Hidden mode keeps configured model, provider, reasoning-effort, and service-tier metadata out of role descriptions, while those controls andauth_profileremain absent from the caller-settable parameters. (#472)
Tag: rust-v0.1.82
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.82
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.80...rust-v0.1.82
This release fixes a false-positive auth-profile health check, a spawn-receipt cursor underflow that failed every durable background agent at start, and a TUI provider-save error message that discarded the real validation cause.
- Usage:
codewith usage --auth-profile <name>now exits2when a target cannot be verified instead of0, tags every field sourced from the local auth file so it cannot be misread as a live health signal, and reports aSTATUS:line and anokfield per target so a caller does not have to know to look insidetargets[..].error. (#462) - App server: fix a
saturating_subunderflow that produced a negative lookback cursor for the durable background-agent spawn-receipt poll on every fresh run; the retention guard rejected the negative cursor as"event cursor has been compacted"and aborted the worker before it could start. (#463) - TUI: stop discarding the real config/batchWrite validation error when a model provider save fails — the provider-save handler now formats the error with the same chain-aware formatter already used by the sibling default-model and status-line save handlers. (#467)
Tag: rust-v0.1.80
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.80
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.79...rust-v0.1.80
This release hardens model-visible command output so secrets are redacted
before truncation, including at ambiguous collector omission boundaries. It
also carries the portability and dependency repairs merged after 0.1.79.
- Tools: redact sensitive assignments before every model-visible unified-exec output is truncated, including Responses input, code mode, post-tool hooks, and persistent log previews. Exact collector omission markers are preserved, while ambiguous retained tail content is conservatively redacted so a secret split across discarded bytes cannot leak. (#455, #460)
- CI: replace platform-specific shell and batch external-agent test fixtures with a native test binary so the release gate behaves consistently on Windows ARM as well as Unix targets. (#450)
- Dependencies: update
regexto1.13.1, including the upstream correction for reverse suffix and inner-literal match offsets. (#442)
Tag: rust-v0.1.79
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.79
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.78...rust-v0.1.79
Release headlined by a hardened Responses tool namespace boundary, account-wide usage inspection and profile switching, and durable per-goal line-change accounting. It also carries the portability and CI repairs needed to keep the feature train green across Linux, macOS, and Windows.
- Accounts:
get_usagecan inspect usage and rate limits across every saved ChatGPT auth profile concurrently, report per-profile health, and recommend the best available profile without exposing private email or account identifiers.manage_auth_profilescan switch through the normal session settings path or toggle session-local automatic switching, and low-capacity sessions receive a targeted usage-tool prompt. (#418) - Goals: track lines added and deleted for active goals and aggregate totals for goal plans across app-server, mission control, TUI, and persisted state. Accounting follows committed and uncommitted work, isolates linked worktrees, serializes concurrent writers, and correctly subtracts reverted changes. (#415, #433)
- Tools: enforce the reserved Responses namespaces and canonical first-party contracts for image generation and web search across extension registration, deferred discovery, runtime admission, and provider request serialization. Untrusted or stale extension metadata can no longer claim those namespaces or bypass the boundary after admission. (#424)
- Portability: make CLI working-directory snapshot tests reliable on Windows, preserve Windows read-only app-server workers and unmaterialized archive threads, and gate Unix-only daemon and exec-policy test items correctly. (#431, #434, #436, #447)
- CI: repair cross-platform Rust lint failures, verify Git snapshot isolation by object semantics, and resolve full-matrix toolchains from the checked-in Rust manifest while keeping platform test shards isolated and correctly sized. (#430, #432, #435)
Tag: rust-v0.1.78
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.78
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.77...rust-v0.1.78
Release headlined by scalable deferred skill discovery, richer durable goal plans, environment-aware session continuation, and more reliable auth-profile switching. It also hotfixes the standalone updater so automatic hourly checks cannot restart the shared app-server and reset active Unix WebSocket clients.
- Skills now scale to large catalogs. When the full skill catalog does not fit
the 2% skills context budget, the developer message renders a small starter
list instead of every skill, and the model reaches the rest through a new
skills.listcatalog-search tool (available in the app-server and MCP-server extension registries). The starter list is dealt round-robin across skill scopes, so bundled system skills cannot starve a workspace's own skills. (#394) skills.listsupports paging:limit(default 5, max 50) and an unboundedoffset, with anext_offsetcursor in the response, so every ranked match is reachable without rewording the query. The walk is bounded by the catalog and nothing else - there is no offset ceiling,next_offsetalways strictly advances, and any cursor the tool emits is a cursor it accepts. Responses carrytotal_matchesandhas_moreso exhaustion is distinguishable from a partial page. Ranking is lexical token overlap with light plural/verb-form stemming, sochartsfinds achartskill; it has no synonym or embedding layer.skills.listcan enumerate.queryis optional: omit it (or pass an empty string) to page through the whole catalog alphabetically. Lexical ranking can only surface skills whose metadata shares a token with the request, so without enumeration a skill whose wording the model cannot guess was unreachable in principle, not merely hard to find.- New
codex.thread.skills.deferred_totalmetric reports how many skills were held back from the starter list.codex.thread.skills.truncatednow also flags deferral, so a large catalog can no longer report a big drop in kept skills alongsidetruncated = 0. - Goals: edit, insert, complete, and reopen durable goal-plan nodes, and compose recursive or chained goal plans up to the configured depth. (#414, #419)
- Sessions: persist terminal, profile, and thread context for environment-aware
recovery; resume or restart a project session from a chosen history point;
and use
/continue <session-id>to synthesize prior-session context. (#397, #403, #413) - TUI: enrich the switchable-agent list, add multi-level keyboard navigation to
/config, and let Shift+Enter flush all queued messages into the active stream. (#392, #393, #398) - Providers: expose documented xAI reasoning-effort controls and dynamic, reset-aware usage-limit alerts. (#396, #416)
- Config: add per-error retry and model switching to the self-healing category. (#401)
- Auth: bind profiles to their subscription provider and model catalog while
preserving explicit provider/model selection, and group the
/profilepicker into active and exhausted profiles. (#412, #420) - Tools: harden
AuthCapsuleto the fixed MCP-only v2 policy. (#402) - Agents: require durable admission for background agents and improve multi-agent wait and follow-up guidance. (#390, #395)
- SDK docs now distinguish the published TypeScript SDK from unpublished support surfaces. (#423)
- CI: add the Blacksmith Testbox workflow, configurable build commands, required Linux packages, and truthful build-command exit handling. (#407, #408, #409, #421)
- The starter-list cap only applies when it is actually needed: a catalog that
can be listed at all inside the skills context budget still renders in full
(with descriptions shortened as required) rather than hiding skills, and an
embedder that installs no
skills.listtool always gets the complete list rather than a truncated one it cannot search past. - Deferring skills is never silent. Whenever the starter cap holds skills back, the session emits a warning naming how many skills are shown, how many exist, and that the rest stay searchable.
- The
## Skillsintro no longer claims the list is incomplete when it is complete, and no longer points atskills.liston threads where that tool is not installed. - The per-turn ranked skills fragment carries the usage rules itself when no
## Skillsdeveloper block was emitted. Core builds that block from the host skill outcome, so a catalog served entirely by remote or executor providers used to leave the model with bare skill lines, no usage rules, and a reference to a section that did not exist. - The average description-truncation telemetry is no longer diluted by the full catalog size, which rounded real per-skill truncation down to zero on large catalogs and disarmed the truncation warning.
- The per-turn ranked skills fragment no longer repeats the
How to use skillspreamble already present in the developer-message skills block, saving roughly 2.5k characters on every turn that matches a skill. - Building the host skill catalog is no longer quadratic. It ran on every turn and de-duplicated with a linear scan per insert over long common-prefix filesystem paths.
- Auth-profile auto-switch now resumes the interrupted turn on the new profile.
When a turn fails on a rate-limited profile and no usage reset is available,
the agent switches to a healthier profile and automatically re-runs the failed
request, instead of switching silently and forcing the user to re-type
go. - Auto-switch selection preserves each cached profile's server-reported reset time, so exhausted profiles are ranked by their real reset instead of being treated as reset-unknown. When every alternate profile is also rate-limited, the agent no longer switches onto an exhausted profile and instead reports the earliest reset time so the user knows when a profile becomes usable again. (#391, #406)
- App server: automatic standalone-updater checks now install and re-exec only the updater; they never stop or restart the shared app-server, so active remote-control WebSocket sessions are not reset. (#425, #427)
- Auth: scope usage-cache invalidation to the profile that was relogged. (#410)
- Goals: harden blocked-goal hold semantics and durable admission. (#379)
- TUI: preserve queued messages and flush the intended steer. (#411)
- Tools: reject first-party tools that collide with the reserved
image_gennamespace before sending a provider request. (#389) - Models: normalize the
ultrareasoning-effort alias consistently. (#405)
Tag: rust-v0.1.77
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.77
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.76...rust-v0.1.77
Release headlined by multi-agent orchestration upgrades: the parent agent is
now auto-notified when a sub-agent completes (wake-if-idle, with an honest wait
and follow-up guidance), spawn_agent can pick any model, provider, and
reasoning effort per sub-agent, and a running goal can be paused and resumed. It
is paired with TUI polish — per-reset expiry in the banked-reset menu and a
status line that wraps across up to three rows — plus fixes for friendly agent
names in the tree path, compaction on over-window history, platform-independent
fleet_comms hash checks, and ref-scoped release concurrency.
- Core: auto-notify the parent agent when a sub-agent completes (wake-if-idle), with an honest wait and follow-up guidance. (#364)
- Core: let
spawn_agentchoose any model, provider, and reasoning effort for sub-agents. (#385) - Goal: pause and resume a running goal (model-callable and via the
/goalcommand). (#384) - TUI: show the expiry for each banked reset in the interactive menu. (#382)
- TUI: wrap the status line across up to 3 rows before truncating. (#386)
- TUI/Core: give spawned agents friendly names in the tree path (
root/nameinstead ofroot/uuid). (#387) - Core: don't let compaction fail on over-window history; chunk and truncate before summarizing. (#383)
- Hooks: make
fleet_commstrusted-hash checks platform-independent to fix a red Windows Bazel build. (#381) - CI/Release: ref-scope the
rust-releaseconcurrency group so re-tags and releases don't cancel each other. (#380)
Tag: rust-v0.1.76
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.76
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.75...rust-v0.1.76
Maintenance release focused on multi-agent messaging and process reliability: inter-agent messages now deliver over chat-wire providers with mailbox-full surfaced back to the sender, monitor event injection is reliable with no mid-turn drops, and per-session app-servers are reaped when their owning TUI exits. It also stops a false-positive weekly-limit cascade across auth profiles and renders the goal indicator truly inline in the statusline.
- Core/API: deliver inter-agent messages on chat-wire providers and surface a mailbox-full error back to the sender. (#377)
- TUI: render the goal indicator truly inline in the statusline row (
·separated), including the active goal plan. (#373) - Core: make monitor event injection reliable with a queue and wake-if-idle so events are not dropped mid-turn. (#376)
- App server: terminate the per-session app-server when its owning TUI exits so no orphan processes are left behind. (#372)
- Auth: stop a false-positive weekly-limit cascade across auth profiles. (#374)
Tag: rust-v0.1.75
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.75
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.74...rust-v0.1.75
Release headlined by two new model providers — Google Gemini (with Gemini 3.6
Flash and 3.5 Flash-Lite) and xAI Grok 4.5 — paired with multi-agent TUI and
session-resume fixes: the Spawned cell now renders the agent path instead of a
raw, duplicated thread id, wait_agent cell spam collapses into a single
compact completed-agents cell, and resuming a session reloads the running
sub-agent subtree.
- Models: added a Google Gemini provider with the latest Gemini models (Gemini 3.6 Flash and Gemini 3.5 Flash-Lite). (#367)
- Models: added xAI Grok 4.5 to the known-provider model catalog. (#368)
- TUI: render the agent path in the Spawned cell instead of a raw, duplicated thread id. (#371)
- TUI: stop
wait_agentcell spam; keep a single compact completed-agents cell. (#366) - Core: reload the running sub-agent subtree on session resume. (#370)
Tag: rust-v0.1.74
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.74
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.73...rust-v0.1.74
Release headlined by TUI polish and goal-planning ergonomics: a hierarchical
agent-tree path (root/agent/sub-agent) replaces raw thread UUIDs in the
statusline, the login flow becomes a provider → auth-method chooser with
profile-picker fixes, and the automatic goal-plan caps grow larger and
configurable. It is paired with faster session resume, an inline goal-pursuit
statusline indicator, an external-agent child-thread fork fix, and Codewith's
own announcements and tips in place of OpenAI product marketing.
- TUI: render a hierarchical agent-tree path (
root/agent/sub-agent) in place of raw thread UUIDs. (#356) - TUI/CLI: replaced the login flow with a provider → auth-method chooser and fixed the profile picker. (#362)
- Goal: made the per-node goal-plan objective cap configurable (default ~600 words). (#365)
- Branding: replaced OpenAI product-marketing announcements and tips with Codewith's own. (#359)
- TUI: render the goal indicator inline in the statusline row (
·separated) with a distinct color from the session name. (#357) - TUI: clear the composer input after an unrecognized slash command. (#358)
- TUI: fixed an external-agent child-thread fork that failed with "no rollout found" during TUI bootstrap. (#360)
- Goal: raised the default automatic goal-plan cap from 12 to 48 nodes. (#363)
- App server / rollout / TUI: sped up session resume. (#361)
Tag: rust-v0.1.73
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.73
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.72...rust-v0.1.73
Release headlined by an opt-in keep-going / auto-resume mode: a new
/keep-going slash command and a [keep_going] config section let a turn keep
working toward the active goal and auto-resume instead of stopping early. It
ships alongside a /privacy-filter readiness check, a cluster of app-server,
TUI, and usage correctness fixes, and nine Dependabot dependency bumps
(including the rust-toolchain 1.97.0 to 1.97.1 update).
- Keep-going: added an opt-in keep-going / auto-resume mode — a
/keep-goingslash command and a[keep_going]config section that let a turn keep working toward the active goal and auto-resume instead of stopping early. (#353) - Privacy filter: added a
/privacy-filterreadiness check and an opt-in config toggle. (#138)
- App server: hardened
additionalContextboundaries. (#178) - Diagnostics: made diagnostic truncation UTF-8 safe. (#228)
- App server: backported app-server/protocol nullability and legacy-client fixes, and refreshed the schema fixtures. (#279)
- TUI: repaired the thread-routing stack. (#211)
- Usage: recorded prompt cache-write tokens and exact per-response usage. (#330)
- Rust toolchain: bumped from 1.97.0 to 1.97.1, keeping the release workflow in sync. (#343)
- CI: bumped
actions/setup-nodefrom 6.3.0 to 7.0.0. (#344) - CI: bumped
astral-sh/setup-uvfrom 8.3.1 to 8.3.2. (#345) - CI: bumped
taiki-e/install-actionfrom 2.82.10 to 2.83.2. (#346) - CI: bumped
softprops/action-gh-releasefrom 3.0.1 to 3.0.2. (#347) - Rust: bumped
regexfrom 1.12.3 to 1.13.0. (#348) - Rust: bumped
agefrom 0.11.2 to 0.12.1. (#349) - Rust: kept
cpalat 0.15.3; the 0.18.1 bump (#350) was reverted because cpal 0.18 changedSampleRatefrom a tuple struct to a type alias, breaking the macOS-gated audio code. Migratingaudio_device.rsto the cpal 0.18 API is a deferred follow-up. - Rust: bumped
axumfrom 0.8.8 to 0.8.9. (#351) - Rust: bumped
ctorfrom 1.0.7 to 1.0.10. (#352)
Tag: rust-v0.1.72
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.72
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.71...rust-v0.1.72
Release headlined by a fix that restores the model's ability to spawn
subagents: the upstream #23144 deferral is reverted for this fork so the
multi-agent spawn tools are visible to the model again. It is paired with two
statusline improvements — the goal-pursuit indicator now renders inline (locked
on) and a toggleable active-agent (Main [default]) segment — plus an upstream
hardening and correctness cluster and four feature merges (subagent auth
profiles, OpenRouter preflight, rollout alias cleanup, and macOS remote
control).
- Statusline: added a toggleable active-agent (
Main [default]) statusline segment. (#341) - MCP: preserve encrypted content and custom-tool namespaces in tool outputs. (#316)
- Unified exec: bound output collection and parallelize
write_stdin. (#327) - Models: respect per-model reasoning-summary parameter support. (#331)
- Workflows: added explicit user approval for gated workflow steps. (#296)
- Workflows: added a thread workflow delete RPC and wired
/workflow delete. (#300) - Core: select an auth profile for subagent spawn. (#126)
- OpenRouter: preflight the workflow branch auth before running. (#130)
- macOS: wire remote-control status and machine registry management. (#181)
- Multi-agent: restored the model's ability to spawn subagents by reverting the upstream #23144 deferral for this fork; the spawn tools are visible to the model again. (#339)
- Statusline: render the goal-pursuit indicator inline in the statusline (locked on). (#340)
- TUI: ported upstream streaming, status, and reasoning UX correctness fixes. (#328)
- MCP: retry transient streamable-HTTP init and tools-list, and enforce a startup timeout. (#321)
- Compact: retry previous-model remote compaction with the selected model. (#329)
- Core: fork full-history subagents from ephemeral parents. (#298)
- Rollout: removed deprecated conversation-list aliases. (#160)
- Exec server: bound untrusted JSON-RPC input (DoS hardening). (#319)
- Network proxy: keep the MITM CA private signer in memory only. (#324)
- Exec policy: harden forced-
rmdetection and migrate legacy allow rules. (#325)
- Build: added a tiered validation harness to cut PR-drain wall time. (#288)
Tag: rust-v0.1.71
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.71
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.70...rust-v0.1.71
Release headlined by a fix for banked usage-limit resets not surfacing in
/usage, plus usage credit and spend-control visibility, several upstream
adopts, and macOS durable agent attach.
- Usage:
/usagenow surfaces the account credit balance and the spend-control limit, and the usage auto-recovery configuration is documented. (#333) - MCP: MCP client quality-of-life improvements and an
rmcp1.8.0 bump. (#314) - Prompts: adopted upstream system-prompt improvements, merged with the fork's customizations. (#332)
- Core: ported upstream "core small" adopts (shell-snapshot PATH handling, retry logging, and dead-code cleanup). (#320)
- macOS: wired durable agent attach/control and pending interactions. (#132)
- Usage: banked usage-limit resets now surface as available in
/usage. (#336) - Usage: banked usage-limit resets stay visible when the reset-credit ledger refresh degrades, instead of disappearing. (#337)
- Background agent: runs now fail on silent turn errors, and migration-skew guidance is clarified. (#283)
- App server: reject remote images at ingress (SSRF hardening). (#317)
- TUI: cache flex heights per frame and finalized markdown renders. (#326)
- App server: aligned the v2 guidance with the split protocol modules. (#150)
Tag: rust-v0.1.70
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.70
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.69...rust-v0.1.70
Feature release delivering the unified Infinity Agent tool-policy and attestation layer.
- Policy: unified the Infinity Agent tool policy and attestation onto a single
fail-closed enforcement path. A signed (ed25519)
VerifiedToolPolicyenvelope is now the single source of truth for theinfinity-agenttool policy: the tool router plans only the exact signed allowlist, dispatch-time rechecks reject any tool not authorized by the verified process policy, and construction fails closed when no policy is bound or the system trust key is missing. Consolidates the previous duplicateToolsPolicyenum onto the singleToolPolicyenum (ConfigRequirementsgainsallowed_tool_policies+infinity_agent_trust_key), derives the auth-capsule capability document from the enforced allowlist, and — under the Infinity Agent policy — disables auth-profile auto-switch, usage self-heal, session recap, optional features, external instructions, history, and telemetry, forbids named auth profiles, and constrains MCP bridges to signed, credential-free HTTPS sources. (#307)
Tag: rust-v0.1.69
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.69
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.68...rust-v0.1.69
Release rolling up the features, fixes, and test/CI work merged since 0.1.68: a Kimi (Moonshot) subscription provider, an external-agent ACP adapter seam, documented OpenAI context windows, mailbox-dispatcher hardening, a read-only auth-profile crash fix, goal-plan resume, and assorted protocol/state fixes, plus a clean rustfmt pass to keep CI green.
- Model providers: added a Kimi (Moonshot) subscription login provider. (#297)
- External agents: a common ACP (Agent Client Protocol) adapter seam so external-agent vendors share a single integration surface. (#285)
- State: backfill managed worktree path keys. (#266)
- App server: the mailbox dispatcher now acknowledges mailbox claims before waking and hardens dispatcher ownership, preventing duplicate or lost claim handling. (#280)
- Models: OpenAI API models now report their documented context windows instead of a stale fallback (for example the GPT-4.1 family's 1,047,576 window and the current GPT-5.x windows). (#281)
- Login: auth-profile directory setup now tolerates a read-only
CODEWITH_HOMEby classifying read-only and permission-denied filesystem errors, so preflight/health runners no longer crash on immutable homes. (#284) - Goal plans: deferred goal-plan nodes now resume after an independent node completes instead of stalling. (#289)
- Protocol: preserve the originating HTTP status for
UnexpectedStatusturn errors. (#276) - Schedules: derive a schedule's
last_completed_atfrom completed runs only. (#277) - merge-pr: made preflight checks robust across
ghCLI versions. (#275) - Core: repaired a broken
feedback_tagsdoctest inutil.rs. (#292) - Formatting: reapplied
cargo fmt(imports_granularity=Item) across code merged since 0.1.68 so thecargo fmt --checkandjust fmt-checkCI gates pass. (#308)
- Model providers: added cross-provider integration coverage. (#293)
- SDK/CI: added bun and npm install smoke tests for the TypeScript SDK. (#287)
- CI: added a PR-drain sandbox template for E2B. (#270)
- CI: pin the workspace root in the apply_patch move-traversal test for the Bazel sandbox. (#282)
- CI: removed unsupported v8 rust-toolchain inputs. (#240)
- Docs: documented building codex-rs on remote sandboxes (Blacksmith) instead of locally. (#305)
- Docs: added an open-codewith runtime development skill. (#269)
Tag: rust-v0.1.68
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.68
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.67...rust-v0.1.68
Hotfix release fixing a standalone image-generation runtime 400 and restoring a clean workspace compile.
- Image generation: moved the standalone imagegen tool off the Responses-API
reserved
image_gennamespace to the non-reservedimagesnamespace (new wire nameimages.imagegen, code-mode nameimages__imagegen). This fixes a runtime400 Function 'image_gen.imagegen' is reserved for use by this modelerror while keepingimage_genin the reserved-namespace allowlists. - thread-manager-sample: added the missing
tools_policyfield toConfig, restoring a clean workspace compile.
Tag: rust-v0.1.67
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.67
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.66...rust-v0.1.67
Hotfix release for ChatGPT subscription GPT-5.6 model compatibility. This
release carries forward the banked usage-reset controls and remote-compaction
history preservation shipped in 0.1.66.
- Model selection: removed the unsupported bare
gpt-5.6entry from ChatGPT model catalogs and defaults, and normalized exact legacy ChatGPT/OpenAI selections togpt-5.6-solacross startup, resume, per-turn switching, and spawned agents. OpenAI API-key profiles and custom-provider model semantics remain unchanged.
Tag: rust-v0.1.66
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.66
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.65...rust-v0.1.66
Hotfix release for banked usage-limit resets and remote-compaction history preservation.
- Usage limits:
/usagecan now redeem an available banked reset, and a new default-off/configtoggle can automatically redeem an exact weekly reset after Codewith revalidates the account, profile, credit, exhaustion window, and reset generation immediately before consumption.
- Compaction: V1 and V2 remote compaction now stop when the provider rejects the request for context overflow, preserving the complete unsummarized semantic history and leaving live history unchanged instead of deleting an older prefix before retrying.
Tag: rust-v0.1.65
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.65
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.64...rust-v0.1.65
Hotfix release for GPT-5.6 Sol backend version gating.
- Model selection: Codewith now advertises upstream Codex API compatibility
0.144.4instead of the fork's low0.1.xpackage version, sogpt-5.6-solrequests do not fail with the backend "requires a newer version of Codex" gate. - Model discovery: ChatGPT model catalog refreshes now use the same advertised Codex API compatibility version for model-list cache/version checks, keeping model availability aligned with request headers.
Tag: rust-v0.1.64
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.64
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.63...rust-v0.1.64
Hotfix release for ChatGPT subscription context-window compaction.
- Compaction: ChatGPT-authenticated OpenAI GPT-5.4, GPT-5.5, and GPT-5.6 model metadata now clamps API-sized fallback or stale remote context windows to the subscription-sized 272K raw window by default, so auto-compaction uses the 244.8K default compact threshold and the 258.4K effective full-window cap instead of waiting for a 1M-class API budget.
- Status: ChatGPT profile switches and resumed/forked token-count replay now refresh or clamp stale API-sized context-window denominators while preserving smaller backend-reported ChatGPT replay windows.
Tag: rust-v0.1.61
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.61
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.60...rust-v0.1.61
Hotfix release for auth-profile switch status context windows.
- Status: sessions opened under a non-API/ChatGPT profile now refresh
token-count context windows immediately after switching to an OpenAI API-key
profile, so
/statusstops showing the prior 258K denominator and reflects the API model's 1M-class window without waiting for a new session.
- Dependencies: updated
crossbeam-epochto0.9.20to resolveRUSTSEC-2026-0204from the release gate.
Tag: rust-v0.1.60
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.60
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.59...rust-v0.1.60
Hotfix release for restored OpenAI API-key profile status context windows.
- Status: resumed and forked sessions now refresh restored token-usage context
windows from the active model metadata for API-key profiles, so
/statusdoes not continue displaying an old 258K denominator after a GPT model is configured with a 1M-class context window. ChatGPT login profiles preserve their replayed ChatGPT-catalog context behavior.
Tag: rust-v0.1.59
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.59
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.58...rust-v0.1.59
Hotfix release for OpenAI API-key profile context-window metadata.
- Provider model metadata: OpenAI API-key and provider-auth profiles now keep
the bundled GPT-5.5 and GPT-5.4 1.05M context-window values when stale
remote or cached OpenAI model metadata reports a smaller window. This fixes
/statusshowing an effective 258K context denominator for API profiles instead of the effective 998K window after the configured 95% cap. ChatGPT login profiles continue to use the remote ChatGPT model catalog as the authoritative source.
Tag: rust-v0.1.57
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.57
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.56...rust-v0.1.57
Hotfix release for the loop-worker fork-conflict failure class, plus a user-facing agent max-threads control and the CI npm publish repair (#121, #123).
- Core: a full-history subagent fork (
fork_context=trueon stable v1,fork_turns=allon multi_agent_v2) combined withagent_type,model, orreasoning_effortno longer hard-rejects the spawn. Those overrides were already ignored on the full-fork path (the child config is built from the parent), so the reject was converted into a notice of the ignored fields (logged viatracing::warn) and the fork proceeds with inherited values. This removes the conflict-class errors that were failing routed loop workers in production; tool-schema descriptions now state the fields are inherited on a full-history fork. (#121) - Release: the
publish-npmjob now authenticates with theNODE_AUTH_TOKENrepository secret. npm trusted publishing (OIDC) was never configured for the@hasna/codewith*packages, so no fork release had ever published from CI; every prior npm release was published by hand. (#123)
- TUI:
/configgains an agent max-threads control for the existing[agents] max_threadscap (preset choices, persisted toconfig.toml, live-applied to the session), replacing hand-editing of~/.codewith/config.toml. Hidden whilemulti_agent_v2governs threads. (#121)
Tag: rust-v0.1.56
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.56
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.55...rust-v0.1.56
Stability and provider-compatibility release. Follows 0.1.55 with 17 merged pull requests (#90-#107) focused on sqlite state-layer contention, chat and responses API compatibility across providers, TUI robustness, and the release toolchain pin that unblocks reproducible platform builds.
- State layer: writes are serialized on a single-connection pool to eliminate
intra-process
SQLITE_BUSY (517)under concurrent sessions; hot write paths (mailbox, logs, rollout) retryBUSY_SNAPSHOTand useBEGIN IMMEDIATE. - Chat-Completions tool-calling hardened for compatibility providers; dropped
SSE items are now observable and
function_call_arguments.deltais handled; reasoning is read and replayed on the chat-completions path. reasoning_effort: nonemaps tolowfor Cerebras/NVIDIA chat/completions; namespace tools are disabled for the xAI responses API; Geminithought_signatureround-trips and the strayclient_versionquery parameter is dropped.- Provider catalog: ollama and lmstudio built-in providers restored; known provider-model metadata and fallbacks refreshed.
- TUI:
/forkdegrades gracefully on a thread with no rollout yet;/appssurfaces the underlying app/list failure reason; Enter dispatches the exact slash alias (/exitno longer opens/experimental). - Core: router
FunctionCallErrorauto-log downgraded from error to debug; arg0 helper-symlink spawn race closed under concurrent sessions. - Release: Rust toolchain pinned to 1.96.1 in the release workflows for reproducible cross-platform builds.
- State: default INFO-level log capture, bounded HTTP traces, off-transaction prune, and WAL checkpoints across all pools.
Tag: rust-v0.1.55
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.55
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.54...rust-v0.1.55
Consolidation release: merges all outstanding work since 0.1.51 (40 pull requests, 17 branches, and the 0.1.52-0.1.54 release lineage whose tags never published). Versions 0.1.52-0.1.54 were tagged but never reached npm due to release-pipeline failures fixed here.
- Release pipeline: libcap-2.75 musl download now falls back across verified mirrors (kernel.org -> OSUOSL -> Debian) with mandatory checksum; macOS builds use CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16 and the aarch64 primary runs on macos-15-xlarge, ending the 3-hour timeouts that killed 0.1.52-0.1.54.
- Goals state: databases stamped by published 0.1.48 are repaired before migration, preventing a permanent VersionMismatch(5) that disabled the sqlite state layer (threads, schedules, mailbox, goals) after upgrade.
- OpenRouter GLM-5.2 metadata restored (parallel tool calls, High/XHigh reasoning presets, gpt-oss-120b as default fallback).
- Usage-profile broker: scheduled dispatches now defer while all sibling profiles are cooling down instead of feeding the failure circuit breaker.
- Remote and sandboxed filesystems support symlink-safe reads, so project instructions (CODEWITH.md/AGENTS.md) load in remote sessions.
- Mailbox: queued-input API restored; delivery defer rolls back on enqueue rejection; delivery-policy parsing matches the SQL claim filter; queued context delivery is bounded.
- Loops/schedules: deferred runs during usage waits; stale-scheduler guards; live-session owner routing; scheduled turns no longer truncate interactive session history.
- macOS app: dock re-open restores the hidden window; deploy script bundles a real CLI binary with CLI-derived bundle version.
- /teach, /variant, /usage, /pair TUI commands; slash-command alias dedupe.
- Webhook event inbox; session PR worktree mode; nested loops to depth five; goal plan appends; approval-gated agent MCP management; compact CLI output; experimental smart suggest; CODEWITH.md native instruction imports.
- Auth profile usage health checks and hardened usage-profile autoswitch.
- Codewith bridge adapter surfaces (profile list --json, authProfile in thread inventory); workflow model routing contract; sourced additional context.
- Security hardening: canonical PR-mode cwd, thread-monitor path handling, remote-control-origin RPC gating, mission-control model tool hardening, update-RPC import blocking, symlinked project-instruction rejection, remote-control credential handling.
- macOS app: navigation data and session controls, profile settings flows, visual system aligned with the Hasna dashboard.
- Release CI: sccache (fail-open) across release workflows for warm-cache builds from 0.1.56 onward.
- Node supply-chain advisories patched; anyhow 1.0.103 (RUSTSEC-2026-0190); quick-xml advisories documented as compile-time-only exposure; gitleaks config with tightly-scoped test-canary allowlist.
- Windows argument-comment-lint CI job fails on aws-lc-sys feature probes under clang-cl (pre-existing; release builds unaffected).
- sccache resolves its latest release at install time (fail-open; pin planned).
- Remote no-follow reads have a documented TOCTOU window between metadata and read RPCs.
- Recovered loop-driven and long-running turns from context-window overflow errors by compacting mid-turn and retrying once before surfacing the failure.
Tag: rust-v0.1.54
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.54
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.53...rust-v0.1.54
- Tuned macOS primary release builds to override the workspace release
codegen-units = 1setting, preventing the full CLI release build from timing out before npm publishing can run.
Tag: rust-v0.1.53
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.53
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.52...rust-v0.1.53
- Preserved durable resumed thread cwd, workspace roots, permission profile,
auth profile, model settings, approval policy, and reasoning effort unless a
codewith exec resumecaller explicitly overrides them. - Restored permission profiles from persisted rollout history when resuming headless threads, preventing ambient caller sandbox defaults from replacing the original agentic work sandbox.
- Fixed the human startup summary for resumed
codewith execsessions so it reports the effective resumed session configuration instead of the local caller process defaults.
Tag: rust-v0.1.52
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.52
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.51...rust-v0.1.52
- Added explicit durable headless execution flags for
codewith exec(--durableand--persist) while keeping persistent execution as the default and rejecting conflicting--ephemeralusage. - Preserved GPT-5.5 model metadata at the full 272k context window and added focused regression coverage for GPT-5.5 context-window handling and auto-compact behavior.
Tag: rust-v0.1.51
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.51
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.50...rust-v0.1.51
- Added a SQLite-level guard so already-running stale Codewith scheduler
processes cannot claim a
/loopthat belongs to a fresh live interactive session, preventing background execution from stealing turns that should be visible in the TUI. - Hardened manual
/looprun-now claims with the same live-owner protection, including regression coverage for legacy claim suppression, foreign live-owner rejection, and owner-scoped successful claims.
Tag: rust-v0.1.50
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.50
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.49...rust-v0.1.50
- Fixed fresh interactive
/loopsessions so creating a loop materializes the thread rollout before the loop can fire, allowing cold resume and cross-process recovery instead of failing withthread not found. - Routed due scheduled loop claims away from other local Codewith processes while a fresh live owner is active, so background pollers cannot consume a loop that should inject into the visible interactive session.
- Added regression coverage for fresh no-turn loop materialization, foreign active-owner claim suppression, stale-owner recovery, and repeated visible scheduled-turn injection.
Tag: rust-v0.1.49
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.49
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.47...rust-v0.1.49
- Corrective release that intentionally supersedes
0.1.48. The0.1.48publish came from a broad spark01 preservation branch and could trigger local SQLite migration checksum failures; this release returns to the migration-safe0.1.47base and reapplies the loop and mailbox fixes.
- Hardened scheduled
/loopexecution so usage waits and busy threads defer runs without incrementing failure counts, then re-arm correctly after retry. - Restored repeated interval loop injection as visible interactive turns, with regression coverage proving each firing creates a fresh turn, persists user and assistant messages, and submits a distinct model request.
- Reapplied mailbox dispatcher fixes on the safe migration base, including queued mailbox input handling and local active-session migration stability.
Tag: rust-v0.1.46
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.46
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.45...rust-v0.1.46
- Hardened scheduled Codewith runs so usage-profile handoff, auth-profile fallback, and usage-exhaustion retry timing are resolved before a scheduled turn starts.
- Hardened scheduled-run turn bookkeeping so immediate approval, permission, or startup failures do not lose the run mapping before the model-side wait can resume.
- Improved scheduled-run failure messages with contextual error reporting and structured handling for turn errors.
- Clarified the scheduled-run prompt so cadence text is treated as schedule context and durable follow-up work uses native goal tools rather than accidental nested schedules.
- Published
@hasna/codewith0.1.46as a scheduled-run hotfix from thefix/loops-runtime-0.1.46release branch. - Left
@hasna/codewith-sdkand@hasna/codewith-responses-api-proxyat0.1.45; those packages are staged by the release packaging script from source manifests that intentionally keep template versions. - Reconciled the missing GitHub Release metadata for
rust-v0.1.46as a metadata-only, non-latest release during the 2026-06-24 release-compliance follow-up; no platform binaries, installers, checksums, or DotSlash artifacts were attached to this hotfix release.
Tag: rust-v0.1.45
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.45
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.43...rust-v0.1.45
- Prepared the branch and worktree drain release after merging the completed
non-macOS backlog PRs into
main. - Bumped the Codewith CLI, Rust workspace, and npm package metadata to
0.1.45.
- Included the merged drain hardening for queued rules, session machine context, schedule auth recovery, pending interaction responses, provider usage accounting, managed worktree cleanup, SQLite feedback log churn, TUI PR surfaces, statusline summaries, and goal title display.
- Moved the x86_64 macOS release build to the
macos-15-xlargerunner so the signed platform package matrix can complete.
- Rebuilt and smoke-tested the Linux ARM64 release binary and npm package before
publish; the
rust-releaseworkflow builds and publishes the remaining signed platform packages from this tag.
Tag: rust-v0.1.43
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.43
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.42...rust-v0.1.43
- Added
/tmux --session <name> --window <name>handoff support so an active Codewith TUI can move into a specific existing tmux session and window, while preserving the existing automatic session creation behavior when no target is supplied. - Added workflow run management surfaces for creating, listing, starting, pausing, resuming, and cancelling workflow runs from the TUI and model-visible workflow management tool.
- Added
/changelogin the TUI so release notes are available inside the product. - Added Mission Control schedule visibility and schedule-aware empty states.
- Added Z.ai GLM-5.2 model metadata with the documented
glm-5.2model ID, 1M context window, text-only input modality, native tool/web-search support, and GLM-5.2 reasoning presets.
- Promoted workflows into the experimental feature menu while keeping them disabled by default.
- Updated model instruction templates and catalog metadata to ask models for effort estimates when planning work.
- Improved loop and schedule manager rows so prompts are the primary label and status/spec details stay in row descriptions.
- Aligned Claude external-agent auth with Claude Agent SDK guidance by using API-key/provider environment auth for launches and hiding Claude.ai from the generic new subscription-profile picker.
- Hardened workflow lifecycle handling around run control, boxed display responses, and model-facing unavailable states for unsaved threads.
- Hardened app-server daemon startup so embedded/local daemon starts can use the active Codewith binary while managed installs still use the managed binary.
- Hardened background-agent managed worktree release so active background-agent leases use the lease release path and cannot be bypassed by generic worktree detach or release.
- Hardened background-agent stop/delete ordering, diagnostics pending counts, and rollout/thread validation.
- Hardened durable background-agent supervisor attach/stop behavior for delivered interactions, delete-requested runs, and unclaimed queued runs.
- Preserved usage accounting when resuming blocked or usage-limited goals.
- Kept usage self-heal retry tests active even when retry behavior is gated by config defaults.
Tag: rust-v0.1.42
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.42
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.41...rust-v0.1.42
- Fixed strict Responses API schemas for Mission Control tools so optional arguments are represented as nullable required fields and invalid strict tool schemas are rejected locally before reaching the provider.
Tag: rust-v0.1.41
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.41
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.40...rust-v0.1.41
- Added shared collaboration surfaces for Mission Control, managed worktrees, active sessions, workflows, mailboxes, pending interactions, and local session discovery through the app-server API and TUI.
- Added durable workflow and worktree state, including managed worktree assignment, cleanup policies, workflow plan projections, and machine registry support.
- Added interactive TUI flows for
/worktree, Mission Control, workflow displays, usage profile routing, and goal-plan detail navigation.
- Promoted the Mission Control and worktree app-server entrypoints from experimental-only APIs to stable protocol surfaces.
- Bounded goal-plan event payloads so large plans stay useful without flooding model-visible event context.
- Hardened worktree assignment rollback, stale owner cleanup, agent attachment validation, workflow prompt bounds, and cancelled goal-plan status handling after adversarial review.
Tag: rust-v0.1.40
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.40
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.39...rust-v0.1.40
- Added model gateway metadata and gateway-aware model/provider browsing, including OpenRouter routing details in the app-server API and TUI pickers.
- Added durable goal-plan storage, app-server plan listing, AI goal-plan tools, and a TUI goal manager view for plan progress.
- Added external-agent readiness checks, cancellation, safer readable roots, and hardened Cursor, Claude, and Grok Build flows.
- Added
Shift+Tabpermission preset cycling with/keymapremapping support.
- Preserved auth-profile permission choices across profile switches and added profile-targeted rate-limit reads for fresher profile picker usage state.
- Reorganized config popups into clearer sections and expanded common config toggle coverage.
- Updated built-in provider/model metadata and model availability display.
Tag: rust-v0.1.39
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.39
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.38...rust-v0.1.39
- Superseded the partial
0.1.38npm wrapper so the final launch package can publish a fresh root version with the complete platform optional dependency matrix.
Tag: rust-v0.1.38
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.38
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.37...rust-v0.1.38
- Superseded
0.1.37with a smaller Apple Silicon native npm package after the initial Darwin tarball metadata published but the tarball blob was not fetchable from the registry.
Tag: rust-v0.1.37
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.37
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.36...rust-v0.1.37
- Added
/loop statsand/schedule statsslash command handling with automatic schedule selection when only one matching item exists. - Included schedule run statistics in loop management tool responses.
- Improved auth-profile picker descriptions with plan and email details, compact separators, and a shared action hint.
- Recognized the newer scheduled-prompt guardrail text while still hiding legacy scheduled-prompt scaffolding from user-visible message history.
- Published matching native Bun packages for the machines updated during this release, including Apple Silicon installs.
Tag: rust-v0.1.36
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.36
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.35...rust-v0.1.36
- Kept auth-profile usage data fresh in the profile picker while the TUI remains open.
- Simplified selected auth-profile helper text and hid unknown usage placeholders when no usage data has been loaded yet.
- Preserved the selected profile row when usage data refreshes while the profile picker is open.
Tag: rust-v0.1.35
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.35
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.34...rust-v0.1.35
- Added external subscription auth profiles for Claude.ai, Cursor, and Grok.
- Added Claude Code as an external-agent runtime alongside Cursor and Grok Build.
- Added provider metadata to auth profile listings and AI-callable profile management responses.
- Claude Code external-agent runs now require a matching active Claude.ai subscription profile before launching the Claude CLI.
- Claude Code external-agent launches preserve stable local Claude config paths without copying provider API keys.
- Slash command results remain flat and top-level while showing useful aliases,
/appswhen available, and/debug-config.
- Fixed release workflow notes so stable
rust-v0.1.*tags read the matching section fromCHANGELOG.md. - Fixed external-agent sandbox selection for permission profiles that require direct runtime enforcement.
- Preserved legacy Cursor and Grok Build external-agent CLI auth paths when no matching Codewith subscription profile is selected.
- Hid internal memory debug slash commands from the regular command picker.
- Refined Codewith TUI accent/shimmer styling for better contrast.
Tag: rust-v0.1.34
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.34
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.33...rust-v0.1.34
- Restored the flat, one-level slash command picker.
- Removed nested slash command category rows and trailing category paths such
as
/session/. - Kept slash command aliases hidden by default while showing real top-level
commands for an empty
/prompt.
Tag: rust-v0.1.33
Release: https://github.com/hasna/codewith/releases/tag/rust-v0.1.33
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.33
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.32...rust-v0.1.33
- Added an AI-callable goal resume tool so the model can resume paused, blocked, or usage-limited goals when appropriate.
- Rejected attempts to resume budget-limited goals without changing the token budget.
- Avoided token-accounting and event side effects when a budget-limited goal resume is rejected.
Tag: rust-v0.1.32
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.32
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.31...rust-v0.1.32
- Added app-server active-session peer registry and messaging APIs.
- Added lean TUI active-session and agent commands.
- Added Codewith authentication profile login, persisted profile ordering, usage hints, and active profile switching.
- Fixed scheduled loop run visibility.
- Hardened active-session delivery when a target session is no longer loaded.
- Repaired main merge fallout in app-server and TUI test/config paths.
- This was a large main-line repair release after merging the Codewith release line and upstream sync work back together.
Tag: rust-v0.1.31
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.31
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.30...rust-v0.1.31
- Fixed Xiaomi MiMo provider routing across core turns and app-server thread settings, starts, and turn starts.
Tag: rust-v0.1.30
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.30
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.29...rust-v0.1.30
- Added the durable background-agent runtime foundation and app-server/CLI/TUI management surfaces.
- Added the external-agent app-server runtime bridge.
- Added a config MCP self-heal workflow.
- Added xAI as a built-in model provider.
- Added monitor management APIs and slash-command controls.
- Added slash command fuzzy ranking.
- Restored the canonical Codewith changelog after
0.1.29reduced it to a release-page pointer. - Refreshed rate-limit status completions by auth profile.
- Added fast Rust test workflow guidance.
Tag: rust-v0.1.29
Release: https://github.com/hasna/codewith/releases/tag/rust-v0.1.29
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.29
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.28...rust-v0.1.29
- Expanded TUI session-management surfaces, including terminal/tmux handoff, UI dynamic tools, status controls, and profile/session actions.
- Added an external-agent runtime bridge for app-server-managed agent runs.
- Added provider hosted-search metadata and hosted tool specs.
- Added monitor manager creation support.
- Hardened monitor and schedule runtimes in app-server.
- Completed hosted provider tool metadata.
- The
CHANGELOG.mdfile in this tag only pointed to the GitHub Releases page; this entry was reconstructed from the tagged git history and npm metadata.
Tag: rust-v0.1.28
Release: https://github.com/hasna/codewith/releases/tag/rust-v0.1.28
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.28
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.27...rust-v0.1.28
- Continued auth profile auto-switching across profiles instead of stopping after the first profile transition.
Tag: rust-v0.1.27
Release: https://github.com/hasna/codewith/releases/tag/rust-v0.1.27
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.27
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.26...rust-v0.1.27
- Added the durable background-agent runtime foundation, including the
codex-rs/background-agentcrate, daemon, supervisor, and process lifecycle handling. - Added persisted background-agent state for runs, events, snapshots, interactions, worktrees, and process handles.
- Added app-server background-agent APIs for starting, listing, reading, attaching, detaching, stopping, deleting, reading events, responding to pending interactions, and retrieving daemon diagnostics.
- Added CLI controls for starting, listing, reading, attaching to, viewing logs for, stopping, deleting, and diagnosing background agents.
- Added TUI background-agent slash surfaces through
/agent,/background-agent, and/bg-agent.
- Gated optional release follow-up work so it does not block the package path unexpectedly.
Tag: rust-v0.1.26
Release: https://github.com/hasna/codewith/releases/tag/rust-v0.1.26
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.26
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.25...rust-v0.1.26
- Reduced Linux release build pressure and made artifact compression faster.
- Gave cold release builds more headroom.
- Allowed unsigned macOS publishing for the Codewith release path.
- Satisfied provider model checks required by the release gate.
Tag: rust-v0.1.25
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.25
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.24...rust-v0.1.25
- Added Anthropic as a built-in model provider.
Tag: rust-v0.1.24
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.24
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.23...rust-v0.1.24
- Added Xiaomi MiMo as a built-in model provider.
- Documented the fast Codewith release gate policy.
Tag: rust-v0.1.23
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.23
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.22...rust-v0.1.23
- Merged upstream Codex through the V8 update while preserving Codewith provider, auth-profile, and release behavior.
- Increased Bazel and argument-comment-lint timeouts for slower CI jobs.
- Adjusted Linux ARM test and archive jobs to reduce release pressure.
- Preserved provider auth and active provider state through compaction.
- Reported auth profile settings through app-server thread settings.
- Fixed provider model cache metadata, identity, source, and TTL behavior.
- Hardened Windows PTY, Guardian, remote-control, websocket, schedule, hook, and remote exec tests.
- Stabilized fork-specific CI snapshots, codespell checks, argument comments, advisory baselines, and platform-specific imports.
Tag: rust-v0.1.22
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.22
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.21...rust-v0.1.22
- Refreshed NVIDIA fallback model metadata.
Tag: rust-v0.1.21
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.21
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.20...rust-v0.1.21
- Added thread monitor workflows.
Tag: rust-v0.1.20
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.20
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.19...rust-v0.1.20
- Refreshed provider fallback models.
Tag: rust-v0.1.19
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.19
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.18...rust-v0.1.19
- Repaired provider switching.
Tag: rust-v0.1.18
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.18
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.17...rust-v0.1.18
- Added the provider-scoped metadata catalog.
- Clarified MCP startup failures.
Tag: rust-v0.1.17
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.17
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.16...rust-v0.1.17
- Preserved the selected model provider for turns.
Tag: rust-v0.1.16
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.16
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.9...rust-v0.1.16
- This is an aggregate tagged release covering the npm-only
0.1.10through0.1.15publications. The entries below preserve the per-publication npm history, while this tagged section records the complete tag delta fromrust-v0.1.9torust-v0.1.16. - No additional user-facing delta beyond release/tag catch-up was found between
the committed
0.1.14release bump and the0.1.16tag in the available refs.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.15
- Historical npm publication. No matching local tag or committed release bump
was found in the available refs; changes are covered by the surrounding
0.1.14to0.1.16release range.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.14
- Isolated Codewith home in integration tests.
- Added coverage for shell and network permission hooks.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.13
- Preserved live schedule leases through expiry.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.12
- Recomputed recurring next runs when loops resume.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.11
- Expired completed one-time schedules.
- Scoped schedule and loop actions to the current thread.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.10
- Added Codewith workflow skills.
- Made schedules one-time events.
Tag: rust-v0.1.9
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.9
Compare: https://github.com/hasna/codewith/compare/rust-v0.1.0...rust-v0.1.9
- Added thread schedule controls.
- Added an auth profile status item.
- Added spec-plan loop tools, TUI approval overlay updates, and skills rendering.
- Switched provider selection from prefixed model IDs to explicit providers.
- Bundled third-party licenses in the Codewith package layout.
- Wrapped the passive footer status line.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.8
- Advertised a Codex API-compatible version during login so
gpt-5.5is not incorrectly gated.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.7
- Completed the broad Codex to Codewith rebrand across
codex-rs, CI, scripts, docs, root config, and release metadata. - Migrated project configuration and skill paths from
.codexto.codewith. - Rebranded the Python and TypeScript SDK surfaces to Codewith.
- Resolved Codewith package layout directories while keeping legacy Codex fallback paths.
- Preferred Codewith instruction paths.
- Stabilized cross-platform CI expectations and remote unified exec tests.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.6
- Historical npm publication. No matching local tag or committed release bump
was found in the available refs. Available history around this publication is
the early release-workflow hardening window after
rust-v0.1.0.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.4
- Historical npm publication. No matching local tag or committed release bump was found in the available refs. Available history before this npm timestamp includes native binary exposure, Codewith package metadata and release workflow hardening, runtime/docs alignment, bundled prompt branding, model catalog fixes, and CI/test stabilization.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.3
- Aligned repository metadata with Codewith.
- Completed the Codewith runtime rename.
- Preferred
.codewithproject instructions.
- Refreshed stale workspace fixtures.
npm: https://www.npmjs.com/package/@hasna/codewith/v/0.1.2
- Rebranded the CLI as Codewith.
- Reconstructed raw command history.
- Preserved large code-mode text output.
- Stabilized scheduled loop acknowledgements.
- Historical Codewith release bump found in git history. npm no longer lists
this version in the current
versionsarray.
Tag: rust-v0.1.0
Compare: https://github.com/hasna/codewith/compare/20fedafff8...rust-v0.1.0
- This is the first stable Codewith
rust-v0.1.*tag. It aggregates the early fork work and overlaps the first npm publications, whose registry history is less complete than the tag history.
- Added scheduled loop tasks.
- Added provider picker and OpenRouter model support.
- Added provider-scoped model selection.
- Added auth profile switching, concurrent auth profiles, and session auth profile switching.
- Added the
/configpopup. - Added explicit goal replacement.
- Added OpenRouter cache routing and live pricing metadata.
- Packaged the private
iappcodexCLI and pointed early package metadata at the fork repository. - Rebranded the CLI as Codewith.
- Shared config value persistence.
- Included local agent state.
- Disabled managed automatic update prompts for the fork.
- Hardened auth-home isolation for the private package.
- Refreshed status after auth profile switches.
- Used musl Linux platform artifacts for npm packages.
- Stabilized stack-heavy TUI tests.
Use this process when preparing or auditing Codewith release notes:
- Determine published npm versions:
npm view @hasna/codewith versions --jsonandnpm view @hasna/codewith time --json. - Determine relevant Codewith tags:
git tag --list 'rust-v0.1.*' --sort=v:refname. - Check GitHub release coverage:
gh release list --repo hasna/codewith --limit 40. - For each release, choose the previous Codewith boundary. Prefer the previous
stable
rust-v0.1.*tag; when npm publications exist without tags, add explicit npm-only entries or an aggregate tagged-release note. - Audit
git log <previous-boundary>..<new-boundary>and filter out upstream-only noise with--cherry-pick,--right-only, and first-parent history as needed. - Classify user-facing changes under Added, Changed, Fixed, Security, Release, Documentation, Tests, or Notes. Do not paste raw commit dumps.
- Record evidence gaps explicitly when a published npm version has no matching local tag or committed release bump.
- Do not record uncommitted dirty-worktree state as release notes. Move active
work into
Unreleasedonly after it is committed or otherwise has a durable review boundary. - Before every public
rust-v*release, verify thatcodex-rs/Cargo.toml,codex-cli/package.json, therust-v*tag, GitHub Release name, and npm version agree. - The release workflow or release operator must stop if the matching
CHANGELOG.mdsection is missing. GitHub Release bodies must come from the matching section, not from the tagged release bump commit. - If a release is cut from a release branch, merge or backport the changelog update to the durable branch.