Skip to content

v1.0.0

Choose a tag to compare

@owieth owieth released this 16 Mar 10:54
· 119 commits to main since this release

What's Changed

  • fix(tracking): Reset mouse distance after persist to prevent double-counting by @owieth in #44
  • fix(events): Use passUnretained to prevent CGEvent memory leak by @owieth in #45
  • fix(data): Flush pending data on app termination by @owieth in #46
  • fix(events): Extract CGEvent values before async dispatch by @owieth in #47
  • style(settings): Remove gradient on gear icon by @owieth in #48
  • fix(db): Remove redundant indexes on primary key columns by @owieth in #49
  • fix(ui): Surface errors to users instead of silent failures by @owieth in #50
  • fix(tracker): Cast screen ID to NSNumber before stringValue by @owieth in #51
  • fix(dates): Set en_US_POSIX locale on all DateFormatters by @owieth in #53
  • fix(tracker): Convert CG to AppKit coordinates for heatmap by @owieth in #52
  • fix(heatmap): Add negative bounds check for bucket indices by @owieth in #54
  • fix(export): Properly escape CSV fields to handle commas and quotes by @owieth in #56
  • fix(events): Re-enable event tap on system timeout or user disable by @owieth in #57
  • fix(keyboard): Filter modifier flags to meaningful keys only by @owieth in #55
  • fix(ui): Respect user's distance unit preference in all views by @owieth in #58
  • fix(data): Clear in-memory trackers when resetting data by @owieth in #59
  • fix(settings): Update to macOS 13+ System Settings URL scheme by @owieth in #60
  • fix(ui): Use composite id for ForEach to prevent key collisions by @owieth in #61
  • fix(a11y): Add VoiceOver labels to heatmaps and icon buttons by @owieth in #62
  • fix(chart): Fix date formatting on chart x-axis by @owieth in #63
  • fix(stats): Aggregate all daily summaries for all-time mouse stats by @owieth in #64
  • chore: Remove dead hourly_summary code by @owieth in #65
  • perf(stats): Move live stats DB read off main thread by @owieth in #67
  • perf(keyboard): Batch keyboard heatmap DB writes by @owieth in #66
  • perf(db): Use SQL-level upserts instead of fetch-then-update by @owieth in #68
  • chore: Add App Sandbox and input monitoring entitlements by @owieth in #70
  • perf(mouse): Batch mouse heatmap DB writes by @owieth in #71
  • perf(export): Use array joining instead of O(n²) string concatenation by @owieth in #73
  • perf(heatmap): Precompute max value outside Canvas draw closure by @owieth in #74
  • refactor: Consolidate duplicate distance formatting logic by @owieth in #76
  • perf(mouse): Cache screen bounds instead of recalculating per click by @owieth in #77
  • perf(stats): Cache all-time stats to avoid repeated table scans by @owieth in #78
  • perf(events): Replace per-event Task with synchronous dispatch by @owieth in #80
  • feat(data): Add configurable data retention/cleanup policy by @owieth in #81
  • test: Add unit tests for DistanceConverter and KeyCodeMapping by @owieth in #82
  • chore(db): Add incremental database migration versioning by @owieth in #69
  • feat(tracking): Implement hourly granularity tracking by @owieth in #75
  • refactor: Use RawRepresentable for DistanceUnit and typed table names by @owieth in #79
  • feat(heatmap): Add multi-screen heatmap filtering by @owieth in #72
  • refactor: Split MenuBarView.swift into separate files by @owieth in #83
  • feat(tracking): Add scroll wheel distance tracking by @owieth in #84
  • refactor: Extract shared utilities (DateHelper, HeatmapColor, HeatmapGridBuilder) by @owieth in #86
  • refactor: Extract ViewModel layer from views by @owieth in #85
  • fix(charts): Include live tracker data for current day by @owieth in #88
  • refactor(charts): Replace bar charts with line charts by @owieth in #89
  • feat(charts): Add hover tooltips showing exact values by @owieth in #91
  • feat(Info.plist): Add missing App Store metadata keys by @owieth in #95
  • feat(scripts): Add notarized DMG build script for GitHub Releases by @owieth in #96
  • feat(docs): Add GitHub Pages site with privacy policy by @owieth in #97
  • fix(EventMonitor): Accessibility permission not detected on TestFlight by @owieth in #99
  • fix(HourlySummary): Add CodingKeys for snake_case column mapping by @owieth in #101
  • feat(MenuBar): Use app icon and vertically stacked stats by @owieth in #103
  • feat(DailySummary): Track daily first/last activity timestamps by @owieth in #127
  • chore: Add project CLAUDE.md by @owieth in #130
  • fix(CSV): Include scroll distance columns in export by @owieth in #128
  • fix(MenuBar): Add Dashboard button to popover by @owieth in #144
  • feat: Error logging system by @owieth in #149
  • feat: JSON export format by @owieth in #131
  • fix(Distance): Query actual display DPI by @owieth in #132
  • test: Expand test coverage by @owieth in #141
  • feat(UI): Add hourly breakdown view by @owieth in #129
  • feat(UI): Add date navigation for historical data by @owieth in #133
  • feat: Database backup and restore by @owieth in #134
  • feat: Global keyboard shortcut by @owieth in #136
  • fix(Chart): Aggregate year chart data by week by @owieth in #146
  • fix(Heatmap): Auto-detect keyboard layout by @owieth in #147
  • feat: macOS Widgets (WidgetKit) by @owieth in #140
  • feat: Daily goals and streaks tracking by @owieth in #135
  • feat: Notifications and insights by @owieth in #137
  • feat: First-launch onboarding by @owieth in #148
  • feat: Idle time detection and active minutes tracking by @owieth in #138
  • feat: Per-application input tracking by @owieth in #142
  • feat: Mouse speed and typing speed tracking by @owieth in #143
  • fix: Background event monitoring suspended by App Nap by @owieth in #151
  • fix: Detect and prompt for missing Input Monitoring permission by @owieth in #153
  • fix: Use grouped cards with dividers for settings sections by @owieth in #155
  • fix: Prevent CMD+Q from accidentally quitting the menu bar app by @owieth in #157
  • chore: GitHub Actions CI workflow by @owieth in #139
  • feat: Auto-tag on CI pass + release workflow for signed app distribution by @owieth in #159
  • fix(ci): Override signing to Developer ID Application in release build by @owieth in #160
  • fix: Re-sign LaunchAtLogin nested helpers for notarization by @owieth in #162
  • fix(ci): Remove invalid --entitlements /dev/null from codesign by @owieth in #163

New Contributors

Full Changelog: https://github.com/owieth/InputStats/commits/v1.0.0