Skip to content

Chat: inline /-triggered gateway command catalog menu (Mac parity) - #890

Merged
shanselman merged 4 commits into
openclaw:mainfrom
bkudiess:bkudiess-chat-command-catalog
Jun 29, 2026
Merged

Chat: inline /-triggered gateway command catalog menu (Mac parity)#890
shanselman merged 4 commits into
openclaw:mainfrom
bkudiess:bkudiess-chat-command-catalog

Conversation

@bkudiess

@bkudiess bkudiess commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Problem: Windows chat had only hard-coded footer controls and a local/static app command palette — no discoverable gateway command search/autocomplete, unlike the Mac/main Control UI command surface.
  • Why it matters: Mac/main parity gap. Users on Windows couldn't discover or invoke the gateway's commands.list catalog (native/text/skill/plugin commands, categories, args, choices) from chat.
  • What changed: Added an inline, /-triggered floating command menu in the composer backed by the committed protocol-foundation commands.list DTOs/APIs (no duplicated protocol models). Includes search, categorized/relevance-ranked results, a Mac-style arg-choice follow-up picker, and full keyboard control.
  • User impact: Type / in chat to discover and insert gateway commands, with argument-choice assistance — comparable to Mac/web.
  • What did NOT change (scope boundary): No protocol/DTO changes (uses the committed foundation). Existing composer behavior (send, attachments, voice, Shift+Enter newline) is intact. No gateway/pairing/permissions/node changes.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor
  • Docs / instructions
  • Tests / validation
  • Security hardening
  • Chore / infra

Scope (select all touched areas)

  • Tray / WinUI UX
  • Windows node capability
  • Local MCP / winnode
  • Gateway / connection / pairing
  • Setup / onboarding
  • Permissions / privacy / security
  • Tests / CI / docs

Linked Issue/PR

  • Closes #
  • Related # (Mac/main parity audit — PR lane 2)
  • Related to a bug or regression

Validation

OPENCLAW_REPO_ROOT set to the worktree per AGENTS.md. Baseline + after-change:

  • ./build.ps1 — ✅ all 5 projects (Shared, Cli, WinNodeCli, SetupEngine, WinUI)
  • dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj — ✅ Passed: 2659, Failed: 0, Skipped: 31
  • dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj — ✅ Passed: 1443, Failed: 0, Skipped: 0
  • Focused ClawSweeper fix: dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --filter EnsureCommandCatalogAsync_Exception_PublishesUnsupportedFallback — ✅ Passed: 1, Failed: 0

New/updated tests: tests/OpenClaw.Shared.Tests/CommandCatalogPresentationTests.cs (presentation helpers + ranked search), tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests/OpenClawChatDataProviderTests.cs (catalog fetch/cache/in-flight/epoch, failure fallback, and text-scope filtering).

Real behavior proof

  • Environment tested: Windows ARM64, .NET 10.0.301, local non-isolated run (run-app-local.ps1 -AllowNonMain).
  • PR head / commit tested: 67da8055 (branch bkudiess-chat-command-catalog).
  • Exact steps or command run: Built + launched the tray app; in chat composer typed / (full menu), typed /mo (filtered/relevance), selected a command with static first-arg choices (arg-choice picker), and exercised ↑/↓/Enter/Tab/Esc in both modes.
  • Evidence after fix: / opens a floating opaque elevated popup over the composer with name-mapped Fluent icons, /name, inline arg templates, descriptions and N options badges; selecting a choice-bearing command transitions the same popup into an arg-choice picker that fills /name value.
  • Observed result: Discovery + insertion + arg-choice flow behave as designed; loading/unsupported/disconnected states render correctly; on gateways without commands.list the menu stays inert and /text is ordinary input.
  • Product/UX decision: Windows intentionally adopts the Mac/main default / autocomplete behavior on command-capable gateways; unmatched /text remains ordinary input after catalog load, and unsupported gateways stay inert.
  • Screenshot/artifact links verified? Yes — current-head screenshots are embedded below and show the slash command menu / argument picker surface.
  • Not verified / blocked: N/A
image image

Security Impact (required)

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No — uses the existing commands.list gateway API via the committed protocol client; no new endpoints.
  • Command/tool execution surface changed? No — the menu only inserts text into the composer; it never auto-sends or auto-executes. The user still presses Send.
  • Data access scope changed? No

Compatibility / Migration

  • Backward compatible? Yes — additive UI; gracefully no-ops on gateways without commands.list.
  • Config/env changes? No
  • Migration needed? No
  • If yes, exact upgrade steps: N/A

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only conversations that still need reviewer or maintainer judgment.

🤖 Generated with Copilot CLI

Copilot and others added 2 commits June 28, 2026 19:58
Inline slash-command autocomplete: typing / opens a floating opaque
popup over the composer listing gateway commands.list results with
single-line rows (name, description, source/args badges), keyboard
nav, and caret-preserving insertion. Catalog cached and revalidated
at deliver time; clear unsupported/disconnected states.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…view fixes

- Add an argument-choice picker: selecting a command with static first-arg
  choices transitions the same popup into a choice list (Mac slashMenuMode
  parity), filtered as you type, filling /name value on select.
- Mac-align rows: name-mapped Fluent icons, one-line layout, inline arg
  template, 'N options' badge; elevated opaque Tertiary surface.
- Rubber-duck fixes: gate the menu on CommandsSupported so it is inert on
  gateways without commands.list; swallow Enter while loading so raw /text
  can't race the fetch; relevance-ordered results so Enter inserts the top
  match; exit args mode on whitespace; move catalog fetch to a deps-keyed
  UseEffect to avoid render-time churn and unbounded retries.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@clawsweeper

clawsweeper Bot commented Jun 29, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed June 29, 2026, 5:18 PM ET / 21:18 UTC.

Summary
Adds a WinUI chat composer slash-command catalog menu backed by the gateway command catalog, with provider caching/fallback, shared presentation helpers, FunctionalUI flyout caching, and shared/tray tests.

Reproducibility: not applicable. this is a feature PR rather than a bug report. The changed behavior is source-verifiable from PR-head files and the inspected screenshots directly show the active menu and argument picker.

Review metrics: 3 noteworthy metrics.

  • Changed surface: 10 files, +1535/-11. The PR spans shared presentation helpers, tray provider state, visible composer behavior, FunctionalUI flyout behavior, and tests.
  • Reported validation: 3 required commands plus 1 focused test reported. The PR body reports the AGENTS-required build/shared/tray validation and a focused catalog-fallback test after the latest fix.
  • Live check state: 10 successful, 4 skipped, 0 pending/failing. There was no live CI blocker at inspection time, so review attention can stay on UX compatibility and maintainer acceptance.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Get maintainer UX/compatibility acceptance for default leading-slash autocomplete on Windows.
  • [P2] A short recording would further prove keyboard navigation, argument picking, and slash-text fallback beyond the static screenshots.

Mantis proof suggestion
A visible desktop proof pass would materially help verify keyboard navigation, argument picking, and slash-text fallback in the actual WinUI composer. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis visual task: verify the Windows chat composer opens the slash command menu, filters commands, shows the argument picker, and sends unmatched slash text after catalog fallback.

Risk before merge

  • [P1] The PR intentionally changes existing leading-slash composer behavior on command-capable gateways: slash-leading text can open autocomplete, and Enter/Tab can insert a command instead of immediately sending raw text while a result is selected.
  • [P2] While commands.list is still loading, Enter is intentionally swallowed for slash-leading input until catalog resolution or fallback, which can delay sending raw slash text on a slow or failing gateway.

Maintainer options:

  1. Accept Mac-style slash default
    Maintainers can explicitly accept leading-slash autocomplete on command-capable gateways, relying on text-scope filtering and unsupported/failure fallback as the compatibility boundary.
  2. Preserve raw slash send by default
    If Windows must keep prior raw leading-slash send behavior, change the PR to use a different trigger or an explicit opt-in before merge.
  3. Pause for UX direction
    If Windows/Mac parity for command discovery is not settled, pause this PR until maintainers choose the permanent composer command model.

Next step before merge

  • [P2] Maintainer UX/compatibility acceptance is the remaining action; there is no narrow automated repair to queue from this review.

Security
Cleared: The diff adds C# UI/provider/test code using the existing typed gateway catalog and does not add dependencies, workflows, secrets handling, permissions, or automatic command execution.

Review details

Best possible solution:

Land after maintainers explicitly accept Mac-style slash autocomplete as the Windows default, or revise the trigger/default if Windows should preserve raw leading-slash sends.

Do we have a high-confidence way to reproduce the issue?

Not applicable: this is a feature PR rather than a bug report. The changed behavior is source-verifiable from PR-head files and the inspected screenshots directly show the active menu and argument picker.

Is this the best way to solve the issue?

Unclear until maintainers accept the default slash trigger. Technically the implementation reuses the existing typed commands.list client and now applies the requested text-scope filter, but the compatibility choice is a product decision.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 7463a343833f.

Label changes

Label justifications:

  • P3: This is a user-facing chat UX parity feature with limited urgency rather than a regression, outage, data-loss issue, or security fix.
  • merge-risk: 🚨 compatibility: The PR changes default behavior for existing leading-slash composer input on command-capable gateways.
  • merge-risk: 🚨 message-delivery: The composer now intercepts Enter/Tab while slash autocomplete is active or loading, which can delay or replace sending slash-leading text.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes current-head Windows run notes and two inspected screenshots that directly show the slash command menu and argument picker; future proof should continue redacting private details.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes current-head Windows run notes and two inspected screenshots that directly show the slash command menu and argument picker; future proof should continue redacting private details.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes current-head Windows run notes and two inspected screenshots that directly show the slash command menu and argument picker; future proof should continue redacting private details.
Evidence reviewed

What I checked:

  • AGENTS policy applied: The repository AGENTS.md was read fully; this PR touches tray/chat UX, so the required validation and visible proof guidance affected the review. (AGENTS.md:49, 7463a343833f)
  • Current main lacks the requested UI: Current main's composer props expose connection/model/chat controls but no command catalog list or command-request callback, so the central slash catalog behavior is not already implemented on main. (src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs:41, 7463a343833f)
  • PR implements the slash catalog surface: PR head adds slash menu state, lazy catalog request, ranked search, and popup rendering for the connected chat composer. (src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs:432, 67da8055d231)
  • Text-scope review feedback addressed: The provider now requests commands.list through new CommandCatalogQuery { Scope = "text" }, which excludes native-only commands from the text composer catalog while preserving text and both-scope commands. (src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs:1057, 67da8055d231)
  • Regression coverage added: The added provider test builds a mixed native/text/both catalog and asserts the native-only command is absent while text and both commands remain. (tests/OpenClaw.Tray.Tests/OpenClawChatDataProviderTests.cs:2047, 67da8055d231)
  • Proof artifacts inspected: The two GitHub attachment screenshots were downloaded to the proof scratch directory and visually inspected; they show the active slash command menu and the argument-choice picker in the Windows chat composer. (67da8055d231)

Likely related people:

  • bkudiess: Git history shows prior work introducing the commands.list protocol foundation and provider-aware chat model picker that this PR extends. (role: recent protocol and chat area contributor; confidence: high; commits: 2cae69ba6ca4, d6b1a72f6d23; files: src/OpenClaw.Shared/GatewayProtocolModels.cs, src/OpenClaw.Shared/OpenClawGatewayClient.Protocol.cs, src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs)
  • Régis Brid: Git history shows the inline exec approval flow touched the shared chat models, provider, root, and timeline paths that the composer/catalog feature builds around. (role: adjacent chat workflow contributor; confidence: medium; commits: 4e7982bafb86; files: src/OpenClaw.Chat/ChatModels.cs, src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs, src/OpenClaw.Tray.WinUI/Chat/OpenClawChatRoot.cs)
  • Andy Ye: Git blame/log shows recent multi-attachment work changed the same composer send and attachment interaction area. (role: recent adjacent composer contributor; confidence: medium; commits: c5aa130dbf55; files: src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs, src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs)
  • shanselman: The PR discussion includes a concrete review request to filter the slash menu to text-invokable commands, and the latest commit addresses that request. (role: recent reviewer; confidence: medium; files: src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs, tests/OpenClaw.Tray.Tests/OpenClawChatDataProviderTests.cs)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. merge-risk: 🚨 message-delivery 🚨 Merging this PR could drop, duplicate, misroute, suppress, or wrongly target messages. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. labels Jun 29, 2026
@bkudiess

Copy link
Copy Markdown
Collaborator Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 29, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 29, 2026
When commands.list throws on a connected gateway, publish an unsupported
empty catalog fallback instead of leaving AvailableCommands null. This
moves the composer out of the loading state so slash-leading text keeps
normal send behavior and avoids immediate retry loops until reconnect.

Add focused provider coverage for the exception fallback and cached
no-retry behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@bkudiess

Copy link
Copy Markdown
Collaborator Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 29, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 29, 2026
@shanselman

Copy link
Copy Markdown
Collaborator

Thanks for the strong iteration here — CI/proof look good and the provider concurrency coverage is solid. I think there is one correctness fix we should make before landing this:

The chat composer is a text-entry surface, but this PR appears to fetch/present the full commands.list catalog. The protocol has explicit command scopes (text, native, both), and CommandCatalogQuery already models the intended semantics: a Scope = "text" filter should include text and both, but exclude native-only commands.

Can you please update the PR so the slash menu only surfaces text-invokable commands? Concretely, I’d like one of these equivalent shapes:

  1. Preferred: have OpenClawChatDataProvider.EnsureCommandCatalogAsync call ListCommandsAsync(new CommandCatalogQuery { Scope = "text" }), so snapshots only expose commands valid for the text composer.
  2. Acceptable: filter before OpenClawComposer builds/searches slash results, using the same CommandCatalogQuery { Scope = "text" } semantics.

Please also add a focused regression test with a mixed catalog containing at least:

  • scope = "native" command, which must not appear in slash results / text composer catalog.
  • scope = "text" command, which should appear.
  • scope = "both" command, which should appear.

The intent is not to redesign the feature — just to avoid injecting native-only commands into the text composer. After that and the current validation stays green, I’d consider this landable.

Request commands.list with CommandCatalogQuery Scope=text for the chat
composer so native-only commands never surface in text autocomplete.

Add focused provider coverage with a mixed native/text/both catalog to
prove native-only commands are excluded while text and both commands are
kept.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@bkudiess

Copy link
Copy Markdown
Collaborator Author

Addressed Scott's scope feedback in 67da8055:

  • OpenClawChatDataProvider.EnsureCommandCatalogAsync now requests the chat catalog with new CommandCatalogQuery { Scope = "text" }, so the composer only receives text-invokable commands (text + both) and excludes native-only commands.
  • Added focused regression coverage with a mixed catalog (native, text, both) proving native-only commands are excluded while text/both remain: EnsureCommandCatalogAsync_RequestsTextScopeAndExcludesNativeOnlyCommands.

Validation after the fix:

  • ./build.ps1 — ✅ all projects
  • OpenClaw.Shared.Tests — ✅ 2659 passed
  • OpenClaw.Tray.Tests — ✅ 1443 passed

@bkudiess

Copy link
Copy Markdown
Collaborator Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 29, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@shanselman
shanselman merged commit a3c5e0b into openclaw:main Jun 29, 2026
14 checks passed
shanselman added a commit that referenced this pull request Jun 30, 2026
… styled rows (#893)

* Chat: group the / command palette by Mac buckets with styled rows

Enhance the inline "/" slash command palette (added in #890) so it matches
Mac's grouped, styled command menu:

- Group commands under Mac's Session / Model / Tools / Agents display
  buckets with uppercase category subheadings; the run options
  (verbose/reasoning/fast/trace/usage/elevated/exec/think/model) surface
  under "Model" instead of being truncated off a flat alphabetical list.
- Mac-style rows: icon, /name (bold, default font), [args] hint (mono,
  muted), right-aligned description, and an accent-tinted "N options" badge.
- The palette filters and ranks live as you type; relevance order is
  preserved within each group so the top match stays the default Enter
  target.
- Auto-scroll the keyboard-selected row into view during arrow navigation.

Bucket mapping mirrors Mac's mapCategory + CATEGORY_OVERRIDES; ordering
mirrors CATEGORY_ORDER. No item cap (the popup ScrollViewer bounds height,
so no bucket is silently dropped). No custom "Run options" menu (Mac has
none) and no sessions.patch UI plumbing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Chat palette: match highlight, opaque flyout, global-best selection

UI polish for the grouped "/" command palette plus the Codex/ClawSweeper
review fix:

- Highlight the matched query substring in the command name + description
  with a soft accent tint and white (primary) text. Uses TextHighlighter
  (rectangular, layout-safe); the alpha is baked into the Color because
  TextHighlighter ignores SolidColorBrush.Opacity.
- Make the slash flyout background opaque, matching the composer textbox
  (TextControlBackground composited over the base surface) instead of a
  lighter floating surface that showed chat content through it.
- Hide the flyout entirely when nothing matches (drop the "No matching
  commands" hint).
- Preserve the GLOBAL best Search match as the default Enter/Tab target
  across grouped buckets. Grouping renders by Mac bucket order, but the weak
  first-bucket row is no longer the default selection; keyboard selection now
  defaults to the top-ranked match via ChatCommandCatalogView.GroupForPalette
  / GroupedPalette.DefaultSelectionIndex (addresses ClawSweeper review at
  OpenClawComposer.cs:474). Adds cross-bucket regression tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix hidden slash palette key handling

Only trap composer keys while the slash command catalog is still loading and the loading popup is visible. Once the catalog is loaded with no matching command, let no-match slash input behave like ordinary text.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Scott Hanselman <scott@hanselman.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. merge-risk: 🚨 message-delivery 🚨 Merging this PR could drop, duplicate, misroute, suppress, or wrongly target messages. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants