Releases

What's new in PathMX. All releases are currently beta.

Play release notes FocusSlides · Install PathMX · CLI reference

0.7.2

Latest release

  • Give your site a fresh look. Paper, Studio, Terminal and Synthwave have refreshed typography, colors and self-hosted fonts. Docs has a new reading layout and simpler mobile navigation.
  • Publish full-text RSS feeds. The new Feed plugin turns an authored query into an RSS feed, with complete article content and links that work in feed readers.
  • Keep saved work on your main branch. Deploy checkpoints content saved on the running site and brings it back to the shared branch, so authors and the site work from the same history.
  • Use the CLI while your site is running. Source edits and Plugin commands coordinate with the running server. Windows startup and path handling are repaired, and piped commands return their complete output.
  • Apply saved preferences before the page appears. Components can use Settings to restore document styling before first paint and keep it in sync across tabs.
  • Keep custom Plugin data live. Plugin routes can refresh the views that depend on their saved data, preserving each reader's access and unfinished input.
  • Build editors with shared operations. Plugins can use public interactions and move existing Blocks while retaining their identities. Block edits preserve unrelated Source metadata.
  • Keep reading and saving reliably. Sign-in restores styles without a reload, live updates no longer interrupt normal navigation, and sites with long editing histories retain less recovery data without losing retry receipts.

Upgrading to 0.7.2

Upgrade official packages together and run your project's checks before deploying.

  • Deploy: follow the runner bootstrap and branch migration before using the new runner. Remove replicate; declare every site-editable file or directory in liveSources. Review saved work before resolving any migration conflict.
  • Themes: review your site's typography and mobile layout. Glass and Bauhaus are now example stylesheets, rather than built-in presets; copy the stylesheet if you use either.
  • Development servers: restart existing servers to pick up the linked-Plugin watcher and running-host CLI changes.

0.7.1

  • Build branching surveys and forms. Checkbox questions can cap selections and offer an exclusive “none of these” choice, follow-up questions can depend on earlier multi-select answers, and answers to questions that are no longer shown are not saved. Reporting labels describe each question for dashboards and exports.
  • Guide people through a form one question at a time. Player can open a questionnaire directly as a guided form with participant controls, sections and skips, saving as people go and resuming at their first unanswered question.
  • Move through Player more easily on phones and keyboards. One Back and Next pair replaces tap zones, slides scroll naturally on phones and stay in place when the keyboard opens, and ⌘/Ctrl+Enter saves the response you are editing.
  • Give a folder its own presentation. A folder's index can set default layouts and a theme for every page inside it. The nearest index wins, and theme: false clears an inherited theme.
  • Retry saves without saving twice. A save can carry a request identifier, so retrying after a dropped connection returns the original result. Durable jobs can run an Action as a step that is not repeated on replay.
  • Build richer custom answer editors. One component can edit several fields of a response, repeated components on a page keep separate identities, and saving several Blocks together reports success accurately.
  • Review learners' work and manage sessions clearly. Staff can review learner Homes read-only, shared folders admit reviewers through their member list, and signed-in people without a Home can see who they are and sign out. Development sign-in works through one configured HTTPS origin, such as a tunnel.
  • Keep working when something is wrong. A malformed Source is set aside with a diagnostic instead of stopping the site, CLI edits made while pmx dev runs are handed to the running server, and pmx mv moves individual assets and updates links to them. Every heading has a permalink, and pages declare their canonical URL for search engines and agents.

Upgrading to 0.7.1

Upgrade official packages together and run bun run pmx lint before deploying.

  • Staff and shared-folder access. role: staff reviews current Actor Homes read-only. A shared folder admits a reviewer only through its members list; add reviewers there when they need a shared folder.
  • Card links inside paragraphs. A rich reference inside a paragraph now fails lint instead of failing when the page renders. Put each card link on its own line.
  • Duplicate ids. Each rendered id now appears once, so live updates stay stable. A hand-written id that repeats a Block or heading id is removed with a lint warning; link to that Block or heading instead. Two hand-written elements with the same id fail lint, and the second loses its id.
  • Nested folder indexes. A nested index.md that sets theme: or default layouts now applies to the pages beneath it. Review nested indexes that previously had no effect.
  • Conditional answers. Answers submitted for questions hidden by their conditions are rejected. Input no longer shows a separate completion message beside the save button; the button shows the saved state.
  • Invalid Actors. An invalid Actor Source is denied with a diagnostic instead of stopping startup.

0.7.0

  • Build reusable interactive components with less wiring. Components declare their properties, server-loaded data, rendering, browser behavior and styles together, with typed references to separate modules when needed.
  • Sign in across devices. Optionally send a one-time email code alongside the sign-in link, with a refreshed, customizable sign-in form.
  • Set limits for written responses. Add character or word limits to text fields. The browser and server enforce them while preserving over-limit drafts for correction.
  • Keep local development sign-ins across restarts. The standard development user chooser remembers sessions until sign-out or expiry.
  • Remove completed tasks without blocking deployment. Saved completion history remains intact when an authored target is removed, and progress counts only current targets. Deployment checks the candidate against a copy of live Sources before stopping the running service.
  • Keep reading and interaction controls working together. Reference panels load their behavior reliably, page outlines link to the displayed content, floating controls respect reserved footer space, and small video players keep their controls accessible.
  • Recover from interrupted uploads. An upload that fails before creating a file can be retried without leaving subsequent reads blocked.

Upgrading to 0.7.0

Start with the 0.7 migration guide and agent prompt.

This release changes custom Plugin and Component authoring. Migrate defineAppComponent declarations to defineComponent, use named Action and Query context arguments, and update renderer/client module references before deploying. Follow the current Plugin, Component and Action contracts. Upgrade official packages together and verify custom Plugins against the same release.

Back up durable Sources and private Plugin state before upgrading. Auth adds a session-storage migration; downgrading packages alone cannot roll it back. Recovery requires compatible application and state versions, with any newer saved work reconciled before restoring a backup.

0.6.8

  • Keep your place while the site updates. Live changes elsewhere on the page preserve unchanged content, drafts, keyboard focus, and Player position—even when other users are saving work.
  • Start using Assessment with one command. Run bun run pmx plugins add assessment to install and activate questions and submissions without writing a repository Plugin. Custom evaluators and Completion remain available through repository configuration.

0.6.7

  • Render directories and query-driven pages faster. Core avoids repeated work when preparing component rows, checking public content, resolving local routes, and formatting schedules. Permission and source changes still take effect immediately.
  • Keep development pages working as projects grow. Browser dependency watching shares subscriptions across package directories, reducing filesystem watcher exhaustion and recovering from failed subscriptions.
  • Load live pages without a redundant fetch. The browser confirms the initial page before fetching again, while still catching changes made as live updates connect.
  • Keep your development viewing user across code restarts. The development switcher preserves your selected user until you end the session or stop the dev command.
  • Keep Player navigation and actions consistent. Entering Player preserves the current Path and query context. Linked cards and image links expose working actions, including keyboard activation.

0.6.6

0.6.5

  • Generate pages from your data. The new Generate Plugin turns JSON or CSV records into Markdown Sources using templates, with saved recipes and previews before writing.
  • Collect Analytics on Cloudflare sites. Static sites can now collect page views and activity, retain observations across deployments, and provide private reports and exports through the Analytics CLI.
  • Return to private pages after signing in. Opening a private page now takes visitors through sign-in and back to the page they requested, including its query parameters.
  • Keep canonical URLs current while browsing. Navigating between pages now updates or removes the canonical URL, including when using Back.

0.6.4

  • Embed posts, videos, and web pages. The new Embed Plugin displays X posts, YouTube videos, and rich link cards, with access to the original source in Player.
  • Add sound to your content. The new SFX Plugin adds sound effects and loops to interactions and presentation moments, with shared mute and volume controls.
  • Move whole folders with the CLI. pmx mv moves pages and assets together and updates supported links, layouts, and query scopes. External URLs remain intact, and you can preview changes before applying them.
  • Read action labels in Player. Presentation actions show their labels beside their icons, making controls easier to identify.

Upgrading custom Player integrations

Replace pmx:beatenter listeners with player:beat-enter and update handlers to the current event detail.

0.6.3

  • Create and manage short URLs. The new Short Plugin lets you give pages custom URLs and change where those URLs lead without breaking existing links.
  • See how people use your site. The new Analytics Plugin adds live reports of page views and activity, with control over what you collect and how long you keep it.
  • Stay signed in longer. Sign-ins now last 30 days by default and renew as you use the site. Site owners can adjust the duration.
  • Share folders with selected people. Set access once for a folder and its pages and files. Restrict individual pages or subfolders further when needed.
  • Make section links more reliable. Links to headings land in the right place, Back shows current content, and mobile navigation stays steady while scrolling.

Upgrading a live site

Private Plugin databases now live in db/. Stop writers and back up existing .pathmx/state/ databases before moving them, or explicitly retain the old location with PATHMX_DB_DIR. Keep databases outside Git and update backup jobs.

Move Actor home declarations to the Home directory index as access: { type: home, owner: /people/ada.user }. Older unbound Auth sessions and magic links are invalidated during the credential migration; users sign in again. Existing account records and authored work remain intact.

0.6.2

  • Find pages listed in directories. Pages included in query-built directories now appear in site search, sitemaps, and AI-readable site listings, while respecting who can read them.
Upgrade notes — Plugin authors

Await app.sources.discoverable(view) when discovering readable pages from a Plugin.

0.6.1

  • Move between pages without the fade. Pages update immediately, and recently visited pages can reopen faster—including with Back and Forward—while keeping content current.
  • Make linked content easier to find. Site search, sitemaps, and AI-readable site listings now follow readable links throughout your site, including links in layouts and navigation. Unlinked pages still work at their direct URLs.
  • Add custom URLs from Plugins. Plugins can publish documents and redirects alongside site pages, including in static exports. See the route API.
  • Keep your chosen appearance. The color-scheme toggle remembers your preference as you navigate and reload, while respecting the site's theme settings.
  • Start presentations in Slides. Player opens new presentations in Slides, with step-by-step controls and working checkboxes. Explore the color experiment.

0.6.0

  • Let browser agents interact with your site. WebMCP lets agents use forms, presentation controls, and file uploads, with control over which actions they can take.
  • Deploy sites that save people's work. Server deployment publishes updates from the CLI while backing up and preserving live content and private data.
  • Show each reader their own content. View bindings display profiles and responses in pages and components, with fallbacks when a value is unavailable.

Authoring and interactive content

  • Learn by building. Expanded documentation covers authoring, publishing, and agent workflows. Build a workshop site with layouts, navigation, themes, and components.
  • Reuse components across pages. Components accept content and named sections consistently, whether written in Markdown or a Plugin. Queries can fill them with content the reader is allowed to see.
  • Link directly to a presentation. Create shareable links that open Player in Focus or Slides. Try the Opera Game or color experiment.
  • Follow progress where you work. Links in a learning path show progress for their destinations, and /~ opens your personal Home.
  • Create link-preview images. The Share Plugin generates a themed preview image for a page to use when its link is shared.
  • Explore connected pages. The Graph Plugin adds backlinks and interactive connection maps that respect reader access.
  • Set up forms and assessments. New guides cover Input forms, Assessment, and saved browser state and settings.
  • Publish apps with browser storage. Browser publications let people keep their work in the browser across visits.
  • Play video in a lesson. Video supports hosted videos and your own files with shared playback controls.
  • Keep interactions steady. Forms preserve their controls during live updates. Player keeps your place during rapid keyboard navigation and restores multi-column layouts.
Migration notes — components and Path progress

Replace defineViewComponent with defineComponent, and <yield /> with <slot />. Plugin component render() receives children and named slots through use.slots. See Components.

Layouts use one <x-source-content /> outlet; the table of contents is <x-navigation-toc />. In Plugin components, use.origin is the authoring Source and ctx.sourceId is the displayed page. Read the latter through ctx.view.readSource(ctx.sourceId) for controls authored in a layout.

A session may now be local. Only anonymous sessions provide signIn; branch on session.type before using credential-specific properties. Explicit native Action targets require data-pmx-action-target on the form alongside one hidden _target field. See Actions.

Custom compositions now use createPathPlugin({ completion: completion.reader }). Remove targets: [path.completion]; use await completion.reader.summary(view, source) for Source summaries. The @pathmx/paths preset handles this composition automatically.

Manual Path-Step Completion facts no longer determine progress. Progress comes from the linked Source's requirements; authored Step ids remain required.

0.5.7

Search your site

  • Find pages and sections. The optional Search Plugin respects reader access, stays current as content changes, and works on static sites. Try Search in this site's header.
  • Know where you are. Breadcrumbs show the page's location, and shared navigation highlights the current page.

0.5.6

A steadier local workflow

  • Run the right version. The CLI uses your project's pinned PathMX version, even when run from a nested folder. Production serving loads your project settings and shuts down cleanly.
  • See style edits live. Changes to imported stylesheets appear without restarting development. Explore the theme gallery.
  • Keep content and progress current. New folders appear as you add them, people can upload attachments to their own work, and progress displays stay consistent across page and interactive views.
Upgrade notes

Pin application @pathmx/* dependencies to 0.5.6, update plugins with pmx plugins update, and run pmx lint. No content or State migration is required.

0.5.3

Personal work and learning paths

  • Define who can act on your site. Mark the people or other entities that can own work and perform actions.
  • Keep responses in readable files. Form answers, submission times, and progress are stored in each person's Home, where you can inspect and edit them.
  • Build nested learning paths. Organize steps into paths within paths, respect reader access, and use completed forms and attachments to determine progress.
  • Run Actions from Plugins. Plugins can invoke existing Actions to reuse site behavior.
Migration notes — Actor State and Plugin APIs

Pin application @pathmx/* packages to 0.5.3, mark Actor Sources with actor: true, and convert legacy Input State before upgrading. Replace the yaml @state fence and nested status records with frontmatter values and submissions: { response: timestamp }. Run pmx lint before deployment.

Plugin composers (createInputPlugin, createCompletionPlugin, createAssessmentPlugin, and createPathPlugin) expose their instance through .plugin. Use app.rewriteHtml for application HTML rewriting, import schemas from zod, and use tx.readSource() to inspect staged Sources in Actions.

0.5.2

Predictable page addresses

  • Control page URLs through file names. Moving a page changes its address and updates links to it. See Sources.
  • Keep system files out of your site. Dependency, Git, and generated-output folders are excluded from content discovery and live updates.
  • Recognize successful CLI updates. An unrelated malformed global dependency no longer makes a successful pmx update appear to have failed.
Migration notes — Source ids

Remove Source-level id fields reported by pmx lint; rename the file to change its identity or route. Authored Block ids remain supported.

0.5.1

One install for Paths

  • Set up a learning site with one package. The Paths preset brings together learning paths, progress tracking, and presentations. Add sign-in and diagrams when needed.
  • Get started with clearer guides. Package READMEs include installation steps and working examples. The first-site guide walks through creating your site.
  • Load installed Plugins reliably. Plugin assets load from their installed locations, including after development restarts.

0.5.0

The first public beta

Build interactive sites and learning experiences from Markdown files.

The first release includes learning paths, progress tracking, presentations, sign-in, assessments, diagrams, React components, and Cloudflare publishing. Build your first site.