chore: clear Effect language service suggestions - #13536
Conversation
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This is a repository-wide Effect refactor across production and test code, with several runtime error-handling, retry, decoding, and concurrency paths touched. It also adds static-analysis suppressions, including a tsconfig-level disable, and modifies authentication code, so the scope warrants human review. You can add or adjust custom eligibility rules. Learn more. |
Turn off schemaNumber (JSON wire schemas cannot carry NaN/Infinity, and 688 of its hits were generated code), rewrite the remaining suggestions into the idiomatic Effect APIs, and add reasoned per-line suppressions where the flagged pattern is intentional. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
816e270 to
5755bc2
Compare
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
Main replaced `Effect.catch(() => Effect.succeed(...))` with `Effect.orElseSucceed` across the server (pingdotgg#13536), including this file's other two helpers, and the Effect language service now reports the old form. The container marker check added in this branch was the one call left.
## What's Changed * fix(web): sidebar Back always returns to the main app by @t3dotgg in pingdotgg/t3code#13516 * fix(desktop): desktop updates reconnect in seconds, not minutes by @t3dotgg in pingdotgg/t3code#12006 * fix(connect): remove tunnels after hosts go offline by @t3dotgg in pingdotgg/t3code#9386 * fix(mobile): capture a lit 6.9-inch lock screen in the agent-activity showcase by @juliusmarminge in pingdotgg/t3code#13522 * feat(grok): offer one-click updates through `grok update` by @juliusmarminge in pingdotgg/t3code#13523 * fix(mobile): make Android subscription usage widgets scrollable by @tris203 in pingdotgg/t3code#13474 * fix(web): keep sidebar terminal pulses in sync by @t3dotgg in pingdotgg/t3code#12962 * feat(web): add iPhone Duo 3D controls by @juliusmarminge in pingdotgg/t3code#12813 * fix(relay): export tunnel cleanup counters to Axiom by @juliusmarminge in pingdotgg/t3code#13528 * fix(server): Grok accounts with no usage yet no longer vanish from Limits by @jakeleventhal in pingdotgg/t3code#12799 * fix(server): report the Grok account email so usage limits merge across environments by @jakeleventhal in pingdotgg/t3code#12588 * feat(web): add usage page keybinding by @jakeleventhal in pingdotgg/t3code#9434 * chore: clear Effect language service suggestions by @juliusmarminge in pingdotgg/t3code#13536 * ci(relay): add a forced manual relay deploy by @juliusmarminge in pingdotgg/t3code#13550 * fix(web): selected text stays visible on a revealed file line by @t3dotgg in pingdotgg/t3code#13548 * fix(web): collapsed composer bar stops flipping its labels while you scroll by @t3dotgg in pingdotgg/t3code#13555 * fix(clients): sync status no longer flickers when opening running threads by @t3dotgg in pingdotgg/t3code#13551 * fix(server): newer Codex models get T3 Code's instructions again by @t3dotgg in pingdotgg/t3code#13547 **Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260924.2223...v0.0.43-nightly.20260925.2237 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.43-nightly.20260925.2237
Problem
vp run -r typecheckprinted about 1,590suggestion-level diagnostics from@effect/tsgo0.41, mostly since the TypeScript 7 upgrade (#10663). Real issues get buried under the noise.Fix
schemaNumberoff intsconfig.base.json. 688 hits were the generated codex app-server schema and most of the other ~410 were JSON wire contracts, which cannot carryNaNorInfinity.succeedSome/succeedNone,asSome,ignore/ignoreCause,catchIf/catchCauseIf,yield* err,orElseSucceed,forEach,filterOrFail,fromOption,Effect.fn, typeddecode*, andURL.canParseinstead oftry/catch. Interrupt-awarecatchCausehandlers becamecatchCauseIf, which re-fails the cause the same way the ternaries did.abortControllerInEffect(the OpenCode event pump, plus a file-level suppression for the Claude adapter tests),runEffectInsideEffect(the Claude SDK history callback), andraceFirstWithSleepToTimeout(three interval-versus-signal races that are not timeouts). There are 3 more where the rewrite can't typecheck; the reasons are inline.Two traps for anyone doing the same thing:
Effect.voiddoes not satisfyX | undefinedunderexactOptionalPropertyTypes. UseEffect.undefinedthere.Effect.ignorepassed as anEffect.fntrailing pipeable must be writtenEffect.ignore().Worth a look when reviewing:
ChromiumKeys.ts.FirefoxCookies.ts, wheremapErrormoved into anEffect.fnpipeable. Most of that diff is re-indentation.managedTunnelStartup.ts.Verification
vp run -r typecheckreports 0 diagnostics. Before: ~1,590 suggestions.vp test runon every changed test file plus the sibling tests of changed production files: about 3,700 tests pass across server, desktop, client-runtime, contracts, relay, shared, effect-acp, and effect-codex-app-server.vp linton the changed files shows the same warnings before and after.vp fmt --checkis clean.Done by Claude Opus 5.5 in Claude Code.
🤖 Generated with Claude Code
Summary by CodeRabbit