Phase 002: rebrand to hermes-ui and consolidate i18n to zh/en
Build / build (push) Canceled after 0s
NPM Lockfile Check / npm ci --ignore-scripts (push) Canceled after 0s
Playwright / e2e (push) Canceled after 0s

Removes the ekko / hermes-web-ui branding from the whole tree and drops
eight locale files, so the project presents one name and one language pair.

Data compatibility is deliberate, not accidental: DB filenames, the JWT
audience, and skill manifest ownership all still recognise their pre-rename
values so existing deployments under ~/.hermes-web-ui keep working without a
re-login or a re-injection.

scripts/harness-check.mjs now scans for the legacy strings and fails the
build on any new occurrence, with an explicit allow-list (and reasons) for
the compatibility paths that must keep them.
This commit is contained in:
2026-10-16 11:11:29 +08:00
parent 1e9ea89d86
commit c93e1fe1bd
70 changed files with 1305 additions and 17856 deletions
@@ -400,8 +400,8 @@ export async function downloadWebUiVersion(version: string, source: VersionDownl
if (!cleanVersion) throw new Error('Web UI version is required')
const releaseTag = `v${cleanVersion}`
const assetName = `hermes-web-ui-${cleanVersion}.tar.gz`
const manifestName = `hermes-web-ui-${cleanVersion}.json`
const assetName = `hermes-ui-${cleanVersion}.tar.gz`
const manifestName = `hermes-ui-${cleanVersion}.json`
const manifestUrl = downloadAssetUrl(manifestName, releaseTag, source)
onProgress?.({ stage: 'resolve', message: 'runtimeVersions.jobStage.resolveWebUi' })
const manifest = await fetchJson<{ asset?: { sha256?: string; size?: number } }>(manifestUrl)
@@ -424,7 +424,7 @@ export async function downloadWebUiVersion(version: string, source: VersionDownl
onProgress?.({ stage: 'extract', message: 'runtimeVersions.jobStage.extractWebUi' })
await extractTarGzip(archive, tempRoot)
const extractedRoot = join(tempRoot, 'webui')
for (const required of ['package.json', 'bin/hermes-web-ui.mjs', 'dist/server/index.js']) {
for (const required of ['package.json', 'bin/hermes-ui.mjs', 'dist/server/index.js']) {
if (!existsSync(join(extractedRoot, required))) throw new Error(`Web UI archive is missing required file: ${required}`)
}
onProgress?.({ stage: 'install', message: 'runtimeVersions.jobStage.installWebUi' })