diff --git a/src/components/ActionPanel.svelte b/src/components/ActionPanel.svelte index 326ae55..063edc1 100644 --- a/src/components/ActionPanel.svelte +++ b/src/components/ActionPanel.svelte @@ -257,6 +257,20 @@ Offline: ODIAN {s?.installed} runs on local data and map tiles. {/if}

+ {#if s?.online && !s.signed_in && !checking} + +

+ + + Not signed in on this PC: ODIAN will run on this PC's own data, without live aircraft. + + +

+ {/if} {#if launcher.syncAttention > 0}

diff --git a/src/lib/mock.ts b/src/lib/mock.ts index e29bf91..1bb1ab5 100644 --- a/src/lib/mock.ts +++ b/src/lib/mock.ts @@ -1,7 +1,7 @@ // Browser-only stand-in for the Rust backend, so the hub can be designed with // `npm run dev`. Same shapes as docs/CONTRACT.md, driven by timers. // -// ?scenario=first-run | update-required | ready | offline-installed | +// ?scenario=first-run | update-required | ready | new-pc | offline-installed | // offline-not-installed | installing | running | sync-conflicts | error | // dev (a licensed developer PC: the Dev section of Settings appears) // &fail=sign_in | install | restore | launch | notes make that flow fail @@ -265,6 +265,11 @@ function initialStatus(scenario: MockScenario): Status { case "ready": Object.assign(s, { installed: CURRENT, operator: OPERATOR, signed_in: true }); break; + case "new-pc": + // A drive on a PC it has never been on: the install and its operator came with it, + // the DHP sign-in (per PC) did not. Online, launchable, and not signed in. + Object.assign(s, { installed: CURRENT, operator: OPERATOR, signed_in: false }); + break; case "offline-installed": Object.assign(s, { online: false, installed: PREVIOUS, operator: OPERATOR }); break; diff --git a/src/lib/types.ts b/src/lib/types.ts index 9cbb7aa..af34150 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -349,6 +349,7 @@ export const MOCK_SCENARIOS = [ "first-run", "update-required", "ready", + "new-pc", "offline-installed", "offline-not-installed", "installing",