Skip to content

iPhone upright: Full Screen, the free room a display for the window; Keep Screen On (5 of 5) - #206

Open
RaffaelFerro wants to merge 5 commits into
Saffsanity:mainfrom
RaffaelFerro:pr-fullscreen
Open

RaffaelFerro wants to merge 5 commits into
Saffsanity:mainfrom
RaffaelFerro:pr-fullscreen

Conversation

@RaffaelFerro

@RaffaelFerro RaffaelFerro commented Oct 21, 2026 •

Copy link
Copy Markdown

Part 5 of 5, on #205. Series: #202 zoom → #203 Aa's Auto → #204 strip stacks → #205 Shortcuts → #206 Full Screen. Until the parts before merge this PR also shows their commits: review the last one.

What

Full Screen on an iPhone held upright, and Keep Screen On.

  • The picture runs from under the notch (the status bar stays) down to the controls, and that room is the viewport: the Mac fits the window to it like a display. When the keyboard comes up, or the controls fold away, the room changes and the window is fitted again (one restart, as a rotation).
  • A handle at the bottom: touch or trackpad (the whole picture becomes a trackpad), fold row 1 and the key row away, leave Full Screen.
  • In through a translucent ⤢ button in the picture's corner, Settings › This iPhone › Full Screen, or a shortcut.
  • The Desktop: "Fill the Screen" (as tall as the room, following the pointer, through the zoom) or "Whole Desktop".
  • A window the Mac cannot fit sits against the picture's top, the black by the controls.
  • Held while Settings is open (as Larger Picture is); the tour leaves Full Screen first.
  • Keep Screen On (Settings): no auto-lock while the stream screen shows.

How

FullScreenLayout (pure, in PhonePortraitLayout.swift), PortraitStreamScreen.fullScreenPhone (row 1 shared with the usual arrangement through row1Buttons), PictureZoom.fill and alignTop, StreamScreen's state and viewport (Full Screen counts untouched Aa as 1×).

Checks

  • phone-portrait 502 checks (Full Screen at every phone size, with and without the keyboard, folded), 83 of 83 mutants.
  • picture-zoom 64 checks (Fill, the top alignment), 25 of 25 mutants.
  • tour 84 of 84, pointer-presence 43 of 43. Built for the simulator and a device.

Tested

iPhone 12 Pro against Sill for Mac 0.5.1, by Raffael: a window fitted to the room, the room shrinking above the keyboard and growing back, the controls, the ⤢ button. Not yet confirmed on the device: trackpad mode, the Desktop's two modes, Keep Screen On.

Not done

A vertical virtual display for the Desktop (the Desktop in Full Screen is a landscape picture filled or fitted). #156 does nearly that on the Mac; it could take this room as its size.

🤖 Generated with Claude Code

RaffaelFerro and others added 5 commits October 21, 2026 11:35
…he middle

PictureZoom (Tests/checks/picture-zoom): the frame magnified 1x to 4x on the device alone, the
pointer held in the picture's middle and stopping at the frame's edges. A tap on Aa toggles it, a
hold shows its ruler above Aa's (the finger moves up to it), a two-finger double tap toggles it on
the picture. Touches, scrolls and the Pencil map back through it; the trackpad slows by it; the
picture holds still while a finger is on it, and a finger's click is followed only after the
double-click time. Each source keeps its zoom. Only on a phone held upright; nothing sent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y default

AutoFit (PictureZoom.swift, Tests/checks/picture-zoom): with Aa untouched the viewport asks for 1x,
and 1.5 s later, if the Mac's list shows the window larger than asked (an app's minimum size, which
left black under it), 0.75x and then 0.5x; the scale that fit is remembered per window and room.
Aa's ruler starts with an Auto detent. This changes what an untouched Aa means: a window picked is
now fitted to the panel (before, it kept its own size).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… Apps drawer

- An app with several windows is one stack in the strip (its front window, cards behind it and
  the count); a tap opens a panel over the strip with its windows, larger and titled
  (StackPanel; StreamClient.openStack); a window chosen there streams and the panel closes. Each
  app's windows stay together (StreamClient.groupedByApp); a drag moves a window inside its app's
  run, or the run whole past another app (StreamClient.moved).
- A phone's strip starts with the Desktop, fixed (WindowStrip.desktopFirst).
- The Apps drawer's first row is the Desktop, in every layout.

Row 1's Desktop button stays for now; the next pull request gives its place to Shortcuts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
QuickShortcuts.swift: a drawer of tiles, opened from row 1 (where the Desktop button was: the
Desktop is the strip's first tile since the last change). A tile presses keys as a keyboard does,
shows an app's next window or opens it, types text (Return after it if asked), or runs one of
Sill's actions (the Desktop, the zoom, Mission Control, App Exposé, Show Desktop, Spotlight). Edit
adds, edits, reorders and deletes; a shortcut can be one app's only, shown while its window
streams. Saved on the device alone (Sill.quickShortcuts), read one by one so a shortcut a later
build cannot read is dropped alone; the editor keeps clear of the keyboard. With Larger Picture
the drawer offers the Desktop too. Nothing new on the wire.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r the window; Keep Screen On

- Full Screen (FullScreenLayout in PhonePortraitLayout.swift, Tests/checks/phone-portrait;
  PortraitStreamScreen.fullScreenPhone): the picture from under the notch to the controls, and that
  room is the viewport, so the Mac fits a window to it (Auto counts as 1x for this), again when the
  keyboard comes up or the controls fold away. A handle at the bottom: touch or trackpad (the whole
  picture a trackpad), fold row 1 and the key row away, leave. In through a translucent button in
  the picture's corner, Settings > This iPhone > Full Screen, or a shortcut. The Desktop fills the
  picture and follows the pointer (PictureZoom.fill), or shows whole. A window the Mac cannot fit
  sits against the picture's top (PictureZoom.alignTop). Held while Settings is open, as Larger
  Picture is; the tour leaves it first.
- Keep Screen On (Settings > This iPhone): no auto-lock while the stream screen shows.

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

This branch has not been deployed

No deployments
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