Skip to content

Fix: settings touch states, text fields and drag feedback - #558

Merged
SandObserver merged 2 commits into
mainfrom
fix/settings-touch-and-input
Oct 26, 2026
Merged

SandObserver merged 2 commits into
mainfrom
fix/settings-touch-and-input

Conversation

@SandObserver

@SandObserver SandObserver commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Gate Settings :hover rules behind (hover:hover) and (pointer:fine), set a transparent tap highlight on html, and give every tappable Settings control an :active state (fill, or opacity for filled and text-only controls).
  • Size the header key and value fields at 17px on phones (13px made iOS zoom on focus).
  • Add autocapitalize="none" autocorrect="off" spellcheck="false" to address, host, username, token and header fields, to widget text fields whose key ends in url, href, user, username, id or profile, and to manifest fields marked "plain": true. Mark the System Summary disk name fields plain.
  • Let the edit-page title wrap (min-width:0, overflow-wrap:anywhere) so Delete and Save stay on screen for long unbroken names.
  • Show list addresses left to right (.rmt-url) in right-to-left pages.
  • Drag: move the floating row by transform, lift it on touch only after 8px of movement, glide it into its new row (or back on a refused drop) over --t-reveal, and redraw the list before the save returns on a touch drop.
  • Hold a list redraw requested during a touch or mouse drag until the drag ends; end a touch drag cleanly on lostpointercapture or when its handle leaves the page; never settle the floating row onto itself.
  • Rotate the folder chevron from its previous angle after the list redraws.
  • Stretch the switch knob on press with transform only, on the reveal curve.
  • Open menus from their trigger (opacity and scale, 180ms) when opened by pointer; keyboard opens stay instant. Fade and scale confirm dialogs in over 200ms.

Testing
All green, including e2e. Added tests for hover gating, press states on every tappable control, field sizes and input attributes, plain manifest fields, drag hysteresis, settle, held redraws and lost capture, chevron rotation, menu and dialog entrance.

Changelog

Added

  • Let widget text fields opt out of capitalisation and autocorrect with "plain": true.

Changed

  • Show press feedback on Settings rows, buttons and the tab bar.
  • Glide dragged rows into place.
  • Open menus and dialogs with a short animation.

Fixed

  • Stop Settings rows and buttons from staying highlighted after a tap.
  • Stop iOS from zooming into header fields.
  • Stop iOS from capitalising addresses, usernames and System Summary disk names.
  • Keep Save on screen when an app has a long name.
  • Show addresses from their start in right-to-left languages.
  • Stop a dragged row from sticking on screen when the list redraws during the drag.

Checklist

  • Stays within the project constraints: one container, no runtime dependencies, no build step (see CONTRIBUTING.md).
  • Tests added or updated for new logic, and the full suite, lint, and typechecks pass.
  • Docs updated if behavior or configuration changed.

@SandObserver SandObserver added the ui/ux UI, UX, and accessibility only fix label Oct 26, 2026
- Hold a list redraw requested during a drag until the drag ends.
- End a touch drag cleanly when it loses pointer capture or its handle leaves the page.
- Never settle the floating row onto itself after a drop into a collapsed folder.
- Add :active press states to every tappable Settings control.
- Let a widget field declare "plain": true; mark the System Summary disk name fields.
@SandObserver
SandObserver merged commit 317fa42 into main Oct 26, 2026
8 checks passed
@SandObserver
SandObserver deleted the fix/settings-touch-and-input branch October 26, 2026 03:14
stackyard-release Bot pushed a commit that referenced this pull request Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ui/ux UI, UX, and accessibility only fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant