The score system will help determine what users do and don't like. When
the user chooses a song or listens to > 75% of a song, we increment the
score. If the user selects a different song in the first 1/3 of
playback then we decrement the score.
Songs with a score >= 0 will always be played. Songs with a score < 0
have a 50% chance of playing.
I have started a system to create a right click menu on the fly and show
it. Currently, it only works for the library. This will be used to
populate the playlist and probably many other things (like plugins!)
Both top and bottom playlist borders are present, but both only have a
placeholder label for now. Double clicking on a row in the list will
play a song now.
Collections now have a get_attr function. This function takes a song id
and a string with the requested attribute. The value of the attribute
is returned. This is used for generating a hover popup with the
playcount.
Libsaria events now support starting specific callback functions in a
background thread. This replaces starting a specific event in the
background.
I have a library tab that is added to the main window through use of the
ocarina.add_tab function.
I have new tests for walking the tree and running multiple threads with
locks.