-
Notifications
You must be signed in to change notification settings - Fork 6
/
CHANGELOG
422 lines (391 loc) · 25.7 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
┍━━━━┫ Explanation ┣━━━━━━━━━━━━━━━━━━━━━┑
│ + Added │
│ - Removed │
│ * Other │
└────────────────────────────────────────┘
Run git log --oneline for more details
┍━━━━┫ 2022-06-04 ┣━━━━┫ 8.1.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ * [state.ini] A bug has been fixed that makes wrongly case insensitively behavior case sensitive.
│ This leads to the situation that the selected genres stored in state.ini are no longer recognized.
│ I used this "opportunity" to rename the section "albumfilter" to "GenreFilter"
│ + [state.ini] Albums can now be filtered by sub genres
│ - [musicdb.ini] The entry [randy]->nohidden got removed. This constraint is and should always be true
│ * [Randy] The random song selection algorithm now considers sub genres
│ * [Artwork] The WebUI now needs higher resolution artwork caches for better 4K support.
│ In /etc/muiscdb.ini: [albumcover]->scales=150, 200, 500, 1000
│ Restart the server to cache the albums artworks for the new resolutions
│ * [Randy] Configuration of Randy moved from /etc/musicdb.ini to state/randy.ini
│ File will be created on first run of MusicDB
│ + [tracker] Tracks when a song was played. This builds up a history that will be used in later versions of MusicDB.
│ + [WebUI/Randy] Allow changing Randy settings from the WebUI
│ * [Chromium] The chromium web browser is now supported (experimental)
│ * [WebUI] index.html now only loads a merged css file and a merged js file. debug.html loads each single source file.
│ * [WebSocket] Fixed a crash ("RuntimeError: To use txaio, you must first select a framework") when using MusicDB with the latest Autobahn framework
│
│ * Solved Issues: #76, #80, #81
│
┝━ MINOR CHANGES
│ * [WebUI] MusicDB WebSocket connection interface refactored (now object oriented)
│ * [WebUI] It is now possible to continue an upload when the connection gets lost in between
│ + [WebUI] Reconnect button to connection error layer added
│ * [WebUI] Flickering background during Drag'n'Drop fixed
│ * [WebUI] ArtistsView gets updated after reconnecting to the back end
│ * [Randy] Song selection algorithm changed: Album selection is now uniform distributed, not by their amount of songs.
│ * [Randy] Reloads its configuration before searching a new song
│ * [Randy] If all songs of an album are on the blacklist, "AddRandomSongFromAlbum" will return one of the blacklisted songs instead of None.
│ So the "The show must go on" requirement gets fulfilled.
└───────────────────────────────────────╌╌
┍━━━━┫ 2022-01-30 ┣━━━━┫ 8.0.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ * MusicDB got off of /opt and now lives in the system like any other application
│ -> Expects all your path settings need to be reviewed
│ * Missing data directories, files and databases will be created when the server gets started
│ * Invalid ownership and permissions of files and sub-directories will be fixed when the server gets started
│ * MusicDB server start/stop is now managed via systemd and journald
│ * MusicDB can now be installed via pacman
│ - Some command line options removed (Use --config instead): --quiet, --verbose, --logfile, --loglevel
│ - FIFO interface removed
│ - PID-File interfaces removed
│ - [lycra] Lyrics Crawler feature removed (Data quality was bad, feature was never used)
│ + [logging] Allow logging to journald
│ + [artwork] Long broken app-cache manifest generation removed
│ - [server] SIGUSR1 removed
│ + [server] WebSocket API Key is now generated when missing. No user configuration needed anymore
│ - [namedpipe] NamedPipe class removed
│ * [database] musicdb.mdbapi.database.MusicDBDatabase is now called musicdb.mdbapi.music.MusicDBMusic
│ * [music] FindLostPaths now uses a similar interface to FindNewPaths and supports videos as well
│ * [music] FindNewPaths now provides an additional list that contains only new songs of imported albums
│ * [music] New functions: CreateNewArtist, ChangeAlbumArtist
│ + [tracker] Configuration added to decide if random songs shall be tracked: [tracker]->trackrandom
│ + [filesystem] New methods: SetOwner, SetAccessPermissions, GetAccessPermissions, CheckAccessPermissions
│ + [accesspermissions] New module for high level access permission checks added
│ * [randy] Fixed ignoring maxsonglen for random songs
│ + [randy] New filter options:
│ nohidden: do not select songs from hidden albums
│ nobadfile: do not select songs that are flagged by the "bad file" flag
│ nolivemusic: do not select songs that are flagged by the "live recording" flag
│ * Command Line Interface
│ - Old high level command line user interface removed. The WebUI provides a better, more reliable alternative.
│ repair, add, moods, genres
│ - [recache] removed
│ - [database] removed sub commands: add, getlyrics, update
│ * [metadata] --check is no longer expected. Just give the path.
│ + [WebUI] Audio stream player + settings form added
│ + [WebUI] Settings added to allow hiding Audio stream player and System Status inside the main menu
│ + [WebUI] Allow uploading albums via web front-end
│ + [WebUI] Allow importing albums via web front-end
│ + [WebUI] Allow updating and renaming albums and songs via web front-end
│ + [WebUI] List background tasks in the settings menu
│ + Web API:
│ * notification "MusicDB:Upload" is now called "MusicDB:Task"
│ * Removed functions: GetLyricsCrawlerCache, RunLyricsCrawler, IntegrateUpload
│ * New functions:
│ InitiateContentIntegration, InitiateMusicImport, InitiateArtworkImport, InitiateFileystemScan,
│ FindAlbumSongFiles, RenameMusicFile, RenameAlbumDirectory, RenameArtistDirectory, ChangeArtistDirectory,
│ RemoveSongEntry, RemoveAlbumEntry, RemoveArtistEntry,
│ UpdateAlbumEntry, UpdateSongEntry, UpdateArtistEntry,
│ CreateSongEntry, CreateArtistEntry,
│ SetAlbumOrigin, SetAlbumImportTime, Bounce
│ * Renamed: GetUploads -> GetCurrentTasks
│ * Solved Issues: #68, #66, #65, #22, #27, #72, #64, #40, #50, #59
│
┝━ MINOR CHANGES
│ * [metadata] Uses mutagen instead of mutagenx module
│ + [Filesystem] Filesystem class refactored. Uses now pathlib and type hinting
│ + [Upload] Upload management refactored into task management
│ * [WebUI] Fixes a bug that lead to not show the album release date in the ArtistView even when enabled
│ + [WebUI] Scrolls current playing song into view when opening a big album that provides the current playing song
└───────────────────────────────────────╌╌
┍━━━━┫ 2021-10-03 ┣━━━━┫ 7.2.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ + [WebAPI] AddAlbumToQueue allows via optional third parameter to limit the Album to a specific CD
│ + [WebAPI] SetSongTag now has optional parameters for defining approval and confidence information
│ + [WebUI] Allow propagating album tags to untagged songs
│ + [WebUI] A color scheme quality indicator has been added to the color settings
│ + [WebUI] Option to hide the release date of albums in the Artists View added
│ + [WebUI] Option to hide the default genre "Other" in the Genre Selection View added
│ + [WebUI] The CD-Number headline can be used to add only a specific CD of an Album into the Queue
│ * [WebUI] Responsiveness increased
│ + Queue tile disappears immediately after clicking the remove icon
│ + First queue tile disappears immediately after clicking the Next button
│ + Moving tiles in the Queue View is now faked until the back-end responses
│ + For new added songs, a fake queue entry will be shown until the new queue got loaded from the back end
│ * Solved Issues: #63, #37
│
┝━ MINOR CHANGES
│ * [WebUI] Long artist names in Artist View are handled correct now
│ * [WebUI] The tags in the Album View under the artwork are less opaque now
│ + [WebUI] Mouse over album name in Artist View shows complete name as tool tip
└───────────────────────────────────────╌╌
┍━━━━┫ 2021-05-15 ┣━━━━┫ 7.1.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ + [extern] id3edit is now an optional dependency. It is only used for the music export feature (musicdb extern) of MusicDB
│
┝━ MINOR CHANGES
│ + [WebUI] When showing song settings, set keyboard focus to the genre input element
│ + [WebUI] Beside the origin, the date an album got added will also be shown in the headlines tooltip
│ + [WebUI] Review and minor improvements of moderator.html
└───────────────────────────────────────╌╌
┍━━━━┫ 2021-02-28 ┣━━━━┫ 7.0.0 ┣━━━━━━━━╍╍
│
│ ! All Music Video related features are not enabled by default
│ ! The video support is in early beta state and does not yet provide the experience I'm aiming for
│
┝━ MAJOR CHANGES
│ + Support for music videos integrated (Still alpha, deactivated for 7.0.0)
│ + Support for uploading new content via WebUI integrated (Still alpha, deactivated for 7.0.0)
│ * Update process improved - just a simple script call (scripts/update.sh)
│ * musicdb checks versions of configuration and database when executed. If something is outdated it becomes updated automatically
│ + Automatic creation of the following configured directories: music, artwork, videoframes, uploads
│ + License for images is now explicit creative commons (CC BY-SA 3.0)
│ * Lots of bug-fixes due to rewriting some code fragments to integrate video management
│ + Albums can be hidden in case they shall not appear in the WebUI, but removing would be too much.
│ + Two new song/video properties: Live Audio and Bad Audio Quality
│ + Removed command line modules: "tracker" and "upgrade" (have been, or became useless)
│ + Added command line modules: "videoframes"
│ + Web API:
│ * notification "MusicDB:Queue" is now called "MusicDB:SongQueue"
│ * notification "MusicDB:Stream" is now called "MusicDB:AudioStream"
│ + notification "MusicDB:Upload" added
│ * Function "GetQueue" is now called "GetSongQueue"
│ * Function "GetStreamState" is now called "GetAudioStreamState"
│ * Function "AddAlbumToQueue" now requires a position argument
│ + New functions for videos (See documentation)
│ + New functions for uploads (See documentation)
│ + Further new functions: GetHiddenAlbums, HideAlbum, GetTagsStatistics, AddGenre, AddMoodFlag, DeleteTag, ModifyTag, SaveWebUIConfiguration, LoadWebUIConfiguration, FindNewContent
│ * Some function now return more data than before (but never less!). See the documentation for details.
│ + WebUI:
│ ! Total rewrite - look and feel is the same
│ * Layout also works on 4K screens
│ - jQuery and other dependencies removed.
│ + WebUI can now be configured via webui.ini
│ + WebUI provides a settings and management interface (not yet a full replacement of the command line tools)
│ * Lyrics integration improved for better UX. It can also be deactivated in the settings.
│ * New icon set that is made for MusicDB's WebUI for better UX
│ + Full Drag'n'Drop support. Drag any album or song into the queue at any position
│ * Lang song and album names no longer destroy the layout
│ * Upload and replace album artwork
│ * A quick way to mark songs as Instrumental added (via Song Settings)
│ * Better scaling of album artwork in ArtistsView
│ * A Help-View will be shown when Web Socket connection failes
│ * Empty QueueView space is now a drop zone to append music
│ + MusicDB Configuration:
│ + Configurations for video frame management "[videoframes]" and uploads "[uploads]"
│ + For debugging purposes, IceCast connection and video mode can be disabled
│ + Documentation improved
│ * Installation process improved
│ * MusicDB Dependency list updated
│ * Apache example configuration added
│ * Create missing directories inside the MusicDB Data directory
│ * Solved Issues: #30, #45, #45, #24, #26, #47, #43, #46, #44, #38, #16, #17
│
┝━ MINOR CHANGES
│ + Scripts now handle spaces inside the configuration correct
│ + The WebSocket API key gets now generated during installation
│ * Refactoring of StreamManager -> AudioStreamManager
│ - Docker support removed
│ + [database] musicdb database add allows adding and managing videos to the music collection
│ + [database] It is possible to information about the usage of tags from the database
│ + [database] Recursive deleting of tags is now possible
│ + [tracker] Tracks also videos
│ + [videoframes] musicdb videoframes is a command line module for managing video frames and previews
│ + [randy] maximum tries to find a song can be limited (Config: "[randy]->maxtries")
│ + [fileprocessing] Different checksum algorithm possible
│ + [filesystem] Supports handling of videos
│ * [filesystem] CopyFile now works now as expected and does not copy permissions and ownership
│ * [artwork] Caches for scaled artworks now get the right permissions (g+w)
│ + [metatags] Supports handling of videos
│ + [mod.add] Lists all new albums, not only of known artists
│ + [mod.database] Allows adding videos (Removing is not yet supported!)
└───────────────────────────────────────╌╌
┍━━━━┫ 2020-08-01 ┣━━━━┫ 6.0.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ - [MusicAI] Removed (The framework I used is no longer maintained and does not work with modern Tensorflow anymore)
│ - [MusicDB] Removed unused columns: qskips, qadds, qremoves, qrndadds
│ + [MSBWSI/WebUI] In packages, all values behind the name key get beautified (U+2215->"/", "-"->N-Dash)
│ - [MusicCache] MusicCache Removed. Was never used.
│
┝━ MINOR CHANGES
│ * Log output ends with setting terminal color to default (\e[0m)
│ * [Artwork] Fixes issue with mutagenx package and importing artworks from mp3 files
│ * [Artwork] Fixed wrong interpretation of relative path arguments
│ * [Artwork] Fixed a bug that make the --album or --artwork option crash
│ * [Add] Highlight in the summary when there are invalid song names
│ * [Add] Exceptions during album import were captured to create better error messages
│ + [Add] In case there is invalid unicode in a song file name, the module exits immediately
│ + [Add] Detect and remove " [Explicit]" tags from song names
│ * [Add] Fix a bug that get triggered when a song file comes with no meta data
│ - [Add] MusicAI processing removed
│ - [mdbstate] Deprecated check/warning removed: israndom is now a mandatory key for song queue files
│ - [mdbstate] Deprecated check/warning removed: timestamp is now a mandatory key for blacklist files
│ - [MDBWSI] Deprecated function removed: GetMPDState, SetMPDState
│ * [MDBWSI] Bugfix in warning inside SetStreamState
│ - [database] Deprecated function removed: UpdateSongPath
│ - [Installation] All MusicAI related tasks removed
│ - [Configuration] All MusicAI related settings removed
│ * [MP3Transcoder] File descriptor leak fixed. GStreamer pipes get closed after file transcoding.
│ * [MP3Transcoder] File descriptor leak fixed. GStreamer object got not garbage-collected and left a file handler open
│ + [lib/metadata] Detect Amazon and Google as possible song origin
│ * [lib/metadata] Detect CD information from mp3 files
│ + [install-scripts] check.sh prints some helpful hints
│ * [install-scripts] Select correct music owner
│ * [install-scripts] Create music directory when it does not exists
│ * [upgrade] Upgrade CLI-Module does not load and use MusicDatabase (Fixes version conflicts)
│ * [font] Source Sans Pro has an issue with different sizes for smileys. I switched to DejaVuSans for mood-tags.
└───────────────────────────────────────╌╌
┍━━━━┫ 2019-12-13 ┣━━━━┫ 5.2.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ + [Docker] Added some script to build a Docker image and run the container
│
┝━ MINOR CHANGES
│ * [Server/WebUI] Fixed a bug that gets triggered when the song queue is empty
│ * [Stream] Fixed a bug that crashes the streaming process when the song queue is empty
│ * [Installation] Fixed a bug in the database creating process that leads to a wrong version number in new databases
│ * [Installation] Fixed a bug that gets triggered when there is more than one bash-entry in /etc/shells
│ * Some CSS-Updates to increase font size on 4k screens
└───────────────────────────────────────╌╌
┍━━━━┫ 2019-04-21 ┣━━━━┫ 5.1.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ * [MiSE] Search will no longer show deactivated or hated songs
│ * [WebUI] Related-Songs-List is now sorted
│ * [WebUI] Related-Songs-List now makes entries of none-selected genres transparent
│
┝━ MINOR CHANGES
│ * [Server] Hated songs will not appear in relationship-list returned by GetSongRelationship
│ * [WebUI] Fixed missing nano-scroll update
│ * [Documentation] MDBWSI function SetAlbumColor documented
└───────────────────────────────────────╌╌
┍━━━━┫ 2019-01-20 ┣━━━━┫ 5.0.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ + [WebUI] Hovering over (sub)genre tags in the album-view highlights tagged song names
│ * [WebUI] Search shows now all albums of found artists
│ + [Randy] Blacklist entries older than a configured age will be removed
│ * [Tracker] Does not track any random songs to keep the relations clean
│ - The deprecated SIGUSR1 signal to update the caches got removed. Use the FIFO interface instead. (SIGTERM will remain)
│ * All added songs will be pushed onto the blacklist now
│ * Replaces old imp module by importlib
│ * Fixes problem caused by asyncio changes in Python3.7
│
┝━ MINOR CHANGES
│ * [Tracker] Time to pass between two songs until there relationship gets not tracked is now configurable
│ + [Randy] Does not add songs to the queue, that exceed a configured play time.
│ * [Server] Made the openSSL interface future proof
│ * [Server] Better error/warning logging
│ + [music.db] Column added that stores the modification date of the directory when an album gets added ("added date")
└───────────────────────────────────────╌╌
┍━━━━┫ 2018-07-28 ┣━━━━┫ 4.0.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ * CSV Files now have headers
│ * The server now only accepts request from clients with a valid API Key
│ * WebSocket configuration for WebUI is now in separate config.js
│ * MP3 decode is now more tolerant for unusual MP3 files
│
┝━ MINOR CHANGES
│ * musicdb.ini now has a version number
│ * Databases now has a version number
│ * Scripts are now in a separate directory. Helpers will be moved to the server directory on installation.
│ - Moved id3edit sources into its own repository
│ * Normalize Unicode strings when loaded into CLUI TextInput
└───────────────────────────────────────╌╌
┍━━━━┫ 2018-05-06 ┣━━━━┫ 3.0.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ + New Columns in songs table: checksum, lastplayed
│ + Tracing the checksum of a song file
│ * Changes in the configuration:
│ - [server]->statefile will no longer be used, instead the following:
│ + [server]->statedir a director holding MusicDBs state. The old state got moved into it as state.ini
│ + All new streaming: MPD interface removed and Icecast interface added
│ * Tracker refactored. Interface changed.
│ * Randy refactored. Interface changed.
│ - PrintBlacklist removed
│ + Major changes in the Web API. Changed functions are:
│ - GetMPDState replaced with GetStreamState (they are not compatible!)
│ - SetMPDState replaced with SetStreamState (they are not compatible!)
│ - SetMDBState simplified - Does not allow creating new settings (they could not be read anyway)
│ * GetQueue API changed: entryid added
│ * AddAlbumToQueue improved: Does not add hated or disabled songs to the queue
│ * RemoveSongFromQueue API changed: Song gets identified by the entry ID
│ * MoveSongInQueue API changed: Songs gets identified by the entry ID
│ * Stream event have now the fncname "MuscDB:Stream" instead of "mpd"
│
┝━ MINOR CHANGES
│ - The following song statistics got removed: qadds, qrndadds, qskips, qremoves. They got NEVER used.
│ - End of Queue option removed from mdbstate.ini->[queue] -> EoQEvent. It was not used for years.
│ - The MusicDB state gets now saved in an own directory. The state file is at DATADIR/mdbstate/state.ini
│ * Avoids adding same song, when "AddSongFromAlbum" method is used multiple times.
│ * Checks if MusicDB runs in the correct group. Warns when not.
└───────────────────────────────────────╌╌
┍━━━━┫ 2018-02-18 ┣━━━━┫ 2.2.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ + Adds a new WebSocket API function: GetTables
│
┝━ MINOR CHANGES
│ * Fixes a bug that leads to chaos when the queue runs empty
│ * The dialog CLUI is now more tolerant for small terminal sizes
│ * Fixes a bug in the add module that makes importing lyrics crash
│ * Fixes sloppy path handling in artwork manager
│ * Makes WebUI more tolerant for missing MPD connection
│ * Fixes a bug that leads to chaos when the queue runs empty
│ * The dialog CLUI is now more tolerant for small terminal sizes
│ * Fixes a bug in the add module that makes importing lyrics crash
│ * Fixes sloppy path handling in artwork manager
│ * Makes WebUI more tolerant for missing MPD connection
└───────────────────────────────────────╌╌
┍━━━━┫ 2018-01-07 ┣━━━━┫ 2.1.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ * Better file permissions and default configuration (better for root-less access)
│ * Introducing the VERSION file for better tracking of bugfixes
│
┝━ MINOR CHANGES
│ * Better installation instructions
│ * Fixes crash when using MusicAI in add-module
│ * Fixes an IndexError when blacklists have length of zero
│ * Makes named pipes more explicit
│ * Fixes a bug that made the add command try to analyse metadata from cover artworks
└───────────────────────────────────────╌╌
┍━━━━┫ 2018-01-05 ┣━━━━┫ 2.0.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ - Signals (SIGUSR1, SIGTERM) will no longer be used for refreshing the cache or shutting down the server.
│ + … instead, named pipe are used. Write "shutdown" or "refresh" into the servers FIFO file.
│ + … Therefore a new configuration exists: [server]->fifofile
│ * database CLI-Module updated.
│ - target parameter removed. Gets determined by the paths.
│ - "update" sub-command removed.
│ + "remove" sub-command added.
│ + Adding random song from specific album to queue possible
│
┝━ MINOR CHANGES
│ * --quiet behavior improved by adding --verbose
│ * By default, MusicDB writes logs into the debug-file but not to the screen
│ + Repair-Module now allows removing albums and artists
│ * Bugfix: Uses progressive JPEG in Album View
│ * Bugfix: Fullscreen button now works in Chrome
│ * Bugfixes at WebUI regarding Tag-Input updates
└───────────────────────────────────────╌╌
┍━━━━┫ 2017-12-30 ┣━━━━┫ 1.1.0 ┣━━━━━━━━╍╍
┝━ MAJOR CHANGES
│ + MusicDB Derives album genres based on its song genres
│ + musicdb add - a new CLI module to for easy album import
│ + WebUI song relations view shows genre tags of the songs
│
┝━ MINOR CHANGES
│ + WebAPI GetSongRelationship adds the tags of a related song to the returned list
│ * Some annoying bugs fixed
└───────────────────────────────────────╌╌
┍━━━━┫ 2017-12-27 ┣━━━━┫ 1.0.0 beta ┣━━━╍╍
┝━ MAJOR CHANGES
│ + genres mod added
│ + moods mod added
│ * CLUI library finalized
│ * On installation, the user gets added to the musicdb group
│ * On installation, the data directories group rights get set to writable
│
┝━ MINOR CHANGES
└───────────────────────────────────────╌╌
┍━━━━┫ 2017-12-25 ┣━━━━┫ 1.0.0 alpha ┣━━╍╍
┝━ MAJOR CHANGES
│ * first public release
│
┝━ MINOR CHANGES
└───────────────────────────────────────╌╌