Skip to main content

Context

Some products need hardware access (for example printers and scanners) from a desktop client, and Stackra wants that logic in TypeScript. Electron runs the same web stack as the console (0052) with Node access to devices. No existing ADR covers desktop.

Decision

  1. apps/desktop is an Electron app, scaffolded now as a tier:app member with pnpm new.
  2. The renderer reuses the web stack (0054, 0055, 0056).
  3. Hardware access lives in the main process, in TypeScript, exposed to the renderer through a narrow preload bridge; the renderer has no direct Node access.
  4. Packaging, signing and auto-update are TODO and need their own ADR before the first release.

Consequences

  • One language across web, desktop and hardware code.
  • A larger binary and an Electron security surface to keep current.

Enforcement

Planned — the scaffold template and a validator check that the renderer is configured with context isolation and no Node integration.

Supersedes and sources

Supersedes: none. Sources: owner decision in chat, 2026-10-19.