@lovinka/vitrinka 1.21.0 → 1.22.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
@@ -3,6 +3,80 @@
3
3
  `vitrinka update` prints the sections newer than your previous version after
4
4
  updating — keep entries short and user-facing.
5
5
 
6
+ ## Unreleased
7
+
8
+ ### Fixed
9
+ - `vitrinka tag` read option VALUES as positionals, so
10
+ `tag add b1 auth --actor alice` sent `["auth", "alice"]` as tag names — and
11
+ tags autocreate, so routine invocations silently minted junk tags. A flag
12
+ placed before the verb (`tag --actor x add …`) also fell through to the `ls`
13
+ default. Both now come from the shared `positionals()` parse the rest of the
14
+ CLI already uses.
15
+
16
+ ### Changed
17
+ - **`tag merge` and `tag drop` now REFUSE without a TTY unless `--yes` is
18
+ given** (exit 2). They previously treated "no TTY to ask on" as approval, so
19
+ they ran unconfirmed in scripts, CI and any redirected shell — `drop`
20
+ detaches the tag from every board, card and session. **If you script either
21
+ verb, add `--yes`.**
22
+
23
+ ## 1.21.2 — 2026-07-26
24
+
25
+ ### Added
26
+ - `vitrinka doctor` reports listener leases held by dead watch processes on this
27
+ machine, and `vitrinka doctor --fix` releases them.
28
+ - `vitrinka extension setup | update | doctor` — install the journey-recorder
29
+ browser extension from the CLI and keep it current. Updates now happen in
30
+ place: the popup's "update available" banner is a button that has the CLI
31
+ download, checksum-verify and swap the release, then reloads the extension
32
+ into it. `--check` reports without installing; `doctor --fix` re-registers the
33
+ native-messaging host after a CLI reinstall moves `node` or the CLI.
34
+ - The extension takes its base URL and token from this machine's CLI config on
35
+ first load, so a fresh install needs no pasting (the options page gains a
36
+ "Fill from the vitrinka CLI" override). Existing settings are never replaced.
37
+ - **Migrating a hand-unzipped copy:** the extension now pins its id, so the
38
+ CLI-managed folder is a *different* extension to Chrome. Run
39
+ `vitrinka extension setup`, load `~/.config/vitrinka/extension`, and remove
40
+ the old card — a token you pasted by hand does not carry over.
41
+
42
+ ### Changed
43
+ - `vitrinka install` now detects the Chromium browsers on the machine and offers
44
+ the recorder as a step (`--extension` / `--no-extension`), so re-running it on
45
+ an already-onboarded machine is how you backfill the extension. An install
46
+ that already has it silently re-registers the update host, which is also how a
47
+ browser added since the last run starts working. `vitrinka update` keeps an
48
+ installed extension current, and the update host is registered for the
49
+ browsers detected on the machine (falling back to all of them when none is
50
+ detected, so a fresh box still gets a working host) — so `extension doctor`
51
+ can now tell you the browser you *use* is unregistered instead of counting
52
+ four blind writes.
53
+
54
+ ### Fixed
55
+ - A listener could outlive the session that armed it and hold its board's lease
56
+ **forever**. Claude Code signals the wrapper shell it spawned, so the watch
57
+ underneath never got the SIGTERM — it was adopted by init and kept renewing
58
+ its lease, which the TTL cannot reap (the TTL only reaps leases that stop
59
+ heartbeating). Annotations dispatched on that board then vanished into a
60
+ process nobody was reading. Three fixes: `/vitrinka:listen` now arms
61
+ `exec vitrinka watch` so the watch *is* the signalled process; `vitrinka
62
+ watch` self-terminates if it is ever orphaned, covering exits that deliver no
63
+ signal at all (agent SIGKILLed, crashed, terminal closed); and it now handles
64
+ SIGHUP alongside SIGINT/SIGTERM.
65
+ - Release integrity is fail-closed: a feed without a usable SHA-256, or an
66
+ artifact larger than it advertised, is refused before anything is downloaded
67
+ or swapped. Previously the checksum was only verified when the field happened
68
+ to be present, and the whole body was buffered unbounded.
69
+
70
+ ## 1.21.1 — 2026-07-25
71
+
72
+ ### Fixed
73
+ - `/vitrinka:brainstorming` sometimes skipped the decision map — the map was
74
+ reasoned out but never written, so the round opened straight into a "anything
75
+ to cut, add, or reorder?" picker whose options referenced decisions you could
76
+ not see anywhere, expanded output included. The map is now printed as its own
77
+ message before any question is asked, and the board-mode exemption from
78
+ printing it only applies once a board actually exists.
79
+
6
80
  ## 1.21.0 — 2026-07-25
7
81
 
8
82
  ### Added