Releases: EdgeBCI/LabStreamingLayer
v0.3.0: Native Electron ASAR Support
π Release v0.3.0
β¨ What's New
Native Electron ASAR Support - The package now works out-of-the-box with Electron applications! No more post-install patches needed.
π§ Key Features
- Automatic ASAR Detection: Detects when running inside an Electron ASAR archive and adjusts paths accordingly
- Smart Path Resolution: Automatically finds native binaries in
app.asar.unpackedduring production builds - Multiple Fallbacks: Tries several paths including
process.resourcesPathfor maximum compatibility - Better Debugging: Console logging shows exactly where the library loads from
- Backward Compatible: Still works perfectly in standard Node.js environments
π Problem Solved
Previously, when Electron applications were packaged with electron-builder, the native LSL binaries would fail to load because they were inside the ASAR archive. Users had to apply post-install patches to fix the library paths.
This release eliminates that requirement by making the package intelligent enough to find the unpacked binaries automatically.
π¦ Installation
npm install node-labstreaminglayer@0.3.0π Acknowledgments
This release addresses the Electron packaging issues reported by the community. Thank you for your feedback!
π€ Generated with Claude Code
v0.2.2 - Improved Electron Support
What's Changed
π Bug Fixes
- Fixed native library loading for Electron applications
- Improved ASAR path handling with safer regex replacement
- Enhanced cross-platform architecture detection
β¨ Improvements
- Added ARM64 architecture support for Windows (via x64 emulation)
- Added multiple fallback paths for different Electron build structures
- Added debug logging capability (enable with
DEBUG_LSLenvironment variable) - Improved error messages with troubleshooting guidance
- Better handling of edge cases in path resolution
π§ Technical Details
- Fixed path traversal from compiled TypeScript output
- Added deduplication of searched paths for efficiency
- Enhanced Electron resources path detection
- Improved architecture fallback handling
This release ensures compatibility with both regular Node.js applications and packaged Electron apps, including proper ASAR unpacking support.
npm Package
Published to npm: https://www.npmjs.com/package/node-labstreaminglayer
v0.2.0 - Cross-platform Support
π node-labstreaminglayer v0.2.0
β¨ What's New
- Cross-platform support - Now works on Windows, macOS, and Linux!
- Native libraries included for all platforms:
- Windows (x64/x86)
- macOS (Intel x64)
- Linux (Ubuntu/Debian x64)
π¦ Installation
npm install node-labstreaminglayer@0.2.0π§ Changes
- Added
liblsl.dylibfor macOS support - Added
liblsl.sofor Linux support - Updated library loading to use correct naming conventions per platform
- Maintained backward compatibility with existing Windows implementation
π Documentation
Full documentation available in the README
π Contributors
Published to npm
node-labstreaminglayer v0.1.0 - Initial Release
π Initial Release of node-labstreaminglayer
Node.js bindings for Lab Streaming Layer (LSL) - A system for unified collection of measurement time series in research experiments.
π¦ Installation
npm install node-labstreaminglayer⨠Features
- π High-performance FFI bindings using Koffi
- π Support for all LSL data types (float32, double64, string, int32, int16, int8, int64)
- π Real-time streaming with sub-millisecond precision
- π Stream discovery and resolution
- π Full metadata support via XML
- π» Cross-platform support (Windows x86/x64, Linux, macOS)
- π¦ TypeScript support with full type definitions
- π§΅ Thread-safe operations
π Quick Start
Sending Data
import { StreamInfo, StreamOutlet } from 'node-labstreaminglayer';
const info = new StreamInfo('MyStream', 'EEG', 8, 100, 'float32', 'uniqueid123');
const outlet = new StreamOutlet(info);
const sample = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0];
outlet.pushSample(sample);Receiving Data
import { resolveStreams, StreamInlet } from 'node-labstreaminglayer';
const streams = resolveStreams();
if (streams.length > 0) {
const inlet = new StreamInlet(streams[0]);
const [sample, timestamp] = inlet.pullSample();
console.log('Received:', sample, 'at', timestamp);
}π Documentation
π₯οΈ Platform Support
- Windows: x64 and x86 (includes
lsl_amd64.dllandlsl_i386.dll) - Linux: x64 (requires system-installed LSL library)
- macOS: x64 and ARM64 (requires system-installed LSL library)
π Credits
- Lab Streaming Layer (LSL): https://github.com/sccn/labstreaminglayer
- Koffi FFI: https://koffi.dev/
- Author: Haowen John Wei (@HaowenWeiJohn)
π License
MIT