Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
8 changes: 3 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,8 @@ 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)
- **548 tests pass**, 5 skips (GUI/infrastructure), 1 known-fail (OWLSharp `rdf:type`/`inScheme` round-trip, pre-existing, tracked #133 — does not affect generated assets)
- 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)

### 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)
- **548 tests pass**, 5 skips (GUI/infrastructure), 1 known-fail (`OwlE2EGenerationValidationTests.LoadedOntology_RdfTypeAndInScheme_DroppedByOwl2XmlRoundTrip` — OWLSharp round-trip bug, pre-existing, tracked #133 — does not affect generated assets)
- 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.
- **548 tests** passent (5 skips GUI/infrastructure, 1 known-fail = OWLSharp `rdf:type`/`inScheme` round-trip pré-existant, tracké #133 — n'affecte pas les assets générés) — 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