Public Access
Merge branch 'claude/gallant-brahmagupta-1f8244'
Writes down that locking the vault leaves shells running, and shows the count on the unlock screen rather than leaving it to be inferred. Conflict resolution: - ShellFlowTests' fixture keeps main's FakeSshConnectionFactory. The branch added an IdleSshConnectionFactory for exactly what main's fake already does — a shell that is open, silent and never closes on its own — so FakeSshConnections.cs is dropped rather than merged, leaving one fake SSH stack in the suite instead of two that would drift apart. - MainWindowViewModel and TerminalWorkspace: both sides added their own members, so both are kept. - TerminalWorkspaceTests was added by both branches, with the renderer gate on one side and session lifetime on the other. Merged into one class over one set of helpers; the gate tests now use FakeConnectionFactory rather than an NSubstitute stub, since the suite already has the fake. gallant's polling Timeout constant is PollTimeout, which no longer reads as the renderer's. - platform-flags.md keeps main's measured focus section and drops the short "nothing hands the terminal keyboard focus" entry the branch still carried, which that section supersedes. One genuine disagreement between the branches, left visible rather than flattened: this branch measured that a collapsed WebView cannot be typed into and attributed it to a hidden WS_CHILD window being ineligible for keyboard focus, while main's focus work measured Win32 focus still held by that hidden window and added a lock path that moves the keyboard off it. Both results stand; the mechanism sentence now defers to the focus entry, which makes the input barrier something the lock path maintains rather than something the platform guarantees. Full suite green, including the container-backed SSH tests.
This commit is contained in:
@@ -175,12 +175,17 @@ function activate(sessionId) {
|
||||
}
|
||||
}
|
||||
|
||||
// Below this, a pane is not being looked at — it is minimised, dragged to nothing, or the host has
|
||||
// hidden its window. Fitting anyway would be actively harmful rather than merely useless: the fit addon
|
||||
// floors its proposal at 2 columns by 1 row, so a degenerate viewport reflows the *remote* pty to 2x1
|
||||
// through window-change, and the wrapped scrollback that produces cannot be recovered when the pane comes
|
||||
// back. A guard rather than a fix for one caller, because several paths reach here — a minimised window, a
|
||||
// splitter dragged to the edge, and a host that hides the WebView while the vault is locked.
|
||||
// Below this, a pane is not being looked at — it is minimised or dragged to nothing. Fitting anyway would
|
||||
// be actively harmful rather than merely useless: the fit addon floors its proposal at 2 columns by 1 row,
|
||||
// so a degenerate viewport reflows the *remote* pty to 2x1 through window-change, and the wrapped
|
||||
// scrollback that produces cannot be recovered when the pane comes back. A guard rather than a fix for one
|
||||
// caller, because more than one path reaches here: a minimised window, and a splitter dragged to the edge
|
||||
// once splits land.
|
||||
//
|
||||
// It is *not* what protects the vault's lock screen, which an earlier version of this comment claimed.
|
||||
// Collapsing the host's WebView hides a native child window without resizing it, so this page's viewport
|
||||
// does not change, no observer fires and this function is never called — measured with a live shell, and
|
||||
// confirmed by removing the guard and finding the lock cycle equally clean. See docs/platform-flags.md.
|
||||
const MINIMUM_FITTABLE_PIXELS = 40;
|
||||
|
||||
function resize(session, sessionId) {
|
||||
|
||||
Reference in New Issue
Block a user