| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: align Go routes and expose workspace and worker state Route OpenCode Go models through their documented Chat, Responses or Messages adapter using one provider roster. Preserve stable gateway headers and known metadata, and reject unproven model protocols before dispatch. Add optional workspace and branch status items using the existing background refresh, including linked worktrees, detached heads and the empty session. Project measured worker usage from the durable ledger into parent results; leave missing usage and unpriced work unknown. Explain the existing read-only command grammar at discovery and denial without changing worker permissions. Isolate the compaction summary-failure test's checkpoint storage. Closes #6112. Closes #6113. Refs #6011, #6015. Validation: npm test 521 passed, 0 failed (75 Node, 446 web); npm run check:web passed. Full workspace/all-features Cargo: 15416 passed, 0 failed, 29 ignored (four local libtest threads). Formatting, workspace/all-targets check and CI-equivalent Clippy passed. Real debug CLI loopback smoke covered all three Go streaming protocols, unknown-model refusal and global instruction symlinks. Release artifact and hosted checks are separate. | 1 天前 | |
fix: route every reqwest client through codewhale_release::tls (#6153) Bare Client::builder()/new() under rustls-no-provider panics before the first provider install. Add a Lint gate (scripts/check-reqwest-builders.py + hermetic test, wired into ci.yml) and sweep the 17 remaining call sites onto tls/platform builders, dropping the hand-installed providers. Gate: test_check_reqwest_builders.py 5/5 ok; check fails with 17 hits before the sweep, passes after. clippy workspace clean. | 12 小时前 | |
fix(build): isolate relocation test directories atomically [skip ci] Parallel relocation tests could choose the same timestamp-based directory. Use the existing tempfile dependency for atomic directory ownership and cleanup, while preserving every build-script relocation assertion. Validation in the release checkout: both build-script tests passed with four test threads and a hermetic home (2 passed, 0 failed, 0 ignored). Workspace formatting and git diff checks passed. Full qualification of the resulting commit remains pending. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> | 1 天前 | |
fix: route every reqwest client through codewhale_release::tls (#6153) Bare Client::builder()/new() under rustls-no-provider panics before the first provider install. Add a Lint gate (scripts/check-reqwest-builders.py + hermetic test, wired into ci.yml) and sweep the 17 remaining call sites onto tls/platform builders, dropping the hand-installed providers. Gate: test_check_reqwest_builders.py 5/5 ok; check fails with 17 hits before the sweep, passes after. clippy workspace clean. | 12 小时前 | |
Repair release inventory, generated facts and platform lint failures Add the cloud-facts crate in dependency order, document signed facts and exact-route usage behavior, regenerate facts/changelog from source, collapse the cloud cache validation guard, and scope Unix-only LSP test mutation to Unix. Validation: 440 web tests passed, 0 failed; web lint passed with 2 existing image warnings, TypeScript and production build passed. Facts/docs checks, version and 24 feature-link receipts, all 22 publish-crate ordering checks and ordering regression script passed. cloud-facts all-target Clippy passed with warnings denied. Full workspace/Windows and corrected DeepSeek tests await combined rebuild; no hosted CI or release claim. | 6 天前 | |
fix: reconcile marketplace presence and OAuth token identity Use one registry-aware marketplace plan across API, slash commands and TUI. Existing names lead to the actual local bundle and its review/manage controls; refuse catalog collisions before downloading and return HTTP 409 for typed installer name conflicts. Preserve trust, enablement and content guards. Compare stored OAuth credentials using their durable expiration, ignoring only the derived countdown. An aged revoked grant must not masquerade as a peer rotation. Retain all token, scope, client, server and absolute-expiry boundaries. Publish the MCP cleanup test receipt atomically before observing completion. Validation: npm test 521 passed, 0 failed (75 Node + 446 web); npm run check:web passed; cargo fmt --all --check passed; 2,174 candidate source blobs verified. Full Rust nextest and Clippy are running, not claimed green by this commit. Targeted marketplace/credential regressions are included in that gate. Refs #6030, #6039, #5929. Release and final binary acceptance remain pending. | 2 天前 | |
fix: align Go routes and expose workspace and worker state Route OpenCode Go models through their documented Chat, Responses or Messages adapter using one provider roster. Preserve stable gateway headers and known metadata, and reject unproven model protocols before dispatch. Add optional workspace and branch status items using the existing background refresh, including linked worktrees, detached heads and the empty session. Project measured worker usage from the durable ledger into parent results; leave missing usage and unpriced work unknown. Explain the existing read-only command grammar at discovery and denial without changing worker permissions. Isolate the compaction summary-failure test's checkpoint storage. Closes #6112. Closes #6113. Refs #6011, #6015. Validation: npm test 521 passed, 0 failed (75 Node, 446 web); npm run check:web passed. Full workspace/all-features Cargo: 15416 passed, 0 failed, 29 ignored (four local libtest threads). Formatting, workspace/all-targets check and CI-equivalent Clippy passed. Real debug CLI loopback smoke covered all three Go streaming protocols, unknown-model refusal and global instruction symlinks. Release artifact and hosted checks are separate. | 1 天前 | |
fix: stabilize continuous sessions and automation recovery Keep active tool schemas stable through emergency compaction, account for retained reasoning, and extract prefix caching into headless Core. Recover missing session stores without reusing lost authority or allowing stale writers to replace the recovered binding; support the session picker too. Coalesce missed automation occurrences without overlap or replay, isolate corrupt siblings, and reconcile only the current runtime ownership scope. Use compact default metrics and consistent composer/rail geometry. Validation on exact source tree 77342d1450a1d9ba004b47522bfbb6ca19e8acdd: - Rust nextest: 13,281 passed, 0 failed, 20 skipped (Core/TUI/config/localization lib). - npm test: 521 passed, 0 failed (66 wrapper + 9 package + 446 web). - npm run check:web: passed. - cargo fmt --all -- --check: passed. An earlier 2-second compaction settlement watchdog failed under full load; 10 unchanged focused repetitions passed. Reuse the existing 10-second settlement watchdog while preserving all durable completion assertions. Installed-binary acceptance, hosted CI and release publication are separate. | 2 天前 | |
fix: align Go routes and expose workspace and worker state Route OpenCode Go models through their documented Chat, Responses or Messages adapter using one provider roster. Preserve stable gateway headers and known metadata, and reject unproven model protocols before dispatch. Add optional workspace and branch status items using the existing background refresh, including linked worktrees, detached heads and the empty session. Project measured worker usage from the durable ledger into parent results; leave missing usage and unpriced work unknown. Explain the existing read-only command grammar at discovery and denial without changing worker permissions. Isolate the compaction summary-failure test's checkpoint storage. Closes #6112. Closes #6113. Refs #6011, #6015. Validation: npm test 521 passed, 0 failed (75 Node, 446 web); npm run check:web passed. Full workspace/all-features Cargo: 15416 passed, 0 failed, 29 ignored (four local libtest threads). Formatting, workspace/all-targets check and CI-equivalent Clippy passed. Real debug CLI loopback smoke covered all three Go streaming protocols, unknown-model refusal and global instruction symlinks. Release artifact and hosted checks are separate. | 1 天前 | |
fix: route every reqwest client through codewhale_release::tls (#6153) Bare Client::builder()/new() under rustls-no-provider panics before the first provider install. Add a Lint gate (scripts/check-reqwest-builders.py + hermetic test, wired into ci.yml) and sweep the 17 remaining call sites onto tls/platform builders, dropping the hand-installed providers. Gate: test_check_reqwest_builders.py 5/5 ok; check fails with 17 hits before the sweep, passes after. clippy workspace clean. | 12 小时前 | |
chore(release): prepare v0.9.13 Version bumps across the workspace, npm packages, VS Code extension, and facts surfaces; CHANGELOG 0.9.13 section with the release narrative, the missing #5989 receipts (ACP schema, queue data loss, metrics, goal-loop), the truncated-tool-args fix, the paste regression fix, allow_insecure_http, the Computer Use 0.2.0 bundle refresh, an upgrade-notes subsection (re-trust Computer Use), and the 0.9.13 contributor ledger; derived web surfaces regenerated (changelog.generated, facts.generated, GT catalogs); contributor credits chain in parity (CHANGELOG ledger = website arrays = docs/CONTRIBUTORS.md band = facts requiredCandidateCredits); INSTALL.md and the trust/telemetry copy bumped to 0.9.13. Gates: web 407/407 (npm test); check:facts OK; check:locales OK; check-versions OK (workspace/npm/npm-binary/lockfile = 0.9.13); feature release-note receipts OK (15); prepare-release transaction completed. Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 7 天前 | |
Merge origin/main into v0914-chunk1 Resolve the three changelog surfaces as a union: keep the branch's Unreleased Added entries beside main's Changed entries, then regenerate crates/tui/CHANGELOG.md (scripts/sync-changelog.sh) and web/lib/changelog.generated.ts (web/scripts/derive-changelog.mjs). Gate: check-versions.sh --range-audit-advisory exit 0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> | 3 小时前 | |
test: use normal MCP deadlines for catalog validation The macOS CI run at 9f276d8d17 failed the malformed-resource assertion because its shell fixture had only 250 milliseconds to parse and reply under load. Use the normal bounded client startup/request timeout. Keep the exact malformed schema and resource-name assertions, so accepting bad data or following its cursor still fails this test. No production behavior changes. Validation: npm test 521 passed, 0 failed (75 Node + 446 web); npm run check:web and cargo fmt --all --check passed. The unchanged fixture passed 5/5 isolated runs after its CI failure. Full Cargo/check/Clippy are running on this commit's exact source tree; hosted CI and rebuilt artifacts remain pending. Refs #5929. | 2 天前 | |
fix(release): restore runtime prose and documentation gates Condense the Finance tool description while retaining its session-network-policy contract. The prior added paragraph accounted for all 144 excess tool-schema bytes. Preserve endpoint validation and execution behavior. Render references to private implementation types as code instead of broken public rustdoc links. Validation: runtime-contract checker passed all 55 ceilings (Act/Operate 69074 bytes <= 69080 and 17269 estimated tokens <= 17270); all 11 Finance tests passed, including network-policy guards. Workspace cargo doc --no-deps --locked and formatting passed. npm test passed (66 wrapper, 9 SDK, 446 web); npm run check:web passed with two existing image warnings. No budget ceiling or lint rule changed. Final clean candidate sweep follows. | 3 天前 | |
refactor: extract palette into its own crate and move command_safety to execpolicy Two more modules out of the TUI monolith, on the same evidence as the localization extraction: a dependency census that counted `crate::` mentions inside doc comments and `#[cfg(test)]` blocks made these look entangled. With comments and test code excluded, both had **zero** real production dependencies on the rest of the crate. `palette` -> `codewhale-palette` (5,850 lines). Theming and colour tokens, with a wide but shallow consumer rewrite. No contrast or colour value changed while moving; `scripts/export-design-tokens.py` and the `check:tokens` gate follow the new path, and the gate passes with 64 tokens unchanged. Two OSC probes (`osc11::query_terminal`, used by `tui::mark` for the kitty graphics query) had to widen from `pub(crate)` to `pub` to cross the new crate line — a terminal capability query, not a trust boundary, and stated here rather than left for a reader to notice. `command_safety` -> `crates/execpolicy` (2,951 lines). Deliberately **not** a new crate: execpolicy already owns `ApprovalMode` and approval policy, and a `codewhale-command-safety` beside it would be a second authority for one concern. This is security-relevant code that classifies whether a shell command is safe to run, so it moved unchanged — not one classification rule, allowlist entry or matcher was touched. `crates/tui` already depended on execpolicy, so this move *removes* a dependency edge rather than adding one, which is the ideal shape for this work. The CI step that ran its tests under `codewhale-tui` now picks them up from the `codewhale-execpolicy` run on the line below it. crates/tui: 973,442 -> 957,746 lines across this session's three extractions. Verified: cargo check --workspace --all-targets 0 errors, 0 unused warnings cargo test -p codewhale-palette 81 passed; 0 failed cargo test -p codewhale-execpolicy 188 + 1 + 5 passed; 0 failed cargo test -p codewhale-localization 51 passed; 0 failed scripts/check-tui-locale-parity.py PASS scripts/export-design-tokens.py --check up to date, 64 tokens No new tests: the moved suites passing unchanged is the proof a move is correct. Refs: Linear C03-C10 / SHA-6179, docs/design/TUI_DECONSTRUCTION.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X57KRgwqYkmmtVQScczqiL | 4 天前 | |
chore(lint): record CI -Dwarnings in [workspace.lints] The repo already treats rustc warnings as errors: every CI workflow sets `RUSTFLAGS: -Dwarnings`. That policy lived only in YAML, so a local `cargo check` without extra flags did not match the gate, and there was no `[workspace.lints]` table for member crates to inherit. This records the existing policy, not a new one: [workspace.lints.rust] warnings = "deny" Every workspace member now has `[lints] workspace = true`. No clippy lints are listed: CONTRIBUTING.md's `-A clippy::*` allow list and .cnb.yml's stricter `clippy -- -D warnings` would disagree, and adding either would change a lane rather than document it. Verified: cargo check --workspace --all-targets with RUSTFLAGS=-Dwarnings; cargo check -p codewhale-tui --lib --tests without RUSTFLAGS (the new table is enough to deny). Implemented with agent assistance. Signed-off-by: Hunter Bown <hmbown@gmail.com> | 24 天前 | |
fix(protocol): project the child settlement operation explicitly Add the GetSubAgentSettlement protocol twin and its stable wire tag, exhaustive kind projection and every-variant fixtures. The Engine projection strips the oneshot sender without consuming it; the existing parity check now asserts the exact channel-free wire shape. Consumer search found no generated schema or additional exhaustive wire matches to migrate. Verification: rustfmt --check on 2 scoped files exit 0; git diff --check exit 0. Three existing parity/round-trip tests extended; tests executed here 0. Rust compilation, tests and Clippy NOT RUN in this worktree; root owns combined verification after observed E0004. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> | 1 天前 | |
fix(update): share safe migration help and support standalone codew Use one fresh-directory GitHub migration help constant in release/install for CLI, TUI, managed/system/alias errors, and legacy commands. Remove duplicated prose that still targeted an occupied default directory, and make the legacy update explanation conditional on a supported newer direct release. Label the FreeBSD Cargo path as a workaround rather than claiming the prebuilt request is resolved. The official standalone codew/codew.exe binary carries the complete CLI; /update now runs that executable without probing another installation. Preserve real TUI-only fallback and package-manager ownership checks. Validation: 92 focused CLI updater tests and all 11 TUI update tests passed, including a regression rejecting companion probes for standalone codew and migration-help parity. CLI/release Clippy --lib --tests --no-deps -D warnings, cargo fmt --all --check, and git diff --check passed. Root npm test/check:web scripts remain unavailable, as recorded in the parent commit. No live install, self-update, provider call, deployment, or remote mutation. | 9 天前 | |
chore(release): prepare v0.9.13 Version bumps across the workspace, npm packages, VS Code extension, and facts surfaces; CHANGELOG 0.9.13 section with the release narrative, the missing #5989 receipts (ACP schema, queue data loss, metrics, goal-loop), the truncated-tool-args fix, the paste regression fix, allow_insecure_http, the Computer Use 0.2.0 bundle refresh, an upgrade-notes subsection (re-trust Computer Use), and the 0.9.13 contributor ledger; derived web surfaces regenerated (changelog.generated, facts.generated, GT catalogs); contributor credits chain in parity (CHANGELOG ledger = website arrays = docs/CONTRIBUTORS.md band = facts requiredCandidateCredits); INSTALL.md and the trust/telemetry copy bumped to 0.9.13. Gates: web 407/407 (npm test); check:facts OK; check:locales OK; check-versions OK (workspace/npm/npm-binary/lockfile = 0.9.13); feature release-note receipts OK (15); prepare-release transaction completed. Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 7 天前 | |
Report throughput and cost truthfully and make goals durable (#5977 #5976) Throughput (#5977): the infoline and the session accumulator now share one definition — provider-reported output tokens divided by measured request seconds, labeled avg tok/s across all 15 packs. Streaming and non-streaming requests agree; connection/first-token/in-response waiting counts, tool and inter-request idle time does not; unmeasured aggregate receipts enter neither side; live text estimates no longer invent a rate. The redundant whole-turn rate state and its consumers are removed, and the English and Chinese guides match the implementation. Cost (#5976): missing-cost reasons are preserved through the shared UsageChip, session metrics, activity detail, /cost and the /cache footer — now with localized explanations instead of a bare unknown. Exact Model Studio and Volcengine plan endpoints are recognized, provider classification is exhaustive and pinned by a 49-provider default/alternate- route audit guard (docs: artifacts/0913-provider-billing-audit.md), and Concentrate keeps its explicit routing-dependent reason unless a verified scoped offering or operator override applies — a requested prefix is never treated as proof of the serving provider. Goals: durable stall accounting flows through protocol/SQL v5, the TUI sidecar v2 and full snapshot restoration; a Runtime turn admitted with no host goal persists a model-created goal via create-if-absent CAS and adopts its revision (a concurrent explicit PUT/DELETE always wins); corrupt Active-at-ceiling stall records restore paused at every load boundary; explicit resume/replacement revisions move through the existing FIFO. The contradictory hidden Runtime token-budget stop is removed. Goal UX: the model reports progress through update_goal (percent + now + next), rendered as a transcript receipt with a bar and as a live Goal (Nm) NN% reading on the metrics line, localized in 15 packs. [goal] max_steps (#5994) gives goal turns a finite 1,000-step default (the interactive 200 is unchanged; exec/worker ceilings always win); the soft landing names the governing key, and exhaustion grants one bounded final report, classifies BudgetExhausted, then pauses the unfinished goal with BudgetLimit instead of re-arming. Also in this slice: exact-resume hint reconstructs canonical-UUID commands on TTY only (#6001); [tools] user_input_timeout_seconds governs question and approval waits, 0 disables (#6003); session_idle / session_error / waiting_for_user hook events fire on the shared turn-state projection, with Waiting covering approval, user-input and goal-continuation waits (#6004); slash commands and absolute paths persist in composer history (#6006); OpenRouter vendor pinning is documented (#6007). Evidence (this tree): lib suite 11974 passed / 0 failed; workspace all-features suite green; workspace Clippy (all targets, all features, -D warnings) green; doctests green; locale parity 2147 keys x 15 packs PASS; goal filters 137, pricing 84, route_billing 50, chip 12, localization 51, concentrate 8, model_created/transition/corrupt-stall 5, resume-hint 3, goal-budget 3, session-state 4, composer-history 11 — all green. | 6 天前 | |
chore(release): prepare v0.9.13 Version bumps across the workspace, npm packages, VS Code extension, and facts surfaces; CHANGELOG 0.9.13 section with the release narrative, the missing #5989 receipts (ACP schema, queue data loss, metrics, goal-loop), the truncated-tool-args fix, the paste regression fix, allow_insecure_http, the Computer Use 0.2.0 bundle refresh, an upgrade-notes subsection (re-trust Computer Use), and the 0.9.13 contributor ledger; derived web surfaces regenerated (changelog.generated, facts.generated, GT catalogs); contributor credits chain in parity (CHANGELOG ledger = website arrays = docs/CONTRIBUTORS.md band = facts requiredCandidateCredits); INSTALL.md and the trust/telemetry copy bumped to 0.9.13. Gates: web 407/407 (npm test); check:facts OK; check:locales OK; check-versions OK (workspace/npm/npm-binary/lockfile = 0.9.13); feature release-note receipts OK (15); prepare-release transaction completed. Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 7 天前 | |
fix(tools): validate rich tool images through the existing pipeline (#6053) Adapt the image-result request to the existing typed inline-byte contract used by native and MCP tools. Fully validate decode, MIME and size on admission and restored provider projection, preserving text and visible omission receipts. Keep the existing Chat batch, Responses and Anthropic projections; metadata paths do not grant host-file read authority. Replace malformed positive PNG fixtures and retain distinct images in the multi-result ordering check. No automatic metadata.images file loading is added. Validation: combined focused suite passed 1772/1772 tests, including all three wire formats, MCP result limits/errors, restored image validation and plugin/config/UI regressions. npm test passed 66 wrapper, 9 SDK and 446 web tests; check:web passed with 0 errors and 2 existing image warnings. Final release qualification remains pending. Harvested from PR #6053 by @h3c-hexin Co-authored-by: asto18089 <44870036+asto18089@users.noreply.github.com> | 3 天前 | |
fix(automations): give canceled runs a transcript receipt that names the cancellation (#6162) fold_scan settled only Completed and Failed runs, and the run projection's Canceled branch never recorded why, so a run canceled by the operator, a cancel timeout or shutdown left the live band silently. A watched run that settles Canceled now emits a SettledOutcome::Canceled receipt: a new AutomationCellKind::Canceled with attention ink and the existing localized "canceled" verb (no new locale keys), whose detail leads with the task's error or a text derived from its terminal reason. A cancellation never lights the failure demand. Gates: cargo fmt --check clean; clippy (CI flags) exit 0; automation_panel/automation_routing/history::automation 24 passed; automation_manager::tests 52 passed, 0 failed; npm test 66+14+470 passed; npm run check:web exit 0; check-versions.sh exit 0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> | 2 小时前 | |
fix(workflow-js): qualify rustdoc intra-doc links in driver.rs The Documentation CI job fails on unresolved intra-doc links for SCHEMA_REPAIR_MAX_ATTEMPTS and SCHEMA_RAW_CARRY_CHARS. Qualify them as crate:: paths so rustdoc resolves them. Unmasked by the full-CI dispatch in run 33351684365; pre-existing on main. Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 13 天前 | |
fix(workflow): hold dependent roles until every gate passes Treat pending and missing gate state as unmet prerequisites, with normalized role matching and a waiting reason. Only Passed releases a gate's target. Preserve retry, escalation and explicit override transitions; clarify that Approve accepts role results and does not imply human authority. Verification: rustfmt --check passed; scoped staged diff check passed. Four new board-policy regressions authored and one existing handoff test strengthened, 0 Rust tests executed. Cargo and integrated runtime verification remain pending with the integrating agent. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> | 1 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 天前 | ||
| 12 小时前 | ||
| 1 天前 | ||
| 12 小时前 | ||
| 6 天前 | ||
| 2 天前 | ||
| 1 天前 | ||
| 2 天前 | ||
| 1 天前 | ||
| 12 小时前 | ||
| 7 天前 | ||
| 3 小时前 | ||
| 2 天前 | ||
| 3 天前 | ||
| 4 天前 | ||
| 24 天前 | ||
| 1 天前 | ||
| 9 天前 | ||
| 7 天前 | ||
| 6 天前 | ||
| 7 天前 | ||
| 3 天前 | ||
| 2 小时前 | ||
| 13 天前 | ||
| 1 天前 |