8bf56d13258ccfed1da5897d210619e9a6af1a6b
The console could only watch. A printer card now offers what
POST /printers/:id/commands accepts and a person should press: pause
while printing, resume while paused, and a fan percentage.
Stop is the one command with no undo (the printer reports FAILED), so it
sits apart from Pause and needs a second, named confirmation
("Cancel <job>? ... cannot be resumed"). Offline and never-reported
printers get no controls, since every command would be refused as
unreachable. A successful reply only means the printer accepted the
command, so the notice says to watch the status line rather than claiming
the state changed. The backend's own error message is shown for a 403, 409
or 502.
PrinterControls takes a `send` function like the card takes `signal`, so
@continuum/ui still knows nothing of the API; no function, no controls.
send_gcode_line and start_print are deliberately not offered here.
Verified in real Chrome against the live stack with the command requests
intercepted in the browser (the H2C was mid-print): controls render per
state, Stop shows its confirmation and Keep printing sends nothing, the
body is {action:"set_fan_speed",percent:100}, a 409 surfaces its message,
no page errors. pnpm -r typecheck is clean.
continuum-app
Operator console for the Continuum print farm platform. A single Nuxt 3 SPA
(apps/web) shared between the browser and a Tauri 2 desktop shell
(apps/desktop), plus a shared component library (packages/ui).
Layout
apps/
web/ Nuxt 3 SPA (ssr: false) - Supabase auth, Pinia telemetry store
desktop/ Tauri 2 shell wrapping apps/web's static build
packages/
ui/ Shared Vue components: PrinterCard, TemperatureGraph, WebRTCStreamView
Getting started
pnpm install
cp .env.example apps/web/.env
pnpm dev:web # browser dev server on :3000
pnpm dev:desktop # Tauri dev shell (requires Rust toolchain)
apps/web builds as a static SPA so the exact same apps/web/.output/public
bundle is served in the browser and embedded into the Tauri desktop app.
Languages
Vue
76.7%
TypeScript
22.4%
Rust
0.9%