diff options
| author | Adam Soltys <[email protected]> | 2026-08-18 09:20:17 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-08-18 09:20:17 -0700 |
| commit | 8e0bf7dc840ecdf6ba991c5e63d4c8304419342d (patch) | |
| tree | cc1159143c47ba2d5a8520ea3ac44f52d1595292 | |
| parent | ca8e5590994eec3c5c4e05eac59f3906ca1a2cdc (diff) | |
| download | coinosv3-8e0bf7dc840ecdf6ba991c5e63d4c8304419342d.tar.gz coinosv3-8e0bf7dc840ecdf6ba991c5e63d4c8304419342d.zip | |
The footer says what it stamps: the word commit, the short hash git actually knows, and a link to it — the build token stays where it belongs, inside the service worker
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
| -rw-r--r-- | build.js | 14 | ||||
| -rw-r--r-- | src/app.js | 7 |
2 files changed, 17 insertions, 4 deletions
@@ -245,6 +245,18 @@ const flagsPlugin = (staging) => ({ }, }); +// The commit this build came from: the deploy hook passes GIT_COMMIT (the +// worktree it builds in has no .git), local builds ask git directly. +function gitCommit() { + if (process.env.GIT_COMMIT) return process.env.GIT_COMMIT.slice(0, 7); + try { + const r = Bun.spawnSync(['git', 'rev-parse', '--short', 'HEAD']); + const out = r.stdout.toString().trim(); + if (/^[0-9a-f]{6,}$/.test(out)) return out; + } catch {} + return 'dev'; +} + export async function buildHtml({ minify = true, pwa = minify, features = process.env.HAL_FEATURES, staging = isStaging() } = {}) { const result = await Bun.build({ entrypoints: ['./src/app.js'], @@ -276,7 +288,7 @@ ${pwa ? PWA_HEAD : ''}<style>${css}</style> <div id="app"></div> <script>${js}</script> ${pwa ? SW_REGISTER + '\n' : ''}</body> -</html>`; +</html>`.replaceAll('{{COMMIT}}', gitCommit()); } if (import.meta.main) { @@ -230,9 +230,10 @@ function footer() { h('span', { class: 'faint' }, ' · '), t('footerSourceOn') + ' ', h('a', { href: 'https://github.com/coinos/coinosv3', target: '_blank', rel: 'noopener' }, 'GitHub'), - // The build stamp settles every "is my PWA fresh?" question at a glance - // ({{VERSION}} is filled at build time, like the service worker's). - h('span', { class: 'faint' }, ' · {{VERSION}}') + // The commit stamp settles "is my PWA fresh?" AND "what code is this?" + // in one glance — filled at build time, links to the commit on GitHub. + h('span', { class: 'faint' }, ' · '), + h('a', { class: 'faint', href: 'https://github.com/coinos/coinosv3/commit/{{COMMIT}}', target: '_blank', rel: 'noopener' }, 'commit {{COMMIT}}') ), h( 'div', |
