worklog-for-claude-code 0.3.1__tar.gz → 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {worklog_for_claude_code-0.3.1/worklog_for_claude_code.egg-info → worklog_for_claude_code-0.4.0}/PKG-INFO +13 -3
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/README.md +12 -2
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/pyproject.toml +1 -1
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/tests/test_accounts.py +1 -1
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/tests/test_platforms.py +2 -1
- worklog_for_claude_code-0.4.0/tests/test_smart.py +574 -0
- worklog_for_claude_code-0.4.0/tests/test_syncstatus.py +208 -0
- worklog_for_claude_code-0.4.0/tests/test_updates.py +211 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/__init__.py +1 -1
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/cli.py +51 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/collector.py +62 -1
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/config.py +4 -1
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/demo.py +33 -3
- worklog_for_claude_code-0.4.0/worklog/overrides.py +115 -0
- worklog_for_claude_code-0.4.0/worklog/parser.py +346 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/report.py +209 -24
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/store.py +19 -6
- worklog_for_claude_code-0.4.0/worklog/syncstatus.py +298 -0
- worklog_for_claude_code-0.4.0/worklog/tags.py +58 -0
- worklog_for_claude_code-0.4.0/worklog/timesheet.py +247 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/updates.py +57 -8
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/web.py +678 -41
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0/worklog_for_claude_code.egg-info}/PKG-INFO +13 -3
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog_for_claude_code.egg-info/SOURCES.txt +4 -0
- worklog_for_claude_code-0.3.1/tests/test_syncstatus.py +0 -116
- worklog_for_claude_code-0.3.1/tests/test_updates.py +0 -112
- worklog_for_claude_code-0.3.1/worklog/parser.py +0 -191
- worklog_for_claude_code-0.3.1/worklog/syncstatus.py +0 -148
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/LICENSE +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/setup.cfg +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/tests/test_chats.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/tests/test_checks.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/tests/test_demo.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/tests/test_forget.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/tests/test_viz.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/tests/test_watcher.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/tests/test_worklog.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/chats.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/checks.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/forget.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/hooks.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/identity.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/locks.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/redact.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/services.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/viz.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog/watcher.py +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog_for_claude_code.egg-info/dependency_links.txt +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog_for_claude_code.egg-info/entry_points.txt +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog_for_claude_code.egg-info/requires.txt +0 -0
- {worklog_for_claude_code-0.3.1 → worklog_for_claude_code-0.4.0}/worklog_for_claude_code.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: worklog-for-claude-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: See what you did with Claude Code each day and how many tokens it used: an automatic daily work log across accounts and devices, private by default
|
|
5
5
|
Author: Urvin
|
|
6
6
|
License-Expression: MIT
|
|
@@ -53,7 +53,8 @@ Dynamic: license-file
|
|
|
53
53
|
|
|
54
54
|
## What it does
|
|
55
55
|
|
|
56
|
-
- ✅ **Writes down what you worked on**, project by project, every day. Claude writes the summary.
|
|
56
|
+
- ✅ **Writes down what you worked on**, project by project, every day, in plain words. Claude writes the summary.
|
|
57
|
+
- 🧾 **Makes your timesheet**: hours per project with a plain-language line, to Excel or CSV in one click.
|
|
57
58
|
- 📊 **Shows how many tokens you used**, per day, account and model.
|
|
58
59
|
- 👥 **Handles several Claude accounts and computers**, even if you switch accounts with a one-click app.
|
|
59
60
|
- 🔒 **Stays private**: everything lives on your computer (and your own private git repo, if you want).
|
|
@@ -91,6 +92,9 @@ A checklist then shows anything still missing, with the exact command for your c
|
|
|
91
92
|
## A closer look
|
|
92
93
|
|
|
93
94
|
<table><tr>
|
|
95
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/us-urvin/worklog-for-claude-code/main/docs/images/timesheet.png" alt="Timesheet: hours, kind of work and a one-line summary per day and project"><br>A timesheet, ready for Excel.</td>
|
|
96
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/us-urvin/worklog-for-claude-code/main/docs/images/card.png" alt="A project card with a plain-language summary, tag and Claude's task list"><br>Plain-language summaries, tags and Claude's tasks.</td>
|
|
97
|
+
</tr><tr>
|
|
94
98
|
<td width="50%"><img src="https://raw.githubusercontent.com/us-urvin/worklog-for-claude-code/main/docs/images/insights.png" alt="When you worked, the last 5 weeks and today's projects"><br>When you worked, your streak, and where the time went.</td>
|
|
95
99
|
<td width="50%"><img src="https://raw.githubusercontent.com/us-urvin/worklog-for-claude-code/main/docs/images/checklist.png" alt="Setup checklist"><br>A setup checklist with steps for your system.</td>
|
|
96
100
|
</tr><tr>
|
|
@@ -113,7 +117,13 @@ A checklist then shows anything still missing, with the exact command for your c
|
|
|
113
117
|
|
|
114
118
|
**Several accounts or computers?** Settings walks you through it. For several computers, see [Full setup](https://github.com/us-urvin/worklog-for-claude-code/blob/main/docs/GUIDE.md#full-setup).
|
|
115
119
|
|
|
116
|
-
**
|
|
120
|
+
**Using several GitHub accounts?** GitHub knows you by your SSH key. In Settings → Private data repo, click **Test connection** to see which account signs in, and open *Several GitHub accounts on this computer?* for the steps. [More →](https://github.com/us-urvin/worklog-for-claude-code/blob/main/docs/GUIDE.md#full-setup)
|
|
121
|
+
|
|
122
|
+
**Uploads to my data repo fail?** Click **Test connection** in Settings: it says what's wrong in plain words. See [Troubleshooting](https://github.com/us-urvin/worklog-for-claude-code/blob/main/docs/TROUBLESHOOTING.md#uploads-fail-or-the-wrong-github-account-is-used).
|
|
123
|
+
|
|
124
|
+
**Wrong project on a card?** Click **✏️ Edit** to rename it or move the sessions. Worklog can remember the folder you always start in.
|
|
125
|
+
|
|
126
|
+
**How do I update?** Click **Update now** when the dashboard says a new version is out, or run `pipx upgrade --pip-args=--no-cache-dir worklog-for-claude-code`.
|
|
117
127
|
|
|
118
128
|
**Something isn't working?** Run `claude-worklog doctor`, or see [Troubleshooting](https://github.com/us-urvin/worklog-for-claude-code/blob/main/docs/TROUBLESHOOTING.md).
|
|
119
129
|
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
## What it does
|
|
16
16
|
|
|
17
|
-
- ✅ **Writes down what you worked on**, project by project, every day. Claude writes the summary.
|
|
17
|
+
- ✅ **Writes down what you worked on**, project by project, every day, in plain words. Claude writes the summary.
|
|
18
|
+
- 🧾 **Makes your timesheet**: hours per project with a plain-language line, to Excel or CSV in one click.
|
|
18
19
|
- 📊 **Shows how many tokens you used**, per day, account and model.
|
|
19
20
|
- 👥 **Handles several Claude accounts and computers**, even if you switch accounts with a one-click app.
|
|
20
21
|
- 🔒 **Stays private**: everything lives on your computer (and your own private git repo, if you want).
|
|
@@ -52,6 +53,9 @@ A checklist then shows anything still missing, with the exact command for your c
|
|
|
52
53
|
## A closer look
|
|
53
54
|
|
|
54
55
|
<table><tr>
|
|
56
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/us-urvin/worklog-for-claude-code/main/docs/images/timesheet.png" alt="Timesheet: hours, kind of work and a one-line summary per day and project"><br>A timesheet, ready for Excel.</td>
|
|
57
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/us-urvin/worklog-for-claude-code/main/docs/images/card.png" alt="A project card with a plain-language summary, tag and Claude's task list"><br>Plain-language summaries, tags and Claude's tasks.</td>
|
|
58
|
+
</tr><tr>
|
|
55
59
|
<td width="50%"><img src="https://raw.githubusercontent.com/us-urvin/worklog-for-claude-code/main/docs/images/insights.png" alt="When you worked, the last 5 weeks and today's projects"><br>When you worked, your streak, and where the time went.</td>
|
|
56
60
|
<td width="50%"><img src="https://raw.githubusercontent.com/us-urvin/worklog-for-claude-code/main/docs/images/checklist.png" alt="Setup checklist"><br>A setup checklist with steps for your system.</td>
|
|
57
61
|
</tr><tr>
|
|
@@ -74,7 +78,13 @@ A checklist then shows anything still missing, with the exact command for your c
|
|
|
74
78
|
|
|
75
79
|
**Several accounts or computers?** Settings walks you through it. For several computers, see [Full setup](https://github.com/us-urvin/worklog-for-claude-code/blob/main/docs/GUIDE.md#full-setup).
|
|
76
80
|
|
|
77
|
-
**
|
|
81
|
+
**Using several GitHub accounts?** GitHub knows you by your SSH key. In Settings → Private data repo, click **Test connection** to see which account signs in, and open *Several GitHub accounts on this computer?* for the steps. [More →](https://github.com/us-urvin/worklog-for-claude-code/blob/main/docs/GUIDE.md#full-setup)
|
|
82
|
+
|
|
83
|
+
**Uploads to my data repo fail?** Click **Test connection** in Settings: it says what's wrong in plain words. See [Troubleshooting](https://github.com/us-urvin/worklog-for-claude-code/blob/main/docs/TROUBLESHOOTING.md#uploads-fail-or-the-wrong-github-account-is-used).
|
|
84
|
+
|
|
85
|
+
**Wrong project on a card?** Click **✏️ Edit** to rename it or move the sessions. Worklog can remember the folder you always start in.
|
|
86
|
+
|
|
87
|
+
**How do I update?** Click **Update now** when the dashboard says a new version is out, or run `pipx upgrade --pip-args=--no-cache-dir worklog-for-claude-code`.
|
|
78
88
|
|
|
79
89
|
**Something isn't working?** Run `claude-worklog doctor`, or see [Troubleshooting](https://github.com/us-urvin/worklog-for-claude-code/blob/main/docs/TROUBLESHOOTING.md).
|
|
80
90
|
|
|
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
[project]
|
|
6
6
|
# Distribution name on PyPI. The command stays `claude-worklog` and the package stays `worklog`.
|
|
7
7
|
name = "worklog-for-claude-code"
|
|
8
|
-
version = "0.
|
|
8
|
+
version = "0.4.0"
|
|
9
9
|
description = "See what you did with Claude Code each day and how many tokens it used: an automatic daily work log across accounts and devices, private by default"
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
requires-python = ">=3.10"
|
|
@@ -324,7 +324,7 @@ def test_summary_uses_the_configured_model(home, repo, monkeypatch):
|
|
|
324
324
|
p = report.ProjectDay("k", "proj", "git", None)
|
|
325
325
|
p.prompts.append(("09:00", "fix the bug"))
|
|
326
326
|
|
|
327
|
-
assert report.ai_summary(p, datetime.now().date(), cfg) == ["- did a thing"]
|
|
327
|
+
assert report.ai_summary(p, datetime.now().date(), cfg)["bullets"] == ["- did a thing"] # old-style answer
|
|
328
328
|
assert "--model" not in calls[-1] # default: the account's own default model
|
|
329
329
|
|
|
330
330
|
cfg.summary_model = "opus"
|
|
@@ -201,7 +201,8 @@ def test_data_repo_gets_line_ending_rules(repo):
|
|
|
201
201
|
s = GitStore(repo)
|
|
202
202
|
s.write_json("records/2026-10-01/dev/personal/a.json", {"a": 1})
|
|
203
203
|
s.commit_and_push("test")
|
|
204
|
-
assert (repo / ".gitattributes").read_text() == "records/** text eol=lf\nreports/** text eol=lf\n"
|
|
204
|
+
assert (repo / ".gitattributes").read_text() == ("records/** text eol=lf\nreports/** text eol=lf\n"
|
|
205
|
+
"overrides/** text eol=lf\n")
|
|
205
206
|
assert b"\r\n" not in (repo / "records/2026-10-01/dev/personal/a.json").read_bytes()
|
|
206
207
|
|
|
207
208
|
|