7 Commits

Author SHA1 Message Date
Denis Defolie 2d7001105d Add sound effects, ambient music and volume mixing (0.5.0)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 22:57:37 +02:00
Denis Defolie 97a065879c Visual overhaul: theme, illustrations, redesigned screens (0.3.0)
Phase "habillage" of the post-0.1.0 plan. Rendering was reviewed on real
screenshots (new tools/screenshot.gd, `make screenshot`), which also
caught and fixed map markers overlapping and truncated titles.

- Global Godot theme (Atkinson Hyperlegible font, cream/green/gold
  palette, raised buttons, rounded cards, thick keyboard focus).
- Original vector art: forest/marsh backdrops, Plume the owl, stars,
  exercise-type icons, correct/try-again icons, 10 collection items.
- Redesigned world map (markers as cards with icon, title and stars,
  responsive layout), profile screens, mission intro, exercise host,
  rule/feedback panels, reward screen and collection grid.
- Motion helper (pop-in, fade) honouring an animations setting.
- Settings: animations flag; base window 1152x648 with canvas_items.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 22:36:43 +02:00
Denis Defolie 1c036658bc Add regle_pluriel_nom and regle_accord_determinant (CE1)
Extends explicitly beyond the §15 prototype scope (3 missions, one
rule) that prompt-lancement.md says not to exceed without flagging
it — confirmed with the user before implementing (decisions.md,
point 25).

Adds the two remaining CE1 rules for the "accords dans le groupe
nominal" chapter listed in prompt-lancement.md, each with the same
minimum content volume already established for regle_accord_adjectif
(8 multiple-choice, 4 sentence corrections, 3 dictées across the 3
difficulty levels) and 3 missions (one per exercise type, matching
the existing pattern), bringing the map to 9 locations.

world_map.gd is purely data-driven already, so no code change was
needed to support more locations — only its stale "trois lieux"
header comment, corrected. Dictation audio generated with the Piper
voice (make generate-dictation-audio).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-11 21:36:04 +02:00
Denis Defolie 26d588f1bc Add 2 dictées for the accords-du-groupe-nominal chapter
Only 1 existed, below the prompt-lancement.md minimum of 3 per
chapter. Adds difficulty 2 (feminine singular) and difficulty 3
(feminine plural, noun and adjective separated by a complement,
mirroring points 18/23). Audio generated with the Piper voice
(make generate-dictation-audio), credited in assets/CREDITS.md.

With this, regle_accord_adjectif now meets prompt-lancement.md's
minimum content volume: 8 multiple-choice, 4 sentence corrections,
3 dictées.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-11 21:15:26 +02:00
Denis Defolie b0dcedb402 Replace eSpeak NG with Piper neural voice for dictation audio
Manual test reported the eSpeak NG dictation voice as unintelligible.
Formant synthesis is inherently mechanical; slowing it down doesn't
fix that. Switched tools/generate_dictation_audio.py to piper-tts
(fr_FR-siwis-medium neural voice, MIT/CC-BY 4.0, attribution in
assets/CREDITS.md). The voice model (~60MB) downloads once on demand
into the untracked .cache/piper-voices/, never at game runtime.

Adds piper-tts to tools/setup.sh's venv and a pyrightconfig.json
pointing pyright at .venv, needed once tools/ imports a real
third-party package (`make lint` was silently checking against the
wrong interpreter before).

Regenerated ce1_accord_adjectif_dictee_01.ogg with the new voice.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-11 19:07:40 +02:00
Denis Defolie 73440ba226 Generate provisional dictation audio so dictée missions can be played
Manual testing confirmed the "La clairière de l'écho" dictée mission
was unplayable: no audio file existed yet (decisions.md point 8), so
there was nothing to listen to before transcribing the sentence.

Adds tools/generate_dictation_audio.py (offline eSpeak NG synthesis +
ffmpeg encoding to Ogg Vorbis, exposed as `make
generate-dictation-audio`) and uses it to generate
ce1_accord_adjectif_dictee_01.ogg. A new headless test
(tests/data/test_dictation_audio.gd) guards against future dictées
being added without regenerating their audio.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-11 18:40:11 +02:00
Denis Defolie a1f749de40 Add project skeleton: Godot setup, tooling, and smoke test
Pins Godot 4.6.3-stable and GUT 9.6.0 (9.6.1+ reference
AccessibilityServer, unavailable in 4.6.3) via tools/setup.sh. Wires
make check (gdlint + gdformat config for 4-space indent, headless
GUT run, and a JSON well-formedness check ahead of real schema
validation). Seven autoload stubs match the architecture in the
cahier des charges; real logic lands with the following steps.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-11 16:15:19 +02:00