Michael Bucari-Tovo
a62a9ffc5b
Use HttpClient in synchronous mode
2025-07-23 17:00:54 -06:00
Michael Bucari-Tovo
08aebf8ecf
Add thread safety
2025-07-23 17:00:36 -06:00
Michael Bucari-Tovo
2f082a9656
Refactor and optimize audiobook download and decrypt process
...
- Add more null safety
- Fix possible FilePathCache race condition
- Add MoveFilesToBooksDir progress reporting
- All metadata is now downloaded in parallel with other post-success tasks.
- Improve download resuming and file cleanup reliability
- The downloader creates temp files with a UUID filename and does not insert them into the FilePathCache. Created files only receive their final file names when they are moved into the Books folder. This is to prepare for a future plan re naming templates
2025-07-23 16:55:09 -06:00
Michael Bucari-Tovo
1f473039e1
Make search syntax dialog field names scrollable
2025-07-22 15:39:43 -06:00
Michael Bucari-Tovo
0f4197924e
Use LibationUiBase.ReactiveObject where applicable
...
Also tweak the classic process queue control layout
2025-07-22 11:59:34 -06:00
rmcrackan
0f7ffacdf8
incr ver
2025-07-22 10:20:39 -04:00
Michael Bucari-Tovo
614b05d5ff
Fix serilog dynamic assembly loading issue ( #1310 )
2025-07-22 08:00:31 -06:00
rmcrackan
26ccc77b47
incr ver
2025-07-22 07:24:26 -04:00
MBucari
890747a902
Do library scan on background thread
2025-07-22 00:20:16 -06:00
Michael Bucari-Tovo
1fdcea929f
Form thread safety
2025-07-21 22:52:17 -06:00
Michael Bucari-Tovo
7848366818
Write logs to text .log file instead of .zip file
...
The ZipFile sink could cause program hangs. Additionally, the only reason it was ever used was to package verbose AudibleApi account login errors, saving the returned Html page as a file. Otherwise, the zip file only contains a .log text file.
- Removed Serilog.Sinks.ZipFile
- Add Serilog configuration migration
- Added a custom destructure to handle logging files. If any files are logged, they will be written to "LogyyyyMM_AdditionalFiles.zip"
2025-07-21 22:19:55 -06:00
Michael Bucari-Tovo
40b4915b65
Improve download/decrypt cancellation
2025-07-21 15:56:41 -06:00
Michael Bucari-Tovo
80b86086ca
Consolidate process queue view models
...
Remove classic and chardonnay-specific implementations
Refactor TrackedQueue into an IList with INotifyCollectionChanged
2025-07-21 15:56:30 -06:00
Michael Bucari-Tovo
bff9b67b72
Remove GridEntry derrived types and interfaces
...
Use existing BaseUtil.LoadImage delegate, obviating need for derrived classes to load images
Since GridEntry types are no longer generic, interfaces are unnecessary and deleted.
2025-07-21 10:47:10 -06:00
Mbucari
657a7bb6bc
Improve podcast episode GridEntry creation performance.
...
Tested on a library with ~5000 podcast episodes on an AMD Ryzen 7700X. Startup time decreases by ~400 ms in Release mode.
2025-07-21 09:49:25 -06:00
rmcrackan
f0d7a7bf64
incr ver
2025-07-18 07:19:09 -04:00
Michael Bucari-Tovo
9280b29512
Fix upgrade bug when Libation's working dir isn't program files dir
...
Add MockUpgrader for testing the Upgrade process.
Fixes issue #1302
2025-07-17 13:10:42 -06:00
rmcrackan
d8e9b9c505
incr ver
2025-07-17 08:07:08 -04:00
MBucari
8d7872a376
UI tweak and optimization
2025-07-16 23:31:34 -06:00
MBucari
747451d243
Refactor Classic process queue
...
The queue is now more MVVM-like.
2025-07-16 22:58:03 -06:00
MBucari
7e79e98771
Fix possible cross-threading errors with MessageBoxBase
2025-07-16 22:57:25 -06:00
Michael Bucari-Tovo
4b7939541a
Code cleanup and refactoring for clarity
2025-07-16 22:55:57 -06:00
MBucari
a3734c76b1
Use SynchronizeInvoker's Invoke() method.
2025-07-15 23:22:42 -06:00
MBucari
ced4ea6c17
Improve sorting by Liberate status by grouping books with PDFs
2025-07-15 22:50:53 -06:00
MBucari
35ca6f2621
Use built-in comparer and ReactiveObject types
2025-07-15 22:50:28 -06:00
MBucari
4dab16837e
Move ProcessQueueViewModel logic into LibationUiBase
...
Fix UI bug in classic when queue is in popped-out mode.
2025-07-15 22:31:17 -06:00
MBucari
1cf889eed7
Move ProcessBookViewModel logic into LiationUiBase
2025-07-15 15:05:33 -06:00
MBucari
b65b1e819b
Consolidate queue commands into UI base
2025-07-15 13:32:42 -06:00
MBucari
3d50643ab0
Fix visible book counts being incorrect on startup
...
If quick filters are applied on startup, a race condition was created between the initial library load book counting and the visible books counting. Only display results of the latest book count.
2025-07-15 11:49:20 -06:00
MBucari
abd18d74b0
Fix crash when setting drive root as custom directory ( #1300 )
2025-07-15 11:44:45 -06:00
MBucari
0e49df06b8
Add message box handler to LibationUiBase
2025-07-15 11:40:01 -06:00
MBucari
c9af2bba4b
Reduce GitHub API calls when no upgrades are available
2025-07-14 14:43:48 -06:00
MBucari
5b9bf2fbb0
Remove duplicate tests
2025-07-14 12:53:47 -06:00
MBucari
9b1ce8c1d7
Update dependencies
2025-07-14 12:43:53 -06:00
MBucari
9f8075041b
Only remove a LibraryBook from queue if we are trying to re-download.
2025-07-14 12:42:05 -06:00
MBucari
944645379e
Fix message box text truncation when there is no icon ( #1294 )
2025-07-14 12:19:26 -06:00
Mbucari
cc72517284
Merge branch 'rmcrackan:master' into master
2025-07-14 11:45:44 -06:00
rmcrackan
f511041781
Create a cue sheet: default false
2025-06-25 12:43:50 -04:00
rmcrackan
da9dc91469
incr ver for docker enhancement
2025-06-25 06:58:14 -04:00
Mbucari
ebd2cc96c5
Merge branch 'rmcrackan:master' into master
2025-06-18 12:13:14 -06:00
rmcrackan
0d1cc42ca7
Bugfix #1269 : Chardonnay. Bad filter string causes infinite loop
2025-06-16 13:19:48 -04:00
Michael Bucari-Tovo
ec497f4f81
Use virtualized list to improve large queue performance
2025-05-19 10:40:41 -06:00
rmcrackan
248fdfd2bc
Probably unnecessary paranoid incr ver. Everything looks correct but I've never actually released relying on the ver's 4th part. I'm incrementing just in case
2025-05-10 16:53:04 -04:00
MBucari
35862d619a
Increment version
2025-05-09 21:10:38 -06:00
MBucari
f8ae303417
Fix download error ( #1252 )
2025-05-09 21:07:01 -06:00
rmcrackan
0d24caeac2
incr ver
2025-05-09 21:10:19 -04:00
Michael Bucari-Tovo
ef67ae9d6a
Ask users to clear the accounts when enabling widevine ( #1249 )
2025-05-09 17:52:14 -06:00
Michael Bucari-Tovo
f35c82d59d
Change ApiExtended to always allow provide login option
...
Previously, only some calls to ApiExtended.CreateAsync() would prompt users to login if necessary. Other calls would only work if the account already had a valid identity, and they would throw exceptions otherwise.
Changed ApiExtended so that the UI registers a static ILoginChoiceEager factory delegate that ApiExtended will use in the event that a login is required.
2025-05-09 17:32:12 -06:00
Michael Bucari-Tovo
10c01f4147
Fix occasional error of audio downloads hanging.
2025-05-09 16:32:59 -06:00
Michael Bucari-Tovo
9366b3baca
Default to E-AC-3 spatial audio format.
2025-05-09 13:39:59 -06:00