Skip to content

feat: phone utils, dynamic icons, push deep-linking, username editing, UI polish#23

Merged
GraysonCAdams merged 5 commits intomainfrom
feat/multi-improvement-batch
Mar 1, 2026
Merged

feat: phone utils, dynamic icons, push deep-linking, username editing, UI polish#23
GraysonCAdams merged 5 commits intomainfrom
feat/multi-improvement-batch

Conversation

@GraysonCAdams
Copy link
Copy Markdown
Collaborator

Summary

  • Phone utilities: Extract shared rawDigits/formatPhone/toE164 into $lib/phone with tests; redesign onboard phone input to match join page's formatted (XXX) XXX-XXXX pattern
  • Auth flow: Preserve returnTo URL through join/onboard flow; add rate limiting on join action; fix Android OTP paste handling
  • Dynamic icons: Replace static manifest.json with server-rendered endpoint; serve accent-colored SVG icons per group; generate favicon data URLs from accent color
  • Push notifications: Improve notification copy with clip titles; deep-link to specific clips with ?clip=ID&comments=true; send notifications even on download failure; add 15s Odesli timeout
  • Username editing: Inline editable username in settings profile header with debounced auto-save
  • UI polish: Redesign install banner as iOS-style smart app banner; debounced auto-save on GroupNameEdit; randomized daily reminder messages; optimized SQL queries; theme-aware CSS variables

Test plan

  • npm run test — 230 tests pass
  • npm run check — 0 errors
  • npm run build — production build succeeds
  • CI workflow passes

…h flow

- Extract rawDigits, formatPhone, toE164 into shared $lib/phone module with tests
- Onboard page now uses formatted (XXX) XXX-XXXX phone input matching join page
- Add returnTo URL preservation through join/onboard auth flow
- Add rate limiting on join action (5 req/15 min per IP)
- Fix OTP paste handling for Android IME multi-digit input
- Lazy-load display fonts on join page instead of globally
- Replace static manifest.json with server-rendered endpoint
- Add dynamic SVG icon routes colored by group accent
- Generate favicon data URLs client-side from accent color
- Remove unused Google Fonts from global load in app.html
- Add hex validation for accent cookie values to prevent injection
- Improve push notification copy and include clip titles
- Deep-link push notifications to specific clips with ?clip=ID
- Auto-open comments sheet for comment/reply notifications
- Send push notifications even when clip download fails
- Add Odesli fetch timeout (15s) for music clip resolution
- Navigate to clip from activity sheet notification taps
- Add openCommentsSignal store for cross-component signaling
- Migrate ReelItem to $derived for muted/speed store subscriptions
- Add UsernameEdit component with debounced auto-save
- Extend POST /api/profile/preferences to accept username field
- Add saveUsername() to settingsApi with DRY preference helper
- Migrate settings page from $app/stores to $app/state
- Fix double-negation bug in auto-scroll/muted toggle handlers
- redesign install banner as iOS-style smart app banner
- add debounced auto-save to GroupNameEdit component
- tighten NotificationSettings prop types
- randomize daily reminder message body from pool of messages
- optimize unwatched-count SQL with NOT EXISTS pattern
- set --bottom-nav-height CSS variable for fixed-position children
- use theme-aware CSS variables for tab inactive color
@GraysonCAdams GraysonCAdams merged commit 38ca8e6 into main Mar 1, 2026
17 checks passed
@GraysonCAdams GraysonCAdams deleted the feat/multi-improvement-batch branch March 1, 2026 14:31
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