LauPeh Geografi Tingkatan 1 - KSSM 2026

Original static learning module for Aiden and free student revision.
14 textbook chapters including fieldwork; 40 objective +10 structured +5 extended each.
See CURRICULUM-2026.json for verified source scope and limitations.

Runtime: plain HTML/CSS/JavaScript, no server, API key, database or paid API.
Browser speech uses installed device voices and is optional. Drafts and progress stay in browser localStorage.
The unit tests use Node VM and a minimal DOM adapter, not a real-browser visual test.

Build from this project directory:
python3 source/build_visuals.py
python3 source/build.py
python3 source/build_pdf.py
Python PDF dependencies: reportlab, svglib, PyMuPDF; DejaVu Sans fonts.
Node tests: source/qa-check.cjs and static/PDF QA: source/qa-static-pdf.py.
QA scripts expect the workspace output/laupeh-geografi-t1-kpm convention and earlier subject outputs for cross-subject link verification; adjust the root paths in an independent checkout.

Question data: chapter-N.json and written/chapter-N.json.
The build reorders correct options reproducibly so each answer position appears ten times per chapter.
Keep question and written IDs stable if preserving student progress. Increment storage version/keys if incompatible data changes are made.
Every question requiring a diagram must have a matching diagramId SVG. No diagram is fetched remotely.

Reuse: Original LauPeh material, to the extent protectable, for the user's free learning project. No promise of exclusive rights in AI-generated material. KPM source publications remain their owners' material; they are referenced and not bundled. Third-party font licensing is included separately.
