Ver código fonte

fix: remove $BUN_INSTALL check from launcher to prevent false Bun detection

When Bun is installed on the system but QMD was installed via npm,
$BUN_INSTALL is always set (typically to ~/.bun), causing the launcher
to incorrectly run QMD under Bun. This leads to ABI mismatches with
native modules (better-sqlite3, sqlite-vec) that were compiled for Node,
breaking vector operations with "no such module: vec0".

Only check for bun.lock/bun.lockb files, which reliably indicate that
QMD was actually installed with Bun.

Fixes #361

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Syed Humair 2 meses atrás
pai
commit
b0a14b18ad
1 arquivos alterados com 6 adições e 2 exclusões
  1. 6 2
      bin/qmd

+ 6 - 2
bin/qmd

@@ -15,8 +15,12 @@ done
 # to avoid native module ABI mismatches (e.g., better-sqlite3 compiled for bun vs node)
 DIR="$(cd -P "$(dirname "$SOURCE")/.." && pwd)"
 
-# Check if we were installed with bun (look for bun.lock or bun-lockb)
-if [ -f "$DIR/bun.lock" ] || [ -f "$DIR/bun.lockb" ] || [ -n "$BUN_INSTALL" ]; then
+# Check if we were installed with bun (look for bun.lock or bun-lockb).
+# $BUN_INSTALL is intentionally NOT checked here — it only indicates that bun
+# exists on the system, not that it was used to install this package.  When QMD
+# is installed via npm, native modules are compiled for Node and running them
+# under bun causes ABI mismatches (e.g. sqlite-vec "no such module: vec0").
+if [ -f "$DIR/bun.lock" ] || [ -f "$DIR/bun.lockb" ]; then
   exec bun "$DIR/dist/cli/qmd.js" "$@"
 else
   exec node "$DIR/dist/cli/qmd.js" "$@"