37 Commits
Author SHA1 Message Date
tiennm99 72062a8319 docs: correct the live url and stop restating pinned action versions
The published site is served from the tiennm99dev org, so the documented
tiennm99.github.io url returned 404. The deploy mechanism was also
described as upload-pages-artifact@v3 and deploy-pages@v4 while the
workflow pins v5 of both; the docs now point at the workflow file rather
than restating versions that drift.
2026-09-15 10:09:47 +07:00
tiennm99 04d1e32fc1 docs: record the tailwind 4 migration, the fixes and the new lesson
The readme described tailwind 3, which is what let the styling break go
unnoticed.
2026-09-15 10:07:05 +07:00
tiennm99 737657b69a feat(dai-so): add the linear system lesson for lop 9
Two lines in standard form ax + by = c, with the intersection point as the
solution. Standard form rather than the slope-intercept form of linear.js,
because it represents vertical lines and the three cases fall out of one
determinant.

Coefficient sliders plus a drag handle per line that translates it, and
presets where the parallel and coincident cases differ only in c.
2026-09-15 10:07:05 +07:00
tiennm99 03c976cb5f fix(goc-noi-tiep): report the subtended arc, not the unsigned central angle
The readout showed the angle AOB, which does not change as M moves, so the
page contradicted its own theorem whenever M sat on the minor arc: the
inscribed angle read 120 degrees against a central angle of 120. It now
shows the measure of the arc that M does not lie on, so the inscribed angle
is half of it wherever M is. The inscribed angle is also marked undefined
when M reaches either end of the chord instead of reading zero.
2026-09-15 10:06:57 +07:00
tiennm99 27ec89fe89 fix(dinh-ly-pythagoras): preserve area through the shear proof
The animation interpolated each vertex straight from the leg square to its
target rectangle, which is not area preserving: the square collapsed to
about a ninth of its area midway, so a lesson about shear preserving area
showed the opposite. The morph is now a composition of shears and a quarter
turn built on geom-engine/transforms.js, each of determinant 1, so the area
is exactly a squared and b squared at every frame.

The square on the hypotenuse also reached outside the viewBox. The canvas
is larger and the legs are capped so every polygon stays on screen for any
position of the draggable vertex.
2026-09-15 10:06:57 +07:00
tiennm99 d558159173 fix(sang-eratosthenes): keep the grid usable for primes above 50
rippling was raised before the stagger loop but lowered only inside the
final timeout, so a prime with no multiple left on the 100-cell grid left
the flag raised and rejected every later click. Affected 10 of the 25
primes on the grid.
2026-09-15 10:06:46 +07:00
tiennm99 0f7da4cf35 fix(styles): load the tailwind 4 entry point
The project installs tailwind 4 but app.css still used the v3 @tailwind
directives, so no theme layer was imported and the emitted stylesheet
carried none of the color, spacing, radius, responsive or hover utilities
the pages rely on. The bare 'tailwindcss' specifier is intercepted by the
bundler's @import resolver, so the file path is spelled out instead, with
@config keeping the pair palette from tailwind.config.js.
2026-09-15 10:06:46 +07:00
tiennm99 36c35864d3 test: let vitest import svelte rune modules
Adds the svelte plugin and the $lib alias so *.svelte.js modules can be
imported by tests. The lesson interaction logic was untestable without it.
2026-09-15 10:06:46 +07:00
tiennm99 c291d52cd2 build: move from pnpm to npm
Replace pnpm-lock.yaml with package-lock.json. The security overrides move to
package.json#overrides with their range operators intact, so advisory floors
stay floors. allowBuilds becomes package.json#allowScripts where the listed
package is actually in the tree.
2026-08-17 13:15:15 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5ca8d29ef7 build(deps): bump postcss from 8.5.16 to 8.5.23 (#26)
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.16 to 8.5.23.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.16...8.5.23)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 14:45:42 +07:00
tiennm99 1d4ddc8e22 chore: remove dependabot version-update config 2026-07-25 14:14:26 +07:00
tiennm99 e1966c22f0 build(deps): update dependencies and actions, pin cookie >=0.7.2
- bump minor-and-patch group: @sveltejs/kit 2.69.3, vite 8.1.5,
  svelte 5.56.6, tailwindcss 4.3.3, vitest 4.1.10, and related tools
- bump actions/checkout and actions/setup-node to v7
- override transitive cookie to 0.7.2 to resolve GHSA advisory
2026-07-17 17:56:53 +07:00
tiennm99 0510b671b3 fix: update vite security patch 2026-07-02 09:08:14 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>tiennm99
f08303fdcb build(deps): bump tailwindcss from 3.4.19 to 4.3.0 (#15)
* build(deps): bump tailwindcss from 3.4.19 to 4.3.0

Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) from 3.4.19 to 4.3.0.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.0/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(styles): migrate to tailwindcss v4 with @tailwindcss/postcss plugin

* fix(styles): use @tailwind directives (v4-compat) instead of bare CSS @import

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: tiennm99 <tiennm99@outlook.com>
2026-05-23 18:36:39 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0a71009374 build(deps-dev): bump prettier-plugin-svelte from 3.5.2 to 4.0.1 (#14)
Bumps [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) from 3.5.2 to 4.0.1.
- [Release notes](https://github.com/sveltejs/prettier-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/prettier-plugin-svelte/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/prettier-plugin-svelte/compare/v3.5.2...prettier-plugin-svelte@4.0.1)

---
updated-dependencies:
- dependency-name: prettier-plugin-svelte
  dependency-version: 4.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:24:38 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
92c440406d build(deps-dev): bump vitest from 3.2.4 to 4.1.7 (#13)
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 3.2.4 to 4.1.7.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.7/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-version: 4.1.7
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:24:35 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2a1b36acbb build(deps): bump pnpm/action-setup from 4 to 6 (#11)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 4 to 6.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/v4...v6)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:09:23 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e9e1399dd0 build(deps): bump actions/deploy-pages from 4 to 5 (#10)
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:09:19 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
68a9237c9c build(deps): bump actions/upload-pages-artifact from 3 to 5 (#9)
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 3 to 5.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v3...v5)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:09:16 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b825fc1457 build(deps): bump actions/checkout from 4 to 6 (#8)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:09:11 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
33ff67a7ae build(deps): bump actions/setup-node from 4 to 6 (#7)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:09:07 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1c0ca94c9a build(deps): bump the minor-and-patch group with 5 updates (#12)
Bumps the minor-and-patch group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit) | `2.59.1` | `2.61.0` |
| [katex](https://github.com/KaTeX/KaTeX) | `0.16.45` | `0.17.0` |
| [postcss](https://github.com/postcss/postcss) | `8.5.14` | `8.5.15` |
| [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) | `5.55.5` | `5.55.9` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.12` | `8.0.14` |


Updates `@sveltejs/kit` from 2.59.1 to 2.61.0
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/main/packages/kit/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@2.61.0/packages/kit)

Updates `katex` from 0.16.45 to 0.17.0
- [Release notes](https://github.com/KaTeX/KaTeX/releases)
- [Changelog](https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KaTeX/KaTeX/compare/v0.16.45...v0.17.0)

Updates `postcss` from 8.5.14 to 8.5.15
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.14...8.5.15)

Updates `svelte` from 5.55.5 to 5.55.9
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.55.9/packages/svelte)

Updates `vite` from 8.0.12 to 8.0.14
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.0.14/packages/vite)

---
updated-dependencies:
- dependency-name: "@sveltejs/kit"
  dependency-version: 2.61.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: katex
  dependency-version: 0.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: postcss
  dependency-version: 8.5.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: svelte
  dependency-version: 5.55.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vite
  dependency-version: 8.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:08:20 +07:00
tiennm99andGitHub 89b0452abb chore: add dependabot config (#6) 2026-05-23 10:49:15 +07:00
tiennm99 9d5d3f04a0 feat: 3 interactive demo pages + transforms/sieve/linear engines
Lessons:
- /hinh-hoc/dinh-ly-pythagoras (lớp 7) — drag right-angle vertex; "Chứng minh"
  button plays Euclid-style dissection-shear animation tweening two leg-squares
  into the hypotenuse-square. Respects prefers-reduced-motion.
- /so-hoc/sang-eratosthenes (lớp 6) — 10×10 grid; click 2/3/5/7 → ripple
  cross-out of multiples in 4 colors; roving tabindex; aria-live announces.
- /dai-so/duong-thang (lớp 7) — y = ax + b plot; 2 sliders + 2 draggable
  anchors bidirectionally bound via draggable.onChange + viewport clamping +
  rounded epsilon gate (no oscillation at any drag speed).

Engines:
- geom-engine/transforms.js — translate, rotate, shear, compose, applyToPolygon (13 tests)
- numtheory-engine/sieve.js — sieveUpTo, multiplesOf, isPrime (10 tests)
- algebra-engine/linear.js — lineFromPoints, yAt, linePoints (6 tests); new module bootstrapped

Glue:
- registry: insert 3 new lessons in topic+grade order
- tailwind: extend colors.pair to 4 entries (pair.4 = #5E60CE for prime 7)
- README: bump count 5→8, list new URLs, update architecture section
2026-05-15 20:35:22 +07:00
tiennm99 fb6089aff0 docs: brainstorm + plan for cool demo pages round 2
Brainstorm survey of 6 candidates with brutal-honesty trade-off matrix; top-3
ranked (Pythagoras động, Sàng Eratosthenes, đường thẳng y=ax+b). Plan with
8 phases — 3 engines + 3 lessons + glue + verify.
2026-05-15 20:35:02 +07:00
tiennm99 1056dd8caf fix(ci): remove pnpm version override conflicting with packageManager 2026-05-13 10:28:56 +07:00
tiennm99 926abb3be1 chore: update pnpm lockfile for bumped deps 2026-05-13 10:21:20 +07:00
tiennm99 77877b8dca chore: migrate from npm to pnpm 2026-05-13 10:20:51 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ecd663ccc2 build(deps): bump vite and @sveltejs/vite-plugin-svelte (#3)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) and [@sveltejs/vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte). These dependencies needed to be updated together.

Updates `vite` from 5.4.21 to 8.0.10
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.0.10/packages/vite)

Updates `@sveltejs/vite-plugin-svelte` from 4.0.4 to 7.0.0
- [Release notes](https://github.com/sveltejs/vite-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/vite-plugin-svelte/blob/main/packages/vite-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/vite-plugin-svelte/commits/@sveltejs/vite-plugin-svelte@7.0.0/packages/vite-plugin-svelte)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.0.10
  dependency-type: direct:production
- dependency-name: "@sveltejs/vite-plugin-svelte"
  dependency-version: 7.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:13 +07:00
tiennm99 610dfa7cec docs: brainstorm survey + lesson 4+5 plan 2026-05-03 13:15:55 +07:00
tiennm99 8d6b5153dc feat: enable Số học + Đại số topic tiles + landings 2026-05-03 13:15:47 +07:00
tiennm99 1877bc91cd feat: hiệu hai bình phương lesson (lớp 7) 2026-05-03 13:15:45 +07:00
tiennm99 e553e7cd67 feat: numtheory-engine + GCD Euclidean lesson (lớp 6) 2026-05-03 13:15:44 +07:00
tiennm99 7c282c3aee feat: add KaTeX <Tex> component for math typography 2026-05-03 13:15:42 +07:00
tiennm99 a0da079500 feat: port 3 interactive geometry lessons + geom-engine
- Add pure geom-engine module (vec, triangle, circle, ticks) with 34 vitest tests
- Add 3 lessons under /hinh-hoc/: tam-giac-bang-nhau (SSS), tam-giac-dong-dang (similarity), goc-noi-tiep (inscribed angle)
- Add reactive draggable Svelte action with arrow-key a11y
- Add per-lesson colocated i18n + site chrome + lesson registry
- Enable Hình học topic card on landing; keep Số học/Đại số as Sắp ra mắt
- Codify pedagogical tick palette as Tailwind colors.pair.{1,2,3}
- Add Be Vietnam Pro via @fontsource
2026-04-30 22:27:26 +07:00
tiennm99 8804c192db fix: remove SPA fallback so prerendered HTML wins at /
With prerender=true on +layout.js, adapter-static emits index.html
per route. Setting fallback: 'index.html' overwrites the prerendered
home with the SPA bootstrap shell, leaving the live page empty before
hydration. Drop the fallback option.
2026-04-30 21:49:08 +07:00
tiennm99 7b75a72a16 feat: initial scaffold
- SvelteKit 2 + Svelte 5 + Tailwind 3 (JS only, paths.base=/mathmax)
- Vietnamese landing page: hero + scope (lớp 6-9) + 3 topic cards (Số học, Đại số, Hình học) all "Sắp ra mắt"
- GitHub Actions: CI (build) on PR + deploy to Pages on main
- Apache-2.0 LICENSE, README, RUNBOOK, CHANGELOG
2026-04-30 21:44:43 +07:00