@aglyn/aglyn 1.0.0-beta.231 → 1.0.0-beta.232
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.
- package/package.json +11 -11
- package/src/lib/app-utils/account-acquisition.d.ts +15 -2
- package/src/lib/app-utils/account-acquisition.js +20 -1
- package/src/lib/app-utils/account-acquisition.js.map +1 -1
- package/src/lib/app-utils/artifact-list-queries.d.ts +35 -0
- package/src/lib/app-utils/artifact-list-queries.js +203 -0
- package/src/lib/app-utils/artifact-list-queries.js.map +1 -0
- package/src/lib/app-utils/business-profile.d.ts +171 -0
- package/src/lib/app-utils/business-profile.js +277 -0
- package/src/lib/app-utils/business-profile.js.map +1 -0
- package/src/lib/app-utils/child-contract.d.ts +4 -1
- package/src/lib/app-utils/child-contract.js +5 -2
- package/src/lib/app-utils/child-contract.js.map +1 -1
- package/src/lib/app-utils/console-routes.d.ts +5 -0
- package/src/lib/app-utils/console-routes.js +1 -0
- package/src/lib/app-utils/console-routes.js.map +1 -1
- package/src/lib/app-utils/content-schema-type.d.ts +9 -0
- package/src/lib/app-utils/content-schema-type.js +4 -0
- package/src/lib/app-utils/content-schema-type.js.map +1 -1
- package/src/lib/app-utils/docs-help.generated.d.ts +41 -5
- package/src/lib/app-utils/docs-help.generated.js +83 -3
- package/src/lib/app-utils/docs-help.generated.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.js +181 -13
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/entry-list-declaration.d.ts +33 -0
- package/src/lib/app-utils/entry-list-declaration.js +172 -0
- package/src/lib/app-utils/entry-list-declaration.js.map +1 -0
- package/src/lib/app-utils/first-version-seed.d.ts +19 -0
- package/src/lib/app-utils/first-version-seed.js +53 -0
- package/src/lib/app-utils/first-version-seed.js.map +1 -0
- package/src/lib/app-utils/local-business.d.ts +8 -0
- package/src/lib/app-utils/local-business.js +4 -0
- package/src/lib/app-utils/local-business.js.map +1 -1
- package/src/lib/app-utils/page-markdown.js +3 -0
- package/src/lib/app-utils/page-markdown.js.map +1 -1
- package/src/lib/plugin-manager/feature-plugins.d.ts +19 -0
- package/src/lib/plugin-manager/feature-plugins.js +8 -0
- package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.js +105 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
- package/src/lib/plugin-manager/plugin-channel-orders.d.ts +262 -0
- package/src/lib/plugin-manager/plugin-channel-orders.js +32 -0
- package/src/lib/plugin-manager/plugin-channel-orders.js.map +1 -0
- package/src/lib/plugin-manager/plugin-product-catalog.d.ts +5 -0
- package/src/lib/plugin-manager/plugin-product-catalog.js.map +1 -1
- package/src/lib/plugin-manager/plugin-product-writer.d.ts +166 -0
- package/src/lib/plugin-manager/plugin-product-writer.js +31 -0
- package/src/lib/plugin-manager/plugin-product-writer.js.map +1 -0
- package/src/lib/plugin-manager/plugin-theme-presets.d.ts +40 -0
- package/src/lib/plugin-manager/plugin-theme-presets.js +44 -0
- package/src/lib/plugin-manager/plugin-theme-presets.js.map +1 -0
|
@@ -235,6 +235,55 @@ export const DOCS_SECTION_INDEX = [
|
|
|
235
235
|
anchor: '#related',
|
|
236
236
|
text: '- Actions builder\n- Aglyn AI\n- How Aglyn AI builds'
|
|
237
237
|
},
|
|
238
|
+
{
|
|
239
|
+
path: '/ai/business-profile',
|
|
240
|
+
title: 'Business profile',
|
|
241
|
+
heading: '',
|
|
242
|
+
anchor: '',
|
|
243
|
+
text: 'Business profile\nEvery AI job for a site starts from what the site already knows about the business: its name, what it does, its services, the area it serves, who it is for, its tone of voice, and the contact details you entered. Aglyn AI writes for this business instead of guessing, and it never makes up a way to reach you.'
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
path: '/ai/business-profile',
|
|
247
|
+
title: 'Business profile',
|
|
248
|
+
heading: 'Where to edit it',
|
|
249
|
+
anchor: '#where-to-edit-it',
|
|
250
|
+
text: 'Open the site, go to Setup → Business profile. The page has three cards:\n- Business profile: what the business does, its services (one per line), who it is for, the area it serves, the tone of voice and any notes on tone.\n- From your site settings: the facts Aglyn AI reads from your other settings, each with a link to the card that edits it.\n- What Aglyn AI learned: the preferences it took from edits you applied.'
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
path: '/ai/business-profile',
|
|
254
|
+
title: 'Business profile',
|
|
255
|
+
heading: 'Where the values come from',
|
|
256
|
+
anchor: '#where-the-values-come-from',
|
|
257
|
+
text: 'When a site is started with Aglyn AI, the profile is filled from your answers to the guided start, and from what the plan wrote about the business. Each field says where its value came from:\n- Your answers when the site was started, or Suggested by Aglyn AI: a suggestion. Edit it and it becomes yours.\n- An empty field that Aglyn AI still has a value for says so: the description in your SEO settings, or the workspace\'s default.\nWhat you type is never replaced. A later job can fill an empty field, but it never overwrites one you wrote, and a field you cleared stays clear.\nWorkspace defaults\nSettings → Profile has a Business profile defaults card. A site uses those values wherever its own profile is empty, so a workspace that runs many sites for one business writes them once. Only managers can change them.'
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
path: '/ai/business-profile',
|
|
261
|
+
title: 'Business profile',
|
|
262
|
+
heading: 'Contact details are never invented',
|
|
263
|
+
anchor: '#contact-details-are-never-invented',
|
|
264
|
+
text: 'The name, business type, email, phone, address, opening hours and social profiles come only from Setup → Basic details and Setup → SEO, exactly as entered. A detail you have not entered reads Not entered, and Aglyn AI writes around it, or leaves a bracketed placeholder such as [phone number] for you to fill, instead of making one up. The same goes for prices, reviews and testimonials.'
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
path: '/ai/business-profile',
|
|
268
|
+
title: 'Business profile',
|
|
269
|
+
heading: 'What Aglyn AI learned',
|
|
270
|
+
anchor: '#what-aglyn-ai-learned',
|
|
271
|
+
text: 'When you apply an Assist edit that shows a preference, such as asking for shorter copy, a friendlier tone, no emoji, or removing a testimonials section, Aglyn AI keeps that as a short preference for the site. Later jobs read it.\nThe What Aglyn AI learned card lists each preference and how many applied edits it was seen in. Choose the close button beside one to forget it, or Forget all to clear the list. A preference replaces an opposite one: asking for detailed copy after asking for shorter copy keeps only the newer one.'
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
path: '/ai/business-profile',
|
|
275
|
+
title: 'Business profile',
|
|
276
|
+
heading: 'Which jobs read it',
|
|
277
|
+
anchor: '#which-jobs-read-it',
|
|
278
|
+
text: 'The site\'s plan, every build Assist plans for the site, Assist\'s edit turns, and analytics insights read the profile. Insights read what the business is, never its contact details. Free and paid workspaces get the same profile.\nThe profile is sent as one short block, at most about 400 tokens, that is cached for the site, so it adds almost nothing to what a job costs.'
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
path: '/ai/business-profile',
|
|
282
|
+
title: 'Business profile',
|
|
283
|
+
heading: 'Related',
|
|
284
|
+
anchor: '#related',
|
|
285
|
+
text: '- How Aglyn AI builds\n- Generate a site'
|
|
286
|
+
},
|
|
238
287
|
{
|
|
239
288
|
path: '/ai/copy-assist',
|
|
240
289
|
title: 'Rewrite and write copy with AI',
|
|
@@ -282,42 +331,42 @@ export const DOCS_SECTION_INDEX = [
|
|
|
282
331
|
title: 'Create images with AI',
|
|
283
332
|
heading: '',
|
|
284
333
|
anchor: '',
|
|
285
|
-
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.
|
|
334
|
+
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.'
|
|
286
335
|
},
|
|
287
336
|
{
|
|
288
337
|
path: '/ai/create-images',
|
|
289
338
|
title: 'Create images with AI',
|
|
290
339
|
heading: 'Make a picture',
|
|
291
340
|
anchor: '#make-a-picture',
|
|
292
|
-
text: '1. Open Media, on a site or for the organization, and open the folder the pictures should land in.\n2. Choose Create with AI, beside Upload media. An empty library offers it beside its own Upload media button too.\n3.
|
|
341
|
+
text: '1. Open Media, on a site or for the organization, and open the folder the pictures should land in.\n2. Choose Create with AI, beside Upload media. An empty library offers it beside its own Upload media button too.\n3. Choose a Kind. Each one shows what a picture of it costs, and choosing it picks a shape that suits it — Wide 16:9 for a banner, Square 1:1 for a social post — which you can change.\n4. Describe the picture: what is in it and the setting. For a Photo, describe the style too.\n5. Choose a shape: Square 1:1, Landscape 4:3, Portrait 3:4, Wide 16:9 or Tall 9:16, and how many pictures to make, from one to four.\n6. For a Vector kind, choose its colors: Use my site\'s theme colors, which reads your site\'s theme, or Choose colors to pick up to six. The organization\'s library belongs to no single site, so there you choose the colors. For an Art or Design kind, name the colors in your description if you want particular ones; a Photo kind takes the colors of the scene.\n7. The window shows what the pictures will cost in credits before you start. Choose Create.\nThe pictures appear in the library a few seconds later, selected, so you can move, tag or open them at once. Nothing is placed on a page: a picture is used only when you put it in an Image element, a gallery or anywhere else a media field asks for one.'
|
|
293
342
|
},
|
|
294
343
|
{
|
|
295
344
|
path: '/ai/create-images',
|
|
296
345
|
title: 'Create images with AI',
|
|
297
346
|
heading: 'What each picture gets',
|
|
298
347
|
anchor: '#what-each-picture-gets',
|
|
299
|
-
text: '- Alt text. A
|
|
348
|
+
text: '- Alt text. A picture from the Photo, Art or Design sections takes your description; a Vector picture gets a sentence the AI writes about what it drew. Edit it in the picture\'s details like any other alt text.\n- A file name made from the first few words of your description, starting ai- and numbered within the set: .svg for a Vector kind, the picture\'s own type for the others.\n- A record of how it was made: the model, your description, the kind and the shape, kept with the file.\n- For a picture from Google\'s image models, an invisible watermark. Google marks every picture its image models make with its SynthID watermark, so the picture can later be identified as generated. You cannot see it, and it does not change how the picture looks.'
|
|
300
349
|
},
|
|
301
350
|
{
|
|
302
351
|
path: '/ai/create-images',
|
|
303
352
|
title: 'Create images with AI',
|
|
304
353
|
heading: 'Credits',
|
|
305
354
|
anchor: '#credits',
|
|
306
|
-
text: 'Pictures are metered in AI credits from the workspace\'s pool. The window shows an estimate before you create anything:\n|
|
|
355
|
+
text: 'Pictures are metered in AI credits from the workspace\'s pool. The window shows an estimate before you create anything:\n| Kinds | About, per picture | What it is made of |\n| Vector | 18 credits | The words the AI reads and writes to draw the SVG, at the same rates as other AI text |\n| Photo, Art and Design, on the Free plan | 75 credits | A 512 px picture, plus the description and the thinking the image model does before it draws |\n| Photo, Art and Design, on a paid plan | 108 credits | A 1K picture (about 1024 px on its longer side), plus the same |\nThe size comes from your plan: pictures are 512 px on Free and 1K on every paid plan.\nWhat is charged is what was actually spent, so a picture can cost a little more or less than its estimate, and an illustration that needed a second attempt costs about twice its estimate. You are charged only for pictures that reach your library:\n- a picture the safety filter holds back is not charged;\n- an illustration that does not come out right is not charged. The window says This one\'s on us — you weren\'t charged.\n- a picture your library could not store, because your storage is full for example, is not charged;\n- when the AI service fails, nothing is charged.\nA Free workspace spends from its monthly allowance and is told before it starts when the pictures it asked for would cost more than it has left. A paid workspace past its included band keeps working at its plan\'s overage rate unless the workspace stops AI at the band, the same as every other AI request.'
|
|
307
356
|
},
|
|
308
357
|
{
|
|
309
358
|
path: '/ai/create-images',
|
|
310
359
|
title: 'Create images with AI',
|
|
311
360
|
heading: 'Safe by construction',
|
|
312
361
|
anchor: '#safety',
|
|
313
|
-
text: 'An illustration is checked before it is stored. It has to be one SVG in the shape you chose, no larger than 200 KB, and self-contained: no scripts, no links, no embedded images or web pages, and nothing loaded from anywhere else, such as a font. An illustration that fails the check is drawn again once with the problem pointed out; if the second one fails too, it is not stored and not charged. The media library then removes anything unsafe from every SVG it stores, as it does for an SVG you upload.\nThe AI declines to draw a real company\'s or organization\'s logo, a trademark or a recognizable brand symbol, a real, named person, and anything sexual, hateful, violent or otherwise unsafe; the window says why, and a declined request on a Free workspace costs nothing. A Logo mark is always a symbol without lettering.\
|
|
362
|
+
text: 'An illustration is checked before it is stored. It has to be one SVG in the shape you chose, no larger than 200 KB, and self-contained: no scripts, no links, no embedded images or web pages, and nothing loaded from anywhere else, such as a font. An illustration that fails the check is drawn again once with the problem pointed out; if the second one fails too, it is not stored and not charged. The media library then removes anything unsafe from every SVG it stores, as it does for an SVG you upload.\nThe AI declines to draw a real company\'s or organization\'s logo, a trademark or a recognizable brand symbol, a real, named person, and anything sexual, hateful, violent or otherwise unsafe; the window says why, and a declined request on a Free workspace costs nothing. A Logo mark is always a symbol without lettering.\nPictures from the Photo, Art and Design sections are checked by Google\'s safety filters, set to block content they rate as a medium risk or higher, and Google\'s own policies refuse some content whatever is asked, such as photorealistic depictions of children or celebrities that its policies do not allow. The window says so for those kinds: pictures of real, identifiable people, celebrities or brands may be declined. The people in a Lifestyle with people picture are asked for as made-up people, and a Cartoon or anime picture as original characters. A description that is declined is answered with a message and no picture is charged.'
|
|
314
363
|
},
|
|
315
364
|
{
|
|
316
365
|
path: '/ai/create-images',
|
|
317
366
|
title: 'Create images with AI',
|
|
318
367
|
heading: 'What is sent',
|
|
319
368
|
anchor: '#what-is-sent',
|
|
320
|
-
text: '-
|
|
369
|
+
text: '- Vector kinds: your description, the kind and shape of picture, and your site\'s theme colors or the colors you chose are sent to the AI service every other Aglyn AI feature uses.\n- Photo, Art and Design kinds: your description, followed by the kind\'s fixed style wording, and the shape you chose are sent to Google\'s image models on Vertex AI.\nNothing else is sent: no other content of your site, no file from your library, and no name, email address or account identifier. The pictures come back to Aglyn and are stored in your library; your description is kept with each picture as part of its record of how it was made.'
|
|
321
370
|
},
|
|
322
371
|
{
|
|
323
372
|
path: '/ai/create-images',
|
|
@@ -709,7 +758,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
709
758
|
title: 'Aglyn AI: the AI website builder',
|
|
710
759
|
heading: 'What it can build',
|
|
711
760
|
anchor: '#what-it-can-build',
|
|
712
|
-
text: 'Each capability has its own page, next to the thing it builds:\n| You want | Where you start | The page |\n| A page from a brief | Pages → Create with AI | Generate a page |\n| A whole small site | Pages, or Sites for several at once | Generate a site |\n| Many client sites, run as an agency | Sites | An AI website builder for agencies |\n| A layout — header, navigation, footer | Layouts → Create with AI | Generate a layout |\n| A page template | Templates → Create with AI | Generate a page template |\n| A reusable component | Components → Create with AI | Generate a component |\n| A form | Forms → Create with AI | Generate a form |\n| Illustrations, icons, patterns, logo marks and
|
|
761
|
+
text: 'Each capability has its own page, next to the thing it builds:\n| You want | Where you start | The page |\n| A page from a brief | Pages → Create with AI | Generate a page |\n| A whole small site | Pages, or Sites for several at once | Generate a site |\n| Many client sites, run as an agency | Sites | An AI website builder for agencies |\n| A layout — header, navigation, footer | Layouts → Create with AI | Generate a layout |\n| A page template | Templates → Create with AI | Generate a page template |\n| A reusable component | Components → Create with AI | Generate a component |\n| A form | Forms → Create with AI | Generate a form |\n| Illustrations, icons, patterns, logo marks, photos, art and design images | Media → Create with AI | Create images with AI |\n| A section on the canvas | The Besigner | Generate a section |\n| Copy, rewritten or fresh | Any text in the Besigner | Rewrite and write copy |\n| A change to your theme | Setup → Theme | Change your theme with AI |\n| Search titles and descriptions | SEO | SEO by AI |\n| Product copy, catalog and discount ideas | Products → Create with AI, and Build your catalog with AI on the products page | Products with AI |\n| Help working the CRM | A record, the composer, an import | CRM by AI |\n| A designed email | Emails → Templates → Create with AI | Generate an email |\n| A campaign | Marketing → Campaigns → Create with AI, or Also draft a campaign on an email | Generate an email |\n| Variants for an A/B test, and its result in words | Marketing → Experiments | A/B tests by AI |\n| Announcement bar and popup copy, or a new overlay | Marketing → Overlays | Marketing with AI |\n| What your analytics mean | Analytics → Insights | Insights |\n| What your campaigns caused and earned | Marketing → Conversions, or a campaign\'s report | Marketing '
|
|
713
762
|
},
|
|
714
763
|
{
|
|
715
764
|
path: '/ai/overview',
|
|
@@ -751,7 +800,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
751
800
|
title: 'Aglyn AI: the AI website builder',
|
|
752
801
|
heading: 'Related',
|
|
753
802
|
anchor: '#related',
|
|
754
|
-
text: '- How Aglyn AI builds\n- Aglyn Assist\n- AI allotments, usage and model choice\n- Add-ons\n- The Besigner'
|
|
803
|
+
text: '- How Aglyn AI builds\n- Business profile\n- Aglyn Assist\n- AI allotments, usage and model choice\n- Add-ons\n- The Besigner'
|
|
755
804
|
},
|
|
756
805
|
{
|
|
757
806
|
path: '/ai/products-with-ai',
|
|
@@ -989,7 +1038,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
989
1038
|
title: 'Drag-and-drop hierarchy',
|
|
990
1039
|
heading: 'Containers vs. leaf elements',
|
|
991
1040
|
anchor: '#containers-vs-leaf-elements',
|
|
992
|
-
text: 'Whether the center zone means "drop inside" depends on the kind of element you\'re over.\nContainers accept children\nContainers are built to hold other elements: Stack, Box, Section, Card, App Bar, Toolbar, and similar. Dropping onto a container\'s center nests your element inside it. This is how you build structure — a Stack of buttons, a Section full of blocks, and so on.\nLeaf elements don\'t — dropping on one makes a sibling\nLeaf elements have no slot for child elements. There are three kinds:\n- Text elements render their content as inline text — a Page Link, a Button, or
|
|
1041
|
+
text: 'Whether the center zone means "drop inside" depends on the kind of element you\'re over.\nContainers accept children\nContainers are built to hold other elements: Stack, Box, Section, Card, App Bar, Toolbar, and similar. Dropping onto a container\'s center nests your element inside it. This is how you build structure — a Stack of buttons, a Section full of blocks, and so on.\nTypography is a container too. Drop an element on its center and it nests inside, after the Typography\'s own text: a heading can carry a badge, an icon, or a second line of text. A Typography nested inside another continues the same line, the way a phrase continues a sentence, so add a space at the start of its text if you want one between them. Double-click the outer text to edit it as usual; the elements inside are left alone.\nLeaf elements don\'t — dropping on one makes a sibling\nLeaf elements have no slot for child elements. There are three kinds:\n- Text elements render their content as inline text — a Page Link, a Button, or an Inline Text run. Their words are their content; there\'s nowhere to nest a child.\n- Self-closing elements draw themselves and take no children at all — an Image, an Icon, or a Video.\n- Elements whose content is an attribute look like containers but draw only what their attributes say — a Markdown block (its document is the Content attribute), a List Item Text row (its words are Primary/Secondary), a Reusable Component instance (its content lives in the definition), and a Layout Slot (filled by the page bound to the layout). Anything nested inside one of these has nowhere to appear on the published page.\nDropping onto a leaf places your element as a sibling right after it, inside the leaf\'s parent — never nested inside the leaf. Over a leaf you\'ll only ever see a before/after p'
|
|
993
1042
|
},
|
|
994
1043
|
{
|
|
995
1044
|
path: '/building-sites/besigner/drag-drop-hierarchy',
|
|
@@ -3910,6 +3959,69 @@ export const DOCS_SECTION_INDEX = [
|
|
|
3910
3959
|
anchor: '#import',
|
|
3911
3960
|
text: 'Import opens an eight-step wizard:\n1. Upload a CSV, JSON or NDJSON file. The separator, encoding and header row are detected, and you can change any of them.\n2. Columns: each column is matched to a field, with how sure the match is and why. A Shopify product export is recognized column for column. Remap or ignore any column.\n3. Values: list values the store does not hold. For a product\'s Kind, Status or When sold out, map each unknown value to one the store has, leave it blank, or refuse the rows. For Categories, you can also add a name as a new category.\n4. Matching: how many rows find an existing record, how many are new, and which are ambiguous.\n5. Conflicts: what happens on a match (update, skip or make a copy), on no match (create or skip), and per field (overwrite, fill only blank fields, keep what is there). Rules the store keeps are shown locked with the reason. A gift card import adds a Confirm the cards step here (see Gift cards).\n6. Review: a dry run of every row, with a before → after table and every class of warning. Each class needs an "I understand" before Import is enabled.\n7. Import writes in chunks. You can pause and resume it.\n8. Results: a result file of every row, and Undo for seven days. A record edited since the import is shown to you rather than overwritten.\nBy default an import fills blank fields and never overwrites what a record already has. To change prices, stock or anything else that is set, choose Overwrite for those fields in the Conflicts step.\nProducts\nRows that share a Handle are one product: the first row\'s product fields, every row\'s variant, every row\'s image. A row without a handle is a product of its own, and its handle is made from its title.\n- Matching tries the Handle, then the SKU, then the Aglyn ID. A matched product is updat'
|
|
3912
3961
|
},
|
|
3962
|
+
{
|
|
3963
|
+
path: '/commerce-and-bookings/commerce/tax-services',
|
|
3964
|
+
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
3965
|
+
heading: '',
|
|
3966
|
+
anchor: '',
|
|
3967
|
+
text: 'Tax services: Avalara AvaTax and TaxJar\nIf you already calculate sales tax in an Avalara AvaTax or TaxJar account, connect it and Aglyn asks it for the tax on every sale — at your storefront\'s checkout and at the register — instead of using a flat rate. Your paid orders and refunds are recorded in that account, so its reports and filings start from what you actually sold.\nYou remain responsible for your sales tax Aglyn asks your tax service for a figure and records your sales there. It does not register you anywhere, file your returns or pay the tax you collect. Where you are registered, what you file and when are decisions for you, your tax service and your own advisor. This is different from Stripe Tax mode, where the platform collects and remits the tax for you.\nTax services come with every plan that includes selling, at no extra cost. You need your own AvaTax or TaxJar account; Aglyn does not sell one.'
|
|
3968
|
+
},
|
|
3969
|
+
{
|
|
3970
|
+
path: '/commerce-and-bookings/commerce/tax-services',
|
|
3971
|
+
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
3972
|
+
heading: 'Before you start',
|
|
3973
|
+
anchor: '#before-you-start',
|
|
3974
|
+
text: '- Set your store\'s Taxes to collect at your own rates (Commerce → Settings → Taxes), with a rate for where you sell. A tax service is used only in that mode. Your own rates stay as the fallback: when the service does not answer, the sale is taxed at them instead.\n- Avalara AvaTax: your account id (a number) and a license key, from AvaTax → Settings → License and API keys. If your AvaTax account has more than one company, the company code to file under.\n- TaxJar: an API token, from TaxJar → Account → TaxJar API. List the states where you collect tax (your nexus) in TaxJar: it charges no tax anywhere else.\nBoth vendors offer a free sandbox account for testing. Connect it as a sandbox first, place a test order, then connect your production account.'
|
|
3975
|
+
},
|
|
3976
|
+
{
|
|
3977
|
+
path: '/commerce-and-bookings/commerce/tax-services',
|
|
3978
|
+
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
3979
|
+
heading: 'Connect',
|
|
3980
|
+
anchor: '#connect',
|
|
3981
|
+
text: '1. Go to Commerce → Settings and find the Tax service card.\n2. Choose Avalara AvaTax or TaxJar, and Sandbox or Production.\n3. Enter your credentials and select Connect. Aglyn tests them with the vendor first and stores nothing they refuse. The credentials are encrypted on the server and are never shown again, not even to you.\n4. Enter the ship-from address: the street, city, state and postal code you ship or sell from. Aglyn checks it with the service. It is the origin of every sale and the place an in-person sale is taxed.\nOnly an admin of the site can connect, test or disconnect a service and change its address. Test connection checks the stored credentials again whenever you like; the card shows the answer.'
|
|
3982
|
+
},
|
|
3983
|
+
{
|
|
3984
|
+
path: '/commerce-and-bookings/commerce/tax-services',
|
|
3985
|
+
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
3986
|
+
heading: 'How sales are taxed',
|
|
3987
|
+
anchor: '#how-sales-are-taxed',
|
|
3988
|
+
text: '| Where | What the service is asked |\n| -- | -- |\n| Storefront cart and Buy now | The tax on each line, after discounts, at your ship-from address. The shopper\'s address is collected inside the payment page, after the tax is set, so these online sales are taxed at your address, as your own rates are. |\n| Register | The tax on each line, after the cashier\'s discount, at your ship-from address. |\n- A product you marked tax-exempt is sent as non-taxable and charged no tax.\n- A subscription keeps your own recurring rate: a quote taken today cannot price next month\'s renewal.\n- Shipping charges are not taxed at checkout, as with your own rates.\n- If the service does not answer within 5 seconds, or refuses, the sale is taxed at your own rates and goes through. The order says which service was asked and that it fell back, so you can review those sales.'
|
|
3989
|
+
},
|
|
3990
|
+
{
|
|
3991
|
+
path: '/commerce-and-bookings/commerce/tax-services',
|
|
3992
|
+
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
3993
|
+
heading: 'Product tax codes',
|
|
3994
|
+
anchor: '#product-tax-codes',
|
|
3995
|
+
text: 'Each vendor has codes for kinds of goods taxed differently from the general rate, such as clothing or food. Set a product\'s Tax code in the product editor, and a Default tax code on the Tax service card for products without one. A product with neither is sent as general goods.'
|
|
3996
|
+
},
|
|
3997
|
+
{
|
|
3998
|
+
path: '/commerce-and-bookings/commerce/tax-services',
|
|
3999
|
+
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
4000
|
+
heading: 'Exempt customers',
|
|
4001
|
+
anchor: '#exempt-customers',
|
|
4002
|
+
text: 'Under Exempt customers on the Tax service card, record a customer who does not pay sales tax — a reseller, a nonprofit, a school, a government buyer — by their email address, with the reason, their certificate number and, if the exemption covers only some states, those states. A sale to that email address is sent to the service with the exemption, and the service decides the tax. AvaTax receives the reason and certificate number; TaxJar receives the reason. Keep the certificates themselves: the service and your auditors may ask for them.'
|
|
4003
|
+
},
|
|
4004
|
+
{
|
|
4005
|
+
path: '/commerce-and-bookings/commerce/tax-services',
|
|
4006
|
+
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
4007
|
+
heading: 'Recording orders and refunds',
|
|
4008
|
+
anchor: '#recording-orders-and-refunds',
|
|
4009
|
+
text: 'With Record paid orders and refunds on (the default), each paid order is recorded in your account under its order id, at the tax the buyer actually paid. Recording it again — a retry — updates the same record rather than adding one.\n- A refund, in full or in part, and a return at the register reverse their share of the sale in the service.\n- A canceled order that was never refunded is voided.\n- The order\'s Tax service record shows where it stands: Recorded, Recording (the service was busy; Aglyn tries again), Not recorded (with the service\'s reason, and Record it again once you have fixed it) or Voided.'
|
|
4010
|
+
},
|
|
4011
|
+
{
|
|
4012
|
+
path: '/commerce-and-bookings/commerce/tax-services',
|
|
4013
|
+
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
4014
|
+
heading: 'Disconnect',
|
|
4015
|
+
anchor: '#disconnect',
|
|
4016
|
+
text: 'Disconnect forgets your credentials. Sales are then taxed at your own rates again. What was already recorded stays in your account, and your product tax codes and exempt customers are kept for when you connect again.'
|
|
4017
|
+
},
|
|
4018
|
+
{
|
|
4019
|
+
path: '/commerce-and-bookings/commerce/tax-services',
|
|
4020
|
+
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
4021
|
+
heading: 'What is sent to the vendor',
|
|
4022
|
+
anchor: '#what-is-sent-to-the-vendor',
|
|
4023
|
+
text: 'For each quote and each recorded sale: your ship-from address, the buyer\'s address (or yours for an in-person sale), the order id, each line\'s product, name, quantity, amount and tax code, and any exemption you recorded. AvaTax also receives the buyer\'s email address as its customer code. No payment details are sent. The data goes to your own Avalara or TaxJar account, with your own credentials, so the vendor acts for you and is not an Aglyn subprocessor; the subprocessors page names both among the services a merchant connects.'
|
|
4024
|
+
},
|
|
3913
4025
|
{
|
|
3914
4026
|
path: '/commerce-and-bookings/commerce/use-pirate-ship',
|
|
3915
4027
|
title: 'Use Pirate Ship with Aglyn',
|
|
@@ -5868,7 +5980,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
5868
5980
|
title: 'Media Library & CDN',
|
|
5869
5981
|
heading: 'Upload',
|
|
5870
5982
|
anchor: '#upload',
|
|
5871
|
-
text: '- Upload images, PDFs, ZIP archives and documents (Word, Excel, PowerPoint, CSV, RTF, plain text, Markdown and JSON). Click Upload media, or drag files straight from your desktop onto the library — dropped files land in the folder you have open.\n- Video uploads are paused. New MP4, WebM and QuickTime files are not accepted on any plan for now, from the console or the API, and a video\'s file cannot be replaced. Videos already in your library keep playing, and the Video element can still use them. While the pause lasts, the library shows a Video uploads paused chip beside Upload media.\n- Create images with AI. Create with AI, beside Upload media, draws an illustration, icon, pattern or logo mark as an SVG from a description, or makes a photo
|
|
5983
|
+
text: '- Upload images, PDFs, ZIP archives and documents (Word, Excel, PowerPoint, CSV, RTF, plain text, Markdown and JSON). Click Upload media, or drag files straight from your desktop onto the library — dropped files land in the folder you have open.\n- Video uploads are paused. New MP4, WebM and QuickTime files are not accepted on any plan for now, from the console or the API, and a video\'s file cannot be replaced. Videos already in your library keep playing, and the Video element can still use them. While the pause lasts, the library shows a Video uploads paused chip beside Upload media.\n- Create images with AI. Create with AI, beside Upload media, draws an illustration, icon, pattern or logo mark as an SVG from a description, or, where photos are on, makes a photo, a piece of art such as a watercolor or a 3D render, or a design asset such as a banner or a social post graphic, and adds it to the folder you have open with alt text. Each picture is stored like an upload and costs AI credits — see Create images with AI.\n- Web fonts (WOFF2) are accepted too. The usual way to add one is Upload your own font in the theme editor, which checks the font\'s license, converts a TTF, OTF or WOFF to WOFF2 and stores it here.\n- Documents and archives are stored and served exactly as you uploaded them — nothing is opened, extracted or converted. Macro-enabled Office files (.docm, .xlsm, .pptm) are not accepted.\n- Rename, replace the file behind an asset, and edit images in place. Replace works for images, PDFs, archives and documents alike, and for video once video uploads resume — it is available from the asset\'s details drawer and straight from the card\'s overflow menu, and it keeps the asset\'s link, folder, tags, alt text, custom fields and sharing exactly as they were. Swapping one kin'
|
|
5872
5984
|
},
|
|
5873
5985
|
{
|
|
5874
5986
|
path: '/content-and-data/media/overview',
|
|
@@ -8689,7 +8801,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
8689
8801
|
title: 'Funnels',
|
|
8690
8802
|
heading: 'What counts as a visit, and its limits',
|
|
8691
8803
|
anchor: '#what-is-a-visit',
|
|
8692
|
-
text: 'A visit is one browser tab on your site, until it is closed. When a visitor\'s first step is recorded, their browser makes up a random visit id and keeps it in that tab\'s session storage — not a cookie, not shared with other sites, never derived from their address or device. Every step that tab takes is recorded under that id.\nThat means:\n- Two tabs are two visits, and a visitor who closes the tab and comes back tomorrow is a new visit. Nothing links one visit to another, or to a person — unless the visitor identifies themselves by submitting a form (see below).\n- Consent comes first. The visit id leaves the browser, so it is analytics storage: a step is recorded only once the visitor\'s cookie consent allows analytics. A visitor who declines, opts out or sends Global Privacy Control is never recorded, and steps taken before someone accepts are not recorded later. Funnels therefore count fewer visits than the traffic panel, and in regions where your site asks first, noticeably fewer.\n- Recording starts with your first funnel. A site with no funnels records nothing. Saving the first funnel turns recording on, and earlier visits cannot be measured. Deleting the last funnel turns it off.\n- Up to 60 steps per visit are recorded; a very long visit stops adding steps after that.\n- Visits are kept for 90 days and then deleted automatically.\n- Very busy sites: a result reads at most the 20,000 most recent visits in the range and says so when it stops there.\n- Visits from preview builds and from browsers marked as your own traffic are not recorded, the same as page views.'
|
|
8804
|
+
text: 'A visit is one browser tab on your site, until it is closed. When a visitor\'s first step is recorded, their browser makes up a random visit id and keeps it in that tab\'s session storage — not a cookie, not shared with other sites, never derived from their address or device. Every step that tab takes is recorded under that id.\nThat means:\n- Two tabs are two visits, and a visitor who closes the tab and comes back tomorrow is a new visit. Nothing links one visit to another, or to a person — unless the visitor identifies themselves by submitting a form (see below).\n- Consent comes first. The visit id leaves the browser, so it is analytics storage: a step is recorded only once the visitor\'s cookie consent allows analytics. A visitor who declines, opts out or sends Global Privacy Control is never recorded, and steps taken before someone accepts are not recorded later. Funnels therefore count fewer visits than the traffic panel, and in regions where your site asks first, noticeably fewer.\n- Recording starts with your first funnel. A site with no funnels records nothing. Saving the first funnel turns recording on, and earlier visits cannot be measured. Deleting the last funnel turns it off. A draft funnel never turns recording on.\n- Up to 60 steps per visit are recorded; a very long visit stops adding steps after that.\n- Visits are kept for 90 days and then deleted automatically.\n- Very busy sites: a result reads at most the 20,000 most recent visits in the range and says so when it stops there.\n- Visits from preview builds and from browsers marked as your own traffic are not recorded, the same as page views.'
|
|
8693
8805
|
},
|
|
8694
8806
|
{
|
|
8695
8807
|
path: '/marketing-and-automation/analytics/funnels',
|
|
@@ -8703,7 +8815,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
8703
8815
|
title: 'Funnels',
|
|
8704
8816
|
heading: 'Create a funnel',
|
|
8705
8817
|
anchor: '#create',
|
|
8706
|
-
text: '1. Open your site\'s Analytics page and find Funnels.\n2. Select New funnel, name it, and add steps with the pickers.\n3. Save. Saving needs a site admin or editor.\nCreate with AI {#create-with-ai}\nWhen Aglyn AI is available to your workspace, Create with AI turns a description — "people who read a blog post, then booked a consultation" — into a draft funnel. The draft uses only the pages, forms, services, products and bars or popups your site has; a step the model suggests that your site does not have is left out and listed. Nothing is saved until you review the draft and select Save. It uses AI credits like other generation.'
|
|
8818
|
+
text: '1. Open your site\'s Analytics page and find Funnels.\n2. Select New funnel, name it, and add steps with the pickers.\n3. Save. Saving needs a site admin or editor.\nCreate with AI {#create-with-ai}\nWhen Aglyn AI is available to your workspace, Create with AI turns a description — "people who read a blog post, then booked a consultation" — into a draft funnel. The draft uses only the pages, forms, services, products and bars or popups your site has; a step the model suggests that your site does not have is left out and listed. Nothing is saved until you review the draft and select Save. It uses AI credits like other generation.\nDraft funnels {#drafts}\nWhen Aglyn AI builds part of your site from one request, it can set a funnel up too. That funnel arrives as a draft, marked Draft on the Funnels card, and changes nothing on your live site: it does not turn recording on, it has no results, Insights does not read it, and it cannot be followed up on. Its steps use only pages your site already publishes, and forms, services, products or bars and popups your site has — including ones the same request made.\nSelect the draft to review its steps, edit it if you like (it stays a draft), then select Activate. Activating checks every step against your site again, makes the funnel live and turns recording on if it was off, so it counts visits from then on. Activating needs a site admin or editor. A draft counts towards the 20 funnels a site keeps.'
|
|
8707
8819
|
},
|
|
8708
8820
|
{
|
|
8709
8821
|
path: '/marketing-and-automation/analytics/funnels',
|
|
@@ -9020,6 +9132,62 @@ export const DOCS_SECTION_INDEX = [
|
|
|
9020
9132
|
anchor: '#start-from-a-brief-instead',
|
|
9021
9133
|
text: 'Generate an email with AI writes a draft design from a description — blocks, copy, and three subject lines to choose between — which you then edit here like any other.'
|
|
9022
9134
|
},
|
|
9135
|
+
{
|
|
9136
|
+
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
9137
|
+
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
9138
|
+
heading: '',
|
|
9139
|
+
anchor: '',
|
|
9140
|
+
text: 'Email platforms: Mailchimp, Klaviyo and Omnisend\nIf you already send newsletters or automated flows from Mailchimp, Klaviyo or Omnisend, connect your account to a site and Aglyn keeps it in step with the site\'s contacts:\n- Contacts go out. Everyone the site holds that it may send marketing to is added or updated in your account, with their name, phone number, tags, lifetime value and order count. The first sync copies everyone; after that, only the people who changed.\n- Unsubscribes go both ways. Someone who unsubscribes from your site\'s emails is unsubscribed in your account. Someone who unsubscribes in Mailchimp, Klaviyo or Omnisend is unsubscribed from the site\'s own campaigns too, and your contact\'s record says where they left.\n- Orders go to Klaviyo and Omnisend. Started checkouts, paid orders (with each product), fulfillments with tracking, refunds and cancellations, for the abandoned-cart and post-purchase flows those platforms build on.\nEmail platform connections come with every plan that includes the CRM, at no extra cost.'
|
|
9141
|
+
},
|
|
9142
|
+
{
|
|
9143
|
+
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
9144
|
+
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
9145
|
+
heading: 'Connect a platform',
|
|
9146
|
+
anchor: '#connect',
|
|
9147
|
+
text: '1. Open the site, then Setup. Scroll to Email platforms.\n2. On the platform\'s card, select Connect.\n3. Paste your API key, then Check and connect. Aglyn checks the key with the platform before it saves it, and stores it encrypted; it is never shown again.\n- Mailchimp: in Mailchimp, Profile → Extras → API keys → Create a key. It ends in your data center, like -us21.\n- Klaviyo: in Klaviyo, Settings → API keys → Create private API key, with full access to Profiles, Lists, Subscriptions and Events.\n- Omnisend: in Omnisend, Store settings → API keys → Create API key, with access to Contacts and Events.\n4. For Mailchimp and Klaviyo, choose the audience or list contacts go into. If your account has only one, it is chosen for you.\nThe first sync starts within 15 minutes. Sync now runs it straight away.\nOnly a site admin can connect, change or disconnect a platform; editors can see the card and its log.'
|
|
9148
|
+
},
|
|
9149
|
+
{
|
|
9150
|
+
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
9151
|
+
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
9152
|
+
heading: 'Who is sent, and as what',
|
|
9153
|
+
anchor: '#who-is-sent',
|
|
9154
|
+
text: 'Each person is sent with the answer the site\'s own campaigns would give them:\n| On the site | In your platform |\n| Gave consent to marketing (or is covered by your workspace\'s consent policy), and has not unsubscribed, bounced or complained | Subscribed — but only when they are new to your platform. Someone who unsubscribed there is never subscribed again by Aglyn. |\n| Unsubscribed, declined, bounced, complained or was erased | Unsubscribed |\n| No consent on record that the site may use | Not sent at all. Aglyn does not copy an address it has no standing to market to. |\nOrder events are sent only for people the site may market to, and an event more than a week old is not sent.'
|
|
9155
|
+
},
|
|
9156
|
+
{
|
|
9157
|
+
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
9158
|
+
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
9159
|
+
heading: 'When someone unsubscribes in your platform',
|
|
9160
|
+
anchor: '#unsubscribes-from-the-platform',
|
|
9161
|
+
text: 'Every sync reads back who unsubscribed in your account since the last one, before it sends anything, and adds them to the site\'s unsubscribe list. The site\'s campaigns, sequences and automated emails stop for them, and their contact record shows Unsubscribed in Mailchimp (or Klaviyo, or Omnisend).\nIf they later resubscribe in that same platform, the next sync lifts that unsubscribe again. Nothing else is lifted that way: an unsubscribe the person made on your site, a bounce, a complaint or an unsubscribe another platform reported stays in place.\nOmnisend reports unsubscribes but not resubscribes, so a return in Omnisend does not lift the site\'s unsubscribe.'
|
|
9162
|
+
},
|
|
9163
|
+
{
|
|
9164
|
+
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
9165
|
+
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
9166
|
+
heading: 'Settings',
|
|
9167
|
+
anchor: '#settings',
|
|
9168
|
+
text: '- Audience / List — where contacts go. Choosing a different one copies everyone into it on the next sync.\n- Tag — every contact this site sends carries it, so you can build a segment of them. Aglyn unless you change it.\n- Sync contacts and unsubscribes — turn off to stop contacts and consent syncing while keeping the connection.\n- Send orders and started checkouts — Klaviyo and Omnisend only.\n- Pause — stops the sync until you Resume. Orders that happen while it is paused are not sent later.'
|
|
9169
|
+
},
|
|
9170
|
+
{
|
|
9171
|
+
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
9172
|
+
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
9173
|
+
heading: 'The sync log, and when something goes wrong',
|
|
9174
|
+
anchor: '#sync-log',
|
|
9175
|
+
text: 'Each connected platform has a sync log under its card: what each run sent and read back, and every error, newest first.\n- Syncing — working normally; it runs about every 15 minutes.\n- Stopped — the platform failed many times in a row (it was retried with growing waits). Fix the cause shown, then Sync now.\n- Connect again — the platform refused the key (it was deleted, or its access changed). Create a new key and connect again; your settings are kept.\nWhen the platform asks Aglyn to slow down, the sync waits as long as it was told and carries on — nothing is lost. A person the platform will not take (for example an address it has permanently deleted) is skipped and named in the log, and the rest go on.'
|
|
9176
|
+
},
|
|
9177
|
+
{
|
|
9178
|
+
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
9179
|
+
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
9180
|
+
heading: 'Disconnect',
|
|
9181
|
+
anchor: '#disconnect',
|
|
9182
|
+
text: 'Disconnect deletes the stored key, the log and any orders not yet sent. Nothing more is sent to the platform. Contacts already in your account stay there, and unsubscribes already read back stay on the site\'s list.'
|
|
9183
|
+
},
|
|
9184
|
+
{
|
|
9185
|
+
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
9186
|
+
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
9187
|
+
heading: 'One-off imports',
|
|
9188
|
+
anchor: '#one-off-imports',
|
|
9189
|
+
text: 'To bring a list in once, without connecting — for example an old Mailchimp audience export — use Import on the site\'s contacts or suppressions instead.'
|
|
9190
|
+
},
|
|
9023
9191
|
{
|
|
9024
9192
|
path: '/marketing-and-automation/email-campaigns/generate-with-ai',
|
|
9025
9193
|
title: 'Generate an email campaign with AI',
|
|
@@ -9914,7 +10082,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
9914
10082
|
title: 'Signing In & Sessions',
|
|
9915
10083
|
heading: 'Automatic sign-out after inactivity',
|
|
9916
10084
|
anchor: '#automatic-sign-out-after-inactivity',
|
|
9917
|
-
text: 'For security, an idle console session expires after
|
|
10085
|
+
text: 'For security, an idle console session expires after 2 hours of no activity (in any open tab, on any of your workspace subdomains). When that happens you\'re returned to the sign-in page, and the page you were on is preserved — after signing back in you resume exactly where you left off.\nActivity means any interaction: pointer movement, typing, scrolling, or touching. Active work in one tab keeps your other tabs alive too.\nInactivity is the only thing that ends a session early: a background tab losing its own authentication (a laptop waking from sleep, a suspended tab, a network blip) recovers silently from the shared session instead of signing you out everywhere. Only an explicit sign-out — yours, or a staff-initiated revocation — retires the shared session.\nSelf-hosting The idle window is configurable via the NEXTPUBLICAUTHIDLETIMEOUTMINUTES environment variable (default 120; set 0 to disable).'
|
|
9918
10086
|
},
|
|
9919
10087
|
{
|
|
9920
10088
|
path: '/workspace-and-billing/signing-in-and-sessions',
|