SOURCE / PINNED RELEASE
Made of little things.
Body Journal
- Release
- e8049f8da4e2…
- Author-recorded commit
- 61c04bf0e8aa…
- License
- LICENSE
- Author’s source reference
- nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-6c4554844c7
Archive hash verified: 4369d778da046a8b…. The source-to-build association is the author’s claim; it has not been independently rebuilt.
# Mouth inspection
An adult can show an observation on an individual tooth, tongue surface, or jaw reference and save the jaw opening with that observation. A separate Mouth layer exposes these structures without coupling camera focus to visibility or changing skin topology.
## Interaction and visual direction
Keep the white/off-black/orange interface. The layer selector gains Mouth. Its inline Jaw editor has an opening slider, closed/open illustration presets, an explicit Focus mouth action, and a short coverage note. It leaves the canvas interactive and fits a narrow portrait frame. Opening is an illustration amount, not a clinical angle or measurement. Existing focus selection plus button and the grouped visibility checkboxes remain independent. Mouth visibility groups upper/lower jaws, tooth quadrants and individual teeth; hidden items remain part of the recorded anatomy.
## Assets and vocabulary
BodyParts3D 4.0 supplies 28 permanent teeth and a coarse tongue. Copy the existing reduced maxillae and mandible into a separate versioned asset. Keep FMA IDs, triangle indices and barycentric anchors stable. Use names plus explicit **FDI** permanent-tooth numbering, relative to the patient. No wisdom teeth, gums, palate or child dentition are represented. Exposed roots are atlas anatomy, not a depiction of gum disease. Tongue motion and jaw opening are schematic; the skin face is not rigged to open.
Sources: [official asset license](https://dbarchive.biosciencedbc.jp/en/bodyparts3d/lic.html), [FDHRC FDI numbering table](https://ndhcb.uplifterinc.com/pages/ndhce/exam-prep/). BodyParts3D assets remain CC BY 4.0; application code remains MIT. See `assets/mouth/provenance.json` for hashes, modifications and attribution.
## State and boundaries
Use an optional normalized jaw-opening scalar in each concern and in the existing working-session view; absent means closed. Validate imports. Preserve opening through body presets, concern switching, SDK storage reload and image capture/restoration. Include explicit tooth labels, illustrated jaw pose and asset limitations in review/AI evidence. No new host capabilities, network calls or browser storage. Existing optional SDK storage persists sessions.
## Verification
Check all 28 FDI identities/laterality, finite geometry, closed/open lower-jaw movement while upper teeth stay fixed, ray-hit marking and anchored marks across poses, independent focus/visibility, import validation, round-trip sessions and capture restoration. Exercise tooth and tongue observations in soyLI, keyboard and touch controls, narrow/minimum/full frames, host themes and absent optional domains. Run project build, unit, guidance and conformance checks and record the tested artifact.
## Implemented and verified — 25 October 2026
- Added `bp3d-mouth-1`: 32 selectable structures, 47,467 triangles, 596,488 bytes.
The original skin, skeleton, muscle and organ binaries are unchanged. Rebuild
with `python3 scripts/prepare-mouth.py /path/to/isa_BP3D_4.0_obj_99.zip`.
- Mouth → upper/lower jaw → patient-left/right tooth groups → individual teeth
integrates with the existing mixed-state visibility controls. Focus stays
explicit. The jaw editor opens with the Mouth layer; its Focus mouth button
frames the current posed geometry without changing visibility.
- Optional `jawOpening` values are bounded to 0–1; older records load closed.
Per-concern and working-session values remain independent. Whole-body presets,
SDK storage reload, summaries, revision checks and image capture preserve them.
Automatic oral close-ups use smaller framing and occlusion clearances than
body-region captures. Captions explain FDI labels and missing atlas coverage.
- `pnpm verify`: 71 tests passed, including four new mouth tests; type-check and
single-file build passed. Asset hash/geometry, FDI identity/laterality, real
ray-hit anchors, upper/lower movement, shape changes, visibility, import bounds,
session compatibility and AI text/revision behavior are checked.
- `node tests/mouth-smoke.mjs http://127.0.0.1:4173/`: real hosted tooth/tongue
marking; keyboard opening; working and per-observation reload; body presets;
group visibility; saved-pose image sheets and working-view restoration passed.
Inspected full-page captures and both generated evidence sheets.
- Actual iframe sizes 1600×1000, 900×600, 320×560, 390×844, 844×390 and the
200×160 minimum notice passed, including both host themes, missing optional
domains and emulated touch. Jaw controls have at least 44×44 touch targets. A final focused touch check
at 320×560, 390×844 and 844×390 confirms the editor stays clear of the canvas;
the narrowest touch canvas is 320×108 and the landscape canvas is 529×207.
Fixed a shared short-landscape CSS inset that incorrectly reserved editor
space on both sides of the canvas; the mouth test now asserts canvas width.
The full existing `fingers-smoke.mjs` regression also passed after that fix.
- `pnpm test:conformance`: 5 passed, 0 failed, 5 skipped. The skipped evidence is
three manifest checks, emitted wire envelopes and teardown measurement.
- `soyli check`: passed, space-playback-6 / Chromium 153.0.8010.12. The source
budget check is approximately 35.8 MB of 40 MiB; HTML is below the 25 MiB cap.
- Final HTML: 18,992,235 bytes, SHA-256
`86777c0dcd2a724fe7434d98c3c29fc279dda1989e9e8e71b52dbf660f5214b3`.
No provider requests, publishing or deployment were performed. Physical-phone
hardware and clinical anatomical accuracy were not evaluated. The existing
user-owned soyLI preview at http://127.0.0.1:4173/ (PID 59819) was reused; no new
preview session was started. Its owning terminal remains available for Ctrl+C.
## Profile fitting correction
The oral atlas now uses the current skin's inner lip and ear landmarks for its
head-local depth fit and bite height. The whole assembly, including the hinge,
shares this transform; original atlas triangle IDs, FDI labels and saved marks
stay valid. Runtime fitting changes no bundled binary or source license. Checked
front/profile on male/female shapes and numerical landmark relationships across
sex/BMI samples. This remains an illustrative atlas fit; the skin face does not
open with the jaw. See [current verification](anatomy-controls-slice.md).
