Skip to content

feat(ios): StreamView visual polish — five Lidwell principles applied#4

Merged
codyk2 merged 1 commit into
mainfrom
cody/visual-polish-lidwell
Apr 19, 2026
Merged

feat(ios): StreamView visual polish — five Lidwell principles applied#4
codyk2 merged 1 commit into
mainfrom
cody/visual-polish-lidwell

Conversation

@codyk2
Copy link
Copy Markdown
Collaborator

@codyk2 codyk2 commented Apr 19, 2026

Read DESIGN_PRINCIPLES.md, audited StreamView against the Universal Principles book, landed five evidence-backed changes. Each cites principle + page so future readers can verify the reasoning, not just the output.

  1. Product name + price overlay on the 3D spin card Proximity (p160): product info belongs WITH the product image, not next to the BUY CTA. Hierarchy (p104): without a visible name, the screen has no top-level identity of what's being sold. Rendered bottom-left of the white card, only when productData.name exists.

  2. BUY CTA — saturated warm orange, 56pt minHeight, accent glow Von Restorff (p204): the single action-critical element should visibly differ from neighbors (green LIVE pill + white spin card + dark shell). Fitts' Law (p82): larger bottom-edge target = easier one-thumb reach on a 6.7" screen. Disabled opacity lifted 0.5 → 0.7 so the button stays visually present even without a buy_url set.

  3. Drop-shadows under avatar + 3D spin cards Top-Down Lighting Bias (p196): shadows below read as raised → focused → where the eye lands. Matched radii/offsets across both cards so they feel like one layer lifted above the chrome.

  4. Comments panel 38% → 28% height Hierarchy (p104) + 80/20 Rule (p12): avatar is the pitch; comments are secondary to the seller's viewer role. Reclaimed ~10% of vertical for the hero.

  5. LIVE green dot — pulse animation Visibility (p202) + Operant Conditioning (p144): motion reinforces state. A soft 0.9s easeInOut scale+opacity cycle signals "actually live" — we learned this association from Instagram/TikTok/Twitch.

Build: BUILD SUCCEEDED, zero warnings on iPhone 17 Pro simulator.

Out of scope (did not ship):

  • Shop-style product header strip (requires more copy design)
  • Empty-state character illustrations (scope creep)
  • Dynamic Type support (accessibility follow-up)

Summary by CodeRabbit

  • New Features

    • Added animated live indicator showing real-time broadcast status
    • Product metadata overlay displays product name and price details on streams
  • Style

    • Redesigned buy button with improved spacing, typography, and color scheme
    • Enhanced visual depth with shadows on key elements
    • Adjusted comments card layout for better spacing

Read DESIGN_PRINCIPLES.md, audited StreamView against the Universal
Principles book, landed five evidence-backed changes. Each cites
principle + page so future readers can verify the reasoning, not just
the output.

1. Product name + price overlay on the 3D spin card
   Proximity (p160): product info belongs WITH the product image, not
   next to the BUY CTA. Hierarchy (p104): without a visible name, the
   screen has no top-level identity of what's being sold. Rendered
   bottom-left of the white card, only when productData.name exists.

2. BUY CTA — saturated warm orange, 56pt minHeight, accent glow
   Von Restorff (p204): the single action-critical element should
   visibly differ from neighbors (green LIVE pill + white spin card +
   dark shell). Fitts' Law (p82): larger bottom-edge target = easier
   one-thumb reach on a 6.7" screen. Disabled opacity lifted 0.5 → 0.7
   so the button stays visually present even without a buy_url set.

3. Drop-shadows under avatar + 3D spin cards
   Top-Down Lighting Bias (p196): shadows below read as raised →
   focused → where the eye lands. Matched radii/offsets across both
   cards so they feel like one layer lifted above the chrome.

4. Comments panel 38% → 28% height
   Hierarchy (p104) + 80/20 Rule (p12): avatar is the pitch; comments
   are secondary to the seller's viewer role. Reclaimed ~10% of
   vertical for the hero.

5. LIVE green dot — pulse animation
   Visibility (p202) + Operant Conditioning (p144): motion reinforces
   state. A soft 0.9s easeInOut scale+opacity cycle signals "actually
   live" — we learned this association from Instagram/TikTok/Twitch.

Build: BUILD SUCCEEDED, zero warnings on iPhone 17 Pro simulator.

Out of scope (did not ship):
  - Shop-style product header strip (requires more copy design)
  - Empty-state character illustrations (scope creep)
  - Dynamic Type support (accessibility follow-up)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@codyk2 codyk2 merged commit 7193e2e into main Apr 19, 2026
1 of 3 checks passed
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 19, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8d93b11e-320c-4214-9eaa-87fc4b5a5f7f

📥 Commits

Reviewing files that changed from the base of the PR and between 4f73974 and 4315300.

📒 Files selected for processing (1)
  • ios/EmpirePhone/StreamView.swift

📝 Walkthrough

Walkthrough

StreamView.swift receives multiple UI enhancements: live indicator pulse animation, comments card vertical frame adjustment, shadows on avatar and 3D spin elements, conditional product metadata overlay display, and comprehensive buy button styling updates including spacing, typography, colors, and gradient adjustments.

Changes

Cohort / File(s) Summary
Live UI Enhancements & Layout
ios/EmpirePhone/StreamView.swift
Added @State for live pulse animation with ease-in-out scale and opacity effects. Adjusted comments card height from 38% to 28% of available space. Introduced shadows on AvatarVideoView and threeDSpinCard. Added conditional product metadata overlay displaying name and optional price when available, with hit-testing disabled. Enhanced buy button with increased spacing, larger typography, white text color, minimum height constraint, updated gradient palette, adjusted corner radius, and modified disabled opacity to 0.7.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 A pulse now glows where live streams play,
Cards dance in frame, a lighter way,
Shadows and shine on spin-art bright,
Product names gleam—oh what a sight!
The button's evolved with style so grand,

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cody/visual-polish-lidwell

Comment @coderabbitai help to get the list of available commands and usage tips.

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