Skip to content

Fix widget text invisible when desktop dimming enabled - #17

Merged
gmr merged 2 commits into
mainfrom
fix/widget-dimming-visibility
Mar 30, 2026
Merged

gmr merged 2 commits into
mainfrom
fix/widget-dimming-visibility

Conversation

@gmr

@gmr gmr commented Mar 30, 2026

Copy link
Copy Markdown
Owner

Summary

  • When "Dim widgets on desktop" is enabled in macOS settings, all widget text becomes invisible while shapes/icons remain visible
  • The system's dimming multiplier pushes .foregroundStyle(.secondary) and lower hierarchical styles below the visibility threshold in vibrant rendering mode
  • Adds a widgetForeground helper that uses .primary with explicit opacity in vibrant mode, preserving original styles in full-color mode (sidebar)

Test plan

  • Enable "Dim widgets on desktop" in System Settings > Desktop & Dock
  • Verify session list widget shows project names, state labels, and timestamps when dimmed
  • Verify productivity widget shows title, percentages, legend text, and stats footer when dimmed
  • Verify score widget shows score number label, percentages, and empty state text when dimmed
  • Verify widgets still look correct with dimming set to "Never"
  • Verify widgets look correct in Notification Center sidebar (full-color mode)

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

Summary by CodeRabbit

  • Chores

    • Removed external error tracking service integration from CI/CD workflows and the application.
  • Style

    • Enhanced widget color rendering and text styling to improve visual consistency and appearance across productivity, session status, and score widgets in different rendering modes.

gmr and others added 2 commits March 26, 2026 16:26
Removes the rollbar-apple SPM dependency, RollbarNotifier import and
setup in AppDelegate, Info.plist token, pbxproj package references,
Package.resolved pin, CI/CD ROLLBAR_ACCESS_TOKEN injection, and the
release workflow steps for dSYM upload and deploy notification.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
macOS desktop widgets render in vibrant mode. When "Dim widgets on
desktop" is enabled, the system applies an additional alpha multiplier.
Hierarchical styles like .secondary/.tertiary already have reduced
opacity in vibrant mode, so after the dimming multiplier they fall to
near-zero contrast and become invisible — only shapes and SF Symbols
remain visible.

Add a widgetForeground helper that substitutes .primary with explicit
opacity values in vibrant mode, keeping text readable in both dimmed
and un-dimmed states while preserving the original hierarchical styles
in full-color mode (sidebar/Notification Center).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Mar 30, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bcec501c-a0ed-497c-b9c7-102d8c9dcf57

📥 Commits

Reviewing files that changed from the base of the PR and between 0b783fa and bae8aca.

📒 Files selected for processing (10)
  • .github/workflows/release.yml
  • .github/workflows/xcode.yml
  • CLAUDE.md
  • Claude Status.xcodeproj/project.pbxproj
  • Claude Status.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
  • Claude Status/AppDelegate.swift
  • Claude Status/Info.plist
  • Claude StatusWidget/Claude_StatusWidgetEntryView.swift
  • Claude StatusWidget/ProductivityWidgetView.swift
  • Claude StatusWidget/ScoreWidgetView.swift
💤 Files with no reviewable changes (4)
  • Claude Status/Info.plist
  • .github/workflows/release.yml
  • Claude Status.xcodeproj/project.pbxproj
  • Claude Status/AppDelegate.swift

📝 Walkthrough

Walkthrough

Removes Rollbar error tracking integration from the project across CI workflows, project configuration, and application code. Additionally, updates widget views with environment-aware foreground styling to improve visual consistency across different widget rendering modes.

Changes

Cohort / File(s) Summary
Rollbar Integration Removal
.github/workflows/release.yml, .github/workflows/xcode.yml, Claude Status.xcodeproj/project.pbxproj, Claude Status.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved, Claude Status/AppDelegate.swift, Claude Status/Info.plist, CLAUDE.md
Removed Rollbar error tracking service integration: eliminated SPM dependency (rollbar-apple), environment variables from CI/release workflows, Info.plist token configuration, and AppDelegate setup code; deleted dSYM upload and deploy notification workflow steps.
Widget Rendering Mode Improvements
Claude StatusWidget/Claude_StatusWidgetEntryView.swift, Claude StatusWidget/ProductivityWidgetView.swift, Claude StatusWidget/ScoreWidgetView.swift
Added environment-aware widgetForeground() extension method to handle foreground styling based on widget rendering mode, replacing direct .foregroundStyle() calls with conditional logic for full-color versus limited-color rendering.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Add Rollbar error monitoring #6: Adds the Rollbar integration that this PR removes—this change directly reverses the dependency, configuration, and setup introduced in that PR.

Poem

🐰 Rollbar's gone! No more we fear,
Errors vanished, crystal clear,
Widgets paint in colors bright,
Full and limited—what a sight!
Hopping through the code so free,
Cleaner code is all we see!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the primary change: addressing widget text visibility when desktop dimming is enabled through a widgetForeground helper that uses primary color with opacity in vibrant mode.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/widget-dimming-visibility

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gmr
gmr merged commit 155f2fa into main Mar 30, 2026
4 checks passed
@gmr
gmr deleted the fix/widget-dimming-visibility branch March 30, 2026 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant