v1.0.0-beta.7
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
We're building the open web platform. Follow along as we ship — and tell us what you need.