Releases: PythonSmall-Q/TimeLens
Releases · PythonSmall-Q/TimeLens
TimeLens v1.4.2
Added
Tray Icon and Startup
- Black & white tray icon options — Appearance settings now includes a Tray Icon Style selector (Color / Black / White); the chosen style is persisted and applied immediately at runtime without restart. Black/white variants are generated from the main icon via
generate-tray-icons.mjs - Auto tray icon theme matching — tray icon style now supports
Auto; when enabled, TimeLens switches between white/black monochrome tray icons based on the current system theme (dark/light) and updates live when the theme changes - Standalone tray icon settings section — tray/taskbar icon style controls are now exposed as an independent Settings entry instead of being nested under Appearance
- macOS launch at startup — startup-on-login now supported on macOS via LaunchAgent; migrated from manual Windows registry code to
tauri-plugin-autostartfor unified cross-platform (Windows + macOS) support; the Startup settings section is now shown on both platforms - Microsoft Store update routing — when a newer TimeLens release is detected on Microsoft Store installs, TimeLens now opens the Microsoft Store updates page directly instead of only showing a reminder
Build and Packaging Utilities
- Added multiple icon-processing and troubleshooting scripts for MSIX/taskbar icon workflows, including generation and one-off fix helpers
- Added localized VS Code extension metadata resources for automatic language switching based on user locale
- Added VS Code extension runtime i18n module for dynamic UI/message localization
- Added VS Code extension setup guide for bridge-key configuration and local API connection
- Added packaged VS Code extension artifacts for versions 0.3.0 through 0.3.3
Changed
Windows MSIX Packaging and Assets
- Updated MSIX manifest and staged asset set used for Windows packaging
- Refreshed Store and tile icon assets in all required sizes to improve packaged app icon consistency
- Updated staged Windows executable in MSIX output
- Updated npm scripts and lockfile to support icon generation/build flow integration
- Updated ignore rules to align with the current packaging/output workflow
Browser Usage Page
- Added a manual refresh control on the Browser Usage page header
- Added auto-refresh behavior when the app window regains focus while staying on Browser Usage
- Added refresh-related locale strings for Browser Usage in English and Chinese
VS Code Extension: Sync, Diagnostics, and Localization
- Updated extension API upload payload serialization to canonical JSON for stable signature verification against the desktop API
- Expanded extension bridge-key UX so key configuration/update remains accessible from extension surfaces
- Improved extension diagnostics with clearer output-channel logging and richer auth-failure prompts/actions
- Localized extension runtime UI/messages and package-contributed labels/descriptions with automatic language selection
- Updated extension README to match current bridge-key auth and setup flow
Fixed
- Fixed packaged Microsoft Store/taskbar icon presentation issues caused by previous icon asset composition
- Fixed Tauri npm/rust minor-version mismatch warning by aligning
@tauri-apps/apiand@tauri-apps/cliwith Rusttauri2.11.x - Fixed Browser Usage data staleness by allowing explicit refresh and focus-triggered refresh
- Fixed VS Code extension bridge auth mismatches in session upload requests caused by non-canonical request body serialization
- Fixed extension usability gap where users needed an easier path to reconfigure bridge key and inspect sync failures
🚩 macOS 无签名运行说明
首次打开如遇“无法验证开发者”或“已损坏”提示,请右键 App → 打开,或在终端执行:
xattr -dr com.apple.quarantine /Applications/TimeLens.app
如仍无法运行,请在“系统设置 → 隐私与安全性”中允许此 App。
TimeLens v1.4.1
Changed
Reliability and Diagnostics
- Startup fallback hardened — app boot now falls back to the main window render path when Tauri window label metadata is unavailable during early initialization, reducing black-screen startup failures seen after 1.2.0 upgrades
- Persisted state safety guards — settings and dashboard layout stores now tolerate malformed legacy localStorage payloads and fall back to defaults instead of breaking initial render
- Unified file logging pipeline — backend runtime logs and frontend
console/ unhandled error events now flow into persistent on-disk logs for post-mortem troubleshooting - Settings quick access to logs — the About section now includes a one-click action to open the app log folder directly in the system file manager
Fixed
- Fixed an issue where some upgraded environments could open to a black screen and appear unresponsive
- Fixed missing persistent diagnostics for startup/runtime failures by writing both frontend and backend logs to file
🚩 macOS 无签名运行说明
首次打开如遇“无法验证开发者”或“已损坏”提示,请右键 App → 打开,或在终端执行:
xattr -dr com.apple.quarantine /Applications/TimeLens.app
如仍无法运行,请在“系统设置 → 隐私与安全性”中允许此 App。
TimeLens v1.1.0
Added
Widget Permission System
- New third-party widget permission system — official and third-party widgets now have separate trust tiers
- WidgetPermissionDialog component (
src/pages/WidgetCenter/WidgetPermissionDialog.tsx) — modal for reviewing and granting individual data-access permissions before a third-party widget loads - Import local widget support in WidgetCenter — browse filesystem to load external widget packages
- Permission persistence and management backend (
src-tauri/src/commands/widget_permissions.rs) — stores granted permissions per widget in the database - Widget signature verification — SHA-256 hash validation of the manifest entry file to ensure package integrity
Widget Data Channels
- Expanded widget channel data interfaces — additional query endpoints exposed to widgets via IPC
- Fine-grained permission control — widgets must request explicit permission for each data category they access
ExternalWidgetHostupdated with permission filtering and expanded channel capabilities
VS Code Integration
- New VS Code Insights page (
src/pages/VsCodeInsights/index.tsx) — dedicated page for Visual Studio Code usage analytics- Total coding time, session count, and tracking toggle
- Three tracking levels: basic (time only), standard (+ language stats), detailed (+ project stats)
- VS Code API endpoints (
src-tauri/src/api_server/mod.rs) — REST API for the VS Code extension to push session dataPOST /api/vscode/sessions— receive coding sessions with per-language durationsGET /api/vscode/stats/today/stats/range— coding time summariesGET /api/vscode/languages/range— programming language usage rankingGET /api/vscode/projects/range— project-level time breakdownGET|POST /api/vscode/enabled— tracking toggle and level configuration
- Database schema — new
vscode_sessionsandvscode_session_languagestables with indexes for fast date/project/language queries - Dashboard TodayOverview — new VS Code card showing today's coding time, top language, and top project
- Dashboard customization — VS Code card visibility toggle in Home Customize
- Sidebar navigation — new
/vscoderoute withCode2icon in the main nav
Productivity Score
- New Productivity Score algorithm — calculates daily and date-range scores from focus time, app switch count, and usage patterns
- ProductivityScoreCard component — new dashboard card displaying the current period's productivity score
- ProductivityTrendChart component — line chart visualizing productivity score trends across days
Interruption Detection
- New interruption detection engine — identifies high-frequency app switching via a sliding window algorithm
- Dashboard fragmentation indicator — red dot badge on the dashboard header when frequent context switches are detected
Global Search
- New Global Search (
Ctrl+K) — system-wide quick search and navigation- Search scope covers pages, apps, categories, todos, and goals
- Grouped results with highlighted matches
- Full keyboard navigation (arrow keys to move, Enter to select)
- GlobalSearch component (
src/components/GlobalSearch.tsx) — overlay search panel with fuzzy matching and category grouping
Widget UX
- Widget auto-blur on mouse leave — floating widgets fade out 2 seconds after the mouse leaves, reducing visual distraction
- Widget idle state — widgets enter a low-attention mode when not actively interacted with
Dashboard Customization
- New Home Customize page (
src/pages/HomeCustomize/index.tsx) — manage visibility and reorder of individual dashboard cards; each card can be shown or hidden independently - Dashboard layout store (
src/stores/dashboardLayoutStore.ts) — Zustand store withlocalStoragepersistence for card visibility and ordering preferences - Dashboard index refactored with modular conditional card rendering based on layout configuration
App Detail Modal
- New AppDetailModal component (
src/components/AppDetailModal.tsx) — detailed usage view accessible by clicking any app in the dashboard ranking- Displays today's usage, 7-day total, and assigned category
- 7-day bar chart with daily breakdown
- Quick navigation to the Categories page for re-categorization
Developer Resources
- New Widget Development Guide (
docs/WIDGETS_DEV_GUIDE.mdanddocs/WIDGETS_DEV_GUIDE.zh-CN.md) — comprehensive documentation for building third-party widgets including manifest format, render contract, and permission system - New third-party widget template (
examples/third-party-widget-template/) — minimal starter template withmanifest.json,index.js, and bilingual README
Backend
- New
productivity_cmd.rsmodule (src-tauri/src/commands/productivity_cmd.rs) — Rust commands for productivity score calculation and interruption detection metricsget_productivity_score— single-day score from focus time, switch count, and usage patternsget_productivity_score_range— daily scores across a date range for trend chartsget_interruption_periods— per-hour fragment data (switch count + fragmentation score) for a given date
- Database schema expanded — new tables and indexes for productivity tracking, widget permissions, and signature verification storage
storage_cmd.rsexpanded with additional aggregate query endpoints for range statistics and category insightsget_app_comparison_in_ranges— period-over-period usage comparisonget_category_totals_in_range/get_category_daily_totals_in_range— category-level aggregationget_hourly_distribution_for_date/get_recent_daily_totals_range/get_app_category_map— widget channel data APIs
Internationalization
dashboardnamespace significantly expanded — productivity score, interruption detection, dashboard customization, and app detail labelswidgetsnamespace expanded — permission dialog, signature verification, and third-party widget management labelscommonnamespace expanded — global search and app detail action labels
Changed
- WidgetCenter page refactored — official and third-party widgets are now displayed in separate sections with distinct visual treatment
- Dashboard heavily refactored — modular card system with conditional rendering, AppDetailModal integration, and layout store support
- Dashboard enhanced — new productivity score card, productivity trend chart, and interruption fragmentation indicator added
- ExternalWidgetHost — updated with permission filtering and expanded data channel interfaces
- Code structure optimization — Rust and TypeScript types aligned, API surfaces unified
- Various bug fixes and stability improvements
App Infrastructure
get_install_channel_infocommand — detects whether the app was installed via Microsoft Store or direct download, determining the appropriate update strategy
Fixed
- Fixed
WidgetRegistryLoadErrorerror type not convertible toString(compilation failure) - Removed unused
chrono::Localimport
🚩 macOS 无签名运行说明
首次打开如遇“无法验证开发者”或“已损坏”提示,请右键 App → 打开,或在终端执行:
xattr -dr com.apple.quarantine /Applications/TimeLens.app
如仍无法运行,请在“系统设置 → 隐私与安全性”中允许此 App。
TimeLens v0.5.0
Added
- Update channel split policy:
- Microsoft Store installs now only receive update reminders (no in-app updater trigger)
- macOS and non-Store installs attempt in-app updater first, with release-page fallback
- Linux foreground-window detection MVP:
- Wayland path via
zbus(GNOME ShellEvalbest-effort) - X11 path via
x11rb(_NET_ACTIVE_WINDOW+_NET_WM_PID)
- Wayland path via
- Data-layer performance upgrades:
- New
daily_app_usagepre-aggregation table for date/range queries - New paginated command
get_app_usage_pagefor large history reads
- New
- New setting: Ignore system processes
- Excludes non-interactive processes under
System32/SysWOW64 - Keeps interactive executables such as
explorer.exeandtaskmgr.exe
- Excludes non-interactive processes under
Changed
- App version bumped to 0.5.0 in
package.json,src-tauri/Cargo.toml,src-tauri/tauri.conf.json, and UI version labels - App-limit alerts now rely on OS notifications only (removed in-app blocking modal)
- Dashboard date behavior:
- Removed implicit day-mode re-fetch loop that could override historical views
- Auto-refresh of today data now only happens when currently viewing today in day mode
- "Current App / 正在使用" now appears only in today + day mode; hidden for historical day/week/month navigation
- Widget spawn behavior:
- Prefers the user's last moved widget position
- If occupied, applies collision avoidance in order: down first, then right
ignored_appsvalues are normalized for path separator and case to improve matching reliability
Fixed
- Prevented mismatch where historical dashboard views displayed real-time active-app info
- Reduced large-range query pressure by switching range/day totals to pre-aggregated source table
TimeLens v0.4.0
See CHANGELOG.md for details.
TimeLens v1.0.0
Added
Categories
- New Categories page — manually group apps into custom categories such as "Work / Entertainment / Social / Utilities"
- CategoryInsights component — new dashboard card visualizing category time distribution and trends via pie and area charts
- Category data persisted to SQLite with aggregate queries and stats by category
Goals
- New Goals page — create, edit, and delete daily / weekly usage goals
- Goals can target a category or a single app
- Configurable duration down to hour + minute granularity
- GoalProgressBar component — new dashboard progress bars showing completion percentage for each goal
Focus Mode
- New FocusMode page — start focused timer sessions
- Real-time countdown display with option to abandon mid-session
- Configurable focus duration
Dashboard Enhancements
- TrendComparePanel — compare usage trends across different periods (period-over-period change, absolute and percentage deltas, color-coded)
- UsageHeatmap — yearly usage heatmap rendered as calendar cells showing daily screen-time intensity over the past year
Browser Extension
- New Chrome browser extension (
browser-extension/)- Tracks browsing time per website / tab
- Standalone popup showing browser usage stats (progress bars + percentages)
- Supports
en/zh_CNlocalization - Includes
build-chrome.jsscript for one-click packaging
API Server
- New local REST API module (
src-tauri/src/api_server/)- Exposes endpoints for third-party tools (e.g. Obsidian, Raycast) to read usage data
- Supports querying app lists, usage statistics, and browser data
UI / Components
- ExePickerInput — improved app-picker component supporting search / selection from currently running processes and historical executables
- WidgetCenter upgrades — improved per-widget startup configuration and friendlier empty-state messaging
Internationalization
- New i18n namespaces:
categories— category management labelsgoals— goal system labelsfocus— focus mode labelsbrowserUsage— browser extension labels
dashboard,settings, andwidgetsnamespaces significantly expanded to cover all new features
Changed
- Version bumped to 1.0.0, marking the first stable release
package.json,src-tauri/Cargo.toml, andsrc-tauri/tauri.conf.jsonsynchronized to the new version- Settings page refactored with new configuration entries for categories, goals, and browser data
- Database schema significantly expanded with new tables / indexes for categories, goals, and browser usage
- Backend command modules (
storage_cmd,widget_cmd, etc.) refactored to support new features
🚩 macOS 无签名运行说明
首次打开如遇“无法验证开发者”或“已损坏”提示,请右键 App → 打开,或在终端执行:
xattr -dr com.apple.quarantine /Applications/TimeLens.app
如仍无法运行,请在“系统设置 → 隐私与安全性”中允许此 App。
TimeLens Version 0.3.0
See CHANGELOG.md for details.
TimeLens Version 0.1.0
See CHANGELOG.md for details.