Commits

The visual editor, from draft to production in a single day

The day went far beyond midnight: research, a Moveable prototype, a specification with twelve tickets and four releases into production. The editor gains an immersive layout desk, its own composition for each Edition, and Article correction with protected re-extraction.

What had started as a day of polishing the panel ended up being the visual editor's day: from library research to deploying four releases into production. The night closed what the previous day had left half done, and the morning opened with a new question: how do you design a magazine with facing pages from the browser?

A short night: deployment and a sections walkthrough

Before three in the morning there was already a production deployment. A 12-page issue with two sections and one closed PDF served as a walkthrough of the panel: reordering sections moves the index and the PDF keeps closed material in place, and deleting one leaves its pieces in "Sense secció" without losing anything. In the morning, an alignment pass made the canvas origin match the render, and the pilot's report now calls the provider's 429 rejection by its name, with the hint to review limits or billing.

Research, decide, prototype

The research recommendation was to keep the template model and the print engine, and compare interact.js and Moveable with a prototype before choosing. The scope decision closed the frame: editor corrections modify the Edition's Article content, re-extraction is reviewed before replacing it and the original document is never touched; long articles keep the automatic flow with local touch-ups, and images and decorations will be able to cross the fold of a sheet. The Moveable prototype got as far as dragging and resizing over two WeasyPrint pages, with an image crossing the fold and Ghostscript's CMYK conversion preserving the verified boxes.

Specification published and twelve tickets

The specification shipped as issue #26 and was broken down into twelve vertical deliveries (#27-#38) with dependencies and the ready-for-agent label. #27, the editor with real content, arrived the same day: a Library with drag and drop, Moveable 0.53 handles, and a temporary preview that lays out the chosen Edition and returns the real page with its measured boxes, without saving anything. The review caught three bugs: literal text was escaped twice, saving did not watch the real template of Article layouts, and elements could be saved off the page. Suite green with 396 tests. And a subtle fix in the compiler: the factory template writes "{{ cuerpo }}" with spaces and the exact matcher skipped the substitution, leaving the PDF without the Article body.

To production, and to precision

Midday took the editor to production. The afternoon was about precision (#28): zoom and pan, guides from the trim, configurable bleed with a warning, a toggleable magnet, and measurements by keyboard or in millimetres. That yielded a handful of fixes from a demanding review: an Article layout's margins never reached the PDF because the page is named "articulo" while the compiled rule is "articulo-cabecera"; "Encajar" overwrote changes made while it was computing; "Ajustar página" stuck at 25% due to a mis-measured height; "Volver a fábrica" sent a GET where a POST was required and skipped template protection; and the render covered hand-edited CSS of closed covers with its own bleed on top. Each one with a reproduction that failed before and passed after.

The immersive layout desk

With the prototype accepted, the editor dropped the administrative shell: its own header and the whole viewport for Library, desk and Inspector. On tablet, the side panels become overlapping drawers with contained focus and 44 px touch targets. PRODUCT.md and DESIGN.md fix the desktop and tablet contract so no future screen goes back to the quarter-page editor. The full suite passed with 411 tests.

Its own composition, and corrected articles

#29 brought scope to the editor: a "Maqueta global / Composició local" selector in the header and panel links that enter the piece directly. In local scope, autosave writes to the Edition's row and the render compiles into its private directory: isolation was proven by measuring the headline's boxes in the PDFs of two Editions, and the other one comes out identical. The review uncovered six findings, including an Edition switch that could pour one composition into another and a local "Encajar" that still wrote to the global template. And #30 closed the day with what makes the editor truly usable: Article correction from the panel (title, subtitle, Entradilla and body, rebuilt with one block per paragraph and headings with "# ") and protected re-extraction — the new extraction becomes a proposal with the differences and is only applied if the administrator decides so. The source Word file is untouched, a concurrent change gets a rejection notice instead of being overwritten, and thirteen new tests cover the whole path.

Four of the twelve tickets in one day, and the desk is already in production waiting for n2 material for the missing proof: a rendered page with real editorial content.