Skip to content

fix(player): tighten player-bar density to spotify/lokal levels#80

Merged
InstaZDLL merged 7 commits into
mainfrom
fix/player-bar-compact-density
May 21, 2026
Merged

fix(player): tighten player-bar density to spotify/lokal levels#80
InstaZDLL merged 7 commits into
mainfrom
fix/player-bar-compact-density

Conversation

@InstaZDLL
Copy link
Copy Markdown
Owner

@InstaZDLL InstaZDLL commented May 20, 2026

Summary

The player bar was ~120 px tall (h-24 main bar + h-6 audio quality footer), noticeably chunkier than comparable apps (lokal sits at 80 px, Spotify around 90 px). Surfaced in the 1080p feedback from issue #54 — users on smaller screens lose meaningful vertical real estate.

Compact pass that preserves every existing affordance, including the audio-quality strip that's part of the app's identity. Just slimmer.

Changes

PlayerBar.tsx

  • h-24h-20, px-6px-4
  • Artwork w-14 h-14 / iconSize 24w-12 h-12 / iconSize 20
  • Track-info column space-x-4space-x-3
  • Right cluster space-x-3space-x-2
  • All right-cluster buttons (lyrics, queue, devices, mini-player, fullscreen) p-2p-1.5, icons size={20}size={18}

PlaybackControls.tsx

  • Play button w-10 h-10w-9 h-9, inner icons 2018
  • Skip / shuffle / repeat icons aligned at 18
  • space-x-6space-x-5, mb-3mb-1.5

AudioQualityFooter.tsx

  • h-6h-5, px-6px-4, text-[11px]text-[10px]
  • Strip stays permanently visible — the kHz / kbps line is a deliberate WaveFlow signature

Net result

~120 px → ~100 px, ~20 px reclaimed for the library / detail views at every viewport.

Test plan

  • Play a track → controls still hit-target comfortably with mouse (no fat-finger regression).
  • Audio quality footer still shows kHz / kbps / file size + codec / bit depth on the right.
  • Hi-Res badge still pops emerald when the track qualifies.
  • Keyboard focus rings on play / skip / shuffle / repeat still visible.
  • Right cluster icons (Lyrics, Queue, Devices, Mini-player, Fullscreen, More) all still tappable.
  • Fullscreen Now Playing still opens on artwork click or Maximize2 button.

The player bar was ~120 px tall (h-24 + h-6 footer), noticeably chunkier
than comparable apps (lokal sits at 80 px, Spotify around 90 px). The
issue was raised on small-screen feedback — 1080p users lose meaningful
vertical real estate to the player.

Compact pass that preserves every existing affordance:

- PlayerBar: h-24 -> h-20, px-6 -> px-4, artwork w-14 -> w-12 (iconSize
  24 -> 20), space-x-4 -> space-x-3 on the track-info column, right
  cluster space-x-3 -> space-x-2 with p-2 -> p-1.5 and icon size 20 ->
  18 on every action button (lyrics, queue, devices, mini-player,
  fullscreen).
- PlaybackControls: play button w-10 -> w-9 (icons 20 -> 18), skip /
  shuffle / repeat icons aligned at 18, space-x-6 -> space-x-5,
  mb-3 -> mb-1.5 between transport row and progress bar.
- AudioQualityFooter: h-6 -> h-5, px-6 -> px-4, text-[11px] -> [10px].
  Info stays permanently visible — the kHz/kbps strip is part of the
  app's identity, just slimmer.

Net: ~120 px -> ~100 px, gaining ~20 px back to library / detail views
at every viewport.
@qodo-code-review
Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 20, 2026

Warning

Rate limit exceeded

@InstaZDLL has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 58 minutes and 27 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: e666da8f-305f-4dd3-9091-d97dbd70f631

📥 Commits

Reviewing files that changed from the base of the PR and between baac76a and 5ea8dca.

⛔ Files ignored due to path filters (2)
  • bun.lock is excluded by !**/*.lock, !bun.lock, !*.lock
  • src-tauri/Cargo.lock is excluded by !**/*.lock, !src-tauri/Cargo.lock
📒 Files selected for processing (23)
  • package.json
  • src/components/common/Artwork.tsx
  • src/components/player/AudioQualityFooter.tsx
  • src/components/player/PlaybackControls.tsx
  • src/components/player/PlayerBar.tsx
  • src/components/views/SettingsView.tsx
  • src/i18n/locales/ar.json
  • src/i18n/locales/de.json
  • src/i18n/locales/en.json
  • src/i18n/locales/es.json
  • src/i18n/locales/fr.json
  • src/i18n/locales/hi.json
  • src/i18n/locales/id.json
  • src/i18n/locales/it.json
  • src/i18n/locales/ja.json
  • src/i18n/locales/ko.json
  • src/i18n/locales/nl.json
  • src/i18n/locales/pt-BR.json
  • src/i18n/locales/pt.json
  • src/i18n/locales/ru.json
  • src/i18n/locales/tr.json
  • src/i18n/locales/zh-CN.json
  • src/i18n/locales/zh-TW.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/player-bar-compact-density

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions github-actions Bot added scope: frontend React/Vite frontend (src/) type: fix Bug fix size: s 10-50 lines labels May 20, 2026
@codacy-production
Copy link
Copy Markdown

codacy-production Bot commented May 20, 2026

Not up to standards ⛔

🔴 Issues 9 medium

Alerts:
⚠ 9 issues (≤ 0 issues of at least minor severity)

Results:
9 new issues

Category Results
BestPractice 9 medium

View in Codacy

🟢 Metrics 15 complexity · 0 duplication

Metric Results
Complexity 15
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

InstaZDLL added 2 commits May 21, 2026 00:30
The kHz / kbps / codec / bit-depth strip under the player bar
permanently took ~24 px of vertical real estate, which adds up on
1080p displays (issue #54 territory). Audiophiles love it, casual
listeners mostly don't notice it. Make it opt-in like the existing
sleep-timer / A-B loop pins.

- New per-profile setting `ui.show_audio_quality_footer` (default
  off). PlayerBar reads it via the same `getProfileSetting` + window
  event pattern used by the other UI toggles, so the bandeau pops in
  and out without a reload when the user flips the switch.
- SettingsView gets a matching ToggleSwitch entry next to the A-B
  loop / sleep-timer toggles, with an `Activity` icon and copy
  explaining the trade-off.
- New i18n keys `settings.showAudioQualityFooter.{title,subtitle}`
  propagated to all 17 locales (fr/en hand-written, the rest a
  best-effort translation following the existing tone).
@github-actions github-actions Bot added scope: i18n Translations (src/i18n/) size: l 200-500 lines and removed size: s 10-50 lines labels May 20, 2026
@InstaZDLL InstaZDLL force-pushed the fix/player-bar-compact-density branch from 0073f67 to b3ac8a2 Compare May 20, 2026 22:38
Now that the audio quality footer is opt-in, the bar's vertical
breathing room exposed how undersized the 48 px artwork looked
against the bar's 80 px height (16 px top + 16 px bottom whitespace).
Bump to 56 px (w-14) — 12 px margin top/bottom, balanced presence
without crowding the title/controls. iconSize follows at 24 so the
placeholder disc stays proportional.
@InstaZDLL InstaZDLL force-pushed the fix/player-bar-compact-density branch from b3ac8a2 to cd42f41 Compare May 20, 2026 22:38
InstaZDLL added 2 commits May 21, 2026 00:42
The previous compact pass took the bar to h-20 (80 px); with the
follow-up controls bump (icons 18 -> 20-22, play button w-9 -> w-11,
heart p-1.5 -> p-2) the elements ended up cramped — the bar felt
like a small jar with oversized contents. Bump back to h-24 (96 px)
so everything breathes again.

Net vs main: 96 px without the audio quality strip vs the historical
120 px (h-24 + h-6 footer). Strip is now opt-in via Settings, so
users who want the old density still get it for free.
The previous bump took the play button to w-11 + icons size 22 while
keeping skip prev/next at 22 too — but the play button's green disc
background makes it visually heavier than the bare-icon siblings,
so the disparity read as 'huge play button vs thin everything else'.

Pull every transport control to size 20 and the play button back to
w-10 (40 px). Row reads as one coherent cluster: shuffle 20, prev 20,
play (w-10) 20, next 20, repeat 20.
@github-actions github-actions Bot added size: m 50-200 lines and removed size: l 200-500 lines labels May 20, 2026
@InstaZDLL InstaZDLL self-assigned this May 21, 2026
@github-actions github-actions Bot added scope: backend Rust/Tauri backend (src-tauri/) scope: deps Dependencies size: l 200-500 lines and removed size: m 50-200 lines labels May 21, 2026
@InstaZDLL InstaZDLL force-pushed the fix/player-bar-compact-density branch from e5f8f72 to 5ea8dca Compare May 21, 2026 10:44
@InstaZDLL InstaZDLL merged commit 60dd284 into main May 21, 2026
9 of 10 checks passed
@InstaZDLL InstaZDLL deleted the fix/player-bar-compact-density branch May 21, 2026 10:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: backend Rust/Tauri backend (src-tauri/) scope: deps Dependencies scope: frontend React/Vite frontend (src/) scope: i18n Translations (src/i18n/) size: l 200-500 lines type: fix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant