paneltir 0.12.0 → 0.13.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.
@@ -68,6 +68,22 @@ library shared with other projects. Rules:
68
68
  orders waiting on Claude, each as a count that filters the board or opens the
69
69
  question when tapped — beside the health pills the project supplies. Nothing
70
70
  to do there draws one sentence instead of a row of noughts.
71
+ - **A second problem found mid-card is fixed or filed, never a reason to
72
+ stop.** Small, reversible and inside what was already being touched: fixed in
73
+ the same pass. Anything larger becomes a card in `ideas` and the original work
74
+ carries on. And a detail a card does not specify is Claude's to choose — that
75
+ is the normal state of a card rather than a gap in it. Only `askme`, `explain`
76
+ and `hold` mean stop, and an undecided question holds back only the part of
77
+ the work that depends on it. A question that needs the owner is asked on the
78
+ board as a choice with `value: null`, where it outlives the conversation,
79
+ never as a session that stalls waiting for a reply.
80
+ - **Two buttons write orders instead of acting.** *Ask for a version bump*
81
+ on the board writes a `version-bump-<date>` card: every target this project
82
+ ships moves up one version and one build, and they all end on the same pair
83
+ (build 18 / 1.0.18 → build 19 / 1.0.19). *Add a card asking Claude to
84
+ install it* on the Tools screen writes an `install-<tool>-<date>` card
85
+ carrying the settings snippet to merge. The panel runs nothing, so both are
86
+ requests for the next session, one open at a time per subject.
71
87
  - **The panel explains itself once.** New readers get a short guided tour the
72
88
  first time they open the board; each note is dismissed and stays dismissed.
73
89
  **Help** in the header reports what the panel needs — the password, the
package/INSTALL.md CHANGED
@@ -19,7 +19,7 @@ identity** — never another project's.
19
19
  npm install paneltir
20
20
 
21
21
  # or, without npm access, straight from the repository:
22
- # npm install github:daifukus/paneltir#v0.12.0
22
+ # npm install github:daifukus/paneltir#v0.13.0
23
23
  ```
24
24
 
25
25
  (Use the tag you were given; never install without pinning a version.)
@@ -237,7 +237,7 @@ identity** — never another project's.
237
237
 
238
238
  ```bash
239
239
  npx paneltir version # version, fingerprint, where it came from
240
- npx paneltir check 0.12.0 # exits non-zero if that is not what is installed
240
+ npx paneltir check 0.13.0 # exits non-zero if that is not what is installed
241
241
  npx paneltir board # read the board and say what is wrong with it
242
242
  ```
243
243
 
package/README.md CHANGED
@@ -54,7 +54,7 @@ tag rather than a branch, so an unfinished push cannot reach a project:
54
54
  npm install paneltir
55
55
 
56
56
  # or, without npm access, straight from the repository:
57
- # npm install github:daifukus/paneltir#v0.12.0
57
+ # npm install github:daifukus/paneltir#v0.13.0
58
58
  ```
59
59
 
60
60
  Installing from Git runs the `prepare` script, which builds `dist/`, so the
package/bin/paneltir.mjs CHANGED
@@ -614,8 +614,25 @@ async function run(args) {
614
614
  // rendered at the bottom of the revisions log and fell outside the bell's
615
615
  // newest-first window — a record of work that read as the first thing ever
616
616
  // done here.
617
+ /*
618
+ * An id the board does not already have. The id used to be `run-<date>-<n>`
619
+ * with `n` the list's length, which is unique only while the list only ever
620
+ * grows: once it reaches the cap below and is trimmed, the length stops
621
+ * moving and every pass on the same day gets the same id. Two runs sharing
622
+ * an id is two React keys colliding in the revisions log, and one bell entry
623
+ * standing for both — mark the first seen and the second is silenced too,
624
+ * which is the fault `PanelNotification.id` warns about by name.
625
+ */
626
+ const used = new Set(board.runs.map((run) => run?.id))
627
+ let serial = board.runs.length + 1
628
+ let id = `run-${date}-${String(serial).padStart(3, '0')}`
629
+ while (used.has(id)) {
630
+ serial += 1
631
+ id = `run-${date}-${String(serial).padStart(3, '0')}`
632
+ }
633
+
617
634
  board.runs.push({
618
- id: `run-${date}-${String(board.runs.length + 1).padStart(3, '0')}`,
635
+ id,
619
636
  date,
620
637
  by,
621
638
  summary,