3842 Commits

Author SHA1 Message Date
Xubin Ren
c2fd41b44d fix(webui): persist large sidebar ordering state 2026-08-06 19:11:05 +08:00
Xubin Ren
1d290614c9 fix(webui): align composer mention metrics 2026-08-06 19:11:05 +08:00
Xubin Ren
9af6bb91c7 fix(webui): preserve session drag contracts 2026-08-06 19:11:05 +08:00
Xubin Ren
f44a766f98 feat(webui): preview dragged session mentions 2026-08-06 19:11:05 +08:00
Xubin Ren
9cf6cf0639 feat(webui): persist manual session ordering 2026-08-06 19:11:05 +08:00
Xubin Ren
2c8e63446f feat(webui): drag sessions into composer mentions 2026-08-06 19:11:05 +08:00
Orrin Witt
5c4c2cb819
fix(matrix): send non-empty POST body on room join for Continuwuity compatibility (#5248) 2026-08-06 18:29:57 +08:00
chengyongru
223b911e7e fix(webui): tighten interactive motion 2026-08-06 18:28:45 +08:00
chengyongru
a95fd0ee82
perf(webui): reduce cold-start payload (#5262) 2026-08-06 13:24:34 +08:00
chengyongru
67805f5db8
feat: add provider-native request switches (#5254) 2026-08-05 18:26:39 +08:00
chengyongru
5a1ab44baa
fix(whatsapp): detect outbound media content before dispatch (#5203) 2026-08-05 15:44:23 +08:00
chengyongru
9098ffd38f
refactor(webui): improve visual consistency (#5249) 2026-08-05 13:24:45 +08:00
chengyongru
a54d5d14cb fix(webui): feather clipped activity edges 2026-08-05 11:10:46 +08:00
chengyongru
6e9ae5bd05
refactor(session): remove request-scoped access grants (#5238) 2026-08-05 10:18:46 +08:00
Xubin Ren
858f6d96a6 fix(mattermost): preserve thread policy compatibility 2026-08-05 09:31:55 +08:00
Kenneth Zhao
cd4c1d0f6e feat(mattermost): separate group policy for threads vs channels 2026-08-05 09:31:55 +08:00
Xubin Ren
be5af019b9 fix(wecom): sanitize fallback media filename 2026-08-04 22:04:21 +08:00
santhreal
98507ae4fe fix(wecom): fallback to default filename when sanitize strips to empty 2026-08-04 22:04:21 +08:00
concertypin
cb2f9d0bbd fix(webui): configure public websocket URL 2026-08-04 21:53:16 +08:00
concertypin
e318e21cad fix(webui): require proxy-generated auth assertions 2026-08-04 21:53:16 +08:00
concertypin
465a918cf8 feat(webui): bypass tokens for trusted proxy auth 2026-08-04 21:53:16 +08:00
concertypin
5cd14a42df feat(webui): support trusted proxy bootstrap auth 2026-08-04 21:53:16 +08:00
santhreal
170c7083ed fix(telegram): require newline for language tag to preserve single-line fenced code 2026-08-04 21:40:03 +08:00
santhreal
a13e29bf07 fix(telegram): preserve code block content when language tag contains special characters 2026-08-04 21:40:03 +08:00
chengyongru
5770329542
fix(webui): render markdown in prompt rail previews (#5244) 2026-08-04 18:24:54 +08:00
chengyongru
29fdb7d628 fix(webui): align timestamp tooltip styles 2026-08-04 18:22:12 +08:00
Xubin Ren
fa65a01977 refactor(webui): narrow floating control migration 2026-08-04 18:05:34 +08:00
Xubin Ren
28ec8a1b47 fix(webui): correct combobox navigation semantics 2026-08-04 18:05:34 +08:00
Xubin Ren
3b4a056947 chore(webui): sync npm lockfile 2026-08-04 18:05:34 +08:00
Xubin Ren
7819cef7bd refactor(webui): unify floating controls 2026-08-04 18:05:34 +08:00
chengyongru
faff0ac2fa fix(webui): align automation metadata with timestamps 2026-08-04 17:46:24 +08:00
chengyongru
f45436b61d fix(commands): reject invalid slash commands 2026-08-04 17:11:44 +08:00
chengyongru
287fd88fe4
fix(webui): refine inline token highlights (#5241) 2026-08-04 16:40:41 +08:00
chengyongru
2fe135db3e
feat(webui): add integrated Vite dev mode (#5239) 2026-08-04 16:14:32 +08:00
chengyongru
4e8702a47b
fix(anthropic): support Opus 5 effort controls (#5236) 2026-08-04 13:38:54 +08:00
Xubin Ren
d99f589a59 refactor(session): clarify reference boundaries 2026-08-04 12:14:51 +08:00
Xubin Ren
d8aeb0eb2c refactor(session): simplify cross-session flow 2026-08-04 12:14:51 +08:00
Xubin Ren
62d34b5eb7 refactor(session): tighten cross-session access 2026-08-04 12:14:51 +08:00
Xubin Ren
f15ea84dd1 fix(session): enforce trusted read scope 2026-08-04 12:14:51 +08:00
Xubin Ren
4c07c40b34 feat(session): link agent references 2026-08-04 12:14:51 +08:00
Xubin Ren
cf01978e71 feat(webui): link session mentions 2026-08-04 12:14:51 +08:00
Xubin Ren
5dd3dc5450 fix(session): harden cross-session references 2026-08-04 12:14:51 +08:00
Xubin Ren
9b25da7b92 feat(session): add cross-session references 2026-08-04 12:14:51 +08:00
chengyongru
44b7e1bf41 fix(providers): keep serde errors explicit 2026-08-03 18:06:45 +08:00
arcdrake22
6eda67b50c fix(providers): keep reasoning items wire-valid for DeepSeek Responses
convert_messages() emitted reasoning items with ``content`` as a plain
string whenever preserve_reasoning was enabled (the DeepSeek spec).
DeepSeek's Responses gateway rejects that shape with a serde error
("input: invalid type: string ..., expected a sequence"), which surfaced
only after token consolidation cleared provider_state and forced the
full-history conversion path; replayed server items already carry list
content, which is why normal multi-turn requests never failed. Serialize
reasoning content as a list of output_text parts, matching the OpenAI
Responses schema and DeepSeek's accepted wire shape (verified live against
api.deepseek.com/responses).

The serde fallback classifier introduced in the previous commit remains as
a last-resort safeguard for any remaining wire incompatibility.

Tests: extend test_preserves_deepseek_reasoning_content to the array shape;
add a full-history regression with the observed failing item, a
replay/consolidation regression covering both replayed and converted
reasoning items, and provider-level request fixtures for both paths.
Full suite: 5773 passed, 22 skipped (only the known local-only
channels/sms packaging failure remains).
2026-08-03 18:06:45 +08:00
arcdrake22
fb2688fd37 fix(providers): fall back to chat completions on serde body rejections
DeepSeek's new Responses endpoint (deepseek-v4-flash) intermittently rejects valid request bodies with serde deserialization errors such as 'input: invalid type: string ..., expected a sequence'. These were not classified as compatibility errors, so affected conversations died instead of falling back to Chat Completions.

The wire format is correct (input serializes as a list), so this is a server-side Responses compatibility issue; Chat Completions is strictly more permissive, making fallback safe. Extend the fallback classifier to recognize serde body-parsing markers. Repeated failures still trip the existing circuit breaker.
2026-08-03 18:06:45 +08:00
chengyongru
2b63715282 fix(webui): complete i18n audit 2026-08-03 17:53:33 +08:00
Xubin Ren
df11fd92a6 docs(providers): link ModelScope setup sources 2026-08-03 16:57:10 +08:00
Xubin Ren
b29f9dcbcb docs(providers): align ModelScope setup with current config 2026-08-03 16:57:10 +08:00
Krislu1221
02df20cd55 docs(providers): add ModelScope (魔搭) section
ModelScope is a fully implemented provider (nanobot/providers/registry.py,
image_generation.py, schema.py) with async image-generation task submission
and polling, but was previously undocumented in docs/providers.md.

This patch adds a ModelScope entry under 'Common Provider Patterns',
covering:

- Default base URL: https://api-inference.modelscope.cn/v1
- OpenAI-compatible chat/completions endpoint
- Async image-generation flow (task submit + status poll)
- Automatic 'modelscope/' prefix stripping when calling the API
- A minimal nanobot.yaml example

No code changes; docs-only.
2026-08-03 16:57:10 +08:00