Commit Graph

1925 Commits

Author SHA1 Message Date
Hunter Bown 42b25a2cb5 docs: add macos python FAQ (#2409)
Harvested from #2407 with thanks to @axobase001.

Adds a first-time macOS Python FAQ and completes the virtualenv flow with the final run command.

Fixes #2351.
2026-05-31 02:27:32 -07:00
Paulo Aboim Pinto a3ae974676 feat(tui): add ExternalTool abstraction layer (#2294)
Harvested with thanks to @aboimpinto.

Includes the ExternalTool abstraction layer plus follow-up fixes for lossy REPL stdout handling and unquoted unicode git diff paths.

Validation included full CI and focused local checks for non-UTF8 REPL stdout, git_diff, and external_tool behavior.
2026-05-31 02:24:25 -07:00
HUQIANTAO 72e8ca45de feat: add mobile smoke tests and QR code for mobile URL (#2403)
* feat: add mobile smoke tests and QR code for mobile URL

#2396: Add scripts/mobile-smoke.sh that launches the compiled binary on
loopback ports and verifies the mobile surface through real HTTP requests:
- Token auth (401/200, Bearer, query param, approval 404)
- Insecure mode (no token required)
- Binding warnings (0.0.0.0, LAN URL hint)

Add mobile-smoke job to CI workflow.

#2397: Add --qr flag to 'codewhale serve --mobile' that renders a
terminal QR code for the mobile URL. Uses the LAN IP when available,
falls back to 127.0.0.1. Adds qrcode crate (pure Rust, no C deps).

* fix: address review feedback on mobile smoke tests

- Fix Test Group 3 subprocess capture: use temp file instead of command
  substitution to avoid hanging and subshell variable isolation
- Allow BINARY path to be overridden via BINARY env var
- Add libdbus-1-dev system dependency to CI job for ubuntu build

* fix: pass auth header in mobile smoke status helper

* fix: send approval JSON in mobile smoke

---------

Co-authored-by: Hu Qiantao <huqiantao@HudeMacBook-Air.local>
Co-authored-by: Hunter B <hmbown@gmail.com>
2026-05-31 02:04:32 -07:00
Hunter Bown 8f095b882f feat(execpolicy): add typed ask rule foundation (#2404)
* feat(execpolicy): add typed ask rule foundation

* fix(execpolicy): tighten typed ask diagnostics

---------

Co-authored-by: greyfreedom <greyfreedom@163.com>
2026-05-31 01:37:15 -07:00
HUQIANTAO 3aa0a33fe2 feat: add Claude theme (#2267)
* feat: add Claude theme — warm navy & coral palette

Add a new theme aligned with Claude Code's product surface colors:
deep navy surfaces (#181715), cream-tinted text (#faf9f5),
coral accent (#cc785c), and teal secondary (#5db8a6).
Includes cell-level remap pipeline registration and full
WCAG contrast QA compliance.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(theme): address review feedback on Claude theme

- Fix text_dim contrast: #615E58 → #72706A (2.77 → 3.62, passes WCAG AA)
- Fix error_fg/error_border contrast: #C64545 → #E06060 (3.70 → 5.13, passes AA)
- Use amber #E8A55A for accent_action (distinct from accent_primary coral)
- Fix theme_picker test expecting GruvboxDark as last theme
- Remove broken include_str!("../../../web-chat/index.html") reference
  left by incomplete web-chat revert

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: revert version bump, keep theme-only changes

---------

Co-authored-by: Hu Qiantao <huqiantao@HudeMacBook-Air.local>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Hunter B <hmbown@gmail.com>
2026-05-31 01:18:33 -07:00
zLeoAlex b0e39b8588 fix(tui): remove message-count truncation from session persistence (#2395) 2026-05-31 01:14:11 -07:00
Hunter Bown 28bd9b3f81 fix(tui): init runtime log before alt-screen, add Windows stderr redirect (#1909) (#2259)
* fix(tui): init runtime log before EnterAlternateScreen, add Windows stderr redirect

Two root causes of verbose logging leaking into the TUI alt-screen:
1. EnterAlternateScreen was called BEFORE runtime_log::init(), so any
   logging between alt-screen entry and redirect init leaked raw bytes
   into the TUI buffer — causing the 'scroll demon' on all platforms.
2. redirect_stderr_to was #[cfg(unix)] only — Windows had no stderr
   redirect at all, so every eprintln!/tracing call during the TUI
   session wrote directly into the alt-screen buffer.

Fixes:
- Swap order: init runtime_log (with stderr redirect) BEFORE entering
  the alt-screen, so the redirect is active from the start.
- Add #[cfg(windows)] redirect_stderr_to using SetStdHandle from the
  already-available windows crate, with corresponding Drop impl to
  restore the original handle.

Fixes #1909

* fix(tui): handle Windows stderr redirect API types

* docs(tui): update runtime log stderr redirect notes

* fix: propagate SetStdHandle error instead of using .context()

Use .map_err() with a descriptive message and cast target to isize
for the HANDLE constructor, so the error is properly propagated if
SetStdHandle fails.

Co-Authored-By: bot_apk <apk@cognition.ai>

* fix(tui): pass raw Windows stderr handle

* fix: use DuplicateHandle for Windows stderr redirect to avoid handle aliasing

The previous implementation used file.as_raw_handle() directly with
SetStdHandle, causing both _file and the process stderr table entry to
share the same HANDLE. If a third-party library called CloseHandle on
the stderr handle during the TUI session, it would silently invalidate
_file and cause a double-CloseHandle on guard drop.

Now we call DuplicateHandle before SetStdHandle to produce a truly
independent handle for the redirected stderr, mirroring the Unix path's
use of libc::dup. The duplicated handle is tracked in the guard struct
and properly closed on drop after the original stderr is restored.

Co-Authored-By: bot_apk <apk@cognition.ai>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: bot_apk <apk@cognition.ai>
2026-05-31 01:12:06 -07:00
CY add5654c30 feat: Windows .bat launcher for codewhale (v2, rebased + review fixes) (#1861)
* fix: Windows .bat launcher with correct JS escaping and codewhale rebrand

* fix: complete Windows bat release asset handling

---------

Co-authored-by: cy2311 <cy2311@users.noreply.github.com>
Co-authored-by: Hunter B <hmbown@gmail.com>
2026-05-31 00:59:32 -07:00
Lee-take ad7e127ef2 [codex] Fix task migration and session env isolation (#2272)
* Fix task migration and session env isolation

* test: guard session HOME mutation

* test: stabilize tui CI checks

* fix: satisfy current tui clippy warnings

---------

Co-authored-by: Lee-take <210963840+Lee-take@users.noreply.github.com>
Co-authored-by: Hunter B <hmbown@gmail.com>
2026-05-31 00:58:26 -07:00
Hunter Bown 6247ac807c Merge pull request #2252 from cyq1017/codex/runtime-sse-envelope
feat(protocol): add runtime event envelope
2026-05-31 00:53:43 -07:00
Hunter B f51214d379 Merge remote-tracking branch 'origin/main' into codex/pr-2252-runtime-sse-envelope
# Conflicts:
#	Cargo.lock
#	crates/tui/Cargo.toml
2026-05-31 00:43:47 -07:00
Hunter Bown 22cea93790 Merge pull request #2280 from Hmbown/fix/1572-custom-model-switch
fix(tui): accept custom model IDs in /model for non-DeepSeek providers (#1572)
2026-05-31 00:42:22 -07:00
Hunter Bown efbc362893 Merge pull request #2270 from AiurArtanis/feat/theme-solarized-light
feat(theme): add Solarized Light theme
2026-05-31 00:38:08 -07:00
Hunter B 3e1f609767 Merge commit 'refs/tmp/pr2270' into codex/harvest-2270
# Conflicts:
#	crates/tui/src/palette.rs
#	crates/tui/src/tui/theme_picker.rs
2026-05-31 00:36:53 -07:00
Hunter B 7ac5f7bbc0 Merge remote-tracking branch 'origin/main' into codex/pr2280-sidecar
# Conflicts:
#	crates/tui/src/tui/model_picker.rs
2026-05-31 00:34:01 -07:00
Hunter Bown b8f76fcc14 Merge pull request #1868 from Lee-take/feat/siliconflow-provider
[codex] Add SiliconFlow provider support
2026-05-31 00:30:30 -07:00
Hunter B 678484ae1d docs(provider): clarify SiliconFlow provider entries 2026-05-31 00:24:10 -07:00
Hunter B 04d7bc0b7e Merge remote-tracking branch 'origin/main' into codex/harvest-siliconflow 2026-05-31 00:17:24 -07:00
Hunter Bown 72ad833dee Merge pull request #2389 from HUQIANTAO/feat/intent-summary-before-approval
feat: show intent summary before file approval prompt (#2381)
2026-05-31 00:16:09 -07:00
Hunter Bown 26c3f41b67 Merge pull request #2257 from HUQIANTAO/feat/deepseek-balance-carry
feat: add account balance status bar item (carries #1970)
2026-05-31 00:10:54 -07:00
Hunter Bown 7f12aa4679 Merge pull request #2149 from yuanchenglu/fix/feishu-perchat-model
feat(feishu): add /model command for per-chat model switching
2026-05-31 00:10:32 -07:00
Hunter B 4d772bb938 fix(tui): harden approval intent summaries 2026-05-31 00:08:49 -07:00
Hunter B 2d3bfe7379 test(tui): update provider picker expectations 2026-05-31 00:07:50 -07:00
Hunter B 2d93a233e2 Merge remote-tracking branch 'origin/main' into pr2389-rescue-current 2026-05-31 00:07:09 -07:00
Hunter Bown 8ceb67fad7 Merge pull request #2394 from Hmbown/codex/fix-provider-picker-volcengine
test(tui): include Volcengine in provider picker expectation
2026-05-31 00:06:28 -07:00
Hunter B 7b1c007963 fix: gate DeepSeek balance fetch opt-in
Merge current origin/main into #2257 and keep the rescue scoped to the balance statusline feature.

Credits #2257 by @HUQIANTAO and the carried #1970 balance work by @MoriTang.

The rescue gates startup, turn-complete, and provider-switch balance fetches on StatusItem::Balance, preserves current main Cargo metadata, and adds the missing Vietnamese balance label.
2026-05-31 00:03:09 -07:00
Hunter B b9df3a843b test(tui): include Volcengine in provider picker expectation 2026-05-31 00:02:21 -07:00
Lee-take 4861bb2797 Add SiliconFlow provider support
Add SiliconFlow as an additive OpenAI-compatible hosted provider across config, secrets, CLI, agent registry, TUI runtime, picker, and docs.

Credit: based in part on the SiliconFlow provider direction from #1864 by @qychen2001, extended here with broader registry, documentation, and test coverage on current main.
2026-05-31 00:00:38 -07:00
Hunter Bown e3b101b104 Merge pull request #2129 from malsony/ui/theme
feat(theme): add Matrix films inspired theme and improve theme_picker…
2026-05-30 23:58:46 -07:00
Hu Qiantao ea7dffa59d feat: show intent summary before file approval prompt (#2381)
When the model invokes write/modify/delete tools, extract its preceding
text content as an 'intent summary' and pass it to the approval view.
This gives users context about why a change is being made before they
review what will change.

Changes:
- Add intent_summary field to ApprovalRequired event (events.rs)
- Extract model text from current_text_visible when write tools
  are detected in the turn loop (turn_loop.rs)
- Add ApprovalRequest::new_with_intent constructor with
  intent_summary parameter (approval.rs)
- Pass intent_summary through TUI event handler to approval view
  (ui.rs)
- Render intent summary in approval widget: up to 3 lines of the
  model explanation, truncated to available card width, with
  i18n labels for zh-Hans locale (widgets/mod.rs)
- Adapt existing tests to new event field (runtime_threads.rs,
  ui/tests.rs)

Design decisions:
- Non-blocking: if the model provides no explanation, the approval
  still proceeds normally (no extra round-trip or token cost)
- Backward compatible: YOLO mode and approval cache unaffected
- The new() constructor is gated behind #[cfg(test)] since
  production code now uses new_with_intent()
2026-05-31 14:56:52 +08:00
Hunter B feefae16c6 fix(feishu): preserve per-chat model state 2026-05-30 23:55:00 -07:00
Hunter B 30db74bcdb Merge remote-tracking branch 'origin/main' into pr-2149 2026-05-30 23:53:25 -07:00
Hunter Bown 84de626883 Merge pull request #2281 from AccMoment/add_proxy_option_to_update_command
feat(update):Add proxy option to update command
2026-05-30 23:51:39 -07:00
Hunter B 30315b23b3 fix(theme): refresh Matrix palette on current main 2026-05-30 23:51:32 -07:00
Hunter B 8bc348801c Merge remote-tracking branch 'origin/main' into pr-2281-rescue
# Conflicts:
#	crates/cli/src/lib.rs
#	crates/cli/src/update.rs
2026-05-30 23:47:09 -07:00
Hunter Bown 85764b9ee5 Merge pull request #2388 from LeoAlex0/main
fix(tui): stop compacting tool outputs on session save/load to preserve LLM cache
2026-05-30 23:42:43 -07:00
Hunter Bown a904c29c28 Merge pull request #2283 from HUQIANTAO/fix/turn-stall-watchdog
fix(engine): recover from stalled in-progress turns
2026-05-30 23:40:01 -07:00
Hunter Bown 7af49d2fb0 Merge pull request #1993 from dzyuan/feature/volcengine
feat: add Volcengine provider with DeepSeek-V4-Pro/Flash support
2026-05-30 23:38:03 -07:00
Hunter B 2f7161d12c Merge remote-tracking branch 'origin/main' into HEAD 2026-05-30 23:31:01 -07:00
Hunter B 0572aff79d fix: refresh Volcengine provider registry 2026-05-30 23:30:57 -07:00
Hunter Bown c9d6a977ff Merge pull request #2387 from mo-vic/dev
feat: add /purge slash command for agent-driven context pruning
2026-05-30 23:30:17 -07:00
zLeoAlex 32c85300dd fix(tui): stop compacting tool outputs on session save/load to preserve LLM cache 2026-05-31 14:29:23 +08:00
Hunter Bown 548771d1cd Merge pull request #2306 from idling11/feat/goal-to-hunt
Feat/Rename /goal → /hunt with HuntVerdict + trophy cards (#2092)
2026-05-30 23:28:22 -07:00
Hunter B a1b30c6e72 fix: cover purge command in Vietnamese locale 2026-05-30 23:23:39 -07:00
Hunter Bown 9716619e55 Merge pull request #1968 from axobase001/feat/mobile-remote-control
feat(runtime): restore mobile control page
2026-05-30 23:22:11 -07:00
Hunter B 137e4e6130 fix: reset hunt state for user commands 2026-05-30 23:19:01 -07:00
Hunter Bown cd5f5b8281 Merge pull request #2161 from idling11/feat/slop-ledger
Feat/Add a durable `SlopLedger` that makes invisible architectural residue visible and queryable across agent sessions
2026-05-30 23:17:27 -07:00
Hunter B a9c0a4ae3c fix: cover slop command in Vietnamese locale 2026-05-30 23:08:59 -07:00
Hunter B 91d0921091 fix: update user command hunt metadata 2026-05-30 23:08:20 -07:00
Hunter B 335e39af08 Merge remote-tracking branch 'origin/main' into codex/pr2161-head-fix 2026-05-30 23:04:00 -07:00