SUPER PRINT v0.0.5-alpha
Released — April 2, 2026
🐛 Critical Fix — Undo/Redo blocked after page restore fix
- _isRestoringState stuck on empty canvases — when
_fastRestoreCanvases() was called with zero canvases, pendingLoads never reached 0 and onCanvasLoaded() was never invoked. The internal restore guard _isRestoringState stayed true permanently, silently blocking all Ctrl+Z / Ctrl+Y until the next full page reload. Added an early-exit guard that resets the flag immediately when canvases.length === 0 fix
🐛 Fix — Text undo race condition fix
- Ctrl+Z inside text block inconsistent —
spScheduleTextEditingUndoFallback() compared the text content before and after a 25 ms window to decide whether to fall back to global undo. On a loaded browser the timeout fired before the native textarea had processed the keystroke, causing the global undo to trigger when it shouldn't — or to not trigger when it should. Timeout increased from 25 ms → 60 ms to reliably wait for the native input event cycle fix
⚡ Performance — Auto-save pressure reduced fix
- Debounce after saveState extended — the IndexedDB write was scheduled 12 s after every
saveState() call (which fires on every user action). On intensive work sessions this created a continuous queue of serialization tasks. Debounce extended to 30 s; the requestIdleCallback timeout increased to 10 s so the write only happens when the browser is truly idle fix
- Periodic auto-save interval reduced — the background
setInterval safety timer was set to 60 s and ran redundantly alongside the debounce. Increased to 5 min — it now acts only as an inactivity safety net, not as a second write path fix
- setTimeout fallback no longer fires inline — the non-
requestIdleCallback fallback path now defers 200 ms instead of executing synchronously, preventing an IndexedDB write from landing in the same frame as a user interaction fix
🔤 UX — Auto-save wording clarified
- All user-visible references to IndexedDB replaced with "Sauvegarde automatique dans le navigateur" — onboarding wizard, Ctrl+S mode dropdown, onboarding FAQ and schema.org metadata. The technical term was meaningless to end users fix
📝 Details
Fabric.js 5.3.0 · IndexedDB · requestIdleCallback · Vanilla JS
→ Open SUPER PRINT
KULT v0.3.1-alpha
Released — April 1, 2026
🐛 Critical Fixes
- Fix deletion after autosave restore — objects loaded from autosave are nested inside a parent
Group (GLB root) and not directly in the scene; scene.remove(obj) was a silent no-op. Replaced by obj.removeFromParent() in deleteSelection() and _removeObjFromScene() — deletion now works correctly regardless of object nesting depth fix
- Quad view labels repositioned — the 4 view labels (Perspective / Top / Front / Right) are now placed precisely in the requested corner of each quadrant following the standard Blender / DCC convention fix
📝 Details
obj.removeFromParent() · quad-label CSS · Vanilla JS
→ Open KULT
KULT v0.2.0-alpha
Released — March 27, 2026
⚡ 100% GPU-Accelerated Sculpt & Rendering
- Incremental vertex normals — normals are now recomputed only on affected vertices instead of the full mesh on every sculpt frame; eliminates 100–500 ms stalls on meshes with 10K+ vertices new
- GPU memory leak fixed — undo stack now disposes geometries and materials when actions drop off the 50-step limit; prevents 10–100 MB VRAM accumulation over a session fix
- Non-blocking autosave — GLB serialization moved off the main thread; eliminates the 200–500 ms freeze every 30 s fix
- StaticDrawUsage by default — geometries now use
StaticDrawUsage at rest and switch to DynamicDrawUsage only during active sculpting; +10–20 % GPU throughput on static meshes new
- InstancedMesh for procedural layouts — grid, line, circle and scatter generators now render via
THREE.InstancedMesh; reduces draw calls from 40–80 per asset down to 1 new
- Indexed geometry preserved —
toNonIndexed() is no longer applied globally; kept only during sculpt mode, ×3 VRAM savings and −30–50 ms at import fix
⚙️ Technical
- Three.js v0.179.1 — WebGL 2.0, SRGB, PBR
- All existing features preserved — sculpt, build, procedural, FX pipeline, multi-format import/export
- Lazy-loaded post-processing passes unchanged (Bloom, FXAA, Vignette, Manga, Ink)
📝 Details
Three.js 0.179.1 · InstancedMesh · StaticDrawUsage · Incremental normals · Worker autosave · Vanilla JS
→ Open KULT
ZE(B)D ONE v1.0
Released — March 27, 2026
🥁 Jungle & DnB Drum Machine — First Release
- 15-track step sequencer — Kick, Snare, Ghost, Clap, HH-C, HH-O, Ride, Crash, Rim, Perc, Sub, Reese, Stab, Chord, Amen Break new
- 3 pattern lengths — 16, 32 or 64 steps per pattern, switchable per session
- 8 patterns (A→H) — Copy, paste, clear; chainable in Song Mode for full arrangement
- BPM 60–300 with ± buttons, direct input and Tap Tempo
- Swing — 0–80% groove control with live preview
- MPC-style pads — 15 velocity-sensitive pads, keyboard shortcuts (Q W E R · A S D F · Z X C V · B N G), punch-in recording mode
- 7 sound kits — Jungle (default), 808 Trap, Techno, Garage, Ragga, Industrial, Minimal — all synthesized via Web Audio API, zero samples
- 6 built-in presets — Amen Classic, DnB Stepper, Jungle Chopper, Half-Time DnB, Roller 32, Reese Roller
- Per-track volume & mute — Individual gain sliders and mute buttons on each track row
- Humanize — Randomizes velocity values for organic feel
- Metronome — Click track toggle (M key)
🎛️ FX Module
- Reverb — Convolution reverb with Mix and Size knobs
- Delay — Tempo-synced delay with Mix, Time and Feedback controls
- Phaser — 4-stage allpass phaser with Mix, Rate and Depth
- Filter — Biquad LP/HP/BP with Frequency and Resonance
- Drive — Waveshaper distortion
- Bitcrusher — Sample-rate crush with Mix and Bits (2–16)
- Compressor — Master bus dynamics with Threshold and Ratio
- Stereo Width — Mid/side width control
- FX preset save/load/delete — custom FX chains stored in localStorage
📊 Visualizer & MIDI
- Waveform / Spectrum / Both — Real-time canvas visualizer with 3 display modes
- Web MIDI — Full MIDI input/output, configurable channel and per-track note map (GM Drum Map inspired)
Undo / Redo — 50-step history (Ctrl+Z / Ctrl+Y)
💾 Save & Export
- Save / Load — Full session saved as
.zebd JSON (patterns, FX, BPM, swing, kit)
- Export WAV — Offline bounce of the current pattern loop to stereo WAV
- Import Sample — Drop any audio file onto a track slot for custom one-shot playback
- Autosave — Continuous localStorage autosave, restores on page reload
⚙️ Technical
- 100% Web Audio API synthesis — no external samples, no CDN dependencies
- Vanilla JS ES6 · single
app.js + style.css · zero build tools
- Dark / Light theme toggle (T key)
- Offline-first — works fully without network after first load
📝 Details
Web Audio API · Web MIDI API · Canvas 2D · Vanilla JS · ~2 800 lines
→ Open ZE(B)D ONE
TAGZ v1.0
Released — March 27, 2026
📡 Multi-Column Social Dashboard — First Release
- Bluesky & Mastodon & Lemmy support — follow profiles, hashtags and communities in real time, side by side in resizable columns new
- Multi-network splash — select one or more networks (Bluesky, Mastodon, Lemmy) before searching; launches one column per selected network simultaneously new
- Media lightbox — click any photo or video to open full-screen; keyboard navigation (← →) across media in the same post new
- Deduplicate by author — max 2 posts per author per feed; "Show all" banner to reveal hidden posts new
- Load More pagination — all 6 feed types (Bluesky profile & search, Mastodon profile & hashtag, Lemmy community & search) new
- Default hashtag mode — search defaults to hashtag; prefix
@ to switch to user search
- Adaptive logo — white logo in dark mode, black logo in light mode, no flash
- Spray canvas animation — interactive ink-spray mouse effect on the splash screen new
🎨 UI & UX
- Full neutral color system — all blue/violet accents replaced by pure black/white palette, light and dark theme
- Transparent search box — no background fill, 2px white border on dark mode
- Multi-select network buttons — toggleable pills; at least one always active; searches open in parallel columns
- Responsive columns with drag-to-resize handles
🔍 SEO & PWA
- Full
<head> — title, description, canonical, hreflang, geo, OG, Twitter Card, JSON-LD WebApplication
- PWA manifest — installable on desktop and mobile
- Added to sitemap.xml at
priority: 0.9
⚙️ Technical
- Vanilla JS IIFE — zero build tools, zero dependencies
- All 6 fetch functions return
{html, nextCursor} for clean pagination
PAGE_STATE WeakMap — per-feed pagination state
- 100% client-side — no account required, no tracking, no cloud
📝 Details
Bluesky AT Protocol · Mastodon API · Lemmy API · Canvas 2D · Vanilla JS · PWA
→ Open TAGZ
PDFZ v0.2.0-alpha
Released — March 23, 2026
✂️ Visual Crop & Major UX Overhaul
- Visual crop tool — Full-screen Photoshop-style crop overlay with 8 draggable handles, real-time mm dimensions, per-page or all-pages scope new
- ICC color profiles — Right-side sliding drawer with CMYK (FOGRA39/47/51/52, SWOP, GRACoL, Japan Color), RGB (sRGB, Adobe RGB, Display P3), Grayscale profiles + custom .icc/.icm upload new
- Append PDF — Open a second PDF and its pages are appended to the current document new
- Imposition expanded — 7 layouts: 4-up, 8-up, 16-up, 20-up (5×4), 24-up (6×4), 32-up (8×4), 64-up (8×8) with SVG icons new
- Text edit background fix — Samples background color behind text, preserves it during editing with inline span styles fix
- Text paragraph width fix — Lines split at large horizontal gaps, textarea width clamped to page edge, tighter paragraph grouping fix
🎨 UI & UX
- Floating search — Find & Replace moved to a bottom-left floating button (desktop), panel opens above it
- Toolbar reorder — Export button moved to the very end of the toolbar
- ICC drawer — Replaced dropdown panel with a full-height right-side sliding drawer with smooth CSS transition
- Splash screen redesign — Vertical card layout, loading spinner during PDF load, fixed blank PDF creation
- Sidebar thumbnails — Fixed-height (180px) with centered canvas, consistent aspect ratios
- New imposition icon — Asymmetric divided rectangle for better visual recognition
⚙️ Technical
- Single-file architecture — one
index.html, now ~4800 lines
- pdf-lib
setCropBox + setMediaBox for permanent page cropping
- PDF.js canvas rendering for crop preview at adaptive scale
- Font detection: strip trailing numbers & PSMT suffixes from font names
📝 Details
PDF.js 4.9.155 · pdf-lib 1.17.1 · Vanilla JS · ~4800 lines
→ Open PDFZ
PDFZ v0.1.0-alpha
Released — March 22, 2026
📄 Ergonomic PDF Editor — First Release
- PDF rendering — PDF.js 4.9.155 with high-quality canvas rendering, multi-page view and smooth zoom new
- Text editing — Edit extracted text from PDF pages in a right-side drawer panel
- Annotations — Draw, highlight, eraser tools with undo/redo support
- Digital signatures — Draw or import signature, place on any page
- Image insertion — Add images via file picker or drag & drop
- Find & Replace — Search through extracted text with replace functionality
- Page management — Add, delete, reorder, rotate pages, merge another PDF
- Professional imposition — 8 layouts (2-up, 4-up, 6-up, 8-up, 9-up, N-up, booklet, step & repeat) with 10 sheet sizes, custom margins, gutters, bleed, crop marks, auto-rotate, creep compensation, page range selection new
- Crop marks & watermark — Configurable crop marks on export, text watermark overlay
- Export — PDF export with quality settings, image export (PNG), print support
- Font management — Custom font loading for text elements
- Preferences drawer — Right-side drawer with DPI, quality, PDF standard, metadata, export options
- Keyboard shortcuts — Full shortcut set (V/T/D/H/E tools, Ctrl+S/Z/Y/F/P)
- Dark/light theme — Auto-detected from system preferences
⚙️ Technical
- Single-file architecture — one
index.html, zero build tools
- PDF.js 4.9.155 (ESM) for rendering, pdf-lib 1.17.1 for manipulation
- Tailwind CSS CDN + custom CSS
- Offline-first, no cloud, no tracking
📝 Details
PDF.js 4.9.155 · pdf-lib 1.17.1 · Tailwind CSS · Vanilla JS · ~3200 lines
→ Open PDFZ
ZEMULE v0.1.0-alpha
Released — March 22, 2026
🎮 Retro Multi-Console Emulator — First Release
- Multi-console support — SNES, Mega Drive, 3DO and Neo Geo emulation directly in the browser new
- ROM loading — Drag & drop or file picker, supports .sfc, .smc, .md, .bin, .gen, .iso, .chd, .zip, .7z formats
- Save/Load states — Save and restore game progress at any point
- Virtual gamepad — Touch-friendly on-screen controller for mobile devices
- Fullscreen mode — Immersive gameplay with one click
- CRT scanlines effect — Optional retro visual filter
📝 Details
100% browser-based · No installation · No cloud · Offline-capable
→ Open ZEMULE
CUT THE FLOW v2.1
Released — March 6, 2026 · Updated March 7, 2026
📱 Mobile Responsive — Complete Redesign
- Hamburger button — fat chunky 3-bar button (
26×3px each), animates to × when drawer is open, appears only on mobile (≤768px) new
- Slide-out drawer — left-to-right panel (285px, 88vw max) with 3 sections: Édition (Undo, Redo, Text, Color Block), Format (16:9, 9:16, 1:1, 4:5), Projet (Open, Save, AI Assistant, Export) new
- Drawer closes on backdrop tap, on button action, and automatically on window resize to desktop
- Bottom tab bar redesigned — 5 tabs: Média, Timeline, FX, Color, Export (previously 4 tabs without FX/Color) new
- FX panel — now opens as a mobile bottom sheet from the FX tab instead of a top overlay; 4-column grid, touch-optimized button size fix
- Color Grading panel — accessible from dedicated Color tab in bottom bar new
- All bottom sheets (Media, FX, Color, Properties, AI) use
background: #050505 with border-top: 1px solid #111
🖤 Pure Black Theme
- Toolbar, body, container background:
#000 (previously #0a0a0a / #1a1a1a)
- Bottom tab bar:
background: #000, border-top: 1px solid #111
- Drawer interior:
#000 background, cards #0c0c0c, dividers #111
theme-color meta tag updated to #000000
🔧 Mobile Toolbar
- Toolbar height:
48px on mobile (was 40px)
- Toolbar center (all tool buttons) hidden on mobile — replaced by drawer
- Export button always visible in top-right on mobile: white background, black icon,
36×36px
- App logo:
margin-right: auto to push export flush right
⚙️ JavaScript
toggleMobileDrawer() — open/close drawer with burger animation, body scroll lock
closeMobileDrawer() — centralized close, resets burger aria-expanded
mobileTab() extended — now handles fx and color cases (show/hide panels + backdrop)
- Window
resize listener: auto-closes drawer when viewport exceeds 768px
📝 Details
Vanilla JS · toggleMobileDrawer / closeMobileDrawer added · CSS mobile section overhauled (@media max-width: 768px) · Zero dependencies
→ Open CUT THE FLOW
🎬 Fade In / Fade Out System new
- Visual Fade Panel — dedicated toolbar button (SVG envelope icon), opens a floating panel with 4 one-click presets: No Fade, Fade In, Fade Out, In & Out
- Live SVG envelope visualizer — updates in real time as sliders move, reflects the actual fade shape (ramp up / flat / ramp down)
- Two sliders (0–5 s, step 0.1 s) for Fade In and Fade Out durations, synced bidirectionally with the Properties panel
_calcFadeOpacity(clip, t) — new helper computing 0–1 opacity from clip position in timeline
- Live preview:
_applyVideoTransform() now drives element opacity via _calcFadeOpacity()
- Fade
globalAlpha applied during export in all 7 export engines — image and video clips
fadeIn / fadeOut values persisted in .ctf, .json and Pinata saves — confirmed safe through spread-operator audit
- New JS methods:
toggleFadePanel(), updateFadePanel(), _drawFadeEnvelope(), applyFadePreset(), setFadePanelIn(), setFadePanelOut(), _syncFadePresetHighlight()
🖼️ Image Positioning Fix fix
- Static images dropped on the timeline were clipped to the top-left corner of the preview —
#previewImage was missing from the CSS position:absolute; top:50%; left:50% centering rule
- Conflicting inline
width:100%; height:100% style on <img id="previewImage"> removed
🎞️ Export Engines — Full Parity fix
- All 7 export engines now apply contain-fit aspect-ratio preservation,
videoScale / videoPosX / videoPosY spatial transform, and fadeIn / fadeOut opacity for both image and video clips
- Engines fixed:
webcodecs-export.js, modern-export-engine-v2.js, optimized-export.js, frame-by-frame-exporter.js, simplified-export-engine.js, modern-export-engine.js, app.js main loop
- Previously images and videos were drawn with bare
ctx.drawImage(el, 0, 0, w, h) — stretched, unpositioned, no fade
🎨 UI Design Harmonization fix
- All sliders (Fade, FX intensity, Color Grading, Properties Scale/Position/Opacity) unified to the volume-control design: rectangular thumb
8×12px, grey #555, hover #888, track #333 — no colored glows anywhere
- Fade panel preset buttons active state changed from cyan/blue border to white/grey — matching the Save dialog card design language
- Fade envelope SVG recolored to grey palette (
#888 stroke, #555 fill)
ZORD v0.0.1-alpha
Released — February 5, 2026 · Updated February 18, 2026
🆕 New Features
- Multi-AI assistant: Claude 3 (Anthropic), GPT-4 (OpenAI), Gemini 1.5 (Google) — use your own API keys
- Image upload for AI vision analysis (GPT-4 Vision, Claude Vision)
- Web3 cloud storage via IPFS / Pinata — permanent decentralized backup
- Real-time collaboration via WebRTC (peer-to-peer, no server)
- Multi-document manager with sidebar navigation
- Professional DOCX export (bold, italic, underline, headings, lists, colors, images)
- ODT import (
.odt) — full OpenDocument parsing with styles, bold, italic, underline, headings, lists new
- RTF import (
.rtf) — basic rich-text format support new
- Digital signatures — insert pre-encoded or uploaded signatures
- Glyph panel — special characters with favorites
- Preferences pop-in with switch toggles (dark mode, spellcheck, invisible chars, typography corrections)
- Progressive Web App — installable on desktop & mobile
🔧 Fixes critical
- DOCX import crash fixed:
activeDocId is not defined — corrected bare variable references to __activeDocId and __documents in _importHtmlIntoNewDoc()
- ODT import returning “file appears empty”: XML namespace bug —
<office:body> and <office:text> were looked up in the wrong namespace (text: instead of office:)
- Pagination after import:
handlePagination() now runs correctly with a two-pass approach (200ms + 600ms) for large documents
- Save/autosave moved inside pagination callback — documents are persisted after reflow, not before
- IndexedDB persistence: fixed unconditional overwrite, beforeunload skipping saves, emergency backup premature deletion, migration data loss
maybeInitializeDefaultDocument() no longer wipes editor content after loading saved documents
- IDB fallback timestamp uses epoch instead of
new Date() — prevents empty doc from appearing “newer” than real data
- Dark mode switch toggles: knob now visible in dark mode (
dark:bg-neutral-900)
🎨 UI & UX
- Real A4 pagination (210×297mm) with live page thumbnails
- Save pop-in reordered: .zord → JSON → Pinata → .docx → .doc
- Open pop-in: all format buttons at full opacity — no format pre-selected on open
- Save/Open modals: consistent icon styling, neutral gray icons, Word label
.doc / .docx
- Responsive mobile toolbar + swipeable drawer + floating zoom controls
- Light/Dark theme with smooth transitions
user-select: none on all modals to prevent accidental drag/import
- Apply button closes preferences pop-in with visual feedback (processing → success → close)
📝 Details
Quill.js 1.3.6 · Tailwind CSS 3.x · Vanilla JS · Mammoth.js · JSZip · IndexedDB + localStorage dual persistence · 30-step undo history
→ Open ZORD
SUPER PRINT v0.0.4-alpha
Released — March 29, 2026
⚡ GPU Hardware Acceleration new
- GPU detection — on opening Preferences, SuperPrint queries WebGL (
WEBGL_debug_renderer_info) and displays the exact graphics card name and vendor directly inside the settings panel (e.g. NVIDIA GeForce RTX 4090, Apple M3 GPU, Intel Iris Xe). If WebGL is unavailable the panel shows a clear ✗ notice
- Toggle in Preferences — a single checkbox "Accélération GPU" enables or disables hardware acceleration; state is persisted in
localStorage (sp_gpu_enabled) and restored automatically on every launch
- CSS layer promotion — when enabled,
will-change: transform + transform: translateZ(0) + backface-visibility: hidden are applied to every Fabric.js canvas container, promoting them to dedicated GPU compositor layers; GPU handles compositing instead of the CPU
- Fabric.js object cache — shapes, images, paths and groups gain
objectCaching = true so they are bitmapped in GPU memory and only repainted when modified; text objects stay at objectCaching = false to preserve typographic sharpness at all zoom levels
- Startup restore — if GPU mode was previously enabled,
applyGpuAcceleration() fires automatically 1.5 s after page load (after Fabric canvases are ready)
- All canvas layers re-rendered with
requestRenderAll() immediately after toggling — no page reload required
�️ Asset Templates — 3 Critical Fixes fix
- Missing images & elements in multi-page templates —
addAssetObjects was wrapping all template objects in a fabric.Group, causing image masks (applyImagePatternToRect) to compute positions relative to group center instead of the canvas; images appeared at wrong coordinates or not at all. Objects are now added individually with canvas.add() fix
- RAM freeze on 4/8/12/16-page templates — each page build triggered a full
saveState() deep-clone of all canvas objects; for a 16-page template this meant 16× the full document state was serialized in a tight loop. A window._buildingMultiPage flag now suppresses per-page saves; a single saveState() fires at the end of the build fix
- 40+ redundant canvas redraws per template — each async image load in
applyImagePatternToRect was calling canvas.requestRenderAll() immediately, causing up to 40 redraws for one 16-page template. Replaced with an 80 ms per-canvas debounced timer (canvas._spImgRenderTimer) so the canvas redraws once after all images settle fix
🔍 Find & Replace new
- Ctrl+F — opens Find panel; Ctrl+H — opens Find & Replace panel; Escape closes it
- Searches all pages in real time as you type; live match counter (e.g. 3 / 12)
- ← Prev / Next → navigation jumps to the exact match across any page, scrolls to the canvas and enters text editing mode with the match selected
- Replace one occurrence or Replace all in one click with toast feedback
- Case-insensitive regex search across all Fabric.js textboxes in the document
🖼️ PNG / JPG Export new
- Two new buttons in the Export modal: ↓ PNG and ↓ JPG
- Single-page documents download directly as one file; multi-page documents are packaged into a
.zip via JSZip (export-page-1.png … export-page-N.png)
- Respects the existing quality / resolution multiplier setting from Preferences
- Uses Fabric.js
canvas.toDataURL({ format, multiplier, quality }) — no server-side processing
🎨 Typography Styles — Update All Instances new
- Each saved style in the Styles widget now shows a ↻ button
- Clicking it calls
updateAllStyleInstances(styleId), which finds every textbox across all pages tagged with that style (obj._appliedStyleId) and re-applies the current style properties in one pass
- Single
saveState() at the end — not one per textbox; toast reports how many objects were updated
- The existing style widget (create, edit, apply, delete) is fully preserved and unchanged
📝 Details
Fabric.js 5.3.0 · WebGL WEBGL_debug_renderer_info · CSS compositing layer promotion · objectCaching per object type · JSZip · canvas.toDataURL() · Vanilla JS
→ Open SUPER PRINT
SUPER PRINT v0.0.3-alpha
Released — February 10, 2026 · Updated February 18, 2026
🆕 New Features
- Scribus
.sla file import beta — text frames, shapes, polylines with automatic coordinate conversion and multi-page support
- Chemin de fer (page sorter) with drag-and-drop reordering + “Apply and close” button
- ODT import fully rewritten — structured parsing, list/table support, inline images extraction
- Pen Tool (Bézier) — professional vector drawing, Illustrator/Figma-style handles
🔧 Fixes critical
- Main JS crash fixed:
TypeError: Cannot read properties of undefined (reading 'forEach') — ASI ambiguity caused ['blockFill',...].forEach() to chain onto previous statement. Added defensive semicolons and null guards on getElementById
- Removed missing
mask-handle-guard.js script tag — was causing 404 error on every page load
- PWA service worker registration guarded for
file:// protocol — no more console errors when opening locally
- Manifest CORS error fixed:
<link rel="manifest"> now conditional, only loads over HTTP/HTTPS
- Spread → Single mode: objects no longer lost — synchronous handler rewrite with safety snapshot and anti-overwrite protection
- Master page typography now applies correctly —
exitEditing() before serialization, forced visibility on textbox objects
- ODT/DOCX import crash fixed —
newPage() now creates synchronous temporary canvases instead of relying on async rendering
- IDML import: fallback selector for cross-browser compatibility + guard bypass fix for post-import save
- Assets panel memory leak:
applyCompFormat() now performs full document purge before applying new composition
deepCleanupCanvas(): no longer destroys image sources (_element.src = '' removed)
- View mode (single/spread) now persisted across all 8 save/load points
- Page numbering settings: proper defaults for legacy projects
🎨 UI & UX
- A4, A5, Letter + custom dimensions with configurable margins and bleed
- Single page & Spread (double-page) display modes
- Pasteboard (extended work area) around pages
- Drawing tools: text, image, rectangle, circle, star, freeform, SVG import
- Object manipulation: transform panel, proportional lock, grouping, z-index layers
📝 Details
Fabric.js 5.3.0 · jsPDF · JSZip · PDF.js · Paper.js · Mammoth.js · Hypher · ~43,690 lines JS
→ Open SUPER PRINT