Summary
A Writing Hours Tracker — passively measure time spent actually writing
(per project, per day) and surface it, JetBrains "time tracking" style.
Distinct from the existing per-document writing stats (src/editor/stat.rs,
word/line/syllable counts) — this is time, not text.
Motivation
The end goal is a serious tool for working poets; "how many hours did I put
in this week" is a core habit metric. Fully local, no account.
Scope (v1)
- Count a minute as "active" when there was a keystroke / edit in the last
N seconds and the window is focused; idle time is not counted.
- Aggregate per calendar day and per workspace/project.
- Persist to a local file under the OS data dir (same location convention as
Settings), plain and human-readable.
- A small status-bar segment (today's total) + a panel or dialog with a
day / week / month breakdown and a simple bar chart.
Offline-first / privacy (non-negotiable #4, #5)
- 100% local. No telemetry, no phone-home, no analytics — the data never
leaves the machine. An off switch in Settings; a "clear history" action.
Files (sketch)
- new
src/tools/hours.rs — the timer, idle detection, aggregation, store.
- hook editor buffer
changed + window focus events to feed it.
- status-bar segment in
app/layout.rs; optional panel/dialog.
track_writing_hours setting via the existing settings pattern.
Summary
A Writing Hours Tracker — passively measure time spent actually writing
(per project, per day) and surface it, JetBrains "time tracking" style.
Distinct from the existing per-document writing stats (
src/editor/stat.rs,word/line/syllable counts) — this is time, not text.
Motivation
The end goal is a serious tool for working poets; "how many hours did I put
in this week" is a core habit metric. Fully local, no account.
Scope (v1)
N seconds and the window is focused; idle time is not counted.
Settings), plain and human-readable.day / week / month breakdown and a simple bar chart.
Offline-first / privacy (non-negotiable #4, #5)
leaves the machine. An off switch in Settings; a "clear history" action.
Files (sketch)
src/tools/hours.rs— the timer, idle detection, aggregation, store.changed+ window focus events to feed it.app/layout.rs; optional panel/dialog.track_writing_hourssetting via the existing settings pattern.