Back to Body Journal
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.

docs/prototype.md
# UI prototype — October 2026

The initial UI milestone below is preserved as a record of commit `8e2bf5a`.
The current build also includes [AI connections and saved drafts](ai-connections.md):
named provider/model profiles, session-only keys, a separately run encrypted CVM
bridge, request review, structured preliminary reports, explicit host draft
save/restore/delete, and expanded onset/context fields. That increment is tested
with synthetic vendor responses; live inference and clinical quality remain
unverified. `storage`, `config`, and `cvm` are now optional domains. Statements
below about no AI implementation or provider-only storage describe the initial
milestone, not the current build.

The current body has since been replaced with a [rigged CC0 skin model](skin-model.md),
mesh-anchored markings and approximate surface zoning. Procedural geometry statements
below also describe only the initial milestone.

## Scope

The user requested a working UI prototype of an MIT open-source application provided as-is. Regulatory work is outside this implementation pass. The earlier research plan remains a proposal; this document describes what is actually built.

The body is a procedural articulated mannequin, making Blender/MCP setup unnecessary for this stage. A Blender connection becomes useful for preparing a replacement mesh, UV/region atlas, morph targets and deformation rig. No imported anatomical assets or third-party model licenses are involved in this prototype.

## Visual brief

A high-contrast consultation workspace: white panels, a neutral gray body, off-black text, reddish orange controls and distinct concern colors (updated 2026-10-25). Desktop composition places the body between profile and concern forms. Phone layouts switch between these panes. Tiny frames show a useful resize notice. The app owns its palette regardless of host theme; typography, semantic colors and canvas materials do not inherit shell branding. Body manipulation is separate from form editing, with visible rotate/mark/pose modes.

Representative state: the synthetic knee concern and fatigue example, showing a location marker, editable symptom form and position presets. Body measurements illustrate shape only. The report states that no AI assessment has run.

## Modules and boundaries

- `src/case.ts`: concern/profile types, region naming, pose wording, deterministic summary and output escaping.
- `src/body-scene.ts`: local Three.js scene, surface anchors, camera, body parameters, preset and illustrative two-bone limb controls.
- `src/main.ts`: application state, forms, navigation, connection previews and optional SDK storage calls.
- `src/napplet-settings.ts`: optional host accessibility setting with safe local defaults.

Only `storage` and `config` are used, both optional. Provider preference is the only value explicitly written to host storage. Health data and each provider's key remain in session memory. There is no identity requirement, relay use, network request, public upload or real inference. A failed or absent optional SDK operation leaves the core UI usable.

Model marks store a named part, part-local coordinates, surface normal, brush radius and stroke ID. They transform with their parent part across poses and size changes. This is a prototype attachment strategy; a final continuous skinned mesh will require canonical triangle/barycentric/UV anchors and a reviewed anatomical atlas. Region naming is coarse and editable. The limb solver is illustrative, not a biomechanics simulation; all controls operate on the on-screen mannequin.

## Verification scope

The smoke test exercises the real soyLI iframe with synthetic inputs, painting, concern editing, pose and measurement changes, summary generation, example attachment, provider preference saving, host themes and optional-domain absence. Exact iframe dimensions are checked at 200×160, 320×560, 900×600, 1200×800 and 1600×1000. Touch emulation covers 390×844, 360×640 and 844×390; physical iOS/Android hardware is not certified by these checks.

No AI output quality, clinical accuracy, realistic anatomy, file transfer or real credential flow has been tested or implemented. Conformance skipped cases must be reported separately from passes. Screenshots use synthetic content only; no private patient data is stored in the repository.

### Results from this implementation

- `pnpm verify`: passed (6 guidance tests, 5 case/provenance tests, type-check and build).
- `pnpm test:conformance`: 5 passed, 0 failed, 5 skipped. Manifest evidence, emitted wire envelopes and lifecycle measurement were not provided by this invocation.
- `soyli check`: passed with space-playback-6 and Chromium 153.0.8010.12.
- `pnpm test:prototype <printed preview URL>`: passed all listed desktop/touch, SDK-save, independent provider-key, unknown-severity and concern-pose checks, with no browser page errors.
- Built HTML: approximately 595 KB, self-contained. Static inspection found no direct network/browser-storage calls or external script/stylesheet references. Vite's 500 KB chunk-size advisory is expected for the bundled 3D renderer; code splitting would violate the single-file target.
- Inspected screenshots: all four required frame tiers, desktop example, limb posing, portrait, landscape and review flow. `preview.png` is the final synthetic desktop example. No promotional video was recorded.
- Preview shutdown is required after testing. This is a local, unpublished prototype; physical-phone behavior, realistic anatomy and all live AI/file integrations remain unverified.