@indigoai-us/hq-cli 5.13.0 → 5.14.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 +83 -0
- package/dist/cli-version.d.ts +1 -1
- package/dist/cli-version.js +9 -3
- package/dist/index.js +4 -3
- package/package.json +1 -1
- package/src/cli-version.ts +9 -1
- package/src/index.ts +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,89 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.14.0] — 2026-05-14
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- **`hq sync now` and `hq sync push --all` no longer delete vault files
|
|
10
|
+
this machine never owned.** `propagateDeletes: true` in the underlying
|
|
11
|
+
`share()` engine now defaults to `propagateDeletePolicy: "owned-only"`
|
|
12
|
+
— only journal entries with `direction: "up"` (paths this machine
|
|
13
|
+
previously uploaded) are eligible for remote `DeleteObject`. This
|
|
14
|
+
closes two reproducer-grade failure modes:
|
|
15
|
+
- A behind machine running `sync now` for the first time would erase
|
|
16
|
+
peer uploads from the vault because its push-then-pull ordering
|
|
17
|
+
interpreted "local missing → propagate delete" before the pull leg
|
|
18
|
+
fetched the new content.
|
|
19
|
+
- A machine with stricter local ignore rules (older HQ layout,
|
|
20
|
+
custom `.hqignore`) would erase paths that lived in the vault but
|
|
21
|
+
were filtered out of its local walk — the next push concluded the
|
|
22
|
+
user had deleted them.
|
|
23
|
+
|
|
24
|
+
Path-scoped pushes (`hq sync push <path>...`) are unaffected — they
|
|
25
|
+
never opted into `propagateDeletes` to begin with. Set
|
|
26
|
+
`propagateDeletePolicy: "all"` via the `share()` library API to opt
|
|
27
|
+
back into the legacy any-direction behaviour; there is no CLI flag
|
|
28
|
+
for that today.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **`hq --version` and the update-check banner now read from
|
|
33
|
+
`package.json` at runtime instead of a hardcoded literal.** Two stale
|
|
34
|
+
literals (`src/index.ts` → `5.12.4`, `src/cli-version.ts` →
|
|
35
|
+
`5.12.1`) had been drifting across the 5.12.x and 5.13.x releases.
|
|
36
|
+
They're now sourced from the same place the npm tarball is, so they
|
|
37
|
+
stay accurate by construction.
|
|
38
|
+
|
|
39
|
+
- **Filter-symmetry guard on `propagateDeletes`.** `computeDeletePlan`
|
|
40
|
+
now intersects the journal-based delete candidates with the same
|
|
41
|
+
`createIgnoreFilter(hqRoot)` predicate the pull leg uses. Paths the
|
|
42
|
+
current ignore filter would reject are never delete-propagated, even
|
|
43
|
+
if they appear in the journal. Pairs with the `direction` guard
|
|
44
|
+
above: a path is delete-eligible only when (a) the journal records
|
|
45
|
+
us as its uploader AND (b) the ignore filter accepts it AND (c) the
|
|
46
|
+
local file is missing.
|
|
47
|
+
|
|
48
|
+
### Added (developer-facing)
|
|
49
|
+
|
|
50
|
+
- **`ShareOptions.propagateDeletePolicy: "owned-only" | "all"`** on
|
|
51
|
+
the `share()` library export. Defaults to `"owned-only"` whenever
|
|
52
|
+
`propagateDeletes: true`. The `sync-runner` (Tauri menubar) and
|
|
53
|
+
`hq sync now` / `hq sync push --all` (CLI) all inherit the safer
|
|
54
|
+
default automatically.
|
|
55
|
+
|
|
56
|
+
- **Cross-package pre-publish smoke test
|
|
57
|
+
(`.github/workflows/publish.yml`).** Between hq-cloud and hq-cli
|
|
58
|
+
publishes, the workflow installs each consumer in an isolated tmpdir
|
|
59
|
+
— using the workspace tarball when the consumer's package.json
|
|
60
|
+
version is new, or fetching `name@version` from npm when it is
|
|
61
|
+
already published — and boots the binary with `--version`. The boot
|
|
62
|
+
exercises the full module-load graph; transitive `@indigoai-us/*`
|
|
63
|
+
resolution goes through the npm registry (matching what a customer
|
|
64
|
+
install would see). Catches the v5.13.0 failure mode — a consumer
|
|
65
|
+
imports a producer symbol that the published producer doesn't yet
|
|
66
|
+
export — before the broken package reaches consumers.
|
|
67
|
+
Notably the smoke runs for already-published consumers too: a
|
|
68
|
+
producer bump earlier in the same workflow can retroactively break
|
|
69
|
+
consumers via caret-range transitive resolution, so the consumer's
|
|
70
|
+
bytes being immutable does NOT mean its runtime behaviour is locked.
|
|
71
|
+
Bypass: set repo variable `WORKFLOW_ALLOW_BROKEN_PUBLISH=1`
|
|
72
|
+
(audited via the workflow log).
|
|
73
|
+
|
|
74
|
+
## [5.13.1] — 2026-05-14
|
|
75
|
+
|
|
76
|
+
### Fixed
|
|
77
|
+
|
|
78
|
+
- **Republish hq-cli alongside `@indigoai-us/hq-cloud@5.16.0` to ship the
|
|
79
|
+
`computePersonalVaultPaths` helper.** `5.13.0` imported the new helper
|
|
80
|
+
from hq-cloud, but the publish workflow's idempotent skip-if-already-on-npm
|
|
81
|
+
gate suppressed the hq-cloud republish (its `package.json` still said
|
|
82
|
+
5.15.0). The runtime resolution of `^5.1.0` then pulled the older
|
|
83
|
+
hq-cloud, and every `hq` invocation crashed with `SyntaxError: ... does
|
|
84
|
+
not provide an export named 'computePersonalVaultPaths'`. 5.13.1 carries
|
|
85
|
+
no source delta; it bumps the version so the workflow republishes and
|
|
86
|
+
forces hq-cloud@5.16.0 to ship alongside.
|
|
87
|
+
|
|
5
88
|
## [5.13.0] — 2026-05-14
|
|
6
89
|
|
|
7
90
|
### Added
|
package/dist/cli-version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION
|
|
1
|
+
export declare const CLI_VERSION: string;
|
|
2
2
|
//# sourceMappingURL=cli-version.d.ts.map
|
package/dist/cli-version.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9d613278-0268-5da9-a6d0-f1b4f15d405a")}catch(e){}}();
|
|
3
|
+
import { readFileSync } from "node:fs";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const pkgPath = path.resolve(here, "..", "package.json");
|
|
8
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
9
|
+
export const CLI_VERSION = pkg.version;
|
|
4
10
|
//# sourceMappingURL=cli-version.js.map
|
|
5
|
-
//# debugId=
|
|
11
|
+
//# debugId=9d613278-0268-5da9-a6d0-f1b4f15d405a
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* HQ CLI - Module management, package management, and cloud sync for HQ
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
6
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9cc0bf93-9c18-53aa-addd-954425115886")}catch(e){}}();
|
|
7
7
|
import { Command } from "commander";
|
|
8
8
|
import { initSentry, Sentry } from "./sentry.js";
|
|
9
9
|
import { registerAddCommand } from "./commands/add.js";
|
|
@@ -31,6 +31,7 @@ import { registerMembersCommand } from "./commands/members.js";
|
|
|
31
31
|
import { registerFeedbackCommand } from "./commands/feedback.js";
|
|
32
32
|
import { sanitizeArgv } from "./utils/feedback-diagnostics.js";
|
|
33
33
|
import { maybeWarnNewVersion, refreshVersionCache, } from "./utils/version-check.js";
|
|
34
|
+
import { CLI_VERSION } from "./cli-version.js";
|
|
34
35
|
// Swallow EPIPE when a downstream reader (e.g. `source <(…)`, `| head`) closes the pipe early.
|
|
35
36
|
const onPipeError = (err) => {
|
|
36
37
|
if (err.code === "EPIPE") {
|
|
@@ -46,7 +47,7 @@ const program = new Command();
|
|
|
46
47
|
program
|
|
47
48
|
.name("hq")
|
|
48
49
|
.description("HQ management CLI — modules, packages, and cloud sync")
|
|
49
|
-
.version(
|
|
50
|
+
.version(CLI_VERSION);
|
|
50
51
|
// Module management subcommand group
|
|
51
52
|
const modulesCmd = program
|
|
52
53
|
.command("modules")
|
|
@@ -119,4 +120,4 @@ registerFeedbackCommand(program);
|
|
|
119
120
|
}
|
|
120
121
|
})();
|
|
121
122
|
//# sourceMappingURL=index.js.map
|
|
122
|
-
//# debugId=
|
|
123
|
+
//# debugId=9cc0bf93-9c18-53aa-addd-954425115886
|
package/package.json
CHANGED
package/src/cli-version.ts
CHANGED
|
@@ -1 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
|
|
5
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const pkgPath = path.resolve(here, "..", "package.json");
|
|
7
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8")) as { version: string };
|
|
8
|
+
|
|
9
|
+
export const CLI_VERSION: string = pkg.version;
|
package/src/index.ts
CHANGED
|
@@ -34,6 +34,7 @@ import {
|
|
|
34
34
|
maybeWarnNewVersion,
|
|
35
35
|
refreshVersionCache,
|
|
36
36
|
} from "./utils/version-check.js";
|
|
37
|
+
import { CLI_VERSION } from "./cli-version.js";
|
|
37
38
|
|
|
38
39
|
// Swallow EPIPE when a downstream reader (e.g. `source <(…)`, `| head`) closes the pipe early.
|
|
39
40
|
const onPipeError = (err: NodeJS.ErrnoException): void => {
|
|
@@ -53,7 +54,7 @@ const program = new Command();
|
|
|
53
54
|
program
|
|
54
55
|
.name("hq")
|
|
55
56
|
.description("HQ management CLI — modules, packages, and cloud sync")
|
|
56
|
-
.version(
|
|
57
|
+
.version(CLI_VERSION);
|
|
57
58
|
|
|
58
59
|
// Module management subcommand group
|
|
59
60
|
const modulesCmd = program
|