439d3601b4
Splitting a fixed 8h day by share turned 160 minutes of Friday morning into "7h Tesser". The number looked measured and was not, and no column in the table said which. Cells now carry the time each project was actually active. The total column is wall-clock presence — the union of active slots — so it reads lower than the row sum when sessions overlapped. Measured time is a floor; the skill says so and leaves adding the rest to the user. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
28 lines
875 B
JSON
28 lines
875 B
JSON
{
|
|
"_comment": [
|
|
"Copy to ~/.config/hourlog/projects.json and fill in real values there.",
|
|
"This repo is public: no client names, no project names, no hostnames.",
|
|
"'name' must match the project name in the timesheet app exactly — check",
|
|
"it with `scripts/me-api.py projects`. 'match' is a list of path prefixes;",
|
|
"the longest matching prefix wins, so a worktree can override its parent."
|
|
],
|
|
"timezone": "Europe/Lisbon",
|
|
"slot_minutes": 5,
|
|
"day_start_hour": 8,
|
|
"day_end_hour": 20,
|
|
"projects": [
|
|
{
|
|
"name": "<project name exactly as the timesheet app shows it>",
|
|
"match": ["~/<client-dir>", "~/<client-dir>-worktrees"]
|
|
},
|
|
{
|
|
"name": "<another project>",
|
|
"match": ["~/<org>/<repo>", "~/<org>/<repo>-worktrees"]
|
|
}
|
|
],
|
|
"exclude": [
|
|
"~/<personal-code-root>",
|
|
"~/.config/agent-of-empires"
|
|
]
|
|
}
|