| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | fix deadlock when ordering the broadcasted events | Florian Fischer | 2023-07-28 | 2 | -31/+51 |
| | | | | | | | | Do not increment the global event id when sending "private" events like the initial commands and search results. Fixes: a93c5826172f835db604a2646d470ecfd72484cf | ||||
| * | do not increment the global event count when reporting search events | Florian Fischer | 2023-07-28 | 2 | -4/+4 |
| | | |||||
| * | fix copying of the playlist when creating an ordered list | Florian Fischer | 2023-07-28 | 2 | -1/+18 |
| | | | | | | | Go's copy builtin does only copy min(len(dest), len(src)) elements, since we create an empty destination slice with a big enough capacity copy does not actually copy anything. | ||||
| * | add debug output for event ordering | Florian Fischer | 2023-07-28 | 1 | -0/+2 |
| | | |||||
| * | implement advanced search for the spotify backend | Florian Fischer | 2023-07-23 | 2 | -29/+89 |
| | | | | | | The librespot API does not allow advanced search therefore we filter the results according to our advanced patterns. | ||||
| * | fix typo in title form name | Florian Fischer | 2023-07-23 | 1 | -1/+1 |
| | | |||||
| * | implement advanced local search | Florian Fischer | 2023-07-23 | 2 | -4/+31 |
| | | |||||
| * | show votes and the time bonus in the song details | Florian Fischer | 2023-07-23 | 3 | -5/+16 |
| | | |||||
| * | fix applyTimeBonus by always using Song pointers | Florian Fischer | 2023-07-22 | 10 | -76/+96 |
| | | | | | | | | | | | | Storing song objects in the Songs slice and using pointers to the underlying array slots breaks if the underlying array must be grown. When the array is grown the objects are copied to the new array and the pointers used in queue point to the old objects. This causes that Playlist.applyTimeBonus may not correctly apply to the most recent list of songs. This is fixed by always using Song pointers. | ||||
| * | add test for flipping a vote | Florian Fischer | 2023-07-22 | 1 | -0/+17 |
| | | |||||
| * | propagate the time bonus to the client and apply it when adding new songs | Florian Fischer | 2023-07-22 | 2 | -1/+16 |
| | | |||||
| * | fixup! backend: support an incremental time bonus | Florian Fischer | 2023-07-22 | 1 | -6/+6 |
| | | |||||
| * | increment the event id when holding the lock and the actual event occurs | Florian Fischer | 2023-07-22 | 1 | -18/+20 |
| | | |||||
| * | backend: support an incremental time bonus | Florian Fischer | 2023-07-21 | 5 | -1/+18 |
| | | |||||
| * | implement playlist in order traversal | Florian Fischer | 2023-07-21 | 3 | -11/+50 |
| | | | | | This ensures that the initial reported song array is in order. | ||||
| * | do not remove active connections when removing stale ones | Florian Fischer | 2023-07-16 | 2 | -6/+20 |
| | | | | | | | | If the connection is renewed by the client removing the old connection and adding the new one is racy. Fix this by remembering a connection generation number and only to prevent removing the new connection. | ||||
| * | add more song info and preparations for advanced search | Florian Fischer | 2023-07-16 | 8 | -32/+81 |
| | | |||||
| * | fixup! client: make songs expandable to show more information | Florian Fischer | 2023-07-06 | 1 | -2/+2 |
| | | |||||
| * | fixup! client: add expandable advanced search inputs | Florian Fischer | 2023-07-06 | 1 | -0/+3 |
| | | |||||
| * | tick the event endpoint | Florian Fischer | 2023-07-06 | 1 | -1/+1 |
| | | |||||
| * | client: add expandable advanced search inputs | Florian Fischer | 2023-07-06 | 1 | -1/+8 |
| | | |||||
| * | client: make songs expandable to show more information | Florian Fischer | 2023-07-06 | 1 | -5/+55 |
| | | |||||
| * | add admin-password and button to become admin from the client | Florian Fischer | 2023-07-03 | 3 | -12/+41 |
| | | |||||
| * | do not change playback state when receiving a stop event | Florian Fischer | 2023-07-02 | 1 | -5/+1 |
| | | | | | Receiving stop means WRMS ran out of songs regardless of its playing state. | ||||
| * | remove vote info when song is played | Florian Fischer | 2023-07-02 | 1 | -0/+2 |
| | | | | | | This fixes a bug where songs added a second time have bugged vote controls. | ||||
| * | add double add test | Florian Fischer | 2023-07-02 | 1 | -0/+15 |
| | | |||||
| * | add simple wrms test | Florian Fischer | 2023-07-01 | 2 | -1/+88 |
| | | |||||
| * | add PL prefix and an additional playlist test | Florian Fischer | 2023-07-01 | 1 | -4/+50 |
| | | |||||
| * | introduce Player interface to allow multiple player implementations | Florian Fischer | 2023-07-01 | 7 | -33/+48 |
| | | |||||
| * | switch from websockets to SSE | Florian Fischer | 2023-06-30 | 3 | -52/+41 |
| | | |||||
| * | fix double _next call and move mpv termination to Next | Florian Fischer | 2023-06-30 | 2 | -11/+17 |
| | | | | | | Due to an logic error was _next() a second time from runMpv after the mpv subprocess was terminated by the first Next() call. | ||||
| * | print the stacktrace before calling log.Fatalln | Florian Fischer | 2023-06-30 | 1 | -0/+2 |
| | | |||||
| * | add debug message when terminating mpv subprocess | Florian Fischer | 2023-06-30 | 1 | -0/+1 |
| | | |||||
| * | remember the current song before waiting for mpv | Florian Fischer | 2023-06-30 | 1 | -1/+4 |
| | | |||||
| * | fix toggling of playing state in wrms.PlayPause | Florian Fischer | 2023-06-30 | 1 | -4/+4 |
| | | |||||
| * | cleanup Wrms._next | Florian Fischer | 2023-06-30 | 1 | -5/+9 |
| | | |||||
| * | fix condition in AdjustSongWeight | Florian Fischer | 2023-06-30 | 1 | -2/+1 |
| | | |||||
| * | serialize player state change though a channel | Florian Fischer | 2023-06-30 | 2 | -53/+120 |
| | | | | | | Only the player.serveCmds and the runMpv goroutines are racing now. But this race should be a benign race. | ||||
| * | synchronize playback control | Florian Fischer | 2023-06-01 | 2 | -17/+43 |
| | | |||||
| * | take the lock when adding or modifying songs | Florian Fischer | 2023-06-01 | 1 | -5/+14 |
| | | |||||
| * | actually increase the expected next event id | Florian Fischer | 2023-06-01 | 1 | -1/+2 |
| | | |||||
| * | send events in a total order | Florian Fischer | 2023-06-01 | 3 | -109/+135 |
| | | | | | | | | Move Connection code to wmrs.go. Introduce a RWMutex to synchronize access to the internal Wrms state. Tag each event when it is broadcast with the next event count. Senders will order the broadcasted events. This guarantees that no obsoltete events are ever delivered. | ||||
| * | tag all events with a monotonic id in order to ignore outdated ones | Florian Fischer | 2023-05-31 | 4 | -28/+22 |
| | | |||||
| * | support skipping the current song while playback is paused | Florian Fischer | 2023-05-31 | 3 | -17/+42 |
| | | |||||
| * | create websocket context after successfully identifying the connection | Florian Fischer | 2023-05-31 | 1 | -4/+3 |
| | | | | | Fixes: d8bdce51c336f3693121202402ee38ff3f12c0e2 | ||||
| * | use an atomic pointer to track the current song | Florian Fischer | 2023-05-31 | 4 | -13/+24 |
| | | | | | | Also fix showing finished songs as current playing on new clients. | ||||
| * | send bad request status if the websocket connection has a bad UUID cookie | Florian Fischer | 2023-05-31 | 1 | -0/+4 |
| | | |||||
| * | add thread saftey TODO | Florian Fischer | 2023-05-31 | 1 | -0/+1 |
| | | |||||
| * | mark search query distinguishing TODO as done | Florian Fischer | 2023-05-31 | 1 | -1/+1 |
| | | |||||
| * | mark admin controlls as done | Florian Fischer | 2023-05-31 | 1 | -2/+2 |
| | | |||||
