Skip to content

feat(mindmap): replace XSLT SVGs with FreeMind Batik SVGs + docs update - #184

Merged
jsboige merged 4 commits into
masterfrom
feat/mindmap-batik-svgs-final
Apr 6, 2026
Merged

feat(mindmap): replace XSLT SVGs with FreeMind Batik SVGs + docs update#184
jsboige merged 4 commits into
masterfrom
feat/mindmap-batik-svgs-final

Conversation

@jsboige

@jsboige jsboige commented Apr 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Restore validated FreeMind SendKeys automation — removes fragile XSLT fallback chain, keeps only the SendKeys.SendWait approach that produces high-quality Batik SVGs (commit 46d6cd9b reference)
  • Replace 20 XSLT placeholder SVGs with real FreeMind Batik SVGs across all 4 languages (FR/EN/RU/PT) × 5 types (Fallacies full/content/links + Virtues content/links)
  • Update CLAUDE.md with Mind Maps completion status, translation pipeline analysis (issue feat(translations): Upgrade OpenAI translation pipeline + complete Virtues i18n #183), and updated roadmap
  • Add XSLT export scripts (PowerShell + Groovy) as alternative tooling for headless environments

Changes

Area Files Description
Code FallacyMindMapDocumentConfig.cs Remove XSLT fallback, improve window polling (jp.Refresh() + match .mm filename)
Assets 20 SVG files in Cards/Fallacies/Mindmaps/{fr,en,ru,pt}/ High-fidelity Batik SVGs replacing XSLT placeholders
Docs CLAUDE.md Mind Maps ✅, Translation Pipeline section, updated roadmap
Scripts Export-FreeMindSvg.ps1, batch_export_svg.groovy Alternative export tooling
Build Argumentum.AssetConverter.csproj CopyToOutputDirectory for PS1 script

Test plan

  • FreeMind Batik SVGs validated: Fallacies_fr.svg (2610 KB), Virtues_fr.svg (610 KB)
  • All 20 SVGs present and non-empty across 4 languages
  • Build passes (dotnet build)
  • Visual check: open SVGs in browser for each language

Related issues

Closes #127, closes #128, closes #129
Refs #183

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

jsboige and others added 4 commits April 6, 2026 18:29
…6d6cd9)

Remove XSLT fallback from TryAutomateSvgConversion — it was overwriting
valid Batik SVGs with low-quality XSLT output when SendKeys appeared to fail.

Restore the proven approach: direct SendKeys.SendWait calls without any
wrappers (no STA thread, no SendInput P/Invoke, no Win32Exception catch).

Improve window polling: wait for .mm filename in title (not just "FreeMind")
and call Process.Refresh() before checking MainWindowTitle.

Validated: Fallacies_fr.svg (2610 KB) — matches reference commit 46d6cd9.

Keystroke sequence (FreeMind 1.0.1 FR):
ESC → Alt+F → 8×DOWN → RIGHT → 12×DOWN → ENTER → ENTER → ENTER

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…uages

Replace 20 low-fidelity XSLT-generated SVGs (~860KB) with high-fidelity
FreeMind Batik SVGs (~2.6MB Fallacies, ~430KB Virtues) for FR/EN/RU/PT.

Generated via automated pipeline (SendKeys.SendWait to FreeMind 1.0.1 GUI).
Validated keystroke sequence: ESC → Alt+F → 8×DOWN → RIGHT → 12×DOWN → 3×ENTER

Note: Virtues SVGs contain FR content for all languages (no multilingual
data exists in CSV source for Virtues).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e status, and next steps

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jsboige
jsboige merged commit b12df8a into master Apr 6, 2026
1 check passed
@jsboige
jsboige deleted the feat/mindmap-batik-svgs-final branch June 1, 2026 21:42
jsboige added a commit that referenced this pull request Jun 21, 2026
…ript (#569)

Document the root cause of the FreeMind SVG export RDP fragility (no
automation API -> needs a foreground interactive desktop; idle/minimized
RDP yields a null foreground -> dropped keystrokes) and ship two fixes:

- Immediate (no code, no fidelity change): persistent interactive session
  recipe + Enable-MindmapInteractiveSession.ps1 helper (disable
  lock/screensaver/sleep; optional tscon /dest:console parking; autologon
  documented as jsboige-consent only).
- Long-term (changes engine): preserve the empirical Freeplane c.export()
  findings + the .mm-format blocker; tracked in #568. Flagged that
  Freeplane != Batik rendering -> needs ai-01/jsboige visual validation.

XSLT fallback stays out (regresses PR #184), per jsboige.

Co-authored-by: Claude <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 4, 2026
…cution) (#691)

Cold-executable prep checklist for the full 8-language fresh regen required
before tag v0.9.0 (decision #26). Triggered by ai-01 dispatch sde6s0 (primary).

Documents the regen harness code=truth (base master 21e2c66):
- 8 languages (fr canonical + en/ru/pt/es/ar/fa/zh), field suffixes, iteration
- ConverterMode flags (16, all merged) + default Mode + Apply stage ordering
- Regen sequence: clobber -> harvest -> PDF -> mindmaps -> OWL -> CMYK (last)
- Mandatory harvest cache-clobber (no --clean CLI; dotnet clean != clean regen)
- FreeMind GUI RDP-live-foreground prerequisite (XSLT proscribed #184)
- OWL mono-language EN+FR caveat (honest release-notes scoping)
- Per-language verification points (visual verdict = ai-01 lane)
- Pre-regen readiness gate (10-item checklist)

PREP ONLY — no regen launched (desktop non-interactive + content HOLD).
Corrects a sub-agent misread: CMYK (PdfCmykPostProcess #632/#652/#641) IS
merged on master, not worktree-only.

Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 6, 2026
…ker documented + design proposal (#737)

Executes dispatch `5czj9v` [1] PRIMAIRE in the DoD's explicit "SI bloqué → blocker documenté +
design proposal = livrable valide" form. Read-only synthesis — 0 re-probe of the stalled path.

The dispatch asked for a feasibility spike of the Freeplane headless c.export() SVG path (#568).
Code=truth (verified before any spike) shows the path is already blocked and the goal already met:

- PR #599 (25-27/06) documents the production-scale stall (§3.8): on REAL pipeline cards (Virtues
  161 KB, Fallacies 1.15 MB), the -R Groovy script never executes — Freeplane stalls at
  "requesting mode: MindMap" → kill at 240 s. The toy-sample 4-node probe that "broke through"
  §3.3 was not representative.
- Verdict NÉGATIF, endorsed by ai-01 and decided by jsboige WE 27/06. PR #599 closed (opt-in code
  not worth maintaining).
- The #568 goal (retirer la dépendance RDP-foreground) is ALREADY achieved by the OS-level fix
  #569 (tscon + persistent session, MERGED 2026-06-21) — which keeps the proven FreeMind+Batik
  rendering and removes the foreground requirement without an engine change.

Design proposal: (A) #569 [shipped, recommended] vs (B) c.export()+native Freeplane serialization
[multi-tick, engine≠Batik, need already covered] vs (C) timeout/retry wrapper [addresses symptom
not cause] vs (D) XSLT [forbidden by jsboige, PR #184].

Recommendation: close #568 (goal met via #569). Do NOT re-probe c.export() without a new
jsboige/ai-01 mandate + a concrete hypothesis distinguishing the production stall from the
toy-sample success. Honors the worker's standing lesson "NEVER re-try #568 (réfuté, #599 closed)".

Prepared in mode (a) of the worker's FLAG to the coordinator (msg gqvma1): consolidate the known
blocker + design proposal, no re-probe. Does not re-open a closed dossier — closes the dispatch's
[1] ask by recording the blocker is already documented and the goal already met by another path.

Read-only: 0 write Cards/, 0 régén, 0 CSV/DB/OWL, 0 rendering code, 0 re-probe. gh pr/issue view +
git log/show + Read of existing docs only.

Dispatch 5czj9v [1] PRIMAIRE / #568. Base 9ed2e78.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant