hermes - 💡(How to fix) Fix Dashboard: Spotify remote-control widget (Tier 1, Free-compatible) [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#15614Fetched 2026-04-26 05:26:13
View on GitHub
Comments
0
Participants
1
Timeline
3
Reactions
0
Author
Participants
Timeline (top)
labeled ×3

Fix Action

Fix / Workaround

  • Backend: ~50 LOC (poll loop, WS push, tool dispatch for button clicks)
  • Frontend: ~150 LOC (React/similar widget matching dashboard conventions)
  • Total: ~200 LOC across the plugin
RAW_BUFFERClick to expand / collapse

Simpler companion to issue #15182 (Web Playback SDK widget). Ships faster, works for Free users, controls an existing Spotify client rather than becoming one.

What this is

A dashboard plugin showing a small transport bar — album art, track + artist, progress, play/pause/skip/volume. Polls spotify_playback get_state every few seconds for updates. Buttons call the existing Spotify tools directly (no SDK, no browser-as-device).

What this ISN'T

Not a Spotify client. No audio plays in the browser. This widget controls whatever Spotify is already running elsewhere — your phone, desktop app, Sonos, etc.

Issue #15182 (Web Playback SDK) IS a client. Strictly more capable but Premium-only and heavier.

Why both tiers make sense

  • Tier 1 (this): ~200 LOC dashboard plugin, works on Spotify Free, useful to everyone, ships in a weekend.
  • Tier 2 (#15182): ~400 LOC + SDK integration, Premium-only, useful to everyone with Premium who wants a self-contained in-browser player.

Users get strict upgrade when both ship. Tier 1's UI stays identical; Tier 2 adds 'this tab is a device' functionality underneath.

Requirements

  • Dashboard plugin under plugins/ (new directory, follow plugins/example-dashboard/ / plugins/strike-freedom-cockpit/ pattern)
  • Server-side poll: every 3-5s, dashboard backend calls spotify_playback get_state and pushes result over the existing dashboard WebSocket
  • Client-side UI: album art, track title, artist, album, progress bar that ticks locally between updates
  • Transport buttons wired to spotify_playback actions (play, pause, next, previous, seek via click on progress bar, volume slider)
  • Device indicator: shows which device playback is on. Dropdown to transfer via spotify_devices transfer
  • 'Not authed' state: when get_provider_auth_state('spotify') returns empty, widget shows a button linking to setup docs
  • Play-action behavior matches the device resolution in issue #15611 (use spotify.default_device_name if set, otherwise let Spotify pick active device)
  • No regression if the dashboard plugin isn't loaded — widget is opt-in per dashboard layout

Premium gating

On Free accounts, read-only actions still work (get_state, recently_played). Transport buttons should render as disabled or show a 'Premium required' tooltip rather than throwing 403s on click. Detect by checking the product field on /me once at load.

Open questions

  • Polling interval: 3s feels responsive but racks up API calls. 5s is more polite. Start at 5s, drop to 2s when the widget has focus (document.hasFocus).
  • Album art: cache client-side? Spotify's URLs are CDN-stable.
  • Small-form factor: widget should look reasonable at 300px wide too. Progressive disclosure — album art only, then + track info, then + transport.

Scope estimate

  • Backend: ~50 LOC (poll loop, WS push, tool dispatch for button clicks)
  • Frontend: ~150 LOC (React/similar widget matching dashboard conventions)
  • Total: ~200 LOC across the plugin

Acceptance

  • Widget loads in dashboard, polls state
  • Shows 'not authed' state gracefully when Spotify isn't configured
  • Transport buttons work on Premium, degrade visibly on Free
  • Progress bar ticks locally, doesn't jitter when poll arrives
  • Transferring device via dropdown updates the state on next poll

Non-goals

  • Playlist browsing (agent's job)
  • Library management (agent's job)
  • Queue management beyond 'show current queue'
  • Multi-user device handling

extent analysis

TL;DR

Implement a dashboard plugin that polls the Spotify API every 5 seconds to update the transport bar, with adjustments for focus and Premium features.

Guidance

  • Verify the polling interval by checking the document.hasFocus property to adjust the interval from 5s to 2s when the widget has focus.
  • Implement Premium gating by checking the product field on /me to detect Free accounts and disable or show a tooltip for transport buttons.
  • Use the spotify.default_device_name if set to determine the play-action behavior, otherwise let Spotify pick the active device.
  • Ensure the widget degrades gracefully when not authenticated by showing a 'not authed' state with a link to setup docs.

Example

No code example is provided due to the lack of specific implementation details in the issue.

Notes

The solution may need to be adjusted based on the specific requirements of the dashboard plugin and the Spotify API. Additionally, the polling interval and Premium gating may require further refinement based on user feedback and testing.

Recommendation

Apply the workaround by implementing the dashboard plugin with the specified features and adjustments for focus and Premium features, as this will allow for a functional and user-friendly experience for both Free and Premium users.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix Dashboard: Spotify remote-control widget (Tier 1, Free-compatible) [1 participants]