feat: phone utils, dynamic icons, push deep-linking, username editing, UI polish#23
Merged
GraysonCAdams merged 5 commits intomainfrom Mar 1, 2026
Merged
Conversation
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
rawDigits/formatPhone/toE164into$lib/phonewith tests; redesign onboard phone input to match join page's formatted(XXX) XXX-XXXXpatternreturnToURL through join/onboard flow; add rate limiting on join action; fix Android OTP paste handlingmanifest.jsonwith server-rendered endpoint; serve accent-colored SVG icons per group; generate favicon data URLs from accent color?clip=ID&comments=true; send notifications even on download failure; add 15s Odesli timeoutTest plan
npm run test— 230 tests passnpm run check— 0 errorsnpm run build— production build succeeds