v1.0.0-beta.13
Released to production on August 24, 2026 at 15:34 CDT. See every commit in this release on GitHub
New
- Besigner: an instance can override one inner element's attributes
- Tooling: a price cannot move without a recorded decision
- Build checks: the residential address gets the guard it never had
- Tooling: the launch runbook cannot name a script that is not there
- Security: staff can end one stolen device's sessions without taking the account
- Billing: the live dunning schedule is recorded, and something finally watches it
- Analytics: the campaign survives the hop to the console
- Monitoring: the server-error rate gets a reader that can go red
- Plugin UI: a collection search box the toolbar row can hold
Fixed
- Analytics: the transport spec compiles against the widened return type
- Content: an unresolvable org withholds a schedule, it does not burn it
- Content: entry scheduling is gated on the plan that sells it
- Monitoring: every health body labels its environment the same way
- Analytics: begin_checkout waits for gtag instead of racing the redirect
- CI: console:test names its five real failures instead of dying mute
- Self-hosting: two ops guards are allowlisted, and a red now prints its row
- SEO: a host and screen listing publish the card alt they were given
- SEO: a host and screen listing publish the card alt they were given
- Besigner: the canvas expands a component nested inside a component
- Scheduled jobs: the two frequent sweeps move to the punctual runner
- Redirects: only a publisher may route a live site off-platform
- Build checks: the facilitator charge shape is an exit code, not a comment
- Console: the screen version view takes the owner's card spans, and Raw JSON collapses
- Console: the page activity card asks for the newest entries, not a random 200
- Documentation: a bare {date} placeholder is MDX, and it broke the whole docs build
- Build checks: a ratchet's own output names the row that clears it
- Build checks: the brand ratchet sees the two new subprocessor rows
- Self-hosting: the contact-address guard's own literals are allowlisted
- Self-hosting: the campaign hop's console origin is an allowlisted reader
- Console: the DAM dialog fills the screen, and its tiles reflow
- Sites: restore the AGL-2204 manifest work my previous commit reverted
- Security: a revoked device's open tab can still write, and we said it could not
- Sites: the PWA manifest stops declaring a size it never measured
- Consent: advertising needs an explicit yes again, as the policy says
- Console: the staff sign-out dialog admits the revoked tab can still write
- Plugin UI: the collection picker icons take their accent from the theme
- Console: the screen version view cards span 2 and 1 of three columns
- Privacy: the breach report's billing country is the newest one, not the last row
- Privacy: the breach report counted one account holder in three
- Accounts: the handoff redemption honors the revocation epoch too
- Privacy: the copy-drift spec names the tag module as data, and says so
- Accounts: an unverifiable admin token is refused with 401, not reported as 500
- SSO: the one owner seat cannot be moved into the pool it protects
- Privacy: the two App Check control-plane hosts are declared, not published
- Besigner: an attribute edit after an undo stops vanishing
- Accounts: a project-pool sign-in stops inheriting an abandoned SSO attempt's tenant
- Consent: the advertising switch stops describing a rule it no longer follows
- Co-editing: a write of our own no longer re-renders the whole besigner
- Operations: splitting the Stripe record is not the same as fixing its mode
- Security: a revoked App Check debug token can now be proven revoked
- Legal: a re-acceptance banner thanks you for the acceptance it already holds
- Console: a warm cache the server agrees with stops refusing every save
- Console: a warm cache that the server agrees with stops refusing every save
- Console: a photo used only on a product stops reporting as unused
- Console: search finds the page it could not find, and names a partial read
- Sites: a read-only lock stops the beacon firing host automations
- Console: the screen version view packs its cards instead of stretching them
- API: two concurrent site creates can no longer claim one subdomain
- Privacy: a person in several orgs stops being filed in a coin-flipped one
- Console: the campaign survives the consent bounce, and the gap is named
- Billing: the staff margin figure says what it excludes
- Self-hosting: a blank MEMBER_SESSION_SECRET signed cookies with an empty key
- Security rules: an author refused by member-post.ts cannot addDoc the post either
Performance
- Co-editing: the cursor hit test is throttled, not just the cursor write
Reverted
- restore the screen-version card grid a second time
- restore the screen-version card grid my last commit reverted
- Privacy: restore the copy-drift spec's data-mention exemption
Documentation
- Email: the DMARC section stops claiming p=quarantine
- Analytics: the RUM section stops claiming we have no RUM
- Trust: a publisher can install their OWN unreviewed build
- Trust: a plugin publisher, not only a site owner, can name the host
- Marketing site: record the ratified AGL-1244 decisions, and what still blocks two
- Analytics: the registration half is finished, the filter is ACTIVE
- Releases: the last two automatable screenshots, and a guard that sees a blank one
- Analytics: the internal-traffic stamp lands AFTER the boot burst, measured
- Legal: support@ lost its DPA clause the same week it gained one
- Releases: backfill the beta.11 and beta.12 changelog entries
- Self-hosting: two self-host claims that the code does not support
Behind the scenes
- Self-hosting: the hardcoded-host ratchet admits a sentence about aglyn.com
- Content: the entry-scheduling specs admit the gate they now run into
- Billing: three revenue fixtures stop publishing a real home address
- Content: the entry publish gate is proven from both sides of its instant
- Security: the revoked-residual guard could not see the surface it had just gained
- Legal: a published contact address must be one that exists
- Besigner: one attribute edit is one commit, and stays one
- Sites: the image-sink inventory is derived from the source, not remembered
- SSO: the publish gate's attested branch is proven against Firestore
- Besigner: a co-editor undo is proven to move in BOTH directions
- Analytics: two campaign guards that were never executed
- Accounts: the address-prefill fixtures stop publishing a real home address
- Besigner: drop the unrelated reformatting from d17dc873f
- Besigner: the pre-frame assertion stops racing the seeding frame
- Build: the test log is redirected, not piped, so a failed task's output survives
- Analytics: an undefined campaign param can no longer pass as no param
- Analytics: the GA4 hit is proven ADDRESSED, not merely well-shaped
- Security rules: the screen kind AGL-1400 added is proven denied to the client
Share this article
We're building the open web platform. Follow along as we ship — and tell us what you need.