pi-vault-mind 0.16.3 → 0.16.4

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,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.16.4 / 0.6.6 — 2026-07-17
4
+
5
+ ### Fixed
6
+
7
+ - **Obsidian-contained popovers.** Shared folder pickers now convert viewport anchor coordinates into the workspace leaf's fixed containing block, so their menus stay aligned with their input fields in the real Obsidian shell.
8
+ - **Cloud-only default chat routing.** New vault model-router configurations use `ollama/gemma4:31b-cloud` for every auto profile tier and explicit cloud fallbacks only. ReturnVape's active vault-local runtime configuration was migrated to remove local Gemma chat routes; local embedding models remain unchanged.
9
+
10
+ ### Tests
11
+
12
+ - Added focused regression coverage for contained popover placement and cloud-only model-router defaults/profiles.
13
+
3
14
  ## 0.16.3 / 0.6.5 — 2026-07-16
4
15
 
5
16
  ### Added
@@ -14,12 +14,14 @@ import * as fs from "node:fs";
14
14
  import { ensureDir, resolveVaultMindPaths } from "./utils.js";
15
15
  /** Tuned default primary model + fallback sequence for the `auto` router profile. */
16
16
  export const defaultModelRouterChoices = () => {
17
- const isMacOS = process.platform === "darwin";
18
17
  return {
19
18
  primary: "ollama/gemma4:31b-cloud",
20
- fallbackSequence: isMacOS
21
- ? ["ollama/gemma4:e4b", "ollama/gemma4:12b-mlx", "ollama/gemma3:4b", "ollama/*"]
22
- : ["ollama/gemma4:e4b", "ollama/gemma4:12b", "ollama/gemma3:4b", "ollama/*"],
19
+ fallbackSequence: [
20
+ "ollama/gemma4:31b-cloud",
21
+ "ollama/deepseek-v4-flash:cloud",
22
+ "ollama/minimax-m3:cloud",
23
+ "ollama/kimi-k2.7-code:cloud",
24
+ ],
23
25
  };
24
26
  };
25
27
  /**
@@ -32,7 +34,7 @@ export const scaffoldModelRouterConfig = (cwd) => {
32
34
  const { modelRouter: configPath } = resolveVaultMindPaths(cwd);
33
35
  if (fs.existsSync(configPath))
34
36
  return { created: false, path: configPath };
35
- const { primary: mediumModel, fallbackSequence } = defaultModelRouterChoices();
37
+ const { primary, fallbackSequence } = defaultModelRouterChoices();
36
38
  const config = {
37
39
  defaultProfile: "auto",
38
40
  features: {
@@ -55,9 +57,9 @@ export const scaffoldModelRouterConfig = (cwd) => {
55
57
  },
56
58
  profiles: {
57
59
  auto: {
58
- high: { model: "ollama/gemma4:31b-cloud", thinking: "medium" },
59
- medium: { model: mediumModel, thinking: "low" },
60
- low: { model: "ollama/gemma4:e4b", thinking: "off" },
60
+ high: { model: primary, thinking: "medium" },
61
+ medium: { model: primary, thinking: "low" },
62
+ low: { model: primary, thinking: "off" },
61
63
  },
62
64
  },
63
65
  };
@@ -15,19 +15,21 @@ describe("defaultModelRouterChoices", () => {
15
15
  assert.ok(Array.isArray(fallbackSequence));
16
16
  assert.equal(fallbackSequence.length, 4);
17
17
  });
18
- it("includes the common baseline entries regardless of platform", () => {
18
+ it("selects only explicit cloud fallbacks", () => {
19
19
  const { fallbackSequence } = defaultModelRouterChoices();
20
- for (const entry of ["ollama/gemma4:e4b", "ollama/gemma3:4b", "ollama/*"]) {
21
- assert.ok(fallbackSequence.includes(entry), `expected fallbackSequence to include ${entry}`);
20
+ assert.ok(fallbackSequence.length > 0);
21
+ for (const model of fallbackSequence) {
22
+ assert.match(model, /(?:-cloud|:cloud)$/);
22
23
  }
23
24
  });
24
- it("includes exactly one of the platform-specific mid-tier variants", () => {
25
+ it("uses the configured cloud fallback sequence", () => {
25
26
  const { fallbackSequence } = defaultModelRouterChoices();
26
- const macVariant = fallbackSequence.includes("ollama/gemma4:12b-mlx");
27
- const otherVariant = fallbackSequence.includes("ollama/gemma4:12b");
28
- // Exactly one of the two platform-specific entries is present — never both,
29
- // never neither — without hardcoding which platform CI happens to run on.
30
- assert.notEqual(macVariant, otherVariant);
27
+ assert.deepEqual(fallbackSequence, [
28
+ "ollama/gemma4:31b-cloud",
29
+ "ollama/deepseek-v4-flash:cloud",
30
+ "ollama/minimax-m3:cloud",
31
+ "ollama/kimi-k2.7-code:cloud",
32
+ ]);
31
33
  });
32
34
  });
33
35
  describe("scaffoldModelRouterConfig", () => {
@@ -83,6 +85,9 @@ describe("scaffoldModelRouterConfig", () => {
83
85
  assert.equal(typeof profile.model, "string");
84
86
  assert.equal(typeof profile.thinking, "string");
85
87
  }
88
+ for (const tier of ["high", "medium", "low"]) {
89
+ assert.equal(parsed.profiles.auto[tier].model, "ollama/gemma4:31b-cloud");
90
+ }
86
91
  });
87
92
  it("never overwrites an existing model-router.json (idempotent)", () => {
88
93
  const expectedPath = resolveVaultMindPaths(testDir).modelRouter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-vault-mind",
3
- "version": "0.16.3",
3
+ "version": "0.16.4",
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",