MCPcopy Index your code
hub / github.com/Ceceliaee/patina

github.com/Ceceliaee/patina @v1.8.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.8.2 ↗ · + Follow
3,711 symbols 9,950 edges 425 files 1 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Patina

面向 Windows 桌面工作的本地优先时间追踪工具。

English · 简体中文

Platform Built with Tauri Local first License Downloads Latest downloads GitHub stars

Patina 自动记录前台应用,整理成本地、安静、可信的个人桌面时间记录。

Patina 今日概览

为什么选择 Patina

  • 自动记录前台应用,不需要手动开始或停止计时。
  • 处理无操作、锁屏、睡眠、异常退出等边界,让记录更可信。
  • 数据默认保存在本地,不依赖账号、云同步或服务器。
  • 可以管理应用名称、分类、颜色、统计排除和窗口标题记录。
  • 提供提醒、计时器和番茄钟等轻量本地工具。
  • 界面保持克制、清晰、低打扰,适合长期日常使用。

下载

预构建版本发布在 GitHub Releases:

进入发布页后下载 Windows 安装包并运行即可。Patina 当前以 Windows 10/11 桌面使用为主要目标。

可选的 Patina Web Sync 浏览器扩展已独立发布,用于识别浏览器中的网页标题。

核心能力

自动追踪

  • 自动记录当前前台应用,并按活动形成时间记录。
  • 识别无操作、锁屏、睡眠等状态,减少无效时间混入统计。
  • 处理长时间离开和异常退出后的记录边界,减少时间串记。
  • 在视频、会议、课程、直播等低交互场景中,减少有效活动漏记。

回看与分析

  • 在今日概览中查看有效活动、应用排行和分类分布。
  • 使用时间轴按日期回看活动记录,查看应用切换和窗口标题明细。
  • 通过趋势、热力图和应用曲线了解长期时间分布。

管理与控制

  • 重命名应用,调整分类、颜色和统计规则。
  • 排除不想纳入统计的应用,或关闭指定应用的窗口标题记录。
  • 导出本地备份,恢复备份,清理历史记录。

轻量工具

  • 创建一次性提醒和应用使用上限提醒。
  • 使用计时、倒计时和番茄钟处理主动专注任务。
  • 工具状态保留在本地,不替代自动追踪记录。

界面预览

历史 数据
历史页面 数据页面
分类 工具
分类页面 工具页面
设置 关于
设置页面 关于页面

可靠性与隐私

时间追踪只有在结果可信时才有长期价值。Patina 重点保护这些边界:

  • 前台应用识别:记录真实位于前台的窗口和应用,减少临时窗口与系统噪音干扰。
  • 无操作处理:无操作时间不会继续被算作有效活动。
  • 状态边界:处理锁屏、睡眠、恢复、长时间离开和异常退出后的记录边界。
  • 有效时长统计:排行、分布和总时长基于有效活动时间,而不是单纯的打开时段。
  • 标题记录控制:窗口标题记录可以按应用关闭,减少不必要的敏感信息保留。
  • 本地数据控制:核心数据保存在本地,备份、恢复和历史清理由用户主动管理。

当前范围

Patina 目前专注于个人本地时间记录:

  • Windows 10/11 桌面使用
  • 个人本地数据存储与控制
  • 自动追踪、回看、分类和备份恢复
  • 轻量本地工具

它目前不面向团队协作、账号体系、云同步、多平台同步或重型 AI 洞察。

从源码运行

环境要求

安装依赖

git clone https://github.com/Ceceliaee/patina.git
cd patina
npm install

开发运行

npm run tauri dev

构建安装包

npm run tauri build

安装包会生成在:

src-tauri/target/release/bundle/

技术栈

  • 桌面壳:Tauri v2
  • 后端:Rust
  • 前端:React + Vite + TypeScript
  • 样式:Tailwind CSS
  • 动效:Framer Motion
  • 图表:Recharts
  • 数据库:SQLite,通过 @tauri-apps/plugin-sql
  • Windows 集成:windows crate

贡献

如果你要参与贡献、了解产品方向或审查架构边界,建议先阅读 CONTRIBUTING.md

反馈

如果你遇到问题、发现记录异常,或想提出改进建议,可以通过 GitHub Issues 反馈:

支持项目

Patina 是一个个人维护的、本地优先开源项目。如果它对你的日常生活或工作有帮助,也欢迎选择方便的方式支持后续维护:

Buy me a coffee

微信赞赏码

赞助会帮助项目持续维护,但不会影响功能优先级、问题处理方式、路线图或产品方向。

Star History

Star History Chart

许可证

MIT

Extension points exported contracts — how you extend this code

SqlWriteExecutor (Interface)
(no doc) [2 implementers]
src/platform/persistence/sqliteTransactions.ts
ToolsOpenTarget (Interface)
(no doc)
src/features/tools/types.ts
Props (Interface)
(no doc)
src/app/components/AppSidebar.tsx
ToolRuntimeSettings (Interface)
(no doc)
src/shared/types/tools.ts
SourceFile (Interface)
(no doc)
scripts/check-naming-boundaries.ts
SourceFile (Interface)
(no doc)
scripts/report-code-quality-hotspots.ts
SourceFile (Interface)
(no doc)
scripts/check-rust-boundaries.ts
HotspotBudget (Interface)
(no doc)
scripts/check-quality-hotspot-baseline.ts

Core symbols most depended-on inside this repo

map
called by 415
src/shared/classification/processMapper.ts
clone
called by 226
src-tauri/src/platform/web_activity_bridge.rs
evaluate
called by 195
tests/uiBrowserSmoke/browserHarness.ts
execute
called by 182
src/platform/persistence/sqliteTransactions.ts
jsonString
called by 122
tests/uiBrowserSmoke/browserHarness.ts
waitForExpression
called by 118
tests/uiBrowserSmoke/browserHarness.ts
makeSession
called by 76
tests/helpers/trackingTestHarness.ts
normalizeSettingsRecord
called by 75
src/platform/persistence/appSettingsStore.ts

Shape

Function 2,789
Interface 364
Method 323
Class 207
Enum 28

Languages

TypeScript57%
Rust43%

Modules by API surface

src-tauri/src/engine/tools/mod.rs68 symbols
src/features/data/services/dataReadModel.ts63 symbols
src-tauri/src/data/storage_migration.rs63 symbols
src-tauri/src/data/sqlite_pool.rs49 symbols
src-tauri/src/platform/windows/foreground.rs45 symbols
src-tauri/src/platform/storage_anchor.rs45 symbols
scripts/release.ts45 symbols
src/features/classification/services/classificationStore.ts44 symbols
src-tauri/src/engine/updater.rs41 symbols
src/shared/classification/processMapper.ts39 symbols
src/features/history/services/historyTimelineViewModel.ts39 symbols
src/features/history/components/History.tsx38 symbols

For agents

$ claude mcp add patina \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page