yomitan_anki_conf

Flib-club

Browser companion for the AnkiConf workflow. Word lookup + video-clip examples pulled from a local Core service + one-click Anki cards with auto-attached clips.

A focused fork of Yomitan. Not a general-purpose popup dictionary — this exists to support a specific research-driven language-learning workflow built around AnkiConf.

What this fork adds on top of Yomitan

Who this is for

Users of AnkiConf. If you don’t run AnkiConf Core locally, Flib-club still works as a popup dictionary (the Yomitan baseline) — but the features above are gated on the Core. If you’re not building this specific Anki-driven workflow, you almost certainly want upstream Yomitan.

Architecture (one local service, one URL)

The extension talks to one user-configurable endpoint (default http://127.0.0.1:8777). The AnkiConf Core service at that endpoint:

So the extension only declares one host in Settings, and AMO/Chrome Web Store disclosure is a single line.

Build

For AMO reviewers reproducing the submitted Firefox extension: see BUILDING.md — covers tested OS / Node / npm versions, prerequisite install links, the exact build commands, output mapping (which zip = which submission), reproducibility verification, and the no-obfuscation/no-minification stance.

Quick path for contributors — use the wrapper script (it handles npm install, version bumping, and unpacks zips into ./builds/unpacked/yomitan-<variant>/):

./scripts/build-all.sh 0.3.1           # build all variants at given version
./scripts/build-all.sh 0.3.1 --clean   # wipe builds/ first
./scripts/build-all.sh --no-unpack     # zips only (default version 0.0.0.0)

Pass 3-part (0.3.1 → padded to 0.3.1.0) or 4-part (0.3.1.0) versions; both work.

Output zips: yomitan-chrome.zip, yomitan-chrome-dev.zip, yomitan-edge.zip, yomitan-firefox.zip, yomitan-firefox-dev.zip.

builds/cu is a symlink to builds/unpacked/yomitan-chrome-dev — Chrome’s “Load unpacked” should point at it once and stay; each build-all.sh run refreshes what’s behind the symlink automatically.

Dictionary pair (EN/RU)

The extension pairs wty-en-en with flibooster-en-ru. Both zips are built here from anki_conf’s data files; anki_conf’s code is not run. By default both sides come from dict_base.db (--ru-source dict); --ru-source journal builds the Russian side from the enrich.db translation journal instead:

npm run build:dictionaries                       # → builds/dictionaries/<revision>/
npm run build:dictionaries -- --dict <dict_base.db>
npm run build:dictionaries -- --ru-source journal --dict <dict_base.db> --journal <enrich.db>
npm run build:dictionaries -- --verify builds/dictionaries/<revision>
npm run build:dictionaries -- --help

scripts/build-all.sh runs it too and fails if the sources are missing (--no-dictionaries skips it). It is not part of npm test. Whenever anki_conf changes its enrich code, re-run the parity check (npm run check:dictionary-parity) — see docs/development/dictionary-pair.md.

Diagnostic check

If something looks wrong in the browser, run:

./scripts/yomitan-check.sh                  # 30 checks across CSS/JS/build
./scripts/yomitan-check.sh --bump           # bump manifest + fingerprint

The script verifies that every source-of-truth pattern (CSS rules with !important, SVG icons with xmlns, VTT highlight injection, the unified URL fallback in backend, the builds/cu symlink, etc.) is intact AND that every built artifact in builds/unpacked/ matches the source. Each commit’s BUILD_FINGERPRINT is logged in the popup-iframe DevTools console on first panel mount; if you see an older value than the source, Chrome’s chrome-extension:// asset cache is stale — close all extension tabs, Reload from chrome://extensions, reopen.

Install (unsigned dev builds)

Browser How
Chrome / Opera / Brave / Vivaldi / Edge chrome://extensions → Developer Mode → Load unpacked → ./builds/cu. Or launch with --load-extension=/abs/path/to/builds/cu.
Firefox Developer Edition / Nightly about:config → xpinstall.signatures.required = false → open the firefox-dev XPI.
Firefox release / ESR Install from addons.mozilla.org.

Releases

Push a tag matching v* (e.g. v1.0.0) → CI builds all five variants at that version and uploads them to the configured Cloudflare R2 bucket. URLs are written to the GitHub Release notes.

Required GitHub Secrets: R2_ACCOUNT_ID, R2_BUCKET, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_PUBLIC_BASE_URL.

Community

Support the project

Like Flib-club? You can thank the author on Boosty.

QR code for donations on Boosty

License

GPL-3.0-or-later — see LICENSE. Built on top of Yomitan; upstream copyright remains intact in all files that originated upstream.

The dictionaries wty-en-en and flibooster-en-ru are a separate work. They contain text from Wiktionary by Wiktionary contributors, obtained through Kaikki and wty. That text was converted, filtered, edited and translated into Russian, and is distributed under CC BY-SA 4.0. Quotes from video subtitles in entries added by Flibooster are not covered by this license. They belong to their rights holders.