Skip to content

feat: mobile UI polish + configurable port - #232

Merged
thcp merged 1 commit into
mainfrom
feat/mobile-ui-polish
Jun 27, 2026
Merged

feat: mobile UI polish + configurable port#232
thcp merged 1 commit into
mainfrom
feat/mobile-ui-polish

Conversation

@thcp

@thcp thcp commented Jun 27, 2026

Copy link
Copy Markdown
Collaborator

Follow-ups to the mobile UI (#231).

Changes

  • Waveform progress — the Mixer waveform now fills yellow as playback advances (the played bars, not only the playhead line), and repaints on seek. Repaints only when the played-bar count changes, so it's cheap.
  • Real thumbnails — Library art, Mixer cover, and the mini-player now use the actual YouTube/SoundCloud thumbnail when available (layered over the gradient as a fallback if it fails), instead of just a letter. URL constrained to a clean https:// (CSP already allows remote images).
  • Configurable portSettings → Advanced → Port, default 8080, persisted via /api/settings. The desktop launcher reads it from settings.json before spawning the backend and binds it (falls back to a free port if it's taken). A stable port = a stable, bookmarkable phone URL. Applies on restart (the socket binds at startup).
  • Settings polish (General) — numeric fields are now digit-only text inputs (no spinner arrows), length-capped; Max track length capped at 20 min with the limit shown in the description; controls right-aligned with the dropdown. Added a Done button to close the dialog.

Tests

  • Extended tests/test_network_gate.py (settings round-trip + clamps, incl. the 20-min ceiling and port 1024–65535). 128 passed, ruff + format clean, JS node --check clean, cargo clippy clean (no new warnings).

🤖 Generated with Claude Code

Follow-ups to the mobile UI (#231):

- Mixer waveform now fills yellow as playback progresses (the played bars,
  not just the playhead), and repaints on seek.
- Library/Mixer/mini-player show the real YouTube/SoundCloud thumbnail when
  available (layered over the gradient as a fallback), not just a letter.
- Configurable port (Settings -> Advanced): default 8080, persisted, read by
  the desktop launcher before spawning the backend (falls back to a free port
  if taken). A stable port means a stable phone URL. Applies on restart.
- Settings General tab: number fields are digit-only text inputs (no spinner
  arrows), length-capped; max track length capped at 20 min with the limit
  noted in the description; controls aligned. Added a Done button.
@thcp
thcp merged commit d9a669c into main Jun 27, 2026
8 checks passed
@thcp
thcp deleted the feat/mobile-ui-polish branch June 27, 2026 19:21
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