Skip to content

fix(web): preview workspace images in the file panel - #3996

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
Rhiz3K:fix/workspace-image-file-preview
Jul 20, 2026
Merged

juliusmarminge merged 4 commits into
pingdotgg:mainfrom
Rhiz3K:fix/workspace-image-file-preview

Merge branch 'main' into fix/workspace-image-file-preview

a6e440e
Select commit
Loading
Failed to load commit list.
MacroscopeApp / Macroscope - Effect Service Conventions succeeded Jul 20, 2026 in 9s

Effect Service Conventions: No issues found

All clear

Details

Note

Your check run agent prompt is: .macroscope/check-run-agents/effect-service-conventions.md
More information about how Check Run Agents work can be found in our Help Center.

The changed files are React hooks and components that consume existing Effect Atom-based reactive state (apps/web/src/assets/assetUrls.ts, apps/web/src/components/files/FilePreviewPanel.tsx, apps/web/src/components/files/projectFilesQueryState.ts). No Effect service is created, moved, or refactored in this PR: there are no Context.Service definitions, make/layer service constructors, Layer.succeed, ManagedRuntime.make, or .runPromise/.runPromiseExit usages introduced. The added named import import { AsyncResult, Atom } from "effect/unstable/reactivity" is consistent with the module's existing convention (subpath modules used as namespaces, not a consolidated import from "effect") and is not a violation. No Effect service convention violations were introduced or retained in the changed scope.


🔍 Agent activity — reasoning, no tool calls

💭 Looking at the diff to understand how these changes align with the Effect service conventions. The modifications span a few TypeScript files—there's a new asset URL state type and hook being added, a workspace image preview component, and some updates to the project files section. I'm checking the import patterns in projectFilesQueryState.ts, specifically the named imports from "effect/unstable/reactivity". The convention calls for importing Effect modules from subpaths as namespaces, but here we're seeing AsyncResult and Atom imported as named exports. However, these are themselves modules/namespaces, and this import style already exists in the codebase, so the diff is just extending the existing pattern rather than introducing a new one. Since this PR is primarily React component work rather than Effect service creation or refactoring, the service conventions may not apply here. Let me examine the actual files to determine if there are any real violations. I'm looking at React hooks using Effect Atom reactivity rather than Effect service definitions, so the import conventions here are different. The imports from effect/unstable/reactivity are pulling in named exports like AsyncResult and Atom from a subpath, which aligns with how the existing codebase handles these module namespaces. Since there are no service definitions being created, moved, or refactored—just React components consuming existing state through atoms—the conventions that target Effect service modules don't apply here. The review comes back clean.