Skip to content

feat: interactive install wizard + CI/release fixes - #591

Closed
hlsitechio wants to merge 26 commits into
pingdotgg:mainfrom
hlsitechio:main
Closed

hlsitechio wants to merge 26 commits into
pingdotgg:mainfrom
hlsitechio:main

docs: update README to reflect interactive install wizard

878be84
Select commit
Loading
Failed to load commit list.
MacroscopeApp / Macroscope - Correctness Check completed Mar 9, 2026 in 8m 7s

14 issues identified (300 code objects reviewed).

• Merge Base: 5dd36bc
• Head: 878be84

Details

✅ File Path Comments Posted
✅ install.ps1
✅ apps/web/.env.example
✅ apps/server/.env.example
❌ apps/web/src/auth.tsx 1
✅ apps/web/src/routes/lab.tsx 0
➖ package.json
❌ apps/desktop/src/browserCdp.ts 1
✅ packages/contracts/src/canvas.ts 0
✅ apps/web/src/routes/lab.index.tsx
✅ apps/web/src/routes/_chat.docs.tsx 0
❌ apps/web/src/uiCommandIntents.ts 3
❌ apps/desktop/src/bootstrapDeps.ts 1
✅ apps/web/src/routes/lab.$threadId.tsx 0
➖ apps/web/src/uiCommandIntents.test.ts
✅ apps/desktop/src/browserOperator.ts 0
❌ apps/web/src/components/AppCanvas.tsx 2
✅ apps/server/src/labBrowserMcpServer.ts 0
✅ apps/server/src/appOperatorMcpServer.ts 0
✅ apps/server/src/git/githubDeviceFlow.ts 0
➖ apps/web/src/vite-env.d.ts
✅ apps/web/src/components/BrowserCanvas.tsx 0
✅ apps/web/src/hooks/useProjectOnboarding.ts
✅ packages/shared/src/model.ts
✅ apps/web/src/hooks/useWorkspaceSurfaceLaunchers.ts
✅ apps/web/src/components/WorkspaceSurfaceActions.tsx 0
➖ apps/server/tsconfig.json
➖ apps/web/package.json
✅ packages/contracts/src/index.ts
✅ apps/desktop/src/preload.ts 0
✅ packages/contracts/src/editor.ts 0
✅ packages/contracts/src/server.ts 0
✅ apps/web/vite.config.ts
✅ apps/server/tsdown.config.ts
✅ apps/web/src/components/Icons.tsx 0
➖ apps/server/package.json
✅ apps/server/src/open.ts
➖ .github/workflows/ci.yml
✅ apps/web/src/wsNativeApi.ts
✅ apps/server/src/main.ts
✅ apps/server/src/terminal/Services/Manager.ts 0
✅ apps/web/src/session-logic.ts
✅ packages/contracts/src/orchestration.ts
✅ apps/server/scripts/cli.ts
✅ apps/web/src/components/ui/sidebar.tsx
✅ apps/web/src/diffRouteSearch.ts 0
✅ packages/contracts/src/ws.ts
✅ apps/web/src/components/GitActionsControl.tsx
✅ apps/web/src/routes/__root.tsx 0
✅ scripts/build-desktop-artifact.ts
✅ scripts/dev-runner.ts
✅ apps/web/src/appSettings.ts 0
✅ apps/web/src/routes/_chat.tsx 0
✅ packages/contracts/src/model.ts
✅ apps/server/src/provider/Layers/ProviderSessionDirectory.ts
✅ packages/contracts/src/ipc.ts 0
➖ apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.test.ts
➖ apps/web/src/session-logic.test.ts
➖ .github/workflows/release.yml
✅ apps/server/src/codexAppServerManager.ts 0
✅ apps/server/src/provider/Layers/ProviderHealth.ts
➖ README.md
➖ apps/web/src/index.css
❌ apps/web/src/routes/_chat.index.tsx 1
✅ apps/web/src/routes/_chat.$threadId.tsx 0
✅ apps/server/src/wsServer.ts 0
✅ apps/server/src/terminal/Layers/Manager.ts 0
❌ apps/desktop/src/main.ts 4
➖ apps/web/src/routeTree.gen.ts
❌ apps/web/src/components/ChatMarkdown.tsx 1
✅ apps/web/src/components/ThreadTerminalDrawer.tsx 0
✅ apps/web/src/routes/_chat.settings.tsx 0
➖ bun.lock
✅ apps/web/src/components/ChatView.tsx 0
✅ apps/web/src/components/Sidebar.tsx 0

Filtered Issues Details

apps/server/src/codexAppServerManager.ts
  • line 1672: The helper function currentRuntimeScriptPath (invoked at this line) calls fileURLToPath, but this function is not imported from node:url. Since currentRuntimeScriptPath is a new function introduced in this commit and the added imports do not include node:url, this will likely throw a ReferenceError at runtime when desktopBrowserOperator is configured, crashing the application. [ Out of scope (triage) ]
apps/server/src/terminal/Layers/Manager.ts
  • line 979: The flushPersistQueue method fails to persist dirty history when called during session teardown. It attempts to retrieve the session from this.sessions (line 979), but callers like closeSession (visible in the surrounding file context) delete the session from the map before invoking flushPersistQueue. As a result, session is undefined, the block handling historyDirty (lines 980-984) is skipped, and any buffered terminal output pending persistence is permanently lost. [ Out of scope ]
apps/web/src/components/ChatMarkdown.tsx
  • line 286: Infinite render loop when isStreaming is true. The function getFormattedCodePromise returns a new Promise instance (via Promise.resolve(code)) on every call when isStreaming is true. The SuspenseShikiCodeBlock component calls this function inside the render body and passes the result to use(). Since use() and React Suspense rely on the referential stability of the Promise to track the suspension state, receiving a new Promise instance on every render causes the component to suspend repeatedly, creating an infinite loop that will freeze the browser or application UI. [ Out of scope ]
apps/web/src/routes/_chat.settings.tsx
  • line 178: The variable SETTINGS_TARGET_SECTION_STORAGE_KEY is used in readPendingSettingsSectionTarget but is not defined in the file or imported. This will cause a ReferenceError at runtime when SettingsRouteView mounts, crashing the settings page. [ Cross-file consolidated ]
packages/contracts/src/canvas.ts
  • line 8: The Schema module from effect does not export a function named Literals. This will cause the application to crash with a TypeError (undefined is not a function) when the module is evaluated. The correct function is Schema.Literal (singular). Additionally, Schema.Literal expects variable arguments (e.g., Schema.Literal("jsx", "css", "md")) to create a union of literal types. Passing an array ["jsx", "css", "md"] to Schema.Literal (if corrected) would create a schema that matches an array instance, not a string union, causing validation failures for valid language strings. [ Cross-file consolidated ]
  • line 20: The default values provided in Schema.withConstructorDefault for title, framework, prompt, and files are incorrectly wrapped in Option.some(...). Schema.withConstructorDefault expects a function returning the raw value matching the schema type (e.g., string or Array), not an Option object. When these defaults are triggered (i.e., when constructing a ThreadCanvasState without these fields), the schema validation will fail at runtime with a type mismatch error (expected string or Array, got Option object), causing crashes in the application logic that relies on these defaults. [ Out of scope (triage) ]