v1.0.0-beta.201
Released to production on September 28, 2026 at 11:50 CDT. See every commit in this release on GitHub
New
- Abuse: screen lookalike sending domains and plugin credential inputs
- Abuse: one phishing screen for every tenant email, page and site name
- Payments: card fraud signals reach the merchant; staff see a seller pattern
- Billing: a fraud signal from Stripe files an urgent abuse row and moves no money
- Marketing site: a held campaign reads "Held for review", and only staff can release it
- Email: hold a young workspace's phishing-shaped email for staff review
- Staff: cancel a workspace's subscription, and let a security lock stop billing
- Media library: a file is found by the details it carries inside it
- Legal: v9 — Terms and AUP name phishing, scams and impersonation
- Marketing site: a campaign's screens and forms are tables served by their query
- Media library: a replaced file is described by its own details; the API and MCP return them
- CRM: fields use the list table, with reorder held while sorted or filtered
- Outreach: each enrollment opens a detail view with the person's history
- CRM: activity reads as collapsed, paged rows; card buttons sit in the header
- Email: deliverability preflight on every send, and a sending-domain gateway ledger
Fixed
- Abuse: the credential-input check's comment keeps the marketplace naming rule
- Security rules: a page's served-clean review is server-owned
- Payments: the seller read stays inside the destination-charge model
- Lockdown: a suspended site's checkout is gated on the site it charges
- Payments: every tenant card payment requests 3-D Secure through one seam
- Database: trim the click-rollup rule's comment to keep the ruleset under 256 KiB
- Jobs: the console's manual cron doors skip a locked site's rows
- Billing: a held add-on increase refreshes the pending downgrade when it applies
- Billing: request 3-D Secure on the card every subscription is paid from
- Staff: the cancellation comment names the configured brand, not a literal
- Billing: charge an upgrade immediately and grant it only once paid
- Forms: the Forms list's counters, campaign flag and Updated stay true
- CRM: the Fields table's filters and search are its Firestore query
- Events: the public event list asks its query for published events
- Console: list filters refuse by name and label what they filter
- Console: query-served tables keep their query's order
- Email: a suspended workspace sends nothing, on every outbound path
- Tooling: the outreach backfill's fixture links name no Aglyn host
- Database: the enrollment history rule fits the 256 KiB ruleset limit
- Outreach: a person's page reads their mail gateway through the server
- Database: trim two rules comments back under the 256 KiB ruleset limit
- Console: every door that creates a Google account records where it came from
- Tooling: the CRM list-field backfill knows the would-bounce email state
- Scheduled jobs: the CRM task reminders run on Cloud Scheduler, not GitHub Actions
- Console: a date filter's chip names the day the query reads
- Console: an owner is never refused a plugin page before their role is known
- Console: declare the gmail thread link a sequence person's page renders
- Outreach: a person's activity and details cards link their help
- Outreach: a person's page without its click rows says only that list is missing
- Email: load the deliverability store under a partial email library
- Email: keep plugin ids out of the shared engine's quoted strings
Documentation
- Staff: the lockdown page spells canceled the American way
- list pages name the filters their query serves; changed lists re-shot
- CRM: the fields table says why matching its loaded rows is complete
Behind the scenes
- Sites: the plugin-jobs spec's admin mock carries the job lockdown gate
- Console: the adminAudit sweep reads a stamped doc(id).set() as stamped
- Tooling: the Linear id ceiling reads AGL-3359
- Console: the metadata route's read stores the search keys beside the record
- Tooling: the Linear id ceiling reads AGL-3358
- Console: every artifact rename and media edit restamps its list keys
- Tooling: the Linear id ceiling reads AGL-3357
- Tooling: the Linear id ceiling reads AGL-3354
- Database: retire 20 composites no query reads since the list-query sweep
- Tooling: the Linear id ceiling reads AGL-3339
- Tooling: the Linear id ceiling reads AGL-3337
Share this article
We're building the open web platform. Follow along as we ship — and tell us what you need.