mirror of
https://github.com/tiennm99/ai-coding-workflow-labs.git
synced 2026-09-18 20:18:59 +00:00
* chore: ignore .gstack/ deploy reports
/land-and-deploy writes per-deploy artifacts to .gstack/deploy-reports/. Those
shouldn't enter the repo. Captured here so future runs don't surface stale diffs.
* feat(geom-engine): circle module + inscribed-angle invariance test
Add the second pure module per autoplan eng decision E1: src/geom-engine/circle.ts
with circle(), pointOnCircle(), projectToCircle() (snap-to-circle for Module 3 drag),
and angleAtVertex() (clamped against IEEE-754 drift to prevent acos NaN at exactly
collinear angles).
The killer-demo property test pins the inscribed-angle theorem as a CI gate: pick
two fixed points A and B on a unit circle, sample 7 different M positions on the
major arc, and assert all sampled inscribed angles AMB stay within 0.5° of the
reference. If this test ever fails, Module 3's central premise is broken.
13 new unit tests, total 29 passing.
* feat(module-3): drag-to-explore góc nội tiếp page (lớp 9)
Ship the first interactive theorem demo. Page lives at /lop-9/goc-noi-tiep/.
Component: src/components/inscribed-angle.ts wires Pointer Events +
setPointerCapture per autoplan eng decision E1. Drag M; on every pointermove,
project the pointer to the circle (M = center + r·normalize(pointer − center))
so M never escapes the circle. Live readouts: ∠AMB at M (inscribed, pair1 red),
∠AOB at center O (central, pair2 teal). All listeners use AbortController
keyed on astro:before-swap so view-transition navigation doesn't leak.
Page: src/pages/lop-9/goc-noi-tiep.astro holds the SVG canvas (viewBox 400x400,
touch-action: none scoped to canvas), theorem panel, and one worked example
walking the 120°/60° canonical case. Astro bundles the script inline so the
single page ships ~7KB total (including the entire geom-engine + component).
* feat(hub): link lớp 9 card to góc nội tiếp module
Hub landing page now branches each grade card on grade.href:
- live cards render as <a> with hover affordance (lớp 9 only, for now)
- coming-soon cards stay as <li> with opacity 0.7 and "Sắp ra mắt" badge
Status taxonomy extended: 'sap-ra-mat' | 'live' so future modules just flip the
status when their page ships.
i18n/vi.ts gains module3.* (intro, theorem, example, instruction copy) plus a new
'live' status string ("Khám phá") so every user-facing string stays inside vi.ts.
* chore: VERSION 0.0.2.0 + CHANGELOG entry
First feature release. v0.0.2.0 = scaffold + Module 3 góc nội tiếp.
* chore: mark TODOS items completed by v0.0.2.0
- Drag M with circle constraint → DONE in src/components/inscribed-angle.ts
- TheoremCanvas primitive first cut → DONE (built directly in Astro)
- Theorem panel + worked examples → PARTIAL (1 of 3 examples shipped)
---------
Hình Học Sống
Interactive Vietnamese THCS (lớp 7–9) geometry visualizer. Drag the points; watch the theorems hold. Aligned to the SGK curriculum.
Sandbox repo currently doubling as a gstack trial — see
CLAUDE.md.
Status
Scaffold only (v0.0.1.0). Modules are placeholders — landing page lists three grades with "Sắp ra mắt" badges. See the design doc at ~/.gstack/projects/tiennm99-try-gstack/ for the full plan.
Develop
bun install
bun run dev # http://localhost:4321/try-gstack/
bun run test # Vitest (geom-engine unit tests)
bun run typecheck # Astro check + TS strict
bun run build # Static output to dist/
Deploy
Auto-deploys to GitHub Pages from main via actions/deploy-pages@v4. See RUNBOOK.md for rollback + domain-migration procedure.
Architecture (locked decisions, per autoplan review)
- Static: Astro SSG,
base: '/try-gstack/', outputdist/ - Typography: Be Vietnam Pro single family, weights 400/500/700, woff2 only, Vietnamese subset
- Math engine: pure
src/geom-engine/module (no DOM imports), Vitest unit tests; property tests withfast-checkto be added with first canvas module - Canvas: vanilla SVG + Pointer Events +
setPointerCapture(no Konva) — to be added with first canvas module - Math rendering: KaTeX, bundled locally + SSR-rendered — to be added with first canvas module
- Animation: Web Animations API +
requestAnimationFrame(no GSAP / Motion One / Lottie) - Analytics: Cloudflare Web Analytics, deferred until 50+ daily sessions
- i18n: every string via
t()fromsrc/i18n/vi.ts; English added by addingen.ts
License
TBD.