@plinth-music/cli 0.23.1 → 0.23.3
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 +91 -0
- package/dist/build-stamp.json +2 -2
- package/dist/cli.js +1633 -663
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,97 @@
|
|
|
2
2
|
|
|
3
3
|
Notable changes to `@plinth-music/cli`. Grouped by what a user notices, not by PR.
|
|
4
4
|
|
|
5
|
+
## 0.23.3 - 2026-10-07
|
|
6
|
+
|
|
7
|
+
Three code PRs since `0.23.2` (`v0.23.2..64c6759`: #222, #223, #224; #221 docs).
|
|
8
|
+
A patch: fixes only, no new command or sync surface.
|
|
9
|
+
|
|
10
|
+
⚠️ **Saves made in quick succession are no longer lost** (#222). When a document was
|
|
11
|
+
saved twice within about a second, as an agent often does, the daemon's own pull could
|
|
12
|
+
write an earlier version back over the later saves. Those edits were then gone from the
|
|
13
|
+
laptop and from Plinth alike, and `plinth status` showed nothing wrong. On the test
|
|
14
|
+
workspace, 9 of 50 saves made 0.6 seconds apart were lost before this fix and none in
|
|
15
|
+
the runs after it. The pull now leaves a file alone while it holds a save that has not
|
|
16
|
+
been sent yet, and lets the save go up first. This covers documents, tasks, projects and
|
|
17
|
+
meetings. **Artists are not covered yet**: their two files share one version, and that
|
|
18
|
+
needs its own fix first.
|
|
19
|
+
|
|
20
|
+
⚠️ **A file you save under `files/` survives a pull or a restore** (#224). A save made
|
|
21
|
+
while the daemon was pulling or restoring the same file could be overwritten with no copy
|
|
22
|
+
kept. The save now stays where it is for its own upload; if a teammate's change wins,
|
|
23
|
+
your version is kept in `_conflicts/`. A teammate deleting a file in Plinth no longer
|
|
24
|
+
removes a newer copy you hold.
|
|
25
|
+
|
|
26
|
+
**`plinth status` lists what the daemon is holding back** (#224). A new **Held** section
|
|
27
|
+
names each file the daemon kept rather than overwrote or deleted - a copy that could not
|
|
28
|
+
be made, a download that failed its integrity check, or a file kept after a teammate
|
|
29
|
+
deleted it - with what to do about each. An unchanged held file is not downloaded again.
|
|
30
|
+
|
|
31
|
+
**A crafted file header can no longer pin your CPU** (#223). The YAML reader inside the
|
|
32
|
+
frontmatter library moves to 3.15.2, which fixes four advisories where a header with
|
|
33
|
+
chained merge keys took quadratic time to read. A teammate's crafted header, or a
|
|
34
|
+
compromised account, could otherwise stall the daemon of every member who pulled it.
|
|
35
|
+
This is the other half of 0.23.2's header fix.
|
|
36
|
+
|
|
37
|
+
**What is not proven.**
|
|
38
|
+
|
|
39
|
+
- Artists still use the old pull path, as above.
|
|
40
|
+
- A save landing during a conflict round trip, about a second, can still end up in
|
|
41
|
+
neither place. That belongs to the Sync Conflicts work.
|
|
42
|
+
- For a kept file over 4 MB, Held says it goes back into Plinth the next time the daemon
|
|
43
|
+
starts. A restart uploaded nothing. The file is safe on disk; the wording is wrong.
|
|
44
|
+
- A kept file logs the same line on every poll for up to an hour. Nothing is downloaded,
|
|
45
|
+
written or sent.
|
|
46
|
+
- #224 was proved live with two isolated daemons on the test workspace; the ambient
|
|
47
|
+
pull's own download window is proved in tests only.
|
|
48
|
+
|
|
49
|
+
## 0.23.2 - 2026-10-04
|
|
50
|
+
|
|
51
|
+
Two code PRs since `0.23.1` (`v0.23.1..ea615a2`: #217, #218; #215, #216 and #219 docs).
|
|
52
|
+
A patch: fixes only, no new command or sync surface.
|
|
53
|
+
|
|
54
|
+
⚠️ **Text from Plinth can no longer run as code on your laptop** (#218). A document,
|
|
55
|
+
artist, project or task body that opened with a `---js` or `---javascript` block was
|
|
56
|
+
executed by the daemon of every member who pulled it, because the frontmatter library
|
|
57
|
+
the CLI uses evaluates JavaScript frontmatter. The daemon now refuses that engine
|
|
58
|
+
everywhere in the process and never reads a body as frontmatter when it writes a file,
|
|
59
|
+
so such a body lands in the mirror as plain text. This is the laptop half of a security
|
|
60
|
+
fix whose server half is already live: it protects a machine only once that machine
|
|
61
|
+
runs this version.
|
|
62
|
+
|
|
63
|
+
⚠️ **One save that removes most of a large file is now held for `plinth confirm`**
|
|
64
|
+
(#217). A single save that keeps at most half of a file and removes at least 5,000
|
|
65
|
+
characters of body (100 KB under `files/`) is held on its own, the way a large batch
|
|
66
|
+
already was. Before, a 139,194-character roster file was cut to 7,554 characters and
|
|
67
|
+
synced unheld. Small single edits and deletes still sync straight through.
|
|
68
|
+
|
|
69
|
+
⚠️ **A file whose frontmatter cannot be read is held and said, never sent mangled**
|
|
70
|
+
(#217). Before, the first save stayed on the laptop while `plinth status` reported
|
|
71
|
+
every write synced, and the next change sent the whole raw file to Plinth as the body
|
|
72
|
+
with its fields emptied. Now nothing is sent, `plinth status` lists it under Rejected
|
|
73
|
+
with the fix, and the record clears when the file is fixed, moved or deleted. One
|
|
74
|
+
broken file no longer stops the daemon starting.
|
|
75
|
+
|
|
76
|
+
**A body that opens with `---` is no longer corrupted on pull** (#218). Any such file
|
|
77
|
+
is rewritten correctly once, on the first pull after updating. Every other file is
|
|
78
|
+
written byte for byte as before.
|
|
79
|
+
|
|
80
|
+
**Extracted texts stuck as "local edits" heal on their own** (#217). A file under
|
|
81
|
+
`views/extracted/` that the daemon had re-rendered itself was reported as a member's
|
|
82
|
+
edit. It is now recognised as the daemon's own and repaired on the next pass.
|
|
83
|
+
|
|
84
|
+
**What is not proven.**
|
|
85
|
+
|
|
86
|
+
- The code-execution hole was reproduced locally only, never against production. The
|
|
87
|
+
fix is covered by tests that drive the pull for every entity type that carries a
|
|
88
|
+
body (forced red on the previous code: 28 of 31 fail) and by a spawned built binary.
|
|
89
|
+
- #217 was driven live on the test workspace on a build one review round older than
|
|
90
|
+
the merged code.
|
|
91
|
+
- Two saves under about a second apart can still be overwritten by the daemon's own
|
|
92
|
+
earlier push. Not fixed here; it belongs to the Sync Conflicts work.
|
|
93
|
+
- A thread file whose frontmatter cannot be read still makes the pull fail loudly,
|
|
94
|
+
rather than being held.
|
|
95
|
+
|
|
5
96
|
## 0.23.1 - 2026-09-29
|
|
6
97
|
|
|
7
98
|
Two code PRs since `0.23.0` (`v0.23.0..0dd34dc`: #212, #213; #209, #210 and #211 docs).
|
package/dist/build-stamp.json
CHANGED