Commit Graph

2027 Commits

Author SHA1 Message Date
Hunter B 31f34c5df2 ci(release): attach windows npm launcher asset 2026-06-01 03:58:42 -07:00
Hunter B 2698b848b3 ci(release): use ubuntu ports for linux arm64 packages 2026-06-01 03:17:36 -07:00
Hunter B 7d67654737 ci(release): cross-compile linux arm64 assets 2026-06-01 03:02:58 -07:00
Hunter B 492f20da4f chore(release): prepare v0.8.49 2026-06-01 02:42:45 -07:00
Hunter B 683ec0bef4 fix(pricing): keep adjusted DeepSeek V4-Pro rates 2026-06-01 02:38:45 -07:00
Hunter B dde865453e test: cover Kimi schema and ANSI normalization edge cases 2026-06-01 02:36:50 -07:00
Hanmiao Li 34a87e3fd3 fix: collapse nested ifs to satisfy clippy (#2480) 2026-06-01 02:34:32 -07:00
Hanmiao Li bea701c6a4 fix: normalize tool schemas for Kimi/Moonshot — push type into anyOf items (#2438) 2026-06-01 02:34:30 -07:00
Justin Gao c22b60c2b0 fix: hash only API-visible tool fields, not internal metadata
Addresses chatgpt-codex review: the previous full serde_json::to_string
included internal-only fields (allowed_callers, defer_loading,
input_examples, cache_control) that are never sent to the chat API.
This caused spurious drift detection when those fields changed.

- New tool_to_api_json() helper mirrors tool_to_chat() serialization:
  only type, name, description, parameters, strict
- Doc comment fixed: 'sorted by name' → 'sorted lexicographically
  by JSON text' (greptile review)
2026-06-01 02:34:26 -07:00
Justin Gao 37cfd97b5c refs(#2264): harden PrefixFingerprint with full tool JSON hash
Phase 1.5 — upgrade PrefixFingerprint::compute() to hash the full tool
JSON serialization (name + description + schema) instead of just tool
names. This catches schema/description drift in addition to name changes.

- Serialize each tool via serde_json::to_string, sort by name, join
- New test: fingerprint_detects_schema_change_not_just_name_change
- All 21 prefix_cache tests pass
- Aligned with prompt_zones.rs tool_catalog_digest approach
2026-06-01 02:34:26 -07:00
hqt d88b2c36ab test(shell): fix test on non posix shell 2026-06-01 02:34:23 -07:00
Hanmiao Li 87b5c78d8a fix: also strip ANSI in sidebar normalize_activity_text (#2481) 2026-06-01 02:34:23 -07:00
Hanmiao Li 599b5997d0 fix: strip ANSI sequences in footer tool status labels to prevent raw escape code leaks (#2481) 2026-06-01 02:34:23 -07:00
reidliu41 c1f74b3b2f fix(config): allow missing tui status items
Treat a missing tui.status_items field as None even when the [tui]
  table exists, preserving the documented default footer behavior.

  Add a regression test for configs that define [tui] without status_items.
2026-06-01 02:34:23 -07:00
Hunter B 0af80e262f fix: prevent double-registration of web/patch tools in agent mode
with_agent_tools() unconditionally registered web_search/fetch_url/web.run
(via with_web_tools) and apply_patch (via with_patch_tools), but tool_setup.rs
conditionally registered them again based on Feature::WebSearch and
Feature::ApplyPatch flags. This caused double registration (overwritten
with a warning log on the second insert).

Changes:
- Remove with_web_tools() and with_patch_tools() from with_agent_tools()
- Move finance tool out of with_web_tools() into its own with_finance_tool()
  (finance is market data, not web search — it should not be gated behind
  the web-search feature flag)
- Add with_finance_tool() to with_agent_tools() so finance stays always
  available
- Update tests: new test for with_finance_tool(), updated web_tools test
  to verify finance is no longer in the web group
2026-06-01 02:33:40 -07:00
Hunter B ce75b9551a docs: update TOOL_SURFACE.md for v0.8.49
- Update version header from v0.8.35 to v0.8.49
- Fix PDF extraction backend description (bundled pure-Rust, not Poppler)
- Add 'Additional registered tools' section listing ~15 tools present in
  the registry but not previously documented: web.run, multi_tool_use.parallel,
  request_user_input, git_show/log/blame, load_skill, revert_turn,
  pandoc_convert, validate_data, code_execution, review, project_map,
  remember, image_analyze, image_ocr, finance
- Clarify canonical live names version reference
2026-06-01 02:33:40 -07:00
Hunter B 78facf9239 chore: home-polish for v0.8.49
- Add completion_sound to config.example.toml notifications section
  (off/beep/bell, default 'beep', introduced in v0.8.48)
- Add kimi-k2.6 to Default Models comments in config.example.toml
  (default Moonshot/Kimi model, provider section already added)
- Fix stale v0.8.47 reference in docs/PROVIDERS.md Planned section
  (now says v0.8.48+, reflecting current milestones)
2026-06-01 02:33:40 -07:00
Hunter B f094db9e02 feat: add missing [providers.moonshot] section to config.example.toml
Moonshot/Kimi is a shipped provider with full support (model registry entry,
provider ID, env var plumbing, CLI provider picker), but config.example.toml
was missing its [providers.moonshot] table block while all other 15 providers
had one. This made Moonshot the only shipped provider absent from the example.

Added the section between siliconflow and sglang, matching the shipped-provider
ordering in docs/PROVIDERS.md. Includes the Kimi Code alternate path and
kimi_oauth auth_mode comment.
2026-06-01 02:33:40 -07:00
Hunter B ffb871b9db fix: remove stale qwen3.7-max references from config.example.toml
v0.8.48 removed the Qwen 3.7 Max preset (it's a hosted model, not open-weight).
Two references remained in config.example.toml:
- Default Models comment (line 41)
- OpenRouter provider section comment (line 280)

These stale references could confuse users into trying a removed model.
2026-06-01 02:33:40 -07:00
Hunter B e0160cc6f0 fix(release): add codewhale-release to Cargo publish list 2026-05-31 21:52:33 -07:00
Hunter B e9eea70445 release: v0.8.48 — liveness watchdog fix, Qwen 3.7 removal, provider/docs sync
- Fix false 'Turn stalled' during long active turns with running tools.
  Add turn_last_activity_at tracking and active-tool awareness to
  reconcile_turn_liveness(). Three new tests cover the fix.

- Remove Qwen 3.7 Max OpenRouter preset from registry, picker, docs,
  and tests. Qwen 3.7 Max is a hosted model; the preset will return
  when an open-weight Qwen 3.7 release ships. MiniMax M3 remains as
  a full 1M-context multimodal route.

- Sync root CHANGELOG to crates/tui/CHANGELOG for crates.io packaging.
  Update docs/CONFIGURATION.md, docs/PROVIDERS.md, and README to
  reflect the Qwen 3.7 removal. Regenerate web facts timestamp.
2026-05-31 21:45:31 -07:00
Hunter B 2bd77edc15 Fix provider model selection and stream completion 2026-05-31 21:15:40 -07:00
Hunter Bown 33abdf1269 Merge pull request #2474 from Hmbown/codex/first-day-polish
chore: polish CodeWhale home defaults
2026-05-31 19:29:57 -07:00
Hunter B 2b69f4e041 chore: polish codewhale home defaults 2026-05-31 19:22:12 -07:00
Hunter Bown 394f35b7bb Merge pull request #2416 from encyc/feat/three-zone-prefix-contract-2264
refs(#2264): Phase 1 three-zone type foundation (PinnedPrefix / FrozenPrefix / PrefixDrift)
2026-05-31 19:00:59 -07:00
Justin Gao 89ab2a9c67 fix: add #[allow(dead_code)] to FrozenPrefix/PinnedPrefix impl blocks 2026-06-01 09:40:44 +08:00
Justin Gao dcfe34670c fix: suppress dead_code warnings for Phase 1 foundation types
All dead_code in prompt_zones.rs is intentional — these types are
scaffolding awaiting future integration. Pre-existing schema_migration
warnings remain as-is.
2026-06-01 09:34:03 +08:00
Justin Gao d897c2e5b8 refs(#2264): Phase 1 three-zone type foundation — no request-path enforcement yet
Narrower slice per Hmbown's review: typed zone structs as foundation
without wiring into the request path. Future phases will integrate
AppendLog/TurnScratch/ThreeZoneRequest into turn_loop.

- prompt_zones.rs (663 lines, 16 tests): PinnedPrefix / FrozenPrefix /
  PrefixDrift (ready), AppendLog / TurnScratch / ThreeZoneRequest
  (scaffolding, #[allow(dead_code)])
- FrozenPrefix: full tool JSON hash (name+desc+schema), raw-text
  fast-path in verify(), cache_control preserved in build_messages()
- /cache zones subcommand with three-zone status display
- merge_compaction_summary: zone affiliation doc comment
- No turn_loop/session changes — engine continues using
  PrefixStabilityManager / MessageRequest as before
2026-06-01 09:26:33 +08:00
Hunter Bown 750c5f5935 Merge pull request #2473 from Hmbown/codex/release-credit-surfaces
docs: sync release credit surfaces
2026-05-31 17:56:08 -07:00
Hunter B 6f295e9961 docs: sync release credit surfaces 2026-05-31 17:43:46 -07:00
Hunter Bown 7eb740bd86 Merge pull request #2472 from Hmbown/codex/update-check-config
Make startup update checks configurable
2026-05-31 17:13:26 -07:00
Hunter B a9a4213d39 fix(tui): make startup update checks configurable 2026-05-31 17:06:20 -07:00
Hunter Bown 78d6cb48d3 Merge pull request #2471 from Hmbown/codex/composer-input-fix
fix(tui): keep composer scroll and alt motion in draft
2026-05-31 16:36:26 -07:00
Hunter B 746bf2aa4b fix(tui): keep composer scroll and alt motion in draft 2026-05-31 16:28:00 -07:00
Hunter Bown a6f177dc70 Merge pull request #2470 from Hmbown/codex/qwen37-openrouter-alias
Resolve qwen3.7 OpenRouter shorthand
2026-05-31 16:10:39 -07:00
Hunter B 42b2ed2e23 Resolve qwen3.7 OpenRouter shorthand 2026-05-31 15:58:17 -07:00
Hunter Bown 9ef8fe7a09 Merge pull request #2468 from Hmbown/codex/esc-whale-animation-fix
Stop header whale after liveness recovery
2026-05-31 15:52:09 -07:00
Hunter B e0a71c2ed0 Stop header whale after liveness recovery 2026-05-31 15:44:53 -07:00
Hunter Bown 12c06c11c8 Merge pull request #2467 from Hmbown/codex/codewhale-secret-path-migration
Migrate file secrets to CodeWhale home
2026-05-31 15:37:19 -07:00
Hunter B d6baf20721 Migrate file secrets to codewhale home 2026-05-31 15:30:35 -07:00
Hunter Bown ad347c62eb Merge pull request #2466 from Hmbown/codex/model-picker-neutral-routes
Fix model picker cancel behavior
2026-05-31 14:58:43 -07:00
Hunter B b1ae0fa60e Fix model picker cancel behavior 2026-05-31 14:49:45 -07:00
Hunter Bown f09b4ae72f Fix TUI cancel busy animations
Clear stale busy state and retry/title animations on local cancel.\n\nLocal verification:\n- cargo test -p codewhale-tui\n- codewhale doctor\n- codewhale --provider deepseek --model deepseek-v4-pro exec "Reply with exactly: OK"
2026-05-31 14:06:52 -07:00
Hunter Bown a5b363c354 Merge pull request #2464 from Hmbown/codex/mention-tunables
Make @-mention completion limits configurable
2026-05-31 13:37:58 -07:00
Hunter B f72f609293 feat: make file mention completion tunable 2026-05-31 13:29:28 -07:00
Hunter Bown 6858c4e105 docs: credit v0.8.48 contributors (#2463) 2026-05-31 13:07:20 -07:00
Hunter Bown 7765f32cdd chore(release): prep v0.8.48 (#2462) 2026-05-31 11:35:45 -07:00
Hunter Bown 5a80556eb2 feat(models): add recent large OpenRouter models (#2461) 2026-05-31 11:26:25 -07:00
HUQIANTAO 9c336123ea test(core): add comprehensive unit tests for JobManager and helpers (#2440)
* test(core): add comprehensive unit tests for JobManager and helpers

Add 35 unit tests covering:
- JobManager lifecycle (enqueue, set_running, update_progress, complete, fail, cancel, pause, resume)
- Exponential backoff computation and saturation
- History truncation beyond MAX_JOB_HISTORY_ENTRIES
- Persisted detail encode/parse round-trip
- Job status string conversion round-trips
- Helper functions (truncate_preview, json_optional_string, parse_retry_metadata, parse_history_entry)
- Status mapping between runtime and persisted types
- Initial history preview generation

* style: fix cargo fmt formatting

* test(core): fix job manager test hygiene

---------

Co-authored-by: Hu Qiantao <huqiantao@HudeMacBook-Air.local>
Co-authored-by: Hunter B <hmbown@gmail.com>
2026-05-31 11:10:37 -07:00
HUQIANTAO 9bf14e9825 docs(state): add doc comments to all public types (#2452)
* docs(state): add doc comments to all public types

* docs(execpolicy): add doc comments to all public types

* test(web): add unit tests for pure helper functions

Add vitest configuration and tests for:
- relativeTime: time formatting (just now, minutes, hours, days, months, years)
- lastPageFromLink: GitHub Link header pagination parsing

These are the first tests for the web frontend. The test framework
(vitest) was already in package.json but had no config or test files.

---------

Co-authored-by: Hu Qiantao <huqiantao@HudeMacBook-Air.local>
2026-05-31 11:08:16 -07:00