PagieraDocs

docs / changelog

Changelog

Unreleased changes, documentation additions and compatibility notes.

Unreleased

These entries describe work in the current source tree, not a published npm release. Package availability must be checked against the version you install.

Documentation

  • Preserved the Pagiera purple primary color for solid brand accents and actions; neutral gray styling applies to surrounding surfaces rather than replacing the brand palette.
  • Unified website and handbook surfaces around a neutral gray palette. Reorganized navigation around Create, Integrate and Ship workflows, with sliding menu content and a shared animated navigation highlight.
  • Neutralized marketing navigation colors to soft charcoal glass, gray hover surfaces and neutral popup menus; docs colors are unchanged.
  • Made the marketing navbar transparent at the top and frosted-glass on scroll; replaced link underlines with rounded hover, focus and active backgrounds. Docs navigation remains unchanged.
  • Changed the marketing navigation to a centered rounded capsule with detached animated mega-menu popovers. The docs navigation is unchanged.
  • Centered the website navigation independently of the logo and action widths; added animated hover, focus and active underlines with reduced-motion support.
  • Refined the mega menus and handbook with Pagiera's violet accents, open columns and softer surfaces while retaining grouped navigation and the three-column reading layout.
  • Added grouped Product, Developers and Resources mega menus, with expandable mobile groups. Restyled docs as an editorial three-column handbook with continuous navigation rails and resource links.
  • Refreshed the shared website navigation with centered links, a Get started action, and a responsive keyboard-accessible menu. The documentation header remains separate.
  • Aligned the sticky documentation rails with the article and header, bounded their scrolling to the visible viewport, and prevented sidebar scroll from moving the article at the menu boundary.
  • Expanded the local handbook with architecture, studio workflow, native blocks, document structure, responsive design, components and layouts, forms, interactions, AI and MCP, CLI, revisions, fonts and assets, and deployment guides.
  • Added this changelog and a documentation maintenance policy.
  • Added catalog, content, internal-link and native-block coverage checks to the website build workflow.
  • Corrected the full editor stylesheet import to pagiera/full.css.
  • Included the documentation catalog in the machine-readable site index.

Studio and rendering

  • Added formats for bound values: dates (presets or patterns, with language and time zone), numbers, currencies, letter case, length limits, text before and after, and a value to show when the field is empty. Text inside Request and Repeat can mix fields into a sentence, and {{…}} accepts pipes (date, currency, map, replace, default, …) and safe JavaScript-shaped expressions — conditions, string and list methods, arrow functions — interpreted without any access to globals or the server.

  • Fixed gaps disappearing on the canvas after switching pages in the studio. The canvas now always writes row-gap and column-gap instead of the gap shorthand beside them, which React cleared when it removed the longhands. Full-width Sections also pass separate row and column gaps to their inner box.

  • Deepened the animation module. Entrances gain blur, pop, reveal and fully custom start states, a Children one by one stagger, replay on every visit and a trigger offset. Springs are now simulated from stiffness, damping and mass and published as a CSS linear() easing instead of an approximate cubic curve. Hover and press can lift, move, rotate, tilt in 3D and blur, with an editable state transition. Scroll effects gain slide, rotate and shrink plus a choice of range, including reverse while leaving. Loops gain sway, bounce, wiggle and breathe with amount, delay, direction and speed. Play and All replay entrances on the canvas with the published timing.

  • Fixed a loop being cancelled for good by the element's own entrance or scroll effect; the loop now continues after the entrance ends. Fixed entrances and scroll effects forcing a layer to full opacity once they finished. The last-resort reveal now only shows what is on screen, so entrances further down the page still play when reached.

  • Rebuilt canvas drag and drop. A press only becomes a drag after the pointer moves a few pixels, so clicking no longer reorders layers by accident. The dragged layer lifts and follows the pointer, siblings slide apart to open a slot the size of the layer, and the slot it left closes. On release the layer glides into place. Escape cancels the drag and restores everything, and the canvas scrolls when the pointer nears its edge.

  • A layer is no longer nested inside a container smaller than itself unless that container is empty, and the seam between two sections stays reachable even where a child touches the section's edge. Pinned (absolute) children such as section backgrounds are ignored when choosing an insertion point.

  • Dragging a layer off every artboard now shows no slot, matching the drop, which parks the layer beside the artboards.

  • Blocks dragged in from the Insert panel or the Layers panel show the same insertion line and land between the siblings under the pointer instead of at the end of the container.

  • Padding on a selected container is changed with a small grip in the middle of each side. The shaded padding band no longer captures the pointer, so a section can be picked up anywhere.

  • Published pages no longer reserve a scrollbar gutter. A page that fits the window shows no scrollbar and no empty strip down its right edge, so full-bleed backgrounds reach the edge as they do on the canvas. Navigating between a page that scrolls and one that does not may shift the layout by the scrollbar's width.

  • Fill on a freely positioned (absolute) layer now spans its parent edge to edge on that axis, pinned to both sides, instead of starting at the layer's stored position. A background image set to Fill sits flush on every side even after it has been moved, and its x or y and horizontal or vertical constraint are ignored on the filled axis. Dragging or arrow-nudging such a layer moves it only along the axis that is not filled, the inspector's X or Y field for a filled axis is disabled, and resizing a filled axis turns it back into a fixed size anchored at the edge it was spanning from.

  • A dragged layer is drawn above everything on the artboard, including later sections, so a background image carried over another section is no longer hidden under its text.

  • A layer dragged inside its own container stays in that container until the pointer leaves the container's box, so reordering nested layers no longer jumps to the parent level near an edge.

  • Freely positioned (absolute) layers now move within their own parent and stay freely positioned. Hold Ctrl (⌘ on macOS) while dropping to place one inside another container.

  • A selected layer can be dragged from anywhere inside its box, even where another layer covers it. Pressing and releasing without moving still selects the layer on top. Alt-click selects the next layer beneath the pointer, cycling through the stack.

  • Locked layers can no longer be selected or dragged on the canvas; a press on one goes to the first unlocked layer beneath it. Locked layers remain selectable in the Layers panel.

  • A layer is parked beside the artboards only when it is released at least 32 px outside every artboard, so a drop that slips just past an edge stays on the page.

  • New Frame, Section, Image and Embed layers no longer get a default background colour; whatever is behind them shows through. An Image without a source is outlined on the canvas only, and the published page draws nothing for it. Existing layers keep the colours they already have.

  • The canvas shows one breakpoint artboard at a time; the device buttons in the dock switch it, and a new dock button shows every breakpoint side by side again. The Layers tree lists only the breakpoints on screen. The choice is remembered in the browser.

  • Inspector fields are white with a hairline edge, 12 px left-aligned values and a blue edge with a soft halo on focus; selects and text areas match.

  • The full studio stylesheet no longer changes the host app. Every rule in pagiera/full.css is scoped to the editor's own .pg-scope element and its theme variables are defined there instead of on :root, so importing it no longer overrides the host's colours, radii, headings or buttons. Its dark: variant follows the editor's own .pg-dark class rather than a host .dark class.

  • Images are no longer stored inside pages as base64. createPagieraClient now supplies uploadImage, backed by a new POST /assets route, so inspector uploads keep a URL; and every inline data:image/… in a saved page or imported template, including Luma pictures saved by older versions, is moved into the assets table on its next save. Assets are deduplicated by content hash, their type is read from the file signature, and they are served with X-Content-Type-Options: nosniff.

  • A data source's list path now accepts JSONPath spellings — $.items, items[0].name, $["items"] — alongside dotted paths. Before, $.items looked for a field literally named $ and Repeat had nothing to loop over. When a response is one object, the Response tab lists the arrays inside it with their item counts; choosing one sets the path and re-sends the request.

  • Added Focus mode: the expand button beside the save status, or Ctrl/⌘+Shift+F, makes the studio cover the whole window above the host app's own sidebar and header, and stops the host page scrolling underneath. It is remembered per browser.

  • Settings and Templates are now full pages beside the rail, each with its own section list on the left. The canvas, panels, inspector and dock are set aside while one is open, instead of the page being drawn over a live canvas. The Templates page has a single header with refresh, import and export, a search field, and white template cards; its categories live only in the page's own list.

  • Editing a component no longer needs a Back to pages button. The rail keeps every destination, and opening a page-level one (Pages, Templates, Assets, Data, History, Settings) returns to the page. The top bar shows a breadcrumb whose page name leads back, Escape with nothing selected also returns, and deleting a component's last master returns on its own.

  • The Insert panel shows each element as a small sketch of what it adds (a frame, stacked rows, a grid, heading bars, a pill button, form fields) in two columns, instead of an icon in a grey square.

  • Redesigned the editor chrome as a calm light workspace: a warm off-white frame, white floating cards for the panels and inspector, hairline borders, ink-black for the primary publish action and blue for selection and focus. An icon rail on the left now opens Insert, Layers, Pages, Templates, Assets, Data, History and Settings, and each panel is headed by its name. The canvas tools (select or draw, breakpoint, column grid, interaction preview, zoom, undo and redo, Luma) moved from the top bar into a floating dock at the bottom of the canvas. The top bar shows the Pagiera mark and the page or component being edited; the workspace menu, the quick insert button and the open-document tabs were removed, since the rail covers the same destinations.

  • Small editor labels now follow one four-step scale (10, 11, 12 and 13 px). Labels previously drawn at 8–9.5 px are raised to 10 px, and fractional sizes are rounded to the nearest step. Larger headings in dialogs and panels are unchanged.

  • Added an italic text style and a Max lines setting that cuts longer text with an ellipsis. Both are under Typography and can differ per breakpoint.

  • Added separate corner radii. Corners stay linked to Corner radius until Border and shadow → Corners is switched to Separate.

  • Added an image Focus setting that chooses which part of a cropped image stays in view.

  • Added Appears after for fixed elements: the element slides in once the page has scrolled the given distance. The canvas draws such an element only while it or one of its layers is selected, so it does not cover the page underneath. Without JavaScript it is shown from the start.

  • Fixed triggers inside the site header or footer that open another layer of the same component, such as a menu button and its drawer; they did nothing on pages that received the component through the site layout.

  • A component whose root fills the available width and holds a single child is no longer shrunk to that child when it is opened for editing.

  • Full-width components now open on one artboard per breakpoint. They were previously drawn on a canvas one pixel wide, and their breakpoint overrides could not be edited.

  • Placed components can replace an image source, its alt text and a link destination per instance, in addition to text. The Content tab lists them under Component content.

  • The Assets panel shows each component as a card with a live preview. Clicking a card opens the component and dragging it places a copy; variants appear as chips only when there is more than one, and the site header and footer are labelled.

  • Create component keeps the breakpoint overrides of a full-width layer, so a responsive section stays responsive after it becomes a component.

  • Added translation keys. Text, image source, alt text, link and placeholder can each name a key; RenderedPage takes the current language's strings through a translations prop, and the studio previews every language passed to it. See translations.

  • Added Appears → On parent hover under Effects → Hover. The layer is hidden until its parent is hovered or focused, fades in when it appears, and is drawn on the canvas only while it is selected — so dropdowns and preview cards no longer lie open over the page or its component. This holds on every breakpoint regardless of which artboard was active when it was switched on, and inside a Repeat the interaction preview opens only the row under the pointer.

  • Fixed entrance animations, layer toggles, draggable layers, request forms and custom page JavaScript not running after a client-side navigation. They ran on a full page load only, because a script inserted while moving between pages is never executed by the browser; the renderer now runs them itself in that case.

Agent tooling

  • Added a source-tree CLI for inspecting pages, reading the document contract, validating files, creating and updating native documents, obtaining a preview URL and explicitly publishing.
  • Updates require an expected page revision. Save conflicts are reported as failures rather than treated as successful writes.
  • CLI validation is structural; rendered preview and host authorization are still required.

Release entries

No historical release notes are reconstructed here. When a release is actually shipped, move its verified changes under the real version and release date, including breaking changes and migration steps where relevant.