Steam Backlog Helper {#if isDebugWindow}

Debug mode

Recommendation Diagnostics

Last update: {debugSnapshot?.generatedAt ?? 'waiting for main window'}

{#if !debugSnapshot}

No debug data yet

Open the main window, import a library, and spin a recommendation.

{:else}
Imported {debugSnapshot.summary.imported}
Eligible {debugSnapshot.summary.eligible}
Restricted {debugSnapshot.summary.restricted}
Spins {debugSnapshot.summary.spinCount}
Metadata {debugSnapshot.summary.metadataEnrichment}

Current Pick

{#if debugSnapshot.selected}
{debugSnapshot.selected.game.title}
App {debugSnapshot.selected.game.appId}

{debugSnapshot.selected.game.title}

{debugSnapshot.selected.game.fit}

Score {debugSnapshot.selected.debug.total}
{#each debugSnapshot.selected.debug.contributions as contribution} {/each}
Weight Value Reason
{contribution.label} {contribution.value > 0 ? `+${contribution.value}` : contribution.value} {contribution.detail}
{:else}

No recommendation has been spun yet.

{/if}

Active Rules

Hard restrictions
{debugSnapshot.rules.hardRestrictions}
Review preference
{debugSnapshot.rules.review}
Play mode preference
{debugSnapshot.rules.playMode}
Genre preference
{debugSnapshot.rules.genre}
Playtime preference
{debugSnapshot.rules.playtime}

Game Weighting

{#each debugSnapshot.games as entry}
App {entry.game.appId}

{entry.game.title}

{entry.debug.eligible ? entry.debug.total : 'Excluded'}
{#if entry.debug.restrictions.length > 0}
    {#each entry.debug.restrictions as restriction}
  • {restriction}
  • {/each}
{/if}
{/each}
{/if}
{:else}
{#if activeView === 'recommend'}

Recommendation

Session Picker

{#if selectedRecommendation} {selectedRecommendation.title}
Selected {selectedRecommendation.title}

{selectedRecommendation.fit}

{:else}
{isLoadingSettings ? 'Loading' : isImportingLibrary ? 'Importing' : setupComplete ? 'Ready' : 'Setup required'} {isLoadingSettings ? 'Checking saved setup' : isImportingLibrary ? 'Fetching library' : setupComplete ? 'Spin the wheel' : 'Complete setup'}

{isLoadingSettings ? 'Reading local SQLite settings' : isImportingLibrary ? 'Steam Web API import in progress' : setupComplete ? `${candidateGames.length} eligible games loaded` : 'Profile and API key required'}

{/if}

{isLoadingSettings ? 'Loading settings' : isImportingLibrary ? 'Importing library' : setupComplete ? 'Ready' : 'Setup required'}

{selectedRecommendation ? selectedRecommendation.title : isImportingLibrary ? 'Fetching your Steam library.' : setupComplete ? 'Spin for a recommendation.' : 'Import your library to spin a recommendation.'}

{selectedRecommendation ? selectedRecommendation.reason : isImportingLibrary ? 'Importing owned games. Metadata enrichment will run as a separate cached step.' : setupComplete ? `Configured for ${defaultSessionLength}. The wheel contains ${candidateGames.length} eligible games from ${importedLibrary.length} imported Steam games.` : 'The first run setup enables Steam import, metadata enrichment, review signals, and time-to-beat matching.'}

{#if libraryImportError}

{libraryImportError}

{/if}
{:else}

Shortlist

Top candidate games

{#if shortlistGames.length === 0}

No imported library yet

Complete setup to import your Steam games and build the shortlist.

{#if libraryImportError}

{libraryImportError}

{/if}
{/if} {#each shortlistGames as game, index}
{index + 1} {game.title}
{game.fit} · {game.reviewSummary}

{game.title}

{game.reason} {#if game.score} Weighted score: {game.score}. {/if}

{/each}
{/if} {#if modalView} {/if}
{/if}