pi-vault-mind 0.16.8 → 0.16.9

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
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.16.9 / 0.6.13 — 2026-07-19
4
+
5
+ ### Fixed
6
+
7
+ - **Setup Auto-start persistence.** The setup wizard now forwards its Auto-start choice to `POST /vm/setup`; the runtime persists it on `vaultMind.vaults.default` without overwriting existing vault configuration siblings.
8
+ - **Vault Mind Settings pane utilization.** The plugin-owned Settings view now fills its available Obsidian settings pane rather than remaining constrained to an internal narrow column.
9
+
10
+ ### Tests
11
+
12
+ - Added REST coverage for persisting Auto-start and preserving existing default-vault siblings; added adapter coverage for forwarding setup preferences.
13
+
14
+
15
+ ## 0.6.12 — 2026-07-19
16
+
17
+ ### Fixed
18
+
19
+ - **Standardized ToolCard presentation.** Tool cards now use humanized tool labels, readable request summaries, structured result previews for text/object/array payloads, masked credential fields, file-path pills for file requests, and a chevron-backed Details disclosure for exact masked payloads.
20
+ - **Settings section persistence routing.** Editable Settings categories now map to the nested `PATCH /vm/config` shape instead of flat top-level patches, Embedding secret fields route through `PUT /vm/embedding/secrets`, and Automation now explains that tag-based auto-sync remains config-only until a dedicated editor ships.
21
+ - **Port-parity whitespace safety.** Canonical source hashing now treats interior Arrow template whitespace as byte-significant, keeps sandbox/plugin canonicalizers aligned, and guards ToolCard inline template markup against whitespace-text regressions.
22
+
23
+ ### Tests
24
+
25
+ - Added ToolCard regressions for text/object/array rendering, malformed JSON fallback, masked credential handling, file-pill request rendering, and raw-details preservation.
26
+ - Added parity regression coverage for interior template whitespace and a shared-corpus agreement check between the sandbox and plugin canonicalizers.
27
+
28
+
3
29
  ## 0.16.8 / 0.6.11 — 2026-07-19
4
30
 
5
31
  ### Added
@@ -1211,8 +1211,22 @@ function handleVmSetup(req, res) {
1211
1211
  config.vaultMind = config.vaultMind || {};
1212
1212
  config.vaultMind.embedding = config.vaultMind.embedding || {};
1213
1213
  config.vaultMind.vaults = config.vaultMind.vaults || {};
1214
- if (parsed.vault) {
1215
- config.vaultMind.vaults.default = { path: shrinkHome(parsed.vault), autoSync: true };
1214
+ const existingDefaultVault = typeof config.vaultMind.vaults.default === "object" &&
1215
+ config.vaultMind.vaults.default !== null &&
1216
+ !Array.isArray(config.vaultMind.vaults.default)
1217
+ ? { ...config.vaultMind.vaults.default }
1218
+ : {};
1219
+ if (parsed.vault || typeof parsed.preferences?.autoStart === "boolean") {
1220
+ const nextDefaultVault = { ...existingDefaultVault };
1221
+ if (parsed.vault) {
1222
+ nextDefaultVault.path = shrinkHome(parsed.vault);
1223
+ nextDefaultVault.autoSync =
1224
+ typeof existingDefaultVault.autoSync === "boolean" ? existingDefaultVault.autoSync : true;
1225
+ }
1226
+ if (typeof parsed.preferences?.autoStart === "boolean") {
1227
+ nextDefaultVault.autoStart = parsed.preferences.autoStart;
1228
+ }
1229
+ config.vaultMind.vaults.default = nextDefaultVault;
1216
1230
  }
1217
1231
  if (parsed.remoteUrl) {
1218
1232
  config.vaultMind.embedding[EMBEDDING_FLAT_KEYS[0]] = parsed.remoteUrl;
@@ -149,6 +149,43 @@ describe("REST setup routes", () => {
149
149
  assert.equal(cfg.vaultMind.embedding.localUrl, "http://127.0.0.1:11434/v1");
150
150
  assert.equal(cfg.vaultMind.embedding.model, "embeddinggemma");
151
151
  });
152
+ it("POST /vm/setup persists preferences.autoStart on the default vault config", async () => {
153
+ const { status, body } = await fetchJson(port, "POST", "/vm/setup", {
154
+ body: { vault: vaultPath, folders: {}, preferences: { autoStart: false } },
155
+ token: TEST_TOKEN,
156
+ });
157
+ assert.equal(status, 200);
158
+ assert.equal(body.ok, true);
159
+ const cfg = JSON.parse(fs.readFileSync(getConfigPath(vaultPath), "utf-8"));
160
+ assert.equal(cfg.vaultMind.vaults.default.autoStart, false);
161
+ });
162
+ it("POST /vm/setup preserves default-vault siblings when toggling autoStart", async () => {
163
+ writeVaultConfig(vaultPath, {
164
+ version: 2,
165
+ collections: {},
166
+ injectors: [],
167
+ vaultMind: {
168
+ vaults: {
169
+ default: {
170
+ path: vaultPath,
171
+ autoStart: false,
172
+ autoSync: false,
173
+ collectionPrefix: "research",
174
+ },
175
+ },
176
+ },
177
+ });
178
+ const { status, body } = await fetchJson(port, "POST", "/vm/setup", {
179
+ body: { vault: vaultPath, folders: {}, preferences: { autoStart: true } },
180
+ token: TEST_TOKEN,
181
+ });
182
+ assert.equal(status, 200);
183
+ assert.equal(body.ok, true);
184
+ const cfg = JSON.parse(fs.readFileSync(getConfigPath(vaultPath), "utf-8"));
185
+ assert.equal(cfg.vaultMind.vaults.default.autoStart, true);
186
+ assert.equal(cfg.vaultMind.vaults.default.autoSync, false);
187
+ assert.equal(cfg.vaultMind.vaults.default.collectionPrefix, "research");
188
+ });
152
189
  it("POST /vm/setup returns 401 without token", async () => {
153
190
  const { status } = await fetchJson(port, "POST", "/vm/setup", {
154
191
  body: { vault: vaultPath, localUrl: "http://127.0.0.1:11434/v1" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-vault-mind",
3
- "version": "0.16.8",
3
+ "version": "0.16.9",
4
4
  "description": "Passive Obsidian vault extension for pi. Watches @agent markers, dispatches forked subagents (Miner, Broadcaster, Heavy-Lifter), stores in LanceDB with vector + FTS + graph. Multi-agent 'Drop & Forget' workflow for the pi agent ecosystem.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",