photocraft/docs
Tanish Manku c5703f5632 Releasing a brush stroke no longer freezes: the commit takes the pixels the live stroke already drew (P32: 136 ms → 0.8 ms)
Brush phase 4. On release the canvas dropped its live stroke and ran `paint.stroke` over every
point again (the whole stroke re-rendered), then re-composited the stroke's bounding box, although
the canvas already showed exactly those pixels. Long strokes froze for 100–250 ms at mouse-up
(#2068).

- `Session::offer_live_stroke` hands the finished live stroke to the next command. A
  `paint.stroke` / `paint.pencil` whose command, document revision, params, seed and points match
  it exactly takes its pixels instead of rendering (result `"fromLive": true`). Anything else
  ignores the offer and renders as before. It still runs through the normal dispatch
  (authorization, journal, one history step), and a replay renders identical pixels.
- The canvas feeds the release frame's last points to the live stroke first, then remembers the
  stroke's per-step damage for one revision (`CommittedStroke`): each canvas cache re-composites
  only the steps it hadn't shown, usually nothing, instead of the bounding box.
- P32 (brush release on a long stroke) becomes measurable: perf_scenarios times a 600-point
  200 px soft stroke on 24 MP. 136 ms → 0.83 ms on the GPU canvas, 257 ms → 0.71 ms on the CPU
  canvas (RTX 5090, release). Budget 16 ms, not enforced until a baseline run.
- Scorecard: TOOL-213-10 (⌃⌥-drag resize with readout) is done; TOOL-213-7 (live strokes for every
  brush-based retouch tool) is partial (Spot Healing, Mixer Brush, Background Eraser and Pattern
  Stamp still aren't live).
2026-10-10 23:23:02 -07:00
..
brand Licensing: MIT OR Apache-2.0 files, NOTICE, ArtCraft brand terms, attribution 2026-10-04 10:06:17 -04:00
images PSD text fill: keep the fix and its tests, drop the proof-only screenshots and example 2026-10-09 01:57:17 +07:00
architecture.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
brush-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
camera-raw-histogram.md Camera Raw: read and write settings as a live PSD Smart Filter (part of #215) (#459) 2026-10-07 17:59:16 -04:00
camera-raw-zoom.md Rework Camera Raw filter preview and navigation (#781) 2026-10-07 18:40:24 -04:00
color-picker.md Type Color Picker opens the full Color Picker; screen eyedropper with a pixel loupe (#1232) 2026-10-09 00:30:50 -04:00
context-menu-inventory.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
context-menu-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
contributing.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
contributors.md About: contributor and model credits compiled in (grab bag + table, self-submitted names) (#898) 2026-10-07 21:22:11 -04:00
control-protocol.md UI.9: refresh shared panel integration against current main 2026-10-10 19:30:56 -06:00
decisions.md Keep duplicated Smart Objects linked to shared contents (#2222) 2026-10-10 05:05:56 -04:00
development.md UI.9: keep browser bundle under size budget on current main 2026-10-10 20:56:34 -06:00
file-format-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
gaps.md Tools: Single Row Marquee and Single Column Marquee (#2837) (#2848) 2026-10-10 19:10:34 -04:00
gpu-composite-reuse.md Design: bounded GPU stack prefix reuse for property edits (#1164) 2026-10-11 02:08:08 -04:00
hardware-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
iris-blur-performance.md Speed up Iris Blur without changing output (#2578) 2026-10-10 14:00:53 -04:00
localization-ko.md Improve Korean terminology and dynamic UI translation coverage (#604) 2026-10-07 16:32:47 -04:00
localization-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
localization-zh-hans.md i18n: complete Simplified Chinese catalog and localize brush sections (#359) 2026-10-07 07:46:52 -04:00
localization.md Add Dutch (nl) UI translation (#1877) 2026-10-09 12:41:23 -04:00
mcp.md automation: accept absolute paths beneath the automation roots (#2176) (#2216) 2026-10-10 05:53:23 -04:00
octagonal-mask-performance.md Compute exact octagonal mask shifts with bounded workspace (#2154) 2026-10-10 06:46:06 -04:00
ora.md Add OpenRaster (.ora) import and export (#2257) 2026-10-10 08:40:35 -04:00
parity-checklist.md Layer > Rasterize > Layer Style bakes effects; Rasterize Layer converts vector masks (#2245) (#2669) 2026-10-10 19:20:33 -04:00
pdn.md Add native layered Paint.NET (.pdn) import (#1998) 2026-10-09 21:05:00 -04:00
pixelate-performance.json Pixelate: CMYK Facet 13.7x faster, Lab halftone 5.0x faster (#2588) 2026-10-10 14:03:03 -04:00
pixelate-performance.md Pixelate: CMYK Facet 13.7x faster, Lab halftone 5.0x faster (#2588) 2026-10-10 14:03:03 -04:00
plugins.md Plug-ins: keep the originating error across parallel bands (#1654) 2026-10-09 09:11:00 -04:00
proximity-match-performance.md Proximity Match: 1.5-3.8x faster stroke searches, smaller mask tables (#2101) 2026-10-09 19:34:26 -04:00
quick-selection-performance.md Quick Selection: 3.5x faster CPU strokes with hybrid graph cuts (#2436) 2026-10-10 14:17:48 -04:00
radial-blur-performance.md Optimize Radial Blur sampling without changing output (#1499) 2026-10-09 14:41:52 -04:00
release-playbook.md docs: stop linking readers to the private craftrules repo (#493) (#779) 2026-10-08 15:04:21 -04:00
releasing.md Release prep 0.7.0: Linux riscv64 tarball + version bump (#2965) 2026-10-10 21:36:30 -04:00
roadmap.md UI.9: refresh shared panel integration against current main 2026-10-10 19:30:56 -06:00
scorecard.md Releasing a brush stroke no longer freezes: the commit takes the pixels the live stroke already drew (P32: 136 ms → 0.8 ms) 2026-10-10 23:23:02 -07:00
selection-distance-performance.md Selection distance transforms: 7.6-10.6x faster and correct past 4K (#2093) 2026-10-09 19:28:33 -04:00
shape-strokes.md Expose native shape stroke controls with staged previews (#2218) 2026-10-10 06:42:52 -04:00
target-app-parity.md GPU composite: reuse unchanged lower-stack chunks for property edits (#1169) 2026-10-11 02:07:48 -04:00
ui-design.md UI.9: refresh shared panel integration against current main 2026-10-10 19:30:56 -06:00
ui-parity.md Tools: Single Row Marquee and Single Column Marquee (#2837) (#2848) 2026-10-10 19:10:34 -04:00