Releases — Zigmoon Apps Changelog & Version History

Zigmoon Apps

Releases & Changelog

SUPER PRINT v1.7.585

Released September 30, 2026

Three additions to the Studio IA, each measured: the engine gains style (24 named palettes, gradient, grain, halftone and duotone backgrounds, 48 layouts and three ways to open a page); it reads the document plan you attach; and it places real free photos with their attribution in a credit line. The .sp bridge is aligned, and per-page folio exceptions finally travel in the .json and IPFS files.

🎨 Style: 24 palettes, 7 background families, 48 layouts

  • The engine only knew colour families (“warm”, “sober”). It now knows 24 named palettes which a request can name: “terracotta palette” is no longer swallowed by “warm”.
  • Under the objects, seven background families were written: shadows, gradient, grain, halftone, duotone (two passes) and automatic.
  • Twelve layouts × four densities = 48 genuinely different layouts, plus three page openings depending on the document family.
  • Everything can also be set by hand in Settings → Appearance, and these settings only affect the Studio IA: the app's print engine and PDF rendering are unchanged.

🧭 The document plan is read, and said back

  • An attached Word file is now read as structure: the studio draws a plan (levels 1 to 3), the editorial tone, the intended audience, a three-sentence summary and the entities it spots.
  • It says so in the conversation, once per request; and when the attachment is context, a second line gives the keywords, tone, audience, entities and summary.
  • Summary and plan also serve as material: the former becomes the standfirst when the request provides none.

🖼️ Real free photos, with their attribution

  • The studio queries two free libraries — Wikimedia Commons and Openverse — with the keywords drawn from your request and the document.
  • Attribution is automatic: every placed image keeps its author and licence, the studio announces it, and a credit line is written at the bottom of the last page.
  • The Images setting has three states: never (default), automatic, and on request. The mode is remembered.

🔁 .sp / .json bridge: aligned and verified

  • A .sp file carries ten top-level blocks; one did not survive the studio — per-page folio exceptions. They are now read and rewritten verbatim.
  • In the app, the .json and IPFS readers already restored those exceptions, but neither writer produced them. Fixed, and an empty array is written when there is nothing to carry.
  • End-to-end check, app → studio → app: 10 blocks out of 10 carried; guides, text chains, masters, margins, CMYK mode, column grid and format identical.

ℹ️ Scope

  • Studio IA (sp213-studio.html) and the app's .sp/.json bridge. The print engine, manual layout and PDF rendering are untouched; no existing setting is made heavier. The local npm package is rebuilt at this version.

SUPER PRINT v1.7.584

Released September 30, 2026

ROCK 1 takes three leaps: it understands the request through a publishing-trade lexicon (document family, format, columns, palette, expected elements, prohibitions) and it says back what it understood in the conversation; settings become instant on large documents (measured: 4,715 ms → 57 ms on a 48-page report); and the app's library of 46 templates now feeds the engine — a menu request with no dishes receives a full card (4 sections, 13 prices) instead of a title.

🧠 “Restaurant menu in two columns, cream palette, no photos, with prices”

  • The engine answers: “Request understood: family ‘restaurant menu’, 2 columns, cream paper palette, prices, no photos. No photo will be placed.” — and it APPLIES it: the template changes, the grid goes to two columns, the theme turns cream, no image is placed.
  • The lexicon covers the trade: families, formats (A4, A5, A3, square, 6 × 9, 5 × 8, forced landscape), columns, pages, palettes, expected elements (contents, prices, captions, quote, drop cap, boxes) and prohibitions (“no photos”, “no rules”, “no boxes”, “no folios”). In French, English and Japanese.
  • Nothing is invented: if the request says nothing, nothing is forced. And the read-back is written once per request (a slider recomposition does not chatter).

⚡ Settings: 4,715 ms → 57 ms on a 48-page report

  • MEASURED CAUSE: the text-measurement cache emptied itself at 400 entries… while a 48-page report needs about 2,000. On every flush, every already-measured block went through the measurement engine again: five times per recomposition. The cap is now 30,000 entries.
  • Two further savings: reading the attachments (markdown text, context) and the understood content are memoised between two slider moves, and the document is no longer serialised to JSON on every recomposition. An internal timing is now displayed.

📚 The library of 46 templates now feeds the engine

  • The app's templates are described as data: sections, dishes, prices, palette, typefaces. The studio draws a starting material per family from them.
  • Result on the “Restaurant menu” chip: before, a title and nothing else; now 4 sections (Starters, Main courses, Desserts, Wines), 13 prices, 34 blocks placed. Families without prices receive their section plan.

✕ A cross on the pre-home attachments

  • Every attachment chip now carries a small cross (discreet, red on hover): it removes the file — bulky documents and their extracted sub-images included — from the pre-home and from the studio bar, and the studio confirms it in the conversation.

ℹ️ Scope

  • Studio IA only (sp213-studio.html): request understanding, settings speed, material drawn from the template library, pre-home attachment chips. No change to the SuperPrint print engine, to PDF rendering, or to document import and export. The local npm package is rebuilt at this version.

SUPER PRINT v1.7.583

Released September 30, 2026

The Studio IA now reads PDF files the way it reads Word documents: the file is converted to markdown — headings, lists, paragraphs — instead of being copied raw. The whole text reaches the layout, whether the PDF is attached as content (it is composed) or as context (it feeds tone, wording and keywords).

📕 What was wrong (measured)

  • The PDF reader's text fragments were glued end to end (“impri” then “mable”), and every page carried a “--- PDF PAGE 3/40 ---” marker that ended up as is in the layout. Result: no headings, no lists, no paragraphs.
  • On the supplied 24-page association report, the reader produced 100 “headings”, half of them from rotated lettering on the cover (“m u c o d e c r e t”) and from the table of contents, mistaken for real sections.

✅ What the reader does now

  • It groups fragments into real lines (vertical position, size, weight), stitches split words back together at line ends, derives the body size to recognise headings (#, ##, ###), turns bullets and numbers into lists, and reads two columns in the right order.
  • It discards repeated headers and footers (running title, folio, document name): the layout receives the content, not the file's pagination. It also drops rotated text and debris lines.
  • A table-of-contents page (five lines or more starting with a page number) becomes a list instead of an avalanche of headings, and a two-line title is stitched back together (“Bilan” + “année 2025” = “Bilan année 2025”).
  • Same PDF, same report: 30 headings (H1 9 · H2 11 · H3 10), 52 list entries, 67,110 characters — and the studio confirms nothing is lost: “31 section(s), body 67,113 characters”. The PDF's images are still extracted and follow the file's role (those of a context PDF are never placed).

ℹ️ Scope

  • Studio IA only (sp213-studio.html): reading of attached PDFs (content, template or context). No change to the SuperPrint print engine, to PDF rendering, or to document import and export. The local npm package (sp213-local.zip) is rebuilt at this version.

SUPER PRINT v1.7.582

Released September 30, 2026

On a phone, the Studio IA start screen no longer bunches up at the top: it now follows the layout of modern assistants — the title breathes at the top, the prompt box and its suggestions are anchored at the bottom, where your thumb lands, and the breathing space stays in the middle. The keyboard no longer moves anything.

📱 What was wrong (measured)

  • Below 720 px wide, the start screen switched to “stuck to the top” with 60 px of padding: on a 390 × 844 phone the logo sat at 60 px, the box at 148, the suggestions at 317 and the footer at 388 — leaving 418 px of emptiness below. That is what made everything look like it was rising “to leave room for the keyboard”.

✅ What changes

  • The title stays at the top (18 → 117 px) and breathes, a wide gap in the middle (478 px), then the prompt box (595 → 738), the suggestions (756 → 786) and the footer (798 → 830) anchored at the bottom: the bottom margin is now 14 px, nothing floats any more.
  • The suggestions fit on a single line that slides under your finger (instead of three lines eating the height); the box is capped at 30 % of the screen height; iPhone safe areas (notch and home bar) are respected.
  • With the keyboard open (screen reduced to 390 × 430) everything stays visible — box, suggestions and footer — with no scrolling. On a phone held sideways, as on a computer, the original centred layout is kept.

ℹ️ Scope

  • Studio IA only (sp213-studio.html), and only below 720 px wide: the phone layout of the start screen. No change to the SuperPrint application, to PDF rendering, or to document import and export. The local npm package (sp213-local.zip) is rebuilt at this version.

SUPER PRINT v1.7.581

Released September 30, 2026

The Studio IA tidies up: the settings panel finally speaks all three languages (French, English, Japanese) and follows language changes live, its scrollbar is exactly the one used by the preview, the Variation button is gone from the panel footer, the model lists no longer say “no key” (the FREE badge is enough), our engine is now called SP213 rock 1.0 — and Ministral/Mistral has been removed from the studio.

🎚️ The settings panel in three languages

  • The WHOLE panel now goes through the studio dictionary: section titles (format and trim, document style, design and layout, typefaces and sizes, colours, variation), labels, chips, help notes, buttons and the summary written into the conversation.
  • Changing the language in the preferences repaints the panel if it is open, without closing it and without losing the settings in progress — including the names of the eight templates, the eight styles, the eight formats and the unit (mm, cm, inches).

🖱️ Two details that got in the way

  • The “🎲 Variation” button has been removed from the panel footer (to the left of “Cancel”): variation is still adjustable with the “Set no.” slider in the Variation section. The footer keeps only the status, Cancel and Save.
  • The panel scrollbar is now the preview one: same width (4 px), same track, same thumb, same hover. Both areas now read the same way.

🏷️ Model lists: FREE is enough, and our engine is called SP213 rock 1.0

  • The “no key” badge is gone everywhere (pre-home and preferences): it told you nothing since no key field exists for those engines. FREE remains for the ones that cost nothing, and API key for the others.
  • Our engine is now SP213 rock 1.0 (instead of “SP213 gabarit — deterministic typesetting”): same engine, same composition core, a readable name and no more jargon in the lists, the conversation header, the help text and the summary.
  • Under our engine, the “engine” card no longer appears when it has nothing to offer: no more “Local model (WLLM)” or Qwen list under SP213 rock 1.0. It only comes back for an engine that needs a key (with the badge and the links to get one) or that really offers several models.
  • Ministral / Mistral has been removed from the studio: the local engine now offers only the two models that really produce the layout (Qwen2.5 1.5B and Qwen2.5 7B), and the help texts were rewritten so they no longer promise models that are missing.

ℹ️ Scope

  • Studio IA only (sp213-studio.html): settings panel (translation, footer, scrollbar), engine lists (pre-home and preferences), name of our engine, local engine. No change to the SuperPrint print engine, to PDF rendering, or to document import and export. The local npm package (sp213-local.zip) is rebuilt at this version.

SUPER PRINT v1.7.580

Released September 30, 2026

Three deep changes in the Studio IA: the role of an attachment now follows the file — a document set to context is no longer copied into the layout, even if you drop another file right after; the context really works (keywords, hook sentence, figures and tone extracted from the document, and the report says so in plain words); and the preferences screen now matches the quality of the start screen, with a single “engine” card that shows only what that engine asks for. The usage badges of the pre-home sub-menus leave blue for black ink.

🧩 An attachment's role follows the file (fixed defect, measured)

  • MEASURED CAUSE: the role was read again when the attachments bar was drawn, not when the file was dropped. A .docx dropped as context therefore turned into “content” as soon as a logo was dropped afterwards: its 2,082 characters went into the layout although they were only meant to help understand the subject.
  • The role is now remembered per drop and per file, and read again at every step that depends on it: composition, page format, photos, text handed to the engine. An image extracted from a context .docx stays context: it can no longer be placed.
  • Checked for real, in the browser: logo as context + text as content → only one photo placed (the content one), no context photo; text as context → 0 characters composed, and its format (210 × 148 mm) no longer dictates anything to the studio.

🧠 The context really works — and the studio says so

  • From the context document the studio extracts — inventing nothing — its keywords, a hook sentence, its figures, its proper nouns, its language and its tone. Those signals feed the layout's eyebrow, standfirst, key figures and contacts.
  • The report now shows: “Context kept — nothing placed in the layout: 6 keyword(s) […], hook sentence taken from the document, language fr, tone ‘neutral’. 1 context image NOT placed.” You finally know whether your context attachment was used.

🎚️ Live settings, by slider (SP213 gabarit engine)

  • A panel opens from the pre-home or from the studio (sliders icon) — reserved for our engine, the one that composes with no key and no token. Width and height by slider (mm, cm or inches), bleed, eight coherent templates, palettes, page background, ink, margins, gutter, density, columns, folios, section titles, boxes, cover photo, typefaces, body size, title scale, leading, letter-spacing, rules, capitals, alignment, variation — and a reset.
  • The document recomposes before your eyes: “Cancel” restores the exact previous state, “Save” keeps it and summarises it in the conversation. Above 60 pages the recomposition waits until you release the slider: dragging stays smooth even on a book.

🖤 Pre-home and preferences: the same quality

  • In the pre-home sub-menus, the usage badge is no longer blue: it is black ink for “full book”, a plain outline for “demo” (and the reverse in the dark theme, so it stays readable).
  • The preferences screen now matches the start screen: a rounded card with a soft shadow, rounded fields on a lightly tinted background, spaced monospace micro-labels, redrawn help bubbles and a matching save button.
  • A single “engine” card: the name, a badge saying “no key”, “API key to paste” or “key saved”, then only what that engine asks for. The key appears only for engines that need one, and the model choice only when there really are several models — measured: “Local model (WLLM)” no longer shows for our engine, and an engine with a single version no longer unfolds a sub-menu for nothing.

🔒 Details fixed along the way

  • The page lock really locks (verified: zero selectable objects), the padlock and the bin in the preview look exactly the same, and page labels follow the printed folios (1, 2, 3… in single-page mode).
  • Word import: no more “/>” residue in the pages, the whole text is composed (no-loss check), and the cover title really comes from the document. The pre-home examples and the engine list stay aligned with the preferences.

ℹ️ Scope

  • Studio IA only (sp213-studio.html): attachments, context, live settings, start screen and preferences. No change to the SuperPrint print engine, to PDF rendering, or to document import and export. The local npm package (sp213-local.zip) is rebuilt at this version.

SUPER PRINT v1.7.578

Released September 28, 2026

This release polishes the public pages: the version number now shows at the top of the home page and of « Take part », the « Take part » page gains an index (the project, the form, the press), its write-to-us form now starts from a subject — five choices, each with its own questions — and its press resources (press kit and high-definition logos) can be downloaded freely.

🏷️ The version number, at the top of the home page and of « Take part »

  • The thin colophon band now carries, on the left, a badge with the number of the released version. It is the same number the application displays: it is updated at every release, so it cannot advertise anything other than what is actually online.
  • In the « Install SuperPrint locally » box, the « Open the app online » link has been removed: the box keeps only the installation instructions, which is what it is for.

🧭 « Take part »: an index for its three areas

  • The page is now read through an index stuck under the navigation bar: 01 the project, 02 write to us, 03 press & resources. It stays on screen all along the way.
  • The badge of the area you are in turns black: you always know where you are. A click lands the area exactly under the index, never hidden behind the bar.
  • On a phone, the three badges fit on a single line, in all three languages.

✉️ Write to us: five subjects, with questions that follow

  • The form now starts with the subject: join the project, ask for training, ask for advice, report a bug, press & media. The chosen subject sets the e-mail subject line and adapts the questions asked under each field.
  • Every field carries a greyed-out example: « e.g. Layout screen, Hyphenation tool, brochure.sp file ».
  • Reminder: there is no server behind this form. The button opens your mail software with the message already written, addressed to contact@superprint.cc; the version, the page language, your browser and the page address are added automatically.
  • If no subject is chosen, or the message is empty, the form says so in red and opens nothing: an empty e-mail can no longer be sent by mistake.

📁 Press & resources: free to download, nothing to ask

  • Two files are freely available at the bottom of the « Take part » page: the press kit (PDF) and the high-definition logos (.zip — light and dark backgrounds, for screen and for print).
  • Nothing to ask for, no form to fill in, no mandatory credit.

ℹ️ Scope

  • Public pages only (the home page and Take part), in both trees (web and mirror). No change to the SuperPrint application, to PDF rendering, or to document import and export.

SUPER PRINT v1.7.577

Released September 28, 2026

The Studio IA polishes three everyday details: the prompt box now has all four corners rounded to the same radius (only the bottom two were), it keeps your description when you leave to set the API key or the engine in the preferences — and even after reloading the tab — and the new-conversation + button has moved before the conversation bubbles, where it belongs.

🔲 Prompt box: all four corners

  • MEASURED: the box carried a radius on its bottom two corners only (the top stayed perfectly square), which made it look half-rounded depending on the viewing angle.
  • The same radius now applies to all four corners. The design language is unchanged: it stays capped at 5 px, SuperPrint's angular identity.
  • Checked in the browser on both themes: all four corners fall outside the box, and a counter-test with the previous value confirms the top used to be square.

💾 The prompt is no longer lost when you open the preferences

  • MEASURED CAUSE: with no model configured, sending the description emptied the prompt box before taking you to the settings. You set your key, changed the engine, saved — and the box was empty, so you had to retype everything.
  • The description stays in place, and a draft remembers it: it comes back when you leave the preferences (the Save button or the Back to studio cross) and after reloading the tab.
  • The draft is only cleared when the request is actually sent, and it never overwrites text you are typing.

➕ New conversation: the + moves to the front

  • The order used to be: the conversation bubbles, then the + button at the very end of the bar. The create button now comes first, before the first bubble.
  • Conversations themselves are unchanged: same order (most recent first), same rename by double-click or ✎, same delete by ×.

ℹ️ Scope

  • Studio IA only (sp213-studio.html): prompt box (four-corner radius, prompt memory) and conversation-tab order. No change to the SuperPrint application, to PDF rendering, or to document import and export.

SUPER PRINT v1.7.576

Released September 28, 2026

Three new layouts arrive — two Japanese and one French — first in the home-page carousel, Japanese now sets character by character (no more stacked text), the studio no longer draws the red guides (they were off-centre), and the app's Page + button no longer loses half a sheet.

📰 Three new layouts, two of them Japanese

  • A 12-page Japanese daily-newspaper layout (A4) built only from simple shapes: a masthead framed by rules, a headline, three columns, a news box, a different graphic band on every page, a 連載 serial page and a weather back page. No photograph needed.
  • A 4-page Japanese お品書き menu (A4): dark cover with a red circle, starters, mains, desserts and drinks with yen prices, a set-menu box and an information page (bookings, payment, closing day).
  • A French 2-page A4 mobile-home brochure: a cover with flat-roof house pictograms, the headline and a band with the three models and their prices, then one panel per model (schematic plan, floor area, price, description), plus delivery, connections and warranties.
  • All three are clickable from the SuperPrint home page and placed first in the template carousel (46 in total, FR/EN/JA counters updated, thumbnails taken from the real rendering). In the app the two Japanese layouts are filed under JA in the asset library — English, then French, then Japanese — and they also come first in the new-project modal.

✍️ Japanese text: character-by-character wrapping

  • Japanese does not separate words with spaces, so Fabric was breaking lines on spaces: a Japanese paragraph either overflowed its frame or stacked one character per line (text reading vertically).
  • The Japanese writing option now breaks lines character by character, as Japanese typesetting requires. It turns on through the language (日本語 in the app, studio or home-page preferences — the language is shared) or when a Japanese layout is opened. The studio applies the same rule when its own language is Japanese.
  • Deliberately precise: only frames that actually contain Japanese (kana or kanji) are affected — a Latin word is still broken by word — and any frame narrower than two characters is widened, which was the exact cause of the stacked text. Checked: French and English layouts convert nothing.

🧹 Studio: no more red guides

  • The red dotted frames (safety margins) are no longer drawn in the studio. They were not centred in the canvas (mirrored 12 mm fold-side / 18 mm outer-edge margins copied from the app), which made the rectangle look clearly off-centre, especially in single-page mode.
  • The requested check is done: those objects carried no calculation (only guide hiding, export exclusion and selection lock). In single-page mode the window is exactly page + bleed on both sides (measured 215.9 mm for 210 + 2 × 3 mm), so the trim line and the bleed are perfectly centred. Trim line, bleed and fold line are still displayed.

🛡️ App: Page + no longer loses half a sheet

  • Measured defect: in a 6-page document coming from the studio, a 6-7 sheet drew only 1 object instead of 8 (the back cover) and the following save overwrote the data. The sheet is now checked after creation: pages[] is snapshotted before the page is added, and if a half loses more than half of its objects the data is restored from the snapshot, the preview rebuilt and then saved again.
  • Save guards added: a snapshot that loses more than half of the objects of a sheet half (or of a page) is refused, with an explicit message in the console, instead of overwriting the data.

ℹ️ Scope

  • Layouts (application and home page), SP213 studio (guides, Japanese text) and the page-add guard. No change to PDF rendering, to document import/export, or to the package's other applications.

SUPER PRINT v1.7.575

Released September 28, 2026

The SP213 studio finally thinks in signatures: cover and back cover shown alone, bleed stopped at the fold, mirrored margins, reading-order export, and a more reliable AI engine.

📐 SP213 studio: signature mode (spread)

  • A sheet carrying only one page (cover, back cover) is now displayed alone, framed on that page.
  • Bleed stops at the fold on these single pages and the trim line is open there, exactly as in the app.
  • Margins are now mirrored: small inner margin on the fold side, large outer margin on the outer edge.
  • The exported file follows reading order, and an empty half no longer produces a ghost page.

🤖 SP213 studio: more reliable AI engine

  • The free OpenRouter model list is up to date, and the paid minimax entry no longer breaks every generation.
  • The timeout now adapts to the request (2 min for one page, +1 min per extra page, capped at 10 min).
  • A missing page is re-requested from the model and merged, and pagination is normalised.
  • The layout comes back on reload, spread mode is remembered, and zoom fits the whole sheet.

🎯 App: the AI button opens the studio

  • The AI button opens the SP213 studio directly; the former AI panel moved to Preferences.

✨ Studio: design and comfort

  • The studio's interface text is no longer selectable; the prompt box and conversation still are.
  • The prompt box has slightly rounded bottom corners and the paperclip button lost its outline.

ℹ️ Scope

  • SP213 studio (signature mode, export to the app, AI engine, design) and the editor's studio access. No change to PDF rendering or document import/export.

SUPER PRINT v1.7.574

Released September 27, 2026

Page numbering is now faithful, the Grid & guides panel no longer blocks the interface, the app dialogs adopt the SuperPrint design, the asset library can no longer lose content, and the SP213 studio gets its typography fix.

📄 Page numbering: tweaks now follow through to the PDF

  • Every number tweaked in the preview is saved page by page and applied as-is by the PDF export.
  • Font, size, colour and position chosen in the preview are kept for print, across saves, reloads, undo/redo and page reordering.
  • The .sp export carries these tweaks: what you see is what prints.

⚡ Grid & guides: no more slowdown

  • Ticking a box used to trigger up to 24 repaints and nearly 2 seconds of blocking; guides are now drawn in one pass and off-screen pages wait for idle — 2 repaints, 0.17 s.
  • The panel's checkboxes switch to the brand's black, including in the detached widget.
  • Baseline, “hide guides” and “hide bleed area” get the same treatment, and the checked state is mirrored into the docked widget.

🎨 App design: logo and dialogs

  • The sidebar logo keeps the same height (56 px, centred) whether the bar is open or collapsed.
  • The twelve native browser dialogs are replaced by a SuperPrint dialog, fully keyboard-driven.
  • No colour in these dialogs — information is carried by the label and title, in black.

🖼️ Asset library: no more lost content

  • Changing an image while a page was loading made the save silently bail out; it is now queued and replayed as soon as the page is ready.
  • The “fill” field no longer ends up empty when the colour is expressed as rgb().
  • File drops now target the right page in spread view.

✍️ SP213 studio: typography fixed

  • The preview drew text 33 % too large (72 dpi document, sizes converted as 96 dpi): a 36 pt title had a 19.1 mm line pitch instead of 14.35 mm.
  • Block heights were under-estimated by a full line, so the next block ran under the title. Blocks no longer overlap and separator rules no longer cross text.
  • Justified text is never a default any more, the prompt gains a sober type scale and spacing rules, and orphan pages are no longer created.

ℹ️ Scope

  • Editor (numbering, grid & guides, dialogs, asset library, logo), studio typography and the local package. No change to PDF rendering outside numbering, document import/export or the AI engines.

SUPER PRINT v1.7.573

Released September 27, 2026

The SP213 studio gains a dedicated fully-local model, a reworked studio bar with full .zip backup, and a cleaner composer. The Grid & guides panel loses its blue checkboxes and its measured slowdown on large documents.

🧠 SP213 WLLM Native: a dedicated local model

  • A new engine, next to “SP213 WLLM (local with GPU)”: no model list, a light preconfigured model, with a condensed layout-rules summary injected right before the JSON example — never before the format instruction.
  • A 1.5B-parameter model can drift from the JSON format. If the first reply is unusable, the studio retries automatically with a minimal prompt, without the user seeing the intermediate failure.
  • Downloading/loading the local model now shows a live-progress bubble, then an explicit confirmation — never a silent load.
  • The classic WLLM model list is tightened to 5 choices under 2 GB of estimated VRAM.

💾 Studio bar: Save and Import

  • The “Export .sp” button becomes Save: a pop-in offers either the current window's .sp, or all conversations in a .zip archive.
  • The “New” button becomes Import: it accepts a .zip backup or a plain .sp/.json file. Creating an empty conversation is still available via the tabs' “+”.
  • Verified end to end: layout created in the studio, exported to a real .zip, re-imported via the real file picker, restored with bit-identical coordinates.

✏️ Cleaner composer

  • Only the attachment button keeps a border; the send button becomes a round arrow button, and the ambiguous magnifying-glass “web image” icon becomes a thin-line image icon.

⚡ App — Grid & guides: color and slowdown fixed

  • Every checkbox in the panel moves from system blue to SuperPrint's black.
  • “Hide guides” and “Hide bleed area” still looped over every page. The same “visible pages right away, others on idle” principle used for the grid is now applied to them.

ℹ️ Scope

  • SP213 studio and the app's Grid & guides panel. No change to PDF rendering, document import/export, or the cloud engines.

SUPER PRINT v1.7.572

Released September 28, 2026

The burger menu has been reworked on phones: the logo band no longer scrolls with the entries, the list is tightened to fit without scrolling, and “Take part” catches up with the home page.

📱 The logo band no longer scrolls

  • Measured defect: the logo band sat inside the scrolling menu — 5 px from the top at rest, −204 px after 209 px of scrolling.
  • First fix was position: fixed — not enough, because the menu's backdrop-filter creates the containing block. The band is now out of the menu and only shown when it is open.
  • Verified: scrolling the menu leaves the band at 5 px while the entries move 109 px, and it overlays the page's band with 0 px difference.

📐 Tightened list, menu that no longer scrolls

  • Measured: 850 px of content for 843 px visible — the menu already scrolled. Padding 19 → 14 px, language row and bottom tightened: the list now fits without scrolling, with 90 px to spare.
  • A little more air under the bar: the gap goes from 8 to 14 px.

🔧 “Take part” catches up with the home page

  • This composed page was three fixes behind: margin-top: auto left a void in the middle, the internal scrollbar showed over the logo line, and the background scroll was not locked. All three are fixed.

ℹ️ Scope

  • Only the burger menu changes, on phones only; the FAQ is part of the home page so it is already covered. Note: “Take part” has no app entries — a known gap.

SUPER PRINT v1.7.571

Released September 28, 2026

A WhatsApp contact bubble now sits in the bottom-right corner of the home page and of the “Take part” page — same ink as the “Open app” button, no new colour.

📱 What the bubble does — and does not do

  • Direct conversation: the link is wa.me/33671614110 and opens in a new tab, never leaving the page.
  • Discretion: the bubble sits below the full-screen menu and the bars, is hidden when printing, never moves while scrolling and causes no horizontal overflow. No fade — only scale and shadow move on hover.
  • On both pages only, with identical measurements (58 px / 22 px; 52 px / 14 px on phones). The FAQ is part of the home page now, so it benefits too.

ℹ️ Scope

  • Nothing else changes: editor, imports, layout engine and export are identical to the previous version.

SUPER PRINT v1.7.570

Released September 28, 2026

The import dialog now asks where to place the file: a new document (taking the file's format and margins) or the current document, as before. Only the imports are affected.

📥 Where to place the file (Word and Excel)

  • Two destinations are offered before the import: a new document taking the file's format and margins, or the current document as before.
  • “Current document” changes neither format nor margins: it composes into the open page exactly as before.

📐 Word: the file's page setup is applied

  • Format, orientation and margins are read from the file (w:pgSz/w:pgMar, twips) and applied to the new document. Measured on an A5 landscape control file: 210 × 148 mm with margins 12/14/8/10 — exactly the file.
  • Measured fix: the page-setup decision relied on the lazily-loaded module's type, unavailable at decision time, so the document stayed A4. Detection now uses the file's bytes (ZIP “PK”) and the extension: measured 210 × 148 instead of 210 × 297.

📊 Excel: displayed values and sheet choice

  • Values as displayed in Excel (1,450.50 EUR, 15.0 %), and per-sheet choice. Measured: two sheets detected, both imported when the whole workbook is chosen.
  • One sheet or the whole workbook: sheets are listed by name, the first selected by default.

ℹ️ What remains, in full transparency

  • A date that looked wrong came from my test file itself (mask empty, display text already ISO): the app reproduced the file faithfully.
  • Scope strictly limited to the imports: sidebar, layout, export and images are identical to the previous version.
  • Still outstanding: run colour is not passed on by the converter, and the legacy .doc format is unit-tested but not yet tried on a real Word 97-2003 file.

SUPER PRINT v1.7.569

Released September 27, 2026

Word import was rebuilt: rich text is kept, nothing is duplicated any more, and every Word and office format is supported. The sidebar opens in one continuous movement, and the import dialogs follow the app's design system in three languages.

📄 Word import: what changed (measured)

  • Rich text is kept: a slicing bug returned every formatted portion empty. Measured, the body block goes from “7 runs, 0 styles” to “21 runs, 27 styled characters”.
  • No more duplicates: a bold paragraph came back four times, a 3×3 table twelve times. A control document now produces 13 blocks instead of 21.
  • Tabs, line breaks and paragraph alignments are now preserved instead of being flattened.
  • Every format is now supported: the format is read from the file's bytes — .docx through the full converter, .doc/.odt/.rtf/.html/.txt through the document module with an honest message. All five verified.
  • Images are placed at their real size (measured: 340 px → 113 px = 40 mm). This only affects Word import.

📐 Import dialogs and sidebar

  • The Word import dialog now follows the design system (white, square, colour-free, unclipped selects) and every text goes through the translation system in three languages.
  • Sidebar: one continuous 260 ms movement, no fade — content collapses by height, brand slides out as the “S” slides in. Frame-by-frame: opacity constant, width and height interpolated.

ℹ️ What remains, in full transparency

  • Word page setup (format, orientation, margins, columns) is not applied at import yet — the last fidelity item outstanding.
  • Run colour is not passed on by the converter, and the legacy .doc fallback could not be tried on a real Word 97-2003 file.
  • The sidebar icon layout (four columns open, one collapsed) still switches instantly — not animatable in CSS; it happens at the very start of the movement.

SUPER PRINT v1.7.568

Released September 27, 2026

Startup was measured and lightened: a 76 ms main-thread block (hundreds of ms on an older machine) used to hit right before the welcome / news / tutorial dialogs. It is gone.

🔬 Measured at startup (cold cache, before / after)

  • Blocking task: 76 ms → 0 ms. The font preload forced up to 32 synchronous layouts; it now uses document.fonts.load with no forced layout.
  • First paint 296 → 228 ms; DOM content loaded 377-519 → 244-285 ms; the 6 hyphenation scripts no longer block parsing.
  • Asset library: its 153 cards are no longer built at startup — they are built when the panel opens, or in the background after 3.5 s. Search, filters and templates are unchanged.
  • Per-language hyphenation: dictionaries are now prepared on first use (4.4 ms for French) instead of at startup (~25 ms), and hyphenation stays exact.

ℹ️ What remains, in full transparency

  • The main remaining cost is the editor's own size (5.4 MB of JavaScript, 1.23 MB gzipped online) and its parse time — splitting it into on-demand modules is a separate project.
  • The CMYK colour profile (654 KB) is still preloaded on purpose 0.8 s after startup, which keeps CMYK export instant — it does not block the interface.

SUPER PRINT v1.7.567

Released September 27, 2026

The image's replace and crop buttons are now drawn inside the block, top right, so they stay visible and clickable even when the photo touches the page edge.

📐 Measured: the buttons landed up to 33 px outside the page

  • The buttons were placed outside the block (18 local units right of the edge, multiplied by the image scale): on a full-width photo they landed 24.7 px outside the page (page 1) and 33.2 px (page 8).
  • Result: on edge-touching photos the buttons ended up in the grey area or outside the workspace — invisible or unclickable.

🎯 Anchored in the block's top right corner

  • Each button is now placed inside the block's visible window (crop mask, or the object's box), with a constant margin in screen pixels: it follows scale, zoom and rotation, and stays inside even on tiny blocks.
  • Same rule for catalogue shapes holding an image: both buttons are anchored inside the shape.

✅ Non-regression checks

  • Buttons measured inside the block at 100/200/50 % zoom, with the pasteboard on, on a 20-30° rotated image and on a small image; at 200 % the engine receives the pointer at 411.1 px for a button at 411.5 px.
  • Real clicks: replace opens the file picker and keeps the block window to the pixel; crop opens the crop window.
  • Pasteboard measured in both directions with a text edit, an image replacement and an object move in between: 0 difference across the document; the toggle is reversible.
  • Simulated slow machine (12× slower CPU, 2 cores, 300-600 MB in use): 6/6 replacements conform, windows preserved, no block moved.

SUPER PRINT v1.7.566

Released September 26, 2026

Replacing a layout photo from the asset library pushed the new image out of its frame; it is now centred on the previous block and scaled without distortion — measured before and after.

🖼️ Measured: the photo left its frame and covered the rest

  • Measured on the Journal Coiffure template: replacing a 560 × 780 image with a 400 × 1400 one moved the visible window 522 px down and grew it from 495 × 370 to 693 × 519 px — the photo covered the caption and the footer.
  • Cause: the reference window was only read for rectangular masks, while asset-library layouts use path masks (arch, slope) — the mask was never resized and the photo never re-centred.

🎯 Centred on the previous block, at the exact scale

  • The reference window is now the mask whatever its type; the photo is centred on the previous window, the mask is resized around the same centre, and the scale stays uniform — the image fills the block with no distortion.
  • The same rule applies to an image without a mask and to a rotated image: re-centring goes through the object origin, so rotation and anchor are respected.

✅ Non-regression checks

  • Six cases measured before/after (path mask, three rectangular masks, magazine full-page photo, 2|3 spread, image without a mask, image rotated 25°): the visible window is identical to the pixel, the scale stays uniform, and the frame survives a page change and a .sp round trip.

SUPER PRINT v1.7.565

Released September 26, 2026

Two chained defects made a page vanish from the preview in double page mode — both measured on the bench, before and after.

📄 A 2-page document showed only one page

  • Measured: 2 blocks in single-page mode became a single block in double-page mode (page 2 not drawn at all); now 2 blocks, both pages visible.

🛡️ Adding a page can no longer erase page 1

  • Measured: adding a page removed page 1's block (4 pages announced, 3 displayed); now the block is only removed if it holds the expected page, otherwise the preview is rebuilt.

✅ Non-regression checks

  • Measured on 2, 3, 4, 5 and 6-page documents: no missing page in any case, 3-page-and-up layouts unchanged, and object content and coordinates survive the single ↔ double page round trip.

SUPER PRINT v1.7.564

Released September 26, 2026

Three fixes around text chaining: two measured, one resting on a measured cause with its own measurement still to be confirmed — stated plainly in the changelog.

🩹 The target's mask after chaining fixed and measured

  • Measured: the target frame drew 2 812 uncut ink pixels after chaining, now 1 585 with the mask applied immediately.

🔗 The Studio no longer drops chains (bench confirmation pending) fixed

  • Measured end to end: a chained document returned from the Studio with textLinks empty and every frame's textLinkId null; both are now carried in each direction.

SUPER PRINT v1.7.563

Released September 26, 2026

The .sp exported by Studio IA is now at the same level as the app's: both exporters were re-read key by key, and only text chains and guides were left empty.

🔗 Text chains and guides kept fixed

  • The defect: textLinks and guides were hard-coded empty, so a document received from the app lost its text chains and guides when re-exported from the Studio.
  • The fix: both blocks are rewritten as they are from the received document; the audit shows the 9 top-level, 8 document, 4 resources and 2 masters blocks are identical between the two exporters.

SUPER PRINT v1.7.562

Released September 26, 2026

Copy-pasting a text frame is fixed: the text shows immediately, and each paste is offset from the previous one.

🩹 Pasted text stayed invisible fixed

  • Measured: the source frame draws 442 ink pixels, the pasted one zero — its in-memory image had never been drawn, hence the need to click inside.
  • The mask was restored before the first draw, which fails silently until one draw happens without it; the mask is now removed for one draw and put back.

📚 Each paste is offset fixed

  • The offset was always recomputed from the original frame, stacking three pastes at the same spot; each paste now offsets from the previous one (measured 98, 108, 118).

SUPER PRINT v1.7.561

Released September 26, 2026

The last four missing IDML features arrive: tables, footnotes, hyperlinks and nested styles — with their schemas read from real material, never guessed.

📊 Tables — the grid, aligned on tab stops new

  • A table used to arrive empty; it now becomes a text block with one line per row, tabs between columns and stops computed from each column's real width.
  • Measured on a real-schema fixture (2 columns × 3 rows): three lines with their text, and the stop at 120 px — exactly the declared width of the first column.

📝 Footnotes new

  • A footnote's text used to be glued into the body; it now leaves the flow and gathers at the end of the block with its number and the document separator.
  • The settings come from the file's own FootnoteOption definition; measured: the note line arrives after the body, numbered and separated.

🔗 Hyperlinks new

  • In IDML the destinations live in the spreads and are linked to a source marking the range; both real shapes are now handled.
  • Measured: 21 of 28 characters come out underlined and blue; a defect was also found and fixed — XML indentation was being counted in the positions.

✨ Nested styles new

  • A nested style was lost; the instructions are now read and applied for all the format's real delimiters.
  • Measured: the prefix up to the “:” delimiter takes the file's style (30 pt, red, bold, 12 characters); the block also keeps its own reference size.

SUPER PRINT v1.7.560

Released September 26, 2026

One single cause explained three symptoms: with several objects selected, the engine stored selection-relative coordinates instead of page coordinates.

📋 Copy-paste across pages — fixed fixed

  • Pasted text could spill out of the frame or vanish: the copy remembered selection-relative coordinates and re-applied them.
  • Measured: sources stay at (150, 150) / (150, 350), the copy lands at (160, 160) / (160, 360).
  • The overflow marker was missing on both multi-paste paths; every pasted text frame now gets it.
  • The marker floated far from the frame (measured error ≈460 px up, 260 px left); it now sits on the frame's real rectangle.

📐 “Text — frame options” block — fixed fixed

  • A two-column block with inset and gutter, filled with 100 lines, was copied page 1 → page 2: fixed height, clipping, columns, gutter, inset, line count and marker all kept.
  • A page round trip (full rebuild from the saved document) leaves position, height, columns, clipping, lines and marker identical to the pixel.

🖼️ Templates and image replacement — the real cause fixed

  • “The pages fall apart” had the very same cause: an object at (200, 300) was stored at (−92, −68) while a multiple selection was active.
  • The “front / back” change was measured: stack order is identical before, during and after a selection — no sorting happens.
  • Control measurement: with a multiple selection active, saving then rebuilding the page leaves the objects at (200, 300) and (210, 410).

SUPER PRINT v1.7.559

Released September 26, 2026

IDML import now reads page master spreads, gradients, drop shadows and tab stops.

📐 IDML import — page master spreads come through new

  • An InDesign document built on a master page arrived without it, losing the document structure.
  • MasterSpreads become real app masters, with their letter, their page assignments and their items.
  • Two-master fixture measured: master A's rule lands at 48.5 / 528.5 px, i.e. 40 / 520 plus the bleed once.

🎨 IDML import — gradients and drop shadows new

  • Gradients: a gradient-filled shape used to arrive with no fill at all; it now becomes a real app gradient.
  • Measured: 0° linear → left-to-right axis, radial → radius 70, 45° three-stop → rising diagonal; all survive save and reload.
  • Drop shadows: offset, blur, colour and opacity are read; “None” adds nothing.

⇥ IDML import — tab stops new

  • A tabbed document arrived with tabs going nowhere; InDesign's four stop types now set the block's tab ruler.
  • Measured: two stops (60 px left, 240 px right) are taken over exactly and the app's tab engine is active.

🔜 Not imported yet

  • Tables, footnotes, hyperlinks and nested styles are still to come; the import window says so plainly.

SUPER PRINT v1.7.558

Released September 26, 2026

IDML import reads text frame options (columns, gutter, insets, vertical justification) and text wrap; Word import loses no text any more.

📥 IDML import — frames arrive as designed new

  • A two-column frame used to arrive as one column; column count, gutter and width are now read.
  • Top and bottom insets and vertical justification (top, centre, bottom) are honoured.
  • Wrap modes “box” and “shape” are imported with their standoff, in every column.
  • A story file with a non-Adobe root used to be skipped silently; it is now read and any unreadable story is logged.

📄 Word import — no text lost fixed

  • Word “Heading 4/5/6” titles were simply lost, without any message.
  • They are now imported as headings (bold, 1.32 × body) — 2 blocks become 4 — plus a safety net for any unrecognised text block.

🧹 Studio IA and messages adjusted

  • In Studio IA, “Layout & Canvas” was removed from the header typography.
  • The IDML import window no longer says wrap is unsupported; it lists what is kept and what is still ignored.

SUPER PRINT v1.7.557

Released September 26, 2026

The editor AI and the Studio IA now share exactly the same knowledge of the software.

🧠 What the AI still ignored fixed

  • Two texts with the same name had drifted apart, and the app's own list was incomplete.
  • Missing: frame options, masters, threading, wrap, variable fonts, named styles, grid, virtual printer, collaboration, .json, launcher.
  • Studio IA called .sp a ZIP+JSON (it is JSON), and the shortcut list advertised keys that do not exist.

🧩 A single inventory, automatically checked audited

  • One inventory, delivered to both assistants, covering the ecosystem, the file formats and the real shortcuts.
  • An automatic check keeps the copies identical, the 28 features described and the 14 models aligned.
  • The public llms.txt / llms-full.txt files received the same inventory, and the launcher version was corrected.

SUPER PRINT v1.7.556

Released September 26, 2026

Image crops and shape-clipped text outlines are now saved in .sp and .json files.

✂️ A cropped photo came back uncropped fixed

  • The exported .sp contained no crop window at all, so cropped photos came back uncropped.
  • Fabric skips flagged crop windows, and nothing rebuilt an image's crop on load.
  • The crop window is written explicitly on save: crops and shape outlines come back identical, and .json round-trips byte for byte.

🤖 Studio IA and templates: chain audited audited

  • The studio .sp export uses the same keys as the app; a studio document opens and re-exports without loss.
  • Keys the studio does not produce are filled in by the app on open: expected normalisation, not loss.

SUPER PRINT v1.7.555

Released September 26, 2026

Guides no longer shuffle the object stack, and no more restore storms.

🧭 Guides no longer churn the whole stack fixed

  • Every addition moved all guides again, even when they were already on top.
  • Checked first, then a single pass if needed: 0 guide moves during an addition, same object sequence.
  • The rebuild function already verified missing guides, so no needless work is done.

🛠️ No more guide-restore storms fixed

  • A single rebuild event triggered dozens of restore messages: the check reacted per guide instead of once.
  • Only one pending restore, one message per repair, internal states ignored: 0 warnings instead of dozens.

SUPER PRINT v1.7.554

Released September 26, 2026

Spread pages no longer reorder your objects.

🔀 After any action the whole spread stack was rewritten fixed

  • A simple copy-paste moved 103 objects, rewriting the whole stack by vertical position.
  • The ranking walks every canvas, so page 1 actions reordered all spreads.
  • No more sorting: verified 103 moves → 0, with the 43 spread objects in the exact same order.

SUPER PRINT v1.7.553

Released September 26, 2026

Replacing a template photo now happens in place: same frame, same crop, same stacking level.

🖼️ A replaced photo changed frame, crop and rank fixed

  • The replaced photo arrived at another index, with no crop window and a shorter visible area.
  • Replacing rebuilt the object, so the new image kept only a few position settings — never the crop or the masks.
  • The object is no longer rebuilt: the bitmap is swapped inside it and the new photo fills the same visible window.

📐 What is preserved when replacing audited

  • Checked on a real replacement: place, stacking level, crop window, angle, mirror, opacity, stroke, shadow and masks.
  • No removal/insertion any more: no render spike and no stack recalculation.

SUPER PRINT v1.7.552

Released September 26, 2026

A copied text block keeps its mask, so the overflow stays clipped.

📋 Overflowing text came out of the block after copy-paste fixed

  • The pasted block had no mask, so all 11 lines were drawn below the frame.
  • The cloned mask was removed on paste and nothing recreated it, because the object is selected before that cleanup step.
  • The mask is recreated where it is removed: the copy now matches the source and no ink is left below the frame.

🧩 Every paste and duplication path covered audited

  • The fix sits in the shared paste helper, so every paste path benefits at once.
  • No clipping is added where it should not be: text in a shape and blocks being edited stay mask-free.
  • Auto-height blocks also keep their mask after paste.

SUPER PRINT v1.7.551

Released September 26, 2026

A copied text block keeps all of its text frame options.

📋 A “text frame options” block lost its columns when pasted fixed

  • The pasted block lost its column setting and inset, so it re-flowed in one column and the text spilled out.
  • The copy used Fabric's own clone, which only carries Fabric's standard properties.
  • Cloning now adds the application's full settings list: the pasted block is identical to the source.

🧩 Fixed in the right place: every clone benefits audited

  • Extending the clipboard list had no effect; the fix belongs in the clone itself.
  • The fix is additive: no property is removed, so geometry cannot regress.
  • Every clone is fixed: copy-paste, Alt+click, page duplication, spread mirrors.

SUPER PRINT v1.7.550

Released September 26, 2026

A single click on a text block no longer gives it a frame and a mask.

🖱️ One click on a text block created a frame and a mask fixed

  • The first click gave the block a frame height and a mask; the second click (edit mode) removed the mask.
  • The Transform panel sync restored “fixed” dimensions it fell back on — so it created the frame itself.
  • The panel now restores only what was already fixed; plain blocks are never converted or masked.

🔍 Three situations, one single cause (audit) audited

  • The glitch appeared after three different operations — because none of them is the cause: the click that follows is.
  • The frame-options block is not the culprit: it only amplified the symptom by re-flowing its columns.
  • No regression: plain block, multi-column block and the file round trip are unchanged.

SUPER PRINT v1.7.549

Released September 25, 2026

Text wrap now applies to blocks that use the text frame options: two-column text flows around the wrapped image beside it.

🧱 Text in a multi-column block ignored wrap fixed

  • A plain block wrapped next to an image; the same block in two columns did not — every line stayed at one column's width.
  • A multi-column rule returned one column's width before looking at the obstacles, so wrap was ignored.
  • When nothing needs flowing around, nothing changes; otherwise the line is bounded inside its own column.

💾 .sp and .json round trips: identical verified

  • A two-column block with a wrapped rectangle, a template assigned then released: export → import → export is identical in both formats.
  • No runtime marker is written into the saved files: template flags and column/wrap caches stay in memory.
  • After import the block gives the same 23 lines and the same 134 px line widths as before the export.

SUPER PRINT v1.7.548

Released September 25, 2026

A two-column block stays two columns when the template is applied to a page — on screen and in the PDF.

🧱 A block coming from a template went back to a single column fixed

  • The block was set correctly and the template stored it, but the block came back as one column when the template was applied to a page.
  • A template rebuilds its blocks by hand: fonts and styles were copied, the text frame options were not.
  • Both paths now copy the frame settings and recompose the block: the injected element is identical to the original.

🎛️ The “text block options” panel did nothing inside the template editor fixed

  • The block was selected by the click, but the fields never reached it: the panel only looked at pages.
  • Inside the template editor the panel now looks at the template's own montage table.
  • No regression on plain blocks, insets only or short two-column text.

SUPER PRINT v1.7.547

Released September 25, 2026

Frame options (columns, frame height, mask) now stay identical on the page, in the template editor and in the saved template.

🧱 A two-column block turned back into a single column fixed

  • The settings were kept in memory but no longer applied, and the wrong height was saved into the template.
  • Columns are flowed by the wrap engine, which only pages re-ran; the frame height was only restored on page load.
  • The editor replays the page pass exactly, and the panel applies the frame immediately.

🥉 No more “extra block” slipping into a template fixed

  • The overflow indicator, chaining badge and link arrow could be saved into the template; they are now filtered out.
  • Saving a template now uses the same filter as saving a page; your own guides are kept.
  • No regression on plain blocks, insets only, or short two-column text.

SUPER PRINT v1.7.546

Released September 25, 2026

Templates are now exact on double pages too, and the studio no longer loses any content.

📖 Templates on double pages: three measured defects fixed

  • Each element now remembers its page, so the template order is restored page by page.
  • Template elements and page numbers are now excluded from the spread re-ordering.
  • Only real spreads are re-ordered now, so single pages keep their own layer order.
  • Verified: identical order and coordinates on every page, and stable across re-renders and page changes.

🔁 Studio: no more loss on a round trip fixed

  • The studio now finds pages by their page number instead of their position in the list.
  • Pages whose content comes from a template are no longer removed.
  • Shape groups now travel as placed vector images, with their exact position and size.
  • .sp and .json round-trip identically, templates and release marks included, with no internal marks leaking in.

SUPER PRINT v1.7.545

Released September 25, 2026

Templates apply exactly as designed, and they are now edited right in the preview.

🧩 Applying a template: three measured and fixed defects fixed

  • The template's stacking order came out reversed — the background covered the image. Each element now lands at its exact rank.
  • A systematic 3 mm shift: coordinates are now converted when the template is created.
  • The wrap is now re-run once every template element has landed, so a page never needs a reload to look right.

🖥️ Template editing in the preview, and no more “Lock” new

  • Full-size editing on the workbench, with access to every page setting and tool.
  • The preview background darkens while a template is open.
  • Two floating buttons: Cancel and Save template. Cancel never touches the stored template.
  • The inverse “Lock” action is gone: it used to delete the released elements, i.e. the work done on the page.

SUPER PRINT v1.7.544

Released September 25, 2026

Four requests: a reliable Contour wrap, an Anthropic engine in the studio, a mobile-friendly documentation and an audited .sp/.json round trip.

✂️ Contour wrap: the cause was a cached failed measurement fixed

  • A failed outline measurement was cached against the object's geometry, so Contour fell back to the box for ever.
  • Four fixes: no caching of a not-ready object, a forced re-measure when no ink is found, a purge when a mode is chosen, and a re-read from the object on release.
  • Verified with clicks and with the measured line profile of both modes.

🤖 Studio SP213: Anthropic Claude 5, and a finally mobile-friendly documentation new

  • The studio gains Claude Opus 5.5, Sonnet 5, Fable 5.1 and Haiku 4.5 through the Messages API.
  • The mobile header now uses two rows and both tabs stay visible from 320 px up.
  • .sp/.json audited: wrap, tab stops, column grid, templates and margins all survive; decorative guides stay excluded.

SUPER PRINT v1.7.543

Released September 25, 2026

Two audits: the grid panel no longer freezes the app, and the AI assistant gains right-aligned buttons, a full-width log and the latest OpenAI/Anthropic models.

⚡ Grid & guides: the cause was one save per band fixed

  • The red column bands lacked the layout “guide” flag, so each removal re-serialised the whole document: 984 ms per action.
  • The bands are now real layout guides: 6.3 ms to rebuild the whole grid, 0.5 ms for 222 removals.
  • Colour and opacity no longer rebuild anything, bursts are coalesced, and only visible boards are redrawn immediately.

🤖 AI assistant: layout and engines new

  • The connection buttons are right-aligned and the log fills its accordion.
  • OpenAI now offers GPT-6 Astra/Sol/Luna with a 32,000-token output budget and native JSON mode.
  • Anthropic now offers Claude Opus 5.5, Sonnet 5, Fable 5.1 and Haiku 4.5, with a 32,000-token budget.
  • Defaults become GPT-6 Astra and Claude Opus 5.5; the studio and documentation follow.

SUPER PRINT v1.7.542

Released September 24, 2026

The network printer block moves to the first tab with a working scan button; three blocking bridge bugs are fixed.

🖨️ Print pop-in: network in tab 1 fixed

  • The network block is in tab 1 with a working scan button that reports honestly.
  • Three blocking bridge bugs fixed: random printer id, missing private-network header, ignored duplex.
  • The job now carries the real media, colour mode, duplex value and printer address.
  • Tab 1 is now a two-column grid and the bridge starts with the local studio (a web page alone cannot print to network printers).

SUPER PRINT v1.7.541

Released September 24, 2026

The application round trip is faithful; the studio was dropping page templates. Fixed.

📄 Saving: full check + studio templates fixed

  • The .sp round trip is identical and the .json holds templates and release markers.
  • The studio read no templates and wrote them back empty, so the round trip returned a document without them.
  • The studio now remembers the templates and each page's masterId; measured after, the exported .sp carries them and the app finds its template again.
  • Both trees already carried the same version; this bump moves them together to v1.7.541.

SUPER PRINT v1.7.540

Released September 24, 2026

Bounding box and Contour gave the same result because the contour was derived from the object's four corners. It now detects the real shape.

🔎 Text-wrap audit: “Contour” finally does something fixed

  • All 26 Contour bands were 153 px wide (= the bounding box) and the text was identical in both modes.
  • The cause: the contour was derived from Fabric's object corners, which only return the bounding box.
  • The object is scanned band by band on its opaque pixels: the circle profile is 63 → 153 → 67 px, the triangle 17 → 133 px, the text now flows into the hollows (80 pixels measured where the box is empty) and the frame holds 7 lines instead of 9. Bounding box mode is unchanged; the analysis is cached (3 reflows = 4.2 ms).
  • The wrap dialog now explains what each mode does.

SUPER PRINT v1.7.539

Released September 24, 2026

The tab-stop ruler no longer appears on every text block you create or click into; it follows the “Tabulation” function of the left sidebar.

📏 The ruler follows the Tabulation function fixed

  • The ruler appeared as soon as a block was in edit mode; that condition is removed (ruler count: 0 when you create a block or click inside it).
  • One click on Tabulation opens the panel and shows the ruler (0 → 1); a second click closes both (1 → 0).
  • If “Tab stops active on the block” is ticked, the ruler stays visible even with the panel closed (measured: 1) — an explicit choice saved with the document.

SUPER PRINT v1.7.538

Released September 24, 2026

The separate white box is gone; the template entry now lives in the right-click menu and toggles Release/Lock. Both actions only appear on pages that have a template.

🖱️ A single entry, in the menu, with a toggle fixed

  • Right-clicking opened the object menu and a white box above it; the box is removed and the entry now sits at the bottom of the menu, after Delete.
  • The label follows the page state; “Lock” is new and removes the released elements so the template feeds the page again (Ctrl+Z both ways).
  • The entry only exists when a template is applied to the clicked page; without one, an empty-area right-click shows no menu and the object menu keeps its usual entries. In spread mode only the clicked page is affected.

SUPER PRINT v1.7.537

Released September 24, 2026

The .sp was already faithful. Three fixes: the .json per-side margins, the text-block frame and embedded fonts through the studio.

📄 Margins, block frame, fonts fixed

  • The per-side margins were lost on .json import (12/18/15/25 came back as 25 everywhere); both readers now pass them, and old files keep their single-margin fallback.
  • A 2 px red block frame came back from the studio without it (and the next PDF lost the stroke); the frame and the “freed from template” marker now travel both ways.
  • An embedded font was not re-emitted by the studio (the app then used a fallback font); it is now carried along — kept in memory, never in localStorage.

SUPER PRINT v1.7.536

Released September 23, 2026

The swatch books now use the house scrollbars, and the chosen shade is highlighted in light grey instead of black.

🖱️ House scrollbars + readable selected shade fixed

  • The shade list kept the native 15 px scrollbar; it now uses the house 6 px scrollbar (transparent track, grey thumb), like the sidebar and the widgets.
  • The selected shade was on black (invisible for dark colours); it is now light grey with ink text and an ink ring around the swatch.
  • Verified in the sidebar (15 → 6 px, active row rgb(230,230,230)) and in the detached Colors widget (6 px, same light grey); clicking still applies the shade.

SUPER PRINT v1.7.535

Released September 23, 2026

In CMYK mode, the Fill/Stroke selector now shows the selected block's colour.

🖍️ Block colour in CMYK mode fixed

  • Measured: RGB part was fine, CMYK sliders and swatch stayed frozen (0/59/100/0 and orange) for both blocks.
  • Cause: CMYK sliders were only synced when both fill and stroke existed; a coloured block without a stroke kept the previous colour.
  • Fixed: sliders, numeric fields and swatch now follow every selection; a block with no fill shows “None” and the hatched swatch.
  • Verified numerically (incl. a spot ink and a stroke), and with real mouse clicks (deselect then reselect).

SUPER PRINT v1.7.534

Released September 23, 2026

The Pantone swatch book is no longer greyed out: it opens with a 50-shade sample covering all 21 Pantone families.

🎨 Pantone swatch book active new

  • 50 swatches across the 21 families of the catalogue, sampled (not duplicated) from the catalogue already present in the app.
  • Clicking a shade applies the spot ink (measured: #CCCCCC → #FCEE21) and keeps the catalogue plate name (PANTONE YELLOW C).
  • The internal catalogue keeps its 21 families and 246 shades (689 options, no duplicates), so spot detection, export and .sp round-trip are unchanged.
  • The row also works in the detached widget (stable ids, same ink application).

SUPER PRINT v1.7.533

Released September 23, 2026

A right-click on a page can now release the master page: its items become normal, editable objects of that page.

🖱️ Right-click a page → Release the master page new

  • The menu names the page, the master and the number of items to release.
  • Released items become selectable and movable (measured: 59,59 → 98,88) and stay editable after a full re-render.
  • Master guides stay guides, and the page is no longer re-fed by the master (no duplicates: 6 objects measured).
  • The release is saved with the document, and the export skips the master on a released page (no double painting in the PDF).
  • Pages that are not released behave exactly as before, and Ctrl+Z undoes the release.

SUPER PRINT v1.7.532

Released September 23, 2026

The columns of a text block now stay visible while you edit it, and caret, selection and clicks follow the column flow.

📐 The columns hold while you edit fixed

  • Before: entering edit mode re-wrapped the text at the block width (28 lines) and the column geometry was null. After: the wrap stays at the column width (61 lines, 2 columns) with ink in both columns.
  • Clicks, drags and double-clicks now derive the column from x and the line from y inside that column (measured: click → exact index, drag → 1 character of tolerance).
  • The caret and the selection highlight now use the column flow; justified lines no longer stretch to the block width.
  • No change for blocks without columns, and nothing changes outside edit mode.

SUPER PRINT v1.7.531

Released September 23, 2026

Above 100 %, the tab-stop ruler became impossible to grab and clicking it deselected the text block. Cause measured and fixed.

📐 The zoom is now the REAL zoom fixed

  • canvas.getZoom() always returns 1 with a CSS-transform zoom; the real zoom is now published and used, so the grab zone keeps a constant screen size.
  • Measured: at 120 % a 40 px screen drag moves the stop 32.9 document px (expected 33.3); at 200 % grabbing 6 screen px away still works.

🖱️ Clicking the ruler can no longer deselect the block

  • The hit test used to give up silently when the ruler state was incomplete — the press reached Fabric and cleared the selection. It is now always consumed, and the band geometry is recalculated from the block.
  • Measured: ruler destroyed → grabbing and dragging still work; band press with no stop is consumed and the block stays selected; clicking the band still creates a stop.
  • The ruler now remembers its block, a stuck drag can no longer happen, and the ruler is refreshed after a zoom change.
  • If needed, window.spTabDiag() prints the whole ruler state on one line.

SUPER PRINT v1.7.530

Released September 23, 2026

Fond and Contour now paint the block frame; the text is only coloured when characters are selected with the mouse.

🎨 Fond and Contour = the frame fixed

  • Block selected: Fond paints the block background, Contour its outline; the text colour is untouched (measured 19 247 green / 2 084 blue / 4 236 black pixels).
  • Characters selected with the mouse: only those characters take the colour (measured on 3 characters).
  • The right-hand panel now shows the frame colours for a text block; the text colour keeps its own control.

📄 Export: the frame is finally painted

  • The frame background was not exported at all by the default engine (0 pixels measured); fill and outline are now drawn in both engines.
  • Swatch inks applied to a text block paint the frame, and the spot plate contains only the frame (text drawn outside the /SPOT marker).
  • Other objects are unchanged, and a .sp round-trip keeps the frame colours and width.

SUPER PRINT v1.7.529

Released September 22, 2026

The remove cross of an imported swatch book now sits just left of its shade count.

✕ The cross moves left of the number fixed

  • The cross was absolutely positioned and slipped under the count; it is now a row item placed before the counter.
  • Measured: cross at x = 1004 and number at x = 1028 in the widget (same line, 6 px apart); x = 1341 / 1365 in the right-hand bar.

🧩 It also works in the detached widget

  • The cross relays to the original panel: removing a book from the widget works and the copy rebuilds (11 → 10 rows).

SUPER PRINT v1.7.528

Released September 22, 2026

The detachable Colours widget is wider, and the swatch books now work inside it.

🪟 A wide widget that fits without scrolling fixed

  • The widget is now 470 px wide (min 380, max 540) and fits without scrolling; the colour field used to be 11 px wide.
  • Inside a widget the swatch list is capped at 230 px and scrolls on its own.

🎯 The swatch books now respond INSIDE the widget fixed

  • The widget’s copy had no references for the 457 shades, so its clicks went nowhere; every element now relays to the original control.
  • Measured: opening a book, picking HKS 45 K (object + spot ink + badge + fields on both sides) and removing an imported book all work inside the widget.

🔄 The state follows, and a widget setting is no longer overwritten

  • Open book, selected shade, greyed Pantone row and the CMYK switch all follow inside the widget.
  • A field being used is left alone for 4 seconds, so a colour chosen in the widget is no longer overwritten.

SUPER PRINT v1.7.527

Released September 22, 2026

An .ase swatch book behaves exactly like a Pantone on export: an extra, correctly named plate.

🖨️ Your .ase does get its own plate verified

  • Measured: four blocks gave four /Separation spaces, two of them from an imported .ase — same behaviour as Pantone.
  • Accents were dropped from plate names (CARLATE MAISON); they are now folded into plain letters (ECARLATE MAISON).
  • A plate could take another book's name when two books share a code; the clicked book now wins (FOCOLTONE 1018 instead of TOYO 019).

🏷️ The plate name follows your choice — and survives the .sp

  • The ink name is saved with the object and survives the .sp; the fallback is now “SPOT 123456”.

✍️ Export box: “spot inks”, no longer Pantone only

  • Labels now say “spot inks” instead of “Pantone” everywhere in the export box, in FR / EN / JP.

SUPER PRINT v1.7.526

Released September 22, 2026

In the Colours panel, Fill / Stroke and the colour line move to the top, above the swatch books.

🎨 The colour module moves to the top fixed

  • Measured: Fill / Stroke goes from y = 616 to y = 355, and the colour line from y = 672 to y = 411 (261 px higher).
  • It is a plain move: nothing was rewritten, no id changed, no code touched.

📄 The swatch-book list can breathe tuned

  • The 120/150 px cap added in 1.7.525 is gone: the seven rows show in one go (162 px, no inner scrollbar).

ℹ️ Nothing else changes

  • The ink path, the catalogue, the export layers, the .ase import and the translations are unchanged.

SUPER PRINT v1.7.525

Released September 22, 2026

The colour list has a new shape: “Select a swatch book” with accordions, plus your own .ase import.

🎨 One book per line, opening as an accordion new

  • “Select a swatch book” replaces “Select a Pantone”. Six books ship: Toyo Color Finder (46), Focoltone (48), HKS (54), RAL (191), NCS (55) and DIC (49).
  • Every shade shows its colour dot and name; the families are captioned inside the book, and one click applies the ink exactly as before.
  • The Pantone book is parked at the bottom, greyed out and not openable for now.

📥 Import your own .ase swatch books new

  • The “Import a swatch book” row opens the file picker; a .ase file joins the list under its own name, and nothing is uploaded.
  • Imported books come back next time and can be removed with the ✕ on their row.

ℹ️ About the shipped values

  • The shipped books are screen-preview sRGB references, not official manufacturer libraries — stated under the list. Import an .ase for exact values.
  • Existing documents are unaffected: the original Pantone palette stays intact in the catalogue.

SUPER PRINT v1.7.524

Released September 21, 2026

On a phone the burger menu opened but could not be closed. Both points are now fixed.

📱 The burger menu could not be closed fixed

  • Measured on a phone screen (390 × 844): the open menu has been a full-screen layer since 1.7.472, covering the top bar, so the second tap never reached the burger. Fixed.
  • The cross is now drawn clearly and the active burger is raised above the layer, so it stays clickable.

🆕 Undo / Redo in the mobile top bar new

  • Two ↩ ↪ shortcuts now sit facing the burger, at the left of the top bar; they relay to the desktop buttons (same history stack) and grey out when nothing is left to undo or redo.
  • They are hidden on desktop and fade out as soon as the menu is open (only the cross remains), a state kept in sync automatically — including when a tool window closes the menu.

SUPER PRINT v1.7.523

Released September 21, 2026

In double-page mode the folios only appeared on single pages. Both are now fixed.

🔢 Numbering missing on double pages fixed

  • A double-page document lost its numbers on every spread. Fixed.
  • The same omission affected master items on empty spreads — also fixed.

🆕 A master page can carry the numbering new

  • A “🔢 Numbering” checkbox is added to the master page editor: tick it and the folio appears on every page using that master, even with the global numbering off. The style still comes from the “Page numbering” panel.
  • The setting is saved with the master and travels in the .sp file (verified).

SUPER PRINT v1.7.522

Released September 21, 2026

A justified text could end up ragged on the PDF when its block overflowed its frame. Fixed.

📐 Justification: the last visible line of an overflowing block fixed

  • Measured: the third visible line stopped 9–10 pt (≈ 3.2 mm) short of the block edge in all three modes. Fixed.
  • Affected: the three export modes, both engines. Blocks that fit in their frame keep their exact previous behaviour (verified).
  • This package also contains the 1.7.519, 1.7.520 and 1.7.521 fixes — one single zip is enough.

SUPER PRINT v1.7.521

Released September 21, 2026

A title could come out truncated or broken at the wrong place in the crop-marks PDF.

🔤 Title fonts and line breaks honoured fixed

  • When a block was drawn by the “Finished format” vector engine, its font was not embedded and Helvetica was used instead (45.33 pt title with 26–43 pt advances instead of 16–18). Fixed.
  • Second fix: hyphenation was forced on every block, recomputing the line breaks (the title broke as “MON- / DES”). Each block's setting is now honoured.
  • This bundle also includes the 1.7.519 and 1.7.520 fixes — one package is enough.

SUPER PRINT v1.7.520

Released September 20, 2026

A page title could be invisible in the PDF with crop marks: its background band was not written. Fixed.

🖍️ Text block backgrounds are exported fixed

  • A white title on a dark band came out white on white. The engine wrote the letters only; it now also draws the line band and the frame background.
  • Second fix: the last line of a text block could vanish. Line clipping now matches “Finished format” (910 → 968 characters on a CV template).

SUPER PRINT v1.7.519

Released September 20, 2026

With crop marks, vector typography did not apply to every block. It now does.

🔤 Vector typography honoured with crop marks fixed

  • Two families of blocks were rasterised in the crop-marks export: mixed per-character styles and variable fonts with a tweaked axis. Measured: 8 text operators before, 59 and 17 after.
  • Those blocks are now drawn by the vector engine of “Finished format”, with the truly adjusted font instance, and laid onto the page.

SUPER PRINT v1.7.518

Released September 20, 2026

Thin rules were shifted in the PDF export with crop marks.

📐 Thin rules shifted in the PDF export fixed

  • Measured: −21.75 mm instead of 45.278 mm, and −60.556 mm instead of 45.278 mm.
  • Same formula as the already-correct “Finished format” export.
  • Verified on the rendered PDF: 45→179 mm and 45→257 mm.

SUPER PRINT v1.7.517

Released September 20, 2026

Widget state + white blocks: two fixes.

🎛️ Visible button state in the widget fixed

  • Effect buttons, resolutions, freeze and read-outs now follow the widget.
  • Measured: DOT → Fluide → Organic, 72→600, Geler → Reprendre, 1.00 → 0.40.

🖨️ PDF export: no more white blocks with crop marks fixed

  • Root cause: the raster run was cropped to its area and its transparent pixels were flattened to white.
  • 8 850 white cells → 466; mean difference to the reference 100.6 → 1.0.

SuperPrint 1.7.517 — widget state and PDF export both measured.

→ See the page

SUPER PRINT v1.7.516

Released September 20, 2026

The title stays FONDS (black); the grey line below shows OPTIONS.

🏷️ Two separate labels fixed

  • Separated: header FONDS (black) / grey line OPTIONS — 408 px, no scrolling.

SuperPrint 1.7.516 — header FONDS, grey line OPTIONS, everything else unchanged.

→ See the page

SUPER PRINT v1.7.515

Released September 20, 2026

The widget keeps only the essentials: grey title OPTIONS, three text lines removed.

🧹 Three text lines removed design

  • Grey title is now OPTIONS; the sidebar tool stays “Fond”.
  • The status line repeating the resolution is gone; hover tooltips remain.
  • The preview hint and the bottom note are gone too: 504 → 408 px high, no scrolling.

SuperPrint 1.7.515 — “OPTIONS” title, no grey text left, 408 px widget, everything still working.

→ See the page

SUPER PRINT v1.7.514

Released September 20, 2026

The widget is now called Fond, with 72 / 150 / 300 / 600 dpi output.

📐 Four resolutions, computed on the width of an A4 page new

  • 72 / 150 / 300 / 600 dpi → 595×335 / 1240×698 / 2480×1395 / 4961×2791 px.
  • Low but clean: 72/150 dpi are rendered 2× larger then downscaled with high-quality smoothing.

🛠️ Speed slider and transports re-checked fixed

  • Speed: both events covered; 0.4 everywhere, fill 8.7 % on both elements.
  • .sp / .json re-checked: a 600 dpi background round-trips without loss; 150 dpi is plenty for a background.

SuperPrint 1.7.514 — renamed “Fond”, four resolutions (595×335 / 1240×698 / 2480×1395 / 4961×2791), clean low-res rendering, Speed slider fixed.

→ See the page

SUPER PRINT v1.7.513

Released September 20, 2026

A third-shorter preview, live sliders, and a page background that really animates in the document.

📐 Preview a third shorter design

  • Preview 252 → 168 px, full width, no distortion, scene still 16:9.

🛠️ Three fixes in the widget fixed

  • “We lose the slider ball”: the widget's fill lagged behind (34.8 % instead of 95.7 %) — sliders are now listened to directly.
  • Live page background: the page really animates and every slider change applies at once.
  • Replacing the background: previous widget backgrounds are purged (1 object before, 1 after).

🔎 The widget backgrounds, checked end to end audit

  • .sp / .json / PDF / Studio: the background travels and prints; the Studio re-fits it to its own page (noted).

SuperPrint 1.7.513 — preview 449 × 168 px, live page background, cursor fill synced (95.7 %), replacement purges the old background, transports verified.

→ See the page

SUPER PRINT v1.7.512

Released September 20, 2026

House-style redesign: black and grey sliders, black active button, five effects per row, full-width preview.

🎛️ Black and grey, like the rest of SuperPrint design

  • No blue: grey track, black fill, white thumb ringed in black.
  • Effect buttons: 22 px and black active state instead of blue.
  • Five effects per row (5 then 4) — half the height.
  • Full-width preview (449 × 252 measured) and a 470 px widget that fits without scrolling (471 / 471 px).

SuperPrint 1.7.512 — 470 px widget, 471 / 471 px body, full-width 16:9 preview, black sliders and black active button, five effects per row, parity 22/22.

→ See the page

SUPER PRINT v1.7.511

Released September 20, 2026

Animated background: nine effects, a 16:9 preview and house-style sliders.

🎨 Nine effects, three of them new new

  • Already there: DOT, Fluid colours, Pastel, Mask, Aurora, Waves.
  • Organic — soft blobs masking an orange/blue sheet.
  • Isometric cubes — a grid of cubes rising and falling.
  • Holo print — three offset screens of neon dots.

🖥️ Widget redesigned: 16:9, house sliders, no more scrolling ergonomics

  • 16:9 preview (267 × 150 measured) and 2560 × 1440 px output, placed in uniform cover.
  • House-style sliders with the value shown on the right.
  • Less boxy: no control falls outside the visible widget area, even in a 627 px-high window.

SuperPrint 1.7.511 — 560 px widget, 267 × 150 preview (16:9), nine distinct effects, house-style sliders, uniform-cover page background, parity 22/22.

→ See the page

SUPER PRINT v1.7.510

Released September 20, 2026

New Animated background tool, and tab-stop text now exports as whole words in the vector PDF.

🎨 Animated background — build it, freeze it, insert it new

  • Three effects: DOT, Fluid colours, Pastel — four sliders and a shuffle button.
  • Click to freeze, then insert as an image or as the page background, recomputed at 1754 × 2480 px.
  • No file, no connection, no library: native canvas 2D, so the app still works offline. Wide 520 px widget.

🔤 Tab-stop blocks: the PDF keeps WORDS, not letters fixed

  • Measured: eleven single-letter draws → copying gave “A r t i c l e”.
  • The fix: two calls only — “Article” and “Prix”, embedded OpenSans-Regular, 140 pt apart = exactly the stop.

SuperPrint 1.7.510 — tool in the Shapes menu, 520 px widget, live preview, freeze on click, insert as image or page background, PDF: 2 words with the real font 140 pt apart, parity 22/22.

→ See the page

SUPER PRINT v1.7.509

Released September 20, 2026

The column grid now travels with the document, and the Studio preview applies the tab stops.

🧱 The column grid travels with the document fixed

  • What was happening: the grid only lived in the browser, not in the file.
  • The fix: colGrid is written by the five writers and read by the four readers, the restart restore, the .sp reader and the studio.

📐 The Studio preview applies the tab stops fixed

  • Measured: in the studio preview “Prix” stayed glued (82 px instead of 280).
  • Two causes: Fabric 5.1 vs 5.3 measurement, and a tab replaced by a space before measuring.
  • Result: 281 px apart, the stop is honoured in the preview and in the exports.

🖨️ Tab stops in the PDF export, re-checked verified

  • The PDF export uses the same advance engine as the screen: 140.00 pt, exactly on the stop.

SuperPrint 1.7.509 — .sp carries the grid and both tab stops, studio preview 281 px, PDF export exactly on the stop, parity 22/22.

→ See the page

SUPER PRINT v1.7.508

Released September 20, 2026

In tabulation mode, pressing Tab before a letter now moves the whole text to the stop.

⌨️ The letters follow the caret fixed

  • What really happened (measured at pixel level): only the screen drew B at 24 px instead of 150.
  • The cause: Fabric draws such a line in one go, and a tab inside a string is just a space.
  • The fix: such a line is drawn character by character from the same engine as the caret, the ruler and the exports.

🧰 Two widget adjustments ergonomics

  • “Grid & guides” now gets 400 px — 57 px of content used to be cut off on the right.
  • No close cross in the tab-stops widget — close it with the original button or Escape.

SuperPrint 1.7.508 — checks: B ink moved from [24..35] to [153..164] with a 150 px stop; real click + real Tab verified; bold, letter-spacing, centred and multi-line cases verified; native PDF Δx = 100 pt unchanged; Grid & guides body 399/399 px (was 199/256); tab-stops widget without a cross; parity 22/22.

→ See the page

SUPER PRINT v1.7.507

Released September 20, 2026

The Tab stops panel now behaves like our other widgets, and tab stops now survive the exports.

🧰 A widget, not a menu ergonomics

  • The panel now lives in the work area — draggable, collapsible, closed by its cross or Escape, with the document staying clickable.
  • One click opens, one click closes from the left bar button, with the ruler kept above the block.

🖨️ Tab stops in the exports fixed

  • PDF: checked by measurement — 100 px stop = 100 pt in native PDF, 35.28 mm in jsPDF PDF.
  • Vectorised text: fixed — it now uses the same advance engine as the preview.
  • Font fallback: fixed — the substitute block keeps the tab stops, metrics and line-breaking rules.
  • .sp and .json: re-read, round trip measured — stops restored identically, and carried both ways in the studio.

SuperPrint 1.7.507 — checks: widget inside the work area with zero overlap, live list and status in both copies, Tab insertion verified, PDF draws measured at Δ100 pt (native) and Δ35.28 mm (jsPDF), vectorisation fixed (150/252 px), .sp round trip restoring the stops, parity 22/22.

→ See the page

SUPER PRINT v1.7.506

Released September 20, 2026

Grid & guides now behaves like our other widgets, and brings the translucent red column grid: 6, 12, 24 or 32 columns.

🧰 A widget, not a menu ergonomics

  • The panel now lives in the work area: draggable by its header, collapsible with one click, closed by its cross, with the document staying clickable.
  • One click opens, one click closes from the left bar button.

🔴 Red column grid new

  • Four grids in one click: 6, 12, 24 or 32 columns, using the gutter above, inside the margins or across the whole page.
  • Adjustable opacity (4–40%, 12% by default).
  • Never printed nor exported (screen guides only), they follow the pages and the choice is remembered.
  • And the blue grid is untouched: both grids coexist.

SuperPrint 1.7.506 — checks: widget inside the work area with no bar overlap, 12 red bands of 27.2 px inside the margins, opacity and full-page options applied, coexistence with the blue grid, a new page gets the bands, reload restores everything, dragging is clamped, the cross closes it, parity 22/22, package rebuilt.

→ See the page

SUPER PRINT v1.7.505

Released September 20, 2026

Tabulation mode now behaves like QuarkXPress: the ruler appears as soon as the cursor is in a text block, click to place a tab stop, drag to adjust, drag below the ruler to remove.

🎯 The ruler, the palette and the cursor ergonomics

  • The panel no longer covers the page. With the sidebar open the palette used to sit on top of the pasteboard behind a full-screen overlay; it now stays in the left column.
  • The ruler appears as soon as you type in a block, with the default interval drawn as small ticks.
  • Three gestures, as in QuarkXPress: click the ruler to place a stop, drag to adjust it, drag below the ruler to remove it. Escape cancels; a click inside the block still places the cursor.
  • Tab no longer dies after a panel setting: it now inserts in any block being edited and the focus returns to the text.
  • The tabulation is visible: with invisible characters on, a pink arrow marks its start.

SuperPrint 1.7.505 — checks: panel fully on screen inside the column, ruler as soon as editing starts, click on the ruler places a stop (35 mm), Tab inserts at the cursor and the letters land on the stop, drag adjusts (59.5 mm), drag below removes, panel kept when clicking in the block, Tab works after a panel setting, parity 22/22, package rebuilt.

→ See the page

SUPER PRINT v1.7.504

Released September 20, 2026

In tabulation mode, put the cursor in front of a letter and press Tab: the tabulation is placed at the cursor and the letters after it move to the next tab stop.

🎯 The letters follow the cursor fixed

  • The problem: a click inside an inactive text block only selects it, so no cursor existed yet and pressing Tab parked it at the end of the text without inserting anything.
  • The rule: the last click on the pasteboard is remembered; if Tab lands on a merely selected block and that click was inside it, the cursor is placed where you clicked and the tabulation is inserted in the same gesture.
  • And to be sure: the tabulation is now inserted with the cursor position given explicitly, so it can no longer land elsewhere.

SuperPrint 1.7.504 — checks: with the cursor mid-text, Tab inserts the tabulation at the cursor and the letters shift; with the block merely selected after a click inside it, Tab places the cursor where you clicked then inserts the tabulation; rubber-band selection keeps the old behaviour. Parity 22/22, package rebuilt.

→ See the page

SUPER PRINT v1.7.503

Released September 20, 2026

Pick French or Japanese on the presentation page: the application, the AI studio and SuperTyPo now open in that language.

🌐 The language chosen here follows the visitor new

  • The problem: every surface kept its own language, so choosing Japanese on the presentation page changed nothing in the tools.
  • The rule: the presentation page writes the shared key sp_lang and adds ?lang=xx to the three tool links; each tool applies it at start-up and removes it from its address. Without the parameter nothing changes.

SuperPrint 1.7.503 — checks: all 69 tool links carry ?lang=ja from the Japanese presentation page, the shared key is written, the app starts in Japanese and cleans its address, the studio and SuperTyPo follow; without the parameter no preference is touched. Parity 22/22, package rebuilt.

→ See the page

SUPER PRINT v1.7.502

Released September 20, 2026

The FAQ questions open on click in all three languages. It was the only place on the site where the fold did not respond: in English and Japanese, the question shown was not the block's control.

🖱️ The FAQ answers the click again fixed

  • The cause: every question carried three summary tags (one per language) while a collapsible block has only one control, its first tag. The first being French, the visible English question was not the control, so clicking did nothing. In French it worked — hence the live-site symptom.
  • The fix: one summary tag per question, the three languages inside as spans. Number, plus icon and two-column layout unchanged; the search filter keeps working in all three languages.

SuperPrint 1.7.502 — checks: real click on the visible question in three languages, a single language shown at a time, icons kept, search filter intact, home page identical on both sides, package rebuilt.

→ See the page

SUPER PRINT v1.7.501

Released September 20, 2026

The dev tool now points to our own documentation — a full chapter details the console, the sandbox and the six snippets —, the home page lightens its chapter list, and the author cards lose their number.

📖 The dev tool gets its own documentation chapter new

  • The link at the bottom of the panel leads to our documentation, straight to the dev tool chapter, in the interface language.
  • The bilingual chapter covers the panel, how to open it, the three tabs, the sandbox, the six snippets, an annotated script and the caveats — in the site copy and the app copy.

🧹 The home page drops its “Three front doors” fold lighter

  • The collapsible block repeating the three applications is gone; the three large entries at the top of the page still present them. The chapter list now opens on the inventory.

👤 The authors without a number lighter

  • The 01 and 02 marks are removed from both cards: only the drawn author mark and the CMYK dots remain. Names, roles, texts and links are untouched.

SuperPrint 1.7.501 — checks: dev tool chapter reached by its anchor, panel link resolving to the app's own copy, labels in three languages, fold gone with the three entries kept, no author number left, site and local copy identical, package rebuilt.

→ See the page

SUPER PRINT v1.7.500

Released September 20, 2026

A right click now opens “Edit path” on any vector object, the script engine becomes a three-tab dev tool, and a path’s identity travels with the document in .sp and .json.

✒️ Edit path, on every vector object new

  • Right click > “Edit path” on any vector object: square anchors and round curve handles appear on the canvas. Drag them, add or delete a point, convert a straight segment into a curve, apply or cancel.
  • The conversion is exact to the pixel: the checks give a 0.00 mm difference on rectangle, ellipse, circle, polygon, triangle and a ×2 scaled rectangle. “Cancel” restores the original shape with its properties.

🛠️ The “dev tool” replaces Developer Tools new

  • The panel is now called “dev tool” with three tabs — Snippets, Editor, API reference — and every icon is an inline vector drawing. No emoji.
  • Six new snippets, runnable in one click: inventory (read-only), 12-column grid, swatch strip, editorial block, footer on every page, overflow check. Each card says whether it is read-only or changes the page.
  • The console timestamps every line, captures console.log, shows the return value and duration. The sandbox exposes SuperPrint, canvas, log(), mm(), px(), save(); scripts run in an async function (await available), Ctrl+Enter runs, and your text is remembered.

📦 A path keeps its identity, in .sp and .json fixed

  • A converted shape records where it came from (_spPathFrom): application and studio carry it both ways, on save and on reopen, in .sp and .json.

SuperPrint 1.7.500 — checks: conversion at a 0.00 mm difference, cancel restoring the original shape, handles dragged with the mouse, right-click menu entry, dev tool checked in three languages, .json round trip of a converted path, parity, package rebuilt.

→ See the page

SUPER PRINT v1.7.499

Released September 20, 2026

The author marks lose their plaque, the cards link to the right places, the help page sheds two sections, and the app’s tabulation follows the caret.

✒️ The two marks, undressed new

  • No more plaque: no rule, background or padding — the crown and the C sit at the size of the name (104-148 px instead of 84-108), the CMYK dots and the number on the right.
  • The links are corrected: 2points13.fr for Clémence (not clemencebrunet.fr), app.zigmoon.com for Simon (not zigmoon.com) — in the Person structured data too.

📖 The help page, trimmed fixed

  • Two sections removed: “Three tools, two people, no shop” (with its three app cards) and “What a donation means, concretely” (with its four explanations).
  • The two remaining headings (“Make a donation”, “Found a bug?”) take the exact typography of the main title (Playfair, 28-44 px, weight 700).

⌨️ Tabulation follows the caret fixed

  • In an edited block, the caret position is now read from the input field itself instead of the block’s stale copy: a tab placed at an old position landed at the end of the text, where it moves nothing.

SuperPrint 1.7.499 — checks: the two marks at 148 px with no dressing, the links verified, the help page without its two sections, the three headings at Playfair 44 px/700, no JavaScript error, the tabulation checked with real gestures, parity, package rebuilt.

→ See the page

SUPER PRINT v1.7.498

Released September 20, 2026

The install box loses its background — only the rules remain, and only the npx field stays white. The block grids get their vertical rules back and every interior takes the prepress typography. Both author marks are in place.

🖥 The install box fixed

  • No more background or shadow: rules. Only the npx field keeps a background, and it is white.

📏 Grid rules and a single typography fixed

  • The grey vertical lines are back: they were drawn by the grid’s background, made transparent when the backgrounds were flattened.
  • One single typography inside the blocks (the prepress one): card title 21 px, grey text 13 px — the five grids now measure exactly the same.

✒️ The author marks new

  • The two drawings in img/ (a crown for Simon, a C for Clémence) sit in their own card, in a ruled plaque on the page paper; the CMYK dots and the number moved right on the same line.
  • Loading is deferred (loading="lazy") as each file weighs 435 KB; both answer 200 and paint inside their 108 px plaque.

SuperPrint 1.7.498 — checks: install box transparent with no shadow, npx field white, five grids on the rule colour with paper cards, 21 px / 13 px identical in all five interiors, both author marks loaded and painted, no JavaScript error, parity, package rebuilt.

→ See the page

SUPER PRINT v1.7.497

Released September 20, 2026

The footer no longer moves on hover, lists the three applications and follows the top bar; “atelier” gives way to “desk” everywhere in the three languages; the help page gets the donation block, the removal of the three columns and the same margins.

🧭 The footer fixed

  • Hovering shifted the whole footer: the yellow dash grew and widened the line. The dash keeps its place now and opens by scaling — measured identical before and after.
  • The three applications were missing: the first column now opens with SuperPrint Editor, Studio SP213 and SuperTyPo, then follows the top bar; the second keeps the project links.

🏷 The atelier becomes the desk new

  • The word was everywhere; it gives way to bureau / desk / デスク — 26 sentences in the three languages, on both pages.
  • Examples: “The layout desk · n° 01”, “The complete DTP desk”, “The SuperPrint desk”, “Out of the desk” / “Into the desk”, “Two authors, one desk.”
  • Check: zero “atelier”, zero “workshop”, zero “工房” in the painted text of both pages, in the three languages.

📖 The help page new

  • In “Make a donation”, the PayPal consent sentence comes first, and the whole block takes the body size (16.5 px, as the heading above; it was 13 px and 10.5 px).
  • The three columns “Why help us”, “What it pays for” and “What it does not buy” are removed.
  • The big sections follow the home page’s margins: 112 px between two sections on desktop, 80 px at 1000, 68 px at 390 (it was 140 px).

🌐 The three languages reviewed

  • Both pages checked in the three languages: no amputated translation group, zero leak, and the legal windows complete (11 sub-headings for the legal notice, 5 for privacy, same links).

SuperPrint 1.7.497 — checks: footer hover unchanged before/after, three applications listed, zero “atelier” in the three languages, donation block at body size, three columns removed, help sections at 112 / 80 / 68 px, no amputated translation, legal windows complete, no JavaScript error, parity, package rebuilt.

→ See the page

SUPER PRINT v1.7.496

Released September 20, 2026

The big sections now breathe the same: one single margin between them, and a wider ending after the questions. The help page receives the burger-menu fix.

📐 One single margin between the big sections fixed

  • Measured on desktop: 113 px between templates and features, 56 px only before the authors, 94 px before the questions, and those started higher than the others.
  • The four content sections now share exactly the same margin — the one of “The SuperPrint inventory” (34-56 px): 112 px on desktop, 80 px at 1000, 68 px at 390.
  • And the end of the questions is wider (56-96 px): it is the last margin of the page, it was 50 px.

🧭 The help page’s burger menu fixed

  • The help page carried the same mobile menu and therefore the same fault; it now gets the same correction.
  • Both pages checked at 390 / 700 / 820 / 1000 px: 0 px difference between the page band and the menu band, image included.

SuperPrint 1.7.496 — checks: the section gaps measured on desktop and at 1000 / 390 px, the burger menu measured on both pages (0 px difference), zero language leak on both, no JavaScript error, parity, package rebuilt.

→ See the page

SUPER PRINT v1.7.495

Released September 20, 2026

Two mobile refinements: the logo icon no longer drops when the burger menu opens, and the browser bar turns black in Chrome as in Safari.

🧭 The logo stays put fixed

  • The band laid out again inside the menu was stacked under the sticky bar: on opening, the logo dropped by 146 px, a third of a phone screen.
  • The band is now out of flow and laid exactly on the page’s band — same top, same height, same paddings. Measured 390 to 1000 px wide: 0 px difference.

🌑 A black browser bar new

  • The page declares black for the phone browser bar (Chrome Android, Safari iOS) and keeps paper above 1000 px; black is declared without a condition, so phones get it either way.

SuperPrint 1.7.495 — checks: logo position measured before and after opening the menu at 390 / 700 / 820 / 1000 px (0 px difference), theme-color declarations in the intended order, no overflow, zero language leak, no JavaScript error, parity, package rebuilt.

→ See the page

SUPER PRINT v1.7.494

Released September 19, 2026

The favourite block — The darkroom, the prepress one — becomes the rule: its interior is taken over by four other blocks, and the table now has a single button.

🧱 One single interior treatment new

  • The prepress recipe is now everybody’s: a heading paragraph, a framed grid of numbered cards and a closing band with one italic sentence and a button.
  • The inventory, What is composed here, The analysis and Languages of the page all take that shape; the applications and plates blocks were already right.
  • No text was retyped — only the new heading paragraphs and closing bands, in the three languages.

🖨 A single button for the table fixed

  • The comparison table showed the same button twice; only one is left, the one under the table that does not scroll with it.

🎨 Two faults repaired

  • The output chips were unreadable — paper on paper since the backgrounds were flattened. The ink background is back.
  • On a phone, the + sign of the formats block wrapped alone to the left; it now sits in the corner, with the marker flush left.

SuperPrint 1.7.494 — checks: the four blocks measured against the prepress recipe, 15 / 8 / 2 / 2 cards, a single table button, the six outputs readable again, zero language leak, no JavaScript error, mobile 390 px without overflow, parity, package rebuilt.

→ See the blocks

SUPER PRINT v1.7.490

Released September 19, 2026

Four refinements: no chapter numbers, one single background inside the blocks, a held rhythm, and the FAQ back on the home page in two columns.

🧭 Rhythm, backgrounds, words fixed

  • The chapter idea is gone (no labels, no numbers) and “atelier” gives way to SuperPrint in the headings of that part.
  • One single background inside the blocks: prepress was the only one in ink, it is like the others now.
  • The general section padding also hit that zone; it is aligned on 34–56 px now, with no bottom padding on the part and a 22 px gap to the first bar.

📖 The FAQ comes home, in two columns new

  • The ten questions return to the home page in two numbered columns on desktop (one on mobile), with a hanging number and the + pinned right; faq.html is deleted and the home gains the FAQPage markup.
  • Mobile checked at 390 px: one column, no overflow, no JavaScript error.

SuperPrint 1.7.490 — checks: no chapter numbers, no “atelier” in the part’s headings, interiors on the page paper, 22 px / 18 px rhythm, a two-column FAQ, faq.html returning 404, zero language leak, parity 22/22.

→ Read the FAQ

SUPER PRINT v1.7.493

Released September 19, 2026

The FAQ gains a search field between the title and the questions, and open questions no longer get a background.

🔎 Search the FAQ new

  • A single field filters the ten questions as you type, searching all three languages at once, with a result counter, a Clear button and Escape to reset.
  • The label and the example follow the chosen language, and without JavaScript nothing breaks.
  • Open questions no longer get a background — the number, the × and the rule are enough.

SuperPrint 1.7.493 — checks: no background on open questions, the field between the heading and the list, filtered searches in three languages, a message when nothing matches, Escape resetting, zero leak, parity 22/22.

→ Read the FAQ

SUPER PRINT v1.7.492

Released September 19, 2026

Two alignment fixes: the two blocks without a pink kicker now have one (all eight bars share the same height), and the bottoms of sections are restored.

📐 The alignment of the bars fixed

  • The first and last blocks had no kicker, so their bar was shorter; each has its own now and all eight bars measure 90 px, 30 px apart.
  • The bottoms of sections were at zero (the Zigmoon paragraph and the FAQ stuck to what follows); both get a real 30–50 px bottom again.

SuperPrint 1.7.492 — checks: eight kickers, eight bars at 90 px, 30 px between blocks, 50 px bottoms, zero language leak, parity 22/22, package rebuilt.

→ Read the FAQ

SUPER PRINT v1.7.491

Released September 19, 2026

A design pass on everything after the hero: the folds breathe, the sans-serif joins the system, the FAQ moves after the authors, and the rhythm is aligned.

🔤 The sans-serif joins the system new

  • The block titles and the FAQ questions switch to IBM Plex Sans (29 px and 18.5 px), Playfair keeping the big titles.
  • The folds were too tight (18 px) — 20 to 30 px between blocks now, 19/15 px in the bar, 6/10 px in the body.

🧭 The FAQ after the authors, and the rhythm aligned fixed

  • The FAQ moves after the authors, on the page and in the bar (desktop, mobile menu, help page): Fonctions · Manuel · Auteurs · FAQ · Participer · Ouvrir l’app.
  • The template section still carried the 72–140 px padding while the Fonctions part is at 34–56 px; the whole page now breathes the same way.

SuperPrint 1.7.491 — checks: sans-serif measured on the block titles and the FAQ questions, Playfair kept for the big titles, 30 px / 68 px rhythm, the right order in the page and both bars, zero language leak, parity 22/22.

→ Read the FAQ

SUPER PRINT v1.7.489

Released September 19, 2026

Three refinements: the blocks no longer carry the old chapters’ background, the pile is tighter, and the manual section leaves the page.

🎨 Backgrounds and air fixed

  • The blocks kept the background of the old chapters (paper-3 for three of them, paper-2 for prepress and the analysis) — all eight are now on the page paper, the old watermarks are hidden and the table frame is transparent.
  • There was too much air between chapters (26–44 px plus padding): an 18 px gap and a 72 px bar now, so the eight blocks read as one list.

📕 The manual section leaves the home page new

  • The “Everything is written, in black and white” chapter and its four entries are removed: the bar already leads to the manual. The “Manual” entry now points straight to documentation.html, and the authors move up to chapter 02.

SuperPrint 1.7.489 — checks: eight blocks transparent or on the page paper, old watermarks off, an 18 px gap (measured), a 72 px bar, no manual section nor #manuel link, the navigation leading to documentation.html, zero language leak, parity 22/22, package rebuilt.

→ Open SuperPrint

SUPER PRINT v1.7.488

Released September 19, 2026

Four requested touches on the home page: the FAQ gets its own page, the manual enters the bar, every block starts folded, and no card keeps a lighter background.

📄 The FAQ has its own page new

  • The ten questions leave the home page and become faq.html, same chrome as the take-part page, with numbered questions and answers opening underneath.
  • The page carries its own FAQPage schema, the bar and the sitemap point to it, and the home page loses 12,300 characters.

🧭 The bar, the blocks, the backgrounds fixed

  • The manual now sits in the desktop bar before the authors, as well as in the mobile menu, on all three pages.
  • Every block starts folded: the eight blocks announce themselves by their title and you open the one you need.
  • No block keeps a lighter background than the page (except the comparison’s « Prix » row and the prepress block, which stay in ink on purpose).

SuperPrint 1.7.488 — checks: FAQ page served (twelve questions, one language, no JS error), home without the FAQ section, eight blocks folded, manual before authors on three pages, backgrounds measured transparent, zero language leak, sitemap updated, parity 22/22, package rebuilt.

→ Read the FAQ

SUPER PRINT v1.7.487

Released September 19, 2026

The technical zone of the home page is now one part you can scan: eight blocks, one shared bar, a different treatment inside each.

📖 In the order of the tools, not the order of the chapters new

  • Two blocks open (the applications, the fifteen tools), then six blocks that announce themselves by their title and open in one click.
  • Each block has its own style (ink for prepress, four columns for presses, a framed table, two facing columns, chips, screenshots) and the old chapter intros now appear inside the block.
  • The old anchors still land on the right block and a folded block opens by itself through an anchor; the following chapters were renumbered.

🐛 Two defects fixed on the way fixed

  • A class rule used to clamp the card text beat the rule hiding the other languages, so the fifteen descriptions showed in three languages at once; all six combinations are now covered with !important and the leak is measured at zero.
  • The prepress block kept a light grid behind its light text (backgrounds neutralised) and the band button was white on white (readable now, inverting on hover).

SuperPrint 1.7.487 — checks: eight blocks, two open, trilingual bars, zero leak in FR/EN/JA, original content in each block, anchors preserved, no JS error, parity 22/22, package verified.

→ Open SuperPrint

SUPER PRINT v1.7.486

Released September 19, 2026

Two subjects on the home page: the FAQ showed all three languages at once, and the page carried too many chapters. It now follows the navigation bar order.

🌐 One language at a time fixed

  • The site hid English and Japanese with a weak rule (specificity 0,1,0) that any class rule (0,1,1) beats; strong rules existed for English and Japanese, but not for the default language, French.
  • Measured: the twenty summaries of the three languages appeared at once inside the same FAQ panel, and the template grid mixed two English kickers and four English headings into the French text.
  • The missing rule is added (0,2,1), without !important, so the EN / FR / JA buttons keep their own and stay visible. Checked afterwards: zero leak in the three languages, on the home page and on the help page.

📖 The home page follows the navigation bar new

  • Thirteen chapters in a row was too much: what the navigation offers stays visible, and the rest announces itself by its title and folds away behind a “Read on”.
  • Nothing is deleted or moved, folded content stays in the page (findable with Ctrl+F, readable by search engines), and a folded chapter opens by itself when reached from a link or an anchor.
  • Measured: visible text 17,312 → 12,892 characters in French (−26 %), height 16,678 → 13,214 px (−21 %); header, hero and template grid untouched (133,649 characters compared, all identical).

🧰 The trap met along the way fixed

  • The home already had a generic fold that scans every [data-fold] and hides the button’s parent when the target has nothing to fold; my chapter folds used that name and vanished. They now use data-chapitre.

SuperPrint 1.7.486 — checks: zero language leak in FR/EN/JA, six folds closed at start-up and opening correctly, hidden anchor opening the right chapter, original folds still working, header and hero untouched, parity 22/22, zip rebuilt and verified.

→ Open SuperPrint

SUPER PRINT v1.7.485

Released September 19, 2026

Three subjects: the AI assistant can no longer lock the editor, the Tabulation tool is rebuilt, and three interface details are fixed.

🤖 The local AI can no longer lock the editor fixed

  • The “generating” flag could stay stuck: endless spinner and every following click refused without a message. A reset, a 3-minute watchdog and a forced restart past 45 s are in place.
  • Element types such as rect, textbox or oval were dropped as “unauthorised”; they are now translated to a valid type.
  • The prompt asked for userImage since 1.7.174 and the generator handled it, but the validator refused the type, so the branch was dead. It is accepted now.
  • The AI Studio also accepts image synonyms (img, photo, picture) and converts them to image.

🎯 The Tabulation tool is finally usable fixed

  • Tab in a block being edited did nothing: Fabric stopped the event before it reached the document and the browser moved the focus out. The listener now works in the capture phase; missing tab stops are enabled at the default 10 mm step.
  • boot() runs twice, so the key listener was installed twice and each press inserted two tabs; it is installed once now.
  • Fabric does not move the caret when inserting; it is now placed right after the tab, otherwise the next character landed before it.
  • The ruler is not evented and its markers lived inside it, so they could not be grabbed. Each tab stop is now an independent marker, draggable on the ruler with a ½ mm magnet and live reflow; Escape cancels.
  • The panel shows the target block, a status line, the next free position, and a “✓ Validate” button that saves and confirms.
  • Verified on a 4×4 block (40 mm left, 100 mm right, 130 mm decimal) exported with vector typography: 92 characters compared one by one, maximum deviation 0.01 pt, and no trace of the ruler markers.

🎨 Three interface touches fixed

  • The Select tool no longer shows a grey “active” background at start-up; it comes back as soon as Select is really chosen.
  • The paper & CMYK simulation tool is hidden while the left bar is collapsed, and available as soon as it is open.
  • The Tab shortcut wording (FR/EN/JA preferences, both documentation pages) now says the key inserts a tab.

SuperPrint 1.7.485 — checks: AI fix with a real key, Tabulation validated by 9 browser cases, tabbed PDF compared character by character, parity 22/22, zip rebuilt and verified.

→ Open SuperPrint

SUPER PRINT v1.7.484

Released September 18, 2026

The local package launcher no longer shows the “Install locally” box (command, WIN / MACOS / LINUX tabs, copy button): once installed, it has no reason to be there.

🧹 The package launcher no longer offers to install itself fixed

  • Removed: the “or install locally” separator, the “Install locally” box, the command, the OS tabs and the copy button. The five destinations stay.
  • The removal is done at generation time, so the box never comes back; the site page keeps it, where it makes sense.
  • Measured trap: applyOS() relied on the tab and threw, killing the rest of the page script; an early return was added and the page is now error-free.

SuperPrint 1.7.484 — local package. Checks: parity 22/22, 13 markers consistent, no leftover of the install block, page opened in the browser (0 error, 5 destinations at 200), zip rebuilt and verified.

→ Open SuperPrint

SUPER PRINT v1.7.483

Released September 18, 2026

The variable-font panel sliders now use the house slider drawing (thin track, black fill, white thumb); the detached widget goes to 320 px, and both tracks finally show the same value. The Excel library is no longer loaded from a CDN.

🎚️ Sober sliders, the house ones new

  • The pink accent is gone; the sliders now use exactly the corner/CMYK slider drawing (4 px rounded track, black fill, white thumb ringed in black).
  • The bar is filled over the axis range (a 300–700 weight axis starts at 25 %, not 57 %), live, in the panel and in the widget.

🧩 The detached widget breathes fixed

  • The widget had the historical 200 px template (sliders crushed): it now has its own 320 px layout, and its duplicate title is gone — the generic hiding rule was losing against the column’s display: block !important.
  • Measured defect: the widget slider kept the raw dragged value (83) while the panel snapped it (87.5 → 88), so the two bars showed 32 % and 52 % for the same value. Every copy is now realigned on the original slider.

📦 The local package keeps its promise fixed

  • The audit found the Excel library was CDN-first: it is now vendored in the application and loaded locally first (CDN only as a fallback); the studio does the same for Excel and its local AI engine.
  • An audit script checks the six pages link by link with the exact file case (68 local links, 0 problem), and the chain was exercised from the extracted zip: 5 pages, 0 console error, 66/66 URLs at 200, editor boots.

SuperPrint 1.7.483 — app and local package. Checks: parity 22/22, node --check clean, 13 markers consistent, sliders measured (25 % fill on a 300–700 axis, no pink), widget at 320 px, panel and widget bars identical after a drag, ink width 119 → 102 → 85 px, link audit green, zip rebuilt and verified.

→ Open SuperPrint

SUPER PRINT v1.7.482

Released September 18, 2026

The variable-font control becomes a full panel under the B / I / U styles (detachable as a widget), and the width setting now shows on screen as well as in the PDF.

🎛️ A real panel, detachable as a widget new

  • The control is now a column panel under the B / I / U styles, with a full-width separator above and below, shown only for fonts that declare axes.
  • The “+” detaches it as a floating widget (movable, like the other right-hand panels); the “Variable font” button does the same, and both stay in sync.
  • The button is smaller (10 px) and breathes vertically; only the axes the preview can really drive get a slider, the others are listed for information.

🎯 The preview applies the width, and the PDF embeds the instance fixed

  • Measured cause: ctx.font = … resets font-stretch, and Fabric re-assigns it right before drawing each chunk — so the width was honoured by the metrics but not by the drawing. A fix on the drawing context restores it.
  • The width is snapped to the rendering step and that value is stored, so preview and PDF use the same instance (measured: 118.48 px on screen = 118.48 pt from the instancing engine).
  • The “Finished format” PDF export now embeds the configured instance (measured: 119.36 pt at width 75 % instead of 164.45 pt by default; ink 17 436 → 26 292 px between weight 300 and 700).
  • Two neighbouring fixes: no more fake bold on top of the instance, and the crop-mark export rasterises those blocks at the exact preview rendering.
  • Verified on the real writers and loaders: .sp / .json round-trips and the AI Studio trip (app → studio → app). The internal font key takes the setting as an optional argument, so no existing document changes behaviour.

SuperPrint 1.7.482 — app and local package. Checks: parity 22/22, node --check clean, 13 markers consistent, panel and widget exercised, width measured on screen and in a real PDF, .sp/.json/studio verified, zip rebuilt and verified.

→ Open SuperPrint

SUPER PRINT v1.7.481

Released September 18, 2026

Tab stops are marked on the ruler (line, downward arrow, type symbol), the Tabulation panel answers again, and a Variable font button has been added.

📏 Tab stops show on the ruler, and the panel answers again fixed

  • Each stop shows a vertical line, a downward arrow and the symbol of its type, in a strong colour.
  • The checkbox, “+ Stop” and “Clear” looked dead: the panel searched the last remembered workspace, which the app overwrites. It now asks every workspace and keeps the one with a selection.
  • The panel is wired once on its container (it survives a rebuild) and the buttons are greyed out with a message when nothing is selected; the row “×” removes the right stop.

🔤 Variable font: weight, width, slant new

  • A “Variable font” button appears for imported fonts that declare axes (real fvar reading) and opens a popin with one slider per axis.
  • The font is re-registered with its ranges so the browser really instances the axis (measured: ink 3482 / 4666 / 5997 for 300 / 400 / 700; width 524 → 386 condensed). The setting travels with the document.
  • Stated limit: the “Finished format” PDF export embeds the font as-is, so the PDF uses the default instance (screen, preview and document are correct).

SuperPrint 1.7.481 — app and local package. Checks: parity 22/22, node --check clean, 13 markers consistent, ruler verified on screen, panel exercised, variable font measured, zip rebuilt and verified.

→ Open SuperPrint

SUPER PRINT v1.7.480

Released September 18, 2026

Tab stops and columns never reached the exported PDF (a column announced at 130 pt came out at 43.8 pt): both export chains are fixed. The local package also gets a proper entry page and a single studio entry.

🖨️ Tab stops and columns finally reach the PDF fixed

  • Both chains drew the line in one run, so stops only existed on screen: a 130 pt column came out at 43.8 pt. The pen advance now uses the editor's own function — measured 0 / 130 / 220.4 / 313.3 pt.
  • The second chain (used when “Finished format” is unchecked) also lost the column offset on justified lines: they started at 0 instead of the block's left edge.
  • Known limit: that second chain re-wraps its own lines, so column 2 of a two-column block can stay empty. The default pdf-lib chain is exact and is the one used for print.

📦 The local package opens on its launcher, with a single studio entry new

  • The installed package's home page was the old pre-home with no version number, always behind: it is now the website launcher, kept up to date.
  • A single “AI Studio” row, the right one: the application's studio already runs locally (WebLLM on your machine, no key) or with a Groq key. The old studio.html duplicate is removed from the package.
  • A map of the package (CONTENU.txt) sits at the root of the zip: where everything is, plus the local addresses.
  • Verified in a browser served by Vite as after installation: 5 rows, all links answer, subtitles in FR/EN/JP.

🧰 Legacy studio engine: build error fixed, package checked end to end fixed

  • Found during a real install: src/main.js declared const effEl then assigned to it, so the compiler rejected the file, Vite's dependency optimisation failed and npm run build was broken. Fixed; the duplicate page was then removed.
  • The package now builds a single page: vite.config.js declares index.html only, and the build passes.
  • Installer test: the zip was rebuilt, extracted into a clean folder like npx superprint does and served by Vite — launcher, app (badge v1.7.480), local studio and SuperTyPo open with 0 console errors; every file compared byte for byte.

SuperPrint 1.7.480 — app and local package. Checks: parity 22/22, node --check clean, 13 version markers consistent, .sp/.json round-trips conformant, tab-stop and column PDFs measured in both chains, zip verified file by file.

→ Open SuperPrint

SUPER PRINT v1.7.479

Released September 18, 2026

The sidebar's small / large margin settings are applied again (including double pages and the last page of an even document); a graduated tab-stop ruler now sits above the text block; a guide-restore loop is fixed; and the 22 undocumented entries (1.7.458 → 1.7.478) are covered.

🖨️ “Small / large margin” settings are finally applied fixed

  • One margin was stored under two names at once (inner/left and outer/right): the sidebar wrote left/right while the engine read inner/outer first, so the value was discarded. A margin now has one slot and two names — measured 8 of 10 checks failing before, 10 of 10 after.
  • On a double page, changing a margin from the sidebar replaced the sheet's two mirrored guides with a single rectangle; the guard now compares a signature of all four margins.
  • A page alone on the left (last page of an even document) used right-hand geometry, so its two margins were swapped — it is now a verso: 32 mm on the outer edge, 8 mm on the fold side.
  • Vocabulary as applied: the small margin is the inner one (fold side) and the large margin the outer one (trimmed edge); on a double page the small margin swaps sides with the page parity.

📏 A graduated ruler above the text block to place tab stops new

  • A ruler graduated in millimetres appears just above the block: ticks every 10 mm, numbers every 50 mm, the default step in short ticks, and one symbol per tab stop (left, right, centred, decimal).
  • The ruler is attached to the block: it follows zoom, dragging, resizing and rotation, and is repositioned rather than rebuilt.
  • It shows while the Tabulation window is open or when the selected block carries tab stops, and is flagged “do not export”: it never enters the document, the PDF or the PNG.

🐛 “Guide removed accidentally, restoring…” no longer runs away fixed

  • The guide-restore safety net expected 8 guides where a healthy sheet holds 7, so it restarted every 100 ms endlessly and the tab became unresponsive. Deliberate removals are now flagged and the threshold fixed: 0 warnings measured.

📚 What the 22 caught-up releases contain (1.7.458 → 1.7.478) new

  • 1.7.458 – 1.7.459 — text block columns (1 to 20, width, gutter) and margins per page side, with persistence verified in .sp, .json, the autosave and SP213 Studio.
  • 1.7.460 – 1.7.462 — text wrap around a shape in both PDF exports, the TAB key, and the collapsed sidebar divider restored to full width.
  • 1.7.463 – 1.7.467 — reworked home page: three centred entry cards, larger logotypes, a 43-template carousel with direct launch, no startup pop-in from a template link, trilingual legal and privacy pop-ins.
  • 1.7.468 – 1.7.472 — the home page becomes the superprint.cc entry page (per-language canonical/hreflang, rebuilt sitemap), margins named small/large, indents in columns, simplified print cursor, “Help us” page, fixed mobile menu, authors section, regenerated help page.
  • 1.7.473 – 1.7.478 — a template opened from the home page keeps its photos, simplified home page, “Take part” renamed everywhere, pixel-adjusted collapsed-sidebar logotype, preloaded critical fonts, refreshed robots.txt and structured data.

SuperPrint 1.7.479 — app and local package. Checks: parity 22/22, node --check clean, the 13 version markers consistent, local zip rebuilt and verified. This catch-up covers 1.7.458 → 1.7.478.

→ Open SuperPrint

SUPER PRINT v1.7.457

Released September 17, 2026

This release turns the text block into a true text frame (frame options and tab stops), makes every sidebar section detachable, and fixes a series of silent losses plus an abnormally heavy black & white imposition.

🧱 Text frame options, as in traditional layout software new

  • A real Text frame options panel replaces a duplicated “Alignment” section: top and bottom inset, vertical alignment, left / right / first-line indents on their own row, and paragraph spacing.
  • These settings are stored in .sp, .json and the autosave, and carried through the SP213 Studio.

⇥ Tabs and tab stops new

  • A new Tabulation entry in the guides menu opens a tab-stop pop-in: left, centre, right, decimal, with a leading step.
  • Tabs are hooked into the measurement engine itself: the \t box advances to the next stop (width and kerned width), so justification, line breaking, block width and PDF/PNG export all stay correct.

🧲 Detachable sections new

  • Every sidebar section title carries a + / − button: the section opens in a floating panel you can place anywhere, driven by the original controls.

🖼️ Text: wrap, last line, chaining fixed

  • Text wrapped around a shape could come out over the obstacle in the PDF (the wrap only lives in the line cache). Both exports now force a re-layout.
  • A block's last line is never cut again (measured: 4 lines shown, 5 drawn, 7.5 px of ink outside). A line that does not fit is now reported by the overflow indicator, never half-drawn.
  • The chaining badges now follow the block while you drag it (a reopened document had no tracking at all).

💾 Saves and formats: no more silent loss fixed

  • Undo / redo now covers the page format, the margins and the bleed (changing the margin was not undoable at all).
  • The Web3 / IPFS save and the public API were dropping spot colours (Pantone) and embedded fonts.
  • SP213 Studio now carries frame options, indents, tab stops and soft line breaks (verified with a real round trip).
  • 🌍 The “Bulk text paste” pop-in is now fully translated (French, English, Japanese).

🖨️ Black & white imposition: ÷ 220 fixed

  • A black & white imposed PDF weighed tens of megabytes (raw uncompressed pixels). It now uses the same image pipeline as the classic export: 304 KB against roughly 50 to 67 MB for the same HD sheet.

⚖️ Proprietary licence new

  • SuperPrint moves to a proprietary licence (LICENSE files, updated READMEs and npm page, wrong “Open Source” badges removed).

SuperPrint 1.7.457 — app and local package (npm launcher 1.0.97). Release checks: parity 16/16, recursive sync 0 different file, node --check clean, local zip compliant.

→ Open SuperPrint

CUT THE FLOW v3.10.1

Released September 17, 2026

First of all, we owe you an apology. Since early August, CUT THE FLOW exported out-of-sync videos — sound ahead of the image — with stutter and sometimes a black frame between clips. The fault was in our code, and it stayed there far too long.

🎯 The audio/video drift — found, measured, fixed fixed

  • During export, the source kept playing in real time while encoding ran slower, so the app drew an image up to two seconds into the future. Measured: average error 878 ms, worst case 2 080 ms.
  • Every frame is now extracted exactly at its position: result is 0.0 ms error over all 390 frames.
  • The stutter came from the same place: one frame in three was duplicated or dropped (20 fps instead of 30). Now: zero duplicates, zero drops.
  • The black frames are handled separately: the last valid image is carried over instead of black, and the preview no longer cuts at all.

🎞️ Three new export engines, frame-accurate new

  • MP4 (H.264 + AAC), WebM (VP9 + Opus) for lighter files, and MP3 (audio only) encoded with LAME, the encoder professional software uses.
  • All three encode off real time: the output is identical on every machine and matches the preview.
  • MP3 accounts for the format's own encoder delay (23 ms) so audio landmarks land at the same instants as MP4.
  • Everything happens inside your browser: nothing is uploaded, no account needed.

✅ Stability, proven by a permanent test bench new

  • We built a control edit replayed automatically on every build: 13 s, 5 tracks, all three formats, project save/reopen, then verified with ffmpeg.
  • Last run: 29 of 29 checks passed — 390/390 frames, 0 ms sync offset, zero frames differing from the source, no black frames at cuts.
  • In practice: if a future build breaks sync, the bench reports it immediately, before anything ships.

🧭 While editing: simpler and smoother changed

  • The export dialog is down to three cards (MP4, WebM, MP3), resolution and frame rate. The mode tabs and the engine picker are gone.
  • Your files' frame rate is recognised properly: a 30 fps file is no longer reported as 29.97.
  • The chosen export format is remembered, including inside the project file (.ctf and .json).
  • Audio can be unlinked from video, and track volume, fades and mute are reproduced as-is on export.

🤖 AI assistant: DeepSeek 4.1 Flash first new

  • DeepSeek is now the default provider, first in the list, with DeepSeek-V4.1-Flash pre-selected.
  • Two providers added: OpenRouter and Groq, with access to free models.
  • Models brought up to date (GPT-5.1, Claude 4.5 family, Gemini 2.5) and one key per provider.

🎨 A sharper design changed

  • The top bar, panels and timeline move to true black; track lines, time grid and playhead are kept.
  • The track M / S buttons are now outlined on black; active mute/solo keep their red/orange colour.

🛡️ An end to silent failures fixed

  • An export started in a background tab stopped dead with no message; the app now warns you clearly.
  • If the encoder stalls, the export fails after 20 seconds with a clear message.
  • Offline mode now serves the right files instead of old versions of the code.

🔧 Technical

  • Application version 3.10.1; saved projects now carry appVersion and the export format.
  • Control edit: MP4 and WebM 390/390 frames, extraction 0 duplicates / 0 drops / 0.0 ms, audio landmarks at the expected instants in all three formats.

In practice: reopen your edit, export again and compare. If anything still misses, write to us — we can now reproduce and prove it.

→ Open CUT THE FLOW


SUPER PRINT v1.7.455

Released September 16, 2026

The text block is the primary tool: this release makes its frame genuinely stable, its export faithful to the pixel, and the app → SP213 Studio → app round trip lossless. One version only: the work of the 32 intermediate builds is summarised below.

🧱 The frame keeps its size fixed

  • Changing the size or the leading no longer resizes the box: measured, a 300 × 160 px block goes 14 → 30 → 60 pt and back, always 166.62 px. An auto-height block still follows its content.
  • The last line is no longer sliced: the mask now snaps to whole lines (it used to cut 6.95 px under the previous line) and leaves a small margin below the last line.
  • The leading no longer shifts around an enlarged word when you click or move the block: the line height is computed immediately (an internal cache reused the previous layout's heights).
  • A word can no longer stick out of the box: the layout only measured the block-level letter spacing, while it applies per selection (measured: a 331 px line inside a 260 px block, +71 px outside).

🖨️ Faithful PDF export fixed

  • A bigger word no longer enlarges the whole block: the export took that single word's size as the block size (measured: 15 text blocks at 30 pt instead of 14 pt).
  • The last line is always in the PDF: 5 lines on screen produce 5 lines in the file (one line was lost in every case measured, whatever the block height).
  • The bleed is no longer applied twice in CMYK: the whole page shifted by 5 mm down and right when bleed was requested without crop marks. After the fix: +8 pt, exactly the 3 mm of bleed.
  • Preview and PDF typography are now checked line by line: difference ≤ 1 pt, and hyphenation breaks at the same place in both (full French rules: never after an elision apostrophe).

🤖 SP213 Studio: the round trip loses nothing fixed

  • The block returns to the editor with exactly its original size and position (28.5039 / 42.5197 px and 300 × 120 px in our test) and gets its fixed frame back: without that marker the block became automatic again and resized at the first typography change.
  • The enlarged word (per-character styles) is preserved: it came back at the block size after a Studio round trip.
  • The original colour mode is preserved: a CMYK document came back as RGB, so the export dialog no longer offered “CMYK + Pantone”.
  • On mobile, the bar under “OPEN IN SUPERPRINT” is now entirely white (the dark theme stays dark).

💾 .sp and .json files fixed

  • Opening a project with “Open from computer” restored neither spot colours (Pantone) nor embedded fonts: a reopened document came back without its inks. Fixed and verified (registry went from #FCEE21 to the file's real ink).
  • Long words and hyphenation now survive save and reopen: breakWords and splitByGrapheme were not serialised anywhere, so the first layout after reopening stopped breaking long words.
  • The manual has been brought up to date: it described .sp as a ZIP archive although it is a plain JSON file (images and fonts embedded), and it carried stale line numbers — all 214 rows of its function table are regenerated from the real code.

📚 Since 1.7.422 — what the 32 intermediate builds delivered

  • Text: exact size and leading in the panel, last line never clipped, justified last line no longer stretched, no word sticking out, complete French and English hyphenation, truncated-block warning at export, per-character styles preserved.
  • Print: CMYK export + Pantone spot colours as their own named layer (RGB + Pantone too), unified crop marks, large formats (A0 and beyond, imported PDFs included), greyscale, PDF/X-3, ICC profiles, selectable vector text, fully vector pages.
  • Import: InDesign IDML (rotation, polygons, opacity, dashes, groups, linked or embedded images, real fonts), Illustrator/EPS, Word (structured text and extracted images, whole document processed), PDF (text and images), RTF (layout, margins, columns, headers), OpenDocument, LibreOffice .sla.
  • SP213 Studio: DeepSeek V4.1 Flash, targeted reworking of the existing layout (it no longer starts from scratch), correct spreads and imposition, up to 300 pages, generated or attached images, on-screen typographic keyboard, glyphs, and real typographic reasoning (scale, columns, hyphenation).
  • Library: 43 templates (21 English, 22 French) — magazines, 2027/2028 calendars, CVs, books, reports, menus, cards — with real previews, search, family and format tags.
  • SuperTyPo: opening a block's typography shows the font's entire character set, and the block's own font is handed over to the glyph editor (English interface on start-up).
  • Ergonomics: width-fitted zoom, eyedropper opening its picker under the button, four clear AI panel steps, ⌥ shortcuts for the tools, on-screen keyboard, and an interface that now reports what it does (truncated blocks, dropped pages, export warnings).

SuperPrint 1.7.455 — app and local package (npm launcher 1.0.96). Detailed notes for each intermediate version are documented further down this page.

→ Open SuperPrint

SUPER PRINT v1.7.456

Released September 16, 2026

This release sharpens the top bar, puts the magnifier right after the AI assistant and turns Find & replace into a real typographic correction tool.

🧭 Top bar: squares, the magnifier after the AI changed

  • The four icon buttons are true 32 × 32 squares (they used to be 28.1 / 31.3 / 29.1 px wide for 32 px tall).
  • The vertical rule is gone and the magnifier is now borderless, at its neighbours' colour, 1.8 px stroke.
  • The magnifier sits right after the AI assistant; the real shortcut is Ctrl+F.
  • “Replace” is now black like “Replace all”, on the same row; the obsolete Automatic tab is gone.
  • Dark theme fixed: the active tab was black on black (hard-coded colours); now theme-aware.

🔍 Find & replace: advanced options new

  • An “Advanced options” row widens the window (400 → 470 px): match case, whole words, regular expressions and scope.
  • Eleven special characters insert in one click (non-breaking and narrow non-breaking spaces, discretionary hyphen, forced line break, tab, typographic apostrophe, French quotes, dashes, middle dot, ellipsis).
  • Three ready-made French typography checks: ordinary space before ; : ! ?, repeated spaces, space before a comma or a period.
  • The matcher was rewritten (real match length) and the panel keeps the screen width on mobile.

📚 Everything SuperPrint gained since 1.7.422

  • Text — exact values, a frame that keeps its size, last line never clipped, no word sticking out, complete FR/EN hyphenation, per-character styles preserved.
  • Print — CMYK + Pantone spot colours in their own named layer, crop marks, large formats, greyscale, PDF/X-3, ICC profiles, vector text.
  • Import — InDesign IDML, Illustrator/EPS, Word (text and images), PDF, RTF, OpenDocument and LibreOffice.
  • SP213 Studio — DeepSeek V4.1 Flash, targeted reworking, correct spreads and imposition, up to 300 pages, images, glyphs and typographic reasoning.
  • Library — 43 templates (21 EN, 22 FR) with real previews, search and tags.
  • SuperTyPo — the font's entire character set, and the block's font handed over to the glyph editor.
  • Ergonomics — width-fitted zoom, eyedropper, four-step AI panel, ⌥ shortcuts, on-screen keyboard, clearer warnings.
  • And this 1.7.456 — square top bar, magnifier after the AI, advanced search options, Automatic tab removed, tab logos, dark theme fixed.

SuperPrint 1.7.456 — app and local package (npm launcher 1.0.97). Release checks: parity 16/16, sync 0 different, 102 handlers with none orphaned.

→ Open SuperPrint

SUPER PRINT v1.7.422

Released September 18, 2026

Choosing an attachment role now shows three columns on laptop and desktop, with one icon per choice — and the window follows the dark theme.

🧩 Three columns, three icons new

  • On laptop and desktop (viewport ≥ 721 px) the three choices sit side by side with equal width and height — measured: 206 px per column in the studio, 233 px in the app.
  • On phones and tablets the stacked list is kept, icon left of the label — checked at 412 px.
  • Dark theme: the card switches from rgb(255,255,255) to rgb(30,30,30) with light text when the dark theme is active.

SuperPrint 1.7.422 — same roles, same wording and same behaviour in the studio and in the app; only the layout changes with the screen size.

→ Open the SP213 studio

SUPER PRINT v1.7.421

Released September 18, 2026

Attachment roles reach the SuperPrint prompt box — and on the way, a joined photo was being read as text.

🗂️ Same roles inside the app new

  • Dropping a file into the SuperPrint AI bar opens the same pop-in as in the studio — with the same clickable badge on the chip to change your mind.
  • The instruction is written into the context sent to the engine, so behaviour is identical on DeepSeek, OpenAI, Groq, OpenRouter and the local WLLM.
  • Reminder: nothing to choose if you do not want to — the default stays “import into the layout”, as before.

🖼️ A joined photo was read as text fixed

  • Measurement: a 240 × 120 px PNG dropped into the app became a type: text attachment of 183 characters — the engine received binary bytes instead of an image to place.
  • After the fix: type: image with its data URL and pixel size — the chip shows 240 × 120 px and the context sends IMAGE 0.

SuperPrint 1.7.421 — checks: pop-in before reading, badge re-read, role stored on the attachment, instruction confirmed in the context, image attachment verified.

→ Open SuperPrint

SUPER PRINT v1.7.420

Released September 18, 2026

Every attachment now gets a declared role when you drop it — and the PDF export no longer turns an imported SVG into an opaque block.

🗂️ A role for every attachment new

  • On import, a pop-in asks what the AI should do with the file: import into the layout (its text and images must be typeset), use as a template (its structure and hierarchy are followed, content comes from your request) or context only (used to understand topic, tone, wording — nothing from the file may appear).
  • The role is restated to the engine on every request: the instruction travels inside the prompt, so every provider behaves the same — DeepSeek, OpenAI, Groq, OpenRouter and the local WLLM. Checked in the request actually sent: ATTACHMENT ROLE: CONTEXT ONLY….
  • A badge on the chip (right of the file name) shows the role and lets you change it at any time, without removing the file.

🧩 Imported SVG: no more block hiding the layout fixed

  • An SVG containing text (the usual case) was flattened into ONE image in the PDF export: measured 834 × 500 px, no traces, with the file's white background on top — hence the “blocks” hiding everything else.
  • Those mixed groups (shapes + text + image) are now exploded during export — the very mechanism of the Ungroup button — and rendered natively: after the fix, zero images, shapes as traces with their curves and the SVG text as real text in the PDF.
  • If your SVG itself contains a background rectangle (white artboard), it is kept as is: remove it in the source application, or ask us for an “ignore the SVG background” option.

SuperPrint 1.7.420 — checks: pop-in verified before the file is read, badge re-read, instruction confirmed inside the sent request, PDF export re-audited (zero images).

→ Open the SP213 studio

SUPER PRINT v1.7.419

Released September 18, 2026

Three measured fixes: vectorised text no longer comes out upside-down, EPS import draws genuine arcs, and a rotated shape stays vector in the PDF.

🔤 Vectorised text: upright and faithful fixed

  • The cause: font outlines already come in screen coordinates (Y downwards) and a second flip was applied. Measurement before: text ink 377..410 px, glyph ink 410..444 px — an exact mirror around the baseline (+32 px), i.e. letters upside-down.
  • After the fix: −1 px vertical and 0 px horizontal offset, ink overlap (IoU) 0.85 with the text — and no vertical drift for a text rotated by 20°, a text wrapped over two lines (offset 0) and a text with wide letter spacing (0.87).
  • .sp file and PDF export: geometry is preserved when saving and when reopening (IoU 0.987, zero offset), and the PDF writes the glyphs as real traces aligned on the text baseline — checked against the actual PDF stream reference (402.20).

📐 SVG and EPS: complete reading fixed

  • EPS: arcs. The arc and arcn operators were just a line drawn to an arbitrary point — an 18 px radius circle came out as 118 × 80 px. They now produce real arcs (segments of at most 90°, converted to curves): measured after the fix, 36 × 36 px with 4 curves. Rounded corners via arct/arcto are handled too.
  • Imported SVG: rotations stay vector. Every rotated shape (rectangle, circle, ellipse) used to be flattened into an image in the PDF: measured, a rectangle under rotate(-15) came out as /Image-… Do, 35.4 × 28.3 pt. It is now converted to a path: PDF after the fix, 0 images, and the rotated rectangle lands at 102.94 × 88.30 pt — exactly the expected analytical box.
  • SVG import check (linear gradient, circle, curve, rotated group, text, viewBox): all six elements arrive with the right colours, and the group size honours the viewBox (200 × 100). .sp round trip of the imported group: preserved.

🛠️ Technical

  • Offline cache renamed (superprint-shell-v1.7.419-vectorisation-fixe), main file renumbered (?v=20260915-v419-vectorisation-fixe) and the EPS module reloaded. The npm launcher stays 1.0.95 (application 1.7.415 minimum).

SuperPrint 1.7.419 — every point in this note is a measurement taken in the browser, not an assumption.

→ Open SuperPrint

SUPER PRINT v1.7.418

Released September 18, 2026

Text vectorisation is repaired end to end: right-click now produces real vector outlines — and PDF export writes them as traces, not as an image. The studio keyboard also follows your feedback.

✒️ Vectorisation: real outlines, no longer a text block fixed

  • Cause 1: since the libraries became lazy (1.7.323), the font engine was no longer loaded when you right-clicked. Vectorisation then fell back silently to a plain, still editable text block — exactly what you described. The engines are now loaded on demand, and a failure is reported instead of hidden.
  • Cause 2: the result was grouped, and the PDF export “group” branch flattened everything into an image (1309 × 154 px for the whole word). Measured on the produced file: /Image-… Do instead of outlines. Vectorisation no longer groups, and a group made only of shapes is exported as native traces.
  • Geometry: glyphs follow your actual lines, including the frame's automatic word wrap (a word too wide is shown on two lines: it used to be vectorised on one, giving a measured +36 px drift). Baseline, size, letter spacing and rotation now match the preview.
  • Export verified: the PDF of vectorised text contains 201 curves, 0 images and 0 text — curved letters stay exact curves. Cross-check: the glyphs land at exactly the same abscissa as a normal text (104.88 in both cases, in RGB as well as CMYK).

⌨️ Studio keyboard: your three points fixed

  • “The keyboard letters are too high”: the keyboard is now anchored to the bottom of the screen, like a real keyboard — measured on a 905 px viewport, only 18 px remain under the panel.
  • “Put the TXT and the attachments in that space”: the prompt is still written in very large type, and your attached files are now mirrored just below (thumbnails and names, read-only) — you see everything you are about to send without leaving the keyboard.
  • “I don't see the letters light up”: the on-screen key now lights up when you type on the physical keyboard — letters (upper and lower case alike), Space, Backspace, Enter and Shift. Verified: 6 checks out of 6 conforming, lit on keydown and cleared on keyup.

🛠️ Technical

  • The offline cache is renamed (superprint-shell-v1.7.418-vectorisation-clavier) and the main files get a new version number (?v=20260917-v418-vectorisation-clavier): without that, your browser would have kept serving the old version.
  • No change for existing documents: texts already vectorised and grouped by earlier versions are also exported as traces, without redoing the vectorisation. The npm launcher stays 1.0.95 (application 1.7.415 minimum).

SuperPrint 1.7.418 — measured in the browser: 13 vectorised glyphs with no text block left, 201 curves and zero images in the PDF, keyboard checked at 1,600 px wide and 905 px tall.

→ Open SuperPrint

SUPER PRINT v1.7.417

Released September 17, 2026

The SP213 studio gets an on-screen keyboard: right of the microphone, a button opens a large keyboard in the centre of the interface, and your prompt is written in very large type just above it. The rest of the interface stays visible behind — typing becomes comfortable, even with no physical keyboard.

⌨️ An on-screen keyboard, right of the microphone new

  • The button sits between the microphone and the Images box, with the same size as its neighbours (30 × 30 px, line icon, square corners). One click opens the keyboard, a second closes it; Escape and a click on the backdrop close it too.
  • The keyboard opens centred in the interface: 5 rows of 62 px square keys on a desktop screen, 46 px on a 412 px-wide phone. The studio stays visible around and below it — a very light scrim, no blur.

🔠 Your prompt, written in very large type new

  • Text is displayed just above the keys, at 42 px (22 px on mobile): it is a teleprompter that always keeps the end of your text on screen, with a blinking block caret at the writing position.
  • Each key writes into the real prompt field (at the caret) and fires a normal input event: auto-grow, draft saving and the character counter keep working exactly as with a physical keyboard.
  • The counter follows typing live — including voice dictation, re-read every 400 ms while the keyboard is open.

🔣 Two layers: Letters and Glyphs new

  • Letters layer: full AZERTY, plus a row of 10 accents and ligatures (é è ê à ç ù â î ô œ), the apostrophe and the double quote.
  • Glyphs layer, toggled from the left of the space bar: digits, punctuation, currencies (€ $ £), code symbols (@ # & * + = ( ) [ ] { } | ~ ^ °) and French typography « » — … §.
  • Sticky shift: one click capitalises the next letter, two clicks lock it (the key stays lit) — and accents move to capitals too (é → É).
  • Delete removes the selection if there is one, otherwise the previous character. Space and Send do exactly what they say: sending goes through the studio's real handler, then the keyboard closes.

✅ Measured in the browser verified

  • 10 checks, 10 conforming: 43 keys in 5 rows; a z e r t → field and large text azert; layer switch → first key 1, « » — present; 1 « » — → azert1«»—; Shift + b o → Bo; Delete → B; Escape closes the keyboard and clears the button state.
  • Light and dark themes checked on screen, along with the 1,600 px (desktop) and 412 px (phone) widths. Web / local mirror parity 16/16.

🛠️ Technical

  • The keyboard is written into the studio (sp213-studio.html): no external dependency, no build step — 12 edits, ~6.8 kB of CSS and JS in the house style (square corners, uppercase letterspaced labels, IBM Plex Mono).
  • The Send key dispatches a genuine Enter keydown instead of calling into the studio: no code path is duplicated, behaviour stays identical to a physical keyboard.
  • The offline cache is renamed (superprint-shell-v1.7.417-clavier-studio) and the main file gets a new version number (?v=20260917-v417-clavier-studio): without that, the studio would have kept being served from the old cache. The npm launcher stays 1.0.95 (application 1.7.415 minimum) — no republish needed.

SuperPrint 1.7.417 — the keyboard was checked on screen in light, dark and mobile widths; validation on a real touch device is still to be done.

→ Open the SP213 studio

SUPER PRINT v1.7.416

Released September 16, 2026

The eyedropper in the sidebar finally opens the real system colour selector — the one you get by clicking the colour itself: the “Show Colors…” popup and then the “Colors” window.

🎨 La pipette ouvre le sélecteur natif corrigé

  • Measured before, on simulated Safari (EyeDropper missing): clicking an eyedropper opened SuperPrint's internal window and no native selector was ever requested — 0 calls to showPicker(), 0 clicks on a colour field. That is precisely the window you did not want.
  • After: the eyedropper triggers the channel's own colour field — exactly the manual gesture — so the selector anchors on it and the colour is applied by the usual handlers. Measured: showPicker() on #blockFill, or a click on that same field when showPicker does not exist.

🧩 Le mode CMJN garde son accès vérifié

  • In CMYK that field is hidden and WebKit opens nothing on an unrendered element: the eyedropper then uses a dedicated field, rendered and placed on the clicked button, feeding the same path (CMYK conversion included). Measured: _spPipetteProxy created and used.
  • If the native selector refuses to open, the previous internal window takes over: a click is never left without effect.

✅ Résultats mesurés vérifié

  • 6 scenarios measured in the browser (simulated Safari: EyeDropper removed): sidebar open, showPicker accepted, showPicker missing, selector refused, field hidden, and Chromium with no regression.
  • On Chromium the real eyedropper (reading a pixel off the screen) is still used: measured, EyeDropper called and colour #0EA5E9 applied. Web/mirror parity 16/16, 26/26 markers at 1.7.416, 56,339,947-byte package verified by extraction.

🛠️ Technique

  • The npm launcher is published as 1.0.95: it requires application 1.7.415 or later, and always downloads the newest online version.
  • The offline cache is renamed (superprint-shell-v1.7.416-pipette-native) and the main file gets a new version number (?v=20260916-v416-pipette-native). Without that rename the browser would have kept serving the old file and the fix would have stayed invisible.

SuperPrint 1.7.416 — fix measured before/after; WebKit does not start on the test machine, so the measurement is done on simulated Safari, as for 1.7.406, 1.7.407 and 1.7.412. Checking on a real Safari remains the final proof.

→ Open SuperPrint Editor

SUPER PRINT v1.7.415

Released September 15, 2026

Files prepared in the studio now reach print without losing anything.

🎨 Le studio ne détruit plus les tons directs corrigé

  • A document with 3 spot inks lost every marker in the studio: 0 separations instead of 2.
  • 3 of 3 markers preserved, 2 /Separation in the PDF, PDF/X box present.

📖 Le mode planches n'est plus ignoré corrigé

  • In spread mode the native export produced 4 single pages of 170 × 240 — sheets lost.
  • 3 sheets of 366 × 266, CMYK, PDF/X — identical on web and local.

⚫ Le Noir & Blanc redevient léger corrigé

  • A black & white export weighed 134,725 KB — 677× the RGB version.
  • 779 KB, then 189 KB with truly vector text and strokes (RGB equivalent: 199 KB).

📐 Marge et numérotation conservées corrigé

  • Margin forced to 20 mm instead of 15, numbering switched off (11 fields). Both preserved now.

🔁 Export déterministe corrigé

  • The font cache cached failures — one late font rasterised the whole session. Now retried, with a console warning.

✅ Résultats mesurés vérifié

  • 27 documents tested and analysed byte by byte.
  • Web/mirror parity 16/16, 27/27 version markers, 600 identical files, 56,339,732-byte package verified.

Every defect was reproduced before the fix, then measured again after.

→ Open SuperPrint Editor

SUPER PRINT v1.7.414

Released September 14, 2026

Text blocks stay stable when you change the typography, and the last line is no longer clipped.

🩹 La dernière ligne n'est plus coupée corrigé

  • Measured: flowed blocks held 26 lines in a 400 px frame — the mask shaved 6.8 px.
  • Measured with hyphenation, read back without — exactly one line apart.

📐 Le cadre ne grandit plus pour rien corrigé

  • The frame grew on a line-height change and never came back down.
  • The frame now follows the content both ways — and a manual resize wins.

✂️ Un interligne sur une sélection ne colle plus au texte corrigé

  • A line height applied to a selection left 120 styles behind that survived a block-level change.
  • Applying it to the whole block now harmonises the text: 0 residual styles, uniform heights.

✅ Résultats mesurés vérifié

  • Flowed blocks: 25 lines / 391.07 px in a 400 px frame — 8.93 px of margin.
  • 200,000 characters onto 154 pages: no block exceeds its frame, hyphenation preserved.

Measured in the browser, each defect reproduced before the fix and re-checked after.

→ Open SuperPrint Editor

SUPER PRINT v1.7.413

Released September 14, 2026

Pasting 200 pages of text no longer freezes the interface, and SuperPrint now offers layout options as you paste.

🐌 Pourquoi l'interface se figeait corrigé

  • It was not Word styles: SuperPrint only reads plain text. The real cause is the cost of line wrapping, which explodes with volume.
  • The cut-point search started halfway through the text. It is now bounded by the block's real capacity.
  • Measured: 200,000 characters analysed in 47 ms instead of several seconds, and chaining two to four times faster.

📋 Options de collage de masse nouveau

Beyond 3,000 characters a panel opens before anything is inserted and offers:

  • Style breaker — flattens stray copy-paste styles (measured: 2.9× slower wrapping).
  • Typography — body size, leading, justification and hyphenation.
  • Distribution — everything in this block, or flow across chained pages, created and linked automatically.
  • Automatic document margins for every new block.
  • Paragraph indents — first line, left, right.
  • Progress bar with a stop button, plus a text preview.

✅ Résultats mesurés vérifié

  • 200,000 characters flowed onto 153 pages in 14 seconds, with no characters lost.
  • A small paste (under 3,000 characters) is completely unchanged.
  • The cut point stays exact across six block sizes and body sizes.

Measured in the browser. Three further defects were found and fixed while measuring.

→ Open SuperPrint Editor

SUPER PRINT v1.7.412

Released September 14, 2026

The colour eyedropper now opens its window right under the button, instead of a system window that flew off to a corner of the screen.

🎨 Une fenêtre « Couleurs » placée sous la pipette corrigé

  • On Safari the real eyedropper does not exist, and the fallback opened the system window at the bottom-left of the screen.
  • SuperPrint's own “Colours” window appears under the clicked button, and closes on Escape or an outside click.
  • A “System picker…” button still gives access to the macOS colour panel.

⚪ En RVB, la pipette peignait en blanc corrigé

  • In RGB mode the picked colour was replaced by white — fixed.

Measured in the browser, Safari simulated, Chrome checked for regressions.

→ Open SuperPrint Editor

SUPER PRINT v1.7.411

Released September 14, 2026

You can now work on very large formats — up to A0 and beyond — and import PDFs at those dimensions.

📏 Le format n'est plus converti selon la langue de l'interface corrigé

  • Measured: with an English interface, typing 1115 × 1875 mm produced a sheet of 28,321 × 47,625 mm — blank screen.
  • The unit now comes from the unit selector, and from it alone: width, height, margins and bleed.
  • Verified in the browser with an English interface: 1115 × 1875 gives a 1115 × 1875 mm sheet, actually rendered.

📄 Importer un PDF grand format corrigé

  • PDF import drew each page at a fixed scale — 605 million pixels for a 1115 × 1875 mm page, well past what a browser accepts.
  • The scale now adapts to the page format, capped at 220 million pixels, with an explicit message if the browser still refuses.
  • Beyond a 16000 px side, a warning states where the browser limit lies.

Measured on the actual render, then verified on both copies of the code.

→ Open SuperPrint Editor

SUPER PRINT v1.7.410

Released September 14, 2026

In justified text, the last letter of a line was slightly shaved on the right edge of the block. Fixed.

✂️ Pourquoi la lettre était coupée corrigé

  • Measured on the same block, changing only the alignment: left-aligned the ink stops at 291 px, but justified it reaches 307 px in a 300 px block. Justification pushes the line right up to the edge, so the last character’s sidebearing overshoots by 2 to 7 px depending on size.
  • The block mask sat exactly on the block width and cut that overshoot. Comparing the image with and without the mask across 12 cases, ink was lost in 4 cases, by up to 8 pixels, always exactly on the right border.

📐 La correction corrigé

  • The mask keeps its job — preventing a layout overflow — but now lets glyph sidebearings breathe, with a margin proportional to the type size: 3.8 px at 12 pt, 5.8 px at 18 pt and 7.7 px at 24 pt. It is invisible in print (0.65 mm at 300 dpi).
  • Verified: ink beyond the block +2 / +4 / +7 px before → 0 px after, no pixels lost sideways, and the mask still clips vertically — a 40 px block holding 91 px of text is still clipped to 40 px.

Measured on the actual render, then verified by image comparison.

→ Open SuperPrint Editor

SUPER PRINT v1.7.409

Released September 14, 2026

With no format asked for, the layout adopts the document’s own — read from the file, not guessed. And mm, cm, pt as well as A0 to A8 are understood.

📄 Un Word joint est enfin LU par l'IA corrigé

  • A Word file dropped into the AI prompt bar was laid out instead of read: no attachment, no characters sent, and the document’s texts placed on the canvas. The AI knew nothing of it. Fixed: the file becomes an attachment, the canvas is left alone, and studio and editor now behave identically.
  • The page size is now read from the file structure: w:pgSz for .docx (never read before), styles.xml for OpenDocument, the \paperw header for RTF. It used to be searched in the text: a line such as “print at 100 × 150 mm” or a table cell “300 × 400 mm” was taken for the page setup — 2 false positives out of 5 in our measurements.

📐 Les unités et les formats sont compris nouveau

  • The order is clear and no longer changes silently: your requested format, otherwise the document’s, otherwise the current one.
  • On units, everything is understood: mm, cm, pt (1 pt = 25.4/72 mm), inches, the decimal comma (14.8 × 21 cm), and formats A0 to A8. “A4” in capitals is recognised on its own; in lower case a keyword is required, so as not to confuse it with the French article “a”.

Verified against the real code and in the browser.

→ Open SuperPrint Editor

SUPER PRINT v1.7.408

Released September 14, 2026

You asked for one format and the layout took another: the attached document had the last word. That is over — your request is now the only source of truth.

🎯 Le format du fichier joint ne gagne plus corrigé

  • When you asked to reuse the text from a Word or RTF file, the format of the file was applied, not yours. An RTF exported from a word processor announces its own page setup: “FORMAT: A4 landscape (297 × 210 mm)”. That figure was read as your instruction and overrode the “A5” you had just typed.
  • The same happened if you set the format before typing the prompt: the value was rewritten once the file was attached. That is also why setting the format first changed nothing.

📄 Demandes et documents sont désormais séparés corrigé

  • The format, orientation and number of pages are now detected from your request alone. Attached file contents are treated as documentary reference, never as an instruction: the block is explicitly delimited, from start to end.
  • One detail was misleading everyone: the application itself told the model “about 12 page(s)” as a plain volume measurement — and that sentence was counted as a 12-page request. It no longer reads as a pagination instruction.

🛡️ Un filet pour qu'aucun format ne dérive corrigé

  • So that no format can silently drift again, a safety net compares the format finally applied with the one you asked for: if they differ, yours is restored and the operation is reported on screen.
  • Verified with a real RTF file dropped into the actual import field: the document goes from 210 × 297 mm to 148 × 210 mm (A5) while the RTF announces “A4 landscape”. Non-regression is complete: A4 portrait, A4 landscape, business card and free dimensions (120 × 80 mm) are all honoured.

Verified against the real code.

→ Open SuperPrint Editor

SUPER PRINT v1.7.407

Released September 14, 2026

The colour eyedropper stayed silent on Safari only. It now works everywhere, in RGB as well as CMYK.

🎯 La pipette fonctionne sur Safari corrigé

  • The button was clearly visible and the click was received, yet nothing happened. Measured with Safari simulated: in CMYK mode the fallback pointed at a colour field that the mode switch had hidden. WebKit silently ignores a click on an element that is not rendered — no error, no message: precisely “the eyedropper does not fire”.
  • The eyedropper now uses a dedicated, properly rendered colour field placed on top of the clicked button, so the native picker opens in the right place. It feeds the same code path as the original eyedropper, so CMYK conversion is handled identically.
  • A side benefit: Firefox, which does not implement the EyeDropper API either, is fixed by the same change. Both empty error blocks are gone: a real failure is now reported and distinguished from a plain user cancellation.

Verified with real mouse clicks.

→ Open SuperPrint Editor

SUPER PRINT v1.7.406

Released September 14, 2026

Imported documents finally breathe, and a PDF now comes in with its images.

📏 Les titres respirent fix

  • Headings were glued to the end of the previous block, with too much leading and too large a size. A safety margin of 7 mm (main heading), 5.5 mm (subheading) and 4 mm (minor heading) now opens the space each heading needs.
  • Main heading size drops from 3× to 2.1× the body text, and their leading from 1.35 to 1.05: the hierarchy stays clear without overwhelming the page. A heading left with less than 12 mm below it moves to the next column, avoiding an orphan heading at the bottom.

🖼️ Un PDF entre avec ses images new

  • Question asked, answer applied: a PDF dropped into the prompt bar yields editable flowed text, and the studio now extracts the images it contains so they can be placed in the layout.
  • Images read from the PDF become attachments in their own right, placed by the AI like any other attachment. Bullets and decorative rules are filtered out (80 px threshold), and in a heavily illustrated PDF the largest images are kept — 24 at most.

🎨 Les fenêtres d’import a la DA SuperPrint fix

  • The import dialogs finally adopt SuperPrint’s own look: square corners, no emoji, restrained titles, and black buttons in IBM Plex Mono instead of an off-brand blue. They also inherit the dark theme.
  • Every label is checked in three languages. Two oversights were fixed: the question appeared in English in the French interface, and the main button label was missing in Japanese.

📄 300 pages, et on annonce la durée new

  • The studio page ceiling rises from 120 to 300, and the estimated duration is announced from 40 pages upwards (“about N min, one request per page”). So you know what you are starting — and you can stop at any time while keeping the pages already composed.

Verified with real tests.

→ Open SuperPrint Editor

SUPER PRINT v1.7.405

Released September 14, 2026

Importing a long document was painful: thousands of detached blocks, and sometimes a generation that never finished.

🔗 Les paragraphes sont enfin liés new

  • Your document becomes one continuous text flow. Paragraphs are no longer isolated blocks: they are linked from column to column and page to page, exactly like flowed text in page-layout software. Adjusting one block’s width adjusts the whole document.
  • A new option in the import dialog lets you choose: Flowed text (recommended) or One block per paragraph, the previous behaviour, kept for fine-tuning a short text paragraph by paragraph.

📏 Ce que la mesure donne new

  • Measured on a 120-page Word document (1,319 paragraphs, 401,961 characters): 1,319 separate blocks before, 462 linked blocks now, spread over 136 pages — and the text stays complete, all 402,446 characters are found in the blocks.
  • Headings remain separate blocks and keep their typographic hierarchy, images are preserved: only those two elements interrupt the flow, as they should.

⚡ Studio IA : les gros documents aboutissent fix

  • On a 200-page document, the studio sent the whole document with every page — on top of the matching slice. Measured result: 120 calls × ~122,000 characters, i.e. 14.6 million characters to process. Hours of work, and a single unresponsive call blocked everything for good — hence a load that never finished.
  • The attached context now carries only the image list (the document body is already sent page by page): the volume drops by a factor of about 10.
  • Every call now has a maximum delay: if a call does not answer, generation moves on to the next page instead of getting stuck on one. And during a long generation, a second click on Send stops the run cleanly while keeping the pages already composed.

🔧 Un défaut de notre propre correctif fix

  • A flaw in our own fix, found by measurement and corrected in the same release: the chain broke at every column change, so blocks did carry an identifier but no link existed at all (zero out of 462). The chain now continues across columns and pages — which is the whole point.

Verified with a real browser test.

→ Open SuperPrint Editor

SUPER PRINT v1.7.404

Released September 14, 2026

Your question was the right one, and the answer was no: the prompt bar read the text of an RTF but threw away all of its page setup.

🔍 Ce que la mesure a montré fix

  • A realistic RTF was built (A4 landscape, printer margins, gutter, 2 columns, header and footer, 2 page breaks) and run through both shipped decoders. Result: 5 pieces of information out of 16 reached the AI.
  • The 11 lost items: page format, margins, gutter, columns, orientation, page number, header, footer, page breaks and page count. The worst part: pagination vanished — the model could not tell where a page began.

✅ Ce que l’IA reçoit maintenant new

  • The text now opens with a readable page setup header: FORMAT: A4 landscape (297 x 210 mm), the four margins in millimetres, the gutter, the number of columns with their gutter, the page count, the header and footer contents, and the automatic fields detected.
  • Most importantly, every page break becomes a visible marker [PAGE 2], [PAGE 3]. The model therefore knows where each page begins and can honour the document structure instead of pouring everything into one block. Measured result: 11 checks out of 11.

🔧 Deux défauts de mon propre correctif, trouvés à la mesure fix

  • The first attempt let the header and footer leak into the body text: the words «Page» and «CONFIDENTIEL» showed up mid-document. I filtered them after extraction, but the decoder has already stripped the braces. They are now ignored in the body and read straight from the source.
  • Second defect: the format came out as «landscape» instead of «A4 landscape». The format table is sorted, but I built the dimensions as width × height — so 297 × 210 in landscape, which matched nothing. Once the pair is sorted, the name A4 is recognised.

Verified with a probe.

→ Open SuperPrint Editor

SUPER PRINT v1.7.403

Released September 14, 2026

Two interface details, both measured to the pixel in the window and in the prompt bar.

📐 Le trait de séparation est maintenant centré fix

  • The vertical rule separating the configuration tabs from the two launch tools was stuck to the top: measured 0 to 18 px while the buttons span 33 px. It is now centred — 8 px of air above and below, so visibly lower.
  • The cause is subtle: the row is a flexbox with no alignment set, so the default is stretch. But the rule has a fixed height: it cannot stretch, and flex then places it at the top. One line was enough — align-self: center.

📎 Les pièces jointes adoptent la mise en forme du Studio IA new

  • No more emoji: the chips use the same line icons as the studio — a photo frame for an image, a lined page for a document. The coloured thumbnail and the rounded corners are gone too.
  • The values were read from the studio and applied identically: background #f2f2f2, border #d9d9d9, square corners, 14 px line icons, uppercase metadata, and a remove cross that turns red on hover. Verified by measurement: no emoji left, no thumbnail, corners at 0 px.

Verified to the pixel.

→ Open SuperPrint Editor

SUPER PRINT v1.7.402

Released September 14, 2026

Five interface reports, all verified on screen. None of them was visible by reading the code.

📌 Les deux outils de lancement passent en fin de liste new

  • In the «New project» window, Studio IA and SuperTyPo now sit after the configuration tabs, separated by a rule: they no longer read as settings for the current document.
  • That was the real issue: they are actions — they close the window and open another tool. In the middle of the list, it looked as though two clicks were needed. Final order: Basic · Advanced · Automatic · Templates │ Studio IA · SuperTyPo.

🔧 Studio IA : le message d’erreur sur un document de 200 pages fix

  • The fix for that message (text.indexOf is not a function) already existed in the repository since version 1.7.393 — verified: 0 occurrences of the guard online, 1 locally. In other words, the online studio was still on 1.7.390: it only had to be deployed.
  • Along the way, a document estimated at 200 pages was silently capped at 40. The ceiling now sits at 120 pages and, above all, the final message states the cut instead of implying that everything was laid out.

🟢 Le témoin de la clé API passe au vert new

  • The dot left of the «Prompt IA» title was hard-coded black: you could not tell an active key from a missing one. It is now green as soon as a key exists for the selected engine, and amber otherwise.
  • The tooltip states it in words («DeepSeek key active» / «no key for DeepSeek»). Verified without reloading the page: green → amber → green, the dot follows the key in real time.

📎 Les pièces jointes disposées comme dans le Studio IA new

  • Each attachment now shows an icon for its type (Word, PDF, spreadsheet…) or its real thumbnail for an image, its name, its character count and the file weight. Several files coexist, and the area keeps zero height when empty.
  • Measured on two files: «Rapport annuel.docx · 45.2k chars · 278 KB» and «couverture.jpg · 1600×1000px · 1.2 MB». Attachments already present are redrawn when the bar opens.

⚫ Le contour du champ de saisie passe au noir fix

  • The prompt field outline showed in blue on focus, with a blue glow. It is now black in both themes — and the scrollbar was redrawn: thin, rounded, never the system blue.
  • Verified by reading the computed styles: no blue rule left on the field, glow at rgba(17,17,17). The drop zone hover also turns black.

Verified on screen.

→ Open SuperPrint Editor

SUPER PRINT v1.7.401

Released September 14, 2026

Three fixes measured in the browser, with a real DeepSeek key active. Each one comes from an actual test, not from re-reading code.

🔧 Une retouche réduisait un magazine de 6 pages à 1 page fix

  • Measured: 7 pages / 17 objects before, 1 page / 5 objects after a plain correction prompt. The cause was a hard-coded line: the prompt bar forced «single page» mode, so the AI was never asked in multi-page mode again.
  • The requested format is now inferred from your sentence («6 pages», magazine, catalog, book…) and a document that already has several pages keeps them. Verified: 6 pages and 84 objects preserved after a page-1 targeted edit.

✏️ Le champ servait à créer ET à retoucher sans le dire new

  • One field served both purposes, with nothing to indicate which would run. The button now states the real action: Create on a blank layout, Retouch as soon as it holds content. The tooltip and the field's grey hint follow the same logic, in all three languages.
  • Along the way: a blank document holds three technical marks (bleed, margins, outline). They are no longer counted as content — otherwise a blank page would wrongly read «Retouch». Measured: those three objects exist in every new document.

📐 La césure demandée n’arrivait jamais sur la maquette fix

  • Measured across 45 text blocks of a 6-page magazine: all came out un-hyphenated and flagged as English, while the internal prompt requires hyphenation on every justified block — even when you asked for it explicitly.
  • Three causes stacked up along the AI path: the object builder did not copy the two properties, the validator stripped them, and one line overwrote them explicitly to «false». All three are fixed.
  • A justified block without an explicit instruction now gets hyphenation, and the language falls back to the interface language — never English by default. Verified: justified paragraph hyphenated, French across 8 of 8 blocks.

📤 Preuve de bout en bout : PDF HD vectoriel new

  • A 6-page magazine was created, edited, then exported as a 300 DPI HD PDF, CMYK, PDF/X-3, vector typography. File analysis: 6 pages, zero raster image, 510 vector text blocks, 10 fonts of which 9 embedded, Coated FOGRA39 ICC profile.
  • French accents are correctly mapped (via the ToUnicode table): the text is selectable and sharp at any scale, not merely good-looking.

Verified end to end with a real DeepSeek key.

→ Open SuperPrint Editor

SUPER PRINT v1.7.400

Released September 14, 2026

The AI now sees your layout and edits it instead of rebuilding it.

🔎 Ce que la mesure a montré new

  • The request never described the existing content.
  • A factual inventory of every object, technical marks excluded.
  • A priority editing rule, with conservation of everything else.
  • Brand-new creations still work as before.

🛡️ Votre maquette ne peut plus être effacée fix

  • A truncated reply no longer empties the page.
  • When objects are replaced, the count is stated.

⏳ « On ne sait pas ce qu'il fait » : le blocage était réel fix

  • An internal error path left the UI stuck forever; now it always resets.
  • The loader and button always reset, with a clear message.

Verified in the browser on the faulty path, before and after.

→ Open SuperPrint Editor

SUPER PRINT v1.7.399

Released September 14, 2026

“Studio IA” is now black in the new-document window, like SuperTyPo.

🔍 Ce que la mesure a montré fix

  • One was grey, the other black, though both were declared black.
  • A tab-display setting was overwriting the colour, and SuperTyPo escaped it by luck.
  • They are actions, not tabs — both are now styled together.
  • One rule drives both; a future third action just joins the list.

✅ Vérifié à l'écran new

  • Both actions are black and bold; the real tabs are unchanged.

Measured on the open window, before and after.

→ Open SuperPrint Editor

SUPER PRINT v1.7.398

Released September 14, 2026

The editor's prompt bar now matches the Studio IA, using shared code.

📎 Une barre plus simple et plus complète new

  • Three icons and one checkbox; drag and drop still works everywhere.
  • Attachments show as chips below the field, removable one by one.
  • Every office format, with full structure and order.

⏳ Le chargement ne prend plus de place new

  • The loader overlays the bar, so it adds no height.

🐛 Quatre défauts trouvés en testant dans le navigateur fix

  • The loader showed … instead of …
  • The button returned to English after each generation.
  • A watchdog resets the display whichever path exits.
  • OpenDocument failed with a silent 404 — hard-coded paths removed.

Verified in the browser on the real flow.

→ Open SuperPrint Editor

SUPER PRINT v1.7.397

Released September 14, 2026

The studio is now called “Studio IA” everywhere, including both READMEs.

🧭 Un seul nom, dans les trois langues new

  • One name across FR / EN / JP, with clearer descriptions.
  • Both READMEs aligned, with direct links to the studio.

🎨 Le studio : en-tête, case Images, numéro de page fix

  • Header reads STUDIO IA, then Layout & Canvas.
  • The Images checkbox is black instead of blue.
  • “Page 1” now sits below the page, same margin.
  • Two page builders existed; both are now fixed.

📄 Pop-in « Nouveau document » : l'ordre demandé fix

  • Order: Basic · Studio IA · SuperTyPo · Advanced · Automatic · Templates.
  • Studio IA and SuperTyPo are black and un-underlined — they are actions, not tabs.

Checked in the browser, in the distributed package.

→ Open Studio IA

SUPER PRINT v1.7.396

Released September 14, 2026

All document formats are now read with their full structure.

🚨 Ce que nous avons mesuré avant de corriger fix

  • Legacy .doc delivered 0 characters.
  • OpenDocument delivered 0 characters.
  • RTF sent raw markup instead of text.

🔍 Un aiguillage qui lit la signature du fichier, pas son extension new

  • The real file signature decides the decoder, not the extension.

📄 Word 97-2003 (.doc) : un vrai décodeur, pas une approximation new

  • Real OLE/Word structure parsing instead of guessing.
  • The heuristic was measured, then replaced by a real structural decoder.

📚 OpenDocument : le format par défaut de LibreOffice new

  • OpenDocument structure, tables and images are now fully extracted.

✍️ RTF et texte enrichi : plus aucun code dans la maquette fix

  • Spec-compliant RTF decoding, accents and Unicode included.
  • 140 HTML entities decoded instead of 12.

🧠 Le modèle comprend enfin la structure du document new

  • The conventions are now explained to the model.
  • Level-1 headings open pages, lists stay lists, tables stay tables.

🐛 Deux défauts trouvés uniquement grâce aux tests fix

  • A short but valid document was rejected; the test was browser-only.

Four document formats measured before and after, on real files.

→ Open SP213 Studio

SUPER PRINT v1.7.395

Released September 13, 2026

Multi-line titles finally clear the text below.

📐 Cause 1 : une hauteur devinée au lieu d'être mesurée fix

  • Text height was read from an AI-supplied value.
  • It was aligned beside the paragraph instead of above it.

🔁 Cause 2 : l'ordre des passes annulait la correction fix

  • The overlap was solved, then re-created by the next pass.
  • Widths first, anti-overlap last — verified with no overlap.

🧩 Et un troisième défaut trouvé au passage fix

  • Two adjacent blocks now never push each other.

Passes replayed and measured one by one, on a reproduction of page 12.

→ Open SP213 Studio

SUPER PRINT v1.7.394

Released September 13, 2026

Targeted rework works, and blocks no longer disappear.

🎯 Le retravail par zone ne faisait rien fix

  • Matching by an identifier the AI never sends.
  • When the AI returned nothing, the block was deleted silently.
  • Now matched by position; nothing deleted on an empty reply.

🎨 Trois couleurs hors-charte corrigées fix

  • The Images checkbox is no longer blue.
  • Green → amber for the targeted block.
  • Targeted rework is now clearly visible.
  • The prompt button was already black.

Verified by test on a real three-element case.

→ Open SP213 Studio

SUPER PRINT v1.7.393

Released September 13, 2026

Fix: crash when attaching a long Word document.

🔍 Une erreur incompréhensible… due à deux formats incompatibles fix

  • Two paths, two incompatible return types.
  • The page-by-page mode only starts past 4,000 characters.

🛡️ Corrigé à trois niveaux verified

  • Both paths now return the same format.
  • Verified on 15,083 characters with 3 images.

Verified by reproducing the defect, then generating the full document.

→ Open SP213 Studio

SUPER PRINT v1.7.392

Released September 13, 2026

Bleed is configurable, and layouts stop dating themselves 2025.

📐 Le fond perdu, piloté par vos réglages fix

  • Hard-coded at 19 places, with no setting to change it.
  • A bleed field in the studio settings, 3 mm by default.
  • Found by intercepting the real request, not by reading code.

📅 Des dates actuelles, pas celles de l'année dernière fix

  • The prompt had no date instruction at all.
  • Today's date and the current year are now stated.

Both verified in the real outgoing request and in the package.

→ Open SP213 Studio

SUPER PRINT v1.7.391

Released September 13, 2026

A checkbox to dress your layouts with photos.

📸 One checkbox, two effects new

  • One checkbox, two complementary effects.
  • The studio fetches the photos itself.
  • Offline still reserves grey photo areas.

🚫 No invented captions fix

  • The model does not see the photos.
  • A generic, honest caption is now required.

✅ Checked, then unchecked verified

  • Checked: photo attached and rendered.
  • Unchecked: strictly unchanged behaviour.
  • The manual 🌐 search button is unchanged.

Studio 1.7.391 — measured in both states and verified in the package.

→ Open SP213 Studio

SUPER PRINT v1.7.390

Released September 13, 2026

The editor's Word import finally honours your settings.

⚙️ Four settings that did nothing fix

  • Only two of the six settings were actually read.
  • Body and headings were frozen at fixed sizes.
  • Verified in the browser on a 47-paragraph Word file.

🖼️ Image width, finally under your control fix

  • Image width was computed from the column alone.
  • Your maximum width is respected and images are centred.

🔧 One pipeline, shared with drag & drop new

  • One shared pipeline for the button and drag & drop.
  • An honest note on the drag & drop audit.

Application 1.7.390 — three defects fixed, measured and verified.

→ Open SuperPrint

SUPER PRINT v1.7.389

Released September 13, 2026

Four fixes from your feedback — all measured.

📐 Titles no longer overlap the text below fix

  • Character width was estimated without the font, weight or size.
  • The studio now measures with the real engine.
  • A new pass detects and resolves overlaps.

🖼️ Your Word images now reach the AI fix

  • The images were extracted but never sent to the AI.
  • The image list now travels with every call.

📄 Word import: you choose the layout new

  • Above 40 paragraphs, two columns were silently forced.
  • An options window now appears after choosing your file.

💬 The studio continues your layout fix

  • The studio switched to a new conversation based on a verb list.
  • The studio now continues by default.
  • Verified on 13 phrasings: no mistakes.

Application 1.7.389 — measured in the browser and verified in the package.

→ Open SuperPrint

SUPER PRINT v1.7.388

Released September 13, 2026

Word import now extracts images and processes the whole document.

🖼️ Your Word images were thrown away fix

  • No images were extracted from a .docx.
  • Every image is now extracted.
  • The import message confirms what was extracted.

🛑 It stopped instead of finishing fix

  • The text limit was raised from 24,000 to 60,000 characters.
  • The truncation notice itself was telling the AI to stop.
  • Contradictory instructions made the model produce one page.

📚 The whole document, then new

  • The studio drives generation page by page.
  • Complete processing no longer depends on the model.
  • Measured: 1 page before, 4 full pages after.

Application 1.7.388 — verified end to end with a real .docx.

→ Open SuperPrint

SUPER PRINT v1.7.387

Released September 13, 2026

You never saw the middle of the two pages — it is now fixed.

📖 The fold line was drawn at the edge fix

  • The fold line sat on top of the crop mark.
  • A dashed fold line now marks the sheet centre.

🧭 The instructions contradicted themselves fix

  • Two incompatible coordinate frames.
  • One rule now: origin = top-left of the whole sheet.

🔢 Book imposition, with the exact folios new

  • An 8-page book was producing a page 9.
  • A numbered imposition table is now supplied.
  • Verified on a 4-page and an 8-page book.

Application 1.7.387 — verified on 4-page and 8-page books.

→ Open SuperPrint

SUPER PRINT v1.7.386

Released September 13, 2026

The prompt area in the studio has been completely reworked.

⌨️ The input field fix

  • Three lines at rest and full available width.
  • Automatic expansion from 3 to 8 lines.
  • Exact return to three lines after sending.

🎛️ The buttons fix

  • A horizontal action bar under the field.
  • 30 × 30 px buttons with 14 px icons.
  • Tooltips were glued together; now properly separated.

📎 Tested with an attached file verified

  • Real test with an attached image: the AI understood it perfectly.
  • , tandis que le titre et la ligne de contact restent sans césure." data-i18n-en-html="The typographic instruction is followed: the body paragraph gets justify + enableHyphenation: true + hyphenLanguage: "fr", while the title and contact line stay un-hyphenated." data-i18n-jp-html="タイポグラフィ指示も遵守:本文段落にはjustify+enableHyphenation: true+hyphenLanguage: "fr"が設定され、タイトルと連絡先行にはハイフネーションが適用されていません。">The typographic instruction is followed.
  • The image travels with the exported .sp file.

Application 1.7.386 — measured on desktop and mobile.

→ Open SuperPrint

SUPER PRINT v1.7.385

Released September 13, 2026

In double-page mode, the right-hand page was simply unusable.

📖 The right-hand page was being crushed fix

  • Root cause: the studio's post-processing assumed every text block was alone on a 210 mm page.
  • Fix: calculations now use the frame of the page containing the block.
  • No regression on single pages.

✍️ AI understands typography and hyphenation new

  • AI now understands hyphenation rules.
  • The text's language, not the interface's.
  • InDesign import now reads the hyphenation language.

📐 Double pages, from the prompt to the sheet fix

  • Row scaling now uses the correct fold position.
  • Numeric instructions are now consistent.
  • Book imposition is now understood.
  • Fold mark added to the spread preview.

🧹 Also in this release

  • Chat header simplified.
  • Release page defaults to English.
  • Two stray characters removed.

Application 1.7.385 — verified end to end.

→ Open SuperPrint

SUPER PRINT v1.7.381

Released September 13, 2026

It is a tiny typographic detail — but it shows on every justified paragraph. The last line was being stretched to the right edge instead of staying flush left.

📏 The last line no longer touches the right edge fixed

  • The basic rule of justified typesetting, applied by InDesign, Word and LaTeX: full lines stretch to both edges, the last line of a paragraph does not.
  • The defect only triggered when the justified block had neither hyphenation nor a forced line break — an ordinary block. On a 300 pt block, a last line measuring 196.76 pt was painted out to 300 pt, 100 % of the block.
  • Reassuring point: the PDF was already correct. Both vector export paths applied the right rule; it was the on-screen preview that diverged.

🖥️ The SP213 studio had the same defect fixed

  • The studio ships its own copy of the graphics engine, which had never received the rule. Fixed separately and verified on a two-paragraph block: paragraph ends now stop at 56.7 % and 40.7 %; full lines at 100 %.
  • The “justified left” and “justified right” alignments did not survive the trip between editor and studio. Fixed.

✅ Verified on vector PDF, four alignments quality

  • After the fix, a vector PDF export was measured block by block: justified and justified left align the last line left; justified right aligns it right; full lines reach 100 %.
  • The other alignments (left, centre, right) and a last line reduced to a single word were re-checked: no change, no regression.

What it changes for you. A justified layout now ends properly, paragraph after paragraph: full lines hold the edge, the last one breathes.

→ Open SUPER PRINT


SUPER PRINT v1.7.380

Released September 13, 2026

Hyphenation is the subject of this release — and it was not up to DTP standards. The hyphen was sometimes placed on top of the word.

🔤 Hyphenation finally follows the language of the text fixed

  • If you wrote in English, the app still used the French dictionary. Eleven words out of twenty-two were broken the wrong way.
  • It was not a mis-set option: the hyphenation language was hard-wired to French. It now follows the interface language.
  • Japanese does not break words with hyphens: hyphenation is simply switched off there.

✒️ “L'-”: never break after an elision apostrophe fixed

  • “L'habillage” was broken as L'-. French never does that: the elision apostrophe already marks the boundary.
  • The engine itself suggested that break. The app now filters its proposals: at least two characters on each side, never glued to an apostrophe. Verified across 1,571 hyphenations.
  • The fallback hyphenator was simply inverted. It now applies the three rules of French: cé-su-re, ir-ré, es-pa-ces, and ta-bleau.

🎯 The hyphen sat on top of the word fixed

  • On a justified line ending with a break, the hyphen was placed 4.13 pt too far left and bit into the end of the word.
  • The preview stretches a broken line to block width minus hyphen width; the export stretched to the full width. Both now use the same target as the preview.

⚙️ Hyphenation followed a global setting, not the block's own fixed

  • A block you had deliberately left without hyphenation came out hyphenated on export. The per-block setting is now respected.
  • The checkbox still applies to untouched blocks, but an explicit choice — on or off — is now honoured.

🅰️ Bold, italic, colour, another font: mixed blocks exported badly fixed

  • Inside one block, mixing bold, italic, colour, another font and a larger size made the vector export leave the justification path. The hyphen landed in the middle of the line.
  • The line was drawn character by character, but its length was computed with the block's base font. The two could not agree.

⚠️ Text could vanish with no warning at all new

  • A fixed-height block that receives more text than it can show clips the surplus — expected DTP behaviour, but the app did not say so. Three test blocks were hiding two, six and six lines in silence.
  • The export now counts the affected blocks before writing the PDF and reports it at the end, in all three languages.

🛡️ Vector export was refused because of a phantom font name fixed

  • The app requested the font Open Sans, sans-serif — not a font name but a CSS fallback list. The check reported “missing font” and refused the vector export, though Open Sans was available.
  • The name is now normalised: only the first family is kept, generics discarded. Font requirements went from four to three — the three real ones.

📄 End-to-end verification: three pages, vector export quality

  • A three-page document was built and exported: justified with hyphenation, unjustified, mixed styles, chained text, wrap around a circle and rectangular wrap. Then the PDF was measured line by line.
  • Result: 3 pages, 374 text operations, zero images — a fully vector PDF. Thirteen hyphenations, all glued to their word, and no line exceeding its frame.
  • Quality achieved: com-po-si-tion, in-sé-cables, pro-fes-sion-nelle, ha-bil-la-ge — and never L'-. In English: print-ing, hy-phen-ation, lay-out.

🛠️ Technical maintenance

  • The service worker moves to cache superprint-shell-v1.7.380b-no-whatsapp.
  • The internal version marker follows the release: v380.
  • The web and local builds are verified identical file by file. The launcher now reads “Studio” for the SP213 studio.

Text-block typography now delivers what it promises, in both languages. The preview and the PDF say the same thing, and word breaks follow the rules of the language you are writing.

→ Open SUPER PRINT


SUPER PRINT v1.7.375

Released September 13, 2026

Text wrap finally delivers on its promise, and text blocks placed by the AI no longer collapse. Both defects made text vanish or shrink before your eyes.

🎨 Text wrap was not recomposed when a document was opened fixed

  • Wrap did work — but only during the session where you switched it on. After saving and reopening, the text went back to its full width.
  • The cause was established by tracing the load timeline: a late pass overwrote the wrap result applied just before.
  • Verified on the live build: a six-line block becomes twelve lines once wrap is set, and the text stays fully intact.

🤖 Text blocks placed by the AI collapsed on the first click fixed

  • A block generated by the AI turned tiny as soon as it was touched — the type inside became invisible.
  • The cause: the app measured the block before its text was laid out, and froze that provisional “one pixel” as the final height.
  • From now on no dimension is frozen until the text has been measured. Verified: a three-line block keeps exactly its 126.8 px.

💧 The colour picker is available again, including outside Chrome new

  • Working in RGB made the picker vanish: it sat inside the CMYK settings block, hidden in RGB mode.
  • On Safari the app now falls back to the browser's native colour selector instead of doing nothing.
  • Spot ink names are shortened for display: Pantone Yellow C becomes Yellow C. The PDF plates keep the full name.

🖼️ Start screen: the visuals are now bundled comfort

  • The start-screen images were fetched from an external service. They are now bundled inside the app and available offline.

🔢 Numeric fields: no more odd values fixed

  • A field stepped to one decimal accepted 0.57, and it spread through the whole document. Fields now respect the step they advertise.

🛠️ Technical maintenance

  • The service worker moves to cache superprint-shell-v1.7.375-no-whatsapp: otherwise the browser would keep serving the old page.
  • An internal version marker shown inside the app had been stuck on an old build. It now follows every release.
  • The web and local builds are verified identical file by file. The npm package superprint is published as 1.0.92.

Wrap and text blocks are now reliable over time. Place your image, wrap text around it, save, reopen: the layout is identical.

→ Open SUPER PRINT


SUPER PRINT v1.7.349

Released September 11, 2026

The Pantone swatch panel is accessible in RGB again. An inconsistency prevented placing a spot ink while working in RGB.

🎨 The Pantone swatch panel was hidden in RGB fixed

  • The Pantone selector was nested inside the CMYK controls block, hidden as soon as the “CMYK colours” switch is off — the default RGB mode.
  • The swatch panel now sits outside that block: spot colours stay available in RGB as well as CMYK.

🧹 Export dialog: one setting, stated once fixed

  • The process-layer choice appeared twice: in “Output” and in a radio row inherited from “Colour”. That row is now hidden and the block renamed “Inks”.
  • The channel summary said “CMYK (4)” even in RGB mode: it now states the layer actually selected.

✅ CMYK and RGB exports verified on the file itself check

  • A test document — one process grey and three spot inks — was exported in both modes, then the PDFs were decoded stream by stream.
  • In RGB each spot ink comes out exactly as its swatch colour: zero difference on all three channels.
  • In both cases the PDF structure is sound: one named layer per Pantone, declared with the correct alternate space.

🔢 The channel count was wrong in RGB fixed

  • An RGB + 1 Pantone document reported 5 channels. That is impossible: RGB has 3 channels, not 4.
  • The process channel count was hard-coded to 4 in three places. It is now derived from the mode actually selected.
  • Verified after the fix: RGB + 1 Pantone now reports 4 channels — RGB (3) + 1 Pantone.

🛠️ Technical maintenance

  • The service worker moves to cache superprint-shell-v1.7.349-no-whatsapp: without that rename the browser would have kept serving the old page.
  • The web and local builds are verified identical file by file after every change.
  • Application version 1.7.349.

A Pantone can now be placed in either mode. Open the swatch panel, pick a spot ink, export: the PDF carries the process layer plus a clean plate per Pantone.

→ Open SUPER PRINT


SUPER PRINT v1.7.348

Released September 11, 2026

Spot colours (Pantone) are now a real export mode. A document containing at least one spot ink opens a dedicated export dialog producing a PDF with the process layer + one layer per Pantone: the process build first, then a clean plate for each spot ink.

⛔ Rendering stopped mid-page fixed

  • The PDF was structurally invalid: each ink block was announced by an operator requiring two parameters while only one was supplied. Strict readers aborted rendering there — everything after it vanished.
  • The correct operator (single parameter) is now used, and readers that tolerated the old format remain compatible.

📐 Spread mode was exporting single pages fixed

  • A double-page document came out as single pages. Measured: 4 pages produced 4 PDF pages 216 mm wide instead of 3 spreads 426 mm wide.
  • The cause: the engine stores each page separately, even in double-page mode. The export brick now rebuilds spreads using the preview's exact geometry and handles objects straddling the binding.
  • Checked in pixels: the right-hand page's content lands on the correct side of the binding, aligned with crop marks and the colour bar.

🎨 Choose the process layer: CMYK or RGB new

  • The spot-colour export dialog now offers CMYK + Pantone (print, with ICC profile) or RGB + Pantone (screen, digital, proofing). Either way the PDF keeps one layer per Pantone.
  • Verified on rendered values: in CMYK the grey #CCCCCC comes out converted (194,201,199); in RGB it stays exact (204,204,204).
  • In RGB mode each Pantone layer was still computed in the CMYK space, so the ink came out duller than expected. It is now described in RGB.
  • Pantone mode stays locked to 300 DPI, with mandatory bleed and vector typography.
  • Two details that misread the result: the channel summary always said “CMYK (4)” even in RGB, and the “Colour” block repeated the choice already made in “Output”.

💾 Spot colours now survive everywhere fixed

  • Saving then reopening worked, but reloading the tab or importing a .json silently lost the Pantones. Both paths now restore the inks.
  • The native .sp file, the .json, the automatic save and the SP213 Studio now share the same ink list.

🔤 Hyphenation and fonts — nothing to re-load fixed

  • In Spread mode only the left page was hyphenated: the right page kept words broken anywhere. Hyphenation now applies to both halves.
  • Fonts bundled with SuperPrint are vectorised directly, in their real weight: no need to re-import a system font to export. Tested 24/24, no warning.

🛠️ Technical maintenance

  • The service worker moves to cache superprint-shell-v1.7.348c-no-whatsapp and precaches 111 resources — including the print module, previously missing.
  • The web and local builds are verified identical file by file (495 files compared, zero difference).
  • Application version 1.7.348; npm launcher 1.0.87.

For printers and screens alike: drop a Pantone from the swatch panel, export, and the PDF carries the process layer plus a clean plate per spot ink.

→ Open SUPER PRINT


CUT THE FLOW v3.9.9

Released September 10, 2026

No new features this time — only fixes and optimisation. Three silent bugs were quietly skewing your exports, and the effects were needlessly expensive. Everything was measured, fixed and re-verified in a real Chrome.

🎯 Frame-exact export — every clip landed one frame late fixed

  • On a multi-track edit built to be verified frame by frame, the exported MP4 showed two systematic defects: every clip boundary shifted by one frame, and the last frame missing.
  • The cause was not CUT THE FLOW but its MP4 muxing library: it stored the first timestamp using a test that fails precisely when that value is 0 — the case for every first frame.
  • The bug was reproduced outside the browser, using the muxing library alone with dummy samples — the offset appeared identically.
  • After the fix, boundaries fall exactly on the expected frame numbers (59/60, 119/120, 149/150) and all 300 frames are present.

🔊 Audio — sound no longer runs 74 ms ahead of the image fixed

  • By measuring the exact moment of a sound change (a switch expected at 5.000 s), the WebM export placed the audio at 4.917 s — ahead of the image, with a shorter audio track.
  • The cause: the audio header was rebuilt by hand with a hard-coded value, while the browser's encoder uses a different one.
  • The real value was read straight from the browser, and the fix brought the sync error from −83 ms to −9 ms — identical to MP4.
  • The “Separate audio and video” tool was hardened too: a second click created a second audio clip (+6 dB, clipping). That is now blocked.

⚡ Effects twice as light — pixelation no longer costs anything performance

  • Five effects (pixelation, invert, blur, shake, mirror) allocated a fresh working image for every exported frame — the real cause of the sluggishness.
  • Those images are now reused from frame to frame. Measured on a 1.5 s clip: no effect 2,447 ms, pixelation 2,448 ms — effectively free.
  • All twelve effects were exported one by one to check none was broken. Glitch also gained accuracy — it read from the image it was modifying.
  • Worth noting: VHS and grain remain heavier (+70 % / +52 %) — they apply random noise to every pixel.

🕒 Timeline — time markers stay aligned when zooming fixed

  • When zooming far along an edit, the time numbers drifted and no longer matched the clips.
  • Measured drift: 126 px after about ten zoom-outs. The ruler now follows the tracks exactly: 0 px offset.

🔕 An end to silent failures fixed

  • The service worker kept a file list frozen in July and could fail to install entirely over a single missing font.
  • Fades were verified inside the exported file: linear rise 0.012 → 0.503, fall 0.504 → 0.028, exact duration.

🔧 Technical

  • Application version 3.9.9; cache cuttheflow-shell-v3.9.9.
  • Previous audits remain available in the version history and internal documentation.

Nothing new to learn, but a more reliable tool: exports land frame-accurate, sound stays in sync, effects cost less, time markers no longer move when you zoom.

→ Open CUT THE FLOW


SUPER PRINT v1.7.345

Released September 10, 2026

IDML / InDesign import — finally populated canvases new

  • Modern InDesign documents (.idml or .zip package) now import without ending up with empty pages: every story is located by its real identifier, even in dual-root files.
  • Geometry is rebuilt from the transformation matrices (ItemTransform) and each page's true origin: objects, text frames and groups land exactly where they belong.
  • Both base64-embedded images and linked images (Links/) are supported and placed on the correct page.
  • Fonts are recognised by their real family name (e.g. Abhaya Libre, Minion Pro) and loaded correctly — no more fallback-font text.
  • Recursive groups keep their depth and position; you can also drop a .zip straight onto the pasteboard or import an extracted folder (separate files).

PDF export — typographic fidelity & hyphenation improved

  • Justified text is now truly justified in the PDF: word-by-word distribution in both engines (jsPDF and native “Finished size”), without stretching a paragraph's last line.
  • Imported fonts (loaded from a file) are now measured and laid out correctly in “Finished size” — a full re-layout runs before export.
  • Word hyphenation (automatic virtual dashes) is no longer lost on export: it is preserved and redrawn in the vector PDF. “Auto hyphenation” is checked by default.
  • Enhanced fidelity: rendering aligned with the preview (per-character bold, faux-bold, mixed sizes, light weights) plus a CMYK colour picker in the simulation panel.

Alt+drag duplication — the original stays put fixed

  • Holding Alt / Option and dragging a block now moves the copy above, following the mouse, while the original stays exactly in place (previously it was reversed: the original moved and the copy stayed frozen).
  • A plain Alt + click (no movement) still duplicates the block in place with a small visible offset.

Tool shortcuts — moved to Option/Alt fixed

  • Typing T / I / R / C / P while editing text no longer triggers a tool by mistake: the tool shortcuts are now ⌥/Alt + T / I / R / C / P (text, image, rectangle, circle, pen).

Documentation & manual — fresh design new

  • The manual and technical documentation (documentation.html) were fully refreshed: a light top bar matching the SuperPrint app, segmented tab control, and the search field moved into the sidebar (press / to focus it).
  • Every documented shortcut now reflects reality (⌥ tools, Alt+drag duplicate, group Ctrl+Shift+G, ungroup Ctrl+Shift+U, zoom Ctrl+0…).

AI & Studio — robustness and ergonomics improved

  • The AI panel automatically falls back to a direct API call when the proxy does not support the provider (OpenRouter and others): generations always succeed.
  • The AI pop-in is clearer: a clean separation between your API key and the SP213 Studio, with a prompt to save your layout before generating.

Application version 1.7.345; npm launcher 1.0.84. Recommended update for IDML import, justified exports and Alt duplication.

→ Open SUPER PRINT


SUPER PRINT v1.7.336

Updated September 8, 2026

SuperTyPo — typeface decomposer & editor new

  • A brand-new SuperPrint companion: drop a font (.ttf, .otf, .woff, .woff2) and every glyph is decomposed into vector outlines (nodes + Bézier handles), ready to redraw by hand — inspired by FontGrapher / FontLab.
  • Full-screen editor with a pen tool (curves & tangents), node tool, shapes, deletion, unlimited undo and snapping to guides (baseline, x-height, caps, ascender/descender).
  • Boolean operations between outlines (Union / Subtract / Intersect), horizontal & vertical mirroring and 90° rotation.
  • Advanced per-glyph metrics: renaming, left/right side bearings (LSB/RSB), bounding box, point/contour count and advance width.
  • Re-export the modified font (.ttf/.otf) and native .sf (SuperFont) format with IndexedDB autosave — a banner offers to resume your work on reload.
  • Reachable from the SuperTyPo tab of the “New project” dialog; FR / EN / JP interface matching the SuperPrint design (light/dark theme).

PDF export — 100 % vector typography new

  • In “Finished size”, all typography is now vectorized in the CMYK PDF: word-by-word justification, per-character spacing/tracking, per-character bold/italic/colour styles and vector underline/strikethrough rules.
  • Complex text (justified, tracked, per-character bold) is no longer rasterized: “Finished size” now matches the “Crop marks + bleed” mode — 0 raster.
  • Export faithful to the preview: typography styles preserved, all text present and photos keeping their exact size (no more shrinkage on every export).
  • Fix: pages containing photos no longer lose their vector typography (the redundant full-canvas raster was removed) — validated RGB & CMYK, single and spread pages.

Fonts — true weights & persistent loading new

  • True 500 / 600 / 700 weights in WOFF2 (Open Sans, Montserrat, Roboto, Playfair Display) — latin & latin-ext — instead of synthetic faux bold.
  • Fonts loaded via “📁 Load fonts” are embedded in the .sp file and restored automatically on open; PDF export vectorizes them too.
  • Redesigned “Missing fonts” dialog (InDesign-style) with family replacement across the whole document, translated FR / EN / JP.

Export quality — true 72 DPI new

  • New Standard — 72 DPI “screen & web” level, truly effective, added at the top; 4 levels total: 72 / 200 / 300 / 600 DPI, with 200 selected by default.
  • Consistent across every export dialog (PDF, imposition, PNG/JPG) and the virtual printer; 72 DPI uses a light JPEG for screen/web.

P2P collaboration — easier to use improved

  • The invite link is now shown on screen (it used to stay hidden inside raw code): read-only field + auto-copy + a clear “link copied” status.
  • The guest's reply is also displayed clearly and auto-copied; both participants are shown with their colour chip on the “Connected” screen.
  • The top-bar button shows live status: a green dot and your peer's name appear as soon as the session is active.

SP213 Studio improved

  • The studio AI assistant is now format-aware: for narrow formats (cards, flyers) prompts are adapted with an anti-overflow guard.
  • The standalone studio is reachable straight from the local pre-home and falls back to “proxy OR direct” AI engine calls when the PHP proxy is absent.

→ Open SUPER PRINT


SUPER PRINT v1.7.329

Released September 4, 2026

Export geometry and editing tools stabilized

  • Pages containing photos now preserve vector typography without reintroducing duplicated text.
  • The redundant full-canvas raster was removed: photos retain their exact position, dimensions and scale during RGB and CMYK exports.
  • Imposition reserves a dedicated technical margin and draws crop marks even when bleed is disabled.
  • The Text frame tool now uses Fabric absolute coordinates, keeping the frame under the pointer with zoom and pasteboard enabled.
  • Flatplan duplication now regenerates every object's internal duplicate ID, improving stability after repeated page duplication.
  • Application version 1.7.329; compatible npm launcher 1.0.72.

→ Open SUPER PRINT


SUPER PRINT v1.7.328

Released September 4, 2026

RGB PDF font overlap fixed

  • A page requiring raster coverage no longer rewrites typography with pdf-lib over text already present in the image: every character is rendered once.
  • Invisible text and technical spread-overflow copies are excluded from the hybrid PDF pipeline.
  • Missing-font fallback remains readable and can no longer leave a partial second typography layer.
  • The fix was validated across four spread pages, multiple families and styles, then in regular RGB export and Imposition ordered 4, 1, 2, 3.
  • The standard color mode is now explicitly labeled RVB in both export dialogs.
  • Application version 1.7.328; npm launcher published as 1.0.72 with explicit PowerShell instructions.

→ Open SUPER PRINT


SUPER PRINT v1.7.327

Released September 4, 2026

Deterministic Flatplan geometry fixed

  • Rebuilding a standalone page in spread mode no longer mutates persistent JSON: the 3 mm bleed offset is now limited to rendering.
  • Photographs retain their exact size and position on both the source page and its Flatplan duplicate.
  • The editor now waits for masters, folios, overflow checks, text chains and guides before making a canvas interactive.
  • Timers belonging to an obsolete rebuild are discarded, preventing the first click from capturing an intermediate layout.
  • Application version 1.7.327; npm launcher 1.0.69.

→ Open SUPER PRINT


SUPER PRINT v1.7.326

Released September 3, 2026

Stable Flatplan duplication fixed

  • On Chrome and slower machines, a duplicated page can no longer be edited while Fabric is still rebuilding its images, objects or fonts.
  • The first click after applying the Flatplan now preserves text-frame dimensions, transforms, positions and image crops.
  • Rebuilding now waits for every canvas and required font to be genuinely ready instead of relying on a machine-dependent fixed delay.
  • Memory cleanup is suspended during this critical phase so Fabric caches are not purged while they are being built.
  • Single pages, true spreads and standalone pages in spread mode are covered, including the two-page document edge case.
  • Application version 1.7.326; npm launcher published as 1.0.68.

→ Open SUPER PRINT


SUPER PRINT v1.7.325

Released September 3, 2026

Imported PDFs stay vector on export new

  • No more giant exports: an imported vector PDF (logo, poster, flyer…) is now re-embedded AS-IS into the final PDF — original type, curves and transparency preserved, no more rasterisation in RGB/B&W.
  • Measured result: an export that weighed 90 MB drops to 65 KB — the source vector page is copied into the PDF instead of a full-page image.
  • The canvas preview stays a lightweight image (smooth editing), but every import path — side button, Import menu and drag & drop — now archives the source PDF for export; repeated exports stay vector.
  • The CMYK pipeline is unchanged: ICC conversion (FOGRA39, SWOP, Japan Color) and press output identical to previous releases.

Crop marks & imposition fixed fixed

  • Crop marks show up again on HD (300 dpi) and ULTRA HD (600 dpi) CMYK vector exports from the Export button, and on imposition sheets.
  • An imported PDF placed on an imposition sheet is now drawn in its exact slot (left or right page) instead of being centred across the double-width sheet.
  • If a render exceeds browser limits (very large Ultra HD sheets), the app now raises a real error instead of downloading a corrupt PDF with a false success message.

SP213 Studio: reliable .sp export and validated handoff improved

  • The local Studio (npm install) now downloads real .sp files: raw AI JSON is converted into a complete SuperPrint document before download, exactly like the online Studio.
  • The app loader validates every document (format, finite dimensions, pages and objects) before purging the current project; an invalid file is cleanly rejected and kept for recovery.
  • The Studio → editor handoff is atomic: the generated document can no longer be overwritten by the current preview, and the editor only opens with the layout if the transfer actually succeeded.
  • The Studio is available identically online (superprint.cc) and locally (npx superprint), with the same conversion and validation everywhere.

Faster startup performance

  • Export and import libraries (jsPDF, pdf-lib, fontkit, opentype, svg2pdf, PDF.js…) are loaded on demand at first export/import instead of at startup — a noticeable gain on older machines.
  • Application version 1.7.325; npm launcher 1.0.67. Recommended update for everyone who imports PDFs.

→ Open SUPER PRINT


PDF-YZ SEPTEMBER 2026

Released September 1, 2026

The PDF editor becomes a complete workspace new

  • Edit native PDF objects: select, move, recolour, replace or delete text, images, lines and rectangles without flattening the document.
  • Full-width find and replace with case and whole-word options, page or document scope, occurrence navigation and smooth processing of large PDFs.
  • A clearer page rail, instant local rotation, reordering, duplication, deletion, cropping, imposition and ICC profiles.

Built for long documents and mobile improved

  • Progressive loading reveals the document structure first, then rasterises pages with bounded concurrency; recent sessions can be searched, reopened or deleted.
  • On mobile, a five-action footer opens pages, search, Edit mode, additions and export through touch-friendly bottom sheets.

→ Open PDF-YZ


BIRD v1.0

Released September 1, 2026

A new local-first vector editor new

  • Bézier pen, pencil and vector brushes: Line, Ink, Marker, Spray and Neon, with size, smoothing, opacity and pressure controls.
  • Shapes, text, images, transparency, gradients, swatches, layers, arrangement, duplication and complete Undo/Redo history.
  • 100% vector Pathfinder powered by Paper.js: unite, subtract, intersect and exclude while preserving fill, stroke and opacity.

From desktop to mobile responsive

  • Infinite white canvas, centred zoom, panning, a discreet dotted artboard and collapsible desktop sidebars.
  • Dedicated mobile interface with a bottom tool rail, contextual property sheet and touch-sized handles.
  • Local .plume saves, SVG import and native SVG, PNG, JPG or WebP export.

→ Open BIRD


SUPER PRINT v1.7.317

Updated September 1, 2026

The biggest update of the year new

  • A brand-new Virtual Print Studio with real-time pre-flight, press preview, paper settings and direct printing to your real printer.
  • A greatly enhanced AI assistant: automatic page-format detection, on-demand grids & guides, font loading, DeepSeek V4 / OpenRouter / Groq engines.
  • 17 ready-to-use templates in the New Project dialog, Excel (XLSX), Word (ODT) and RTF import, and PDF export with selectable text and embedded fonts.

What's new in v1.7.317 updated

  • SP213 Studio now has a more robust editorial pipeline, a mobile interface, local preferences and better synchronisation between the online and locally installed versions.
  • Local installation is stronger: dependency checks, automatic recovery from partial installs and npm 12 compatibility without a remotely resolved XLSX dependency.
  • Application version 1.7.317; npm launcher 1.0.58 prepared for publication. CMYK PDF export is unchanged by this installer update.

Virtual Print Studio new

  • Real-time pre-flight: format, pages, bleed, margins, image resolution (<150 dpi flagged), fonts used, estimated ink coverage and colour space.
  • Press preview with bleed, safety hatches and print-order numbers; drag-and-drop page reordering without touching the layout.
  • Full print settings: paper (A6→SRA3, Letter, custom), orientation, quality (standard → ultra HD), copies, colour/B&W, page range, parity, scaling and duplex — all remembered.
  • Print to your real printer (network printers included) via the built-in IPP/mDNS bridge with automatic network printer discovery.

AI assistant improved

  • Automatic page-format detection in prompts (A0–A8, card, flyer, poster, brochure…) with canvas adaptation and a “Format detected” message.
  • On-demand grids & guides (columns, N×M, baseline, gutter) with the G shortcut, plus automatic loading of requested fonts.
  • Engines aligned app ↔ studio: DeepSeek V4 (Flash / Pro / Vision), OpenRouter (9 free models) and Groq (5 models) with synced keys.
  • AI rendering aligned to bleed (critical rule embedded in the prompt) and web image search straight from the studio.

Import & templates new

  • Excel (XLSX) import: sheets are converted into tables and flowed into the layout automatically.
  • Word (ODT) and RTF import with bold / italic preserved.
  • Redesigned “New Project” dialog with 5 tabs including Templates (17 templates, 5 per row), screen/print colour mode and direct Studio access.

PDF export improved

  • Selectable text in the exported PDF with embedded fonts (no more plain “outlines”) when the font is resolved.
  • Fixed bleed (independent of crop marks), multi-page text positioning, stretched single crop and duplicated crop marks.
  • Canvas overflow guard (confirmation for oversized output), automatic lossless PNG when transparency is present, and imposed export fully vector again.

Save & styles improved

  • Typography styles and colour swatches are now saved into .sp / .json files and restored on load.
  • Enriched public API (saveProject / loadProject aligned with local save: viewMode, colorMode, guides, project name, numbering).

Interface & experience improved

  • 2-column export dialog, single Group/Ungroup toggle, settings moved to the top bar, polished hover everywhere.
  • Homepage reordered “online first”, animated hover on blocks (arrow + description), fully responsive on mobile, legal footer with 3 notices.
  • Artistic splash screen (online photos with local fallback), English/French/Japanese by default, “free” wording and PayPal removed.

Reliability & performance improved

  • Near-instant local startup (splash closes in ~350 ms, no network request), studio thumbnails rendered without freezing the browser.
  • Fixes: fonts lost studio → app, textbox height, swatch crash, hard-coded Windows paths, robust PowerShell/Mac/Linux installer.
  • Versioned PWA cache, application 1.7.317, npm launcher 1.0.58 prepared and fully English CLI.
  • 57 cumulative versions (v1.7.260 → v1.7.317): the richest release series in SUPER PRINT history.

→ Open SUPER PRINT


SIMIA v1.0.0

Released August 4, 2026

Local-first AI workspace new

  • Run selected WebLLM models in the browser, with no account and conversations stored locally.
  • Choose focused profiles for writing, creative direction, code, maths, and reasoning.
  • Messages now render fenced html, css, javascript, and other code blocks in a readable format.
  • Conversations auto-save in the browser and can be exported as a complete JSON backup.
  • Installable PWA with an offline application shell and English-first interface with French switch.

→ Open SIMIA


SUPER PRINT v1.7.260

Released August 3, 2026

New official home new

  • superprint.cc is now the canonical home for the app, documentation, sitemap and shared previews.
  • Collaboration invites generated from a local context now use this official address too.

More faithful IDML import improved

  • Fonts, sizes, weights, italics, colors, tracking, underline, strikethrough, alignment and leading are preserved.
  • IDML stories now reflow through linked frames without text duplication.

PWA and reliability improved

  • The superprint-shell-v1.7.260-domain-idml PWA cache includes scripts required for a complete first offline launch.
  • Fixed a Fabric-derived Canvas warning during text rendering.

→ Open SUPER PRINT


CAMERRA v1.1.0 — Reliable Capture & WHIP Broadcast

Released — August 2, 2026

Safer camera sessions new

  • Camera and microphone permission streams are now released immediately after device discovery.
  • The per-camera audio toggle now controls the actual audio tracks.
  • Resolution and frame-rate changes preserve the active feed on failure and are blocked while recording.
  • Closing CAMERRA now cleans up active camera feeds, recorders, canvas composition and audio resources.

WHIP broadcast and performance improved

  • WHIP endpoints require HTTPS, except local development endpoints.
  • Relative WHIP resource URLs are resolved correctly when ending a live session.
  • Composite rendering is capped at 30 fps and broadcast media tracks are released after use.
  • PNG snapshots now use Blob URLs to reduce peak memory usage.

→ Open CAMERRA


NINJAX v1.0.0 — New 3D Quest Game

Released — August 2, 2026

Explore the plateau and complete the mission new

  • New browser-based 3D ninja quest with an explorable plateau, villagers, treasure chests and a minimap.
  • Clear main objective: collect the five diamonds scattered across the plateau.
  • Mission progress, game state and the completed quest are saved locally.

→ Open NINJAX


COOLTEL v1.1.2 — New Android App

Released — August 3, 2026

French call protection for Android new

  • New COOLTEL identity across the Android app, product website and APK download.
  • Local call screening for French telemarketing ranges, premium-rate numbers and selected international nuisance-call prefixes.
  • Three filtering modes: broad protection, French telemarketing ranges only, or a personal block list.
  • Signed French spam-database updates, verified on-device before installation.
  • Personal numbers can be added in French or international format.
  • Android 8+ installation; automatic call blocking requires Android 10+.

→ Open COOLTEL


CUT THE FLOW v3.9.0 — New VP9+Opus Offline Engine + Export Bug Fixes

Released — July 17, 2026

⚡ Nouveau moteur d'export VP9 + Opus (WebM offline) new

  • Moteur 100 % déterministe — encode chaque frame et chaque échantillon audio hors temps réel via WebCodecs VP9 + Opus, puis assemble en WebM via un muxer EBML inline. Le résultat est bit-identique quelle que soit la vitesse de la machine — seul le temps d'export change.
  • Zéro dépendance au real-time — contrairement au moteur Canvas (MediaRecorder), aucun setTimeout ni pacing d'horloge. Audio et vidéo synchronisés par timestamps mathématiques.
  • VP9 ~40 % plus efficace que H.264 à qualité visuelle égale. Opus supérieur à AAC pour le son.
  • GPU automatique si disponible, software sinon — transparent pour l'utilisateur.
  • Mis en avant comme moteur recommandé par défaut dans la pop-in d'export.

🛠️ Audit complet des moteurs d'export — bugs critiques corrigés fix

  • Canvas-export : crash audio TDZ — fi (fadeIn) et fo (fadeOut) étaient utilisés avant leur déclaration (const dans la Temporal Dead Zone). L'audio de l'export crashait silencieusement → fichier muet. Corrigé pour les clips audio purs ET l'audio des vidéos.
  • Canvas-export : désync audio/vidéo sur petites machines — l'audio joue en temps réel (1×) mais si le rendu d'une frame prend trop longtemps, la vidéo prenait du retard progressif. Ajout d'un frame-skipping adaptatif : quand le rendu tombe >2 frames derrière, on saute à la frame correspondant à l'horloge audio.
  • Canvas-export : fuite de ressources sur erreur — les éléments <video> dans le DOM, les MediaStream tracks et l'AudioContext n'étaient pas nettoyés en cas d'échec. Déplacé dans finally.
  • WebCodecs-export : crash null-deref — updateProgress / updateStatus ne vérifiaient pas l'existence des éléments DOM. Aligné avec le pattern des autres moteurs (if (el)).
  • WebCodecs-export : crash TypeError overlays — app._calcFadeOpacity() appelé directement sans vérifier son existence. Ajout du guard app._calcFadeOpacity ? ... : 1.0.
  • Unified-export : ~950 lignes de code mort — un ancien moteur inline après un return était totalement inatteignable. Supprimé.

🎨 Pop-in d'export redessinée new

  • 5 moteurs clairement présentés avec badges, descriptions et explications détaillées pour chaque choix.
  • Ordre de priorité : VP9+Opus (nouveau, recommandé) → Unifié (auto) → H.264+AAC (MP4) → Canvas Real-time (fallback) → Classique (compatibilité max).
  • Détection automatique de la disponibilité VP9 WebCodecs — grisé si absent.
  • Panneau d'explication dynamique sous les boutons moteur.

🔧 Technical

  • New file: js/webm-webcodecs-export.js (VP9+Opus engine + inline EBML muxer)
  • Service Worker bumped to cuttheflow-shell-v3.9.0
  • 5 export engines: webm-webcodecs, webcodecs (MP4), canvas, mediarecorder, unified (router)

→ Open CUT THE FLOW


SUPER PRINT v1.7.259

Released July 2–3, 2026

✍️ Write in / around a shape & Write on path new

  • Grouped copy/paste — click either member to copy both. The pasted pair is fully linked and stays on the page.
  • Around mode: shape in front — shape is in front; double-click shape to insert image, double-click text to edit.
  • Proportional resize — font, stroke and shape geometry all scale together.
  • Inside mode: no more ghost shapes — single clean regeneration on resize.

📄 Vector PDF export — major fixes fix

  • Pen strokes & write-on-path text now fully exported (were missing).
  • Around text: no stray masks — true vector glyphs along the curve.
  • Polygons & polylines now exported in vector mode.
  • Open pen trace used as guide: removing its stroke now fully hides it from the PDF.

🔧 Technical

SW: superprint-shell-v1.7.259-penfill-fix. Vector paths use calcTransformMatrix() for pixel-perfect accuracy.

→ Open SUPER PRINT


CUT THE FLOW v4.2.0 — Full Touch Support + Robustness + Accessibility

Released — July 1, 2026

📱 Timeline & preview enfin pilotables au doigt new

  • Timeline 100 % tactile — déplacement de la tête de lecture, drag des clips (simple + multi-sélection), trim (poignées gauche/droite) et changement de piste utilisaient exclusivement les événements souris → inutilisables sur tablette / mobile. Tout est migré vers les Pointer Events (avec pointercancel). La souris se comporte à l'identique ; le tactile fonctionne désormais parfaitement sur iPad / Android / écrans hybrides.
  • Overlays de preview tactiles — drag du texte, drag + redimensionnement des blocs (8 poignées) et repositionnement/scale de la vidéo (4 poignées) passent aussi en Pointer Events.
  • touch-action: none sur les éléments draggables pour que le geste tactile pilote le drag au lieu de scroller/zoomer la page.

🛡️ Robustesse — plus de défaillance silencieuse new

  • Nouveau gestionnaire d'erreurs global (error + unhandledrejection) : les erreurs non capturées et rejets de promesses affichent un message discret et rate-limité, avec trace console pour le debug. Les bruits bénins (ResizeObserver, erreurs cross-origin) sont ignorés.

♿ Accessibilité (WCAG) new

  • Anneau de focus clavier (:focus-visible) restauré sur les éléments interactifs qui masquaient l'outline pour le rendu souris — visible uniquement au clavier (WCAG 2.4.7).
  • Splash screen doté de role="status" + aria-live pour une annonce correcte par les lecteurs d'écran.

🔧 Technical

Service Worker bumped to cuttheflow-shell-v4.2.0-touch-a11y.

📝 Details

Single-page editor · Vanilla JS class CutTheFlow · 100% client-side, no backend

→ Open CUT THE FLOW


CUT THE FLOW v4.1.1 — Export Engines Audio Audit + Adaptive Preview

Released — July 1, 2026

🎧 Audit des 5 moteurs d'export — audio+vidéo enfin parfait partout fix

  • WebCodecs (MP4 H.264) n'exportait plus le son — les clips audio étaient collectés puis jamais muxés → fichier muet. Désormais, dès qu'un projet contient de l'audio, WebCodecs bascule automatiquement vers le moteur MP4 audio+vidéo (MediaRecorder / H.264). Les montages 100 % muets gardent le chemin hardware ultra-rapide.
  • Lite (WebM VP9) exportait muet — l'ancien code montait tout le pipeline audio, le jouait à voix haute pendant l'export, l'enregistrait dans un flux jeté, puis l'ignorait. Le muxer WebM interne étant vidéo-seule, Lite délègue maintenant les projets sonores au muxage WebM VP9/Opus natif (audio+vidéo garanti), en conservant la réduction de résolution des petites machines.
  • Studio perdait l'audio embarqué dans les vidéos — l'extraction via captureStream()→OfflineAudioContext est un no-op. On décode désormais le fichier source (fetch + decodeAudioData) dans le mix offline, exactement comme les clips audio.
  • Volume de piste respecté à l'export — trackVolume était ignoré par Studio/Lite (toujours 100 %). Il est maintenant propagé depuis la piste, comme le fait déjà le moteur MediaRecorder.

🐢 Mode performance preview — contrôle manuel pour petites machines new

  • Nouvelle préférence « Mode performance (preview) » (section EXPORT & QUALITÉ) : force la preview en mode allégé (frames allégées + horloge JS stable) sans attendre la détection automatique. Idéal Mac Intel / petites machines. À laisser OFF sur grosse machine pour une preview ultra-fluide. Appliqué en direct, persisté, pris en compte par l'auto-optimisation.

🎥 Timeline multi-piste — audit

  • Logique de composition vérifiée et confirmée cohérente : piste du haut au premier plan, overlays texte/formes empilés correctement, pistes audio exclues de la composition vidéo. Aucune régression.

🔧 Technical

Service Worker bumped to cuttheflow-shell-v4.1.1-audio-engines.

📝 Details

Single-page editor · Vanilla JS class CutTheFlow · 100% client-side, no backend

→ Open CUT THE FLOW


SUPER PRINT v1.7.232

Released June 17, 2026

🔲 Rounded corners new

  • New rounded corners panel in right sidebar — auto-shows for rectangles.
  • Linked mode: one slider for all 4 corners.
  • Unlinked mode: 4 independent corner sliders.
  • One-click linked/unlinked toggle. Image masks preserved on conversion.
  • Fully persisted in .sp and .json exports.

🍏🐛 Bug Fixes fix

  • Safari Mac text tool completely reworked.
  • Mac font size fix for vectorization & vector PDF.
  • Vector PDF export text section fully rewritten.
  • Fixed text disappearing on paste.

⌨️ New Shortcuts new

  • Ctrl+T now toggles right sidebar instead of opening a new tab.

→ Open SUPER PRINT


SUPER PRINT v1.7.216

Released June 15, 2026

🐛 Bug Fixes fix

  • bold → 700, normal → 400) in WOFF2 font loading." data-i18n-jp="ネイティブベクターPDF出力(「ベクタータイポグラフィ」チェック時):プレビューと生成PDF間でフォントサイズが完全に保持されるようになりました。WOFF2フォント読み込み時のフォントウェイト正規化(bold → 700、normal → 400)を修正。">Font sizes perfectly preserved in native vector PDF export. Fixed fontWeight normalization in WOFF2 font loading.
  • Vectorization now preserves original size and style.
  • Splash screen no longer freezes on startup.
  • Imposed PDF export loader no longer hangs.

✨ New Features new

  • Native vector PDF with selectable text, embedded fonts, vector shapes — like InDesign.
  • User-uploaded custom fonts supported in vector export.
  • Added fontkit.min.js for TTF parsing.

→ Open SUPER PRINT


SUPER PRINT v1.7.179

Released June 11, 2026

🔤 Vectorization final fix fix

Y inversion in SVG, correct baseline, unified right-click/sidebar.

🔢 Version

Service-worker and cache-bust updated to v1.7.179.

→ Open SUPER PRINT


SUPER PRINT v1.7.176

Released June 8, 2026

🔤 Figma-like vectorization new

Real glyph-to-Bézier paths via opentype.js. Font cache, kerning, 2 modes.

🩹 Fixes fix

  • Fixed right-click vectorize not working.

🔢 Version

Service-worker and cache-bust updated to v1.7.176.

→ Open SUPER PRINT


SUPER PRINT v1.7.175

Released June 8, 2026

🔤 Figma-like text vectorization new

Text vectorization now uses opentype.js for real Bézier paths. Font cache, kerning, 2 modes.

📐 Automatic columns new

Column choice now creates empty text blocks automatically.

🖊️ Text in/around/on shape — InDesign-like new

Visible cursor, auto sidebar, IText typography panel for all shape text modes.

🩹 Fixes fix

  • Undo/Redo returns to correct page.
  • Cross-page multi-selection fixed.
  • Cover checkbox removed.

🔢 Version

Service-worker and cache-bust updated to v1.7.175.

→ Open SUPER PRINT


SUPER PRINT v1.7.174

Released June 8, 2026

🏷️ Version sync fix

Version numbers in Settings pop-in and documentation synced to v1.7.174.

🖼️ Template images now local fix

Templates now use local photos instead of external URLs.

🔢 Version

Service-worker CACHE_NAME → superprint-shell-v1.7.174-version-sync. Cache-bust JS/main.js?v=20260608-v174-version-sync.

→ Open SUPER PRINT


SUPER PRINT v1.7.173

Released June 8, 2026

🖼️ Local themed images new

Automatic layout images are now stored locally in img/auto/ (75 real Unsplash photos, free license). No more network calls freezing the browser on large documents. Each theme has 4 dedicated photos.

🎨 New color themes new

6 new themes: Swiss, Editorial, Warm, Cool, Neon, Pastel.

🔤 Extended font pairs new

13 font pairs including IBM Plex Mono and IBM Plex Sans. Fonts are now consistent with the chosen theme.

📐 7 layout patterns new

7 print-inspired patterns: Hero, Full Image, Swiss Grid, Editorial, Asymmetric, Grid, Color Block, Minimal.

🩹 Fixes & optimizations fix

  • Z-order : text is always on top, above images and shapes.
  • Bleed : all shapes touching edges use elFull (3 mm on each side).
  • Footer margin : content stops 32 mm from the bottom.
  • Spreads : per-page backgrounds, no bleed at center fold.
  • Performance : image loading throttled in batches of 4.

🔢 Version

Service-worker CACHE_NAME → superprint-shell-v1.7.173-local-images-zorder. Cache-bust JS/main.js?v=20260608-v173-local-zorder. All version labels synced to v1.7.173.

→ Open SUPER PRINT


SUPER PRINT v1.7.172

Released June 8, 2026

🎨 Varied AI layouts by document type new

The automatic layout engine now detects document type and adapts the layout:

  • Magazine/Brochure/Catalog/Portfolio : classic hero band with image and title
  • Lookbook/Poster : full-page image with minimal text overlay
  • Book/Report/Newsletter : clean layout, centered title, no hero band

🔢 Version

Service-worker CACHE_NAME → superprint-shell-v1.7.172-doctype-layouts. Cache-bust JS/main.js?v=20260608-v172-doctype-layouts. All version labels in index.html synced to v1.7.172.

→ Open SUPER PRINT


SUPER PRINT v1.7.170

Released June 8, 2026

✏️ InDesign-style text on path new

Text inside, around and on shapes and paths has been completely redesigned to match InDesign behavior:

  • Text inside : automatic inner padding (4%), source shape in semi-transparent light gray to suggest the container, adaptive width (72% circle, 88% rectangle).
  • Text around : repeating pattern that wraps the full perimeter, adaptive font size based on shape dimensions, proportional character spacing. Source shape becomes invisible — only the curved text is visible.
  • Text on path : path length measured automatically, font size calculated to fill the path (14-36pt), compatible with pen, pencil and freeform.

🤖 Automatic layout engine (no AI required) new

New Automatic tab in the New Project pop-in. A pure JavaScript engine generates professional layouts from keywords:

  • Keywords : brochure, 8 pages, 2 columns, corporate, cover, title → full layout with cover, titles, subtitles, Lorem ipsum columns, decorative shapes.
  • 6 color themes : corporate, creative, nature, modern, luxury, tech — each with its own primary/accent/text palette.
  • 6 font pairs : Bebas Neue+Open Sans, Playfair Display+Lato, Poppins+Open Sans, Montserrat+Roboto...
  • 🎲 Random example button : generates a prompt and layout automatically to discover keywords.

🧲 Z-index preserved during drag fix

Moving an object (image, text, shape) no longer sends it behind other elements. The dragged object is automatically brought to front (bringToFront) at drag start.

🌐 i18n & DeepSeek as default new

The Basic/Advanced tabs in the New Project pop-in are now translated (EN/FR/JP). DeepSeek is the default AI engine (🚀 Recommended), with 4 models available including V3 and R1.

🧹 Console log cleanup fix

Removed diagnostic console.log calls that were running in production (PDF export, master injection, vector font loading, multi-page asset build). Imposition logs remain protected behind window.__sp_imp_debug.

🔢 Version

Service-worker CACHE_NAME → superprint-shell-v1.7.170-indesign-text-curve. Cache-bust JS/main.js?v=20260608-v170-indesign-text-curve. All version labels in index.html synced to v1.7.170.

→ Open SUPER PRINT


SUPER PRINT v1.7.169

Released — June 8, 2026

📋 Copier-coller entièrement refondu fix stable

Le copier-coller (Ctrl+C / Ctrl+V) a été intégralement audité et corrigé pour tous les types d'objets — shapes, SVG, images, texte, sélections multiples — sur tous les chemins : raccourcis clavier, menu contextuel mobile, Alt+clic, Alt+drag. Les correctifs couvrent :

  • Clone direct natif Fabric : le presse-papier stocke maintenant des clones obj.clone() natifs au lieu de JSON toObject() + enlivenObjects(). Le chemin JSON perdait des propriétés géométriques internes (surtout sur polygon et path) → la forme collée était déformée ou "toute petite".
  • Sélections multiples scalées : l'échelle du groupe ActiveSelection n'était pas propagée aux enfants lors du collage → objets collés à leur taille de base au lieu de la taille affichée. Capture maintenant la matrice de transformation monde complète (calcTransformMatrix() + qrDecompose()) avant le dégroupage.
  • Position de collage : les objets collés en multi-sélection atterrissaient en haut à gauche de la page au lieu d'être décalés de 10 px par rapport aux sources. Le _spRestoreSourceXforms écrivait des coordonnées monde dans des propriétés interprétées comme relatives au centre du groupe → positions négatives.
  • Cache bitmap Fabric désactivé sur les formes : le cache objectCaching de Fabric.js produisait un bitmap périmé sur les clones de formes (polygon, path, rect, circle…). Résultat : le cadre bleu de sélection était à la bonne taille mais l'intérieur restait vide ou minuscule jusqu'à ce qu'on touche une poignée. Le cache est maintenant désactivé (objectCaching = false) sur toutes les formes vectorielles après collage — rendu direct, toujours correct.
  • Source non mutée : le _spRestoreSourceXforms du Ctrl+C objet seul pouvait réappliquer des valeurs périmées après que obj.clone() ait muté des propriétés internes de la source (ex: polygon._pathOffset recalé) → la shape source devenait "toute petite". Supprimé — comme Alt+clic qui fonctionnait déjà.

↩️ Undo/Redo : déplacement d'objets fix

Ctrl+Z après avoir déplacé une image ou une forme ne la ramenait jamais à sa position d'origine. Cause : un trou temporel dans l'historique — le saveState n'était fait qu'au mouse:up (avec 300 ms de debounce). Si Ctrl+Z arrivait avant, l'état pré-déplacement n'existait pas. Un saveState('Déplacement') est maintenant posé au mouse:down, avant le début du drag. L'entrée est renommée en "Objet modifié" au mouse:up pour éviter les doublons.

✏️ Texte sur forme/tracé : édition immédiate new

Ajouter du texte dedans, autour ou dessus une forme ou un tracé (clic-droit) ouvre maintenant automatiquement le panneau typographie de la sidebar droite et passe en mode édition. L'utilisateur peut changer police, corps, couleur et taille sans friction. Le double-clic sur un texte-dans-forme active un mode "déplacement détaché" (bouger le texte indépendamment dans la forme) sans bloquer l'édition.

🖼️ Boutons d'image restylés new

Les boutons recadrer et remplacer sur les images sélectionnées passent d'un carré noir à un fond blanc arrondi avec ombre, icônes foncées par-dessus, empilés verticalement le long du bord droit. L'icône "ciseaux" est remplacée par une icône de cadrage (équerres) bien plus parlante, et l'icône remplacer par une boucle de flèches (repeat).

🔢 Version bumps

Service-worker CACHE_NAME → superprint-shell-v1.7.169-multipaste-position. Cache-bust JS/main.js?v=20260608-v169-multipaste-position. Tous les labels de version dans index.html (splash screen, badge, footer, meta generator, SEO) synchronisés sur v1.7.169. Le service-worker fait maintenant skipWaiting() dans l'event install pour activation immédiate (plus de version "waiting" fantôme).

→ Open SUPER PRINT


MAT v1.7.4 — Import/Export .mat fix

Released — June 1, 2026

🐛 Critical: .mat files could not be reopened fix

  • saveElle() exported as .mat (JSON), but openFile() only matched .elle and .json — so any saved .mat fell through to the XLSX parser and failed silently.
  • Fix: openFile() now accepts .mat, .elle and .json.

🛡️ Workbook normalization on load new

  • New normalizeWB() / normalizeSheet() applied to every load path (file open, IPFS, autosave Resume).
  • Converts legacy 2D-array cells to address-keyed map, grows rows/cols to fit all stored cells, clamps activeSheet, fills missing meta/app/version fields.
  • Active sheet is now preserved on load (was hard-reset to 0).

🔧 Technical

Pure browser spreadsheet · Vanilla JS · IndexedDB autosave · IPFS backup via Pinata · offline PWA.

→ Open MAT


CUT THE FLOW v3.7.9 — Shapes & Text Drag + FX Stacking + Fades

Released — June 1, 2026

🖐️ Texte & Formes — déplacement enfin fluide fix

  • Fin du « blocage » — le glisser d'une forme appelait updatePreview() à chaque mouvement, ce qui reconstruisait les overlays et annulait le signal du drag en cours → le geste décrochait. Le déplacement et le redimensionnement mettent désormais à jour le style en direct (rAF), sans reconstruction, avec sauvegarde uniquement au relâchement.
  • Pointer Events partout — texte et formes passent en pointerdown/move/up avec setPointerCapture : souris + tactile + stylet, le drag ne se perd plus si le curseur sort de la zone, touch-action:none (plus de scroll parasite), curseur move/grabbing, sélection du clip au début du geste, sliders du panneau Propriétés synchronisés en direct.

✨ Cumul de FX (effets empilables) new

  • Plusieurs effets par clip — modèle clip.effects[] ({name, intensity}) avec migration auto de l'ancien clip.effect. Clic = ajoute & sélectionne · re-clic d'un FX actif = règle son intensité · encore une fois = le retire · « None » vide la pile.
  • Aperçu = export — la pile est rendue dans un seul canvas via les mêmes algorithmes que l'export (_applyEffectToCtx) ; le color grading reste appliqué par-dessus.

🌗 Intro / Outro — fade in/out audio + vidéo

  • Le panneau Fade s'applique à n'importe quel clip (vidéo, image, audio, forme, texte), en aperçu et à l'export — fade vidéo (images / vidéos / overlays) et fade audio (baseGain × _calcFadeOpacity), audio de vidéo inclus.

🔍 Audit export (.ctf / .json / vidéo+audio)

  • Vérifié que effects[] et fadeIn/fadeOut sont persistés par les 3 formats de sauvegarde (.ctf, .json, Pinata) et restaurés au chargement.
  • Export vidéo confirmé cohérent : fades, pile de FX (_getClipEffects) et color grading rendus à l'identique de l'aperçu.

🔧 Technical

Service Worker bumped to cuttheflow-shell-v3.7.9-shapes-text-drag.

📝 Details

Single-page editor · Vanilla JS class CutTheFlow · 100% client-side, no backend

→ Open CUT THE FLOW


CUT THE FLOW v3.7.6 — Timeline + Export Quality Pass

Released — May 24, 2026

🎬 Timeline + Preview improved

  • Pixel-perfect playhead — playhead & rulerPlayhead rounded to integer pixels (Math.round) → no more sub-pixel jitter during playback
  • Quantized frame-step — ← / → (1 frame) and J / L (1 s) now routed through quantizeTime() → zero float drift after 100+ steps
  • Wheel hijack fixed — timeline zoom only on Ctrl + wheel (previously every wheel event was hijacked, breaking normal scroll) fix
  • isTimeInClip boundary fix — symmetric epsilon at both ends → no more 1-frame black flash between abutted clips fix

🚀 Export Quality improved

  • Video bitrates raised to YouTube SDR levels (VP9/VP8):
    • HIGH — 720p 5 → 8 Mbps, 1080p 8 → 16 Mbps, 4K 12 → 30 Mbps
    • MEDIUM — 720p 3 → 6 Mbps, 1080p 5 → 10 Mbps, 4K 8 → 18 Mbps
    • Default 6 → 10 Mbps · WebM/VP8 fallback 4 → 8 Mbps
  • Color grading memoized — applyColorGradingToContext() skips ctx.filter reassignment when the filter string is unchanged (avoids re-parsing the GPU filter chain every frame)
  • GPU-friendly grading canvas — created with { alpha: false, willReadFrequently: false } + imageSmoothingQuality: 'high'

🔧 Technical

Service Worker bumped to cuttheflow-shell-v3.7.6-timeline-export-quality.

📝 Details

Single-page editor · Vanilla JS class CutTheFlow · 100% client-side, no backend

→ Open CUT THE FLOW


CUT THE FLOW v3.7.5 — Audio Pipeline Audit

Released — May 24, 2026

🎧 Audio Quality — End of the Crackles fix

  • AudioContext locked to 48 kHz — built with { sampleRate: 48000, latencyHint: 'playback' } → no more browser resampling artifacts on MP3/AAC sources
  • Opus bitrate doubled — export audioBitsPerSecond bumped 128 kbps → 192 kbps on both primary and fallback MediaRecorder paths (matches optimized-export.js)
  • Seed-once audio sync — export per-frame loop no longer writes audioEl.currentTime on every frame (the cause of decoder click/crackle). Seek once at clip entry, then only resync on catastrophic drift (> 250 ms)
  • Preview drift threshold — relaxed during playback (0.25 s while playing, 0.05 s when paused) → no micro-seeks while listening
  • playbackRate + preservesPitch enforced each tick → zero time-stretch artifacts

🎙️ Extract Audio — No More Double Playback fix

  • Source video is now marked audioUnlinked = true + audioMuted = true after extraction → no more double audio / clipping when both the video clip and the extracted audio track play together
  • Extraction now uses media.originalUrl (full-quality source) instead of the lightweight preview proxy

📝 Details

Single-page editor · Vanilla JS class CutTheFlow · 100% client-side, no backend

→ Open CUT THE FLOW


SUPER PRINT v1.7.150

Released — June 3, 2026

👻 Copier / coller d'images : fin des images « fantômes » fix

En copiant-collant des images d'une page à une autre, certaines images ou blocs apparaissaient sur la page de destination comme des images « fantômes » : elles clignotaient (apparition / disparition aléatoire, juste après le collage et plus tard) et semblaient s'ajouter en double à la composition. En cause : le cache de rendu de Fabric (objectCaching, activé par défaut sur les images) pouvait dessiner un bitmap périmé du clone collé tant qu'un rendu complet ne l'avait pas régénéré — notamment parce que le clonage d'une image est asynchrone. Le collage invalide désormais explicitement le cache de chaque objet collé (et de ses enfants dans un groupe) puis force un rendu complet immédiat et différé, ce qui élimine le clignotement et les doublons visuels.

🔢 Version bumps

Service-worker CACHE_NAME et la query JS/main.js?v=… sont alignés sur v1.7.150 / superprint-shell-v1.7.150-paste-ghost-fix / v=20260603-v150-paste-ghost-fix.

SUPER PRINT v1.7.149

Released — June 3, 2026

🎠 Pop-in « Nouveau projet » : 10 modèles de plus dans le carrousel new

La bande défilante de modèles charge désormais 10 modèles supplémentaires issus de la bibliothèque d'assets principale (gastronomie, sport, architecture, voyage, danse, animaux, burger, flyers restaurant / événement / concert), à la suite de ceux déjà présents.

⌨️ Barre de prompt IA : saisie de texte normale fix

Dans la barre de prompt IA dockée en pied de preview, il était impossible d'effacer le texte (Retour arrière / Suppr) ou de naviguer avec les flèches : seule la frappe de caractères fonctionnait. Le champ étant positionné dans la zone du canevas, les raccourcis globaux interceptaient ces touches. La saisie (effacement, flèches, annulation) est désormais entièrement normale.

🔢 Version bumps

Service-worker CACHE_NAME et la query JS/main.js?v=… sont alignés sur v1.7.149 / superprint-shell-v1.7.149-carousel-assets-ai-input / v=20260603-v149-carousel-assets-ai-input.

SUPER PRINT v1.7.148

Released — June 2, 2026

🖼️ Modèles de magazine : photos uniques & pages mieux remplies new

Passe en profondeur sur les trois derniers modèles (Coiffure, Cuisine, Musique). Chaque emplacement d'image reçoit désormais une photo unique et vérifiée : fini les visuels répétés au sein d'une même maquette. Les pages du grand format Coiffure sont enrichies : feature « Le geste du coiffeur », routine d'entretien en 4 étapes, « Salon du mois » illustré et encart d'abonnement. La page « Albums du mois » du magazine Musique gagne un bloc « Coup de cœur ».

🎯 Pop-in « Nouveau projet » : carrousel de modèles repositionné fix

La bande défilante « Ou partez d'un modèle » revient en bas de la fenêtre, sous les réglages, avec une barre de défilement horizontale plus fine et discrète.

🌐 Traduction du libellé des modèles fix

Le titre « Ou partez d'un modèle » et l'indication « faites glisser » restaient en français quelle que soit la langue. Ils sont désormais correctement traduits en FR / EN / JP et suivent la langue de l'interface.

📑 Export PDF « imposition » en mode page simple fix

L'export d'imposition fonctionnait en double page mais buguait au niveau de la couture en mode page à page (chevauchement dû au fond perdu intérieur). Le rognage par emplacement (gauche / droite) corrige le raccord.

👻 Copier-coller : fin des images « fantômes » fix

Copier-coller (Ctrl+C / Ctrl+V) d'une page à l'autre pouvait faire apparaître des blocs « fantômes » qui clignotaient et s'ajoutaient à la composition. Les objets internes (gabarits, numéros de page, miroirs, indicateurs) sont désormais exclus de la copie.

🔢 Version bumps

Service-worker CACHE_NAME et la query JS/main.js?v=… sont alignés sur v1.7.148 / superprint-shell-v1.7.148-template-photos-unique-fill / v=20260603-v148-template-photos-unique-fill.

SUPER PRINT v1.7.143

Released — June 2, 2026

🤖 Outil IA entièrement repensé new

La pop-in IA a été simplifiée pour être plus claire et plus efficace : on prompte moins, on obtient mieux. Trois nouveautés clés :

  • Sélecteur de structure : un choix explicite Page simple / Double page / Multi-pages (avec nombre de pages). Ce réglage est désormais autoritaire sur l'analyse du texte — l'IA sait sans ambiguïté combien de pages produire, ce qui rend les maquettes nettement plus probantes.
  • Inspiration rapide : 8 puces courtes (couverture magazine, page éditoriale 2 colonnes, affiche, catalogue, menu, CV, flyer, page de garde) qui pré-remplissent un prompt naturel au lieu des longues séries de prompts verbeux d'avant.
  • Barre de prompt IA en pied de preview : activable via une case dans la pop-in (état mémorisé). Une barre dockée en bas de l'aperçu permet de générer directement sur la page active sans rouvrir la fenêtre.

🧹 Fin des placeholders « à générer » fix

Les pages créées en surplus n'affichent plus le texte gris [ CONTENU À GÉNÉRER VIA IA ] qui donnait un rendu « à côté ». Les pages supplémentaires restent propres et vides, prêtes à être générées une par une. Le contexte envoyé à l'IA injecte aussi le type de document et le nombre de pages pour une compréhension non ambiguë de SUPER PRINT.

🆕 Nouvel écran de création de document new

La fenêtre « Nouveau document » est scindée en deux onglets : Basique (formats prédéfinis, nombre de pages, mode page simple / double) et Avancé (largeur/hauteur précises, marge, fond perdu, mode couleur RVB / CMJN). Une bande d'assets défilante propose des modèles directement cliquables depuis cet écran.

📒 5 nouveaux modèles prêts à l'emploi new

  • Magazine 8 pages — Cuisine (double page)
  • Magazine 8 pages — Musique (double page)
  • Menu de restaurant 4 pages
  • CV professionnel 1 page
  • Livre 12 pages tout-texte, typographie clean

💾 Import / Export .sp & .json renforcé fix

Re-audit complet de l'import/export dans les deux sens. Le mode couleur (RVB / CMJN) et les repères manuels (guides) sont désormais persistés et restaurés correctement dans les fichiers .sp, .json local et .json IPFS. Les repères sont ré-appliqués par index de page après le rendu.

🔢 Version bumps

Splash, header badge, JSON-LD softwareVersion, service-worker CACHE_NAME et la query JS/main.js?v=… sont alignés sur v1.7.143 / superprint-shell-v1.7.143-ai-newdoc-templates-importexport / v=20260602-v143-ai-newdoc-templates-importexport.

SUPER PRINT v1.7.139l

Released — May 16, 2026

🎨 Icônes des widgets restaurées (menu masque, ancrage 3×3, pagination) fix

Les emojis du menu « Masque d'image » (Importer/Remplacer, Remplir, Ajuster, Positionner, Retirer) et les flèches de la grille d'ancrage 3×3 s'affichaient comme ? ou ??. Cause : conversion ASCII destructive ancienne (caractères non-BMP perdus, pas du mojibake encodage classique — donc invisible aux scanners ftfy). Restauration : icônes du menu masque → 🖼️ / 🔄 / ▣ / ▢ / 🎯 / 🗑️ ; grille d'ancrage → ↖ ↑ ↗ ← • → ↙ ↓ ↘ ; bouton de pagination « Précédent » restauré.

🔤 Réparation massive des substitutions € et É dans main.js fix

Le même incident historique avait remplacé des centaines de caractères accentués par € ou É partout dans le source : commentaires, libellés, noms de filtres (Sépia, Bleu électrique, Vert émeraude), labels d'unités, messages console, libellés de la documentation embarquée. ~140 mots reconstruits avec dictionnaire contextuel (le € peut représenter é, è, ê, ô, ç, î ou ' selon le mot — pas de mapping 1:1). Mots traités : Empêcher, Rafraîchir, flèches, excès, Contrôle, forçant, boîte, déplaçables, MÊME, CARACTÉRISTIQUES, etc.

🧹 Nettoyage des préfixes ?? Verbe dans commentaires et chaînes fix

~200 commentaires et chaînes commençaient par ?? (vestige d'emojis perdus en début de log). Ex. // ?? Capturer l'état, console.warn('?? Objet étendu...'). Préfixes supprimés via regex contextuelles. Bullets é Verbe (perdues en début de ligne dans la documentation embarquée) restaurées en ✅ Verbe.

🔢 Version bumps

Splash, header badge, JSON-LD softwareVersion, documentation manuals, service-worker CACHE_NAME et la query JS/main.js?v=… sont alignés sur v1.7.139l / v=20260516-v139l-icons-restored. Backup pré-correctifs disponible : JS/main.js.icon-restore-bak.

SUPER PRINT v1.7.139k

Released — May 16, 2026

⌨️ Saisie texte : la frappe n'écrase plus la sélection après Ctrl+A fix

Sur Cmd/Ctrl+A dans un bloc texte (notamment sur le placeholder « Your text here »), le premier caractère tapé remplaçait correctement la sélection — mais les caractères suivants effaçaient à leur tour la lettre précédente, donnant l'impression que « la sélection se réapplique entre chaque frappe ». Deux mécanismes « sticky-selectAll » (boucle requestAnimationFrame sur select du hidden textarea + chaîne setTimeout à 0/30/350 ms dans text:editing:entered) ré-appliquaient la sélection complète après que l'utilisateur ait tapé. Correctif : snapshot du texte initial au démarrage de chaque boucle, abort immédiat dès que text.length ou le contenu changent.

📐 Justify Maj+Entrée : le flag soft break survit jusqu'à insertChars fix

Suite à la livraison v1.7.139i, le saut doux ne déclenchait toujours pas le justify : la ligne avant Maj+Entrée restait courte avec un trou à droite. Cause : le flag _spNextNewlineIsSoft était posé dans onKeyDown puis immédiatement remis à false dans le finally. Or l'insertion réelle du \n ne passe pas par onKeyDown — elle passe par hiddenTextarea → événement input → insertChars, qui s'exécute après le retour de keydown. Quand notre patch insertChars regardait le flag, il était déjà false. Correctif : suppression du reset dans finally, le flag est désormais consommé/reset à l'intérieur de insertChars après l'ajout dans __spSoftBreakIndices.

🔤 Encodage UTF-8 : réparation des fichiers double/triple-mojibake'd fix

4 fichiers texte (service-worker.js, index.html, documentation.html, CSS/main.css) étaient corrompus : — apparaissait comme â€", é comme é, et la barre ─ du commentaire d'en-tête du SW était devenue â"€ répétée des centaines de fois (triple-encodage). Visible côté utilisateur : icônes et libellés du header s'affichaient avec des caractères « € » / « $ » / « A » parasites. Cause probable : un éditeur tiers a lu les fichiers comme Latin-1 puis ré-enregistré comme UTF-8 lors d'une session précédente. Correctif : script Python _fix_mojibake.py (basé sur ftfy) qui détecte les marqueurs caractéristiques, applique fix_text itérativement (gère N niveaux d'encodage), sauvegarde l'original en .mojibake-bak avant écriture. JS/main.js (3 Mo) était sain — non touché.

🔍 Audit import / export .sp / .json / PDF

Revue complète des chaînes saveProjectSP / loadProjectSP, saveProjectLocal (.json), import depuis le modal Import et confirmExport (PDF). Tous les flux ont :

  • Purge complète des canvases / history / textLinks / charWidthsCache avant chargement (évite la fuite mémoire et les objets fantômes).
  • Validation stricte de pageFormat, margin, bleed (rejet des NaN / valeurs négatives).
  • Sérialisation correcte des soft-breaks via le toObject patché de fabric.Textbox (__spSoftBreakIndices Set → _spSoftBreakIndices Array, lazy-restauré côté load).
  • saveAllPages(force=true) dans saveProjectSP_toObject pour bypasser les guards _isRenderingAllPages / _isRestoringState / _isLoading.

Aucune régression détectée dans ces flux après les correctifs des sections précédentes.

🔢 Version bumps

Splash, header badge, JSON-LD softwareVersion, documentation manuals, service-worker CACHE_NAME et la query JS/main.js?v=… sont alignés sur v1.7.139k / v=20260516-v139k-mojibake-and-soft-break.

SUPER PRINT v1.7.139i

Released — May 16, 2026

📐 Justify : Entrée vs Maj+Entrée distingués (comportement InDesign / Word) new

Dans les modes justify, justify-left, justify-right (et justify-center), les deux types de saut de ligne sont désormais traités différemment, comme dans une PAO professionnelle :

  • Entrée (saut dur, nouveau paragraphe) → la phrase est coupée et continue sur la ligne du dessous. La ligne avant le saut n'est PAS étirée — elle garde sa largeur naturelle, comme le dernier vers d'un paragraphe.
  • Maj+Entrée (saut doux, retour forcé dans le même paragraphe) → la ligne avant le saut est étirée jusqu'à la limite du bloc texte. Si un espace traîne juste avant le saut, il est visuellement consommé (collapse à largeur 0 contre le bord) — le texte vient coller proprement au bord droit.
  • Dernière ligne du bloc → jamais étirée (fin de contenu).

Cause précédente (v1.7.139e → v1.7.139h) : enlargeSpaces traitait tout \n comme une fin de paragraphe (hard et soft confondus), parce que Fabric.js ne distingue pas les deux dans son flux text. Conséquence : le saut forcé Maj+Entrée ne fonctionnait pas comme un vrai « line break » PAO — la ligne précédente restait courte avec un trou à droite.

Correctif : la version patchée de enlargeSpaces consulte le Set __spSoftBreakIndices (positions des \n insérés via Maj+Entrée) en plus du résultat de isEndOfWrapping(i). Si la ligne i se termine par un \n dont la position est dans le Set des soft breaks → on JUSTIFIE (skipLine = false). Sinon (vrai hard \n ou dernière ligne) → on saute (skipLine = true). Les espaces traînants sur les lignes justifiées sont déjà collapsés depuis v1.7.136 (largeur 0, position au bord droit), ce qui assure le comportement « l'espace est supprimé pour que le texte colle au bord » demandé.

🔢 Version bumps

Splash, header badge, JSON-LD softwareVersion, documentation manuals, service-worker CACHE_NAME et la query JS/main.js?v=… sont alignés sur v1.7.139i / v=20260516-v139i-justify-soft-break.

SUPER PRINT v1.7.139h

Released — May 15, 2026

🪟 Export Web-to-Print : le texte qui dépasse d'un bloc est désormais correctement masqué fix

À l'export Web-to-Print (mini site HTML / images PNG), un bloc texte dont le contenu débordait sous le cadre montrait l'overflow dans l'image rendue, alors que l'éditeur le masquait correctement. Symétriquement, certains blocs voyaient leur typographie partiellement coupée à cheval sur la bordure inférieure.

Cause racine : la méthode initDimensions() de Fabric.js réécrit textbox.height = calcTextHeight() à chaque appel (le cadre se gonfle pour accueillir tout le texte). Dans l'éditeur live, un override par-instance installé par createSimpleTextBox bloquait ce comportement et restaurait la hauteur fixe du cadre. Mais cet override est perdu à la sérialisation JSON : au moment de l'export, le canvas temporaire tempFabric rappelait initDimensions() sur du Fabric stock → la hauteur grimpait à la hauteur naturelle du contenu → le clipPath calculé ensuite couvrait tout le contenu → aucun clipping visible.

Correctif : dans renderPageToImage (Web-to-Print) et renderPageToImageWithBleed (PDF / PNG / JPEG / Print-to-Web avec fond perdu), snapshot de height/width du cadre avant initDimensions(), puis restore du cadre après. Au passage on fixe aussi _fixedHeight/_fixedWidth pour les blocs legacy qui n'avaient jamais été redimensionnés. Résultat : le PNG du minisite et le PDF affichent désormais l'overflow exactement comme l'éditeur (= masqué à la dernière ligne complète qui rentre).

🔢 Version bumps

Splash, header badge, JSON-LD softwareVersion, documentation manuals, service-worker CACHE_NAME et la query JS/main.js?v=… sont alignés sur v1.7.139h / v=20260515-v139h-export-text-clip.

Released — May 15, 2026

🖱️ Texte dans une forme : double-clic = déplacement libre dans les limites de l'objet new

Quand on ajoute du texte dans une forme via le clic-droit (cercle, rectangle, polygone, tracé fermé plume, forme libre crayon, image, SVG…), le bloc texte est cliqué dans le clipPath de la forme et la paire forme↔texte se déplace désormais en bloc. Nouveau dans cette release : un double-clic sur le bloc texte le passe en mode déplacement décroché (curseur déplacement, bordure pointillée bleue) : il glisse alors librement à l'intérieur de la forme, sans entraîner cette dernière, et son centre est clampé sur la bbox de la forme — impossible de le perdre dehors. Un nouveau double-clic re-couple texte et forme. La désélection sort aussi du mode automatiquement.

L'édition typographique (police, corps, couleur, alignement…) passe désormais uniquement par le clic-droit → Éditer le texte (déjà en place depuis v1.7.132). Cela libère le double-clic pour la nouvelle interaction de positionnement intra-forme.

✏️ Éditer le texte d'objets liés — rappel des cas couverts info

  • Texte dans une forme (rect, cercle, polygone, tracé plume fermé, forme libre crayon, image, SVG) → clic-droit sur la forme OU sur le texte → Éditer le texte → entrée en édition + sélection complète + panneau typographie ouvert dans la sidebar.
  • Texte autour d'une forme → idem ; le curseur d'édition suit les caractères le long du périmètre.
  • Texte sur un tracé plume ouvert → idem ; le contour du tracé source est mis en transparent à la pose du texte (le tracé reste sélectionnable et entraîne le texte).
  • Texte sur un trait crayon (groupe Plume) → idem (pris en charge par la même branche « tracé ouvert »).
  • Texte dans / autour d'une forme libre (crayon-Formes) → idem (les paths fermés _isPencilShape passent par les actions dedans / autour).

🔢 Version bumps

Splash, header badge, JSON-LD softwareVersion, documentation manuals, service-worker CACHE_NAME et la query JS/main.js?v=… sont alignés sur v1.7.139g / v=20260515-v139g-text-in-shape-dblclick.

Released — May 15, 2026

🎯 Cursor & selection mapping rebuilt on a gap-based source-of-truth fix

Bug (reproduced in align-left & justify, with word-wrap & hyphenation): in a wrapped text block, after pressing Enter to start a new paragraph, every subsequent Shift+Enter (forced break) shifted the caret one extra pixel to the right — cumulatively. After several forced breaks the caret was no longer aligned with the first letter of the new line. In hyphenation mode the same drift occurred even without a prior hard newline. As a knock-on effect, Cmd/Ctrl+A stopped short of the real text end — the visual selection rectangle missed words on the last line.

Root cause: Fabric maps a 1D selection index to a 2D (line, column) cursor position by summing, for each visual line, line.length + missingNewlineOffset(line). When this sum exceeds the real text.length (over-count), selectionEnd = text.length resolves to a point earlier than the actual end — hence the missing words and the caret drift. Two independent over-counts were combining: (a) Fabric’s stock _generateStyleMap only skips one separator char per wrap boundary, but our patched _wrapLine can consume a multi-character whitespace token (e.g. "   ") at a wrap; (b) the previous missingNewlineOffset override mixed three sources (styleMap, isEndOfWrapping, __spMissingOffsets) which could disagree on edge cases (leading-space preserved at start of paragraph, hyphenation, soft breaks).

Fix: replaced both with a single gap-based algorithm grounded in _styleMap + _unwrappedTextLines + _textLines.length:

  • Patched _generateStyleMap: at each wrap boundary, compares the leading-whitespace count of the next visual line vs. the source, and skips the actual consumed whitespace (0 for break-word/hyphenation, 1 for normal wrap, N for multi-space wrap). Hard/soft \n handled separately as before.
  • Patched missingNewlineOffset: missingNewlineOffset(i) = absStart(i+1) - (absStart(i) + textLines[i].length) — the mathematical definition of « source chars consumed between visual line i and i+1 ». Same formula covers hard \n, soft \n (Shift+Enter), single-space wrap, multi-space wrap, hyphenation, break-word, and leading-space-preserved paragraphs uniformly.

Result: sum(line.length + missingNewlineOffset) now equals text.length exactly. The caret stays in front of the letter that wraps, no matter how many Enter / Shift+Enter combinations precede it. Cmd/Ctrl+A selects every word, including the very last one of the last line.

🔢 Version bumps

Splash, header badge, JSON-LD softwareVersion, documentation manuals, service-worker CACHE_NAME and the JS/main.js?v=… cache-bust query are all aligned to v1.7.139f / v=20260515-v139f-cursor-mapping.

SUPER PRINT v1.7.139e

Released — May 15, 2026

📏 Justify with hard and soft line breaks: line before is no longer stretched fix

Bug: in any justify variant (justify, justify-left, justify-center, justify-right), lines ending in a hard newline (Enter, new paragraph) were correctly left short (not stretched), but lines ending in a soft newline (Shift+Enter, forced break inside the same paragraph) were still being stretched to the column edge. Users were getting visibly different treatment of the two kinds of break in fluent text — not the PAO / InDesign / Word behavior they expected.

Fix: the patched enlargeSpaces() now treats both hard and soft breaks identically — any line whose source ends with a \n (regardless of origin) is a « terminated » line and is not stretched. Only auto-wrapped lines (overflow at the column edge) are justified. Same logic mirrored in the vector PDF export path (_drawTextViaOpentype), via _styleMap + __spSoftBreakIndices introspection per visual line. Editor, raster PNG/JPEG and vector PDF now behave identically.

🎚️ Justification fine controls (word spacing / glyph scale) wired to visible rendering fix

Bug: the right-sidebar Min / Opt / Max fields under « Justification fine » for word spacing, letter spacing and glyph scale were partially dead. Only letter spacing Opt reached the canvas (via Fabric’s charSpacing). word spacing Opt only affected wrap decisions internally (invisible), and glyph scale wasn’t consumed anywhere — clicking Apply changed the stored value but produced no visible result.

Fix: added two new low-level Fabric patches:

  • wordSpaceOpt → multiplies the measured width of every space-class glyph (U+0020, U+00A0, U+202F) via the patched _measureChar. 100 % = natural, 120 % = wider word spacing, 80 % = tighter. Affects wrap, line width, alignment and visible space gaps in one consistent pass.
  • glyphScaleOpt → horizontal canvas scale around _renderTextCommon. 100 % = natural, 110 % = wider glyphs, 90 % = narrower (condensed look without changing the actual font).

Both kick in immediately on Apply; Reset restores 100 % / 0 across the board. The Min / Max fields remain advisory (stored, serialized, exposed in the UI) — engaging them as range constraints per line would require a custom paragraph-shaping pass, which is outside this release.

🔢 Version bumps

Splash, header badge, JSON-LD softwareVersion, documentation manuals, service-worker CACHE_NAME and the JS/main.js?v=… cache-bust query are all aligned to v1.7.139e / v=20260515-v139e-justify-and-glyphscale.

SUPER PRINT v1.7.139

Released — May 15, 2026

🚚 v1.7.138 fixes were never delivered — cache-bust restored fix

Bug: the v1.7.138 release shipped two real fixes (placeholder-pile-up sticky-loop abort + trailing-space char-bound collapse) but the <script src="JS/main.js?v=…"> query string in index.html was still pointing at the v1.7.137 cache key. Browsers and the Service Worker therefore kept serving the old cached main.js and the bug reports kept coming. The two fixes were sitting in the file, just not loaded.

Fix: bumped the cache-bust query to v=20260515-v139-text-block-audit-leading-space and the SW CACHE_NAME to the matching v1.7.139 token. v1.7.138 fixes are now actually live alongside the v1.7.139 ones.

📐 Text block audit: leading whitespace at paragraph start was being silently dropped fix

Bug: in _wrapLine (custom wrap engine), every leading whitespace token at the start of a subline was unconditionally discarded. That mirrors Fabric's behavior at wrap boundaries (the wrap separator is consumed) but is wrong at paragraph boundaries: the very first token of a paragraph after a hard \n or a Shift+Enter soft break is real source content. Dropping it produced a 1-character desync between text and _textLines[i] per affected paragraph → cumulative cursor drift, wrong selection rectangles, and Cmd/Ctrl+A stopping short of the actual end of text.

Fix: the « leading-space drop » branch now distinguishes the very first iteration of _wrapLine for a paragraph (no resultLines yet, tokenStart === 0) and preserves that whitespace as the initial current with proper measurement. Subsequent leading-whitespace at wrap boundaries is still dropped (Fabric-compatible). Paragraphs that start with a space (typical for indented prose, dialogue, or text pasted from word processors) now render and select with no off-by-N drift.

🔍 Re-audit: justify, hyphenation, soft-breaks, missingNewlineOffset

End-to-end re-read of the textbox patch stack (6 patched __sp*Patched flags + 20 patch sites): missingNewlineOffset styleMap detection, _wrapLine tokenization with hyphenation try-fit-with-hyphen and break-word fallback, paragraph indents (_spIndentLeft/Right/_spFirstLineIndent), enlargeSpaces trailing-space exclusion + collapse, soft-break \n style inheritance, _spForceSelectAllSticky abort logic. Math-checked the source ↔ rendered char count for hard \n, soft \n, wrap, hyphenation and leading-space cases. Only the leading-space drop was a real synchronisation bug; the other paths are mathematically consistent.

🖼️ Print-to-Web (Web2Print) export: text was missing from the PNG snapshots fix

Bug: when generating the static mini-site (D4Export) and the raster PDF/PNG/JPEG with bleed, every textbox / text block came out empty in the rendered PNG. The editor and the vector PDF were fine, only the rasterised images were blank.

Cause: the v1.7.135 fix added applyTextboxClipPath() right before toDataURL in both export paths to stop overflow leaking into the image. But (a) it was called before custom fonts had finished loading in the temp canvas context, and (b) it was called without first forcing initDimensions() on each textbox — so _textLines + getHeightOfLine() returned stale / fallback-font measurements. The clip ended up snapped to a near-zero height → the visible rectangle covered no glyphs → PNG rendered the blocks as empty.

Fix: both renderPageToImage (Print-to-Web) and renderPageToImageWithBleed (raster PDF/PNG/JPEG) now await document.fonts.ready, then run _clearCache() + initDimensions() + setCoords() on every textbox / text in the temp canvas, then apply the clip and render. Texts are back in the PNGs and the clip still cleanly cuts overflow at the last fully-fitting line.

📄 PDF vector export: justify-left / justify-center / justify-right honored fix

Bug: while auditing the import / export round-trip after the new "justify" button + "right justify" Styles option were added, the vector PDF path (_drawTextViaOpentype) only matched the bare 'justify' value. Every variant (justify-left, justify-center, justify-right) silently fell through to the 'left' branch, so a textbox right-justified on screen + in raster PNG was rendered left-aligned in the vector PDF.

Fix: normalised the align switch to detect any justify family (align === 'justify' || align.indexOf('justify-') === 0). Non-final lines are stretched (justify), the last line (or any line with no spaces) gets the suffix's alignment: justify-left/justify → left, justify-center → center, justify-right → right. Same logic now applied for both xStart computation and the per-word stretch loop.

Round-trip audit (.sp / .json): SP_CUSTOM_PROPS already serializes _justSettings, _spIndentLeft / _spIndentRight / _spFirstLineIndent, _spSoftBreakIndices; toObject() persists enableHyphenation + hyphenLanguage; textAlign (incl. all justify variants) is a standard Fabric prop. No data is dropped on save / reload.

⌨️ Empty textbox → type: letters were stacking on the same position fix

Bug: select all (Ctrl/Cmd+A) in a text block, delete everything, then start typing — the second, third, fourth keystroke landed on top of the first one instead of advancing the caret. Result: A, then B overwrote it → only the last typed character remained visible at position 0.

Cause: the text:selection:changed handler kept honouring the _spCmdARequestedAt sticky flag for 500 ms after Ctrl+A. Once the user emptied + retyped, every keystroke fired this handler, saw collapsed && len > 0, and re-extended the selection over the freshly-typed character — so the next keystroke replaced it via Fabric's insertChars selection-replacement.

Fix: snapshot text.length in a new _spCmdAInitialLen property at Ctrl+A capture time. The selection-changed restorer now bails out (and clears both flags) the moment text.length differs from the snapshot — the user has typed or deleted, so we have no business reviving a long-gone selection. Same guard added in the sticky abort path for symmetry.

SUPER PRINT v1.7.138

Released — May 14, 2026

⌨️ New textbox: typing on the placeholder no longer stacks letters fix

Bug: after creating a new text block and selecting the auto placeholder text (« Your text here » / « Votre texte ici ») — typically with Cmd/Ctrl+A — the first keystroke replaced the placeholder correctly, but every subsequent keystroke also replaced the previous letter instead of being appended. End result : only the last letter typed remained visible, the rest stacked on top of each other.

Cause: the « sticky » select-all loop introduced in v1.7.x to survive Fabric’s asynchronous editing init was re-asserting the full selection on every animation frame for 2 s. After the first input, the new (single-character) text was being re-selected before the next keystroke could insert, so each new keystroke kept replacing a 1-character selection.

Fix: _spForceSelectAllSticky() now snapshots the text length / value at start, and aborts immediately the moment user input mutates it. The Ctrl+A flag is also cleared so no later setTimeout resurrects the selection. Subsequent keystrokes append normally.

✍️ Justify: cursor drift past the column edge after Enter / Shift+Enter fix

Bug: in justify mode, every classic Enter and every Shift+Enter performed on or right after a space pushed the cursor on the next line by one extra character to the right; the drift was cumulative (5 returns → 5-character offset). Additionally, Cmd/Ctrl+A on a paragraph ending in trailing whitespace + returns showed a selection rectangle that visually stopped short of (or shot past) the actual end of text.

Cause: the v1.7.137 trailing-space exclusion correctly skipped enlarging trailing spaces but still applied the cumulative accumulatedSpace to their charBound.left. The trailing chars (and the pseudo end-of-line bound at j == line.length) ended up positioned at realWidth + trailingSpaceWidth, which is what Fabric uses to compute cursor X and selection rectangles.

Fix: trailing whitespace char bounds are now collapsed visually — left = realWidth, width = 0. The pseudo end-of-line bound is also pinned to realWidth. Cursor and selection rectangles stop precisely at the column edge regardless of how many soft / hard returns precede them.

SUPER PRINT v1.7.137

Released — May 13, 2026

🧬 Sidebar text panel: regrouped style buttons

The four advanced text controls — highlight color picker, Stroke, Outline and Reset — used to live in a separate « Options avancées » group below the main format buttons. They now sit directly under top & bottom highlight, highlight and shadow in the same button row, so every text-decoration / color tool is grouped together with no extra label noise.

✍️ Justify: trailing-space exclusion + Shift+Enter cursor drift fix fix

Bug A: in justify mode (especially « justifier à droite » with hyphenation), every Shift+Enter placed on or right after a space was shifting the cursor on the new line one extra character to the right. Each subsequent forced return added another character of drift. Cause : the trailing space at the soft-break was being inflated by the justify pass (charBound.width += diffSpace), and the cumulative accumulatedSpace leaked into the cursor X computation of the next character.

Bug B: a space placed right before a wrap or a soft-break was visible as a « trou » against the right edge of the column instead of being neutralized.

Fix: the patched enlargeSpaces() now detects trailing whitespace on every line and excludes it from both the divisor (numberOfSpaces -= trailingCount) and the visible width (currentLineWidth -= trailingWidth), and skips enlarging those trailing-space char bounds. The character is still kept in text, so reorganizing the sentence (delete / type more) brings the space back between words — InDesign / Word behavior. Also strengthened soft-break detection to scan past trailing whitespace when matching __spSoftBreakIndices, so the line keeps its justify treatment regardless of whether _textLines[i] includes the trailing space or not.

SUPER PRINT v1.7.136

Released — May 13, 2026

✍️ Justify alignment is now stable on every wrapped line fix

Bug: when a textbox was set to justify, lines whose natural width was below 85 % of the column width were skipped by the justify pass and stayed left-aligned, leaving a visible gap on the right edge. This used to fire on lorem ipsum / placeholder text and on every line preceding a Shift+Enter soft break.

Fix: the « < 85 % » safety net is removed. We now trust isEndOfWrapping() (= last line of paragraph) and the existing endsAtSoftBreak flag (Shift+Enter → justify like a wrapped line). Every other wrapped line is justified to the column edge, even when a long word forced an early wrap.

🎨 Highlight color picker is live fix

Bug: the typo sidebar « Couleur surlignage » / « Highlight color » picker had no listener — changing the color did nothing until you also clicked the Highlight button (and even then it acted as a toggle, not a re-color).

Fix: input & change events on #highlightColor now re-apply the new color in place. If a selection is highlighted, only the selection is recolored. Otherwise the whole textbox textBackgroundColor is updated when one was already set. Auto-save is triggered.

🧹 Sidebar typography panel cleanup

Removed the redundant « Espaces spéciaux / Special spaces » label and the « Insère une espace typographique au curseur » hint above the NBSP / thin NBSP buttons — the same characters are already exposed by the Glyphes panel just below.

🖼️ Print-to-Web export now respects the textbox bottom edge fix

Bug: when exporting via Print-to-Web (D4Export), the generated PNG of each page kept rendering the text that overflowed below a textbox — so the minisite showed text the editor and the PDF both clip away.

Fix: renderPageToImage (Print-to-Web) and renderPageToImageWithBleed (PDF / PNG / JPEG with bleed) now run applyTextboxClipPath() on every textbox/text just before toDataURL. The helper already snaps the clip to the last fully-fitting line and skips text-on-path / text-inside-shape, so curved and shaped text are unaffected.

SUPER PRINT v1.7.135

Released — May 13, 2026

💾 Text-inside-shape now survives save / reload / .sp import / PDF export fix

Bug: textboxes created by right-click → Add text inside kept their shape clipPath at runtime, but the auto-save / manual-save serializer stripped the clipPath for every textbox / text object (a 2026-05-01 fix to avoid stale chained-text snap clips). At reload, the saved data was missing the clip and applyTextboxClipPath() is intentionally by-passed for _isShapeClippedText, so the text reverted to a plain rectangular block (the circle / polygon clip was gone).

Fix: the strip is now skipped when _isShapeClippedText is set, so the cloned shape clip is persisted and restored verbatim. Applied at both serialize sites (single-page saveAllPages and double-page saveSpreadContent). The chained-text strip behaviour is preserved for every other case.

✅ Import / export audit (.sp, .json, PDF) for the new contextual text tools

  • Custom flags (_spShapeTextPairId, _isShapeClippedText, _isCtxPathText, _simplePenData, _isPencilStroke, _isPencilShape) are all in SP_CUSTOM_PROPS → written to JSON / .sp without loss.
  • IText with path (Add text on path / around): fabric.Text.toObject() already serializes path as a sub-object and fromObject rebuilds it via fabric.Path.fromObject (Fabric 5.3) → geometry is round-tripped exactly.
  • Pair re-link: window._spInstallShapeTextLinkListeners (v1.7.132) is invoked from both loadFromJSON callbacks (single-page and spread) and re-snapshots _spLastLeft/_spLastTop on every persisted pair, so post-reload moves compute the right delta.
  • PDF export: _classifyObjectForHybrid forces every text with obj.path to raster (since v1.7.126), so curved / shape-clipped text is rendered correctly via canvas snapshot rather than going through opentype.js (which would ignore path).
  • Stroke-hidden source shape / path: stroke:'transparent' and fill:'transparent' are stock fabric properties, serialized as-is on the rect / circle / pen / pencil container, so the visual stays « text only » after reload.

SUPER PRINT v1.7.134

Released — May 13, 2026

🌐 Right-click menu now respects the UI language · ✏️ Text-on-path hides the source stroke polish

  • i18n: every label of the canvas right-click menu (Edit path, Edit text, Add text inside / around / on path, Bring to front / Forward / Backward / To back, Duplicate, Delete, plus the Del shortcut hint) is now switched between French and English based on currentLanguage. Japanese keeps the French baseline (no JP strings provided yet).
  • Add text on path (open pen path or pencil stroke): the source path's stroke and fill are now stripped to transparent, so only the text is visible — mirrors the behaviour already in place for Add text around on closed shapes. The path stays selectable / movable in the background and still drags the text via the shape↔text pair link.
  • Editable text on a pen / pencil path: thanks to the v1.7.133 « Edit text » item, a 2nd right-click on a pen-drawn line that already carries text reveals « Edit text » (« Éditer le texte » in FR), which selects the IText, enters edit mode and selects every character — the right sidebar typography panel takes over for font, size, color and tracking. Same applies to text inside / around freeform (pencil) shapes.

SUPER PRINT v1.7.133

Released — May 13, 2026

📝 Edit text on / inside / around a shape from the right-click menu new

  • New context-menu item « Éditer le texte »: shown on a 2nd right-click on a shape that already carries a text (text-inside, text-around, text-on-path) and on text blocks themselves. Clicking it selects the linked text, enters edit mode and selects all characters — the right sidebar's typography panel takes over so font, size, color and tracking can be changed live.
  • Text-around (IText on path): the cursor and character selection now track the glyphs along the perimeter (sidebar typography editing applies to every selected character).
  • « Add text inside / around »: hidden when the shape already owns a text pair, so a 2nd right-click no longer creates a duplicated overlapping text block.
  • Round-trip: _spShapeTextPairId, _isShapeClippedText and _isCtxPathText were already in SP_CUSTOM_PROPS, so auto-save, manual save, .sp import and PDF/PNG export all preserve the linked-text behaviour and the editing entry-point survives reloads.

SUPER PRINT v1.7.132

Released — May 13, 2026

📝 Write-around: text now lands on the shape, and survives reload fix

  • Position: with v1.7.131 the IText was created with default left/top = 0 while its path held absolute coordinates — fabric internally translates glyphs by (path.left - text.left, path.top - text.top), so the text appeared offset by (path.left, path.top) from where the shape actually was (typically projected to the top-left of the page). Fix: align the text's left/top on the path's, so the translation collapses to zero and glyphs render exactly on the shape outline.
  • Save / load: the canvas-level listeners that mirror movement and deletion between shape and text were only installed when the user created a pair via right-click. After a full page reload (or after a saved .sp document was reopened), existing pairs deserialized correctly but were no longer linked. Fix: the listener installer is now exposed as window._spInstallShapeTextLinkListeners and called from both loadFromJSON callbacks (page canvas and spread canvas), with a snapshot reset on every persisted pair so the first post-reload move computes the correct delta.
  • Same fix applied to Add text on path (the Dessus command had the same offset bug).

SUPER PRINT v1.7.131

Released — May 13, 2026

📝 Write-around: text now sits exactly on the shape outline refine

Change: Add text around no longer wraps the text on a halo offset outside the shape. The text now lays out directly on the perimeter of the source shape, and the source shape's fill and stroke are stripped (set to transparent) so only the text is visible.

The shape stays selectable and movable in the background — thanks to the _spShapeTextPairId link from v1.7.129, moving the (now invisible) shape still drags the text with it, and deleting either removes both. Result: a single editorial unit where the rectangle / triangle / circle outline becomes the text baseline.

SUPER PRINT v1.7.130

Released — May 13, 2026

📝 Write-around now follows the actual shape outline fix

Bug: Add text around always wrapped the text on an ellipse approximating the bounding box, even when the source shape was a rectangle, triangle or polygon. Right angles became curves and the text floated visibly off the corners.

Fix: the path used by the wrapped text now follows the real perimeter of the shape:

  • Rectangle → 4 straight segments offset outward, sharp 90° corners (rotation supported).
  • Triangle → 3 segments offset outward, sharp corners.
  • Polygon / polyline → the actual vertex outline, offset outward.
  • Circle / ellipse → ellipse perimeter (unchanged).

Implementation: convex polygon offset via per-edge perpendicular shift + adjacent edge intersection (handles any orientation, including rotated rectangles).

SUPER PRINT v1.7.129

Released — May 13, 2026

📝 Write-on-shape (right-click) is now fully usable fix

Bugs fixed:

  • Editable text: Around / On path previously created a non-editable fabric.Text; users could not change the placeholder. Now uses fabric.IText — double-click to edit.
  • Visible path artifact: the helper geometry used to lay out path-text was sometimes drawn (faint X / extra strokes inside the shape). Path is now fully transparent, non-evented, non-selectable and excluded from PDF/PNG export.
  • Shape ↔ text linked as one object (the missing piece): the source shape and the generated text now share a _spShapeTextPairId. Move one → the other follows. Delete one → the other goes too. The pair behaves as a single editorial unit (closer to InDesign's text-frame model).

Applies to all three commands: Ajouter du texte dedans, autour, dessus.

Released — May 13, 2026

🔤 Custom font: select-all apply now sticks through Shift+Enter fix

Bug: with a custom-imported typeface (e.g. Lekton-regular) applied via Select All → font picker on a justified textbox, pressing Shift+Enter caused the next line to revert to the previous block font (Open Sans) after a few characters.

Fix: when the selection covers the entire text, the new font is now promoted to the block level (and per-character font overrides are stripped), so the loaded typeface becomes the single source of truth. In addition, insertChars now propagates the neighbour character's per-char style to the inserted \n, so soft line breaks never lose typography information across line splits.

✒️ Pen tool: Enter no longer auto-closes the path fix

Bug: pressing Enter to finish a pen drawing automatically closed the path and filled it, even when the user just wanted a stroked open curve.

Fix: Enter now finalizes the path as open (stroke only, no fill). To close a path, click the first anchor explicitly (the existing close-on-first-anchor gesture is unchanged). In edit mode, Enter still preserves the existing open/closed state of the edited path.

🔤 Custom font import: multi-file selection new

  • What's new. The Load custom font dialog now accepts multiple files at once (Shift / Ctrl click in the OS file picker). When several files are picked, each font is named from its own filename (no global name prompt) and registered sequentially.
  • Why. Loading a family with 4–8 weights/styles used to require 4–8 round trips through the dialog. Now a single pick.

📐 Text stability after font import fix

  • Symptom. After loading a custom typeface, applying it to an existing block, then reformatting (justify + syllable hyphenation, line break with Shift+Enter), a portion of the text changed visually — looked like a different font for the lines laid out before the font was ready.
  • Root cause. The textbox had been measured with the fallback font (Times) before the FontFace.load() promise resolved. Cached __charBounds / __lineWidths / _styleMap stayed stale until the next manual edit.
  • Fix. A new helper _spRefreshTextboxesAfterFontLoad() is now called after document.fonts.ready at the end of every custom-font import. It walks every page canvas, resets the textbox metric caches, re-runs initDimensions() while preserving _fixedWidth / _fixedHeight, re-applies shape clip-paths, then requests a render.

📐 Justify + word ⇄ syllable toggle: no more gaps fix

  • Symptom. In a justified textbox, switching the hyphenation mode between word wrap and syllable left wide gaps in the typography — lines didn't expand fully to the textbox edge as they should in justify.
  • Root cause. The previous mode had run enlargeSpaces() and written stretched widths into Fabric's __charBounds cache. The mode-change handler cleared _styleMap and __lineWidths but not __charBounds nor __lineOffsets, so the next enlargeSpaces() pass read the old enlarged values as a starting point.
  • Fix. Both applyHyphenation() and the hyphenLanguage change handler now also clear __charBounds and __lineOffsets, set _forceClearCache, and force a fresh measure of every line width before the next render.

↵ Shift+Enter is a real soft line break (InDesign-style) fix

  • Symptom. In a justified textbox with syllable hyphenation, pressing Shift+Enter to force a line break left the broken line short of the textbox edge (justification was lost) and the typography appeared to shift around the break.
  • Root cause. Fabric.js maps Enter and Shift+Enter to the same insertNewline, both inserting a hard \n. Our patched enlargeSpaces() then treats the line just before that \n as last line of paragraph via isEndOfWrapping() and skips justification.
  • Fix. Shift+Enter is now intercepted at fabric.IText.prototype.onKeyDown and the absolute grapheme position of the inserted newline is recorded in a per-textbox __spSoftBreakIndices Set. insertChars() and removeChars() are also patched to keep these indices in sync through edits. enlargeSpaces() consults the Set: lines that end at a soft break are justified to the textbox edge like normal wrapped lines. The Set is serialized as _spSoftBreakIndices in .sp / .json exports for round-trip persistence.

🔤 Custom font: no more partial reverts to the previous font fix

  • Symptom. After loading a new typeface and applying it to a textbox, then changing format / justify / line height / pressing Shift+Enter, parts of the text reverted visually to the previous (or fallback Times) font — typically the lines or characters that already carried per-character style overrides from a paste, a template, or a prior partial selection.
  • Root cause. The whole-block font picker called obj.set({ fontFamily, fontWeight }) but never cleaned the per-character obj.styles[line][char].fontFamily / fontWeight overrides. Those overrides took precedence over the block value at every subsequent re-measure, and any cache invalidation (justify toggle, hyphenation mode change, soft line break) made them visible again.
  • Fix. A new helper _spStripPerCharFontOverrides(textbox) walks obj.styles and deletes per-char fontFamily / fontWeight / fontStyle keys (cleaning up empty entries afterwards). It is called right after the whole-block font apply, so the new face is now the single source of truth across the whole textbox. Per-selection font changes still work as before — they only target the selected range.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS · Service Worker superprint-shell-v1.7.127-font-import-justify-stability

→ Open SUPER PRINT


SUPER PRINT v1.7.126

Released — May 13, 2026

📝 Right-click Add text: real shape-aware behavior rework

  • Why a rework. The first iteration (v1.7.122) just spawned a horizontal textbox at the bounding box of the shape — no clipping, no curve following. Visual result didn't match what users expected from a print-design app.
  • Add text inside. Now creates a centered fabric.Textbox with a clipPath built by cloning the source shape (circle, ellipse, rect, polygon, path), so the text is visually contained by the shape's outline. Round shapes (circle/ellipse) get a tighter width (78 % of bbox) so lines fit better inside the curve. Font size auto-tuned from the bbox height.
  • Add text around. Creates a fabric.Text bound to an elliptical path that encloses the shape's bounding box (offset outward by ~½ font size). Result: real text-on-curve following the perimeter, clockwise, readable from the top.
  • Add text on a path. Creates a fabric.Text whose path is a clone of the source pen/pencil-stroke geometry — converted to absolute canvas coordinates via obj.calcTransformMatrix() × T(-pathOffset) so the text follows the exact source curve, regardless of source position/rotation/scale.
  • Round-trip safe. Two new flags _isShapeClippedText and _isCtxPathText are added to SP_CUSTOM_PROPS so they survive .sp/.json save-and-reload. The internal applyTextboxClipPath() guard now bails out for both, preventing it from overwriting the shape clipPath with a rectangle on every modification cycle (latent bug that would have silently broken the feature on the first re-render).
  • PDF export safety. Text-on-path objects (obj.path set) are now classified as raster in the HD hybrid pipeline (and skipped by _drawTextViaOpentype), because the opentype.js renderer cannot follow a path and would output flat horizontal text at the wrong position. Raster fallback at 300 dpi keeps print quality.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS · Service Worker superprint-shell-v1.7.126-ctxmenu-text-rework

→ Open SUPER PRINT


SUPER PRINT v1.7.122

Released — May 12, 2026

📝 Right-click on any object: add text inside, around or on top new

  • What's new. The desktop right-click menu (and mobile long-press menu) now offers context-aware text actions depending on the object you clicked:
    • Open paths (pen tool, pencil-stroke from the Pen group) → Add text on top. A textbox is created centered over the path's bounding box.
    • Any other visual object (rectangle, circle, image, star, free-form pencil shape from the Shapes group, imported SVG…) → Add text inside + Add text around. The inside action drops a centered textbox sized to the bounding box minus a 6 % padding; the around action drops a left-aligned textbox just below the object with a 6 px gap.
  • Object discrimination. Two new internal flags differentiate the three drawing tools that all output a fabric.Path: _isPencilStroke on free-stroke pencil output (Pen group, editable as a Bézier path), and _isPencilShape on free-form filled shape (Shapes group). Both are added to the SP_CUSTOM_PROPS allowlist for round-trip persistence in .sp and .json exports. _simplePenData itself was also explicitly added to the allowlist (it was previously persisted only via a toObject override that didn't survive a reload — latent bug fixed).
  • New textboxes. Created via a small helper that produces a standard fabric.Textbox with the same _fixedHeight/_fixedWidth protection as native blocks (consistent with copy-paste behavior). Three new SVG icons inline in the menu (text-inside, text-around, text-on).

✏️ Distinct icons for the two pencil tools UX

  • Symptom. The pencil under the Pen group (free Bézier-editable stroke) and the free-form pencil under the Shapes group (filled closed shape) shared the exact same icon — confusing because they produce very different objects.
  • Fix. A new icons/freeform-pen-shape.svg draws a wider and shorter pencil silhouette for the Shapes-group entry. The Pen-group pencil keeps the original taller/sharper icon. Visually telling them apart at a glance.

📱 Mobile: "Select all" in a textbox now shows the selection band fix

  • Symptom. Mobile only — inside an editing textbox, choosing Select all (either from SuperPrint's long-press menu or from the OS native context menu) left no visible blue selection band, even though the selection was technically active.
  • Root cause. Fabric.js IText.selectAll() only updates selectionStart/selectionEnd + fires the change event; it does not draw the selection rectangle. On desktop the next mouseup canvas triggers a full render that paints it. On mobile, the tap that closes the menu has no equivalent, and the cursor's _tick animation often clears the upper-canvas right after the initial render — selection band gone before the user sees it.
  • Fix. Both code paths (custom mobile menu and native OS hiddenTextarea 'select' listener) now: force a higher-opacity selectionColor (rgba(13,153,255,0.45)) for better mobile visibility, call abortCursorAnimation() to prevent the cursor tick from clearing the contextTop, request a full render, then explicitly call renderCursorOrSelection() over multiple frames (RAF, RAF×2, +120 ms, +320 ms) to survive panel repaints and keyboard show/hide events.

🖨️ Print-to-Web export now produces a viewable mini-site fix critical

  • Symptom. The Print-to-Web export ran the spinner but never produced the ZIP. No error in the UI.
  • Root cause. The HTML viewer template inlined a ${googleFonts} placeholder that no longer existed in the surrounding scope — a silent ReferenceError swallowed by _spGuardExport. The template literal evaluation crashed before the ZIP could be built.
  • Fix. Removed the dangling <link> tag (the bundled CSS already includes the matching @font-face declarations, so no font is lost). Export now reliably produces the ZIP.

📑 Duplicate page: source page and copy stay perfectly identical fix

  • Symptom. Duplicating a page from the pageboard subtly modified the source: images on it shrank slightly. Repeated duplications accumulated the drift.
  • Root cause. Inside createPageCanvas and loadSpreadContent, fabric.Image.fromObject recomputes width/height from the cached underlying <img> during loadFromJSON, ignoring the JSON-stored dimensions. Combined with stored scaleX/scaleY, this produced a per-cycle visual size shift.
  • Fix. Both load paths now snapshot every image's {width, height, scaleX, scaleY} from the JSON before loadFromJSON, then re-apply them via set() after the callback when they differ by > 0.0001. The original page is no longer mutated by the duplication; the copy is a pixel-perfect mirror.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS · Service Worker superprint-shell-v1.7.122-ctxmenu-text

→ Open SUPER PRINT


SUPER PRINT v1.7.121

Released — May 11, 2026

🖨️ Imposition + spread + multi-page assets: left pages finally visible fix critical

  • User-facing symptom. In spread mode, after dropping a multi-page asset (e.g. Music Magazine 8p) and running Calculate Imposition, the left pages of every imposed sheet only displayed the background — texts and images were missing. Right pages were correct. Only sheet n°1 (cover-4 | cover-1, with no mate spread) came out correctly.
  • Root cause. saveSpreadContent legitimately duplicates full-page objects that span the spread gutter (typically the background) into both pages with an _isOverflowFromLeft / _isOverflowFromRight flag — necessary for visual continuity in the spread view. But during imposition, buildImposedSheetCanvas loads pages sequentially into sheetCanvas and these overflows arrive last in the z-order. Concretely: the last object drawn on each sheet (page L | page R) is the LEFT-bg overflow of page R, which — after offsetX is applied — covers almost the entire left slot (x = 25..462 on 0..437), masking the page L content under its own background.
  • Fix. Added the _isOverflowFromLeft || _isOverflowFromRight filter to the exclusion lists of the three per-page load paths: loadOnePage in buildImposedSheetCanvas (main fix), renderPageToImageWithBleed (PDF export with bleed), and renderPageToImage (per-page image export). Overflows are spread-edition artifacts and have no business being re-injected into per-page exports. The spread render path (renderSpreadToImage) already handles these flags via its own dedup and stays unchanged.
  • Full audit. All .sp / .json / PDF (RGB & CMYK) import/export paths have been audited: no side effects. Overflow flags are kept in the SP_CUSTOM_PROPS allowlist for edit-session continuity.

✒️ Pen tool: double-click = image, right-click = edit path UX

  • User request. A pen-drawn shape should behave like a rectangle or a circle on double-click (image insertion). Path editing, until then triggered by double-click, should move into the context menu.
  • Behavior in v1.7.121.
    • Double-click on a pen shape → opens image import (openImageMaskDialog), exactly like a rectangle or a circle. If an image is already present, toggles the mask edit mode (pan + zoom).
    • Right-click on a pen shape → context menu with a new "Edit path" item in first position (pen icon). This item re-activates simplePenTool on the path to manipulate Bézier anchors and handles.
  • Consistency. The right-click menu stays identical for other object types (Bring to front / Forward / Backward / Send to back / Duplicate / Delete). The pen item only appears if the object carries _simplePenData.

🖼️ Auto-strip stroke when inserting an image into a shape UX

  • User-facing symptom. When placing an image inside a pen shape (which has a black stroke by default), the stroke remained visible and visually overlapped the image.
  • Fix. applyImageMaskToShape now automatically removes the stroke (stroke = null, strokeWidth = 0) when an image is inserted, while memorizing the original values in _originalStroke / _originalStrokeWidth. The user can re-add a stroke at any time via the stroke controls. When the image is removed (removeImageMask), the original stroke is restored.
  • Persistence. The new properties _originalStroke and _originalStrokeWidth are included in SP_CUSTOM_PROPS for proper serialization in .sp and .json files.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


ZORD v0.0.6

Released — May 8, 2026

🔁 Import / export — audit complet et corrections fix quality

  • .zord natif synchronisé. L'en-tête d'un fichier .zord reflète désormais la vraie version de l'application : _zord.version et _zord.generator ne sont plus codés en dur (1.0.0 / v0.0.1) mais lus depuis la constante unique ZORD_APP_VERSION. Le validateur d'import accepte aussi tout en-tête commençant par ZORD, garantissant la rétro-compatibilité avec les futures variantes du format.
  • Export DOCX — tailles en points correctes. Le convertisseur traitait les valeurs "13pt" et "13px" de la même façon (multiplication par 2 pour obtenir les half-points Word), ce qui surdimensionnait les anciens documents stockés en pixels. Une fonction sizeStringToPt() normalise désormais pt, px (×0.75), em/rem (×12) et l'unité implicite avant conversion en half-points.
  • Export DOCX — interlignage personnalisé exporté. L'attribut lineheight (Parchment block) est désormais transcrit en spacing.line Word (vingtièmes de point, LineRuleType.EXACT), ce qui préserve les interlignages saisis par l'utilisateur via le double-clic Custom….
  • Export DOCX — listes ordonnées, exposants/indices. Une configuration numbering (zord-ordered, 4 niveaux : décimal → lettre → romain → décimal) est injectée dans chaque document Word, et les attributs script: 'super' / 'sub' de Quill sont mappés vers superScript / subScript.
  • Export DOCX — sauts de page propres. Plus de paragraphe vide intercalaire entre deux pages : on utilise pageBreakBefore: true sur le premier paragraphe de chaque page secondaire (au lieu d'insérer un PageBreak isolé).
  • JSON — export non destructif. buildExportData() clone désormais le delta Quill (JSON.parse(JSON.stringify(...))) avant de retirer les attributs transitoires selection-highlight. L'éditeur live ne perd plus jamais sa surbrillance de sélection à cause d'un export en arrière-plan.
  • Service Worker bump. Cache renommé zord-v13-0.0.6-import-export-audit pour forcer la récupération des nouveaux app.js, index.html et index_FR.html sur tous les appareils déjà installés.

✏️ Typographie personnalisée — taille & interlignage en pt libres new

  • Pickers Custom… dans la toolbar. Sur les sélecteurs Taille et Interlignage, un nouvel élément Custom… / Personnaliser… ouvre un prompt qui accepte une valeur libre entre 0.1 et 999 pt et l'applique à la sélection en cours. Les whitelists Quill (SizeStyle, LineHeightStyle) sont désactivées (= null) pour autoriser n'importe quelle valeur arbitraire.
  • Mobile. Sur écran tactile, un appui long (550 ms) sur l'étiquette du picker déclenche le même prompt — pas besoin de double-clic.
  • Bilingue. Tous les libellés, tooltips et messages d'erreur sont disponibles en FR et EN (détection via <html lang>).

🖼️ Drag & drop d'images depuis le bureau new

  • Formats acceptés. .jpg / .jpeg, .png, .webp, .gif, .svg, .ico, .avif, .bmp, .tif / .tiff, .eps. L'image est lue via FileReader.readAsDataURL() puis insérée à la position du curseur dans le Quill actif (même comportement que le drop d'un .json / .zord / .docx).
  • Overlay de drop mis à jour. Liste des extensions affichée en clair, et message d'alerte de fallback enrichi pour les fichiers non reconnus.
  • TIFF / EPS. Insérés tels quels (data URL) avec un console.warn indiquant que certains navigateurs ne les rendent pas nativement — l'export PDF/Word reste correct.

� Poignées de redimensionnement d'images new

  • Filet bleu + 8 poignées. Un clic sur n'importe quelle image dans le Quill actif affiche un fin contour bleu (1 px) et 8 petites poignées carrées (4 coins + 4 milieux de côté). Glisser une poignée d'angle conserve par défaut le ratio (maintenir Shift pour le briser) ; les poignées latérales redimensionnent sur un seul axe.
  • Tag dimensions. Une étiquette bleue affiche en temps réel la taille en pixels (L × H) sous le coin bas-droit pendant le drag.
  • Persistance & historique. Au relâchement, l'attribut width de l'image est commité via q.update('user') pour que l'autosave et l'undo Quill capturent le changement. Suppr / Backspace sur une image sélectionnée la supprime via Quill (annulable). Échap ou clic ailleurs ferme la sélection.

🎨 Pop-in design pour la typo personnalisée UX

  • Adieu window.prompt. Le double-clic (ou appui long mobile) sur un picker Taille ou Interlignage ouvre désormais une vraie modale design : titre clair, champ type="text" inputmode="decimal" avec suffixe pt intégré, hint inline (« Entre 0,1 et 999 pt — ex. 13,5 »), boutons Annuler / Appliquer, fermeture par Échap ou clic backdrop, validation Entrée.
  • Validation visuelle. Une valeur invalide passe le champ en rouge avec message d'erreur aria-live, sans plus jamais clôner d'alert() bloquant.
  • Theme-aware. Variantes html.dark intégrées (fond #0a0a0a, bouton primaire blanc) alignées sur le reste de l'UI ZORD. FR + EN détectés via <html lang>.

📥 Drop overlay revu (style VIZION) UX

  • Plus d'overlay noir agressif. Le drag d'un fichier sur la fenêtre affiche désormais une teinte très subtile (rgba(17,24,39,0.08)) avec contour pointillé fin (2 px) et coins arrondis 14 px, comme dans VIZION.
  • Badge icône circulaire. Pastille blanche Ø 96 px avec icône SVG flèche-vers-le-haut, ombre douce, et anneau spinner prêt à être activé (.loading) pour un feedback de traitement futur.
  • Typographie corporate. Texte Déposez votre fichier / Drop your file en uppercase letterspacé, liste d'extensions acceptées en libellé secondaire normalement casé.
  • Dark mode natif. Variantes html.dark avec wash blanc léger, badge blanc, texte clair, icône foncée sur badge clair (lisible même sur photo plein écran).

✏️ Pickers typo — listes raccourcies UX

  • Moitié moins d'options par défaut. Maintenant que Custom… couvre toutes les valeurs entre 0,1 et 999 pt, les pickers ont été dégraissés : Taille passe de 17 valeurs (8–72 pt) à 8 valeurs curées (8, 10, 12, 13, 16, 24, 48, 72 pt) ; Interlignage passe de 15 à 8 (10, 12, 14, 16, 18, 20, 28, 36 pt). Résultat : dropdown plus court, scan visuel immédiat, et tout reste accessible via le double-clic / appui-long.

�️ Export PDF — audit post-resize d'images fix

  • Plus de chrome bleu dans le PDF. Si l'utilisateur lançait l'impression alors qu'une image était sélectionnée (filet bleu + 8 poignées + tag dimensions), tout cela se retrouvait sur le PDF exporté. Désormais : (a) une règle @media print masque .zord-img-resize-overlay et neutralise le outline sur .zord-img-resize-selected ; (b) un listener beforeprint appelle clearSelection() juste avant que le navigateur capture la page — ceinture et bretelles.
  • Ratio d'aspect garanti même quand la page A4 force un shrink. Le module de redimensionnement ne pose plus que la dimension réellement contrôlée par l'utilisateur : poignée d'angle avec ratio = style.width uniquement (la hauteur reste implicite → ratio intrinsèque préservé par le navigateur), poignées latérales E/W = style.width uniquement, poignées N/S = style.height uniquement, Shift+coin (free-form) = les deux. Conséquence : pour les cas avec ratio, la règle CSS .ql-editor img { max-width: 100%; height: auto } peut maintenant recalculer une hauteur correcte si l'image est trop large pour la zone imprimable A4 (210 mm – marges ≈ 643 px à 96 dpi).
  • Attribut width HTML dropé. L'ancienne version posait à la fois img width="X" ET style.width, ce qui pouvait entrer en conflit avec max-width:100% au moment du print. On ne garde plus que les inline styles.
  • Comportement Shift+coin véritablement free-form. Avant, la branche « break ratio » calculait bien w et h indépendamment… mais n'écrivait que la largeur. Résultat : Shift ne déformait jamais l'image. Corrigé : les deux dimensions sont écrites dans ce mode.

📝 Details

Quill 1.3.6 · docx.js · mammoth.js (DOCX import) · JSZip + Pako (ODT) · Service Worker zord-v17-0.0.6-pdf-img-resize-audit · softwareVersion 0.0.6 dans JSON-LD, splash et popin de don · llms.txt / humans.txt alignés.

→ Open ZORD


SUPER PRINT v1.7.110

Released — May 8, 2026

📋 Copier/coller : l'original n'est plus jamais modifié fix

  • Symptôme utilisateur. Lors d'un copier/coller (image, objet ou typo), l'objet source était légèrement modifié — déplacement de quelques pixels et réduction du format. C'était visible surtout en répétant Ctrl+C / Ctrl+V plusieurs fois sur la même image : le drift s'accumulait.
  • Cause racine. Le cycle Fabric discardActiveObject() → reconstruction d'ActiveSelection introduit un micro-drift d'arrondi sur left/top/scaleX/scaleY des enfants (recalculés relatifs au centre de la sélection). Idem au paste : discardActiveObject() + setActiveObject(clonedObj) peuvent muter par effet de bord les coords de la sélection précédente (= le source).
  • Fix défensif bulletproof. Helper _spSnapshotXform(obj) qui capture {left, top, scaleX, scaleY, angle, width, height, skewX, skewY, originX, originY, flipX, flipY}, et _spRestoreSourceXforms(snaps, canvas) qui restaure UNIQUEMENT si une valeur a drifté (tolérance 0.0001 px). Appliqué aux 4 chemins :
    1. Ctrl+C single : snapshot avant obj.clone(), restore dans le callback.
    2. Ctrl+C multi : snapshot des enfants avant discardActiveObject(), restore après reconstruction de la sélection.
    3. Ctrl+V single : snapshot du source (objet actif) avant paste, restore après ajout du clone.
    4. Ctrl+V multi : idem snapshot/restore du source.
  • Zéro régression. Si rien n'a drifté (cas nominal), le restore est un no-op total. La fonction _spRestoreSourceXforms ne touche jamais une propriété qui correspond déjà au snapshot. Pas d'effet sur la performance ni sur les autres comportements.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.109

Released — May 8, 2026

🚨 Réorganisation chemin de fer mode spread : pertes d'objets éliminées critical fix

  • Symptôme utilisateur. En mode double page, réorganiser les pages dans le chemin de fer (drag-drop, ajout, suppression) faisait perdre des images, des textes, et provoquait des duplications non contrôlées de texte.
  • Cause racine identifiée. Dans renderAllPages(), le guard _isRenderingAllPages = true était posé après la boucle deepCleanupCanvas(c). Conséquence : pendant la destruction de chaque canvas spread, chaque fabricCanvas.remove(obj) déclenche le listener object:removed qui appelle saveSpreadContent(fabricCanvas, leftIndex, rightIndex) directement (en court-circuit de saveAllPages, donc en court-circuit du guard). À chaque itération : 1 objet en moins sur le canvas → 1 objet en moins réécrit dans pages[leftIndex] et pages[rightIndex]. Le set d'objets rétrécit jusqu'à quasi-vidage. Quand renderAllPages reconstruit la grille, il lit ces pages quasi-vides → perte massive de contenu.
  • Triple fix défensif.
    1. renderAllPages() : _isRenderingAllPages = true est désormais posé avant la boucle deepCleanupCanvas.
    2. deepCleanupCanvas() : marque fabricCanvas._spDisposing = true avant toute suppression d'objet, comme signal explicite de teardown.
    3. saveSpreadContent() : 4 guards en tête de fonction — bail-out immédiat si _spDisposing, _isRenderingAllPages, _isRestoringState, ou _isLoading. Plus aucune écriture intempestive de pages[] pendant les phases sensibles.
  • Complémentaire. Cumulé avec _spStripOverflowDuplicatesAfterReorg() (v1.7.108) qui purge les duplicats _isOverflowFromLeft/Right stale après mutation de pages[], la réorganisation chemin de fer en mode spread est désormais robuste : drag-drop, ajout, suppression, déplacement multiple successifs.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.108

Released — May 8, 2026

📖 Chemin de fer + import PDF spread : stabilité totale fix

  • Symptômes utilisateur. Après import PDF en mode double page puis réorganisation des pages dans le chemin de fer (ajout de pages blanches, déplacement) : image PDF affichée à la mauvaise place, pages droites “vidées”, filets verticaux noirs/roses persistants à la place des marges et du plan de travail.
  • Cause racine #1 — duplicats overflow stale. saveSpreadContent stocke des copies d'objets chevauchant la reliure (flagées _isOverflowFromLeft / _isOverflowFromRight) sur la page voisine du primaire. Toute insertion/déplacement/suppression d'1 page bascule la parité → ces duplicats deviennent obsolètes et réapparaissent au mauvais endroit. Helper _spStripOverflowDuplicatesAfterReorg() ajouté et appelé après chaque mutation de pages[] (handleDrop, drop “en fin”, deletePageFromChemin, addPageFromChemin('simple')). Les originaux non-flaggés sont préservés ; les duplicats seront régénérés par le prochain saveSpreadContent selon le NOUVEAU pairage.
  • Cause racine #2 — guides non recréés. addSpreadGuides() court-circuitait la recréation si dimensions identiques, sans tenir compte du pairage de pages. Ajout d'un check samePairing (mémorisation de _guidesLeftIdx / _guidesRightIdx) → plus aucun trait fantôme du précédent spread.
  • Robustesse drag-drop. Tous les handlers du chemin de fer (handleDrop, addPageFromChemin, deletePageFromChemin, duplicatePageFromChemin) ont désormais le même retry _isLoading (40×50ms) que la duplication — plus aucune mutation de pages[] sur un canvas encore en cours de loadFromJSON après import PDF.

🔄 Curseurs de poignées typo qui suivent la rotation fix

  • Demande utilisateur. À 90° / -90°, gauche/droite doit devenir haut/bas (et réciproquement) pour les flèches/curseurs des poignées.
  • Fix. Les 8 poignées custom des Textbox utilisent désormais un cursorStyleHandler (au lieu d'un cursorStyle statique) qui calcule le bon curseur selon l'angle effectif (cycle ew → nwse → ns → nesw tous les 45°, avec offset selon l'axe d'origine). Tient compte de l'angle cumulé si l'objet est dans un activeSelection/group.

🛡️ Robustesse import/export & undo/redo fix

  • _spClone fallback robuste. Sur navigateurs sans structuredClone (Safari < 15.4), le fallback JSON.parse(JSON.stringify(obj)) crashait sur toute référence circulaire — cassait silencieusement tous les undo/redo. Désormais : try/catch + shallow copy de secours + log diagnostic.
  • FileReader.onerror par défaut. ~20 sites créaient un FileReader sans onerror → fichier corrompu / disque illisible / permission refusée = silence total, UI semble figée. Shim global readAsXxx() installe un onerror par défaut uniquement si absent → zéro changement de comportement pour les chemins existants, juste un console.warn diagnosable.

🌐 i18n

  • Clé alertCanvasLoading ajoutée en FR / EN / JA pour tout message « patientez : un chargement est en cours ».

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.107

Released — May 8, 2026

🔄 Inversion du sens de rotation visuelle des poignées fix

  • Demande utilisateur. Après validation que l'action des poignées suit bien la rotation (v1.7.104, repere local), un détail visuel restait : les bars/coins tournaient dans le même sens que l'objet, ce qui inversait la lecture intuitive haut↔bas et gauche↔droite par rapport à la position sur l'écran.
  • Fix appliqué. Dans __spWrapControlRender, la rotation du contexte canvas avant render() est désormais appliquée par -angle au lieu de +angle. À 90° / 180° / 270° cela permute visuellement haut↔bas et gauche↔droite des poignées ; à 0° rien ne change. L'action en repère local reste inchangée (les handlers actionHandlerML/MR/MT/MB et createCornerHandler sont calculés avec _spLocalAxes et setPositionByOrigin).

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.106

Released — May 8, 2026

✍️ Tracking per-char : espace VRAIMENT entre les lettres fix

  • Symptôme corrigé. Avec le tracking appliqué sur une sélection à l'intérieur d'un bloc texte, l'espace n'apparaissait pas entre les lettres mais cumulait à la fin du mot sélectionné — ex. : "hello" → rendu "helloXXXXX" (5 deltas concaténés en un seul gap après la dernière lettre).
  • Cause racine. Le rendu Fabric (_renderChars) batch les caractères consécutifs partageant le même style en un seul appel fillText(d, l, n) où d = chars concaténés. Le critère de batch est _hasStyleChanged() qui compare fill / stroke / fontSize / fontFamily / fontWeight / fontStyle / deltaY mais pas charSpacing. Conséquence : tous les chars sélectionnés (qui partagent le même charSpacing per-char) étaient rendus en UN seul fillText sans espacement inter-lettre, et seule la position de fin de batch était avancée par la somme des deltas → le gap apparaissait après le mot.
  • Fix appliqué. Patch de fabric.Text.prototype._hasStyleChanged pour casser le batch dès que charSpacing diffère entre deux chars consécutifs OU diffère de obj.charSpacing (ce dernier cas force un flush par char, identique au comportement natif quand this.charSpacing !== 0). Résultat : chaque caractère trackté est rendu individuellement à sa position calculée dans __charBounds (qui inclut déjà le delta grâce au patch _measureChar v1.7.103) → espacement vraiment inter-lettre.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.105

Released — May 8, 2026

📄 Audit import / export après patch tracking + rotation handles fix

  • .sp / .json (round-trip). Audité OK : charSpacing est dans fabric.Text.prototype._styleProperties (patch v1.7.103) et 'styles' est inclus dans tous les propsToInclude (clone, transfer, save). Le tracking par-caractère est bien préservé à la sauvegarde et restauré au chargement — le patch _measureChar recalcule les advances après loadFromJSON.
  • .pdf raster. OK : le rendu canvas utilise _measureChar patché → __charBounds exact → raster reproduit fidèlement le tracking per-char.
  • .pdf vectoriel (HD). Régression détectée + corrigée : _drawTextViaOpentype vérifiait fontFamily / fontWeight / fontStyle / fontSize / fill pour détecter les blocs à styles mixtes (qui retombent en raster), mais pas charSpacing. Résultat : un textbox avec tracking sur sélection partait en vectoriel avec le seul obj.charSpacing global (via font.getAdvanceWidth(letterSpacing)) → espacement faux dans le PDF. Fix : ajout du test st.charSpacing !== blockCs dans la boucle des per-char styles → fallback raster automatique pour ces blocs (le raster utilise déjà le _measureChar patché et restitue le bon espacement).
  • Poignées rotées. Aucune incidence sur l'export : ML/MR/MT/MB/coins ne stockent rien dans le modèle, juste l'état live de drag (transformData._spLocal) qui est nettoyé dans commonMouseUpHandler. Round-trip propre.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.104

Released — May 8, 2026

🔄 Poignées de redimensionnement suivent la rotation (action locale) fix

  • Symptôme corrigé. Sur un bloc texte tourné (ex. 90°), tirer la poignée gauche/droite continuait à redimensionner sur l'axe X du canvas (largeur visuelle horizontale) au lieu de redimensionner la largeur de l'objet dans son repère local. Résultat : poignées "gauche/droite" et "haut/bas" échangées visuellement, action incohérente.
  • Cause racine. Les 5 actionHandlers personnalisés (ML/MR/MT/MB + coins) opéraient en coordonnées monde axes-alignées (getObjectBounds, setObjectFromBounds) en lisant pointer.x / pointer.y bruts — ce qui ignore target.angle.
  • Fix appliqué. Réécriture complète des 5 handlers en repère local : (a) au début du drag, capture du point d'ancrage opposite-edge en coords monde via translateToOriginPoint(getCenterPoint(), oppositeOriginX, oppositeOriginY) ; (b) projection du delta pointeur sur les axes locaux (cosθ, sinθ) / (-sinθ, cosθ) pour obtenir les nouveaux W/H locaux ; (c) setPositionByOrigin(anchorPoint, oppositeOriginX, oppositeOriginY) pour replacer l'objet de manière que le bord opposé reste fixe en monde. Résultat : les poignées agissent toujours dans l'axe local du bloc, quelle que soit sa rotation.
  • Bonus visuel. Le rendu (visuel) des poignées a aussi été patché (v1.7.102) via fabric.Object.prototype.drawControls pour pivoter le contexte de l'angle de l'objet — les poignées affichent maintenant l'orientation du bloc.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.103

Released — May 8, 2026

✏️ Tracking par caractère (per-char charSpacing) fix

  • Symptôme corrigé. Le champ Esp. lettres du sidebar de droite ne pouvait pas modifier l'espacement uniquement sur les caractères sélectionnés d'un bloc texte — la valeur était écrite dans les styles inline mais Fabric.js ne la lisait jamais.
  • Cause racine. Fabric.js 5.3 ne supporte pas nativement charSpacing par caractère. Cette propriété n'est pas dans _styleProperties, donc getCompleteStyleDeclaration ne la retourne pas, et _measureChar n'utilise que la valeur globale this.charSpacing du bloc. Résultat : setSelectionStyles({charSpacing: 50}) était silencieusement ignoré.
  • Fix appliqué. (a) Ajout de charSpacing à fabric.Text.prototype._styleProperties pour qu'il soit récupéré dans le style complet par caractère ; (b) patch de _measureChar qui calcule le delta entre charStyle.charSpacing et this.charSpacing et l'ajoute à width + kernedWidth ; (c) capture de la sélection sur mousedown/focus de l'input du sidebar (avant que le focus ne vole les selectionStart/selectionEnd) ; (d) appel à spForceInlineStyleRewrap après setSelectionStyles pour forcer la régénération de __charBounds.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.102

Released — May 8, 2026

✏️ Tracking (espace lettres) appliqué sur la sélection fix

  • Symptôme corrigé. Le champ Esp. lettres du panneau Typographie ne répondait plus : la valeur changeait dans l'input mais l'espacement des caractères restait inchangé sur le bloc texte.
  • Cause racine. Le handler n'était branché que sur l'événement change (déclenché au blur uniquement) et un return silencieux ignorait l'entrée en mode édition sans sélection. Le cache __charBounds n'était pas invalidé explicitement.
  • Fix appliqué. (a) Branchement sur input + change pour appliquer en live ; (b) la valeur s'applique uniquement aux caractères sélectionnés dans le bloc en mode édition (double-clic dans le bloc → sélectionner les glyphes → modifier l'espacement) ; (c) sanitisation Number.isFinite (évite NaN) ; (d) invalidation explicite de __charBounds + _clearCache avant initDimensions pour forcer la régénération des positions de caractères.

🔄 Poignées de sélection suivent la rotation fix

  • Symptôme corrigé. Lors de la rotation d'un bloc texte ou d'une image, les poignées de redimensionnement (cotés, coins, rotation) restaient alignées aux axes du canvas au lieu de suivre l'orientation du bloc.
  • Fix appliqué. Patch global de fabric.Object.prototype.drawControls qui enrobe une seule fois le render() de chaque control (textbox, image, rect, path, group…) pour pivoter localement le contexte de l'angle de l'objet avant de dessiner. Les poignées ml/mr/mt/mb/coins/mtr s'orientent désormais dans l'axe du bloc tourné, sans recréer les wrappers à chaque frame (flag __spRotatedRenderWrapped).

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.99

Released — May 7, 2026

📄 Export PDF avec gabarit — le texte du gabarit n'est plus perdu fix

  • Symptôme corrigé. Lorsqu'une page utilisait un gabarit contenant du texte (ex : titre courant, mention légale, pied de page), l'export PDF/JPG/PNG ressortait avec les images et formes du gabarit, mais le texte du gabarit était absent.
  • Cause racine. Dans injectMasterItemsForExport(), les textbox du gabarit étaient recréés manuellement sur le canvas d'export en copiant seulement ~20 propriétés. Plusieurs propriétés essentielles étaient omises : originX, originY, _fixedHeight, _fixedWidth, splitByGrapheme, breakWords, direction, enableHyphenation, minWidth, backgroundColor, skewX/Y, flipX/Y. Si l'utilisateur avait par exemple originX:'center' sur son texte master, la recréation avec 'left' par défaut le décalait de width/2, le faisait sortir de la zone page, et le filtre pasteboard de l'export le supprimait silencieusement. Les images et formes étaient épargnées car elles utilisent fabric.util.enlivenObjects() qui restaure fidèlement toutes les propriétés.
  • Fix appliqué. (a) Toutes les propriétés pertinentes sont maintenant copiées lors de la recréation du textbox master ; (b) initDimensions() est ré-appelé après injection des styles inline pour que la hauteur calculée reflète les fontSize overridés ; (c) _fixedHeight/_fixedWidth sont restaurés APRÈS initDimensions (sinon Fabric expand la hauteur pour contenir tout le texte) ; (d) la fonction restoreTextboxAfterLoad() (qui force un clipPath strict) n'est plus appelée sur les masters fraîchement injectés, qui n'en ont pas besoin et pouvaient être masqués par un clip mal calculé ; (e) un log [SP-export] master injected: visible dans la console (F12) confirme à chaque export combien d'items master texte/non-texte ont été injectés.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.98

Released — May 7, 2026

🔌 Collaboration P2P — stabilité réseau & avertissement invité UX fix

  • Disclaimer obligatoire pour l'invité. L'étape Rejoindre affiche désormais en haut un bandeau ambre clair prévenant que la connexion va écraser le document local de l'invité (l'hôte pousse son projet complet via doc:replace dès l'ouverture du DataChannel). Une case à cocher « Je comprends et j'accepte de perdre mon document local » gate le bouton Continuer pour éviter les pertes accidentelles. Bilingue FR/EN.
  • Keepalive ping/pong (3 s). Cause #1 des coupures P2P en réseau résidentiel/4G : les mappings NAT expirent après 30-60 s d'inactivité. Un ping minuscule est maintenant envoyé toutes les 3 s sur le DataChannel pour maintenir la session vivante même quand les deux utilisateurs sont en lecture passive.
  • Watchdog de reconnexion. Au-delà de 12 s sans trafic reçu, le badge collab passe en orange “Réseau instable — tentative de reconnexion…” et l'hôte déclenche automatiquement un RTCPeerConnection.restartIce() (négociation ICE fraîche sur la même session, sans renvoyer de lien). Si la connexion revient (typiquement 1-5 s sur un Wi-Fi qui roame), un toast “Connexion rétablie” confirme la reprise.
  • Plus de teardown intempestif. Avant, l'état ICE disconnected (transitoire, fréquent) coupait immédiatement la session. Désormais seuls failed et closed déclenchent une vraie déconnexion ; les drops courts (< 12 s) sont résorbés sans interrompre le travail.
  • Abandon propre après 45 s. Si la session reste muette plus de 45 s malgré les tentatives ICE, le client se déconnecte proprement et invite l'utilisateur à cliquer sur Collab puis Regénérer pour repartir, plutôt que de laisser une session zombie.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC (DataChannel keepalive + ICE restart) · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.97

Released — May 7, 2026

🤝 Collaboration P2P — modal redesign + WebRTC audit UX

  • Modal entirely redesigned. All decorative emojis (📋 ✍ 🔗 🚪 ⏳ ✓ ① ② ③) are gone. Two big tiles “Invite” / “Join”, numbered steps, larger fonts, more breathing room. The full base64 SDP is now hidden by default behind a “Show code” toggle so users only see a clean shareable URL.
  • Visible link preview field on the host side: a read-only input shows the absolute https://app.zigmoon.com/SUPERPRINT/#sp-collab=… URL the moment ICE gathering completes — selectable on click for trivial manual copy.
  • New “Regenerate” button on both host & join steps. Tears down the current RTCPeerConnection + DataChannel + ICE timer and creates a brand-new offer (or clears the join state) so a fresh URL/code is produced every time, eliminating the “my URL never changes between sessions” perception.
  • Robust paste handling on the join side. The textarea now has spellcheck="false" + autocomplete="off", auto-selects on focus, and a new “Clear” button sits between Paste and Continue. Pasting either the full URL or the raw base64 code both work — extractInviteCode() now feeds acceptAnswer and joinFromOffer too.
  • Validation before handshake. generateReply() now decodes & parses the SDP before creating the peer connection. If the user pasted random text or a truncated link, a clear bilingual toast fires (“Lien invalide — vérifiez que vous avez collé le lien complet”) instead of a silent console.error.
  • ICE-completion safety timeout (8s). On restrictive corporate networks where onicecandidate(null) never fires, the host now sees an orange status “ICE gathering is blocked by your network. Click Regenerate or check your connection.” instead of waiting forever.
  • Lifecycle leak fixes. Closing the modal mid-handshake now tears down the half-built peer connection (no more orphan RTCPeerConnections). disconnect() resets the wizard back to the choice step + clears all textareas (it used to leave the modal stuck on the “Connected” view). Peer name is cleared on teardown so the badge doesn’t keep a stale identity.
  • Absolute URL builder. makeInviteUrl() now always emits an explicit https:// + host + clean path (strips trailing index.html) and falls back to https://app.zigmoon.com/SUPERPRINT/ when the app is opened via file:// or a stale PWA cache where location.origin is empty — fixes the “copied link doesn’t start with app.zigmoon.com” bug.
  • Auto-join safety net. If a user opens the modal manually after clicking an invite link (or if checkAutoJoinHash() missed its timing), openModal() now re-reads location.hash and switches to the join step automatically.

📕 Chemin de fer — P1 duplication fix fix

  • P1 lost most of its elements when duplicated. Root cause was a race in saveAllPages(force=true): the force flag bypassed every guard, including the _isLoading check, so when the user clicked Duplicate while a canvas was still mid-loadFromJSON, getObjects() returned a partial list and pages[0].objects was overwritten truncated. P1 was the most exposed because it’s the first canvas reconstructed by renderAllPages. Two fixes: duplicatePageFromChemin now retries every 50 ms (max 2 s) while any canvas has _isLoading=true, and saveAllPages defensively refuses to read from a loading canvas even with force=true.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.96

Released — May 5, 2026

🩹 Version harmonization across all surfaces fix

  • Splash screen out of sync — the boot splash still displayed v1.7.79 while the in-app top-nav badge had moved on to v1.7.95. Two stale labels (.splash-version at L1052 and the secondary IBM Plex Mono mention at L3215) are now both bumped to v1.7.96 so every user-visible version string matches: splash ↔ top-nav badge ↔ documentation badge ↔ JSON-LD softwareVersion ↔ service-worker CACHE_NAME ↔ llms.txt ↔ llms-full.txt ↔ release.html. Single source of truth restored.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.95

Released — May 5, 2026

🤝 Real-time P2P collaboration — WebRTC new

  • 1-to-1 live co-design — a brand-new Collab button in the top toolbar opens a P2P session powered by WebRTC DataChannel. No server, no account, no cloud: invitation and reply are exchanged as base64 codes via your trusted channel (mail, chat, SMS). End-to-end encrypted by construction (DTLS), STUN public used only for NAT traversal. new
  • Live object sync — every object:added / object:modified / object:removed on any page is mirrored to the peer in real time, with the full SP_CUSTOM_PROPS whitelist preserved (image masks, text-link chains, master-page bindings, PDF-import flags, spread overflow markers, indents…). Each object gets a stable _collabId so add/move/delete remain consistent across peers.
  • Live cursors — each collaborator's mouse pointer is broadcast at ~20 Hz with their nickname + color badge, so you literally see your partner moving on the page.
  • Full .sp document broadcast — on connection, the host pushes the entire project (doc:replace message: pages, masters, text-links, numbering, format, margin, bleed) so the peer's editor mirrors the document 1:1. Auto re-broadcast after every host-side .sp import. Echo storm during reload is suppressed for 1.5 s to avoid duplicate object events.
  • Bilingual modal FR/EN — the entire P2P modal (title, description, tabs, buttons, instructions, placeholders, toasts) follows the global currentLanguage with data-i18n-fr / data-i18n-en attributes applied at open.
  • Round color swatches — replaces the OS-native <input type="color">: 5 carefully-picked accent colors (red, orange, green, blue, purple) for clear visual distinction between collaborators, plus a custom rainbow chip if you want a personal hue. Selection persists across sessions via localStorage.
  • Click-outside lockdown — the modal contains long base64 SDP codes you don't want to lose. The accidental "click backdrop = close" behavior was removed: the panel now only closes via the explicit ×, Close or Disconnect buttons.
  • Identity persistence — pseudo + color saved in localStorage.sp_collab_identity, restored on every reopen.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · WebRTC RTCPeerConnection + DataChannel · STUN Google + Cloudflare · DTLS · Vanilla JS

Honest scope: P2P 1↔1 today (no 3+ mesh, no CRDT, last-write-wins on simultaneous edits). Designed for client review, freelance pair-design, demo, BAT validation. For team co-edition with conflict-free merging, a future integration with Yjs is on the roadmap.

→ Open SUPER PRINT


SUPER PRINT v1.7.93

Released — May 5, 2026

🆕 Pageboard — Duplicate page & Save page as master new

  • Duplicate page — a new ⧉ button appears on hover of every thumbnail in the pageboard. The duplicate is inserted right after the source page (i+1), preserving every object (text, images, shapes, user guides, grid markers), the page background, and the assigned master if any. Object identifiers (_spreadObjectId, textLinkId) are regenerated on the fly so spread mirroring and text chaining keep working independently on each copy new
  • Save page as master — a new ⊕G button creates a brand-new master page (auto-letter A → B → C…) from the current page content. Auto-generated print marks (margins / bleed / trim box) are filtered out (re-injected by the master renderer); user guides are kept. The new master is added to the masters panel without auto-assigning the source page — you can then assign it manually with the · button on any thumbnail. Double-click the master chip to edit it; close with the new × in the top-right of the master editor to return to the pageboard new

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · Vanilla JS

→ Open SUPER PRINT


SUPER PRINT v1.7.92

Released — May 5, 2026

🩹 Critical fixes — Memory leaks & auto-save reliability fix

  • IDML import — image blob URLs leaked — every .idml imported left N blob: URLs in memory until the next page reload. Bitmaps are already inlined as dataURL during parse, so the blob URLs were referenced nowhere. Now URL.revokeObjectURL() is called on every image right after parseIdmlAndBuild() resolves and in the catch path fix
  • IDML import — font blob URL leaked on error — when FontFace.load() rejected (corrupted / unsupported font), the blob URL created just before was never revoked. The variable now lives outside the try block so the catch branch can free it fix
  • Auto-save — silent skipped saves — the previous "cheap" hash compared pages.length + sum(objects.length). Add+delete operations producing the same total length collided silently, skipping the IndexedDB write. Replaced by a FNV-1a 32-bit content hash per page (~5–10 ms per 100 KB) — collisions effectively eliminated, no more lost work after a crash fix

⚡ Memory — Imposition VRAM released fix

  • Fabric dispose() + canvas zero-out — Fabric removes listeners but doesn't always reset the underlying <canvas> dimensions, which can pin GPU textures until the next garbage collection. The imposition export pipeline now grabs lowerCanvasEl / upperCanvasEl before dispose() and zeroes their width/height — large imposition sheets release several megabytes of VRAM immediately fix

� PDF import — micro white seam fixed fix

  • Imported PDF placed at 100,5 % instead of 100 % — sub-pixel rounding between the rasterised PDF page and the page background occasionally left a 1–2 px white antialiasing line at the edge. The placement scale in importPDFPagesV2 now applies a uniform ×1.005 overshoot, centred on the page (originX/originY = center), so the 0,5 % bleeds ~0,25 % each side and is clipped by the bleed/page bounds at export. Applies to all 3 recropping modes (support, page, custom) and to spread-split halves. The none mode (fit-inside) keeps a strict 100 % since the user expects the full PDF visible.

🎨 Export PDF HD CMYK — ICC profile order & default UX

  • “Aucun profil ICC” is now the default in both export panels (top-nav classic export and Imposition Calculator). Profiles are listed in priority order: Aucun (DeviceCMYK brut) → Coated FOGRA39 → U.S. Web Coated SWOP → Japan Color 2001 Coated. Custom .icc / .icm upload still available for shops that need to embed their own profile.

📝 Details

Fabric.js 5.3.0 · jsPDF 2.5.1 · pdf.js 3.11.174 · IndexedDB · FNV-1a 32-bit · Vanilla JS

→ Open SUPER PRINT


TYPO VIDEO v1.0.0

Released — April 28, 2026

New app — Animated typography studio new

  • Full-screen, single-page studio dedicated to kinetic typography: type your text, pick a mode, drive the FX with live sliders, hit REC.
  • 11 animation modes: Scroll, Pulse, Glitch, Marquee, Type, Stack, Kinetic, Rain, Edges, Frame and the new 3D (faux-extruded depth with rotation, highlight rim and floor reflection).
  • Animated grain slider — dual-pass film noise (overlay + soft-light) with a regenerated tile for true motion.
  • 12 curated Google Fonts (Bebas Neue, Anton, Archivo Black, Unbounded, Syne, Major Mono Display, Press Start 2P…) loaded on demand via document.fonts.load() so the canvas always renders the chosen face.
  • Live FX: glitch, blur, hue, trail, jitter, RGB-split, hue-cycle / strobe / RGB modes, custom letter-spacing, weight, speed.

Recording & export new

  • Live REC: one-click recording of the on-screen canvas at 60 fps via captureStream + MediaRecorder (VP9 / VP8 / AV1 fallback chain, 16 Mbps).
  • Offscreen export up to 4K (2160p) and 8K (4320p), aspect ratios 16:9, 9:16, 1:1, 4:5, frame-accurate via track.requestFrame() per rendered frame.
  • Auto-save to localStorage (debounced 250 ms) — your scene survives a refresh.

Installable PWA PWA

  • Standalone manifest scoped to /TYPOVIDEO/, display: standalone with window-controls-overlay override.
  • Service worker with versioned precache, network-first navigations (offline fallback to index.html) and stale-while-revalidate for Google Fonts.
  • Real INSTALL button in the top bar driven by beforeinstallprompt; iOS users get a Share-sheet hint.

UX UX

  • REC and EXPORT buttons promoted to the top-right nav; the footer HUD is now denser with wrapping mode segments and tighter sliders.
  • Hide / show the panel via the central grip handle, plus full-screen toggle.

Open TYPO VIDEO →

VIZION v0.2.0

Released — April 28, 2026

Performance overhaul perf

  • rAF-coalesced renderer (scheduleRender()): paint requests are merged into a single requestAnimationFrame tick, eliminating duplicate redraws during drag, resize and tool changes.
  • Per-layer render cache with stable hash key — masks, filters and transforms are only re-baked when something actually changes; otherwise a single drawImage() fast-path is used.
  • Debounced history (pushHistory() with 60 ms coalescing + flushPendingHistory()) — undo stack no longer explodes during continuous drags.
  • Viewport culling in render(): off-screen layers are skipped entirely.
  • Smart import downscale: huge photos are clamped to MAX_IMPORT_DIM=4096 on the way in, keeping memory and GPU usage sane.

Folder & multi-asset drop with layout chooser new

  • Drop a folder (or many files at once) of images, videos or 3D models — VIZION walks the directory via webkitGetAsEntry and groups assets by family.
  • New layout modal appears for each family with 6 layouts: Grid, Masonry, Row, Pile, Turntable and Original — placement is computed around the current board centre, respecting zoom and pan.
  • Works for images, videos and 3D models (.glb / .obj / .stl / .fbx) in a single drop.

Cover Flow 3D mode new

  • iTunes-style focus carousel: side cards rotate, scale and depth-shift, the focused card is centered and on top.
  • Floating HUD with prev / next / exit, plus ←/→ arrow-key navigation and click-on-side-card to refocus.
  • Driven by a new computeLayoutPlacements() with a coverflow branch and a transient _coverflow state object that restores the original layout on exit.

Arrange button + align / distribute new

  • The brush slot is replaced by an Arrange button (desktop + mobile) opening a submenu with the 6 layouts, 6 align actions (left, center-X, right, top, center-Y, bottom) and 2 distribute actions (horizontal, vertical).
  • Closes on outside click, Esc, and is opened/closed with the R shortcut.

3D boxed layers — usability UX

  • New top dragbar on each 3D embed lets you move the box without fighting the OrbitControls below.
  • The 3D canvas is now pointer-events: none outside the dragbar / resize ring, so neighbouring image layers stay clickable.
  • Resize ring widened to a 22 px inset hit area for easier grabbing.
  • Dragbar respects state.zoom in infinite-board mode for 1:1 cursor tracking.

Text tool fix in infinite-board mode fix

  • openTextEditor() now correctly converts world → screen coordinates using x*zoom + panX when body.is-no-frame is active.
  • Font-size is scaled by visualScale so the editable input matches the rendered glyph size on the canvas (true WYSIWYG at any zoom).

Single-click drag after multi-import UX

  • Freshly imported batches are now select-and-drag in a single click instead of requiring a select → release → drag sequence.

Open VIZION →

TRACE v1.0.0

Released — April 26, 2026

Initial release — Free IP lookup, privacy audit & network diagnostic major

  • Single-page, browser-native diagnostic that shows in real time what every website, your ISP and the network already know about your machine.
  • Public IP & geolocation: IPv4 + IPv6, reverse DNS (PTR), ISP, ASN, organisation, city, region, country, postal, timezone, currency — pinned on a Leaflet + OpenStreetMap map (no Google).
  • 4-API cascade with 6-second timeout: ipwho.is → ipapi.co → ipapi.is → ipify, with graceful fallback when blocked.
  • Local network: WebRTC STUN probe, RFC1918 LAN addresses and any leaked public IP behind a VPN.
  • Browser fingerprint: canvas hash, audio hash (OfflineAudioContext), font enumeration (20-font test set), GPU vendor + renderer, screen, viewport, DPR, languages, timezone.
  • Hardware: CPU cores, device memory, battery, storage quota, permissions inventory, media devices, plugins.
  • Speed test: live download (1/5/10 MB chunks against speed.cloudflare.com) with progressive bitrate display, 2 MB upload estimation, RTT.
  • DNS & reachability: DoH lookup of A, AAAA, MX, NS, TXT/SPF, Cloudflare PoP / colo / edge IP, latency probes against Cloudflare, Google, AWS, Azure, OVH, GitHub, 1.1.1.1.
  • Privacy posture: 32-bit fingerprint ID with entropy estimate (“1 in N visitors”), VPN / Tor / hosting heuristic on ISP keywords, prefers-* media queries, WebAuthn, Bluetooth, USB, Serial, HID API availability.
  • Live behaviour: dwell time, mouse moves, clicks, keystrokes, scroll, focus, fullscreen, idle, page visibility — plus opt-in probes (GPS, motion sensors, microphone level, gamepads) requiring an explicit user click.
  • JSON export: one-click download of the full diagnostic report.

Day / night theme new

  • CSS-variable theme toggle stored in localStorage.trace_theme, default following prefers-color-scheme.
  • SVG sun / moon icons (no emoji), top-nav button. All panels, the splash screen and the Leaflet map adapt.

Network-themed splash screen new

  • Three-panel splash inspired by CAMERRA: brand panel + animated rotating “network aperture” rings + info panel with version, features, brand.
  • Scanline animation, theme-aware colours (cyan accent in dark, blue accent in light).

PWA & PayPal support pop-in new

  • Installable Progressive Web App: manifest.webmanifest with id, scope, categories [utilities, security, productivity, developer], maskable icons and 2 shortcuts (Run speed test / Export JSON).
  • Offline-capable shell via service-worker.js.
  • Discreet PayPal “Support” button in the top nav, opens donate flow in a pop-in.

SEO 2026 — full search + AI discoverability new

  • 6-graph JSON-LD: Organization, WebSite, WebApplication (with full featureList), BreadcrumbList, FAQPage (7 Q/A), SoftwareApplication.
  • Open Graph + Twitter Card, canonical, hreflang (en, fr, x-default), dual theme-color for dark/light.
  • noscript fallback and hidden indexable <div id="seo-intro"> with H1, H2, FAQ and feature list.
  • robots.txt explicitly allows GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, anthropic-ai, PerplexityBot, Google-Extended, Applebot-Extended, CCBot, Bytespider, Meta-ExternalAgent, MistralAI-User and more.
  • sitemap.xml with hreflang and image:image, plus llms.txt, llms-full.txt, ai.txt and humans.txt.

Privacy by design privacy

  • No backend, no analytics, no advertising, no third-party tracker, no signup, no email collected.
  • Microphone, GPS and motion sensors are never auto-activated — only on an explicit user click.
  • Source is a single static HTML file for full transparency.

Open TRACE →

MAIL MAX v1.0.0

Released — April 25, 2026

✉️ Initial Release — King of Mailing List CSVs major

  • Convert any CSV mailing list to the exact import format expected by 19 newsletter providers: Mailchimp, Brevo (ex-Sendinblue), Mailjet, MailerLite, HubSpot, ActiveCampaign, ConvertKit (Kit), Klaviyo, Beehiiv, Substack, GetResponse, AWeber, Constant Contact, Omnisend, SendGrid, Loops, Resend, Campaign Monitor and Drip.
  • Custom RFC-4180 CSV parser with delimiter auto-detect (comma, semicolon, tab, pipe), quoted fields, embedded newlines and BOM stripping.
  • Header normalisation across English, French, Spanish and German aliases plus heuristic email-column detection when headers are missing.
  • Multi-file ingestion with cross-file deduplication by lowercased email, invalid-email filtering, optional UTF-8 BOM for Excel.
  • Live preview table (first 50 rows) with stats: total contacts, dropped invalids, removed duplicates.

📥 Import-mode pop-in new

  • When dropping new files on top of an existing list, choose Merge & add, Replace or Cancel. Esc / backdrop / close all cancel.

💳 PayPal one-shot credit packs new

  • 100 free email credits granted on first launch (1 credit = 1 exported email, stored locally).
  • Three credit packs via PayPal one-shot orders (intent=capture, EUR, no subscription, credits never expire):
  • · Starter — 1 000 emails for €5
  • · Pro — 10 000 emails for €50 (best value)
  • · Agency — 100 000 emails for €300 (€0.003/email, -40% volume discount)
  • Header pill shows credits remaining with .low / .zero color states; click to top up.

🔍 SEO / GEO / LLMs reinforcement new

  • 5-graph JSON-LD: SoftwareApplication, Organization, WebSite, BreadcrumbList, HowTo, FAQPage — with accurate one-shot credit-pack offers.
  • Open Graph, Twitter Card, hreflang, canonical, robots.txt opening 11 AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.).
  • llms.txt, llms-full.txt and ai.txt with full pricing and provider matrix for ChatGPT / Claude / Perplexity / Gemini ingestion.
  • SEO footer: comparison table vs Excel/online tools, FAQ accordion, provider grid, use cases.

📱 PWA new

  • Installable PWA with offline-first service worker (cache mailmax-v1.2.0).
  • file_handlers for .csv, 4 PWA shortcuts (New / Mailchimp / Brevo / HubSpot), edge_side_panel, display_override with window-controls-overlay.
  • 3-second splash screen with streaming-CSV canvas animation, click / Esc / Enter / Space to skip.

📝 Details

Single-file vanilla JS PWA · RFC-4180 parser · PayPal JS SDK (intent=capture, EUR) · localStorage credit ledger · Service Worker cache mailmax-v1.2.0

→ Open MAIL MAX


PDF-YZ v0.2.0

Released — April 23, 2026

✏️ Genuine PDF text editing critical

  • Edited text now actually exports correctly — the export pipeline rewrites embedded fonts, masks the original glyphs and re-renders with the user's chosen font, size and color. Previously the new text was overlaid on top of the original, producing unreadable double-strikes fix
  • Auto-extending white mask — the masking rectangle now grows to max(originalWidth, newTextWidth) using font.widthOfTextAtSize(). If you replace "fox" with "elephant", the original is no longer visible past the mask fix
  • Multi-line edits supported — typing extra \n beyond the original line count now masks and renders each new line at the correct PDF Y at the chosen size new
  • Font size synchronization — changing size in the side panel now updates both el.fontSize (CSS) and el.pdfFontSize (export). Previously, size edits were silently lost on rebuild/zoom and ignored by the exporter fix
  • Deleted extracted text is now actually erased — emptying an extracted text block now writes the white mask to the export, removing the original from the PDF fix

⌨️ Full classic keyboard shortcuts new

  • App-level always-on — Ctrl+S Export · Ctrl+P Print · Ctrl+F Find · Ctrl+O Open · Ctrl+Shift+N New blank · Esc cascade new
  • Editor shortcuts — Ctrl+Z Undo · Ctrl+Y / Ctrl+Shift+Z Redo · Ctrl+D Duplicate · Ctrl+B Pages sidebar · Ctrl + + / − / 0 / 1 Zoom · PageUp/PageDown/Home/End Page navigation · Arrows nudge (Shift = 10 px) · Del / Backspace Delete new
  • Tools — V T I D H E select / text / image / draw / highlight / eraser new
  • Two real bugs fixed — Ctrl+S previously bypassed the export modal and exported with stale prefs; Ctrl+D and Ctrl+A previously called .closest() / .cloneNode() on S.selected, which is a data object, not a DOM node. Both reworked to operate on the data model + placeElement() fix
  • Form-field aware — when typing in an input, textarea or contentEditable, the browser keeps native Ctrl+Z/X/C/V/A. Editor shortcuts only fire outside form fields fix

🖼️ Top-right install button & splash resume gate new

  • Permanent install PWA button — fixed top-right (z-index: 1000000), visible at all times during pre-home, even with a document open. Hidden only when running as installed standalone PWA new
  • Splash resume gate — when reopening, a neutral resume banner shows the previous file (name, age, page count, size) above the drop zone with Resume / Discard. Inspired by SuperPrint's #sp-startup-* pattern new
  • Top-left Pages button on desktop — sidebar toggle moved out of the toolbar onto a corner-fixed control on desktop (mobile keeps the toolbar entry) new

💳 PayPal subscription gate new

  • Donation pop-in — first install attempt opens a dark-themed modal with PayPal vault subscription SDK (lazy-loaded) and a secret-code bypass. Web version stays 100% free; installable app runs on a small monthly subscription new
  • Persistence — donor flag stored in pdfz_donated_v1; subscription button hidden after first successful donation new

🌐 EN-only audit fix

  • French strings purged — crop overlay ("Toutes les pages / Page courante / Annuler / Appliquer"), btnNewDoc confirm, three toast messages, all translated fix
  • og:locale:alternate fr_FR removed — the app is now declared EN-only across meta and JSON-LD fix
  • Verified with grep — zero French accents remain in any PDF-YZ source file fix

🔍 SEO / GEO / LLMs reinforcement new

  • JSON-LD enriched — added SoftwareApplication, HowTo (4-step "how to edit a PDF online"), and aggregateRating on WebApplication. BreadcrumbList and FAQPage retained new
  • Sitemap upgraded — multi-namespace (xhtml + image), lastmod 2026-04-23, xhtml:link hreflang declarations, image:image entry for Google Images new
  • robots.txt opened to AI crawlers — explicit Allow for GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-Web, anthropic-ai, PerplexityBot, Perplexity-User, Google-Extended, CCBot, Bytespider, Applebot-Extended, cohere-ai, Mistral-AI new
  • Dedicated llms.txt — created at /PDF-YZ/llms.txt with positioning, features, shortcuts, stack and sister-app links. PDF-YZ entry also added to the root /llms.txt directory new

🐛 Other fixes

  • Capture-phase mousedown no longer destroys inline edits — the global text-click handler on #canvasArea now excludes .el-text, .pdfz-inline-textarea, .resize-h, .el-img, .el-sig, .el-note, .el-pdf-img, #btnPagesFixed and #btnInstallPwa. Text editing was silently broken before fix
  • Splash banner colors neutralized — replaced blue accents (#3b82f6, #2563eb) on the resume banner with neutral #111/#000 per request fix
  • Ctrl+D duplicate now works — uses JSON.parse(JSON.stringify(src)), fresh UUID, +15 px offset, clears the extracted flag, and pushes a real undo entry fix

📝 Details

pdf-lib 1.17.1 · pdf.js 4.9.155 · Vanilla JS / single-file · PWA (manifest + service-worker · file_handlers application/pdf · share_target POST) · Service Worker cache bumped to pdfz-v4 · softwareVersion 0.2.0 in JSON-LD, humans.txt and llms.txt

Known limitation — undo/redo currently only restores add-type actions. Drag, resize, font/size/color changes and content edits do not yet push to the undo stack. Tracked for next sprint.

→ Open PDF-YZ


KULT 2 v0.0.3

Released — April 21, 2026

🏙️ Urban Generator Update new

  • Adaptive live preview — Urban generator now uses a GPU-friendly instanced preview while dragging sliders, then automatically restores the full detailed district preview when you release controls fix
  • Detailed generation preserved — final generation path keeps full geometry/detail behavior (facades, rooftop props, accessories) fix

🧭 Ergonomics & UI polish new

  • Urban panel redesign — wider panel, improved spacing, clearer visual hierarchy and larger controls for faster tuning
  • Generate action improved — dedicated primary button styling with sticky action row for better accessibility while scrolling
  • Slider readability — labels, ranges and values are now easier to scan and compare during iterative adjustments

📝 Details

Three.js 0.179.1 · WebGLRenderer · InstancedMesh preview path · Urban Architecture Generator UX refresh · Vanilla JS

→ Open KULT 2


ZORD v0.0.5

Released — April 26, 2026

🛡️ Security-focused release security

  • Strict CORS allowlist on ai.php — replaced the Access-Control-Allow-Origin: * wildcard with an explicit whitelist (app.zigmoon.com, zigmoon.com, www.zigmoon.com + localhost for dev). Unlisted origins are rejected with HTTP 403 and a Vary: Origin header is emitted on every response. Non-POST/OPTIONS requests now return 405 fix
  • OAuth tokens moved out of localStorage — Google Drive, Dropbox and OneDrive access tokens are now stored in sessionStorage (cleared when the tab closes), reducing the XSS-token-theft window. A one-shot migration helper transparently moves any pre-existing token from localStorage to sessionStorage on first launch fix
  • Content Security Policy added — both index.html and index_FR.html now ship a strict <meta http-equiv="Content-Security-Policy">: default-src 'self', object-src 'none', frame-src 'none', base-uri 'self', form-action 'self', with explicit allowlists for Quill / Tailwind / cdnjs (scripts & styles), Google Fonts, and the AI / cloud APIs (Anthropic, OpenAI, Gemini, Mistral, LanguageTool, Pinata, Google & Microsoft & Dropbox OAuth) new
  • Service Worker cache bumped to zord-v8-0.0.5 — forces every installed PWA to fetch the new hardened HTML, JS and PHP shell on next launch new

📱 Mobile UX new

  • Voice / dictation button promoted in the mobile More (…) drawer — now the third button (after Bold & Underline) instead of being hidden at the bottom of the list. Faster reach for one-handed dictation on phones new

📝 Details

CORS allowlist · CSP meta · sessionStorage OAuth migration · Service Worker zord-v8-0.0.5 · softwareVersion 0.0.5 in JSON-LD, splash and preferences · No functional regression, no API change.

→ Open ZORD


ZORD v0.0.3

Released — April 19, 2026

🛡️ Security Hardening fix

  • CORS wildcard removed — ai.php used Access-Control-Allow-Origin: *; now restricted to an explicit whitelist of allowed origins fix
  • XSS via IPFS hash — an unsanitized IPFS hash was inserted via innerHTML in app.js; replaced with safe textContent fix
  • cURL timeout + payload limits — ai.php and ai-proxy.php now enforce CURLOPT_TIMEOUT (30s) and reject payloads larger than 512 KB to prevent resource exhaustion fix
  • IPFS hash validation — hashes are now validated against a strict CID regex before any fetch request fix
  • test-php.php removed — was exposing phpversion() in production fix

📱 Android Chrome — Data Loss Fix critical

  • Page Lifecycle API implemented — added pagehide, freeze, resume and pageshow event listeners. On Android Chrome, when the phone goes to sleep, the browser freezes or discards the tab without firing beforeunload. Documents were lost on wake. Now all four lifecycle events trigger a synchronous emergency save to localStorage fix
  • visibilitychange guard removed — the handler was gated behind && __idbInitDone, which skipped the synchronous localStorage save if IndexedDB hadn't finished initializing. Condition removed — localStorage now always writes on visibility change fix
  • _emergencySaveSync() centralized — all lifecycle events (beforeunload, visibilitychange, pagehide, freeze) now call a single function that captures the editor snapshot + writes full localStorage + writes emergency backup in one synchronous pass new
  • BFCache restore — pageshow with persisted=true (back-forward cache) now re-syncs data from IndexedDB instead of showing stale content new
  • Frozen tab recovery — resume event re-initializes IndexedDB when a previously frozen tab becomes active again new

🌐 Bilingual Audit (EN & FR) fix

  • English page had French text — sidebar stats showed "0 mots" / "0 signes" instead of "0 words" / "0 chars"; desktop tools trap had "Couleur", "Lien", "Nettoyer" instead of "Color", "Link", "Clean" fix
  • Broken Unicode characters in EN — sort filter arrows and tool icons displayed as ? instead of → / ↗ / ↵ fix
  • French "Text break" untranslated — desktop tool label now reads "Saut de texte" in the FR version fix
  • Tu/Vous inconsistency in FR — 12 modals (export, print, rename, AI settings, cloud, save reminder, Web3) mixed formal vous and informal tu. Standardized to tu across the entire French interface fix
  • i18n.js accent & punctuation fixes — fixed missing accent on "Régénère", added French typographic spaces before ! and ? in confirm.newTopicDetected, standardized 8 translation keys from vous to tu fix

🧹 Cleanup & Meta

  • Version bumped to 0.0.3 — removed "alpha" designation. Updated in <meta generator>, JSON-LD softwareVersion, splash screen, preferences contact tab, humans.txt, llms.txt, llms-full.txt
  • Service Worker cache bumped to zord-v3 — forces fresh cache on all clients
  • Silent .catch(() => {}) patterns flagged — error swallowing in multiple async paths identified for future logging improvements
  • CSP headers recommended — Content Security Policy not yet present on HTML files; documented as next priority

📝 Details

Page Lifecycle API · pagehide · freeze · resume · pageshow · localStorage sync save · IndexedDB · Quill.js 1.3.6 · Tailwind CSS 3.x

→ Open ZORD


ZORD v0.0.2-alpha

Released — April 19, 2026

🤖 AI Assistant — Full Overhaul major

  • Models upgraded to latest generation — Claude Sonnet 4 & Haiku 4 (Anthropic), GPT-4.1 & 4.1-mini (OpenAI), Gemini 2.5 Pro & Flash (Google), Mistral Large Latest new
  • Proper system prompt — Anthropic now uses the dedicated system field instead of injecting into user message; Gemini uses system_instruction; unified sharedSystemPrompt across all 4 providers fix
  • Anthropic API version bumped from 2023-06-01 to 2023-10-01 in both ai.php and ai-proxy.php
  • Gemini body forwarding fixed — ai.php was stripping system_instruction and generationConfig; now correctly forwarded fix
  • Mistral support added to ai-proxy.php — was missing while supported in ai.php and the client fix
  • Max tokens raised from 1000 to 4096 for all providers — better for long-form writing
  • AI text insertion — removed aggressive heading auto-detection (short lines ending with : and numbered items were incorrectly formatted as H2/H3); now only Markdown # headings are parsed
  • Double .catch() removed — the AI prompt handler had two chained .catch() blocks (second never triggered); merged into one fix

🔧 Critical Bug Fixes fix

  • exportFilename undefined — email export crashed because the variable was block-scoped in a different if branch; now uses a dedicated emailFilename variable fix
  • getQuillForPage() undefined — Web3/IPFS load called a function that doesn't exist; replaced with getOrderedPageQuills() fix
  • Web3 load data format mismatch — was accessing pageData.content but buildExportData() stores Delta objects directly; now handles both formats fix
  • Web3 load missing sanitizeDeltaForLoad() — all other load paths normalize typography (non-breaking spaces, guillemets); IPFS path now does too fix
  • DOCX export half-point font sizes — parseInt("10.5pt") truncated to 10; now uses parseFloat() for correct half-point conversion fix

🎤 Voice-to-Text & Shortcuts

  • Speech recognition language — now detects document.documentElement.lang instead of being hardcoded to fr-FR; English page gets en-US fix
  • Shortcut changed — voice recording moved from Ctrl+Shift+V to Ctrl+Shift+M to avoid conflict with browser "Paste without formatting" fix

🛡️ Security

  • Gemini URL injection — $model parameter in ai.php was interpolated into the URL without sanitization; now filtered with preg_replace + rawurlencode fix
  • OPTIONS preflight — ai.php now returns proper 204 status on OPTIONS requests

🧹 Cleanup

  • Service Worker cache duplicate — vendor/docx.umd.js was listed twice in PRE_CACHE; deduplicated
  • Nested vendor/vendor/ directory — duplicate files removed
  • Cache version bumped to zord-v2 to force SW update

📝 Details

Claude Sonnet 4 · GPT-4.1 · Gemini 2.5 · Mistral Large · Anthropic API 2023-10-01 · Quill.js 1.3.6 · Tailwind CSS 3.x · IndexedDB + localStorage

→ Open ZORD


MIAOU v1.0.0

Released — April 16, 2026

🐱 Initial Release — Anonymous Decentralized Chat

  • Anonymous messaging — join with a random animal avatar and username, no account or sign-up required. Messages are ephemeral and leave no trace new
  • Decentralized architecture — powered by BroadcastChannel API, all communication stays local in your browser. Zero server, zero cloud, zero tracking new
  • Rich media support — send text messages, capture photos and record videos directly from the chat. In-app camera with front/rear toggle new
  • Emoji picker — categorized emoji panel (Smileys, Animals, Food, Activities, Travel, Objects, Symbols, Flags) with search. Mobile-optimized bottom sheet new
  • Media gallery — browse all shared photos and videos in a dedicated gallery panel with fullscreen preview and download new
  • Glassmorphism UI — dark futuristic design with frosted glass surfaces, Inter + Space Mono + IBM Plex Mono typography, fluid animations new
  • Fully responsive — 6 breakpoints (768px, 600px, 380px, landscape, safe-area, touch devices), iOS keyboard handling via visualViewport API, no auto-zoom on inputs new
  • Splash screen & lobby — animated splash with cat ASCII art, lobby with room creation/join, custom username support new
  • PWA & offline — installable as Progressive Web App with service worker, manifest.json, and full offline support new
  • 100% browser-based — no installation, no cloud, no tracking. All processing stays on device. GDPR compliant by design new

📝 Details

BroadcastChannel API · MediaDevices API · visualViewport API · Inter + Space Mono + IBM Plex Mono · Vanilla JS · PWA

→ Open MIAOU


CAMERRA v1.0.0

Released — April 16, 2026

🎥 Initial Release — Multi-Camera Web Studio

  • Multi-camera monitoring — connect unlimited USB and IP cameras simultaneously, with real-time preview in 6 layout modes (Solo, Dual, Quad, 6-up, 9-up, Picture-in-Picture) new
  • Recording & snapshots — record individual or all cameras in adaptive-bitrate WebM (VP9 + Opus, 800 Kbps–8 Mbps), take instant PNG snapshots from any feed new
  • Live broadcast via WHIP — stream a composite feed to any WHIP-compatible endpoint (OBS WHIP, Cloudflare, Janus). Canvas compositor with Grid, PiP and Side-by-Side modes, configurable resolution up to 1080p new
  • Real-time audio monitoring — per-camera waveform and VU meter powered by Web Audio API (AnalyserNode), with automatic audio mixing during broadcast new
  • Dark / Light theme — pure monochrome interface with day/night toggle, persistent via localStorage new
  • Step-by-step tutorial — 11-slide interactive wizard shown on first visit, accessible anytime via the help button new
  • Fullscreen studio mode — immersive full-screen interface for production use new
  • 100% browser-based — no installation, no cloud, no tracking. All processing stays on device. GDPR compliant by design new

📝 Details

WebRTC · MediaRecorder · Canvas API · Web Audio API · WHIP protocol · Vanilla JS

→ Open CAMERRA


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


PDF-YZ 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 PDF-YZ


PDF-YZ 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 PDF-YZ


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 v3.5 — Powerhouse Update

Released — April 21, 2026

⚡ Three Selectable Export Encoders new

  • WebCodecs (H.264 hardware) — true GPU-accelerated MP4 muxing via MP4Box.js, 90 kHz timescale, fps-aligned keyframes, aspect-ratio contain rendering, automatic proxy → original swap before encoding
  • Transmux (MP4 preferred) — honest MediaRecorder wrapper that picks the best H.264/MP4 codec the browser exposes, with graceful WebM fallback
  • MediaRecorder (WebM) — battle-tested universal path, now with deduplicated GPU attempt logic (5 → 4 tentatives) and the user's prefs.gpuExport honored in automatic mode

🏷️ Custom Export File Name new

  • New FILE NAME field directly in the Export Complete popin — type your own name before downloading
  • Extension auto-detected and locked (.mp4 / .webm / .mkv) based on the chosen encoder/format
  • Special characters sanitized to underscores; last name remembered for the next export

🛡️ Editor Hardening

  • cutAtPlayhead() — all split durations now wrapped in quantizeTime(), eliminating float drift across undo/redo cycles fix
  • handleFiles() — URL.createObjectURL wrapped in try/catch with user-facing error (Quota / Security / corrupt file) instead of killing the import loop fix
  • getMediaMetadata() — hard 10 s timeout so a broken file never hangs the import pipeline fix
  • beforeunload cleanup — saveReminderInterval and autoSaveTimer properly cleared on tab close (no more BFCache leaks) fix
  • Removed ~10 hot-path console.log calls from the import loop — cleaner devtools, faster bulk imports

📱 PWA Polish

  • Brand new install icon (phone + arrow SVG), distinct from the export upload glyph
  • Splash screen now uses live picsum.photos imagery with smooth fade — web-only, no local fallback bloat
  • 4 PWA icons regenerated (192, 512, 512-maskable, 180) from the master CUT_THE_FLOW_b.svg on a #1a1a1a background
  • Mobile toolbar cleaned up — install & export buttons visible on both desktop and mobile, redundant media button removed
  • Service Worker bumped to cuttheflow-shell-v3.5.0, 16-asset shell + fonts precached for offline launch

📝 Details

Single-page editor · Vanilla JS class CutTheFlow · Helper modules: webcodecs-export.js, transmux-export.js, export-safeguards.js · Hash-busted asset versioning (?v=<sha256-10>) · 100% client-side, no backend

→ Open CUT THE FLOW


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