3.4 KiB
3.4 KiB
V123 Opus WIRE - Dashboards Favorites/Pinning · 21avr 10:25
Context
Yacine CONTINUE. Continuer polish UX consolidation dashboards. Poursuite séquence additive V116-V122.
Design choice: URL hash, pas localStorage
| Pourquoi | Avantage |
|---|---|
URL hash #pins=a,b,c |
Shareable (bookmark, message) |
| Zero localStorage | Pas de conflit browser storage |
| history.replaceState | Pas de pollution historique |
| Auto-persist | Reload garde les pins sans code DB |
Livrables V123
1. Boutons étoile sur chaque tuile
- 69 boutons
★(étoile Unicode) - Couleur: gold
#fbbf24si pinned, gris#555sinon - Click:
event.preventDefault(); event.stopPropagation(); __dashTogglePin(name)— ne navigue pas au dashboard - Title: "Pin" / "Unpin" selon état
2. Pinned tiles rendus en premier
filtered = filtered.slice().sort((a,b) => {
const ap = pinned.has(a.name) ? 0 : 1;
const bp = pinned.has(b.name) ? 0 : 1;
return ap - bp;
});
Pinned passent devant, l'ordre interne (search/sort) reste.
3. Visual pinned
- Border color:
#fbbf24(vs catégorie color) - Class CSS
.pinnedavec box-shadow gold subtil - Hover: shadow gold intensifié
rgba(251,191,36,0.35)
4. URL hash sync
https://weval-consulting.com/all-ia-hub.html#pins=ethica-dashboard-live.html,crm-dashboard-live.html
window.history.replaceState(pas de scroll, pas d'entrée historique)- Reload: parse hash au chargement → pins restaurés
5. Counter enrichi
"69 / 69 tuiles (2 pins)"
Validation E2E Playwright V123
{
"v123": "pinning-url-hash",
"initial_star_buttons": 69,
"first_pin_works": true,
"second_pin_works": true,
"pinned_go_first": true,
"url_hash_persists": true,
"reload_preserves": true,
"unpin_works": true,
"js_errors": [],
"VERDICT": "WIRED"
}
Scénario testé:
- Initial: 69 tiles, 0 pinned, first = acquired-dashboard.html (alphabétique)
- Pin ethica: first = ethica, hash =
#pins=ethica-dashboard-live.html - Pin crm: first 2 = [crm, ethica], hash =
#pins=ethica-...,crm-... - Reload → pins preserved (hash stable)
- Unpin ethica: only crm pinned, hash updated
Artefacts
/var/www/html/api/blade-tasks/v123-pins-proof/01-initial.png/var/www/html/api/blade-tasks/v123-pins-proof/02-pinned-ethica.png/var/www/html/api/blade-tasks/v123-pins-proof/03-pinned-two.png/var/www/html/api/blade-tasks/v123-pins-proof/04-after-reload.png.../proof.json
GOLD backup
/opt/wevads/vault/all-ia-hub.html.GOLD-V123-pre-favorites
Métriques V122 → V123
| V122 | V123 | |
|---|---|---|
| Hub size | 43.4KB | 45.3KB (+1.9KB) |
| Features | sticky/hover/fadeIn | + 69 pin buttons |
| Persistent state | none | URL hash shareable |
| JS errors | 0 | 0 |
Séquence V116→V123 récapitulatif
| V | Feature |
|---|---|
| V116 | DASHBOARDS tab + 69 tuiles + 12 catégories |
| V117 | HTTP status badges (0 broken) |
| V118 | Intent chat dashboards status |
| V119 | Search + Sort + Counter |
| V120 | Keyboard Cmd+K / Escape |
| V121 | E2E proof keyboard |
| V122 | CSS polish (sticky, hover, fadeIn, focus rings) |
| V123 | Favorites/pinning via URL hash |
Doctrines
#1 scan · #3 GOLD · #4 honnêteté (E2E prouvé) · #13 cause racine · #14 ADDITIF PUR · #16 NR · #60 UX premium (gold hover, URL share) · #100