Skip to content

fix(staged): phone Settings panels scroll under the home indicator; finger-sized controls - #1056

Merged
matt2e merged 2 commits into
mainfrom
mobile-ui
Nov 12, 2026
Merged

matt2e merged 2 commits into
mainfrom
mobile-ui

Conversation

@matt2e

@matt2e matt2e commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Fixes the phone-layout Settings issues found while testing Staged in Mobile Safari and Home Screen mode. CSS only, across seven Svelte files; no desktop effect.

  • Settings panels drop the card inset in the phone layout and move the bottom safe-area inset into the panel body, so General, Keyboard, Doctor and the Repos detail scroll to the screen edge and under the home indicator.
  • The card-removal rule wins on specificity (.settings-body .panel-pad > :global(*)) instead of on bundle order, so lazy-loading a panel cannot regress it.
  • Finger-sized controls on coarse pointers: 44px Settings tabs, 36px Doctor buttons and diff file-tree rows, 32px Mark-as-reviewed toggle.
  • Project-status rows keep a readable name field on narrow screens; the colour swatches wrap under it.

The HTTPS web server changes that were previously part of this PR have been removed from this branch. They live on mobile-web (#709).

Test plan

  • pnpm -s check (0 errors, 0 warnings)
  • Prettier on the changed files
  • Settings layout verified in an iOS 27.2 simulator in Mobile Safari and Home Screen mode

🤖 Generated with Claude Code

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-12T00:27:35.531438Z 01f9188 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2904da979f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/staged/src-tauri/src/web_server.rs Resolved
@matt2e
matt2e marked this pull request as draft November 12, 2026 00:13
matt2e and others added 2 commits November 12, 2026 11:21
…inger-sized controls

On a phone the Settings panels were cards inset 14px from the page with
the bottom safe-area inset added to the page's padding, so each panel's
scrolling body stopped 48px above the screen's bottom edge and a band of
chrome sat under the home indicator instead of content scrolling beneath
it. In the phone layout the card is now dropped (no border, radius or
page padding) and the inset moves into the panel body's own bottom
padding via `--settings-panel-inset-bottom`, so General, Keyboard and
Doctor scroll to the screen's edge and under the indicator. The Repos
panel's repo detail does the same by moving the inset from the panel's
padding to its scroller's.

Touch targets on coarse pointers: the Settings tabs grow from 32px to
44px tall; Doctor's Copy details / Re-run buttons to 36px (matching the
Keyboard panel's shortcut actions); diff file-tree rows from 26px to 36px
and the Mark-as-reviewed toggle from 20px to 32px square, growing within
its row so a tap just outside a row still lands on the neighbouring row.

The project-status rows' name field keeps a readable width on a phone
(flex-basis 160px) so the seven 30px colour swatches wrap under it
instead of squeezing it to about 48px ("In prog", "Polishi").

Verified in an iOS 27.2 simulator (iPhone, software keyboard) in both
Mobile Safari and Home Screen mode. The three originally reported bugs
(double bottom inset in the note chat, opaque inset band while scrolling,
taps above the keyboard not firing) were already fixed on main by #1043
and re-verified there.

Signed-off-by: Matt Toohey <contact@matttoohey.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Matt Toohey <contact@matttoohey.com>
… not bundle order

In the phone layout SettingsPage drops each panel's card with
`.panel-pad > :global(*) { border: 0; border-radius: 0 }`. Scoped, that
selector has specificity (0,2,0). Each panel's root sets its own border
and radius with a rule of the same weight, for example
`.general-settings-panel.svelte-x`, so the two tie and the cascade falls
back to source order. The override only won because the child components'
CSS happens to be emitted before SettingsPage's in the bundle. Anything
that changes that order, such as lazy-loading a panel so its styles load
later, would bring the card's border and radius back on a phone.

Qualify the selector with its `.settings-body` ancestor,
`.settings-body .panel-pad > :global(*)`, so it outranks every panel's
root rule on specificity and no longer depends on emission order. The
rendered result is unchanged today. A comment above the rule records why
the extra ancestor is there.

Signed-off-by: Matt Toohey <contact@matttoohey.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@matt2e matt2e changed the title feat(staged): opt-in HTTPS web server for phone/browser access, with phone Settings fixes fix(staged): phone Settings panels scroll under the home indicator; finger-sized controls Nov 12, 2026
@matt2e
matt2e marked this pull request as ready for review November 12, 2026 00:25
@matt2e
matt2e merged commit b59c537 into main Nov 12, 2026
8 checks passed
@matt2e
matt2e deleted the mobile-ui branch November 12, 2026 00:25

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 01f9188053

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +288 to +290
.panel-pad {
padding: 0;
--settings-panel-inset-bottom: env(safe-area-inset-bottom);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Match the shared phone-layout query

On a coarse-pointer phone whose landscape viewport is wider than 920px but whose device short side is at most 500px, the rest of the app enters mobile mode through MOBILE_LAYOUT_QUERY (viewport.svelte.ts:20-21), but this rule remains gated by the enclosing @media (max-width: 920px). General, Keyboard, and Doctor therefore keep the safe-area inset on the non-scrolling .panel-pad instead of transferring it to the panel body, so the reported home-indicator scrolling fix does not apply on those supported landscape phones; include the shared query's device-width/device-height clauses here.

Useful? React with 👍 / 👎.

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