Compare commits
11 Commits
dbe7d43387
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| f69ba7c016 | |||
| 540f694f01 | |||
| ee2d56b705 | |||
| 53bba10b3e | |||
| 7a97afe046 | |||
| 9d4da39cb6 | |||
| 4450722428 | |||
| 167dbd6d3a | |||
| 30123e5576 | |||
| 6af563793b | |||
| 52f77c814c |
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
|
||||
"productName": "ODIAN Launcher",
|
||||
"version": "0.1.45",
|
||||
"version": "0.1.51",
|
||||
"identifier": "fr.odian.launcher",
|
||||
"build": {
|
||||
"frontendDist": "../dist",
|
||||
|
||||
@@ -257,6 +257,20 @@
|
||||
Offline: ODIAN <strong>{s?.installed}</strong> runs on local data and map tiles.
|
||||
{/if}
|
||||
</p>
|
||||
{#if s?.online && !s.signed_in && !checking}
|
||||
<!-- The operator is remembered with the install (launcher.json travels with a drive),
|
||||
the DHP sign-in is not (Credential Manager, per PC). So a drive on another PC offers
|
||||
Launch as if nothing were missing, and ODIAN then runs on that PC's own data: no live
|
||||
aircraft, no tiles from the site. Launch stays the button - a sign-in that cannot
|
||||
complete must not stop ODIAN - but the gap is said here, with the way out. -->
|
||||
<p class="secondary attention">
|
||||
<Icon name="alert" size={14} />
|
||||
<span>
|
||||
Not signed in on this PC: ODIAN will run on this PC's own data, without live aircraft.
|
||||
<button class="btn-link" disabled={blocked} onclick={() => launcher.signIn()}>Sign in</button>
|
||||
</span>
|
||||
</p>
|
||||
{/if}
|
||||
{#if launcher.syncAttention > 0}
|
||||
<p class="secondary attention">
|
||||
<Icon name="alert" size={14} />
|
||||
@@ -492,8 +506,11 @@
|
||||
{#if !devRun}
|
||||
<p class="dev-note">Name the folder that holds <code>ODIAN_Engine</code> and Launch runs from it.</p>
|
||||
{:else if devUser}
|
||||
<!-- One line, and ONE flex child: `.attention` is display:flex, so loose text and
|
||||
<strong> each become a column. "no live data" earns its place - the old wording
|
||||
said only "no sync", and the missing tracks were hunted through the whole stack. -->
|
||||
<p class="dev-note attention">
|
||||
Running as <strong>{devUser}</strong> — this PC will not sync with the DHP.
|
||||
<span>Running as <strong>{devUser}</strong> — no sync, no live data.</span>
|
||||
</p>
|
||||
{/if}
|
||||
</section>
|
||||
|
||||
+6
-1
@@ -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;
|
||||
|
||||
@@ -349,6 +349,7 @@ export const MOCK_SCENARIOS = [
|
||||
"first-run",
|
||||
"update-required",
|
||||
"ready",
|
||||
"new-pc",
|
||||
"offline-installed",
|
||||
"offline-not-installed",
|
||||
"installing",
|
||||
|
||||
Reference in New Issue
Block a user