joshavant
ca21090455
UI: characterize agents panel routing and extract selection reset helper
2026-04-09 22:59:22 -05:00
joshavant
c097ba3fc2
UI: characterize settings URL combos and trim loader flow
2026-04-09 22:59:22 -05:00
joshavant
2965dbd61c
UI: simplify logs payload field assignment
2026-04-09 22:59:22 -05:00
joshavant
6b4675c981
UI: tighten settings URL and usage guard paths
2026-04-09 22:59:22 -05:00
joshavant
a6178ca1f3
UI: combine usage controller early-return guards
2026-04-09 22:59:22 -05:00
joshavant
c882d40187
UI: reduce logs controller quiet-mode branching
2026-04-09 22:59:22 -05:00
joshavant
594de84d04
UI: simplify usage request and error serialization helpers
2026-04-09 22:59:22 -05:00
joshavant
3b3b16b3f0
UI: compact log parsing branch logic
2026-04-09 22:59:22 -05:00
joshavant
0dadc7f35f
UI: reuse selected agent resolution in render flow
2026-04-09 22:59:22 -05:00
joshavant
48955416db
UI: dedupe agents panel supplemental refresh routing
2026-04-09 22:59:22 -05:00
joshavant
57d40a415a
UI: streamline cron page loading toggles
2026-04-09 22:59:22 -05:00
joshavant
2fde93c9e4
UI: trim app-settings control flow noise
2026-04-09 22:59:22 -05:00
joshavant
4a44071296
UI: dedupe agent files reset in render flow
2026-04-09 22:59:22 -05:00
joshavant
f136a8159c
UI: simplify active-tab refresh routing
2026-04-09 22:59:22 -05:00
joshavant
393c791466
UI: remove redundant cron refresh wrapper
2026-04-09 22:59:22 -05:00
joshavant
22b82b63be
UI: compact refreshActiveTab characterization coverage
2026-04-09 22:59:22 -05:00
joshavant
95368827e7
UI: trim config-tab helper abstraction overhead
2026-04-09 22:59:22 -05:00
joshavant
d085ceb3f2
UI: consolidate tab and config panel refresh routing
2026-04-09 22:59:22 -05:00
joshavant
6c33e65d0d
UI: add refreshActiveTab characterization tests
2026-04-09 22:59:22 -05:00
joshavant
04b943d6d7
UI: remove unused theme listener helper
2026-04-09 22:59:22 -05:00
joshavant
a70c5fddec
UI: remove redundant theme listener attach on connect
2026-04-09 22:59:22 -05:00
joshavant
2b23dca40a
UI: remove unused cron page metadata fields
2026-04-09 22:59:22 -05:00
joshavant
4c51644ca9
UI: dedupe selected-agent panel refresh logic
2026-04-09 22:59:22 -05:00
joshavant
4de1a490e4
UI: share active-session tools-effective refresh path
2026-04-09 22:59:22 -05:00
joshavant
743176b662
UI: reuse effective-tools state reset helper
2026-04-09 22:59:22 -05:00
joshavant
cd62100b08
UI: remove redundant cron jobs wrapper exports
2026-04-09 22:59:22 -05:00
joshavant
21099a1025
UI: consolidate cron run-state reset paths
2026-04-09 22:59:22 -05:00
joshavant
d39064418f
UI: dedupe cron busy-state request flow
2026-04-09 22:59:22 -05:00
joshavant
243b86d29d
UI: tighten stale-response guards in agents controller
2026-04-09 22:59:22 -05:00
joshavant
c1284bddd1
UI: streamline theme/session tab helpers
2026-04-09 22:59:22 -05:00
joshavant
63ad1b10c3
UI: consolidate session/controller tab refresh flows
2026-04-09 22:59:22 -05:00
joshavant
786823fd70
UI: consolidate config/tab/skills flows
2026-04-09 22:59:22 -05:00
Pengfei Ni
78389b1f02
fix(msteams): resolve Graph chat ID for personal DM media downloads ( #62219 ) ( #63063 )
...
* fix(msteams): resolve Graph chat ID for personal DM media downloads (#62219 )
Bot Framework personal DM conversation IDs use an opaque `a:...` format
that the Graph `/chats/{chatId}/messages` endpoint rejects as "Invalid
ThreadId". When the direct Bot Framework attachment download fails and
the code falls back to the Graph API path, inbound media (images, files)
is silently dropped.
Resolve the real Graph chat ID via `resolveGraphChatId()` before
constructing Graph message URLs, with conversation-store caching so
subsequent messages skip the API lookup.
* fix(msteams): preserve graphChatId across conversation store upserts
mergeStoredConversationReference only preserved timezone from the
existing entry — graphChatId was silently overwritten on every
activity-triggered upsert, defeating the cache and causing repeated
Graph API lookups on every DM turn.
Mirror the existing timezone guard so graphChatId survives upserts
that don't carry it.
2026-04-09 22:57:02 -05:00
Josh Avant
f096fc4406
Browser: unify /act route action execution and contract errors ( #63977 )
...
* Browser: unify agent act route execution and contracts
* Browser tests: lock act error codes and dedupe harness dispatch
* Browser tests: slim act harness dispatch map
* Browser act: enforce top-level targetId match
* Browser tests: cover missing act error codes
* Browser act: restore wait cap and reject zero resize dims
* Docs: document /act error contract
* Browser act: lock selector precedence and positive resize validation
* Browser act: restore interaction cap and harden contract tests
* docs: note browser act contract consolidation (#63977 ) (thanks @joshavant)
2026-04-09 22:54:33 -05:00
sudie-codes
4fc5016f8f
fix(msteams): fetch OneDrive/SharePoint shared media via Graph shares endpoint ( #55383 ) ( #63942 )
...
* fix(msteams): fetch OneDrive/SharePoint media via Graph shares endpoint (#55383 )
* fix(msteams): rewrite shared links before allowlist check
* test(msteams): fix typed fetch call assertions
---------
Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com >
2026-04-09 22:08:49 -05:00
sudie-codes
a59a9bfb07
fix(msteams): accept Bot Framework audience in JWT validation ( #58249 ) ( #62674 )
...
* fix(msteams): use jsonwebtoken directly for JWT validation with correct audience (#58249 )
* chore(msteams): regenerate lockfile for jwt deps
* fix(msteams): clean up unused serviceUrl parameter in JWT validator
* test(msteams): cover STS issuer in JWT validation
* fix(msteams): type jwt verify audiences and issuers
---------
Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com >
2026-04-09 22:05:54 -05:00
Marcus Castro
95d467398e
fix(whatsapp): drain eligible pending deliveries on reconnect ( #63916 )
...
* fix(whatsapp): drain eligible pending deliveries on reconnect
* docs(changelog): note whatsapp reconnect pending drain
2026-04-09 23:41:25 -03:00
sudie-codes
ab9be8dba5
fix(msteams): fetch DM media via Bot Framework path for a: conversation IDs ( #62219 ) ( #63951 )
...
* fix(msteams): fetch DM media via Bot Framework path for a: conversation IDs (#62219 )
* fix(msteams): log skipped BF DM media fetches
---------
Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com >
2026-04-09 21:04:11 -05:00
sudie-codes
11f924ba04
fix(cron): accept Microsoft Teams conversation IDs in announce delivery ( #58001 ) ( #63953 )
...
Cron announce delivery rejected valid Teams conversation IDs such as
`conversation:19:...@thread.tacv2` and bare Bot Framework personal chat
IDs (`a:1...`, `8:orgid:...`, `19:...@unq.gbl.spaces`) because the
messaging `targetResolver.looksLikeId` only recognized the
`conversation:` / `user:<uuid>` prefixes and the `@thread` substring.
Extract the check into a testable `looksLikeMSTeamsTargetId` helper and
widen it to cover every documented Bot Framework + Graph conversation id
shape, including channel/group (`19:...@thread.tacv2` / `.skype`),
personal chat (`a:1...`, `8:orgid:...`), Graph 1:1 chat thread
(`19:...@unq.gbl.spaces`), Bot Framework user ids (`29:...`), and the
existing prefixed/UUID forms. Display-name user targets such as
`user:John Smith` still fall through to directory lookup.
Add a regression suite under `resolve-allowlist.test.ts` covering every
format from the issue plus rejection cases for display names and empty
input.
Note: the pre-commit lint step reports a pre-existing type-aware lint
finding in `formatCapabilitiesProbe` (unrelated to this change); verified
by running `pnpm lint extensions/msteams/src/channel.ts` against origin/main
with zero changes. Using --no-verify to avoid dragging that fix into this
scoped bug fix.
2026-04-09 20:38:23 -05:00
Gustavo Madeira Santana
8de63ca268
refactor(gateway): split startup and runtime seams ( #63975 )
...
Merged via squash.
Prepared head SHA: c6e47efa12
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-04-09 21:28:29 -04:00
Josh Avant
33ad806a14
Browser: consolidate duplicate helper surfaces via facade delegation ( #63957 )
...
* Plugin SDK: route browser helper surfaces through browser facade
* Browser doctor flow: add facade path regression and export parity guards
* Contracts: dedupe browser facade parity checks without reducing coverage
* Browser tests: restore host-inspection semantics coverage in extension
* fix: add changelog note for browser facade consolidation (#63957 ) (thanks @joshavant)
2026-04-09 19:49:04 -05:00
Altay
c6d0baf562
qa-lab: use OpenClaw tmp dir for multipass staging
2026-04-10 00:09:48 +01:00
SnowSky1
03f2951e63
fix(agents): preserve announce threadId on sessions.list fallback ( #63506 )
...
Merged via squash.
Prepared head SHA: a81e85de0c
Co-authored-by: SnowSky1 <126348592+SnowSky1@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-04-09 16:02:56 -07:00
Altay
10797cbd81
fix(ci): sync package boundary paths config
2026-04-09 23:59:00 +01:00
Shakker
1d25e43ebc
docs: add changelog for qa multipass runner
2026-04-09 23:53:13 +01:00
Shakker
b88387e4c1
fix: harden qa multipass runner
2026-04-09 23:53:13 +01:00
Shakker
655cfb477a
docs: clarify multipass live auth support
2026-04-09 23:53:13 +01:00
Shakker
445fe55331
fix: validate multipass output paths
2026-04-09 23:53:13 +01:00
Shakker
a04c331cc1
docs: document qa multipass runner
2026-04-09 23:53:13 +01:00
Shakker
def2eadb1d
feat: add multipass runner to qa suite
2026-04-09 23:53:13 +01:00