feat(wall): navigation manuelle (flèches, boutons, pastilles) + position mémorisée + fix SSE

←/→ et contrôles à l'écran changent de projet; navigation manuelle
= pause de rotation 90 s; Espace = pause franche avec badge. La
position survit aux rechargements via sessionStorage (le cycle de
12 projets x 30 s dépassait le refresh de sécurité de 5 min: le
mur semblait figé). Fix: l'écoute SSE utilisait onmessage, inerte
pour les événements nommés 'gitea' du hub.
This commit is contained in:
Spark
2026-10-11 13:37:54 -04:00
parent 2bc8ccaf4f
commit 715687da66
3 changed files with 114 additions and 10 deletions
+26
View File
@@ -1080,3 +1080,29 @@ footer {
}
.triage-project:hover { border-color: var(--accent, #58a6ff); }
.triage-project-count { color: var(--text-3); }
/* ── Wallboard : navigation manuelle (0.11.0) ── */
.wall-nav {
position: fixed; left: 50%; bottom: 22px; transform: translateX(-50%);
display: flex; align-items: center; gap: 14px; z-index: 50;
}
.wall-nav-btn {
width: 46px; height: 46px; border-radius: 50%;
background: rgba(19, 26, 41, 0.72); color: #dbe4f0;
border: 1px solid rgba(143, 163, 191, 0.45);
font-size: 1.15rem; cursor: pointer; backdrop-filter: blur(4px);
}
.wall-nav-btn:hover { border-color: #58a6ff; color: #fff; }
.wall-dots { display: flex; gap: 8px; }
.wall-dot {
width: 13px; height: 13px; border-radius: 50%; padding: 0;
background: rgba(143, 163, 191, 0.35); border: 1px solid rgba(143, 163, 191, 0.5);
cursor: pointer;
}
.wall-dot.on { background: #58a6ff; border-color: #58a6ff; }
.wall-paused {
position: fixed; top: 18px; left: 50%; transform: translateX(-50%);
background: rgba(19, 26, 41, 0.85); color: #f0b429;
border: 1px solid rgba(240, 180, 41, 0.55); border-radius: 99px;
padding: 6px 16px; font-size: 0.95rem; z-index: 51;
}