diff --git a/.github/scripts/create-repo.sh b/.github/scripts/create-repo.sh
index c84762544..ca905c2ff 100755
--- a/.github/scripts/create-repo.sh
+++ b/.github/scripts/create-repo.sh
@@ -21,6 +21,8 @@ for APK in ${APKS[@]}; do
VCODE=$(echo $PACKAGE | grep -Po "versionCode='\K[^']+")
VNAME=$(echo $PACKAGE | grep -Po "versionName='\K[^']+")
NSFW=$(echo $BADGING | grep -Po "tachiyomi.extension.nsfw' value='\K[^']+")
+ HASREADME=$(echo $BADGING | grep -Po "tachiyomi.extension.hasReadme' value='\K[^']+")
+ HASCHANGELOG=$(echo $BADGING | grep -Po "tachiyomi.extension.hasChangelog' value='\K[^']+")
APPLICATION=$(echo "$BADGING" | grep application:)
LABEL=$(echo $APPLICATION | grep -Po "label='\K[^']+")
@@ -51,8 +53,10 @@ for APK in ${APKS[@]}; do
--argjson code $VCODE \
--arg version "$VNAME" \
--argjson nsfw $NSFW \
+ --argjson hasReadme $HASREADME \
+ --argjson hasChangelog $HASCHANGELOG \
--argjson sources "$SOURCE_INFO" \
- '{name:$name, pkg:$pkg, apk:$apk, lang:$lang, code:$code, version:$version, nsfw:$nsfw, sources:$sources}'
+ '{name:$name, pkg:$pkg, apk:$apk, lang:$lang, code:$code, version:$version, nsfw:$nsfw, hasReadme:$hasReadme, hasChangelog:$hasChangelog, sources:$sources}'
done | jq -sr '[.[]]' > index.json
diff --git a/common.gradle b/common.gradle
index 022ebff73..87d95583a 100644
--- a/common.gradle
+++ b/common.gradle
@@ -24,11 +24,23 @@ android {
versionCode extVersionCode
versionName project.ext.properties.getOrDefault("libVersion", "1.2") + ".$extVersionCode"
setProperty("archivesBaseName", "tachiyomi-$pkgNameSuffix-v$versionName")
+ def readmes = project.projectDir.listFiles({ File file ->
+ file.name.equals("README.md") ||
+ file.name.equals("CHANGELOG.md")
+ } as FileFilter)
+ def hasReadme = readmes != null && readmes.any { File file ->
+ file.name.startsWith("README")
+ }
+ def hasChangelog = readmes != null && readmes.any { File file ->
+ file.name.startsWith("CHANGELOG")
+ }
manifestPlaceholders = [
appName : "Tachiyomi: $extName",
extClass: extClass,
extFactory: project.ext.properties.getOrDefault("extFactory", ""),
nsfw: project.ext.properties.getOrDefault("isNsfw", false) ? 1 : 0,
+ hasReadme: hasReadme ? 1 : 0,
+ hasChangelog: hasChangelog ? 1 : 0,
]
}
diff --git a/core/AndroidManifest.xml b/core/AndroidManifest.xml
index 42882ce0e..77ee6b239 100644
--- a/core/AndroidManifest.xml
+++ b/core/AndroidManifest.xml
@@ -9,6 +9,8 @@
+
+
diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/MangaBoxGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/MangaBoxGenerator.kt
index d4d886f4f..c1050d590 100644
--- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/MangaBoxGenerator.kt
+++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/MangaBoxGenerator.kt
@@ -9,7 +9,7 @@ class MangaBoxGenerator : ThemeSourceGenerator {
override val themeClass = "MangaBox"
- override val baseVersionCode: Int = 4
+ override val baseVersionCode: Int = 5
override val sources = listOf(
SingleLang("Mangakakalot", "https://mangakakalot.com", "en", overrideVersionCode = 3),
diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/README.md b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/README.md
new file mode 100644
index 000000000..2e3f59e28
--- /dev/null
+++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/README.md
@@ -0,0 +1,15 @@
+# MangaBox
+
+Table of Content
+- [FAQ](#FAQ)
+
+[Uncomment this if needed; and replace ( and ) with ( and )]: <> (- [Guides](#Guides))
+
+Don't find the question you are look for go check out our general FAQs and Guides over at [Extension FAQ](https://tachiyomi.org/help/faq/#extensions) or [Getting Started](https://tachiyomi.org/help/guides/getting-started/#installation)
+
+## FAQ
+
+#### What do `Page list is empty` and `Source URL has changed` mean?
+The former **Mangabox** extensions have created new entries for many of the manga on their websites. The old entries are obsolete and will not work. To resolve this, [migrate](/help/guides/source-migration/) the manga from the source to itself to get the new entry, or better yet, to a different source entirely to avoid similar errors in the future.
+
+[Uncomment this if needed]: <> (## Guides)
\ No newline at end of file
diff --git a/multisrc/src/main/java/generator/ThemeSourceGenerator.kt b/multisrc/src/main/java/generator/ThemeSourceGenerator.kt
index 7cb4e2504..a12ae39ef 100644
--- a/multisrc/src/main/java/generator/ThemeSourceGenerator.kt
+++ b/multisrc/src/main/java/generator/ThemeSourceGenerator.kt
@@ -131,12 +131,33 @@ ${placeholders.map { "${" ".repeat(28)}${it.key}: \"${it.value}\""}.joinToString
writeAndroidManifest(projectAndroidManifestFile, manifestOverridePath, defaultAndroidManifestPath)
writeSourceClasses(projectSrcPath, srcOverridePath, source, themePkg, themeClass)
+ copyThemeReadmes(userDir, themePkg, projectRootPath)
+
copyThemeClasses(userDir, themePkg, projectRootPath)
copyResFiles(resOverridePath, defaultResPath, source, projectRootPath)
}
}
+ private fun copyThemeReadmes(userDir: String, themePkg: String, projectRootPath: String) {
+ val sourcePath = "$userDir/multisrc/src/main/java/${themeSuffix(themePkg, "/")}"
+ val sourceFile = File(sourcePath)
+ val destinationPath = "$projectRootPath"
+
+ val destinationFile = File(destinationPath)
+ destinationFile.mkdirs()
+
+ sourceFile.list()!!
+ .filter { it.endsWith("README.md") || it.endsWith("CHANGELOG.md") }
+ .forEach {
+ Files.copy(
+ File("$sourcePath/$it").toPath(),
+ File("$destinationPath/$it").toPath(),
+ StandardCopyOption.REPLACE_EXISTING
+ )
+ }
+ }
+
private fun copyThemeClasses(userDir: String, themePkg: String, projectRootPath: String) {
val themeSrcPath = "$userDir/multisrc/src/main/java/${themeSuffix(themePkg, "/")}"
val themeSrcFile = File(themeSrcPath)
diff --git a/src/all/komga/build.gradle b/src/all/komga/build.gradle
index daa7a6d50..2b5af671c 100644
--- a/src/all/komga/build.gradle
+++ b/src/all/komga/build.gradle
@@ -6,7 +6,7 @@ ext {
extName = 'Komga'
pkgNameSuffix = 'all.komga'
extClass = '.KomgaFactory'
- extVersionCode = 36
+ extVersionCode = 37
}
dependencies {
diff --git a/src/all/mangadex/README.md b/src/all/mangadex/README.md
new file mode 100644
index 000000000..1117a66c9
--- /dev/null
+++ b/src/all/mangadex/README.md
@@ -0,0 +1,54 @@
+# MangaDex
+
+Table of Content
+- [FAQ](#FAQ)
+ - [Version 5 API Rewrite](#Version 5 API Rewrite)
+- [Guides](#Guides)
+ - [How can I block particular Scanlator Groups?](#How can I block particular Scanlator Groups?)
+
+Don't find the question you are look for go check out our general FAQs and Guides over at [Extension FAQ](https://tachiyomi.org/help/faq/#extensions) or [Getting Started](https://tachiyomi.org/help/guides/getting-started/#installation)
+
+## FAQ
+
+### Version 5 API Rewrite
+
+#### Why are all my manga saying "Manga ID format has changed, migrate from MangaDex to MangaDex to continue reading"?
+You need to [migrate](https://tachiyomi.org/help/guides/source-migration/) all your MangaDex manga from MangaDex to MangaDex as MangaDex has changed their manga ID system from IDs to UUIDs.
+
+#### Why can I not restore from a JSON backup?
+JSON backups are now unusable due to the ID change. You will have to manually re-add your manga.
+
+## Guides
+
+### How can I block particular Scanlator Groups?
+
+The **MangaDex** extension allows blocking **Scanlator Groups**. Chapters uploaded by a **Blocked Scanlator Group** will not show up in **Latest** or in **Manga feed** (chapters list). For now, you can only block Groups by entering their UUIDs manually.
+
+Follow the following steps to easily block a group from the Tachiyomi MangaDex extension:
+
+A. Finding the **UUIDs**:
+- Go to [https://mangadex.org](https://mangadex.org) and for the Scanlation Group that you wish to block and view their Group Details
+- Using the URL of this page, get the 16-digit alphanumeric string which will be the UUID for that scanlation group
+- For Example:
+ * The Group *Tristan's test scans* has the URL
+ - [https://mangadex.org/group/6410209a-0f39-4f51-a139-bc559ad61a4f/tristan-s-test-scans](https://mangadex.org/group/6410209a-0f39-4f51-a139-bc559ad61a4f/tristan-s-test-scans)
+ - Therefore, their UUID will be `6410209a-0f39-4f51-a139-bc559ad61a4f`
+ * Other Examples include:
+ + Azuki Manga | `5fed0576-8b94-4f9a-b6a7-08eecd69800d`
+ + Bilibili Comics | `06a9fecb-b608-4f19-b93c-7caab06b7f44`
+ + Comikey | `8d8ecf83-8d42-4f8c-add8-60963f9f28d9`
+ + MangaPlus | `4f1de6a2-f0c5-4ac5-bce5-02c7dbb67deb`
+
+B. Blocking a group using their UUID in Tachiyomi MangaDex extension `v1.2.150+`:
+1. Go to → .
+1. Click on **MangaDex** extension and then under your Language of choice.
+1. Tap on the option **Block Groups by UUID** and enter the UUIDs.
+ - By Default, the following groups are blocked:
+ ```
+ Azuki Manga, Bilibili Comics, Comikey & MangaPlus
+ ```
+ - Which are entered as:
+ ```
+ 5fed0576-8b94-4f9a-b6a7-08eecd69800d, 06a9fecb-b608-4f19-b93c-7caab06b7f44,
+ 8d8ecf83-8d42-4f8c-add8-60963f9f28d9, 4f1de6a2-f0c5-4ac5-bce5-02c7dbb67deb
+ ```
\ No newline at end of file
diff --git a/src/all/mangadex/build.gradle b/src/all/mangadex/build.gradle
index 265424192..cff45aa13 100644
--- a/src/all/mangadex/build.gradle
+++ b/src/all/mangadex/build.gradle
@@ -6,7 +6,7 @@ ext {
extName = 'MangaDex'
pkgNameSuffix = 'all.mangadex'
extClass = '.MangaDexFactory'
- extVersionCode = 153
+ extVersionCode = 154
isNsfw = true
}
diff --git a/src/en/mangapark/README.md b/src/en/mangapark/README.md
new file mode 100644
index 000000000..d39c6dad0
--- /dev/null
+++ b/src/en/mangapark/README.md
@@ -0,0 +1,20 @@
+# MangaPark
+
+Table of Content
+- [FAQ](#FAQ)
+
+[Uncomment this if needed; and replace ( and ) with ( and )]: <> (- [Guides](#Guides))
+
+Don't find the question you are look for go check out our general FAQs and Guides over at [Extension FAQ](https://tachiyomi.org/help/faq/#extensions) or [Getting Started](https://tachiyomi.org/help/guides/getting-started/#installation)
+
+## FAQ
+
+### How do I deal with duplicate chapters?
+To solve this issue, follow the below steps.
+
+1. Go to → .
+1. Click on **MangaPark** extension and then **Chapter List Source**.
+1. Choose an option like **Smart list** or **Prioritize source**.
+1. Go back to **MangaPark**'s chapter list and refresh it.
+
+[Uncomment this if needed]: <> (## Guides)
\ No newline at end of file
diff --git a/src/en/mangapark/build.gradle b/src/en/mangapark/build.gradle
index e50ca041f..91d433365 100644
--- a/src/en/mangapark/build.gradle
+++ b/src/en/mangapark/build.gradle
@@ -6,7 +6,7 @@ ext {
extName = 'MangaPark'
pkgNameSuffix = 'en.mangapark'
extClass = '.MangaPark'
- extVersionCode = 22
+ extVersionCode = 23
}
apply from: "$rootDir/common.gradle"
diff --git a/template/README-REMOVED-TEMPLATE.md b/template/README-REMOVED-TEMPLATE.md
new file mode 100644
index 000000000..16150c7a7
--- /dev/null
+++ b/template/README-REMOVED-TEMPLATE.md
@@ -0,0 +1,11 @@
+# Extension name
+
+## Why
+
+Link to the related issue where it is explained why it was removed.
+Or a short description to why it was removed.
+Or both the related issue link and short description to why
+
+---
+
+Don't find the question you are look for go check out our general FAQs and Guides over at [Extension FAQ](https://tachiyomi.org/help/faq/#extensions) or [Getting Started](https://tachiyomi.org/help/guides/getting-started/#installation)
diff --git a/template/README-TEMPLATE.md b/template/README-TEMPLATE.md
new file mode 100644
index 000000000..aa964a37d
--- /dev/null
+++ b/template/README-TEMPLATE.md
@@ -0,0 +1,12 @@
+# Extension name
+
+Table of Content
+- [FAQ](#FAQ)
+
+[Uncomment this if needed; and replace ( and ) with ( and )]: <> (- [Guides](#Guides))
+
+Don't find the question you are look for go check out our general FAQs and Guides over at [Extension FAQ](https://tachiyomi.org/help/faq/#extensions) or [Getting Started](https://tachiyomi.org/help/guides/getting-started/#installation)
+
+## FAQ
+
+[Uncomment this if needed]: <> (## Guides)
\ No newline at end of file