Repository navigation
Conversation
The host half of Saffsanity#156 (dr-apple), unchanged, for Immersive on the iPad; if Saffsanity#156 lands first, a rebase drops this commit. Saffsanity#156's device-side full-screen mode (a second tap on Desktop) is not taken: Immersive asks for the display instead. The device's viewport says so (Viewport.deviceDesktop, optional; an older host ignores it and the Mac's own screen fills the picture). The host then makes a virtual display of the device's size (÷ Aa's scale, at 2x) and makes it the main display while the Desktop streams, as Screen Sharing's High Performance mode does: menu bar and Dock move there, and the device shows a whole Mac desktop edge to edge at its own resolution (DeviceDesktop.swift). A rotation or an Aa step makes it again; anything else streaming, the flag off, the last device leaving or Quit gives the main role back and removes it. The catalog never takes one of Sill's virtual displays for the real screen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Settings › This iPad › Immersive (off by default, Sill.immersive, never sent). With it on, a hardware keyboard attached, the iPad sideways, a window or the Desktop streaming, VoiceOver off and Sill filling the screen, the landscape stream screen drops the bar, the inset, the frame, the status bar and the home indicator: the panel is the whole screen, one viewport, and the Mac refits a window as after a rotation. ⌃⌥⌘B or a swipe down from the top edge brings the bar back over the picture without resizing it (no viewport); it hides after 4 s untouched. Anything open over the stream holds it. Exit in the revealed bar turns Immersive off at once. With the Desktop, the viewport asks for a display of the iPad's own size (Viewport.deviceDesktop), so the Desktop fills it with no letterbox; an older host letterboxes as before. The rule is pure (ImmersivePolicy.swift, Tests/checks/immersive, in CI's matrix); the layout keeps one view tree in all three states, so the input view and the hardware keyboard's hold survive every toggle. The touch rig gains the top edge's scenarios. docs/immersive-plan.md has the rule, the open questions and the results; docs/DEVELOPMENT.md the harness's flags. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
From a pass over all the open pull requests (nothing is decided yet): this carries #156's host half as its first commit, and #156's own device half (a second tap on Desktop for full screen) conflicts with Immersive in |
|
The decision on hiding the bar is on #92: a toggle in Settings on the device, and a shake of the device turns it off so the bar comes back. Immersive is the closest to that and would take the shake as its way back beside the key command. |
|
Thanks for the pass over the open PRs, and for the decision on #92. #197 already does that decision in full: the Settings switch, the shake, a button and ⇧⌘B as other ways back (which covers @dr-apple's point there), on iPhone as well as iPad, with or without a keyboard. Immersive is narrower than that, so I'm closing this rather than adding a second way to hide the bar. The one thing #161 had that #197 doesn't is the Desktop edge to edge. On a 4:3 iPad the Mac's 16:9 screen still letterboxes with the bar hidden. That part moves to #312. It's built on #197 and carries @dr-apple's host commit from #156 unchanged and under their name. With Hide Top Bar on, the Desktop streaming and the device sideways, the viewport asks for While I have you, a question: what's the reasoning behind the Keyboard toggle being off by default the first time you open a Mac in Sill? Is off deliberate (keeping the picture larger, say), or just where it started? |
Immersive: on an iPad with a hardware keyboard, held sideways, the stream fills the whole screen and Sill's bar comes back only when you ask for it. It brings the iPhone's Larger Picture idea (#58, #79) to the iPad, which #79 left as it was.
What it does
Sill.immersive) and never sent. iPad only.deviceDesktop, and the host makes a display of the iPad's size the Mac's main display (Desktop in full screen on a display of the device's own size, curtain and sound like High Performance #156'sDeviceDesktop). The Desktop then fills the iPad with no bars. An older host ignores the key and letterboxes as before.The two commits
DeviceDesktop.swift,StreamCoordinator,WindowCatalog,Viewport.deviceDesktop), committed unchanged and under dr-apple's name. Desktop in full screen on a display of the device's own size, curtain and sound like High Performance #156's own second-tap full-screen mode on the device isn't taken, because Immersive covers it. If Desktop in full screen on a display of the device's own size, curtain and sound like High Performance #156 merges first, a rebase drops this commit.ImmersivePolicy.swift, checked inTests/checks/immersiveand in CI's matrix). The landscape layout keeps one view tree in all three states, so toggling never rebuilds the input view or drops the hardware keyboard's hold. The chord is handled through both aUIKeyCommandandpressesBegan, as ESC not passed through? #67's Esc is. The plan is indocs/immersive-plan.md, and the harness flags are indocs/DEVELOPMENT.md.Compatibility
Additive only.
Viewport.deviceDesktopis optional: an older host ignores it, and an older device never sends it. With the switch off, nothing changes for anyone.Tested
Tests/checks/run-all.sh: all 45 passed.immersive: 71 checks, and 37 of 37 mutants caught.swift build -c release. Known warnings only.viewport: 1376×1032 … device desktop, plus main's usual identical repeat. The host made the display once: "Device desktop 1376×1032 pt @2× … main", then "Streaming the device's own desktop … 2752×2064".viewport: 1360×930.SillHost --virtual-display --pairingfrom this branch: the Desktop edge to edge, the bar on demand, and Exit back to the standard layout.Not tested
Rotation and an Aa step while immersed on the Desktop; two devices at once; Stage Manager and Split View on a device; VoiceOver on a device; Sill.app (rather than the CLI host) from this branch. There's still no check for
DeviceDesktop, as in #156. The plan's open questions cover the shortcut, keyboard-only, portrait, and the device desktop taking over the Mac's main display.Happy to change anything. If you'd rather discuss the design in an issue first, I can open one.