Repository navigation
Openshop v0.29.0
Openshop v0.29.0
Covers everything since the last published release (v0.24.0 → v0.29.0). Five releases in one: this span implements every request from issue #3 plus a large feature, security, and correctness program.
Issue #3 — all six requests shipped
- Physical document sizes (v0.26.0): New Image takes millimetres or inches at a chosen PPI, converts live between units, ships A4/Letter/6x4in presets at 300 PPI, and the document carries its resolution into PSD and PDF export.
- One layer per text/shape object (v0.25.0): creating text or a shape mints its own named layer, Photoshop-style; the old stacking behaviour remains as a preference.
- Brush/eraser paint into the layer (v0.26.0): a finished stroke is composited into the layer's pixels and the editable path discarded — an "erasure" can no longer be dragged around afterwards. Lasso and pen gained start/end close "suction" with a lit close handle.
- Snapping (v0.26.0): objects snap edges, centres and midpoints to the artboard and to every other object with smart guides; Alt suppresses per drag; tolerance scales with zoom.
- Photoshop shortcuts: single-key tool map (V move, T text, and the rest) with the full list in the Shortcuts panel.
- Resizable right-panel sections (v0.26.0): drag bar between Layers/History/Properties, keyboard-operable (WCAG 2.5.7/2.5.8), Home/double-click restores, sizes persisted.
Highlights by release
- v0.29.0: canonical asset manifest driving loader/service-worker/security-checker; keyboard-operable Layers/History listboxes; document migration registry with rollback-safe future-schema rejection; peer-identifiable revision-safe WebRTC sessions; deterministic 4K/8K/12MP performance-budget runner in the release gate; cross-engine mobile capability matrix; plugin manifests with SHA-256 provenance and deny-by-default capabilities; cancellable batch runs; ABR tips rendered as raster stamps.
- v0.28.0: PDF import (each page an editable layer); animated WebP/APNG import with timeline durations; camera RAW import via pinned LibRaw/WASM; non-destructive Levels/Curves/HSL adjustment layers; independent raster layer masks; re-editable embedded Smart Objects; vector-shape-to-path conversion with Bezier handles; text-on-path; WebGPU filter compute with WebGL2/CPU fallback; 64×64 dirty-tile undo deltas (history ring 60 → 120); sandboxed iframe plugin API; ICC profile round-trip in PSD; folder batch processor; no-server WebRTC collaboration; ASE/GPL/JSON palette + ABR brush + GRD gradient import; persistent Mobile workspace.
- v0.27.0: script-policy release gate hardened; offline worker constrained to shipped assets; versioned
postMessageembed contract; named history states with branch archiving; SVG import as editable objects through the sanitiser; raster-to-vector tracing; true vector PDF export; Swin2SR super-resolution enlarger; on-canvas gradient stop editing; text decorations with independent colour/thickness; outbound network ledger with strict offline mode; Transformers.js 4.2 with pinned models; AVIF import/export; EXIF JPEGs no longer rotated twice. - v0.26.0: boolean selection modes (add/subtract/intersect); Windows High Contrast / forced-colors support; EXIF orientation on import; diagnostics export (ring buffer of last 200 errors, no document data); translatable toasts and command labels with honest parity metric; large-image slider responsiveness.
- v0.25.0: keyboard usability restored (Tab traversal, modal focus trap, welcome overlay released); selection sampling fixed at every zoom and on HiDPI; Grow/Similar write full coverage; delete-selection deletes pixels, not the tint; single
OS.versionconstant with a release check; destructive crop/flatten/rotate confirm what they discard; PDF export stream compression (3× smaller); ag-psd 31 with allocator-enforced memory ceiling.
Verification and one honest caveat
Before closing issue #3 I wrote one browser test per request — six in total — that drive the running editor rather than reading the changelog. All six pass, and they ship in the repo so a regression shows up in the suite instead of in a second bug report.
Doing that turned up something worth saying plainly: the Chromium end-to-end suite was already red on the v0.29.0 tree, ten failures, none of them related to issue #3. Four are fixed in this release:
- the selected bottom tab failed WCAG 2.2 text contrast (4.01:1 against its own tinted background)
- the workspace selector and the tool options Reset button were under the 24x24 pointer-target floor at 22px and 20px tall
- the tool family button never showed its active state on first paint
- the offline launch-queue test was written before the editor gained its blank workspace
Six remain open and are written up as a P0 at the top of ROADMAP.md, each with what it actually reports: mobile and tablet layout blocks that fight each other, a command-replay mismatch, the Photon WASM parity check, the sandbox plugin handshake, the queued-launch consumer, and Chinese coverage for the ~40 strings the audited tool inventory added. That last one needs a native speaker rather than a bulk machine translation, so it stays open on purpose.
Assets
openshop-v0.29.0.html— the single-file editormanifest.webmanifest,sw.js— PWA shell (shell revision0.29.0-r2)