feat(content): launch documentation, About page, and copy corrections #131

Sammanfogat
supernaut sammanfogade 7 incheckningar från feat/launch-content in i main 2026-08-01 11:53:49 +00:00
Ägare

Content and copy work ahead of the public announcement. Four commits, each reviewable on its own.

Merge order matters: #130 (the false-DPA fix) first — it touches some of the same files and is
the one that must not wait.

1. Documentation and FAQ for Actions and accounts

The knowledge base was one guide (Renovate) and ten FAQ items about country eligibility and Renovate.
Nothing explained CI or how accounts work — the two things a visitor evaluating the service asks
first. Adds two guides and eleven FAQ items, Swedish-first with English twins.

  • Actions and runners: runs-on: ci, the single-use VM per job and what it enables (building
    images with the machine's own tooling, no docker socket to mount), what each account type gets, and
    the real limits — four concurrent jobs, one hour per job, 30-day log retention, no crypto-mining.
  • Accounts and signing in: the four-step sign-up, why sign-in happens on Gitborg Auth, the passkey
    recommendation, the three account types, and how to export or delete.

Swedish domain terms come from Forgejo's own sv-SE locale rather than being invented: körare for
runner, arbetsflöde for workflow, and Actions kept in English, which is how the application
renders it.

Mission-led About page: the four principles in priority order, the openness claim with its honest
limits, a pointer to the public decision record, and the operator named.

The footer drops the copyright line and the "Created by" byline. The Principle-1 tagline stays — it is
a governed fixed phrase and remains byte-identical to its two sibling surfaces. footer.builtOn is
renamed footer.sovereignty now that it carries only the tagline, and the dead footer.rights key is
removed.

3. Launch-blocking copy errors

  • The Terms misstated Forgejo's licence as AGPL-3.0. It is GPL-3.0-or-later; AGPL-3.0 is
    Bitborg's own code, and ui.ts already said so correctly on the same site.
  • The trial terms said the opposite of what was meant: "will continue until 31 August 2026 if
    paid subscriptions are launched before then" — backwards, since launching paid sooner would end the
    trial. Now "at least until", matching the sign-up page's floor framing. The control panel asserted a
    flat "Ends 31 August 2026", contradicting both; aligned. TRIAL_TERMS_VERSION bumped alongside, as
    its comment requires, so stored consent records point at what was actually shown.
  • Two FAQ answers disproved each other. One claimed nothing about your code or dependencies goes
    to any external service; the neighbouring answer said Renovate fetches release notes from
    github.com. The latter is correct — version checking necessarily reveals which packages you use — so
    the privacy answer now separates the two: code never leaves Bitborg, while version and changelog
    lookups do reach public registries and expose package names, with no token of ours attached.
  • Three legal pages shipped no meta description, so social cards fell back to the site tagline.
    The strings existed and simply were not passed to LegalLayout.
  • No /.well-known/security.txt on a service with a dedicated security page. Added per RFC 9116.
  • /trial-terms is now linked from the footer. Its only inbound link was the sign-up checkbox, for a
    document users tick a box to accept.

4. Organisations are a paid add-on

Follows the infrastructure change in bitborg-infra#296, where no tier grants organisation creation
any more. The copy claimed otherwise in three places, including trial terms §1 promising "the ability
to create organisations" — a term users accept by ticking a box, which could not be withdrawn silently.

The Terms now describe organisations as an add-on, keeping the impersonation and reclamation rules
that govern any organisation which exists. The trial is once again described as matching a paid
account, because it does: neither includes organisations, so singling out the trial would have been a
fresh inaccuracy.

Checks

pnpm check 0 errors, mdlint 0 issues, eslint/stylelint clean, and the content-style language
detector clean across all 33 changed files.

Known gap, not fixed here

/docs/<slug> and any future /news/<slug> are absent from the sitemap — @astrojs/sitemap
cannot enumerate an SSR dynamic route, which I confirmed against a built sitemap-0.xml
(/docs/renovate is missing today). So the two new guides are not discoverable via the sitemap. Worth
fixing with customPages generated from the content directories, but it is a separate change.

Content and copy work ahead of the public announcement. Four commits, each reviewable on its own. **Merge order matters:** #130 (the false-DPA fix) first — it touches some of the same files and is the one that must not wait. ## 1. Documentation and FAQ for Actions and accounts The knowledge base was one guide (Renovate) and ten FAQ items about country eligibility and Renovate. Nothing explained CI or how accounts work — the two things a visitor evaluating the service asks first. Adds two guides and eleven FAQ items, Swedish-first with English twins. - **Actions and runners:** `runs-on: ci`, the single-use VM per job and what it enables (building images with the machine's own tooling, no docker socket to mount), what each account type gets, and the real limits — four concurrent jobs, one hour per job, 30-day log retention, no crypto-mining. - **Accounts and signing in:** the four-step sign-up, why sign-in happens on Gitborg Auth, the passkey recommendation, the three account types, and how to export or delete. Swedish domain terms come from Forgejo's own `sv-SE` locale rather than being invented: *körare* for runner, *arbetsflöde* for workflow, and **Actions** kept in English, which is how the application renders it. ## 2. About page, and the footer Mission-led About page: the four principles in priority order, the openness claim *with* its honest limits, a pointer to the public decision record, and the operator named. The footer drops the copyright line and the "Created by" byline. The Principle-1 tagline stays — it is a governed fixed phrase and remains byte-identical to its two sibling surfaces. `footer.builtOn` is renamed `footer.sovereignty` now that it carries only the tagline, and the dead `footer.rights` key is removed. ## 3. Launch-blocking copy errors - **The Terms misstated Forgejo's licence** as AGPL-3.0. It is GPL-3.0-or-later; AGPL-3.0 is Bitborg's own code, and `ui.ts` already said so correctly on the same site. - **The trial terms said the opposite of what was meant:** "will continue until 31 August 2026 *if* paid subscriptions are launched before then" — backwards, since launching paid sooner would end the trial. Now "at least until", matching the sign-up page's floor framing. The control panel asserted a flat "Ends 31 August 2026", contradicting both; aligned. `TRIAL_TERMS_VERSION` bumped alongside, as its comment requires, so stored consent records point at what was actually shown. - **Two FAQ answers disproved each other.** One claimed nothing about your code or dependencies goes to any external service; the neighbouring answer said Renovate fetches release notes from github.com. The latter is correct — version checking necessarily reveals which packages you use — so the privacy answer now separates the two: code never leaves Bitborg, while version and changelog lookups do reach public registries and expose package names, with no token of ours attached. - **Three legal pages shipped no meta description**, so social cards fell back to the site tagline. The strings existed and simply were not passed to `LegalLayout`. - **No `/.well-known/security.txt`** on a service with a dedicated security page. Added per RFC 9116. - `/trial-terms` is now linked from the footer. Its only inbound link was the sign-up checkbox, for a document users tick a box to accept. ## 4. Organisations are a paid add-on Follows the infrastructure change in bitborg-infra#296, where no tier grants organisation creation any more. The copy claimed otherwise in three places, including trial terms §1 promising "the ability to create organisations" — a term users accept by ticking a box, which could not be withdrawn silently. The Terms now describe organisations as an add-on, keeping the impersonation and reclamation rules that govern any organisation which exists. The trial is once again described as matching a paid account, because it does: neither includes organisations, so singling out the trial would have been a fresh inaccuracy. ## Checks `pnpm check` 0 errors, `mdlint` 0 issues, eslint/stylelint clean, and the content-style language detector clean across all 33 changed files. ## Known gap, not fixed here `/docs/<slug>` and any future `/news/<slug>` are **absent from the sitemap** — `@astrojs/sitemap` cannot enumerate an SSR dynamic route, which I confirmed against a built `sitemap-0.xml` (`/docs/renovate` is missing today). So the two new guides are not discoverable via the sitemap. Worth fixing with `customPages` generated from the content directories, but it is a separate change.
supernaut lade till 4 incheckningar 2026-08-01 00:07:30 +00:00
The knowledge base held one guide (Renovate) and ten FAQ items covering only
country eligibility and Renovate. Nothing explained CI or how accounts work,
which are the two things a visitor evaluating the service asks first.

Adds two guides and eleven FAQ items, Swedish-first with English twins:

- Actions and runners: the `runs-on: ci` label, the single-use VM per job and
  what that allows (building images with the machine's own tooling, no docket
  socket), what is included per account type, and the real limits — four
  concurrent jobs, one hour per job, 30-day log retention, no crypto-mining.
- Accounts and signing in: the four-step sign-up, why sign-in happens on
  Gitborg Auth, the passkey recommendation, the three account types and what
  the trial becomes, and how to export or delete.

Swedish domain terms follow Forgejo's own sv-SE locale rather than being
invented: körare for runner, arbetsflöde for workflow, and Actions kept in
English, which is how the application renders it. Two new topic slugs give the
FAQ filter its chips.

Also adds an About page. It is mission-led — the four principles in priority
order, the openness claim with its honest limits, and a pointer to the public
decision record — and names the operator, which the footer no longer does.

Footer: drops the copyright line and the "Created by" byline, keeping the
Principle-1 tagline, which is a governed fixed phrase and stays byte-identical
to its two sibling surfaces. footer.builtOn is renamed footer.sovereignty now
that it carries only the tagline, and the unused footer.rights key is removed.
Five factual problems found while reviewing the site ahead of a public
announcement.

**The Terms misstated Forgejo's licence** as AGPL-3.0. Forgejo is
GPL-3.0-or-later; AGPL-3.0 is Gitborg's own code, and ui.ts already said so
correctly on the same site. An audience evaluating a Forgejo host notices
exactly this.

**The trial terms said the opposite of what was meant.** Section 2 read "The
trial period will continue until 31 August 2026 *if* paid subscriptions are
launched before then" — backwards, since launching paid sooner would end the
trial, not extend it. The sign-up page states the intended meaning as a floor
("tidigast"), so this now says "at least until", in both languages. The control
panel asserted a flat "Ends 31 August 2026", contradicting both; it now uses the
same floor framing.

TRIAL_TERMS_VERSION is bumped alongside the text, as its comment requires —
otherwise stored consent records would point at a version that no longer
matches what was shown.

**Two FAQ answers disproved each other.** One said nothing about your code or
dependencies is sent to any external service; the neighbouring changelog answer
said Renovate fetches release notes from github.com. The changelog answer is
the accurate one: checking for newer versions necessarily reveals which
packages a project uses. The privacy answer now distinguishes the two — code
never leaves Gitborg, while version and changelog lookups do reach public
registries and expose package names, with no token of ours attached.

**Three legal pages shipped no meta description**, so social cards fell back to
the site tagline. The strings already existed and simply were not passed to
LegalLayout; wired up for privacy, terms and trial-terms in both locales.

**No /.well-known/security.txt** on a service with a dedicated security page.
Added per RFC 9116, pointing at /security as the policy.

Also links /trial-terms from the footer. It is a document users tick a box to
accept, and its only inbound link was that checkbox.
Trial accounts are losing org creation in the infrastructure: org creation is
uncapped (Forgejo has no per-user limit) and every organisation is a separate
5 GiB quota owner, so a single self-service trial account could mint
organisations until the shared data volume filled — which would take Forgejo,
PostgreSQL and Kanidm down together, since all three sit on that volume.

The trial terms promised the opposite. Section 1 said the trial gives "the
ability to create organisations", in a document users tick a box to accept, so
withdrawing the capability without amending the text would have left the site
promising something the service no longer does.

Amends every surface that made the claim: trial terms section 1, the sign-up
page hint, and the accounts guide, in both languages. Organisation creation is
now stated as belonging to a paid account, available when paid accounts launch.

The trial keeps its hosting quota, Git LFS, packages and Actions, so what it is
actually for is unchanged.
fix(content): organisations are a paid add-on, not an account capability
Alla kontroller lyckades
ci / ci (pull_request) Successful in 1m16s
9c02dffadb
An organisation carries its own price, and the flow for buying one does not
exist yet, so no account tier grants organisation creation — the entitlement
group is empty and membership is granted per person instead.

The copy claimed otherwise in three places:

- The Terms said "You may create organisations to group repositories and
  members", stating a capability no account currently has. Reworded to describe
  organisations as an add-on, keeping the impersonation and reclamation rules
  that follow, which still govern any organisation that exists.
- The trial terms now say organisations are an add-on becoming available when
  paid accounts launch, rather than something belonging to a paid account.
- The trial is once again described as matching a paid account, because it does:
  neither includes organisations, so singling the trial out would have been the
  new inaccuracy.
supernaut lade till 1 incheckning 2026-08-01 08:52:54 +00:00
Merge remote-tracking branch 'origin/main' into feat/launch-content
Alla kontroller lyckades
ci / ci (pull_request) Successful in 1m12s
d42dd5b9f2
# Conflicts:
#	src/content/en/terms.md
#	src/content/sv/terms.md
supernaut tvångsskickade feat/launch-content från d42dd5b9f2
Alla kontroller lyckades
ci / ci (pull_request) Successful in 1m12s
till af35c0616f
Alla kontroller lyckades
ci / ci (pull_request) Successful in 1m13s
2026-08-01 09:10:57 +00:00
Jämför
supernaut lade till 3 incheckningar 2026-08-01 11:51:14 +00:00
supernaut sammanfogade incheckning c78cb205cb till main 2026-08-01 11:53:49 +00:00
supernaut tog bort grenen feat/launch-content 2026-08-01 11:53:49 +00:00
supernaut refererade denna ändringsförfrågan från en incheckning 2026-08-01 13:51:58 +00:00
supernaut refererade denna ändringsförfrågan från en incheckning 2026-08-03 09:41:50 +00:00
Logga in för att delta i denna konversation.
Inga granskare
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Förfallodatumet är ogiltigt eller utanför gränserna. Använd formatet "åååå-mm-dd".

Inget förfallodatum satt.

Beroenden

Inga beroenden satta

Referens
bitborg/bitborg-web!131
Ingen beskrivning angiven.