From be13c7dd87f0ac518cc1509be620b506bc4be0e6 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Thu, 27 Feb 2014 10:01:08 -0500 Subject: [PATCH] Move the "todo" section into the toplevel I am going to delete the design/ directory and just keep a single file instead. I don't want to lose my ideas! Signed-off-by: Anna Schumaker --- todo.txt | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 todo.txt diff --git a/todo.txt b/todo.txt new file mode 100644 index 00000000..edcb41d4 --- /dev/null +++ b/todo.txt @@ -0,0 +1,118 @@ +Future work: + I want to set reasonable expectations for Ocarina 6 so that I don't + have to spend a large amount of time coding before releasing something + to the wild. This section will be a list of features that I want, but + should be deferred to a future release so basic support can be coded. + + Hint: If feature B depends on A, implement A in 6.x and B in 6.x+1 + + - New default groups: + Unplayed tracks + + - Categories: + Use these to make "groups of groups" for better organization. + Different categories can include Album, Artist and Genere + dynamic groups in addition to user created groups (see below) + + The Artist, Album and Genre "tables" can be used to populate + these categories. + + - User created song groups: + Basic add and remove features can be implemented using the + Library and Banned Songs groups. This will give me a chance + to test saving groups on a small scale before letting users + create anything they want. + + - Save a user's playlist as a group: + + - Library defragment: + Ocarina 6.0 will leave holes in the library when tracks are + deleted, potentially leading to fragmentation and larger-than- + needed file sizes. A "defragment" utility can be created to + clean up unused slots. + + To help with fixing groups, a mapping of (old values) -> + (new values) should be kept. + + - Fix track durations: + Some tracks in my library are tagged with the wrong duration, + so fix them as they are played. + + - Track tag editor: + Make a pop-up window for editing the tags of a track. Be sure + to update the library information and the on-disk file. + + - Album art: + (easy) Start with album art fetching script + (hard) Build in to Ocarina + + - Playlist custom sorting: + Click column headers to choos sort order + Keep a list of fields that the user has selected and place new + fields in the front of this list. Use a recursive stable sort + to do the sorting. + + - Better design file format: + Todo list in each document instead of all at once in the footer. + Leave the Todo list out of the official "design document" and + keep it in each individual section instead. + XML? + Code formatting? + Checkbox for when features are done? (reference commit) + + - Copy a song group to a different directory: + This can be useful for keeping an external device (like an + Android phone) updated with the music you want to listen to. + Complications: I have an mp3 mirror of all my music, and I + want the mp3s to be synced. Perhaps track mirrors in Ocarina? + + - Mirror directory: + I rip music to .flac, but keep an mp3 mirror directory to sync + to other computers and phones. An Ocarina tool to manage a + COMPLETE library mirror might be a good idea so I no longer + need to manage it externally. This can still be done with a + script, a cron job, and maybe a "mirror this track" option in + the library? Perhaps create a mirror group? + + - Extra testing ideas: + - Run tests through valgrind to help find memory leaks + - Some way to enable / disable tests during development + - Run tests based on dependencies + - Fix tests that will only work on my computer + - Double check that all inputs and outputs are tested + - Simple testing library? + - Stop tests on failure + - Test callbacks + + - Preferences: + - Set default sort + - Save window size + - Set album art size + + - Rip out Ocarina 5.x importing and legacy file support + + - AirPlay / remote audio support + + - Media keys + + - Replaygain support + External script to calculate values? + Calculate value after first playback? + Store in library :: Track structure + + - Autosave databases + Artist, album, genere and library path don't change often so + saving on every add / remove won't be a huge performance hit + and may actually be more efficient in the long run. + + - Scons improvements: + Why does everything compile with the same CONFIG_* parameters? + Cleanups to tests/Sconscript + Global dependency resolution (rather than having multiple ways + in lib/ design/ and tests/) + + - Playqueue and database inherit from common class + - "About" dialog + - Investigate "Bulk insert" callbacks for performance + - Initialize PQs with multiple flags + - Prefill Song structures in each library :: Track