MindTrace

by Xuhao Yin
5
4
3
2
1
Score: 51/100

Description

Turn your time and writing in Obsidian into a mirror of your own attention.

Reviews

  • Ana Rosa Amorim
    Reviewed on Oct 27th, 2026
    No review text provided.

Stats

0
stars
252
downloads
0
forks
62
days
34
days
34
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
58
commits

Latest Version

a month ago

Changelog

What's new in 1.4.3

A bug-fix release: two charts were showing stale or misattributed data.

Fixed: "Word growth" was frozen on old notes

The per-note word-growth card ranked documents by their total accumulated growth over the whole retained history. Documents you had written heavily weeks ago kept a large frozen total, so they permanently occupied the card while notes you were writing right now never showed up.

  • Ranking is now based on growth over the last 7 days, with a mild decay by time since last edit — the list slides forward as you write, so the notes you are actually working on float to the front.
  • Removed a points.length > 1 filter that silently dropped brand-new notes written in a single sitting (they only had one sample).
  • A document with a single sample point now renders a visible dot instead of an empty chart.
  • If there is no writing activity in the last 7 days, the card falls back to the most recently edited documents instead of going blank.

Fixed: historical time was all counted as "Uncategorized"

Settled daily summaries store their time keyed by top-level folder (e.g. 01-日记与反思|9). When those summaries were deserialized back into sessions, the reconstructed path contained no /, so the folder classifier treated every one of them as a root-level file and bucketed them all under Uncategorized.

In a real vault this put 83% of all tracked time into Uncategorized and pushed it to the top of the topic ranking.

  • Historical summary time is now attributed to its real top-level folder.
  • This corrects every view built on topic classification: topic duration ranking, hour × topic matrix, folder tree, today's topics, and the insights card.

Improved: clickable note names

Note names in the Document Performance table (all five leaderboards) are now links that open the note, matching the behavior already present in the Document Profile card. Long paths wrap inside the cell instead of stretching the table.


1.4.3 更新内容

这是一个修 bug 的版本:两张图表此前显示的是过期或被错误归类的数据。

修复:「单篇字数增长」一直卡在旧文档上

这张卡片原先按保留期内累计总增长给文档排序。几周前写得多的文档会留下一个 很大的固定总量,于是长期霸占卡片;而你此刻正在写的笔记永远挤不进来。

  • 排序改为按最近 7 天的增长,并对「距最后编辑的时间」做温和衰减——列表会 随着你的写作自然向前滑动,正在写的文档自动浮到前面。
  • 去掉了一个 points.length > 1 过滤:它会把一次写完的新笔记整条丢弃 (这类文档只有一次采样)。
  • 只有单个采样点的文档现在会画出一个可见的点,而不是显示空白图表。
  • 最近 7 天没有任何写作时,改为按最后编辑时间展示,而不是让卡片空着。

修复:历史时长被全部算进了「未分类」

已结算的每日摘要以顶级目录为 key 存储时长(例如 01-日记与反思|9)。 这些摘要被反序列化回会话时,重建出的路径里不含 /,于是目录分类器把它们统统 当成根目录文件,全部丢进了未分类。

在真实库中,这导致 83% 的追踪时长都落在「未分类」上,并让它排到了主题 排行的第一名。

  • 现在历史摘要时长会归属到它真正的顶级目录。
  • 所有依赖主题分类的视图一并修正:主题时长排行、时段 × 主题矩阵、 目录树、今日主题、洞察卡片。

改进:文档名可点击

文档表现表格(全部五个榜单)中的文档名现在是可点击的链接,点击即打开该 笔记,与文档画像卡片的行为保持一致。长路径会在单元格内换行,不再把表格撑宽。

README file from

Github

🧭 MindTrace

See where your attention actually goes.

A silent, local-first time & attention tracker for Obsidian — a beautiful topic × time dashboard that reveals your focus, your writing output, and your habits.

GitHub release License

English · 中文


✨ The one chart that explains your day

MindTrace is a zero-friction time tracker and attention analytics plugin. It runs in the background and quietly records how long you spend on each note — reading and writing — then rolls everything up by folder and plots it as a topic × time heatmap. One glance, and you can see "mornings are for philosophy, afternoons for code."

🚀 Why MindTrace?

  • Zero friction — no timers, no buttons, no popups. It just watches. Writing flow stays intact.
  • Folder = topic — your vault is already organized; MindTrace treats your folder tree as the taxonomy and rolls time up recursively, drillable from topic → subfolder → file.
  • Read vs. write, inferred — a transparent heuristic splits your active time into reading and writing, no manual tagging.
  • 100% local — everything lives in your vault. No account, no cloud, no telemetry, no note content is ever read.
  • Quantified self — not a productivity nag, but a mirror: plain-language daily insights like "your most invested topic is philosophy" help you reflect, not judge.

📊 A dashboard full of insight

Topic × Time — where your attention goes by hour Topic Ranking — with click-to-drill-down
Active Hours — when you're actually working Activity Calendar — GitHub-style daily streak
Document Activity — notes written vs. touched (day/week/month/quarter/year) This Week vs Last — are you on an upswing?
Weekday Distribution — your weekly rhythm Word Trend — writing output over time
Read vs Write — composition of your time Word Growth — per-document writing trajectory

Every chart exports to PNG / JSON / CSV with one click. The whole dashboard is theme-aware and follows your Obsidian accent color.

🔒 Privacy by design

Data is written as append-only JSONL to .mindtrace/ in your vault. No network, no telemetry, no cloud, no note content — only metadata (paths, timestamps, durations, character deltas). Your notes never leave your computer.

📦 Install

From the Obsidian Community Plugins directory, search MindTrace and install. Or manually:

  1. Download main.js, manifest.json, styles.css from the latest release.
  2. Copy them into <vault>/.obsidian/plugins/obstracker/.
  3. Enable MindTrace in Settings → Community plugins.

🖱 Usage

  1. Enable the plugin — tracking starts automatically, no setup needed.
  2. Click the chart icon in the ribbon, or run "Open dashboard", to open the dedicated dashboard note.
  3. (Optional) embed the dashboard anywhere with a ```mindtrace code block.

Data is stored in .mindtrace/events-YYYY-MM-DD.jsonl (one file per day).

🛠 Development

npm install
npm run dev     # watch & build
npm run build   # type-check + production build
npm test        # unit tests

📄 License

MIT