* add countries flags
add flags & simplify/sizing
add flagkit
* add flags to Extensions Filter
* add flags to Sources & Extensions screen
* show language flag in Library
* showing source icon in library
* Change language icon for local source from Folder to Globe
* adjust size & padding for icon & badge
* Setting enable/disable source icon
allow change feed's order manually by moving up/down
partially implement #130
* add feed_order
- add/migrate feed_order column
- auto increament feed_order when adding new feed
- showing feed in order using feed_order
* refactor code to support feedOrder
* swap feed order
* Fix generating feed's order when no feed existed
* feat: banner showing updating status
* showing progress for updating
* showing progress for syncing & backup restoring too
* preferences for progress banner
* Support Pure dark mode
* Tag using elevated style (non pure-dark-mode) and more vibrant outline color (pure-dark-mode)
* More color for various icons
* Color theme for Metadata screen
* Always animated color change
* Always/Only use dominant color for library/update/upcoming cover's background
* Don't always generate color each time cover loaded (library/browse), only update color when new cover changed on detail page
* Fix the spinner background in Edit Manga Info
* Improve manga's backdrop color
Detail:
* Change Cover's color & ratio preference key to AppState
* using ElevatedSuggestionChip with color
* more icon color
* color theme for MetadataViewScreen
* enable animation by default
* Fix: can't turn off theme cover based
* Won't check pref for theme enabled everytime, instead always generate cover's color to run faster later
* Skip generate cover's vibrant color for browsing mangas if already generated, also won't even trying to read ratio for favorite mangas
* Only generate new seed color when cover loaded in detail page
* only use dominantColor for cover when cover is unable to load
* Don't use elevatedSuggestionChip for darkmode and change border color
* EditMangaInfo: Set Spinner's selected item's background color to transparent
* update chip color
* Colors Palette screen
* Support Amoled Dark Mode by upgrading Material-Kolor to 1.7.0
* improve manga's backdrop color
* only generate color while browsing if option is enabled, aslo fixed the case won't update dominant color if cover changed
* always using theme animation
* update translation
* Using MaterialKolor & Pallete to generate MaterialTheme based on seedColor
* Fix MangaActionRow's color
* Merge ImageRequest methods into one
* add backdrop color
* support dynamic color in EnhancedSource's metadata view
* dynamic color for MetadataViewScreen
* dynamic color for all dialogs
* Remove palette buttons
* add settings preference
* Update MaterialKolor version to 1.6.1 to fix DynamicMaterialTheme & Add PalleteStyle
* split DynamicMaterialTheme content
* Missed text color in Tsumino & Cleanup & revert some unneeded changes
* Change icon color to secondary
* color for EditMangaDialog
* Custom Spinner's Dropdown style
* TextSelectionHandle color
* color for add-tag dialog
* setting for Style & Animate
* Palette does not support Hardware bitmap
* using MaterialTheme instead of DynamicMaterialTheme when no need for color animation
* reduce color on backdrop
* save/load manga's cover color & ratio with Preferences
* Trying to decode bitmap directly from response when coverCache is not available
* Update MangaCover.vibrantCoverColor map with new color
* Hide Style & Animate settings if theme-cover-based is not enable
* Only generate color if theme-cover-based is enabled
* seedColor by vibrantColor from MangaCover: setPaletteColor won't needed (almost), only when failed to load vibrantColor from MangaCover
* seedColor uses remember directly to the hashmap to recompose whenever cover is updated/changed. Drop successState.seedColor
* generate favorite manga's color every time, instead of just update ratio
* Move MangaCoverMetadata to coil
* using mangaDetailsRequest for relatedMangaListRequest
* rethrow exception if extension failed to get related mangas
* improve coroutine
* More like these
* Fix missing unique mess up LazyRow/LazyGrid order
- Showing What's New from all Github's release notes
- Add button to show What's Coming from Preview repo
- Add regex to styling Github's comparing link
(cherry picked from commit 06cfba58998fa7d1ff39be80770f16833f81409c)
* Faster loading of related entries
* Enable fetching related entries from site's entry page (things like "More like this", "Recommendations" etc.)
* Improve & fix bugs of algorithm looking for related entries
(cherry picked from commit 54d91c3f71557becd4fc22ec8500e05f79dc48d8)
- Preview version now name Beta, use different package & repo
- Drop syDebugVersion, use commitCount
- Fix Firebase analytics for both Release & Preview build
- Create separate variant for Preview build instead of using syDebugVersion
- Preview version showing changelog_debug.xml
- Release version showing changelog_release.xml
* Work in progress upcoming feature
* Checkpointing WIP upcoming feature
* Functional Upcoming Screen
* Rename UpdateCalendar to UpdateUpcoming
* Converted Strings to resources
* Cleanup
* Fixed detekt issues
* Removed Link icon per @AntsyLich's suggestion.
* Detekt
* Fixed Calendar display on wide form factor devices
* Added Key to upcoming lazycolumn
* Updated tablet mode UI to support two column view
* Updated header creation logic
* Updated header creation logic... again
* Moved stray string to resources
* Fixed PR Comments and query refactor
* Tweaks to query, refactored to flow, comments on calendar
* Switched to Date Formatter
* Cleaned up date formatter
* More Refactor work
* Updated Calendar to support localized week formats
* Fixed year format
* Refactored Header animation
* Moved upcoming FAQ
* Completed YearMonth Migration
* Replaced currentYearMonth with delegate
* Even more cleanup
* cleaned up alignment modifiers
* Click Handler and other refactors
* Removed Wrapped Content Height/Size/extra clips
* Huge Refactor for CalendarDay
* Another cleanup attempt
* Migrated to new mihon.feature.* module pattern
* changed access modifier
* A Bunch of changes from the next round of reviews
* Cleanups
* Cleanup 2
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 72222ad86d6fb328d20eead86c6357833d08c061)
# Conflicts:
# app/src/main/java/eu/kanade/domain/DomainModule.kt
# gradle/libs.versions.toml
* Refactor the ExtensionRepoService to use DTOs
Slightly refactored the `ExtensionRepoService` so it uses a DTO with
`parseAs` to avoid parsing the JSON response by hand.
The default Json instance Injekt provides here has
`ignoreUnknownKeys` enabled, so the `ExtensionRepoMetaDto` only
specifies the meta key of the response content.
The extension function `toExtensionRepo` allows for mapping the new
DTO to the `domain` `ExtensionRepo` data class.
* Implement feedback
- Removed SerialName of the ExtensionRepoMetaDto property and renamed
it `meta`, same as the incoming attribute.
- Added a more general catch clause that also logs the occurring
Exception
Detekt likes to complain about TooGenericExceptionCaught, hence the
Suppress annotation on the function.
(cherry picked from commit 8c437ceecf3c5d8d944a70439d3549e21d751736)
* WIP Extension Repo DB Support
* Wired in to extension screen, browse settings screen
* Detekt changes
* Ui tweaks and open in browser
* Migrate ExtensionRepos on Update
* Migration Cleanup
* Slight cleanup / error handling
* Update ExtensionRepo from Repo.json during extension search.
Added Manual refresh in extension repos page.
* Split repo fetching into separate API module, major refactor work
* Removed development strings
* Moved migration to #3
* Fixed rebase
* Detekt changes
* Added Replace Repository Dialog
* Cleanup, removed platform specific code, PR comments
* Removed extra function, reverted small change
* Detekt cleanup
* Apply suggestions from code review
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Fixed error introduced in cleanup
* Tweak for multiline when
* Moved getCount() to flow
* changed getCount to non-suspend, used property delegation
* Apply suggestions from code review
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Fixed formatting with updated comment string
* Big wave of PR comments, renaming/other tweaks
* onOpenWebsite changes
* onOpenWebsite changes
* trying to make single line
* Renamed ExtensionRepoApi.kt to ExtensionRepoService.kt
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 4b4e46851083c29ca412c114b1b96136fcc21442)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
# data/src/main/sqldelight/tachiyomi/migrations/3.sqm
# Conflicts:
# app/src/main/java/eu/kanade/domain/extension/interactor/CreateExtensionRepo.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
* feat: db changes to accommodate new syncing logic.
Using timestamp to sync is a bit skewed due to system clock etc and therefore there was a lot of issues with it such as removing a manga that shouldn't have been removed. Marking chapters as unread even though it was marked as a read. Hopefully by using versioning system it should eliminate those issues.
* chore: add new line.
* chore: remove isSyncing from Chapter/Manga model.
* chore: remove isSyncing leftover.
* chore: remove isSyncing.
* refactor: remove isSync guard.
Just use it directly to 1 now since we don't have the isSyncing field in Manga or Chapter.
* Lint and stuff
* Add missing ,
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 4ae9dbe52487185ef9ee25f58fabe5025bb2278b)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt
# data/src/main/java/tachiyomi/data/chapter/ChapterRepositoryImpl.kt
# data/src/main/sqldelight/tachiyomi/migrations/2.sqm
# domain/src/main/java/tachiyomi/domain/manga/model/MangaUpdate.kt
* Add custom thumbnail url. Support backup & restore
- add custom thumbnail url in edit info/custom
- include it in backup n restore
* increase chop char
* edit chop char again to match screenshoot
* tweak truncating middle part
* apply edited cover to history, updates , others
* simplify placeholder logic
---------
Co-authored-by: jobobby04 <jobobby04@users.noreply.github.com>
- Accept full URL as input instead, which allows for non-GitHub
- Remove automatic CDN fallback in favor of adding that as an external repo if needed
(cherry picked from commit 9c899e97a97480545d022974ffd3ea1248634155)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
Occurs if manga.lastUpdate has never been set yet.
(cherry picked from commit 22589a9c3056312dcbd0dfca08b53987cbc4a73d)
# Conflicts:
# app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt
I didn't realize the package name change would break compatibility with forks
that still have the old package names...
(cherry picked from commit 4b208fc7ce95fb3b3746446da54351bcead0533c)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupFlatMetadata.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupSavedSearch.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/metadata/BackupSearchMetadata.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/metadata/BackupSearchTag.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/metadata/BackupSearchTitle.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt
This is sort of a workaround for sources that tend to only give you the first few and
most recent few chapters, which would have been 28 day intervals before due to
the big gap in the middle.
(cherry picked from commit b9fd416fc665fdb07c11ebeb13e3dbf918dfe479)
Some behavior changes:
- It prioritizes new entries, then anything more recently updated
- It copies the more recently updated entry's metadata (description, thumbnail, etc.)
(cherry picked from commit 58daedc89ee18d04e7af5bab12629680dba4096c)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/source/model/SMangaExtensions.kt
We just always create up to 4 now to simplify it, given the addition of syncing
is going to make this section pretty busy.
(cherry picked from commit e3b70ca08d1c5a09a448891ff66102fd696d7098)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreator.kt
* open manga and chapter using URL
* removing unnnecessary logs
* Resolving comments
* Resolving comments
(cherry picked from commit f84868a2641578b7e07719d8f580e4668804fd50)
Closes#1652
Also removes the ability to trigger refreshes for the entire library or
as part of a library update as it should no longer be needed. Opening
the tracking sheet already refreshes the data too, so stale data is
irrelevant there.
Also closes#4775 since it would no longer be relevant.
(cherry picked from commit 489d22720a4343f198c81fe10f69d5b212bfc41a)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
Also limit the dates we look at to most recent 10 distinct dates only. Closes#9930
(cherry picked from commit 6663abebaf69241741d0702331857951834ba806)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
These are basically 1-to-1 replacements for the existing RxJava APIs.
This will make the initial migration off of RxJava simpler. We'll
revisit the actual call flows in followup versions of the API.
(cherry picked from commit 26c5d761da4ba577481f41e63f03952b8a6c323f)
# Conflicts:
# data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt
# source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt
# source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSourceFetcher.kt
Should be better at incremental builds.
To format, run `./gradlew ktlintFormat`.
(cherry picked from commit d29b7c4e5735dc137d578d3bcb3da1f0a02573e8)
# Conflicts:
# buildSrc/src/main/kotlin/tachiyomi.lint.gradle.kts
# data/src/main/java/tachiyomi/data/manga/MangaMapper.kt
# domain/src/main/java/tachiyomi/domain/library/model/LibrarySortMode.kt
# domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
# domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt
# presentation-core/src/main/java/tachiyomi/presentation/core/components/CollapsibleBox.kt
* Add Predict Interval Test
* Get mangas next update and interval in library update
* Get next update and interval in backup restore
* Display and set intervals, nextUpdate in Manga Info
* Move logic function to MangeScreen and InfoHeader
Update per suggestion
---------
Co-authored-by: arkon <arkon@users.noreply.github.com>
(cherry picked from commit cb639f4e90121b98221ba7358108200c46b6657f)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/manga/components/MangaDialogs.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
* feat: added migrations.
* feat: create triggers, account for new installs.
* feat: update mappers to include the new field.
* feat: update backupManga and backupChapter.
Include the new fields to be backed up as well.
* feat: add sql query to fetch all manga with `last_favorited_at` field.
* feat: version bump.
* chore: revert and refactor.
* chore: forgot to lower case the field name.
* chore: added getAllManga query as well renamed `fetchMangaWithLastFavorite` to `getMangasWithFavoriteTimestamp`
* chore: oops that's not meant to be there.
* feat: back fill and set last_modified_at to not null.
* chore: remove redundant triggers.
* fix: build error, accidentally removed insert.
* fix: build error, accidentally removed insert.
* refactor: review pointer, make fields not null.
(cherry picked from commit a577f5534f31086174b1cc851d8b489d69f557e8)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt
# data/src/main/java/tachiyomi/data/manga/MangaMapper.kt
# data/src/main/sqldelight/tachiyomi/data/mangas.sq
# data/src/main/sqldelight/tachiyomi/migrations/25.sqm
# domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt
There seems to be little value in this feature, and juggling flag masks is annoying.
Per-category sorting is still a thing, but could be refactored away from the flag in the feature.
(cherry picked from commit 405a75438a61770a12292cc87c0fa36e16668124)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
# domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayModeForCategory.kt
# domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt
Still limits to things within the past 3 months though.
Closes#9554
(cherry picked from commit 4c65c2311e09bf5dcb77327c415a6fddd12123c5)
# Conflicts:
# data/src/main/java/tachiyomi/data/updates/UpdatesRepositoryImpl.kt
# domain/src/main/java/tachiyomi/domain/updates/interactor/GetUpdates.kt
* Add Grace Period value and settings
* Add functions to calculate nextUpdate
* update per review
* Move more into SetMangaUpdateInterval, keep wrapper
(cherry picked from commit c90f3449108a8362fea1ee9070979b5a14be9be5)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
# domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
SourceData was replaced with direct StubSource usage but the param order was changed without changing the usage; fixing the param order as such.
(cherry picked from commit 4395202703cb2dbe861a189395c99b210d627ac7)
* added chapter swipe
* Rework corner animtion
* Update i18n/src/main/res/values/strings.xml
Co-authored-by: arkon <arkon@users.noreply.github.com>
* Replace LTR/RTL with Start/End layout
* Added label to the animation so the warning will go away
* Getting rid of the swipe threshold setting
* adding disabled option, renaming stuff, other stuff?
* Getting rid of the snackbar
* Getting rid of unecessary strings
* changing enum names as requested
* Renaming Raio to Ratio (I need a better keyboard as well -__-)
* Replacing error with download icon and action
* backup
* minor cleanup
* fixing an nasty edge case
* fixing mistakes in the previous conflict
* space
* fixing bug
fixed bug where the user could dismiss already dismissed item leading to item getting stuck
* fixing lint errors
* fixing lints (hopefully)
* Added "swipe disabled" to the list of actions
* Replacing string value and moving value as requested
* replacing rest of the strings with generic ones
---------
Co-authored-by: arkon <arkon@users.noreply.github.com>
(cherry picked from commit a8f17a3fabae7070a353661873c7a5ae1ae23eca)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt
# app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
# domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
This partially reverts commit 2769525b2c12547b8dc29b1209ea3bc5d22f1e3f.
Keeps the change to silently ignore spliting errors since it falls back to
the original images in those cases.
(cherry picked from commit ac0596a53d74561ad5174db1938c16049a65dd18)
Includes side effects:
- No longer need to restart app for user agent string change to take effect
- parseAs extension function requires a Json instance in the calling context, which doesn't necessarily need to be the default one provided by Injekt
(cherry picked from commit 93523ef50b80ef294866bfb0da54e236cdf2d9f6)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt
# core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
# core/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt
# domain/build.gradle.kts
# source-api/build.gradle.kts
To keep the commit from being 100+ files the interactors wasn't moved.
The domain module like the data module uses `tachiyomi` instead of `eu.kanade.tachiyomi` for package names
(cherry picked from commit d3a73fc22849a915483bea03fcd7c20834b1f4d8)
# Conflicts:
# app/src/main/java/eu/kanade/domain/category/interactor/SetSortModeForCategory.kt
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt