Skip to content

fix(app): remember review pane width across sessions, default to smallest#10

Open
stroopc-owner wants to merge 1 commit into
devfrom
remember-review-width
Open

fix(app): remember review pane width across sessions, default to smallest#10
stroopc-owner wants to merge 1 commit into
devfrom
remember-review-width

Conversation

@stroopc-owner

@stroopc-owner stroopc-owner commented Jul 16, 2026

Copy link
Copy Markdown

Issue for this PR

Closes #

Type of change

  • Bug fix

What does this PR do?

The review pane (the changed-files / diff panel) is flex-1, so its width is simply whatever the chat panel leaves. The chat panel's width (layout.session.width) was persisted in the per-server layout store. In embeddings where each session connects to its own server (e.g. Owner's Forge UI, where every task is a separate server), that meant each session started fresh at the 600px default — so on a wide monitor the review pane grabbed nearly the whole remainder — and a width set in one session never carried over to another.

This moves the chat/review split width into the shared global persist scope (Persist.global), so one width is remembered across every session and server. An unset width now resolves to the widest the chat panel is allowed to be (window.innerWidth * 0.45, mirroring the resize-handle max clamp) — i.e. the review pane's smallest state — so it starts minimized on first open instead of maxed out. Terminal-tab isolation stays per-server (unchanged).

Old per-server layout stores that still carry a session.width field are simply ignored now (harmless dead data); the migrate function is untouched.

How did you verify your code works?

  • Added resolveSessionWidth unit tests covering both states (never-set → smallest-review default, and a remembered width) in packages/app/src/context/layout.test.ts.
  • Typechecks cleanly when compiled by the downstream consumer (Owner Forge UI).

Screenshots / recordings

UI change; review pane now opens minimized and keeps a consistent width across sessions.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

…lest

The review pane is flex-1, so its width is whatever the chat panel leaves. The chat width lived in the per-server layout store, so every server (each Forge task connects to its own) started at the 600px default -- the review pane grabbed the rest of a wide monitor -- and a width set in one task never carried to another.

Persist the chat/review split width in the shared global scope instead, and default an unset width to the widest allowed chat panel (the review pane's smallest state) so it starts minimized. Terminal-tab isolation stays per-server.
@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown

This PR doesn't fully meet our contributing guidelines and PR template.

What needs to be fixed:

  • No issue referenced. Please add Closes #<number> linking to the relevant issue.

Please edit this PR description to address the above within 2 hours, or it will be automatically closed.

If you believe this was flagged incorrectly, please let a maintainer know.

@github-actions

Copy link
Copy Markdown

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant