fix: 0.1.1 — pin effect exactly; a caret range on a beta crash-looped the plugin #2

Merged
enricobuehler merged 1 commits from fix-effect-pin into main 2026-08-09 08:08:39 +00:00
1 Commits
Author SHA1 Message Date
enricobuehler 58839c2d32 fix(deps): 0.1.1 — pin effect exactly; a caret range on a beta crash-looped the plugin
CI / build (pull_request) Successful in 27s
CI / publish (pull_request) Skipped
The plugin would not start. Every launch died at module import with

    TypeError: Schema3.TaggedErrorClass is not a function

reported by the runner as the uninformative `UnknownError: An error occurred in Effect.tryPromise`
(`sdk/src/runner.ts` wraps the import in a bare `tryPromise` and logs only the first line of the
cause, so the real TypeError never reaches a log line).

Cause: `"effect": "^4.0.0-beta.102"`. A caret range spans breaking prereleases. effect still had
`Schema.TaggedErrorClass` at beta.102 but had removed it by beta.106, so a fresh install resolved
beta.106 and the contract's Schema-backed error classes failed to construct at import time — before
any of this plugin's code ran.

Pinned to exactly the version it was already written against, beta.102, which still has the API;
this is the smallest change that makes runtime match the build. Measured: beta.99 and beta.102 both
export TaggedErrorClass, beta.106 does not.

Verified by reproduction rather than inspection — clean sandbox, same command:
  0.1.0 (^4.0.0-beta.102) -> resolves effect beta.106 -> import fails with the TypeError above
  0.1.1 (4.0.0-beta.102)  -> resolves effect beta.102 -> import OK, default export `virtualhere`

Gates: frozen-lockfile install, typecheck x3, 73 tests, biome — all clean.

Same class of bug as punktfunk-plugin-rom-manager#4. The other plugins (epic, gog, heroic, lutris,
steam, xbox) already pin exactly and are unaffected; playnite still carries `^4.0.0-beta.99` and
has the same latent bug.
2026-08-09 09:46:34 +02:00