fix: embed vibe-native in compiled release binaries#355
Conversation
Regenerated index.js and index.d.ts with latest napi build output. Adds moveToTrash/moveToTrashAsync exports and updates formatting. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add native module build step to release and beta-release workflows so that bun build --compile includes the .node files in the binary. This enables clonefile syscall for directory CoW cloning instead of falling back to cp -cR on macOS/Linux. - macOS: cross-compile for both x86_64 and aarch64 - Linux: build for current architecture only - Windows: skip (vibe-native is macOS/Linux only) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Code Review: PR #355 - Embed vibe-native in compiled release binariesSummaryThis PR adds native module build steps to the release workflows to ensure ✅ Strengths1. Well-Structured Solution
2. Good Documentation
3. Consistency
4. License Compliance ✅All dependencies maintain Apache-2.0 or compatible licenses:
No GPL contamination detected. 🔍 Issues & Recommendations1. Type Safety Regression in index.d.ts
|
Run prettier --write on index.d.ts and index.js to match project code style. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PR Review: Fix embedding vibe-native in compiled release binariesSummaryThis PR addresses an important issue where the native ✅ Strengths1. Well-designed build strategy
2. Correct workflow integration
3. Good commit hygiene
|
NAPI-RS auto-generation widened the return type to string. Restore the specific union type for type safety. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PR Review: Embed vibe-native in compiled release binariesSummaryThis PR successfully addresses the issue of native modules not being embedded in compiled binaries by adding a build step for ✅ Code Quality & Best PracticesStrengths:
Suggestions:
✅ Security ConcernsNo security issues identified:
License Compatibility:
No GPL-licensed dependencies detected. ✅ Performance ConsiderationsPositive impacts:
Build strategy efficiency:
|
Add CI verification step to confirm native module embedding in release binaries, clarify macOS cross-compilation comments in workflows, and update documentation to reflect native clonefile() syscall usage. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PR Review: Embed vibe-native in compiled release binariesSummaryThis PR successfully addresses a critical issue where Homebrew-distributed binaries were falling back to ✅ Strengths1. Excellent Build Strategy
2. Security & Code Quality
3. Documentation
4. Proper Synchronization
🔍 Observations & Suggestions1. License Compatibility ✅Based on Cargo.toml review:
2. CI/CD Best PracticesThe workflow follows the project's
3. Test CoverageFrom the PR description, the test plan includes:
Suggestion: Consider adding an integration test in CI that:
4. Potential Edge Casesa) Linux ARM64 Native ModuleThe workflow builds Linux ARM64 natively on
b) Fallback BehaviorIf the Recommendation: Consider a graceful fallback chain: 5. Minor Improvementsa) Verification Script EnhancementCurrent verification uses Suggestion: Make it more specific to reduce false positives: if \! strings ARTIFACT | grep -q 'vibe-native.*\.node'; thenb) Windows HandlingThe PR correctly skips Windows for native module building. Consider adding a comment in the workflow explaining why (vibe-native is macOS/Linux only per Cargo.toml). 🐛 Potential Issues1.
|
Summary
release.ymlandbeta-release.ymlworkflows.nodefiles beforebun build --compileso Bun embeds them in the$bunfsvirtual filesystemclonefilesyscall for directory CoW cloning instead of falling back tocp -cRon Homebrew-distributed binariesDesign decisions
macos-latest(arm64), so Rust cross-compiles both.nodefiles. Bun bundler embeds both, runtime selects correct one viaprocess.archubuntu-latest, arm64 onubuntu-24.04-arm— each builds nativelyvibe-nativesupports macOS/Linux only--js falseindex.jsTest plan
.nodefiles (strings <binary> | grep 'vibe-native')vibe starton macOS usesclonefilestrategy with the compiled binary🤖 Generated with Claude Code