feat: initial site — Astro landing (en/ja) + S3/CloudFront deploy notes - #1
Merged
Conversation
Public-facing site for the dPLaaX protocol at https://www.dplaax.dev, mirroring the provin.site conventions (Astro 6, Tailwind v4 tokens, i18n string tables, doc-only infra, disabled deploy workflow). Deviations from provin.site, both deliberate: - en is the default locale (the spec is en-normative); ja lives at /ja and the CloudFront locale redirect goes / -> /ja for ja speakers. - Deploys to www.dplaax.dev ONLY. The apex dplaax.dev is the protocol namespace publish root owned by dplaax/spec (frozen wire-identifier documents under /oauth/, /vc/, /schemas/) — infra/deploy.md carries the warning so a future deploy never syncs over it. No MDX/content-collection pipeline: all copy lives in src/i18n/ui.ts. vite is pinned as a devDependency so @tailwindcss/vite and astro resolve the same vite major (fresh install otherwise splits 7/8 and fails astro check). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
CloudFront function (the P1): an OAC REST origin has no directory-index concept and the default root object covers only '/', so every clean URL (/ja) previously 403'd into the 404 page. The function now rewrites extensionless paths to their /index.html object. Also: redirects preserve query strings, and an explicit ?lang= switch overrides Accept-Language negotiation so ja-preferring visitors can actually reach the English page (LanguageSwitch emits /?lang=en). Function logic covered by a local simulation harness (13 cases, all passing). Robustness/SEO cleanups from the same review: - .reveal hidden state gated behind html.js (content visible without JS) - sitemap excludes the /ja/404 fallback redirect stub; robots.txt added - 404 page emits noindex; custom-error response code pinned in deploy.md - twitter:card downgraded to summary (no og:image shipped) - .text-gradient carries the gradient paint; text-fg-strong stays a plain color token (currentColor consumers no longer vanish) - vite devDependency pin rationale documented in AGENTS.md - dead branch in localizedPath removed Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Brand assets from the dPLaaX logo kit (white variants for the dark theme): public/logo.svg is the full lockup used in Header/Footer in place of the interim gradient wordmark; the favicon now carries the official 5-square mark on the site's dark tile instead of the placeholder dots-and-line glyph. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Per design direction: white base modeled on c2pa.org's surface language — near-black text matching the logo's #2c2c2c, flat surfaces, thin gray borders, no gradients — with the official 5-square mark as a faint background watermark (hero, ~5% on light) and an inverse dark footer band (white logo, ~8% watermark). - tokens reworked for light theme + bg/fg-inverse pair for the footer - gradient heading paint removed entirely (.text-gradient is gone) - logo split: logo-dark.svg (light surfaces) / logo-white.svg (inverse band); favicon unchanged (dark tile reads on any browser tab theme) - MarkWatermark.astro: currentColor 5-square mark; no negative z-index (body background paints over z<0 layers — caught via screenshot) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Align with the provin org's Authors convention (open-protocol posture); dplaax/spec's LICENSE is updated the same way in its own repo. Only the Apache-2.0 appendix placeholder line changes — the license body stays verbatim. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
AWS_PROFILE=<profile> make deploy. Guard rails: AWS_PROFILE required (no silent default-profile deploys), aws CLI + credential preflight via sts get-caller-identity, DRY=1 dry-run mode. Sync applies the split cache-control policy from infra/deploy.md (_astro/ immutable, the rest max-age=300) and scopes --delete per prefix. Invalidation runs only when CLOUDFRONT_DISTRIBUTION_ID is provided; skipped with a note otherwise (the distribution does not exist yet). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Public-facing site for the dPLaaX protocol at https://www.dplaax.dev, mirroring the provin.site conventions: Astro 6, Tailwind v4 CSS tokens, typed i18n string tables, doc-only
infra/, and a deploy workflow shipped disabled (if: false).enis the default locale at/(the spec is en-normative);jaat/ja— the reverse of provin.site, deliberatelysrc/i18n/ui.ts; ja terminology followsdplaax/specconcept.ja.md(境界の約束事 / 来歴の線 / 真正性と連続性)/index.htmlrewrite, query-string preservation,?lang=override for the language switchastro check+ buildThe apex is not ours
dplaax.dev(apex) is the protocol namespace publish root owned bydplaax/spec(site/) — frozen wire-identifier documents under/oauth/,/vc/,/schemas/. This repo deploys towww.dplaax.devonly;infra/deploy.mdcarries the warning (no apex CNAME, no shared bucket,--deletehazard named).Review
Multi-agent review (Claude reviewer + Codex) ran on the initial scaffold; both converged on the P1: with an OAC private-bucket origin, clean URLs like
/jaresolved to a nonexistent S3 key → 404, because the default root object only covers/. Fixed in the second commit along with: query-string-dropping redirects, ja-visitors unable to switch to English,.revealcontent hidden without JavaScript,/ja/404fallback stub leaking into the sitemap, soft-404 risk (response code now pinned in deploy.md, 404 page emitsnoindex),summary_large_imagecard with no image, and the.text-fg-strongtoken being overloaded with gradient paint.Known deferrals (need design assets, not code): no
og:image/social card image, nofavicon.icofallback (SVG favicon only).Verification
npm run build(astro check: 0 errors) andnpm run format:checkpassastro preview+ curl:/,/ja,/404.html,/sitemap-index.xml,/favicon.svgall 200; hreflang alternates reciprocal; sitemap contains exactly/and/ja?lang=override, slash normalization, index rewrite, asset passthrough, query preservation) — all passing🤖 Generated with Claude Code