From 37654840da993fbfae154a5ed449b1550843b00f Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Thu, 19 Mar 2026 21:18:12 +0100 Subject: [PATCH] Add version number on webpage --- web/build.mjs | 30 +++++++++++++++++++++++++++++- web/src/index.html | 13 +++++++++---- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/web/build.mjs b/web/build.mjs index f6b93ef..030578d 100644 --- a/web/build.mjs +++ b/web/build.mjs @@ -2,8 +2,10 @@ import esbuild from 'esbuild'; import { cpSync, mkdirSync, readFileSync, writeFileSync, existsSync, rmSync, readdirSync, statSync } from 'fs'; import { join, relative } from 'path'; import { createHash } from 'crypto'; +import { execSync } from 'child_process'; const webDir = import.meta.dirname; +const repoDir = join(webDir, '..'); const srcDir = join(webDir, 'src'); const distDir = join(webDir, 'dist'); const isDev = process.argv.includes('--dev'); @@ -73,6 +75,25 @@ if (existsSync(workerSrc)) { writeFileSync(join(distDir, 'js', 'patch-worker.js'), workerContent); } +// Get git version string +let versionStr = 'unknown'; +let versionHash = 'unknown'; +try { + const hash = String(execSync('git rev-parse --short HEAD', { cwd: repoDir })).trim(); + versionHash = hash; + + let tag = ''; + try { + tag = String(execSync('git describe --tags --exact-match', { cwd: repoDir, stdio: 'ignore' })).trim(); + } catch {} + if (tag) { + versionStr = tag; + } else { + const dirty = String(execSync('git status --porcelain', { cwd: repoDir })).trim(); + versionStr = dirty ? `${hash} (D)` : hash; + } +} catch {} + // Generate cache-busted index.html const bundleContent = readFileSync(join(distDir, 'bundle.js')); const bundleHash = createHash('md5').update(bundleContent).digest('hex').slice(0, 8); @@ -96,9 +117,16 @@ html = html.replace( `css/style.css?h=${cssHash}` ); +// Inject version string and link +html = html.replace('', `${versionStr}`); +html = html.replace( + 'href="https://github.com/nicoverbruggen/kobopatch-webui"', + `href="https://github.com/nicoverbruggen/kobopatch-webui/commit/${versionHash}"` +); + writeFileSync(join(distDir, 'index.html'), html); -console.log(`Built to ${distDir} (bundle: ${bundleHash}, css: ${cssHash})`); +console.log(`Built to ${distDir} (bundle: ${bundleHash}, css: ${cssHash}, version: ${versionStr})`); // Dev server mode if (isDev) { diff --git a/web/src/index.html b/web/src/index.html index 2ddeb89..cf97db0 100644 --- a/web/src/index.html +++ b/web/src/index.html @@ -377,13 +377,18 @@