Skip to content

feat(ui): match Scanner screen to Figma node 13:2 #60

@ilmoniemi

Description

@ilmoniemi

User Story

As a Pyrycode mobile user pairing for the first time, I want the Scanner screen to match the locked Figma design with full atmospheric polish, so the pairing moment reads as a premium developer-tool experience rather than a placeholder box.

Context

Phase 1's #12 shipped a stub Scanner — a dark rounded box with a single horizontal line and "Tap to pair" text. The Figma file's Scanner node 13:2 carries: dual radial gradients on the viewport (cool-blue 30/40, soft-coral 70/70), a scan-line with Schemes/Primary 85% opacity + DROP_SHADOW glow, 105 horizontal atmospheric stripes (1px tall, 4% white, every 7px), and a pyry pair mono+coral chip below the viewport.

Phase 1.5 visual-fidelity catchup. Follows the pattern proven by #57 (Welcome screen).

Acceptance Criteria

  • Camera viewport renders with both radial gradients via Compose Brush.radialGradient (cool-blue at one corner, soft-coral at the other)
  • Scan line + glow rendered (Schemes/Primary 85% alpha, drop-shadow blur)
  • Atmospheric stripe overlay rendered (~105 stripes, low alpha — wrap as a single Canvas to avoid 105 nested composables)
  • pyry pair chip rendered with mono font + coral accent, below viewport
  • Zero hardcoded color / typography literals — all tokens via MaterialTheme.* (gradient stops are RGBA-frozen at creation per Figma workflow lessons; that constraint is acceptable)
  • Tap-anywhere behavior preserved (fake-pair: writes pairedServerExists=true, navigates to ChannelList) — do NOT change MainActivity.kt's wiring

Technical Notes

  • Existing scaffold: app/src/main/java/de/pyryco/mobile/ui/onboarding/ScannerScreen.kt (~96 LOC; rewrite per architect's spec)
  • Gradient ellipse formula in the Design — Conversations Model doc is for Figma's set_fills; Compose uses Brush.radialGradient(center, radius) directly

Size Estimate

S — single file, ~120-150 production LOC. High visual density but bounded scope (no data-layer, no navigation changes).

Figma

https://www.figma.com/design/g2HIq2UyPhslEoHRokQmHG?node-id=13-2

Metadata

Metadata

Assignees

No one assigned

    Labels

    size:s<100 lines; default for non-trivial tickets

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions