Commit Graph
4007 Commits
Author SHA1 Message Date
Xubin Ren e77eed76c9 fix(tui): track canonical model presets 2026-08-17 20:56:10 +08:00
Xubin Ren 9d7453a53e style(tui): simplify the composer surface 2026-08-17 20:56:10 +08:00
Xubin Ren f17d9eeff7 style(tui): align accents with nanobot brand 2026-08-17 20:56:10 +08:00
Xubin Ren 6eba62606c refactor(tui): modernize active status animation 2026-08-17 20:56:10 +08:00
Xubin Ren 5415e68014 fix(tui): keep scroll position indicator textual 2026-08-17 20:56:10 +08:00
Xubin Ren 0035cd67cd fix(tui): suppress terminal scrollbar glyphs 2026-08-17 20:56:10 +08:00
Xubin Ren 9514b9b909 fix(tui): require the native interactive client 2026-08-17 20:56:10 +08:00
Xubin Ren 8f9bdb210e feat(tui): refine quiet terminal interactions 2026-08-17 20:56:10 +08:00
Xubin Ren 7ed37e5b70 test(tui): exercise Windows ConPTY boundary 2026-08-17 20:56:10 +08:00
Xubin Ren c0e9ce77ef feat(tui): complete session-native terminal workflow 2026-08-17 20:56:10 +08:00
Xubin Ren 6301c0ab57 feat(tui): unify session history and context 2026-08-17 20:56:10 +08:00
Xubin Ren b3c3a82075 fix(tui): preserve slash command semantics 2026-08-17 20:56:10 +08:00
Xubin Ren 2b666934ba feat(tui): add session navigation 2026-08-17 20:56:10 +08:00
Xubin Ren d094fd7f4d feat(tui): discover slash commands 2026-08-17 20:56:10 +08:00
Xubin Ren f3386d965b fix(tui): restore session header card 2026-08-17 20:56:10 +08:00
Xubin Ren 8395bc825b refactor(tui): clarify conversation hierarchy 2026-08-17 20:56:10 +08:00
Xubin Ren 411f9f0e90 fix(tui): clear stale composer placeholder 2026-08-17 20:56:10 +08:00
Xubin Ren a583b1ffda fix(tui): inherit terminal background 2026-08-17 20:56:10 +08:00
Xubin Ren a80993e413 test(tui): verify real terminal boundaries 2026-08-17 20:56:10 +08:00
Xubin Ren 14c5607e5e fix(tui): enforce supported platform boundaries 2026-08-17 20:56:10 +08:00
Xubin RenandBingxi Zhao 406509aeb8 fix(tui): align CI with supported platforms
Wait for terminal setup before asserting signal cleanup on slower Intel runners. Do not advertise a Windows ARM64 sidecar while Bun lacks the FFI support OpenTUI requires there.

Co-authored-by: Bingxi Zhao <150592536+pancacake@users.noreply.github.com>
2026-08-17 20:56:10 +08:00
Xubin Ren 35f2d086b0 fix(tui): harden themes and platform coverage 2026-08-17 20:56:10 +08:00
Xubin RenandBingxi Zhao 347583d3f7 fix(tui): preserve gateway and cache boundaries
Only reuse the exact managed config/workspace instance so CLI overrides cannot silently attach to another gateway. Revalidate cached release sidecars before execution and recover from corrupted cache entries.

Co-authored-by: Bingxi Zhao <150592536+pancacake@users.noreply.github.com>
2026-08-17 20:56:10 +08:00
Xubin Ren fd32a99bf6 test(tui): synchronize cross-platform input assertions 2026-08-17 20:56:10 +08:00
Xubin Ren e207269cf6 fix(tui): close cross-platform lifecycle races 2026-08-17 20:56:10 +08:00
Xubin Ren 4f12e15237 fix(tui): harden the interactive terminal experience 2026-08-17 20:56:10 +08:00
Xubin Ren 5feb21543c fix(tui): reflow layout on terminal resize 2026-08-17 20:56:10 +08:00
ce070c832d feat(cli): add native TypeScript terminal UI
Rebuild the terminal client on OpenTUI while keeping the Python gateway as the single agent, session, tool, and memory runtime. Preserve a classic prompt fallback and publish version-matched native sidecars for supported platforms.

Co-authored-by: Bingxi Zhao <150592536+pancacake@users.noreply.github.com>
Co-authored-by: chengyongru <2755839590@qq.com>
2026-08-17 20:56:10 +08:00
chengyongruandchengyongru c27b1f14c3 fix(webui): preserve mutation order after reconnect 2026-08-16 21:40:14 +08:00
chengyongruandchengyongru 32cc861f2a test(webui): harden mutation replay coverage 2026-08-16 21:40:14 +08:00
chengyongruandchengyongru 2b6a0443c0 fix(webui): snapshot mutation replay frames 2026-08-16 21:40:14 +08:00
chengyongruandchengyongru e51ffc8978 fix(webui): make mutations reconnect-safe 2026-08-16 21:40:14 +08:00
Xubin Ren dec89a49a3 fix(settings): serialize gateway configuration updates 2026-08-16 11:50:56 +08:00
Xubin Ren 731b8fc2ed fix(models): synchronize canonical runtime selection 2026-08-16 11:50:56 +08:00
Xubin Ren 0a6ee1c539 fix(models): preserve preset rename compatibility 2026-08-16 11:50:56 +08:00
Xubin Ren a956fe1d60 fix(models): show inline preset name conflicts 2026-08-16 11:50:56 +08:00
Xubin Ren c15e6f2a37 fix(models): support atomic preset renames 2026-08-16 11:50:56 +08:00
Xubin Ren 3dc38f6396 refactor(models): unify preset names 2026-08-16 11:50:56 +08:00
Xubin Ren 8dc08853e4 fix(providers): preserve legacy OrcaRouter custom configs 2026-08-16 00:26:51 +08:00
Xubin Ren 656480546b test(providers): cover OrcaRouter WebUI integration 2026-08-16 00:26:51 +08:00
XiaoHuo888andXubin Ren fd2d419956 feat(providers): add OrcaRouter as a named gateway provider
Registers OrcaRouter (https://www.orcarouter.ai) as a built-in OpenAI-compatible gateway provider mirroring the OpenRouter wiring: registry spec (sk-orca- key prefix, default base URL), ProvidersConfig field, WebUI icon/brand + deferred model list, docs, and tests.
2026-08-16 00:26:51 +08:00
Xubin Ren 50391b2fb7 fix(webui): keep actions hidden while turn id resolves 2026-08-16 00:14:42 +08:00
ZhouandXubin Ren 48126f049d fix(webui): hide actions until turn end 2026-08-16 00:14:42 +08:00
Xubin Ren 5e84055dbb fix(plugins): verify content at skill read boundary 2026-08-16 00:01:54 +08:00
yu-xin-candXubin Ren e99b1a11aa fix(plugins): revalidate cached skill roots 2026-08-16 00:01:54 +08:00
Xubin Ren 2f19068eb0 fix(session): clear file state at deletion boundary 2026-08-15 23:49:20 +08:00
yu-xin-candXubin Ren 42afebb0cb fix(agent): bound per-session file state 2026-08-15 23:49:20 +08:00
Xubin Ren ecef2b055d fix(cron): prevent replay after persistence failure 2026-08-15 23:34:35 +08:00
f10renceandXubin Ren 8bdf5ed2b2 fix(cron): keep scheduler alive when job-store persistence fails
A single OSError from _save_store() (disk full, permission change, locked
file) escaped _on_timer's try/finally and killed the asyncio timer task,
because _arm_timer() sits outside the block. All scheduled jobs silently
stopped until restart or a manual re-arm via add_job/update_job/remove_job.

Move _arm_timer() into the finally block and guard the whole tick body
(including _load_store, which can persist during agent-binding migrations)
so a transient persistence failure is logged and retried on the next tick
instead of killing the scheduler.

Add test_save_store_failure_does_not_kill_scheduler to cover the failure
path that existing tests (which mock _arm_timer) never exercised.
2026-08-15 23:34:35 +08:00
Xubin Ren 577e6ea3b5 fix(webui): clarify model preset display names 2026-08-15 23:30:19 +08:00