[M2] CanvasRenderer : WebKit2GTK sandboxé avec CSP strict #196

Closed
opened 2026-04-06 08:53:14 +00:00 by charles · 0 comments
Owner

Contexte

Les agents peuvent envoyer des "Canvas" — widgets HTML interactifs. Ils doivent s'afficher dans un WebView isolé, sans accès réseau ni au DOM parent.

Critères d'acceptation

  • Struct CanvasRenderer { webview: webkit2gtk::WebView } créée avec sandbox strict
  • Configuration WebKit : JS activé, pas d'accès fichier cross-origin, pas de cache offline, pas de réseau (connect-src 'none')
  • CSP injecté via UserContentManager : default-src 'self'; script-src 'unsafe-inline'; connect-src 'none'; img-src 'self' data:
  • Méthode render_canvas(html, max_size) : wrapper le HTML dans un document minimal avec CSP, limiter la taille du WebView
  • Protocole postMessage pour communication bidirectionnelle : CanvasToHost (Resize, Action) et HostToCanvas (ThemeChanged, Data)
  • Taille maximale configurable (défaut 640x480)

Notes techniques

  • Crate : crates/fractal-ai/ ou crates/fractal-gtk/
  • webkit2gtk déjà dans les dépendances (README)
  • Voir specs §4.3 (ST-M2-04) et §5.3 (ST-M3-06 pour le protocole postMessage)
## Contexte Les agents peuvent envoyer des "Canvas" — widgets HTML interactifs. Ils doivent s'afficher dans un WebView isolé, sans accès réseau ni au DOM parent. ## Critères d'acceptation - [ ] Struct `CanvasRenderer { webview: webkit2gtk::WebView }` créée avec sandbox strict - [ ] Configuration WebKit : JS activé, pas d'accès fichier cross-origin, pas de cache offline, pas de réseau (`connect-src 'none'`) - [ ] CSP injecté via `UserContentManager` : `default-src 'self'; script-src 'unsafe-inline'; connect-src 'none'; img-src 'self' data:` - [ ] Méthode `render_canvas(html, max_size)` : wrapper le HTML dans un document minimal avec CSP, limiter la taille du WebView - [ ] Protocole `postMessage` pour communication bidirectionnelle : `CanvasToHost` (Resize, Action) et `HostToCanvas` (ThemeChanged, Data) - [ ] Taille maximale configurable (défaut `640x480`) ## Notes techniques - Crate : `crates/fractal-ai/` ou `crates/fractal-gtk/` - `webkit2gtk` déjà dans les dépendances (README) - Voir specs §4.3 (ST-M2-04) et §5.3 (ST-M3-06 pour le protocole postMessage)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/my-fractal#196
No description provided.