@haus-tech/haus-workflow 2.0.0 → 3.1.2
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 +68 -0
- package/README.md +8 -4
- package/dist/cli.js +2577 -1264
- package/library/catalog/manifest.json +94 -54
- package/library/global/skills/haus-workflow/SKILL.md +30 -21
- package/library/global/skills/haus-workflow/references/init.md +3 -3
- package/library/global/skills/haus-workflow/references/new.md +24 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,73 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.1.2](https://github.com/WeAreHausTech/haus-workflow/compare/v3.1.1...v3.1.2) (2026-08-20)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
- command probes report inconclusive instead of laundering timeouts into "absent" ([#310](https://github.com/WeAreHausTech/haus-workflow/issues/310)) ([1e2a243](https://github.com/WeAreHausTech/haus-workflow/commit/1e2a243aaddcd9d2906efff06bd85061d9b78e79)), closes [#311](https://github.com/WeAreHausTech/haus-workflow/issues/311)
|
|
8
|
+
|
|
9
|
+
## [3.1.1](https://github.com/WeAreHausTech/haus-workflow/compare/v3.1.0...v3.1.1) (2026-08-19)
|
|
10
|
+
|
|
11
|
+
## [3.1.0](https://github.com/WeAreHausTech/haus-workflow/compare/v3.0.0...v3.1.0) (2026-08-19)
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
- **worktree:** bridge native worktrees to member materialization; add worktree prune ([#309](https://github.com/WeAreHausTech/haus-workflow/issues/309)) ([b8522e5](https://github.com/WeAreHausTech/haus-workflow/commit/b8522e5c184cda64003960b4d36851a1cf048dc9)), closes [#304](https://github.com/WeAreHausTech/haus-workflow/issues/304) [#304](https://github.com/WeAreHausTech/haus-workflow/issues/304) [#305](https://github.com/WeAreHausTech/haus-workflow/issues/305) [#305](https://github.com/WeAreHausTech/haus-workflow/issues/305) [#305](https://github.com/WeAreHausTech/haus-workflow/issues/305)
|
|
16
|
+
|
|
17
|
+
## [3.0.0](https://github.com/WeAreHausTech/haus-workflow/compare/v2.0.0...v3.0.0) (2026-08-18)
|
|
18
|
+
|
|
19
|
+
### ⚠ BREAKING CHANGES
|
|
20
|
+
|
|
21
|
+
- **cli:** merge setup-project into init
|
|
22
|
+
- **cli:** rename haus refresh to haus rescan
|
|
23
|
+
- **cli:** rename haus scaffold to haus configs
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
- **cli:** add haus new command with dry-run, --list, and TTY-safe prompts ([e7463ba](https://github.com/WeAreHausTech/haus-workflow/commit/e7463ba836a30637cca9e3680ed27a33ef878913))
|
|
28
|
+
- **cli:** merge setup-project into init ([6f26632](https://github.com/WeAreHausTech/haus-workflow/commit/6f266320f90a6e5436c4007c614a173e8b81b6d3))
|
|
29
|
+
- **cli:** rename haus refresh to haus rescan ([4126921](https://github.com/WeAreHausTech/haus-workflow/commit/4126921e32a12dbc8c5f1e501be07fc7460a338c))
|
|
30
|
+
- **cli:** rename haus scaffold to haus configs ([8c39b22](https://github.com/WeAreHausTech/haus-workflow/commit/8c39b22788c83e5cc268f57e8eb4f4ab7443ff4a))
|
|
31
|
+
- haus remove <ids...> and a documented mutation model ([#300](https://github.com/WeAreHausTech/haus-workflow/issues/300)) ([4b0f854](https://github.com/WeAreHausTech/haus-workflow/commit/4b0f854a1d83cc00d84bdd6edbda995c9b6217b6)), closes [238/#249](https://github.com/238/haus-workflow/issues/249) [#243](https://github.com/WeAreHausTech/haus-workflow/issues/243) [#243](https://github.com/WeAreHausTech/haus-workflow/issues/243) [238/#249](https://github.com/238/haus-workflow/issues/249) [#238](https://github.com/WeAreHausTech/haus-workflow/issues/238)
|
|
32
|
+
- **new:** add CLI-owned stack registry for haus new ([8160960](https://github.com/WeAreHausTech/haus-workflow/commit/8160960dddad4f066b12d5be1a7525c78c5e59cd))
|
|
33
|
+
- **new:** add create-project orchestrator with fail-closed preflight ([30ef275](https://github.com/WeAreHausTech/haus-workflow/commit/30ef27579d84760e8e162db9176f1bdf7d0dc9f6))
|
|
34
|
+
- **new:** add gh CLI wrapper with org preflight and injectable exec ([5c7cc55](https://github.com/WeAreHausTech/haus-workflow/commit/5c7cc557e9d87826edb04a3db91d608c3292de9d))
|
|
35
|
+
- **skill:** add project:new task to haus-workflow skill ([069121d](https://github.com/WeAreHausTech/haus-workflow/commit/069121d4cfc62a46d6d752a354db3172da34cf2b))
|
|
36
|
+
|
|
37
|
+
### Bug Fixes
|
|
38
|
+
|
|
39
|
+
- check git exit codes, restore [#303](https://github.com/WeAreHausTech/haus-workflow/issues/303) docs, give canary a git identity ([ef8a36d](https://github.com/WeAreHausTech/haus-workflow/commit/ef8a36db2a0b65f9414fd8ed85aa11fee4fa9bfd))
|
|
40
|
+
- **cli:** finish haus scaffold -> haus configs wording sweep ([edc40c2](https://github.com/WeAreHausTech/haus-workflow/commit/edc40c295919197bdbdc4658fe0ea8f999494a30))
|
|
41
|
+
- **cli:** fix round 1 — EOF latch, scoped backups --json gate, ADR/docs ([f16e1af](https://github.com/WeAreHausTech/haus-workflow/commit/f16e1afce8c256d24ad2b1ce2ea4f8d1bd05c86d))
|
|
42
|
+
- close stdout-purity gaps in haus new + seed npm lockfile ([bfdb9d1](https://github.com/WeAreHausTech/haus-workflow/commit/bfdb9d137150f70666412fa986f158182bcfddf2))
|
|
43
|
+
- every deleter backs up, and a refused deletion keeps its lock row ([#303](https://github.com/WeAreHausTech/haus-workflow/issues/303)) ([246ddca](https://github.com/WeAreHausTech/haus-workflow/commit/246ddca1c04910d3f4215510f4f1f7d5f97f0af3)), closes [#290](https://github.com/WeAreHausTech/haus-workflow/issues/290) [#291](https://github.com/WeAreHausTech/haus-workflow/issues/291) [#292](https://github.com/WeAreHausTech/haus-workflow/issues/292) [#300](https://github.com/WeAreHausTech/haus-workflow/issues/300) [#291](https://github.com/WeAreHausTech/haus-workflow/issues/291) [#290](https://github.com/WeAreHausTech/haus-workflow/issues/290) [#290](https://github.com/WeAreHausTech/haus-workflow/issues/290) [#292](https://github.com/WeAreHausTech/haus-workflow/issues/292) [#292](https://github.com/WeAreHausTech/haus-workflow/issues/292) [#290](https://github.com/WeAreHausTech/haus-workflow/issues/290) [#291](https://github.com/WeAreHausTech/haus-workflow/issues/291) [#293](https://github.com/WeAreHausTech/haus-workflow/issues/293) [#292](https://github.com/WeAreHausTech/haus-workflow/issues/292) [#292](https://github.com/WeAreHausTech/haus-workflow/issues/292)
|
|
44
|
+
- **new:** apply catalog policy gates in overlay, contain scan/git-followup throws honestly, bound scaffold spawn with a timeout ([73a8b9a](https://github.com/WeAreHausTech/haus-workflow/commit/73a8b9adc8a7280a9522316d40141bf7632361fb))
|
|
45
|
+
- **new:** contain gh exec throws, fix partial-failure resumeHint, union CreateRepoResult ([b267508](https://github.com/WeAreHausTech/haus-workflow/commit/b26750898418cd015f1712f82b41fbad1544888c))
|
|
46
|
+
- **test:** isolate [#298](https://github.com/WeAreHausTech/haus-workflow/issues/298) rescan/plugin tests from real ~/.claude ([e261905](https://github.com/WeAreHausTech/haus-workflow/commit/e261905361d3216bd79cdcfacc797c9c1229cee5)), closes [#298a](https://github.com/WeAreHausTech/haus-workflow/issues/298a) [#298b](https://github.com/WeAreHausTech/haus-workflow/issues/298b)
|
|
47
|
+
- **test:** isolate init idempotency test from real network/~/.claude ([aa7f595](https://github.com/WeAreHausTech/haus-workflow/commit/aa7f595dc9ad4f88c686de310a2115f61bf624e2)), closes [#297](https://github.com/WeAreHausTech/haus-workflow/issues/297)
|
|
48
|
+
|
|
49
|
+
## Unreleased
|
|
50
|
+
|
|
51
|
+
### Features
|
|
52
|
+
|
|
53
|
+
- **remove:** `haus remove <ids...>` — deliberate single-item removal, hash-gated, backed up to `.haus-workflow/backups/remove-<timestamp>/` first, and refused (files _and_ lock entry kept) on a locally modified item ([#238](https://github.com/WeAreHausTech/haus-workflow/issues/238))
|
|
54
|
+
- **refresh:** `haus refresh --dry-run` — refresh was the one mutating command with no preview flag ([#249](https://github.com/WeAreHausTech/haus-workflow/issues/249))
|
|
55
|
+
|
|
56
|
+
### Bug Fixes
|
|
57
|
+
|
|
58
|
+
- **backups:** recognise `haus remove`'s `remove-<timestamp>/` snapshots. `classify()` knew only the lock/`undo-`/`prune-` prefixes, so `listBackups` dropped them — a `remove-` backup was invisible to `backups list`, unrestorable (`No backup found with id …`), and never reclaimed by `backups prune`, while `haus remove` told the user to restore from it ([#238](https://github.com/WeAreHausTech/haus-workflow/issues/238))
|
|
59
|
+
- **apply:** back up before the `formerIds` rename cleanup deletes. `cleanupMigratedCatalogItems` ran its own hash check and its own `fs.remove` loop with no snapshot at all, on every apply that hit a rename — those deletions were unrecoverable. It now routes through the shared `hashGateEntry` and writes to `.haus-workflow/backups/migrate-<timestamp>/`, a prefix `classify()` recognises so the snapshots list, restore and prune ([#290](https://github.com/WeAreHausTech/haus-workflow/issues/290))
|
|
60
|
+
- **apply:** back up every stale-cleanup reason, not only the plugin-superseded one. `cleanupStaleCatalogItems`' backup call was guarded on `superseded`, so manifest-removed and `deprecated` items were deleted with no snapshot; all three reasons now snapshot to `prune-<timestamp>/` first ([#291](https://github.com/WeAreHausTech/haus-workflow/issues/291))
|
|
61
|
+
- **apply:** keep the lock row when a deletion is refused. The apply-side lock rebuild dropped a stale or orphaned item's row even when the hash gate had just refused to delete its files, leaving the kept file untracked and unreachable by any later run. Both apply-side deleters now return the ids they refused and the rebuild carries those rows forward verbatim — original recorded `hash` included, never re-hashed — so `haus update --check` still reports the drift ([#292](https://github.com/WeAreHausTech/haus-workflow/issues/292))
|
|
62
|
+
|
|
63
|
+
### Documentation
|
|
64
|
+
|
|
65
|
+
- **cli:** publish a per-command "Does this command write to disk?" table, with the `workspace setup` three-state contract, `setup-project`'s `--json`-as-preview gap, and `refresh --dry-run`'s remaining `claude` CLI probe all stated rather than flattened ([#249](https://github.com/WeAreHausTech/haus-workflow/issues/249))
|
|
66
|
+
|
|
67
|
+
### Code Refactoring
|
|
68
|
+
|
|
69
|
+
- **cli:** centralise `--dry-run`/`--write` resolution in `src/utils/write-mode.ts` under three named contracts; no command's default changed, and `workspace setup` deliberately keeps its own parsing (see ADR-0047) ([#249](https://github.com/WeAreHausTech/haus-workflow/issues/249))
|
|
70
|
+
|
|
3
71
|
## [2.0.0](https://github.com/WeAreHausTech/haus-workflow/compare/v1.7.0...v2.0.0) (2026-08-17)
|
|
4
72
|
|
|
5
73
|
### Features
|
package/README.md
CHANGED
|
@@ -57,8 +57,8 @@ Without an argument, the skill presents a menu so you can pick the task. With an
|
|
|
57
57
|
## Commands
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
haus init #
|
|
61
|
-
haus
|
|
60
|
+
haus init # full setup: scan → recommend → apply (safe to re-run)
|
|
61
|
+
haus init --dry-run # preview the .claude/ write only; scan artifacts are still written
|
|
62
62
|
haus clone <url> [dir] # clone a single git repo by URL (the primitive project:clone / project:cloneandsetup loop over)
|
|
63
63
|
haus scan # scan repo and write context-map
|
|
64
64
|
haus recommend # recommend catalog items (binary eligibility)
|
|
@@ -96,8 +96,12 @@ See [ADR-0046](docs/decisions/0046-manifest-format-2-install-contract.md).
|
|
|
96
96
|
|
|
97
97
|
On `haus apply` / `haus update`, items **removed from the catalog** or marked
|
|
98
98
|
**deprecated** are pruned from the project when their on-disk copy still matches the
|
|
99
|
-
lock hash; user-edited copies are kept
|
|
100
|
-
|
|
99
|
+
lock hash; user-edited copies are kept, lock entry and all. Every lock-tracked catalog item
|
|
100
|
+
haus deletes is snapshotted under `.haus-workflow/backups/` first and can be put back with
|
|
101
|
+
`haus backups restore` (`haus undo` also removes other project files such as
|
|
102
|
+
`.claude/settings.json` and the root `CLAUDE.md`, which are not lock-tracked and not
|
|
103
|
+
snapshotted — see [docs/cli.md](docs/cli.md) → `haus backups`). Approved items deselected via
|
|
104
|
+
`--select` are not pruned.
|
|
101
105
|
|
|
102
106
|
> **Upgrading from a pre-`0.30.0` CLI:** deprecated-skill pruning shipped in `0.30.0`.
|
|
103
107
|
> If an older CLI left deprecated skills on disk, upgrade first
|