seteiro and chengyongru
4490f8cfe4
fix(webui): allow media directory access when restrictToWorkspace is enabled
...
Add get_media_dir() as an extra allowed root in file_preview path resolution so uploaded images and documents remain previewable even with workspace restrictions on. Closes #5028
2026-07-24 00:30:49 +08:00
AxelRay and GitHub
78f4c132d9
fix(exec): extract absolute paths after equals sign in shell guard ( #4594 )
2026-07-23 23:58:01 +08:00
santhreal and chengyongru
7e9426d9bd
fix(telegram): hard-cut when fence body cut lands on the prefix
...
A leading space in the fenced body made the soft cut land at min_code_pos
and re-emit the same fence forever. Require progress past the fence line.
2026-07-23 23:56:18 +08:00
santhreal and chengyongru
98d661775e
fix(telegram): hard-cut fence splits when the closer cannot fit
...
Adaptive HTML limits can shrink max_len to the fence prefix size. Treat
budget <= min_code_pos as a hard cut so the splitter still advances.
2026-07-23 23:56:18 +08:00
santhreal and chengyongru
017a4946e2
fix(telegram): advance markdown split on long single-line fences
...
When a fenced code body has no interior newlines, the splitter cut at the
opening fence line and re-emitted the same content forever. Prefer breaks
inside the body after the fence so long JSON/minified blocks still split.
2026-07-23 23:56:18 +08:00
KDB and chengyongru
648fc92673
fix(exec): retain stale sessions after cleanup failure
...
Only remove idle exec sessions after process termination succeeds so later cleanup and shutdown paths can retry failed kills.
2026-07-23 23:55:00 +08:00
KDB and chengyongru
274613f064
fix(session): tolerate files removed during listing
2026-07-23 23:53:56 +08:00
Xubin Ren
754f457a94
fix(webui): keep composer model badge in sync
2026-07-23 23:11:40 +08:00
chengyongru and chengyongru
6c0f151f6e
fix(webui): polish responsive layout
2026-07-23 18:22:02 +08:00
chengyongru and GitHub
4b1547db7d
style(webui): unify settings and dark mode surfaces ( #5058 )
2026-07-23 17:47:20 +08:00
Xubin Ren
c3ec2e665f
test(documents): preserve nested block order
2026-07-23 16:53:59 +08:00
Xubin Ren
911a7e3a82
test(documents): cover vertical merged cells
2026-07-23 16:53:59 +08:00
Xubin Ren
fc9d17eb7b
fix(documents): bound nested DOCX table parsing
2026-07-23 16:53:59 +08:00
Xubin Ren
60ab580f8b
fix(documents): preserve DOCX table content
2026-07-23 16:53:59 +08:00
chengyongru and GitHub
96eb965aae
feat(webui): show the actual fallback model ( #5017 )
2026-07-23 15:57:13 +08:00
chengyongru and chengyongru
4188ffc88d
chore: pin migration TODOs to v0.2.4
2026-07-23 15:40:44 +08:00
chengyongru and chengyongru
089216f9c7
chore(session): schedule legacy fallback removal for v0.2.4
2026-07-23 14:53:00 +08:00
axelray-dev and chengyongru
464f71b488
fix(session): fall back to legacy paths in metadata reads
...
Fixes #4940
2026-07-23 14:53:00 +08:00
chengyongru and chengyongru
15de6be0af
fix(providers): fall back on authentication errors
2026-07-23 14:52:04 +08:00
chengyongru and GitHub
01cdfc8100
fix(telegram): expose proxy setup in WebUI ( #5033 )
2026-07-23 14:18:49 +08:00
Arthur K. and chengyongru
3647875aba
fix: add one second to retry after delays
2026-07-23 14:10:27 +08:00
santhreal and chengyongru
299bcf491b
fix(cron): skip null runHistory elements when loading jobs.json
...
Null entries in state.runHistory raised TypeError and quarantined the
store. Skip non-dict elements like LocalTrigger.from_dict already does.
2026-07-23 14:07:06 +08:00
santhreal and chengyongru
0191c0db73
fix(pairing): treat null approved channel lists as empty
...
pairing.json with "telegram": null crashed is_approved during load.
Treat non-list channel entries as an empty allow-list.
2026-07-23 14:04:53 +08:00
santhreal and chengyongru
5851bd432a
fix(slack): keep fenced markdown tables intact in _to_mrkdwn
2026-07-23 14:03:09 +08:00
santhreal and chengyongru
8195181783
fix(feishu): keep fenced markdown tables out of card tables
2026-07-23 14:02:33 +08:00
chengyongru and GitHub
9cf2fb19c2
feat(xai): surface hosted X Search activity ( #5050 )
2026-07-23 13:42:09 +08:00
chengyongru and chengyongru
f3099286ea
docs: explain slow optional dependency installs
2026-07-23 13:23:55 +08:00
chengyongru and chengyongru
5f054c0e74
fix(agent): deliver non-streamed finalization responses
2026-07-23 13:16:47 +08:00
Xubin Ren
536e8db324
refactor(webui): remove unused picker styling hooks
2026-07-23 12:42:24 +08:00
Xubin Ren
2f4f00bb9f
refactor(image): reuse the model picker
2026-07-23 12:42:24 +08:00
Xubin Ren
8bd951a06f
test(image): update model picker assertion
2026-07-23 12:42:24 +08:00
Xubin Ren
e875f29185
fix(image): allow custom model ids
2026-07-23 12:42:24 +08:00
Xubin Ren
1616fa9f14
feat(image): apply generation settings live
2026-07-23 12:42:24 +08:00
chengyongru and GitHub
c7393c785e
feat(providers): add xAI Grok OAuth with capability-gated X Search ( #5035 )
2026-07-23 11:55:16 +08:00
chengyongru and GitHub
c22efb5f7a
feat(agent): make model presets session-scoped ( #4866 )
2026-07-23 00:38:49 +08:00
chengyongru and GitHub
66690fdb0c
fix(webui): deliver late subagent results as new turns ( #4992 )
2026-07-22 23:04:36 +08:00
Xubin Ren
aa8387fb4d
feat(webui): polish agent output and app discovery
2026-07-22 22:42:31 +08:00
chengyongru and GitHub
b189a37648
fix(agent): preserve agent-owned state in project workspaces ( #4945 )
2026-07-22 17:25:22 +08:00
chengyongru and chengyongru
4cd6eb6c38
fix(webui): avoid mobile welcome composer overlap
2026-07-22 15:55:09 +08:00
chengyongru and chengyongru
80085085d9
fix(exec): retain failed owner session cleanup
2026-07-22 15:28:34 +08:00
yorkhellen and chengyongru
ebf1ef5cab
test(subagent): verify cascade exec termination on /stop
...
- terminate_by_owner kills matching sessions, skips others, handles
empty owner case
- cancel_by_session calls terminate_by_owner on the session key
2026-07-22 15:28:34 +08:00
yorkhellen and chengyongru
7b1d81a868
fix(subagent): cascade exec session termination on /stop
...
cancel_by_session() only cancelled asyncio tasks, leaving child
processes from exec sessions orphaned. Since each SubagentManager
now owns a dedicated ExecSessionManager, terminate those sessions
by owner_session_key after cancelling tasks.
Add ExecSessionManager.terminate_by_owner() to kill all sessions
for a given owner, and call it from cancel_by_session().
2026-07-22 15:28:34 +08:00
chengyongru and GitHub
254497c02e
fix(webui): improve mobile composer layout ( #5030 )
2026-07-22 14:59:56 +08:00
chengyongru and GitHub
96abb4d2c4
style(webui): clarify surface hierarchy ( #5029 )
2026-07-22 14:33:58 +08:00
chengyongru and GitHub
63bc6e98a7
fix(webui): detect Chrome voice recording support ( #5027 )
2026-07-22 14:10:09 +08:00
chengyongru and GitHub
3748f664b2
feat(config): watch runtime configuration changes ( #5026 )
2026-07-22 13:08:39 +08:00
chengyongru and GitHub
7bf7469d90
feat(webui): show pin indicators for pinned chats ( #5025 )
2026-07-22 11:47:45 +08:00
seteiro and GitHub
79d9455313
fix(providers): add Qwen model-level thinking style mapping ( #5023 )
...
Add _QWEN_THINKING_MODELS to _MODEL_THINKING_STYLES with enable_thinking style. Prevents Qwen 3.5/3.6/3.7 models from exposing raw reasoning content in chat responses. Closes #4934
2026-07-22 10:46:22 +08:00
hamb1y and Xubin Ren
a9867a5a4e
fix: quarantine invalid tool results
2026-07-22 01:59:09 +08:00
seteiro and Xubin Ren
c6a4d46a2a
docs(security): recommend env-var references over plaintext API keys
...
Prefer ${VAR} env references in config over plaintext keys on disk. Closes #4803
2026-07-22 01:45:28 +08:00