bod-cli 0.10.4 → 0.10.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bod-cli",
3
- "version": "0.10.4",
3
+ "version": "0.10.5",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "bod": "./src/cli.ts"
@@ -47,8 +47,12 @@ export const DEFAULT_EXCLUDES: { pattern: string; why: string }[] = [
47
47
  { pattern: '.tmp', why: 'repo-wide scratch convention — never runtime input' },
48
48
  { pattern: 'scratchpad', why: 'agent scratch dir, same class as .tmp' },
49
49
  { pattern: '.bodify', why: 'local `bod serve` state / dev database' },
50
- { pattern: '.mcp-android', why: 'local device-automation MCP state' },
51
- { pattern: '.mcp-ios', why: 'local device-automation MCP state' },
50
+ // Enumerating these by hand is what failed: `.mcp-android`/`.mcp-ios` were listed
51
+ // while `.mcp-playwright/profile` (41.8MB) and `.mcp-cursor/cache` (7.3MB) sailed
52
+ // through on para-li. The family is the unit, not each member. Still a BARE
53
+ // pattern (no leading `*/`), so it matches at top level too — pinned by test.
54
+ { pattern: '.mcp-*', why: 'local MCP tool state (android/ios/playwright/cursor/…)' },
55
+ { pattern: '.bodify-bak*', why: 'local `bod serve` db backups — same class as .bodify' },
52
56
  { pattern: '.frame-dev', why: 'frame dev-server cache' },
53
57
  { pattern: '.DS_Store', why: 'macOS Finder metadata' },
54
58
  ]
@@ -28,6 +28,9 @@ beforeAll(() => {
28
28
  f('packages/x/.agent/state.json')
29
29
  f('.claude/settings.json'); f('.cursor/rules'); f('.tmp/junk'); f('scratchpad/note')
30
30
  f('.bodify/dev.db'); f('.mcp-ios/x'); f('.mcp-android/x'); f('.vscode/settings.json')
31
+ // the family members hand-enumeration missed on para-li (41.8MB + 7.3MB)
32
+ f('.mcp-playwright/profile/p.bin'); f('.mcp-cursor/cache/c.bin')
33
+ f('packages/x/.mcp-ios/s.json'); f('.bodify-bak-1/data.db')
31
34
  f('.frame-dev/cache'); f('.DS_Store'); f('.env.local', 'SECRET=1')
32
35
  // per-app exclusion target
33
36
  f('native/App.js')
@@ -37,6 +40,7 @@ beforeAll(() => {
37
40
  f('dist/bundle.js', 'built') // re-included via the `!dist` escape hatch
38
41
  f('src/store/index.ts') // a real source dir named like a hand-rolled exclude
39
42
  f('src/test/unit.ts')
43
+ f('src/mcp-client/keep.ts') // a real source dir the `.mcp-*` family must NOT eat
40
44
  })
41
45
  afterAll(() => {
42
46
  rmSync(FIX, { recursive: true, force: true })
@@ -97,6 +101,8 @@ describe('the real upload tarball', () => {
97
101
  '.claude/settings.json', '.cursor/rules', '.tmp/junk', 'scratchpad/note',
98
102
  '.bodify/dev.db', '.mcp-ios/x', '.mcp-android/x', '.vscode/settings.json',
99
103
  '.frame-dev/cache', '.DS_Store', '.env.local',
104
+ '.mcp-playwright/profile/p.bin', '.mcp-cursor/cache/c.bin',
105
+ 'packages/x/.mcp-ios/s.json', '.bodify-bak-1/data.db',
100
106
  ]) expect(members).not.toContain(gone)
101
107
  })
102
108
 
@@ -115,6 +121,7 @@ describe('the real upload tarball', () => {
115
121
  expect(members).toContain('config.generated.json') // untracked-but-needed
116
122
  expect(members).toContain('src/store/index.ts')
117
123
  expect(members).toContain('src/test/unit.ts')
124
+ expect(members).toContain('src/mcp-client/keep.ts') // `.mcp-*` is dot-anchored, not a substring
118
125
  })
119
126
  })
120
127