@wirecat/cli-base 0.77.0 → 0.78.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
|
@@ -8,6 +8,35 @@ 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.78.0 — 05.11.2026
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **`records`, `invoices`, `orders` and `payments` in the resource vocabulary, and `allocate` in the verbs:** memo's
|
|
16
|
+
finance commands (`invoices`, `orders`, `payments`, `records`, `payments allocate`) were listed in its lint baseline
|
|
17
|
+
because the word list lacked them. `unallocate` is not added: taking an allocation back is `payments unlink`.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **`re2js` is pinned to 2.8.7 (Dependabot alert 14, high):** versions 2.2.0 to 2.8.6 match lookbehind in quadratic time,
|
|
22
|
+
a denial of service. Only the dev tool `markdownlint` pulls it in, so no published package changes.
|
|
23
|
+
- **WC-SECR-25's known gaps no longer list drive and gcal:** both take `session start --client-id` and read the
|
|
24
|
+
per-account `google_client_id` key. The key name, shared with mail, is listed as a gap instead: cli-core's
|
|
25
|
+
settings take no dotted key, so it is not `google.client_id`. mail's missing `--client-id` is listed too.
|
|
26
|
+
- **WC-SECR-25 says how WireCat's shipped Google secret is kept: obscured in cli-core's `constants.json`**, revealed by
|
|
27
|
+
the schema, so the plain value is in no source file, commit or gitleaks allowlist. It said the allowlist named it by
|
|
28
|
+
value. Its known gaps now match cli-core 0.566.0 and the CLIs on it: gcal and mail sign in with WireCat's Google
|
|
29
|
+
app, `doctor` reports `source`, and the app is saved with the sign-in.
|
|
30
|
+
|
|
31
|
+
## 0.77.1 — 05.11.2026
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- **`--trimmed` in the flag vocabulary (role `output`): each e-mail's own text, without the quoted earlier mail and
|
|
36
|
+
the signature.** memo's `messages show --trimmed` and `context --trimmed` give the mail-triage agent the thread and
|
|
37
|
+
the sender's earlier mail without what each reply quotes; it is the opposite of `--full`, and a command refuses
|
|
38
|
+
both together. memo can drop its two `option-role` overrides for it.
|
|
39
|
+
|
|
11
40
|
## 0.77.0 — 05.11.2026
|
|
12
41
|
|
|
13
42
|
### Added
|
|
@@ -19,4 +19,10 @@ export const MAIL_FLAGS = [
|
|
|
19
19
|
type: "switch",
|
|
20
20
|
meaning: "with --reply-to, an e-mail reply also goes to everyone the message went to",
|
|
21
21
|
},
|
|
22
|
+
{
|
|
23
|
+
name: "--trimmed",
|
|
24
|
+
role: "output",
|
|
25
|
+
type: "switch",
|
|
26
|
+
meaning: "each e-mail's own text, without the quoted earlier mail and the signature; refused with --full",
|
|
27
|
+
},
|
|
22
28
|
];
|
|
@@ -149,6 +149,7 @@ const verbs = [
|
|
|
149
149
|
// Only when someone asks, never from a matching name: WC-ACCT-11 in docs/standards/accounts.md.
|
|
150
150
|
["link", "record that two identities are one person"],
|
|
151
151
|
["unlink", "undo a link"],
|
|
152
|
+
["allocate", "match a payment to the invoice or order it settles, in whole or in part"],
|
|
152
153
|
["lookup", "ask the messenger who is behind a phone number"],
|
|
153
154
|
[
|
|
154
155
|
"inspect",
|
|
@@ -249,6 +250,13 @@ const collections = [
|
|
|
249
250
|
"derived records attached to a selected entity, with explicit coverage of included and omitted facets",
|
|
250
251
|
],
|
|
251
252
|
["organizations", "companies, teams, families or communities"],
|
|
253
|
+
[
|
|
254
|
+
"records",
|
|
255
|
+
"documents of the owner's business, such as an invoice or a receipt, kept with the things they are about",
|
|
256
|
+
],
|
|
257
|
+
["invoices", "bills the owner sends or receives, with their amounts and due dates"],
|
|
258
|
+
["orders", "what a customer asked for and the owner owes or delivers"],
|
|
259
|
+
["payments", "money that moved in or out, each one matched to the invoices it settles"],
|
|
252
260
|
[
|
|
253
261
|
"identities",
|
|
254
262
|
"ways to reach a person or an organization: an account in one messenger or mailbox, an e-mail address, a phone",
|
|
@@ -24,10 +24,11 @@ catalogue and parity manifest stay in cli-core
|
|
|
24
24
|
|
|
25
25
|
### Who follows these rules today
|
|
26
26
|
|
|
27
|
-
WC-CMD-30:
|
|
28
|
-
mail and gcal
|
|
29
|
-
`transcribe_model`,
|
|
30
|
-
|
|
27
|
+
WC-CMD-30: every CLI follows on its main branch, as of 2026-11-05, and for the owner from its next release. tg, max,
|
|
28
|
+
wa, mail and gcal take cli-core 0.563.0's shared settings and `config migrate`. max declares `serve` and
|
|
29
|
+
`transcribe_model`, drive `max_text_chars` beside its own `config migrate`, and zm its source and run-log settings in
|
|
30
|
+
its own file. mail's `session start` fills the file it writes. drive's `picture_search` stays undeclared: it is set
|
|
31
|
+
per profile, and only `defaults` is filled.
|
|
31
32
|
|
|
32
33
|
## Paths and words
|
|
33
34
|
|
|
@@ -391,25 +391,29 @@ cli-core's layer for Google and Microsoft, a tool's own layer for a provider onl
|
|
|
391
391
|
"config" | "constants" | null }`. A null client comes with a one-line reason.
|
|
392
392
|
- **Desktop.** A sign-in from wirecat-desktop offers WireCat's app, with a "Use my own app" choice that writes the same
|
|
393
393
|
override as step 2 or 3.
|
|
394
|
-
- **A shipped secret** is allowed only where the provider documents the client as public
|
|
395
|
-
|
|
396
|
-
|
|
394
|
+
- **A shipped secret** is allowed only where the provider documents the client as public. It is stored obscured in the
|
|
395
|
+
layer's `constants.json` and revealed by the schema (cli-core's `src/constants/obscure.ts`, as rclone does), so
|
|
396
|
+
the plain value is in no source file, commit or gitleaks allowlist, and secret scanners do not report it. That is
|
|
397
|
+
not protection: anyone with the package can reveal it. Google's token endpoint refuses a Desktop app client without
|
|
398
|
+
its secret (tested 2026-11-04), although
|
|
397
399
|
[Google's guide](https://developers.google.com/identity/protocols/oauth2/native-app) calls desktop apps public
|
|
398
|
-
clients that cannot keep secrets. So a Google app ships its id and secret; a Microsoft public client
|
|
399
|
-
only.
|
|
400
|
+
clients that cannot keep secrets. So a Google app ships its id and secret, both obscured; a Microsoft public client
|
|
401
|
+
ships its id only.
|
|
400
402
|
- **A provider with no WireCat app yet** says so in `doctor` (a null client and its reason) and in its docs, and still
|
|
401
403
|
keeps the order, the stored app and the report above.
|
|
402
404
|
|
|
403
405
|
- **Why:** an owner should sign in without creating an app first, and still be able to use their own; a token
|
|
404
406
|
refreshed with a different app than the one that issued it fails.
|
|
405
|
-
- **Enforced by:** `cli-core: src/oauth/client-file.test.ts
|
|
407
|
+
- **Enforced by:** `cli-core: src/oauth/client-file.test.ts` · `cli-core: src/constants/index.test.ts` ·
|
|
408
|
+
`cli-core: src/oauth/storage.test.ts`.
|
|
406
409
|
- **Example:** `gcal personal session start` uses WireCat's Google app and `doctor` reports
|
|
407
410
|
`{ client: "wirecat", source: "constants" }`; with `GCAL_GOOGLE_CLIENT_ID` and `GCAL_GOOGLE_CLIENT_SECRET` set it
|
|
408
411
|
reports `{ client: "own", source: "env" }`.
|
|
409
|
-
- **Exceptions:** known gaps, as of 2026-11-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
412
|
+
- **Exceptions:** known gaps, as of 2026-11-05: zoom has no WireCat app until Zoom Marketplace approves one; the
|
|
413
|
+
per-account key is named `google_client_id` in drive, gcal and mail, and `microsoft_client_id` in mail, because
|
|
414
|
+
cli-core's settings take no dotted key outside `permissions.*` and `models.*`; mail takes no `--client-id`; and
|
|
415
|
+
Google has not reviewed WireCat's Google app for Gmail's restricted scope, so a Gmail sign-in with it may be
|
|
416
|
+
refused.
|
|
413
417
|
- **Applies to:** every CLI that signs in with OAuth, and wirecat-desktop. **Since:** cli-base 0.76.1.
|
|
414
418
|
**Rulings:** owner, 2026-11-04.
|
|
415
419
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wirecat/cli-base",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.78.0",
|
|
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",
|