Skip to content

Custom two-line layout: provider icon height differs between providers (full menu-bar height vs. first line only) #5031

Closed

Description

@elpinguinofrio

Version: CodexBar 0.84.0, macOS 15 (Darwin 24.6.0), Apple Silicon

Layout: Settings → Menu Bar → Layout → All providers → Custom

  • Row 1: Icon · Session Usage bar · Session: Resets in
  • Row 2: Weekly % · Weekly: Resets in

Expected: With Icon as the first item before the line break, every provider's icon is the same size and is vertically centered across both lines.

Actual: The icon size depends on the provider:

  • Some providers (the Codex/OpenAI logo, and the provider with the "Λ"-style logo) draw the icon at full menu-bar height, spanning both lines.
  • Others (Claude ✳, and the provider showing "∅ – –") draw a small icon inline on the first line only, so the second line starts under it and the columns don't line up.

The "Default layout preview" in Settings shows the full-height version, so the inline version looks unintended.

Possibly related: #2345 (stacked two-line layout vertical offset) and #2325 (custom layout icon rendering). Both are closed.

Screenshot attached.

Activity

  1. added
    clawsweeper:intake:bugPreliminary submission classification; full source review pending.
    P2Normal priority bug or improvement with limited blast radius.
    clawsweeper:needs-infoClawSweeper needs more reporter information before it can verify this issue.
    clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.
    clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.
    impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.
    issue-rating: 🦐 gold shrimpDecent issue quality, but reproduction details are still incomplete.
    and removed
    clawsweeper:intake:bugPreliminary submission classification; full source review pending.
    on Nov 9, 2026
  2. clawsweeper commented on Nov 9, 2026

    @clawsweeper

    Codex review: this still needs some work.

    Summary
    Keep open for a rendering-policy decision: the screenshot confirms inconsistent icon sizes, but current documentation and tests deliberately preserve inline icons when provider tint is active.

    Reproducibility: The downloaded screenshot confirms the visible mismatch, and source establishes a deterministic tinted-versus-native rendering path; no live reproduction was run, and the exact settings behind every pictured provider remain unknown.

    Maintainer decision needed

    • Question: Should eligible two-row leading icons retain the same full-height geometry when provider tint is active?
    • Recommendation: Extend uniform geometry to tinted icons: Preserve provider tint without shrinking an eligible leading icon; validate appearance and state transitions before changing the documented exception.
    • Why: The screenshot establishes a visible inconsistency, but the earlier merged implementation, current documentation, and tests intentionally retain tinted inline icons.

    Next step
    Decide whether provider tint should preserve full-height two-row icon geometry, then confirm the affected providers with Color by provider toggled.

    Review details

    Best possible solution:

    If approved, keep eligible single leading icons centered beside both rows regardless of tint while preserving contrast handling and row-owned inline icons.

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

    The downloaded screenshot confirms the visible mismatch, and source establishes a deterministic tinted-versus-native rendering path; no live reproduction was run, and the exact settings behind every pictured provider remain unknown.

    Is this the best way to solve the issue?

    Changing all inline icons would override deliberate row-ownership and accessibility behavior; an approved change should target only otherwise eligible single leading icons with active provider tint.

    AGENTS.md: found and applied where relevant.

    Remaining risk / open question:

    • The screenshot does not expose all effective color, contrast, accent override, and provider-layout settings, so the cause of every small icon remains unconfirmed.
    • Uniform tinted geometry would change an explicitly documented rendering exception and needs a maintainer decision.

    Codex review notes: model internal, reasoning medium; reviewed against 7447bc77c249.

    Label changes

    Label changes:

    • add issue-rating: 🐚 platinum hermit: Current issue advisory state selects this label.
    • add clawsweeper:needs-live-repro: Current issue advisory state selects this label.
    • add clawsweeper:needs-product-decision: Current issue advisory state selects this label.
    • remove issue-rating: 🦐 gold shrimp: Current issue advisory state no longer selects this label.
    • remove clawsweeper:needs-info: Current issue advisory state no longer selects this label.

    Label justifications:

    • P2: The screenshot shows a localized layout inconsistency without blocking usage monitoring or recovery.
    • impact:ux-friction: Different provider-icon footprints misalign otherwise readable two-row status items and disagree with the all-provider preview.
    Evidence reviewed

    Acceptance criteria:

    • swift test --filter MenuBarLayoutRendererTests
    • swift test --filter StatusItemLayoutStyleSwitchTests
    • make check
    • Inspect fresh-bundle synthetic-data screenshots for Codex and Claude in light and dark appearances, with provider color enabled and disabled and relevant state transitions; avoid live accounts and Keychain access.

    What I checked:

    • Screenshot confirms the reported asymmetry: The reporter's attached screenshot visibly shows full-height Codex and Λ-style icons, a small first-row Claude icon with colored text, and another small first-row icon. The full-height Settings preview is also visible; effective color and provider override settings are not fully shown.
    • Current default branch deliberately selects different icon paths: Verified main matches the review checkout. A single leading icon can span two populated rows, but active provider tint, high contrast, and row-ownership exceptions suppress the separate leading image; inline stacked icons are 8 or 9 points high. (Sources/CodexBar/Menu/MenuBarLayoutRenderer.swift:488, 7447bc77c249)
    • Color eligibility varies between providers and states: Tint depends on the provider accent's contrast against the effective appearance, plus stale, highlighted, and accessibility states. Consequently, one global color setting can produce different icon geometry across providers. (Sources/CodexBar/Menu/MenuBarLayoutRenderer.swift:1216, 7447bc77c249)
    • Documentation and regression coverage preserve the exception: Configuration documentation explicitly excludes provider-colored layouts from full-height icons. Renderer tests require a separate image for eligible two-row layouts and inline attachments for color, contrast, and forced stacked overrides. (docs/configuration.md:420, 7447bc77c249)
    • Preview and status button use the same renderer: The all-provider preview defaults to Codex, while actual status items pass their provider-specific stale and highlighted state. The preview therefore does not promise identical geometry for every provider. (Sources/CodexBar/Menu/MenuBarLayoutEditor.swift:944, 7447bc77c249)
    • Earlier contribution intentionally retained tinted inline icons: fix: let a provider icon span two text rows #4454 introduced full-height two-row leading icons while explicitly preserving tinted and high-contrast inline rendering. Its merged patch confirms that boundary, and steipete's discussion credits deinspanjer and endorses the scoped change. (Sources/CodexBar/MenuBarLayoutRenderer.swift, 1321fe2d7d57)
    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; those execution lanes are retired.
    • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

    Reviewed November 9, 2026, 1:32 AM ET / 06:32 UTC.

  3. elpinguinofrio commented on Nov 9, 2026

    @elpinguinofrio
    Author

    Screenshot: the Λ and Codex icons span both lines; the ∅ and Claude ✳ icons sit small on the first line only. The Settings preview below shows the full-height version.

    Image
  4. added
    clawsweeper:intake:bugPreliminary submission classification; full source review pending.
    clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.
    clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.
    issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.
    and removed
    issue-rating: 🦐 gold shrimpDecent issue quality, but reproduction details are still incomplete.
    clawsweeper:needs-infoClawSweeper needs more reporter information before it can verify this issue.
    clawsweeper:intake:bugPreliminary submission classification; full source review pending.
    on Nov 9, 2026
  5. steipete commented on Nov 14, 2026

    @steipete
    Owner

    Fixed by #5081 (5107b45), which ships in the next release. Thanks @elpinguinofrio, the screenshot made the difference clear: provider coloring was forcing the icon into the first text line, while colors rejected by the contrast check used the full-height icon. The icon is now tinted once and stays full height beside both rows, so color no longer changes its size or placement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal priority bug or improvement with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions