@su-record/vibe 4.2.32 → 4.2.33

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.
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Your personal FDE in Claude and Codex. Understand the work, use the right tools, deliver and retain useful context. One entry: vibe.",
9
- "version": "4.2.32"
9
+ "version": "4.2.33"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "vibe",
14
14
  "source": "./",
15
15
  "description": "Your personal FDE in Claude and Codex. Understand the work, use the right tools, deliver and retain useful context. One entry: vibe.",
16
- "version": "4.2.32",
16
+ "version": "4.2.33",
17
17
  "category": "productivity"
18
18
  }
19
19
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe",
3
- "version": "4.2.32",
3
+ "version": "4.2.33",
4
4
  "description": "Your personal FDE in Claude and Codex. Understand the work, use the right tools, deliver and retain useful context. One entry: vibe.",
5
5
  "author": {
6
6
  "name": "su-record",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe",
3
- "version": "4.2.32",
3
+ "version": "4.2.33",
4
4
  "description": "Your personal FDE in Claude and Codex. Understand the work, use the right tools, deliver and retain useful context. One entry: vibe.",
5
5
  "author": {
6
6
  "name": "su-record",
@@ -24,7 +24,8 @@ const entry = (root, id) => `knowledge-${digest(`${root}\0${id}`)}.json`;
24
24
  /** The same file and defaults `vibe knowledge auto` writes (src/core/knowledge.ts). */
25
25
  function settings(home) {
26
26
  try {
27
- const raw = JSON.parse(optional(path.join(home, '.config', 'vibe', 'knowledge.json'), 65536) ?? '{}');
27
+ // The reader refuses a link anywhere in a path; a home under one (macOS /var → /private/var) is the person's own.
28
+ const raw = JSON.parse(optional(path.join(fs.realpathSync(home), '.config', 'vibe', 'knowledge.json'), 65536) ?? '{}');
28
29
  return {
29
30
  auto: raw.auto === true,
30
31
  dir: typeof raw.dir === 'string' && path.isAbsolute(raw.dir) ? raw.dir : path.join(home, '.config', 'vibe', 'knowledge'),
package/hooks/notify.js CHANGED
@@ -34,7 +34,9 @@ const root = process.env.CLAUDE_PROJECT_DIR || process.cwd();
34
34
  // Plugin copy and npm copy must not both fire. The npm install writes a notify hook into the
35
35
  // client's home settings; when that exists, the plugin's hook steps back.
36
36
  if (asPlugin) {
37
- const home = process.env.VIBE_HOME_DIR || os.homedir();
37
+ // The reader refuses a link anywhere in a path; a home under one (macOS /var → /private/var) is the person's own.
38
+ let home = process.env.VIBE_HOME_DIR || os.homedir();
39
+ try { home = fs.realpathSync(home); } catch { /* a missing home has no settings to read */ }
38
40
  for (const file of [path.join(home, '.claude', 'settings.json'), path.join(home, '.codex', 'hooks.json')]) {
39
41
  try {
40
42
  const settings = JSON.parse(sessionFiles.optional(file, 65536) ?? '{}');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@su-record/vibe",
3
- "version": "4.2.32",
3
+ "version": "4.2.33",
4
4
  "description": "Your personal FDE in Claude and Codex. Understand the work, use the right tools, deliver and retain useful context. One entry: vibe.",
5
5
  "type": "module",
6
6
  "bin": {