Commit Graph

874 Commits

Author SHA1 Message Date
Hunter Bown f183501fbd fix(client): route non-beta paths from beta base to v1 (#1174)
* test: add reproducer for /models 404 on beta base URL

* fix: route non-beta paths to /v1 when base URL ends with /beta

---------

Co-authored-by: Hanmiao Li <894876246@qq.com>
2026-05-08 02:59:56 -05:00
Hunter Bown 236a529a9d fix(deps): extend libc to all Unix targets for FreeBSD compatibility (#1173)
`libc` was declared only for macOS and Linux, causing a build failure on
FreeBSD (#1143). All call sites that use `libc` are already guarded with
`#[cfg(unix)]` or narrower OS-specific guards, so broadening the
dependency to `cfg(unix)` fixes FreeBSD (and other BSDs) with no
behavioural change on macOS or Linux.

Co-authored-by: Vince <liuwenchang.x@qq.com>
2026-05-08 02:57:25 -05:00
ZzzPL 219e15a85f fix(tui): add stale busy-state watchdog (#1170) 2026-05-08 02:48:32 -05:00
Hunter Bown ad31d2bcec docs(competitive-analysis): reflect LSP diagnostics implementation (#1171)
Update competitive analysis to reflect that LSP integration is now
implemented as automatic post-edit diagnostics injection, and adjust
the recommended implementation order accordingly.

Co-authored-by: Stephen Xu <wexu@expediagroup.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 02:47:35 -05:00
Hunter Bown ec268e50a1 feat: distinct user message body color (green) (#1168)
Use a dedicated user_body_style() with a green (#4ADE80 / #15803D)
foreground color for user messages instead of sharing the
message_body_style() (TEXT_PRIMARY) used by assistant messages.

This makes user input visually distinguishable from assistant
responses in the transcript.

Changes:
- palette.rs: add USER_BODY and LIGHT_USER_BODY color constants
- palette.rs: adapt_fg_for_palette_mode entry for light-mode mapping
- history.rs: add user_body_style() function
- history.rs: replace message_body_style() with user_body_style()
  in all three User render paths (lines / lines_with_options /
  transcript_lines)

Co-authored-by: Assassin-D007 <ws1554410958@163.com>
2026-05-08 02:44:02 -05:00
Hunter Bown 218d797b0b fix(cli): preserve split prompt words from Windows shims (#1160) 2026-05-08 02:39:09 -05:00
Hunter Bown f91970f092 fix(skills): accept workflow pack archive layouts (#1164)
Teach /skill install to recognize compatible skill directories such as .claude/skills/<name>/SKILL.md, nested packages/.../skills/<name>/SKILL.md, and single nested skill repos while still extracting only the selected subtree.

Also make /init treat an existing AGENTS.md as an idempotent no-op so the TUI matches the dispatcher behavior instead of surfacing a scary error for an already-initialized project.
2026-05-08 02:37:21 -05:00
Hunter Bown 724af9494a fix(tui): keep interactive sessions in alternate screen (#1158) 2026-05-08 02:30:57 -05:00
Sun 73f92bfb5a fix(fetch_url): add proxy DNS opt-in (#1103) 2026-05-08 02:26:12 -05:00
Hunter Bown a89835310f fix(tui): wrap slash menu arrow navigation (#1152)
Co-authored-by: reidliu41 <reid201711@gmail.com>
2026-05-08 02:22:34 -05:00
Aqil Aziz de4ecee41c docs: fix memory skill link (#1096) 2026-05-08 02:21:11 -05:00
Friende 8f39aadf0b docs: fix help keybinding reference (#1095) 2026-05-08 02:20:40 -05:00
jiaren wang 0d7cbe37a8 fix(undo): sync session context after snapshot restore (#1139) (#1150) 2026-05-08 02:14:04 -05:00
Friende f969de91aa fix(memory): report omitted bytes in truncation marker 2026-05-08 01:55:30 -05:00
Reid 71c5dfbfc6 fix(tui): make composer arrows navigate input history (#1117)
Make plain Up/Down navigate composer input history instead of scrolling
  the transcript from an empty composer.

  Keep menu overlays in control of arrow keys, preserve existing transcript
  scroll shortcuts, and support word-wise cursor movement with Ctrl or
  Alt/Option Left/Right.
2026-05-08 01:52:00 -05:00
Sun 2904d817fa fix(rlm): preserve prompt cache usage (#1127)
* fix(rlm): preserve prompt cache usage

* refactor(rlm): share prompt cache usage helper
2026-05-08 01:51:24 -05:00
jiaren wang fa32e7ac53 fix(plan): enforce read-only tool boundaries in Plan mode (#1114) 2026-05-08 01:49:31 -05:00
Hunter Bown f283e56bd1 fix(prompts): prioritize user language for reasoning (#1137) 2026-05-07 23:53:15 -05:00
Hunter Bown b31b93aaae v0.8.19: endpoint, release workflow, IME + viewport fixes (#1128)
* fix(config): keep DeepSeek beta endpoint for legacy cn alias

* fix(ci): filter download-artifact to deepseek* pattern

Prevents the release aggregation job from picking up non-binary
artifacts (e.g. Docker .dockerbuild cache layers) that cause the
checksum manifest to include spurious entries and the Release to
carry files it shouldn't.

* fix(tui): enable focus events to restore IME after app-switch

On macOS, switching away (Cmd+Tab) and back suspends the IME compositor.
Without focus-event handling, the TUI never signals readiness to the
terminal, so CJK input methods (Pinyin, Zhuyin, etc.) stop working.

- EnableFocusChange on startup so the terminal reports FocusGained/FocusLost
- Re-push KeyboardEnhancementFlags on FocusGained (some terminals reset
  the enhanced keyboard mode on focus-loss)
- DisableFocusChange on shutdown for clean terminal handoff

* chore: cargo fmt

* docs: add DataWhale and DeepSeek to acknowledgments

* docs: fix DeepSeek name etymology in acknowledgments

* fix(tui): recapture viewport on focus restore

* docs: thank DeepSeek and DataWhale bilingually
2026-05-07 23:05:39 -05:00
Hunter Bown 3521f1af91 fix(web): drop deepseek-cn from facts-drift cron labelMap (#1125)
Sister fix to #1108 / #1121. The 6-hour facts-drift cron has its own
provider labelMap (lib/facts-drift.ts) that re-derives ApiProvider
from the live source on GitHub and writes to CURATED_KV under
"facts:current". Without this fix, every cron tick repopulates the
KV cache with deepseek-cn even though the published binary's
ProviderArg rejects it — undoing the static facts.generated.ts fix.

Mirror the labelMap that derive-facts.mjs uses (no DeepseekCN entry).

Stale "facts:current" KV entry was deleted manually so this takes
effect immediately rather than after the next 6h cron tick.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 22:04:18 -05:00
Hunter Bown 4eccb1b5cd fix(web): correct China-network install snippet (#1104 follow-up) (#1121)
DeepSeek's official API has a single endpoint, https://api.deepseek.com,
with servers physically in China. There is no separate mainland endpoint,
and api.deepseeki.com is a typo grandfathered into the source.

The /zh/install "国内 API 访问" panel previously suggested users set a
custom base_url to a China endpoint, which doesn't exist. Replace with
the truth: the default works for mainland users; only override
DEEPSEEK_BASE_URL if you have a private mirror.

Also re-runs derive-facts to keep facts.generated.ts at 9 providers.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 21:53:40 -05:00
Hunter Bown b417fc9efa chore(ci): remove deploy-web workflow until Cloudflare token is sorted (#1115)
The current CLOUDFLARE_API_TOKEN secret authenticates but lacks
User -> User Details -> Read, which OpenNext needs to call the
/memberships endpoint during the KV populate step. Until that
permission is added (or the token is regenerated from Cloudflare's
"Edit Cloudflare Workers" template), every push to web/** fails CI.

Removing the workflow file until the token is ready. Re-add when
the secret has the right scopes; the workflow's previous content
is preserved in git history at 6483997480.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 21:17:05 -05:00
Hunter Bown 6483997480 ci(deploy-web): bump Node to 22 for wrangler@4 (#1111)
wrangler 4 requires Node.js >=22; the deploy job was pinned to 20
and failed at `npx wrangler deploy` with "Wrangler requires at
least Node.js v22.0.0".

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 21:03:42 -05:00
Hunter Bown 9e45780ba0 feat(web): community site for deepseek-tui.com (mobile + color refresh) (#1108)
First commit of the Next.js community site that powers
deepseek-tui.com, deployed via Cloudflare Workers / OpenNext.

This commit lands the scaffold and applies the visual + correctness
pass requested by community feedback:

- Palette: drop the cream/Anthropic-feel paper (#F4F1E8) for a
  DeepSeek-aligned cool white + soft gray (#FFFFFF / #F4F6FB), with
  indigo accents kept. Soften default hairlines so a pure-white
  background reads clean instead of harsh.
- Mobile: add a hamburger menu (mobile-menu.tsx) so phones can reach
  Install / Docs / Activity / Roadmap / Contribute — previously the
  link list was hidden on phones with no replacement. Tighter hero,
  flexible button row, viewport-safe code blocks, columnar grids
  collapse cleanly under 768px, and the printed-almanac center rule
  is desktop-only now (it sliced through narrow viewports).
- "How it works" diagram: replace the hand-rolled ASCII art (which
  misaligned under CJK monospace because Han characters take 2
  columns vs Latin's 1, per dhh's note in WeChat) with a real
  mermaid diagram rendered client-side via dynamic import. Uses the
  mermaid.live standard syntax 庄表伟 recommended.
- Issue #1104: the docs listed a `deepseek-cn` provider that the
  v0.8.16 binary doesn't accept (`ProviderArg` in crates/cli only
  has 9 variants; the 10th lives only in the legacy tui/config.rs).
  derive-facts.mjs now omits `deepseek-cn` until that variant is
  wired through the shared ProviderKind, and the install page's
  China-network recipe uses `base_url` / `DEEPSEEK_BASE_URL` (which
  actually works on v0.8.16) instead of the unsupported provider.

Auto-deploys via .github/workflows/deploy-web.yml on push to main.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 21:00:06 -05:00
Hunter Bown b3329f69f1 fix(release): unblock arm64 docker image build
Merge release infrastructure fix for v0.8.18 Docker/GHCR publish.
2026-05-07 20:56:47 -05:00
Hunter B 10c6901b64 fix(release): unblock arm64 docker image build 2026-05-07 20:48:40 -05:00
Hunter Bown 5c573b958b merge: v0.8.18 follow-up
Merge v0.8.18 release branch after local release gates and green CI.
2026-05-07 20:21:39 -05:00
Hunter Bown 35ee329b13 fix(tui): wait for terminal pause before interactive tools 2026-05-07 16:30:00 -05:00
Hunter Bown 2eddff473e fix(tui): keep light theme readable after toggle 2026-05-07 16:29:42 -05:00
Hunter Bown aa9e32bf0e chore(release): prepare v0.8.18 2026-05-07 15:36:30 -05:00
Hunter Bown ef808d893b docs(install): document rustup mirror fallback
Co-authored-by: nsight <wuyefeima@163.com>
2026-05-07 15:29:05 -05:00
Zhuoran Deng 451d66ab0a docs(sandbox): define windows helper contract 2026-05-07 15:28:10 -05:00
Hunter Bown e814a203cb fix(secrets): fall back without native keyring 2026-05-07 15:27:14 -05:00
Hunter Bown 7cc8c53d79 fix(tui): soften long-session transcript palette 2026-05-07 15:22:02 -05:00
Hunter Bown b80d522f0e fix(tui): clear stale scrollbar drag state 2026-05-07 15:17:08 -05:00
Hunter Bown 245e409a20 fix(tui): reset terminal viewport before repaint 2026-05-07 15:17:03 -05:00
Hunter Bown 8f181c80f8 feat(release): publish supported Docker image 2026-05-07 15:16:23 -05:00
Hunter Bown 3f3395e00e fix(npm): make postinstall download failures recoverable 2026-05-07 15:16:17 -05:00
Hunter Bown 74b2f2f911 fix(session): start fresh on plain launch 2026-05-07 15:16:12 -05:00
Zhiping 9805c1b45e fix(tui): satisfy scrollbar drag clippy lint 2026-05-07 14:54:00 -05:00
Zhiping 0044361bc5 feat(tui): support transcript scrollbar dragging 2026-05-07 14:54:00 -05:00
Zhuoran Deng 96e58d23fd fix(i18n): localize approval dialog safety copy 2026-05-07 14:52:53 -05:00
Hunter Bown 200b4f4d15 docs(readme): refresh v0.8.17 highlights 2026-05-07 14:20:16 -05:00
Hunter Bown 5ce1314684 feat(runtime): bridge desktop approvals and skills 2026-05-07 13:53:01 -05:00
Hunter Bown 77e0810940 fix(npm): explain release mirror on download failures 2026-05-07 13:37:20 -05:00
Hunter Bown a0ef4017b4 fix(config): prefer provider API keys over root key 2026-05-07 13:34:38 -05:00
Hunter Bown 0f46acdd76 fix(release): close v0.8.17 gate gaps 2026-05-07 13:27:31 -05:00
Hunter Bown ee0ce460ee chore(release): v0.8.17
A community-driven reliability release. Plan-mode safety, paste-Enter
auto-submit, slash-menu skills coverage, the deepseek-cn endpoint
preset, and a handful of platform / streaming / gateway-compat fixes,
plus a small PTY-driven QA harness.

See CHANGELOG.md for the full annotated change list with credits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 12:52:53 -05:00
Hunter Bown 52d1959937 chore: rustfmt + rustdoc fixes after v0.8.17 sweep
Five rustdoc warnings (all pre-existing or surfaced by recent merges)
that the CI \`RUSTDOCFLAGS=-Dwarnings cargo doc\` gate would have
caught:

- \`backend.rs\`: intra-doc link to \`OpenSandboxBackend\` couldn't
  resolve without a use; qualify with the module path.
- \`markdown_render.rs\`: backtick-quote the literal \`[text](url)\`
  example so rustdoc doesn't try to follow it as an actual link.
- \`anchor.rs\`: rewrite the \`<text>\` / \`<n>\` placeholder syntax in
  doc comments so they aren't parsed as malformed HTML tags.
- \`config.rs\`: wrap the bare api-docs URL in \`<>\` so rustdoc treats
  it as a hyperlink instead of warning.

Plus rustfmt cleanup of two recently-merged files (\`commands/config.rs\`,
\`localization.rs\`) where the inserted lines weren't yet through
\`cargo fmt\`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 12:49:32 -05:00
THINKER_ONLY 4aee8a15c6 fix(config): preserve OpenRouter custom endpoint models
When OpenRouter is pointed at a custom base_url, keep explicit model values verbatim instead of remapping DeepSeek aliases to OpenRouter catalog IDs.

Add config coverage for both the dispatcher config crate and the TUI config loader, while preserving existing provider alias behavior such as NVIDIA NIM.

Closes #857
2026-05-07 12:45:37 -05:00