chengyongru
55ecda275d
test: strengthen user-path coverage and CI gates ( #5308 )
2026-08-09 21:37:06 +08:00
Xubin Ren
3836c32874
fix(webui): scope preset editor to one row
2026-08-07 12:42:37 +08:00
Xubin Ren
3fc69b2922
style(webui): inset expanded preset editor
2026-08-07 12:42:37 +08:00
Xubin Ren
eb5d7e1a32
style(webui): distinguish expanded preset editor
2026-08-07 12:42:37 +08:00
Xubin Ren
b77e1133cb
fix(webui): preserve preset deletion workflow
2026-08-07 12:42:37 +08:00
Xubin Ren
1b12fbae39
fix(webui): explain disabled preset deletion
2026-08-07 12:42:37 +08:00
Xubin Ren
6f2512ce9a
style(webui): retain model preset colors
2026-08-07 12:42:37 +08:00
Xubin Ren
c8bc4d8510
fix(webui): make active model presets deletable
2026-08-07 12:42:37 +08:00
Xubin Ren
e971e81b6c
refactor(webui): expand model preset editor inline
2026-08-07 12:42:37 +08:00
Xubin Ren
ada07aa799
feat(webui): add responsive model preset detail pane
2026-08-07 12:42:37 +08:00
chengyongru
67805f5db8
feat: add provider-native request switches ( #5254 )
2026-08-05 18:26:39 +08:00
chengyongru
9098ffd38f
refactor(webui): improve visual consistency ( #5249 )
2026-08-05 13:24:45 +08:00
Xubin Ren
fa65a01977
refactor(webui): narrow floating control migration
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
5c72fdcd88
fix(webui): remove unused bot identity settings
2026-08-03 14:06:44 +08:00
chengyongru
606ac56e8f
feat(webui): support remote Codex OAuth login ( #5174 )
2026-07-30 15:06:34 +08:00
chengyongru
11fcd9cc5f
fix(webui): prevent redundant thread and media reloads ( #5164 )
2026-07-30 10:25:22 +08:00
chengyongru
e819b7eea4
fix(webui): stabilize repeated model preset rows
2026-07-27 18:11:10 +08:00
chengyongru
aae259c790
feat(webui): simplify model preset settings ( #5061 )
2026-07-24 00:55:06 +08:00
chengyongru
6c0f151f6e
fix(webui): polish responsive layout
2026-07-23 18:22:02 +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
c7393c785e
feat(providers): add xAI Grok OAuth with capability-gated X Search ( #5035 )
2026-07-23 11:55:16 +08:00
Xubin Ren
aa8387fb4d
feat(webui): polish agent output and app discovery
2026-07-22 22:42:31 +08:00
chengyongru
462a0dfb0f
refactor(channels): make built-in channels self-contained ( #4908 )
...
* refactor(channels): own setup and instance contracts
* refactor(channels): isolate management contracts
* refactor(channels): normalize activation contracts
* fix(channels): enforce management contracts
* refactor(channels): finish setup ownership migration
* fix(channels): harden management contracts
* fix(channels): enforce lazy loading and runtime ownership
* fix(feishu): make multi-instance startup idempotent
* fix(webui): render channel setup contracts cleanly
* fix(feishu): stop websocket clients cleanly
* fix(channels): enforce persistence and activation gates
* fix(channels): preserve global feature action scope
* fix(channels): apply defaults for single plugins
* fix(channels): enforce management contract boundaries
* refactor(feishu): remove identity helper indirection
* fix(channels): preserve management setup contracts
* refactor(channels): generalize instance settings UI
* refactor(channels): package channel plugins with web UI metadata
* refactor(channels): make built-ins self-contained packages
* test(channels): colocate tests with channel packages
* fix(dingtalk): use official brand icon
* feat(channels): colocate webui translations
* docs(channels): clarify plugin ownership
* test(exec): remove output wait race
* refactor(channels): unify plugin descriptors
* fix(channels): enforce descriptor-owned contracts
* refactor(channels): finish package-owned plugin setup
* refactor(channels): use repository-owned packages only
* fix(channels): self-describe dependencies and runtime state
* fix(channels): warn about legacy entry points
2026-07-19 23:30:49 +08:00
bingqilinweimaotai
8c68c6fe1e
feat: support Kimi K3
2026-07-18 17:38:32 +08:00
Xubin Ren
fe0717b385
feat(webui): add guided setup flows
...
* feat(channels): add guided setup flows
* test(channels): preserve setup config values
* fix(channels): reflect saved setup state
* refactor(channels): simplify setup state metadata
* fix(channels): harden setup lifecycle
* refactor(channels): centralize setup contracts
* fix(channels): route setup actions through webui shim
* fix(channels): adapt settings for compact screens
* fix(models): preserve default preset display
* feat(models): add curated Codex catalog
* fix(webui): stop attached gateway on interrupt
* fix(webui): simplify apps catalog
* docs(webui): clarify apps and runtime features
* feat(settings): add guided capability setup
* fix(webui): harden setup and managed services
* test: keep managed runtime checks portable
* test: scope POSIX runtime coverage
* fix(webui): simplify file settings
* feat(files): bundle document reading
* fix(webui): harden setup request boundaries
* fix(webui): prevent channel setup status squeeze
* fix(settings): group provider compatibility aliases
* refactor(settings): remove redundant setup surfaces
* fix(webui): harden guided setup lifecycle
* fix(webui): preserve channel setup compatibility
2026-07-13 13:11:46 +08:00
chengyongru
7768672c5b
feat: add file edit diff progress view
...
Capture file edit snapshots through runner tool lifecycle hooks and render unified diffs in the WebUI with folding and truncation controls.
2026-07-09 10:42:43 +08:00
chengyongru and Xubin Ren
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
0db9fbe250
chore: default context window to 200k
2026-06-22 18:33:49 +08:00
chengyongru
2216405821
fix: avoid stuck Apps loading during catalog refresh
...
maintainer edit: Empty cache-only CLI Apps payloads should still update the UI while the background catalog refresh is pending, otherwise cold catalog failures leave Settings stuck on the spinner.
2026-06-22 17:14:13 +08:00
Xubin Ren
d30f3d466d
fix(webui): allow optional Keenable search key
2026-06-21 15:22:13 +08:00
chengyongru
828759d1b6
fix(webui): hide settings kicker on automations
2026-06-15 18:08:44 +08:00
chengyongru
c282012607
fix: resolve auto custom provider settings state
...
maintainer edit: use the resolved provider row when WebUI settings evaluates auto-selected providers, so named custom providers follow their apiBase-based configured state instead of the legacy has_api_key fallback.
2026-06-13 00:04:13 +08:00
chengyongru
dadb35af49
feat(exec): add path prepend config
2026-06-10 18:09:57 +08:00
chengyongru
8fe0149c65
refactor(webui): simplify token usage heatmap
2026-06-08 16:02:12 +08:00
chengyongru
7510918610
fix(webui): align token usage heatmap
2026-06-08 16:02:12 +08:00
Xubin Ren and chengyongru
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
d1a94dae8a
refactor(dream): replace two-phase Dream class with simple cron + process_direct ( #3990 )
...
* refactor(dream): replace two-phase Dream class with simple cron + process_direct
- Remove the heavyweight Dream class (AgentRunner-based two-phase system)
from nanobot/agent/memory.py
- Delete dream_phase1.md and dream_phase2.md templates
- New dream.md template serves as the consolidation prompt
- Cron callback uses agent.process_direct(prompt, session_key=\"dream\")
instead of agent.dream.run()
- Always performs git auto_commit after execution
- /dream command updated to use process_direct + git commit
- DreamConfig kept for backward compatibility; deprecated fields
(model_override, max_batch_size, max_iterations, annotate_line_ages)
are ignored but accepted in config
- interval_h remains configurable via agents.defaults.dream.interval_h
- Update tests and webui settings to match new architecture
* feat(loop): add ephemeral mode to process_direct, skip history writes for Dream
When ephemeral=True, _state_save skips enforce_file_cap (which calls
raw_archive -> append_history) and consolidator.maybe_consolidate_by_tokens.
This prevents Dream sessions from creating a positive feedback loop where
they process their own output. The session IS still saved to disk.
* fix(loop): skip extra hooks for ephemeral sessions (Dream)
* feat(dream): per-run timestamped sessions with rotation for WebUI
* test(config): restore DreamConfig schedule and alias tests
* fix(dream): include LLM response summary in git auto-commit message
The old two-phase Dream class included the Phase 1 analysis in the git
commit message body. The new single-phase version lost this. Restore it
by extracting resp.content from the process_direct return value and
appending it to the commit message in both the cron handler and the
/dream command.
* fix(test): accept ephemeral kwarg in test_openai_api fake_process
* refactor(dream): merge dream_session.py into MemoryStore
The standalone dream_session.py module only contained three small helpers
that all revolve around MemoryStore concerns (session keys, commit messages,
file pruning). Fold them into MemoryStore as @staticmethod to reduce
indirection and avoid a 35-line module with no independent reason to exist.
* fix(test): address code review — patch correct instance, use actual function
- Fix test_ephemeral_skips_raw_archive to patch loop.context.memory
instead of the fixture's separate MemoryStore instance
- Fix TestDreamCommitMessage to call MemoryStore.build_dream_commit_message
instead of reimplementing the logic inline
- Move Dream helpers in memory.py above the Consolidator section comment
to avoid misleading visual boundary
* fix(dream): gate cursor advancement and restrict tools
maintainer edit: Dream now processes backlog from the oldest unprocessed entries, only advances the cursor after a completed ephemeral run, and uses a restricted file-only tool registry for background consolidation.
* fix(dream): skip idle compact for dream sessions
Dream runs use internal dream:* sessions that are pruned by Dream retention. Exclude them from AutoCompact scheduling, archive execution, and summary injection so idle-session compaction cannot truncate Dream transcripts.
* fix(dream): keep batched history isolated
* feat(dream): tag archived memory for single-phase Dream
---------
Co-authored-by: Xubin Ren <52506698+Re-bin@users.noreply.github.com >
2026-06-02 22:46:47 +08:00
Xubin Ren
31722120b7
feat(webui): polish native host experience
2026-06-01 00:00:37 +08:00
Xubin Ren
3dcf511c84
feat(webui): refine output timeline and model controls ( #4108 )
...
* feat(webui): refine output timeline and composer queue
* feat(webui): add provider model picker
* fix(webui): polish model settings and heartbeat checks
* chore: keep heartbeat changes out of webui pr
* refactor(webui): isolate settings routes
* fix(providers): align minimax anthropic test
* fix(providers): keep minimax anthropic base sdk-compatible
* fix(providers): normalize anthropic base urls
2026-05-30 23:45:26 +08:00
Xubin Ren
404b68cdd4
feat(webui): add context window setting
2026-05-29 13:09:08 +08:00
Xubin Ren
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
Xubin Ren
418cb23da2
feat(apps): unify CLI apps and MCP ( #3991 )
...
* refactor(cli): load bundled apps from catalog
* feat(plugins): unify CLI and MCP settings
* feat(plugins): add settings category filter
* style(plugins): refine settings catalog
* refactor(cli): load nanobot apps from repo catalog
* feat(store): add capability store entry
* feat(apps): rename capability store
* fix(apps): verify clean app removal
* fix(apps): keep main sidebar on apps view
* feat(apps): add shared app manifest protocol
* fix(apps): dismiss app status message
* refactor(apps): move CLI adapter under apps
* refactor(apps): drop legacy cli apps package
2026-05-25 20:07:02 +08:00