Repository navigation
V3: Annotations layer - #172
Merged
Merged
Conversation
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
…roup failures Media load callbacks now ignore replaced or removed passes and pending loads are cleared on disposal. Strict-mode pass failures are reported once at the originating pass instead of at every group boundary.
Publishing now drops every descendant of a hidden group and clears the parentId of any retained layer (the audio source) whose parent was removed, so the published scene passes hierarchy validation on reopen.
Cap the neighbor row and column search to two cells each side so the worst-case cellAt count per fragment is 25 instead of unbounded in the packed minimum-size, maximum-stroke configuration. Mirrored in the runtime package.
…e on buttons Clear the active paint layer when the layer stops being paintable (selection, mode, visibility or lock change) so Paint never resumes without Edit Paint. Only preventDefault on Space for non-interactive targets so focused buttons and links still activate.
…handle unmount Mask coordinates are now measured against the composition crop frame in the renderer and the handles overlay, so preview and export agree when the viewport and composition aspect ratios differ. Unmounting the handles mid-drag no longer writes the drag-start mask back, which overwrote the result of an undo.
… imports - Recompute outputSize from the restored scene config when applying a history snapshot - Normalize Custom imports whose saved composition differs from the guide size, keeping fixed Custom documents intact
… UI test docs - GeometryHandles: keep restore in a ref so rerenders during a drag no longer cancel it - shape-pass (editor and runtime): atan2 returns +-PI on the negative axis when y is zero - shader-export: add shape to SupportedShaderExportLayerType - Document shape-layers-ui.mjs in SHAPE-LAYERS-MANUAL-QA.md
…th limit - restore font size when a text handle resize is cancelled - rotate the edit textarea around the anchor on both axes - cap in-place text edits at the Text parameter's 600 characters
…bracket mode Body: the trail ribbon now accumulates the corner-masked bracket stroke instead of the full outline, in both the app and the React runtime copy.
…ait edge readback on export, hide snapped handles, widen export type - Painted placement falls back to the undrifted anchor when drift would leave the stroke - Edge placement lays out nothing until the edge field exists and the export prepare step awaits the pending readback - Annotation target handles are hidden while Snap to Strongest Edge is active - Add annotations to SupportedShaderExportLayerType
git-chad
force-pushed
the
git-chad/v3-blob-tracking-upgrade
branch
from
October 1, 2026 07:05
df1a627 to
ffb8e48
Compare
git-chad
force-pushed
the
git-chad/v3-annotations
branch
from
October 1, 2026 07:05
8520b7f to
d258666
Compare
git-chad
changed the base branch from
git-chad/v3-blob-tracking-upgrade
to
git-chad/shader-lab-v3-plan
October 1, 2026 15:13
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part 2 of the technical annotations direction (roadmap 6.3): a standalone Annotations effect layer modeled on reference 03 (the frog), with the vocabulary of 10 and 19.
What it draws: a target with concentric solid and dashed rings, a reticle, a small offset ring with a cross, angle and value readouts and dashed connectors to nearby marks; scattered dots, rings, crosses, boxes (solid, dashed, corner brackets) with short labels and counters; rulers with ticks and a boxed counter; a status tag and two metadata blocks; a dithered gradient swatch. Every family has a toggle. Density, Seed and Drift (slow seeded motion over time, as on video) shape the scatter; Scale, Stroke Width and Text Size the look.
Placement: Seeded anywhere, along Edges (a 128×72 Sobel field read back every third frame; the target can Snap to Strongest Edge), or Painted with the same brush and coverage codec as masks and Cells, so marks appear only inside your strokes. The target has canvas handles (center and size) sharing the mask/shape handle component; one drag is one undo.
Text: Instrument, Surveillance, Scientific and Minimal presets fill two editable fields, Words (the first is the status tag) and Metadata (a blank line splits the two corner blocks). Glyphs use Blob Tracking's mono atlas. Color: Monochrome ink or a Palette ramp where each element picks a stop by seed. The panel states that nothing is detected or recognized.
Architecture: deterministic CPU layout in
renderer/annotations-layout.ts(shared, at most 320 marks and 1024 glyphs) drawn as instanced signed-distance quads into a transparent target and composited as an effect, so it respects groups, masks and blend modes. Editor and runtime are identical apart from imports.Validation:
bun run check— passes; the same three preexisting lint warnings.bun run test:composition— full suite passes, includingtests/composition/annotations.mjs: layout determinism, density, drift, target rings and snap, painted and edge placement, text and palette parsing, editor/runtime renders (marks present, everything-off empty, target position and offset, palette color, parity), brush eligibility, hydration, save/reopen, export, reopened pixels and the catalog preview. Legacy baselines untouched.bun tests/composition/annotations-ui.mjs— actual editor: picker entry, target handle drag with one-undo, preset apply, palette ramp, painted placement with the brush, save/reopen. Screenshot reviewed against reference 03.Found and fixed while building: a chain of nested TSL
selectcalls keyed on a float instance attribute produced wrong coverage; arithmetic masks replaced it.Not in this slice: connected-dots portrait (reference 21), region- or segmentation-guided placement, per-element rotation, the organic cracks of reference 03. Stacked on #170 (
git-chad/v3-blob-tracking-upgrade), within integration #150. Nothing merges to main before V3 is complete. Focused user test: tests/composition/ANNOTATIONS-MANUAL-QA.md.