@plinth-music/cli 0.22.0 → 0.23.0

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,44 @@
2
2
 
3
3
  Notable changes to `@plinth-music/cli`. Grouped by what a user notices, not by PR.
4
4
 
5
+ ## 0.23.0 - 2026-09-23
6
+
7
+ One code PR since `0.22.0` (`v0.22.0..f3334fb`, #207; #204, #205 and #206 docs). A
8
+ minor: a new sync surface (permanent-deletion reconciliation, dormant until the server
9
+ switches it on) and a fix to how the mirror treats a file it has no record of.
10
+
11
+ ⚠️ **A file you made by hand in the mirror is no longer overwritten without a copy
12
+ being kept when a row of the same name arrives** (#207, the S224 fix). On 0.22.0, if you
13
+ created an entity file (a document, task, project and so on) under the mirror by hand,
14
+ and `plinth sync` or the daemon's first pull then brought down a row that lands at that
15
+ path, the row replaced your file and nothing kept it. Your bytes are now stashed to
16
+ `~/.plinth/_conflicts/<workspace>/` first and the log names the stash path. The cloud
17
+ copy still wins on boot, as before.
18
+
19
+ **Permanently deleted documents and files no longer survive in an offline mirror and
20
+ come back on the next sync** (#207). The daemon keeps an owner-only journal
21
+ (`permanent-deletions.json`) of each retirement, stashes any unsynced local edit to
22
+ `_conflicts/` before removing the active copy, replays a retirement in two phases so a
23
+ crash part-way is finished cleanly on the next run, and sends a retired-generation
24
+ acknowledgement (`X-Plinth-Retired-Generation`) when a name is deliberately recreated.
25
+ A recreate without it is refused by the server (`409 permanent_name_retired`) rather
26
+ than resurrecting the deleted item. `plinth status` gains a **Deletion** row: nothing
27
+ pending, N pending or feed refreshes required, or BLOCKED when the journal needs
28
+ recovery. **All of this is dormant until the server's rollout flags are switched on.**
29
+ The server side (Plinth #455) is live with every flag off, so no artist can be
30
+ permanently deleted yet and nothing changes for you on 0.23.0 until then.
31
+
32
+ **What is not proven.**
33
+
34
+ - #207's suite, a 101-test focused regression and the packed-install pre-flight passed;
35
+ a bounded joint proof against web `cc8cc1b` and real local Storage covered dirty
36
+ document and file recovery, daemon recreation and old-client file refusal. The live
37
+ race and crash matrix and the old-document-write case are not comprehensively proven.
38
+ - The hand-made-file loss was found live (DELACC, via a permanent deletion) and
39
+ reproduced on 0.22.0 from source; it has not been driven on the packaged app.
40
+ - The three 0.22.0 known gaps (double-save false conflict, revert-to-synced overwrite
41
+ without a copy, long-path re-download every poll) are unchanged.
42
+
5
43
  ## 0.22.0 - 2026-09-22
6
44
 
7
45
  Four code PRs since `0.21.1` (`v0.21.1..c1bb82e`, #199, #200, #201, #202; #197 and #198
@@ -1,5 +1,5 @@
1
1
  {
2
- "sha": "b01cf9f82bb5e757f1f7d672180060285343577f",
2
+ "sha": "38edb48dcebc2bbe3f1609c939e93143a8946037",
3
3
  "dirty": false,
4
- "built_at": "2026-09-22T07:49:15.526Z"
4
+ "built_at": "2026-09-23T22:08:55.967Z"
5
5
  }