Repository navigation
feat: re-parent onto template-docker v1.0.0; Track UI dependencies - #3
Conversation
…cies - sync from craftainer/template-docker v1.0.0 (replace tier verbatim, merge tier hand-merged, manifest extended) - app.Dockerfile -> Dockerfile; devcontainer image now .devcontainer/Dockerfile; image.mk holds react's smoke values - nginx base 1.27.4 -> 1.30.6 (image-scan) - add storybook, playwright, axe, motion, fontsource Fraunces/Instrument Sans, TanStack Query; ADR 0003
- src/theme: MUI CSS-variable theme (light/dark, data selector), tokens, fonts, motion variants, ThemeProvider, useColorMode, contrast test - scripts/check-design-tokens.sh + design-tokens hook with self-test - docs/design principles, ADR 0004, manifest classification
UI1 landed (Field Ledger design system)Merged Contents: Contrast (WCAG 2.2 AA, asserted at 4.5:1 by
Divider on paper is 1.47 (light) and 1.35 (dark); decoration only. |
…nt axis, contrast pairs)
|
UI2 landed: frontend-design and ui-verify skills (ui-verify uses a W3C-WebDriver helper, shoot.mjs, instead of the Playwright MCP), .mcp.json with @mui/mcp@0.1.8, .claude/README.md. No manifest change (react-added skills survive syncs). Also: ADR 0003 note that UI1 removed @fontsource/roboto; token lint now skips *.test.ts(x) but keeps stories, with self-test fixtures. Lane green: prek, frozen install, build, token self-test. Signed-out axe findings and mobile wrap are left for UI3. |
…ate trailing slash
- Storybook 10 with light/dark toolbar, auth and API stubs, stories for App, HeroesPage and HealthStatus - Playwright toHaveScreenshot and axe suite in tests/visual/, run in the pinned Playwright image; arm64 baselines committed - visual.yml CI job (arm64 runner, report artifact on failure); ADR 0005; manifest tiers - Signed-out page: main landmark, h1, labelled spinners, no wrapping at 390px; matchMedia guard in useColorMode
- shoot.mjs fails on a null or mismatched scheme - SKILL.md, design README and ADRs 0004/0005 name the real attribute
- dot directories are not matched by a bare directory include, so list the globs
- run.sh and visual.yml use the multi-arch index digest - ADR 0005 documents bumping tag and digest together
- MuiDialog and MuiPopover paper: no shadow, 2px/1px text-color border - regenerate the Add-hero dialog baselines (only these two changed)
|
UI3 landed (merge of wip/UI3 into the integration branch) plus four follow-ups. UI3: Storybook 10 with stories for App, HeroesPage and HealthStatus; Follow-ups, one commit each:
Lane green: prek (manual stage), frozen install, build, storybook build, |
- run.sh forces linux/arm64; stories fail unless the render phase is finished - serve.mjs: separator-safe traversal guard, 400 on malformed escapes - HealthStatus reads 'Backend checking…' (baselines regenerated) - shoot.mjs keeps the requested mode instead of parsing the file name - .dockerignore skips tests and Storybook/Playwright output
…hase check) - run.sh refuses non-arm64 hosts and no longer swallows a leading option - stories wait for phase finished with one expect.poll - .dockerignore skips .pnpm-store
- replace tier: Makefile, image scripts (smoke, scan, skopeo, runner-setup), test-image-scripts.sh, claude/plan docs - merge tier: .dockerignore, .pre-commit-config.yaml, manifest, READMEs, docs/TEMPLATE.md - state: v1.0.0 -> v1.2.0
|
Template sync v1.0.0 -> v1.2.0 (applied with template_sync.py apply; 0 conflicts, nothing removed upstream). Syncs from Files changed
React-owned files checked, no change needed: Dockerfile (no --chmod), image.mk (all values still valid; REPO derivation lives in the Makefile), nginx runner does not use runner-setup.sh (optional). Lane: prek manual, pnpm build, make build sbom release-assets, release-check, visual (64 passed, 0 diffs) all green. |
Track UI wave PR. UI1-UI3 will be pushed to this same branch (
integration/templates-sdks-ui) later, so this PR stays open until the wave is complete. Do not merge until then unless told otherwise.What moved (UI0)
.github/template-sync-manifest.yml,template-sync-state.jsonatv1.0.0),Makefile,scripts/(image-smoke.sh,image-scan.sh,skopeo.sh,runner-setup.sh,check-dockerfile-versions.sh),.devcontainer/Dockerfile+Dockerfile.dockerignore, workflows,.claude/anddocs/replace-tier files. Replace-tier files verified byte-identical to template-docker v1.0.0 (git show v1.0.0:<path> | cmp).app.Dockerfile(+.dockerignore) ->Dockerfile; newimage.mkwith template-react's image values; ADR 0003 (linked from README.md).package.json/pnpm-lock.yaml: Fraunces + Instrument Sans fonts,@tanstack/react-query,motion, Storybook, Playwright, axe-core.src/changed.Decisions
pnpm-workspace.yamlallowBuilds: {esbuild: false}; Prettier-formatted lockfile; ADR 0003 linked from README.Verification lane (craftainer-tc/template-react image, worktree mounted, docker socket)
prek run --all-files --hook-stage manual: all hooks passed (oxlint, prettier, tsc -b, vitest, template-sync-manifest, devcontainer-lock, hadolint, check-dockerfile-versions, image-scan/Trivy).pnpm install --frozen-lockfile: lockfile up to date, supply-chain policies pass.make build(RELEASE_ARCH=arm64): OCI tar built.make release-check: unit tests 8/8 pass, image smoke answered 2xx.After merge
The template-react devcontainer needs a rebuild (
.devcontainer/Dockerfile, compose and feature versions changed). Only the user can trigger it.Note: older open PR #2 (template-sync bootstrap v1.2.3) is unrelated and left untouched.