add multi-page notepad and memos toolbox tool
All checks were successful
Deploy Sokko G / deploy (push) Successful in 16s

This commit is contained in:
Shinuwa 2026-08-25 12:03:11 +02:00
parent fcabbe8029
commit 6125336338
33 changed files with 3787 additions and 138 deletions

View file

@ -15,6 +15,8 @@ Checklist à suivre lors de l'ajout ou de la modification d'un outil, d'une page
- Si l'outil porte un état de progression, vérifier que l'import texte repart de l'état initial attendu.
- Vérifier l'affichage dans la page toolbox complète.
- Vérifier l'affichage dans le panneau latéral.
- Pour le Bloc Note, vérifier la sélection, l'ajout, le renommage et la suppression de pages en page complète, panneau latéral et mobile.
- Pour Memos, vérifier l'édition courte, les couleurs, la réorganisation et la bande déroulante.
- Vérifier le mode une colonne et deux colonnes.
- Vérifier que l'ajout, la suppression et la réorganisation respectent `moduleOrder.one` et `moduleOrder.two`.
- Vérifier le quota de stockage si l'outil manipule des données lourdes.

View file

@ -83,42 +83,75 @@ Les associations entre pages jeux et toolboxes sont stockées dans `kv/links`.
}
```
## Outil Bloc Notes
## Outil Bloc Note
Type : `notepad`
```json
{
"html": "<p>Notes <strong>rapides</strong>...</p>",
"text": "Notes rapides...",
"updatedAt": "2026-07-29T12:00:00.000Z",
"drawingMode": "permanent",
"drawings": {
"strokes": [
{
"id": "stroke1",
"color": "#f6c453",
"width": 4,
"points": [
{ "x": 12.5, "y": 48 },
{ "x": 24, "y": 52.5 }
"activePageId": "page1",
"pages": [
{
"id": "page1",
"title": "Page 1",
"html": "<p>Notes <strong>rapides</strong>...</p>",
"text": "Notes rapides...",
"updatedAt": "2026-07-29T12:00:00.000Z",
"drawingMode": "permanent",
"drawings": {
"strokes": [
{
"id": "stroke1",
"color": "#f6c453",
"width": 4,
"points": [
{ "x": 12.5, "y": 48 },
{ "x": 24, "y": 52.5 }
]
}
]
}
]
}
}
]
}
```
Stockage compact :
- l'ancien format `{ "text": "..." }` reste accepté et est converti en HTML riche au prochain enregistrement ;
- l'ancien format mono-page `{ "html": "...", "text": "..." }` reste accepté et est converti en `pages[0]` au prochain enregistrement ;
- `activePageId` est omis si la première page stockée est active ;
- `html` est nettoyé avec une allowlist de balises et de couleurs ;
- `text` conserve une version texte pour les exports et les fallbacks ;
- `updatedAt` est omis si vide ou invalide ;
- `drawingMode` vaut `temporary` par défaut et est omis dans ce cas ;
- `drawings` est stocké uniquement si `drawingMode` vaut `permanent` et qu'au moins un trait valide existe ;
- les dessins temporaires du bloc-notes sont conservés dans `sessionStorage`, pas dans IndexedDB ;
- si le texte, la date et les dessins permanents sont vides, l'entrée de module peut être supprimée.
- les dessins temporaires du bloc-note sont conservés dans `sessionStorage` par toolbox, outil et page, pas dans IndexedDB ;
- si toutes les pages sont vides et que seule la page par défaut reste présente, l'entrée de module peut être supprimée.
## Outil Memos
Type : `memos`
```json
{
"tickerEnabled": true,
"items": [
{
"id": "memo1",
"text": "Penser à sauvegarder avant le boss",
"color": "#f6c453",
"updatedAt": "2026-08-21T12:00:00.000Z"
}
]
}
```
Stockage compact :
- `tickerEnabled` vaut `true` par défaut et est omis dans ce cas ;
- `updatedAt` est omis si vide ou invalide ;
- les mémos sans texte sont ignorés ;
- si aucun mémo n'est valide et que la bande est active par défaut, l'entrée de module peut être supprimée.
## Outil Checklist
@ -878,7 +911,8 @@ Règles communes :
Formats :
- `notepad` : format structuré `@notepad`, bloc `@html` / `@endhtml` pour le HTML riche nettoyé, meta `@drawingMode: permanent` et `@drawings: {...}` pour les dessins permanents. Un collage texte simple reste accepté et devient une note sans mise en forme.
- `notepad` : format structuré `@notepad`, blocs `@page: Titre`, `@html` / `@endhtml` pour le HTML riche nettoyé, meta `@drawingMode: permanent` et `@drawings: {...}` pour les dessins permanents. Un collage texte simple reste accepté et devient une page sans mise en forme.
- `memos` : une ligne par mémo, avec préfixe `-` optionnel et suffixe couleur `| color=#f6c453` ; les anciens préfixes `*` sont acceptés puis normalisés.
- `checklist` : sections `# Catégorie`, lignes `Item: quantité cible`.
- `links` : lignes `Titre: https://...` ou URL seule.
- `counters` : lignes `Libellé: valeur`, valeurs négatives acceptées.