Releases: kryptobaseddev/escapeplan
Release list
EscapePlan v1.2.0
EscapePlan v1.2.0
🚀 New Features
- Claude Code custom slash commands for workflows
- Project management commands
- Comprehensive documentation
🐛 Bug Fixes
- Issue #11: Fixed timer lag
- Issue #12: Fixed hint badge timeout
📦 Installation
sha256sum -c SHA256SUMS
sudo dpkg -i escapeplan_1.2.0_arm64.deb🤖 Built by CodLuv Team
v1.0.16 - Fix Sharp RPATH Symlink (FINAL FIX)
Fixed - Sharp Now Works! 🎉
Root cause identified and fixed: Sharp's ARM64 binary uses RPATH to find libvips, and the path must be exact.
The Problem
- Sharp binary RPATH searches for:
../../node_modules/@img/sharp-libvips-linux-arm64/lib - Previous versions had the files but wrong symlink structure
- Dynamic linker couldn't find libvips even though it existed
The Solution
Created exact RPATH-compatible symlink structure:
node_modules/.pnpm/@img+sharp-linux-arm64@0.34.4/node_modules/@img/sharp-libvips-linux-arm64
→ ../../../@img+sharp-libvips-linux-arm64@1.2.3/node_modules/@img/sharp-libvips-linux-arm64
Tested and Working
- Manually verified on Raspberry Pi
- Sharp loads successfully
- All binaries are correct ARM64 architecture
Installation
Clean install:
```bash
Complete cleanup
sudo apt purge escapeplan -y
sudo rm -rf /opt/escapeplan /var/lib/escapeplan /var/log/escapeplan /etc/escapeplan /var/backups/escapeplan
sudo userdel escapeplan 2>/dev/null || true
sudo systemctl daemon-reload
Install v1.0.16
wget https://github.com/kryptobaseddev/escapeplan/releases/download/v1.0.16/escapeplan_1.0.16_arm64.deb
sudo apt install ./escapeplan_1.0.16_arm64.deb
```
Then run first-boot setup:
```bash
sudo /opt/escapeplan/scripts/first-boot-setup.sh
```
🤖 Generated with Claude Code
v1.0.15 - Install Sharp On-Device
Fixed
- Sharp installation: Install Sharp natively on the Pi during package installation
- Removed all Sharp bundling code from cross-compilation build
- Sharp now installed via npm during postinst with
--include=optionalflag - npm automatically downloads correct ARM64 optional dependencies for the Pi's architecture
- Installation is verified before proceeding with setup
This is the correct approach for platform-specific native modules. Sharp's optional dependencies must be installed on the target architecture to work correctly.
Installation
Clean install (removes all previous versions):
```bash
Complete cleanup
sudo apt purge escapeplan -y
sudo rm -rf /opt/escapeplan /var/lib/escapeplan /var/log/escapeplan /etc/escapeplan /var/backups/escapeplan
sudo userdel escapeplan 2>/dev/null || true
sudo systemctl daemon-reload
Install v1.0.15
wget https://github.com/kryptobaseddev/escapeplan/releases/download/v1.0.15/escapeplan_1.0.15_arm64.deb
sudo apt install ./escapeplan_1.0.15_arm64.deb
```
Then run first-boot setup:
```bash
sudo /opt/escapeplan/scripts/first-boot-setup.sh
```
🤖 Generated with Claude Code
v1.0.14 - Fix Sharp ARM64 Binary Installation
Fixed
- Sharp ARM64 installation: Download and install Sharp's ARM64 optional dependencies during package build
- Previously pnpm only installed x86_64 binaries (matching build machine)
- Now explicitly downloads
@img/sharp-linux-arm64@0.34.4and@img/sharp-libvips-linux-arm64@1.2.3from npm registry - Installs to pnpm directory structure and creates proper symlinks
- Sharp will now load correctly on Raspberry Pi ARM64
Installation
Install using apt (automatically installs libvips42 dependency):
```bash
wget https://github.com/kryptobaseddev/escapeplan/releases/download/v1.0.14/escapeplan_1.0.14_arm64.deb
sudo apt install ./escapeplan_1.0.14_arm64.deb
```
Then run first-boot setup:
```bash
sudo /opt/escapeplan/scripts/first-boot-setup.sh
```
🤖 Generated with Claude Code
v1.0.13 - Use System libvips (Clean Solution)
🧹 Simplification
Stop Bundling - Use System libvips
Previous versions (v1.0.7-v1.0.12) tried to manually bundle Sharp's ARM64 binaries and libvips, creating 90+ lines of complex symlink management. This is backwards.
The Simple Fix
- Add libvips42 as .deb dependency
- apt automatically installs it
- Sharp uses system library (standard approach)
- Deleted all manual Sharp installation code
Why This Works
Production systems use system-installed native libraries, not bundled ones. This is standard practice for packages like Sharp that wrap native libraries.
Installation
sudo dpkg -i escapeplan_1.0.13_arm64.deb
# apt automatically installs: nodejs, libvips42, nginx, sqlite3Verification
cd /opt/escapeplan/api
node -e "console.log(require('sharp'))"
# Uses: /usr/lib/aarch64-linux-gnu/libvips-cpp.so.42v1.0.7-v1.0.12 were failed attempts to bundle libvips. v1.0.13 uses the correct approach.
v1.0.12 - Fix Sharp Dynamic Linker RPATH
🔧 Bug Fixes
Sharp Module - Dynamic Linker Fix
- Created RPATH-compatible symlink inside sharp-linux-arm64 package
- The .node binary's RPATH now correctly finds libvips-cpp.so.8.17.2
- Fixed:
libvips-cpp.so.8.17.2 => not founderror
Root Cause (v1.0.11 Issue)
The sharp-linux-arm64.node binary has embedded RPATH:
$ORIGIN/../../sharp-libvips-linux-arm64/lib
This expects a symlink at:
node_modules/.pnpm/@img+sharp-linux-arm64@0.34.4/node_modules/@img/sharp-libvips-linux-arm64
v1.0.11 created top-level symlinks (node_modules/@img/sharp-libvips-linux-arm64) but not the package-internal symlink that RPATH needs.
The Fix (v1.0.12)
Created symlink inside sharp-linux-arm64's own node_modules directory:
node_modules/.pnpm/@img+sharp-linux-arm64@0.34.4/node_modules/@img/sharp-libvips-linux-arm64
-> ../../../@img+sharp-libvips-linux-arm64@1.2.3/node_modules/@img/sharp-libvips-linux-arm64This matches pnpm's standard dependency linking structure.
Verification
After installing v1.0.12 on Raspberry Pi:
cd /opt/escapeplan/api
node -e "console.log(require('sharp'))"
# Expected: [Function (anonymous)] { ... }
ldd node_modules/.pnpm/@img+sharp-linux-arm64@0.34.4/.../sharp-linux-arm64.node | grep libvips
# Expected: libvips-cpp.so.8.17.2 => /opt/escapeplan/api/node_modules/...Full debugging: SESSION_2025-10-09_SHARP_MODULE_DEBUGGING.md
v1.0.11 - Fix Sharp Module Loading on ARM64
🔧 Bug Fixes
Sharp Module Loading (ARM64)
- Fixed runtime module resolution for Sharp image processing library
- Created proper pnpm symlink structure for @img/sharp-libvips-linux-arm64
- Removed x64 libvips packages that were incorrectly included
Root Cause
Sharp's ARM64 binary loaded successfully, but when it tried to dynamically load libvips, Node's module resolution failed because the required node_modules/@img/ symlinks were missing.
Technical Details
- Added top-level symlinks:
node_modules/@img/sharp-linux-arm64andnode_modules/@img/sharp-libvips-linux-arm64 - These symlinks point to the actual packages in
.pnpm/store - Now libvips-cpp.so.8.17.2 can be found via Node's module resolution
- Removed non-ARM64 libvips packages during build
Verification
After installing v1.0.11 on Raspberry Pi:
cd /opt/escapeplan/api
node -e "console.log(require('sharp'))"
# Should output: [Function (anonymous)] { ... }Full debugging session: See SESSION_2025-10-09_SHARP_MODULE_DEBUGGING.md
EscapePlan v1.0.10
EscapePlan v1.0.10 - Sharp libvips Bundled Libraries
Critical Fix
Missing libvips Shared Libraries
- Root cause: Build script only copied sharp .node file, not libvips dependencies
- Problem: API crashed with "libvips-cpp.so.8.17.2 => not found"
- Result: Sharp module couldn't load even though ARM64 binary was correct
Changes
Build Script (scripts/build-deb-arm64.sh:214-238)
- Download BOTH
@img/sharp-linux-arm64AND@img/sharp-libvips-linux-arm64 - Copy all package contents including bundled libraries
- Sharp ARM64 binary requires libvips-cpp.so.8.17.2 from sharp-libvips package
What Changed
scripts/build-deb-arm64.sh: Install sharp-libvips package with bundled libvipsVERSION: Bumped to 1.0.10
Installation
wget https://github.com/kryptobaseddev/escapeplan/releases/download/v1.0.10/escapeplan_1.0.10_arm64.deb
sudo dpkg -i escapeplan_1.0.10_arm64.deb
sudo /opt/escapeplan/scripts/first-boot-setup.shVerification
After installation, verify libvips is present:
ls -lh /opt/escapeplan/api/node_modules/.pnpm/@img+sharp-libvips-linux-arm64@*/node_modules/@img/sharp-libvips-linux-arm64/lib/libvips-cpp.so*
# Should show: libvips-cpp.so.8.17.2
ldd /opt/escapeplan/api/node_modules/.pnpm/@img+sharp-linux-arm64@*/node_modules/@img/sharp-linux-arm64/lib/sharp-linux-arm64.node | grep libvips
# Should show: libvips-cpp.so.8.17.2 => /path/to/libvips-cpp.so.8.17.2
systemctl status escapeplan-api
# Should show: active (running) - NO MORE LIBVIPS ERRORS\!EscapePlan v1.0.9
EscapePlan v1.0.9 - Sharp Module Platform Binary Fix
Critical Fix
Sharp Module Wrong Platform Selection
- Root cause: pnpm deploy installed ALL sharp platform binaries (x64, arm64, musl-x64)
- Problem: Sharp's runtime loader selected x64 binary instead of ARM64
- Result: API crashed with "Could not load the 'sharp' module using the linux-arm64 runtime"
Changes
Build Script (scripts/build-deb-arm64.sh:206-212)
- Remove ALL non-ARM64 sharp binaries after pnpm deploy
- Force Sharp to only have ARM64 platform available
- Prevents runtime loader from selecting wrong platform
Post-Install Script (scripts/pi-post-install.sh:188-311)
- Updated Sharp validation to check platform-specific binaries
- Detects and removes x64 binaries if found during installation
- Sharp v0.34+ uses prebuilt binaries, NOT node-gyp rebuilding
- Only rebuilds better-sqlite3 (sharp doesn't support rebuilding)
What Changed
scripts/build-deb-arm64.sh: Remove x64/musl-x64/darwin sharp binariesscripts/pi-post-install.sh: Platform-aware sharp validationVERSION: Bumped to 1.0.9
Installation
wget https://github.com/kryptobaseddev/escapeplan/releases/download/v1.0.9/escapeplan_1.0.9_arm64.deb
sudo dpkg -i escapeplan_1.0.9_arm64.deb
sudo /opt/escapeplan/scripts/first-boot-setup.shVerification
After installation, verify ONLY ARM64 sharp binary exists:
find /opt/escapeplan/api/node_modules/.pnpm -name "sharp*.node" -type f
# Should show ONLY: .../sharp-linux-arm64/lib/sharp-linux-arm64.node
systemctl status escapeplan-api
# Should show: active (running)EscapePlan v1.0.8
EscapePlan v1.0.8 - Critical Installation Fixes
Critical Fixes
Sharp Module Rebuild
- Fixed sharp module not being validated or rebuilt for ARM64
- Script now checks BOTH better-sqlite3 AND sharp before skipping rebuild
- Validates both modules after rebuild to ensure ARM compatibility
- Resolves "Could not load the 'sharp' module using the linux-arm64 runtime" error
Nginx WebSocket Configuration
- Auto-creates
/etc/nginx/conf.d/websocket-upgrade.confwith $connection_upgrade map directive - Fixes "unknown 'connection_upgrade' variable" nginx configuration error
- Enables proper WebSocket proxy support for Socket.IO real-time features
What Changed
scripts/pi-post-install.sh: Enhanced native module validation to check sharp independentlyscripts/nginx-configure.sh: Auto-generates WebSocket upgrade configuration if missingVERSION: Bumped to 1.0.8
Installation
wget https://github.com/kryptobaseddev/escapeplan/releases/download/v1.0.8/escapeplan_1.0.8_arm64.deb
sudo dpkg -i escapeplan_1.0.8_arm64.deb
sudo /opt/escapeplan/scripts/first-boot-setup.shVerification
After installation:
systemctl status escapeplan-api
systemctl status escapeplan-web
/opt/escapeplan/scripts/health-check.shAll services should start successfully without sharp module errors.