social/napster layer to lintunes

what is the user journey??? hehe

want to subscribe to playlists
don't want any central servers I run
syncthing perhaps, per person
each person has a folder they share
and you sync it down
and you can copy it to your own machine
and it's lowkey a gossip protocol bc if you're on the same network with someone else who follows that friend you can give them the tracks
how to limit total size?

OH what if you sync a COPY of that person's library file
that knows what tracks they have
and you can peruse it
and mark certain ones as wanted
so maybe you have a want list

each person's share folder is read only to you




2026-09-28
what are necessary features?
what features does syncthing afford?
let's do the venn diagram of those
then do the ones that it afford but aren't necessary




follow someone by pasting a link?
do it under Connections menu
it would have "add friend library" or "share library with a friend"
add friend library gives you a pop up with a text field where you can paste in the syncthing link that's read-only to you
you also create a folder that's read-only for them and it outputs that link for you to give the friend
they can paste this link into the same "add friend library" 
there should also be a menu item that says "sync settings"
all these menu items can be grouped together under Connections between a couple horizonal lines.

sync settings can have a list on the left of 'general settings', and then in the list each friend you're synced with
this should look and behave like the settings window in vlc with the list on the left and settings that pop up on the right.
for each one it'll give you status of Syncthing generally and each friend connection. Whether you've made contact with the other machine.
The way the friend sync should work is that each user chooses what of their library they want to sync. This is in sync settings for each friend.
by default it should have checked 'share whole library
if that button is unchecked then a browser (like the browser in the app, genre, artist, album) shows up as well as 2 buttons, 'select all' and 'select none'
we need to make sure there's a cancel button on this window in case people press one of these  buttons by accident, thus clearing their selectionn.
each artist, album and song has a little checkmark next to it
whatever has a checkmark, these artists, albums are made available to the other user
in the folder that we share with them, that's read-only to them, contains shrunken library database copies. If someone has selected to share all artists and all playlists, it's basically just a copy of the local library.
if it's pared down on either the playlists or artits, etc then those are removed from the copy of the library in the share folder
we only need to write the file when we hit 'ok' in the settings menu.
we can set what we share with each friend in each friend settings
OR
you can set a setting in the general sync settings that you want to share the same thing to all your friends and then you pick in the general settings.

share all playlists is default unchecked with none of the playlists selected
thus defaulting to a user opting in to sharing all their playlists
in general settings there's a setting for what your name shows up as to other users.

in the main window we now need to cut out a small square of the Library button to put a little down-arrow triangle library selector button
hierarchically this button should appear as a smaller part of the library button, resting right next to it and not being sloped on the corners where they meet.
clicking that button causes a tiny popup window to show below it where you can select your friends libraries by name
when switching in to their library it now shows all of their library and playlists as if you're using their lintunes
but the files aren't all there
there is now another column that shows up by default all the way to the left of the other columns
this is a download request button
each artist, album and song will have a little embossed button with a cassette tape icon on it
if you press it it goes gray (as does the icon next to any sub-items, ie, clicking the cassette for an artist will transitively click the cassette for all albums and tracks of that artist)
if you hover over a grayed-out pressed cassete button it should go medium-gray indicating it can be pressed to swap back from selected to un-selected
they're esentially all checkboxes.

If any new artists/albums/tracks are selected or unselected, 'cancel' and 'save' buttons will appear in the bottom menu to go back to your own library and update your requests file
this requests file is read by the other lintunes and if it sees a song that has been 'cassetted', ie, selected by the friend lintunes, then the subsequent file is saved to the out-box that is read-only synced back to the friend.
the other friend's lintunes tracks that folder and when files are synced in there that we have 'cassetted' then we copy them into our library as if the 'add to library' menu item had been selected
ie, sort into the right folder. Import the song.
we then now update the list of tracks we have 'cassetted' to a specific friend because we no longer cassette it, we have it now.

when viewing a friend's library you can say 'see only tracks I don't have' or 'see all tracks' in the bottom menu.

I imagine this will require some delta-library folders or ways to keep track of state. We want to be resilient if sync goes wonky.
also we want it to be fast so we want to limit disk writes and reads. It should be fast because it's all local. We let syncthing handle everything that goes over the network.

I now also want to by default on new installs to add a smart playlist called 'new tracks' which shows stuff that has been added to your library in the past 3 months
this can be deleted just like any other smart playlist



additionally I'd like to add some emboss to all of the buttons. Just a real slight emboss, soft.
