feat(core): add Electron runtime, services, and app composition

This commit is contained in:
2026-02-22 21:43:43 -08:00
parent 448ce03fd4
commit d3fd47f0ec
562 changed files with 69719 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
import { ResolvedConfig } from '../../types';
import { ConfigOptionRegistryEntry } from './shared';
export function buildImmersionConfigOptionRegistry(
defaultConfig: ResolvedConfig,
): ConfigOptionRegistryEntry[] {
return [
{
path: 'immersionTracking.enabled',
kind: 'boolean',
defaultValue: defaultConfig.immersionTracking.enabled,
description: 'Enable immersion tracking for mined subtitle metadata.',
},
{
path: 'immersionTracking.dbPath',
kind: 'string',
defaultValue: defaultConfig.immersionTracking.dbPath,
description:
'Optional SQLite database path for immersion tracking. Empty value uses the default app data path.',
},
{
path: 'immersionTracking.batchSize',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.batchSize,
description: 'Buffered telemetry/event writes per SQLite transaction.',
},
{
path: 'immersionTracking.flushIntervalMs',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.flushIntervalMs,
description: 'Max delay before queue flush in milliseconds.',
},
{
path: 'immersionTracking.queueCap',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.queueCap,
description: 'In-memory write queue cap before overflow policy applies.',
},
{
path: 'immersionTracking.payloadCapBytes',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.payloadCapBytes,
description: 'Max JSON payload size per event before truncation.',
},
{
path: 'immersionTracking.maintenanceIntervalMs',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.maintenanceIntervalMs,
description: 'Maintenance cadence (prune + rollup + vacuum checks).',
},
{
path: 'immersionTracking.retention.eventsDays',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.retention.eventsDays,
description: 'Raw event retention window in days.',
},
{
path: 'immersionTracking.retention.telemetryDays',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.retention.telemetryDays,
description: 'Telemetry retention window in days.',
},
{
path: 'immersionTracking.retention.dailyRollupsDays',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.retention.dailyRollupsDays,
description: 'Daily rollup retention window in days.',
},
{
path: 'immersionTracking.retention.monthlyRollupsDays',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.retention.monthlyRollupsDays,
description: 'Monthly rollup retention window in days.',
},
{
path: 'immersionTracking.retention.vacuumIntervalDays',
kind: 'number',
defaultValue: defaultConfig.immersionTracking.retention.vacuumIntervalDays,
description: 'Minimum days between VACUUM runs.',
},
];
}