chengyongru and GitHub
76f3eead42
style(webui): simplify Markdown code blocks ( #5002 )
2026-07-20 14:41:23 +08:00
chengyongru and chengyongru
949cfad548
fix(webui): show copy action on every assistant message
2026-07-20 13:51:53 +08:00
chengyongru and GitHub
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 and Xubin Ren
8c68c6fe1e
feat: support Kimi K3
2026-07-18 17:38:32 +08:00
chengyongru and GitHub
ba86dccc8d
fix(webui): correct activity timer duration ( #4649 )
2026-07-15 16:46:05 +08:00
chengyongru and GitHub
5ed28a6744
fix(webui): validate inferred file paths before preview ( #4935 )
2026-07-15 10:45:40 +08:00
chengyongru and GitHub
37165b0db0
feat(webui): highlight slash commands and app mentions ( #4933 )
2026-07-15 00:34:22 +08:00
chengyongru and chengyongru
f718c69b2d
feat(webui): add copy action to user messages
2026-07-14 22:41:17 +08:00
chengyongru and GitHub
6c9e3a2cc3
refactor(webui): centralize native runtime access ( #4769 )
2026-07-14 15:00:30 +08:00
chengyongru and GitHub
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
Xubin Ren and GitHub
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 and Xubin Ren
47d498bab0
fix(webui): disarm queued prompt for voice shortcut
2026-07-11 01:02:14 +08:00
chengyongru and Xubin Ren
04328f8129
feat(webui): guide queued prompt with second Enter
2026-07-11 01:02:14 +08:00
chengyongru and Xubin Ren
1ee4349a08
feat(webui): highlight file previews and diffs
2026-07-11 00:57:37 +08:00
sid and Xubin Ren
d32f8961b1
fix(webui): bind landing first message to created chat
2026-07-10 20:19:10 +08:00
chengyongru and Xubin Ren
6851a6ebd4
fix(webui): sync file edit display preference
2026-07-09 10:42:43 +08:00
chengyongru and Xubin Ren
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
c188e96f4e
refactor(webui): use container query for prompt rail layout
2026-07-08 12:16:47 +08:00
chengyongru and Xubin Ren
4333d6f103
fix(webui): keep prompt rail out of narrow chat columns
2026-07-08 12:16:47 +08:00
chengyongru and Xubin Ren
a7b8a9ed46
fix(webui): clarify new chat command text
2026-07-07 15:42:04 +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
8a231b6e4d
fix(webui): finalize turn-ending slash commands
...
maintainer edit: keep /new and manually submitted /stop from leaving stale WebUI streaming state after they cancel or reset the active turn.
2026-07-07 15:42:04 +08:00
chengyongru and Xubin Ren
ef5318ebdc
fix(webui): classify builtin slash commands without metadata
...
maintainer edit: keep builtin shortcut commands on the side-channel path before async command metadata loads, while preserving /goal task text as a normal agent turn.
2026-07-07 15:42:04 +08:00
chengyongru and Xubin Ren
8f68040f05
fix(webui): keep slash commands out of streaming state
2026-07-07 15:42:04 +08:00
chengyongru and Xubin Ren
0f88927364
fix(webui): show generic tool arguments in activity
2026-07-07 15:41:45 +08:00
chengyongru and Xubin Ren
3f33ff3143
chore: remove unused dead code
2026-07-07 15:41:27 +08:00
70505bd1fc
fix(webui): finish mobile containment for inline code, tables, chips, user bubbles
...
57f9ec0 added a CSS containment safety net for .markdown-content, but
several rendering paths still overflowed or truncated on narrow viewports
because they bypass those rules or actively disable wrapping:
- Inline code longer than 120 chars renders as `block whitespace-pre`
with no scroll container, so it bled past the viewport (white-space:pre
defeats overflow-wrap). It now scrolls inside its own box via
max-w-full overflow-x-auto.
- Wide markdown tables never actually scrolled: Tailwind Typography forces
width:100% + table-layout:auto on .prose table, so they shrank to fit
instead of overflowing. Switched to a wrapper-<div> pattern (a custom
`table` component, the approach used by DeepSeek/others) with min-w-max
so wide tables keep natural column widths and scroll inside the
conversation column; the old display:block rule on .markdown-content
table is removed.
- File-reference chips and inline link-preview cards used `truncate`, so
long filenames/labels were ellipsized to one line. Now
[overflow-wrap:anywhere] sm:truncate — wrap on mobile, truncate on
desktop.
- User-authored message bubbles don't pass through .markdown-content, so
a long URL in the user's own message still burst the screen: under flex
min-width:auto, break-words cannot reduce the item's min-content width.
Added max-w-full min-w-0 + [overflow-wrap:anywhere].
No JS/agent/provider behavior touched. Desktop layout is unchanged — the
new rules only engage when content would otherwise overflow.
Verified: bun run lint (clean), bun run test (438 passed), bun run build.
Refs #4693
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-06 12:11:43 +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
09bde468eb
fix(webui): narrow local trigger source label
...
maintainer edit: avoid optional source access after extracting automation source kind for TypeScript build.
2026-07-02 13:32:46 +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
2a0cd19a74
feat(trigger): add session-bound local triggers
2026-07-02 13:32:46 +08:00
2ec4044217
feat(webui): add dollar skill shortcuts
...
Add a WebUI-only $<skill> completion shortcut without changing slash command behavior.
Keep slash autocomplete command-only and allow dollar skill shortcuts anywhere in the composer.
Co-authored-by: Alan Chen <zc2610@nyu.edu >
2026-07-01 19:51:01 +08:00
Xubin Ren and GitHub
8df100203c
feat(webui): refine prompt rail minimap
2026-06-30 10:01:53 +08:00
chengyongru and Xubin Ren
64901be67f
test: harden webui and gateway checks
2026-06-27 11:04:11 +08:00
zpljd258 and Xubin Ren
28c8c89a42
fix(webui): convert WebM to WAV for Xiaomi MiMo ASR transcription
...
MiMo ASR (mimo-v2.5-asr) only accepts audio/wav, audio/mp3, and
audio/mpeg formats. Web browsers record in WebM/Opus by default,
causing the API to reject the payload with a transcription error.
This change adds a frontend WebM→WAV converter using the Web Audio API
(DecodeAudioData + PCM encoding) that activates only when the
configured transcription provider is 'xiaomi_mimo'. Other providers
are unaffected — they continue to receive the original browser format.
Tested and confirmed working on WebUI.
2026-06-25 22:52:55 +08:00
chengyongru and Xubin Ren
123384975e
fix(webui): restore code block copy fallback
2026-06-25 16:10:23 +08:00
chengyongru and Xubin Ren
943191f0c0
fix(webui): keep multi-file apply_patch edits
2026-06-24 20:04:39 +08:00
chengyongru and Xubin Ren
b14f82f408
fix(webui): prevent iOS Safari composer zoom
2026-06-24 10:26:14 +08:00
Xubin Ren
951fd73c8e
fix(webui): keep new chat heading on one line
2026-06-22 23:30:29 +08:00
Xubin Ren
f80a78d5a8
fix(webui): preserve fork replies during history refresh
2026-06-22 22:00:07 +08:00
Xubin Ren
a9d1fdcee8
fix(webui): follow active turn output after send
2026-06-22 21:12:34 +08:00
Xubin Ren
7170761e47
fix(webui): anchor sent prompts during active turns
2026-06-22 20:43:27 +08:00
chengyongru and Xubin Ren
0db9fbe250
chore: default context window to 200k
2026-06-22 18:33:49 +08:00
chengyongru and Xubin Ren
dd2cb4ca91
fix: refresh optional CLI Apps catalogs
...
maintainer edit: CLI Apps settings now treats optional catalog caches as refresh candidates without blocking the initial payload, and pending polling stops when refresh is throttled instead of running indefinitely.
2026-06-22 17:14:13 +08:00
chengyongru and Xubin Ren
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
chengyongru and Xubin Ren
b8abe5542c
Avoid blocking settings on CLI Apps catalog refresh
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 and Xubin Ren
472c67722e
fix(webui): correct activity duration display
2026-06-18 00:03:18 +08:00
Xubin Ren
9ce40969ce
style(webui): add subtle automation filter tones
2026-06-17 01:49:24 +08:00
chengyongru
2b741ad4e5
fix(webui): align automation settings layout
...
Maintainer edit: reuse the same standalone SettingsView shell as Apps and Skills for Automations while keeping the automation queue height constrained.
2026-06-16 16:31:24 +08:00