Skip to content

Add session content width setting - #8222

Merged
lawrencecchen merged 8 commits into
mainfrom
feat-session-content-width
Jul 16, 2026
Merged

lawrencecchen merged 8 commits into
mainfrom
feat-session-content-width

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Jul 16, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • add an off-by-default maximum width for terminal and Agent Session content
  • add left, center, and right placement with center as the default
  • support Settings, cmux.json, schema descriptions, search, and English/Japanese localization

Verification

  • swift test in Packages/macOS/CmuxSettings
  • swift test in Packages/macOS/CmuxSettingsUI
  • ./scripts/check-pbxproj.sh
  • ./scripts/lint-pbxproj-test-wiring.sh
  • tagged cloud build swcap
  • tagged socket preflight on /tmp/cmux-debug-swcap.sock: 640-point centered terminal reported 90 columns and wrapped a long line; Agent Session surface loaded with the same shared layout

The focused app test was added, but the local Xcode runner stalled during tool discovery before compilation. PR checks will run it.


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


Summary by cubic

Adds an optional max content width for Terminal and Agent Session with left/center/right alignment, off by default. Keeps capped content inside full-size panes across SwiftUI and AppKit, and preserves gutter click/scroll so focus and scrolling work when clicking beside the content.

  • New Features

    • Shared width cap and alignment for terminal and agent chat; narrow panes still use all available space.
    • Settings UI: enable toggle, width field (pt), and alignment picker; added search entries; localized labels; schema docs updated across all locales.
    • Config keys: terminal.sessionContentMaxWidth (number 320–2400 pt, step 20; or false to disable, default off, remembers last enabled width) and terminal.sessionContentAlignment (left | center | right, default center).
    • Applied via a new .sessionContentWidth() modifier; AppKit terminals use a shared SessionContentWidthPresentation so overlays stay full-pane and terminal gutters remain interactive (pointer-down focuses, scroll passes through).
  • Migration

    • No breaking changes. To enable in cmux.json:
      • Set terminal.sessionContentMaxWidth to a number (e.g., 980) or false to disable.
      • Optionally set terminal.sessionContentAlignment to left, center, or right.

Written for commit dafd3c3. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features
    • Added Terminal settings to optionally cap session content width (pt) with an enable/disable toggle that remembers the last enabled value.
    • Added left/center/right alignment controls for width-limited session content.
    • Extended settings search, terminal configuration-file support, and schema documentation (including localized descriptions).
  • Bug Fixes
    • Improved terminal/agent panel layout and background rendering so width-capped session content consistently sizes and displays correctly.

@coderabbitai

coderabbitai Bot commented Jul 16, 2026 •

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds terminal session content width and alignment settings, including normalization, JSON persistence, settings UI and search integration, localization, schema updates, tests, and SwiftUI layout application for terminal and agent-session panels.

Changes

Session Content Width

Layer / File(s) Summary
Width and alignment contracts
Packages/macOS/CmuxSettings/Sources/CmuxSettings/{Policies,Values,Keys}/..., Packages/macOS/CmuxSettings/Tests/CmuxSettingsTests/*
Defines width limits, sentinel and remembered-value handling, alignment cases, catalog keys, and policy tests.
JSON settings persistence
Sources/{CmuxSettingsJSONPathSupport.swift,KeyboardShortcutSettingsFileStore*.swift}, web/data/cmux.schema.json, web/messages/*, cmuxTests/*, cmux.xcodeproj/project.pbxproj
Supports JSON paths, defaults, validation, schema descriptions, localized configuration messages, project wiring, and file-store tests.
Settings UI and navigation
Packages/macOS/CmuxSettingsUI/{Sources,Tests}/..., Sources/{SettingsNavigation.swift,SettingsSearchAliases.swift}, Resources/Localizable.xcstrings
Adds width and alignment controls, state bindings, localization, search entries, aliases, anchor mappings, and anchor-resolution coverage.
Panel width and alignment layout
Sources/Panels/{SessionContentWidthModifier.swift,TerminalPanelView.swift,AgentSessionPanelView.swift}
Applies stored width and alignment values to terminal and agent-session content containers.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant SettingsUI
  participant UserDefaults
  participant TerminalPanelView
  participant SessionContentWidthModifier

  SettingsUI->>UserDefaults: store width and alignment
  UserDefaults-->>SessionContentWidthModifier: provide persisted values
  TerminalPanelView->>SessionContentWidthModifier: apply sessionContentWidth()
  SessionContentWidthModifier-->>TerminalPanelView: constrain and align content
Loading

Suggested reviewers: austinywang, azooz2003-bit

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 8.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (24 passed)
Check name Status Explanation
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 New settings types are pure value types; UI consumers are @MainActor SwiftUI views, and store callbacks already hop to MainActor, so no new isolation regression.
Cmux Swift Blocking Runtime ✅ Passed PASS: The only changed file is a test suite, and it contains no semaphores, locks, waits, sleeps, main-queue sync, or delayed dispatch.
Cmux Browser Automation Off-Main ✅ Passed PR only changes session-content width/alignment settings, UI, and docs; no edits to TerminalController or ControlCommandExecutionPolicy/browser automation routing.
Cmux Expensive Synchronous Load ✅ Passed Touched paths only add scalar session-content settings/UI state and bounded cmux.json parsing; no RestorableAgentSessionIndex.load or agent-history parsing on main/UI paths.
Cmux Cache Substitution Correctness ✅ Passed No cache substitution bug: the new remembered width is UI-only, and DefaultsValueModel seeds from store.initialValue then stays event-driven via valueEvents.
Cmux No Hacky Sleeps ✅ Passed PASS: The non-Swift diff is only JSON/localization, schema, and pbxproj wiring; no new JS/TS/shell/build-runtime sleep, timer, polling, or fixed-wait logic appears.
Cmux Algorithmic Complexity ✅ Passed HEAD^..HEAD only adds a test file; no production code in the diff uses scalable collection scans or hot-path sorts/filters.
Cmux Swift Concurrency ✅ Passed No added legacy async patterns: diff has no new DispatchQueue/Combine/completion-handler Task code; existing Task is stored/cancelled and .task is a SwiftUI boundary.
Cmux Swift @Concurrent ✅ Passed No new @concurrent annotations or nonisolated async work were added; the new .task/startObserving usage matches the repo’s standard UI-bound pattern.
Cmux Swift Package Boundaries ✅ Passed Reusable width/alignment policy and enum were added in the CmuxSettings package with tests; app-target edits are limited to UI/persistence glue and panel composition.
Cmux Swiftpm Lockfiles ✅ Passed HEAD changes only a CmuxSettings test; no .gitignore, Package.resolved, Package.swift, or cmux.xcodeproj files were modified, so the lockfile rule isn’t violated.
Cmux Swift Logging ✅ Passed The patch only adds a test case and contains no print/debugPrint/dump/NSLog/Logger changes in production Swift code.
Cmux User-Facing Error Privacy ✅ Passed Diff only adds settings/UI copy and internal invalid-setting logging; no user-facing error/alert text exposes vendors, secrets, raw upstream messages, or ids.
Cmux Full Internationalization ✅ Passed New Swift strings use localized APIs; Localizable.xcstrings adds en/ja entries only; all 20 web routing locales have both new message keys.
Cmux Swiftui State Layout ✅ Passed PASS: The added SwiftUI state follows existing @Observable DefaultsValueModel/@AppStorage patterns; no new ObservableObject/@published or render-time writes, and the GeometryReader is debug-only/ba...
Cmux Architecture Rethink ✅ Passed PASS: the diff adds direct settings/layout code only; no sleeps, polling, locks, asyncAfter, or split-lifecycle workaround appears in the touched files.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed HEAD only changes a test file; no NSWindow/NSPanel/WindowGroup code or cmuxAuxiliaryWindowIdentifiers changes were introduced, so the rule doesn’t apply.
Cmux Source Artifacts ✅ Passed All changed paths are source, tests, config, or localization files; no logs, temp dirs, build output, caches, or scratch artifacts appear in the diff.
Cmux No Test Or Debug Seam In Production Source ✅ Passed PASS: No new test/debug seam was added in production Sources; the only seam-like symbol (reportTerminalViewportGeometryForUITest) pre-existed and wasn't changed.
Cmux No Ambient Global State ✅ Passed PASS: The PR adds constructable types and extension methods; no new top-level free funcs, mutable globals, or new singletons were introduced.
Title check ✅ Passed The title matches the main change: adding session content width support, though it omits the related alignment updates.
Description check ✅ Passed The description covers the change and verification well, but the template's Demo Video, Review Trigger, and Checklist sections are missing.
✨ 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-session-content-width

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.

@greptile-apps

greptile-apps Bot commented Jul 16, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds an optional session content-width cap (off by default) for Terminal and Agent Session panels, with left/center/right alignment. The feature is threaded through both SwiftUI (SessionContentWidthModifier) and direct AppKit hosts (SessionContentWidthPresentation.contentFrame), wired into the settings UI, cmux.json file store, JSON schema, settings search, and all web-message locales.

  • New settings: terminal.sessionContentMaxWidth (number 320–2400 pt or false) and terminal.sessionContentAlignment (left | center | right), both off/center by default.
  • SwiftUI path: sessionContentWidth() view modifier applies two nested frame modifiers to cap and align SwiftUI-hosted content (Agent Session, TextBox overlay).
  • AppKit path: GhosttySurfaceScrollView.setSessionContentWidthPresentation(_:) recomputes sessionContentFrame and applies it to the scroll view, overlays (search, reconnect, link hover), so AppKit-hosted terminals resize within the cap without reflowing pane-level drop/drag/focus UI.

Confidence Score: 5/5

Safe to merge. The SwiftUI and AppKit layout paths are both covered and correctly updated from the same AppStorage source; no correctness gaps were found.

The feature is self-contained and opt-in (off by default). The dual-path design is clean and the two paths stay in sync because both subscribe to the same UserDefaults keys. Portal ownership transitions are handled correctly: the canvas path updates via WorkspaceCanvasHostView → CanvasPaneContentMount, while the non-canvas path updates via TerminalPanelView → GhosttyTerminalView.updateNSView when hostOwnsPortalNow is true. The JSON file-store parsing validates range before clamping, maps false to the sentinel, and logs invalid values without crashing. The xcstrings translation gap (en+ja only, 17 locales uncovered) was flagged in a prior thread and is a known open item.

Resources/Localizable.xcstrings — 12 new UI string keys only have en and ja translations; the remaining 17 app locales will fall back to raw English strings in the new Settings rows.

Important Files Changed

Filename Overview
Sources/Panels/SessionContentWidthModifier.swift New file: defines SessionContentWidthPresentation (shared value type bridging SwiftUI and AppKit) and SessionContentWidthModifier; logic for contentFrame computation and swiftUIAlignment mapping is correct and well-tested.
Packages/macOS/CmuxSettings/Sources/CmuxSettings/Policies/SessionContentWidthSettings.swift New file: stateless policy helpers (clamp, step, editor width); sentinel value (-1.0) correctly threads through configuredMaximumWidth returning nil; no state or global storage.
Sources/GhosttyTerminalView.swift Extracts focusFromPointerDown() from mouseDown for background view callbacks; adds TerminalPaneBackgroundView private class; routes scroll-wheel and pointer-down through it; layout() routes overlays to sessionContentFrame; autoresizingMask removed from overlays (manual layout takes over).
Sources/Canvas/WorkspaceCanvasHostView.swift Reads @AppStorage for session-width settings and passes a single SessionContentWidthPresentation to every pane content; updates propagate via CanvasPaneContentMount.update on any AppStorage change.
Sources/Panels/TerminalPanelView.swift Adds @AppStorage reads and computes SessionContentWidthPresentation for the AppKit path; applies .sessionContentWidth(fillsHeight: false) for SwiftUI layout; background color changed from clear to appearance.contentBackgroundColor for clean edges.
Sources/KeyboardShortcutSettingsFileStore.swift JSON parsing for sessionContentMaxWidth (number in [320,2400] or boolean false) and sessionContentAlignment correctly validates range before clamping, logs invalid values, and maps the false sentinel to noMaximumWidth.
Packages/macOS/CmuxSettingsUI/Sources/CmuxSettingsUI/Sections/TerminalSection.swift Settings UI for toggle+width field+unit and alignment picker; remembered-width pattern correctly preserves last enabled value; bindings correctly separated so editor field updates remembered width while only committing to active width when enabled.
Resources/Localizable.xcstrings Adds 12 new UI string keys but only includes en and ja translations; 17 other supported locales receive no translated entries for any of these keys.
cmuxTests/SessionContentWidthSettingsFileStoreTests.swift Integration and unit tests cover file-store parsing (width clamping, false → sentinel, alignment), disabled presentation pass-through, and all three alignment positions; uses preservingDefaults helper for isolation.
Sources/Panels/AgentSessionPanelView.swift Applies .sessionContentWidth() (fillsHeight: true) and replaces Color.clear background with appearance.contentBackgroundColor for clean edges when content is narrower than pane.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    UserDefaults["UserDefaults\n(sessionContentMaxWidth\nsessionContentAlignment)"]

    subgraph SwiftUI["SwiftUI Path"]
        WCH["WorkspaceCanvasHostView\n@AppStorage reads"]
        TPV["TerminalPanelView\n@AppStorage reads"]
        ASP["AgentSessionPanelView"]
        SCM["SessionContentWidthModifier\n.frame(maxWidth:)\n.frame(maxWidth:infinity, alignment:)"]
    end

    subgraph AppKit["AppKit Path"]
        SCWP["SessionContentWidthPresentation\ncontentFrame(in:bounds)"]
        GSSV["GhosttySurfaceScrollView\nlayout()"]
        ScrollView["scrollView frame"]
        Overlays["Overlays\n(search, reconnect,\nlink hover)"]
        BgView["TerminalPaneBackgroundView\nfull-pane size"]
    end

    subgraph Canvas["Canvas Mount"]
        CPM["CanvasPaneContentMount\nupdate(sessionContentWidthPresentation:)"]
    end

    UserDefaults --> WCH
    UserDefaults --> TPV
    UserDefaults --> SCM

    WCH -->|sessionContentWidthPresentation| CPM
    CPM -->|setSessionContentWidthPresentation| SCWP

    TPV -->|sessionContentWidthPresentation| GSSV
    TPV --> SCM
    ASP --> SCM

    GSSV --> SCWP
    SCWP -->|contentFrame| ScrollView
    SCWP -->|contentFrame| Overlays
    BgView -->|full bounds, pointer/scroll forwarding| GSSV
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    UserDefaults["UserDefaults\n(sessionContentMaxWidth\nsessionContentAlignment)"]

    subgraph SwiftUI["SwiftUI Path"]
        WCH["WorkspaceCanvasHostView\n@AppStorage reads"]
        TPV["TerminalPanelView\n@AppStorage reads"]
        ASP["AgentSessionPanelView"]
        SCM["SessionContentWidthModifier\n.frame(maxWidth:)\n.frame(maxWidth:infinity, alignment:)"]
    end

    subgraph AppKit["AppKit Path"]
        SCWP["SessionContentWidthPresentation\ncontentFrame(in:bounds)"]
        GSSV["GhosttySurfaceScrollView\nlayout()"]
        ScrollView["scrollView frame"]
        Overlays["Overlays\n(search, reconnect,\nlink hover)"]
        BgView["TerminalPaneBackgroundView\nfull-pane size"]
    end

    subgraph Canvas["Canvas Mount"]
        CPM["CanvasPaneContentMount\nupdate(sessionContentWidthPresentation:)"]
    end

    UserDefaults --> WCH
    UserDefaults --> TPV
    UserDefaults --> SCM

    WCH -->|sessionContentWidthPresentation| CPM
    CPM -->|setSessionContentWidthPresentation| SCWP

    TPV -->|sessionContentWidthPresentation| GSSV
    TPV --> SCM
    ASP --> SCM

    GSSV --> SCWP
    SCWP -->|contentFrame| ScrollView
    SCWP -->|contentFrame| Overlays
    BgView -->|full bounds, pointer/scroll forwarding| GSSV
Loading

Reviews (6): Last reviewed commit: "Keep capped terminal gutters interactive" | Re-trigger Greptile

@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: 11

🤖 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 `@web/messages/ar.json`:
- Around line 934-935: Replace the English placeholder descriptions for
sessionContentMaxWidth and sessionContentAlignment with approved Arabic
translations in web/messages/ar.json lines 934-935 and approved Bosnian
translations in web/messages/bs.json lines 934-935, preserving the existing keys
and JSON structure.

In `@web/messages/da.json`:
- Around line 934-935: Replace the English placeholder descriptions for
sessionContentMaxWidth and sessionContentAlignment with reviewed Danish
translations in web/messages/da.json lines 934-935 and reviewed German
translations in web/messages/de.json lines 934-935; preserve the configuration
meaning in each locale.

In `@web/messages/es.json`:
- Around line 934-935: Replace the English placeholder descriptions for
sessionContentMaxWidth and sessionContentAlignment in web/messages/es.json
(lines 934-935) with accurate Spanish translations, and make the same two
replacements in web/messages/fr.json (lines 934-935) using accurate French
translations. Preserve the existing keys and meaning.

In `@web/messages/it.json`:
- Around line 934-935: Translate the sessionContentMaxWidth and
sessionContentAlignment descriptions in the Italian locale into complete,
natural Italian, preserving their configuration meaning and references to
terminal, built-in agent chat, points, full pane width, and horizontal
placement. Do not leave English fallback text.

In `@web/messages/ko.json`:
- Around line 934-935: Replace the English placeholder descriptions for
sessionContentMaxWidth and sessionContentAlignment with accurate Korean
translations in web/messages/ko.json lines 934-935 and Traditional Chinese
translations in web/messages/zh-TW.json lines 934-935, preserving the existing
meaning and JSON structure.

In `@web/messages/no.json`:
- Around line 934-935: Translate the sessionContentMaxWidth and
sessionContentAlignment schema descriptions in every supported locale listed in
web/i18n/routing.ts, including web/messages/no.json lines 934-935 and
web/messages/pl.json lines 935-936. Preserve the descriptions’ meaning and
formatting while replacing the English text with each locale’s translation.

In `@web/messages/pt-BR.json`:
- Around line 934-935: Translate the values of sessionContentMaxWidth and
sessionContentAlignment in the pt-BR catalog into Brazilian Portuguese,
preserving the documented optional point-based width, false-for-full-pane
behavior, and horizontal alignment semantics. Do not retain English fallback
text.

In `@web/messages/ru.json`:
- Around line 934-935: Replace the English descriptions for
sessionContentMaxWidth and sessionContentAlignment with Russian translations in
web/messages/ru.json lines 934-935, and with Thai translations in
web/messages/th.json lines 935-936; preserve the keys and JSON structure.

In `@web/messages/tr.json`:
- Around line 934-935: Translate the new sessionContentMaxWidth and
sessionContentAlignment schema descriptions in the Turkish catalog into natural
Turkish, replacing the English text while preserving the keys and configuration
semantics.

In `@web/messages/uk.json`:
- Around line 934-935: Translate the user-facing descriptions for
sessionContentMaxWidth and sessionContentAlignment in uk.json into Ukrainian,
preserving the meaning of the optional point-based width, the false value using
full pane width, and alignment applying only when max width is enabled. Do not
retain English fallback text.

In `@web/messages/zh-CN.json`:
- Around line 934-935: Translate the descriptions for sessionContentMaxWidth and
sessionContentAlignment in the zh-CN locale into clear Chinese text. Preserve
the existing meanings, including the false/full-pane-width behavior and the
enabled-width alignment context, and do not leave English fallback strings.
🪄 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: 6419b7b4-b6e1-4090-895d-228509e3cd26

📥 Commits

Reviewing files that changed from the base of the PR and between 728839c and 22a83c9.

📒 Files selected for processing (18)
  • web/messages/ar.json
  • web/messages/bs.json
  • web/messages/da.json
  • web/messages/de.json
  • web/messages/es.json
  • web/messages/fr.json
  • web/messages/it.json
  • web/messages/km.json
  • web/messages/ko.json
  • web/messages/no.json
  • web/messages/pl.json
  • web/messages/pt-BR.json
  • web/messages/ru.json
  • web/messages/th.json
  • web/messages/tr.json
  • web/messages/uk.json
  • web/messages/zh-CN.json
  • web/messages/zh-TW.json

Comment thread web/messages/ar.json Outdated
Comment thread web/messages/da.json Outdated
Comment thread web/messages/es.json Outdated
Comment thread web/messages/it.json Outdated
Comment thread web/messages/ko.json Outdated
Comment thread web/messages/pt-BR.json Outdated
Comment thread web/messages/ru.json Outdated
Comment thread web/messages/tr.json Outdated
Comment thread web/messages/uk.json Outdated
Comment thread web/messages/zh-CN.json Outdated
@cursor

cursor Bot commented Jul 16, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@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 `@web/messages/de.json`:
- Line 934: Update the German translation for sessionContentMaxWidth to describe
using the containing pane’s full width when false, replacing “gesamte
Fensterbreite” with “gesamte Breite des Bereichs” or equivalent. Preserve the
rest of the message and its configuration meaning.

In `@web/messages/th.json`:
- Line 935: Update the Thai translation value for sessionContentMaxWidth to
describe using the full pane width rather than the full window width. Replace
the window term in the false-setting explanation with the established pane term
พาเนล, preserving the rest of the translation.
🪄 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: 6db81b19-0b08-417e-9113-94a2aaff4435

📥 Commits

Reviewing files that changed from the base of the PR and between 22a83c9 and ed7ea73.

📒 Files selected for processing (18)
  • web/messages/ar.json
  • web/messages/bs.json
  • web/messages/da.json
  • web/messages/de.json
  • web/messages/es.json
  • web/messages/fr.json
  • web/messages/it.json
  • web/messages/km.json
  • web/messages/ko.json
  • web/messages/no.json
  • web/messages/pl.json
  • web/messages/pt-BR.json
  • web/messages/ru.json
  • web/messages/th.json
  • web/messages/tr.json
  • web/messages/uk.json
  • web/messages/zh-CN.json
  • web/messages/zh-TW.json

Comment thread web/messages/de.json Outdated
Comment thread web/messages/th.json Outdated
Comment thread Resources/Localizable.xcstrings
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