v1.0.0-beta.122
Released to production on September 14, 2026 at 15:02 CDT. See every commit in this release on GitHub
New
- Plugins: service registry, nine widget zones, activity actions, entitlement seams
- Console: a Duplicate action copies any resource whole, as a draft
- Tooling: the package map, with scope tags, boundary rules and a shrink-only allowlist
- Marketing site: /pricing tables carry the Aglyn AI add-on, credits band and overage rate
- AI: per-user AI usage — a uid-keyed monthly rollup and every surface that reads it
- Activity log: wire the AI job machine and permission routes to the activity writers
- Billing: the Free taste's refusals are counted and shown beside the workspace's
- Billing: the Free AI taste: 300 credits behind a wall, with abuse precautions
- Besigner: a layout declares properties, and each screen inside it sets the values
- Besigner: a property takes its attribute's own control, so a Yes / no is a switch
- Platform: property kinds are the attribute field kinds, each reaching its field typed
- Console: staff AI monitoring — org AI card, AI columns, margin side, leaderboard
- Activity log: every AI generation, edit and control change lands in the activity logs
- AI: the jobs door asks for ai.generate on the named site before it admits
- AI: generation jobs — state machine, per-step credits, SSE progress, beat resume
- Permissions: ai.use and ai.generate for members and collaborators at every AI door
- Console: buy Aglyn AI from Billing, one AI credits meter, overage controls, cards
- Billing: sell the Aglyn AI add-on — prices, checkout, add-ons and the webhook
- AI: a generated element palette and a validator for AI-emitted node trees
- Billing: a dollar ceiling on AI overage, Free as a wall, and AI credit alerts
- AI: one Anthropic runtime for every AI door, with caching and the gate ladder
- Billing: the Aglyn AI add-on as a seat add-on with its credit band
Fixed
- Console: the per-member and per-account AI usage tables page under the shared footer
- AI: the account-age read resolves the caller's auth pool through authForPool
- Console: the staff org AI route reads live subscriptions via the shared predicate
- Console: the Free AI taste does not read as the AI add-on included in its plan
- Tooling: the TTL policy list carries months.expiresAt, as the config doc records
- Tooling: the TTL policy list carries aiJobs.expiresAt, as the config doc records
- Marketplace: a published component or layout keeps its declared properties
- Console: saving a live screen's SEO or protection refreshes the live page
- Console: the per-user AI usage read keys on the uid, not the user object's identity
- Marketing site: a fractional add-on rate prints to the cent, "$2.50" beside "$0.50"
- AI: the jobs door answers the Free taste's refusals and meters on its account
- Templates: a component or layout template keeps its properties and their tokens
- Console: the staff AI card reads the job model's own field names
- Feature flags: label release_ai_generative for the doors it switches, not the add-on's name
- Billing: the checkout's AI add-on refusals read the configured brand
Performance
- Monitoring: the crons door reads one summary of every beat, not one document per job
- Sites: a refused listen backs off with the length of its outage
- Sites: a hidden tab holds refused listens until it is visible
Documentation
- Staff console: the AI monitoring description fits the tooltip excerpt limit
- Billing: document the three Free AI abuse-precaution env vars for self-hosters
- Billing: regenerate the feature matrix for Free's aiGenerative entitlement
- Besigner: every property type, conditional properties, and layout properties
- Pricing: the Aglyn AI add-on decision is confirmed by the owner
Behind the scenes
- Console: the assist chat route spec carries authForPool for the account-age read
- Plugins: the CRM settings and forms header specs stub the Duplicate flow
- Sites: the image-sink inventory declares the generated AI palette as no sink
- Console: the margin spec pins the assist band Free sells since the AI taste
- Console: the metered sweep records the staff org AI route as a read-only list
- Console: the AI jobs route spec loads the AI entitlement declaration
- Billing: the AI add-on specs load the plugin entitlement declaration
- Site data: the assist usage spec imports plan entitlements statically
- Console: the org-less plugins gate spec stubs the AI permissions the gate reads
- Console: staff audit specs carry the plugin action-group functions the page reads
- Console: billing page specs stub the plugin widget zones the page now mounts
- Console: the screen view announce spec imports the visibility enum statically
- Console: the Screen Properties announce spec stubs the plugin widget zones
- Console: seat-count and checkout spec doubles carry what the plugin zones reach
- Sites: the Duplicate dialog's MUI import is a declared peer of the instance lib
- Tooling: the self-test's AI credits fixture prints Scale's rate to the cent
- Console: four suites stop using Free to mean "no band" and mock the taste's reads
- Console: the cost-breakdown spec's shared-lib mock carries aiAddonName
- Platform: type the layout properties spec's node maps as node schemas
- Tooling: raise the checked-in Linear ceiling to AGL-2932
- Console: the lockdown page spec counts capabilities from the catalog
- Billing: the AI add-on prices are minted, so a missing one is drift again
Share this article
We're building the open web platform. Follow along as we ship — and tell us what you need.