Skip to content

Releases: PythonSmall-Q/TimeLens

TimeLens v1.4.2

22 May 15:30

Choose a tag to compare

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-autostart for 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/api and @tauri-apps/cli with Rust tauri 2.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

16 May 00:42

Choose a tag to compare

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

10 May 03:07

Choose a tag to compare

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
  • ExternalWidgetHost updated 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 data
    • POST /api/vscode/sessions — receive coding sessions with per-language durations
    • GET /api/vscode/stats/today / stats/range — coding time summaries
    • GET /api/vscode/languages/range — programming language usage ranking
    • GET /api/vscode/projects/range — project-level time breakdown
    • GET|POST /api/vscode/enabled — tracking toggle and level configuration
  • Database schema — new vscode_sessions and vscode_session_languages tables 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 /vscode route with Code2 icon 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 with localStorage persistence 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.md and docs/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 with manifest.json, index.js, and bilingual README

Backend

  • New productivity_cmd.rs module (src-tauri/src/commands/productivity_cmd.rs) — Rust commands for productivity score calculation and interruption detection metrics
    • get_productivity_score — single-day score from focus time, switch count, and usage patterns
    • get_productivity_score_range — daily scores across a date range for trend charts
    • get_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.rs expanded with additional aggregate query endpoints for range statistics and category insights
    • get_app_comparison_in_ranges — period-over-period usage comparison
    • get_category_totals_in_range / get_category_daily_totals_in_range — category-level aggregation
    • get_hourly_distribution_for_date / get_recent_daily_totals_range / get_app_category_map — widget channel data APIs

Internationalization

  • dashboard namespace significantly expanded — productivity score, interruption detection, dashboard customization, and app detail labels
  • widgets namespace expanded — permission dialog, signature verification, and third-party widget management labels
  • common namespace 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_info command — detects whether the app was installed via Microsoft Store or direct download, determining the appropriate update strategy

Fixed

  • Fixed WidgetRegistryLoadError error type not convertible to String (compilation failure)
  • Removed unused chrono::Local import


🚩 macOS 无签名运行说明

首次打开如遇“无法验证开发者”或“已损坏”提示,请右键 App → 打开,或在终端执行:

xattr -dr com.apple.quarantine /Applications/TimeLens.app

如仍无法运行,请在“系统设置 → 隐私与安全性”中允许此 App。

TimeLens v0.5.0

01 May 03:13

Choose a tag to compare

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 Shell Eval best-effort)
    • X11 path via x11rb (_NET_ACTIVE_WINDOW + _NET_WM_PID)
  • Data-layer performance upgrades:
    • New daily_app_usage pre-aggregation table for date/range queries
    • New paginated command get_app_usage_page for large history reads
  • New setting: Ignore system processes
    • Excludes non-interactive processes under System32 / SysWOW64
    • Keeps interactive executables such as explorer.exe and taskmgr.exe

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_apps values 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

26 Apr 03:26
2ec1e96

Choose a tag to compare

See CHANGELOG.md for details.

TimeLens v1.0.0

01 May 12:34
923a275

Choose a tag to compare

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_CN localization
    • Includes build-chrome.js script 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 labels
    • goals — goal system labels
    • focus — focus mode labels
    • browserUsage — browser extension labels
  • dashboard, settings, and widgets namespaces 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, and src-tauri/tauri.conf.json synchronized 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

25 Apr 11:10

Choose a tag to compare

TimeLens Version 0.1.0

25 Apr 04:07
923a275

Choose a tag to compare