[M3] Widget fx-canvas sandboxé + protocole postMessage hôte↔canvas (SF-M3-04, ST-M3-06) #44

Closed
opened 2026-04-06 01:36:26 +00:00 by charles · 0 comments
Owner

Contexte

Le bloc fx-canvas est un widget HTML/JS libre (sandboxé) dans un WebView. Il réutilise CanvasRenderer de M2 et ajoute le protocole postMessage bidirectionnel pour la communication hôte↔canvas (ST-M3-06).

Critères d'acceptation

  • Réutiliser CanvasRenderer de fractal-ai (ou le déplacer dans fractal-rich / fractal-ext)
  • Protocole postMessage bidirectionnel :
    • Canvas → Hôte : Resize { width, height }, Action { name, data }
    • Hôte → Canvas : ThemeChanged { dark_mode }, Data(Value)
  • Le canvas ne peut PAS accéder au DOM parent (isolation stricte)
  • Pas de réseau, pas de localStorage, pas de cookies
  • Taille limitée (max 640×480 par défaut, configurable)
  • Fallback texte si WebKit2GTK absent

Notes techniques

  • CanvasToHost et HostToCanvas enums serialisés en JSON via postMessage JS
  • La même sandbox s'applique que pour M2 (fx-canvas et Canvas OpenClaw sont identiques techniquement)
  • Dépend de #27 (CanvasRenderer M2) et #36 (parser RichBlock)
## Contexte Le bloc `fx-canvas` est un widget HTML/JS libre (sandboxé) dans un WebView. Il réutilise `CanvasRenderer` de M2 et ajoute le protocole `postMessage` bidirectionnel pour la communication hôte↔canvas (ST-M3-06). ## Critères d'acceptation - [ ] Réutiliser `CanvasRenderer` de `fractal-ai` (ou le déplacer dans `fractal-rich` / `fractal-ext`) - [ ] Protocole `postMessage` bidirectionnel : - Canvas → Hôte : `Resize { width, height }`, `Action { name, data }` - Hôte → Canvas : `ThemeChanged { dark_mode }`, `Data(Value)` - [ ] Le canvas ne peut PAS accéder au DOM parent (isolation stricte) - [ ] Pas de réseau, pas de localStorage, pas de cookies - [ ] Taille limitée (max `640×480` par défaut, configurable) - [ ] Fallback texte si WebKit2GTK absent ## Notes techniques - `CanvasToHost` et `HostToCanvas` enums serialisés en JSON via `postMessage` JS - La même sandbox s'applique que pour M2 (`fx-canvas` et Canvas OpenClaw sont identiques techniquement) - Dépend de #27 (CanvasRenderer M2) et #36 (parser RichBlock)
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#44
No description provided.