v1.0.0-beta.282
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
We're building the open web platform. Follow along as we ship — and tell us what you need.