1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
id: 3
title: "Spike : choisir la stack Wails et frontend"
state: closed
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:01.000Z
updatedAt: 2026-10-29T09:30:00.000Z
labels:
- "kind::spike"
- "area::ui"
- "priority::urgent"
- "size::M"
milestone: "Initialize"
epic: "Specifications"
body: |
## Contexte
Consignes techniques du draft [#1 — draft](.tickets/issues/0001-draft.yaml) : Go + Wails. Wails laisse le choix du framework frontend et il faut des briques non triviales : éditeur de code (Settings, fichiers), terminal, rendu Markdown avec coloration, layout à panels façon Zed.
## Pourquoi un spike
- **Wails v2 (stable) ou v3 (multi-fenêtres, nouvelle API)** : décision structurante, coûteuse à changer après coup.
- Les composants tiers dictent le framework : il vaut mieux choisir ceux-ci d'abord, puis le framework qui les intègre le mieux.
- Le rendu « sobre et fancy » demandé dépend beaucoup de ces choix (thème, typo, panels redimensionnables).
## Candidats à évaluer (non exhaustif)
| Besoin | Pistes |
| --- | --- |
| Framework | Svelte (léger, template Wails officiel), React, Vue |
| Éditeur | CodeMirror 6 (léger, extensible, mode YAML), Monaco (lourd mais complet) |
| Terminal | xterm.js + PTY côté Go (`creack/pty`) |
| Markdown | markdown-it / marked + Shiki ou highlight.js |
| Panels | split-panes / layout maison |
## Livrable
ADR `docs/adr/0002-stack-ui.md` + un prototype jetable : une fenêtre Wails avec 2 panels redimensionnables, un CodeMirror YAML et un xterm.js branché sur un shell local.
## Critères d'acceptation
- [ ] Version de Wails fixée et justifiée.
- [ ] Framework frontend et librairies choisis, avec poids du bundle et licence.
- [ ] Le prototype tourne sur le MacBook Air cible.
tasks:
- id: 1
title: "Comparer Wails v2 et v3 (stabilité, API events, multi-fenêtres)"
state: closed
priority: high
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:01.000Z
updatedAt: 2026-10-29T08:51:00.000Z
closedAt: 2026-10-29T08:51:00.000Z
- id: 2
title: "Comparer CodeMirror 6 et Monaco (poids, YAML, thèmes)"
state: closed
priority: medium
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:01.000Z
updatedAt: 2026-10-29T08:51:00.000Z
closedAt: 2026-10-29T08:51:00.000Z
- id: 3
title: "Valider xterm.js + PTY Go (creack/pty)"
state: closed
priority: medium
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:01.000Z
updatedAt: 2026-10-29T08:51:00.000Z
closedAt: 2026-10-29T08:51:00.000Z
- id: 4
title: "Choisir la lib Markdown + coloration compatible streaming"
state: closed
priority: medium
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:01.000Z
updatedAt: 2026-10-29T08:51:00.000Z
closedAt: 2026-10-29T08:51:00.000Z
- id: 5
title: "Choisir le framework frontend"
state: closed
priority: high
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:01.000Z
updatedAt: 2026-10-29T08:51:00.000Z
closedAt: 2026-10-29T08:51:00.000Z
- id: 6
title: "Prototype jetable : panels + éditeur + terminal"
state: closed
priority: medium
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:01.000Z
updatedAt: 2026-10-29T08:51:00.000Z
closedAt: 2026-10-29T08:51:00.000Z
- id: 7
title: "Rédiger l'ADR stack UI"
state: closed
priority: high
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:01.000Z
updatedAt: 2026-10-29T08:51:00.000Z
closedAt: 2026-10-29T08:51:00.000Z
- id: 8
title: "Lancer le prototype sur macOS (wails3 dev) et confirmer l'ADR 0002"
state: closed
priority: high
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T08:51:00.000Z
updatedAt: 2026-10-29T09:30:00.000Z
closedAt: 2026-10-29T09:30:00.000Z
comments:
- id: 1
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T08:51:00.000Z
body: |
## Résultat — décision prise, une vérification reste à faire sur macOS
[ADR 0002 — UI stack](docs/adr/0002-ui-stack.md), prototype [spikes/wails-ui](spikes/wails-ui/README.md).
- **Wails v3.0.0** (stable depuis le 26/10/2026) : services, événements typés, bindings TypeScript générés avec les commentaires Go, packaging macOS intégré.
- **Svelte 5 + TypeScript**, **paneforge** (panels), **markdown-it + Shiki + DOMPurify**, **CodeMirror 6**, **xterm.js + creack/pty**.
- Prototype compilé et lancé sous Linux (GTK4/WebKitGTK 6, Xvfb) : layout, streaming à 50 et 500 chunks/s (rendu une fois par frame), coloration pendant le streaming, HTML injecté non exécuté, vrai shell dans le terminal. Captures : `docs/spikes/ui/`.
**Reste ouvert** : la sandbox n'a pas de SDK macOS. Le prototype doit être lancé sur le Mac (`cd spikes/wails-ui && wails3 dev`) — tâche ajoutée ci-dessous. L'issue reste ouverte jusque-là.
- id: 2
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T09:05:00.000Z
body: |
Guide pas à pas pour la vérification sur Mac : [docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md](docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md) (EN : [docs/en/how-to/test-milestone-initialize-on-macos.md](docs/en/how-to/test-milestone-initialize-on-macos.md)). Les parties 4 et 5 couvrent cette issue ; elles expliquent aussi comment la fermer, ainsi que la milestone Initialize.
- id: 3
author:
name: k33g
email: ph.charriere@gmail.com
createdAt: 2026-10-29T09:30:00.000Z
body: |
## Vérifié sur macOS — issue fermée
Le propriétaire a déroulé le [guide de test macOS](docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md) : `wails3 dev` et `wails3 package` fonctionnent (panels, streaming, coloration, terminal, éditeur, thèmes). Seul écart constaté : les boutons de fenêtre macOS recouvraient « CHANNELS » ; corrigé par une marge `--titlebar-inset` (38 px sous macOS, alignée sur `InvisibleTitleBarHeight`), à reprendre dans le vrai shell UI (#12).
[ADR 0002](docs/adr/0002-ui-stack.md) confirmé.
|