fix: Super Productivity API path unwraps the {ok, data} envelope, drops the inbox project, health waits for the renderer (#162)
Files changed: - CHANGES.md - VERSION - tools/CONTRACT.md - tools/chemenu/commands/doctor.py - tools/chemenu/tasks/superproductivity.py - tools/chemenu/tests/test_new_page.py - tools/chemenu/tests/test_superproductivity.py - tools/chemenu/tests/test_task_cmd.py
This commit is contained in:
1 parent
8be5e6e5f3
commit
529793b255
8 files changed
+267
-58
No files matched your search
+27
-1
@@ -59,7 +59,7 @@ concern - readable here, never shipped as something to parse.
|
||||
|
||||
---
|
||||
|
||||
## 8.0.0-beta.1 - 2026-09-30 - Page titles must form valid, unique file names on Windows and macOS
|
||||
## 8.0.0-beta.2 - 2026-09-30 - Super Productivity API path: unwrap the {ok, data} envelope, exclude the inbox project, ready-aware health (#162)
|
||||
|
||||
**Author:** Torben Nehmer
|
||||
|
||||
@@ -78,6 +78,7 @@ concern - readable here, never shipped as something to parse.
|
||||
- dist export no longer cuts the dist export record out of the shipped tools/CONTRACT.md
|
||||
- fail() prints the command's ON FAILURE lines on stderr
|
||||
- Budget gate and loop-breaker refusals exit without a traceback
|
||||
- Super Productivity API path: unwrap the {ok, data} envelope, exclude the inbox project, ready-aware health (#162)
|
||||
|
||||
**Low impact**
|
||||
- version bump no longer points at version release in its output
|
||||
@@ -108,6 +109,31 @@ concern - readable here, never shipped as something to parse.
|
||||
- new_page/type_resolver comments no longer claim only entities declare a layout:
|
||||
<!-- /wikitool:bumps -->
|
||||
|
||||
### Super Productivity API path: unwrap the {ok, data} envelope, exclude the inbox project, ready-aware health (Gitea #162)
|
||||
|
||||
Preparing the live tracker tests (#156) ran the real Super Productivity v19.1.0 headless for the
|
||||
first time, and four assumptions about its local REST API did not hold. The test fakes had been
|
||||
written from the same assumptions, so the suite stayed green while `access: "api"` could not read
|
||||
anything.
|
||||
|
||||
- **The envelope.** The app answers `{"ok": true, "data": ...}` or `{"ok": false, "error": {"code",
|
||||
"message"}}`; the adapter expected a bare list. Every read - `review`, `task list`, `task new`,
|
||||
`task close` - failed with "did not return a list of objects". `_ApiClient` now unwraps `data`,
|
||||
raises with the API's own code and message on `ok: false`, and refuses a body without the
|
||||
envelope instead of guessing.
|
||||
- **The inbox.** `GET /projects` and the backup snapshot both list `INBOX_PROJECT`, so `review`
|
||||
would have reported "Inbox" as a tracker project without a `kb/` page. Both readers and the
|
||||
writer's name-to-id lookup now drop it.
|
||||
- **`health()`** requires `data.rendererReady`; an app whose renderer is still loading no longer
|
||||
counts as healthy, and `doctor` says so.
|
||||
- **Closing a task** sets `doneOn` and `modified`; the module docstring claimed it does not. The
|
||||
behaviour is harmless - the store fills them exactly as for a tick in the UI - the reasoning is
|
||||
corrected.
|
||||
|
||||
The fakes in `test_superproductivity.py`, `test_task_cmd.py` and `test_new_page.py` now answer in the real envelope,
|
||||
and a test pins that a bare list is rejected. Drop-in in both directions; no `.wikitool-tasks.json`
|
||||
change.
|
||||
|
||||
### Page titles must form valid, unique file names on Windows and macOS (Gitea #155)
|
||||
|
||||
A title is the wiki's only identifier for a page and becomes the file name one to one, but nothing
|
||||
|
||||
Reference in new issue
Block a user