Skip to content

feat(ios): Face ID lock, Connection Info tab, and HIG fixes#1162

Merged
datlechin merged 1 commit into
mainfrom
refactor/mobile-p0-hig-fixes
May 9, 2026
Merged

feat(ios): Face ID lock, Connection Info tab, and HIG fixes#1162
datlechin merged 1 commit into
mainfrom
refactor/mobile-p0-hig-fixes

Conversation

@datlechin
Copy link
Copy Markdown
Member

Summary

Mobile P0 HIG sweep — addresses 4 high-priority issues found in the iOS audit:

  • Face ID / Touch ID / Optic ID lock with cold-launch protection and idle timeout (1, 5, 15, or 60 minutes), opt-in from Settings. Uses LAContext with .deviceOwnerAuthentication so the system passcode fallback is always available.
  • Connection Info tab replaces the per-connection Settings tab (which was a duplicate of the global Settings sheet). Shows host, SSL, SSH tunnel, active database, schema, table/database/schema counts, and live connection status. Edit moves to a navigation bar pencil icon so the iOS 26 floating tab bar never covers it.
  • MetadataBadge component with dynamicTypeSize(...AX1) cap — column type pills, primary key markers, row counts, and index badges no longer break layouts at the largest accessibility sizes. Replaces 7 inline pill copies across 4 views.
  • SQL editor keyboard accessory uses UIInputView(inputViewStyle: .keyboard) instead of the deprecated UIScreen.main.bounds.width measurement. The toolbar now self-sizes via autoresizingMask and inherits keyboard vibrancy automatically.

Plus a few drive-by fixes that surfaced once the type-checker could finish:

  • RowDetailView toolbar share/copy menu extracted to a @ViewBuilder property to dodge a Swift type-check timeout
  • RowDetailView ForEach migrated from IndexedRow.wrap(rows) (type mismatch on [Row]) to rows.indices (length is invariant in this view)
  • ConnectionInfoView Stats section sized correctly by replacing LabeledContent { @ViewBuilder Label } with a flat HStack

Test plan

  • Settings → toggle "Require Face ID" → lock screen appears at next cold launch and after configured idle timeout
  • Lock screen accepts Face ID; cancel falls back to passcode; failure shows "Try Again"
  • Connection Info tab (Fix data grid undo/redo and multi-row deletion bugs #4) shows correct values for MySQL, PostgreSQL (with schema row), and SQLite (with file/path section instead of server)
  • Pencil icon in navigation bar opens the edit sheet; Edit Connection no longer rendered in the form body
  • Settings → Accessibility → Display & Text Size → AX5 → metadata pills stay readable in Structure (Indexes tab with Primary + Unique + type), DataBrowser, RowDetail, InsertRow, TableList
  • SQL editor keyboard accessory toolbar still renders the keyword chips (SELECT, FROM, …) and dismiss button; no width clipping in landscape or on iPad split view
  • Run a query, swipe through rows in Row Detail, save a change — no type-check timeouts, no IndexedRow crashes

@datlechin datlechin merged commit f33d4a9 into main May 9, 2026
2 checks passed
@datlechin datlechin deleted the refactor/mobile-p0-hig-fixes branch May 9, 2026 18:09
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