generate index.html's absolute URLs from PUBLIC_URL
index.html hardcoded the deployment's domain in eight places, so every instance had to carry its own edit of the file — the only thing separating the rezio branch from master. The tags genuinely need absolute URLs. OpenGraph is fetched standalone by crawlers, and Bun's HTML bundler treats a root-relative href as an asset to resolve on disk, failing the build with "Could not resolve: /favicon.ico" — external URLs are the only form it passes through untouched. Bun's HTML import offers no substitution hook, so scripts/gen-index.ts swaps __PUBLIC_URL__ for the value in .env and writes index.gen.html, which the server imports. index.html is the tracked template and is now identical on every deployment; index.gen.html is gitignored. predev/prestart run the generator, and it is idempotent so --watch does not loop. Substituting also fixes the manifest: an absolute URL puts its fetch in CORS mode, which failed whenever the hardcoded domain was not the serving origin. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7ef0e90cc4
commit
52ddf7df0e
+1
-1
@@ -12,7 +12,7 @@ import { cliampWebsocket } from './servers/api/cliamp/websocket';
|
||||
import { cliampAudioWebsocket } from './servers/api/cliamp/audio-ws';
|
||||
import { desktopWebsocket } from './servers/api/desktop/websocket';
|
||||
import { findEntryByProxyId, touchEntry } from './servers/api/dev-server/router';
|
||||
import officerWeb from './apps/officer-web/index.html';
|
||||
import officerWeb from './apps/officer-web/index.gen.html';
|
||||
import { startBrowserRelay } from './servers/api/browser/relay';
|
||||
import { registerSidecar, unregisterSidecar, handleSidecarMessage } from './servers/sidecar-registry';
|
||||
import './servers/api/chat/opencode/sidecar-server'; // subscribe to the opencode sidecar's port report
|
||||
|
||||
Reference in New Issue
Block a user