@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 +74 -0
- package/dist/cli.js +1249 -71
- package/dist/cli.js.map +1 -1
- package/dist/lib/tui.js +30 -0
- package/dist/lib/tui.js.map +1 -1
- package/dist/mcp.js +150 -23
- package/dist/mcp.js.map +1 -1
- package/package.json +1 -1
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
|