@wirecat/cli-base 0.47.1 → 0.47.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 CHANGED
@@ -8,6 +8,32 @@ Versions before 0.8.0 are in the [git tags](https://github.com/WireCatLabs/cli-b
8
8
  Every entry says what changed as a caller sees it, why, and what to watch for — the rules are
9
9
  [`docs/dev/CONVENTIONS.md`](docs/dev/CONVENTIONS.md#the-changelog).
10
10
 
11
+ ## 0.47.3 — 20.10.2026
12
+
13
+ ### Fixed
14
+
15
+ - **A messenger chat id parses unquoted in a query.** `chat:133…@lid`, `chat:120…@g.us` and `…@s.whatsapp.net` are
16
+ one term now; before, `@lid` was read as minimum-should-match and the query failed with
17
+ `query.unsupported-operator`. An `@` inside a word is part of the value when a letter follows it; `alpha@2` and
18
+ `(a b)@2` are still refused.
19
+
20
+ ## 0.47.2 — 19.10.2026
21
+
22
+ ### Added
23
+
24
+ - **WC-REL-9 counts a shared-library change toward its once-a-week limit only when a CLI must change its code to take
25
+ it.** cli-core's parity jobs build tg-cli, max-cli and whatsapp-cli from their `main` against every pull request.
26
+ A change all three pass with, unchanged, may ship in any release. A change that fails a job, passes only against a
27
+ CLI branch made for it, or changes behaviour a CLI must adapt to still counts; when in doubt, it counts. The limit
28
+ exists so the CLIs do not chase versions, and a change they need not follow gives them nothing to chase. Its
29
+ changelog still marks it "may break callers" for outside users.
30
+
31
+ ### Removed
32
+
33
+ - **`--qr-file` is no longer a vocabulary flag.** tg, max and cli-core dropped the option that wrote the login QR
34
+ code to a PNG; a CLI now prints the QR code as text for the user or agent to paste. A CLI that still declares
35
+ `--qr-file` fails `option-role` in `cli-dev lint`; none does today.
36
+
11
37
  ## 0.47.1 — 19.10.2026
12
38
 
13
39
  ### Added
@@ -107,7 +107,7 @@ const tokensOf = (text, fail = queryError) => {
107
107
  at += 2;
108
108
  continue;
109
109
  }
110
- if (next === "@" && /^@[\p{L}\p{N}][^\s@]*\.[\p{L}\p{N}]/u.test(text.slice(at))) {
110
+ if (next === "@" && /^@(?:\p{L}|[\p{L}\p{N}][^\s@]*\.[\p{L}\p{N}])/u.test(text.slice(at))) {
111
111
  at++;
112
112
  continue;
113
113
  }
@@ -175,13 +175,6 @@ export const HOW_FLAGS = [
175
175
  type: "switch",
176
176
  meaning: "also print edits, deletions and other changes; every line names its event",
177
177
  },
178
- {
179
- name: "--qr-file",
180
- value: "<png>",
181
- role: "output",
182
- type: "path",
183
- meaning: "write the login QR code to this PNG instead of drawing it",
184
- },
185
178
  { name: "--all-versions", role: "output", type: "switch", meaning: "also the earlier versions a newer one replaced" },
186
179
  { name: "--measure", value: "<name>", role: "sort", type: "choice", meaning: "the metric a ranking is ordered by" },
187
180
  { name: "--newest", role: "sort", type: "switch", meaning: "newest first instead of best first" },
@@ -98,14 +98,19 @@ on the [CI](ci.md) page.
98
98
  - **Exceptions:** memo, drive and zoom have no gap in their `bin/release` today.
99
99
  - **Applies to:** messenger CLIs (gap); shared libraries (no gap). **Since:** cli-base 0.41.0. **Rulings:** NEED-854.
100
100
 
101
- ### WC-REL-9 · A breaking change to a stable shared-library export ships at most once a week
102
-
103
- - **Why:** each such change makes every CLI change too; batching them keeps the CLIs on one version.
104
- - **Enforced by:** review only.
105
- - **Example:** gather breaking export changes into one release a week. Bump the library in every CLI that uses it on
106
- the same day.
101
+ ### WC-REL-9 · A change to a stable shared-library export that makes a CLI change its code ships at most once a week
102
+
103
+ - **Why:** the limit keeps the CLIs from chasing versions; a change that no CLI has to follow gives them nothing to
104
+ chase.
105
+ - **Enforced by:** `cli-core: parity.yml` (it decides which changes count; review keeps the week).
106
+ - **Example:** cli-core's parity jobs build tg-cli, max-cli and whatsapp-cli from their `main` against every pull
107
+ request. A change to a stable export counts unless all three jobs pass with each CLI's `main` unchanged; its
108
+ changelog still lists it under "Changed — may break callers" for outside users. It counts when a job fails, when it
109
+ passes only against a CLI branch made for the change, and when it compiles but changes behaviour that any CLI must
110
+ adapt to. Parity cannot see that last case, so when in doubt the change counts. Gather the changes that count into
111
+ one release a week, and bump the library in every CLI that uses it on the same day.
107
112
  - **Exceptions:** none.
108
- - **Applies to:** shared libraries. **Since:** cli-base 0.41.0. **Rulings:** NEED-473.
113
+ - **Applies to:** shared libraries. **Since:** cli-base 0.41.0. **Rulings:** NEED-473, NEED-1552.
109
114
 
110
115
  ### WC-REL-10 · A messenger CLI is released only with a release report the owner signed for that commit
111
116
 
@@ -124,8 +124,8 @@ the message store. The owner adds `--allow-any-file` to send one anyway.
124
124
  ### WC-SECR-10 · Private files are written atomically with private modes
125
125
 
126
126
  A file that holds a secret or private state is written with `writeSecurely`: atomically, mode `0600`, in a directory
127
- created with mode `0700`. `writeSecurely` takes text or bytes, so a login QR image is written the same way. A
128
- temporary credential file, such as that image, is `0600` and removed in `finally`.
127
+ created with mode `0700`. `writeSecurely` takes text or bytes. A
128
+ temporary credential file is `0600` and removed in `finally`.
129
129
  tg's `doctor` reports a wrong mode and prints the `chmod` fix without applying it.
130
130
 
131
131
  - **Why:** another user on the same computer must not read the session.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/cli-base",
3
- "version": "0.47.1",
3
+ "version": "0.47.3",
4
4
  "description": "The parts every command line tool needs: output modes, terminal rendering, error model, exit codes, credentials, clocks",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",