iPhone Duo: pose-aware single-window shell - #67
Merged
Merged
Conversation
jhen0409
force-pushed
the
iphone-duo-shell
branch
from
September 23, 2026 23:43
9ddccc8 to
ce7d074
Compare
jhen0409
marked this pull request as draft
September 23, 2026 23:43
jhen0409
force-pushed
the
iphone-duo-shell
branch
2 times, most recently
from
September 25, 2026 01:36
a795f32 to
59a5636
Compare
The Shell now reads the foldable iPhone's traits and fold: - Expand rule: a phone splits only while the terminal keeps the key rail's 390 pt TMUX tier beside the 316 pt deck rail (iPad keeps 620). SE-class landscape drops to a single pane as a result. - Fold: a vertical division makes a book (deck page | terminal page, the band is the divider); a horizontal one keeps the terminal above the fold with the key rail on the fold line and the deck or a panel below. The 27.1 simulator reports no division regions, so the hinge status stands in via DuoFoldGeometry. - Rail edge: the UMD follows the system's vertical-bar edge as a 44 pt chip column centred on the clock's glyph line, with a 20 pt source strip over the pane; the key rail stays horizontal. RailFit is one pure rule for the column and the horizontal shell row, dropping chips into ⋯ in priority order. - Inner portrait: the 82 pt status band is content — the rail and the deck header sit on the glyph line inside it, clear of the clock. - Bare corners: the pane owning a 55 pt display corner insets its header row 24 pt (ShellHeaderChrome carries that and the band to every header). - Panel home: a ▤/⌗ panel takes the deck's column (.shellColumn) and ‹ DECK sends it into a tab; continuity keeps the terminal on close and restores the deck rail on open. - Fonts: 13 pt on the inner display, 12 outer, 14 iPad, until A−/A+. docs/agents/iphone-duo.md records the measured facts, the pose matrix and the simulator traps; Tools/build.sh gains the duo platform key.
jhen0409
force-pushed
the
iphone-duo-shell
branch
from
September 25, 2026 02:51
59a5636 to
c7f3e6c
Compare
…e camera While the deck spans the closed display, its + HOST / FAQ / SETTINGS chips move out of the header row into the system's side strip as column chips; the header keeps the title and summary. The shell resolves the rail edge once and hands it to both panes. On the turned-around closed display the column (deck and terminal alike) now hangs from the camera's end.
The shell resolves the side column once (edge and placement) and hands it to the deck and the terminal window, which drop their own edge resolution and the foldable/orientation flags. One frame and centre rule serves both columns; the header's action faces come from one table; the inner-display predicate replaces four repeated size-class checks. Doc and comments state the rules without history.
…s band The laptop pose's deck took the inner-portrait header band and opened an 82 pt gap above its title. The band belongs to the pane at the display's top only. Also restores constraint-pinned pane mounting: autoresizing left the terminal and deck stale after a fold.
The deck's presentation update now waits for the fold spring to settle: tiles rebuilt inside the animation kept in-flight geometry and piled their rows at the origin on a cold launch into the laptop pose. The console deck's header also drops its top inset under the fold.
…the fold The keyboard obstruction is measured against the window's bottom; the laptop pose's pane stops at the fold, so the composer and side column were lifted by a keyboard that only covered the console below.
…splay alone goes bare
…y where it owns a strip
jhen0409
force-pushed
the
iphone-duo-shell
branch
from
September 30, 2026 05:07
857d534 to
9a74ee6
Compare
jhen0409
marked this pull request as ready for review
September 30, 2026 06:17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prepares the single-window Shell for the foldable iPhone (Xcode 27.1 simulator, iOS 27.1 APIs), following the HIG's Designing for iPhone Duo.
UIHingeInteractionstatus drives a synthetic band (DuoFoldGeometry) until hardware reports them.RailFitis one pure, tested rule for the column and the horizontal shell row: chips drop into ⋯ in priority order, A−/A+ leave together, DECK and ⋯ never drop.ShellHeaderChromecarries corner and band to the deck header, the UMD rail and a column panel's header.SidePanelPresentationStyle.shellColumn); ‹ DECK sends it into a tab. Continuity: terminal wins on close, deck rail restored on open.docs/agents/iphone-duo.mdrecords the measured display facts, the pose matrix, the simulator traps (no pose command, outer-display screenshot port, Debug scheme trap, probe env) and what stays open on hardware.Tools/build.shgains theduoplatform key.Verification