← All updates

CHANGELOG

v1.0.0-beta.1

A company domain can require SSO, without making staff require it. 95 changes in all: 14 new, 58 fixes, 4 changed, 10 docs and 9 behind the scenes.

The Aglyn Team · Aug 2026

Released to production on August 18, 2026 at 18:54 CDT. See every commit in this release on GitHub

New

  • Tooling: a source-side hardcoded-color ratchet the census could never be
  • Accounts: a company domain can require SSO, without making staff require it
  • Console: a designed error screen is not a page of the site
  • Sites: a deliberate platform fingerprint, gated on white-label
  • Console: four enforced entitlements get a console surface
  • Console: the plan comparison lists every entitlement, not 19 of 34
  • Tooling: real repo versioning — semver bump, release tags, generated CHANGELOG
  • Console: tell a publisher what Aglyn keeps, where they set the price
  • Console: the scope-drift repair gets somewhere for a human to perform it
  • Console: the usage budget is a card a customer can actually set and see
  • Console: the review queue can LIST a plugin, the step that makes it installable
  • Console: budget alerts fire from the cron, and every usage alert now actually emails
  • Console: a private file can finally be fetched — the DAM calls the signing route
  • Console: per-org usage budgets — the GCP billing-budget shape, in one pure module

Fixed

  • Console: reconcile the 12 merged rescue branches
  • Console: the publish-panel loop guard stops manufacturing the loop
  • Security rules: screenAnalytics was editor-writable, and the catch-all grants by default
  • Tooling: the webhook audit could not see a delivery that failed then retried
  • Tooling: the TTL script applied one of the eight documented policies
  • Accounts: one row per human, and the action lands on the human
  • Bookings: a paid booking states its tax decision, and is recorded
  • Commerce: an unset tax mode refuses the sale instead of zero-rating it
  • Marketplace: a refund now pulls the publisher's share back
  • Commerce: Connect readiness stops being a flag nobody refreshes
  • Console: the storage consent card refuses to ask for consent it cannot price
  • Tooling: the redirect backfill stops re-creating the redirects attach now withholds
  • Console: the Anthropic subprocessor gate classifies AGL-2073's new spec
  • Commerce: four wholesale mocks get the hooks the entitlement gate calls
  • Console: the naming sweep exempts the generated changelog
  • Console: the scope-drift repair card carries its help topic
  • Console: the revenue-truth guard counts a use, not a mention
  • Console: restore the nine stale-seed write guards
  • Platform: the host write-deny guard reads a transactional seed write
  • Console: the org library shares the band, it does not get a second one
  • Commerce: type the renewal spec's fetch mock at its declaration
  • Besigner: /api/ai/assist reserves, rate limits and meters
  • Sites: the boundary ban becomes the invariant it was standing in for
  • Console: the console had no error boundary either, and the plain status page is now shared
  • Console: the host picker reports the SSO-tenant truncation too
  • Console: staff lists are walked to the end, and say so when they are not
  • Commerce: five commerce features refuse in the console, not at the buyer's checkout
  • Marketplace: component install honors the reusableComponents entitlement
  • Console: membersPerHost is a hard cap on all four doors
  • Console: one owner composes every GA4 default param
  • Tooling: the source color sweep counts authored color, not prose
  • Commerce: a lapsed storefront stops renewing, and never sells at 0%
  • Console: the empty error-screen option says what it actually does, and a guard keeps the boundaries in place
  • Documentation: docs.aglyn.com stamps our own reading too
  • Console: localhost and preview builds stop reporting into the live property
  • Sites: the platform version headers leaked through white-label
  • Sites: the provider-free status page is legible in dark mode
  • Console: every route titles itself, and a guard that says so
  • Sites: a customer site never falls through to the framework's error page
  • Console: page_view reports the page, not the notification count
  • Console: a browser we declare ours stays ours, whoever signs in
  • Sites: the marketing surface stamps our own traffic
  • Repository: the Webfile number is operator config, not a handoff note
  • Console: the free site limit is claimed transactionally, not counted then written
  • Console: the free assist cap is spent before the tokens, not after
  • Commerce: the Analytics tab asks the entitlement its own dashboard widget asks
  • Dependencies: monaco-editor 0.56.0 replaces the DOMPurify 3.2.7 we serve
  • Platform: operator identity is configuration, and a DMCA notice reaches whoever actually hosts the content
  • Console: gate the billing webhook on livemode
  • Console: metered storage bills by default; the cap is the customer's
  • Console: the tenant apex is configuration, not our infrastructure
  • CI: the emulator-guards runner works on Linux too, not just macOS
  • Marketing site: the POS register allowance is PER SITE in the generated pricing tables
  • Console: keep the org identity when merging the billing doc
  • Cloud functions: the rules suite was dead at import, on the same parser bug as AGL-2004
  • Repository: synthesise the personal data committed to a public repo
  • Platform: retire the stale addBusinessDays disambiguation, and a type predicate that lied
  • Console: the TX registration is operator config, not public source

Changed

  • Sites: one page chrome for both §512 intakes, guarded against drift
  • Assist: the reservation and the meters get one home, in a lib
  • Console: one shared inverse for the unread tab badge
  • Cloud functions: one comment stripper for one bug, shared shape with AGL-2004

Documentation

  • Self-hosting: the runbook never deployed indexes or TTL, and hid five live keys
  • Documentation: rescue ten orphaned commits from the previous session
  • Documentation: the freeze is on — gate once, then promote
  • Agent tooling: /release carries the owner's evening 2026-08-18 mandate, verbatim
  • error screens do not spend the screen allowance
  • Billing: interactions is not a dead flag — record what reads it
  • Analytics: §8 records the override, the environment gate, and what is actually left for the owner
  • Analytics: the page_title dimension, both defects and what is left
  • Documentation: close 2026-08-18 — the owner's decisions, the restated mandate, six agents in flight
  • Agent tooling: /release carries the owner's 2026-08-18 restated mandate verbatim

Behind the scenes

  • Console: pin every staff action to the pool the person signs in to
  • Console: pin WHICH lock the domain-status route refuses, not just that one reaches it
  • Console: regenerate the Assist docs index after the self-hosting edit
  • Console: the billing lockdown spec configures the operator, like its seven siblings
  • Console: the no-community sweep exempts a verbatim quote, narrowly
  • Console: stub the budget card in the lockdown spec, and document the budget env vars
  • Sites: the quarantine upload spec follows the constant that became config
  • Build checks: the rules suite and 18 emulator specs get a workflow that runs them
  • Cloud functions: the host deny floor now names registers, the twice-clobbered one

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.