Skip to content

Releases: gilestrolab/ethoscope

Release v2.3.0

20 Apr 13:42

Choose a tag to compare

Ethoscope Platform Release v2.3.0

This release includes updates to both the device and node packages of the Ethoscope platform.

📦 Packages Included

  • ethoscope (Device Package): Core tracking and monitoring functionality
  • ethoscope_node (Node Package): Central management and data collection

📝 Changes in this Release

  • chore: Update 3D printed case files and add mirror SVG (f352aa3)
  • fix(frontend): Fix spinner.stop is not a function error (53804c0)
  • test: Add tests for img_proc and video utilities (2e3059a)
  • test: Add tests for triggers, actions, channels, drawers, and cache (cadb4ee)
  • test: Add tests for triggers, composed stimulator, and drawers (ab93b86)
  • test: Add unit tests for device package and fix stimulator init bugs (d67316b)
  • fix(sensor): Add fallback address resolution for virtual sensor (edebda4)
  • New link to ethoscope image 2026 04 17 (5953697)
  • fix(node): Update SSH link credentials from alarm to ethoscope (57aa89f)
  • fix(install): Ensure cloud-init settings are set and fix sdimagename (9664ced)
  • chore: Remove pre-commit wrapper scripts (4e5cd4a)
  • refactor(install): Consolidate reset_to_000.sh into install_ethoscope_debian.sh (05922bb)
  • fix(device): Fix /etc/hosts being overwritten by cloud-init on newer Raspbian (5c8d579)
  • fix(services): Correct virtual sensor script path in service file (b488de8)
  • fix(sensors): Use explicit alerts field instead of ID prefix for alert suppression (d968678)
  • feat(ui): Consolidate sensor management into dedicated page with per-sensor alerts (b76f32b)
  • style: Replace %-formatting with f-strings in light_daemon.py (ea149c4)
  • fix(updater): Delay node daemon restart to prevent 502 on update (98e7ffd)
  • fix(ui): Fix sensor modal crash and clean up script.js bugs (ced6f7c)
  • chore: Update Ethoscope PI3 image to April 2026 release (aba95cd)
  • feat(ui): Add incubator delete and sensor association display (e94cf2e)
  • refactor(firmware): Extract user config to gitignored versions.h (76980c8)
  • chore: Update default camera settings (885260c)
  • feat: Add light hardware toggle to ethoscope settings (65a2427)
  • fix(ui): Fix error dismiss button using object for scope inheritance (bf46fbe)
  • fix(ui): Fix Angular expression error in tracking validation message (6336bfc)
  • fix(ui): Require location selection and fix dropdown z-index (94505d4)
  • fix(ui): Make tracking error message dismissible (539beee)
  • fix(lint): Resolve all ruff warnings in device_server.py (cac979b)
  • feat: Add LED daylight control service for incubator light regimes (12832ed)
  • node: add ethoscope_mirror_fetch service+timer to refresh local bare mirror (36f0024)
  • fix(node): Attach temperature callback during sensor discovery (c16301c)
  • fix(stimulators): Handle missing serial hardware in OptoMotor init (0ef1821)
  • fix(firmware): Reverse last 10 pins in PCB v1.2 mapping for correct channel order (238731e)
  • fix(firmware): Swap pin pairs in PCB v1.2 mapping for correct ROI-to-LED alignment (4352171)
  • fix(firmware): Swap LED channel pairs for correct ROI-to-channel mapping (8574df4)
  • fix(stimulators): Guard channel map LED count check against non-integer types (3831ba7)
  • fix(frontend): Downgrade ES6+ to ES5 for Midori browser compatibility (41c1975)
  • feat(firmware): Add PCB V1.2/V1.3 pin mappings and simplify demo (bfce367)

🚀 Installation

Device Package:

pip install ethoscope-v2.3.0-py3-none-any.whl

Node Package:

pip install ethoscope_node-v2.3.0-py3-none-any.whl

📚 Documentation

For detailed documentation, visit https://lab.gilest.ro/ethoscope-manual

🐛 Bug Reports

Please report issues at https://github.com/gilestrolab/ethoscope/issues

Release v2.2.0

27 Mar 17:43

Choose a tag to compare

Ethoscope Platform Release v2.2.0

This release includes updates to both the device and node packages of the Ethoscope platform.

📦 Packages Included

  • ethoscope (Device Package): Core tracking and monitoring functionality
  • ethoscope_node (Node Package): Central management and data collection

📝 Changes in this Release

  • fix(ci): Drop Python 3.8 from release workflow (c506d49)
  • fix(ci): Resolve pre-existing CI/CD failures across all workflows (5dc6811)
  • fix(hostname): Use raspi-config and disable cloud-init to persist hostname (c5f16cc)
  • refactor(firmware): Remove SerialCommand library dependency (4ebee92)
  • fix(updater): Self-restart services after successful update (a8f2278)
  • docs(mAGO): Add SerialCommand library installation instructions (2260f6e)
  • feat(install): Rewrite installer as step-based script with Trixie compatibility (032a2f7)
  • feat(firmware): Add Arduino firmware update from ethoscope device (8834a3b)
  • chore: Remove QWEN.md, superseded by CLAUDE.md (cffc03b)
  • rename(hardware): Rename mAGO to ethoscope_multimodule to reflect multi-module firmware scope (208fa33)
  • feat(stimulators): Auto-detect module capabilities for channel mapping (7129808)
  • fix(scanner): Resolve backup_path showing stale date from old unfinalised database (1d1b289)
  • feat(ui): Display module identity and filter actions by hardware capabilities (cb38cc5)
  • feat(stimulators): Replace flat stimulator list with trigger + action model (f20789e)
  • fix(mAGO): Fix channel validation rejecting channels 10-19 (d8270d2)
  • Adding STL for 3D printing the SD base (da56614)
  • Replaced with a model that has opening for two screws securing the PI (249d115)
  • Add 3D printed case and accessory STL files for ethoscope v1.8/v1.9 (18aa475)
  • fix(docker): Restore mDNS port mapping for device discovery (55192e6)
  • fix(docker): Add missing Python dependencies to node container (9659e56)
  • fix(docker): Remove unnecessary ethoscope device package and opencv from node container (f8010c0)
  • fix(docker): Use --no-deps for pip install to prevent OpenEXR build failure (870547a)
  • fix(ci): Serialize Docker builds to avoid runner saturation (dbb7a8f)
  • ci: trigger Docker image build workflow (4ead7f7)

🚀 Installation

Device Package:

pip install ethoscope-v2.2.0-py3-none-any.whl

Node Package:

pip install ethoscope_node-v2.2.0-py3-none-any.whl

📚 Documentation

For detailed documentation, visit https://lab.gilest.ro/ethoscope-manual

🐛 Bug Reports

Please report issues at https://github.com/gilestrolab/ethoscope/issues

Ethoscope v2.0.0 - Major Release

17 Nov 08:33

Choose a tag to compare

Ethoscope v2.0.0 - Major Release

This is a major release with significant infrastructure improvements, new features, and comprehensive testing.

🎯 Highlights

Infrastructure & Quality

  • CI/CD Pipeline: Comprehensive GitHub Actions workflows for automated testing, quality checks, and releases
  • Testing Infrastructure: 80%+ code coverage with unit, integration, and functional tests
  • Code Quality: Pre-commit hooks with black, ruff, bandit, and secrets detection
  • Docker Support: Full containerization for node, virtuascope, and sandbox environments

New Features

  • Authentication System: Complete user management with session handling and middleware
  • Notification System: Multi-channel alerts (Email, Slack, Mattermost) with comprehensive logging
  • Enhanced Backup: Improved MySQL, SQLite, and video backup systems with caching
  • ROI Templates: Built-in templates for common setups with improved target detection
  • Sleep Restriction: New sleep restriction stimulators inherited from mAGO
  • Multi-Stimulator: Support for sequential activation of multiple stimulators

Improvements

  • Database Resilience: Enhanced error handling and recovery for SD card I/O failures
  • Frontend Enhancements: Improved UI/UX with authentication, backup status indicators
  • Package Independence: Strict separation between device and node packages
  • Documentation: Comprehensive guides for testing, CI/CD, and deployment

📦 Package Structure

The codebase has been reorganized into independent packages:

  • src/ethoscope/ - Device tracking package
  • src/node/ - Node management package

⚠️ Breaking Changes

  • Package Restructuring: Code moved from flat structure to src/ethoscope/ and src/node/
  • Authentication Required: New authentication system requires user setup via installation wizard
  • Service Files: Moved from scripts/ to services/ directory
  • Python Version: Device package requires Python 3.7+, node package requires Python 3.8+

🔧 Migration Guide

For Existing Installations

  1. Backup your data before upgrading
  2. Run the installation wizard: Access the setup API to configure authentication
  3. Update service files: Use accessories/upgrade_scripts/install_services.sh
  4. Check configuration: Verify settings in /etc/ethoscope/

For New Installations

  1. Follow the updated installation guide in README.md
  2. Use the Docker setup for testing: Docker/node/docker-compose.yml
  3. Run the installation wizard on first start

📊 Testing

Run tests with the new centralized test runner:

# All tests
python run_tests.py

# With coverage
python run_tests.py --coverage

# Device tests only
python run_tests.py --package device

# Node tests only
python run_tests.py --package node

📝 Full Changelog

See the commit history for detailed changes:

  • 466 commits merged from dev branch
  • 80%+ test coverage achieved
  • Comprehensive CI/CD pipeline implemented

🙏 Contributors

Special thanks to all contributors who helped with testing, bug reports, and feature requests.

📚 Documentation

🤖 Generated with Claude Code