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
chengyongru and GitHub
a6b68178aa
fix(whatsapp): allow group ids in allowFrom ( #4834 )
2026-07-19 19:16:37 +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
88c38e9b38
fix(restart): deliver completion after channel reconnects ( #4931 )
2026-07-15 01:08:39 +08:00
chengyongru and chengyongru
2116e32013
test: speed up CI and harden the suite
2026-07-15 00:18:37 +08:00
chengyongru and chengyongru
1a1e666625
fix: install timezone data on Windows
2026-07-14 17:30:16 +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
chengyongru and Xubin Ren
3b14d59dcd
fix(telegram): fall back on overflow HTML rejection
2026-07-14 12:25:28 +08:00
chengyongru and Xubin Ren
a335ce07db
fix(telegram): bound streamed HTML overflow chunks
2026-07-14 12:25:28 +08:00
chengyongru and GitHub
e864fba522
fix: align optional dependency contracts ( #4907 )
...
* fix: align optional dependency contracts
* ci: avoid duplicate test suite
* test: drop removed langsmith assertions
* test: rely on generic extra coverage
* test: restore existing plugin coverage
2026-07-13 16:58:19 +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
6d406d93c9
fix(discord): route unauthorized DMs to pairing
2026-07-13 12:05:04 +08:00
Xubin Ren
45d1caba1d
fix(webui): prevent stale workspace scope restore
2026-07-12 22:08:27 +08:00
Xubin Ren
89acea6fe1
fix(webui): allow remote workspace access reduction
2026-07-12 22:08:27 +08:00
chengyongru and Xubin Ren
f75d3519db
feat(agent): add persistent runtime context providers
2026-07-12 00:35:17 +08:00
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
207813d3b5
fix(webui): tighten localhost bootstrap check
2026-07-09 10:42:00 +08:00
chengyongru and Xubin Ren
e0c2d28f90
fix(webui): issue localhost bootstrap api tokens
2026-07-09 10:42:00 +08:00
chengyongru and Xubin Ren
4ddd639e67
fix(webui): route missing API bootstrap tokens to auth
...
maintainer edit: handle review feedback by treating bootstrap responses without api_token as auth-required, and remove the obsolete issue_token(api_token=...) compatibility path now that API tokens are issued separately.
2026-07-08 21:01:48 +08:00
chengyongru and Xubin Ren
88143a8bf0
fix(webui): gate bootstrap API token issuance
2026-07-08 21:01:48 +08:00
Aleksander W. Oleszkiewicz (auticon) and Xubin Ren
65d32ffd6c
Fix dependency assertions in tests
...
Added a new `aiohttp` dependency for Slack
2026-07-08 12:16:30 +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
chengyongru and Xubin Ren
cf35238834
fix(mattermost): harden channel lifecycle and streaming
...
Maintainer edit: keep the Mattermost adapter running under the gateway, fail closed when team filtering cannot verify the team, isolate new thread sessions immediately, and make buffered stream finalization retry-safe.
2026-07-06 12:14:57 +08:00
Kenneth Zhao and Xubin Ren
ef9780719d
style: fix import ordering in mattermost tests
2026-07-06 12:14:57 +08:00
Kenneth Zhao and Xubin Ren
f9806cc60f
fix(mattermost): address second round of review feedback
...
- Send pairing code response (not empty message) for denied DMs
- Resolve actual channel type in action events before permission check
- Use word-boundary regex in _is_mentioned to avoid partial matches
- Use safe_filename for download path sanitization
- Add tests: denied DM pairing, denied action event, is_mentioned boundary
2026-07-06 12:14:57 +08:00
Kenneth Zhao and Xubin Ren
a710a7d6f7
fix(mattermost): address review comments
...
- Attachments now only attached to first chunk when message is split
- Filename sanitized with Path(name).name to prevent path traversal
- Updated streaming tests to match buffer-and-post-at-end pattern
(iOS compatibility)
2026-07-06 12:14:57 +08:00
Kenneth Zhao and Xubin Ren
fff38f11a7
feat: add Mattermost channel support
2026-07-06 12:14:57 +08:00
chengyongru and Xubin Ren
5e51c5014f
feat(feishu): render new session divider
...
maintainer edit: remove out-of-scope reasoning panel changes and keep this PR focused on the /new session divider.
2026-07-06 12:14:54 +08:00
hamb1y and Xubin Ren
5d034dc79c
fix: isolate matrix stream buffers
2026-07-06 12:11:14 +08:00
chengyongru and Xubin Ren
c579551bb1
fix(dingtalk): stop stream task on shutdown
2026-07-04 21:19:25 +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
f38fd7d5d3
feat(memory): add workspace Dream prompt override
2026-07-03 00:41:51 +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
b941233138
fix(trigger): clean up deleted trigger deliveries
2026-07-02 13:32:46 +08:00
chengyongru and Xubin Ren
afef27dd6c
fix(webui): show pending local triggers
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
55b550ee01
fix(trigger): hide external trigger inputs
2026-07-02 13:32:46 +08:00
chengyongru and Xubin Ren
b690a48336
fix(trigger): require names for trigger creation
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
Xubin Ren
c78421cf16
fix(bus): preserve legacy outbound metadata events
2026-07-01 20:17:00 +08:00
Xubin Ren
03be51ade5
fix(channels): preserve legacy stream hook signatures
2026-07-01 20:17:00 +08:00
chengyongru and Xubin Ren
5f4cfbcb16
refactor(bus): type outbound runtime events
2026-07-01 20:17:00 +08:00
Xubin Ren
1873e948c3
test(weixin): cover streamed reply retry buffer
2026-06-30 22:43:03 +08:00
chengyongru and Xubin Ren
4c0e9b9f46
test: cover WhatsApp read receipts
...
maintainer edit: add focused coverage for the new best-effort mark_read path and remove an unused helper argument.
2026-06-30 15:21:25 +08:00
axelray-dev and Xubin Ren
194e9d5f5f
fix(webui): clear stale run status on reconnect
2026-06-28 19:46:47 +08:00
axelray-dev and Xubin Ren
5005bca353
fix(webui): clear stuck streaming after reconnect and improve stop reliability
...
After a gateway restart or websocket reconnect, the UI stays stuck in
processing state because reconnecting clients only replay running status
when a turn is active, never push idle when no turn is running.
Fix _hydrate_after_subscribe to always push goal_status (running with
started_at when turn is active, idle when no turn is running) so the
frontend can reset its processing indicator on reconnect.
Also fix cmd_stop reporting 'No active task to stop' when a task is
actually processing by draining the pending injection queue in addition
to cancelling active tasks. This prevents mid-turn injection deadlocks
and gives accurate task counts.
2026-06-28 19:46:47 +08:00
Xubin Ren
d8601478db
test: cover stream-id delta coalescing
2026-06-27 16:47:53 +08:00
chengyongru and Xubin Ren
fbf96a3502
fix(whatsapp): add bridge migration compatibility
2026-06-27 11:05:03 +08:00