Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ All notable changes to the Argumentum project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.9.0] — 2026-06-XX
## [0.9.0] — 2026-07-XX

### Added — Multilingual Support (8 Languages)

Expand Down Expand Up @@ -44,7 +44,7 @@ Complete restoration of the generation pipeline from the April 2024 Golden Maste
- **CardPen templates**: Restored `argumentsVertueux` CSS class, fixed Scenarii asset paths to GitHub URLs, auto-shrink overflowing card titles (#316), auto-shrink Virtues body text overflow (#420)
- **CSV injection**: Restored Golden Master CSV injection (no `Replace("\n", "\\n")` — PapaParse handles newlines correctly)
- **Configuration**: Removed erroneous `RowsetNb=14` for Scenarii CardSet, restored Virtues CardSet (critical for Print&Play Tarot)
- **SVG generation**: Replaced XSLT-based SVGs with FreeMind Batik SVGs (21 SVGs across FR/EN/RU/PT), automated FreePlane GUI via `SendKeys.SendWait`
- **SVG generation**: Replaced XSLT-based SVGs with FreeMind Batik SVGs across all 8 languages (FR/EN/RU/PT + ES/AR/FA/ZH, PR #565), automated FreePlane GUI via `SendKeys.SendWait`
- **Mémo Back cards**: Language-invariant control-break grouping (#449), localized taxonomy labels for all 8 languages (#446), cyrillic font fallbacks + vertical grid auto-fit for RU (#452)

### Fixed — Data Quality
Expand All @@ -67,10 +67,9 @@ Complete restoration of the generation pipeline from the April 2024 Golden Maste

### Test Coverage

- **159 tests** pass (up from 0 in April 2024; +4 from #465/#28 front/back dissociation)
- **549 tests** pass (up from 0 in April 2024; 0 fail, 5 skips)
- Coverage includes: CsvDiffEngine, SyncSafetyChecker, DiffReport, CsvToGrid, MindMapHtmlWrapper, FallaciesLocalizationTests, TaxonomyValidationTests, Memo_Back localization, Playwright visual tests
- 1 skip (Freeplane GUI — requires interactive session)
- 5 skips (visual/infrastructure-dependent)
- 5 skips (Freeplane GUI — requires interactive session; visual/infrastructure-dependent)

### Migration Notes

Expand Down
26 changes: 13 additions & 13 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ The pipeline uses `UseDebugParams` / `UseReleaseParams` (in `AssetConverterConfi
| Aspect | Debug (`dotnet run`) | Release (`-c Release`) |
|--------|----------------------|------------------------|
| Print&Play image format | JPEG Q=85 (~71 MB Tarot) | PNG lossless (~222 MB) |
| CMYK conversion | Disabled (RGB) | Enabled |
| CMYK conversion | Disabled (RGB) | Per-image `ConvertToCmyk` runs but is a no-op for PNG (PNG cannot carry CMYK). Print-ready CMYK is applied by the Ghostscript post-process pass (`Mode=PdfCmykPostProcess`, #632) on the final PDFs, not per-image. |
| CardPen source | Local IIS (`UseLocalCardpen=true`) | GitHub Pages URL |
| Template paths | `JsonFilePathDebug` | `JsonFilePathRelease` |
| Harvest output | Debug density directory | Release density directory |
Expand All @@ -140,19 +140,19 @@ The pipeline uses `UseDebugParams` / `UseReleaseParams` (in `AssetConverterConfi

## Multilingual Support

Languages: French (default), English, Russian, Portuguese
Languages: French (default), English, Russian, Portuguese, Spanish, Arabic, Farsi, Chinese (8 languages)

Localization is handled via `LocalizationConfig` in the main config:
- `CardSetLocalizations`: Field mappings per language
- `MindMapLocalization`: Mind map field translations

CSV fields use language suffixes: `Title`, `Title_en`, `Title_ru`, `Title_pt`
CSV fields use language suffixes: `Title`, `Title_en`, `Title_ru`, `Title_pt`, `Title_es`, `Title_ar`, `Title_fa`, `Title_zh`

## Output Directories

Generated files go to:
```
Generation/Converters/Argumentum.AssetConverter/bin/Debug/net9.0/Target/
Generation/Converters/Argumentum.AssetConverter/bin/Debug/net9.0-windows/Target/
├── {lang}/
│ ├── Documents/ # Final PDFs
│ └── Harvest/ # Cached .harvest.json files
Expand All @@ -165,18 +165,18 @@ Generation/Converters/Argumentum.AssetConverter/bin/Debug/net9.0/Target/

The pipeline worked correctly before May 2025. A series of "vibecodés" commits introduced regressions.

### Critical Regression - `SkipConfigFile` (Commit `d324bd3b`, Aug 2025)
### `SkipConfigFile` — deliberate `true` (NOT a regression)

**The #1 cause of pipeline failures**: If `SkipConfigFile = true` in `AssetConverterConfig.cs` (line 31), the JSON config is completely ignored, causing the pipeline to use an incomplete default config.
`SkipConfigFile` is **deliberately `true`** in `AssetConverterConfig.cs` (line 34): the C# property initializers are the single source of truth, and the JSON config file is **ignored** because `List<(string,string)>` tuples (the `Translations` field) are not correctly serialized to JSON — the JSON round-trip would silently drop localization data. The JSON file is still auto-generated on first run for reference, but it is not read.

**ALWAYS verify**: `SkipConfigFile = false`
Historical note (commit `d324bd3b`, Aug 2025): `SkipConfigFile = true` was *briefly* a regression when the JSON config was the authoritative source. Since then the C# defaults were made complete and authoritative, so `true` is now correct. **Do not "fix" it to `false`** — editing C# defaults is the way to change config.

### Stable Dependency Versions

| Package | Version | Notes |
|---------|---------|-------|
| QuestPDF | 2022.12.12 | MIT free license, thread-safe issues above this |
| Magick.NET | 13.5.0 | SVG conversion stability |
| Magick.NET-Q16-AnyCPU | 14.14.0 | Image processing (per-image CMYK conversion is a no-op for PNG output; CMYK for print is applied via Ghostscript post-process on the final PDFs, see #632) |
| SkiaSharp.NativeAssets.Win32 | 2.88.6 | Required for QuestPDF |
| Microsoft.Playwright | 1.43.0 | Browser automation |

Expand Down Expand Up @@ -418,7 +418,7 @@ Chaque famille doit avoir sa classe CSS définie dans le template JSON. Liste co

### Mind Maps & SVGs — April 2026 ✅ COMPLETE

- 20 FreeMind Batik SVGs generated and committed (4 languages × 5 types)
- FreeMind Batik SVGs generated and committed across all 8 languages (FR/EN/RU/PT + ES/AR/FA/ZH, PR #565)
- FreeMind GUI automation via `SendKeys.SendWait` — VALIDATED (commit `46d6cd9b`)
- Issues #127, #128, #129 closed
- OWL ontology with SKOS — committed (PR #161), issue #130 closed
Expand All @@ -443,11 +443,11 @@ Chaque famille doit avoir sa classe CSS définie dans le template JSON. Liste co
- **Pending**: OAuth credentials for end-to-end testing
- **Tests**: 77 pass / 0 fail / 1 skip (includes CsvDiffEngine, SyncSafetyChecker, DiffReport, CsvToGrid tests)

### Test Coverage (April 2026)
### Test Coverage (July 2026)

- **77 tests** pass, 1 skip (Freeplane GUI — requires interactive session)
- Coverage includes: CsvDiffEngine, SyncSafetyChecker, DiffReport, CsvToGrid, MindMapHtmlWrapper, Playwright visual tests
- Issue #204 tracks expansion (target >= 70, now exceeded)
- **549 tests** pass, 0 fail, 5 skips (Freeplane GUI + visual/infrastructure-dependent)
- Coverage includes: CsvDiffEngine, SyncSafetyChecker, DiffReport, CsvToGrid, MindMapHtmlWrapper, FallaciesLocalizationTests, TaxonomyValidationTests, Memo_Back localization, Playwright visual tests
- Build is zero-warning (CS compiler warnings + NuGet audit, #587)
- Issue #212 tracks Playwright visual regression tests for generated PDFs

### Prochaines étapes
Expand Down
27 changes: 24 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Welcome to Argumentum, a captivating card game that celebrates the intricate art

Argumentum is a dual-deck card game, with gameplay revolving around drawing a small card, followed by players competing to play and identify fallacy large cards from their hand or a common pot.

Discover more about the game (currently in French) on the project's [website](https://www.argumentum.games).
Discover more about the game on the project's [website](https://www.argumentum.games). The game materials (cards, mind maps, ontology) are generated in **8 languages**: French, English, Russian, Portuguese, Spanish, Arabic, Farsi, and Chinese.


## Repository Structure
Expand Down Expand Up @@ -37,13 +37,13 @@ cd Argumentum
dotnet build "Argumentum Converters.sln"

# 2. Install Playwright browsers (first time only)
pwsh Generation/Converters/Argumentum.AssetConverter/bin/Debug/net9.0/playwright.ps1 install chromium
pwsh Generation/Converters/Argumentum.AssetConverter/bin/Debug/net9.0-windows/playwright.ps1 install chromium

# 3. Run the pipeline (generates images + PDFs)
dotnet run --project "Generation/Converters/Argumentum.AssetConverter/Argumentum.AssetConverter.csproj"
```

Output goes to `Generation/Converters/Argumentum.AssetConverter/bin/Debug/net9.0/Target/`.
Output goes to `Generation/Converters/Argumentum.AssetConverter/bin/Debug/net9.0-windows/Target/`.

### Quick Start (End Users — no build required)

Expand Down Expand Up @@ -154,6 +154,27 @@ That class makes use of the following components:
- MindMapDocumentConfig hols the logic to manipulate Freemind, SVG and Html mindmaps


## Download

Pre-built game materials are available on the [releases page](https://github.com/ArgumentumGames/Argumentum/releases).

### Packages (v0.9.0)

| Package | Contents | Languages |
|---------|----------|-----------|
| **Full Package** | All materials (Tarot, Poker, Print&Play, FallaciesWeb A0/A4) | FR · EN · RU · PT · ES · AR · FA · ZH |
| **Print & Play** | Print&Play A4 PDFs only (home printing, recto-verso) | all 8 |
| **Per Language** | Complete materials for one language | pick one |
| **Mind Maps** | Fallacies + Virtues SVG mind maps | FR · EN · RU · PT · ES · AR · FA · ZH |
| **Ontology** | `argumentum.owl` + `argumentum_virtues.owl` (SKOS + AIF) | FR · EN |

### Printing instructions (Print & Play)

- Print **recto-verso** (duplex, flip on long edge) on A4 heavy paper (160–250 g/m²).
- `TarotCards_Print&Play_A4` = Rules + Memo + Fallacies; `PokerCards_Print&Play_A4` = Scenarii.
- Cut along the card edges after printing.


## How to contribute

We are open to contributions of many kinds. You don't have to clone this repository or be a developper to give a hand.
Expand Down
6 changes: 3 additions & 3 deletions docs/RELEASE-NOTES-v0.9.0.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Argumentum v0.9.0 — Release Notes (DRAFT)

**Statut** : DRAFT pour validation jsboige (jalon revue finale WE 27/06)
**Statut** : DRAFT pour validation jsboige (pré-tag juillet 2026)
**Auteur** : po-2023 (draft), verdict jsboige
**Scope** : 8 langues (fr / en / ru / pt / es / ar / fa / zh)

Expand All @@ -19,7 +19,7 @@ Argumentum v0.9.0 étend l'intégralité du pipeline de génération à **8 lang
- Couche relationnelle/AIF ajoutée aux Virtues : 12 colonnes (66→78), cross-links Virtue↔Fallacy (`crossLink_Opposes`) et références AIF (`AIF_skosDirectRef`, `AIF_skosMappingType`).

**Assets générés (8 langues)**
- **PDFs** : CardSets (Tarot, Poker, posters A0, Print&Play, Mémo, Rules) localisés pour les 8 langues. (Régén release fraîche : 64/64 PDFs, 9 834 images, exit 0 — **2026-06-25** sur `bef3bc6c`, post-#592 OWL + #595 Virtues, cf dossier §3.3.)
- **PDFs** : CardSets (Tarot, Poker, posters A0, Print&Play, Mémo, Rules) localisés pour les 8 langues. (Régén release fraîche : 64/64 PDFs, 9 834 images, exit 0 — **2026-07-01** sur `3e2fa0c0`, post-#640 Rules i18n, cf dossier §3.3.)
- **MindMap SVGs** : 8 langues via FreeMind/Batik, incluant RTL (ar/fa) et CJK (zh, 5.45 MB — glyphes denses). Polices arabes-capables (Tahoma).
- **OWL** : ontologie 5.13 MB, SKOS + AIF.

Expand All @@ -41,7 +41,7 @@ Restauration complète du pipeline depuis l'état Golden Master (avril 2024, `00

### 🧪 Qualité

- **533 tests** passent (0 fail, 5 skip = GUI/Freeplane session interactive) — montée depuis 0 en avril 2024.
- **549 tests** passent (0 fail, 5 skip = GUI/Freeplane session interactive) — montée depuis 0 en avril 2024.
- Build Debug + Release verts, GitGuardian clean.
- Couverture tests : CsvDiffEngine, SyncSafetyChecker, PdfAssembly, MindMap, ClassMap matrix (Fallacies/Virtues/Scenarii), localisation.

Expand Down
14 changes: 8 additions & 6 deletions docs/publication/news-article-v0.9.0.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,11 @@ cellule par cellule, et la cohérence des traductions est désormais déterminis
traduction automatique, scripts corrects pour les langues non latines). Les **vertus argumentatives**
et les **167 scénarios** (précédemment traduits à 54 %) sont désormais couverts à 100 %.

Les **cartes mentales** (Fallacies + Virtues) ont été régénérées au format SVG FreeMind, et
l'**ontologie OWL** (avec alignements SKOS et références AIF) documente la structure formelle de la
taxonomie — un socle pour la recherche en argumentation computationnelle.
Les **cartes mentales** ont été régénérées au format SVG FreeMind (Fallacies dans les 8 langues ;
cartes des Vertus en français, leur localisation dans les autres langues étant différée à une
version ultérieure), et l'**ontologie OWL** (avec alignements SKOS et références AIF) documente la
structure formelle de la taxonomie en français et en anglais — un socle pour la recherche en
argumentation computationnelle.

#### 🖨 Print & Play

Expand All @@ -100,8 +102,8 @@ Les paquets sont hébergés sur la page [Releases GitHub](https://github.com/Arg
| **Complet** | Tout le matériel (Tarot, Poker, Print & Play, FallaciesWeb A0/A4, Thumbnails) | les 8 |
| **Print & Play** | PDFs Print & Play A4 uniquement (impression maison, recto-verso) | les 8 |
| **Par langue** | Matériel complet pour une langue | au choix |
| **Cartes mentales** | SVG Fallacies + Virtues | `[PLACEHOLDER — 4 ou 8 langues selon décision scope MindMap]` |
| **Ontologie** | `argumentum.owl` + documentation | FR |
| **Cartes mentales** | SVG Fallacies + Virtues | les 8 (FR/EN/RU/PT/ES/AR/FA/ZH) |
| **Ontologie** | `argumentum.owl` + `argumentum_virtues.owl` (SKOS + AIF) | FR · EN |

Détail par format (Tarot, Poker, Print & Play, FallaciesWeb A0/A4/Thumbnails) et instructions
d'impression : voir le [catalogue des cartes](cards-catalog.fr.md) et le
Expand All @@ -122,7 +124,7 @@ d'impression : voir le [catalogue des cartes](cards-catalog.fr.md) et le
- [ ] **#134** — Tag `v0.9.0` posé + GitHub Release créée (assets uploadés).
- [ ] **#131** — DNN **10.3.2 + 2sxc 21** live en production (couplage release validé par jsboige).
- [ ] **#132** — Déploiement prod complet (runbook Phase 5).
- [ ] Remplacer tous les `[PLACEHOLDER]` : URL release v0.9.0, date, og:image, scope MindMap (4 ou 8), lien communauté.
- [ ] Remplacer tous les `[PLACEHOLDER]` : URL release v0.9.0, date, og:image, lien communauté.
- [ ] Charger l'`og:image` dans le media DNN et référencer son URL finale.
- [ ] Créer le post dans le module **News5** (DNN), coller le corps FR, régler slug + méta.
- [ ] Ajouter l'URL canonique au sitemap DNN ; déclarer les `hreflang` aux variantes traduites.
Expand Down
Loading