Spécifique ObsiGate (en plus du tronc commun ci-dessous)
Barre inline dans frontend/index.html : bouton trois points supprimé ; relais onAction("menu") (clic #header-menu-btn) supprimé. Le bouton natif #header-menu-btn d'ObsiGate lui-même est inchangé et reste utilisable depuis l'en-tête ObsiGate — seul le relais depuis la barre disparaît, donc pas de bouton mort et pas de fonction perdue.
Réécriture DRACO_URLS, avatar via /api/auth/me, autres branches onAction : inchangés.
Retirer le bouton trois points et son menu par défaut, ajouter « Console Spark » au menu de la marque, corriger focus/fermeture. Aucun bump de version, aucun merge, aucune fermeture d'issue par ce chantier (le coordinateur merge et publie à la fin). Ordre de merge suggéré : commons d'abord, puis les 4 hôtes.
Audit — bug de fermeture sur tiktak-dev (rappel)
Cause prouvée dans app/static/js/app.js (navigation #89) : document/window.addEventListener est remplacé par un registre (__tcDocWin) et chaque navigation douce appelle tcInit() → __tcTeardown(), qui supprime les écouteurs du registre — y compris ceux de draco-barre.js (script defer, enregistré après le tcInit() initial). La barre survit à la navigation (hors .layout remplacé) mais ses gestionnaires sont morts : menu ouvert avant navigation impossible à fermer (Échap/clic extérieur sans effet), et la marque (href="/") interceptée comme navigation interne au lieu de basculer le menu. Correctif en deux points : (1) dans le JS vendangé, écouteurs clic/Échap posés via EventTarget.prototype (hors registre, jamais supprimés par le teardown) ; (2) dans le gabarit TikTak, exclusion de .draco-bar de l'intercepteur SPA (cette PR-ci, TikTak uniquement).
Ce qui change (cet hôte)
Gabarit : bouton trois points supprimé ; branche onAction("menu") morte supprimée (elle retournait false pour obtenir le menu par défaut v0.1.6 — plus aucun bouton à relayer, donc pas de bouton mort).
JS/CSS vendangés = copie exacte du nouveau commons : pas de menu trois points ; menu de la marque + entrée « Console Spark » (logo ✦, « Agent commun ») après Kanbante, href = URL agent résolue (explicite > dérivation -devagent-dev > défaut prod https://agent.dracodev.net/, aucun hôte spark-dev inventé).
Focus/fermeture : Espace sur la marque (focus premier item), Échap (focus rendu au déclencheur), nouvel appui marque, clic extérieur (ne déplace volontairement pas le focus — choix documenté dans la PR commons).
Validation navigateur réel sur tiktak-dev après déploiement encore à faire par Bruno (ouvrir, naviguer en douce, Échap / extérieur / marque + retour focus). Preuve par tests ici : suite commons 25/25, 98 assertions (dont survie au teardown simulé) ; suites propres de l'hôte non relancées dans ce chantier (fichiers vérifiés : diff minimal, node --check OK pour les JS touchés, pas de secret).
## Spécifique ObsiGate (en plus du tronc commun ci-dessous)
- Barre inline dans `frontend/index.html` : bouton trois points supprimé ; relais `onAction("menu")` (clic `#header-menu-btn`) supprimé. **Le bouton natif `#header-menu-btn` d'ObsiGate lui-même est inchangé** et reste utilisable depuis l'en-tête ObsiGate — seul le relais depuis la barre disparaît, donc pas de bouton mort et pas de fonction perdue.
- Réécriture `DRACO_URLS`, avatar via `/api/auth/me`, autres branches `onAction` : inchangés.
## Contexte — fusion-trois-apps #70 (chantier 3), vendoring de Projets/dracodev-commons PR #2
Retirer le bouton trois points et son menu par défaut, ajouter « Console Spark » au menu de la marque, corriger focus/fermeture. **Aucun bump de version, aucun merge, aucune fermeture d'issue par ce chantier** (le coordinateur merge et publie à la fin). Ordre de merge suggéré : commons d'abord, puis les 4 hôtes.
## Audit — bug de fermeture sur tiktak-dev (rappel)
Cause prouvée dans `app/static/js/app.js` (navigation #89) : `document/window.addEventListener` est remplacé par un registre (`__tcDocWin`) et chaque navigation douce appelle `tcInit()` → `__tcTeardown()`, qui supprime les écouteurs du registre — y compris ceux de `draco-barre.js` (script `defer`, enregistré après le `tcInit()` initial). La barre survit à la navigation (hors `.layout` remplacé) mais ses gestionnaires sont morts : menu ouvert avant navigation impossible à fermer (Échap/clic extérieur sans effet), et la marque (`href="/"`) interceptée comme navigation interne au lieu de basculer le menu. Correctif en deux points : (1) dans le JS vendangé, écouteurs clic/Échap posés via `EventTarget.prototype` (hors registre, jamais supprimés par le teardown) ; (2) dans le gabarit TikTak, exclusion de `.draco-bar` de l'intercepteur SPA (cette PR-ci, TikTak uniquement).
## Ce qui change (cet hôte)
- Gabarit : bouton trois points supprimé ; branche `onAction("menu")` morte supprimée (elle retournait `false` pour obtenir le menu par défaut v0.1.6 — plus aucun bouton à relayer, donc pas de bouton mort).
- JS/CSS vendangés = copie exacte du nouveau commons : pas de menu trois points ; menu de la marque + entrée **« Console Spark »** (logo ✦, « Agent commun ») après Kanbante, href = URL agent résolue (explicite > dérivation `-dev` `agent-dev` > défaut prod `https://agent.dracodev.net/`, **aucun hôte `spark-dev` inventé**).
- Focus/fermeture : Espace sur la marque (focus premier item), Échap (focus rendu au déclencheur), nouvel appui marque, clic extérieur (ne déplace volontairement pas le focus — choix documenté dans la PR commons).
- Autres branches `onAction` (rail, palette, domaine, alertes, spark, rappel-entête), onglets, avatar, pastilles : **inchangés**.
## Limites
- Validation navigateur réel sur tiktak-dev après déploiement encore à faire par Bruno (ouvrir, naviguer en douce, Échap / extérieur / marque + retour focus). Preuve par tests ici : suite commons `25/25, 98 assertions` (dont survie au teardown simulé) ; suites propres de l'hôte non relancées dans ce chantier (fichiers vérifiés : diff minimal, `node --check` OK pour les JS touchés, pas de secret).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Spécifique ObsiGate (en plus du tronc commun ci-dessous)
frontend/index.html: bouton trois points supprimé ; relaisonAction("menu")(clic#header-menu-btn) supprimé. Le bouton natif#header-menu-btnd'ObsiGate lui-même est inchangé et reste utilisable depuis l'en-tête ObsiGate — seul le relais depuis la barre disparaît, donc pas de bouton mort et pas de fonction perdue.DRACO_URLS, avatar via/api/auth/me, autres branchesonAction: inchangés.Contexte — fusion-trois-apps #70 (chantier 3), vendoring de Projets/dracodev-commons PR #2
Retirer le bouton trois points et son menu par défaut, ajouter « Console Spark » au menu de la marque, corriger focus/fermeture. Aucun bump de version, aucun merge, aucune fermeture d'issue par ce chantier (le coordinateur merge et publie à la fin). Ordre de merge suggéré : commons d'abord, puis les 4 hôtes.
Audit — bug de fermeture sur tiktak-dev (rappel)
Cause prouvée dans
app/static/js/app.js(navigation #89) :document/window.addEventListenerest remplacé par un registre (__tcDocWin) et chaque navigation douce appelletcInit()→__tcTeardown(), qui supprime les écouteurs du registre — y compris ceux dedraco-barre.js(scriptdefer, enregistré après letcInit()initial). La barre survit à la navigation (hors.layoutremplacé) mais ses gestionnaires sont morts : menu ouvert avant navigation impossible à fermer (Échap/clic extérieur sans effet), et la marque (href="/") interceptée comme navigation interne au lieu de basculer le menu. Correctif en deux points : (1) dans le JS vendangé, écouteurs clic/Échap posés viaEventTarget.prototype(hors registre, jamais supprimés par le teardown) ; (2) dans le gabarit TikTak, exclusion de.draco-barde l'intercepteur SPA (cette PR-ci, TikTak uniquement).Ce qui change (cet hôte)
onAction("menu")morte supprimée (elle retournaitfalsepour obtenir le menu par défaut v0.1.6 — plus aucun bouton à relayer, donc pas de bouton mort).-devagent-dev> défaut prodhttps://agent.dracodev.net/, aucun hôtespark-devinventé).onAction(rail, palette, domaine, alertes, spark, rappel-entête), onglets, avatar, pastilles : inchangés.Limites
25/25, 98 assertions(dont survie au teardown simulé) ; suites propres de l'hôte non relancées dans ce chantier (fichiers vérifiés : diff minimal,node --checkOK pour les JS touchés, pas de secret).