From 79296f87fb5cee7aa4f52685424b1df46d8a8195 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Mon, 28 Sep 2026 07:23:17 +0000 Subject: [PATCH] A fresh clone's first bun run dev line says Rudder is optional and needs Go 1.22+ The dev server's first line on a fresh clone was a warning that rudder-engine is not built, with a go build command and no word that it is optional or needs Go. A backend can now carry an optional note, printed as information instead; Rudder's says it is desktop voice-to-text, fine to skip for the maps, needs Go 1.22+, and points at the desktop HOWTO. --- internal/backend-dev-plugin.mjs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/backend-dev-plugin.mjs b/internal/backend-dev-plugin.mjs index c2e76bbbf..25b116ad4 100644 --- a/internal/backend-dev-plugin.mjs +++ b/internal/backend-dev-plugin.mjs @@ -44,6 +44,8 @@ export function devBackends(env = process.env) { name: 'rudder-engine', bin: 'backend/bin/rudder-engine', build: 'cd backend/rudder-engine && go build -o ../bin/rudder-engine .', + // What a fresh clone is told at startup when this backend is not built: it is OPTIONAL (desktop voice). + optional: 'optional: Rudder (desktop voice-to-text) is not built, which is fine for the maps. It needs Go 1.22+; see documentation/HOWTO-build-the-desktop-app.md.', route: '/api/rudder', port: Number(process.env.RUDDER_PORT || 5193), env: { RUDDER_PORT: String(process.env.RUDDER_PORT || 5193), RUDDER_NEMO_PORT: String(process.env.RUDDER_NEMO_PORT || 5194) }, @@ -238,7 +240,11 @@ export function backendDevPlugin(root, env = process.env) { b.fetch(root, logger).then((ok) => { REG.fetching.delete(b.name); if (ok) launch() }) continue } - logger.warn(`[backend] ${b.name} not built — its plugin will show "engine offline". Build: ${b.build}`) + // An OPTIONAL backend is a note, not a warning: a stranger's first `bun run dev` line said + // "rudder-engine not built … go build …" with no word that it is optional or needs Go (upg100's + // fresh-clone run). A backend without that note keeps the build instruction. + if (b.optional) logger.info(`[backend] ${b.optional}`) + else logger.warn(`[backend] ${b.name} not built — its plugin will show "engine offline". Build: ${b.build}`) continue } launch()