-
Notifications
You must be signed in to change notification settings - Fork 293
/
CHANGELOG.txt
2009 lines (1565 loc) · 77.9 KB
/
CHANGELOG.txt
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
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
3.0.4
* add ffmpeg 6.x backwards compatibility (@barracuda156)
* improved LastFM support (@al1-ce)
* fix build on DragonFly BSD (@alexax66)
--------------------------------------------------------------------------------
3.0.3
* target ffmpeg 7.0 api, update encoder and decoder accordingly
* ensure taglib plugin is API compatible with taglib 2.0
* updated dependencies:
* update to Android Studio Koala, SDK 34 and related dependencies
--------------------------------------------------------------------------------
3.0.2
* added sqlean/unicode sqlite extension (and remove custom mapping logic) for
improved non-Latin, case-insensitive unicode filter/search.
* read 'rating' field from metadata while indexing
* fixed bug where aac files with id3v2 tags were not getting parsed correctly
* fixed a bug where we may incorrectly use the track's filename/uri instead of
title field during indexing.
* fixed 64-bit RPM architecture value (was `amd64`, but should be `x86_64`)
* updated musikdroid to latest version of Android Studio and external
dependencies (anecdotally improving Opus playback reliability)
[email protected] on unix platforms
* re-wrote raspberry-pi/arm cross-compiling functionality to be more generic and
use more well-maintained toolkits.
* added `armv6` builds for Raspberry Pi Zero (and other similar devices)
* added `x86` Linux builds
--------------------------------------------------------------------------------
3.0.1
* fixed a bug where album artist (and potentially other) metadata values were
being double encoded.
* fixed a bug where re-arranging the play queue may cause unnecessary i/o.
* fixed bug where `rpm` architecture was incorrect for `armhf` builds.
* updated `asio` to 1.28.0
--------------------------------------------------------------------------------
3.0.0
* fixed non-latin character parsing in Windows builds
* fixed compile for BSD systems
* fixed a couple minor bugs in the C API
--------------------------------------------------------------------------------
0.99.8
* added uk_UA localization (@dinolaz)
* updated dependencies across all platforms:
* updated to [email protected] for Windows builds
* updated `musikdroid` to use Android Studio `Flamingo` and update dependencies
* disabled update check for `homebrew` builds
--------------------------------------------------------------------------------
0.99.7
* added some homebrew workarounds to the build process.
--------------------------------------------------------------------------------
0.99.6
* added some homebrew workarounds to the build process.
--------------------------------------------------------------------------------
0.99.5
* fixed a bug in `ffmpegdecoder` that could cause the app to crash when
releasing a stream.
* fixed `milkdrop2` plugin to work on 64-bit machines, and include it by default
for both win32 and win64 releases.
* fixed unicode character parsing in musikcube-cmd.exe
* merged upstream PDCursesMod changes
* update essential build shell scripts to use `sh` instead of `bash` to improve
portability
* added new `post-install.sh` script, removed some legacy CMake code
* simplified Visual Studio project configurations and improved build time
--------------------------------------------------------------------------------
0.99.4
* fixed bug where `musikcubed` could crash while stopping.
* added `dark mode` awareness to Windows build.
* added `PortAudio` output driver.
* added support for Haiku OS.
--------------------------------------------------------------------------------
0.99.3
* fixed a bug on Windows builds where certain accented characters would not be
correctly parsed when input via keyboard.
* updated accented character mappings for improved fuzzy search.
--------------------------------------------------------------------------------
0.99.2
* fixed an issue when scanning tags that could result in corrupted metadata.
--------------------------------------------------------------------------------
0.99.1
* fixed indexer issues related to last modified file time; some code was
using 32-bit integers for timestamp comparison, leading to incorrect
re-indexing.
* fixed some issues related to modifying and saving playlists in browse mode.
* fixed issues when searching for metadata with accented characters.
* fixed issue with FfmpegDecoder that was preventing .wma files (and possibly
other formats) from playing properly.
* updated to taglib 1.13. vendor the library by default on unix platforms,
and use pre-compiled version on windows. (also: remove source bundle).
* updated some default key bindings to be more cross-terminal-emulator
compatible.
* updated ru_RU localization (@adem4ik)
* fixed Windows startup crash that was affecting some users
* merged upstream PDCurses changes.
* cleaned up vendoring for libopenmpt and libgme.
* fixed OpenBSD compile.
--------------------------------------------------------------------------------
0.99.0
* completely removed boost as a dependency across all projects; this is a
huge milestone in the project, and will make it much easier to distribute
stable builds moving forward.
* fixed issues with usernames on Windows that contain non-latin characters
* fixed issues displaying paths with non-latin characters in some parts of
the app.
* fixed issue with directory scanning that may lead to incomplete indexing
* fixed issue where user's home directory may not be resolved correctly.
* reverted ViewPager2 changes in `musikdroid`, as there is a bug that is
preventing fragments from getting re-initialized properly during the resume
cycle.
* updated Simplified Chinese translation (@UM-Li)
* added Czech translation (@khagaroth)
* upgraded to c++-17 runtime
--------------------------------------------------------------------------------
0.98.1
* fixed album art extraction for xiph comments.
* fixed PulseAudio compile issue.
* fixed `musikdroid` app notification on Android 13 devices.
* fixed ancient metadata indexer crash when trimming whitespace from strings.
* fixed `pipewireout` to have more sensible default buffer sizes, and add the
ability for the user to configure them.
* updated `musikdroid` dependencies and tooling, fixed a few warnings.
* merged latest upstream `PDCurses` code for Windows builds.
* sending `musikcubed` a SIGUSR1 will trigger a library rescan.
* fixed a bug when querying tracks by category with a filter.
* fixed a `musikdroid` bug that could cause the BrowseFragment to get into
a bad state where search would no longer work.
--------------------------------------------------------------------------------
0.98.0
* added the ability to click the browse and tracklist headers to change filter
options
* added the ability to click transport metadata to display a context menu with
a list of actions for the current track/artist/album
* added the ability to search/filter in browse view; press `^F` to toggle the
feature on and off.
* fixed a bug that could cause tracks to sort incorrectly if some tracks in
the album have a disc number specified and others don't.
* added the ability to use `libelogind` or `basu` instead of `libsystemd` for
the `mpris` plugin (@robertgzr)
* fixed ape decoding.
* some warning cleanups when using `wsprintw` (@trofi)
* further improvements to build system to remove OS-specific conditionals in
favor of library detection
* added color output to various important cmake messages, making it much easier
to spot check configuration issues.
* added support for the `piggy` debug tool to help with log collection and
remote app monitoring. disabled by default.
* updated Windows build to use Visual Studio 2022
* updated Linux/macOS dependencies for standalone *nix builds: boost 1.79.0,
openssl 3.0.2 (1.1.1n for rpi), curl 7.83.0, ffmpeg 5.0.1, libopenmpt 0.6.2
* updated sqlite to 3.39.0
--------------------------------------------------------------------------------
0.97.0
* no functional changes to the app
* finished re-architecture of build and app packing infrastructure to support
"standalone"/"portable" builds for non-Windows platforms. these changes allow
us to build a much smaller set of binaries for distribution that are more
universally compatible across different versions of macOS and Linux
distributions.
--------------------------------------------------------------------------------
0.96.13
* macOS and Linux only release that fixes standalone binaries.
--------------------------------------------------------------------------------
0.96.11
* added support for ffmpeg5 libraries.
* upgraded to ffmpeg5 for Windows builds.
* fixed WasapiOut to use high-quality, built-in resampler.
* added `allow_decoder_resampling` to WasapiOut to disable the high-quality,
built-in resampler and rely on plugin resampling instead.
* fixed dialog background rendering in certain versions of ncurses.
* fixed duration calculation for float-encoded wav files.
* added additional PipeWire output debugging.
* rewrote build system and packaging scripts.
--------------------------------------------------------------------------------
0.96.10
* fixed `-rpath` for macOS build.
* fixed race condition in WasapiOut that caused the app to crash.
--------------------------------------------------------------------------------
0.96.9
* fixed `-rpath` to use `$ORIGIN` instead of `./` to appease `Feodra 35`.
--------------------------------------------------------------------------------
0.96.8
* updated `FfmpegDecoder` to perform resampling internally when `WasapiOutput`
is in use; it's internal resampler seems to be much higher quality than the
one used by WASAPI by default.
* fix data directory resolution logic wrt to XDG_CONFIG_HOME (@robertgzr)
* ensure TrackSearchLayout refreshes during metadata indexing (@ravensiris)
* fixed album duration calculation fencepost error (@PythonTryHard)
* added Spanish (es_ES) translation (@orestescm76)
* added support for Android Studio 4.2
* updated CMake scripts to be compatible with Homebrew installations that
are rooted outside of /usr/local
* ensure static libraries are only resolved with necessary (@t123yh)
* fixed OpenBSD build
* fixed a PipeWire bug where volume may not get set properly.
* updated Scrobble logic to only post if at least 25% of the active track
has been played.
* fixed a bug where user may be unable to nativate to the lyrics view
* fixed a low-level bug that could prevent layout update events from
propagating up the view hierarchy.
* fixed a bug where the notification tray icon was not drawing properly on
windows builds.
* fixed musikdroid notification falling out of sync with the currently playing track.
0.96.7
--------------------------------------------------------------------------------
* re-compile for Windows; Windows Defender was unhappy with the original
binaries.
0.96.6
--------------------------------------------------------------------------------
* fixed some drawing issues with overlays/dialogs with certain versions of
ncurses.
* added category-level (e.g. album, artist, etc) durations in browse and
search views.
* upgraded the Windows builds to use ffmpeg 4.4, and removed usages of some
deprecated APIs in FfmpegDecoder and FfmpegEncoder.
* fixed bugs where .wav files with embedded album art would play loud static
for a second or two before the correct audio.
* added the ability to automatically resume playback on startup via new
"advanced" setting called "ResumePlaybackOnStartup".
* fixed various minor bugs while browsing by directory.
* fixed bug where files with "long" filenames on Windows were not properly
supported.
* added de_DE translation (dertuxmalwieder)
* updated default "change sort order" hotkey to ensure it doesn't conflict with
some common terminal emulator defaults in UNIX environments.
* removed snap support. the default sandboxing rules were causing more problems
than it was worth; even though it was possible to work around them, users were
still getting confused.
* added an initial PipeWire output plugin; included by default on Ubuntu 21.04
and Feodra 34.
* fixed some build issues where opting out of bundled TagLib didn't work
properly.
* updated CMake build scripts to fail fast if required libraries are not found.
* updated error logging to exclude ffmpeg end-of-file warning, it was just
polluting things.
* ongoing warning cleanups against more modern compilers.
--------------------------------------------------------------------------------
0.96.5
* ensure we statically link against the brew version of ncurses on macOS when
building pre-compiled artifacts
--------------------------------------------------------------------------------
0.96.4
* added mouse wheel support to non-Windows platforms.
* fixed some difficult-to-reproduce issues that could corrupt layout.
* optimized app resize logic so its simpler and more performant.
* fixed issues with terminal emulators on macOS that support REP (e.g. kitty)
by linking against the less buggy, homebrew-provided version of ncurses.
* upgraded to the most recent version of Android Studio tooling for the
musikdroid app.
* fixed a bug where track numbers would not be correct after loading a session
where the last viewed content was a playlist.
* ongoing warning cleanups against more modern compilers.
--------------------------------------------------------------------------------
0.96.3
* fixed a bug that could cause terminal output to get corrupted when switching
songs (@the-eater)
* fixed a bug that was preventing the update check from displaying a dialog on
completion.
* fixed now playing readout ellipsizing.
* fixed a bug where `last.fm` scrobbles may get posted twice per track.
* added a hotkey to clear the play queue; press `shift+x` in the play queue
window.
* fixed `HttpClient` user agent to distinguish between `win32` and `win64`
--------------------------------------------------------------------------------
0.96.2
* fixed a crash in HttpClient that was only manifesting on some architectures
and compilers.
* fixed a bug where UI may be updated from a background thread, leading to
undefined behavior.
--------------------------------------------------------------------------------
0.96.1
* additional fixes for older versions of libcurl (< 7.2.0)
* relax client/server version matching to exclude patch version (e.g. versions
0.96.0 and 0.96.1 are considered compatible, but 0.96 and 0.97 are not)
* upgraded libmicrohttpd to 0.9.71 on macOS and fixed static build
--------------------------------------------------------------------------------
0.96.0
* improved input latency, especially related to mouse events.
* updated zh_CN localization (Siheyuan98)
* added support for older versions of libcurl (< 7.2.0)
* added an advanced setting to ignore client/server version mismatches when
connecting to remote libraries
* added the server version to the user facing error that is displayed on
remote library version mismatch.
* added the app version to the bottom of the settings screen.
* fixed milkdrop plugin build
--------------------------------------------------------------------------------
0.95.0
* added support for searching by regex; press `M-m` in track or filter views to
toggle between regex and legacy searching. while regex is enabled, the search
box will have a blue (instead of red) border.
* relaxed search to ignore accents. for example: 'À', 'Á`, 'Â`, etc are all
considered equivalent to the english 'A', and vice versa.
* fixed a bug where remote library ports greater than 32767 caused the app to
crash.
--------------------------------------------------------------------------------
0.94.0
* added support for remote libraries (i.e connecting to a musikcube app or
daemon running on a different machine) to the terminal client:
- updated nearly all queries against the database in the app to be
asynchronous. this was not necessary before because most local DB queries
are extremely fast; however, when queries are sent over the network that may
not be the case. there are still a small handful of queries made on the UI
thread, but all of the really egregious ones have been fixed.
- added a new `ISerializableQuery` interface that defines how a query can be
serialized and deserialized. all queries now implement this interface.
- defined a new `SendRawQuery` method to `IMetadataProxy` that is used by the
server to send serialized queries to `musikcore`, and then respond with
serialized results to the calling client.
- added `WebSocketClient` that is used to connect to a `musikcube` server and
authenticate. it takes serialized queries from the client and sends them to
the server, then parses responses and unpacks the serialized result.
- added a new `RemoteLibrary` implementation of `ILibrary`. it serializes
queries and sends them to the server via `WebSocketClient`. once complete,
`WebSocketClient` hands the serialized result back to `RemoteLibrary`, which
then deserializes the result into the original query and notifies the caller.
- added `MasterLibrary` in the same vein as `MasterTransport`. it's more a
less a `pimpl` that allows us to switch the selected library under the hood
without a majority of the app knowing or caring.
- revamped the settings screen to allow selecting between local and remote
libraries.
- added a new screen that is displayed when a remote library is disconnected,
and shows some diagnostic information.
- added a new banner on the top of the app when connected to a remote library.
- added buffering states to Stream/Transport/PlaybackService and friends.
- updated the transport window to display buffering status when appropriate.
* fixed a number of bugs in `cursespp` related to nested layout focusing.
* fixed buggy visibility change events in `cursespp::Window` and removed old
hacked-up code that was working around the problems in the app layer.
* fixed a handful of `KeyPress()` propagation bugs across the app.
* found and fixed a handful of bugs in `HttpDataStream` that have been laying
dormant, waiting to be exercised.
* fixed bugs related to `LruDiskCache` parsing and pruning.
* fixed potential memory leaks in GmeDataStream and OpenMptDataStream
* fixed some weird edge-casey command bar focus issues.
* finally renamed `src/core` to `src/musikcore`
* added a ja_JP locale (trackiss)
* updated ru_RU locale (adem4ik)
* fixed a bug where on-demand mp3 transcoding wasn't working properly. (other
formats were fine)
* rearranged the settings window to ensure everything fits properly in an 80x24
terminal
* fixed some bugs in `MessageQueue` by now requiring explicit `IMessageTarget`
registration and unregistration for all messages. there was a small time
window (read: race condition) where it was possible to attempt to dispatch
messages to a destroyed target.
* fixed a handful of components that were running their initial queries twice
or more as they were being initialized.
* updated copyright date across all source files
* upgraded a number of tools and dependencies:
- migrated to VS2019 for Windows musikcube builds
- migrated to Android Studio 4.1 for musikdroid builds
- upgraded `websocketpp` and `json.hpp` and moved them out of `src/plugins`
and into `src/3rdparty` so they can be used by the main app.
- upgraded to boost 1.74.0
- upgraded to openssl 1.1.1h
* fixed a bug in the indexer that could prevent custom sources from getting
interrupted correctly.
* fixed a bug in libmicrothttpd version detection.
* fixed a bug where switching to a different output device while paused would
cause playback to resume.
* moved all shell scripts to their own subdirectory so they don't pollute the
root.
* fixed an old bug in `LocalLibrary` that could cause query result callbacks
to fire twice.
* added the ability to limit the number of simultaneous audio transcoders in
the server.
* added support for Ubuntu Groovy
* various other minor fixes that were exposed by making queries asynchronous by
default.
--------------------------------------------------------------------------------
0.93.1
server:
* fixed compile error on some platforms caused by updated libmicrohttpd APIs
--------------------------------------------------------------------------------
0.93.0
musikcube:
* added a new decoder based on `libopenmpt` to support playing mod/tracker
files.
* fixed a bug when browsing directories that contain entries from custom
`IndexerSource` plugins.
* fixed directory scanning bugs related to NFS (and potentially other
filesystem) volumes.
* fixed a nasty race condition in the MPRIS plugin that could cause the app to
crash on certain events.
* compile against the source version of taglib to get a number of important
bug fixes that haven't been released yet.
* fixed a memory leak in the GME plugin when aborting a directory scan
* fixed a bug that could cause advanced setting integer values to not save
properly.
* reduced Indexer log spew.
* removed more unnecessary boost cruft in the Indexer
* fixed an Indexer bug that could result in tracks not getting added to the
library.
* fixed a bug where the Indexer couldn't always be interrupted while scanning.
* upgraded snap from core18 to core20.
musikdroid:
* upgrade to Android Studio 4.0 and related tooling
--------------------------------------------------------------------------------
0.92.1
server:
* fixed a bug where HTTP authentication was not functioning properly and could
allow unauthenticated clients to download tracks.
--------------------------------------------------------------------------------
0.92.0
musikcube:
* fixed bug in the ffmpeg decoder where
* added three new hotkeys:
- `M-P`: start playback from the top of the current list of tracks
- `]`: jump to the next group in the current track list
- `[`: jump to the previous group in the current track list
* added the ability to disable terminal title upgrades in `advanced settings`
* updated ru_RU localization (adem4ik)
* optimized png files (adem4ik)
* added zn_CN localization (Siheyuan98)
* fixed a bug where binary stripping was broken for out of tree builds
* added the ability to disable binary stripping via DISABLE_STRIP=true flag
* fixed `archive-win.sh` to use unix line endings
musikdroid:
* fixed a bug when downloading tracks without metadata, or metadata that
contains invalid path characters.
* fixed a bug where track downloads may get corrupted, and/or assigned an
incorrect file extension
* fixed a bug where FLAC decoding would crash the app
* upgraded to the latest version of Android Studio
* upgraded various dependencies
server:
* added new `X-musikcube-File-Extension` HTTP response header that clients can
use as a hint when naming downloaded files.
--------------------------------------------------------------------------------
0.90.1
(windows-only release)
musikcube:
* fixed crash in win32 server caused by an incorrectly-compiled zlib
--------------------------------------------------------------------------------
0.90.0
musikcube:
* included a new `musikcube-cmd.exe` binary that can be run from a standard
command-line session in Windows, including cmd.exe, PowerShell, Windows
Terminal, or ConEmu.
* added an OpenBSD port (castagnini)
* added the ability to build as a `snap` package.
* fixed build issues for platforms with ncurses and tinfo split (tobbez)
* fixed an issue where percent signs in the transport weren't getting properly
escaped (the-eater)
* fixed an issue where we may not properly detect UTF8 terminals in some cases
* added true color support for macOS Terminal.app (previously was only
supported in iTerm)
* fixed a handful of directory browsing bugs reported by (pcapiod)
* fixed a bug where we weren't always properly reporting track metadata in the
MPRIS plugin.
* added a way to add an `audd.io` API key, if you have one, to fetch lyrics
* updated session data to be stored in its own config file
* merged upstream PDCurses changes to fix a handful of minor bugs and better
support Windows Terminal
* fixed a couple null pointer dereferences, and a couple instances where we
were using variables before they were initialized (detected with valgrind)
* fixed some weird redraw issues on some platforms with ncurses 6.2
* fixed some bugs where we weren't always compiling the MPRIS plugin for our
binary packages
* fixed a number of ALSA and PulseAudio bugs when devices are not available
or there is resource contention
musikcore:
* added a very basic C API for interacting with the SDK. see `musikcore_c.h`
and the companion project `core_c_demo`.
* fixed an old bug in the `indexer` that would report an incorrect updated file
count.
* added the ability to build a standalone `musikcore.dll` on Windows that can
be used with the new C API for easy integration with other languages or
environments.
* fixed a bug where we may crash when playing 0-length files.
* fixed an old bug where playback state would get out of sync if the user seeked
while paused.
* cleaned up SDK constants
musikdroid:
* updated crash report tracking to use Firebase Crashlytics
* upgraded ExoPlayer
* upgrade to Android Studio 3.6
server:
* tweaked the threading model to better support multiple concurrent connections
* fixed a bug where we may attempt to transcode the same file multiple times
simultaneously; now if there's a transcode for a shared resource in progress
we'll just wait until the original operation completes
--------------------------------------------------------------------------------
0.83.0
musikcube:
* #309: fixed a minor CMake configuration bug that could cause some formats
(e.g. `opus`) to not get recognized on some platforms (e.g. `linux`).
--------------------------------------------------------------------------------
0.82.0
musikcube:
* Fixed a small bug that could cause dialogs to get partially obscured on
certain versions of curses.
--------------------------------------------------------------------------------
0.81.0
musikcube:
* Added an `advanced setting` to hide the star rating column
musikcore:
* #308: audio decoding doesn't work with older versions of `ffmpeg`
* #307: database initialization issue (hectorm)
* #304: Updated `ru_RU` localization (adem4ik)
--------------------------------------------------------------------------------
0.80.0
musikcube:
* Added `zh_CN` localization (Siheyuan98)
* Fixed #287: Window size not properly restored in Windows build
* Fixed #276: Added the ability to rate tracks via `r` shortcut in all track
list views.
* Fixed #260: Added the ability to sort track list results via `^S"` in search
and browse views
* Fixed #173: Show song artist and title in the terminal titlebar
* Fixed #299: Windows drives disappear in directory browser after checking/
unchecking "show dotfiles" option.
* Fixed #257: Added an option to hide the command bar when not in command mode
* Backported `SchemaOverlay` from upstream `cursespp` and use it in
`PluginsOverlay`.
* Added an `advanced settings` to the settings view and re-arranged things a
bit.
musikcore:
* Fixed #290: A brand new transcoder implementation powered by ffmpeg that
supports `ogg`, `opus`, `aac`, `flac`, `wavepack`, and `wma` files. `mp3`
transcoding is still handled by `libmp3lame`.
* Fixed a bug in `FfmpegDecoder` that could result in a pre-mature / incorrect
`EOF` error.
* Fixed #294: we weren't properly querying the local DB for lyrics.
* Fixed #293: bug parsing disc number in AAC files.
* Fixed #298: bug decoding APE files. changes also include a complete refactor
and overhaul of the `FfmpegDecoder` plugin to use modern, non-deprecated
ffmpeg APIs.
* Fixed #160: added support for WAV and AIF files.
* Fixed #133: properly label and sort blank / empty category names as
`[unknown]` and ensure they are returned at the bottom of their respective
lists.
musikdroid:
* Allow for transcoder format selection in `musikdroid`'s settings screen.
(Part of #290)
* Upgraded `musikdroid` to use the latest stable Android Studio and other
dependencies (ExoPlayer, AndroidX, etc), plus a bunch of compiler warning
fixes.
* Fixed #296: notification not dismissed on stopping playback on some devices
running Android 10
--------------------------------------------------------------------------------
0.70.1
musikcube:
* new MPRIS plugin for controlling playback on Linux (brunosmmm)
* 64-bit binaries for Windows (note: Milkdrop only supports 32-bit)
* ru_RU update (adem4ik)
* it_IT update (alexpovel)
* chocolately install instructions (majkinetor)
* FreeBSD install instructions (0mp)
* Dependency upgrades on Windows (libcurl, PDCurses, libogg, LAME, ffmpeg)
* A couple small tweaks / fixes to widget focus behavior
* Raspberry Pi 4 support
* Debian Buster support
* Ubuntu Eoan support
musikdroid:
* Code cleanup and refactors with clearer names for major subsystems
* Dependency upgrades and migration to AndroidX
--------------------------------------------------------------------------------
0.65.2
musikcube:
* updated `ru_RU` locale (adem4ik)
musikcore:
* renamed some classes:
* `ISimpleDataProvider` -> `IMetadataProxy`
* `LocalSimpleDataProvider` -> `LocalMetadataProxy`
musikdroid:
* renamed some classes:
* `IDataProvider` -> `IMetadataProxy`
* `RemoteDataProvider` -> `RemoteMetadataProxy`
* `DataProviderMixin` -> `MetadataProxyMixin`
--------------------------------------------------------------------------------
0.65.1
musikcube:
* manually patched `websocketpp` to fix boost 1.70 compatibility. this allows
us to compile on macOS again. for more information, see here:
https://github.com/zaphoyd/websocketpp/pull/814
--------------------------------------------------------------------------------
0.65.0
musikcube:
* added lyrics support (powered by audd.io)! access lyrics for the currently
playing song by pressing ^L.
* removed vcredist runtime requirement on windows
* added support for Ubuntu Disco
* added support for Fedora 30
musikdroid:
* added a new "offline" tab to the browse screen
* moved settings and other overflow options to the left side of the main
screen's toolbar.
* added settings > advanced > diagnostics screen to show app runtime, wakelock
acquisition time and status, and service status.
* added a "download" option for song rows -- this can be used to download songs
for ringtones, or for playback in offline players.
* added the ability to seek playback on secondary screens
* removed some old settings that are no longer useful
* updated to AndroidX
--------------------------------------------------------------------------------
0.64.1
win32 and android only release
musikcube:
* fixed a bug where notification tray icon wasn't getting set properly.
musikdroid:
* work around android platform bug where, on some devices, pressing pause
on a headset, followed by resume within a couple seconds, will not work
properly.
--------------------------------------------------------------------------------
0.64.0
musikcube:
* migrated *nix data directory from $HOME/.musikcube to $HOME/.config/musikcube
* fixed a bug in the Windows build where non-Latin character input was not
working properly in all cases.
* added a search "hint" in filter and category library views
* fixed some super old bugs related to global focus tracking in cursespp
* fixed cursespp::TextInput::SetHint()
* redirect stderr output to ~/.config/musikcube/stderr.txt instead of /dev/null.
bonus: works on win32 now, too.
* merged upstream PDCurses into our own custom fork (win32 only)
* updated ru_RU translation (adem4ik)
* fixed the `gruvbox_dark` theme's focused text input color
musikdroid:
* fixed a crash when trying to randomize a play queue of exactly 2 tracks.
--------------------------------------------------------------------------------
0.63.0
musikcube:
* fixed a bug in `pulseout` where we were unable to recover from restarting the
`pulseaudio` daemon without restarting the app (or switching output plugins)
* fixed bug where `opus` files with an `ogg` extension weren't being detected
propertly. added scaffolding for fixing this for other formats in the future.
* fixed a Win32 file permission bug in `gmedecoder`
* fixed FreeBSD user agent when performing update check
* updated ru_RU translation (adem4ik)
* fixed a missing sndio #include (Kistelini)
musikdroid:
* changed general music browse experience to be tab-based with with modern
scrolling behaviors. this results in fewer clicks to find music and more
screen real estate.
* fixed elusive bug that would cause lock screen controls to stop functioning
sometimes, on some devices.
* massive cleanup and refactor to old code, making it more modular and easier
to compose.
--------------------------------------------------------------------------------
0.62.2
macOS only release.
musikcube:
* added missing `gnutls` dependency to project for homebrew builds
* compile `libmicrohttpd` from source for binary distributions on macOS
--------------------------------------------------------------------------------
0.62.0
musikcube:
* fixed a crash in `CoreAudioOut` when parsing unnamed output devices
(Porco-Rosso)
* fixed a crash in `macosmediakeys` initialization (Porco-Rosso)
* fixed a bug where long path names could crash on Linux systems (the-eater)
* removed bash dependency from wrapper scripts (hectorm)
musikcubed:
* added `--foreground` command line argument that instructions the daemon to
not not `fork()`, and run in the foreground instead.
--------------------------------------------------------------------------------
0.61.0
musikcube:
* added chiptunes support via Game_Music_Emu! supported formats include: vgm,
gym, spc, sap, nsfe, nsf, ay, gbs, hes, and kss
* added `macmediakeys` plugin; macOS users can play/pause/resume/skip tracks
using the media keys on the keyboard.
* substantially improved metadata indexing performance for large collections
* ensure all utf8 strings are sanitized immediately before inserting them into
the database. this wasn't being done properly before, and could lead to weird
crashes when trying to display metadata.
* added the ability to disable album artist -> artist metadata fallback.
set `DisableAlbumArtistFallback` to `false` in `~/.settings.json` (the-eater)
* many additional small indexer bug fixes
musikcore:
* added the concept of "infinite" streams
sdk:
* `IIndexerSource::Scan()` now receives a list of source paths
* added `IIndexerSource::NeedsTrackScan()`. implementations may override this
and return false to provide a hint to the indexer engine that the plugin
does not need to receive a callback to update each individual track
* added `IIndexerWriter::CommitProgress()`. by default the indexer creates and
commits a single transaction per source; plugins can manually commit progress
using this method.
* added `IIndexerWriter::GetLastModifiedTime()` so plugins can query the last
modified date for a track by `externalId`.
--------------------------------------------------------------------------------
0.60.2
FreeBSD only release.
musikcube:
* *finally* fixed the FreeBSD scrollbar crash. yeesh.
* fixed a bug in the `sndio` output plugin that may cause the first few buffers
of audio data to be discarded when manually changing tracks.
--------------------------------------------------------------------------------
0.60.1
musikcube:
* fixed m4a playback
* added support for aac and alac playback
* refactored `sndio` output to be more resilient against buggy drivers
* added support for ALSA in FreeBSD via `-DENABLE_ALSA=true` CMake switch.
musikdroid:
* fixed crash on startup on some versions of Android. ugh.
--------------------------------------------------------------------------------
0.60.0
musikcube:
* added an equalizer! press `ctrl+e` to activate and configure.
* removed most default decoder plugins and replaced them with one powered by
`ffmpeg`. this adds support for `opus`, `wavepack`, `musepack` and
`windows media audio` files.
* added a new `enable transparency support` in settings that can be enabled by
users who have a terminal with a transparent/translucent background.
* added the ability to customize the key used to quit the app. it is currently
not exposed in the ui, but it can be changed by editing
`~/.musikcube/settings.json` and updating the `AppQuitKey`.
* scrapped and re-implemented the debug log viewer, accessible via `ctrl+~`
* added feodra 29 support. (dvdmuckle)
* fixed configuration script bugs that were causing breakage in FreeBSD
* improved indexer speed by not re-extracting album art if it has already
been extracted for the album the track belongs to.
* migrated to non-bundled `taglib` for macOS and most Linux distributions
* fixed a ton of minor ui bugs.
* updated win32 dependencies: libressl, libcurl, libboost, and pdcurses.
musikdroid:
* updated to compile against the latest tooling.
* added the ability to change equalizer settings on the server from the
`remote management` screen.
* added the ability to specify title ellipsis mode (beginning/middle/end).
server:
* added `get_equalizer_settings` and `set_equalizer_settings`.
sdk:
* added a new `IDebug` interface plugins can request via `SetDebug` to write
log information to the standard location, just like the rest of the app.
* added `ITagStore::ContainsThumbnail()`.
--------------------------------------------------------------------------------
0.51.0
musikcube:
* added a new "gruvbox" theme (https://github.com/morhetz/gruvbox)
* added the ability to graphically configure plugin properties via new SDK
`ISchema` interface.
* added the ability to right click entries to display their context menu
* updated the Russian translation (adem4ik)
* fixed a bug where shutdown may be delayed while the indexer is running
* fixed a couple strings that were not properly localized
* fixed a bug that could cause overlays to not always properly disappear
* fixed a bug in the win32 milkdrop distribution where the preferred default
font wasn't getting included
musikdroid:
* updated to compile against Android Studio 3.1.4
server:
* fixed a crash while querying play queue tracks that have b`een removed from
the library.
sdk:
* added the ability for plugins to provide configuration schemas that can be
configured by the user in the gui. see `sdk/ISchema.h`
--------------------------------------------------------------------------------
0.50.0
musikcube:
* added last.fm scrobbling support (settings > last.fm)
* added a built-in hotkey viewer and editor (settings > key bindings)
* added basic mouse handling support -- click / double click / mouse wheel
works mostly the way you'd expect
* added an Italian translation (anonik9900)
* added a Russian translation (adem4ik)
* added a "proportional seek" functionality (benterris)
* fixed a bug where the "Source Code Pro" font was not being included in the
win32 build with milkdrop.
* added support for Ubuntu Bionic
* added support for Fedora 28
* added windows theme support so the menu bar draws nicer
* updated PDCurses (windows build)
* retired binary distribution for Raspbian Jessie (Stretch still supported!)
musikdroid:
* fixed a handful of random crashes that showed up in fabric.io
server:
* fixed a bug where the same playback overview may be broadcast multiple
times.
* fixed a bug where `set_volume` was not returning a response
* fixed a couple bugs where negative limits may be returned
sdk:
* added a simple HttpClient wrapper around libcurl that can be used by plugins
--------------------------------------------------------------------------------
0.42.0
musikcube:
* added the ability to browse by directory! add music directories to the list
of `indexed paths` in the settings screen, then press `d` in browse view to
browse.
* added a new setting to save session on exit. when enabled, musikcube will
remember the last selected view and the current playback context, and restore