Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .github/releases/v0.11.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## `things-cli` v0.11.0 — smaller JSON for agents

JSON listings are now sized for agents, and there is a new `things doctor` for checking database access. Most of the rest is a refactor of the write and import code, with no change in behaviour, plus a set of fixes to how `--when` times are sent and checked.

### Behaviour changes

- **`-j` listings print a default set of fields.** `list` views, `search` and `projects` used to print every field of every row. They now print the fields an agent needs to pick an item and act on it: uuid, title, type, status, start, startBucket, dates, reminder, project, area and heading titles, tags, repeating and checklist progress. Notes, parent uuids, sort indexes and the creation date are left out. On a 94-task list the output drops from 90 KB to 29 KB. `--fields all` prints the full record exactly as before, and `things show <uuid> -j` is unchanged. (#454)
- **`--fields` (`-f`) picks the keys yourself.** `things anytime -j --fields uuid,title,deadline` prints only those keys, in that order. Unknown names are refused with the `unknown field` token and the list of valid names. (#451, #459)
- **Weekdays and evening times are sent and checked.** `friday` and `friday@9pm` are sent as the date Things gives them (the next such day after today, so `saturday@9pm` on a Saturday is next week) and read back. `evening@6pm` is sent as `evening@18:00` and checked to be in This Evening today. `import` accepts and resolves them too. (#458)
- **A `--when` the CLI cannot check is reported as not confirmed.** An abbreviation such as `fri` or a phrase such as `next friday` that Things understood used to print the item as if confirmed. `add`, `project add`, `edit` and `import` now report it as `not confirmed (when not checked)` (JSON `confirmed: false, reason: when`), exit 0. (#453, #458)
- **Dated `--when` times are sent as a date.** `today@6pm`, `tomorrow@9am` and `<date>@<time>` are sent to Things as `YYYY-MM-DD@HH:MM` and read back, in `add`, `edit` and now `import`, so a time Things misfiles is caught. A bare 12-hour time such as `9:30pm` is sent as `21:30`. (#443, #446, #449)
- **Project refs say "project not found".** `open --project` and `project edit` refuse a ref that names a to-do, and every kind of miss (title, row number, uuid) now reports the project kind. (#448, #444, #445)

### New

- **`things doctor`** checks that the Things database can be found and opened, and reports a permission denial (Full Disk Access) as such. (#447)

### Also

- A padded `--list`, `--area` or `--heading` name is sent trimmed when only the trimmed name matches. A title that really has the spaces still matches as typed. `import` sends names as given. (#456)
- The missing-area and "--heading needs a list" warnings use one wording across `add`, `edit` and `import`, and a list given by uuid is named by its title. (#450)
- Large refactors of the import, edit and database code, each checked against the previous binary with a comparison runner now in `tools/compare/`. (#431–#455)
- The README puts Install first. (#457)
- The bundled skill and the docs at things.rlew.io are updated. Run `things skill install` after upgrading.

### Requirements

macOS with Things3 installed. Binaries for Apple Silicon (`darwin_arm64`) and Intel (`darwin_amd64`).
Loading