feat(content): add a contact page and a news section #132
Inga granskare
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-web!132
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "feat/contact-and-news"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
Stacked on #131 — please merge that first; this branches from it.
Contact page
The site had no contact page.
info@gitborg.seappeared only inside legal prose, and severalsurfaces said "email us" without saying what for or what would happen. The page routes by reason:
the service and your account, billing, privacy and data requests, security problems, bugs, and press.
Two deliberate choices:
info@andfinance@are published, because those are the addresses that exist.Publishing an unread address is the same class of error as offering a document nobody holds. My
suggested next aliases, in order, are
security@(withsecurity.txtpointed at it), thenabuse@, thenprivacy@— butprivacy@only once a DSAR routine exists, or it repeats themistake in a new place.
broke all portal mail silently with nothing logged. A form built on that path means a user believes
they contacted you when they did not, whereas a
mailto:fails visibly in their own client. Worthrevisiting once web#115 and #116 are fixed.
Two categories are routed somewhere better than email: sign-up link problems to the self-service
resend, and non-security bugs to the issue tracker where others can see and follow them.
News section
A third content collection, and the only dated one, so the index sorts newest-first rather than by an
explicit
order. Four posts: a launch announcement plus three drawn from work that genuinelyshipped — open registration, Git LFS inside the shared quota, and weekly restore-verified backups.
The dates are the real shipping dates, not invented history.
The launch post is dated 2026-08-01; change it if you announce on a different day.
Sitemap — a pre-existing gap this fixes
@astrojs/sitemapcannot enumerate an SSR[slug]route, so every guide was already missing fromthe sitemap: a real build produced
/docs/but not/docs/renovate/. That predates this branch andwould have silently swallowed the two new guides in #131 too.
customPagesis now derived from the content directories rather than a hardcoded list, so a new guideor post is included the moment its markdown lands. Verified against a real build — all four guides and
all four posts now appear in both locales.
One thing I got wrong, in case it recurs
I first named the Swedish news files with Swedish slugs, which produced
/en/news/bitborg-ar-oppet/.That breaks the matching-filename pairing the collections rely on, and it breaks the language switcher,
since
counterpartPathonly strips and adds the/enprefix and cannot translate a path segment.Slugs are now English and identical across locales, per the URL rule in CLAUDE.md. The build is what
surfaced it.
Checks
pnpm checkclean (the only remaining errors are in the gitignoredcoverage/artefact directory,untracked and invisible to CI),
mdlint0 issues, eslint/stylelint clean, language detector cleanacross all changed files, and
pnpm buildsucceeds.4a5f8961631d5be55d87