feat(faq): public /faq page (prerendered, light + dark, no JS) - #18
Conversation
A plain-English FAQ for first-time beta reviewers, at /faq. Prerendered static HTML (prerender=true, ssr=true, csr=false): reads with zero JavaScript, makes no external request, no analytics, no backend — matching /trust and /legal/privacy in structure, tokens, and light/dark styling. Answers only what a new neighbor actually asks, grounded in the shipped app and the Constitution/Philosophy (no marketing, no invented features): bank connection, accounts/passwords, where data lives, whether we can see it, new phone / cleared data, phone + computer, free during early review, sending feedback, what to enter first, and whether every purchase goes in. Offline: the service worker is already generic over the prerendered manifest, so /faq is precached and served network-first with an exact- document fallback — no SW change needed. Adds /faq to the layout's public prefixes (no app chrome) and to the offline cache allowlist. Tests: e2e/faq.spec.ts (renders, links resolve, no external request) and an offline case proving /faq loads offline as its real document, not the SPA shell. Existing /trust and /legal/privacy suites stay green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
@codex please review this PR. Do not merge — awaiting review. This adds the public /faq page, following the same prerendered static-content pattern as /trust (#16) and /legal/privacy (#17): |
|
Codex Review: Didn't find any major issues. Chef's kiss. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
What
A public, plain-English FAQ page at
/faqfor first-time beta reviewers. Prerendered static HTML that reads with zero JavaScript, matching/trust(#16) and/legal/privacy(#17) in structure, tokens, and light/dark styling.prerender = true,ssr = true,csr = false→ real static document, no hydrationprefers-color-scheme/trustand/legal/privacy; contactfeedback@billbuffer.app; Made by Equilibrium Labs LLCThe 10 questions answered (plain, accurate to the shipped app)
Do I have to connect my bank? · Do I need an account or password? · Where is my information stored? · Can BillBuffer see my paycheck or bills? · What happens if I get a new phone or clear browser data? · Can I use it on both phone and computer? · Is it free during the early-reviewer period? · How do I send feedback? · What should I enter first? · Do I need to enter every purchase I make?
Answers are grounded in the Constitution, Philosophy (banned-word dictionary), and shipped copy — no marketing, no invented features, no over-explaining. The app is unchanged.
Offline
The service worker is already generic over the prerendered manifest (
$service-worker), so/faqis automatically precached and served network-first with an exact-document fallback — offline/faqreturns the real FAQ HTML, never the SPA shell. No service-worker change needed.Supporting changes:
src/routes/+layout.svelte— add/faqtoPUBLIC_PREFIXESso the page stands alone with no app chromee2e/offline.spec.ts— add/faqto the offline cache allowlist (looksStatic)Tests
e2e/faq.spec.ts: renders all 10 Q&As + maker/contact/links, links to Trust & Privacy resolve, makes no external request, no app chromee2e/offline.spec.ts:/faqloads offline as its real prerendered document (asserts baked-in content), not the shell/trustand/legal/privacysuites remain greenLocal results (all green):
npm run check→ 0 errors, 0 warningsnpm test→ 135 passednpm run build→build/faq.htmlemitted (0<script>tags — no JS)npm run test:e2e→ 74 passedReview
Requesting Codex review. Do not merge.
🤖 Generated with Claude Code