Skip to content

v3.2.0

Choose a tag to compare

@svdC1 svdC1 released this 04 Jul 18:37
· 81 commits to main since this release

This release turns the dictionary into a full study hub (kanji stroke-order animations,
radical search, English lookup, pronunciation audio)
and makes Mirumoji installable as
an app on every device via a one-time certificate install

Breaking Changes

  • REST API → The dictionary lookup response was restructured to carry the richer
    data below (senses with multiple glosses and readable tags, examples with translations,
    furigana, fuller kanji profiles)
    . Clients of /dict/query and /dict/analyze need to
    adopt the new shape

Added

  • Frontend → The Dictionary page is now a study hub. One search bar covers
    Japanese words, wildcard patterns, English meanings, and finding kanji by their
    radicals (matching all or any of them), a breadcrumb trail connects every view, and
    the landing page offers your recent lookups plus kanji and words to explore

  • Frontend → Kanji show animated stroke-order diagrams that draw themselves
    (with replay, step, and speed controls on the kanji page), their radical components,
    pronunciation clips, words that use the kanji, and example sentences

  • Frontend → Word entries show accurate furigana above the headword, senses with
    plain-language grammar tags instead of dictionary codes, common-word and JLPT badges,
    antonym and see-also links, and example sentences with English translations

  • Frontend → The word pop-up in the player was reorganized into collapsible
    sections (Entry, Names, Kanji, Examples, Grammar) with playable stroke animations,
    grammar terms that explain themselves on hover, and a link into the Dictionary

Changed

  • Server → Dictionary lookups run on kotobase 0.4.1 and use the sentence context
    of a clicked word (its reading and part of speech) to rank the right entry first, so
    words that share a written form resolve to the reading you actually clicked

  • Docker Images → The server images now bake the pronunciation audio pack
    alongside the dictionary database

Fixed

  • PWA → Mirumoji can be installed as an app (with offline interface caching) on
    phones and other devices. The server now runs a persistent local certificate
    authority, and installing its certificate once per device (downloadable from the
    running app, see the new docs guide)
    makes the connection fully trusted. The app couldn't
    be installed before because browsers require a fully trusted certificate for service
    worker registration
Details

Dictionary Backend

Kotobase 0.4 is a rewrite of the package exposing Pydantic v2
DTOs with substantially more data, which the server and frontend now make available

New Data

View All Attributions At The Third-Party Notice Section

Endpoints

The server flattens kotobase's nested DTOs once, expanding tag codes server-side so that clients never handle raw JMdict codes. The local kotobase type stubs were deleted now that the package ships py.typed. The following endpoints were added to the dict/ router

  • kanji profile
  • stroke-order SVG
  • audio listing + clip streaming
  • words-with-kanji
  • kanji example sentences
  • English reverse lookup
  • cross-reference resolution
  • radical inventory
  • find-kanji-by-radicals

Relevance Ranking

/dict/query accepts optional reading and pos hints from tokenization, and /dict/analyze supplies them per token.
Entries are re-ranked by a stable lexicographic key (list.sort(key=rank)) based on the following priority order

  • reading match
  • dated-entry demotion (senses all tagged arch/obs/dated)
  • primary-form match (headword or first reading)
  • UniDic to JMdict POS-family match
  • usually-kana preference for kana queries
  • form-level common flag
  • entry common flag
  • sense count
  • priority-list membership
  • nf frequency band

This resolves the classic homophone cases without extra queries

Frontend Study Hub

  • The Dictionary page is now a routed hub (/dictionary, /word/:term,
    /kanji/:char, /radicals) with one integrated search control (Japanese /
    English / radicals modes), a navigation-state breadcrumb trail, and a landing
    page offering recent lookups (localStorage) and explore starters

  • Kanji draw themselves stroke by stroke from sanitized inline KanjiVG SVGs (replay / step
    / speed controls, reduced-motion aware, scalable glyph fallback)

  • The in-player WordDialog was reorganized into collapsible sections with furigana
    ruby headwords, readable tags, translation tooltips on examples, grammar-term
    tooltips, playable stroke diagrams, and external links into the hub

  • Word lookups reuse the sentence tokenization so the clicked word's in-context
    reading and POS pick the right entry

Installable PWA

  • The frontend container now runs a persistent local CA (new certs volume)
    that signs a short-lived leaf for the LAN IP

  • Installing the CA once per device (served at /mirumoji-ca.crt, also over plain HTTP) makes the origin
    fully trusted, so the service worker registers and the app becomes
    installable with offline interface caching

  • The launcher prints the install URL and a docs guide covers per-platform installs and reverse-proxy
    alternatives

Other

  • FastAPI parameters migrated to the Annotated declaration style, B008
    lint exemption removed

  • Server images bake the Kanji Alive audio pack (kotobase db pull, ~150MB)

Breaking Change

The /dict/query and /dict/analyze response shape changed

  • senses are structured (gloss lists, readable tag lists, antonyms, xrefs)
  • examples are objects carrying translations
  • name entries expose name_types
  • kanji profiles gained fields

Clients of these endpoints must adopt the new shape. The bundled frontend already has