Skip to content

Lighten Overview menu rows#1675

Open
hhh2210 wants to merge 2 commits into
steipete:mainfrom
hhh2210:codex/overview-lite-row
Open

Lighten Overview menu rows#1675
hhh2210 wants to merge 2 commits into
steipete:mainfrom
hhh2210:codex/overview-lite-row

Conversation

@hhh2210

@hhh2210 hhh2210 commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Refs #1674.

Summary

  • Replace the full rich Overview provider row with a compact LiteSummary row.
  • Avoid rendering InlineUsageDashboardContent / chart-heavy usage sections in the Overview list.
  • Keep provider click behavior, provider detail submenus, live refresh subtitles, account/storage text, and status styling intact.
  • Follow-up after ClawBot: header, compact summary, and progress tint now all derive from the same MenuCardRefreshMonitor-resolved live model.

Why this direction

The scroll sample in #1674 points at repeated SwiftUI/AppKit view layout work during every menu scroll event. This version reduces the amount of SwiftUI content each Overview row owns, so the menu has less to relayout while scrolling. It is the lower-risk performance direction if maintainers are comfortable with a denser/lighter Overview presentation.

This is an alternative to the rich-row PR; they are not meant to merge together.

Tests

  • swift test --filter OverviewMenuCardRowViewTests
  • swift test --filter "overview row"
  • swift build
  • make check
  • git diff --check

Follow-up validation

  • Added overview lite summary uses monitor resolved refreshed model, covering a stale row model resolving to refreshed quota/progress through MenuCardRefreshMonitor while keeping the compact row free of dashboard-heavy SwiftUI content.
  • Local make check is clean after the follow-up commit.
  • CI was already green before the follow-up; new checks are expected to rerun for 6f680eeb.

Not covered

@clawsweeper

clawsweeper Bot commented Jun 20, 2026

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge. Reviewed June 20, 2026, 5:49 AM ET / 09:49 UTC.

Summary
The branch replaces rich Overview provider cards with compact LiteSummary rows and adds focused tests for progress, dashboard omission, and refresh-monitor-resolved live models.

Reproducibility: no. high-confidence live reproduction was established in this read-only review. The linked issue provides macOS 27 sample fragments and current source maps to the hosted Overview row path, but this PR lacks after-fix runtime proof.

Review metrics: 2 noteworthy metrics.

  • Diff Surface: 2 files changed, +341/-24. The code surface is small, but it replaces the central Overview row presentation rather than a model-only helper.
  • Competing Fix Candidates: 2 open PRs. This compact-row branch and the rich-row alternative target the same issue with mutually exclusive UI and performance tradeoffs.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #1674
Summary: This PR is one candidate fix for the open Overview scroll-stutter report, with a sibling PR exploring a mutually exclusive rich-row implementation direction.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🧂 unranked krab
Patch quality: 🐚 platinum hermit
Result: blocked until real behavior proof is added.

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

Rank-up moves:

  • [P1] Add a redacted macOS 27 after-fix scroll profile, recording, terminal sample output, or redacted log with multiple providers enabled.
  • Update the PR body after adding proof so ClawSweeper can re-review automatically; if it does not, ask a maintainer to comment @clawsweeper re-review.
  • [P1] Ask maintainers to choose between this compact-row direction and Keep rich Overview rows but move hover to AppKit #1676 before merge.

Proof guidance:

  • [P1] Needs real behavior proof before merge: The PR body lists tests and checks but explicitly lacks after-fix macOS 27 scroll proof from a real provider-heavy menu setup. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Mantis proof suggestion
A live desktop/menu proof would materially help verify the visible compact Overview rows and the reported scroll behavior. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis visual task: on macOS 27, verify CodexBar Overview shows compact provider rows and capture scrolling with multiple providers enabled.

Risk before merge

  • [P1] The PR still lacks redacted after-fix macOS 27 provider-heavy Overview scroll proof showing that the compact-row change improves the reported stutter in a real menu tracking session.
  • [P1] The compact row intentionally removes rich chart/dashboard detail from the default Overview list, which is a maintainer UX tradeoff rather than a purely mechanical performance fix.
  • [P1] This PR and Keep rich Overview rows but move hover to AppKit #1676 are mutually exclusive implementation directions for the same open issue and should not both land.

Maintainer options:

  1. Profile And Choose One Overview Direction (recommended)
    Capture redacted macOS 27 after-fix scroll proof with multiple providers and decide whether the compact-row UX is the direction to ship.
  2. Prefer The Rich-Row Alternative
    Pause or close this branch if maintainers want to preserve rich Overview rows through the AppKit-boundary approach in Keep rich Overview rows but move hover to AppKit #1676.
  3. Accept The Runtime Proof Gap
    Maintainers can intentionally merge without live scroll proof only if they are willing to own any remaining stutter or Overview information-density regression after release.

Next step before merge

  • [P1] The remaining blocker is contributor-supplied runtime proof plus maintainer choice between two mutually exclusive UI/performance directions, not a narrow automated code repair.

Security
Cleared: The diff only changes local SwiftUI menu rendering code and focused tests; no dependency, workflow, secret, or build-system risk was found.

Review details

Best possible solution:

Land exactly one profiled fix for #1674 after maintainers compare this compact-row approach with #1676 on a provider-heavy macOS 27 setup.

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

No high-confidence live reproduction was established in this read-only review. The linked issue provides macOS 27 sample fragments and current source maps to the hosted Overview row path, but this PR lacks after-fix runtime proof.

Is this the best way to solve the issue?

Unclear. The compact row is a plausible lower-cost implementation and now resolves the live model consistently, but maintainers still need to choose between the information-density tradeoff and the rich-row alternative.

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P2: This is a normal-priority performance/UI fix candidate for a primary menu path with limited blast radius but visible UX impact.
  • merge-risk: 🚨 other: Merging changes the default Overview information density and performance strategy, which green CI cannot validate without live UI profiling and maintainer UX approval.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🧂 unranked krab and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR body lists tests and checks but explicitly lacks after-fix macOS 27 scroll proof from a real provider-heavy menu setup. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed

What I checked:

Likely related people:

  • steipete: Current local blame attributes the checked-out Overview row and row assembly to the v0.37.0 release tree, and recent merged menu compaction work included commits authored or co-authored by steipete. (role: recent area contributor and release integrator; confidence: high; commits: 33a5f4362eab, 8d7f1e53bbd4, 13feb0f38ec6; files: Sources/CodexBar/StatusItemController+MenuTypes.swift, Sources/CodexBar/StatusItemController+Menu.swift, Sources/CodexBar/MenuCardView.swift)
  • joshuavial: Merged work in Move overview highlight with scroll wheel #1436 added the Overview scroll-wheel highlight path and tests central to the reported scroll-event hot path. (role: Overview scroll feature contributor; confidence: high; commits: 3c2d23d1739a, c7a29ba46f1a, 59d148116025; files: Sources/CodexBar/StatusItemController+OverviewScroll.swift, Tests/CodexBarTests/StatusMenuOverviewScrollTests.swift)
  • bcssewl: Merged work in Recycle menu card hosting views and reconcile menu content in place #1394 introduced menu-card hosting view recycling and in-place reconciliation in the same custom menu-card surface. (role: menu-card recycling contributor; confidence: high; commits: f927e8ad90ae, 1c514e377f83; files: Sources/CodexBar/StatusItemController+Menu.swift, Sources/CodexBar/StatusItemController+MenuCardItems.swift, Sources/CodexBar/StatusItemController+MenuCardRecycling.swift)
  • elijahfriedman: Recent merged work touched native menu spacing and hosted menu highlight behavior adjacent to this Overview row performance path. (role: recent adjacent menu contributor; confidence: medium; commits: cbf406032104, 8d7f1e53bbd4; files: Sources/CodexBar/StatusItemController+Menu.swift, Sources/CodexBar/StatusItemController+MenuCardItems.swift, Sources/CodexBar/StatusItemController+MenuPresentation.swift)
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. P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jun 20, 2026
@hhh2210

hhh2210 commented Jun 20, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up after ClawBot review:

  • Fixed the live-model finding: the lite Overview row now derives header, compact summary, and progress tint from the same MenuCardRefreshMonitor-resolved model.
  • Added focused coverage: overview lite summary uses monitor resolved refreshed model proves an already-hosted stale row can resolve refreshed quota/progress without rebuilding the menu.
  • Re-ran locally: swift test --filter OverviewMenuCardRowViewTests, swift build, make check, and git diff --check.

The remaining blocker is still the product/proof question: maintainers need to choose lite rows vs #1676, and an interactive macOS 27 scroll profile would still be useful before merging either direction.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 20, 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.

@hhh2210 hhh2210 marked this pull request as ready for review June 20, 2026 09:45
Copilot AI review requested due to automatic review settings June 20, 2026 09:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR targets the Overview menu scroll stutter by replacing the rich Overview provider row content with a compact LiteSummary, avoiding chart-heavy/inline dashboard SwiftUI views inside the Overview list while still supporting live-refresh behavior via MenuCardRefreshMonitor.

Changes:

  • Introduces OverviewMenuCardRowView.LiteSummary to render a compact, first-metric-focused summary (with optional progress bar).
  • Refactors OverviewMenuCardRowView to avoid rendering the full usage/dashboard sections in Overview rows and to resolve a live model via MenuCardRefreshMonitor.
  • Adds OverviewMenuCardRowViewTests to validate lite summary selection and monitor-resolved updates.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
Tests/CodexBarTests/OverviewMenuCardRowViewTests.swift Adds coverage for lite summary selection, refreshed model resolution through MenuCardRefreshMonitor, and dashboard-only suppression.
Sources/CodexBar/StatusItemController+MenuTypes.swift Refactors Overview rows to a lighter header + LiteSummary + storage line, including live-model resolution support.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +188 to +193
Text(subtitle.text)
.font(.footnote)
.foregroundStyle(self.subtitleColor(for: subtitle.style))
.lineLimit(1)
.truncationMode(.tail)
.layoutPriority(1)
Comment on lines +243 to +253
private func storageLine(_ storageText: String) -> some View {
HStack(alignment: .firstTextBaseline, spacing: 4) {
Text("\(L("Storage")):")
Text(storageText)
.lineLimit(1)
.truncationMode(.tail)
Spacer(minLength: 8)
}
.font(.footnote)
.foregroundStyle(MenuHighlightStyle.secondary(self.isHighlighted))
}

let summary = try #require(row.liteSummary)
#expect(summary.progressPercent == 75)
#expect(summary.progressAccessibilityLabel == "Usage remaining")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. P2 Normal priority bug or improvement with limited blast radius. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants