The context of the "New Playlist" dialog can differ depending on the
action performed, such as adding to a playlist or importing a playlist.
We need to make sure we're still showing the right message once this
is done.
Add more types of playlist messages corresponding to other actions, so
they can be indicated in the UI only when the process is complete.
This is somewhat incomplete. It does not include indicating errors for
other playlist operations (Which I want to do), and neither does it
handle situations in which some playlist operations and up reducing
to others (i.e import -> create). I need to do that later.
Add a menu option that allows you to import a playlist file into an
existing playlist.
This is useful for keeping Auxio playlists up to date with a remote
source.
Add configuration options for:
- Using windows-compatible paths with \ separators and C:\\ volume
prefixes
- Switching between relative and absolute paths
- Turns out path extraction via MediaStore doesn't work, have to grok
the URI format.
- Added playlist name extraction
- Proactively handling whitespace
At some point, the switch to keying raw music information broke my
mitigation for duplicate tags that use similar cases. This then
crashed the music loader in certain cases. Fix it by making the
check use raw music keys.
Resolves#614
Only include an artists explicit albums (ones directly linked w/album
artist) in their count.
This is arguably more appropriate than the prior behavior, given
Auxio's collaborator/artist distinction.
Resolves#581.
This is part of the MusicBrainz spec, but I didn't think of implementing
it. Turns out it's stupidly common among music releases, so may as well.
Resolves#590.
M4A has it's own multi-value spec that works similarly to vorbis, where
they just repeat the atom several times with multiple values. Since M4A
atoms are remapped to ID3v2 frames, this more or less requires us to
tolerate duplicate ID3v2 frames as well, which is frustratingly a spec
violation. It solves the problem though
Resolves#558.
Make it so that music items are meaningfully different when they were
created under different settings. This resolves an issue where music
information would not correctly update when separators or intelligent
sorting would change.
Resolves#546.
Implement a new Name.Known.Factory instance that replaces the usage of
Name.Known.from.
This again allows songs to be differentiated on tag interpretation and
is generally easier to test.
Move all multi-value utilities to a new Separators interface.
This should allow separator config to be dynamically compared across
song instances, and generally make songs easier to test.
Trim simple names once punctuation has been removed.
This prevents situations where album names like "& Yet & Yet" (a real
album by post-rock outfit Do Make Say Think) will have blank thumbs.
This probably isn't the best approach in general, but nothing about the
intelligent name system is a good approach.
Apparently dialog fragments do not change the state of the fragment it
is overlaid on, resulting in it still having active StateFlow
collectors that will intercept new playlist requests before
AddToPlaylistDialog. Once again sharing StateFlows across views has
bit me.
In the future I may try to preserve the navigation idioms by not
stacking NewPlaylistDialog on AddToPlaylistDialog and instead
simply swap them out. I think this would also be better design too
(It's not like I'm allowing other decision dialogs to be exitable
back to their prior dialog).
Add a dialog that shows the stack trace of a music loading error.
This is an MVP that is only available to music loading to resolve some
immediate issues.
Resolves#527.
Add play and shuffle options for all song menus.
These will override the shuffle state, unlike other song play
interactions.
This required a good bit of refactoring to menu, some of which
might be ported to other commands in future changes.
Rename MusicMode to MusicType.
The original naming was always a bit clunky given that it referred to
both settings and data configuration. I feel that "Type" is probably
better overall.