Chapters & routes
Many VNs put the current chapter or route in their window title. The app reads it and turns it into a clean label.
How it works
Every few seconds the app reads the title of the game's window. It removes the game's own name and noise like version numbers (ver1.02), resolutions (1280x720), "R18" or "- Steam". What's left is matched against a list of rules, in English, French and Japanese. The first rule that matches gives the label.
If the window title never changes (many VNs just show their name), there's simply no section line on Discord. Nothing to set up.
Examples
Real outputs of the built-in rules:
| Window title | Shown as |
|---|---|
Sanoba Witch - Prologue | Prologue |
Hapymaher - Chapitre III | Chapter 3 |
Yosuga no Sora 第3章 | Chapter 3 |
Senren * Banka - Chapter 4: Yoshino | Chapter 4 — Yoshino |
Grisaia no Kajitsu - Yumiko Route | Yumiko Route |
Irotoridori no Sekai - Common Route | Common Route |
Some VN - Jour 3 | Day 3 |
Some VN - Good Ending | Good Ending |
Some VN ~Summer Festival~ | Summer Festival |
Words it understands include:
- Start and end: prologue, opening, intro, epilogue, ending, good / bad / true / normal end, プロローグ, 序章, エピローグ, エンディング…
- Chapters: chapter, chapitre, ch., episode, épisode, act, acte, scene, part, partie, volume, 第N章 / 話 / 幕; with numbers, Roman numerals or kanji numbers.
- Routes: "X Route", route / arc / path X, common route, true route, ルート, 共通, X編.
- Days: day N, jour N, N日目.
If nothing matches but the title still has some extra text, that text is shown as it is.
Set it by hand
When nothing is read from the title, the Now reading page shows a + Route / chapter button. Type where you are (e.g. Yoshino Route) and click Save: it's shown on Discord like any other section. Click the pill again to change it, or Clear it. As soon as the window title says where you are, that takes over.
Your own rules
For a VN with an unusual title format, add a rule in Settings → Title rules. Your rules run before the built-in ones. Write one JSON object per line:
{"name": "part", "pattern": "part\\s*(?P<n>\\d+)", "label": "Part {n}", "section_type": "chapter"}With this rule, Some VN - Part 3 shows as Part 3 instead of "Chapter 3".
| Field | What it is |
|---|---|
name | Any name, for you to recognize it. |
pattern | A regular expression, not case-sensitive (named groups are written (?P<name>…)). In JSON, backslashes are doubled: \\s for \s. |
label | The text shown. {n} is replaced by the group named n (a number: Roman numerals and kanji are converted), {label} by the group named label. |
section_type | chapter, route, prologue, ending or free (default). |
Another example, for a game whose title ends with [Scenario: Hanabi]; it shows Hanabi Scenario:
{"name": "scenario", "pattern": "scenario:\\s*(?P<label>[^\\]]+)", "label": "{label} Scenario", "section_type": "route"}When you click Save rules, each line is checked. A line that isn't valid JSON, or a pattern that isn't a valid regular expression, is reported with its line number and nothing is saved.