Skip to content

docs: add a Cloud tab and rename the User and Admin tabs - #344

Open
pat-s wants to merge 23 commits into
mainfrom
t3code/document-cloud-portal-tab
Open

pat-s wants to merge 23 commits into
mainfrom
t3code/document-cloud-portal-tab

Conversation

@pat-s

@pat-s pat-s commented Aug 29, 2026

Copy link
Copy Markdown
Member

Add a Cloud documentation tab and rename the other tabs to Usage and Self-Hosted.

AI Summary

Why

The docs had two tabs, User and Admin, and no documentation of the managed cloud at all.
The only portal described anywhere was the license portal under Pricing, which is a different product.

What changed

A third top-level sidebar group, Cloud, in the dev version.
It is customer-facing only: the platform-admin console is deliberately out of scope.

Page Covers
cloud/quickstart Sign in, create an organization, create an instance, open it, deploy with the CLI.
cloud/organizations/1-organizations Creating an organization, why the slug is immutable once instances exist, deletion.
cloud/organizations/2-members-and-roles Owner, admin, and member capabilities, the last-owner rule, invitations.
cloud/instances/1-create-an-instance Creation, the hostname scheme, first access, deploying to the instance.
cloud/instances/2-versions-and-upgrades Dynamic fleet updates versus a static pin, forward-only upgrades.
cloud/instances/3-custom-domains The CNAME to cloud.ricochet.rs, the OIDC callback, reverting to the default.
cloud/instances/4-instance-access Per-member assignment, who has access after creation.
cloud/instances/5-lifecycle What the status badge means and instance deletion.
cloud/instances/6-authentication Per-instance external OIDC setup, who can sign in, secret rotation, managed sign-in.
cloud/billing/1-subscription The trial, checkout, and what happens after a failed payment.
cloud/billing/2-metered-billing Apps and Compute Pool, when a change takes effect, sizing, limits.
cloud/billing/3-payment-methods Card and invoice.
cloud/audit-log Recorded categories, filtering, CSV and JSON export.

The dev landing page gains a third LinkCard pointing at the Cloud quickstart.

The pages describe the actions that need explaining and the places where the portal and the ricochet app could be confused for each other, such as portal access versus in-app roles.
Self-explanatory UI actions are not documented.

Tab renames

Renamed in dev.json and v0-18.json: User becomes Usage, and Admin becomes Self-Hosted.
Versions 0.14 to 0.17 keep the old labels, as frozen snapshots.
Only the sidebar labels change, so /user/... and /admin/... stay valid under every version and no external link breaks.

Admin is renamed rather than kept because the word is now overloaded: it names an organization role in the Cloud tab and an instance role in the Self-Hosted tab.
Self-Hosted matches the wording already used on the marketing site.

Sidebar tab sizing

Self-Hosted wrapped because the tabs split the sidebar into equal columns, giving each 73px while the label needs 79px at the selected tab's 600 weight, so it broke at its hyphen.

Each tab is now sized to its own label and the row is left-aligned, so all three fit side by side at Starlight's default 18.75rem sidebar and the short labels no longer carry wide empty margins.

Pages moved out of Self-Hosted

Two pages apply to any instance regardless of hosting, so they moved into Usage.

Page From To
Dependency Management Self-Hosted, under Technical Details
/dev/admin/technical/dependency-installation/
Usage, under Deployment
/dev/user/deployment/8-dependency-management/
User Roles Self-Hosted, under Configuration
/dev/admin/configuration/2-user-roles/
Usage, under Managing Content
/dev/user/managing-content/0-user-roles/

Dependency Management describes what happens on every deploy, so it is not a self-hosting topic at all.

User Roles describes what each role can do inside an instance, which is the same on either hosting.
Its default_role snippet is the one self-hosted part, and it is replaced by a link to the configuration docs.
The two inbound links to it, in admin/configuration/0-overview and admin/configuration/1-authentication, are repointed.

Both moves are dev only, so no published URL changes and no redirects are needed.

Everything else stays in Self-Hosted.
Audit logging, cookies, package repositories and deployment retention each document a RICOCHET_HOME path or a config key that only a self-hoster can reach.

Instance authentication

Organization owners and admins configure Authentication on an instance card to choose managed sign-in or an external OIDC provider.
Portal sign-in continues to use Ricochet Cloud accounts.

Native SAML, for both self-hosted instances and Cloud instances, is split out into a follow-up PR.

Sourcing

Written from ricochet/saas-portal at cd23370, reading the app/(cloud)/ routes, their server actions, db/schema/enums.ts, db/entitlements.ts, and lib/billing/.
Behaviour is described from the code rather than from that repository's docs/, which is stale in at least one place: docs/instance-routing.md still documents an instance-id suffix in the hostname that hostnameFor no longer emits.

Validation

  • bun astro build passes and starlightLinksValidator reports all internal links valid.
  • prek run -a passes every hook.
  • scripts/semantic-breaks.mjs leaves the Cloud pages untouched, so the one-sentence-per-line rule holds.
  • Confirmed in the built HTML that dev renders Usage, Self-Hosted, Cloud; v0-18 renders Usage, Self-Hosted; and v0-17 still renders User, Admin.
  • Tab sizing verified with Chromium at 1440, 1100, 900 and 390 wide, in all three selected states: every tab box is 27px, one line, no overflow.

pat-s added 2 commits August 29, 2026 10:12
Add a third top-level sidebar tab to the dev docs, covering ricochet
Cloud at cloud.ricochet.rs.

- Add a quickstart covering sign-in, organization creation, instance
  provisioning, and the handoff to the CLI.
- Document organizations, members and roles, and per-organization
  single sign-on.
- Document instance creation, versions and upgrades, custom domains,
  per-member access, and the lifecycle statuses.
- Document the trial, the metered Apps and Compute Pool selection, and
  statements and payment.
- Document the organization audit log and its CSV and JSON exports.
- Link the Cloud quickstart from the dev landing page.

Cover only what a customer can do. The platform-admin console is out
of scope.
Distinguish the self-hosted documentation from the new Cloud tab, in
dev and in 0.18. Older versions keep the Admin label as frozen
snapshots of what shipped.

Only the sidebar label changes, so every /admin/ URL stays valid.
@ricochet-bot

ricochet-bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Surge PR preview deployment succeeded. View it at https://ricochet-rs-docs-pr-344.surge.sh

@pat-s
pat-s marked this pull request as draft August 29, 2026 10:34
Name the tab after what it covers rather than after who reads it, so
it sits beside Self-Host and Cloud as one of three deployment-agnostic
sections.

Rename in dev and in 0.18. Older versions keep the User label as
frozen snapshots. Only the sidebar label changes, so every /user/ URL
stays valid.
@pat-s pat-s changed the title docs: add a Cloud tab and rename Admin to Self-Host docs: add a Cloud tab and rename the User and Admin tabs Aug 31, 2026
@pat-s
pat-s marked this pull request as ready for review August 31, 2026 14:45
pat-s added 6 commits August 31, 2026 16:28
Match the wording the marketing site already uses in its footer, and
keep the label a noun phrase like the Usage and Cloud tabs beside it.
Widen the sidebar to 22rem. The sidebar tabs share it in equal
columns, so at the previous 18.75rem each column was 73px while
"Self-Hosted" needs 79px, and the label broke at its hyphen onto a
second line.

Keep the labels on one line as well, so a hyphenated label can never
split even if a future label outgrows its column.
Dependency management describes what happens on every deploy, and user
roles describe what each role can do inside any instance. Both apply
whether the instance is self-hosted or on ricochet Cloud, so neither
belongs behind the Self-Hosted tab.

Leave the `default_role` knob in the configuration docs and link to it,
the way deployment retention already splits between the two tabs.

Audit logging, cookies, package repositories and deployment retention
stay put: each documents a file path or a config key that only a
self-hoster can reach.
Return the sidebar to Starlight's 18.75rem default. Widening it to
22rem treated the symptom: the tabs split the sidebar into equal
columns, so the short labels carried wide empty margins while
"Self-Hosted" was still too narrow and broke at its hyphen.

Size each tab to its own label instead and left-align the row, which
fits all three side by side at the default width and lines the tabs up
with the group headings below them. The row already carries no rule of
its own, only an underline on the active tab, so nothing depended on
the columns being equal.
Sizing each tab to its label left the hover and active backgrounds
hugging the text. Space the tabs with their own inline padding instead
of a gap between them, so a background reaches the neighbouring tab.

Use the same inset as the sidebar links below, which keeps the first
tab's label on their left edge.
Left-aligning the row left all the slack on one side, so the tabs sat
off-centre in the sidebar. Centre them, which splits the slack evenly.

Take the sidebar down from Starlight's 18.75rem default to 17.5rem
while doing so. The three tabs and the longest sidebar labels both
still fit on one line, and the content column gains the difference.
@pat-s

pat-s commented Sep 1, 2026

Copy link
Copy Markdown
Member Author

@JosiahParry After some relocations and theme tweaks I'm now happy with the new triple formed out of "Usage | Self-Hosted | Cloud".

I also reduced the sidebar width and spacing looks good to me now. "Self-hosted" is now purely explaining installation and technical details for the self-hosted option, no matter if community or licensed. Still need to check the new "Cloud" content pages but LMK if you're fine with the general direction here.

@JosiahParry

Copy link
Copy Markdown
Member

There's a lot of AI language in this still and needs to be gone through with afine tooth comb

@JosiahParry JosiahParry left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's spend our time tomorrow going through what needs to be documented for the portal and putting together an outline that we can write ourselves.

Docs need to be (mostly) human written.
These docs wouldn't help me if i read them.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this whole page is an AI smell.

I think, honestly, we don't need a whole page dedicatedd to "trial."

I think this page can be deleted

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The page covers subscriptions as a whole.

It should surely be reduced and more on point.

Comment on lines +146 to +149
## Native SAML 2.0

Configure `[auth.saml]` instead of `[auth.oidc]` and restart the instance:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be another PR

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this page needs to be rewritten by a human.

Metered billing.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this page needs to get rewritten too.

THis should probably just be called "payment methods"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed

Comment on lines +55 to +62
## What blocks a create

Provisioning requires an organization whose billing is in good standing.
A trialing or active organization can provision.
An organization that is past due, in its grace period, suspended, or cancelled cannot, and the create button explains why.

Instances are not a billing dimension and are never capped.
What you pay follows from the apps and Compute Pool you select in [Billing](/dev/cloud/billing/2-metered-resources/).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this needs to be rewritten

@pat-s

pat-s commented Sep 9, 2026

Copy link
Copy Markdown
Member Author

Let's spend our time tomorrow going through what needs to be documented for the portal and putting together an outline that we can write ourselves.
Docs need to be (mostly) human written.
These docs wouldn't help me if i read them.

This PR was still WIP state, I was going to rewrite most parts of it.
After I marked it as "ready for review", a lot of bad wording came in - forgot to revert the state.
My last comment was mainly "FYI" than a review request.

Agree this needs a lot of polish first!

@pat-s pat-s left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wording most be simplified and reduced.
In general, not every little action and section must be described in full detail. Most are fully clear in terms of scope and usage.

We should mainly focus on the disputable ones or ones that appear both in cloud and the ricochet app itself, to avoid and clear confusion.

Comment on lines +146 to +149
## Native SAML 2.0

Configure `[auth.saml]` instead of `[auth.oidc]` and restart the instance:

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The page covers subscriptions as a whole.

It should surely be reduced and more on point.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed

Comment thread src/content/docs/dev/cloud/instances/2-versions-and-upgrades.mdx Outdated
Comment thread src/content/docs/dev/cloud/instances/3-custom-domains.mdx Outdated
Comment thread src/content/docs/dev/cloud/organizations/1-organizations.mdx Outdated
Comment thread src/content/docs/dev/cloud/organizations/1-organizations.mdx Outdated
Comment thread src/content/docs/dev/cloud/organizations/1-organizations.mdx Outdated
Comment thread src/content/docs/dev/cloud/organizations/2-members-and-roles.mdx Outdated
Comment thread src/content/docs/dev/cloud/audit-log.mdx Outdated
Remove the native SAML sections from the self-hosted and instance authentication pages so they can land in their own PR.
Rename the billing pages to Subscription, Metered Billing, and Payment Methods and rewrite them.
Rewrite Create an Instance and remove the sections flagged in review.
Align the Markdown tables.
@pat-s

pat-s commented Sep 22, 2026

Copy link
Copy Markdown
Member Author

@JosiahParry Worked through all of it. This is now at a state which I am comfortable going with as the v1.
It's not perfect and a bit bare bones in some areas and might profit from some mermaid diagrams of images, but these could also be done in follow-up PRs.

Please have another check and merge if it seems good to you when no major rework is needed!

@pat-s
pat-s requested a review from JosiahParry September 22, 2026 08:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants