feat(dashboard): serve H0M3 at /, relocate dashboard to /dashboard.html (#1464)
Step 2 of the nav restructure: make the H0M3 menu hub the landing page at / and move the dashboard SPA to /dashboard.html, with every surface linking back to the hub. Mechanism (frontend-only, no host-side change — confirmed against the ServeDir route table): the dashboard's ServeDir fallback serves index.html at / via append_index_html_on_directories, and there is no SPA path-routing catch-all to break. The dashboard SPA is served as the plain file dashboard.html so it never shadows the exact-match /dashboard/stream + /dashboard/history SSE routes registered before the fallback. - Swap the HTML entry files: the H0M3 page becomes index.html (loads home.js → served at /), and the dashboard SPA becomes dashboard.html (loads tabs.js → served at /dashboard.html). build.mjs copies the new set; JS bundle names are unchanged (referenced by absolute /static/ paths, independent of the HTML filename). - H0M3 Dashboard tile now points at /dashboard.html. - The dashboard gains a "← home" back-link in its chrome; flow.html and logs.html relabel their back-link from "← dashboard" to "← home" (href stays / — which is the hub now). Pages link to the hub, not to each other. - Agent page (app.js + stats.js): the "↑ dashboard" link now targets /dashboard.html. The API base (rebuild / answer-question / mark-all-read POSTs) stays the origin root, unchanged. - Comment-only: tabs.js / flow.js / common.js references to the dashboard's old index.html filename updated to dashboard.html. Note for review: git renders the file swap as a deleted home.html + an added dashboard.html + a heavily-modified index.html, because index.html exists on both sides with swapped content. It's a content swap, not a rewrite — the built dist/ is verified (index.html→home.js, dashboard.html →tabs.js). Deferred to a follow-up: removing the FL0W / L0GS / M4TR1X "→" page-links from the dashboard tab strip (touches tabs.js gating/overflow), and the shared reusable chrome component (a later step).
This commit is contained in:
parent
d7e4028a16
commit
8ddab401f9
12 changed files with 479 additions and 449 deletions
|
|
@ -186,10 +186,13 @@ window.marked = marked;
|
|||
if (!menu) return;
|
||||
menu.replaceChildren();
|
||||
|
||||
// ↑ dashboard — host dashboard back-link.
|
||||
// ↑ dashboard — host dashboard back-link. The dashboard SPA lives at
|
||||
// `dashboard.html` (the `/` root now serves the H0M3 menu hub), so the
|
||||
// link targets that file; `dashUrl` itself stays the API origin used
|
||||
// for the rebuild / answer-question / mark-all-read POSTs below.
|
||||
menu.append(el('a', {
|
||||
class: 'overflow-item overflow-item-dashboard',
|
||||
href: dashUrl,
|
||||
href: dashUrl + 'dashboard.html',
|
||||
target: '_blank',
|
||||
rel: 'noopener',
|
||||
role: 'menuitem',
|
||||
|
|
|
|||
|
|
@ -403,12 +403,13 @@ window.Chart = Chart;
|
|||
document.getElementById('title').textContent = '◆ ' + s.label + ' ◆';
|
||||
const dl = document.getElementById('dashboard-link');
|
||||
// When accessed via hive-gateway the page lives at `/agent/<name>/`
|
||||
// on the same origin as the dashboard (`/`). Detect via path prefix
|
||||
// on the same origin as the dashboard. Detect via path prefix
|
||||
// rather than the direct port (which is unreachable or wrong scheme
|
||||
// behind HTTPS TLS termination).
|
||||
// behind HTTPS TLS termination). The dashboard SPA lives at
|
||||
// `dashboard.html` — the `/` root now serves the H0M3 menu hub.
|
||||
dl.href = window.location.pathname.startsWith('/agent/')
|
||||
? window.location.origin + '/'
|
||||
: 'http://' + window.location.hostname + ':' + s.dashboard_port + '/';
|
||||
? window.location.origin + '/dashboard.html'
|
||||
: 'http://' + window.location.hostname + ':' + s.dashboard_port + '/dashboard.html';
|
||||
} catch (_) { /* non-fatal */ }
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue