fix: soundboard upload in Electron, and Spotify sync/disappearing/progress

Soundboard: naming a clip used window.prompt, which Electron does not
implement — it returned nothing, the flow aborted in silence, and adding a
sound worked in the browser while doing nothing at all in the desktop app.
Replaced with a two-step field inside the popover, identical in both.

Spotify, three separate defects behind the two symptoms reported:

Out of sync — a 20s poll stacked on the activity store's 5s debounce left
everyone else on the previous track for up to 25s. The next poll is now
scheduled just past the current track's end instead of on a fixed interval,
and a track change bypasses the debounce (it happens once every few minutes;
the debounce exists for chatty producers).

Vanishing — a paused track, and the silent gap Spotify reports between two
songs, both cleared the activity outright. Pausing is now carried as state
rather than absence, and an empty answer is tolerated for 25s before the
block comes down.

Progress bar — timestamps are computed with the server's clock and were drawn
against the viewer's, so any drift displaced the bar; and it kept advancing
after a pause until the next poll. The ready payload now carries server time
so each client can correct its own offset, and the bar freezes when paused.

Tray, native notifications and system audio in screen share were all found
already implemented and wired end to end; recorded in the roadmap rather than
built again.
This commit is contained in:
2026-08-31 22:39:28 -03:00
parent ff55d9d486
commit c899253e52
14 changed files with 214 additions and 36 deletions
+2
View File
@@ -40,6 +40,8 @@ export const en = {
'soundboard.adding': 'Uploading...',
'soundboard.remove': 'Remove',
'soundboard.namePrompt': 'Name for this sound',
'soundboard.confirm': 'Add',
'soundboard.cancel': 'Cancel',
'soundboard.joinFirst': 'Join a voice channel to use the soundboard.',
'soundboard.tooLarge': 'Sound must be under 2 MB and a few seconds long.',
'soundboard.uploadFailed': 'Could not upload that file. Try a different one.',