{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreicnvoxh7noczk4464p62hjbxs2hhnocorttwqgdqd4uhcizu72l3y",
"uri": "at://did:plc:t4aigbwuwix7x3q42qzjc6mn/app.bsky.feed.post/3mhrtsyqfztn2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreieehsdjufgnt5zvf4kxa6epwcf7khbcyxkdkokrnu55p2eh774xxe"
},
"mimeType": "image/jpeg",
"size": 2453
},
"path": "/link/535/17304741/doing-updates",
"publishedAt": "2026-03-23T20:00:00.000Z",
"site": "https://brett.trpstra.net",
"tags": [
"doing",
"wiki",
"Displaying Entries",
"Time Tracking",
"Configuration",
"on Mastodon",
"Bluesky",
"Twitter",
"Click here if you'd like to help out.",
"Mastodon",
"GitHub",
"everywhere else"
],
"textContent": "Big update for doing: a lot of quality-of-life work since my last post, plus some genuinely useful time-reporting features.\n\nIf you want the full docs, start with the wiki.\n\n### Time Budgets\n\nYou can now set time budgets per tag and see how much you have left as you track work.\n\n\n doing budget dev 100h doing budget meetings 10h doing budget doing budget dev --remove\n\nTotals output now shows remaining budget per tag and an overall “total budgets left” footer when budgets are configured. The `byday` export also includes budget info in daily and grand totals.\n\n### More Flexible Totals Grouping\n\nTotals can now be grouped by tags or sections, and you can repeat grouping flags to control output order.\n\n\n doing show --totals --by section --by tags doing show --totals --by tags --by section\n\nThere are also aliases for section grouping (`project`, `p`), so this works too:\n\n\n doing show --totals --by project\n\n### New Totals Formats, Including Averages\n\nYou can now pick the totals time format directly from the command line with `--totals_format`.\n\n\n doing show --totals --totals_format hmclock doing show --totals --totals_format natural\n\nThere is also a new `averages` mode that appends hours/minutes and average hours per day to the total line.\n\n\n doing show --totals --totals_format averages\n\nThat gives you output in the spirit of:\n\n\n Total tracked: 26:03 (26h 3 min, 8.12h/day)\n\nYou can set a default with the `totals_format` config key and still override it per command when needed.\n\n### Better Export Consistency\n\nTotals grouping now carries through exports more consistently, including HTML, Markdown, JSON, Day One, template, and wiki outputs. JSON totals also gained budget-related fields (`budget`, `remaining`, `remaining_formatted`) for each tag, which makes downstream automation easier.\n\nFor details on output and display options, see wiki pages like Displaying Entries, Time Tracking, and Configuration.\n\n### Other Stuff\n\n * Ruby 4 compatibility improved by falling back to `reline` when `readline` is unavailable.\n * Dashed aliases now work for underscore flags and subcommands (`--only-timed`, `--tag-sort`, `doing tag-dir`, etc.).\n * Interactive finish handling was fixed for section filters that can resolve to multiple values.\n * Time range parsing and normalization got several fixes (`done --from`, noon/12pm edge cases, and reset formatting issues).\n * Non-interactive runs no longer reopen `/dev/tty` for defaults.\n * Human totals box formatting and table alignment were cleaned up.\n * A few config and test harness rough edges were fixed.\n\n\n\nAs usual, if you run into anything odd, open an issue or PR. This was a nice round of polish plus some features that should make time reporting much more useful day to day.\n\nLike or share this post on Mastodon, Bluesky, or Twitter.\n\n* * *\n\nBrettTerpstra.com is supported by readers like you. Click here if you'd like to help out.\n\nFind Brett on Mastodon, Bluesky, GitHub, and everywhere else.",
"title": "Doing updates",
"updatedAt": "2026-03-23T20:00:00.000Z"
}