fix(mattermost): handle missing channel types#78530
Conversation
|
Codex review: needs maintainer review before merge. Workflow note: Future ClawSweeper reviews update this same comment in place. How this review workflow works
Summary Reproducibility: yes. source inspection gives a high-confidence reproduction path: current main maps missing Mattermost channel type values to PR rating Rank-up moves:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. PR egg Rarity: 🥚 common. What is this egg doing here?
Real behavior proof Risk before merge
Maintainer options:
Next step before merge Security Review detailsBest possible solution: Land the Mattermost plugin-owned fail-closed fix once maintainers accept the malformed-event compatibility tradeoff, keeping the focused regression coverage with it. Do we have a high-confidence way to reproduce the issue? Yes, source inspection gives a high-confidence reproduction path: current main maps missing Mattermost channel type values to Is this the best way to solve the issue? Yes, mostly: the PR keeps the fix inside the Mattermost plugin boundary and centralizes channel-type resolution instead of changing core contracts. The remaining question is not code shape but maintainer acceptance of fail-closed drops/denials for unresolved metadata. Label justifications:
What I checked:
Likely related people:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 1fb09069c342. |
|
Standards check update for this PR:
|
905ff99 to
5053325
Compare
* fix(browser): guard current tab act routes * fix(browser): document current-tab route guard
…law#83707) Summary: - The PR adds raw explicit-port detection for browser CDP URLs, updates profile resolution precedence, adds regression tests, and records the browser fix in the changelog. - Reproducibility: yes. Source inspection shows current main resolves a portless profile `cdpUrl` through `par ... 443, and overwrites the configured `cdpPort`; the source PR also provides live before/after Chrome output. Automerge notes: - PR branch already contained follow-up commit before automerge: fix(browser): encapsulate explicit-port detection in parseBrowserHttpUrl - PR branch already contained follow-up commit before automerge: fix(browser): preserve explicit cdpPort when cdpUrl omits port Validation: - ClawSweeper review passed for head 070c31c. - Required merge gates passed before the squash merge. Prepared head SHA: 070c31c Review: openclaw#83707 (comment) Co-authored-by: Hongwei Ma <[email protected]> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <[email protected]>
Summary: - The PR changes collect-mode follow-up queue routing so unresolved-origin items can batch with a single resolved route and later compatible items can resume batching after a true cross-channel drain. - Reproducibility: yes. at source level: current main treats unkeyed-plus-same-keyed queue items as cross-chan ... failing path is directly visible in `src/utils/queue-helpers.ts` and `src/auto-reply/reply/queue/drain.ts`. Automerge notes: - PR branch already contained follow-up commit before automerge: Merge remote-tracking branch 'origin/main' into maint-83701-20260518 Validation: - ClawSweeper review passed for head e6ad029. - Required merge gates passed before the squash merge. Prepared head SHA: e6ad029 Review: openclaw#83701 (comment) Co-authored-by: Andy Ye <[email protected]> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <[email protected]>
…#83726) Summary: - The PR passes the effective OpenAI/Codex auth provider set into `/models` provider-header labeling, adds focused regression tests, and records the user-facing fix in the changelog. - Reproducibility: yes. Current main lacks `acceptedProviderIds` in the shared picker header path, and the source PR's Mantis baseline/candidate proof shows the visible Telegram header mismatch and after-fix OAuth label. Automerge notes: - PR branch already contained follow-up commit before automerge: fix(models): label picker auth via effective provider order Validation: - ClawSweeper review passed for head 8ca2924. - Required merge gates passed before the squash merge. Prepared head SHA: 8ca2924 Review: openclaw#83726 (comment) Co-authored-by: Stellar鱼 <[email protected]> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <[email protected]>
…ns (openclaw#70110) (openclaw#72348) Summary: - This PR adds and registers a Nextcloud Talk message action adapter for add-only reactions, updates reaction docs, and adds adapter plus sender tests. - Reproducibility: yes. Source inspection on current main shows Nextcloud Talk advertises reactions and has a ... ion sender, but the plugin lacks `actions.handleAction`, so shared `react` dispatch has no channel handler. Automerge notes: - PR branch already contained follow-up commit before automerge: test(nextcloud-talk): cover reaction sender request path - PR branch already contained follow-up commit before automerge: fix(nextcloud-talk): harden react null-guard; fix disabled-account te… - PR branch already contained follow-up commit before automerge: fix(nextcloud-talk): reject react remove requests instead of silently… - PR branch already contained follow-up commit before automerge: fix(nextcloud-talk): inline listEnabledAccounts helper after main cle… - PR branch already contained follow-up commit before automerge: docs(nextcloud-talk): note add-only react support in reactions and me… Validation: - ClawSweeper review passed for head 9817fed. - Required merge gates passed before the squash merge. Prepared head SHA: 9817fed Review: openclaw#72348 (comment) Co-authored-by: NW <[email protected]> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <[email protected]>
…83717) Summary: - Adds a personal-agent QA-Lab share-safe diagnostics scenario with mock-openai support, pack registration/tests, docs, and changelog coverage. - Reproducibility: not applicable. This PR adds a new QA-Lab scenario rather than fixing a current-main bug. T ... ce PR provides a clear after-patch validation path using qa-channel, a real gateway child, and mock-openai. Automerge notes: - No ClawSweeper repair was needed after automerge opt-in. Validation: - ClawSweeper review passed for head 46eb0af. - Required merge gates passed before the squash merge. Prepared head SHA: 46eb0af Review: openclaw#83717 (comment) Co-authored-by: Firas Alswihry <[email protected]> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <[email protected]>
Summary
Changes
Validation
corepack pnpm installcorepack pnpm exec tsx -e 'import { mapMattermostChannelTypeToChatType, resolveMattermostTrustedChatKind } from "./extensions/mattermost/src/mattermost/monitor-gating.ts"; ...'node scripts/run-vitest.mjs extensions/mattermost/src/mattermost/monitor-auth.test.tsnode scripts/run-vitest.mjs extensions/mattermost/src/mattermost/monitor-gating.test.ts extensions/mattermost/src/mattermost/monitor.channel-kind.test.tsnode scripts/run-vitest.mjs extensions/mattermost/src/mattermost/monitor.inbound-system-event.test.tscorepack pnpm exec oxfmt --check --threads=1 extensions/mattermost/src/mattermost/monitor-auth.test.ts extensions/mattermost/src/mattermost/monitor.inbound-system-event.test.tsgit diff --check origin/main...HEADReal behavior proof
Behavior addressed: Missing or blank Mattermost channel type metadata should fail closed instead of mapping to public-channel handling; valid direct, group, private, and public channel codes should still map normally.
Real environment tested: Local OpenClaw checkout on branch
571at505332585a, Nodev22.22.2, pnpm11.1.0.Exact steps or command run after this patch: Ran a local terminal command with
corepack pnpm exec tsx -e ...importing the actual Mattermost channel-type module fromextensions/mattermost/src/mattermost/monitor-gating.ts, then ran the targeted Mattermost Vitest files throughnode scripts/run-vitest.mjsfor the shared mapper/auth helpers and monitor-level inbound post/button regression paths listed above.Evidence after fix:
Targeted regression tests also passed:
monitor-auth.test.tspassed 4 tests;monitor-gating.test.tsplusmonitor.channel-kind.test.tspassed 11 tests;monitor.inbound-system-event.test.tspassed 4 tests, including the missing channel type post drop and button dispatch skip cases.Observed result after fix: Missing channel type metadata now rejects or drops before authorization/routing can treat the event as
channel, while known Mattermost type codes continue to route as before.What was not tested: A live Mattermost server callback round trip was not run locally.
Notes