diff --git a/frontend/packages/dashboard/src/home.js b/frontend/packages/dashboard/src/home.js index 0dead042..fc4918e1 100644 --- a/frontend/packages/dashboard/src/home.js +++ b/frontend/packages/dashboard/src/home.js @@ -52,11 +52,18 @@ async function init() { // Rev line: absent when the flake ref isn't a local path pin (a bare // `github:` url has no on-disk rev to canonicalize) — hidden rather // than showing a placeholder in that case. + // + // `current_flake_rev` canonicalizes to a nix store path + // (/nix/store/-) — the part that actually varies between + // builds is the hash right after `/nix/store/`, not the trailing + // `-` (constant across revs). Slice the hash out of the front + // rather than truncating from the tail, so two different builds don't + // render as the same string. Falls back to a plain head-slice for a + // non-store path (e.g. a bare local dir during dev). const rev = $('hive-rev'); if (rev && state.hyperhive_rev) { - const short = state.hyperhive_rev.length > 16 - ? `…${state.hyperhive_rev.slice(-12)}` - : state.hyperhive_rev; + const storeMatch = state.hyperhive_rev.match(/^\/nix\/store\/([^-]+)/); + const short = storeMatch ? storeMatch[1].slice(0, 12) : state.hyperhive_rev.slice(0, 12); rev.textContent = `rev ${short}`; rev.title = state.hyperhive_rev; rev.hidden = false;