Skip to content

feat(omarchy): mark each provider in the bar with its own logo - #3795

Closed
jsonMartin wants to merge 8 commits into
steipete:mainfrom
jsonMartin:feat/omarchy-provider-logos
Closed

jsonMartin wants to merge 8 commits into
steipete:mainfrom
jsonMartin:feat/omarchy-provider-logos

Conversation

@jsonMartin

@jsonMartin jsonMartin commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

TL;DR

The Omarchy bar now shows each provider's logo, tinted to match the bar's text colour. A provider with no installed logo keeps its text tag, and older backends still fall back to text. This adds the Mac app's 71 logo SVGs (about 96 KB) to the plugin and release archive, which needs the maintainer's approval below. It builds on #3794 and #3799.

What changes

  • Logos use the bar's foreground colour, including logos with black fills that would otherwise disappear on a dark theme.
  • A provider without an installed logo keeps its text tag.
  • The display limit from feat(omarchy): offer bar detail, per-model caps and provider count as preferences #3794 still applies, and +N still counts hidden providers beside the logos.
  • The backend supplies a separate entry for each displayed provider, so the widget does not have to split a combined label.
  • Both the installer and release archive include the existing Mac app logos.
  • CI does not load Panel.qml; rendering and fallback behaviour were checked with installed-bar screenshots.

Question for the maintainer

This puts the 71 logo SVGs (about 96 KB) into a new distribution path: the Quickshell plugin directory and the Linux release archive. That's your call. I'm happy to ship a subset, load them from the CLI bundle instead, or drop this PR.

Details

Provider entries and text fallback

barLabel was one combined string. The separator between providers also appears between usage values, so splitting that string could split a provider's values apart.

barSegments now returns one tag-and-text pair per displayed provider. barLabel is built from those pairs, and a test checks that they produce the same label. The pairs are sent as barEntries alongside barLabel. The tooltip still uses barLabel, and a frontend can fall back to it when an older backend has no barEntries.

The display limit is applied inside barSegments, so the text label and logo entries always show the same providers. When logos hide the combined label, the panel draws its +N count beside them.

Logo colour and packaging

MultiEffect normally applies colour according to each pixel's brightness. Black or near-black logos, including Qoder, Zenmux, Alibaba, Kilo and OpenCode, therefore stayed black on a dark bar while their text tags were hidden.

Setting contrast: -1 and brightness: 0.5 first turns every pixel into white while preserving transparency. In the shader's terms, this is premultiplied white: rgb = a, per multieffect.frag. Colouring that result gives an exact tint of the foreground, whatever colours the SVG uses.

The logos come from Sources/CodexBar/Resources/ProviderIcon-*.svg, which the Mac app already ships. The installer and release archive copy files matching that pattern, without a hard-coded list of provider names. A provider without a logo keeps its text tag.

Including the logos in the archive matters because an archive without them would silently fall back to text. The archive test now checks the fixed files and logo filenames against an allowed list, instead of checking the total number of files. It still fails if files from the checkout leak into the archive.

Depends on

This builds on #3794 (which builds on #3799). GitHub's native stacked pull requests do not support cross-fork stacks, so this branch also carries their commits. This PR's own change is commit 628d2769e. The branch has main merged in (at 1caaeb883) so it merges cleanly.

Proof

All data is synthetic; acme is a provider with no installed logo.

Installed Omarchy bar. This commit's Panel.qml and logos were installed with install.py --omarchy on Omarchy (Hyprland), then the Omarchy shell was restarted. A synthetic codexbar-linux backend served the real runtime socket that the installed widget polls.

With the default display limit (2), the bar shows Codex's logo, acme's text-tag fallback, and the count of hidden providers.

Setting Providers in the bar to All shows every logo, tinted to the bar foreground.

With an older backend built from main, this commit's widget falls back to the tooltip summary text. That backend publishes neither barLabel nor barEntries.

Logo tint. Qt 6.11 rendered these logos on the GPU with the shipped MultiEffect settings. The comparison shows Qoder and Zenmux (black fills), Codex (white) and Doubao (blue) on a dark bar.

before this PR

Fresh install and upgrade. install.py --omarchy ran twice into an isolated HOME, with preferences changed between runs.

$ install.py --omarchy   # fresh
Installed $HOME/.local/bin/codexbar-linux
logos installed: 71
preferences file created, provider = codex
# user sets: custom [claude, codex], quota used, pace off, providers in bar = All
$ install.py --omarchy   # upgrade
Installed $HOME/.local/bin/codexbar-linux
preferences after upgrade: {'provider': 'custom', 'providerOrder': ['claude', 'codex'], 'quotaDisplay': 'used', 'showPace': False, 'barProviders': 0}
logos installed: 71
previous adapter archived: 1
preference backups: 1

Tests

node --test Integrations/Omarchy/test.mjs Integrations/Omarchy/notifications.test.mjs  # 79 pass
CODEXBAR_LINUX_BINARY=<build of this commit> python3 -m unittest Integrations.Linux.tests.test_desktop  # 17 tests, OK
python3 Integrations/Linux/tests/test_package.py   # OK
python3 Integrations/Omarchy/test_install.py       # OK
omarchy plugin validate Integrations/Omarchy       # exit 0

CI never loads Panel.qml. Logo rendering, the missing-logo text fallback, the hidden-provider count and older-backend compatibility are verified by the installed-bar screenshots above, not by test.

@clawsweeper

clawsweeper Bot commented Sep 20, 2026

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Sep 20, 2026
@clawsweeper

clawsweeper Bot commented Sep 20, 2026

Copy link
Copy Markdown

Codex review: blocked before merge. Reviewed September 21, 2026, 3:24 PM ET / 19:24 UTC (Revision 5).

ClawSweeper review

What this changes

The branch adds themed provider logos and text fallbacks to the Omarchy bar, packages the existing SVG assets, and carries stacked quota-display, settings, and Antigravity deduplication changes.

Merge readiness

Blocked before merge - 4 items remain

The change remains useful and has convincing visual proof. Earlier findings are resolved; no new actionable defect was found. Logo distribution and the stacked change’s wider upgrade default still require maintainer approval.

Priority: P2
Reviewed head: 9c36f3035ba46306d43a5871d24b4b2afdb689f7
Owner decision: Required. See Decision needed.

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A solid implementation with strong visual proof and focused coverage; unresolved product choices do not reduce its technical quality rating.
Proof confidence 🦞 diamond lobster (5/6) ✨ media proof bonus Sufficient (screenshot): Inspected installed Omarchy/Hyprland screenshots exercising Panel.qml through the real snapshot socket: logos, missing-logo tags, overflow count, and older-backend fallback are visible. Qt before/after images demonstrate tinting, and the supplied installer transcript demonstrates preference preservation; synthetic inputs are appropriate for these presentation paths.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (screenshot): Inspected installed Omarchy/Hyprland screenshots exercising Panel.qml through the real snapshot socket: logos, missing-logo tags, overflow count, and older-backend fallback are visible. Qt before/after images demonstrate tinting, and the supplied installer transcript demonstrates preference preservation; synthetic inputs are appropriate for these presentation paths.
Evidence reviewed 9 items Pinned introduced scope: Reviewed the merge-base-to-head changes across all 13 files, including the stacked changes. The host-verified test merge has the pinned main and PR head as its parents; base-only drift is empty.
Current main and release still use text: Current main contains no barEntries, barLabel, or provider-logo integration in these Linux/Omarchy paths. The supplied latest release also renders the summary as text. The open stacked PRs do not establish a merged replacement for the logo change.
Earlier findings remain resolved: The panel retains alpha-preserving tint settings, missing-image text fallback, and the hidden-provider count. The shared model applies the configured provider limit before producing both representations. Panel.qml is unchanged from the previously reviewed 628d276 revision.
Findings None None.
Security None None.

How this fits together

CodexBar’s Linux backend turns provider CLI output and saved preferences into a private usage snapshot. The Omarchy widget polls that snapshot and renders usage alongside locally installed provider logos.

flowchart LR
  A[Provider CLI output] --> C[Linux usage model]
  B[Saved display preferences] --> C
  C --> D[Private usage snapshot]
  D --> E[Omarchy bar]
  F[Packaged provider logos] --> E
  E --> G[Logo or text fallback with quotas]
Loading

Decision needed

Question Recommendation
Should Linux/Omarchy distribute all 73 current provider SVGs, and should the included quota-display change expand existing users’ bar text by default? Approve logos and preserve compact upgrades: Approve the existing SVG collection while retaining compact text for upgrades until users enable expanded quota display.

Why: Both choices are explicitly presented for maintainer approval in this PR and its included stack; successful rendering and preference preservation cannot establish product acceptance.

Before merge

  • Resolve merge risk (P1) - The stacked quota-display change makes existing users’ bar text wider by default and may crowd established layouts; the author’s explicit upgrade-default question remains unanswered.
  • Resolve merge risk (P1) - Approval to distribute the existing provider SVG collection through the Linux archive and Omarchy plugin remains unresolved; the current glob includes 73 assets.
  • Complete next step (P2) - Record approval or a narrower direction for distributing the 73 current SVGs and resolve the wider upgrade default carried from feat(omarchy): offer bar detail, per-model caps and provider count as preferences #3794.
  • Resolve maintainer decision - Resolve the maintainer decision shown above before merge.
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Production and test delta Production +413/-21; tests +603/-15 Growth includes the declared quota-display and deduplication stack as well as the logo layer, with focused model and native regression coverage.
New packaged assets 73 SVGs; 98,079 bytes The dynamic packaging glob now includes two more assets than the count stated in the PR body.

Merge-risk options

Maintainer options:

  1. Keep upgrades compact (recommended)
    Retain the existing compact presentation for upgrades and make expanded quota text opt-in after the product decision.
  2. Accept the wider default
    Explicitly approve the demonstrated wider presentation for existing installations while keeping the two-provider limit.

Technical review

Best possible solution:

Reuse the existing logos and text fallbacks, with an approved distribution scope and compact upgrade behavior unless maintainers explicitly accept the wider default.

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

Not applicable to the primary feature request; installed-bar screenshots directly demonstrate the new rendering and fallback scenarios.

Is this the best way to solve the issue?

Yes for the logo layer: reusing existing assets and generating label text and entries from one model is maintainable. The stacked default-width change still needs a product choice.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against 1caaeb8837dd.

Labels

Label justifications:

  • P2: This is a bounded Linux/Omarchy display improvement with useful proof and no demonstrated urgent regression.
  • merge-risk: 🚨 compatibility: The included stack expands existing bar text by default, and the maintainer has not accepted that layout change.
  • 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): Inspected installed Omarchy/Hyprland screenshots exercising Panel.qml through the real snapshot socket: logos, missing-logo tags, overflow count, and older-backend fallback are visible. Qt before/after images demonstrate tinting, and the supplied installer transcript demonstrates preference preservation; synthetic inputs are appropriate for these presentation paths.
  • proof: sufficient: Contributor real behavior proof is sufficient. Inspected installed Omarchy/Hyprland screenshots exercising Panel.qml through the real snapshot socket: logos, missing-logo tags, overflow count, and older-backend fallback are visible. Qt before/after images demonstrate tinting, and the supplied installer transcript demonstrates preference preservation; synthetic inputs are appropriate for these presentation paths.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. Inspected installed Omarchy/Hyprland screenshots exercising Panel.qml through the real snapshot socket: logos, missing-logo tags, overflow count, and older-backend fallback are visible. Qt before/after images demonstrate tinting, and the supplied installer transcript demonstrates preference preservation; synthetic inputs are appropriate for these presentation paths.

Evidence

What I checked:

  • Pinned introduced scope: Reviewed the merge-base-to-head changes across all 13 files, including the stacked changes. The host-verified test merge has the pinned main and PR head as its parents; base-only drift is empty. (9c36f3035ba4)
  • Current main and release still use text: Current main contains no barEntries, barLabel, or provider-logo integration in these Linux/Omarchy paths. The supplied latest release also renders the summary as text. The open stacked PRs do not establish a merged replacement for the logo change. (Integrations/Omarchy/Panel.qml:43, 3703a72b6b66)
  • Earlier findings remain resolved: The panel retains alpha-preserving tint settings, missing-image text fallback, and the hidden-provider count. The shared model applies the configured provider limit before producing both representations. Panel.qml is unchanged from the previously reviewed 628d276 revision. (Integrations/Omarchy/Panel.qml:49, 9c36f3035ba4)
  • Inspected visual proof: Prepared images show the installed Omarchy bar with a Codex logo, acme text fallback and +3; an All configuration shows multiple tinted logos; the older backend shows text fallback. The before image shows dark marks, and the separately fetched after image shows all four marks tinted. The body identifies Omarchy/Hyprland, the installed production panel, a synthetic backend on the real socket, and Qt 6.11 rendering. Proof links use a mutable branch; no immutable media revision was supplied.
  • Fresh-install and upgrade evidence: The captured PR body records two installer runs preserving custom provider order, used-quota display, disabled pace, and All providers. The native regression test separately exercises loading preexisting settings without the new fields and preserving them after an unrelated save. These were inspected, not executed during this review. (Integrations/Linux/tests/test_desktop.py:189, 9c36f3035ba4)
  • Distribution scope needs current-count approval: The installer and package builder copy every existing ProviderIcon SVG. The reviewed checkout contains 73 regular SVG files totaling 98,079 bytes, rather than the 71 described in the earlier proof/body. The author explicitly requests approval for this new distribution path; no approving maintainer review was found. (Integrations/Linux/package.py:37, 9c36f3035ba4)

Likely related people:

  • unknown: The claimed source-line change could not be verified from bounded local history. (role: source history unknown; confidence: low)
  • unknown: The claimed source-line change could not be verified from bounded local history. (role: source history unknown; confidence: low)

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 (4 earlier review cycles)
  • reviewed 2026-09-20T23:18:56.577Z sha 2d25c1d :: needs real behavior proof before merge. :: [P2] Tint provider marks by alpha rather than source brightness
  • reviewed 2026-09-21T05:21:43.091Z sha c126be3 :: needs real behavior proof before merge. :: [P1] Keep expanded provider badges within the available bar space
  • reviewed 2026-09-21T06:56:06.367Z sha 628d276 :: blocked before merge. :: none
  • reviewed 2026-09-21T07:19:13.561Z sha 628d276 :: blocked before merge. :: none

Antigravity reports every pool as a quota-summary extra and copies the tightest
pool of each model family into its positional windows. The popup listed both,
so each representative appeared twice: once under a bare cadence label and
again under its family title.

Show each representative in its positional slot under its family title and drop
its extra copy. The representatives stay first, so the tray meters and summary
still report the binding pools, and the extra limit can no longer hide one. The
row keeps the pool's own key, so alert history follows a pool when another
becomes binding, and families are matched as Core selects them so equal values
cannot borrow another family's title.
@jsonMartin
jsonMartin force-pushed the feat/omarchy-provider-logos branch from 2d25c1d to c126be3 Compare September 21, 2026 05:15
@jsonMartin
jsonMartin marked this pull request as ready for review September 21, 2026 05:16
@clawsweeper clawsweeper Bot added merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Sep 21, 2026
…e bar

The bar showed one quota per provider and no pace, so the weekly burn rate was
only visible by opening a window. Show each provider's session quota, weekly
quota and weekly pace.

Nothing here recomputes pace. The CLI already emits a signed delta per window,
produced by Core, so the shared model carries it through and renders it in the
compact form of MenuBarDisplayText.paceText. The pace shown is the weekly
window's, never whichever lane is most constrained, and a pace Core cannot
compute contributes no segment rather than a placeholder that reads like data.

Lanes are resolved from the cadence a provider reports, the way Core's semantic
windows do, so no provider name is hard-coded and a provider without a session
window emits neither that segment nor its separator. Three rules came out of
testing against real provider shapes rather than from design:

- Antigravity marks a per-family summary set with quota-summary ids, and its
  positional window is only whichever family represents them, so a tighter
  family was hidden behind it. Matching on that marker rather than on
  percentages matters: Claude's general weekly can coincide with one of its
  per-model caps, and reading that coincidence as a summary replaced the general
  quota with a cap scoped beneath it.
- Kimi delivers a subscription-only account's entire quota through
  extraRateWindows, so treating every extra as an optional sub-cap dropped it.
- Cursor bills its total, its Auto/Composer usage and its API usage over one
  cycle, so keeping only the tightest of a duration replaced the headline quota
  with a subquota.

Percentages run through the existing quota preference, so the bar follows the
used or remaining setting without the adapter inverting anything, and the
existing Show pace preference now governs the bar as well as the native cards.
Caps scoped to a single model are off by default behind a new preference, since
most providers that publish them restate a general lane.

A new Providers in the bar preference bounds how many providers the bar shows,
two by default, and counts the rest, so an upgrade cannot widen an existing
multi-provider bar. It is display only: every configured provider is still
polled and listed in the popup. At the default font each character occupies
roughly 7 logical pixels, so four providers each showing a session lane, a weekly
lane and a pace come to about 1500 logical pixels; the README says so, and 0
shows every provider where the display has room.

The tray tooltip names the provider's own leading quota. A cadence the bar
derives from a per-model cap is skipped while the provider reports a quota of its
own, so Cursor's exhausted weekly Grok allowance cannot read as an exhausted
account in a tooltip that carries no lane name.

The adapter also stopped reusing a previous poll's body, which let a backend that
had gone away keep reporting the quota it last had.
The bar identified providers with a two-letter tag. Draw the provider's own mark
instead, recoloured to the bar's foreground so themes still apply.

Splitting the label is the part that needed care. barLabel built one joined
string, and a frontend cannot safely split that back apart on a separator the
lane text also uses. barSegments returns one tag-and-text pair per displayed
provider and barLabel is built from it, so the two cannot drift. The bar's
display limit lives inside barSegments rather than in barLabel, or a frontend
reading the entries would show providers the label said were hidden; a
three-provider test pins the providers, their order and the overflow count.
The entries travel as barEntries beside barLabel, which the tooltip still uses
and which a frontend falls back to when the backend predates this field.

Drawing marks hides the button's own label, which is what carried the overflow
count, so the count is drawn beside them.

Colorization scales each pixel's luminance, so a mark drawn in black stayed black on a
dark bar. Every pixel is flattened to white first, keeping only its alpha, so each
mark becomes an exact tint of the foreground whatever colours its SVG uses.

The marks are the ones the Mac app already ships. They are copied by glob, so no
provider name is hard-coded and a provider without one keeps its text tag rather
than leaving a gap. Both the installer and the release archive carry them, since
an archive without them would fall back to text with nothing explaining why. The
archive's allowlist test checks the fixed files and the mark filenames instead of
a member count, so it still fails if a checkout leaks in.

The badge sizes itself to whichever child it draws. Taking the larger of the mark
and the hidden text tag reserved the width of the provider id, which left a gap
beside the mark for any provider without a short tag.
jsonMartin added a commit to jsonMartin/CodexBar that referenced this pull request Sep 21, 2026
@jsonMartin
jsonMartin force-pushed the feat/omarchy-provider-logos branch from c126be3 to 628d276 Compare September 21, 2026 06:51
@clawsweeper clawsweeper Bot added 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. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. 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. labels Sep 21, 2026
…up-duplicates

# Conflicts:
#	Integrations/Linux/Shared/Usage.js
#	Integrations/Linux/tests/test_desktop.py
# Conflicts:
#	Integrations/Linux/Shared/Usage.js
steipete added a commit that referenced this pull request Sep 22, 2026
Adopt the logo renderer and SVG packaging from #3795 independently of
#3794 and #3799. Share compact text segments with the existing summary
so quota selection, display mode, ordering, and overflow stay unchanged.
Preserve text fallback for missing logos and older IPC backends.

Closes #3795
Refs #3794

Co-authored-by: jsonMartin <4033621+jsonMartin@users.noreply.github.com>
(cherry picked from commit b6c59b6)
@steipete steipete closed this in b94c707 Sep 22, 2026
@steipete

Copy link
Copy Markdown
Owner

Thanks @jsonMartin. Your logo renderer and SVG packaging are adopted in #3845, independently of #3794 and #3799. The adaptation preserves today's compact quota labels, two-entry limit, used/remaining setting, and backend polling. Missing logos and older backends retain text fallback. Model, installer, archive, isolated Linux IPC, account-action, debug build, and lint checks passed. Linux desktop and Linux CLI CI passed; Landed on main via train #3867; closing this PR as superseded.

@jsonMartin
jsonMartin deleted the feat/omarchy-provider-logos branch September 22, 2026 20:27
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. P2 Normal priority bug or improvement with limited blast radius. 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