Skip to content

Add painted reveals to Photographic Cells - #161

Merged
git-chad merged 24 commits into
git-chad/shader-lab-v3-planfrom
git-chad/v3-cell-paint
Oct 1, 2026
Merged

git-chad merged 24 commits into
git-chad/shader-lab-v3-planfrom
git-chad/v3-cell-paint

Conversation

@git-chad

@git-chad git-chad commented Sep 17, 2026 •

Copy link
Copy Markdown
Collaborator

Photographic Cells can now reveal areas chosen by painting. Layout → Paint adds Reveal/Erase, Brush Size, reversible Clear, and automatic editing on choosing Paint, plus Edit/Done controls to resume or finish. A faint source guide appears only while editing; the painted region retains photographic detail and uses the existing stepped geometry and perimeter outlines.

Coverage is stored as a bounded bit-packed mask and travels through project hydration, duplication, history, shader export and the runtime. Strokes commit as single undo actions; Escape, blur, capture loss and scene replacement cancel incomplete strokes. Canvas pan/zoom stays available, including a fix for Space accidentally activating a previously focused toolbar button.

The GPU mask texture is reused and uploaded only when coverage changes; moving source frames remain live. An opt-in decoded-video benchmark compares Rings, automatic Cells, Paint and combined passes. Its SwiftShader results identify Rings as the main cost in that software workload, not a native GPU or thermal diagnosis. Native sustained playback and encoded-video export validation remain in roadmap 7.2.

Validation:

  • bun run check passes (existing lint warnings only).
  • bun run test:composition passes, including 178 Cells GPU cases and real hydration/history/export checks.
  • bun tests/composition/cell-paint-ui.mjs passes: real pointer strokes, atomic undo/redo, erase/clear/cancellation, pan/zoom coordinate alignment, and actual .lab export/reopen.
  • MCP reference generation is unchanged. Reference 11 (bridge) and actual painted-photo renders reviewed.

Stack: this PR → #160 (git-chad/v3-cell-regions), ultimately into integration #150. No V3 merge into main until the plan is complete. The user accepted the painted reveal and requested automatic entry to editing; focused test and performance limits. Edge Scatter and fine-dot/color curation remain later work.

Roadmap follow-up: the user requested customizable dark/light colors in the existing Threshold layer, preserving black/white defaults. Recorded as pending implementation in 2.5.1.

@vercel

vercel Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
shader-lab Ready Ready Preview Oct 1, 2026 7:06am UTC

@greptile-apps

greptile-apps Bot commented Sep 17, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 3/5

The PR should not merge until paint sessions end consistently and Space no longer blocks keyboard activation of focused editor controls.

Summary

This PR adds persisted painted coverage to Photographic Cells across the editor, project lifecycle, GPU renderer, exported React runtime, and focused test tooling.

  • Adds Reveal/Erase painting, brush sizing, reversible clearing, editing guidance, and atomic stroke history.
  • Stores coverage as a bounded bit-packed mask and reuses a single-channel GPU texture.
  • Extends editor/runtime parity, hydration, export, UI, and moving-video performance coverage.
  • Two interaction regressions remain: editing resumes implicitly after temporary ineligibility, and global Space handling disables native keyboard activation for focused buttons.

Reviews (1) · Last reviewed commit: "Add painted reveals to Photographic Cell..."

Comment thread src/components/editor/cell-paint-overlay.tsx
Comment thread src/components/editor/editor-canvas-viewport.tsx
…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.
@git-chad
git-chad force-pushed the git-chad/v3-cell-regions branch from 2311e14 to 55f46d5 Compare October 1, 2026 07:04
@git-chad
git-chad force-pushed the git-chad/v3-cell-paint branch from 164cec7 to 73107b7 Compare October 1, 2026 07:04
@git-chad
git-chad changed the base branch from git-chad/v3-cell-regions to git-chad/shader-lab-v3-plan October 1, 2026 15:12
@git-chad
git-chad merged commit 73107b7 into git-chad/shader-lab-v3-plan Oct 1, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview — 73107b7d Deployed Oct 1, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant