Skip to content

Feature/android capacitor#4

Merged
alvarotorresc merged 9 commits into
mainfrom
feature/android-capacitor
Mar 1, 2026
Merged

Feature/android capacitor#4
alvarotorresc merged 9 commits into
mainfrom
feature/android-capacitor

Conversation

@alvarotorresc

Copy link
Copy Markdown
Owner

No description provided.

Cover valid platform URLs (Spotify, YouTube, Apple Music, Tidal,
Deezer, SoundCloud, song.link, album.link, odesli.co), invalid/missing
URL params, unsupported platforms, protocol enforcement (HTTPS only),
Odesli API error forwarding (404, 500), network failures (502), and
Content-Type header.
Reusable rate limiter with configurable max requests and window
duration. Prunes expired timestamps per key and runs periodic
cleanup to prevent unbounded memory growth. Includes 8 unit tests.
useMember: member loading from localStorage, supabase fetch, null
handling for missing/invalid IDs.

useGroup: initialization, error states, addSong/voteSong guards
(no round, no member, rating bounds), songsPerRound default of 3,
initial members prop.

useLeaderboard: stats calculation (totalScore, avgReceived, songsAdded,
roundsWon), sorting by totalScore, pastRounds summary, current round
exclusion from wins.
…endpoint

Apply 10 req/min per-IP rate limiting to GET /api/resolve using the
sliding window rate limiter. Extract client IP from X-Forwarded-For
(Netlify). Return 429 with Retry-After header when exceeded. Also
guard against oversized upstream responses (>512 KB). Tests updated
with rate limiter mock and new assertions for 429 and size guard.
StarRating: read-only vs interactive mode, half-star precision, aria
labels, button click callbacks for all 0.5-5.0 increments.

SongCard: title/artist rendering, added-by display, thumbnail HTTPS
enforcement, own-track vs other-track rating, average rating display,
platform links, album art alt text.

AddSong: input enable/disable, submit with trimmed URL, clear on
success, error feedback, resolving state, whitespace-only rejection.

JoinGroup: member selection flow, create member form, name validation,
emoji picker, back navigation, member ID storage on selection.
Cover storage XSS prevention (script tags, URL-encoded payloads,
path traversal, HTML entities, SQL injection in member IDs),
URL validation (javascript:/data:/file: protocols, HTTP rejection,
non-music domains, embedded credentials), title truncation to prevent
storage abuse, HTTPS-only enforcement for platform links and
thumbnails.
Required for component and hook tests with jsdom environment.
@alvarotorresc alvarotorresc self-assigned this Mar 1, 2026
@alvarotorresc alvarotorresc added the enhancement New feature or request label Mar 1, 2026
@netlify

netlify Bot commented Mar 1, 2026

Copy link
Copy Markdown

Deploy Preview for aux-music ready!

Name Link
🔨 Latest commit 8716bd5
🔍 Latest deploy log https://app.netlify.com/projects/aux-music/deploys/69a49c20216c8600084949c0
😎 Deploy Preview https://deploy-preview-4--aux-music.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@alvarotorresc alvarotorresc merged commit d099a23 into main Mar 1, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant