Skip to content

Releases: kryptobaseddev/escapeplan

EscapePlan v1.2.0

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 11 Oct 20:50

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)

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 10 Oct 07:35

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

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 10 Oct 07:28

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=optional flag
    • 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

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 10 Oct 07:16

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.4 and @img/sharp-libvips-linux-arm64@1.2.3 from 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)

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 10 Oct 06:54

🧹 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, sqlite3

Verification

cd /opt/escapeplan/api
node -e "console.log(require('sharp'))"
# Uses: /usr/lib/aarch64-linux-gnu/libvips-cpp.so.42

v1.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

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 10 Oct 06:35

🔧 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 found error

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-arm64

This 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

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 10 Oct 06:06

🔧 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-arm64 and node_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

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 10 Oct 05:40

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-arm64 AND @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 libvips
  • VERSION: 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.sh

Verification

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

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 10 Oct 05:18

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 binaries
  • scripts/pi-post-install.sh: Platform-aware sharp validation
  • VERSION: 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.sh

Verification

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

Choose a tag to compare

@kryptobaseddev kryptobaseddev released this 10 Oct 05:01

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.conf with $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 independently
  • scripts/nginx-configure.sh: Auto-generates WebSocket upgrade configuration if missing
  • VERSION: 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.sh

Verification

After installation:

systemctl status escapeplan-api
systemctl status escapeplan-web
/opt/escapeplan/scripts/health-check.sh

All services should start successfully without sharp module errors.