yomihon

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 5, 2026 License: MIT

README

yomihon

English | 繁體中文

CI Go

Turn the Markdown you have already organised into a book worth reading.

yomihon reads a folder of Markdown as one book. A study path is a course, with chapters and the lesson you are on; every note has its sections and the notes that cite it beside the text; whatever is broken is said where it is. It runs on your machine and changes none of your words.

Install

go install github.com/koopa0/yomihon/cmd/yomihon@main

Needs Go 1.27 or newer. The path is lowercase even though the repository's address is not: Koopa0 in a browser, koopa0 in the import path.

Use

yomihon ~/notes

Then open http://127.0.0.1:9610. Any folder works as it is; yomihon examples/vault opens an example vault with a contract, and shows what a contract adds. An agent that writes notes for a vault yomihon reads has a skill to read first: skills/.

What it does

  • Read. Wikilinks, callouts, footnotes, tables, Mermaid, code and ruby render as written. The page is set for long-form reading, Chinese and Japanese first, with a light and a dark desk and three text sizes.
  • Learn. A study path is a course: chapter counts, previous and next, and the lesson you are on. Furigana switches on and off; a passage marked for reading aloud is spoken in its own language. The example vault carries a study path to copy.
  • Find. Full-text search with folder filters; backlinks and the note's own sections stay beside the text. A result opens the note at the words it found, not at the top.
  • Check. A health page lists links with no target, notes nothing cites, and one name two files answer to; each note carries its own diagnostics; on the command line it is yomihon check. It reports and repairs nothing.
  • Reports. Briefings kept under System/reports/daily-briefing/ open in the same room, sandboxed.
  • Two languages. The interface speaks English or Traditional Chinese; every note keeps the language it was written in.
  • Yours. It binds to 127.0.0.1 only, makes no network call, and never edits your prose.

Status

Under development; expect the interface to change before the first stable release. Defects go to Issues, security problems to GitHub's private advisory form.

Licence

MIT.

Directories

Path Synopsis
Package assets embeds yomihon's small, fixed set of vendored and hand-written client-side files.
Package assets embeds yomihon's small, fixed set of vendored and hand-written client-side files.
cmd
yomihon command
yomihon is the local reading-and-adjudication interface for the Obsidian vault.
yomihon is the local reading-and-adjudication interface for the Obsidian vault.
internal
archlock
Package archlock holds the checks that keep the module's shape from drifting while every individual change looks reasonable.
Package archlock holds the checks that keep the module's shape from drifting while every individual change looks reasonable.
asset
Package asset serves yomihon's fixed, compile-time-known set of static files: the vendored mermaid ES-module runtime, yomihon's own fixed native client-module graph, the canonical brand mark, and the generated chroma stylesheet.
Package asset serves yomihon's fixed, compile-time-known set of static files: the vendored mermaid ES-module runtime, yomihon's own fixed native client-module graph, the canonical brand mark, and the generated chroma stylesheet.
graph
Package graph resolves [[wikilinks]] the way Obsidian resolves them in this vault: four keys per note (filename stem, filename, path stem, path) plus frontmatter aliases, each folded by NormalizeKey — never the frontmatter title, which Obsidian does not resolve either.
Package graph resolves [[wikilinks]] the way Obsidian resolves them in this vault: four keys per note (filename stem, filename, path stem, path) plus frontmatter aliases, each folded by NormalizeKey — never the frontmatter title, which Obsidian does not resolve either.
judge
Package judge implements the vault diagnostics behind the check, exists and coverage commands, and their JSONL wire format; the reading server consumes the same findings, so a page and a command cannot disagree.
Package judge implements the vault diagnostics behind the check, exists and coverage commands, and their JSONL wire format; the reading server consumes the same findings, so a page and a command cannot disagree.
lesson
Package lesson loads the hand-authored data that enriches lesson reading pages: Japanese slot-machine sentence patterns from System/slots/*.yaml and the cross-domain concept-note index used by in-page sheets.
Package lesson loads the hand-authored data that enriches lesson reading pages: Japanese slot-machine sentence patterns from System/slots/*.yaml and the cross-domain concept-note index used by in-page sheets.
lexical
Package lexical is the vault's in-memory search index and query engine.
Package lexical is the vault's in-memory search index and query engine.
nav
Package nav turns a scanner-captured vault projection into the folder tree, map and study-path trees, report list and recent-note summaries the sidebar and Home read.
Package nav turns a scanner-captured vault projection into the folder tree, map and study-path trees, report list and recent-note summaries the sidebar and Home read.
note
Package note owns the general reading surface — every route a reader reaches that is not one of the dedicated faces.
Package note owns the general reading surface — every route a reader reaches that is not one of the dedicated faces.
origin
Package origin enforces the browser's same-origin resource boundary for every response served by yomihon's loopback reading site.
Package origin enforces the browser's same-origin resource boundary for every response served by yomihon's loopback reading site.
render
Package render answers three questions about one vault file, in one place so every face of the program answers them alike: how a note reads, what words it contributes to a search, and what kind of file it is.
Package render answers three questions about one vault file, in one place so every face of the program answers them alike: how a note reads, what words it contributes to a search, and what kind of file it is.
report
Package report serves the daily-briefing HTML under System/reports/ inside a sandboxed iframe.
Package report serves the daily-briefing HTML under System/reports/ inside a sandboxed iframe.
schema
Package schema loads the vault's machine-readable contract (System/schemas/vault-schema.toml) and answers status state-machine questions.
Package schema loads the vault's machine-readable contract (System/schemas/vault-schema.toml) and answers status state-machine questions.
search
Package search is the reading surface for a query: the route, the language the answer is written in, and the view a result becomes.
Package search is the reading surface for a query: the route, the language the answer is written in, and the view a result becomes.
sequence
Package sequence reads the declared structure of a study path: which rows a course lists, which branch each row belongs to, what role the author gave that branch, and what could not be determined.
Package sequence reads the declared structure of a study path: which rows a course lists, which branch each row belongs to, what role the author gave that branch, and what could not be determined.
shell
Package shell projects the navigation and lifecycle state shared by every full-page reading surface.
Package shell projects the navigation and lifecycle state shared by every full-page reading surface.
snapshot
Package snapshot owns the reading server's coherent vault generations.
Package snapshot owns the reading server's coherent vault generations.
sourcebytes
Package sourcebytes locks one property of this repository's own text: no file it reads as text carries a NUL, a U+2028 or a U+2029 outside a named exemption.
Package sourcebytes locks one property of this repository's own text: no file it reads as text carries a NUL, a U+2028 or a U+2029 outside a named exemption.
status
Package status is the write face: the only package here allowed to write vault files.
Package status is the write face: the only package here allowed to write vault files.
syllabus
Package syllabus serves the study-path page: one study-path tree with a switcher across every study-path in the vault.
Package syllabus serves the study-path page: one study-path tree with a switcher across every study-path in the vault.
ui/layouts
templ: version: v0.3.1020
templ: version: v0.3.1020
ui/pages
templ: version: v0.3.1020
templ: version: v0.3.1020
vault
Package vault is the note model: what a markdown file in the Obsidian vault means once its bytes are in hand.
Package vault is the note model: what a markdown file in the Obsidian vault means once its bytes are in hand.
vaultfs
Package vaultfs pins one vault directory as a read capability and answers what is under it, what each file was when observed, and what its bytes are now.
Package vaultfs pins one vault directory as a read capability and answers what is under it, what each file was when observed, and what its bytes are now.
wording
Package wording holds what yomihon says in its own voice, in both languages it says it in.
Package wording holds what yomihon says in its own voice, in both languages it says it in.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL