Hi @Ditherys — I came across the work on your fork (the canonical tooth anatomy overhaul, 27–28 August), and I'd very much like to have it upstream. I'm opening this here because your fork has issues turned off.
What stood out:
- class-specific templates for the whole permanent dentition instead of nine shared ones, keeping maxillary and mandibular classes, and first/second/third molars, apart
- the primary dentition (51–55, 71–75) — exactly the known gap in the measured profile today, which has no dedicated primary-tooth drawings
- the generator-first approach, with the donor drawings as the only hand-edited boundary, and the Python + Vitest verification around it
- the references behind each morphology decision
I'm asking for a PR rather than porting it myself because your branch forked before quite a lot moved underneath it, and you know the generator far better than I would. Since then, on main:
odontogram.ts was split: the anatomy profiles now live in src/anatomy/profiles.ts, and the measured artwork in src/anatomy/measured.ts
- the measured profile is lazy-loaded —
measured.ts is only reached through a dynamic import (ensureMeasuredProfile()), and a test fails if anything imports it statically
setToothAnatomy() is now async and rebuilds the grid itself
- the periodontal chart's horizontal mirroring was fixed to
mirror XOR rot180 (the lower arch was drawn reversed) — worth knowing if your perioGraphic.ts changes touch getToothBaseGroupFromCache
A PR against current main would ideally keep the classic profile byte-identical (the SVG-fingerprint parity goldens guard that), keep measured.ts lazy, and note the size of the measured chunk, since it will grow with the new templates. If it's easier, I'm happy to review it in stages — the permanent classes first, the primary dentition second.
You'd be credited in the changelog and in the README's contributors list, of course. Thanks for the careful work — and no obligation at all.
Hi @Ditherys — I came across the work on your fork (the canonical tooth anatomy overhaul, 27–28 August), and I'd very much like to have it upstream. I'm opening this here because your fork has issues turned off.
What stood out:
I'm asking for a PR rather than porting it myself because your branch forked before quite a lot moved underneath it, and you know the generator far better than I would. Since then, on
main:odontogram.tswas split: the anatomy profiles now live insrc/anatomy/profiles.ts, and the measured artwork insrc/anatomy/measured.tsmeasured.tsis only reached through a dynamic import (ensureMeasuredProfile()), and a test fails if anything imports it staticallysetToothAnatomy()is now async and rebuilds the grid itselfmirror XOR rot180(the lower arch was drawn reversed) — worth knowing if yourperioGraphic.tschanges touchgetToothBaseGroupFromCacheA PR against current
mainwould ideally keep the classic profile byte-identical (the SVG-fingerprint parity goldens guard that), keepmeasured.tslazy, and note the size of the measured chunk, since it will grow with the new templates. If it's easier, I'm happy to review it in stages — the permanent classes first, the primary dentition second.You'd be credited in the changelog and in the README's contributors list, of course. Thanks for the careful work — and no obligation at all.