@aglyn/aglyn 1.0.0-beta.277 → 1.0.0-beta.282

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/package.json +11 -11
  2. package/src/lib/app-utils/account-preferences.d.ts +146 -11
  3. package/src/lib/app-utils/account-preferences.js +266 -18
  4. package/src/lib/app-utils/account-preferences.js.map +1 -1
  5. package/src/lib/app-utils/activity-presenter.js +2 -26
  6. package/src/lib/app-utils/activity-presenter.js.map +1 -1
  7. package/src/lib/app-utils/activity-type-labels.d.ts +18 -0
  8. package/src/lib/app-utils/activity-type-labels.js +46 -0
  9. package/src/lib/app-utils/activity-type-labels.js.map +1 -0
  10. package/src/lib/app-utils/artifact-provenance.d.ts +3 -1
  11. package/src/lib/app-utils/artifact-provenance.js.map +1 -1
  12. package/src/lib/app-utils/bundle-intent.d.ts +37 -0
  13. package/src/lib/app-utils/bundle-intent.js +47 -3
  14. package/src/lib/app-utils/bundle-intent.js.map +1 -1
  15. package/src/lib/app-utils/compose-reusable-components.d.ts +17 -1
  16. package/src/lib/app-utils/compose-reusable-components.js +80 -5
  17. package/src/lib/app-utils/compose-reusable-components.js.map +1 -1
  18. package/src/lib/app-utils/docs-help-sections.generated.js +13 -1
  19. package/src/lib/app-utils/docs-help-sections.generated.js.map +1 -1
  20. package/src/lib/app-utils/docs-help.generated.d.ts +23 -11
  21. package/src/lib/app-utils/docs-help.generated.js +64 -7
  22. package/src/lib/app-utils/docs-help.generated.js.map +1 -1
  23. package/src/lib/app-utils/docs-index.generated.js +357 -49
  24. package/src/lib/app-utils/docs-index.generated.js.map +1 -1
  25. package/src/lib/app-utils/health-report.d.ts +3 -2
  26. package/src/lib/app-utils/health-report.js +22 -2
  27. package/src/lib/app-utils/health-report.js.map +1 -1
  28. package/src/lib/app-utils/native-nav.d.ts +39 -4
  29. package/src/lib/app-utils/native-nav.js +69 -3
  30. package/src/lib/app-utils/native-nav.js.map +1 -1
  31. package/src/lib/app-utils/native-themes.d.ts +28 -17
  32. package/src/lib/app-utils/native-themes.js +123 -45
  33. package/src/lib/app-utils/native-themes.js.map +1 -1
  34. package/src/lib/app-utils/operator-alerts.js +4 -2
  35. package/src/lib/app-utils/operator-alerts.js.map +1 -1
  36. package/src/lib/app-utils/org-permission-editor.d.ts +75 -0
  37. package/src/lib/app-utils/org-permission-editor.js +124 -0
  38. package/src/lib/app-utils/org-permission-editor.js.map +1 -0
  39. package/src/lib/app-utils/org-permissions.d.ts +36 -0
  40. package/src/lib/app-utils/org-permissions.js +78 -26
  41. package/src/lib/app-utils/org-permissions.js.map +1 -1
  42. package/src/lib/app-utils/org-role-grants.d.ts +59 -9
  43. package/src/lib/app-utils/org-role-grants.js +97 -10
  44. package/src/lib/app-utils/org-role-grants.js.map +1 -1
  45. package/src/lib/app-utils/plan-entitlements.d.ts +13 -0
  46. package/src/lib/app-utils/plan-entitlements.js +22 -0
  47. package/src/lib/app-utils/plan-entitlements.js.map +1 -1
  48. package/src/lib/app-utils/release-flags.d.ts +52 -1
  49. package/src/lib/app-utils/release-flags.js +68 -2
  50. package/src/lib/app-utils/release-flags.js.map +1 -1
  51. package/src/lib/app-utils/reusable-component-keys.d.ts +13 -0
  52. package/src/lib/app-utils/reusable-component-keys.js +12 -0
  53. package/src/lib/app-utils/reusable-component-keys.js.map +1 -1
  54. package/src/lib/app-utils/screen-analytics-aggregate.d.ts +34 -0
  55. package/src/lib/app-utils/screen-analytics-aggregate.js +37 -0
  56. package/src/lib/app-utils/screen-analytics-aggregate.js.map +1 -1
  57. package/src/lib/app-utils/site-care.d.ts +35 -0
  58. package/src/lib/app-utils/site-care.js +48 -0
  59. package/src/lib/app-utils/site-care.js.map +1 -1
  60. package/src/lib/app-utils/site-font-pairings.d.ts +59 -0
  61. package/src/lib/app-utils/site-font-pairings.js +514 -0
  62. package/src/lib/app-utils/site-font-pairings.js.map +1 -0
  63. package/src/lib/app-utils/site-starter.d.ts +136 -0
  64. package/src/lib/app-utils/site-starter.js +116 -0
  65. package/src/lib/app-utils/site-starter.js.map +1 -0
  66. package/src/lib/plugin-manager/feature-plugins.d.ts +32 -0
  67. package/src/lib/plugin-manager/feature-plugins.js +12 -0
  68. package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
  69. package/src/lib/plugin-manager/first-party-plugins.generated.js +27 -1
  70. package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
  71. package/src/lib/plugin-manager/plugin-entitlements.d.ts +37 -0
  72. package/src/lib/plugin-manager/plugin-entitlements.js +84 -2
  73. package/src/lib/plugin-manager/plugin-entitlements.js.map +1 -1
  74. package/src/lib/plugin-manager/plugin-permissions.d.ts +7 -0
  75. package/src/lib/plugin-manager/plugin-permissions.js.map +1 -1
  76. package/src/lib/plugin-manager/plugin-product-catalog.d.ts +12 -0
  77. package/src/lib/plugin-manager/plugin-product-catalog.js.map +1 -1
  78. package/src/lib/plugin-manager/plugin-site-starters.d.ts +73 -0
  79. package/src/lib/plugin-manager/plugin-site-starters.js +30 -0
  80. package/src/lib/plugin-manager/plugin-site-starters.js.map +1 -0
  81. package/src/lib/plugin-manager/plugin-sitemap-sections.d.ts +8 -1
  82. package/src/lib/plugin-manager/plugin-sitemap-sections.js.map +1 -1
@@ -23,7 +23,7 @@ export const DOCS_SECTION_INDEX = [
23
23
  title: 'A/B tests by AI: write variants, read the result',
24
24
  heading: '',
25
25
  anchor: '',
26
- text: 'A/B tests by AI\nThe test itself is yours. The experiment, its variants, the traffic split, the conversion goal and the counters all belong to the Experiments card on your site\'s Marketing page. Two AI cards sit inside that card: one writes variants while you are setting a test up, and one reads a finished test\'s figures back in plain words.\nNeither of them starts a test, pauses one, finishes one or moves a visitor.'
26
+ text: 'A/B tests by AI\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nThe test itself is yours. The experiment, its variants, the traffic split, the conversion goal and the counters all belong to the Experiments card on your site\'s Marketing page. Two AI cards sit inside that card: one writes variants while you are setting a test up, and one reads a finished test\'s figures back in plain words.\nNeither of them starts a test, pauses one, finishes one or moves a visitor.'
27
27
  },
28
28
  {
29
29
  path: '/ai/ab-tests-with-ai',
@@ -72,7 +72,7 @@ export const DOCS_SECTION_INDEX = [
72
72
  title: 'An AI website builder for agencies',
73
73
  heading: '',
74
74
  anchor: '',
75
- text: 'An AI website builder for agencies\nAn agency\'s problem with a website builder is rarely the first site. It is the twentieth: twenty logins, twenty billing relationships, twenty slightly different stacks, and a first draft that costs the same on the twentieth site as it did on the first.\nAglyn AI runs from the console your team already signs in to, against the sites your organization already owns. One brief can start a build on many client sites at once — and each one stays a separate job you review.'
75
+ text: 'An AI website builder for agencies\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nAn agency\'s problem with a website builder is rarely the first site. It is the twentieth: twenty logins, twenty billing relationships, twenty slightly different stacks, and a first draft that costs the same on the twentieth site as it did on the first.\nAglyn AI runs from the console your team already signs in to, against the sites your organization already owns. One brief can start a build on many client sites at once — and each one stays a separate job you review.'
76
76
  },
77
77
  {
78
78
  path: '/ai/agency-sites',
@@ -254,7 +254,7 @@ export const DOCS_SECTION_INDEX = [
254
254
  title: 'AI jobs and activity',
255
255
  heading: '',
256
256
  anchor: '',
257
- text: 'AI jobs and activity\nEverything Aglyn AI builds is done by an AI job, and every job is kept where you can review it: what was asked, what was planned, what was built, what it cost and who started it.'
257
+ text: 'AI jobs and activity\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nEverything Aglyn AI builds is done by an AI job, and every job is kept where you can review it: what was asked, what was planned, what was built, what it cost and who started it.'
258
258
  },
259
259
  {
260
260
  path: '/ai/ai-jobs-and-activity',
@@ -373,7 +373,7 @@ export const DOCS_SECTION_INDEX = [
373
373
  title: 'Build from Assist chat',
374
374
  heading: '',
375
375
  anchor: '',
376
- text: 'Build from Assist chat\nThe Aglyn Assist chat answers questions. On a site with AI generation, it also builds: describe what you need in one message, such as "add a pricing page and a quote request form, and a welcome email for people who send it", and Assist plans all of it at once and builds it in one job.'
376
+ text: 'Build from Assist chat\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nThe Aglyn Assist chat answers questions. On a site with AI generation, it also builds: describe what you need in one message, such as "add a pricing page and a quote request form, and a welcome email for people who send it", and Assist plans all of it at once and builds it in one job.'
377
377
  },
378
378
  {
379
379
  path: '/ai/assist-builds',
@@ -408,7 +408,7 @@ export const DOCS_SECTION_INDEX = [
408
408
  title: 'Build from Assist chat',
409
409
  heading: 'One job, many parts',
410
410
  anchor: '#one-job-many-parts',
411
- text: 'Everything in the plan is built by one job, each part by the same builder that makes it on its own page, in the order the parts need each other: the layout and the form before the page that places them.\n- Each part stands on its own. A part that fails does not undo the others. What depends on it is built without it, or not built, and the card says which.\n- Everything is a draft. Pages are unpublished drafts unless you ticked the publish box. Products have no photo and the price you stated, if any. Booking services and funnels are drafts to activate. Overlays and automations are switched off, A/B tests are stopped, and campaigns are unsent and aimed at nobody. The exceptions are a redirect, CRM setup, store setup, site settings, tracking tags and media library changes: a redirect rule, a CRM pipeline, custom field or picklist value, the shipping, pickup, delivery and tax settings, the site\'s settings, its tracking tags and a file\'s folder, tags, name and alt text have no draft, so they work as soon as the build saves them, as they do when you save them yourself. The plan card lists each one before you confirm, and Aglyn AI uses only the prices and rates you state.\n- Names are your own. A new variable or function never takes a name the site already uses.\n- Settings are saved live. A change to the site\'s settings has no draft: like a save in Settings, it reaches your live site as soon as that part is built. Making the site Spanish sets its language; it does not translate the pages. A value that cannot be used, such as an email address that is not one, is named on the card and the rest are saved. Assist never changes your site\'s address, domain, members, billing, plugins or cookie banner, and never hides the site from search engines. Tracking IDs change only as a tracking c'
411
+ text: 'Everything in the plan is built by one job, each part by the same builder that makes it on its own page, in the order the parts need each other: the layout and the form before the page that places them.\n- Each part stands on its own. A part that fails does not undo the others. What depends on it is built without it, or not built, and the card says which.\n- Everything is a draft. Pages are unpublished drafts unless you ticked the publish box. Products have no photo and the price you stated, if any. Booking services and funnels are drafts to activate. Overlays and automations are switched off, A/B tests are stopped, and campaigns are unsent and aimed at nobody. The exceptions are a redirect, CRM setup, store setup, site settings, tracking tags, privacy changes and media library changes: a redirect rule, a CRM pipeline, custom field or picklist value, the shipping, pickup, delivery and tax settings, the site\'s settings, its tracking tags, who can see it and a file\'s folder, tags, name and alt text have no draft, so they work as soon as the build saves them, as they do when you save them yourself. The plan card lists each one before you confirm, and Aglyn AI uses only the prices and rates you state.\n- Names are your own. A new variable or function never takes a name the site already uses.\n- Settings are saved live. A change to the site\'s settings has no draft: like a save in Settings, it reaches your live site as soon as that part is built. Making the site Spanish sets its language; it does not translate the pages. A value that cannot be used, such as an email address that is not one, is named on the card and the rest are saved. Assist never changes your site\'s address, domain, members, billing, plugins or cookie banner as a settings change. Tracking IDs change only as a tr'
412
412
  },
413
413
  {
414
414
  path: '/ai/assist-builds',
@@ -422,7 +422,7 @@ export const DOCS_SECTION_INDEX = [
422
422
  title: 'Build from Assist chat',
423
423
  heading: 'What it costs',
424
424
  anchor: '#what-it-costs',
425
- text: 'A build spends AI credits for each part it makes, and the card shows the estimate before you confirm. Products, booking services, overlays, A/B tests, funnels, variables and CRM setup cost almost nothing, and redirects and store setup cost nothing. If the build fails because of something on our side, the credits are given back, and the card says so. See Credits given back.'
425
+ text: 'A build spends AI credits for each part it makes, and the card shows the estimate before you confirm. Products, booking services, overlays, A/B tests, funnels, variables and CRM setup cost almost nothing, and redirects, store setup, settings, tracking tags and privacy changes cost nothing. If the build fails because of something on our side, the credits are given back, and the card says so. See Credits given back.'
426
426
  },
427
427
  {
428
428
  path: '/ai/assist-builds',
@@ -443,7 +443,7 @@ export const DOCS_SECTION_INDEX = [
443
443
  title: 'Automations with AI',
444
444
  heading: '',
445
445
  anchor: '',
446
- text: 'Automations with AI\nOn the Automation page, Aglyn AI can draft an automation from a description, change or fix one you already have, explain what one does, and tell you why one of its runs failed. None of them runs an automation, switches one on, or changes one you have saved: what it drafts arrives as a new automation, switched off.'
446
+ text: 'Automations with AI\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nOn the Automation page, Aglyn AI can draft an automation from a description, change or fix one you already have, explain what one does, and tell you why one of its runs failed. None of them runs an automation, switches one on, or changes one you have saved: what it drafts arrives as a new automation, switched off.'
447
447
  },
448
448
  {
449
449
  path: '/ai/automations-with-ai',
@@ -501,6 +501,83 @@ export const DOCS_SECTION_INDEX = [
501
501
  anchor: '#related',
502
502
  text: '- Actions builder\n- Aglyn AI\n- How Aglyn AI builds'
503
503
  },
504
+ {
505
+ path: '/ai/bring-my-site',
506
+ title: 'Bring my site',
507
+ heading: '',
508
+ anchor: '',
509
+ text: 'Bring my site\nBeta Bring my site is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while how it reads and rebuilds your pages, and the steps on this page, may still change.\nBring my site moves the website you have now into a new Aglyn site. Aglyn AI reads each of its pages and rewrites it in your new site\'s design, keeping its words, facts and photos. Pages come in a few at a time, in waves. You review each wave before you start the next.\nIt is included on every paid plan. On the Free plan the card is shown but turned off, with a link to upgrade.'
510
+ },
511
+ {
512
+ path: '/ai/bring-my-site',
513
+ title: 'Bring my site',
514
+ heading: 'Start',
515
+ anchor: '#start',
516
+ text: '1. Open Sites and choose Create site.\n2. Fill in your new site\'s Site name and Subdomain.\n3. Choose Bring my site.\nNo site is created yet. The close control and the Escape key close the window and create nothing.'
517
+ },
518
+ {
519
+ path: '/ai/bring-my-site',
520
+ title: 'Bring my site',
521
+ heading: 'Your current website',
522
+ anchor: '#your-current-website',
523
+ text: 'Under Website address, type the address people use to reach your site today, for example example.com, and choose Next. Leave out www.: the site\'s two names are treated as one site.\nYou need to prove the site is yours before anything is read from it. This makes sure only a site you own can be brought in.'
524
+ },
525
+ {
526
+ path: '/ai/bring-my-site',
527
+ title: 'Bring my site',
528
+ heading: 'Prove it is yours',
529
+ anchor: '#prove-it-is-yours',
530
+ text: 'Use one of these three ways. The status at the top shows Verified once one of them works.\n- Add a DNS record. At the company where your domain is registered, or wherever its DNS is managed, add a TXT record. Copy its Name and Value from the card, then choose Check the DNS record. A new record can take a few minutes to an hour to show up. If it is not found yet, the card says so and you can check again.\n- Add a tag to your home page. In the builder your site uses today, open the setting for header code on your home page. It is often called Custom code or Header code. Paste the tag you copy from the card\'s Tag field, publish your site, then choose Check my home page.\n- Get a code by email. Type the part of an email address that comes before the @. The part after it is always your site\'s domain. Choose Send a code, then type the six-digit code from the email and choose Confirm the code. A code stays valid for 15 minutes.\nOnce the site is verified, choose Next. A proof stays valid for 30 days.'
531
+ },
532
+ {
533
+ path: '/ai/bring-my-site',
534
+ title: 'Bring my site',
535
+ heading: 'Read my site',
536
+ anchor: '#read-my-site',
537
+ text: 'Choose Read my site. Aglyn then:\n- creates your new site, with nothing on it and nothing published;\n- reads your current site as AglynBot, starting with its robots.txt file and its sitemap, and only on your own domain. Your current site is not changed.\nReading uses no AI credits. When it is done, Your site is read shows:\n- what was found, grouped as your Main pages and each collection, such as a blog\'s posts;\n- how many pages your plan includes, how many will be brought in, and in how many waves;\n- each page\'s old address and its address on your new site;\n- under Not brought in, every page that was left out and the reason.'
538
+ },
539
+ {
540
+ path: '/ai/bring-my-site',
541
+ title: 'Bring my site',
542
+ heading: 'Waves',
543
+ anchor: '#waves',
544
+ text: '- The first wave brings in your main pages: home, then the pages in your menu, then your other top-level pages. It also builds your new site\'s header and footer, with the menu linking those pages.\n- Each later wave brings in up to 10 pages of one collection, for example Blog, 1 of 3.\n- Never past your plan. Your main pages are kept first. If your site has more pages than your plan allows, the last pages of your collections are the ones left out, each listed with Past your plan\'s page count. See plans opens Billing.\nTo start a wave, choose its Start button, for example Start Main pages. Each wave shows its cost before you start it. A page costs about 27 AI credits, the same as any page Aglyn AI writes, and the header and footer cost about 29. Credits are used as each page is written. A page that fails on our side gives its credits back.\nWhile a wave runs, its page lists each page as it comes in. You can leave the page. You are told when the wave is in.'
545
+ },
546
+ {
547
+ path: '/ai/bring-my-site',
548
+ title: 'Bring my site',
549
+ heading: 'Review a wave',
550
+ anchor: '#review-a-wave',
551
+ text: 'When a wave is in, its page says so, for example Main pages is in, and shows:\n- every page of the wave, with Open draft, its old and new address and how many photos were added;\n- a page that could not be brought in, with the reason;\n- how many AI credits the wave used.\nEvery page is a draft: nothing is published until you publish it. Open your draft pages opens the site\'s Pages list. When you are ready for more, choose the next wave\'s Start button. Nothing starts the next wave except you.\nCancel stops the import. The pages already brought in stay as drafts.'
552
+ },
553
+ {
554
+ path: '/ai/bring-my-site',
555
+ title: 'Bring my site',
556
+ heading: 'Photos',
557
+ anchor: '#photos',
558
+ text: 'A page\'s photos are copied into your new site\'s media library and placed on that page first. The same photo is stored only once, however many pages show it.'
559
+ },
560
+ {
561
+ path: '/ai/bring-my-site',
562
+ title: 'Bring my site',
563
+ heading: 'What is never brought in',
564
+ anchor: '#never-brought-in',
565
+ text: '- Sign-in pages. A page that asks for a password is left out, and so is a page AglynBot is asked not to read by robots.txt.\n- Code and forms. Scripts, embedded frames and forms are never brought in.\n- Other websites. Only pages on your own domain are read. A page that sends visitors to another website is left out.'
566
+ },
567
+ {
568
+ path: '/ai/bring-my-site',
569
+ title: 'Bring my site',
570
+ heading: 'When an import waits for you',
571
+ anchor: '#when-an-import-waits',
572
+ text: '- Verify your site again. A wave starts only while your proof is less than 30 days old. Choose Verify again, prove the site is yours once more, then start the wave again.\n- The day\'s limit. A workspace can start 12 waves a day, counting each time a site is read. Start the wave again the next day.\n- The site could not be read. If robots.txt could not be read, or no page answered, nothing is read. Choose Read the site again once your site is up. If your site\'s bot protection turned AglynBot away, see When your site turns AglynBot away.\n- Out of AI credits. The import pauses. Choose Get more AI credits, then Resume.\nEvery import is also logged for the Trust & Safety team\'s review.'
573
+ },
574
+ {
575
+ path: '/ai/bring-my-site',
576
+ title: 'Bring my site',
577
+ heading: 'When your site turns AglynBot away',
578
+ anchor: '#turned-away',
579
+ text: 'Many hosts protect a site with bot protection or a firewall that turns away visitors it takes for robots. If yours turns AglynBot away, the page is listed under Not brought in as turned away by your site\'s bot protection or firewall. If it turns away every page, nothing is read, and the import says so.\nTo bring those pages in:\n1. Open your site\'s bot protection or firewall settings, wherever your host or your domain\'s security service keeps them.\n2. Allow AglynBot. It reads only your own domain, and only pages robots.txt lets it read.\n3. Bring the site in again. If nothing was read, choose Read the site again.'
580
+ },
504
581
  {
505
582
  path: '/ai/business-profile',
506
583
  title: 'Business profile',
@@ -562,7 +639,7 @@ export const DOCS_SECTION_INDEX = [
562
639
  title: 'Rewrite and write copy with AI',
563
640
  heading: '',
564
641
  anchor: '',
565
- text: 'Rewrite and write copy with AI\nRewrite with AI drafts and rewrites text without leaving the Besigner. It works on any text an element carries — a headline, body copy, a button label, a caption — and on a blog entry.'
642
+ text: 'Rewrite and write copy with AI\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nRewrite with AI drafts and rewrites text without leaving the Besigner. It works on any text an element carries — a headline, body copy, a button label, a caption — and on a blog entry.'
566
643
  },
567
644
  {
568
645
  path: '/ai/copy-assist',
@@ -604,7 +681,7 @@ export const DOCS_SECTION_INDEX = [
604
681
  title: 'Create images with AI',
605
682
  heading: '',
606
683
  anchor: '',
607
- text: 'Create images with AI\nCreate with AI in the media library makes pictures from a description and adds them to the library you have open. The Kind menu lists what it can make, in four sections:\n| Section | Kinds | Made as |\n| Vector | Illustration (a spot illustration or small scene), Icon (one color, or two tones), Pattern (a seamless background that tiles), Logo mark (a simple symbol without lettering) | An SVG, sharp at any size. Available wherever Aglyn AI is. |\n| Photo | Photo (your description decides the style), Natural photo, Studio product shot, Lifestyle with people, Architecture & interiors, Food, Aerial & landscape | A picture made by Google\'s image models |\n| Art | 3D render, Watercolor, Oil painting, Flat vector art, Line drawing, Cartoon or anime | A picture made by Google\'s image models |\n| Design | Background or texture, Banner or hero image, Social post graphic, Mockup (your design on a device screen or packaging) | A picture made by Google\'s image models |\nEvery kind but Photo adds its own style to your description: a photographic kind asks for the lens, light and composition that genre is shot with, an art kind for its medium and strokes, and a design kind for its layout, such as a banner\'s calm space for a headline. The Photo, Art and Design sections are offered only where photo creation is turned on for the deployment your workspace runs on; where it is not, the menu lists the Vector kinds alone.\nEach picture is stored the way a file you upload is stored: in the open folder, counted toward your storage, served from the same addresses, and with alt text you can edit.'
684
+ text: 'Create images with AI\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nCreate with AI in the media library makes pictures from a description and adds them to the library you have open. The Kind menu lists what it can make, in four sections:\n| Section | Kinds | Made as |\n| Vector | Illustration (a spot illustration or small scene), Icon (one color, or two tones), Pattern (a seamless background that tiles), Logo mark (a simple symbol without lettering) | An SVG, sharp at any size. Available wherever Aglyn AI is. |\n| Photo | Photo (your description decides the style), Natural photo, Studio product shot, Lifestyle with people, Architecture & interiors, Food, Aerial & landscape | A picture made by Google\'s image models |\n| Art | 3D render, Watercolor, Oil painting, Flat vector art, Line drawing, Cartoon or anime | A picture made by Google\'s image models |\n| Design | Background or texture, Banner or hero image, Social post graphic, Mockup (your design on a device screen or packaging) | A picture made by Google\'s image models |\nEvery kind but Photo adds its own style to your description: a photographic kind asks for the lens, light and composition that genre is shot with, an art kind for its medium and strokes, and a design kind for its layout, such as a banner\'s calm space for a headline. The Photo, Art and Design sections are offered only where photo creation is turned on for the deployment your workspace runs on; where it is not, the menu lists the Vector kinds alone.\nEach picture is stored the way a file you upload is stored: in the open folder, counted toward your storage, served from the same addresses,'
608
685
  },
609
686
  {
610
687
  path: '/ai/create-images',
@@ -674,7 +751,7 @@ export const DOCS_SECTION_INDEX = [
674
751
  title: 'Create with AI on every list',
675
752
  heading: '',
676
753
  anchor: '',
677
- text: 'Create with AI on every list\nWherever Aglyn AI can make the thing a list holds, the list has a Create with AI button with a sparkle icon, beside its own create button. An empty list shows it in its empty state too, so the first item can be one you describe.'
754
+ text: 'Create with AI on every list\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nWherever Aglyn AI can make the thing a list holds, the list has a Create with AI button with a sparkle icon, beside its own create button. An empty list shows it in its empty state too, so the first item can be one you describe.'
678
755
  },
679
756
  {
680
757
  path: '/ai/create-with-ai',
@@ -723,7 +800,7 @@ export const DOCS_SECTION_INDEX = [
723
800
  title: 'The AI CRM built into Aglyn',
724
801
  heading: '',
725
802
  anchor: '',
726
- text: 'The AI CRM built into Aglyn\nAglyn AI works in three places in the CRM. In each one it makes a suggestion and you decide what happens next: nothing is saved, sent or imported until you do it yourself.\n- On a record\'s page, a short summary of where things stand with a contact, company, deal or lead, with a suggested next step.\n- In the email composer, a draft of the one-to-one email you describe.\n- In an import, a suggested match between the columns of your file and the fields they fill.\nIt can also set up the CRM from the Assist chat: your deal pipelines and their stages, your custom fields, and new values for your picklists. You confirm the plan before anything is saved.'
803
+ text: 'The AI CRM built into Aglyn\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nAglyn AI works in three places in the CRM. In each one it makes a suggestion and you decide what happens next: nothing is saved, sent or imported until you do it yourself.\n- On a record\'s page, a short summary of where things stand with a contact, company, deal or lead, with a suggested next step.\n- In the email composer, a draft of the one-to-one email you describe.\n- In an import, a suggested match between the columns of your file and the fields they fill.\nIt can also set up the CRM from the Assist chat: your deal pipelines and their stages, your custom fields, and new values for your picklists. You confirm the plan before anything is saved.'
727
804
  },
728
805
  {
729
806
  path: '/ai/crm-by-ai',
@@ -779,7 +856,7 @@ export const DOCS_SECTION_INDEX = [
779
856
  title: 'Generate a form from a description',
780
857
  heading: '',
781
858
  anchor: '',
782
- text: 'Generate a form from a description\nAn AI build job can make a form from a brief, such as "a quote request form for a roofing company". The job proposes a plan first, and builds once you confirm it: the fields a visitor fills in, the answers the form needs, a marketing consent box when the form asks for an email address, and where each submission goes. The form follows the building rules, and one more of its own: what the form\'s design draws and what the form declares always agree, so every field has its own name and every submission arrives with all of its answers.\nThe form arrives as a new draft on the Forms page, and Open draft on the job opens the form\'s page. No page on your site places it, so nothing on the live site changes. It counts against your forms allowance like a form you create yourself, and when your plan has no room for another form the job says so before it starts, not after it has spent anything.'
859
+ text: 'Generate a form from a description\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nAn AI build job can make a form from a brief, such as "a quote request form for a roofing company". The job proposes a plan first, and builds once you confirm it: the fields a visitor fills in, the answers the form needs, a marketing consent box when the form asks for an email address, and where each submission goes. The form follows the building rules, and one more of its own: what the form\'s design draws and what the form declares always agree, so every field has its own name and every submission arrives with all of its answers.\nThe form arrives as a new draft on the Forms page, and Open draft on the job opens the form\'s page. No page on your site places it, so nothing on the live site changes. It counts against your forms allowance like a form you create yourself, and when your plan has no room for another form the job says so before it starts, not after it has spent anything.'
783
860
  },
784
861
  {
785
862
  path: '/ai/generate-a-form',
@@ -828,7 +905,7 @@ export const DOCS_SECTION_INDEX = [
828
905
  title: 'Generate a website from a prompt',
829
906
  heading: '',
830
907
  anchor: '',
831
- text: 'Generate a website from a prompt\nAn AI build job can scaffold a whole site from a brief, such as "a neighborhood dog groomer that takes bookings". The job proposes a plan first — the pages it will build with their addresses and navigation, the layout they share, a contact form, and a palette suggestion made from your theme — and builds nothing until you confirm it.\nEverything it then builds follows the building rules, because each piece is built by the same job that builds it on its own: the pages by the page job, the layout by the layout job, the form by the form job. A scaffold is those jobs run in order, not a different way of building.'
908
+ text: 'Generate a website from a prompt\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nAn AI build job can scaffold a whole site from a brief, such as "a neighborhood dog groomer that takes bookings". The job proposes a plan first — the pages it will build with their addresses and navigation, the layout they share, a contact form, and a palette suggestion made from your theme — and builds nothing until you confirm it.\nEverything it then builds follows the building rules, because each piece is built by the same job that builds it on its own: the pages by the page job, the layout by the layout job, the form by the form job. A scaffold is those jobs run in order, not a different way of building.'
832
909
  },
833
910
  {
834
911
  path: '/ai/generate-a-site',
@@ -877,7 +954,7 @@ export const DOCS_SECTION_INDEX = [
877
954
  title: 'Generate a section on the canvas',
878
955
  heading: '',
879
956
  anchor: '',
880
- text: 'Generate a section on the canvas\nWhere rewriting copy changes words, Generate a section with AI builds structure — a whole section of real components — directly on the page you have open.'
957
+ text: 'Generate a section on the canvas\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nWhere rewriting copy changes words, Generate a section with AI builds structure — a whole section of real components — directly on the page you have open.'
881
958
  },
882
959
  {
883
960
  path: '/ai/generate-section',
@@ -919,7 +996,7 @@ export const DOCS_SECTION_INDEX = [
919
996
  title: 'How Aglyn AI builds',
920
997
  heading: '',
921
998
  anchor: '',
922
- text: 'How Aglyn AI builds\nWhen Aglyn AI builds for your site (a page, a component, a layout, a page template, a form or an email), it builds the way a careful designer on your team would: from what the site already has, with your theme and brand, as a draft you review. The rules below are not a suggestion in a prompt. Every plan and every generated document is checked against them before you see it.'
999
+ text: 'How Aglyn AI builds\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nWhen Aglyn AI builds for your site (a page, a component, a layout, a page template, a form or an email), it builds the way a careful designer on your team would: from what the site already has, with your theme and brand, as a draft you review. The rules below are not a suggestion in a prompt. Every plan and every generated document is checked against them before you see it.'
923
1000
  },
924
1001
  {
925
1002
  path: '/ai/how-aglyn-ai-builds',
@@ -975,7 +1052,7 @@ export const DOCS_SECTION_INDEX = [
975
1052
  title: 'Functions and variables with AI',
976
1053
  heading: '',
977
1054
  anchor: '',
978
- text: 'Functions and variables with AI\nOn Logic — the Functions & Variables page — Aglyn AI can write a function or a variable from a description, change or fix a function you already have, and explain what one works out. On the same page, a broken reference an automation holds offers Fix with AI.\nNothing is saved for you. What Aglyn AI writes opens in the function or variable editor, unsaved, exactly as if you had typed it. Test it, change anything, and save it with the editor\'s own Save — or close the editor and nothing changes.'
1055
+ text: 'Functions and variables with AI\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nOn Logic — the Functions & Variables page — Aglyn AI can write a function or a variable from a description, change or fix a function you already have, and explain what one works out. On the same page, a broken reference an automation holds offers Fix with AI.\nNothing is saved for you. What Aglyn AI writes opens in the function or variable editor, unsaved, exactly as if you had typed it. Test it, change anything, and save it with the editor\'s own Save — or close the editor and nothing changes.'
979
1056
  },
980
1057
  {
981
1058
  path: '/ai/logic-with-ai',
@@ -1031,7 +1108,7 @@ export const DOCS_SECTION_INDEX = [
1031
1108
  title: 'Marketing with AI: overlays, campaigns and your numbers',
1032
1109
  heading: '',
1033
1110
  anchor: '',
1034
- text: 'Marketing with AI\nYour site\'s Marketing page has its own AI doors. Each one sits beside the thing it works on, and each one stops short of anything a visitor or a recipient would see: an overlay it creates is switched off, a campaign it drafts is aimed at nobody, and copy it writes waits in the editor until you save it.'
1111
+ text: 'Marketing with AI\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nYour site\'s Marketing page has its own AI doors. Each one sits beside the thing it works on, and each one stops short of anything a visitor or a recipient would see: an overlay it creates is switched off, a campaign it drafts is aimed at nobody, and copy it writes waits in the editor until you save it.'
1035
1112
  },
1036
1113
  {
1037
1114
  path: '/ai/marketing-with-ai',
@@ -1087,7 +1164,7 @@ export const DOCS_SECTION_INDEX = [
1087
1164
  title: 'Aglyn AI: the AI website builder',
1088
1165
  heading: '',
1089
1166
  anchor: '',
1090
- text: 'Aglyn AI: the AI website builder\nAglyn AI builds for your site. Describe what you want — a page, a reusable component, a layout, a page template, a form, an email, a campaign, product copy, a theme, your search titles and descriptions — and it plans the work, builds it from what your site already has, and hands you a draft to review.\nIt is the same assistant as Aglyn Assist, which answers questions about the product from this documentation. Aglyn AI is what that assistant does when it stops explaining and starts building.'
1167
+ text: 'Aglyn AI: the AI website builder\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nAglyn AI builds for your site. Describe what you want — a page, a reusable component, a layout, a page template, a form, an email, a campaign, product copy, a theme, your search titles and descriptions — and it plans the work, builds it from what your site already has, and hands you a draft to review.\nIt is the same assistant as Aglyn Assist, which answers questions about the product from this documentation. Aglyn AI is what that assistant does when it stops explaining and starts building.'
1091
1168
  },
1092
1169
  {
1093
1170
  path: '/ai/overview',
@@ -1150,7 +1227,7 @@ export const DOCS_SECTION_INDEX = [
1150
1227
  title: 'Product copy and catalogs with AI',
1151
1228
  heading: '',
1152
1229
  anchor: '',
1153
- text: 'Product copy and catalogs with AI\nAglyn AI can write the copy for your products and help you set up a store. Everything it does is a proposal: you review it, and nothing is saved to your catalog until you apply it. A proposed product comes with a suggested price you can change, and it never publishes a product.'
1230
+ text: 'Product copy and catalogs with AI\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nAglyn AI can write the copy for your products and help you set up a store. Everything it does is a proposal: you review it, and nothing is saved to your catalog until you apply it. A proposed product comes with a suggested price you can change, and it never publishes a product.'
1154
1231
  },
1155
1232
  {
1156
1233
  path: '/ai/products-with-ai',
@@ -1213,7 +1290,7 @@ export const DOCS_SECTION_INDEX = [
1213
1290
  title: 'Looks and themes for AI sites',
1214
1291
  heading: '',
1215
1292
  anchor: '',
1216
- text: 'Looks and themes for AI sites\nEvery site started with AI gets a look of its own: a base theme, colors, a pair of fonts, and the style of its buttons, cards and forms. The style you choose decides the family that look comes from. The details are picked fresh for each site, so two sites with the same style and the same answers still look different.'
1293
+ text: 'Looks and themes for AI sites\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nEvery site started with AI gets a look of its own: a base theme, colors, a pair of fonts, and the style of its buttons, cards and forms. The style you choose decides the family that look comes from. The details are picked fresh for each site, so two sites with the same style and the same answers still look different.'
1217
1294
  },
1218
1295
  {
1219
1296
  path: '/ai/site-looks',
@@ -1262,14 +1339,14 @@ export const DOCS_SECTION_INDEX = [
1262
1339
  title: 'Start a new site with AI',
1263
1340
  heading: '',
1264
1341
  anchor: '',
1265
- text: 'Start a new site with AI\nCreate site opens Start your site straight away, before the site exists. Start with AI asks a few questions, one per step, then creates the site, plans it, writes every page, gives it a look of its own and publishes it at its address. This page walks through each step and what happens after you choose Plan my site.\nTo scaffold pages for a site that already exists, or for several sites at once, see Generate a website from a prompt.'
1342
+ text: 'Start a new site with AI\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nCreate site opens Start your site straight away, before the site exists. Start with AI asks a few questions, one per step, then creates the site, plans it, writes every page, gives it a look of its own and publishes it at its address. This page walks through each step and what happens after you choose Plan my site.\nTo scaffold pages for a site that already exists, or for several sites at once, see Generate a website from a prompt.'
1266
1343
  },
1267
1344
  {
1268
1345
  path: '/ai/start-with-ai',
1269
1346
  title: 'Start a new site with AI',
1270
1347
  heading: 'How do you want to start?',
1271
1348
  anchor: '#how-do-you-want-to-start',
1272
- text: 'The first step asks for the site\'s Site name and Subdomain, its free address on Aglyn. The subdomain follows the name until you change it, and is checked as you type: if it is taken, the field says so and offers available ones to pick. Then it offers two cards:\n- Start from the starter site gives the site a ready-made home page with a header, footer and contact form, live at its address, for you to edit.\n- Start with AI (marked Recommended) asks the questions below and builds the site for you. On the Free plan the card says how many pages a Free start makes.\nBring my site (rolling out, not yet available) is a third card for moving the website you have now into Aglyn. See Bring my site.\nNo site exists until you choose. Start from the starter site and Skip (in the bar at the top) create the site with the starter home page and open it. Plan my site creates the site and starts planning it. The close control and the Escape key create nothing: the window closes and no site is made. If you have typed or picked something, the window first asks Leave without your answers?, because what you typed is not saved. Once the site is being planned, closing only closes the window; the job carries on.\nIf your role cannot create sites, or your plan has no site left, Create site says so before asking anything. Plan my site checks that planning can start before it creates the site. If it cannot, the window says why and no site is made. On the Free plan, a start that may need more credits than you have left asks first, and the site is created only once you choose. If planning still cannot start after the site is created, the window says why; leaving then gives that site the starter home page, so it is never left empty.'
1349
+ text: 'The first step asks for the site\'s Site name and Subdomain, its free address on Aglyn. The subdomain follows the name until you change it, and is checked as you type: if it is taken, the field says so and offers available ones to pick. Then it offers two cards:\n- Start from the starter site gives the site a ready-made home page with a header, footer and contact form, live at its address, for you to edit.\n- Start with AI (marked Recommended) asks the questions below and builds the site for you. On the Free plan the card says how many pages a Free start makes.\nBring my site is a third card for moving the website you have now into Aglyn. See Bring my site.\nNo site exists until you choose. Start from the starter site and Skip (in the bar at the top) create the site with the starter home page and open it. Plan my site creates the site and starts planning it. The close control and the Escape key create nothing: the window closes and no site is made. If you have typed or picked something, the window first asks Leave without your answers?, because what you typed is not saved. Once the site is being planned, closing only closes the window; the job carries on.\nIf your role cannot create sites, or your plan has no site left, Create site says so before asking anything. Plan my site checks that planning can start before it creates the site. If it cannot, the window says why and no site is made. On the Free plan, a start that may need more credits than you have left asks first, and the site is created only once you choose. If planning still cannot start after the site is created, the window says why; leaving then gives that site the starter home page, so it is never left empty.'
1273
1350
  },
1274
1351
  {
1275
1352
  path: '/ai/start-with-ai',
@@ -1416,7 +1493,7 @@ export const DOCS_SECTION_INDEX = [
1416
1493
  title: 'Stock photos in AI sites',
1417
1494
  heading: '',
1418
1495
  anchor: '',
1419
- text: 'Stock photos in AI sites\nWhen Aglyn AI writes the pages of a site started with AI, each picture it needs, such as a hero, a service card or a blog cover, is found as a free stock photo that matches what that part of the page is about. An event Aglyn AI adds gets its cover photo the same way, from the event\'s title.'
1496
+ text: 'Stock photos in AI sites\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nWhen Aglyn AI writes the pages of a site started with AI, each picture it needs, such as a hero, a service card or a blog cover, is found as a free stock photo that matches what that part of the page is about. An event Aglyn AI adds gets its cover photo the same way, from the event\'s title.'
1420
1497
  },
1421
1498
  {
1422
1499
  path: '/ai/stock-photos',
@@ -1472,7 +1549,7 @@ export const DOCS_SECTION_INDEX = [
1472
1549
  title: 'Change your site\'s theme with AI',
1473
1550
  heading: '',
1474
1551
  anchor: '',
1475
- text: 'Change your site\'s theme with AI\nThe Theme assistant sits on your site\'s Setup → Theme section, above the theme editor. Describe what you want and it proposes values for the editor\'s own controls — the same colors, font, corner radius, spacing, navigation heights, dark scheme and button, input and card styles you can set by hand. Nothing changes on your site until you save.'
1552
+ text: 'Change your site\'s theme with AI\nBeta Aglyn AI is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while what it builds and the steps on this page may still change.\nThe Theme assistant sits on your site\'s Setup → Theme section, above the theme editor. Describe what you want and it proposes values for the editor\'s own controls — the same colors, font, corner radius, spacing, navigation heights, dark scheme and button, input and card styles you can set by hand. Nothing changes on your site until you save.'
1476
1553
  },
1477
1554
  {
1478
1555
  path: '/ai/theme-assist',
@@ -2291,7 +2368,7 @@ export const DOCS_SECTION_INDEX = [
2291
2368
  title: 'Repeat over data',
2292
2369
  heading: 'See the copies while you design',
2293
2370
  anchor: '#see-the-copies-while-you-design',
2294
- text: 'The canvas draws the copies from your real records, the same ones the published page will render, in the same order. A repeat badge in the corner of the element names what it repeats over and how many records it found.\nWhen no record matches — the dataset is empty, or the filter rules every record out — the badge turns amber and says the element is hidden on the live site. The canvas still shows your design so you can keep editing it, but the published page renders no copies at all rather than a card full of {{item.name}} placeholders.\nThe first copy is the element you edit. Change a color, retype a heading, drag something in — every copy changes with it, because there is only ever one design. The copies beside it are pictures: they can\'t be selected, dragged or edited, and nothing you do to them is saved, because there is nothing there to save.'
2371
+ text: 'The canvas draws the copies from your real records, the same ones the published page will render, in the same order. A repeat badge in the top-right corner of the repeating element names what it repeats over and how many records it found — for example ⟳ Repeats Team · 3 records.\nWhen no record matches — the dataset is empty, or the filter rules every record out — the badge turns amber and says no records match · not shown on your site. The canvas still shows your design so you can keep editing it, with each {{item.}} drawn as a named chip, but the published page renders no copies at all rather than a card full of {{item.name}} placeholders.\nHover a badge to read what it means and how to fix it. Click it and the repeating element is selected, with Repeat over dataset opened in the Attributes panel.\nThe first copy is the element you edit. Change a color, retype a heading, drag something in — every copy changes with it, because there is only ever one design. The copies beside it are pictures: hovering one says so, and clicking one selects the element it copies. Pointing at either outlines the whole group — the element you edit and its copies — with the element itself marked inside it.'
2295
2372
  },
2296
2373
  {
2297
2374
  path: '/building-sites/besigner/repeat',
@@ -2312,7 +2389,7 @@ export const DOCS_SECTION_INDEX = [
2312
2389
  title: 'Repeat over data',
2313
2390
  heading: 'When a dataset goes away',
2314
2391
  anchor: '#when-a-dataset-goes-away',
2315
- text: 'A repeat stores the dataset\'s id, so renaming the dataset never breaks it.\nIf the dataset is deleted, or stops being shared with this site, the element renders no copies on the published page, and its badge on the canvas says the dataset was not found. A published page never goes down because its data went away, and it never shows visitors raw {{item.}} placeholders either. See who a dataset is shared with.'
2392
+ text: 'A repeat stores the dataset\'s id, so renaming the dataset never breaks it.\nIf the dataset is deleted, or stops being shared with this site, the element renders no copies on the published page, and its badge on the canvas says not available · not shown on your site. Click the badge to choose another dataset. A published page never goes down because its data went away, and it never shows visitors raw {{item.}} placeholders either. See who a dataset is shared with.'
2316
2393
  },
2317
2394
  {
2318
2395
  path: '/building-sites/besigner/repeat',
@@ -2529,21 +2606,21 @@ export const DOCS_SECTION_INDEX = [
2529
2606
  title: 'Inline & rich text editing',
2530
2607
  heading: 'Edit on the canvas',
2531
2608
  anchor: '#edit-inline',
2532
- text: '- Double-click the text. A single click just selects the element.\n- The cursor lands at the end of the existing text — never selected-all, so a stray keystroke cannot wipe a heading you meant to add a word to.\n- Type. The surrounding layout moves in real time: a heading that grows to two lines pushes the paragraph below it down as it happens.\n- The selection outline and its shading step aside while you type, so you are looking at your text on the page rather than at editor chrome. It comes back when you finish.\nA Markdown element is different — double-clicking one opens the full document editor instead. See Long documents in markdown.\nFinishing, and changing your mind {#committing}\n| You press | Plain text element | Rich text element |\n| Enter | Commits the edit | Starts a new line |\n| Shift + Enter | Inserts a line break, keeps editing | Starts a new line |\n| Cmd/Ctrl + Enter | Commits the edit | Commits the edit |\n| Escape | Cancels — everything you typed is discarded | Cancels |\n| Click anywhere else | Commits, and selects whatever you clicked | Commits |\n| Done on the toolbar | Commits | Commits |\nTwo things worth knowing:\n- One edit is one undo step. Undo puts back the previous text, and for formatted text the previous formatting with it.\n- Opening and closing without typing is not an edit. No undo step is recorded and nothing is sent to anyone editing alongside you.\nWhile you are editing text, Cmd/Ctrl + C, V and A act on the text — not on canvas elements.\nThe toolbar {#inline-toolbar}\nA small toolbar floats above the text you are editing: Bold, Italic, Underline, Bulleted list, Numbered list, Insert link, the {} Insert data button, and Done. Insert link asks for the address (https://…).'
2609
+ text: '- Double-click the text. A single click just selects the element.\n- The cursor lands at the end of the existing text — never selected-all, so a stray keystroke cannot wipe a heading you meant to add a word to.\n- Type. The surrounding layout moves in real time: a heading that grows to two lines pushes the paragraph below it down as it happens.\n- The selection outline stays while you type, so you can always see which element you are in. Its shading and its label step aside, so the text looks exactly as it will on the page.\n- Click anywhere on the element to move the cursor, including the blank part of a line after the last word or a data token. Double-click selects a word, as it does in any text box.\nA Markdown element is different — double-clicking one opens the full document editor instead. See Long documents in markdown.\nFinishing, and changing your mind {#committing}\n| You press | Plain text element | Rich text element |\n| Enter | Commits the edit | Starts a new line |\n| Shift + Enter | Inserts a line break, keeps editing | Starts a new line |\n| Cmd/Ctrl + Enter | Commits the edit | Commits the edit |\n| Escape | Cancels — everything you typed is discarded | Cancels |\n| Click anywhere else | Commits, and selects whatever you clicked | Commits |\n| Done on the toolbar | Commits | Commits |\nTwo things worth knowing:\n- One edit is one undo step. Undo puts back the previous text, and for formatted text the previous formatting with it.\n- Opening and closing without typing is not an edit. No undo step is recorded and nothing is sent to anyone editing alongside you.\nWhile you are editing text, Cmd/Ctrl + C, V and A act on the text — not on canvas elements.\nThe toolbar {#inline-toolbar}\nA small toolbar floats above the text you are editing: Bold, Italic, Underline, Bulleted lis'
2533
2610
  },
2534
2611
  {
2535
2612
  path: '/building-sites/besigner/text-editing',
2536
2613
  title: 'Inline & rich text editing',
2537
2614
  heading: 'Rich text',
2538
2615
  anchor: '#rich-text',
2539
- text: 'Rich text is opt-in per element — today that means Typography. Everywhere else, text is plain, which is deliberate: a button label or a link caption has no business carrying paragraphs.\nWhere it is available you can use bold, italic, underline, links, and bulleted or numbered lists. That is the whole list, and it is enforced rather than merely suggested: anything else — styling pasted in from another app, stray attributes, scripts — is stripped when the edit is committed. Links keep their address and nothing else.\nFormatting is not styling Rich text says a word is emphasized; it does not say what emphasis looks like. Color, size, weight and spacing come from your theme and the Styles panel, which is what keeps a site looking like one site. If you find yourself wanting to color a single word, that is the JSS (sx) tab, not this.\nIf you strip all the formatting back out on the canvas, the element quietly becomes a plain-text element again — there is no leftover empty markup to trip over later.'
2616
+ text: 'Rich text is opt-in per element: Typography, Inline text, and the labels of Button, Link and Accordion headers. A label takes bold, italic and underline but no lists or links, because a button cannot hold a paragraph. Everywhere else, text is plain.\nText inside a placed component takes formatting too, when the component\'s author made it a property and every element that property fills is one of the elements above. Double-click it on the canvas and the same toolbar opens; the formatting is saved on this placement only, like the words.\nWhere it is available you can use bold, italic, underline, links, and bulleted or numbered lists. That is the whole list, and it is enforced rather than merely suggested: anything else — styling pasted in from another app, stray attributes, scripts — is stripped when the edit is committed. Links keep their address and nothing else.\nFormatting is not styling Rich text says a word is emphasized; it does not say what emphasis looks like. Color, size, weight and spacing come from your theme and the Styles panel, which is what keeps a site looking like one site. If you find yourself wanting to color a single word, that is the JSS (sx) tab, not this.\nIf you strip all the formatting back out on the canvas, the element quietly becomes a plain-text element again — there is no leftover empty markup to trip over later.'
2540
2617
  },
2541
2618
  {
2542
2619
  path: '/building-sites/besigner/text-editing',
2543
2620
  title: 'Inline & rich text editing',
2544
2621
  heading: 'The Text attribute',
2545
2622
  anchor: '#the-text-attribute',
2546
- text: 'The Text field in the right-hand panel and double-clicking on the canvas edit the same value. Use whichever suits: the panel is often quicker for a short label you are setting alongside other attributes.\nWhen the Text field is read-only {#text-field-read-only}\nOnce an element carries formatted text, the Text field goes read-only and says so:\n> This text is formatted — double-click the element on the canvas to edit it. Remove\n> formatting to edit it here.\nThis is not the field being awkward. A plain text box can only show you the words, so anything you typed into it would have to throw the bold, the links and the lists away silently to save. Rather than do that behind your back, the field shows you the text, stays out of the way, and points you at the two things you can actually do.\nRemove formatting {#remove-formatting}\nAbove the field is a small Remove formatting button. It does exactly what it says and nothing more:\n- Kept — every word, and every line break.\n- Lost — bold, italic, underline, links, and list structure.\nThe element goes on saying the same thing in the same shape, and the Text field becomes editable again. It is one undo step, so if you press it by mistake, undo brings the formatting straight back.'
2623
+ text: 'The Text field in the right-hand panel and double-clicking on the canvas edit the same value. Use whichever suits: the panel is often quicker for a short label you are setting alongside other attributes.\nFormatting in the Text field {#text-field-formatting}\nOn an element that takes rich text, the Text field shows your text with its formatting — bold reads as bold, links as links. Click into it and the same toolbar as on the canvas appears above it: Bold, Italic, Underline, the lists and Insert link, with {} Insert data at the end of the field. What you type is saved as you go, like every other attribute, and the canvas follows.\nA placed component\'s text property that takes formatting gets the same field.\nThe field is read-only in one case only: text that was formatted on an element whose component has since stopped taking rich text. It says so, and Remove formatting makes it editable again.\nRemove formatting {#remove-formatting}\nAbove the field is a small Remove formatting button. It does exactly what it says and nothing more:\n- Kept — every word, and every line break.\n- Lost — bold, italic, underline, links, and list structure.\nThe element goes on saying the same thing in the same shape, as plain text. It is one undo step, so if you press it by mistake, undo brings the formatting straight back.'
2547
2624
  },
2548
2625
  {
2549
2626
  path: '/building-sites/besigner/text-editing',
@@ -2788,14 +2865,14 @@ export const DOCS_SECTION_INDEX = [
2788
2865
  title: 'Buy a domain',
2789
2866
  heading: '',
2790
2867
  anchor: '',
2791
- text: 'Buy a domain\nGive your site its own address, like yourbusiness.com, without leaving Aglyn. You search, pick a name, and say who it\'s registered to. Aglyn registers it to you and connects it to your site, with its security certificate, so there are no DNS records to add. www.yourbusiness.com forwards to it as well.\nPlan availability Starter and above. On Free, the card says domains can be bought on the Starter plan and above, with a See plans button.'
2868
+ text: 'Buy a domain\nGive your site its own address, like yourbusiness.com, without leaving Aglyn. You search, pick a name, and say who it\'s registered to. Aglyn registers it to you and connects it to your site, with its security certificate, so there are no DNS records to add. www.yourbusiness.com forwards to it as well.\nYou can buy a domain at any time, even when a site already has one. Every domain your workspace holds is listed on its Domains page — see Manage your domains.\nPlan availability Starter and above. On Free, the card says domains can be bought on the Starter plan and above, with a See plans button.'
2792
2869
  },
2793
2870
  {
2794
2871
  path: '/building-sites/custom-domains/buy-a-domain',
2795
2872
  title: 'Buy a domain',
2796
2873
  heading: 'Steps',
2797
2874
  anchor: '#steps',
2798
- text: '1. In the site\'s Admin page, choose Custom Domain. The Get a domain card is at the top.\n2. Type your business name or the domain you want into Search for a domain. Results appear as you type, each with its price: this year and every year after. A name someone already owns shows as Taken.\n3. Press Buy beside the name you want.\n4. Fill in Who the domain is registered to. Every domain is registered to a real person or business, who owns it. These details go to the registrar and are hidden from public domain lookups.\n5. Tick the box to agree to the domain registration terms, then press Buy for $….\nThe card switches to Your domain and follows the setup: Registering…, then Connecting to your site…. Most domains are live within a few minutes, and you can leave the page while it finishes.'
2875
+ text: '1. In the site\'s Admin page, choose Custom Domain. The Get a domain card is at the top. (Or open your workspace\'s Domains page and press Buy a domain in the top corner.)\n2. Type your business name or the domain you want into Search for a domain. Results appear as you type, each with its price: this year and every year after. A name someone already owns shows as Taken.\n3. Press Buy beside the name you want.\n4. Fill in Who the domain is registered to. Every domain is registered to a real person or business, who owns it. These details go to the registrar and are hidden from public domain lookups.\n5. Tick the box to agree to the domain registration terms, then press Buy for $….\nThe card switches to Your domain and follows the setup: Registering…, then Connecting to your site…. Most domains are live within a few minutes, and you can leave the page while it finishes.\nWhen the site already has a domain {#site-has-a-domain}\nIf the site already has a domain connected, or one bought for it, the card says so above the search, and a name you buy goes into your workspace\'s domains instead, not connected to any site. The same happens when you buy from the Domains page. Nothing about the site changes. When you\'re ready, open the domain on the Domains page and choose Connect to a site.'
2799
2876
  },
2800
2877
  {
2801
2878
  path: '/building-sites/custom-domains/buy-a-domain',
@@ -2816,21 +2893,21 @@ export const DOCS_SECTION_INDEX = [
2816
2893
  title: 'Buy a domain',
2817
2894
  heading: 'If something goes wrong',
2818
2895
  anchor: '#problems',
2819
- text: '| What you see | What it means |\n| A notice above the search | Something has to happen before this site can buy a domain, and the notice says what — for example, a domain is already connected, or only a member who manages billing can buy. |\n| "The price changed a moment ago" | The registrar\'s price moved while you were filling in the form. The dialog shows the new price; press buy again if you still want it. |\n| "That name was just taken" | Someone else registered it first. Pick another. |\n| An email saying we couldn\'t register it | The registrar couldn\'t complete the registration. Any charge was refunded automatically. |\n| Not connected on the card | The domain is yours but isn\'t connected to this site (another domain was connected meanwhile). Press Connect it. |'
2896
+ text: '| What you see | What it means |\n| A notice above the search | Something has to happen before your workspace can buy a domain, and the notice says what — for example, only a member who manages billing can buy, or your first plan payment hasn\'t cleared yet. |\n| "The price changed a moment ago" | The registrar\'s price moved while you were filling in the form. The dialog shows the new price; press buy again if you still want it. |\n| "That name was just taken" | Someone else registered it first. Pick another. |\n| An email saying we couldn\'t register it | The registrar couldn\'t complete the registration. Any charge was refunded automatically. |\n| Not connected on the card | The domain is yours but isn\'t connected to this site (another domain was connected meanwhile). Press Connect it, or connect it to any site from the Domains page. |'
2820
2897
  },
2821
2898
  {
2822
2899
  path: '/building-sites/custom-domains/buy-a-domain',
2823
2900
  title: 'Buy a domain',
2824
2901
  heading: 'Moving a domain to another registrar',
2825
2902
  anchor: '#transfer',
2826
- text: 'The domain is yours, and you can move it to another registrar at no charge. Press Move to another registrar, then Show transfer code, and give that code to the registrar you\'re moving to. Your workspace\'s owners are emailed whenever the code is shown. Registries lock a newly registered domain for 60 days; the card tells you the date it can move.\nTo keep your site working at the domain after moving it, keep its DNS records pointing at Aglyn at your new registrar — see Connect a domain.'
2903
+ text: 'The domain is yours, and you can move it to another registrar at no charge. Press Move to another registrar, then Show transfer code, and give that code to the registrar you\'re moving to. Your workspace\'s owners are emailed whenever the code is shown.\nDomain registries lock a domain for a while after it is registered or moved, usually 60 days. If yours is still locked, the dialog shows the date the registry gives for when it can move, instead of the code.\nTo keep your site working at the domain after moving it, keep its DNS records pointing at Aglyn at your new registrar — see Connect a domain.'
2827
2904
  },
2828
2905
  {
2829
2906
  path: '/building-sites/custom-domains/buy-a-domain',
2830
2907
  title: 'Buy a domain',
2831
2908
  heading: 'If your site is deleted or your plan ends',
2832
2909
  anchor: '#after',
2833
- text: 'The domain stays registered to you. It keeps renewing while auto-renew is on, until you turn it off or move it. Another site in your workspace can use it: its Get a domain card lists your workspace\'s unconnected domains with Use for this site.\nIf a domain expires, your site goes back to its free Aglyn address, so it stays online. For a short while after expiring, a domain can usually still be renewed with Renew now.'
2910
+ text: 'The domain stays registered to you. It keeps renewing while auto-renew is on, until you turn it off or move it. It stays on your workspace\'s Domains page, where you can connect it to another site. A site\'s Get a domain card also lists your workspace\'s unconnected domains with Use for this site. If that site already has a domain, you\'re asked to confirm first, with the domain it replaces named.\nIf a domain expires, your site goes back to its free Aglyn address, so it stays online. For a short while after expiring, a domain can usually still be renewed with Renew now.'
2834
2911
  },
2835
2912
  {
2836
2913
  path: '/building-sites/custom-domains/connect-a-domain',
@@ -2888,6 +2965,62 @@ export const DOCS_SECTION_INDEX = [
2888
2965
  anchor: '#related',
2889
2966
  text: '- Troubleshoot verification\n- Redirects\n- SEO toolkit'
2890
2967
  },
2968
+ {
2969
+ path: '/building-sites/custom-domains/manage-domains',
2970
+ title: 'Manage your domains',
2971
+ heading: '',
2972
+ anchor: '',
2973
+ text: 'Manage your domains\nYour workspace\'s Domains page lists every domain it holds through Aglyn: the ones connected to a site, the ones that aren\'t connected yet, and the ones on their way. Open it from your workspace\'s menu. Workspace owners and admins can open it.\nPlan availability Starter and above for buying, transferring in and connecting domains. On a plan without domains, the page still lists the domains you hold, and you can still turn auto-renew on or off, edit their contacts and DNS records, or move them to another registrar.'
2974
+ },
2975
+ {
2976
+ path: '/building-sites/custom-domains/manage-domains',
2977
+ title: 'Manage your domains',
2978
+ heading: 'The list',
2979
+ anchor: '#the-list',
2980
+ text: 'Each row shows the domain, the site using it (or Not connected), its status, when it expires or renews, whether auto-renew is on, and its price at renewal. Click any column heading to sort by it. Click a row to open that domain.\nThe two buttons in the top corner of the list are Buy a domain, which buys a new domain into your workspace (see Buy a domain), and Transfer a domain in.'
2981
+ },
2982
+ {
2983
+ path: '/building-sites/custom-domains/manage-domains',
2984
+ title: 'Manage your domains',
2985
+ heading: 'One domain\'s page',
2986
+ anchor: '#a-domain',
2987
+ text: 'A domain\'s page has everything you can do with it:\n- Auto-renew and Renew now, as described in Buy a domain.\n- Connect to a site, Move to another site and Disconnect.\n- Move to another registrar, which shows its transfer code.\n- Its registrant contact.\n- Its DNS records.'
2988
+ },
2989
+ {
2990
+ path: '/building-sites/custom-domains/manage-domains',
2991
+ title: 'Manage your domains',
2992
+ heading: 'Connect a domain to a site',
2993
+ anchor: '#connect',
2994
+ text: '1. Open the domain and press Connect to a site.\n2. Pick the site.\n3. If that site already has a domain, the dialog names it and explains that the new domain replaces it. The old domain stops serving the site; if it is one your workspace holds here, it stays in your workspace, unconnected, and stays registered to you.\n4. Press Connect (or Replace … when it replaces a domain).\nThe domain usually serves the site within a few minutes, with its security certificate. Disconnect takes a domain off its site. The site goes back to its free address, and the domain stays in your workspace.'
2995
+ },
2996
+ {
2997
+ path: '/building-sites/custom-domains/manage-domains',
2998
+ title: 'Manage your domains',
2999
+ heading: 'Transfer a domain in',
3000
+ anchor: '#transfer-in',
3001
+ text: 'Move a domain you own at another registrar here, so it renews with your other domains and is managed from this page.\nBefore you start, at your current registrar:\n- Unlock the domain (sometimes called "transfer lock" or "registrar lock").\n- Get its transfer code (sometimes called an auth code or EPP code).\n- If DNSSEC is turned on, turn it off.\nThen:\n1. On the Domains page, press Transfer a domain in.\n2. Type the domain and press Check price. The price is the same as renewing it here for a year, because a transfer adds a year to the domain\'s registration.\n3. Enter the transfer code, fill in Who the domain is registered to, tick the box to agree to the domain registration terms, and press Transfer for $….\nA transfer takes up to about 5 to 7 days. Your current registrar may email you to approve it. The domain keeps its current DNS the whole time, so its website and email keep working. The domain\'s row shows Moving here until it arrives, and we email you when it does. If the transfer doesn\'t complete, the charge is refunded and we email you why.\nOnce it arrives, its DNS is still wherever it was before. To use it for a site, open it and press Connect to a site.'
3002
+ },
3003
+ {
3004
+ path: '/building-sites/custom-domains/manage-domains',
3005
+ title: 'Manage your domains',
3006
+ heading: 'The registrant contact',
3007
+ anchor: '#contact',
3008
+ text: 'The registrant contact is who the domain is registered to. Open the domain and press Edit contact to change it.\nThe registrar accepts a contact change only when the domain renews. So a change you save here is sent with the domain\'s next renewal, and the page shows that date. Until then the registrar keeps the current details. If auto-renew is off, the change is sent only when you renew the domain.\nThe page also shows whether the registrant email has been confirmed with ICANN. If it hasn\'t, it shows the date it must be confirmed by.'
3009
+ },
3010
+ {
3011
+ path: '/building-sites/custom-domains/manage-domains',
3012
+ title: 'Manage your domains',
3013
+ heading: 'DNS records',
3014
+ anchor: '#dns',
3015
+ text: 'DNS records tell the internet where your domain\'s website, email and other services live. You can edit them here for a domain that uses Aglyn\'s nameservers, which a domain bought here does.\n- Press Add record, pick a Type, and fill in its fields: Name (leave it empty for the domain itself, or enter a subdomain like shop), the value, and any fields that type needs, such as Priority for a mail server.\n- Click a record to change or delete it.\n- Records marked Managed by Aglyn are how visitors reach your site at this domain and keep its security certificate working: the address records for the domain itself and www, and any CAA records. They can\'t be changed here, and a new one can\'t be added over them. Disconnect the domain from its site first if you need to.\nIf a domain uses another provider\'s nameservers (common for a domain you just transferred in), the page names them and explains that its records are edited there. There\'s no editor for it here.'
3016
+ },
3017
+ {
3018
+ path: '/building-sites/custom-domains/manage-domains',
3019
+ title: 'Manage your domains',
3020
+ heading: 'Move a domain to another registrar',
3021
+ anchor: '#transfer-out',
3022
+ text: 'See Moving a domain to another registrar.'
3023
+ },
2891
3024
  {
2892
3025
  path: '/building-sites/custom-domains/overview',
2893
3026
  title: 'Custom Domains',
@@ -3875,12 +4008,68 @@ export const DOCS_SECTION_INDEX = [
3875
4008
  anchor: '#related',
3876
4009
  text: '- Design custom error pages'
3877
4010
  },
4011
+ {
4012
+ path: '/building-sites/site-protection/make-your-site-private',
4013
+ title: 'Make your site private',
4014
+ heading: '',
4015
+ anchor: '',
4016
+ text: 'Make your site private\nWant to keep your site to yourself while you build it, share it with a client before launch, or keep it to a few people for good? Aglyn doesn\'t have a single "private" switch that puts every page behind one password. Instead, pick the setting that matches who should still get in:\n| Who should see the site | Use | Where | Plan |\n| No one yet. Not visitors, not search engines, not someone with the link | Maintenance mode | Admin → Error pages | Every plan |\n| Anyone with the link, but keep it off Google | Discourage search engines | Setup → SEO → Search engines | Every plan |\n| Only people you give a password to | Password protected, page by page | The page\'s Page Access card | Every plan |\n| Only people signed in to your site | Members only, page by page | The page\'s Page Access card | Business and above |\nHiding a page from search doesn\'t stop people opening it. Only maintenance mode, a page password, and members-only actually keep visitors out.'
4017
+ },
4018
+ {
4019
+ path: '/building-sites/site-protection/make-your-site-private',
4020
+ title: 'Make your site private',
4021
+ heading: 'Hide the whole site until launch',
4022
+ anchor: '#hide-the-whole-site-until-launch',
4023
+ text: 'Maintenance mode is the way to make the whole site private in one step. Every address on the site shows your 503 page to every visitor, including anyone who already has a link, and pages you add later are covered too.\n1. (Optional) Design a 503 · Maintenance page in the Besigner, such as a short "Coming soon" with your logo, and assign it in Admin → Error pages. See custom error pages. Without one, visitors see Aglyn\'s plain built-in notice.\n2. In the same Admin → Error pages card, switch on Maintenance mode — show the 503 page at every address. Only site admins can open the Admin area.\n3. Keep building. You and your team still edit pages, layouts and content in the console and the Besigner as usual. Maintenance mode only changes what the published site shows.\n4. On launch day, switch maintenance mode off. Your pages are live again within about a minute.\nThe 503 page is never offered to search engines, so nothing about the unfinished site gets indexed while maintenance mode is on.\nKeep one page open instead If you\'d rather keep a "coming soon" page open to collect email sign-ups while the rest of the site stays out of search, follow Launch a coming-soon page.'
4024
+ },
4025
+ {
4026
+ path: '/building-sites/site-protection/make-your-site-private',
4027
+ title: 'Make your site private',
4028
+ heading: 'Keep it out of search only',
4029
+ anchor: '#keep-it-out-of-search-only',
4030
+ text: 'If anyone with the link may look but you don\'t want the site on Google yet, open Setup → SEO → Search engines and switch on Discourage search engines from indexing this site. Search engines are asked to stay away from every page, including pages you add later, and a warning banner follows you around the console while it\'s on so you don\'t forget it at launch.\nThis doesn\'t make the site private. Anyone with the address can still open every page. To hide a single page from search instead of the whole site, set that page\'s visibility to Unlisted. Details are in Search engine visibility.'
4031
+ },
4032
+ {
4033
+ path: '/building-sites/site-protection/make-your-site-private',
4034
+ title: 'Make your site private',
4035
+ heading: 'Share it behind a password',
4036
+ anchor: '#share-it-behind-a-password',
4037
+ text: 'To let only people you\'ve given a password to see a page, such as a client reviewing a draft, set that page\'s visibility to Password protected:\n1. Open Pages and click the page.\n2. In the Page Access card, set Visibility to Password protected.\n3. Type a Page password and click Save, then publish.\nPasswords are set per page, so repeat this on each page you want locked. You can use the same password on all of them. Visitors type the password on each protected page they open, so this works best for a few pages rather than a whole site. To lock everything at once, use maintenance mode. Step-by-step details, including the guess limit, are in Password-protect a page.'
4038
+ },
4039
+ {
4040
+ path: '/building-sites/site-protection/make-your-site-private',
4041
+ title: 'Make your site private',
4042
+ heading: 'Only signed-in members',
4043
+ anchor: '#only-signed-in-members',
4044
+ text: 'On Business and above, set a page\'s Visibility to Members only in the same Page Access card. Visitors must sign in to your site to view it, and stay signed in as they move between members-only pages. You\'ll need the site\'s sign-in and sign-up pages turned on first. See Members-only areas.\nKeep in mind:\n- Like passwords, this is set page by page. New pages start as Public, so set each new page as you add it.\n- Anyone who reaches your sign-up page can create a member account. Members-only keeps out people who aren\'t signed in; it doesn\'t hand-pick who joins. To remove someone, suspend them from the site\'s Users page.'
4045
+ },
4046
+ {
4047
+ path: '/building-sites/site-protection/make-your-site-private',
4048
+ title: 'Make your site private',
4049
+ heading: 'Ask Aglyn AI',
4050
+ anchor: '#ask-aglyn-ai',
4051
+ text: 'You can ask Assist to make these changes for you, such as make my site private until launch, hide the site from Google, make the pricing page members only or put the site back online. Assist shows the change on a plan card, and nothing changes until you confirm it. It\'s then saved to your live site straight away, just as if you\'d used the switch yourself, and it uses no AI credits.\n- Maintenance mode can only be turned on or off by a site admin, as in the Admin area. If you\'re an editor or author, Assist makes the rest of your request and says it left maintenance mode alone.\n- Members only is set only on the Business plan and above. On other plans, Assist says why it left the page as it was.\n- Passwords are never set by Assist, so a password never goes into the chat. Set it in the page\'s Page Access card, as in Share it behind a password.\nAsking how, such as how do I make my site private?, gets you the steps on this page instead. Building from the chat needs AI generation on your plan; see Build from Assist chat.'
4052
+ },
4053
+ {
4054
+ path: '/building-sites/site-protection/make-your-site-private',
4055
+ title: 'Make your site private',
4056
+ heading: 'Check what\'s still public',
4057
+ anchor: '#check-whats-still-public',
4058
+ text: 'Before you share a link or announce a launch:\n- Open the site in a private (incognito) browser window, where you aren\'t signed in, and click through it as a visitor would.\n- In Pages, open any page you added recently and check its Page Access visibility. New pages start as Public.\n- Run the SEO check. It reports whether search engines are being asked to stay away from the site.'
4059
+ },
4060
+ {
4061
+ path: '/building-sites/site-protection/make-your-site-private',
4062
+ title: 'Make your site private',
4063
+ heading: 'Related',
4064
+ anchor: '#related',
4065
+ text: '- Site Protection & Error Pages\n- Maintenance mode\n- Password-protect a page\n- Members-only areas\n- Search engine visibility'
4066
+ },
3878
4067
  {
3879
4068
  path: '/building-sites/site-protection/overview',
3880
4069
  title: 'Site Protection & Error Pages',
3881
4070
  heading: '',
3882
4071
  anchor: '',
3883
- text: 'Site Protection & Error Pages\nControl who can see your pages and what visitors see when something\'s not available.\nPlan availability Included on every plan. Per-page visibility, page passwords, custom error pages and maintenance mode are not tier-gated.'
4072
+ text: 'Site Protection & Error Pages\nControl who can see your pages and what visitors see when something\'s not available.\nMaking the whole site private? There\'s no single switch for it. Make your site private compares maintenance mode, hiding from search, page passwords and members-only pages, by who should still get in.\nPlan availability Included on every plan. Per-page visibility, page passwords, custom error pages and maintenance mode are not tier-gated.'
3884
4073
  },
3885
4074
  {
3886
4075
  path: '/building-sites/site-protection/overview',
@@ -3908,7 +4097,7 @@ export const DOCS_SECTION_INDEX = [
3908
4097
  title: 'Site Protection & Error Pages',
3909
4098
  heading: 'Maintenance mode',
3910
4099
  anchor: '#maintenance-mode',
3911
- text: 'Flip your site into maintenance mode to show a designed 503 while you work, then switch it back when you\'re ready.\nHow-tos\n- Password-protect a page\n- Design custom error pages\n- Maintenance mode'
4100
+ text: 'Flip your site into maintenance mode to show a designed 503 while you work, then switch it back when you\'re ready.\nHow-tos\n- Make your site private\n- Password-protect a page\n- Design custom error pages\n- Maintenance mode'
3912
4101
  },
3913
4102
  {
3914
4103
  path: '/building-sites/site-protection/overview',
@@ -4393,6 +4582,13 @@ export const DOCS_SECTION_INDEX = [
4393
4582
  anchor: '#products-options-and-variants',
4394
4583
  text: 'A product is what you manage; a variant is what a customer actually buys. Products define up to 3 options (like Size or Color, each with up to 25 values), and the products hub expands them into a variants matrix — up to 100 variants per product, each with its own SKU, barcode, price, compare-at price, weight, image, and inventory count.\n- Types: physical (shippable), digital (delivered as downloads), or service.\n- Status: draft (invisible to visitors), active, or archived. A product created for you rather than added in the editor — a proposed product, for one — starts as a draft with no photo, at the price it was given (an AI proposal\'s suggested price) or else a default price, for you to change. It counts toward your plan\'s product allowance like any other product.\n- Pricing: a variant with a compare-at price above its price shows a sale badge on storefront blocks.\n- Inventory: leave blank for untracked, 0 means sold out — the same semantics the original product block used. Stock is not tracked on a digital or service subscription-only product: nothing decrements it, on the first charge or on any renewal, so the field is disabled there. A physical subscription tracks normally — every paid cycle decrements one unit per box shipped — and Both — buyer chooses keeps tracking on the one-time sales.\nProducts created with the earlier single-price product block are lifted into this model automatically as a single default variant — nothing breaks and no migration step is needed.'
4395
4584
  },
4585
+ {
4586
+ path: '/commerce-and-bookings/commerce/catalog',
4587
+ title: 'Product catalog',
4588
+ heading: 'Sell in person only',
4589
+ anchor: '#sell-in-person-only',
4590
+ text: 'Every product sells online and in person unless you say otherwise. To sell a product only in person, open it in the product editor and, under At the register beside Quick key at the register, turn off Sell online. The products list marks it In person only.\nA product that is in person only:\n- still sells in person: at the register, at the self-service kiosk, in the Aglyn POS apps, and on draft orders;\n- has no page on your site: its /products/{slug} address answers "page not found", and it is left out of product grids, collections, search, related products, wishlists, the sitemap, and the store-wide reviews\' product links;\n- cannot be bought online: it can\'t be added to a cart, a cart that already holds it can\'t check out until the line is removed, and Buy now refuses it;\n- is in no channel: it is left out of every sales channel feed (Google, Meta, TikTok, Pinterest, Snapchat and Microsoft), marketplace and delivery app menu. An inventory sync still counts its stock.\nBack-in-stock emails for it wait until it sells online again. Turn Sell online back on and everything above returns. The switch comes with the point of sale; on a plan without it, a product already set to in person only still shows the switch so you can put it back online.'
4591
+ },
4396
4592
  {
4397
4593
  path: '/commerce-and-bookings/commerce/catalog',
4398
4594
  title: 'Product catalog',
@@ -5119,7 +5315,7 @@ export const DOCS_SECTION_INDEX = [
5119
5315
  title: 'POS & reservations',
5120
5316
  heading: 'Reservations',
5121
5317
  anchor: '#reservations',
5122
- text: 'For stays (cabins, rooms, rentals):\n1. Add resources on the Products page — nightly rate, weekend multiplier, minimum nights, deposit percent, and free-cancellation window.\n2. Drop the Reservation widget on any page in the besigner and point it at the resource id. Guests pick dates, see a live quote, and pay the deposit (or full amount) at checkout. Every reservation is paid this way, so it needs Stripe connected; until it is, the Reservations card warns that guests can\'t reserve and links to Payments.\n3. Manage stays from the Reservations card: check in, check out (with a folio summary if the guest charged store purchases to the room), walk-ins, no-shows, and cancellations.\nDeposits need a plan with commerce Taking a reservation deposit is a sale, and it is checked against your plan at the moment a guest tries to pay — not just when you added the widget. On a plan without commerce the widget still renders but checkout answers "Reservations are not enabled". Enabling the plugin is your switch; including commerce is your plan\'s. See downgrading.'
5318
+ text: 'For stays (cabins, rooms, rentals):\n1. Add resources on the Products page — nightly rate, weekend multiplier, minimum nights, deposit percent, and free-cancellation window.\n2. Drop the Reservation widget on any page in the besigner and point it at the resource id. Guests pick dates, see a live quote, and pay the deposit (or full amount) at checkout. Every reservation is paid this way, so it needs Stripe connected; until it is, the Reservations card warns that guests can\'t reserve and links to Payments.\n3. Manage stays from the Reservations card: check in, check out (with a folio summary if the guest charged store purchases to the room), walk-ins, no-shows, and cancellations.\nSeveral identical units\nWhen you have several of the same thing, such as 12 RV hookups, 30 tent sites or four matching cabins, add them as one resource and set Spots or units available to how many there are. Each night can then take that many stays:\n- A guest can book a range of dates as long as at least one unit is free on every night of it. Which unit they get is up to you at check-in.\n- The Reservations card shows the units left on each of the next 14 nights under the resource, for example "3 of 12 left".\n- When a stay\'s busiest night has three or fewer units left, the Reservation widget tells the guest "Only 2 left".\n- A walk-in takes any unit that is free on every night of the stay, and is refused only when some night has none left.\n- Blocking dates on a resource closes every unit on those dates.\n- An unpaid online checkout holds its unit for 30 minutes, then gives it back, the same as for a single cabin.\n- Two guests can\'t both book the last unit: the second is told those dates just sold out before any payment is taken.\n- Two staff can\'t both hand out the last unit as walk-ins either, even fro'
5123
5319
  },
5124
5320
  {
5125
5321
  path: '/commerce-and-bookings/commerce/pos-and-reservations',
@@ -5147,7 +5343,14 @@ export const DOCS_SECTION_INDEX = [
5147
5343
  title: 'POS hardware',
5148
5344
  heading: 'Card readers',
5149
5345
  anchor: '#card-readers',
5150
- text: 'The register takes card-present payments on Stripe\'s smart readers:\n| Reader | Notes |\n| Stripe Reader S700 / S710 | Android-based smart reader for the countertop or the hand. |\n| BBPOS WisePOS E | Countertop smart reader. |\nBoth are sold by Stripe. They are smart readers: each one talks to Stripe over its own internet connection, so it does not need to be plugged into or paired by Bluetooth with the device the register runs on. Card readers are shown in the console only when they are available for your store.\nGetting a reader\nReaders take payments through Aglyn\'s Stripe account, which pays your store out, so a reader is registered to your store in Aglyn rather than in a Stripe Dashboard of your own. Any supported reader can be added with the pairing code it shows, including one that was registered somewhere else before: generating a new pairing code on the reader and adding it here moves it to your store.\nStripe sells its readers through the Terminal hardware shop in the Stripe Dashboard. If you buy one there with a Stripe account of your own, add it here with a fresh pairing code from the reader, as above. Use the pairing code rather than the reader\'s serial number or order number: those two only register a reader to the Stripe account that ordered it.\nSetting one up\n1. Charge the reader and switch it on. Stripe recommends leaving it plugged in and on, even when not in use, so it receives software updates.\n2. Connect it to the internet: Wi-Fi from the reader\'s Settings, or Ethernet through Stripe\'s optional dock or hub. Stripe\'s setup guides for the S700/S710 and the WisePOS E show where each setting is, including the admin passcode the reader\'s Settings asks for.\n3. On the reader, open Settings and generate a pairing code.\n4. In the console, add the reader on the POS'
5346
+ text: 'The register takes card-present payments on Stripe\'s smart readers:\n| Reader | Notes |\n| Stripe Reader S700 / S710 | Android-based smart reader for the countertop or the hand. |\n| BBPOS WisePOS E | Countertop smart reader. |\nBoth are sold by Stripe. They are smart readers: each one talks to Stripe over its own internet connection, so it does not need to be plugged into or paired by Bluetooth with the device the register runs on. Card readers are shown in the console only when they are available for your store.\nGetting a reader\nReaders take payments through Aglyn\'s Stripe account, which pays your store out, so a reader is registered to your store in Aglyn rather than in a Stripe Dashboard of your own. Any supported reader can be added with the pairing code it shows, including one that was registered somewhere else before: generating a new pairing code on the reader and adding it here moves it to your store.\nWhere the Hardware card is available, you can buy a reader from Aglyn instead and have Stripe ship it to you; see Buy a reader from Aglyn.\nStripe sells its readers through the Terminal hardware shop in the Stripe Dashboard. If you buy one there with a Stripe account of your own, add it here with a fresh pairing code from the reader, as above. Use the pairing code rather than the reader\'s serial number or order number: those two only register a reader to the Stripe account that ordered it.\nSetting one up\n1. Charge the reader and switch it on. Stripe recommends leaving it plugged in and on, even when not in use, so it receives software updates.\n2. Connect it to the internet: Wi-Fi from the reader\'s Settings, or Ethernet through Stripe\'s optional dock or hub. Stripe\'s setup guides for the S700/S710 and the WisePOS E show where each setting is, including the admin passcod'
5347
+ },
5348
+ {
5349
+ path: '/commerce-and-bookings/commerce/pos-hardware',
5350
+ title: 'POS hardware',
5351
+ heading: 'Buy a reader from Aglyn',
5352
+ anchor: '#buy-a-reader-from-aglyn',
5353
+ text: 'Rolling out Buying readers from Aglyn is not yet available on aglyn.com-hosted workspaces. Until it is, no Hardware card appears on Products → Point of sale; buy a reader from Stripe and add it with its pairing code, as in Getting a reader.\nThe Hardware card on Products → Point of sale sells Stripe\'s card readers and their accessories. Aglyn places the order with Stripe, and Stripe ships it straight to you. Because Aglyn sells it, the reader is ready to take payments through Aglyn: add it to a register with its pairing code when it arrives.\nWhat\'s on offer\n| Item | What it\'s for |\n| Stripe Reader S710 | Handheld with its own 4G connection, for events and parking lots |\n| Stripe Reader S700 | Handheld or countertop reader on Wi-Fi |\n| BBPOS WisePOS E | Countertop reader on Wi-Fi |\n| Stripe Reader M2 | Pairs with the Aglyn POS app on your phone or tablet by Bluetooth |\n| Charging docks and the M2 mount | Keep a reader charged and in place at the counter |\nThe card shows only what is available to order, with its price.\nPlace an order\n1. Open Products → Point of sale and find the Hardware card.\n2. Choose a quantity for each item, up to 10 of each and 20 items in one order.\n3. Choose a shipping speed. The summary shows the items, shipping and, where tax applies, says it is calculated at checkout.\n4. Select Check out in the card\'s header. Enter the shipping address, a phone number for the carrier, and your card on the secure checkout page, and pay.\nYou come back to the card, which says the order is in. Orders ship to street addresses in the United States; P.O. boxes and military addresses are not accepted.\nFollow an order\nYour orders on the card lists every hardware order placed from this site, newest first, and sorts by any column. Each order moves through:\n| Status | Meanin'
5151
5354
  },
5152
5355
  {
5153
5356
  path: '/commerce-and-bookings/commerce/pos-hardware',
@@ -5205,6 +5408,20 @@ export const DOCS_SECTION_INDEX = [
5205
5408
  anchor: '#shifts-and-the-cash-drawer',
5206
5409
  text: 'A shift is one stretch of trading on one register, counted against one cash drawer.\n1. Open a shift from the strip above the basket and enter the starting cash (the float) you counted into the drawer.\n2. While it is open, every sale on that register is counted in the shift. Use Cash in/out to record cash that moves without a sale:\n- Paid in — cash added to the drawer, such as change from the bank.\n- Paid out — cash taken for an expense, with a reason.\n- Safe drop — cash moved from the drawer to the safe.\n3. X report shows the shift so far at any time and changes nothing.\n4. Close shift, count the drawer and enter what is in it. The Z report freezes the shift\'s figures, and the register is free for the next shift.\nA register has one open shift at a time. If two tablets try to open the same register at once, one opens it and the other is told a shift is already open.\nWhat the reports show\nSales (orders, gross sales, discounts, tax, tips, refunds and net sales), the same broken down by tender (cash, card, gift card and room charge), and the drawer:\n| | |\n| Starting cash | the float you counted when the shift opened |\n| + Cash sales | what cash sales took (change handed back is not counted), plus cash tips |\n| + Paid in | |\n| − Paid out | |\n| − Safe drops | |\n| − Cash refunds | returns paid out of the drawer during the shift |\n| = Expected in drawer | |\nThe variance is what you counted minus what was expected: positive means the drawer is over, negative means it is short. Print either report on your receipt printer from its dialog.\nShift history\nCommerce → Orders → Shift history lists each register\'s shifts, newest first, with net sales, expected and counted cash and the variance. Click a closed shift for its Z report, and use Export CSV for a spreadsheet of the shifts list'
5207
5410
  },
5411
+ {
5412
+ path: '/commerce-and-bookings/commerce/pos-operations',
5413
+ title: 'Running the register',
5414
+ heading: 'Day and event totals',
5415
+ anchor: '#day-and-event-totals',
5416
+ text: 'When several people take payments on their own registers, Commerce → Orders → Day totals adds the whole day up across every register, shift and cashier. It opens on today, counted in your site\'s time zone. Pick From and To dates to see another day or a whole event, up to 31 days at a time, and Today to come back.\n- Totals: orders, gross sales, discounts, tax, tips, refunds and net sales. Only sales rung at a register count; online orders don\'t.\n- By tender: cash, card, gift card, room charge and store credit, each with what it took, what was refunded to it, and the net.\n- By register and by cashier: each register\'s and each staff member\'s orders, gross sales, tips, refunds and net sales. Every table sorts by any of its columns.\n- Cash drawers: the starting cash of the shifts that opened on those days, cash sales, paid in, paid out, safe drops and cash refunds, then what the closed drawers should have held against what was counted, and whether they came up short or over. Drawers still open show what they should hold now.\n- Shifts: every shift that opened, closed or was still open on those days, with its register, times, starting cash, net sales, expected and counted cash and the variance.\nSales count on the day they were rung, and refunds on the day they were given back, whenever the sale was. Export CSV downloads the report as a spreadsheet, and Print prints it on an 80 mm receipt printer like a Z report.\nDay totals need the point of sale on your plan, and only members who can use the register can see them.\nRequiring a shift\nTurn on Require an open shift to sell in Admin → Plugins → Commerce to have a register refuse sales, and cash refunds, until someone opens a shift. Off by default.\nWho rang it\nEvery sale records the cashier who rang it, the shift it was rung in and '
5417
+ },
5418
+ {
5419
+ path: '/commerce-and-bookings/commerce/pos-operations',
5420
+ title: 'Running the register',
5421
+ heading: 'Check-in at the window',
5422
+ anchor: '#check-in-at-the-window',
5423
+ text: 'For a track, a campground, a lot or an event: people who bought a day pass, camping or parking online, or at the register, are looked up at the window, checked in and handed a wristband.\nChoose what needs check-in. In the product editor, under Check-in, turn on Needs check-in for a ride pass, a camping spot or parking. People per item says how many people one item admits: buy 3 of a pass with 1 person per item and that is 3 check-ins; a family camping spot set to 4 admits 4. A product with options can set each variant on its own, so a spectator ticket on the same product needs no wristband. Turning it on also covers what was already sold today.\nWhat is due on a day. Each paid order\'s check-in items are due on the day the order was placed, counted in your site\'s time zone, whether it was bought online or at the register. A product has no date of its own, so a pass bought today is for today. Guests whose stay covers the day are due too, one check-in for each day of the stay. An item refunded on its own, or an order refunded in full or canceled, is no longer due; anyone already checked in stays on the list.\nAt the register, tap Check in, then search by name, email, phone (or its last four digits) or order number. Pick the customer to see each person their passes, camping and stays cover today. Type an optional wristband number and pick a color, then tap Check in, or Check in all. Someone already checked in shows when and by whom ("Already checked in at 9:14 AM by Sam"), and Undo takes a check-in back. After a PIN switch, the check-in is recorded under the person who switched in. On a day you are checking people in, attaching a customer to a sale who has someone due today offers Check in on the customer panel too.\nCommerce → Orders → Today\'s check-ins lists everyone due on '
5424
+ },
5208
5425
  {
5209
5426
  path: '/commerce-and-bookings/commerce/pos-operations',
5210
5427
  title: 'Running the register',
@@ -5919,6 +6136,97 @@ export const DOCS_SECTION_INDEX = [
5919
6136
  anchor: '#related',
5920
6137
  text: '- Use Pirate Ship with Aglyn\n- Use ShippingEasy with Aglyn\n- Import and export store data\n- Commerce'
5921
6138
  },
6139
+ {
6140
+ path: '/commerce-and-bookings/commerce/waivers',
6141
+ title: 'Waivers',
6142
+ heading: '',
6143
+ anchor: '',
6144
+ text: 'Waivers\nWaivers replaces the clipboard. You write your waiver once, in your own words, and riders and guests sign it:\n- before they arrive, from a link or a QR code on their own phone, or from a Sign waiver element on your site;\n- at the window, on a tablet you hand them;\n- on paper, if they\'d rather, and you record it with a photo of the page.\nA parent or guardian can sign for riders under 18. Every signature keeps the exact words that were signed, and the signer gets a signed copy as a PDF by email. Staff can find anyone\'s waiver by name, email or day.\nWaivers come with every plan that includes selling, at no extra cost. Open them from the site\'s Waivers tab.\nWho can use it A site\'s admins and editors can use Waivers. Two permissions decide what each person can do, and both are on for admins and editors unless a custom role turns them off:\n- Manage waivers: write, publish and retire waivers, and void a signature.\n- Collect waivers: see who signed, sign riders in at the window and record paper waivers.\nViewers can\'t see signatures, because they hold people\'s dates of birth and their children\'s names.'
6145
+ },
6146
+ {
6147
+ path: '/commerce-and-bookings/commerce/waivers',
6148
+ title: 'Waivers',
6149
+ heading: 'Your waivers',
6150
+ anchor: '#your-waivers',
6151
+ text: 'The Waivers card lists every waiver on the site: its title, whether it is a Draft, Published or Retired, its version, how long a signature lasts, and when it last changed. Select a waiver to open it, or New waiver to write one.'
6152
+ },
6153
+ {
6154
+ path: '/commerce-and-bookings/commerce/waivers',
6155
+ title: 'Waivers',
6156
+ heading: 'Write a waiver',
6157
+ anchor: '#write-a-waiver',
6158
+ text: '1. Open Waivers and select New waiver.\n2. Give it a Title, like Rider release and waiver. Signers see it at the top.\n3. Write the Waiver text in your own words. Use the toolbar for headings, bold text and lists.\n4. Under Boxes every signer must tick, add the statements a signer must agree to one by one, like I have read this waiver and I understand it. Nobody can sign until every box is ticked.\n5. Leave A parent or guardian may sign for riders under 18 on if minors ride.\n6. Choose how long one signature is good for (see How long a signature lasts).\n7. Select Save, then Publish.\nA waiver takes signatures only while it is Published. Unpublish pauses it, and Retire stops it for good. Neither one touches the signatures already taken.\nYour waiver, your words Aglyn doesn\'t write or review what your waiver says. Ask your own lawyer what yours should cover and how your state treats waivers, especially ones signed for minors.\nVersions\nEvery time you save a change to the words, the boxes, the minors setting or how long it lasts, the waiver gets a new version. Version history lists each one. Signatures already taken keep the version they signed, and their signed copy shows those words, not the new ones. If a waiver changes while somebody is filling it in, they\'re asked to read the new version before they sign.'
6159
+ },
6160
+ {
6161
+ path: '/commerce-and-bookings/commerce/waivers',
6162
+ title: 'Waivers',
6163
+ heading: 'How long a signature lasts',
6164
+ anchor: '#how-long-a-signature-lasts',
6165
+ text: '- One visit (the default): the day it\'s signed, in your site\'s time zone. A rider who comes back tomorrow signs again.\n- A season: from the day it\'s signed through a last day you choose.\n- A number of days: that many days, the signing day included. Pick A year for 365.'
6166
+ },
6167
+ {
6168
+ path: '/commerce-and-bookings/commerce/waivers',
6169
+ title: 'Waivers',
6170
+ heading: 'Share it before riders arrive',
6171
+ anchor: '#share-it-before-riders-arrive',
6172
+ text: 'On the Waivers card, select Share beside a waiver:\n- Copy link gives you a link to send in a confirmation, a text or a post.\n- Download QR code gives you a code to print for the gate, the window or your ticket emails.\nThe link opens a page made for phones. The signer reads the waiver, fills in their name, email, phone and date of birth, ticks the boxes, signs with a finger or types their name, and agrees to sign electronically. They see a confirmation, and a signed copy goes to their email.\nOn your site\nAdd the Sign waiver element (under Forms in the Besigner) to a page. If you publish one waiver, it opens straight to the form. If you publish several, signers choose one from a list. The element\'s Heading setting is the line above that list.'
6173
+ },
6174
+ {
6175
+ path: '/commerce-and-bookings/commerce/waivers',
6176
+ title: 'Waivers',
6177
+ heading: 'Sign at the window',
6178
+ anchor: '#sign-at-the-window',
6179
+ text: 'For riders who didn\'t sign ahead:\n1. Open Waivers on the tablet at the window.\n2. Select Sign at window beside the waiver.\n3. Hand the tablet over. The rider signs exactly as they would on their phone, but their email is optional.\n4. When the screen says Signed, take the tablet back. Next signer clears the form for the next rider, and Done signing returns to the Waivers page.\nThe record notes which staff member handed the tablet over.'
6180
+ },
6181
+ {
6182
+ path: '/commerce-and-bookings/commerce/waivers',
6183
+ title: 'Waivers',
6184
+ heading: 'At check-in',
6185
+ anchor: '#at-check-in',
6186
+ text: 'When you check people in at the register (see Check-in at the window), each customer shows their waiver for the day:\n- Waiver signed: a signature covers today.\n- Signed for 2 of 3 riders: a signature covers today, but for fewer people than the customer is checking in. Have the rest sign.\n- Waiver needed or Waiver not on file: nobody has signed for today yet.\nSelect Sign waiver to sign right there on the register\'s device, the same way as at the window. The status updates when you\'re done. A customer is matched to their waiver by the email they bought with, so ask riders to sign with that address.'
6187
+ },
6188
+ {
6189
+ path: '/commerce-and-bookings/commerce/waivers',
6190
+ title: 'Waivers',
6191
+ heading: 'Minors',
6192
+ anchor: '#minors',
6193
+ text: 'When A parent or guardian may sign for riders under 18 is on, the signer can turn on I\'m also signing for riders under 18 and add each minor\'s full name and date of birth, then say how they\'re related to them, like Parent or Legal guardian. One signature covers the adult and every minor on it.\nThe signer must be 18 or older. Anyone under 18 can\'t sign for themselves, and a "minor" who is 18 or older is asked to sign their own waiver.'
6194
+ },
6195
+ {
6196
+ path: '/commerce-and-bookings/commerce/waivers',
6197
+ title: 'Waivers',
6198
+ heading: 'Paper waivers',
6199
+ anchor: '#paper-waivers',
6200
+ text: 'Clipboards still work. To count a paper waiver like any other:\n1. On the Signatures card, select Record paper waiver.\n2. Choose the waiver it was printed from and the date written on it.\n3. Copy the signer\'s name, date of birth and any minors from the page. Email and phone are optional; with an email, the signer is filed in your contacts.\n4. Select Take a photo of the signed page and photograph it.\n5. Select Record waiver.\nThe photo is kept privately with the record. A paper signer isn\'t emailed a copy, because they didn\'t sign electronically.'
6201
+ },
6202
+ {
6203
+ path: '/commerce-and-bookings/commerce/waivers',
6204
+ title: 'Waivers',
6205
+ heading: 'Find a signature',
6206
+ anchor: '#find-a-signature',
6207
+ text: 'The Signatures card lists the newest first. To find someone:\n- type a whole first or last name, the signer\'s or a minor\'s, or a full email address, in Search a name or an email;\n- or pick a day in Signed on;\n- and narrow either one to a single waiver with Waiver.\nSelect any column\'s header to sort the rows on screen, and use the page controls under the list to see older ones. Export CSV downloads every signature that matches as a spreadsheet.\nA signature\'s record\nSelect a row to see everything the signature holds:\n- the waiver and version signed, and the days it covers;\n- the signer\'s details and any minors;\n- the signature as drawn or typed, or the photo of the paper page;\n- the e-signature consent the signer agreed to;\n- the audit trail: when it was signed, the address it was signed on, the IP address and device, who handed the tablet over, and a SHA-256 fingerprint of the exact words signed.\nDownload PDF gives you the signed copy: the words, every ticked box, the signer, the minors, the signature and the audit trail.\nVoid marks a signature that shouldn\'t count, like a mistake or a duplicate. Say why; the reason stays on the record and on its PDF. A voided signature no longer counts for any day.'
6208
+ },
6209
+ {
6210
+ path: '/commerce-and-bookings/commerce/waivers',
6211
+ title: 'Waivers',
6212
+ heading: 'Contacts',
6213
+ anchor: '#contacts',
6214
+ text: 'A signer who gives an email is added to your contacts, or matched to the contact you already have for them, with the signing on their timeline.'
6215
+ },
6216
+ {
6217
+ path: '/commerce-and-bookings/commerce/waivers',
6218
+ title: 'Waivers',
6219
+ heading: 'Privacy',
6220
+ anchor: '#privacy',
6221
+ text: 'Signatures are stored privately in your workspace. They\'re never in your media library, and only the people with Collect waivers or Manage waivers can see them. When you erase a person from your workspace, every waiver they signed is erased with it, including the minors they signed for.'
6222
+ },
6223
+ {
6224
+ path: '/commerce-and-bookings/commerce/waivers',
6225
+ title: 'Waivers',
6226
+ heading: 'Related',
6227
+ anchor: '#related',
6228
+ text: '- POS & reservations\n- Running the register'
6229
+ },
5922
6230
  {
5923
6231
  path: '/concepts/glossary',
5924
6232
  title: 'Glossary & naming conventions',
@@ -9641,7 +9949,7 @@ export const DOCS_SECTION_INDEX = [
9641
9949
  title: 'Aglyn Assist',
9642
9950
  heading: '',
9643
9951
  anchor: '',
9644
- text: 'Aglyn Assist\nAglyn Assist is the chat helper in the bottom-right corner of every console page. Ask it how to do something — publish a page, connect a domain, set up shipping, invite a teammate — and it answers from this documentation, linking the exact docs section and the console page where you do it.'
9952
+ text: 'Aglyn Assist\nBeta Aglyn Assist is in beta. It is available today on every plan that includes it, and it is still changing as we improve it. Beta means you can use it now, while its answers and the steps on this page may still change.\nAglyn Assist is the chat helper in the bottom-right corner of every console page. Ask it how to do something — publish a page, connect a domain, set up shipping, invite a teammate — and it answers from this documentation, linking the exact docs section and the console page where you do it.'
9645
9953
  },
9646
9954
  {
9647
9955
  path: '/getting-started/aglyn-assist',
@@ -9774,7 +10082,7 @@ export const DOCS_SECTION_INDEX = [
9774
10082
  title: 'The console tour',
9775
10083
  heading: 'Choose a workspace',
9776
10084
  anchor: '#choose-a-workspace',
9777
- text: 'If you belong to more than one organization, signing in opens Workspaces: one card per workspace, with its name, its workspace address underneath, and Open, which takes you to its sites. With just one workspace you skip this page and go straight in.\n- Order — the cards are in name order, A to Z, with any workspaces you pinned first.\n- Pin — the pin in a card\'s top corner keeps that workspace at the front of the list. Click it again to unpin. Pins are saved to your account, so they follow you to every device and browser, and nobody else sees them. If you leave a workspace, its pin simply stops counting.\n- Search — finds a workspace by the start of any word in its name or its address: rea and roll both find Ready To Roll.\n- Filters — narrows the cards by Plan (Free, Starter, Pro and so on), by Your role in that workspace (Owner, Admin, Editor or Viewer), or by Pinned. Each filter in force shows as a chip above the cards; remove a chip to drop it.\nThe search and the filters cover every workspace you belong to, not only the cards on the current page. The pager at the foot of the list turns through the matches, five at a time.\nThe workspace switcher in the app bar lists your workspaces in the same order, pinned first, and marks each pinned one with a pin. Type in its search box to find one by name or address.'
10085
+ text: 'If you belong to more than one organization, signing in opens Workspaces: one card per workspace, with its name, its workspace address underneath, and Open, which takes you to its sites. With just one workspace you skip this page and go straight in.\n- Order — the cards are in name order, A to Z, with any workspaces you pinned first.\n- Pin — the pin in a card\'s top corner keeps that workspace at the front of the list. Click it again to unpin. Pins are saved to your account, so they follow you to every device and browser, and nobody else sees them. If you leave a workspace, its pin simply stops counting.\n- Search — finds a workspace by the start of any word in its name or its address: nor and coffee both find Northwind Coffee.\n- Filters — narrows the cards by Plan (Free, Starter, Pro and so on), by Your role in that workspace (Owner, Admin, Editor or Viewer), or by Pinned. Each filter in force shows as a chip above the cards; remove a chip to drop it.\nThe search and the filters cover every workspace you belong to, not only the cards on the current page. The pager at the foot of the list turns through the matches, five at a time.\nThe workspace switcher in the app bar lists your workspaces in the same order, pinned first, and marks each pinned one with a pin. Type in its search box to find one by name or address.'
9778
10086
  },
9779
10087
  {
9780
10088
  path: '/getting-started/console-tour',
@@ -10467,7 +10775,7 @@ export const DOCS_SECTION_INDEX = [
10467
10775
  title: 'Run an agency workspace',
10468
10776
  heading: 'The mental model, first',
10469
10777
  anchor: '#the-model',
10470
- text: 'Three words, and getting them straight up front saves a lot of confusion later:\n| Term | What it is | For an agency |\n| Organization | The billing and identity boundary. Owns the plan, the invoice, the members, the shared library. | You. One organization for your agency. |\n| Site (or host) | One published website with its own pages, domain, media and store. | One per client project. |\n| Workspace | What the console calls your organization when you\'re working in it. | Same thing as organization — you\'ll see both words. |\nThe consequence that matters: your plan\'s limits are per organization, and your access controls are per site. You buy 25 sites once; you decide separately who can touch which one.\nOne organization or one per client? Use one organization when the sites are yours to run: you hold the domains, you bill the client for a service, you\'re the one on call. That\'s the normal agency shape, and it\'s what the Agency plan is priced for.\nUse a separate organization per client when the client ultimately owns the account and you\'re only building it — they hold the card, the domain, and the risk. You then join their organization as a member and can leave cleanly.\nTo build first and hand over later, create a workspace for the client, build the site there, and then send the client an owner handoff from its Team page: Role → Owner (hand off this workspace). When they accept, the workspace and every site in it are theirs. You choose whether you stay on as an admin or leave. Staying needs a free team seat on their plan, so on Free choose Leave after the handoff, or have them add a seat first.'
10778
+ text: 'Three words, and getting them straight up front saves a lot of confusion later:\n| Term | What it is | For an agency |\n| Organization | The billing and identity boundary. Owns the plan, the invoice, the members, the shared library. | You. One organization for your agency. |\n| Site (or host) | One published website with its own pages, domain, media and store. | One per client project. |\n| Workspace | What the console calls your organization when you\'re working in it. | Same thing as organization — you\'ll see both words. |\nThe consequence that matters: your plan\'s limits are per organization, and your access controls are per site. You buy 25 sites once; you decide separately who can touch which one.\nOne organization or one per client? Use one organization when the sites are yours to run: you hold the domains, you bill the client for a service, you\'re the one on call. That\'s the normal agency shape, and it\'s what the Agency plan is priced for.\nUse a separate organization per client when the client ultimately owns the account and you\'re only building it — they hold the card, the domain, and the risk. You then join their organization as a member and can leave cleanly.\nTo build first and hand over later, create a workspace for the client, build the site there, and then send the client an owner handoff from its Team page: Role → Owner (hand off this workspace). When they sign in with that address, the workspace and every site in it are theirs, with nothing to accept. You choose whether you stay on as an admin or leave. Staying needs a free team seat on their plan, so on Free choose Leave after the handoff, or have them add a seat first.'
10471
10779
  },
10472
10780
  {
10473
10781
  path: '/guides/run-an-agency-workspace',
@@ -11356,7 +11664,7 @@ export const DOCS_SECTION_INDEX = [
11356
11664
  title: 'Email Campaigns',
11357
11665
  heading: '',
11358
11666
  anchor: '',
11359
- text: 'Email Campaigns\nEmail campaigns let you reach the people in your CRM. Build an audience, compose a send, and Aglyn handles delivery, caps, and unsubscribes.\nPlan availability Campaign email starts at Pro. Free and Starter include a monthly campaign allowance of zero, so a campaign of any size is refused before it sends. From Pro up the allowance rises with the plan.\nAccount email is not part of that. Order receipts, password resets, booking confirmations and replies to form submissions send on every plan, Free included, and are never refused by a campaign cap. See sending domains for why the two are treated differently.'
11667
+ text: 'Email Campaigns\nEmail campaigns let you reach the people in your CRM. Build an audience, compose a send, and Aglyn handles delivery, caps, and unsubscribes.\nPlan availability Campaign email starts at Pro. Free and Starter include a monthly campaign allowance of zero. On those plans the composer says so at the top, with an Upgrade button, and Send and Schedule stay off. You can still write the email, save it as a draft and send yourself a test. From Pro up the allowance rises with the plan, and the composer says the same thing when this month\'s allowance is spent or the audience is bigger than what is left.\nAccount email is not part of that. Order receipts, password resets, booking confirmations and replies to form submissions send on every plan, Free included, and are never refused by a campaign cap. See sending domains for why the two are treated differently.'
11360
11668
  },
11361
11669
  {
11362
11670
  path: '/marketing-and-automation/email-campaigns/overview',
@@ -11874,7 +12182,7 @@ export const DOCS_SECTION_INDEX = [
11874
12182
  title: 'Downgrading, canceling & your data',
11875
12183
  heading: 'Deleting your organization',
11876
12184
  anchor: '#deleting-your-organization',
11877
- text: 'Deletion is separate from canceling and is the only thing that removes your data. It\'s intentional and reversible for a short window:\n1. Request deletion — an owner starts it from the organization settings; you confirm by typing the organization name. Export anything you want to keep before you start (Setup → Backup & restore) — the hold is the window for it, and nothing is kept for you afterwards.\n2. A hold period follows the request. During the hold nothing is deleted and you can cancel the request to fully restore.\n3. After the hold, the organization — its sites, files, datasets, and account records — is permanently erased. This step is irreversible, and we keep no copy of the erased data. What we retain is an internal record that the erasure happened: which organization, when it was requested, and how many sites, members and credentials were removed.\nDeletion covers your organization\'s sites and their stored files and data. If you own an organization that still has other members, transfer or remove them first — a shared organization isn\'t deleted out from under its members.\nGDPR / right to erasure You can request erasure of your personal data at any time. Deletion permanently removes your records and leaves us with no copy of them — only a record that the erasure was carried out, which is itself kept for a limited period. Export anything you need during the hold. Contact support if you need an erasure completed outside the self-serve flow.\nConfirming the deletion {#confirm-deletion}\nThe last step of Delete organization starts the deletion of the organization and everything in it; nothing is erased yet, and you can cancel the request at any time during the hold period that follows. It is the same short dialog canceling opens, so it asks why you are leaving first, and'
12185
+ text: 'Deletion is separate from canceling and is the only thing that removes your data. It\'s intentional and reversible for a short window:\n1. Request deletion — an owner starts it from the organization settings; you confirm by typing the organization name. Export anything you want to keep before you start (Setup → Backup & restore) — the hold is the window for it, and nothing is kept for you afterwards.\n2. A hold period follows the request. During the hold nothing is deleted and you can cancel the request to fully restore.\n3. After the hold, the organization — its sites, files, datasets, and account records — is permanently erased. This step is irreversible, and we keep no copy of the erased data. What we retain is an internal record that the erasure happened: which organization, when it was requested, and how many sites, members and credentials were removed. Sales-tax records, and Aglyn\'s records of card readers you bought from Aglyn, are kept because tax law requires it; they hold no names or street addresses.\nDeletion covers your organization\'s sites and their stored files and data. If you own an organization that still has other members, transfer or remove them first — a shared organization isn\'t deleted out from under its members.\nGDPR / right to erasure You can request erasure of your personal data at any time. Deletion permanently removes your records and leaves us with no copy of them — only a record that the erasure was carried out, which is itself kept for a limited period. Export anything you need during the hold. Contact support if you need an erasure completed outside the self-serve flow.\nConfirming the deletion {#confirm-deletion}\nThe last step of Delete organization starts the deletion of the organization and everything in it; nothing is erased yet, and you ca'
11878
12186
  },
11879
12187
  {
11880
12188
  path: '/workspace-and-billing/billing-and-plans/downgrading-and-canceling',
@@ -12308,7 +12616,7 @@ export const DOCS_SECTION_INDEX = [
12308
12616
  title: 'Custom roles & permissions',
12309
12617
  heading: 'Create a custom role',
12310
12618
  anchor: '#create-a-custom-role',
12311
- text: '1. On the organization Team page, find the Custom roles card and choose New role.\n2. Give it a name and set each permission to granted, denied, or inherit (inherit falls back to the member\'s org role default).\n3. Save, then assign it to members from the roster\'s Custom role column.\nThe permission catalog covers organization settings, the activity log, billing (view and manage separately), member management, site creation and deletion, organization data, marketplace publishing, plugin installs, and the two AI keys.\nThe AI permissions {#ai-permissions}\nTwo keys decide who may spend the workspace\'s AI credits:\n| Permission | What it opens | Owner / Admin | Editor | Viewer |\n| Use AI assistance (ai.use) | The assistant, copy rewrites, and "generate a section" in the Besigner | Yes | Yes | No |\n| Generate with AI (ai.generate) | AI generation jobs and AI edits — pages, components, emails, campaigns, products, CRM, insights, workflows | Yes | Yes | No |\nBoth are ordinary catalog keys: a custom role can grant or deny either, and a per-member override wins over the role. They are enforced at the AI endpoints themselves — a member whose role lacks a key is refused with a message naming it and asking them to see an organization admin, whichever button they reached it by. A viewer may not ask the assistant even on the Free plan, so an admin can switch AI off for a read-only teammate without changing their role.\nSite collaborators are not decided by these keys. Their AI access is set per site, from the site role — see AI access for collaborators.\nPermissions are enforced on the server — every one of them is checked by the API that performs the action, not merely used to hide a button — so a role reliably limits what a member can do, whichever route they reach it by. Members without'
12619
+ text: '1. On the organization Team page, find the Custom roles card and choose New role.\n2. Give it a name. The permissions are grouped by area (Organization, Billing, Team, Sites, Data, Marketplace and plugins) and by plugin (AI, Commerce and the others your workspace uses), and Search permissions finds one by name or description.\n3. Set each permission to Allow, Deny or Inherit. Inherit falls back to the member\'s org role default, and each one says which org roles hold it by default. The switch beside a group\'s heading sets every permission in it at once.\n4. Save, then assign it to members from the roster\'s Custom role column.\nThe permission catalog covers organization settings, the activity log, billing (view and manage separately), member management, site creation and deletion, organization data, marketplace publishing, plugin installs, the two AI keys, and every permission the workspace\'s plugins add, such as Use the point of sale (managePos). A plugin\'s permissions are listed while the plugin is on for the workspace. Owners, admins and editors hold the point of sale by default and viewers don\'t, so a custom role can hand the register to a viewer or take it from an editor.\nThe AI permissions {#ai-permissions}\nTwo keys decide who may spend the workspace\'s AI credits:\n| Permission | What it opens | Owner / Admin | Editor | Viewer |\n| Use AI assistance (ai.use) | The assistant, copy rewrites, and "generate a section" in the Besigner | Yes | Yes | No |\n| Generate with AI (ai.generate) | AI generation jobs and AI edits — pages, components, emails, campaigns, products, CRM, insights, workflows | Yes | Yes | No |\nBoth are ordinary catalog keys: a custom role can grant or deny either, and a per-member override wins over the role. They are enforced at the AI endpoints themselves —'
12312
12620
  },
12313
12621
  {
12314
12622
  path: '/workspace-and-billing/teams-and-roles/custom-roles',
@@ -12350,21 +12658,21 @@ export const DOCS_SECTION_INDEX = [
12350
12658
  title: 'Invite teammates',
12351
12659
  heading: 'Invite someone',
12352
12660
  anchor: '#invite-someone',
12353
- text: '1. Open the organization\'s Team page and choose Add or invite.\n2. Enter their email and assign a role.\n3. What happens next depends on whether they already have an Aglyn account: already on Aglyn — they join right away and see the workspace on their next visit; new to Aglyn — we email them an invite to accept.\nPending invites\nInvites that haven\'t been accepted are listed with Resend (send the email again, for the address that lost it in a spam folder) and Revoke. A revoked invite\'s link stops working immediately.\nWho gets told\n- The person you invited gets the invite email. The confirmation you see says whether one actually went out — "email sent" versus "they\'ll see it when they sign in" — so a workspace with email delivery unavailable never leaves you assuming a message was delivered.\n- If the address already belongs to an Aglyn account, that person also gets an in-app notification. Clicking it opens the invitation, where they can accept or decline it.\n- Your workspace\'s owner and admins get an in-app notification when an invite is created, and again when it is accepted or declined, so whoever sent it finds out what happened without re-checking the Team page. These appear under Team & access in the notification bell, and can be muted there like any other category.'
12661
+ text: '1. Open the organization\'s Team page and choose Add or invite.\n2. Enter their email and assign a role.\n3. What happens next depends on whether they already have an Aglyn account: already on Aglyn — they join right away and see the workspace on their next visit; new to Aglyn — we email them, and they join the moment they sign up with that address. Nobody has to accept anything.\nPending invites\nInvites to people who haven\'t signed up yet are listed with Resend (send the email again, for the address that lost it in a spam folder) and Revoke. A revoked invite\'s link stops working immediately.\nWho gets told\n- The person you invited gets the invite email. The confirmation you see says whether one actually went out — "email sent" versus "they\'ll see it when they sign in" — so a workspace with email delivery unavailable never leaves you assuming a message was delivered.\n- If the address already belongs to an Aglyn account, that person also gets an in-app notification, which opens the workspace.\n- Your workspace\'s owner and admins get an in-app notification when an invite is created, and again when it is accepted or declined, so whoever sent it finds out what happened without re-checking the Team page. These appear under Team & access in the notification bell, and can be muted there like any other category.'
12354
12662
  },
12355
12663
  {
12356
12664
  path: '/workspace-and-billing/teams-and-roles/invite-teammates',
12357
12665
  title: 'Invite teammates',
12358
- heading: 'Accepting an invite',
12359
- anchor: '#accepting-an-invite',
12360
- text: 'If you\'re the one being invited, sign up or sign in with the address the invite was sent to, or with any address you\'ve confirmed on your account. That\'s usually Google, if it\'s the address. A banner at the top of every console page reads "You\'ve been invited to …" and has Accept and Decline buttons. When you accept, the workspace opens.\nIf you\'re already signed in and working in another workspace, you don\'t have to go looking: the same banner appears on whatever page you have open, and the invitation also shows up in the notification bell. Clicking it there opens a dialog to accept or decline.\nIf the invite is your only workspace, the Workspaces page leads with it and also offers Create my own site instead, so accepting isn\'t your only option.\nDeclining an invite\nDecline asks you to confirm, then removes the invitation, and the workspace\'s admins are told you declined. You can\'t undo a decline. To join later, an admin has to invite you again.\nAn ordinary invitation never changes who owns the workspace\nAccepting an invite normally sets your role to whatever the invite offered. The one role it cannot touch is the owner\'s. If an ordinary invitation is sent to the address that owns the workspace, accepting it is refused rather than applied — otherwise the owner would be quietly stepped down to a viewer or an admin, and only the owner can transfer ownership back, so nobody left in the workspace could undo it.\nOwnership moves in two deliberate ways, and in no other: Settings → Transfer ownership, by the current owner, to somebody already on the team; and an owner handoff, below, which invites an address to take the workspace over.'
12666
+ heading: 'Joining from an invite',
12667
+ anchor: '#joining-from-an-invite',
12668
+ text: 'If you\'re the one being invited, sign up or sign in with the address the invite was sent to, or with any address you\'ve confirmed on your account. That\'s usually Google, if it\'s the address. You join the moment you\'re in the console, with nothing to accept: the workspace and its sites appear in your account, and a link from the invite email opens the page it pointed to (it shows Joining … for a moment while the workspace is added).\nIf you\'re already signed in and working in another workspace, you stay where you are; the new workspace is added to your list and a message says you joined it.\nWhen joining doesn\'t go through\nEverything that could stop someone joining is checked when the invitation is sent, and the person sending it is told then: the workspace\'s free seats (pending invitations count against them), an invitation to the address that already owns the workspace, and, for a hand-off on a workspace that signs in through single sign-on, whether the new owner could be locked out.\nWhat\'s left is the workspace changing after the invitation went out — seats removed, or a downgrade. Then the person invited isn\'t asked anything and isn\'t shown a refusal: the page tells them their access is almost ready. The person who sent the invitation and the workspace\'s admins get a notification saying why, the pending row on the Team page shows Can\'t join yet with the reason, and the invited person joins on their next visit once it\'s fixed.\nAn ordinary invitation never changes who owns the workspace\nJoining from an invite normally sets your role to whatever the invite offered. The one role it cannot touch is the owner\'s. If an ordinary invitation is sent to the address that owns the workspace, joining from it is refused rather than applied — otherwise the owner would be quietly stepp'
12361
12669
  },
12362
12670
  {
12363
12671
  path: '/workspace-and-billing/teams-and-roles/invite-teammates',
12364
12672
  title: 'Invite teammates',
12365
12673
  heading: 'Hand off the workspace to a new owner',
12366
12674
  anchor: '#owner-handoff',
12367
- text: 'An owner handoff invites someone to take the workspace over as its owner. It is how a workspace built for somebody else reaches them: an agency or the Aglyn team builds the site, then hands it to the client, who may not have an Aglyn account yet.\n1. Open the organization\'s Team page.\n2. Enter the new owner\'s email, and in Role choose Owner (hand off this workspace). Only the current owner sees this choice. (Aglyn staff send it from the staff console.)\n3. In Current owner, choose what happens to you once they accept: Stay on as an admin after the handoff, or Leave after the handoff.\n4. Choose Send handoff.\nThe new owner gets an email saying the workspace is being handed to them, and the invitation shows in their console with Accept and Decline. Nothing changes until they accept. When they do, in one step:\n- they become the owner of the workspace and every site in it;\n- you stay on as an admin, or leave the workspace, as you chose;\n- the invitation is marked accepted and the activity log records the handoff.\nThey land on the workspace\'s home, like anyone joining. Accepting does not ask them to upgrade or start a subscription.\nSome rules hold for every handoff:\n- One at a time. A workspace has one pending handoff. Sending a new one replaces the last.\n- No seat reserved. The owner seat moves rather than being added, so a pending handoff never counts against your team seats.\n- Staying needs a seat. If you stay on as an admin, the workspace ends up with one more manager than before, so it needs a free team seat for you. On a plan with no seat to spare (Free has one) the handoff is refused when you send it, and the message points you to Leave after the handoff instead. Aglyn staff hold no seat, so a staff member can always stay on.\n- Single sign-on. If the workspace enforces s'
12675
+ text: 'An owner handoff invites someone to take the workspace over as its owner. It is how a workspace built for somebody else reaches them: an agency or the Aglyn team builds the site, then hands it to the client, who may not have an Aglyn account yet.\n1. Open the organization\'s Team page.\n2. Enter the new owner\'s email, and in Role choose Owner (hand off this workspace). Only the current owner sees this choice. (Aglyn staff send it from the staff console.)\n3. In Current owner, choose what happens to you once they take over: Stay on as an admin after the handoff, or Leave after the handoff.\n4. Choose Send handoff.\nThe new owner gets an email saying the workspace is being handed to them. Nothing changes until they sign in, or sign up, with that address. Then, in one step and with nothing to accept:\n- they become the owner of the workspace and every site in it;\n- you stay on as an admin, or leave the workspace, as you chose;\n- the invitation is marked accepted and the activity log records the handoff;\n- you both get an email: they\'re told the workspace is theirs, with Start the plan when one was proposed with the handoff, and you\'re told who owns it now and whether you stayed on.\nThey land on the workspace\'s home, like anyone joining, or on the page the email linked to. Taking over does not ask them to upgrade or start a subscription.\nSome rules hold for every handoff:\n- One at a time. A workspace has one pending handoff. Sending a new one replaces the last.\n- No seat reserved. The owner seat moves rather than being added, so a pending handoff never counts against your team seats.\n- Staying needs a seat. If you stay on as an admin, the workspace ends up with one more manager than before, so it needs a free team seat for you. On a plan with no seat to spare (Free has one) the ha'
12368
12676
  },
12369
12677
  {
12370
12678
  path: '/workspace-and-billing/teams-and-roles/invite-teammates',