* Implement SyncYomi
* Add ability to select what to sync
* Properly fix default category bug
* Add periodic sync
* Add PostgreSQL support
* Deschedule previous task
* Check if SyncYomi is enabled in syncData function
* Don't allow multiple syncs at the same time
* Convert SyncYomiSyncService to object
* Make startSync non-suspend
* Return a result from startSync
* Sync before library update
* Improvements
* Use NetworkHelper client
* Lint
* Use measureTime
* Database improvements
- Move entire sync operation into a single transaction
- Stop loading all manga to memory
* Revert "Database improvements"
This reverts commit bee8d214c3.
* Actual database improvements
* Remove runBlocking
* Remove title check
* Update updateNonFavorites function
* Update timeout code
* Improve PostgreSQL query
* Create lastSyncState variable
* Create lastSyncStatus query
* Convert lastSyncState to StateFlow
* Create lastSyncStatusChange subscription
* Replace backupRestoreStatus with backupRestoreId
* Add startDate and endDate
* Add logs for sync start and end
* Handle all errors in syncData
* Change category restore function to match Mihon's behavior
* Fix comment
* Remove duplicate BackupMangaHandler.backup call
* Remove duplicated log
* Rename subscription to syncStatusChanged
* Use same flags for restoring
* Update syncInterval config to use DurationSetting
* Update sync scheduling logic
* Reorder conditions to reduce database calls
* Prevent deleted ghost chapters from reappearing during sync
jobobby04/TachiyomiSY#1575
* Improve sync merging categories
jobobby04/TachiyomiSY#1559
* Make columns not null
* Improve H2 triggers
* Add documentation
* Switch to JCEF
This is a full implementation, but it does not yet include downloading
CEF as KCEF did
* Download CEF automatically
* Handle and propagate CEF init errors
* Lint
* Simplify jcef version extract
* CEF: Download async
* Copy StartupAsync to support handling errors
Startup failures are simply swallowed, since they are recorded in the
future, but there is no way to get that exception
* CEF: Search for release file recursively
On Mac, the file is buried a bit deeper than first level, like on Win
and Linux
* KcefWebViewProvider: Suppress deprecation
We need to send those events, even if they are deprecated
* Update readme
* Optimize imports
* Suggestion
Co-authored-by: Mitchell Syer <syer10@users.noreply.github.com>
* Refactor: stick to `Path` instead of `File`
Also extracts the downloading of CEF to a separate method
* Lint
* Support disabling CEF
Co-authored-by: Kolby Moroz Liebl <31669092+kolbyml@users.noreply.github.com>
* Move JBR version to build constants
Allows embedding into Manifest so docker can later extract the proper version
* Create test to verify JCEF dependency matches downloaded JBR
* Update server/src/main/kotlin/suwayomi/tachidesk/server/util/CEFManager.kt
Co-authored-by: Mitchell Syer <Syer10@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Mitchell Syer <Syer10@users.noreply.github.com>
* Fix compile, apply Path suggestions
* Download progress
* Lint
* Fix exception on non-posix
* Delete recursively
Others can be non-empty
* Support disabling CEF at will
Not really functional, but nice
* Fix test
* Exclude masstest unless explicitly requested
* PR-CI: Run tests
* Add Changelog entry
---------
Co-authored-by: Mitchell Syer <syer10@users.noreply.github.com>
Co-authored-by: Kolby Moroz Liebl <31669092+kolbyml@users.noreply.github.com>
The "download conversions headers" caused a SerializationException.
kotlinx.serialization.SerializationException: 'null' is not supported as the value of collection types in ProtoBuf
* Move the "group" arg at the second position after "protoNumber"
To make it consistent for all settings
* Improve server config non privacy safe setting handling
---------
Co-authored-by: Mitchell Syer <Syer10@users.noreply.github.com>
* Fix typo in setting validation error message
* Convert value to internal type before validating it
* Only update setting in case value is valid
* Ignore settings validation errors on backup restore
* Remove potential not privacy safe value from logs
* Remove koreader-sync credentials from config
These are supposed to be set via the login/logout mutations and are not meant to be set manually by the user. Thus, they are not really settings and do not belong to the config
* Reduce log levels of KoreaderSyncService
* Add backup flags to auto backups
* Mark ServerConfig properties as deprecated
---------
Co-authored-by: Mitchell Syer <Syer10@users.noreply.github.com>
* Add way to exclude settings from backups
* Exclude flaresolverrEnabled
* Exclude usernames/passwords
* Exclude writing deprecated settings to the backup
* Exclude AuthMode
* refactor(kosync): introduce differentiated sync strategies
Replaces the single `koreaderSyncStrategy` setting with `koreaderSyncStrategyForward` and `koreaderSyncStrategyBackward`. This allows users to define distinct conflict resolution behaviors based on whether the remote progress is newer or older than the local progress.
The `KoreaderSyncStrategy` enum has been simplified to `KoreaderSyncConflictStrategy` with four clear options: `PROMPT`, `KEEP_LOCAL`, `KEEP_REMOTE`, and `DISABLED`. The ambiguous `SILENT` option is removed, as its behavior is now implicitly covered by selecting `KEEP_REMOTE` for forward syncs and `KEEP_LOCAL` for backward syncs.
The legacy `koreaderSyncStrategy` setting is now deprecated and is seamlessly migrated to the new dual-strategy system using `MigratedConfigValue`, ensuring backward compatibility for existing user configurations.
* fix(kosync): correct proto numbers and setting order for sync strategies
* fix(kosync): proto number 78 to 68
* fix(server): migrate KOReader sync strategy during settings cleanup
Add migration logic to convert the old `server.koreaderSyncStrategy` key
into the new `server.koreaderSyncStrategyForward` and
`server.koreaderSyncStrategyBackward` keys during server setup.
* Support PostgreSQL Databases
* Set the database Schema
* See if we can test postgres
* Another test
* Disable node container
* Update database when changed
* Simplify test workflow
* Only exit on failed migrations
* Run the first databaseUp sync
* Map the port
* Use absolute path for LD_PRELOAD
* Timeout after 1m
* Open the server in both database configurations
* Only exit on migration failed in ci
* Lint
* Use new ServerConfig configuration
* Cleanup graphql setting mutation
* Validate values read from config
* Generate server-reference.conf files from ServerConfig
* Remove unnecessary enum value handling in config value update
Commit df0078b725 introduced the usage of config4k, which handles enums automatically. Thus, this handling is outdated and not needed anymore
* Generate gql SettingsType from ServerConfig
* Extract settings backup logic
* Generate settings backup files
* Move "group" arg to second position
To make it easier to detect and have it at the same position consistently for all settings.
* Remove setting generation from compilation
* Extract setting generation code into new module
* Extract pure setting generation code into new module
* Remove generated settings files from src tree
* Force each setting to set a default value