@relayfile/local-mount 0.7.12 → 0.7.14

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 (2) hide show
  1. package/dist/mount.js +12 -1
  2. package/package.json +1 -1
package/dist/mount.js CHANGED
@@ -330,7 +330,18 @@ function addExcludeEntries(anyDepthNames, rootPrefixes, entries, mode) {
330
330
  }
331
331
  function isPathMatched(relPath, matcher, isDirectory = false) {
332
332
  const normalized = normalizeRelativePosix(relPath);
333
- return matcher.ignores(normalized) || (isDirectory && matcher.ignores(`${normalized}/`));
333
+ // For directories, ask the matcher about the trailing-slash form — that's
334
+ // the canonical "is this directory ignored?" question in gitignore semantics
335
+ // and is what makes trailing-slash negations (`!dir/`) actually take effect.
336
+ // The previous implementation OR'd the bare-name check first, which short-
337
+ // circuited to "ignored" when a pattern like `/*` matched the bare name —
338
+ // even if a later `!dir/` negated the directory form. The slash form is
339
+ // safe for bare-name patterns too: `ignore` treats `node_modules` as
340
+ // matching both `node_modules` and `node_modules/`.
341
+ if (isDirectory) {
342
+ return matcher.ignores(`${normalized}/`);
343
+ }
344
+ return matcher.ignores(normalized);
334
345
  }
335
346
  function hasSameContent(left, right) {
336
347
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@relayfile/local-mount",
3
- "version": "0.7.12",
3
+ "version": "0.7.14",
4
4
  "description": "Create a symlink/copy mount of a project directory with .agentignore/.agentreadonly semantics, then launch a CLI inside it and sync writable changes back on exit",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",