diff --git a/apps/cli/args.ts b/apps/cli/args.ts index 0a77513..bfd35fb 100644 --- a/apps/cli/args.ts +++ b/apps/cli/args.ts @@ -9,6 +9,7 @@ export interface CliArgs { host: string; forceHttp: boolean; assumeYes: boolean; + lan: boolean; showHelp: boolean; } @@ -21,6 +22,7 @@ Options: -p, --port Port (default: ${DEFAULT_NETWORK_PORT}, or PORT env, or ~/.workbench/config.json) --host Local hostname (default: ${DEFAULT_NETWORK_HOST}, or WORKBENCH_HOST env) --http, --insecure Serve HTTP on localhost only (no mkcert) + --lan, --expose Bind on all interfaces and show LAN URLs -y, --yes Install mkcert without prompting if missing -h, --help Show this help @@ -36,6 +38,7 @@ export function parseCliArgs(argv: string[]): CliArgs { let host = process.env.WORKBENCH_HOST?.trim() || fileConfig.host; let forceHttp = false; let assumeYes = false; + let lan = false; let showHelp = false; for (let i = 0; i < argv.length; i++) { @@ -46,6 +49,8 @@ export function parseCliArgs(argv: string[]): CliArgs { assumeYes = true; } else if (arg === "--http" || arg === "--insecure") { forceHttp = true; + } else if (arg === "--lan" || arg === "--expose") { + lan = true; } else if (arg === "--port" || arg === "-p") { const next = argv[++i]; if (!next) throw new Error("Missing value for --port"); @@ -60,7 +65,7 @@ export function parseCliArgs(argv: string[]): CliArgs { } } - return { port, host, forceHttp, assumeYes, showHelp }; + return { port, host, forceHttp, assumeYes, lan, showHelp }; } export function printCliHelp(): void { diff --git a/apps/frontend/src/api/auth.ts b/apps/frontend/src/api/auth.ts index 47a7ca4..8a9f6f9 100644 --- a/apps/frontend/src/api/auth.ts +++ b/apps/frontend/src/api/auth.ts @@ -1,8 +1,11 @@ import { apiClient } from "@/lib/api-client"; import { ensureOk } from "@/lib/api-error"; -/** Auto-authenticate when the UI is served from the same machine as the server. */ -export async function ensureLocalAuth(): Promise { - const res = await apiClient.auth.local.$post(); +/** Auto-authenticate when the UI is served from the same machine as the server. + * If an invite token is provided (from QR), it will be sent for validation. + */ +export async function ensureLocalAuth(token?: string): Promise { + const body = token ? { token } : {}; + const res = await apiClient.auth.local.$post({ json: body }); await ensureOk<{ ok: true }>(res); } diff --git a/apps/frontend/src/modules/settings/pages/NetworkSettings.vue b/apps/frontend/src/modules/settings/pages/NetworkSettings.vue index e7856b4..c866a1b 100644 --- a/apps/frontend/src/modules/settings/pages/NetworkSettings.vue +++ b/apps/frontend/src/modules/settings/pages/NetworkSettings.vue @@ -1,7 +1,10 @@