← All updates

CHANGELOG

v1.0.0-beta.219

A site's datasets are the data plugin's section of the backup; export and restore ask it. 118 changes in all: 38 new, 23 fixes, 38 changed, 2 docs and 17 behind the scenes.

The Aglyn Team · Oct 2026

Released to production on October 1, 2026 at 08:54 CDT. See every commit in this release on GitHub

New

  • Data: a site's datasets are the data plugin's section of the backup; export and restore ask it
  • Billing: usage notices step through 75, 80, 90 and 100 percent, each once
  • Forms: a form's publish, its contract check and its live-page drop are the forms plugin's
  • Copy: screens are called pages everywhere a person reads the word
  • Plugins: a plugin declares the meters it adds to the cost model and the utilization table
  • Console: a plugin keeps its own old addresses answering; the build config names none
  • Plugins: a plugin declares the site collections a backup carries; export and restore walk them
  • Besigner: a plugin's site documents open in the console's one plugin-document editor, and publish through their plugin
  • Plugins: a plugin answers which of its records depend on a thing; "Used by" asks
  • Plugins: a plugin declares what each plan includes of its own keys
  • Marketplace: the template gallery and library ask the marketplace what it offers
  • Templates: an installed template is labeled in its installer's own words
  • Tooling: a plugin reaching into another plugin's storage or pages is refused
  • SEO: a plugin declares the sitemap its own pages fill; products leave the route
  • Plugins: a plugin declares the kinds the site create route writes to its storage
  • Interactions: a page's interactions are the platform's; plugins declare their steps
  • Data: a bound form files its records through a contract, not through core
  • CRM: the digest, task reminders and capture webhook are the CRM's machine routes
  • Outreach: a mailbox's daily cap can be set up to 100
  • Workflows: a site's workflows, webhooks and actions are read through its indexes
  • Plugins: a plugin that earns through the platform answers for its take on revenue
  • Data: a published page asks the plugin that keeps the rows what its repeats render
  • CRM: the CRM publishes its pipelines as a record index; the AI asks it for stages
  • Plugins: a plugin lists and reads another's records through the owner's index
  • Plugins: a plugin that sells through the platform answers for its tax return sales
  • SEO: every site owner gets the SEO check; AI SEO only proposes the fixes
  • Payments: the plugins that take money ask a payment-provider contract
  • Analytics: a site's analytics tag mounts through its vendor's adapter, not core
  • Marketplace: the staff overview's purchase feed and refund queue are the plugin's
  • Email: a self-host can bring its own mail sender, behind a provider contract
  • Plugins: a video host's player is declared by the plugin that plays it
  • Plugins: a workspace erasure takes plugins' records through declared seams
  • CRM: share leads, contacts, companies and deals with other sites, by hand or rule
  • Plugins: the realm loader joins against the store the distributing plugin declares
  • Marketplace: the Plugins pages ask the marketplace what it installed
  • Datasets: forms and automations store dataset values typed, refusing bad ones
  • Sequences: enroll someone at a later step when they had the earlier ones by hand
  • Themes: a stock Material UI built-in theme; the default is named as the platform's

Fixed

  • Sites: an upgrade brings a site past the traffic ceiling back the same month
  • Besigner: "Learn more" under an element finds its category's section from the catalog's own headings
  • Console: every chip list beside typed fields commits only when it changes
  • Forms: a multi-select is drawn only when something it draws changes
  • Besigner: typing in the Properties dialog no longer exceeds React's update depth
  • Tooling: the emulator sweep runs the Data plugin's scoped-sharing spec
  • AI: a third-party player is built only where the brief asks and the plan lists it
  • Billing: a limit-reached notice is sent once per crossing, and its body says what the limit is on
  • CRM: the import's company ids and the contact writer's stay on the id-minting list
  • Web: every boundary and an uncaught import recover a stale build; 50-frame stacks
  • CRM: the capture batch lives beside the contact writer, not in a new core file
  • Tooling: the plugin-domain guard reads a type named in an import as a use
  • Console: a tab recovers when a frozen background tab locks the Firestore cache
  • CRM: deleting or removing a contact keeps the person's marketing refusal
  • Outreach: typing a step's body no longer trips React's update-depth limit
  • Accounts: signing in again from the session dialog never creates or swaps an account
  • Signup: an account /signin bounced for consent gets its workspace on sign-up
  • Accounts: staff hears about every new account exactly once, from any sign-up door
  • CRM: a contacts import chunk reads once, not per row, and answers inside the limit
  • Web: the client-error beacon labels what we recover from and drops what is not ours
  • Outreach: a step test Google refuses for the account answers 4xx, not 502
  • Outreach: a mailbox connect Google refuses for the account answers 4xx, not 502
  • Monitoring: the journeys marker reads get a budget a cold Firestore connect fits

Changed

  • Workflows: the workflow model leaves core; plugins declare the events they emit
  • Bookings: a booking asks the tenant's tax rule for its service rate; it reads no store settings
  • CRM: the CRM's seed fixtures and backfill planner live in the plugin
  • Plugins: orders, bookings and submissions are linked at their owners' addresses
  • Search: each plugin declares what console search finds; the palette names none
  • CRM: the export is the CRM's route, and every workspace keeps its people file
  • Commerce: the product editor, products hub and import dialog zones are declared by commerce
  • CRM: lead conversion, the contact merge and the stage floor are the CRM's
  • Plugins: a form, an action or an email design is linked at its owner's address
  • CRM: the CRM describes and meters its own /v1 resources
  • Besigner: a repeat's item tokens come from its source and the picker's entity fields, not from datasets
  • Data: staff counts an org's capacities from their declarations, and the legacy dataset scan is gone
  • Notifications: each plugin declares its notification categories and digests
  • CRM: the CRM serves its own /v1 resources; the router finds them in a registry
  • Email: each plugin declares the emails its sites send; the catalog is compiled
  • Marketing site: a list's send time is the marketing plugin's; the AI asks for it as record facts
  • Email: an unsubscribe link names the send it rides in; the meters stay
  • Plugins: each plugin defines its own release flag, compiled into RELEASE_FLAGS
  • Email: a merchant's list file is read in the email plugin; core bounds a CSV
  • Console: plugin tab titles compile from the plugins' nav labels and rails
  • CRM: the CRM asks the Emails plugin where a message and a sender live
  • Platform: the signup's UTM parser and forwarder are named for the web's labels
  • Sites: the host-event seam names a page's dispatch an interaction
  • Sites: two roster readers stop borrowing the email plugin's word for a member
  • Platform: the organization type names no CRM capture address
  • Marketing site: the campaign batch rule leaves the mail rail, which names a tier
  • Tooling: the provisioned-mailbox registry is named for what it records
  • Console: product-updates consent is named as the platform's; the rail's stays
  • AI: a job's drafts are owned by whoever registered their writer
  • Plugins: the AI job drawer asks where a campaign or a product lives
  • Payments: shopper and publisher no-payments copy lives in their plugins
  • Console: the shell's floating dock is a console dock, not the AI assistant's
  • Plugins: a plugin names its own activity target types, so core names no AI job
  • Platform: docs search is the platform's, and names no assistant
  • Platform: installed content is the platform's model, named for itself
  • Platform: the rule for a node tree from elsewhere is named for what it guards
  • Marketplace: who may see a listing is decided in the marketplace plugin
  • Marketplace: the publisher agreement and its snapshots live in its plugin

Documentation

  • Self-hosting: the webhook mail provider needs no rebuild, and promises no image
  • Monitoring: the recovered-kinds rate policy and consoleFastCrons as a beat

Behind the scenes

  • Besigner: the two production-registry typing specs get a CI-sized budget
  • Outreach: the keystroke-burst spec has the time its isolated registry costs in CI
  • Besigner: the file-save and unopened-draft sweeps read the plugin-document editor too
  • Besigner: the refused-save sweep reads the plugin-document editor a form now opens in
  • AI: the provider-cost sweep reads the AI meter where the cost model now takes it
  • Sites: the AI palette's catalog line for an Image is declared as prompt text, not a sink
  • Tooling: raise the Linear id ceiling to AGL-3436, read from the workspace
  • Erasure: the credentials spec finds its plugin's report beside the required stand-ins
  • Tooling: raise the Linear id ceiling to AGL-3428, read from the workspace
  • Console: the CRM's sharing rules table is classified as a capped settings table
  • Platform: the staff zone list names the staff overview's new zone
  • Tooling: the platform's measurement of its own product is argued to stay in core
  • Console: the marketplace registrar check reads boot declarations from their file
  • Tooling: raise the Linear id ceiling to AGL-3426, read from the workspace
  • Tooling: retire the converged bounced-account acquisition backfill
  • Tooling: one-off backfill for the two accounts the consent bounce left unattributed
  • Tooling: retire the converged suspended-flag backfill

Share this article

The Aglyn Team

We're building the open web platform. Follow along as we ship — and tell us what you need.

Start building on Aglyn.

Free to start — design your first page and publish in minutes.