Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

10 — Interaction Specification (Auth Module)

Module-specific interactions precise for pre-auth forms and security screens, layered on shared 00-shared/08. Covers every input modality on phone/tablet/desktop.


1. Phone / touch

GestureBehaviourWhere
Tapsubmit, reveal password, copy, open/close sheetsall inputs
Tap on CTAsubmitting-aware disabled re-taplogin/register/reset/enable
Long-pressAppMenu on session/api-key rowssessions, api keys
Double-tapnone (no media in auth)
Swipe leftno destructive swipe (revoke is destructive) — keep confirm
Pull downrefresh sessions/api-keyslists only
Pinch/dragnone (no media)
Hardware backpre-auth: pop to previous auth step; never back into shell; on root → exitall
Edge swipedrawer (authed shell) — n/a pre-auth

2. Keyboard / desktop / mouse

InputBehaviour
Tabemail → password → CTA → secondary links; focus ring primary
Entersubmits the visible form (login/register/reset/forgot/2fa)
Escclears inline error / closes sheet / cancels dialog → returns focus to trigger
Ctrl/Cmd+Kn/a pre-auth (focus first field instead) recommended
Ctrl/Cmd+Entersubmit from form (same as Enter)
Arrowsnavigate chips in API-key scopes (input)
Right-clickcontext menu (same as long-press: session revoke, key revoke)
Hovertooltip after 500 ms; CTA elevation hinted
Focusvisible ring on every control; logical order

3. Haptics (mobile)

EventHapticRef
Wrong TOTPmediumImpact
Login successlightImpact
Copy keyselectionClick
Enable 2FAlightImpact
Destroy confirm (revoke)heavyImpact
Ruledisabled when system haptics off; none on desktop08 §3

4. Motion language (module extension of 08 §4)

TransitionDuration/curveUsed by
Route push (pre-auth)m-base slidelogin→forgot→register
Success→homem-base fade-upany unauthenticated success
Sheet (key reveal)m-base bottom slideapi-key
Totp box errorshake AnimatedSwitcher (reduced-motion = none)2fa
Badge change (2FA on)scale pop m-fastsecurity hub

Reduced-motion: only fades + instant; no shake.

5. Micro-interactions catalogue (auth fl)

InteractionDetail
Submit pressedbutton loading-state swap in m-base, double-tap locked
Key copiedsnackbar "Copied" + toast, tooltip
Password revealicon toggles, focus stays, no screen shift
TOTPauto-advance AnimatedContainer; paste-tolerant; on 401: red + shake + focus box
Device revokedrow fade-out m-base, list re-animates m-entrance stagger
Refresh sessionsRefreshIndicator completes with lightImpact

6. Frustration controls (shared 08 §6 + module)

  • All presses respond < 100 ms with m-fast ripple.
  • Every network action shows pending state.
  • Submit buttons disabled while pending — no double-auth.
  • Rate-limit → never auto-retry; always surface countdown.
  • Errors never flash; persist until corrected or dismissed (persistent banner).
  • studylyon://verify-email?token= / reset-password?token= → fills hidden field; auto-submit.
  • Manual code-paste → AppTotpInput accepts paste.
  • Copy key → share sheet on tablet/desktop (AppMenu?) — desktop: Ctrl+C on SelectableText.

8. Validation of interaction to server semantics

Interaction spec never contradicts server: e.g. prevents re-enable 2fa vs server 400; api-key reveal only once → widget caches nothing; reset kills sessions → client force-logout banner; unexpected-community → "password changed elsewhere".