Skip to content

chore: bump @relayfile/sdk to ^0.8.21 (export-based mount bootstrap; fixes Linear issues not mounting)#205

Merged
khaliqgant merged 1 commit into
mainfrom
chore/bump-relayfile-mount-0821
Jun 10, 2026
Merged

chore: bump @relayfile/sdk to ^0.8.21 (export-based mount bootstrap; fixes Linear issues not mounting)#205
khaliqgant merged 1 commit into
mainfrom
chore/bump-relayfile-mount-0821

Conversation

@khaliqgant

Copy link
Copy Markdown
Member

Problem

.integrations/linear/issues never mounted in Pear — every sync cycle logged context deadline exceeded, no .relayfile-mount-state.json was ever written, and no issue files synced down. .integrations/linear/teams (same workspace) mounted fine, which masked the issue.

Root cause (verified)

The mount binary ships transitively via @relayfile/sdk's optionalDependencies (@relayfile/mount-<platform>-<arch>). The pinned 0.8.20 binary has no /fs/export in it (strings shows only /fs/tree + /fs/file). It bootstraps a mount by walking the tree and fetching every file one-by-one via serial /fs/file. For /linear/issues (~609 files) that serial walk exceeds the mount's per-sync deadline every cycle, so the bootstrap never completes.

Small scopes like /linear/teams (a handful of files) finish in seconds, so they mounted — masking the bug.

Prod was healthy the whole time — hitting api.relayfile.dev directly with the mount token, GET /fs/export?path=/linear/issues returns 609 entries / 1.8 MB in ~10 s (HTTP 200, already path-scoped). So this is a client-binary problem, not a server wedge.

Fix

Bump @relayfile/sdk ^0.8.20 → ^0.8.21. 0.8.21 adds bulk /fs/export (+ /fs/bulkwriteback) and bootstraps via the single export call.

The renderer's resolveRelayfileMountBinary checks the optional-package binary under node_modules first, so bumping the sdk pin is sufficient — a clean npm install pulls a properly-signed 0.8.21 mount.

Verification (head-to-head, same workspace / prod endpoint / 240 s timeout)

Binary Result
0.8.20 context deadline exceeded, 0 files, no state — even at 4 min
0.8.21 bootstraps via /fs/export, 8 s → 611 files + state written

Confirmed live: after swapping 0.8.21 in and restarting Pear, /linear/issues mounted — 105 issue files synced, mount sync cycle completed.

Notes

  • package-lock.json also heals 6 previously-missing @tailwindcss/oxide-wasm32-wasi optional wasm sub-deps (additions only; no packages removed — net 1070 → 1076).
  • Out of scope (tracked separately): server-side cleanup of stray <uuid>.json/.relay/state.json Daytona mount-state leaks + malformed issues <uuid>.json records polluting /linear/issues.

🤖 Generated with Claude Code

The Pear mount binary ships transitively via @relayfile/sdk's
optionalDependencies (@relayfile/mount-<platform>-<arch>). On 0.8.20 the
mount has no /fs/export endpoint — it bootstraps a mount by walking
/fs/tree and fetching every file one-by-one via serial /fs/file. For a
large scope like /linear/issues (600+ files) that serial walk exceeds the
mount's per-sync deadline on every cycle, so the bootstrap never completes,
no state file is written, and the scope never mounts. Small scopes
(e.g. /linear/teams) mount fine, masking the issue.

0.8.21 adds bulk /fs/export (+ /fs/bulkwriteback) and bootstraps via the
single export call instead. Verified against prod (api.relayfile.dev) on
the same workspace: 0.8.20 → context deadline exceeded, 0 files, no state
(even at a 4-min timeout); 0.8.21 → 8s, 611 files + state written.

The renderer launches the optional-package binary from node_modules first
(resolveRelayfileMountBinary), so bumping the sdk pin is sufficient — a
clean npm install pulls a properly-signed 0.8.21 mount. Lock also heals 6
previously-missing @tailwindcss/oxide-wasm32-wasi optional wasm sub-deps
(additions only; no packages removed).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 6c3c80a9-49f6-4fe7-a89c-76bddeda9cbc

📥 Commits

Reviewing files that changed from the base of the PR and between 831a56b and f8e3546.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (1)
  • package.json

📝 Walkthrough

Walkthrough

This PR updates the @relayfile/sdk dependency to patch version 0.8.21. The change is isolated to a single line in package.json and does not affect any other configuration, scripts, or source code.

Changes

Dependency Update

Layer / File(s) Summary
Relayfile SDK version bump
package.json
@relayfile/sdk bumped from ^0.8.20 to ^0.8.21 in dependencies.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

Poem

🐰 A version so small, yet it matters just right,
From point-twenty to point-twenty-one in the night,
Dependencies dance in their semantic way,
The SDK hops forward to brighter new day! 🎉

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: bumping @relayfile/sdk to ^0.8.21 and references the key fix (export-based mount bootstrap for Linear issues mounting).
Description check ✅ Passed The description is directly related to the changeset, providing detailed context about the problem, root cause, fix, and verification for the dependency bump.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/bump-relayfile-mount-0821

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codeant-ai

codeant-ai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the @relayfile/sdk dependency from version 0.8.20 to 0.8.21 in both package.json and package-lock.json. Additionally, the lockfile reflects the removal of several libc constraints across multiple platform-specific optional dependencies, and introduces nested dependencies under @tailwindcss/oxide-wasm32-wasi. There are no review comments, and I have no additional feedback to provide.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@khaliqgant khaliqgant merged commit 0eecefe into main Jun 10, 2026
5 checks passed
@khaliqgant khaliqgant deleted the chore/bump-relayfile-mount-0821 branch June 10, 2026 13:23
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.

1 participant