mirror of
https://github.com/tiennm99/try-gstack.git
synced 2026-05-14 02:58:43 +00:00
bc3df68e5b
* 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. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * 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. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * 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). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * 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. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * chore: VERSION 0.0.2.0 + CHANGELOG entry First feature release. v0.0.2.0 = scaffold + Module 3 góc nội tiếp. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * 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) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
29 lines
755 B
JSON
29 lines
755 B
JSON
{
|
|
"name": "try-gstack",
|
|
"version": "0.0.2.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"description": "Hình Học Sống — Interactive Vietnamese THCS geometry visualizer (lớp 7-9). Static site, drag-to-explore theorems.",
|
|
"scripts": {
|
|
"dev": "astro dev",
|
|
"build": "astro build",
|
|
"preview": "astro preview",
|
|
"typecheck": "astro check",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest"
|
|
},
|
|
"dependencies": {
|
|
"@astrojs/sitemap": "^3.4.0",
|
|
"@astrojs/tailwind": "^6.0.0",
|
|
"@fontsource/be-vietnam-pro": "^5.2.0",
|
|
"astro": "^5.14.0",
|
|
"tailwindcss": "^3.4.17"
|
|
},
|
|
"devDependencies": {
|
|
"@astrojs/check": "^0.9.9",
|
|
"@types/node": "^22.10.0",
|
|
"typescript": "^5.7.0",
|
|
"vitest": "^3.2.0"
|
|
}
|
|
}
|