APPLICATION-USER AGGREGATION

Characters

Connect each character explicitly. One primary character is the only signed-out login; linked characters are data-only until you switch the primary while authenticated.

{#if data.mode !== 'demo' && data.identityEnabled}
{/if} {#if data.error}{/if} {#if data.userId && data.convexUrl && data.mode !== 'demo'}{/if} {#each data.characters as character (character.id)}

{character.name}

{character.loginRole === 'data_only' ? 'DATA-ONLY' : 'PRIMARY'} · {character.authorizationStatus ?? 'active'}
Character {character.id} · grant r{character.grantRevision ?? 1} · credential v{character.credentialVersion ?? 1} · epoch {character.authorizationEpoch ?? 1}

Assets: {character.assets.status} · synchronized: {character.assets.syncedAt ? new Date(character.assets.syncedAt).toISOString() : 'Not yet'}
Granted scopes: {character.scopes.join(', ') || 'None'}

{#if character.datasets}

Datasets: {character.datasets.map((dataset) => `${datasetLabel(dataset.dataset)}=${dataset.status}`).join(' · ')}

{/if} {#if character.assets.error}

{character.assets.error}

{/if}

Inventory locations: {data.locationEnabled ? locationState(character) : 'unavailable'}{#if data.locationEnabled && locationState(character) === 'missing'} · Structure consent is required for private location evidence.{/if}

{#if data.mode !== 'demo' && data.identityEnabled}
{#if character.loginRole === 'data_only' && character.authorizationStatus === 'active'}
{/if}
{#if character.authorizationStatus === 'active' && data.locationEnabled && character.scopes.includes(assetsScope) && !character.scopes.includes(structuresScope)}
{/if} {#if character.authorizationStatus === 'active' && data.walletEnabled}
{/if} {#if character.loginRole === 'data_only' && character.authorizationStatus !== 'revoked'}
Disconnect character

This immediately blocks local datasets, discards the stored credential, and cancels pending local work. Reconnecting requires EVE authorization again.

{/if}
{/if}
{:else}

No connected characters. Your first verified EVE login creates the primary application character.

{/each}

Open asset report →