Skip to content

A phone's Shortcuts drawer in row 1's Desktop place (4 of 5) - #205

Open
RaffaelFerro wants to merge 4 commits into
Saffsanity:mainfrom
RaffaelFerro:pr-shortcuts
Open

RaffaelFerro wants to merge 4 commits into
Saffsanity:mainfrom
RaffaelFerro:pr-shortcuts

Conversation

@RaffaelFerro

@RaffaelFerro RaffaelFerro commented Oct 21, 2026 •

Copy link
Copy Markdown

Part 4 of 5, on #204. 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

A Shortcuts drawer on a phone, opened from row 1 where the Desktop button was (the Desktop is the strip's first tile since part 3).

  • A tile presses keys as a keyboard does (⌃⌥⇧⌘ and a key), shows an app's next window or opens it, types text (with Return after it if asked), or runs one of Sill's actions (Desktop, Zoom, Mission Control, App Exposé, Show Desktop, Spotlight).
  • Starters: Copy, Paste, Undo, Switch App, Mission Control, Zoom.
  • Edit: add, edit, reorder, delete; a shortcut can be one app's only, shown while its window streams.
  • Keys and text keep the drawer open (⌘Z ⌘Z…); an app or an action closes it.
  • Saved on the device (Sill.quickShortcuts), decoded one by one, so a shortcut a later build cannot read is dropped alone. The editor keeps its fields above the keyboard. Nothing new on the wire.

How

QuickShortcuts.swift (new): the model, the store, StreamClient.run(_:), the drawer and its editor. The mission control actions go through sendGesture (the Three-Finger Gestures switch and a Mac that takes gestures).

Checks

No pure check for the drawer yet. phone-portrait and tour pass (row 1's enum case renamed shortcuts); built for the simulator and a device.

Tested

Built and installed on an iPhone 12 Pro; the shortcuts themselves not yet tried item by item on the device.

🤖 Generated with Claude Code

RaffaelFerro and others added 4 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>

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