Skip to content

Add customizable browser omnibar font size - #5407

Closed
austinywang wants to merge 3 commits into
mainfrom
feat-omnibar-font-size
Closed

austinywang wants to merge 3 commits into
mainfrom
feat-omnibar-font-size

Conversation

@austinywang

@austinywang austinywang commented Jun 5, 2026 •

Copy link
Copy Markdown
Contributor

The cmux browser omnibar (address bar) had a hardcoded 12pt URL font and fixed-size buttons, with no way to make it bigger. This adds a browser.omnibarFontSize setting that scales the address bar as a unit: the URL field font, the back/forward/reload and toolbar buttons, the secure badge, and the bar height. The tab strip above it is unchanged.

Where to set it:

  • Settings > Browser > Omnibar Font Size (stepper, 10 to 24 pt)
  • cmux.json: browser.omnibarFontSize (validated; out-of-range values are rejected)
  • Config schema, which auto-renders into the docs configuration page

Default is 12, matching the previous hardcoded size, so the omnibar looks identical until you raise it. Changes apply live to open browser panels, including the active field editor while the omnibar is focused.

Implementation mirrors the existing markdown.fontSize setting end to end (catalog key, Settings stepper, cmux.json parse, template, supported paths, search index/aliases, schema, en/ja localization). Two parse tests in KeyboardShortcutSettingsFileStoreStartupTests cover a valid value and out-of-range rejection.

🤖 Generated with Claude Code


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.


Note

Low Risk
UI and preference plumbing only; default 12 preserves prior layout, with validated config parsing and focused tests.

Overview
Adds browser.omnibarFontSize (10–24 pt, default 12) so users can scale the embedded browser address bar as one unit: URL text, back/forward/reload icons, secure badge, toolbar/dev-tools sizing, and bar height. The tab strip is unchanged.

Settings & config: New catalog key, Browser settings stepper, search/anchor wiring, en/ja strings, cmux.json template + parser (clamp/round; invalid/out-of-range rejected), supported JSON paths, and cmux.schema.json.

Runtime: BrowserOmnibarFontSizeSettings plus BrowserPanelView @AppStorage and proportional omnibarScale metrics; OmnibarTextFieldRepresentable takes fontSize and updates the field editor live while focused.

Tests: Settings-file apply/reject tests; omnibar test coordinator updated with fontSize: 12.

Reviewed by Cursor Bugbot for commit 56895af. Bugbot is set up for automated code reviews on this repo. Configure here.


Summary by cubic

Add a customizable browser.omnibarFontSize (10–24 pt, default 12) that scales the browser address bar for better readability. The URL font, nav/reload and toolbar icons, secure badge, and bar height scale together; the tab strip is unchanged.

  • New Features

    • Settings > Browser > Omnibar Font Size stepper; also in cmux.json via browser.omnibarFontSize.
    • Live scaling in the UI via @AppStorage, including while the omnibar is focused.
    • Schema, search index/aliases, curated settings, and en/ja localization updated.
    • cmux.json parsing validates range and rounds; out-of-range values are rejected.
    • Added tests for valid value and out-of-range rejection.
  • Bug Fixes

    • Passed required fontSize to OmnibarTextFieldRepresentable in OmnibarAndToolsTests, and registered the browser.omnibarFontSize row path in SettingsRowAnchorResolutionTests so the curated entry is reachable.

Written for commit 56895af. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Added customizable Omnibar Font Size (10–24 points, default 12); scales address bar, nav buttons, and toolbar icons
  • Localization

    • Added English and Japanese strings and search aliases for the omnibar font size setting
  • Settings & Search

    • Added setting entry to curated defaults, settings index, and navigation anchors; included in generated templates and supported settings list
  • Tests

    • Added parsing/validation tests for the omnibar font size setting

The browser omnibar (address bar) had a hardcoded 12pt URL font and fixed button sizes with no way to enlarge it. Add a browser.omnibarFontSize setting (default 12, range 10-24) that scales the address bar as a unit: the URL field font, the back/forward/reload and toolbar buttons, the secure badge, and the bar height. The tab strip is unaffected.

Wired through the markdown.fontSize precedent: live runtime scaling in BrowserPanelView via @AppStorage, a Settings > Browser stepper, cmux.json parsing with range validation, template plus supported paths, the package catalog key, search index/aliases/curated entries, the config schema, and en/ja localization. Two parse tests cover a valid value and out-of-range rejection.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 5, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Jun 5, 2026 1:26am
cmux-staging Building Building Preview, Comment Jun 5, 2026 1:26am

@coderabbitai

coderabbitai Bot commented Jun 5, 2026 •

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR adds a configurable omnibar font size setting to the browser. Users can adjust the address-bar text and icon sizes between 10–24 points via a stepper control in settings, with proportional scaling applied to related UI metrics throughout the address bar.

Changes

Omnibar font size configuration

Layer / File(s) Summary
Settings schema, keys, and configuration support
Packages/CmuxSettings/Sources/CmuxSettings/Keys/BrowserCatalogSection.swift, web/data/cmux.schema.json, Sources/CmuxSettingsJSONPathSupport.swift, Sources/KeyboardShortcutSettingsFileStore+Template.swift, Packages/CmuxSettingsUI/Sources/CmuxSettingsUI/Navigation/CuratedSettingEntry+Default.swift
Defines the omnibarFontSize setting in schema with bounds 10–24 (default 12), adds catalog key and curated setting entry, registers the JSON path, and includes it in default template generation.
Settings UI control
Packages/CmuxSettingsUI/Sources/CmuxSettingsUI/Sections/BrowserSection.swift
Adds an Omnibar Font Size settings row with a Stepper control (10–24) wired to a DefaultsValueModel state, initialized from the defaults store and positioned after the search suggestions setting.
Localization and settings discovery
Resources/Localizable.xcstrings, Sources/SettingsNavigation.swift, Sources/SettingsSearchAliases.swift
Provides localized display strings and subtitle (English/Japanese), search aliases for discovery, and navigation entries with path-to-anchor mappings for jump-to-setting behavior.
Browser panel font sizing helper
Sources/Panels/BrowserPanel.swift
Introduces BrowserOmnibarFontSizeSettings enum with UserDefaults storage, range clamping, fallback default resolution, value persistence, and scaling-factor computation for proportional UI sizing.
Browser panel view UI scaling
Sources/Panels/BrowserPanelView.swift
Adds @AppStorage font size to BrowserPanelView, computes scaled address-bar metrics (field height, nav/reload icon font), applies scaling to chevron buttons and lock badge, and extends OmnibarTextFieldRepresentable with fontSize property and dynamic NSTextField/NSTextView font updates.
Settings file parsing and storage
Sources/KeyboardShortcutSettingsFileStore.swift
Parses browser.omnibarFontSize from config JSON, rounds numeric values, validates bounds (10–24), and persists valid values to UserDefaults or logs invalid entries.
Parsing validation tests
cmuxTests/KeyboardShortcutSettingsFileStoreStartupTests.swift, Packages/CmuxSettingsUI/Tests/CmuxSettingsUITests/SettingsRowAnchorResolutionTests.swift, cmuxTests/OmnibarAndToolsTests.swift
Tests verify that valid omnibarFontSize values are parsed and persisted to UserDefaults, out-of-range values are rejected, row anchor resolution includes the new path, and Omnibar tests pass an explicit fontSize into harnesses.

Sequence Diagram (high-level):

sequenceDiagram
  participant SettingsUI
  participant BrowserPanelView
  participant BrowserOmnibarFontSizeSettings
  participant OmnibarTextFieldRepresentable
  participant NSTextField
  SettingsUI->>BrowserPanelView: user adjusts omnibar font size (Stepper)
  BrowserPanelView->>BrowserOmnibarFontSizeSettings: setDefault(pointSize)
  BrowserOmnibarFontSizeSettings-->>BrowserPanelView: persisted pointSize / scale(forPointSize:)
  BrowserPanelView->>OmnibarTextFieldRepresentable: pass fontSize
  OmnibarTextFieldRepresentable->>NSTextField: initialize/update font
Loading

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs:

  • manaflow-ai/cmux#5012: Related previous work on settings search/index and row anchoring that this PR extends with a new settings path.

"In the config garden fair,
a rabbit tweaks the font with care—
ten to twenty-four, bold and neat,
the omnibar now fits snug and sweet." 🐰✨


Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error, 1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Cmux Full Internationalization ❌ Error New Localizable.xcstrings entries have only en/ja translations, but catalog supports 18 locales including ar, bs, da, de, es, fr, it, km, ko, nb, pl, pt-BR, ru, th, tr, uk. Add translations for all 18 supported locales to settings.browser.omnibarFontSize, settings.browser.omnibarFontSize.subtitle, and settings.search.alias.setting.browser.omnibar-font-size keys.
Docstring Coverage ⚠️ Warning Docstring coverage is 28.57% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The PR description is comprehensive and covers the what, why, and implementation details, but lacks the structured sections required by the template. Reorganize the description to match the template structure: add explicit 'Summary' and 'Testing' sections with clear subsections, include a demo video link (even if N/A), and complete the checklist with checkmarks indicating local testing, test additions, and bot review requests.
✅ Passed checks (15 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Add customizable browser omnibar font size' accurately and concisely summarizes the main change—adding a new user-configurable setting for omnibar font scaling. It is specific, clear, and directly reflects the primary objective of the changeset.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Swift Actor Isolation ✅ Passed BrowserOmnibarFontSizeSettings follows the established pattern of 8 existing unmarked Settings enums in BrowserPanel.swift, used only in MainActor contexts. No new actor isolation mistakes introduced.
Cmux Swift Blocking Runtime ✅ Passed No blocking patterns (semaphores, locks, sleeps, main-queue sync) found in production Swift code. Changes add settings definitions, UI bindings, and utility functions without blocking primitives.
Cmux No Hacky Sleeps ✅ Passed This PR contains only Swift code and config files; the check applies only to TypeScript, JavaScript, shell, and non-Swift build/runtime scripts, which are out of scope.
Cmux Algorithmic Complexity ✅ Passed PR adds a bounded scalar setting (omnibar font size, 10-24 pt) with only O(1) operations: arithmetic, UserDefaults lookups, and simple UI binding. No collection iterations in hot paths.
Cmux Swift Concurrency ✅ Passed New synchronous code only: BrowserOmnibarFontSizeSettings enum and @AppStorage-backed computed properties. No DispatchQueue, Combine, completion-handlers, or fire-and-forget Tasks.
Cmux Swift @Concurrent ✅ Passed PR adds only synchronous code: lightweight BrowserOmnibarFontSizeSettings enum, synchronous UIKit updates, and settings parsing. No nonisolated async or @concurrent violations found.
Cmux Swift File And Package Boundaries ✅ Passed Small additions (<250 lines) to pre-existing oversized files; BrowserOmnibarFontSizeSettings follows established Settings helper pattern; UI/AppKit glue code appropriately in app target.
Cmux Swift Logging ✅ Passed PR adds omnibar font size feature with no Swift logging violations: no print/NSLog/debugPrint/dump in new code, no file logging, and no MainActor Logger issues detected.
Cmux User-Facing Error Privacy ✅ Passed PR adds omnibar font size setting with product-appropriate user-facing strings. No upstream vendor names, credentials, tokens, environment variables, or sensitive details exposed.
Cmux Swiftui State Layout ✅ Passed BrowserSection uses @Observable+@State (modern), matching existing settings; BrowserPanelView uses @AppStorage; AppKit bridge NSViewRepresentable properly handles updateNSView.
Cmux Architecture Rethink ✅ Passed Feature follows established UserDefaults/@AppStorage pattern with single source of truth, no timing repairs, well-defined invariants (10-24pt clamped range), and deterministic scaling.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PR adds omnibar font size setting with UI scaling in BrowserPanelView; does not create new NSWindow, NSPanel, NSWindowController, or SwiftUI Window/WindowGroup.
✨ 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 feat-omnibar-font-size

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.

@cursor cursor 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.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 3c13ac7. Configure here.

Comment thread Sources/Panels/BrowserPanelView.swift
@greptile-apps

greptile-apps Bot commented Jun 5, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds a browser.omnibarFontSize setting (10–24 pt, default 12) that scales the browser address bar as a unit: URL field font, back/forward/reload icons, toolbar buttons, secure badge, and bar height. The tab strip is unchanged and the default value preserves the prior hardcoded 12 pt layout.

  • Feature wiring follows the markdown.fontSize pattern end-to-end: catalog key, Settings stepper, cmux.json parsing with range validation and rounding, @AppStorage-driven live SwiftUI updates (including the active field editor while the omnibar is focused), schema, search index/aliases, curated settings, en/ja localization.
  • Validation in KeyboardShortcutSettingsFileStore rejects out-of-range values and logs an invalid-key warning; the JSON schema similarly enforces minimum: 10 / maximum: 24.
  • Tests cover a valid value being applied and an out-of-range value being rejected, plus the OmnibarAndToolsTests build fix for the new required fontSize parameter.

Confidence Score: 5/5

Safe to merge. Default 12 pt preserves the existing hardcoded layout; all new code paths are gated on a user-configured value in the validated 10–24 pt range.

The change is a well-scoped display preference that follows an established pattern end-to-end. The parser validates and rejects out-of-range values before they reach UserDefaults; @AppStorage provides reactive SwiftUI updates; and the live field-editor update in updateNSView is correct AppKit practice. Localization is complete for all supported locales (en and ja). No actor isolation, concurrency, or state mutation issues were introduced.

No files require special attention.

Important Files Changed

Filename Overview
Sources/Panels/BrowserPanelView.swift Adds @AppStorage for omnibarFontSizePointsStorage; converts four layout constants to computed vars driven by omnibarScale; adds omnibarFontSize/omnibarScale/omnibarFieldHeight/omnibarNavIconSize helpers; passes fontSize to OmnibarTextFieldRepresentable and updates the field editor live in updateNSView. Implementation is correct and consistent with existing AppStorage patterns.
Sources/Panels/BrowserPanel.swift Adds BrowserOmnibarFontSizeSettings enum with key, default/min/max/step constants, clamp, scale, resolvedDefault, and setDefault helpers. Well-structured utility functions.
Sources/KeyboardShortcutSettingsFileStore.swift Parses browser.omnibarFontSize from cmux.json as a Double (tolerating 12.0), rounds to Int, validates range against BrowserOmnibarFontSizeSettings constants, and logs invalid for bad type or out-of-range values.
Packages/CmuxSettingsUI/Sources/CmuxSettingsUI/Sections/BrowserSection.swift Adds @State DefaultsValueModel for omnibarFontSize and a Stepper control with hardcoded range 10...24.
Resources/Localizable.xcstrings Adds en and ja translations for settings.browser.omnibarFontSize, its subtitle, and the search alias string. Catalog only supports en and ja, so localization is complete.
web/data/cmux.schema.json Adds omnibarFontSize as integer (10–24, default 12) in the browser section.
cmuxTests/KeyboardShortcutSettingsFileStoreStartupTests.swift Adds two new tests: valid value 18 is stored, out-of-range 999 is rejected leaving the key absent.

Reviews (3): Last reviewed commit: "Register omnibar-font-size row path in S..." | Re-trigger Greptile

Comment on lines +168 to +171
Stepper(
value: Binding(get: { omnibarFontSize.current }, set: { omnibarFontSize.set($0) }),
in: 10...24
) {

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.

P2 Stepper range is hardcoded as 10...24 rather than derived from BrowserOmnibarFontSizeSettings constants. The markdown analog (MarkdownTypographyControl) can reference MarkdownFontSizeSettings.minimumPointSize...MarkdownFontSizeSettings.maximumPointSize directly because both files live in the app target. Here the package boundary prevents that, so if the min/max constants change in BrowserOmnibarFontSizeSettings the stepper silently drifts — the UI would accept values the runtime rejects (or vice versa). Consider mirroring the constants on the BrowserCatalogSection DefaultsKey (or a small extension) so the package owns the authoritative bounds that both this stepper and the schema reference.

Suggested change
Stepper(
value: Binding(get: { omnibarFontSize.current }, set: { omnibarFontSize.set($0) }),
in: 10...24
) {
Stepper(
value: Binding(get: { omnibarFontSize.current }, set: { omnibarFontSize.set($0) }),
in: 10...24 // Must stay in sync with BrowserOmnibarFontSizeSettings.minimumPointSize/maximumPointSize
) {

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Packages/CmuxSettings/Sources/CmuxSettings/Keys/BrowserCatalogSection.swift`:
- Around line 29-36: The DefaultsKey declaration omnibarFontSize currently uses
a dotted userDefaultsKey matching its id; change the userDefaultsKey value to
the camelCase form "browserOmnibarFontSize" to match the naming pattern used by
other keys in this file (e.g., browserSearchEngine,
browserCustomSearchEngineName) and update any runtime readers (such as
BrowserOmnibarFontSizeSettings or browser panel consumers) to read the camelCase
key if they are still expecting the dotted form.

In `@web/data/cmux.schema.json`:
- Around line 949-955: Add a localized descriptionKey for the omnibarFontSize
schema entry: in the omnibarFontSize object (key "omnibarFontSize") add a
"descriptionKey" property (for example "browser.omnibarFontSize.description")
instead of inline English, and then add that key and its localized text to the
web messages JSON for all supported locales so the schema description is served
via localization rather than hardcoded English.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 111df509-3542-41bc-a2d8-4e39022a1ad0

📥 Commits

Reviewing files that changed from the base of the PR and between 45603c6 and 3c13ac7.

📒 Files selected for processing (13)
  • Packages/CmuxSettings/Sources/CmuxSettings/Keys/BrowserCatalogSection.swift
  • Packages/CmuxSettingsUI/Sources/CmuxSettingsUI/Navigation/CuratedSettingEntry+Default.swift
  • Packages/CmuxSettingsUI/Sources/CmuxSettingsUI/Sections/BrowserSection.swift
  • Resources/Localizable.xcstrings
  • Sources/CmuxSettingsJSONPathSupport.swift
  • Sources/KeyboardShortcutSettingsFileStore+Template.swift
  • Sources/KeyboardShortcutSettingsFileStore.swift
  • Sources/Panels/BrowserPanel.swift
  • Sources/Panels/BrowserPanelView.swift
  • Sources/SettingsNavigation.swift
  • Sources/SettingsSearchAliases.swift
  • cmuxTests/KeyboardShortcutSettingsFileStoreStartupTests.swift
  • web/data/cmux.schema.json

Comment on lines +29 to +36
/// Font size, in points, for the omnibar (address bar) URL field,
/// navigation buttons, and toolbar icons. The tab strip is unaffected.
/// Mirrors the app-target `BrowserOmnibarFontSizeSettings` (default 12).
public let omnibarFontSize = DefaultsKey<Int>(
id: "browser.omnibarFontSize",
defaultValue: 12,
userDefaultsKey: "browser.omnibarFontSize"
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Inconsistent userDefaultsKey naming pattern.

All other browser settings in this file use camelCase userDefaultsKey values without the browser. prefix:

  • Line 8: userDefaultsKey: "browserSearchEngine" (for id: "browser.defaultSearchEngine")
  • Line 14: userDefaultsKey: "browserCustomSearchEngineName"
  • Line 26: userDefaultsKey: "browserSearchSuggestionsEnabled"

The new omnibarFontSize setting uses userDefaultsKey: "browser.omnibarFontSize" (dotted, same as the id), breaking the established pattern. To maintain consistency with the rest of this file, the key should be "browserOmnibarFontSize" (camelCase, no prefix).

Verify that BrowserOmnibarFontSizeSettings and other runtime readers in the browser panel layer expect the camelCase key.

Proposed fix
     public let omnibarFontSize = DefaultsKey<Int>(
         id: "browser.omnibarFontSize",
         defaultValue: 12,
-        userDefaultsKey: "browser.omnibarFontSize"
+        userDefaultsKey: "browserOmnibarFontSize"
     )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Packages/CmuxSettings/Sources/CmuxSettings/Keys/BrowserCatalogSection.swift`
around lines 29 - 36, The DefaultsKey declaration omnibarFontSize currently uses
a dotted userDefaultsKey matching its id; change the userDefaultsKey value to
the camelCase form "browserOmnibarFontSize" to match the naming pattern used by
other keys in this file (e.g., browserSearchEngine,
browserCustomSearchEngineName) and update any runtime readers (such as
BrowserOmnibarFontSizeSettings or browser panel consumers) to read the camelCase
key if they are still expecting the dotted form.

Comment thread web/data/cmux.schema.json
Comment on lines +949 to +955
"omnibarFontSize": {
"type": "integer",
"minimum": 10,
"maximum": 24,
"default": 12,
"description": "Font size, in points, for the browser omnibar (address bar): the URL field, navigation buttons, and toolbar icons. The tab strip is unaffected."
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a localized descriptionKey for browser.omnibarFontSize.

This introduces new user-facing schema copy as inline English only. For web/data/**/*.json, new schema descriptions should be keyed so all supported web locales can translate them consistently.

Suggested patch
         "omnibarFontSize": {
           "type": "integer",
           "minimum": 10,
           "maximum": 24,
           "default": 12,
-          "description": "Font size, in points, for the browser omnibar (address bar): the URL field, navigation buttons, and toolbar icons. The tab strip is unaffected."
+          "descriptionKey": "schemaDescriptions.browser.omnibarFontSize",
+          "description": "Font size, in points, for the browser omnibar (address bar): the URL field, navigation buttons, and toolbar icons. The tab strip is unaffected."
         },

As per coding guidelines, web/data/**/*.json user-facing schema text must have locale coverage for all supported locales. Based on learnings, descriptionKey in schema is web-doc metadata and should be localized via web messages, not xcstrings.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/data/cmux.schema.json` around lines 949 - 955, Add a localized
descriptionKey for the omnibarFontSize schema entry: in the omnibarFontSize
object (key "omnibarFontSize") add a "descriptionKey" property (for example
"browser.omnibarFontSize.description") instead of inline English, and then add
that key and its localized text to the web messages JSON for all supported
locales so the schema description is served via localization rather than
hardcoded English.

Sources: Coding guidelines, Learnings

@cubic-dev-ai cubic-dev-ai 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.

1 issue found across 13 files

You’re at about 99% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="Sources/Panels/BrowserPanelView.swift">

<violation number="1" location="Sources/Panels/BrowserPanelView.swift:501">
P2: The in-progress downloading label in the address bar still uses a fixed font size and doesn't scale with `omnibarScale`, unlike all other omnibar elements (nav icons, secure badge, URL field). At larger omnibar font sizes the download label will appear disproportionately small.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

@@ -436,6 +436,7 @@ struct BrowserPanelView: View {
@AppStorage(BrowserImportHintSettings.variantKey) private var browserImportHintVariantRaw = BrowserImportHintSettings.defaultVariant.rawValue

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: The in-progress downloading label in the address bar still uses a fixed font size and doesn't scale with omnibarScale, unlike all other omnibar elements (nav icons, secure badge, URL field). At larger omnibar font sizes the download label will appear disproportionately small.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At Sources/Panels/BrowserPanelView.swift, line 501:

<comment>The in-progress downloading label in the address bar still uses a fixed font size and doesn't scale with `omnibarScale`, unlike all other omnibar elements (nav icons, secure badge, URL field). At larger omnibar font sizes the download label will appear disproportionately small.</comment>

<file context>
@@ -473,10 +474,31 @@ struct BrowserPanelView: View {
+    private var omnibarFieldHeight: CGFloat { (18 * omnibarScale).rounded() }
+
+    /// Font size for the back/forward/reload chevrons, scaled from 12pt.
+    private var omnibarNavIconSize: CGFloat { 12 * omnibarScale }
 
     init(
</file context>

The new required fontSize parameter broke the test target's direct construction of OmnibarTextFieldRepresentable (reload.sh only builds the cmux scheme, so the cmuxTests compile error only surfaced in CI).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
everyCuratedSettingEntryIsReachable() requires each curated setting entry to be scroll/highlight reachable via a row whose configurationReview path resolves to it. The new browser.omnibarFontSize row needs its path in the test's rowConfigPaths mirror.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
Preview – cmux — 56895af2 Deployed Jun 5, 2026 by vercel[bot]
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