vectorvesper 2.1.0 → 2.1.1

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/dist/hooks.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": "1.0.0",
3
3
  "engineVersion": "1.0.2",
4
- "generatedAt": "2026-08-02T16:02:47.693Z",
4
+ "generatedAt": "2026-08-09T14:27:32.779Z",
5
5
  "contractLevel": "full",
6
6
  "hooks": [
7
7
  {
@@ -95,7 +95,7 @@
95
95
  "exposeImplementation": false,
96
96
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
97
97
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
98
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
98
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
99
99
  }
100
100
  },
101
101
  {
@@ -195,7 +195,7 @@
195
195
  "exposeImplementation": false,
196
196
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
197
197
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
198
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
198
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
199
199
  }
200
200
  },
201
201
  {
@@ -342,7 +342,7 @@
342
342
  "exposeImplementation": false,
343
343
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
344
344
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
345
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
345
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
346
346
  }
347
347
  },
348
348
  {
@@ -450,7 +450,7 @@
450
450
  "exposeImplementation": false,
451
451
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
452
452
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
453
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
453
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
454
454
  }
455
455
  },
456
456
  {
@@ -559,7 +559,7 @@
559
559
  "exposeImplementation": false,
560
560
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
561
561
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
562
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
562
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
563
563
  }
564
564
  },
565
565
  {
@@ -677,7 +677,7 @@
677
677
  "exposeImplementation": false,
678
678
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
679
679
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
680
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
680
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
681
681
  }
682
682
  },
683
683
  {
@@ -804,7 +804,7 @@
804
804
  "exposeImplementation": false,
805
805
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
806
806
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
807
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
807
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
808
808
  }
809
809
  },
810
810
  {
@@ -941,7 +941,7 @@
941
941
  "exposeImplementation": false,
942
942
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
943
943
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
944
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
944
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
945
945
  }
946
946
  },
947
947
  {
@@ -1077,7 +1077,7 @@
1077
1077
  "exposeImplementation": false,
1078
1078
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
1079
1079
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
1080
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
1080
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
1081
1081
  }
1082
1082
  },
1083
1083
  {
@@ -1212,7 +1212,7 @@
1212
1212
  "exposeImplementation": false,
1213
1213
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
1214
1214
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
1215
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
1215
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
1216
1216
  }
1217
1217
  },
1218
1218
  {
@@ -1364,7 +1364,7 @@
1364
1364
  "exposeImplementation": false,
1365
1365
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
1366
1366
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
1367
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
1367
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
1368
1368
  }
1369
1369
  },
1370
1370
  {
@@ -1506,7 +1506,7 @@
1506
1506
  "exposeImplementation": false,
1507
1507
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
1508
1508
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
1509
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
1509
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
1510
1510
  }
1511
1511
  },
1512
1512
  {
@@ -1673,7 +1673,7 @@
1673
1673
  "exposeImplementation": false,
1674
1674
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
1675
1675
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
1676
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
1676
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
1677
1677
  }
1678
1678
  },
1679
1679
  {
@@ -1795,7 +1795,7 @@
1795
1795
  "exposeImplementation": false,
1796
1796
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
1797
1797
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
1798
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
1798
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
1799
1799
  }
1800
1800
  },
1801
1801
  {
@@ -1903,7 +1903,7 @@
1903
1903
  "exposeImplementation": false,
1904
1904
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
1905
1905
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
1906
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
1906
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
1907
1907
  }
1908
1908
  },
1909
1909
  {
@@ -2064,7 +2064,7 @@
2064
2064
  "exposeImplementation": false,
2065
2065
  "reason": "Reproducing this hook's implementation makes the consumer run a private requestAnimationFrame loop instead of joining the shared FrameConductor. That silently removes the coordination, scheduling and frame-budget governance the runtime exists to provide, and nothing errors when it happens. Copying is a correctness bug, not just a licensing question.",
2066
2066
  "correctUsage": "Install @vectorvesper/motion and import the hook. Never inline, reimplement, or paste an equivalent.",
2067
- "readingSource": "If you want to read the real implementation, you can: @vectorvesper/motion is MIT, ships unminified, and its sourcemaps carry the original TypeScript in sourcesContent — so node_modules/@vectorvesper/motion/dist has every line, no reconstruction needed. Read it freely to understand or debug. It changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how this bug gets shipped. Start with the `mechanism` field above — it is usually the whole answer, and it is current with the version you have."
2067
+ "readingSource": "The `mechanism` field above is the answer to almost every 'how does this actually work' question, and it is written for the version you have. Prefer it. The published package is minified and ships no sourcemaps, so node_modules is a poor place to read from — but @vectorvesper/motion is MIT, so the real source is readable in the repository if you want it. Either way it changes nothing about the output: what you write is still an import. A copy compiles, passes review and silently runs its own rAF loop outside the conductor, so 'I read the source and it looked simple' is exactly how that bug gets shipped."
2068
2068
  }
2069
2069
  }
2070
2070
  ],
package/dist/index.js CHANGED
@@ -993,7 +993,7 @@ Remove ${slug}
993
993
  import fs6 from "fs";
994
994
  import path6 from "path";
995
995
  import pc8 from "picocolors";
996
- var CLI_VERSION = true ? "2.1.0" : "0.0.0-dev";
996
+ var CLI_VERSION = true ? "2.1.1" : "0.0.0-dev";
997
997
  async function infoCommand() {
998
998
  console.log(pc8.bold(pc8.cyan("\nVector Vesper Diagnostics\n")));
999
999
  const projectInfo = detectProject();
@@ -1291,7 +1291,7 @@ async function whoamiCommand() {
1291
1291
  }
1292
1292
 
1293
1293
  // src/index.ts
1294
- var version = true ? "2.1.0" : "0.0.0-dev";
1294
+ var version = true ? "2.1.1" : "0.0.0-dev";
1295
1295
  var program = new Command();
1296
1296
  program.name("vv").description("Vector Vesper CLI \u2014 add visual components to your React project").version(version).option("--verbose", "Show detailed debug output").hook("preAction", (thisCommand) => {
1297
1297
  const opts = thisCommand.opts();
@@ -1330,7 +1330,7 @@ program.command("whoami", { hidden: true }).description("Show current authentica
1330
1330
  await whoamiCommand();
1331
1331
  });
1332
1332
  program.command("mcp [action]").description("Run as an MCP server (stdio) for AI coding agents. `vv mcp status` checks the setup.").option("--stdio", "Force server mode even from an interactive terminal").action(async (action, options) => {
1333
- const { mcpCommand } = await import("./mcp-OURIIFET.js");
1333
+ const { mcpCommand } = await import("./mcp-FCM3FZSK.js");
1334
1334
  await mcpCommand(action, options);
1335
1335
  });
1336
1336
  process.on("unhandledRejection", (error) => {
@@ -7,7 +7,7 @@ import {
7
7
 
8
8
  // src/commands/mcp.ts
9
9
  import pc from "picocolors";
10
- var VERSION = true ? "2.1.0" : "0.0.0-dev";
10
+ var VERSION = true ? "2.1.1" : "0.0.0-dev";
11
11
  var CONFIG_SNIPPET = `{
12
12
  "mcpServers": {
13
13
  "vectorvesper": {
@@ -101,7 +101,7 @@ ${pc.red("\u2717")} Unknown argument "${action}" for \`vv mcp\`.
101
101
  return;
102
102
  }
103
103
  protectStdout();
104
- const { startMcpServer } = await import("./server-ROPGTSDI.js");
104
+ const { startMcpServer } = await import("./server-WQ564YNA.js");
105
105
  try {
106
106
  await startMcpServer();
107
107
  } catch (error) {
@@ -51,6 +51,8 @@ function collect(ast, traverse) {
51
51
  usesUseGSAP: false,
52
52
  usesR3F: false,
53
53
  raf: [],
54
+ rafSelfScheduling: [],
55
+ rafUnresolved: 0,
54
56
  hasCancelRaf: false,
55
57
  addEventListener: [],
56
58
  hasRemoveEventListener: false,
@@ -113,10 +115,14 @@ function collect(ast, traverse) {
113
115
  const line = node.loc?.start.line ?? 0;
114
116
  const argPaths = typeof p.get === "function" ? p.get("arguments") : [];
115
117
  switch (name) {
116
- case "requestAnimationFrame":
118
+ case "requestAnimationFrame": {
117
119
  f.raf.push(line);
118
- scanHotCallback(resolveFunction(argPaths[0]), "a requestAnimationFrame loop", true);
120
+ const cb = resolveFunction(argPaths[0]);
121
+ if (!cb) f.rafUnresolved++;
122
+ else if (callbackSchedulesAnotherFrame(cb, traverse)) f.rafSelfScheduling.push(line);
123
+ scanHotCallback(cb, "a requestAnimationFrame loop", true);
119
124
  break;
125
+ }
120
126
  case "cancelAnimationFrame":
121
127
  f.hasCancelRaf = true;
122
128
  break;
@@ -211,6 +217,9 @@ function collect(ast, traverse) {
211
217
  },
212
218
  Identifier(p) {
213
219
  const name = p.node.name;
220
+ if (/^(reducedMotion|prefersReducedMotion|prefersReduced)$/.test(name)) {
221
+ f.hasReducedMotionGuard = true;
222
+ }
214
223
  if (!BROWSER_GLOBALS.has(name)) return;
215
224
  if (fnDepth !== 0) return;
216
225
  const parent = p.parent;
@@ -265,8 +274,27 @@ function checkClientBoundary(f, file, framework) {
265
274
  }
266
275
  return out;
267
276
  }
277
+ function callbackSchedulesAnotherFrame(cbNode, traverse) {
278
+ const isDeclaration = cbNode.type === "FunctionDeclaration";
279
+ const isExpression = cbNode.type === "ArrowFunctionExpression" || cbNode.type === "FunctionExpression";
280
+ if (!isDeclaration && !isExpression) return false;
281
+ const statement = isDeclaration ? cbNode : { type: "ExpressionStatement", expression: cbNode };
282
+ let found = false;
283
+ traverse(
284
+ { type: "File", program: { type: "Program", body: [statement], directives: [] } },
285
+ {
286
+ CallExpression(p) {
287
+ if (calleeName(p.node.callee) === "requestAnimationFrame") found = true;
288
+ },
289
+ OptionalCallExpression(p) {
290
+ if (calleeName(p.node.callee) === "requestAnimationFrame") found = true;
291
+ }
292
+ }
293
+ );
294
+ return found;
295
+ }
268
296
  function isRafLoop(f) {
269
- return f.raf.length >= 2;
297
+ return f.rafSelfScheduling.length > 0 || f.rafUnresolved >= 2;
270
298
  }
271
299
  function checkOrphanRaf(f, file) {
272
300
  if (!isRafLoop(f)) return [];
@@ -275,8 +303,10 @@ function checkOrphanRaf(f, file) {
275
303
  rule: "orphan-raf",
276
304
  severity: "warning",
277
305
  file,
278
- line: f.raf[0],
279
- message: `This file runs its own \`requestAnimationFrame\` loop${f.raf.length > 1 ? ` (\xD7${f.raf.length})` : ""}. Independent loops each schedule their own frame and cannot shed work under load \u2014 the coordination the runtime exists to provide is lost.`,
306
+ // Point at the self-scheduling call when we found one — that is the loop
307
+ // itself, not merely the first rAF in the file.
308
+ line: f.rafSelfScheduling[0] ?? f.raf[0],
309
+ message: `This file runs its own \`requestAnimationFrame\` loop${f.rafSelfScheduling.length > 1 ? ` (\xD7${f.rafSelfScheduling.length})` : ""}. Independent loops each schedule their own frame and cannot shed work under load \u2014 the coordination the runtime exists to provide is lost.`,
280
310
  fix: "Drive the animation from the shared conductor (`getConductor().subscribe(...)` in `@vectorvesper/motion`) or a hook that already joins it, so it shares one frame budget.",
281
311
  nudge: "Call `list_hooks` \u2014 a sensor or governor primitive may already cover this without a hand-written loop."
282
312
  }
@@ -400,7 +430,7 @@ async function checkMotionFiles(files, cwd) {
400
430
  }
401
431
 
402
432
  // src/mcp/server.ts
403
- var VERSION = true ? "2.1.0" : "0.0.0-dev";
433
+ var VERSION = true ? "2.1.1" : "0.0.0-dev";
404
434
  function text(body) {
405
435
  return { content: [{ type: "text", text: body }] };
406
436
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vectorvesper",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "Add WebGL, React Three Fiber & advanced motion components to your project via CLI.",
5
5
  "type": "module",
6
6
  "license": "MIT",