diff --git a/public/app.js b/public/app.js index 08d570f0..f58cf8fe 100644 --- a/public/app.js +++ b/public/app.js @@ -283,6 +283,11 @@ function navigate() { basePage = 'node-analytics'; } + // Special route: packet/123 → standalone packet detail page + if (basePage === 'packet' && routeParam) { + basePage = 'packet-detail'; + } + // Update nav active state document.querySelectorAll('.nav-link[data-route]').forEach(el => { el.classList.toggle('active', el.dataset.route === basePage); diff --git a/public/packets.js b/public/packets.js index 99e9dbd3..e35c7b95 100644 --- a/public/packets.js +++ b/public/packets.js @@ -817,7 +817,7 @@ const copyLinkBtn = panel.querySelector('.copy-link-btn'); if (copyLinkBtn) { copyLinkBtn.addEventListener('click', () => { - const url = `${location.origin}/#/packets/id/${copyLinkBtn.dataset.packetId}`; + const url = `${location.origin}/#/packet/${copyLinkBtn.dataset.packetId}`; navigator.clipboard.writeText(url).then(() => { copyLinkBtn.textContent = '✅ Copied!'; setTimeout(() => { copyLinkBtn.textContent = '🔗 Copy Link'; }, 1500); @@ -1125,4 +1125,31 @@ } registerPage('packets', { init, destroy }); + + // Standalone packet detail page: #/packet/123 + registerPage('packet-detail', { + init: async (app, routeParam) => { + const id = Number(routeParam); + app.innerHTML = `