Skip to content

Releases: EdgeBCI/LabStreamingLayer

v0.3.0: Native Electron ASAR Support

16 Aug 19:46

Choose a tag to compare

πŸš€ 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.unpacked during production builds
  • Multiple Fallbacks: Tries several paths including process.resourcesPath for 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

15 Aug 21:16

Choose a tag to compare

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_LSL environment 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

15 Aug 20:00

Choose a tag to compare

πŸŽ‰ 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.dylib for macOS support
  • Added liblsl.so for 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

08 Aug 14:52

Choose a tag to compare

πŸŽ‰ 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.dll and lsl_i386.dll)
  • Linux: x64 (requires system-installed LSL library)
  • macOS: x64 and ARM64 (requires system-installed LSL library)

πŸ‘ Credits

πŸ“„ License

MIT