feat(web): wire gerbview tool (file-less launch, wizard-skip, UI)

Register the newly WASM-ported Gerber Viewer in the web app the same way as
the other tools — registry entries only, no UI edits (ProjectDetailPage renders
launch links generically from FILELESS_TOOLS).

GERBVIEW_FRAME opens gerber/drill files through its own File→Open UI and projects
carry no gerber files to auto-open, so it's treated as file-less (boot standalone),
mirroring symbol_editor. It boots through single_top.cpp's STARTWIZARD, so it seeds
config to skip the first-run wizard (TOOL_NEEDS_CONFIG_SEED) and gets a
/usr/bin/gerbview argv0.

- contract: add "gerbview" to TOOLS, TOOL_LABELS ("Gerber Viewer"), FILELESS_TOOLS
- frontend: add gerbview to TOOL_ARGV0 and TOOL_NEEDS_CONFIG_SEED
- e2e: add file-less gerbview case to tools-open.spec.ts (title "Gerber Viewer",
  canvas painted, wizard-free, no WASM abort)

Verified in-browser via npm run test:web: gerbview boots wizard-free with the
viewer chrome (toolbars + layers manager), 0 console errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Balint Ipkovich 2026-06-03 16:47:23 +02:00
commit 03fbd73e99
3 changed files with 8 additions and 0 deletions

View file

@ -26,6 +26,7 @@ export const TOOL_ARGV0: Record<Tool, string> = {
calculator: "/usr/bin/pcb_calculator",
pl_editor: "/usr/bin/pl_editor",
symbol_editor: "/usr/bin/symbol_editor",
gerbview: "/usr/bin/gerbview",
};
/**
@ -43,6 +44,7 @@ export const TOOL_NEEDS_CONFIG_SEED: Record<Tool, boolean> = {
calculator: true,
pl_editor: true,
symbol_editor: true,
gerbview: true,
};
/** KiCad user settings dir for this build (PATHS::GetUserSettingsPath()). */