← All updates

CHANGELOG

v1.22.0

Native import job offers the next wave above its wave list, five waves at a time. 117 changes in all: 7 new, 56 fixes, 3 performance, 1 docs and 50 behind the scenes.

The Aglyn Team · Nov 2026

Released to production on November 12, 2026 at 04:28 CST. See every commit in this release on GitHub

New

  • AI: native import job offers the next wave above its wave list, five waves at a time
  • Native: Bring my site start screen in the apps
  • AI: native import job page offers the next wave with Keep my site or Improve it
  • Pos: take cards offline on a store's own Stripe account, Apple and Android
  • Pos: offline card sales for stores on their own Stripe account, server and contracts
  • Native: the Kotlin port of the one path resolver
  • Native: one path resolver for every way into a place

Fixed

  • Build: next.config prints nothing while Nx reads the project graph
  • Build: the svg-icons build writes its package.json into dist again
  • Apple: iPad Media's folder crumbs keep their names: Include subfolders and the view take a second row when the list column is narrow
  • Native: Home stats match Figma: View details on the Traffic head row, the device split shrinks rather than truncates, Android's range is the white pill, Needs you lines 57 tall and 4 apart
  • Apple: a phone area's title row draws the screen's actions with the row's own context, so its secondary actions fold into ⋯
  • Kotlin: Android area heads: a phone title row with ▾ and ☆ for Pages, Content and Media; Home's Live line; a 40 dp phone search; CRM and Products head their list column
  • Apple: a phone area's title row shows its secondary actions as one ⋯ and its actions as symbols
  • Apple: every phone area gets its title row with ▾, the Activity sheet opens full height, Home drops its large title
  • Kotlin: the phone Home's tile groups sit 120 apart again, not 172
  • Native: a list pushed over an area (Bookings > Services) heads its own list column
  • Native: a save pressed while it is held is kept and saves once confirmed
  • Dependencies: drop the unused firebase-functions-test so cloud/functions installs on firebase-admin 14
  • Native: an empty list's folded detail leaves the head and its crumbs to the shell
  • Data: the Datasets card says it is loading until the server answers
  • Console: a Save pressed during the seed hold is kept and saves once confirmed
  • Native: an action's question shows on the iPad, so Site settings › Plugins switches ask and save
  • Native: local-day-bounds joins the proven-pure modules
  • Native: iPad and Mac area heads sit in the list column, with the sections under the title
  • Native: the switcher names each account as its header last did
  • Native: the account lists name the account on screen as the header does
  • Apple: Add account shows its sign-in form again
  • Native: a DNS or tag check that is not there yet shows as information
  • Native: a list row's switch draws no label of its own inside a grouped form
  • Native: a Setup row on the iPad and Mac opens as its area, under the crumbs
  • AI: size an Improve redesign inside its page ceiling and tell it its room
  • Ios: the offline banner's Retry sits beside its message
  • Native: name the earlier Google address only to a site that used it
  • Ios: a share button inside a POS sheet opens the share sheet
  • Ios: a section pushed over a pinned tab draws its title like any pushed area
  • Ios: the register's Day totals keeps its report, and Today stays today
  • Tooling: the duplication measure reads factories nested in a strict-mode array
  • Apple: System appearance clears every window override, so Dark never sticks
  • Commerce: the cart asks its pickup and delivery options once per load
  • Forms: a field cleared and saved reads Up to date again
  • Native: an iPad list column's head fits it, and its crumbs head the detail
  • Android: an answer's documentation link opens in the in-app browser
  • Sales channels: name the earlier Google address only to a site that used it
  • Android: Back on a tablet goes up a media folder before it leaves Media
  • Native: the Reservations look-ahead reads the stays, and its chips wrap
  • Native: the /products/reservations link opens the native Reservations screen
  • Ios: a section opened on a pinned phone tab is pushed over it
  • Android: the phone's bell opens Activity, not the wide shell's popover
  • Android: a workspace's place leaves the site, and a pinned tab stays selected
  • Ios: a starred setting selects its own row in its mode
  • Tooling: scaffold the .swcrc the plugin build reads
  • Android: a Starred or Recent place in another workspace waits for it
  • Native: Android AI sheet answers render their links and inline markdown
  • Pos: the register's offline banner and card notices follow every sync, Apple and Android
  • Pos: release the customer's hold on an offline card refused as another account's
  • Tooling: keep a test target in the plugin scaffold
  • Build: run inferred lint and jest from the workspace root, as the executors did
  • Tooling: read Next apps and scaffold plugins without removed executors
  • Next: keep production builds in dist/apps/<app>/.next without withNx
  • Build: finish the nx 24 target conversions the migrations left
  • Android: open the whole path from Starred, Recent, search, notices, pushes and links
  • Ios: open the whole path from Starred, Recent, search, notices, pushes and links

Performance

  • CRM: the plugin's load reads small modules, not the field and report tables
  • Sites: every published page stops loading the plugin catalog copy and lodash
  • UI components: both collection search elements load the search box through one import

Documentation

  • Typescript: record why the TS 6 bridge stays on TS 7.0.2

Behind the scenes

  • Console: the kept-press specs press Save once they have seen it is pressable
  • Tooling: raise the Linear issue ceiling to AGL-4222
  • Apple: the tabs UI test taps the seeded site's row once, not its two matches
  • Data: the Datasets card loading state is ready to merge
  • Console: kept seed-hold presses ready to merge
  • Native Apple: a filled form field keeps its name above it
  • Native ownership transfer: candidates show the member's name, email and photo, as the console's member rows do
  • Kotlin: the roster name check reads the stored roster
  • CRM: plugin budget headroom ready to merge
  • Sites: every-page headroom ready to merge
  • Ios: the phone navigation test finds a tab by its tab bar button
  • the next 16.4.6 reland is checked on merged main, ready to merge
  • dependency sweep ready to merge
  • AI: re-record the device audit on axe-core 4.14.0
  • Dependencies: upgrade Next.js to 16.4.6 again for seven moderate advisories
  • Tooling: raise the Linear issue ceiling to AGL-4220
  • Data: find the grid's Filters panel by its dialog role
  • cart options asked once, ready to merge
  • Native counts read every match, not the query's window
  • cleared field reads Up to date, ready to merge
  • earlier Google address notice ready to merge
  • Dependencies: adopt firebase-admin 14 in cloud/functions
  • Dependencies: adopt jsdom 31
  • Dependencies: adopt cypress 16
  • Dependencies: adopt vitest 5 and @vitest/ui 5
  • Dependencies: adopt framer-motion 14
  • Dependencies: adopt eslint-plugin-mobx 0.2
  • Dependencies: adopt mobx-state-tree 9
  • Dependencies: adopt @stripe/stripe-js 10 and @stripe/react-stripe-js 7
  • Dependencies: take every patch and minor in root, cloud/functions and apps/docs
  • Native: openSite holds the app model strongly, as the shell's other hooks do
  • Native Day report byline: an invented store name in its examples and tests
  • Native Day totals test: check today's label after the spreadsheet's name
  • Native iPhone Sites: drop the row's Edited column on a phone, card under the chips
  • Native Day totals and Day report: dates, not ISO days; Day report gets its head
  • Native: title-bar Back restores the sidebar's mode and scope
  • POS iPad: the offline banner and kiosk queue sit in the register's catalog column, beside a full-height basket
  • Native iPhone Orders: report rows are the orders' record rows
  • Native Apple: iPhone grouped forms on the 16-point phone edge
  • Nx migrate: convert console and tenant to @nx/next/plugin
  • Nx migrate: register @nx/js/typescript for typecheck inference
  • Nx migrate: replace nxViteTsPaths with resolve.tsconfigPaths
  • Nx migrate: convert shared-svg-icons build to @nx/vite/plugin
  • Nx migrate: convert console-e2e to @nx/cypress/plugin
  • Nx migrate: convert @nx/eslint:lint targets to @nx/eslint/plugin
  • Nx migrate: convert @nx/jest:jest targets to @nx/jest/plugin
  • Nx migrate: keep project-level nx affected (affected.legacy)
  • Nx migrate: add the nx 24 AI migration prompts written by nx migrate
  • Pos: the offline kit request asks for the direct-charge kit on both apps
  • Dependencies: nx 23.3.0 -> 24.0.6 via nx migrate latest

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.