Skip to content

fix(mobile): Harden iOS reconnect, crash capture, and chat layout on main - #3910

Closed
mwolson wants to merge 18 commits into
pingdotgg:mainfrom
mwolson:ios-fixes-main
Closed

fix(mobile): Harden iOS reconnect, crash capture, and chat layout on main#3910
mwolson wants to merge 18 commits into
pingdotgg:mainfrom
mwolson:ios-fixes-main

fix(deps): Update keyboard controller patch lockfile

2ec85a8
Select commit
Loading
Failed to load commit list.
MacroscopeApp / Macroscope - Effect Service Conventions failed Jul 14, 2026 in 8s

AA.... Content and be derived from the current children

olled or bar the.hdata

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.

Vect.. }stve message, then enrich with breadcrumbs.


🔍 Agent activity — reasoning, no tool calls

💭 Looking at the TypeScript changes across the mobile app and client runtime packages, I'm examining how Effect service conventions are being applied—particularly the shift from runtime imports to type-only imports for the Cause module, and tracking the new thread query state file alongside the existing threads and error handling modules. Now I'm checking whether these changes actually create or consume Effect services. The new causeMessage.ts is just a pure helper function for formatting error messages, so that's not a service. Looking at threadQueryState.ts, those are also utility functions. For the shell and threads modules in client-runtime, they use Effect utilities like Ref and SubscriptionRef, but I need to verify if they're actually defining services or just using Effect primitives. Let me examine the import patterns more carefully — specifically checking if there are any consolidated named imports directly from "effect" that should be flagged. Looking at the test file, I see it defines a custom error class using Schema.TaggedErrorClass that derives its message from the file path attribute, which aligns with the conventions I've been checking. Let me examine the imports in the modified files to ensure everything follows the expected patterns. I need to adjust how the repo parameter is formatted. I'll use the head commit hash. Looking at the helper modules now—they're using the namespace import pattern for Cause and pulling AsyncResult/Atom from subpaths, which aligns with how reactivity modules are typically structured. Then I'm examining the substantive Effect files in client-runtime, specifically shell.ts and threads.ts, which define factory functions that return Effect instances for managing environment state. The key question is whether these changes violate service conventions. The modifications in shell.ts and threads.ts are actually behavior changes within existing factory functions—they introduce Ref usage but don't restructure the service definitions themselves. They're not creating, moving, or refactoring a Context.Service, so the convention scope doesn't apply here. I'm also checking the error handling—the formatters like formatThreadError and formatError are UI message utilities, not service errors, and the only TaggedError changes are in the test file which follows the conventions. The server-side changes in ws.ts and server.test.ts are Effect-based stream logic rather than service definitions, so those don't trigger the convention either. I don't see any actual service-convention violations in this PR. I'm realizing there's a conflict between the instruction to respond with "All clear" when there are no findings and the requirement to output JSON matching the schema. The check defaults to failure, but when clean, I should output "All clear" — yet the system also requires valid JSON. I think the resolution is to produce JSON with a success state since no issues were found, which aligns with both the "All clear" intent and the schema requirement. Let me double-check the touched files for any violations I might have missed. None of them import from bare "effect", and the new files like breadcrumbs.ts, crashLog.ts, threadQueryState.ts, and causeMessage.ts are all plain TypeScript helpers without Effect services. I'm confident there are no violations, so I'll set the state to success. The evidence confirms these are pure error handlers and behavior updates within existing Effect state functions—no service refactors or import issues. There's no convention violations, so the result is clear, though I need to format this as JSON per the schema requirements.