debug(plugin): add console logging to svrnty_nav.js to diagnose silent injection failure
Some checks failed
plugin-tests / test (push) Failing after 5s

This commit is contained in:
Svrnty 2026-05-24 12:55:35 -04:00
parent 80420e0d01
commit 7a5c48c775

View File

@ -11,6 +11,9 @@
"use strict"; "use strict";
if (window.__svrntyNavLoaded) return; if (window.__svrntyNavLoaded) return;
window.__svrntyNavLoaded = true; window.__svrntyNavLoaded = true;
const LOG = (...a) => console.log("[svrnty-nav]", ...a);
const ERR = (...a) => console.error("[svrnty-nav]", ...a);
LOG("loaded", { readyState: document.readyState });
const TABS = [ const TABS = [
{ {
@ -31,23 +34,36 @@
function _injectButtons() { function _injectButtons() {
const nav = document.querySelector(".sidebar-nav"); const nav = document.querySelector(".sidebar-nav");
if (!nav) return false; if (!nav) {
LOG("_injectButtons: .sidebar-nav not found yet");
return false;
}
let added = 0;
TABS.forEach((t) => { TABS.forEach((t) => {
if (nav.querySelector('[data-panel="' + t.id + '"]')) return; if (nav.querySelector('[data-panel="' + t.id + '"]')) return;
const btn = document.createElement("button"); try {
btn.className = "nav-tab has-tooltip has-tooltip--bottom svrnty-nav-tab"; const btn = document.createElement("button");
btn.setAttribute("data-panel", t.id); btn.className = "nav-tab has-tooltip has-tooltip--bottom svrnty-nav-tab";
btn.setAttribute("data-label", t.label); btn.setAttribute("data-panel", t.id);
btn.setAttribute("data-tooltip", t.tooltip); btn.setAttribute("data-label", t.label);
btn.setAttribute("aria-label", t.label); btn.setAttribute("data-tooltip", t.tooltip);
btn.innerHTML = t.svg; btn.setAttribute("aria-label", t.label);
btn.addEventListener("click", () => { btn.innerHTML = t.svg;
if (typeof window.switchPanel === "function") { btn.addEventListener("click", () => {
window.switchPanel(t.id, { fromRailClick: true }); LOG("button clicked:", t.id);
} if (typeof window.switchPanel === "function") {
}); window.switchPanel(t.id, { fromRailClick: true });
nav.appendChild(btn); } else {
ERR("switchPanel is not a function — cannot route click");
}
});
nav.appendChild(btn);
added++;
} catch (e) {
ERR("failed to inject button", t.id, e);
}
}); });
LOG("_injectButtons: added", added, "of", TABS.length, "(nav children:", nav.children.length, ")");
return true; return true;
} }
@ -81,13 +97,20 @@
return true; return true;
} }
let _initAttempts = 0;
function _init() { function _init() {
_initAttempts++;
const buttonsOk = _injectButtons(); const buttonsOk = _injectButtons();
const wrapOk = _wrapSwitchPanel(); const wrapOk = _wrapSwitchPanel();
if (!buttonsOk || !wrapOk) { if (!buttonsOk || !wrapOk) {
// DOM not ready yet — retry on next paint if (_initAttempts < 100) {
requestAnimationFrame(_init); requestAnimationFrame(_init);
} else {
ERR("_init gave up after", _initAttempts, "attempts. buttonsOk=", buttonsOk, "wrapOk=", wrapOk);
}
return;
} }
LOG("_init completed in", _initAttempts, "attempt(s)");
} }
if (document.readyState === "loading") { if (document.readyState === "loading") {