3499 Commits

Author SHA1 Message Date
yu-xin-c
07ad0bafa8 test(exec): relax wait-for timing on Windows 2026-07-18 17:35:56 +08:00
yu-xin-c
995cc44e89 fix(exec): isolate exec session managers 2026-07-18 17:35:56 +08:00
santhreal
7ac9a46978 fix(utils): avoid hang in split_message when max_len <= 0
When max_len is 0 or negative the cut pointer never advances, so the loop hangs. Return the content unsplit, matching truncate_text_to_tokens for non-positive budgets.
2026-07-18 17:24:12 +08:00
santhreal
fe0e65928d fix(utils): coerce Tavily usage counters to int
JSON APIs sometimes return numeric fields as strings; subtracting them raised TypeError and /status dropped the usage block.
2026-07-18 17:23:26 +08:00
santhreal
85097aa143 fix(utils): handle empty commit messages in CommitInfo.format
Empty git commit messages made splitlines()[0] raise IndexError in format() and /dream-restore list rendering.
2026-07-18 17:22:16 +08:00
Peter Dave Hello
6de5a0c5ca Improve zh-TW Traditional Chinese locale 2026-07-18 00:59:05 +08:00
bingqilinweimaotai
8a48af7c74 fix(providers): omit Kimi K2.5/K2.6 temperature 2026-07-17 22:39:33 +08:00
Xubin Ren
b4adb29c2b feat(webui): support native folder picker bridges 2026-07-17 12:26:03 +08:00
Xubin Ren
6519737860 docs(readme): reflect community maintenance 2026-07-16 13:52:12 +08:00
chengyongru
d4e0294734 fix(gateway): stop channels before draining tasks 2026-07-15 22:25:08 +08:00
chengyongru
681edfa6f3 fix(providers): honor Codex proxy config consistently 2026-07-15 20:01:48 +08:00
chengyongru
ba86dccc8d
fix(webui): correct activity timer duration (#4649) 2026-07-15 16:46:05 +08:00
chengyongru
5ed28a6744
fix(webui): validate inferred file paths before preview (#4935) 2026-07-15 10:45:40 +08:00
chengyongru
aa70aa48f9
fix(cli): point onboarding to the WebUI launcher (#4938) 2026-07-15 10:34:46 +08:00
chengyongru
0fd4d0ab29 fix(prompts): handle undecodable overrides 2026-07-15 01:19:48 +08:00
chengyongru
c1fd76add3 refactor(prompts): share workspace override handling 2026-07-15 01:19:48 +08:00
chengyongru
63a6d5d07d fix(heartbeat): retain history after empty runs 2026-07-15 01:19:48 +08:00
Arthur K.
dcb37259fa feat(heartbeat): custom evaluator prompt 2026-07-15 01:19:48 +08:00
chengyongru
88c38e9b38
fix(restart): deliver completion after channel reconnects (#4931) 2026-07-15 01:08:39 +08:00
chengyongru
37165b0db0
feat(webui): highlight slash commands and app mentions (#4933) 2026-07-15 00:34:22 +08:00
chengyongru
2116e32013 test: speed up CI and harden the suite 2026-07-15 00:18:37 +08:00
Olu B
06f47fa540 fix: standardize --config help text across CLI commands 2026-07-14 23:51:39 +08:00
chengyongru
905da8e34a ci(webui): verify npm and bun lockfiles 2026-07-14 23:16:21 +08:00
Elias
5365bab088 fix(webui): sync package-lock.json for qrcode dependency
fe0717b3 ("feat(webui): add guided setup flows") added qrcode and
@types/qrcode to webui/package.json without regenerating the lockfile,
so `npm ci` fails in the Docker build with EUSAGE (Missing: qrcode,
@types/qrcode, dijkstrajs, pngjs, yargs, ...).

Regenerate the lockfile so it matches package.json again.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 23:16:21 +08:00
chengyongru
f718c69b2d feat(webui): add copy action to user messages 2026-07-14 22:41:17 +08:00
chengyongru
07f54c25e3
chore(codex): identify failing request stage (#4929) 2026-07-14 22:40:10 +08:00
chengyongru
1a1e666625 fix: install timezone data on Windows 2026-07-14 17:30:16 +08:00
chengyongru
297a9e5939 test: cover MCP cleanup cancellation paths 2026-07-14 16:17:35 +08:00
Brian Noah
86f6558707 fix: catch asyncio.CancelledError in close_mcp shutdown
When an MCP server (e.g. stdio browser-agent subprocess) does not
terminate within the AsyncExitStack.aclose() timeout, asyncio raises
CancelledError. The existing exception handler only caught RuntimeError
and BaseExceptionGroup, so CancelledError escaped the except block and
crashed nanobot with exit code 1 on every shutdown.

Add asyncio.CancelledError to the caught exception tuple so the error
is logged at debug level and shutdown completes cleanly.

Stack trace from the crash:

Traceback (most recent call last):
  File ".../nanobot/agent/loop.py", line 1194, in close_mcp
    await stack.aclose()
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".../asyncio/__main__.py", line ?, in <module>
  File ".../nanobot/agent/loop.py", line ?, in close_mcp
    ...
RuntimeError: ... (or BaseExceptionGroup) not caught
SystemExit: 1
2026-07-14 16:17:35 +08:00
chengyongru
4916fc07ab fix(agent): close reasoning on stream timeout 2026-07-14 15:51:22 +08:00
WK Wong
11eb9d8cc8 fix(agent): add wall-clock timeout for streaming LLM requests 2026-07-14 15:51:22 +08:00
chengyongru
6c9e3a2cc3
refactor(webui): centralize native runtime access (#4769) 2026-07-14 15:00:30 +08:00
chengyongru
b7048cf76a
feat(webui): support document attachments with ingress safeguards (#4771)
* feat: support document attachments in webui

* fix(webui): normalize document attachment MIME

* refactor(webui): move attachment policy out of channel

* fix(webui): reject oversized attachments before send

* fix(webui): align Portuguese attachment errors

* refactor(webui): separate ingress and transport limits

* fix(webui): reject malformed attachment payloads
2026-07-14 14:47:42 +08:00
chengyongru
b2759e8a6b
docs: reorganize documentation around user workflows (#4916) 2026-07-14 13:59:47 +08:00
chengyongru
1643aa7ef5 fix(shell): narrow PowerShell UTF-8 configuration
Avoid changing native pipeline input encoding and consolidate real PowerShell checks to reduce Windows runner startup flakiness.
2026-07-14 13:50:02 +08:00
chengyongru
9f8c2cb1bf test(shell): wait for Windows PowerShell sessions 2026-07-14 13:50:02 +08:00
chengyongru
61afbffc89 fix(shell): configure PowerShell UTF-8 output 2026-07-14 13:50:02 +08:00
adabarbulescu
9cdf17f5d5 Fix Windows exec UTF-16 output decoding 2026-07-14 13:50:02 +08:00
chengyongru
3b14d59dcd fix(telegram): fall back on overflow HTML rejection 2026-07-14 12:25:28 +08:00
chengyongru
a335ce07db fix(telegram): bound streamed HTML overflow chunks 2026-07-14 12:25:28 +08:00
sanasif786ka
87478b6e92 fix(telegram): keep raw markdown in overflow stream buffer tail
Send the overflow tail message with HTML parse_mode, but persist the
unrendered markdown chunk in buf.text so later deltas and stream_end
re-render correctly via _split_telegram_markdown_html().
2026-07-14 12:25:28 +08:00
sanasif786ka
67648774e2 fix(telegram): preserve HTML formatting in stream overflow chunks
Apply parse_mode=HTML to overflow intermediate chunks so markdown
formatting is not lost when long streamed messages are split.

Fixes #4637
2026-07-14 12:25:28 +08:00
chengyongru
6e462e62a6 fix(dream): limit newline normalization to CRLF 2026-07-14 00:30:50 +08:00
bingqilinweimaotai
ed47cf1562 fix(dream): ignore line-ending-only memory diffs 2026-07-14 00:30:50 +08:00
chengyongru
6b5820ea89 fix(webui): sync localized preboot copy 2026-07-13 23:28:19 +08:00
bill-kopp-ai-dev
1e7518a207 feat(webui): add Brazilian Portuguese (pt-BR) locale
Translate the WebUI common.json to pt-BR, register the locale in
config.ts (with normalizeLocale rules for "pt", "pt-BR", "pt-PT", ...)
and index.ts resources, and add a Brazilian Portuguese overview
assertion in i18n.test.tsx.

Notes:
- Generic "pt" and any "pt-*" variant resolve to pt-BR. A future
  pt-PT locale can be added without affecting existing users.
- Universally borrowed technical terms (nanobot, BYOK, MCP, JSON,
  URL, Web, Apps when used as a product name, Skills) are kept in
  English, matching the pattern used by es/fr/ja/ko/vi/id.
- Empty-thread greetings, quick-action prompts, and slash command
  descriptions are translated; quick-action prompts are intentionally
  phrased so the agent still receives a clear task spec.

Verified with bun run test (536 passing), bun run lint (clean), and
bun run build (7.18s).
2026-07-13 23:28:19 +08:00
chengyongru
4a3818e03c
docs: update recent changes through July 12 (#4913) 2026-07-13 22:50:22 +08:00
chengyongru
276cbd947f docs: remove broken Star History embed 2026-07-13 18:28:22 +08:00
chengyongru
234e895e5a
fix(codex): align OAuth defaults and setup docs (#4910)
* fix(codex): align OAuth defaults and setup docs

* docs(codex): clarify provider settings key

* docs(codex): simplify OAuth setup guidance
2026-07-13 17:04:33 +08:00
chengyongru
8c9110fee3
fix(dream): filter non-Dream history commits (#4905)
* fix(dream): filter non-Dream history commits

* fix(dream): resolve filtered commit diffs
2026-07-13 17:04:12 +08:00