diff --git a/i18n/en.json b/i18n/en.json index 4063033..55114f4 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -427,8 +427,8 @@ "headSlot": "slot", "headBackups": "daily backups", "notes": [ - "Premium (200€) includes one free Micro workspace.", - "Slots pay for the machine only. Agents use NaN inference only on an inference plan (70€ or 200€).", + "The premium plan includes one free Micro workspace.", + "Slots pay for the machine only. Agents use NaN inference only if your plan includes it.", "Backups are optional: one snapshot a day, kept 7 days, restore it yourself.", "Monthly, billed in euros. Cancel a slot anytime." ], diff --git a/i18n/es.json b/i18n/es.json index f7eb3cc..b0275b8 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -427,8 +427,8 @@ "headSlot": "slot", "headBackups": "backups diarios", "notes": [ - "Premium (200€) incluye un workspace Micro gratis.", - "Los slots pagan solo la máquina. Los agentes usan la inferencia de NaN solo con un plan de inferencia (70€ o 200€).", + "El plan premium incluye un workspace Micro gratis.", + "Los slots pagan solo la máquina. Los agentes usan la inferencia de NaN solo si tu plan la incluye.", "Los backups son opcionales: una instantánea al día, guardada 7 días, y la restauras tú.", "Mensual, se factura en euros. Cancela un slot cuando quieras." ], diff --git a/public/docs/workspaces/phone-03-add-ssh-key.webp b/public/docs/workspaces/phone-03-add-ssh-key.webp index a5799b9..811c5df 100644 Binary files a/public/docs/workspaces/phone-03-add-ssh-key.webp and b/public/docs/workspaces/phone-03-add-ssh-key.webp differ diff --git a/src/content/docs-es/workspaces.mdx b/src/content/docs-es/workspaces.mdx index 8863eff..2f79e5d 100644 --- a/src/content/docs-es/workspaces.mdx +++ b/src/content/docs-es/workspaces.mdx @@ -18,15 +18,9 @@ Todo se gestiona desde [cloud.nan.builders/workspaces](https://cloud.nan.builder ## Quién puede tener uno -Cualquier **miembro de pago** de NaN puede comprar slots de workspace: comunidad (14,99€), inferencia (70€) y premium (200€). +Cualquier **miembro de pago** de NaN puede comprar slots de workspace. El plan Premium incluye **un workspace gratis** (Micro: 1 vCPU, 2 GiB de RAM, 10 GiB de disco). -| Tu plan | Workspace gratis | Puede comprar slots | Los agentes usan la inferencia de NaN | -|---|---|---|---| -| Comunidad, 14,99€ | No | Sí | No | -| Inferencia, 70€ | No | Sí | Sí | -| Premium, 200€ | **Uno, incluido** | Sí | Sí | - -Un slot paga **solo la máquina**. No incluye inferencia: los agentes de tu workspace llaman a los modelos de NaN solo si tu membresía es un plan de inferencia (70€ o 200€). Con el plan de comunidad puedes usar el workspace igualmente como máquina de desarrollo y apuntar los agentes a cualquier proveedor que ya tengas. +Un slot paga **solo la máquina**. No incluye inferencia: los agentes de tu workspace llaman a los modelos de NaN solo si tu membresía incluye inferencia. Sin ella puedes usar el workspace igualmente como máquina de desarrollo y apuntar los agentes a cualquier proveedor que ya tengas. ## Tamaños y precios @@ -131,7 +125,9 @@ Selecciona la clave que acabas de crear. Puedes enviártela por email o copiar l Comparte y pega solo la clave **pública**. La clave privada nunca sale de tu móvil. - +En esa misma pestaña tienes también, en campos separados que puedes copiar, los datos que necesita tu app de SSH: **Username**, **Hostname** y **Port**. Los usarás en los pasos siguientes. + + ### Crea un host en Termius @@ -146,7 +142,7 @@ Ve a **Hosts** y añade un host nuevo. | Label | Lo que quieras | | IP or Hostname | Siempre `ssh.nan.builders` | | Port | `30222` | -| Username | Lo que va antes de la `@` en el comando SSH de tu workspace, en la pestaña **SSH keys** (el panel también puede mostrarlo como Username) | +| Username | Cópialo del campo **Username** de la pestaña **SSH keys** | | Key (SSH ID, Key, Certificate, FIDO2) | La clave que generaste antes | Deja todo lo demás como está: **Use SSH** activado y **Use Mosh** desactivado. La conexión solo funciona por SSH. @@ -270,7 +266,7 @@ No. Cada workspace es una máquina dedicada y aislada, con su CPU, su memoria y
-No. Un slot paga la máquina. Los agentes usan los modelos de NaN solo si tu membresía es un plan de inferencia (70€ o 200€). Con el plan de comunidad puedes instalar los agentes igualmente y conectarlos a otro proveedor. +No. Un slot paga la máquina. Los agentes usan los modelos de NaN solo si tu membresía incluye inferencia. Sin ella puedes instalar los agentes igualmente y conectarlos a otro proveedor.
@@ -288,7 +284,7 @@ No sobre la marcha. Compra un slot del tamaño nuevo, crea un workspace en él,
-Sí. Los slots de workspace se facturan en euros, así que el portal pasa primero tu plan de comunidad a euros (14,99€ / mes) y luego te deja comprar. Te lo avisa antes de cobrar nada. +Sí. Los slots de workspace se facturan en euros, así que el portal pasa primero tu plan a euros y luego te deja comprar. Te lo avisa antes de cobrar nada.
diff --git a/src/content/docs/workspaces.mdx b/src/content/docs/workspaces.mdx index 9ad10fe..6de6ac4 100644 --- a/src/content/docs/workspaces.mdx +++ b/src/content/docs/workspaces.mdx @@ -18,15 +18,9 @@ Everything is managed from [cloud.nan.builders/workspaces](https://cloud.nan.bui ## Who can get one -Any **paying member** of NaN can buy workspace slots: community (14,99€), inference (70€) and premium (200€). +Any **paying member** of NaN can buy workspace slots. The Premium plan includes **one free workspace** (Micro: 1 vCPU, 2 GiB RAM, 10 GiB disk). -| Your plan | Free workspace | Can buy slots | Agents use NaN inference | -|---|---|---|---| -| Community, 14,99€ | No | Yes | No | -| Inference, 70€ | No | Yes | Yes | -| Premium, 200€ | **One, included** | Yes | Yes | - -A slot pays for the **machine only**. It does not include inference: the agents in your workspace call NaN models only if your membership is an inference plan (70€ or 200€). On the community plan you can still use the workspace as a dev box, and point the agents at any provider you already have. +A slot pays for the **machine only**. It does not include inference: the agents in your workspace call NaN models only if your membership includes inference. Without it you can still use the workspace as a dev box, and point the agents at any provider you already have. ## Sizes and prices @@ -131,7 +125,9 @@ Select the key you just created. You can email it to yourself or copy the **publ Share and paste only the **public** key. The private key never leaves your phone. - +The same tab also shows the values your SSH app needs as separate fields you can copy: **Username**, **Hostname** and **Port**. You will use them in the next steps. + + ### Create a host in Termius @@ -146,7 +142,7 @@ Go to **Hosts** and add a new host. | Label | Anything you like | | IP or Hostname | Always `ssh.nan.builders` | | Port | `30222` | -| Username | The part before the `@` in your workspace's SSH command, in the **SSH keys** tab (the dashboard may also show it as Username) | +| Username | Copy it from the **Username** field in the **SSH keys** tab | | Key (SSH ID, Key, Certificate, FIDO2) | The key you generated before | Leave everything else as it is: **Use SSH** on and **Use Mosh** off. The connection only works over SSH. @@ -270,7 +266,7 @@ No. Each workspace is a dedicated, isolated machine with its own CPU, memory and
-No. A slot pays for the machine. The agents use NaN models only if your membership is an inference plan (70€ or 200€). On the community plan you can still install the agents and connect them to another provider. +No. A slot pays for the machine. The agents use NaN models only if your membership includes inference. Without it you can still install the agents and connect them to another provider.
@@ -288,7 +284,7 @@ Not in place. Buy a slot of the new size, create a workspace on it, copy your da
-Yes. Workspace slots are billed in euros, so the portal first moves your community plan to euros (14,99€ / month) and then lets you buy. It tells you before charging anything. +Yes. Workspace slots are billed in euros, so the portal first moves your plan to euros and then lets you buy. It tells you before charging anything.
diff --git a/src/tests/landing/pricing.test.ts b/src/tests/landing/pricing.test.ts index 69488db..9ee2e7e 100644 --- a/src/tests/landing/pricing.test.ts +++ b/src/tests/landing/pricing.test.ts @@ -249,7 +249,9 @@ describe.each(locales)('Pricing copy — workspaces (%s)', (locale) => { test('the workspaces block says slots do not include inference and premium has one free', () => { const notes = tArr('nan.pricing.workspaces.notes', locale).join(' '); - expect(notes).toMatch(/Premium \(200€\)/); + expect(notes).toMatch(/(premium plan includes one free Micro workspace|plan premium incluye un workspace Micro gratis)/i); + // No plan enumeration with prices in the workspaces notes (owner, 2026-10-09). + expect(notes).not.toMatch(/70€|200€/); expect(notes).toMatch(/(machine only|solo la máquina)/); expect(notes).toMatch(/euros/); }); diff --git a/src/tests/layouts/workspacesDocs.test.ts b/src/tests/layouts/workspacesDocs.test.ts index fe74cc0..31f16e6 100644 --- a/src/tests/layouts/workspacesDocs.test.ts +++ b/src/tests/layouts/workspacesDocs.test.ts @@ -128,10 +128,23 @@ describe.each(Object.entries(pages))('workspaces guide (%s)', (locale, page) => expect(tableRows(body)).toEqual(expectedRows); }); + test('says any paying member can buy slots, without listing the plans and their prices', () => { + expect(flat).toMatch( + locale === 'en' + ? /Any \*\*paying member\*\* of NaN can buy workspace slots\./ + : /Cualquier \*\*miembro de pago\*\* de NaN puede comprar slots de workspace\./, + ); + // Owner decision (2026-10-09): no plan enumeration with prices on this page. + expect(body).not.toMatch(/14,99€|\b70€|\b200€/); + expect(body).not.toMatch(/\| (Community|Comunidad|Inference|Inferencia)\b/); + }); + test('the free workspace is the premium benefit, Micro sized', () => { - expect(flat).toMatch(/\| (Premium), 200€ \| \*\*(One, included|Uno, incluido)\*\* \|/); - expect(flat).toMatch(/\| (Inference|Inferencia), 70€ \| No \|/); - expect(flat).toMatch(/\| (Community|Comunidad), 14,99€ \| No \|/); + expect(flat).toMatch( + locale === 'en' + ? /The Premium plan includes \*\*one free workspace\*\*/ + : /El plan Premium incluye \*\*un workspace gratis\*\*/, + ); expect(flat).toContain(locale === 'en' ? '1 vCPU, 2 GiB RAM, 10 GiB disk' : '1 vCPU, 2 GiB de RAM, 10 GiB de disco'); }); @@ -201,6 +214,13 @@ describe.each(Object.entries(pages))('workspaces guide (%s)', (locale, page) => expect(flat).toContain('https://termius.com/download'); expect(flat).toContain('`ssh.nan.builders`'); expect(flat).toContain('`30222`'); + // The SSH keys tab shows Username / Hostname / Port as copyable fields now. + expect(flat).toMatch( + locale === 'en' + ? /Copy it from the \*\*Username\*\* field in the \*\*SSH keys\*\* tab/ + : /Cópialo del campo \*\*Username\*\* de la pestaña \*\*SSH keys\*\*/, + ); + expect(flat).not.toMatch(/may also show it as Username|también puede mostrarlo como Username/); expect(flat).toMatch(/Use Mosh\*\* (off|desactivado)/); expect(body).toContain('```bash\nherdr\n```'); expect(flat).toContain('https://herdr.dev');