Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
1f1da61
KSN: add `chivalry-of-a-failed-knight.json` arc mapping
codebend3r Jun 29, 2026
c459fed
KSN: add `masamune-kun-revenge.json` arc mapping
codebend3r Jun 29, 2026
b4a301a
KSN: add `nichijou.json` arc mapping
codebend3r Jun 29, 2026
6635745
KSN: add `gachiakuta.json` arc mapping
codebend3r Jun 29, 2026
06a76e5
KSN: add `zom-100.json` arc mapping
codebend3r Jun 29, 2026
e6567aa
KSN: add `chunibyo.json` arc mapping
codebend3r Jun 29, 2026
23e804b
KSN: add `tower-of-god.json` arc mapping
codebend3r Jun 29, 2026
3ad9d99
KSN: add `dragon-maid.json` arc mapping
codebend3r Jun 29, 2026
d756f3c
KSN: add `seraph-of-the-end.json` arc mapping
codebend3r Jun 29, 2026
1efc0bc
KSN: add `wotakoi.json` arc mapping
codebend3r Jun 29, 2026
2941896
KSN: add `high-school-dxd.json` arc mapping
codebend3r Jun 29, 2026
2374818
KSN: add `rent-a-girlfriend.json` arc mapping
codebend3r Jun 29, 2026
c787f00
KSN: add `god-of-high-school.json` arc mapping
codebend3r Jun 29, 2026
1fc1857
KSN: add `clannad.json` arc mapping
codebend3r Jun 29, 2026
a556592
KSN: add `maid-sama.json` arc mapping
codebend3r Jun 29, 2026
9eba59e
KSN: add `highschool-of-the-dead.json` arc mapping
codebend3r Jun 29, 2026
f4052dd
KSN: add `beyond-the-boundary.json` arc mapping
codebend3r Jun 29, 2026
cce1e69
KSN: add `pet-girl-of-sakurasou.json` arc mapping
codebend3r Jun 29, 2026
ec57c57
KSN: add `elfen-lied.json` arc mapping
codebend3r Jun 29, 2026
4ebd339
KSN: add `nagatoro.json` arc mapping
codebend3r Jun 29, 2026
abce0b1
KSN: add `bunny-girl-senpai.json` arc mapping
codebend3r Jun 29, 2026
3c140b9
KSN: add `toradora.json` arc mapping
codebend3r Jun 29, 2026
3118fb9
KSN: add `kakegurui.json` arc mapping
codebend3r Jun 29, 2026
d5b73a0
KSN: add `classroom-of-the-elite.json` arc mapping
codebend3r Jun 29, 2026
95ae778
KSN: add `future-diary.json` arc mapping
codebend3r Jun 29, 2026
ca1ecd8
KSN: add `danmachi.json` arc mapping
codebend3r Jun 29, 2026
1252a91
KSN: add `another.json` arc mapping
codebend3r Jun 29, 2026
a846b9b
KSN: add `oregairu.json` arc mapping
codebend3r Jun 29, 2026
a297085
KSN: add `saiki-k.json` arc mapping
codebend3r Jun 29, 2026
8262223
KSN: add `hyouka.json` arc mapping
codebend3r Jun 29, 2026
41008f2
KSN: add `misfit-of-demon-king-academy.json` arc mapping
codebend3r Jun 29, 2026
b3c04ae
KSN: add `golden-time.json` arc mapping
codebend3r Jun 29, 2026
8007b89
KSN: add `my-little-monster.json` arc mapping
codebend3r Jun 29, 2026
9e45fdf
KSN: add `irregular-at-magic-high-school.json` arc mapping
codebend3r Jun 29, 2026
d8ca6dc
KSN: add `relife.json` arc mapping
codebend3r Jun 29, 2026
2b2da06
KSN: add `orange.json` arc mapping
codebend3r Jun 29, 2026
ed5ed5f
KSN: add `blood-blockade-battlefront.json` arc mapping
codebend3r Jun 29, 2026
dafc0d2
KSN: add `arifureta.json` arc mapping
codebend3r Jun 29, 2026
8e0d274
KSN: add `nozaki-kun.json` arc mapping
codebend3r Jun 29, 2026
1348b99
KSN: add `delicious-in-dungeon.json` arc mapping
codebend3r Jun 29, 2026
611d775
KSN: add `summer-time-rendering.json` arc mapping
codebend3r Jun 29, 2026
46553b8
KSN: add `kimi-ni-todoke.json` arc mapping
codebend3r Jun 29, 2026
3178781
KSN: add `prison-school.json` arc mapping
codebend3r Jun 29, 2026
7f5e809
KSN: add `date-a-live.json` arc mapping
codebend3r Jun 29, 2026
45150fd
KSN: add `ao-haru-ride.json` arc mapping
codebend3r Jun 29, 2026
11ed589
KSN: add `tonikawa.json` arc mapping
codebend3r Jun 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions src/data/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,52 @@ import landOfTheLustrous from "@/data/mappings/land-of-the-lustrous.json";
import rankingOfKings from "@/data/mappings/ranking-of-kings.json";
import toYourEternity from "@/data/mappings/to-your-eternity.json";
import callOfTheNight from "@/data/mappings/call-of-the-night.json";
import chivalryOfAFailedKnight from "@/data/mappings/chivalry-of-a-failed-knight.json";
import masamuneKunRevenge from "@/data/mappings/masamune-kun-revenge.json";
import nichijou from "@/data/mappings/nichijou.json";
import gachiakuta from "@/data/mappings/gachiakuta.json";
import zom100 from "@/data/mappings/zom-100.json";
import chunibyo from "@/data/mappings/chunibyo.json";
import towerOfGod from "@/data/mappings/tower-of-god.json";
import dragonMaid from "@/data/mappings/dragon-maid.json";
import seraphOfTheEnd from "@/data/mappings/seraph-of-the-end.json";
import wotakoi from "@/data/mappings/wotakoi.json";
import highSchoolDxd from "@/data/mappings/high-school-dxd.json";
import rentAGirlfriend from "@/data/mappings/rent-a-girlfriend.json";
import godOfHighSchool from "@/data/mappings/god-of-high-school.json";
import clannad from "@/data/mappings/clannad.json";
import maidSama from "@/data/mappings/maid-sama.json";
import highschoolOfTheDead from "@/data/mappings/highschool-of-the-dead.json";
import beyondTheBoundary from "@/data/mappings/beyond-the-boundary.json";
import petGirlOfSakurasou from "@/data/mappings/pet-girl-of-sakurasou.json";
import elfenLied from "@/data/mappings/elfen-lied.json";
import nagatoro from "@/data/mappings/nagatoro.json";
import bunnyGirlSenpai from "@/data/mappings/bunny-girl-senpai.json";
import toradora from "@/data/mappings/toradora.json";
import kakegurui from "@/data/mappings/kakegurui.json";
import classroomOfTheElite from "@/data/mappings/classroom-of-the-elite.json";
import futureDiary from "@/data/mappings/future-diary.json";
import danmachi from "@/data/mappings/danmachi.json";
import another from "@/data/mappings/another.json";
import oregairu from "@/data/mappings/oregairu.json";
import saikiK from "@/data/mappings/saiki-k.json";
import hyouka from "@/data/mappings/hyouka.json";
import misfitOfDemonKingAcademy from "@/data/mappings/misfit-of-demon-king-academy.json";
import goldenTime from "@/data/mappings/golden-time.json";
import myLittleMonster from "@/data/mappings/my-little-monster.json";
import irregularAtMagicHighSchool from "@/data/mappings/irregular-at-magic-high-school.json";
import relife from "@/data/mappings/relife.json";
import orange from "@/data/mappings/orange.json";
import bloodBlockadeBattlefront from "@/data/mappings/blood-blockade-battlefront.json";
import arifureta from "@/data/mappings/arifureta.json";
import nozakiKun from "@/data/mappings/nozaki-kun.json";
import deliciousInDungeon from "@/data/mappings/delicious-in-dungeon.json";
import summerTimeRendering from "@/data/mappings/summer-time-rendering.json";
import kimiNiTodoke from "@/data/mappings/kimi-ni-todoke.json";
import prisonSchool from "@/data/mappings/prison-school.json";
import dateALive from "@/data/mappings/date-a-live.json";
import aoHaruRide from "@/data/mappings/ao-haru-ride.json";
import tonikawa from "@/data/mappings/tonikawa.json";

// JSON imports lose tuple types — `[1, 100]` becomes `number[]` instead of
// `[number, number]`. `normalizeMapping` rebuilds tuples literally.
Expand Down Expand Up @@ -389,6 +435,52 @@ const ALL_MAPPINGS: SeriesMapping[] = [
rankingOfKings,
toYourEternity,
callOfTheNight,
chivalryOfAFailedKnight,
masamuneKunRevenge,
nichijou,
gachiakuta,
zom100,
chunibyo,
towerOfGod,
dragonMaid,
seraphOfTheEnd,
wotakoi,
highSchoolDxd,
rentAGirlfriend,
godOfHighSchool,
clannad,
maidSama,
highschoolOfTheDead,
beyondTheBoundary,
petGirlOfSakurasou,
elfenLied,
nagatoro,
bunnyGirlSenpai,
toradora,
kakegurui,
classroomOfTheElite,
futureDiary,
danmachi,
another,
oregairu,
saikiK,
hyouka,
misfitOfDemonKingAcademy,
goldenTime,
myLittleMonster,
irregularAtMagicHighSchool,
relife,
orange,
bloodBlockadeBattlefront,
arifureta,
nozakiKun,
deliciousInDungeon,
summerTimeRendering,
kimiNiTodoke,
prisonSchool,
dateALive,
aoHaruRide,
tonikawa,
].map(normalizeMapping);

export function findMappingByMediaId(mediaId: number): SeriesMapping | null {
Expand Down
23 changes: 23 additions & 0 deletions src/data/mappings/another.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"anilistAnimeId": 11111,
"anilistMangaId": 54098,
"title": "Another",
"sourceNotes": "The 12-episode P.A. Works anime and the 4-volume / 20-chapter Hiro Kiyohara manga (id 54098, complete) both adapt Yukito Ayatsuji's 2009 horror novel. The manga is shorter and notably less deadly: it keeps several characters alive (e.g. Kazami and Ogura survive) and resolves the 'calamity' differently from the anime, which kills off most of the class and stages the climax at the burning summer resort. Endpoints (ep 1 = ch 1, ep 12 = ch 20) are firm; the finale diverges, so the ep 9-12 boundary is approximate.",
"mappings": [
{
"episodes": [1, 4],
"chapters": [1, 6],
"arc": "Transfer to Yomiyama North & the 'nonexistent' Mei Misaki"
},
{
"episodes": [5, 8],
"chapters": [7, 13],
"arc": "The calamity begins & the failed countermeasure"
},
{
"episodes": [9, 12],
"chapters": [14, 20],
"arc": "Summer camp & the 'casualty' revealed (anime finale diverges)"
}
]
}
15 changes: 15 additions & 0 deletions src/data/mappings/ao-haru-ride.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"anilistAnimeId": 20596,
"anilistMangaId": 54294,
"title": "Blue Spring Ride",
"sourceNotes": "S1 anime (12 eps, 2014) is a near chapter-per-episode adaptation covering roughly the first four volumes; the two OVAs ('unwritten' = the PAGE.0 prologue, and 'PAGE.13') extend it to about ch 13, so a viewer resumes reading around ch 14. Paired with Io Sakisaka's complete manga: 49 numbered story chapters across 13 volumes; AniList counts 53 incl. extras, so the final arc extends to 53. Post-anime arc boundaries are approximate. The 2014 live-action film is excluded.",
"mappings": [
{
"episodes": [1, 12],
"chapters": [1, 13],
"arc": "Reawakening: Futaba & Kou Reunite (Class 2-3 friend group; incl. OVAs)"
},
{ "chapters": [14, 32], "arc": "Kou's Past & the Love Rivals" },
{ "chapters": [33, 53], "arc": "Touma Arc & Futaba's Choice (Final)" }
]
}
27 changes: 27 additions & 0 deletions src/data/mappings/arifureta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"anilistAnimeId": 100668,
"anilistMangaId": 96834,
"title": "Arifureta: From Commonplace to World's Strongest",
"sourceNotes": "Cumulative episodes across S1 (13) + S2 (12, eps 14-25) + S3 (16, eps 26-41) = 41 total (AniList numbering; Wikipedia/fandom insert a recap special and run +1 from S2E1 onward). The source is Ryo Shirakome's light novel. The RoGa manga adaptation (AniList id 96834) is the linked manga, but it lags FAR behind the anime — at ~ch 92 it has only reached LN vol. 6 (roughly the end of S2) and AniList lists no chapter count — so this mapping uses LIGHT-NOVEL VOLUME numbers as the 'chapters' unit instead. The main LN ran 13 volumes (concluded 2022) plus a vol. 14 epilogue; the anime adapts vols. 1-10. Per-volume arc boundaries within each season are approximate. No theatrical films.",
"mappings": [
{
"episodes": [1, 13],
"chapters": [1, 4],
"arc": "S1: Great Orcus Labyrinth (the Abyss) / Reisen Gorge / Grun Desert / Heiligh Kingdom defense (LN vols 1-4)"
},
{
"episodes": [14, 25],
"chapters": [5, 6],
"arc": "S2: next labyrinth / Divine Mountain (Noint, Eri's betrayal, Kaori's death & resurrection) (LN vols 5-6)"
},
{
"episodes": [26, 41],
"chapters": [7, 10],
"arc": "S3: Hoelscher Empire / Haltina Woods (Sea of Trees) / Frost Caverns — the seven labyrinths conquered (LN vols 7-10)"
},
{
"chapters": [11, 14],
"arc": "March on the Demon Lord's castle & finale + epilogue (LN vols 11-14), unadapted"
}
]
}
27 changes: 27 additions & 0 deletions src/data/mappings/beyond-the-boundary.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"anilistAnimeId": 18153,
"anilistMangaId": 80117,
"title": "Beyond the Boundary",
"sourceNotes": "S1 anime (12 eps, 2013, Kyoto Animation) adapts Nagomu Torii's light novel. AniList has no manga-adaptation entry for this series, so this maps to the light novel (id 80117), treating its 3 published volumes as 'chapters' 1-3; boundaries are approximate because KyoAni heavily reordered and added original material. The film 'I'll Be Here -Future-' (2015) is a canon sequel with new content (included below); 'I'll Be Here -Past-' (2015) is a recap re-edit of eps 1-12 and is excluded.",
"mappings": [
{
"episodes": [1, 7],
"chapters": [1, 2],
"arc": "Hollow Shadow Arc (Mirai & Akihito)"
},
{
"episodes": [8, 12],
"chapters": [3, 3],
"arc": "Beyond the Boundary Arc (climax)"
}
],
"movies": [
{
"anilistId": 20963,
"title": "Beyond the Boundary -I'LL BE HERE-: Future",
"year": 2015,
"afterEpisode": 12,
"note": "Canon sequel film with new content continuing after the TV series."
}
]
}
18 changes: 18 additions & 0 deletions src/data/mappings/blood-blockade-battlefront.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"anilistAnimeId": 20727,
"anilistMangaId": 42994,
"title": "Blood Blockade Battlefront",
"sourceNotes": "Cumulative episodes across S1 'Blood Blockade Battlefront' (12) + S2 'Kekkai Sensen & Beyond' (12, eps 13-24) = 24 total. Paired with Yasuhiro Nightow's original manga (AniList id 42994), complete at 10 volumes (AniList lists 33 chapters, including .5 interstitials; Wikipedia counts 30 numbered chapters). The anime adapts the episodic manga NON-LINEARLY and wraps it in heavy anime-original framing (the Black & White twins, Femt, and the Blood Breed / King of Despair throughline of the S1 finale are largely anime-original); per-arc chapter boundaries are therefore approximate. S2 is more faithful and ends on the manga's actual finale, 'Spectral Eyes, Phantom Vision' (vol 10).",
"mappings": [
{
"episodes": [1, 12],
"chapters": [1, 14],
"arc": "Season 1 (Libra / Leonardo & the All-Seeing Eyes) — manga vols 1-6, non-linear + anime-original"
},
{
"episodes": [13, 24],
"chapters": [15, 33],
"arc": "Season 2 '& Beyond' (vols 6-10) incl. 'Spectral Eyes, Phantom Vision' finale"
}
]
}
63 changes: 63 additions & 0 deletions src/data/mappings/bunny-girl-senpai.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"anilistAnimeId": 101291,
"anilistMangaId": 91170,
"title": "Rascal Does Not Dream of Bunny Girl Senpai",
"sourceNotes": "Source is Hajime Kamoshida's light novel series, which AniList splits into one media entry per volume and which has no unified manga adaptation (only fragmentary per-arc manga). This mapping therefore uses LIGHT-NOVEL VOLUME NUMBERS as the 'chapters' axis; anilistMangaId 91170 is LN vol 1 ('Bunny Girl Senpai'), the representative source entry. The 2018 TV anime (13 eps) adapts LN vols 1-5: Mai (eps 1-3, vol 1), Tomoe (4-6, vol 2), Futaba (7-8, vol 3), Nodoka (9-10, vol 4), Kaede (11-13, vol 5). Three canon films continue the story (vols 6-9). 15 main LN volumes were published through July 2025; vols 10+ are unadapted by these works (later covered by the 2025 TV continuation).",
"mappings": [
{
"episodes": [1, 3],
"chapters": [1, 1],
"arc": "Bunny Girl Senpai (Mai Sakurajima) — LN vol 1"
},
{
"episodes": [4, 6],
"chapters": [2, 2],
"arc": "Petite Devil Kohai (Tomoe Koga) — LN vol 2"
},
{
"episodes": [7, 8],
"chapters": [3, 3],
"arc": "Logical Witch (Rio Futaba) — LN vol 3"
},
{
"episodes": [9, 10],
"chapters": [4, 4],
"arc": "Siscon Idol (Nodoka Toyohama) — LN vol 4"
},
{
"episodes": [11, 13],
"chapters": [5, 5],
"arc": "Sister Home Alone (Kaede Azusagawa) — LN vol 5"
},
{
"chapters": [6, 15],
"arc": "Post-TV LN arcs (Dreaming Girl → ongoing; vols 6-9 adapted by the films, vols 10+ by the 2025 TV continuation)"
}
],
"movies": [
{
"anilistId": 104157,
"title": "Rascal Does Not Dream of a Dreaming Girl",
"year": 2019,
"chapters": [6, 7],
"afterEpisode": 13,
"note": "Canon sequel film adapting the Dreaming Girl arc (LN vols 6-7), resolving the Shoko Makinohara / Mai storyline."
},
{
"anilistId": 154967,
"title": "Rascal Does Not Dream of a Sister Venturing Out",
"year": 2023,
"chapters": [8, 8],
"afterEpisode": 13,
"note": "Canon film of the University arc (LN vol 8: Odekake Sister)."
},
{
"anilistId": 161474,
"title": "Rascal Does Not Dream of a Knapsack Kid",
"year": 2023,
"chapters": [9, 9],
"afterEpisode": 13,
"note": "Canon film of the University arc (LN vol 9: Randoseru Girl)."
}
]
}
17 changes: 17 additions & 0 deletions src/data/mappings/chivalry-of-a-failed-knight.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"anilistAnimeId": 21092,
"anilistMangaId": 85370,
"title": "Chivalry of a Failed Knight",
"sourceNotes": "Single 12-episode TV season (2015). Source is Riku Misora's light novel; paired here with the Megumu Soramichi manga adaptation (id 85370, 48 ch on AniList, complete — ANN cites the finale as ch 45). The anime covers only the Selection Battle (LN vols 1-3, roughly manga ch 1-34); the manga runs a bit further into LN vol 4, so its tail (ch 35-48) is unadapted. Per-episode chapter boundaries are proportional estimates — no published 1:1 episode-to-chapter guide exists.",
"mappings": [
{
"episodes": [1, 12],
"chapters": [1, 34],
"arc": "Selection Battle (Hagun qualifiers / Sword Eater incident, LN vols 1-3)"
},
{
"chapters": [35, 48],
"arc": "Seven Stars Sword Art Festival (opening, LN vol 4) — manga only"
}
]
}
27 changes: 27 additions & 0 deletions src/data/mappings/chunibyo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"anilistAnimeId": 14741,
"anilistMangaId": 70099,
"title": "Love, Chunibyo & Other Delusions",
"sourceNotes": "Cumulative episodes across S1 (12) + S2 'Ren' / Heart Throb (12, eps 13-24) = 24 total. No canonical manga adaptation exists, so this maps to the Torako light novel (AniList id 70099, light-novel format, 4 volumes / 51 'chapters', FINISHED). The KyoAni anime is largely anime-original and deviates heavily from the novel, so chapter boundaries are nominal/approximate.",
"mappings": [
{
"episodes": [1, 12],
"chapters": [1, 26],
"arc": "Far East Magical Napping Society of Summer (S1: Dark Flame Master & the Wicked Eye)"
},
{
"episodes": [13, 24],
"chapters": [27, 51],
"arc": "Heart Throb (S2 'Ren': Sophia Ring SP Saturn 7 / Satone)"
}
],
"movies": [
{
"anilistId": 98762,
"title": "Love, Chunibyo & Other Delusions: Take on Me",
"year": 2018,
"afterEpisode": 24,
"note": "Canon new-story KyoAni film and series finale, set after S2 (Rikka & Yuuta's runaway journey)."
}
]
}
63 changes: 63 additions & 0 deletions src/data/mappings/clannad.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"anilistAnimeId": 2167,
"anilistMangaId": 32598,
"title": "CLANNAD",
"sourceNotes": "Cumulative episodes span both seasons: CLANNAD S1 (23 broadcast eps) + CLANNAD: After Story (24 eps) = 47 total, so After Story E1 = episode 24 and the finale E24 = episode 47 (the BD/DVD OVAs 'Another World: Tomoyo Chapter' and 'Another World: Kyou Chapter' are alternate-timeline extras and are not counted). The anime adapts Key's visual novel and is organized by character routes: S1 covers the common/school-life intro plus the Fuko, Kotomi, Tomoyo/Sunohara side routes and Nagisa's Theater Club main route; After Story opens with the Sunohara/Mei, Misae and Yukine side arcs before the main After Story scenario (graduation, work, marriage, Nagisa's death, and the Tomoya/Ushio finale). Mapped to CLANNAD: Official Comic (manga by Juri Misaki), 45 chapters across 8 volumes, complete. IMPORTANT: this manga adaptation primarily follows the main Nagisa/Theater Club scenario and After Story and does NOT adapt the side character routes in the depth the anime does, so the chapter ranges aligned to the side-route episodes (Fuko, Kotomi, Tomoyo, Sunohara, Misae, Yukine) are APPROXIMATE; only the cumulative endpoints (last entry reaches ch. 45) are reliable. The 2007 theatrical film (AniList 1723) is an alternate-continuity retelling and is excluded, so no movies are listed.",
"mappings": [
{
"episodes": [1, 4],
"chapters": [1, 4],
"arc": "Common route / School life - meeting Nagisa & forming the Theater Club"
},
{
"episodes": [5, 9],
"chapters": [5, 7],
"arc": "Fuko Ibuki route (approximate - condensed in manga)"
},
{
"episodes": [10, 14],
"chapters": [8, 10],
"arc": "Kotomi Ichinose route (approximate - condensed in manga)"
},
{
"episodes": [15, 16],
"chapters": [11, 12],
"arc": "Tomoyo Sakagami & Sunohara - student council & 3-on-3 (approximate - condensed in manga)"
},
{
"episodes": [17, 23],
"chapters": [13, 20],
"arc": "Nagisa Furukawa main route - Theater Club & school festival"
},
{
"episodes": [24, 26],
"chapters": [21, 22],
"arc": "After Story: Youhei Sunohara & Mei (approximate - condensed in manga)"
},
{
"episodes": [27, 28],
"chapters": [23, 24],
"arc": "After Story: Misae Sagara (approximate - condensed in manga)"
},
{
"episodes": [29, 30],
"chapters": [25, 26],
"arc": "After Story: Yukine Miyazawa (approximate - condensed in manga)"
},
{
"episodes": [31, 38],
"chapters": [27, 34],
"arc": "After Story: graduation, work & marriage (Okazaki & Furukawa families)"
},
{
"episodes": [39, 44],
"chapters": [35, 42],
"arc": "After Story: Nagisa's death & the Tomoya/Ushio journey"
},
{
"episodes": [45, 47],
"chapters": [43, 45],
"arc": "After Story finale - the illusionary world & resolution"
}
]
}
Loading
Loading