fix(companion): make reference-app exports reproducible by default

No diagram change needed: this change only makes generated reference-app timestamps deterministic and adds an override flag.
This commit is contained in:
William Valentin
2026-02-26 20:58:31 -08:00
parent 078c3799ce
commit 820af97859
10 changed files with 25 additions and 8 deletions
+8 -1
View File
@@ -8,18 +8,23 @@ describe('generateReferenceCompanionApps', () => {
it('writes macos/ios/android reference app templates', async () => {
const tempDir = await mkdtemp(join(tmpdir(), 'flynn-reference-apps-'));
const outputDir = join(tempDir, 'apps');
const generatedAt = new Date('2026-02-27T12:34:56.000Z');
const result = await generateReferenceCompanionApps({
outputDir,
gatewayUrl: 'ws://127.0.0.1:18800',
generatedAt: new Date('2026-02-27T00:00:00.000Z'),
generatedAt,
});
expect(result.generated.map((entry) => entry.platform)).toEqual(['macos', 'ios', 'android']);
const macosTemplate = await readFile(`${outputDir}/macos/MenuBarCompanion.swift`, 'utf8');
const macosAppMain = await readFile(`${outputDir}/macos-app/Sources/FlynnCompanionMenuBar/main.swift`, 'utf8');
const iosBootstrapRaw = await readFile(`${outputDir}/ios/companion.bootstrap.json`, 'utf8');
const macosAppBootstrapRaw = await readFile(`${outputDir}/macos-app/Sources/FlynnCompanionMenuBar/Resources/companion.bootstrap.json`, 'utf8');
const iosTemplate = await readFile(`${outputDir}/ios/CompanionBootstrap.swift`, 'utf8');
const androidTemplate = await readFile(`${outputDir}/android/CompanionBootstrap.kt`, 'utf8');
const rootReadme = await readFile(`${outputDir}/README.md`, 'utf8');
const iosBootstrap = JSON.parse(iosBootstrapRaw) as { generatedAt: string };
const macosAppBootstrap = JSON.parse(macosAppBootstrapRaw) as { generatedAt: string };
expect(macosTemplate).toContain('launchFlynnCompanion');
expect(macosAppMain).toContain('NSStatusBar.system.statusItem');
@@ -28,6 +33,8 @@ describe('generateReferenceCompanionApps', () => {
expect(rootReadme).toContain('Companion Reference Apps');
expect(result.macosMenuBarAppDir).toBe(`${outputDir}/macos-app`);
expect(result.macosMenuBarAppFiles.length).toBeGreaterThan(0);
expect(iosBootstrap.generatedAt).toBe(generatedAt.toISOString());
expect(macosAppBootstrap.generatedAt).toBe(generatedAt.toISOString());
await rm(tempDir, { recursive: true, force: true });
});