Skip to content

fix(fork): fork-sync's conflict handler is an Effect.fn - #105

Merged
fireboltdude1357 merged 262 commits into
patch/releasefrom
fix/release-upstream-cc0b86d
Oct 26, 2026
Merged

fireboltdude1357 merged 262 commits into
patch/releasefrom
fix/release-upstream-cc0b86d

Conversation

@fireboltdude1357

Copy link
Copy Markdown
Owner

The fork's build fails its typecheck on upstream cc0b86d. Upstream's pingdotgg#25099 made the Effect lint rule effectFnOpportunity an error instead of a suggestion. scripts/fork-sync.ts in this patch wrote mergePatch's GitCommandError handler as an arrow function returning Effect.gen, which that rule now rejects.

The handler is now Effect.fn("GitCommandError"), the form the rule asks for. It does the same thing: list unmerged files, abort the merge, and report a PatchConflictError.

The build runs this script from patch/release to merge the patches, so I ran its tests.

Verification:

  • pnpm run typecheck in scripts: 0 errors.
  • vp test run fork-sync.test.ts in scripts: 8 passed.
  • In a scratch worktree detached at cc0b86d, all seven patches in .github/fork-patches.txt merge with no conflicts, using the release and bots fix branches. On the result, the build's repo-wide vp run typecheck passes all 34 tasks, and the 15 test files the patches add or change pass (554 tests).

Made by Claude Opus 5.5 in Claude Code.

🤖 Generated with Claude Code

juliusmarminge and others added 30 commits October 25, 2026 00:41
…mbers drafts (pingdotgg#24750)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tgg#24770)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…4696)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…4784)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gdotgg#24769)

Mobile push said "Thread completed" when a run ended and its continuation started a moment later, then again when the work really finished. Every completion now waits the relay's existing 5s confirm window and is dropped if the thread is live again. A thread that auto-settles during the hold still alerts its completion, then clears its card on a new window. Failed runs publish at once.

Follow-up to pingdotgg#24760.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tgg#24748)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…PR (pingdotgg#24830)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…pt eats the command (pingdotgg#24775)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tgg#24813)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…miss (pingdotgg#24832)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…g#24839)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ll JSON (pingdotgg#24723)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…point capture (pingdotgg#24851)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…de (pingdotgg#24867)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#24850)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
juliusmarminge and others added 29 commits October 25, 2026 23:35
Android clients are cached as the bare APK, not a tarball.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#24912)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
…24618)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… instead of effect timers (pingdotgg#25363)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
`vp run mobile:e2e` now leases iOS and Android devices from the Simlock pool
(SIMLOCK_AGENT_DEVICE_URL + AGENT_DEVICE_DAEMON_AUTH_TOKEN) instead of booting
local simulators, and walks each of 12 poses (phone sizes, iPads, a fold,
a tablet, dark mode, largest text) through the app: thread list, a thread,
scrolling, typing, back, settings, then rotation or folding.

Every screen gets generic layout checks that need no per-screen code: app in
front, no error screen or launch dialog, no fixed control cut off by the
screen edge, no sibling controls stacked, nothing under a system bar, no
input under the keyboard. Transitions keep the video check for tabs lagging
the screen, now measured against the recording's own first and last frames.
Afterwards a headless Claude reviews each pose's screenshots for what the
checks cannot see, and the findings land in the same report grid.

`mobile:install --session` now has the session's host download the dev
client from the shared cache with the read-only key, instead of uploading it
through the gateway (13 s instead of 10+ minutes for an APK).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#25409)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…by up to 10s (pingdotgg#25368)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…, iOS on EAS (pingdotgg#25390)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…allback (pingdotgg#25412)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…e, not on every open (pingdotgg#25377)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…failing (pingdotgg#25371)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…provider and cwd (pingdotgg#25370)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…aft, not by the composer (pingdotgg#25376)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Poses now cover iPhone SE, iPhone 18 Pro, iPhone Duo folded and unfolded,
iPad Pro 13" in both orientations, Pixel 10 Pro, Pixel 10 Pro Fold folded,
unfolded and unfolded landscape, and Pixel Tablet in both orientations.
Landscape poses rotate once the app is up (a rotation during launch is lost)
and check that the screen really is wider than tall. Taps fall back to the
element's centre when agent-device refuses a covered ref, and a gateway
whose workers briefly reconnect is retried.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The --prepare flag from pingdotgg#25390 had no default, so effect/cli made it
required and every mobile:install failed with "Missing required flag".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
agent-device names rotations relative to the device's natural orientation,
which is landscape on the Pixel Tablet and an unfolded Fold, so
"landscape-left" turned them portrait. The runner now asks for a shape and
tries each rotation until the screen has it. It also prepares each platform's
dev client before leasing, rides out longer worker drops, and skips the
Duo poses by default until agent-device can fold Simlock's simulators.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oes (pingdotgg#25426)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Upstream pingdotgg#25099 made effectFnOpportunity an error, so the scripts
typecheck failed on mergePatch's GitCommandError handler. Write it as
Effect.fn, the form the rule asks for.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@fireboltdude1357
fireboltdude1357 merged commit 43c7beb into patch/release Oct 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.