diff --git a/src/renderer/src/components/pro/proCatalog.ts b/src/renderer/src/components/pro/proCatalog.ts index 9a670272..62e197c1 100644 --- a/src/renderer/src/components/pro/proCatalog.ts +++ b/src/renderer/src/components/pro/proCatalog.ts @@ -76,7 +76,11 @@ export const PRO_FEATURES: ProFeature[] = [ 'Focus vs. distraction trends', 'All computed locally — never uploaded' ], - platforms: ['darwin'] + // Ported to Windows: Reflect adds no capture of its own — it is pure aggregation + // over observations the capture pipeline already writes, which Replay's port put + // on Windows. The whole path (crm/reflect.ts, its IPC, ReflectScreen) carries no + // platform-native code and reaches SQLite through the same getDB core uses. + platforms: ['darwin', 'win32'] }, { route: 'replay', diff --git a/src/renderer/src/lib/__tests__/proCatalog.lookup.test.ts b/src/renderer/src/lib/__tests__/proCatalog.lookup.test.ts index bb53790b..69db6987 100644 --- a/src/renderer/src/lib/__tests__/proCatalog.lookup.test.ts +++ b/src/renderer/src/lib/__tests__/proCatalog.lookup.test.ts @@ -38,7 +38,7 @@ const winPorted = (route: string): ProFeature => ({ // asserted against the catalog so a flipped `platforms` and this list can't drift. // Module-scoped because both the featureSupportsPlatform and proFeatureComingSoon // describes read it — the gate and the capability check must agree on one list. -const WIN_PORTED = new Set(['vault', 'clipboard', 'replay']) +const WIN_PORTED = new Set(['vault', 'clipboard', 'replay', 'reflect']) describe('getProFeature', () => { it('returns the matching feature for a known route', () => {