Commit Graph
4130 Commits
Author SHA1 Message Date
chengyongruandchengyongru cbe4316e4b perf(tui): avoid repeated LaTeX scans 2026-08-22 01:46:12 +08:00
chengyongruandchengyongru 375185210b feat(tui): render LaTeX as Unicode 2026-08-22 01:46:12 +08:00
KDBandchengyongru a4acd83966 fix(slack): validate file downloads against SSRF
_download_slack_file fetched url_private_download with follow_redirects=True
and no SSRF validation, unlike the shared network guard used across other
channels (napcat/dingtalk/qq) and the maintainer's recent image-download
hardening. A file URL that pointed at — or redirected to — an internal
address let the bot server issue requests to loopback/RFC1918/cloud-metadata
targets, and cross-host redirects could carry the request off Slack.

Validate the URL through validate_url_target before requesting, stop
following redirects, and reject a redirect response. Authorized Slack file
downloads return 200 directly, so normal downloads (which still send the bot
token) are unaffected; the HTML-login guard already handled the redirect-to-
login case.
2026-08-22 01:34:34 +08:00
chengyongruandGitHub 7604dc47f9 fix(webui): keep iOS PWA controls inside safe area (#5477)
* fix(webui): keep iOS PWA controls inside safe area

* fix(webui): blend iOS PWA chrome into dark canvas

* fix(webui): sync PWA chrome with app theme
2026-08-22 01:11:20 +08:00
chengyongruandchengyongru 9ae3ae17da feat(providers): support DeepSeek V4 vision 2026-08-21 23:18:09 +08:00
chengyongruandchengyongru 9bc9b94732 chore(tui): remove redundant picker comment 2026-08-21 18:23:04 +08:00
chengyongruandchengyongru 4561c748f6 fix(tui): preserve keyboard picker selection 2026-08-21 18:23:04 +08:00
chengyongruandchengyongru 252ea18e88 fix(tui): clarify input cache telemetry 2026-08-21 17:47:52 +08:00
chengyongruandchengyongru e9ac83d03f fix(tui): reduce redundant runtime chrome 2026-08-21 17:11:01 +08:00
chengyongruandchengyongru d28687e2e1 feat(webui): polish model preset interaction 2026-08-21 16:49:30 +08:00
chengyongruandchengyongru 953d2ed217 refactor(webui): infer fallback from active model 2026-08-21 16:49:30 +08:00
chengyongruandchengyongru 7f97373490 fix(webui): only highlight actual model fallbacks 2026-08-21 16:49:30 +08:00
chengyongruandchengyongru 761e95b659 refactor(providers): simplify retry fallback routing 2026-08-21 16:46:38 +08:00
chengyongruandchengyongru 9a6dc371b3 refactor: pass retry exhaustion callbacks explicitly 2026-08-21 16:46:38 +08:00
chengyongruandchengyongru f93d4c3ae4 fix(providers): retry before falling back 2026-08-21 16:46:38 +08:00
Lanre Shittuandchengyongru 98660c19cc fix(matrix): interpolate error log context
Matrix error logs used printf-style placeholders with Loguru, leaving filenames, room IDs, and chat IDs out of diagnostic output. Use Loguru placeholders and cover each affected failure path with focused regression assertions.

Signed-off-by: Lanre Shittu <136805224+Shizoqua@users.noreply.github.com>
2026-08-21 15:53:02 +08:00
chengyongruandGitHub 26764f2423 feat(tui): add /detach command (#5461)
* feat(tui): add detach command

* fix(tui): print exact detached gateway stop command
2026-08-21 15:50:07 +08:00
chengyongruandchengyongru 5b44ebdfd7 fix(providers): report Responses cached tokens 2026-08-21 14:01:00 +08:00
chengyongruandchengyongru 8ca4bd9121 fix(agent): keep default prompt paths relative 2026-08-21 11:45:05 +08:00
akinolurandchengyongru c7710238a8 fix(provider): retry Codex server_error
Mid-stream response.failed events from OpenAI carry
'server_error' (underscore), but the transient-error marker
list only had 'server error' (space). is_transient_response
missed it, so the retry loop gave up on the first attempt
instead of using its normal 1s/2s/4s backoff.
2026-08-21 10:52:34 +08:00
chengyongruandchengyongru 415df576b4 feat(tui): print resume command on exit 2026-08-20 17:20:36 +08:00
chengyongruandchengyongru 997bdfc79d chore: remove uv lockfile 2026-08-20 15:27:13 +08:00
chengyongruandchengyongru 7dd5feb456 fix(deps): support standard socks5 proxies 2026-08-20 15:27:13 +08:00
chengyongruandchengyongru 2b491340d8 fix(tui): keep context view concise 2026-08-20 15:25:54 +08:00
chengyongruandchengyongru c5ae958bc3 fix(tui): avoid blocking local gateway startup 2026-08-20 14:48:31 +08:00
chengyongruandchengyongru dc13dff3ff refactor(tui): use local command catalog directly 2026-08-20 11:53:07 +08:00
chengyongruandchengyongru c0e1c2848b fix(tui): keep navigation commands in Herdr panes 2026-08-20 11:53:07 +08:00
chengyongruandchengyongru c615aee2ca feat(tui): start fresh chats in launch workspace 2026-08-20 11:16:09 +08:00
Kail Tianandchengyongru 1018bdb7fe fix(tui): expose /exit in command menu 2026-08-19 20:43:57 +08:00
chengyongruandchengyongru ac13ad65cd fix(memory): preserve replay prefix on session reset 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 9ef1e292ea fix(session): preserve complete transcripts 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 3c41d5e7f3 refactor(skills): own explicit runtime context loading 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 40cc9395fc refactor(memory): remove redundant archive instructions 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 5ec00a9124 refactor(memory): tighten archive prompt 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru cc07ac1e12 fix(memory): avoid re-archiving recent history 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru f13abe0806 refactor(memory): require archive count in prompt 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru f63001828f refactor(memory): guard empty summaries only on write 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 6bb3b33aac fix(memory): ignore empty consolidation summaries 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 8a2aa0821b fix(agent): keep explicit skills out of system prompt 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru ff674144d6 fix(memory): reject truncated consolidation output 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 16be6b0f36 refactor(memory): unify structured consolidation flow 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru d4de0e4e3d test(memory): sharpen compaction coverage 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 6834d656a1 style(agent): restore compact session key import 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 87fb090d22 style(memory): minimize summary diff churn 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru b162019271 refactor(memory): keep session summaries structured 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru fa0605abd0 refactor(memory): simplify idle consolidation flow 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 960425b3aa fix(memory): remove idle archive request fallback 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 82e50e2c91 fix(memory): avoid duplicate summary injection 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 93f71b61a0 fix(memory): reject tool-call-only consolidation 2026-08-19 18:40:20 +08:00
chengyongruandchengyongru 12a4a8c04c fix(memory): preserve idle consolidation boundaries 2026-08-19 18:40:20 +08:00