Releases: gilestrolab/ethoscope
Release v2.3.0
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.whlNode 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
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.whlNode 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
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 packagesrc/node/- Node management package
⚠️ Breaking Changes
- Package Restructuring: Code moved from flat structure to
src/ethoscope/andsrc/node/ - Authentication Required: New authentication system requires user setup via installation wizard
- Service Files: Moved from
scripts/toservices/directory - Python Version: Device package requires Python 3.7+, node package requires Python 3.8+
🔧 Migration Guide
For Existing Installations
- Backup your data before upgrading
- Run the installation wizard: Access the setup API to configure authentication
- Update service files: Use
accessories/upgrade_scripts/install_services.sh - Check configuration: Verify settings in
/etc/ethoscope/
For New Installations
- Follow the updated installation guide in README.md
- Use the Docker setup for testing:
Docker/node/docker-compose.yml - 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
- Testing Guide
- CI/CD Documentation
- Backup Status API
- Multi-Stimulator Feature
- Sleep Restriction Guide
🤖 Generated with Claude Code