| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
viewport, ground grid, drop masthead title
|
| |
|
|
| |
(ACES, env reflections, rim/bounce lights)
|
| | |
|
| |
|
|
| |
ship, 409 replays completed run history)
|
| |
|
|
| |
cache-busted script urls
|
| |
|
|
| |
artifacts; running stays protected
|
| |
|
|
| |
boot-default submit picks a fresh live run id
|
| |
|
|
| |
notes
|
| |
|
|
|
|
|
|
|
|
|
| |
- boot loads the completed run from /api/artifacts/manifest and renders its
latest checkpoint with concrete build-review labels (no fake unknown-state
wording); offline fallback still shows the honest placeholder
- artifact manifest/steps endpoints now fall back to disk when a completed
run has no in-memory registry entry, keeping pre-published history browsable
after a service restart (digest-verified, .glb-only / steps/ / logs/ rejected)
- driver: heritage flows pin heritage ids explicitly; new checks for the
boot probe replay and its labels; 72/72 green with zero console errors
|
| |
|
|
| |
pipeline/CLI
|
| |
|
|
| |
disposal
|
| |
|
|
| |
link rejection
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- renderTimeline rebuilds #timeline-track after each snapshot and wires
click-to-pin on completed checkpoints (kept placeholder nodes otherwise)
- selection loads the pinned run's own steps/<n>-*.glb (generation/
ownership guards apply), pins survive live snapshots, 跟随最新 restores
live scope, replay pauses/scrubs through 已完成 versions
- placeholder fallback now clearly labeled (占位…) only before any run
- acceptance: historical_replay_regression (9 checks) pins mid-run,
asserts no auto-follow strays, late-older-response precedence, served
checkpoint sha256 vs CLI reference, and viewport geometry change
- fix: timeline-track id missing in index.html crashed renderTimeline
(null firstChild), leaving static placeholder nodes non-clickable
- driver: 71/71 checks, zero console/page errors
|
| |
|
|
| |
same-run ordering and replay invalidation
|
| |
|
|
| |
regression
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
acceptance driver
- add three.js Box3/Camera bindings and bbox-driven camera framing
(fov-fit with margin, recenters the model so group rotation orbits
in place); refit on canvas resize instead of reverting to replay
placeholder geometry
- expose window.SOMHAIRLES_VIEWER debug handle for numeric verification
- add tools/acceptance/e2e_acceptance.py: self-provisioning playwright
driver (isolated port/artifact root, unique run ids) asserting framing,
frozen-screenshot determinism, GLB hash equality, failure surfacing
- gitignore scratch/ and tools/acceptance/deps/; document the
clean-checkout verification sequence (fable before build)
|
| |
|
|
|
|
|
|
| |
The viewer now has end-to-end evidence: SSE-driven LIVE ingestion of
pipeline GLBs into the Three.js viewport (stage-1 mid-run, stage-3 final,
frozen-canvas hash separation, byte-identical served vs CLI artifact),
failure indication, and zero console errors. Documents the new
/api/artifacts/steps route and the vendored three.js dependency.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Protocol: RunSnapshot gains CompletedSteps (accumulated from checkpoint
artifact paths, reset on start) so the frontend can tell when real
pipeline geometry exists. New coordinator method StepArtifact plus
GET /api/artifacts/steps serves steps/*.glb while a run is active (any
lifecycle status), traversal-guarded and .glb-only, so stages appear
without waiting for run completion.
Frontend: GLTFLoader loads the latest completed step into the viewport
group as soon as its checkpoint lands over SSE; replay placeholder
frames render only while no step artifacts exist. ?freeze=1 query param
stops rotation for deterministic screenshot verification. Three.js r160
and GLTFLoader (with BufferGeometryUtils) are vendored under public/
vendor with an import map and a window.THREE shim, replacing the CDN
UMD script; the ~1.4MB vendored three.js files are third-party
dependencies (MIT), not project assets.
Tests: store accumulation of completed artifact paths; steps endpoint
serves GLB during an active run, rejects traversal, 404s missing files.
Verified: dotnet build Debug+Release clean, 42/42 tests pass, Fable
compile clean, release server smoke serves index/vendor/steps endpoint.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[Change Nature]
- This commit adds the first runnable increment of the F# artifact
pipeline: CLI, server, frontend bundle, stage fixture, and tests.
It is feature work, not a bug fix.
[New Capability]
- CLI `run` executes the three-step Blender fixture through the process
bridge and writes GLBs, step logs, events, and a manifest; `verify`
validates a manifest without Blender.
- Server exposes run start, run-scoped SSE, artifact manifest/file
routes, and serves the Fable frontend from its build output.
- Frontend starts runs, follows run-scoped SSE progress, and links the
artifact manifest on completion.
[Implementation]
- Shared layer holds domain, run state, replay, and artifact contracts;
Modeling holds the pipeline, 120s bridge timeout, and result-file
protocol; stage/blender/fixture.py owns geometry in Python (bpy owns
geometry, F# owns orchestration).
- Fable bundle is regenerated into public/ and copied by the server
project; solution includes all projects with warnings-as-errors.
- README documents build, Fable, server, interpreter/env, fixture
limitations, and current verification status.
[Impact]
- Verified: 40/40 solution tests pass; Release build 0 warnings/errors;
real CLI run with bpy 5.0.1 produced 3 GLBs, 3 logs, and a
verify-clean manifest; isolated-port server smoke flow succeeded.
- Not yet verified: browser end-to-end behavior and production
fidelity. Artifacts and caches are gitignored.
|
|
|
[Change Nature]
- This commit adds the approved design contract for the modeling pipeline.
[Documentation Update]
- Define shared lifecycle events, artifact manifests, immutable filesystem rules, and Blender bridge protocol.
- Define CLI, server, browser, verification, and cgit publication boundaries.
[Update Plan]
- Use this contract to implement the shared F# library, stage fixture, CLI, and server adapter.
- Preserve the existing replay/browser scaffold while adding verified artifact execution.
[Impact]
- Documentation only. Runtime behavior is unchanged.
|