Releases: adolfousier/hustle-tracker
v0.4.20
What's Changed
Renamed to Hustle Tracker
- Crate renamed from
neura_hustle_trackertohustle-tracker - Binaries:
hustle_trackerandhustle_daemon - Install via crates.io:
cargo install hustle-tracker - Updated all scripts, CI workflows, docs, and repo URLs
Published on crates.io
- Added full Cargo.toml metadata (description, license, keywords, categories)
- Added module-level and struct-level doc comments
CI: Automated crates.io publishing
- Release workflow now publishes to crates.io automatically
- Verifies with
cargo publish --dry-runbefore publishing - Skips if version already published
Full Changelog: https://github.com/adolfousier/hustle-tracker/blob/main/CHANGELOG.md
v0.4.19
What's New
-
Hyprland Window Detection: Native window tracking support for Hyprland compositor
- Uses
hyprctl activewindow -j— works out of the box, no extensions needed - Graceful fallback to GNOME D-Bus and X11 if
hyprctlis unavailable
- Uses
-
Wayland Detection Fix: Improved session detection with socket fallback
- Fixes detection on terminals like Ptyxis that don't propagate
WAYLAND_DISPLAY/XDG_SESSION_TYPE - Falls back to checking Wayland socket at
$XDG_RUNTIME_DIR/wayland-0
- Fixes detection on terminals like Ptyxis that don't propagate
-
Test Coverage: Added 20+ unit tests for window detection logic
- Hyprland JSON parsing, empty/malformed responses, error handling
- Organized in dedicated
monitor_tests.rsmodules
-
Code Quality: Resolved all clippy warnings across the codebase
v0.4.18: Self-contained binary and simplified startup
What's New
Self-Contained Binary (Fixes #8)
Pre-built binaries now auto-start PostgreSQL when the database isn't running. No more manual Docker setup required.
- Binary embeds
compose.ymlat compile time and writes it to the app data directory on first run - Automatically detects if database is unreachable and starts it via
docker compose up -d - Polls database readiness with retry loop (30s timeout) before connecting
- Supports both
docker compose(v2 plugin) and standalonedocker-composewith automatic fallback - App data stored in platform-standard directories (
~/.local/share/neura-hustle-tracker/on Linux) - Backward compatible: existing
.envin project directory (fromjust runworkflow) takes priority
Embedded Migrations
- Database migrations are now compiled into the binary via
include_str!— no external files needed at runtime - Daemon binary now also runs migrations on startup (previously skipped)
Simplified Startup Scripts (Fixes #9)
- Linux
.desktop: Removed Alacritty, tmux, xdotool, and hardcoded path dependencies. Daemon runs headless. - New systemd user service:
neura-tracker.serviceas an alternative to.desktopautostart - macOS
.plist: Removed osascript wrapper,findcommand, and 30-second sleep. Direct daemon launch with crash recovery.
Improved Error Messages
- Fixed stale
make daemon-statusreferences, now points todocker ps - Clearer guidance when database connection fails
Documentation
- Added troubleshooting section to README (database errors, pre-built binary setup, port conflicts, Wayland, macOS permissions)
- Updated pre-built binary and Start on Boot sections
Dependencies
- Updated all dependencies to latest versions
Full Changelog: https://github.com/adolfousier/neura-hustle-tracker/blob/main/CHANGELOG.md
v0.4.16: Timeline Enhancements and Dashboard Reorganization
✨ What's New
🎨 Beautiful Colored Activity Timeline
- Full-width timeline visualization for daily (hourly), weekly (daily), and monthly views
- Each period colored by dominant activity category
- Category colors: Yellow (Development), Blue (Browsing), Green (Communication), Magenta (Media), Cyan (Files)
- Adaptive labels that scale with terminal width (every 1-4 hours for daily, every day for weekly/monthly)
- Category legend showing top 5 active categories
📊 Dashboard Reorganization
- Sessions timeline moved to dedicated dialog (press 's' from dashboard)
- Main dashboard now integrates colored timeline at bottom for at-a-glance activity overview
- Better space utilization and visual hierarchy
- Detailed stats and categories repositioned for improved layout
🔄 View Mode Synchronization
- Timeline now correctly shows Daily/Weekly/Monthly view data
- All activity percentages match their respective pie charts
- Weekly view aggregates last 7 days from Sunday
- Monthly view aggregates full month from 1st
🚀 Benefits
- Visual activity patterns immediately visible at a glance
- See which categories dominate your time by color
- Better organization of dashboard elements
- Smoother workflow with sessions in dedicated space
📦 Downloads
Standalone binaries available for Linux, macOS (Intel & Apple Silicon), and Windows - no Rust installation required.
Thanks for using Neura Hustle Tracker! 🎯
Release v0.4.15
🎉 Release v0.4.15
Build System Migration
- Replaced Make with Just-rs: All build commands now use
justinstead ofmake - Removed
makedependency - project now fully uses Rust-basedjustfor build automation - All platform scripts (Linux, macOS, Windows) migrated to justfile
- Backward compatibility maintained for users transitioning from Makefile
Command UI Improvements
- View Mode Switching - Replaced Tab with dedicated keys:
d- Switch to Daily vieww- Switch to Weekly viewm- Switch to Monthly view
- Session History - Changed from
htosfor viewing session history - Updated command dialog and README with new command mappings
Cross-Platform Executables
- Linux: Single unified binary (TUI + backend in one)
- Windows: daemon.exe (backend) + tui.exe (frontend)
- macOS: daemon (backend) + tui (frontend)
- Users only need Docker + PostgreSQL, no Rust installation required
Installation
```bash
Linux (Unified Mode)
just run
macOS/Windows (Daemon Mode)
just daemon-start # Start background tracking
just view # Open TUI dashboard
```
v0.4.14: Windows Compilation Fix
🪟 Windows Users - Important Fix
This release fixes a critical compilation error on Windows.
What was fixed
- Fixed
error[E0425]: cannot find value 'app_name' in this scopethat was preventing Windows builds - The variable
app_namewas only declared in macOS-specific code but used in both macOS and Windows sections - Solution: Moved the variable declaration outside platform-specific blocks
Windows Users - Action Required
If you were unable to compile on Windows due to this error, you can now build and run successfully:
cargo build --releaseor use the provided Windows batch scripts if you have them set up.
Affected Files
src/tracker/monitor.rs(line 204-209)
No database migrations or additional setup required. Just rebuild and run!
Release v0.4.13: UI Improvements and IDLE Detection Fixes
What's New
IDLE Detection Fix
- Fixed IDLE detection for non-AFK sessions
- Previously, only AFK sessions could be marked as IDLE after 10+ minutes of inactivity
- Now all sessions (AFK or regular) are properly marked as IDLE after 10+ minutes with no keyboard/mouse input
- Impact: Prevents long idle sessions from being counted as active time in statistics
Category Dialog Improvements
- Added Page Up/Page Down support for quick navigation through large app lists
- Improved scrolling behavior: selection now stays in viewport when navigating with arrows
- Updated dialog help text to show available navigation keys (↑/↓/PgUp/PgDn)
Sub-Entry Categorization Fixed
- WhatsApp inside Firefox, browser tabs, and other sub-entries now properly save assigned categories to database
- Sub-entry categories are now correctly retrieved and displayed when reopening category dialog
- Fixed aggregation logic to preserve category assignments across multiple sessions
Visual Improvements
- Added category colors to detailed stats panel ("📈 Detailed Stats" now matches "🥧 Categories" panel colors)
- Parent apps show their auto-detected category colors
- Sub-entries show their custom categories (or parent's color if no custom category)
- Consistent color scheme across all UI panels for better visual feedback
Bug Fixes
- Fixed hierarchy aggregation logic that was ignoring sub-entry category updates
- Fixed dialog navigation to properly handle viewport boundaries
- Added debug logging for category updates for better troubleshooting
Technical Details
- Updated IDLE detection to check all sessions, not just AFK sessions
- Enhanced category dialog state management with scroll offset tracking
- Improved render logic for consistent color application across panels
Release v0.4.12: Improve macOS window detection and migration integrity
What's Changed
- macOS Window Detection Improvements: Simplified and streamlined window title detection for all macOS applications.
- Removed complex app-specific AppleScript methods that attempted different approaches for browsers, terminals, etc.
- Now uses unified System Events approach for consistent window title detection across all applications.
- Significantly reduced code complexity while maintaining reliable window tracking.
- Improved maintainability by eliminating browser-specific and terminal-specific detection logic.
- Enhanced App Tracking Logic: Improved daemon state management with better logging and status tracking.
- Added detailed debug logging for app detection and window changes.
- Enhanced app switching logic to properly update current state only when not AFK.
- Fixed session initialization to include idle_accumulation_secs field.
- Migration System Enhancement: Added checksum validation to database migrations for improved integrity.
- Added sha2 dependency for calculating SHA-256 checksums of migration files.
- Migration table now includes checksum column to verify migration file integrity.
- Checksum tracking ensures migrations haven't been altered after initial application.
- Code Quality: Cleaned up unused imports and fixed compiler warnings across daemon and tracker modules.
Full Changelog: v0.4.11...v0.4.12
Release v0.4.11: Fix AFK Average Activity Percentage Reset
Fix AFK Average Activity Percentage Reset
This release fixes a critical bug where the average activity percentage would reset to 100% whenever the user provided keyboard or mouse input.
Root Cause
The activity percentage calculation was based only on the current real-time idle duration. When a user moved the mouse, the last_input timestamp was reset to the current time, making the idle duration zero. This caused the activity percentage to immediately jump to 100%, erasing any accumulated idle time from the session.
Solution
- Added
idle_accumulation_secsfield to the Session struct to permanently track accumulated idle time per session - Idle accumulation only increases; it doesn't reset when user input is detected
- The accumulation logic tracks the delta of idle time increase every check cycle, ensuring only genuine idle periods contribute
- Activity percentage now calculated as:
(total_time - accumulated_idle) / total_time × 100%
Changes
- Database Schema: Added
idle_accumulation_secsBIGINT column to sessions table - Session Model: Added optional
idle_accumulation_secs: Option<i64>field - App Logic: Tracks idle time delta every second and accumulates it in the current session
- Render Logic: Includes all past session idle + current accumulated idle + ongoing idle in percentage calculation
- Runtime Migrations: Replaced compile-time sqlx macro with runtime migration handler that ensures all migrations apply automatically on startup
Result
- Activity percentage now correctly reflects true activity levels
- Percentage remains stable even after user input
- Example: 80% activity stays at 80% when you move the mouse; it doesn't jump back to 100%
Migration
The migration to add idle_accumulation_secs column runs automatically when the app starts. No manual database operations required.
Release v0.4.1: Add Uninstall Functionality
What's New in v0.4.1
✨ Uninstall Functionality
We've added comprehensive uninstall support to safely remove Neura Hustle Tracker from your system.
Features:
make uninstallcommand - Works on all platforms (Linux, macOS, Windows)- Two-step confirmation - Prevents accidental deletion of data
- Safe cleanup process:
- Stops PostgreSQL container
- Removes Docker volume (deletes all tracked data)
- Removes installation directory and all files
For Linux/macOS:
make uninstallOr use the dedicated script:
./src/scripts/uninstall.shFor Windows:
From PowerShell in the app directory:
make uninstallOr use the PowerShell script:
powershell -ExecutionPolicy Bypass -File src/scripts/windows_build/windows-uninstall.ps1📝 Documentation
- Added "Uninstall (Remove Everything)" section to README.md
- Clear warnings about data deletion
- Platform-specific instructions for all systems
🔧 Makefile Updates
- Added
uninstallcommand to help text - Cross-platform implementation for Windows/Unix systems
- Proper phony target declaration
Full Changelog: See CHANGELOG.md for more details.