Recently Written · git

subplz-web

git clone https://github.com/equwal/subplz-web

Log | Files | Refs


commit 227ebc0362b95b632ef1b64f6ab40a25ff0f43af
equwal <truex@equwal.com>
2026-09-26 12:51:09 -0700

Link the other sites and apps of the author

The footer of the book page and of the Subrep page lists the other sites and apps. The README has a More projects section.

 README.md                 | 23 +++++++++++++++++++++++
 frontend/index.html       | 27 +++++++++++++++++++++++++++
 frontend/subrep.html      | 30 ++++++++++++++++++++++++++++++
 tests/test_cross_links.py | 21 +++++++++++++++++++++
 4 files changed, 101 insertions(+)
diff --git a/README.md b/README.md
index bf1dd17..c0f24b7 100644
--- a/README.md
+++ b/README.md
@@ -529,6 +529,29 @@ restarts at 0% for every chapter.
 Single files longer than about four hours can exhaust RAM, per upstream. Prefer
 chaptered `m4b`, or a folder of per-chapter files.
 
+## More projects
+
+- SubRead is also [for Android](https://github.com/equwal/subread-android/releases/latest),
+  [for YouTube](https://github.com/equwal/subread-extension/releases/latest)
+  and [for KOReader](https://github.com/equwal/subread.koplugin).
+- [SubRead Overlay](https://github.com/equwal/subread-overlay/releases/latest): subtitle lines over any Android media player.
+- [SubRead Dictionary](https://github.com/equwal/subread-dictionary/releases/latest): a pop-up dictionary for Android that reads Yomitan dictionaries.
+- [SubRead Anki](https://github.com/equwal/subread-anki): one tap makes an Anki card from any Android app.
+- [Subrep](https://github.com/equwal/subrep-android/releases/latest): live captions of the sound of your phone.
+- [Book Simulator](https://booksimulator.com/): a reading room for Aozora Bunko and Project Gutenberg books.
+- [honjimaku.com](https://honjimaku.com/): subtitles for Japanese audiobooks.
+- [sbm Sync](https://sbmsync.com/): your bookmarks, the same on every device,
+  with [sbm](https://github.com/equwal/sbm) for dmenu,
+  [sbm for Android](https://github.com/equwal/sbm-android/releases/latest)
+  and the [sbm add-on](https://github.com/equwal/sbm-extension/releases/latest) for Firefox and Chrome.
+- [Rebind](https://github.com/equwal/rebind/releases): remap the hardware buttons of e-ink readers and Android,
+  with [Ink Recents](https://github.com/equwal/ink-recents/releases/latest),
+  [Ink Dim](https://github.com/equwal/ink-dim/releases/latest)
+  and [Ink Update](https://github.com/equwal/ink-update/releases/latest).
+- [dickt.store](https://dickt.store/): language-learning tools, flashcards and web toys.
+- [hentaibun.online](https://hentaibun.online/): learn kanbun and kobun.
+- [Recently Written](https://recentlywritten.com/): the blog, and a list of [all projects](https://recentlywritten.com/projects.html).
+
 ## Licence
 
 AGPL-3.0: see `LICENSE`. You may use, change and host this, and you must give
diff --git a/frontend/index.html b/frontend/index.html
index 949011b..08ff121 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -195,6 +195,33 @@
     <a href="https://github.com/equwal/subread-android/releases/latest" target="_blank" rel="noopener">Android app</a> ·
     <a href="https://ko-fi.com/truex" target="_blank" rel="noopener">Support on Ko-fi</a>
   </p>
+  <nav class="muted small" aria-label="More sites and apps">
+    <p>More sites and apps:
+      <a href="https://booksimulator.com/" target="_blank" rel="noopener" title="A reading room for Aozora Bunko and Project Gutenberg books.">Book Simulator</a> ·
+      <a href="https://honjimaku.com/" target="_blank" rel="noopener" title="Subtitles for Japanese audiobooks.">honjimaku.com</a> ·
+      <a href="https://sbmsync.com/" target="_blank" rel="noopener" title="Your bookmarks, the same on every device.">sbm Sync</a> ·
+      <a href="https://dickt.store/" target="_blank" rel="noopener" title="Language-learning tools, flashcards and web toys.">dickt.store</a> ·
+      <a href="https://hentaibun.online/" target="_blank" rel="noopener" title="Learn kanbun and kobun.">hentaibun.online</a> ·
+      <a href="https://mowimypopol.online/" target="_blank" rel="noopener" title="Archival study materials for Polish.">mowimypopol.online</a> ·
+      <a href="https://alljapanesealltheti.me/" target="_blank" rel="noopener" title="All Japanese All The Time.">AJATT mirror</a> ·
+      <a href="https://recentlywritten.com/" target="_blank" rel="noopener" title="The blog.">Recently Written</a>
+    </p>
+    <p>Apps:
+      <a href="https://github.com/equwal/subread-overlay/releases/latest" target="_blank" rel="noopener">SubRead Overlay</a> ·
+      <a href="https://github.com/equwal/subread-dictionary/releases/latest" target="_blank" rel="noopener">SubRead Dictionary</a> ·
+      <a href="https://github.com/equwal/subread-anki" target="_blank" rel="noopener">SubRead Anki</a> ·
+      <a href="https://github.com/equwal/subread-extension/releases/latest" target="_blank" rel="noopener">SubRead for YouTube</a> ·
+      <a href="https://github.com/equwal/subread.koplugin" target="_blank" rel="noopener">SubRead for KOReader</a> ·
+      <a href="https://github.com/equwal/subrep-android/releases/latest" target="_blank" rel="noopener">Subrep</a> ·
+      <a href="https://github.com/equwal/sbm-android/releases/latest" target="_blank" rel="noopener">sbm for Android</a> ·
+      <a href="https://github.com/equwal/sbm-extension/releases/latest" target="_blank" rel="noopener">sbm add-on</a> ·
+      <a href="https://github.com/equwal/rebind/releases" target="_blank" rel="noopener">Rebind</a> ·
+      <a href="https://github.com/equwal/ink-recents/releases/latest" target="_blank" rel="noopener">Ink Recents</a> ·
+      <a href="https://github.com/equwal/ink-dim/releases/latest" target="_blank" rel="noopener">Ink Dim</a> ·
+      <a href="https://github.com/equwal/ink-update/releases/latest" target="_blank" rel="noopener">Ink Update</a> ·
+      <a href="https://recentlywritten.com/projects.html" target="_blank" rel="noopener">All projects</a>
+    </p>
+  </nav>
 </footer>
 
 <dialog id="signin-dialog" class="modal">
diff --git a/frontend/subrep.html b/frontend/subrep.html
index bc85785..1d4aa2b 100644
--- a/frontend/subrep.html
+++ b/frontend/subrep.html
@@ -89,6 +89,36 @@
       free. It makes the captions on the phone.</p>
   </section>
 </main>
+<footer>
+  <nav class="muted small" aria-label="More sites and apps">
+    <p>More sites and apps:
+      <a href="/" title="Read along with an audiobook.">SubRead</a> ·
+      <a href="https://booksimulator.com/" target="_blank" rel="noopener" title="A reading room for Aozora Bunko and Project Gutenberg books.">Book Simulator</a> ·
+      <a href="https://honjimaku.com/" target="_blank" rel="noopener" title="Subtitles for Japanese audiobooks.">honjimaku.com</a> ·
+      <a href="https://sbmsync.com/" target="_blank" rel="noopener" title="Your bookmarks, the same on every device.">sbm Sync</a> ·
+      <a href="https://dickt.store/" target="_blank" rel="noopener" title="Language-learning tools, flashcards and web toys.">dickt.store</a> ·
+      <a href="https://hentaibun.online/" target="_blank" rel="noopener" title="Learn kanbun and kobun.">hentaibun.online</a> ·
+      <a href="https://mowimypopol.online/" target="_blank" rel="noopener" title="Archival study materials for Polish.">mowimypopol.online</a> ·
+      <a href="https://alljapanesealltheti.me/" target="_blank" rel="noopener" title="All Japanese All The Time.">AJATT mirror</a> ·
+      <a href="https://recentlywritten.com/" target="_blank" rel="noopener" title="The blog.">Recently Written</a>
+    </p>
+    <p>Apps:
+      <a href="https://github.com/equwal/subread-android/releases/latest" target="_blank" rel="noopener">SubRead for Android</a> ·
+      <a href="https://github.com/equwal/subread-overlay/releases/latest" target="_blank" rel="noopener">SubRead Overlay</a> ·
+      <a href="https://github.com/equwal/subread-dictionary/releases/latest" target="_blank" rel="noopener">SubRead Dictionary</a> ·
+      <a href="https://github.com/equwal/subread-anki" target="_blank" rel="noopener">SubRead Anki</a> ·
+      <a href="https://github.com/equwal/subread-extension/releases/latest" target="_blank" rel="noopener">SubRead for YouTube</a> ·
+      <a href="https://github.com/equwal/subread.koplugin" target="_blank" rel="noopener">SubRead for KOReader</a> ·
+      <a href="https://github.com/equwal/sbm-android/releases/latest" target="_blank" rel="noopener">sbm for Android</a> ·
+      <a href="https://github.com/equwal/sbm-extension/releases/latest" target="_blank" rel="noopener">sbm add-on</a> ·
+      <a href="https://github.com/equwal/rebind/releases" target="_blank" rel="noopener">Rebind</a> ·
+      <a href="https://github.com/equwal/ink-recents/releases/latest" target="_blank" rel="noopener">Ink Recents</a> ·
+      <a href="https://github.com/equwal/ink-dim/releases/latest" target="_blank" rel="noopener">Ink Dim</a> ·
+      <a href="https://github.com/equwal/ink-update/releases/latest" target="_blank" rel="noopener">Ink Update</a> ·
+      <a href="https://recentlywritten.com/projects.html" target="_blank" rel="noopener">All projects</a>
+    </p>
+  </nav>
+</footer>
 <script type="module">
   const $ = (id) => document.getElementById(id);
   const say = (text) => { $('note').textContent = text; };
diff --git a/tests/test_cross_links.py b/tests/test_cross_links.py
new file mode 100644
index 0000000..3f6b5fb
--- /dev/null
+++ b/tests/test_cross_links.py
@@ -0,0 +1,21 @@
+"""The pages link the other sites and apps of the author, but not SubRead
+itself."""
+
+from __future__ import annotations
+
+import pytest
+
+OTHERS = (
+    'href="https://booksimulator.com/"',
+    'href="https://sbmsync.com/"',
+    'href="https://github.com/equwal/subread-overlay/releases/latest"',
+    'href="https://recentlywritten.com/projects.html"',
+)
+
+
+@pytest.mark.parametrize("path", ["/", "/subrep.html"])
+def test_the_page_links_the_other_sites_and_apps(client, path):
+    page = client.get(path).text
+    for link in OTHERS:
+        assert link in page, (path, link)
+    assert 'href="https://subread.space/"' not in page, path