chengyongru and Xubin Ren
bbd4f4054b
fix(webui): respect full access in file preview
2026-07-09 10:42:43 +08:00
chengyongru and Xubin Ren
88143a8bf0
fix(webui): gate bootstrap API token issuance
2026-07-08 21:01:48 +08:00
chengyongru and Xubin Ren
fa73448f6f
fix(webui): drive slash command routing from metadata
2026-07-07 15:42:04 +08:00
chengyongru and Xubin Ren
3f33ff3143
chore: remove unused dead code
2026-07-07 15:41:27 +08:00
5283ceae85
Add optional Nanobot plugin controls ( #4396 )
...
* feat: add optional nanobot features
* test: update azure install hint expectation
* fix: validate optional feature extras
maintainer edit: verify requested dependency extras before treating optional features as installed, propagate restart state from feature enablement, and align docs with the new plugins enable command.
* fix: bound optional feature installs
maintainer edit: make optional feature installs time out as a normal install failure instead of leaving the WebUI or CLI action waiting indefinitely.
* feat: slim optional channel dependencies
* fix: log optional install commands
* fix(webui): gate remote feature installs
* docs: clarify webhook plugin example
* fix(webui): harden optional feature installs
* fix: install optional deps without package fallback
* fix(cli): refine plugin feature controls
* fix(webui): count enabled nanobot features
* fix(webui): allow slow feature install routes
* fix(webui): allow disabling websocket channel
* fix(plugins): simplify optional feature controls
* fix(webui): polish apps catalog states
* fix(webui): confirm nanobot support installs
* fix(webui): polish nanobot install dialog
* fix(webui): suppress empty websocket handshakes
* fix(webui): clarify apps plugin summary
* fix(webui): localize workspace access copy
* fix(plugins): polish optional feature controls (#4691 )
---------
Co-authored-by: Xubin Ren <52506698+Re-bin@users.noreply.github.com >
2026-07-03 18:17:52 +08:00
chengyongru and Xubin Ren
34535b4e7c
fix(webui): hide subagent backfill payloads
2026-07-02 14:36:23 +08:00
chengyongru and Xubin Ren
2ebf5c4972
refactor(trigger): name CLI trigger source as local
...
maintainer edit: cron is also a trigger source, so keep the new CLI-delivered source explicitly named as local trigger across backend, WebUI, docs, and tests.
2026-07-02 13:32:46 +08:00
chengyongru and Xubin Ren
55b550ee01
fix(trigger): hide external trigger inputs
2026-07-02 13:32:46 +08:00
chengyongru and Xubin Ren
5f4cfbcb16
refactor(bus): type outbound runtime events
2026-07-01 20:17:00 +08:00
chengyongru and Xubin Ren
4378944459
test: speed up test suite
2026-06-25 16:10:28 +08:00
Xubin Ren
e624943bac
fix(gateway): tolerate cancelled channel tasks during shutdown
2026-06-22 23:20:45 +08:00
Xubin Ren
fede2ecfc2
test(websocket): expect optional Keenable search key
2026-06-21 15:22:13 +08:00
fa3e902ee8
feat(web): register Keenable provider in WebUI, docs, and tests
...
Bring the Keenable search provider in line with the established
multi-file provider pattern so it surfaces everywhere the others do:
- settings_api.py: register in the web-search provider options so it
appears in the WebUI settings dropdown (credential: api_key, optional).
- WebUI provider-brand: add keenable brand entry + brand test.
- docs/configuration.md: provider table row + config example.
- Harden _search_keenable: honor config.timeout and return explicit
messages on HTTP status errors (429 / other), matching peer providers.
- Add env-key and HTTP-error tests; add the websocket settings whitelist
assertion.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 00:08:52 +08:00
chengyongru
0263dbd1c3
chore: trim automation ui cleanup
2026-06-16 15:10:51 +08:00
chengyongru
03c79817ac
test(websocket): expect session refresh after turn end
2026-06-15 18:25:00 +08:00
chengyongru
cbb4c0bad2
fix(webui): polish automation layout and session updates
2026-06-15 17:30:06 +08:00
chengyongru and Xubin Ren
af0e3441d7
Fix WebUI startup blocking on slow gateway routes
2026-06-13 21:59:36 +08:00
chengyongru
32d8a1dd7b
fix: hide internal cron prompts from webui
2026-06-12 18:17:28 +08:00
Xubin Ren
e1e643de2a
refactor(webui): keep sidebar index out of session manager
2026-06-10 20:45:29 +08:00
Xubin Ren
e168bb2754
feat(webui): segment transcript storage
2026-06-10 18:28:55 +08:00
Xubin Ren
7186039be1
fix(websocket): limit final stream text to inline endings
2026-06-10 15:52:39 +08:00
Moran and Xubin Ren
9c492143b4
search: add Bocha web search provider
2026-06-10 15:51:15 +08:00
erikmackinnon and Xubin Ren
31bfec58d0
Add Exa web search provider
2026-06-10 15:02:07 +08:00
Xubin Ren
916525f94a
refactor(webui): shrink fork implementation
2026-06-10 04:26:06 +08:00
Xubin Ren
73d4b1cb2f
feat(webui): persist fork boundary metadata
2026-06-10 04:26:06 +08:00
Bayern4ever-dot and Xubin Ren
03bca4c0a9
feat(webui): add assistant reply fork-from-here
2026-06-10 04:26:06 +08:00
ab9f49970d
feat(desktop): polish desktop shell and shared WebUI surfaces ( #4195 )
...
* feat(desktop): add native host scaffold
* feat(webui): track turns and usage in gateway
* feat(webui): polish desktop chat experience
* feat(apps): add ArcGIS and Joplin logos
* feat(desktop): polish shell and shared surfaces
* fix(webui): avoid preview chips for glob references
* test: align CI expectations for token fallback
* feat(webui): preview prompt rail entries
* feat(webui): add prompt navigator drawer
* style(webui): refine prompt navigator placement
* style(webui): align prompt navigator with header actions
* style(webui): simplify prompt navigator header
* refactor(webui): clean thread resource refresh
* feat(desktop): add native reply notifications
* fix(webui): preserve desktop restart and replay state
* fix(desktop): harden gateway proxy startup
* fix(web): fall back when readability is unavailable
* fix(desktop): hide window instead of closing on macos
* fix(webui): unify desktop header actions
* fix(webui): simplify prompt history rows
* fix(desktop): log notification delivery failures
* chore(desktop): clean source package artifacts
* fix(cron): support one-time relative reminders
* fix(webui): reveal scroll button in place
* Revert "fix(cron): support one-time relative reminders"
This reverts commit 4c4661da120a3c7283e0768412bae48604e7390b.
* refactor(webui): extract token usage heatmap
* docs(desktop): clarify contributor guides
---------
Co-authored-by: chengyongru <2755839590@qq.com >
2026-06-06 19:49:33 +08:00
chengyongru and Xubin Ren
710d00a179
fix(webui): persist user messages for refresh
2026-06-05 16:13:51 +08:00
Kunal Karmakar and Xubin Ren
9fdc6f892a
Fix test
2026-06-05 01:17:34 +08:00
chengyongru and Xubin Ren
24e56fcf07
test: improve deterministic unit test coverage
2026-06-04 19:41:32 +08:00
chengyongru and Xubin Ren
2a98360105
refactor: split WebUI gateway dependencies
...
Maintainer edit for PR 4115: rebase onto origin/main and split gateway HTTP routing from token, media, and workspace services so WebSocketChannel depends on explicit gateway services instead of GatewayHTTPHandler internals.
Preserve file edit channel capabilities and restore tools.restrict_to_workspace wiring through ChannelManager.
2026-06-02 17:14:38 +08:00
chengyongru and Xubin Ren
0acf7cd373
refactor: remove gateway-specific kwargs from WebSocketChannel
2026-06-02 17:14:38 +08:00
chengyongru and Xubin Ren
e5eb08e3e5
refactor: WebSocketChannel accepts injected http_handler, update all tests
2026-06-02 17:14:38 +08:00
chengyongru and Xubin Ren
22673c2a27
refactor: update import paths after ws_http move to webui/
2026-06-02 17:14:38 +08:00
chengyongru and Xubin Ren
1a585288b2
refactor: extract GatewayHTTPHandler from WebSocketChannel
...
Extract all HTTP route handling (bootstrap, sessions, settings, media,
commands, sidebar state, static serving, token management) into a new
GatewayHTTPHandler class in nanobot/channels/ws_http.py.
WebSocketChannel is reduced from 1907 to 1372 lines (-28%), retaining
only WebSocket connection management and message dispatch.
No behavior change. 3730 tests pass, 0 failures.
Shared HTTP utility functions (path parsing, response builders, auth
helpers) now live in ws_http.py with websocket.py importing from there,
avoiding circular dependencies.
Backwards-compat property aliases on WebSocketChannel ensure existing
tests continue to work without modification.
2026-06-02 17:14:38 +08:00
Xubin Ren
f382133bb4
refactor(webui): move media replay helpers out of websocket channel
2026-06-02 16:18:57 +08:00
Xubin Ren
8bc4a80035
fix(webui): suppress restart handshake noise
2026-06-02 16:18:57 +08:00
Xubin Ren
edf34d857a
search: add Volcengine web search provider
2026-06-02 13:55:12 +08:00
hamb1y and Xubin Ren
a3241c33ba
Require auth for WebSocket token issuance
2026-05-31 15:15:54 +08:00
Xubin Ren and GitHub
3a420136bb
feat(webui): add project workspaces and access controls ( #4007 )
...
* feat(webui): add project workspaces and access controls
* feat(webui): add project workspaces and access controls
* refactor(tools): centralize workspace access resolution
* refactor(webui): remove unused workspace host state
* fix(webui): hide estimated file edit label
* fix(webui): clarify file edit deletion feedback
* fix(webui): label deleted file activity
* fix(webui): flatten file edit activity rows
* fix(core): remove path-only patch deletion
* fix(core): keep apply patch non-destructive
* refactor(webui): trim workspace host plumbing
* fix(tools): register exec with tools config
2026-05-29 03:42:53 +08:00
outlook84 and Xubin Ren
c433d60681
feat: Enhance OpenAI provider configuration with extraBody support and apiType validation
2026-05-25 01:23:36 +08:00
Xubin Ren
704ac558f6
feat(mcp): add preset setup and capability mentions
2026-05-24 19:43:20 +08:00
Xubin Ren
8be258212e
fix(webui): handle final stream image rewrites
2026-05-24 19:43:20 +08:00
Xubin Ren
c9ff64fc0f
fix(webui): render local CLI image artifacts
2026-05-24 19:43:20 +08:00
ZegWe and Xubin Ren
ffd85a8611
fix image generation provider settings
2026-05-22 17:42:01 +08:00
Xubin Ren
eae51333ad
fix(providers): point Skywork at APIFree agent endpoint
2026-05-20 12:33:03 +08:00
moran and Xubin Ren
61ae869610
feat(providers): add APIFree support
...
Add APIFree as a built-in OpenAI-compatible provider. APIFree offers
agent-optimised models such as skywork-ai/skyclaw-v1 through an
OpenAI-compatible API at https://api.apifree.ai/agent/v1 .
Changes:
- Register apifree provider in the provider registry
- Add config schema field
- Add documentation with configuration example
- Add provider tests, websocket channel tests, and webui tests
- Add provider icon in settings UI
2026-05-20 12:33:03 +08:00
Xubin Ren
1391aa3d57
fix(tests): make settings workspace path portable
2026-05-20 02:20:44 +08:00
Xubin Ren
e00220bdb6
feat(providers): add Skywork provider support
2026-05-20 02:20:44 +08:00
Xubin Ren and GitHub
57d5276da1
feat(webui): upgrade settings and sidebar controls ( #3906 )
...
* feat(settings): expand settings api payload
* feat(webui): build app-style settings center
* feat(webui): add centered chat search dialog
* fix(webui): shorten chat search label
* fix(webui): center dialog entrance animation
* fix(webui): simplify chat search results
* fix(webui): tighten mobile settings navigation
* feat(webui): persist sidebar state
* feat(webui): add sidebar organization controls
* refactor(webui): organize backend helpers
* refactor(webui): remove utils compatibility shims
* refactor(session): move shared webui helpers out of webui package
* feat(webui): add image generation settings
* style(webui): refine settings overview layout
* fix(webui): localize settings zh-CN copy
* style(webui): add settings status indicators
* feat(webui): show sidebar run indicators
* fix(webui): persist sidebar run indicators
* fix(webui): highlight settings pending status
* fix(webui): align settings test with provider update
* fix(utils): preserve legacy webui helper imports
2026-05-19 22:42:38 +08:00