Skip to content

feat(web): highlight resolved mentions - #137

Merged
steipete merged 18 commits into
openclaw:mainfrom
jjjhenriksen:agent/clickclack-semantic-mentions
Aug 2, 2026
Merged

feat(web): highlight resolved mentions#137
steipete merged 18 commits into
openclaw:mainfrom
jjjhenriksen:agent/clickclack-semantic-mentions

Conversation

@jjjhenriksen

@jjjhenriksen jjjhenriksen commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • resolve workspace @handle mentions from one complete, background-loaded member cache;
  • render every resolved mention with a neutral semantic treatment across timelines, threads, embedded views, and agent commentary/tool preambles;
  • apply stronger current-user emphasis only when the channel's existing notification preference is all or mentions, returning to neutral in muted mode;
  • keep composer suggestions limited to users with real handles, with no parallel highlight preference or member cache;
  • leave unknown handles, emails, Markdown links, URL-like paths, inline code, and code blocks unchanged;
  • regenerate the complete Go-embedded production asset graph.

Product coherence

This builds directly on #116. The server-backed channel preference remains the single attention policy: it controls alert delivery and whether a resolved current-user mention receives stronger emphasis. Semantic resolution itself remains visible in muted channels, so muting attention never changes message meaning.

Exact-head behavior proof

The focused Playwright scenarios run against the real Go server, embedded production web app, and fresh SQLite data. On exact head f42712511105cf5144bf8b9c5a2b1f7b06d25747:

pnpm exec playwright test tests/e2e/chat.spec.ts tests/e2e/embed-channel.spec.ts tests/e2e/embed-thread.spec.ts --grep "coalesces durable agent activity|resolved mention emphasis follows|embedded channel loads|embedded thread loads" --reporter=line
4 passed (8.4s)

The proof exercised:

  • a second real user mentioning the signed-in user in a muted channel;
  • immediate neutral → emphasized → neutral transitions while cycling mutedallmentionsmuted without reload;
  • stable workspace-bot handles in Go-served embedded channel and embedded thread routes;
  • a resolved handle inside an expanded agent commentary preamble;
  • concurrent renderer scenarios, eliminating shared-profile fixture races.

The source-blind behavior contract and report are local verification artifacts, not committed to this branch.

Validation

The generated bundle was rebuilt twice through the canonical web/SDK/embed path with identical output; both index.html and 200.html reference the committed app.zPNZ94rT.js graph.

Related to #116.

@clawsweeper clawsweeper Bot added proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. 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. labels Jul 31, 2026
@clawsweeper

clawsweeper Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed August 2, 2026, 5:48 PM ET / 21:48 UTC.

ClawSweeper review

What this changes

Adds post-Markdown highlighting for workspace-resolvable @handle mentions in channel, thread, embedded, and agent-preamble views, with refreshed Go-served web assets.

Merge readiness

⚠️ Needs maintainer review before merge - 2 items remain

Keep this PR open: current main contains the merged notification and mention-target foundation, but it does not yet decorate resolved handles in rendered Markdown. The PR’s latest context shows the earlier generated-entrypoint blocker was addressed and includes concrete Chromium proof across ordinary, embedded, and agent-commentary surfaces; an exact-head local diff could not be loaded because this read-only promisor checkout could not resolve GitHub.

Priority: P2
Reviewed head: f42712511105cf5144bf8b9c5a2b1f7b06d25747

Review scores

Measure Result What it means
Overall readiness 🦐 gold shrimp (3/6) The PR has strong reported behavior proof and addresses prior review feedback, but the unavailable exact-head objects prevent a fully confident final patch-quality assessment here.
Proof confidence 🦞 diamond lobster (5/6) Sufficient (live_output): The PR body reports a real Chromium run using the mention action and shows live <mark> output for ordinary, embedded, and agent-commentary content; the proof directly demonstrates the changed visible behavior.
Patch quality 🦐 gold shrimp (3/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (live_output): The PR body reports a real Chromium run using the mention action and shows live <mark> output for ordinary, embedded, and agent-commentary content; the proof directly demonstrates the changed visible behavior.
Evidence reviewed 6 items Current main lacks the renderer-side feature: The checked-out main branch has mention-target collection and notification metadata, but no enhanceMentions action or mention-highlight source implementation; ordinary thread Markdown is still rendered only through enhanceMarkdown.
Merged prerequisite foundation: Current main includes the per-channel preference and resolved mention-target foundation from the merged related change; its collector is capped to recent/moderation/direct people, while this PR’s stated improvement loads complete workspace targets for highlighting.
Prior asset-entrypoint finding is addressed in submitted context: The provided PR diff updates the checked-in index.html application entry and root-node hashes together, addressing the prior review’s report that new mention chunks were unreachable from served HTML.
Findings None None.
Security None None.

How this fits together

ClickClack’s web client renders channel messages, thread replies, embedded views, and agent preambles from API data. Workspace member handles feed a post-Markdown decorator, which marks resolvable mentions before the Go API serves the compiled web bundle to browsers.

flowchart LR
  A[Workspace members] --> B[Mention target list]
  C[Channel and thread content] --> D[Markdown renderer]
  B --> E[Mention decorator]
  D --> E
  E --> F[Main and embedded views]
  E --> G[Agent preambles]
  F --> H[Go-served web assets]
Loading

Before merge

  • Resolve merge risk (P1) - The local checkout cannot load the final PR-head objects, so this review cannot independently verify the exact final asset graph or rerun a three-way source comparison; remaining in-progress CI should gate that head normally.
  • Complete next step (P2) - No focused automated repair is identified: prior actionable review feedback is reported as addressed, the PR has real behavior proof, and the remaining action is normal exact-head validation.
Agent review details

Security

None.

Review metrics

None.

Merge-risk options

Maintainer options:

  1. Decide the mitigation before merge
    Land the focused renderer-side decorator only after the exact head remains clean against current main; keep resolved-target and notification-policy behavior in the already-merged foundation rather than duplicating it.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Technical review

Best possible solution:

Land the focused renderer-side decorator only after the exact head remains clean against current main; keep resolved-target and notification-policy behavior in the already-merged foundation rather than duplicating it.

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

Not applicable: this PR adds a rendering capability rather than repairing a reproducible pre-existing failure. The PR body supplies after-fix Chromium output for all three intended rendering surfaces.

Is this the best way to solve the issue?

Yes, with moderate confidence: a post-Markdown decorator that excludes links, code, email-like text, and URL paths is a narrow way to add visual mention affordances without changing message storage, delivery, or Markdown parsing.

AGENTS.md: found and applied where relevant.

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

Labels

Label changes:

  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body reports a real Chromium run using the mention action and shows live <mark> output for ordinary, embedded, and agent-commentary content; the proof directly demonstrates the changed visible behavior.
  • remove rating: 🧂 unranked krab: Current PR rating is rating: 🦐 gold shrimp, so this older rating label is no longer current.
  • remove status: ⏳ waiting on author: Current PR status label is status: 👀 ready for maintainer look.

Label justifications:

  • P2: This adds a visible message-rendering capability with a bounded user-facing scope and no established urgent regression.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body reports a real Chromium run using the mention action and shows live <mark> output for ordinary, embedded, and agent-commentary content; the proof directly demonstrates the changed visible behavior.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body reports a real Chromium run using the mention action and shows live <mark> output for ordinary, embedded, and agent-commentary content; the proof directly demonstrates the changed visible behavior.

Evidence

What I checked:

  • Current main lacks the renderer-side feature: The checked-out main branch has mention-target collection and notification metadata, but no enhanceMentions action or mention-highlight source implementation; ordinary thread Markdown is still rendered only through enhanceMarkdown. (apps/web/src/components/thread/ThreadPanel.svelte:438, ca3c86ff6a8b)
  • Merged prerequisite foundation: Current main includes the per-channel preference and resolved mention-target foundation from the merged related change; its collector is capped to recent/moderation/direct people, while this PR’s stated improvement loads complete workspace targets for highlighting. (apps/web/src/ChatApp.svelte:1046, ca3c86ff6a8b)
  • Prior asset-entrypoint finding is addressed in submitted context: The provided PR diff updates the checked-in index.html application entry and root-node hashes together, addressing the prior review’s report that new mention chunks were unreachable from served HTML. (apps/api/internal/webassets/dist/index.html:106, f42712511105)
  • Current served asset boundary: Current main serves checked-in HTML entrypoints that explicitly reference the application entry and boot nodes, so refreshing those references is necessary for browser-visible web changes. (apps/api/internal/webassets/dist/index.html:106, ca3c86ff6a8b)
  • Repository SQL policy inspected: The full target policy requires SQL schema/query sources to be generated with sqlc rather than hand-maintaining generated storedb files; the submitted context includes both source SQL and generated output for its already-merged notification foundation. (AGENTS.md:1, ca3c86ff6a8b)
  • Local exact-head limitation: The PR head and its final styling commits are missing promisor objects in this checkout. Read-only Git attempted to fetch them, but github.com DNS resolution failed, so local line-by-line comparison of the final head was unavailable.

Likely related people:

  • jjjhenriksen: Authored the current-main per-channel preference foundation and the original resolved-mention implementation in the provided PR history. (role: current-main feature contributor; confidence: high; commits: ca3c86ff6a8b, 7f9d785b6764; files: apps/web/src/ChatApp.svelte, apps/web/src/lib/actions/mention-highlight.ts)
  • steipete: The provided PR history attributes the final mention-attention styling and embedded-client refresh to this contributor. (role: recent area contributor; confidence: medium; commits: 874f4f2e09fa, cbe713cce97d; files: apps/web/src/lib/actions/mention-highlight.ts, apps/api/internal/webassets/dist/index.html)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Let the exact-head CI and standard merge review complete; refresh the source-level review only if a check fails or the head changes.

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
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.

Workflow

  • 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.

History

Review history (26 earlier review cycles; latest 8 shown)
  • reviewed 2026-08-02T05:08:47.401Z sha 40d7f9c :: needs maintainer review before merge. :: none
  • reviewed 2026-08-02T07:13:32.219Z sha 40d7f9c :: needs maintainer review before merge. :: none
  • reviewed 2026-08-02T10:21:35.109Z sha 40d7f9c :: needs maintainer review before merge. :: none
  • reviewed 2026-08-02T12:47:54.081Z sha 40d7f9c :: needs maintainer review before merge. :: none
  • reviewed 2026-08-02T16:19:49.544Z sha 40d7f9c :: needs maintainer review before merge. :: none
  • reviewed 2026-08-02T18:21:07.251Z sha 40d7f9c :: needs maintainer review before merge. :: none
  • reviewed 2026-08-02T19:46:05.651Z sha 40d7f9c :: needs maintainer review before merge. :: none
  • reviewed 2026-08-02T19:57:41.938Z sha 21d1840 :: needs changes before merge. :: [P1] Regenerate the SPA entrypoints with the new asset hashes

@clawsweeper clawsweeper Bot removed the proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. label Jul 31, 2026
@clawsweeper clawsweeper Bot added proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. labels Jul 31, 2026
@jjjhenriksen
jjjhenriksen marked this pull request as ready for review August 1, 2026 02:25

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1acfbb95ed

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +919 to +927
do {
const page = await listWorkspaceMembersPage({
workspaceID,
cursor,
limit: 100,
});
members.push(...page.members.map((member) => member.user));
cursor = page.has_more ? page.next_cursor : undefined;
} while (cursor);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Avoid blocking route loading on every member page

When a workspace has more than 100 members, this loop issues one request per page serially, and applyRoute awaits the entire loadWorkspaceMembers call before resolving the route target and loading its messages. Opening or switching a large workspace can therefore leave the conversation blocked behind dozens or hundreds of member-list requests; load these targets in the background or resolve only the handles needed for visible messages.

Useful? React with 👍 / 👎.

Comment on lines +928 to +929
if (serial !== workspaceMembersLoadSerial || workspaceID !== selectedWorkspaceID) return;
workspaceMemberUsers = members;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Refresh mention targets after bot membership changes

This assignment creates a snapshot that is only refreshed when the workspace changes. The existing bot.deleted and bot.membership_removed realtime handlers reload direct conversations, moderation data, and commands but never this list, so a removed bot's old handle remains highlighted as resolvable—and a newly added or replacement bot is absent—until the user reloads or switches workspaces.

Useful? React with 👍 / 👎.

Comment on lines +89 to +93
return {
update(nextPeople: User[] = []) {
targets = mentionTargets(nextPeople);
renderMentionHighlights(node, targets);
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Re-run highlighting when rendered message HTML changes

The action updates only when mentionPeople changes, not when the element's {@html markdown(message.body)} content changes. For example, a realtime edit of a reply in the currently open thread replaces the reply HTML while the workspace people array remains unchanged, leaving mentions in the edited body unhighlighted until some unrelated people-list update or remount; observe child mutations or pass the body/version into the action.

Useful? React with 👍 / 👎.

Comment on lines +33 to +37
function mentionIsInsideURL(text: string, start: number): boolean {
const tokenStart =
Math.max(text.lastIndexOf(" ", start - 1), text.lastIndexOf("\n", start - 1)) + 1;
const prefix = text.slice(tokenStart, start);
return /^(?:www\.[^\s/]+|[A-Za-z][A-Za-z0-9+.-]*:\/\/[^\s/]+)\//u.test(prefix);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Exclude bare URL paths from mention matches

The URL check only recognizes prefixes beginning with www. or a URI scheme. Plain URL-like paths such as /users/@alice and docs/path/@alice?tab=1 therefore highlight @alice, despite the feature's intended exclusion of URL paths; detect slash-delimited path tokens as well as fully qualified URLs.

Useful? React with 👍 / 👎.

<MessageList
{messages}
selectedChannel={channel}
{mentionPeople}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Resolve mentions against all members in embedded views

The embedded channel passes a mentionPeople list derived only from the authors in the currently loaded message window plus the current user, capped at 24 entries; EmbedThreadView similarly uses only conversation members and loaded authors. Consequently, a valid workspace mention remains plain whenever its target has not authored one of those loaded messages, so embedded views do not consistently provide the resolved-mention treatment added here; fetch or otherwise resolve workspace targets for embeds as well.

Useful? React with 👍 / 👎.

{:else}
<QuoteBlock {message} onJump={onJumpToQuote} />
<div class="markdown" use:enhanceMarkdown>{@html markdown(message.body)}</div>
<div class="markdown" use:enhanceMarkdown use:enhanceMentions={mentionPeople}>{@html markdown(message.body)}</div>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Highlight mentions in agent commentary preambles

The new action is attached only in the ordinary-message branch, while coalesced agent_commentary rows take the earlier PreambleBlock branch and render their commentary Markdown with only enhanceMarkdown. A bot message such as Handing this to @alice therefore remains unhighlighted when it is displayed as a preamble, which omits the semantic treatment from the agent-handoff content this feature is intended to make scannable; pass the mention targets into PreambleBlock and enhance its commentary bodies too.

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 availability 🚨 Merging this PR could cause crashes, hangs, restart loops, stalls, or process outages. and removed proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Aug 1, 2026
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 availability 🚨 Merging this PR could cause crashes, hangs, restart loops, stalls, or process outages. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Aug 1, 2026
@clawsweeper clawsweeper Bot added status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Aug 1, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. labels Aug 2, 2026
PollyBot13 and others added 10 commits August 2, 2026 14:04
Expose the existing topic model in the web composer and timeline with resilient filtering, draft recovery, and paginated API support.

Co-authored-by: PollyBot13 <pollybot13@gmail.com>
Add one persisted per-channel notification preference across browser, desktop, Pushover, API, and SDK surfaces, with resolved mention metadata and authorized thread-message hydration.

Co-authored-by: Jacqueline Henriksen <jjjhenriksen@gmail.com>
Resolve workspace handles neutrally everywhere, promote current-user mentions only when the canonical channel notification preference allows attention, and cover normal, embedded, thread, and agent-preamble surfaces.\n\nCo-authored-by: Jacqueline Henriksen <jjjhenriksen@gmail.com>
Regenerate the complete Go-served asset graph from the reviewed mention sources.\n\nCo-authored-by: Jacqueline Henriksen <jjjhenriksen@gmail.com>
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Aug 2, 2026
@steipete

steipete commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Exact-head f42712511105cf5144bf8b9c5a2b1f7b06d25747 is green and live-proven:

The previously orphaned asset graph is replaced by a full canonical regeneration. Current-user emphasis uses #116's server-backed channel preference; there is no second highlight preference or member cache.

@steipete

steipete commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

@clawsweeper re-review

The complete Go-served asset graph and exact-head normal/embed/thread/preamble proof are now attached for f42712511105cf5144bf8b9c5a2b1f7b06d25747.

@clawsweeper

clawsweeper Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@steipete
steipete merged commit b409a28 into openclaw:main Aug 2, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. 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.

3 participants