projectstore-claude 0.29.0 → 0.29.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.
Files changed (32) hide show
  1. package/README.md +1 -0
  2. package/node_modules/projectstore/.claude-plugin/marketplace.json +1 -1
  3. package/node_modules/projectstore/.claude-plugin/plugin.json +1 -1
  4. package/node_modules/projectstore/README.md +10 -2
  5. package/node_modules/projectstore/commands/review.md +1 -1
  6. package/node_modules/projectstore/harnesses/claude-code.json +17 -2
  7. package/node_modules/projectstore/harnesses/codex.json +20 -4
  8. package/node_modules/projectstore/hooks/pre-compact.mjs +2 -1
  9. package/node_modules/projectstore/hooks/session-rules.mjs +19 -7
  10. package/node_modules/projectstore/hooks/session-start.mjs +20 -18
  11. package/node_modules/projectstore/package.json +2 -2
  12. package/node_modules/projectstore/scripts/binding.mjs +3 -3
  13. package/node_modules/projectstore/scripts/build-adapters.mjs +43 -13
  14. package/node_modules/projectstore/scripts/cli.mjs +7 -4
  15. package/node_modules/projectstore/scripts/codemap.mjs +2 -2
  16. package/node_modules/projectstore/scripts/doctor.mjs +110 -58
  17. package/node_modules/projectstore/scripts/draft.mjs +4 -3
  18. package/node_modules/projectstore/scripts/graph.mjs +3 -2
  19. package/node_modules/projectstore/scripts/harness.mjs +89 -0
  20. package/node_modules/projectstore/scripts/install-harness.mjs +99 -16
  21. package/node_modules/projectstore/scripts/kanban.mjs +3 -2
  22. package/node_modules/projectstore/scripts/lib.mjs +81 -8
  23. package/node_modules/projectstore/scripts/mcp.mjs +2 -2
  24. package/node_modules/projectstore/scripts/portable-registration.mjs +6 -1
  25. package/node_modules/projectstore/scripts/query.mjs +2 -1
  26. package/node_modules/projectstore/scripts/reconcile.mjs +4 -3
  27. package/node_modules/projectstore/scripts/story-section.mjs +2 -1
  28. package/node_modules/projectstore/scripts/surfaces.mjs +2 -1
  29. package/node_modules/projectstore/scripts/term.mjs +3 -1
  30. package/node_modules/projectstore/scripts/touch-session.mjs +6 -1
  31. package/node_modules/projectstore/scripts/worktree.mjs +12 -7
  32. package/package.json +2 -2
@@ -13,7 +13,7 @@
13
13
 
14
14
  import { dirname, resolve } from "node:path";
15
15
  import { fileURLToPath } from "node:url";
16
- import { projectRoot, readConfigAt, truncFront, PATH_CELL } from "./lib.mjs";
16
+ import { projectRoot, readConfigAt, truncFront, PATH_CELL, commandForm, inheritForm, bindInherits } from "./lib.mjs";
17
17
  import { gitIn } from "./diff-refs.mjs";
18
18
 
19
19
  // SessionStart is user-facing and budgets its gather in hundreds of
@@ -28,8 +28,10 @@ const trim = (s) => (typeof s === "string" ? s.trim() : null);
28
28
  // Every branch returns every field. A caller reading a field that only exists on
29
29
  // the happy path throws, and a hook swallows that into silence — which looks
30
30
  // exactly like the mechanism deciding it had nothing to say.
31
- function record(state, worktree, mainCheckout, vaultPath) {
32
- return { state, worktree, mainCheckout, vaultPath };
31
+ // `layout` and `language` are the parent's: what a bind without an inherit
32
+ // path must name to write the parent's binding rather than bind's defaults.
33
+ function record(state, worktree, mainCheckout, vaultPath, parent = null) {
34
+ return { state, worktree, mainCheckout, vaultPath, layout: parent?.layout || null, language: parent?.language || null };
33
35
  }
34
36
 
35
37
  // The main checkout behind a linked worktree.
@@ -77,7 +79,7 @@ export function resolveBinding(projectDir = projectRoot()) {
77
79
  const parent = readConfigAt(main);
78
80
  if (!parent || !parent.vault_path) return record("unbound", true, main, null);
79
81
 
80
- return record("inheritable", true, main, parent.vault_path);
82
+ return record("inheritable", true, main, parent.vault_path, parent);
81
83
  }
82
84
 
83
85
  // Pure: record in, block out. Both interpolated paths are user-controlled and
@@ -87,14 +89,17 @@ export function bindingOfferText(b) {
87
89
  return [
88
90
  "# projectstore — this worktree is not bound",
89
91
  "",
90
- "This checkout has no `.projectstore/projectstore.json`, so `/projectstore:*` commands",
92
+ `This checkout has no \`.projectstore/projectstore.json\`, so \`${commandForm("*")}\` commands`,
91
93
  "cannot run here. The checkout it was forked from is bound:",
92
94
  "",
93
95
  `- main checkout: \`${truncFront(String(b.mainCheckout), PATH_CELL)}\``,
94
96
  `- its vault: \`${truncFront(String(b.vaultPath), PATH_CELL)}\``,
95
97
  "",
96
- "Run `/projectstore:bind --inherit` to adopt that binding. It copies the binding",
97
- "only — the vault is shared and unchanged, and no session state travels with it.",
98
+ ...(bindInherits()
99
+ ? [`Run \`${inheritForm(b.vaultPath, { layout: b.layout, language: b.language })}\` to adopt that binding. It copies the binding`,
100
+ "only — the vault is shared and unchanged, and no session state travels with it."]
101
+ : [`Run \`${inheritForm(b.vaultPath, { layout: b.layout, language: b.language })}\` to bind this checkout to the same vault,`,
102
+ "layout and language — the vault is shared and unchanged, and no session state travels with it."]),
98
103
  "",
99
104
  "",
100
105
  ].join("\n");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "projectstore-claude",
3
- "version": "0.29.0",
3
+ "version": "0.29.2",
4
4
  "description": "Installs projectstore for Claude Code from npm: the core pinned and bundled, the harness fixed — npx projectstore-claude install --project \"$PWD\".",
5
5
  "keywords": [
6
6
  "projectstore",
@@ -37,7 +37,7 @@
37
37
  "README.md"
38
38
  ],
39
39
  "dependencies": {
40
- "projectstore": "=0.29.0"
40
+ "projectstore": "=0.29.2"
41
41
  },
42
42
  "bundleDependencies": [
43
43
  "projectstore"