All checks were successful
CI / Lint, typecheck, test (push) Successful in 3m6s
CI / Build container images (push) Has been skipped
CD / Build and push images (push) Successful in 3m13s
CD / Deploy to Test (push) Successful in 12s
CD / Smoke tests against Test (push) Successful in 1m14s
CD / Promote to Int (push) Successful in 10s
CI / Auth e2e pack (push) Successful in 5m6s
CI / Import/export fidelity gate (push) Successful in 45s
The SPA now probes GET /setup on boot: while setup is pending it renders only the wizard at /setup, the login page (to resume a started wizard as the Site Admin), and a "setup pending" notice on every other route — without the regular chrome, whose pond/search queries would all 503. If the probe itself fails (offline reload), the app falls through to the normal routes. Once completed, /setup just goes home. The wizard walks six steps against the #80 api: welcome with language choice (drives i18n immediately and pre-fills the admin/instance locales), Site Admin account (signs in via the step-1 session cookie), instance basics, SMTP with live-test-before-save plus an explicit skip, registration mode, and a summary whose finish unlocks the app logged-in-ready. Every step validates through the shared Zod schemas before advancing; entered values live in the parent component, so Back preserves them, and re-submitting a step on a second forward pass just overwrites the same settings. A wizard someone else started shows a sign-in hand-off instead of dead admin-gated steps. New `setup` i18n namespace in de and en. Two #80 touch-ups fell out of verifying this end to end: the SMTP port's NaN case now maps to the translated required-message, and GET /setup's smtpConfigured uses `||` instead of `??` so the empty strings compose passes for unset vars fall through to the secret store. The e2e pack (setup.spec.ts) needs an instance where setup is still pending, so the CI job provisions a second api + static web against a virgin database on their own ports and runs the full wizard journey there, including the failing-relay path and both languages. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
77 lines
2.9 KiB
JSON
77 lines
2.9 KiB
JSON
{
|
|
"pending": {
|
|
"title": "Almost there",
|
|
"body": "This Dorfteich instance has not been set up yet. An administrator needs to run the first-run setup before anyone can use it.",
|
|
"start": "Start setup"
|
|
},
|
|
"progress": "Step {{current}} of {{total}}",
|
|
"back": "Back",
|
|
"next": "Continue",
|
|
"steps": {
|
|
"language": "Language",
|
|
"admin": "Admin account",
|
|
"instance": "Instance",
|
|
"smtp": "E-mail",
|
|
"registration": "Registration",
|
|
"summary": "Finish"
|
|
},
|
|
"language": {
|
|
"title": "Welcome to Dorfteich",
|
|
"body": "This wizard sets up your instance in a few short steps.",
|
|
"choose": "Which language should the setup and the instance use?",
|
|
"de": "Deutsch",
|
|
"en": "English"
|
|
},
|
|
"admin": {
|
|
"title": "Create the Site Admin account",
|
|
"body": "The first account manages this instance: it gets full administration rights and is signed in right away.",
|
|
"submit": "Create account & continue",
|
|
"exists": "The Site Admin account already exists — continue with the instance settings.",
|
|
"resumeTitle": "Setup already started",
|
|
"resumeBody": "The Site Admin account for this instance already exists. Sign in with that account to continue the setup.",
|
|
"resumeLink": "Sign in to continue"
|
|
},
|
|
"instance": {
|
|
"title": "Name your instance",
|
|
"name": "Instance name",
|
|
"nameHint": "Shown to everyone who visits this Dorfteich.",
|
|
"defaultLocale": "Default language",
|
|
"defaultLocaleHint": "Used on public pages and as the preset for new accounts."
|
|
},
|
|
"smtp": {
|
|
"title": "E-mail delivery",
|
|
"body": "Dorfteich sends sign-up confirmations and password resets through an SMTP relay. You can skip this step and configure it later in the admin settings — until then the instance sends no e-mail.",
|
|
"host": "SMTP server",
|
|
"port": "Port",
|
|
"secure": "Encrypt from the start (SMTPS)",
|
|
"user": "Username (optional)",
|
|
"pass": "Password (optional)",
|
|
"from": "Sender address",
|
|
"fromHint": "For example dorfteich@example.org.",
|
|
"submit": "Send test mail & continue",
|
|
"submitHint": "Before anything is saved, a test mail goes to your address — the step only advances once it is delivered.",
|
|
"skip": "Skip for now"
|
|
},
|
|
"registration": {
|
|
"title": "Who may join?",
|
|
"open": "Open registration",
|
|
"openHint": "Anyone can create an account (with e-mail verification).",
|
|
"closed": "Closed",
|
|
"closedHint": "No self-registration — administrators create the accounts."
|
|
},
|
|
"summary": {
|
|
"title": "Summary",
|
|
"body": "Everything is in place. Finish the setup to unlock the instance.",
|
|
"admin": "Site Admin",
|
|
"instance": "Instance name",
|
|
"locale": "Default language",
|
|
"smtp": "E-mail delivery",
|
|
"smtpConfigured": "Configured ({{host}})",
|
|
"smtpSkipped": "Skipped — can be configured later",
|
|
"registration": "Registration",
|
|
"registrationOpen": "Open",
|
|
"registrationClosed": "Closed",
|
|
"finish": "Finish setup"
|
|
}
|
|
}
|