Peter Steinberger
d44f70eb4b
feat(pairing): one-paste device pairing via oc-pair setup links ( #120768 )
...
* feat(pairing): one-paste device pairing via oc-pair setup links
Implements milestone 3 from docs/plan/runners.md.
* fix(pairing): sign bootstrap handshake, keep URL candidates, wire pairing countdown
* test(gateway): update client callsite guard
* fix(pairing): preserve setup URL context paths
* fix(ui): keep pairing help aligned with setup mode
* fix(pairing): isolate bootstrap credentials
* perf(ui): keep one-paste pairing within bundle budget
* refactor(pairing): isolate native pair URL prefix parsing
* fix(pairing): preserve candidate lifecycle state
* fix(pairing): retire shared credentials after bootstrap
* fix(pairing): apply rotated manifest through client owner
* test(pairing): prove bootstrap retirement across reconnect
* fix(pairing): preserve native gateway context paths
* fix(pairing): carry native context paths through reconnect
* fix(ios): preserve encoded gateway context path
* chore(plugin-sdk): refresh pairing API baselines
2026-08-12 02:01:33 -07:00
Sarah Fortune
00fc1bd123
fix(slack): scope enterprise channel and user policies by workspace ( #122346 )
...
* fix(slack): scope channel policies by workspace
* fix(slack): scope user policies by workspace
* fix(slack): preserve workspace policies at ingress
* test(slack): use canonical workspace ids
* chore(slack): remove stale allowlist import
* fix(slack): require workspace-scoped grid policies
* test(slack): scope enterprise policy fixtures
* style(slack): format workspace policy changes
* fix(slack): preserve workspace policy wildcards
* fix(slack): retain workspace system-event policies
* fix(slack): scope bot policy identities
* fix(slack): retain workspace in group policy
* fix(slack): preserve workspace DM allowlists
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
2026-08-11 22:09:46 -07:00
Peter Steinberger
a89b88ec0e
docs(qqbot): point install docs at the Tencent package ( #122417 )
...
The externalization left the docs inventory seed and the channel page
advertising the retired @openclaw/qqbot npm package; the catalog already
resolves qqbot to @tencent-connect/openclaw-qqbot. Regenerates the
plugin reference and inventory pages from the corrected seed.
2026-08-11 21:20:00 -07:00
Sliverp
84c7d45f15
refactor(qqbot): install plugin from Tencent package ( #107295 )
...
* refactor(qqbot): remove bundled extension source
Mechanical deletion half of the #107295 squashed rebase; the catalog
repoint and host integration land in the follow-up commit.
Co-authored-by: sliverp <870080352@qq.com >
* refactor(qqbot): install plugin from Tencent package
Squashed rebase of #107295 onto current main. Repoints the official
external channel catalog at @tencent-connect/openclaw-qqbot@2.0.1 and
adapts onboarding, doctor migrations, secrets, build guards, and tests.
Documents the known limitation that the external package does not
support structured SecretRef clientSecret values; operators move those
to QQBOT_CLIENT_SECRET or clientSecretFile before upgrading.
Co-authored-by: sliverp <870080352@qq.com >
* fix(doctor): reuse shared hasOwnKey record helper
The rebased QQBot migration carried its own hasOwnKey export, colliding
with the one main now ships in legacy-config-record-shared.ts.
Co-authored-by: sliverp <870080352@qq.com >
* fix(plugins): carry catalog integrity through the update bridge
The externalized-bundled-plugin bridge dropped the official catalog's
expectedIntegrity pin, so bundled-user updates installed the external
npm package without integrity verification. The bridge now carries the
pin for the catalog's exact npm spec and both bridge install calls pass
it through; update-channel spec overrides intentionally skip the pin
since it only covers the pinned version.
Co-authored-by: sliverp <870080352@qq.com >
* chore(plugin-sdk): refresh per-entrypoint API baselines
The QQBot compat export and bundled-type removal shift 26 entrypoint
closure hashes in the new split baseline layout.
Co-authored-by: sliverp <870080352@qq.com >
* refactor(qqbot): drop helper reintroduced during rebase
Main's coercion consolidation added this file after the deletion
commit's base; its only consumers were the removed qqbot sources.
Co-authored-by: sliverp <870080352@qq.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-11 15:10:27 -07:00
Ayaan Zaidi
4c951398ef
fix(messages): keep runtime details out of chat alerts ( #121600 )
...
Keep raw commands, paths, and provider errors out of ordinary chat while preserving explicit raw diagnostics and structured admin history.
Default command progress is status-only; `/verbose full` and `commandText: "raw"` retain diagnostic detail.
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-10 21:37:48 +05:30
Peter Steinberger
a0ad38e71a
feat(docs-ci): validate docs config examples against the schema ( #121336 )
...
* feat(docs-ci): validate config examples against schema
* docs: teach canonical agent roster configuration
* docs: nest inline environment variables under vars
* docs: update canonical media model keys
* docs: remove retired config keys from examples
* fix(docs-ci): keep audit internals private
* feat(docs-ci): validate plugin-owned config examples
* fix(docs-ci): validate indented config fences
* fix(ci): route manifest changes through docs audit
* chore(docs): refresh generated config baselines
2026-08-10 07:57:56 -07:00
Peter Steinberger
f4bac99a81
feat(secrets): add SQLite-backed secret store ( #121559 )
2026-08-10 07:08:40 -07:00
Sarah Fortune
a968d15f63
feat(slack): enable Enterprise Grid identity, DMs, routing, actions, approvals, and presence ( #121373 )
...
* refactor(slack): detect Enterprise Grid installs at runtime
* fix(slack): preserve enterprise bot identity
* style(slack): format enterprise identity test
* fix(slack): scope enterprise config by workspace
* fix(slack): preserve qualified binding casing
* feat(slack): enable enterprise presence polling
* fix(slack): normalize enterprise binding accounts
* fix(slack): require workspace-scoped Grid targets
* docs(slack): document Enterprise policy target forms
* fix(slack): preserve Grid pairing workspace scope
* refactor(slack): simplify scoped target formatting
* fix(slack): repair Enterprise Grid CI checks
* chore: refresh generated Slack metadata
* refactor(slack): simplify optional workspace scope
* test(slack): infer installation state handle types
* chore: resolve plugin SDK baseline conflict
* fix(ci): regenerate plugin SDK API baseline on Linux
* fix(slack): allow standalone workspace sends
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
2026-08-10 07:10:06 +00:00
Sarah Fortune
176716da74
fix(slack): support native slack approvals on enterprise grid ( #120942 )
...
* fix(slack): support Grid native approvals
* test(slack): tighten Grid approval validation
* fix(slack): pass Grid scope to native approvals
* fix(slack): narrow Grid approval event scope
* refactor(slack): centralize optional approval scope
* refactor(slack): reuse approval target formatter
* refactor(slack): use generic target formatter
* refactor(slack): centralize explicit target formatting
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
2026-08-10 03:42:59 +00:00
Peter Steinberger
914f73ac99
docs: replace retired config keys with canonical schema keys ( #121330 )
2026-08-09 20:30:43 -07:00
Sarah Fortune
732108d973
feat(slack): add workspace routing for Enterprise Grid actions and events ( #121014 )
...
* fix(slack): preserve team scope for deferred actions
* refactor(slack): use typed Bolt team context
* refactor(slack): preserve deferred action IDs
* refactor(slack): treat team IDs as opaque
* refactor(slack): keep deferred action diff focused
* fix(slack): enable scoped enterprise interactions
* fix(slack): keep event scope at listener boundary
* test(slack): model Bolt enterprise interaction context
* refactor(slack): normalize listener team context
* refactor(slack): pass modal event scope directly
* test(slack): preserve interaction harness argument types
* refactor(slack): pass shortcut event scope directly
* refactor(slack): pass action event scope directly
* fix(slack): scope enterprise slash commands
* test(slack): disambiguate slash harness scope
* fix(slack): type slash block suggestions
* fix(slack): preserve option text literal
* fix(slack): keep scope helpers private
* fix(slack): fall back from slash response URLs
* fix(slack): clarify Web API post message call
* fix(slack): scope post message lint suppression
* fix(slack): preserve event scope export after rebase
* fix(slack): preserve team-bound modal session routing
* fix(slack): retain modal direct-message routing
* fix(slack): preserve modal delivery compatibility
* docs(slack): mark enterprise tool actions supported
* docs(slack): align enterprise support with runtime
* test(slack): align enterprise interaction registration
* fix(slack): support Grid channel create and rename events
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
2026-08-10 02:02:15 +00:00
Sarah Fortune
6efd013c25
fix(slack): support Grid reaction and pin event listeners ( #120944 )
...
* fix(slack): support Grid reaction and pin events
* refactor(slack): isolate system event routing
* test(slack): align Grid event scope fixture
* refactor(slack): pass optional event scope directly
* fix(slack): support Grid member events
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
2026-08-09 17:07:25 -07:00
Peter Steinberger
59ec48439e
fix(telegram): preserve topic routing for reactions and poll answers ( #121231 )
2026-08-09 14:23:19 -07:00
Sarah Fortune
66dee798b5
Revert "fix: enable Slack native approvals for Enterprise Grid installs (#120…" ( #121219 )
...
This reverts commit 96798953b2 .
2026-08-09 19:49:35 +00:00
Shakker
b3d71c754f
fix(clickclack): ignore agent activity inbound events
2026-08-09 20:33:03 +01:00
Shakker
3d80a2f6f2
fix(clickclack): isolate bot loop budgets by thread
2026-08-09 20:33:03 +01:00
Jacqueline Henriksen
762fa6e428
feat(clickclack): allow opt-in bot-to-bot inbound dispatch
2026-08-09 20:33:03 +01:00
Sarah Fortune
96798953b2
fix: enable Slack native approvals for Enterprise Grid installs ( #120874 )
...
* fix(slack): scope Grid native approvals by team
* fix(slack): type action middleware context
* fix(slack): secure Grid native approvals
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-09 12:09:59 -07:00
Ayaan Zaidi
409fb7abca
fix(telegram): enforce direct-message tool policies
...
Enforce configured Telegram direct-message tool policies across queued runs and native harnesses. Unsupported restricted harnesses now refuse visibly; turns without explicit policy keep existing tool access.
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-09 19:32:30 +05:30
Peter Steinberger
71a33f07a9
fix(imessage): make SSH-backed sends and actions reliable ( #121038 )
...
* fix(imessage): harden remote Mac transport
Route SSH-backed iMessage actions through JSON-RPC, preserve remote database paths, and stage outbound files on the Messages Mac with bounded cleanup. Keep local action semantics intact while failing closed on ambiguous wrappers and surfacing the remaining imsg v0.13.4 limits.
* fix(imessage): remove test-only exports
2026-08-09 04:48:38 -07:00
Ayaan Zaidi
a3d2ac7dc8
fix(telegram): inherit root group policy across accounts
...
Use channels.telegram.groups as the shared default when an account omits groups. Explicit account maps, including {}, remain full replacements. This keeps chat admission and sender restrictions on one policy path and fixes silent multi-account authorization failures.
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-09 12:08:53 +05:30
clawsweeper[bot]
c121788611
fix(telegram): prioritize configured commands under menu pressure ( #119717 )
...
* fix(telegram): prioritize configured commands under menu pressure
* fix(telegram): preserve custom commands under localized menu pressure
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: ayeshakhalid192007-dev <ayeshakhalid192007@gmail.com >
2026-08-09 09:07:51 +05:30
Sarah Fortune
cdaea2d6b6
fix(slack): route Enterprise Grid messages by workspace ( #120087 )
...
* fix(slack): route Grid messages by workspace
* fix(slack): use authorized Grid DM sender
* fix(slack): preserve ordinary client calls in grid routing
* test(slack): keep grid target coverage in scoped suite
* fix(slack): preserve workspace scope in approval routes
* feat(slack): scope Grid uploads and reactions by workspace
* fix(slack): preserve ordinary action read targets
* fix(slack): reuse Grid clients for thread status
* fix(slack): infer current Grid workspace for native actions
* fix(slack): record streamed thread participation promptly
* fix(slack): scope Grid member info to current workspace
* feat(slack): support Grid write actions
* feat(slack): support Grid read actions
* fix(slack): remove obsolete channel resolver
* fix(slack): route current Grid outbound delivery
* test(slack): cover Grid thread participation
* test(slack): use valid Grid team ID
* fix(slack): keep Grid thread participation without bot identity
* fix(slack): enable Grid pin reads
* fix(slack): keep current Grid sends workspace aware
* test(slack): assert Grid send routing synchronously
* refactor(slack): remove obsolete Grid action allowlist
* refactor(slack): derive Grid channel routing targets
* refactor(slack): pass optional team scope uniformly
* test(slack): expect uniform client options
* refactor(slack): name unscoped cache key explicitly
* refactor(slack): always pass action options
* refactor(slack): pass optional team scope directly
* refactor(slack): build team-scoped action options once
* refactor(slack): centralize optional team target formatting
* refactor(slack): construct reconciliation clients from scope
* refactor(slack): resolve delivery policy before sending
* refactor(slack): clarify inbound target roles
* refactor(slack): minimize validated event scope
* fix(slack): route outbound workspace through target
* fix(slack): format post response errors safely
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
2026-08-08 15:38:24 -07:00
Ayaan Gazali
51960f6579
docs(discord): drop retired ui.components.accentColor and fix heartbeat key name ( #118216 )
...
* docs(discord): drop retired ui.components.accentColor and fix heartbeat key name
* docs(discord): remove the retired accent-color example block
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-08 13:43:37 -07:00
Peter Steinberger
96a75be170
fix(discord): default preview streaming to off ( #120376 )
...
Make Discord progress drafts and activity receipts explicit opt-ins while preserving configured streaming modes and legacy explicit progress migrations. Related: #87704 .
2026-08-07 17:18:12 -07:00
joshavant
50cc620f0b
docs(whatsapp): clarify typing cleanup timing
2026-08-07 16:38:27 -05:00
joshavant
87156bab23
fix(typing): keep long active turns visible
2026-08-07 16:11:52 -05:00
Vito Cappello
5621979a46
fix(models): preserve session selection across fallback turns ( #119325 )
...
* feat(models): add session-only model selection
* fix(models): use trailing session scope option
* test(models): satisfy session scope lint
* fix(models): reject duplicate model options
* fix(models): clarify default and session scope
* fix(models): require complete session option tokens
* fix(models): report configured default dispatch
* fix(models): keep directive handler within lint limit
* fix(models): parse model options in either order
* fix(models): apply session scope to aliases
* fix(models): align alias scope with reply routing
* fix(discord): surface model selection scope in picker
* fix(models): preserve mixed-text model selection
* fix(models): centralize command selection ownership
* fix(models): align session scope lifecycle
* fix(models): preserve command and auth ownership
* fixup! fix(models): preserve command and auth ownership
* fix(auth): preserve scoped CLI provider discovery
* test(models): align result and cron fixtures
* test(models): nest result timing metadata
* fix(discord): narrow silent dispatch results
* fix(transcript): preserve admitted turn identity
* fix(context-engine): fence the admitted transcript turn
* fix(context-engine): stabilize plugin compatibility contract
* chore(plugin-sdk): refresh context engine API baseline
* chore(plugin-sdk): use Linux context engine API baseline
* fix(context-engine): align fallback ownership
* fix(fallback): scope auth skip cache by profile
* fix(context-engine): settle only accepted fallback turns
* refactor(sessions): issue canonical turn admissions
* refactor(context-engine): own logical turn advancement
* fix(context-engine): settle cron fallback winners
* fix(models): align picker and fallback transactions
* fix(delivery): notify block admission after queueing
* fix(sessions): preserve canonical admission receipts
* chore(plugin-sdk): refresh API baseline hash
* fix(context-engine): commit accepted turns durably
* fix(context-engine): validate durable host transitions
* fix(context-engine): preserve fallback turn ownership
* fix(context-engine): preserve queued turn order
* fix(models): preserve fallback retry ownership
* fix(context-engine): enforce durable transcript anchors
* fix(runtime): close fallback persistence gaps
* fix(context-engine): preflight fallback harnesses
* chore(plugin-sdk): use Linux API baseline
* fix(context-engine): drain durable commits before reads
* fix(models): scope harness auth failures by profile
* fix(codex): fence legacy transcript history
* fix(commands): honor suppressed directive interpretation
* chore(runtime): remove unused branch exports
* test(context-engine): derive private outbox payload type
* fix(context-engine): apply durable drain degradation
* fix(context-engine): recover durable turn intents
* fix(context-engine): settle durable turn intents
* refactor(context-engine): satisfy branch quality gates
* fix(context-engine): close durable recovery gaps
* fix(discord): preserve dropped model command outcome
* test(copilot): keep journal fixture types local
* fix(auto-reply): preserve model alias provenance
* fix: close model scope review gaps
* fix(models): close review-found scope leaks
* fix(review): satisfy branch line budgets
* fix(agents): preserve context engine turn facts
* fix(agents): finalize silent context turns
* fix(context-engine): preserve compatibility window
* test(agents): cover both harness preparations
* fix(context-engine): retain blocked turn advancements
* fix(models): parse compact runtime options
* fix(telegram): report runtime resets accurately
* fix(models): isolate automatic auth failure skips
* fix(context-engine): project commit turn host params
---------
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-07 16:19:12 +08:00
Jacqueline Henriksen
aa21c001f1
fix(clickclack): show native agent progress while replying ( #116683 )
...
* fix(clickclack): show native agent progress while replying
* fix(clickclack): address native progress review feedback
* fix(clickclack): address native progress review feedback
* fix(clickclack): address native progress review feedback
* fix(clickclack): address native progress review feedback
* fix(clickclack): address native progress review feedback
* fix(clickclack): clear CI failures
* fix(clickclack): bound stalled progress finalization
* test(clickclack): satisfy strict callback typing
* fix(clickclack): clear progress before activity flush
* fix(clickclack): make native progress explicitly opt-in
* fix(clickclack): make native progress explicitly opt-in
* fix(clickclack): make native progress explicitly opt-in
* fix(clickclack): make native progress explicitly opt-in
* fix(clickclack): make native progress explicitly opt-in
* docs(clickclack): document opt-in native progress
* fix(clickclack): guard disabled native progress
* test(clickclack): cover independent progress opt-ins
* docs(clickclack): show native progress opt-in
* fix(clickclack): keep resolved progress setting compatible
* fix(clickclack): identify agent in native progress
* fix(clickclack): retract native commentary progress
* fix(clickclack): harden native progress compatibility
* fix(clickclack): regenerate current-main channel metadata
---------
Co-authored-by: PollyBot13 <pollybot13@gmail.com >
2026-08-06 20:18:19 -07:00
Ayaan Gazali
11757fecd4
docs(slack): document retired Socket Mode tuning cleanup ( #119328 )
...
* docs(slack): drop retired socketMode transport tuning
channels.slack.socketMode is rejected by Slack config validation, pinned by
the 'rejects retired Socket Mode ping/pong transport tuning' schema test, and
the client pong timeout is now a hardcoded 15s constant. The page still told
operators to configure it.
* fix(slack): migrate retired socketMode with doctor instead of hand-editing
The retired object fails schema validation at root and account scope, so the
docs previously left manual removal as the only recovery. Slack already owns
legacyConfigRules and normalizeCompatibilityConfig, so the strip belongs there.
* test(slack): narrow the doctor contract config record for check-test-types
normalizeCompatibilityConfig returns a possibly-absent channel entry, so the
socketMode assertions need expectDefined before indexing.
* docs(slack): describe socketMode retirement by observed behavior
openclaw config validate reports a config carrying the retired object as valid,
so the earlier 'validation rejects it / fails to load' wording was wrong. The
observable facts are that it is not read and that doctor --fix removes it.
* revert(slack): drop the duplicate socketMode doctor migration
Core already strips channels.slack.socketMode at root and account scope in
legacy-config-migrations.runtime.retired.ts via visitChannelEntries, so the
plugin-side rule was duplicate policy. Keeps this PR to the docs correction.
* docs(slack): state what doctor actually cleans up for socketMode
Doctor flags retired layout knobs with a general notice, and --fix removes the
three named fields and drops the object only once empty, so an unknown key
inside it survives.
2026-08-05 16:02:57 -07:00
Peter Steinberger
1f0269eda5
refactor(msteams): consolidate channel action target resolution ( #119632 )
...
* refactor(msteams): consolidate channel action target resolution
* fix(msteams): honor configured group read policy
* fix(msteams): explain delegated channel access recovery
2026-08-05 10:52:13 -07:00
Peter Steinberger
89014305f1
fix(telegram): reject retired native button input
...
Prevent stale top-level buttons arguments from silently sending text-only Telegram messages. Point model guidance and docs to typed presentation actions, and reject retired input before delivery.
2026-08-05 21:57:36 +05:30
ragesaq
5cd2c5b07b
fix: keep ClickClack discussion rooms durable
...
Separate durable ClickClack room identity from replaceable exact-session attachments. Session archive, reset, deletion, and recreation retain the existing room and history while rotating local routing authority and preserving fail-closed exact-incarnation grants.
Pin ambiguous room recovery to the originating account and credential, and retain prior attachments when persistence fails.
Closes #119300
Co-authored-by: Chisel <chisel@psiclawops.dev >
2026-08-05 16:38:59 +01:00
Syu
b316c9cacf
fix(channels): honor explicit preview streaming settings
...
Explicit Telegram and Discord preview modes now override inherited block streaming while explicit channel block settings remain authoritative.
Co-authored-by: Syu <zhuqimo@gmail.com >
2026-08-05 09:04:49 +05:30
vovapetry
b5876a1086
fix(telegram): route reactions to their originating forum topics
...
Recover Telegram forum reaction topics from provider-observed message context before authorization, and drop unknown topics instead of routing them to General. Serialize each forum message with its reaction update to avoid cache races. Thanks @vovapetry.
2026-08-04 18:49:57 +05:30
clawSean
5cd6694349
docs(sms): add Twilio A2P delivery guidance ( #88743 )
...
* docs(sms): add A2P delivery guidance
* fix(docs): correct Twilio A2P guidance
---------
Co-authored-by: clawSean <260045960+clawSean@users.noreply.github.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-04 07:43:21 +08:00
Vincent Koc
0758316883
feat(sms): track Twilio delivery status ( #118665 )
...
* feat(sms): track Twilio delivery status
* fix(sms): preserve Twilio delivery callbacks under inbound load
* fix(sms): correct delivery status contracts
* fix(sms): retry transient Twilio callback reads
* fix(sms): bound delivery callback admission
* docs(sms): clarify delivery callback recovery
2026-08-04 06:39:17 +08:00
Peter Steinberger
14fe739ee9
fix(feishu): enforce exact signed webhook request boundaries ( #118758 )
...
* fix(feishu): enforce exact signed webhook request targets
* fix(feishu): preserve explicitly configured signed webhook query targets
* fix(feishu): preserve shipped relative webhook paths
* fix(feishu): normalize and migrate legacy webhook callback paths
* fix(feishu): preserve transformed webhook schema defaults
* fix(feishu): require canonical webhook paths before runtime startup
* docs(feishu): document canonical webhook routes and doctor recovery
2026-08-03 14:52:58 -07:00
Vincent Koc
554a6f3bbf
feat(sms): add Twilio MMS support ( #118664 )
...
* feat(sms): add Twilio MMS support
* fix(sms): harden hosted media bearer handling
* fix(sms): discard staged media before dispatch
* fix(sms): close staged media cleanup races
* fix(sms): finalize MMS metadata and race proof
* fix(media): bind local reads to authorized descriptors
* fix(sms): close MMS review gaps
* fix(media): make inbound root matching type-safe
* fix(media): route bounded reads through fs-safe facade
* test(media): satisfy async lint contracts
2026-08-04 05:46:37 +08:00
Peter Steinberger
76cc60a452
docs: correct onboarding risk flags and Google Chat credential shapes ( #118936 )
2026-08-03 13:59:29 -07:00
Pavan Kumar Gondhi
f63f2fd3db
fix(reef): restrict management commands to owners [AI] ( #118578 )
...
* fix(reef): require owner for management commands
* fix(reef): preserve general command access
* fix: preserve explicit owner authority
* fix(discord): separate voice admission from ownership
* docs(reef): explain owner command recovery
* docs(reef): clarify owner recovery paths
2026-08-03 23:18:05 +05:30
Vincent Koc
f9baa3e894
fix(channels): generate discovery docs from catalog ( #118106 )
2026-08-03 23:42:55 +08:00
Peter Steinberger
ec7e5dd769
fix(gateway): recover channel autostart after crash loops ( #118311 )
...
* fix(gateway): recover channel autostart after crash loops
* docs(gateway): clarify crash-loop recovery steps
* test(gateway): type crash-loop recovery context
* test(gateway): correct recovery mock context
* test(gateway): keep recovery monitor coverage compact
* chore: leave crash-loop note to release flow
---------
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local >
2026-08-02 18:01:39 -07:00
Shakker
c2d6ecee3c
fix: align Buzz explicit mention semantics
2026-08-02 10:30:32 +01:00
Shakker
0ee44d551a
feat: guide Buzz room targeting and mentions
2026-08-02 10:30:32 +01:00
Peter Steinberger
b1f97bb7b3
refactor(discord): remove retired subagent progress runtime ( #117802 )
2026-08-01 21:36:28 -07:00
Vincent Koc
89aadef6ef
feat(plugins): externalize iMessage channel ( #117101 )
2026-08-01 08:01:18 +08:00
Peter Steinberger
eb0087dc7c
fix(discord): connect mention-only bots without Message Content intent ( #116962 )
...
* fix(discord): support mention-only gateway intent
* chore: keep release changelog owner-only
2026-07-31 12:04:16 -07:00
Shakker
5cd00cfbaa
fix: reserve Buzz relay subscription capacity ( #116799 )
2026-07-31 13:40:34 +01:00
Shakker
b3c4ea0291
docs: explain Buzz archived room handling
2026-07-31 13:40:34 +01:00