← All updates

CHANGELOG

v1.0.0-beta.7

Advertising runs on implied consent outside the EU/UK. 106 changes in all: 24 new, 65 fixes, 3 performance, 3 changed, 8 docs and 3 behind the scenes.

The Aglyn Team · Aug 2026

Released to production on August 20, 2026 at 19:11 CDT. See every commit in this release on GitHub

This version reached production in 3 deploys; the last landed on August 23, 2026 at 01:13 CDT.

New

  • Consent: advertising runs on implied consent outside the EU/UK
  • Legal: publish Privacy Policy v7 — the advertising disclosure
  • Tooling: reconcile every charged price against Stripe live
  • Assist: the docs answer the question before a model is asked
  • Legal: the new publisher and Apache-2.0 clauses are live, and the pins move
  • Besigner: collaborators get avatars, cursors and selection on the canvas
  • Billing: revenue reports contracted and settled side by side, and names the gap
  • Security rules: the account email collections are server-write only
  • Besigner: an element animates from a preset, and a still page ships nothing
  • Accounts: an account holds several email addresses, and none of them reach SSO
  • Console: aglyn assist reaches the besigner, clear of the canvas chrome
  • Admin: a subscription refund is issued from the org page
  • Feature flags: a rollout targets plan tiers, not only a percentage
  • Besigner: the styles panel offers the theme's scales and can be searched
  • Besigner: a theme color can carry an opacity and stay a token
  • Content: a byline is an author record, published as Person or Organization
  • Tooling: the @aglyn/aglyn barrel gets the gate the jsx barrel already had
  • Console: the entity logo is picked from the media library
  • Besigner: a grid span is authored per breakpoint, not as typed syntax
  • Console: each report kind files into its own Linear project
  • Marketplace: listing conduct is attested at publish and checked at review
  • Operations: bot protection on the console, bypasses first
  • Tooling: guard the firewall posture — a PUT wipes bot protection
  • Platform: one way to write a quota cap, and a wire contract for UNLIMITED

Fixed

  • Billing: add-ons show DISABLED without a subscription, not hidden
  • Billing: unlimited storage stops reading as "a fixed 0 MB"
  • Documentation: the docs stop restating prices, and a guard keeps them out
  • Tooling: allowlist the pricing checker's shared-drive path
  • Besigner: saving a LIVE version drops the live page's cache
  • Tooling: one Stripe key variable, not two
  • Tooling: the pricing guard refuses an unrestricted Stripe key
  • CI: legal-drift passes the third credential its script reads
  • Tooling: the third live fetch gets the firewall bypass too
  • CI: our own bot protection stops failing our own monitors
  • Besigner: a cursor is broadcast only when the pointer is really on the canvas
  • Assist: compose the docs answer for a panel that renders no markdown
  • Console: one ring style for every session; the badge says which one is you
  • Bookings: the tax spec stops depending on what time it is run
  • Console: session colors are disjoint, and the account menu knows your name
  • Console: the footer's docs link stops breaking unrelated suites
  • Console: a photo session carries its color, and the chips overlap
  • Build: stop deleting a real prop from the browser bundle
  • Besigner: a recovered draft can no longer roll back a co-editor's work
  • Console: the avatar's white text is said as a token, not a hex
  • Tooling: a tenant-only diff reported NO app affected and skipped its build
  • Besigner: presence rows stop leaking, and named avatars actually get a name
  • Console: a tab names the document it has open, not just its site
  • Console: the footer links go somewhere, and an unset build prints nothing
  • Tooling: --fresh-cache would have cleared a cache another gate was using
  • Tooling: the gate's derived budgets got less conservative as the box got busier
  • Console: the auth-pool guard reads code, not the prose about it
  • Tooling: the check an author runs before committing reads the spec tsconfigs
  • Console: user-visible copy reads the configured brand
  • UI components: the table of contents scrolls instead of running off the window
  • Tooling: four things the promotion gate caught on main
  • Besigner: co-editing survives a second tab, and names a remedy when it fails
  • Assist: a literal NUL in the cache key made the source file binary
  • Console: the billing page's narrow cards read two abreast
  • Console: the chrome names the workspace the URL names, or names none
  • Besigner: a component instance keeps its overrides out of the DOM
  • Besigner: a numeric attribute value stops spinning the token editor
  • Console: a report filed off a workspace names no workspace
  • Legal: a rebranded build must not claim our marks
  • Console: the content toolbar chooses and acts, settings go behind a disclosure
  • Console: the assist icons are sized at the call site, not left to inherit
  • Documentation: the help registry names only docs pages that exist on main
  • Besigner: the JSS editor keeps un-applied sx when the panel unmounts
  • Besigner: a text commit that changed nothing no longer dirties the document
  • Console: two guards caught today's changes and were left red
  • Console: the marketplace licenses tab is built from cards
  • Console: a stale session opens the sign-in dialog instead of a banner
  • Besigner: pickers rank by name and the hierarchy stays readable
  • Sites: the image above the fold loads first, and the rest wait
  • Besigner: a component publish drops the caches its save was dropping
  • Besigner: a purely numeric style value is stored as a number
  • Besigner: undo and redo reach the open styles panel
  • Tooling: three guards were red on main, one of them armed to delete a TTL policy
  • Console: add the settings page and list components AGL-2486 left behind
  • Console: staff settings tab, a paged users list, balanced org cards
  • Besigner: a field label stops printing over what the box already shows
  • Besigner: every style field can be put back to unset
  • Billing: an unlimited contacts band advertises no overage rate
  • Tooling: the firewall posture checker gets its self-host ratchet entry
  • Plugins: the plugin frame owns its sandbox, not the caller
  • Plugins: a registered API path and permission key have an OWNER
  • Console: the shell applies the feature-flag gate it documented
  • Marketplace: the publisher install waiver is for the publisher's OWN org
  • Billing: an uncapped plan card says Unlimited, not the infinity glyph
  • Billing: an unlimited plan stops reporting itself "over the limit"

Performance

  • Tooling: the gate adapts to the machine and runs its guards at once
  • Sites: the plugin bundle verifier stops shipping to visitors
  • Sites: a styling helper stops dragging firebase onto every page

Changed

  • Legal: acceptance snapshots move to the shared drive
  • Rendering: authored text stops hiding in a shadow root
  • Besigner: one layout section instead of two overlapping ones

Documentation

  • Tooling: the gate header claimed a narrowing the gate does not do
  • Releases: the two gate paths, and what the fast one stops proving
  • Legal: the fork notice bars a confusingly similar name
  • Self-hosting: the brand vars say what they do to the trademark line
  • Legal: the marks are marked where they are first named
  • Legal: a NOTICE file, so the marks are reserved where the code is not
  • Besigner: keep a tsdoc code span on one line
  • Billing: the unlimited-quota work cites AGL-2482, not AGL-2404

Behind the scenes

  • Assist: regenerate the docs retrieval index
  • Tooling: the continuous gate could not read the runs it compares against
  • Tooling: main is gated on a timer, so a red belongs to the commit that made it

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.