Skip to content

feat: section layout editor with shared actions and on-demand editing - #130

Merged
enaboapps merged 9 commits into
switchifyapp:mainfrom
OwenMcGirr:codex/section-layout-editor-129
Sep 7, 2026
Merged

feat: section layout editor with shared actions and on-demand editing#130
enaboapps merged 9 commits into
switchifyapp:mainfrom
OwenMcGirr:codex/section-layout-editor-129

Conversation

@OwenMcGirr

@OwenMcGirr OwenMcGirr commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Saving a customized surface previously flattened its sections. This editor preserves section headings, cards, helper text, dynamic status, visibility and order while allowing section-scoped button, row and column editing. Save, Cancel and Reset operate independently; unchanged saves retain responsive defaults. Version 2 section storage preserves grid geometry and deliberately ignores legacy flat layouts.

Empty cells open a searchable action picker. Selecting an action immediately assigns it to the draft without running a PC command. A shared action catalog and typed runtime resolver serve default grids, customized grids and picker metadata. Actions can be reused across sections, with unique IDs within each section, draft operations restricted to Typing, and unsupported runtime actions disabled with explanations. Live Typing retains its existing stream and Enter behavior.

Edit layout beside the Surface selector reveals section edit controls only when needed; Done editing hides them. Stacked Movement sections use the available width so saved grids do not clip unnecessarily at large text sizes. Drag and tap alternatives, accessible modal behavior, safety restrictions and repeat-stop controls remain available.

Closes #129
Closes #131
Closes #132
Closes #133

Based on #128, targeting codex/surface-layout-editor-127. This original-repository draft now includes all follow-ups formerly reviewed in OwenMcGirr#1, #2 and #3. The source branch was fast-forwarded to the existing commit stack, followed by c917de3 to address the consolidated review finding: saved grids now let keyboard taps reach action buttons on the first tap. Keep draft; do not merge.

Validation:

  • Final npm run validate passed: 515 tests in 63 suites, lint, TypeScript, version metadata, 21/21 Expo Doctor checks.
  • Previous-head (f340ca0) validation and clean native Android/iOS builds passed in the fork: https://github.com/OwenMcGirr/switchify-remote/actions/runs/34113710604.
  • Consolidated independent review of c917de3 against PR feat: add reusable surface layout editor #128 head0854203 found no remaining actionable findings after the keyboard-tap fix. Original-repository CI passed on c917de3: validation (1m47s), Android native build (17m13s), iOS native build (19m55s): https://github.com/switchifyapp/switchify-remote/actions/runs/34117727988.
  • Physical OPD2403: section editing gestures, Save/restart/Reset and large-text/rotation checks recorded during section-editor work; edit-mode reveal/hide verified; latest Movement width fix verified with the existing saved three-column grid in landscape at the device's large-text setting. All columns are fully visible. No layout changes or PC input commands were made during the latest width check.
  • Isolated Android and iOS simulator checks covered searchable picker assignment, keyboard behavior, duplicate filtering, modal hierarchy, rotation and large text. Latest final app also launched on iOS simulator. Details remain in the superseded fork PRs.
  • Physical iPhone, VoiceOver, TalkBack, switch scanning and the complete hardware matrix remain unverified; automated and simulator coverage does not replace those checks.

@OwenMcGirr OwenMcGirr changed the title feat: preserve sections when editing surface layouts feat: section layout editor with shared actions and on-demand editing Sep 7, 2026
@enaboapps
enaboapps changed the base branch from codex/surface-layout-editor-127 to main September 7, 2026 12:17
@enaboapps
enaboapps marked this pull request as ready for review September 7, 2026 12:17
@enaboapps
enaboapps merged commit 8483424 into switchifyapp:main Sep 7, 2026
3 checks passed
@greptile-apps

greptile-apps Bot commented Sep 7, 2026

Copy link
Copy Markdown

Greptile Summary

This change adds on-demand editing and persisted layouts for remote-control sections, alongside toolbar controls for entering and leaving edit mode.

Saved layouts were exercised across multiple surfaces and sections, then reloaded through a fresh layout store. Each layout restored exactly, updating one section preserved its siblings, and an invalid stored section was ignored without discarding valid saved layouts. The potential layout-restoration and cross-section-isolation failure was disproved by this executed reload flow.

Confidence Score: 5/5

The verified persistence behavior preserves independent saved layouts across reloads and safely ignores invalid stored entries.

No actionable defects remain after exercising layout saving, fresh-store restoration, section isolation, and invalid persisted-layout handling.

Files Needing Attention: No files need follow-up changes. Layout persistence in src/layouts/LayoutStore.ts received focused runtime coverage.

T-Rex T-Rex Logs

What T-Rex did

  • Ran the focused authored test and confirmed 2/2 passing in 1.473s.
  • Ran the existing LayoutStore test suite and confirmed 9/9 passing in 0.561s.
  • Reviewed LayoutStore.ts to confirm that layouts restore per surface and section only when validSectionLayout accepts each value.
  • Validated that the implementation behavior aligns with the contract-validation notes and the observed test results.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (1): Last reviewed commit: "fix: preserve keyboard taps in customize..." | Re-trigger Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants