Recently Written · git

subread-dictionary

Pop-up dictionary for Android that reads Yomitan dictionaries, with local audio

git clone https://github.com/equwal/subread-dictionary

Log | Files | Refs


commit 2ae81665fd27644c680f73686db3c8619df33caa
equwal <truex@equwal.com>
2026-09-26 14:24:52 -0700

Turn on R8, add the F-Droid listing text and recipe, and set the version to 0.2.0

F-Droid builds the app from source and checks it against the signed APK on GitHub (Binaries and AllowedAPKSigningKeys). The fastlane folder now has the title, the descriptions, the icon, and the changelog.

 app/build.gradle.kts                               |   9 ++++--
 fastlane/metadata/android/en-US/changelogs/2.txt   |   1 +
 .../metadata/android/en-US/full_description.txt    |  28 +++++++++++++++++
 fastlane/metadata/android/en-US/images/icon.png    | Bin 0 -> 4676 bytes
 .../metadata/android/en-US/short_description.txt   |   1 +
 fastlane/metadata/android/en-US/title.txt          |   1 +
 fdroid/space.subread.dictionary.yml                |  33 +++++++++++++++++++++
 7 files changed, 70 insertions(+), 3 deletions(-)
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index b787331..b3d85ad 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -24,8 +24,8 @@ android {
         minSdk = 26
         targetSdk = 36
         // Plain numbers, in this file: F-Droid reads them from here to find a new release.
-        versionCode = 1
-        versionName = "0.1.0"
+        versionCode = 2
+        versionName = "0.2.0"
         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
 
         // A link to the Ko-fi page. Google Play is not given it (-PplayStore=true).
@@ -46,7 +46,10 @@ android {
     buildTypes {
         debug { applicationIdSuffix = ".debug" }
         release {
-            isMinifyEnabled = false
+            // R8 removes unused code and resources. F-Droid asks for it.
+            isMinifyEnabled = true
+            isShrinkResources = true
+            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))
             if (signingReady) signingConfig = signingConfigs.getByName("release")
         }
     }
diff --git a/fastlane/metadata/android/en-US/changelogs/2.txt b/fastlane/metadata/android/en-US/changelogs/2.txt
new file mode 100644
index 0000000..1d49769
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/2.txt
@@ -0,0 +1 @@
+An "Anki" button sends a term to SubRead Anki. Other apps can read the terms of a text through a content provider. The list of audio sources shows the Forvo speaker once. The app is smaller: R8 removes code that it does not use.
diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt
new file mode 100644
index 0000000..0927285
--- /dev/null
+++ b/fastlane/metadata/android/en-US/full_description.txt
@@ -0,0 +1,28 @@
+SubRead Dictionary is a pop-up dictionary for Yomitan dictionaries.
+
+<b>How to look up a word</b>
+<ul>
+<li>Select a text in any app and choose "SubRead Dictionary" in the text selection menu.</li>
+<li>Share a text to the app.</li>
+<li>Send a word from SubRead Overlay.</li>
+</ul>
+
+The pop-up opens over the app. It shows each term at the start of the text, the longest term first, with the reading, the pitch accent, the frequency and a button for the audio. A tap on a character of the text looks up the text from that character.
+
+<b>Dictionaries</b>
+Import a Yomitan .zip file (format 3), for example JMdict, Jitendex, a pitch accent dictionary or a frequency list. The order of the dictionaries in the settings is their order in the pop-up.
+
+<b>Audio</b>
+<ul>
+<li>Local audio: choose the android.db file of the Local Audio Server for Yomitan. The app copies it into its folder.</li>
+<li>Remote audio: optional and off by default. Give one URL per line, with {term} and {reading}. The default line is JapanesePod101. A Local Audio Server on your network also works.</li>
+</ul>
+
+<b>Anki</b>
+The "Anki" button of a term sends the term to SubRead Anki, which makes the card.
+
+<b>Other apps</b>
+Other apps can read the terms of a text through a content provider.
+
+<b>Privacy</b>
+Nothing leaves the device, except when a remote audio source is on. Then the word goes to that server.
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png
new file mode 100644
index 0000000..25418f1
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ
diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt
new file mode 100644
index 0000000..4ff4af1
--- /dev/null
+++ b/fastlane/metadata/android/en-US/short_description.txt
@@ -0,0 +1 @@
+Pop-up dictionary for Yomitan dictionaries, from the text menu of any app
diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt
new file mode 100644
index 0000000..932dfde
--- /dev/null
+++ b/fastlane/metadata/android/en-US/title.txt
@@ -0,0 +1 @@
+SubRead Dictionary
diff --git a/fdroid/space.subread.dictionary.yml b/fdroid/space.subread.dictionary.yml
new file mode 100644
index 0000000..cb94ab0
--- /dev/null
+++ b/fdroid/space.subread.dictionary.yml
@@ -0,0 +1,33 @@
+AntiFeatures:
+  NonFreeNet:
+    en-US: Remote audio, optional and off by default, gets the audio of a word from JapanesePod101.
+Categories:
+  - Translation & Dictionary
+License: AGPL-3.0-only
+AuthorName: equwal
+SourceCode: https://github.com/equwal/subread-dictionary
+IssueTracker: https://github.com/equwal/subread-dictionary/issues
+Changelog: https://github.com/equwal/subread-dictionary/releases
+Donate: https://ko-fi.com/truex
+
+AutoName: SubRead Dictionary
+
+RepoType: git
+Repo: https://github.com/equwal/subread-dictionary.git
+Binaries: 
+  https://github.com/equwal/subread-dictionary/releases/download/v%v/SubRead-Dictionary-%v.apk
+
+Builds:
+  - versionName: 0.2.0
+    versionCode: 2
+    commit: v0.2.0
+    subdir: app
+    gradle:
+      - yes
+
+AllowedAPKSigningKeys: e46f72ef28c79489cad0f1eee60cbf7fd3f29b5bff1bb1d82bab1e30427ff44f
+
+AutoUpdateMode: Version
+UpdateCheckMode: Tags
+CurrentVersion: 0.2.0
+CurrentVersionCode: 2
\ No newline at end of file