← All updates

CHANGELOG

v1.0.0-beta.282

The campaign composer's upgrade path on a plan without campaign email. 229 changes in all: 75 new, 84 fixes, 6 changed, 12 docs and 52 behind the scenes.

The Aglyn Team · Oct 2026

Released to production on October 25, 2026 at 15:03 CDT. See every commit in this release on GitHub

New

  • Marketing site: gate Send now and Send to more on the plan
  • Native: the campaign composer's upgrade path on a plan without campaign email
  • Release flags: stage Bring my site beta now that it is on
  • AI: bring my site is on — the flag defaults on and the guide is listed
  • Native: the phone's AI top bar and sheet wear the bold brand look
  • Commerce: Day report and Shift history head the Aglyn app's Orders on Android
  • Commerce: Day report and Shift history head the Aglyn app's Orders on Apple
  • Native: the shift history spreadsheet, replayed in Swift and Kotlin
  • Kotlin: a list beside its detail heads its own column; rows reach the column's edges
  • Pos: day totals on the Android register, from the console's day report
  • Apple: a list beside its detail heads its own list column, as Figma Orders draws
  • Pos: set up payments on the iPhone, then turn on Tap to Pay on iPhone
  • Native: every crumb but the last opens its level
  • Pos: Tap to Pay on iPhone as Apple's review asks for it
  • Commerce: a Sell online switch, so a product can sell in person only
  • Native: Stays units, unit look-ahead and race-safe walk-ins
  • Permissions: the custom role editor is grouped, searchable and three-state over the catalog
  • Permissions: one catalog for every permission key, core and both plugin APIs
  • Native: the proposed bundle's summary and actor names on activity rows, as the console reads them
  • Commerce: card readers show the store's start-up screen
  • Commerce: waivers plugin, signed online, at the window or on paper
  • Marketing site: upgrade path before Send on a plan without campaign email
  • Native: the phone Home's tiles lead, then the site's or workspace's numbers
  • Commerce: hardware sale records outlive a workspace erasure
  • Commerce: staff walk-ins book through a race-safe server route
  • Console: a beta chip on beta-staged nav tabs, hub headers and the Assist panel
  • Platform: add the release_site_starters flag, off by default
  • Marketplace: list site starters as a reviewed artifact type
  • Platform: site starter vocabulary, source seam and picker zone
  • Pos: Tap to Pay on iPhone entitlement for Aglyn POS
  • Pos: day totals on the register, mirrored from the console's day report
  • Domains: workspace Domains page, buy and transfer in from its header, one panel for both pages
  • Release flags: per-feature beta stage on release flag definitions
  • Pos: offline card limits enforced at the reader SDK, offline errors and reader prompts in plain words
  • Site care: record every candidate workspace and let staff move an open request
  • Domains: workspace routes, buy anytime, transfer in/out, contacts and DNS
  • Pos: offline cards off until turned on, a limit per sale and a daily limit per device
  • Domains: registrar driver and model for transfers, contacts and DNS records
  • Native: Last campaign and Newest site users on Home, glance cards follow the site's plugins, custom domain on Home
  • Commerce: check in at the register, today's check-ins card, product setting
  • Commerce: check-in route for who is due today, with wristbands
  • Commerce: a reservation resource can hold several identical units
  • Pos: register the offline card webhook handler beside the commerce handlers
  • Commerce: a generic posCheckIn zone for the register's check-in
  • Pos: take cards offline on the Android reader, queue and forward them
  • Commerce: POS hardware shop, phase 1, shipped hidden
  • Pos: take cards offline on the Apple reader, queue and forward them
  • Pos: sync, capture and reconcile cards taken offline on the app reader
  • Commerce: store credit carries no platform fee at the register
  • Pos: offline card sale contract, refusal rule and intent metadata
  • AI: Assist can make a site private, as a privacy build item
  • Native: rail name bubbles, stable tile colors and remembered sidebar groups
  • Commerce: day totals card on Orders, beside the shift history
  • Commerce: day totals route across every register, shift and cashier
  • Commerce: no platform fee on cash and gift-card register payments
  • Kotlin: site rows show the custom domain when a site has one
  • Native: invitations join on their own, no Accept or Decline
  • Native: people's photos everywhere and a personal account menu
  • Kotlin: a workspace with no color of its own shows its stable tile color
  • Native: a stable tile color from the workspace id
  • Monitoring: watch the daily Site Care reconciliation on /api/health/crons
  • Apple: phone Home is every area as a tile; the tab bar is the person's pins
  • Kotlin: phone Home is every area as a tile; the tab bar is the person's pins
  • Kotlin: port the phone tab bar and Home tiles contract, replayed against the console's cases
  • Kotlin: every rail target names itself fast on hover
  • Apple: the content area moves: Mac push and pop slide in, sections and tabs cross-fade
  • Apple: a pinned workspace reads in the accent's text shade in the phone's bold look
  • Apple: port the phone tab bar and Home tiles contract, replayed against the console's cases
  • Native: phone tab bar pins and Home tiles contract; rules cap tabBars
  • Native: Aglyn AI tier picker on Plan add-ons, as the console's
  • Native: Delete site lists the datasets that go with it
  • Native: Media is a file browser with folders and split details
  • Native: an Aglyn phone wears the bold brand look, phone form factor only
  • Native: Android phone Aglyn AI in the top bar and the AI sheet to Figma
  • Native: brand blue #00B0FF as the console primary in both apps

Fixed

  • Native: the apple ai jobs screens name the privacy kind, as android does
  • Tests: mock plugin declarations in two more org switcher specs
  • Waivers: store only png or jpeg; settle 282's two test (4) spec reds
  • Commerce: clear beta.282's subprocessor, help-anchor and upload-inspection reds
  • Domains: the workspace Domains tab is placed in the native nav as elsewhere
  • Console: give the hardware orders and waivers list cards help sections of their own
  • Apple: the home stats cards load in a stack, not a Group, so their reads start
  • Commerce: clear the 282 spec and guard reds from the hardware, check-in, splash and waivers work
  • Native: the Besigner's cover lifts when the wordmark is mounted, also under the compact bar
  • Native: Apple leaves a deleted site from any way in; typed confirm trims
  • Native: Home's proposal and Ask AI buttons use the kit's styles
  • Native: the analytics, CRM, insight and glance cards use the kit's accent buttons
  • Native: Home's glance and proposal cards read the member's resolved permissions
  • Apple: the Aglyn app builds with the merged home stats and phone area head
  • Pos: the collector reads Tap to Pay's notice through a helper its own property does not shadow
  • Pos: Stripe Terminal 6 names for the offline delegate and simulated offline builder
  • Pos: day totals header names the days asked for
  • Native: one AI launcher over the in-app Besigner, the editor's own
  • Native: the Last campaign card's figures outside its view builder
  • Native: the seeded forms carry their questions in the design, as production does
  • Apple: one header glow on phone Orders, its list on the paper panel
  • Permissions: mark the catalog refusal log's dedupe set per copy on purpose
  • Commerce: read the brand for the in-person-only help text
  • Kotlin: the phone Home stats read the workspace state
  • Tests: classify the privacy step, alias signup and marketing barrel for 282's reds
  • Marketing site: import planLabelGrantingQuota beneath the core barrel
  • Domains: the DNS editor fails closed when it cannot read the serving site, and an own expired name is renewed, not transferred
  • Domains: a contact edit never makes a name lapse, and a swap that stalls or cannot be undone is rolled back or raised
  • Domains: CAA records are read-only while a site is connected
  • Domains: a swap undoes itself on failure, transfers never take over a held or lapsed name, and the sweep settles unreadable transfers
  • Pos: no small default for offline card limits; Stripe's $10,000 is the only fixed ceiling
  • Native: keep the home stats modules on the pure list through the merge
  • Documentation: word the Assist build page's price-claim note without a brand literal
  • Commerce: product check-in setting in a pure module, native contracts generate
  • Ios: the phone top bar keeps Aglyn AI one tap away; the AI sheet's chip and suggestions at Figma's heights
  • Domains: the managed-record copy reads the platform brand, and the eager budget covers the org page
  • AI: the privacy step's copy reads the configured brand, not a literal
  • Apple: the phone area sections build without a type-checker crash
  • Commerce: the hardware checkout names its line item currency as a usd literal
  • AI: shared prompt blocks keep the hour cache, each job's own blocks five minutes
  • Commerce: page the staff hardware orders list and clear its guard reds
  • Apple: a picked color swatch rings in text/primary, as Figma draws it
  • Signup: wire the alias-signup test; refusal copy has no brand literal
  • Signup: refuse a new account under another account's verified address
  • Kotlin: Home's site address reads the host's own custom domain first
  • Kotlin: content columns stand on the surface; head metrics; square full-width list selection
  • Native: a deleted site on screen leaves for the workspace's Sites
  • Commerce: hardware shop copy reads the configured brand, not a literal
  • Apple: kiosk and display buttons fill #00B0FF under white
  • Pos: keep offline card limits out of the eager bundle and the brand out of settings
  • Kotlin: the rail's name bubble sits 8 dp clear of the rail, never over its edge
  • Pos: offline tender segments wear the brand container on Android
  • Commerce: narrow the hardware cart result and drop unused bindings
  • Native: the Besigner's cover lifts only once the editor has painted
  • Kotlin: tonal buttons and chips select in primaryContainer, not pink
  • Apple: a site row shows its custom domain, else its platform address
  • Account emails: an address another account holds is a 409 on make primary
  • Themes: let mui type the palette path variant's style callback
  • Besigner: an empty cached snapshot is not "not found" until the server agrees
  • Native: the stable tile blue is the console's #0077AD, not the retired #0073AE
  • AI: a liked site's numbers section is followed only when the brief gives figures
  • Site care: reconcile extra time against our own ledger too
  • Themes: typography paints a palette path color like text.secondary again
  • AI: an anchor two section names share goes to the section it titles
  • Site care: match a sender's aliases to their Site Care workspace
  • AI: a page bot protection refuses is left out as blocked, not unreadable
  • Releases: CHANGELOG.md drops a commit's directive
  • Apple: wip head metrics, list search in the list column, column hairline
  • Kotlin: a sidebar group stays as the person left it while they navigate
  • Kotlin: rail captions, badges and neutral tiles measure as Figma's Rail
  • Apple: the picker's pin follows Figma: outlined Pin, plain Pinned label
  • Native: an action's label is a template on every button that shows it
  • Native: the sidebar style defaults to Plain; Tinted is the theme accent only
  • Native: media browser opts in to the back handler; test byte fixture
  • Native: a form's Besigner opens the console's version, a first one seeded from the form
  • Apple: filled buttons paint the accent fill under white, never the scene tint
  • Apple: prominent style no longer recurses; pin and channel toggles outlined
  • Kotlin: Tinted sidebar follows Apple's rule; Admin is the outline shield
  • Apple: wip list and detail columns on the surface, plain rows on E
  • Native: secondary buttons outline in border/strong, never a white rim
  • Apple: the rail's Admin button is Figma's bare outline shield
  • Apple: a workspace's color is its rail tile only, no sidebar wash
  • Apple: rail, SVG logos and the Home tab match Figma
  • Native: every account's rail has Recent and All workspaces; one initial per tile

Changed

  • Platform: site kinds stay the ai plugin's; a starter's kind is opaque
  • AI: merge the ai start's looks over the core site kinds
  • Apple: the media split draws the shared column hairline
  • Native: media browser sizes and colors from theme tokens
  • Native: the Besigner's loading state is the shared AglynLoadingState, on theme tokens
  • Native: the phone AI sheet and panel read spacing and radii from the theme tokens

Documentation

  • Native: the phone navigation comments cite the issue, not a person
  • Releases: leaving the beta series at general availability
  • What's new: the Aglyn 1.0 entry
  • open beta-staged feature pages with a Beta note, held by the release-flag docs spec
  • Domains: Manage your domains guide, and buying while a site has a domain
  • Site care: staff runbook covers a sender in several workspaces and Move to workspace
  • Commerce: regenerate the docs help for the POS hardware guide
  • Commerce: day and event totals in Running the register and What's New
  • Kotlin: the SVG logo note names the property, not a workspace
  • add "Make your site private" page so docs search and Assist can answer it
  • Monitoring: record the twelve-hour grace on the daily GitHub row
  • AI: say what to do when a site's bot protection turns aglynbot away

Behind the scenes

  • Tooling: raise the linear id ceiling to 4064, which exists
  • integration: the phone Home's bar and edit-mode modifiers are iOS only, so Aglyn for Mac builds
  • integration: the phone Home's plan proposal passes services, as the Home card's new signature asks
  • integration: Media's list head claims the page star with claim()/release()
  • Native: code comments cite the issue or Figma, not a person
  • integration: one figure helper in LastCampaignCard; the Overview row reads Analytics in the crumbs test
  • integration: regenerate contracts; PageStarSlot claim/release in ListColumnHead
  • Documentation: regenerate the docs help registry for main's combined docs
  • Native: regenerate the staff screens and take main's boot-registry waiver wording
  • Native: regenerate contracts.generated.json after merging main
  • mark the catalog refusal log per copy; regenerate native contracts and staff screens
  • Native: regenerate contracts.generated.json after merging main
  • Native: regenerate the native contracts after merging main
  • Native: regenerate the native contracts for main's site starters
  • Native: regenerate contracts after merging main
  • Native: Reservations snapshot fixture with the RV hookups look-ahead
  • Native: reservations spec carries units and Sleeps; seed 12 RV hookups
  • Commerce: raise the Linear ceiling to the issue this cites
  • Commerce: specs, docs and What's New for selling in person only
  • Budgets: baseline the waivers plugin's eager bundle
  • Wip: permissions v2 phase 1 catalog, docs and contracts
  • Wip: permissions v2, paused at the usage limit
  • Tooling: raise the linear id ceiling to 4050
  • Commerce: re-baseline commerce's eager budget at 5% headroom; regenerate staff screens
  • Marketing site: sync the pour sources' early-access band, nav and footer to live
  • Wip: walk-in specs, docs line and indexes
  • Wip: walk-in route, paused at the usage limit
  • Console: classify the Domains page and DNS record tables in the footer sweep
  • AI: run the privacy live plan eval in the node environment, as the other live specs do
  • Commerce: the check-in fields spec hands the section only what it reads
  • Tooling: Stripe test key opt-in for the emulated console, test keys only
  • Kotlin: the rail hover test can save the window with the bubble showing
  • wip(native): Home stats, Analytics sections, page traffic and activity, CRM glance and Ask AI tile on both apps
  • Commerce: regenerate the docs indexes and raise the issue ceiling
  • Commerce: land the POS hardware shop, hidden
  • Email: count the three POS hardware emails in the system catalog
  • Kotlin: the dialog entrance test reads its width from the bounds
  • Native: regenerate plugin settings screens for offline card settings
  • AI: live plan eval for privacy requests, skipped unless AGLYN_LIVE_AI=1
  • Kotlin: every stable tile color carries its initial at 4.5:1 in light and dark
  • wip(native): home stats, analytics sections, page traffic and activity contracts
  • wip: Kotlin sheets and dialogs move in on the desktop; 60 fps push frame table
  • Security rules: regenerate the deploy rules for the tabBars cap
  • Dependencies: bump fast-uri from 3.1.8 to 3.1.9
  • Dependencies: bump serialize-javascript from 7.1.2 to 7.1.4
  • Dependencies: bump the dev-minor-patch group with 11 updates
  • wip: AGL-4010 account photos, Figma done, code not started
  • wip: phone navigation paused for a session switch; iOS written, not yet compiled
  • wip: Kotlin content area moves: push/pop slide in, destinations and tabs cross-fade
  • wip: Besigner opens only in the app, with one loading state
  • wip: phone Aglyn AI in the top bar + AI panel to Figma, Apple only
  • wip: Kotlin rail, Home tab and workspace color match Figma, no sidebar wash

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.