total-recall-brain 3.46.1 → 3.46.2

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": "total-recall-brain",
3
- "version": "3.46.1",
3
+ "version": "3.46.2",
4
4
  "description": "The Vibe Coding Brain & Autonomous Software Factory: memory, rules, secrets, and 33 visual plugins automatically managed across all your devices.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -14,8 +14,10 @@
14
14
  * background with the frontend's own build script, and keeps serving the
15
15
  * current bundle until the new one is complete. It never installs
16
16
  * dependencies: missing build tools are reported, not repaired behind the
17
- * operator's back. An npm tarball gives every file the same mtime, so an
18
- * installed package is never stale and never builds.
17
+ * operator's back. An installed package (a root inside node_modules) serves
18
+ * the bundle its release built, which the publish gate checked, and is never
19
+ * stale and never builds: npm does not keep the tarball's file times on every
20
+ * install, so comparing times there reports a stale bundle that is not.
19
21
  */
20
22
  import { spawn } from 'node:child_process';
21
23
  import fs from 'node:fs';
@@ -60,9 +62,10 @@ export async function newestUnder(target) {
60
62
  * Returns { ok, reason, bundle, source }; never throws, never prints, so the
61
63
  * decision can be tested apart from how it is reported.
62
64
  */
63
- export async function checkDistFreshness({ distDir, sourcePaths }) {
65
+ export async function checkDistFreshness({ distDir, sourcePaths, packaged = false }) {
64
66
  const bundle = await newestUnder(distDir);
65
67
  if (!bundle) return { ok: false, reason: 'missing-bundle', bundle: null, source: null };
68
+ if (packaged) return { ok: true, reason: 'packaged', bundle, source: null };
66
69
 
67
70
  let source = null;
68
71
  for (const candidate of sourcePaths) {
@@ -76,6 +79,11 @@ export async function checkDistFreshness({ distDir, sourcePaths }) {
76
79
  return { ok: true, reason: 'current', bundle, source };
77
80
  }
78
81
 
82
+ /** An npm-installed package: its root sits inside a node_modules directory. */
83
+ export function isInstalledPackage(root) {
84
+ return path.resolve(root).split(path.sep).includes('node_modules');
85
+ }
86
+
79
87
  /** Every input whose change changes the built dashboard. */
80
88
  export function dashboardTargets(root) {
81
89
  const frontend = path.join(root, 'frontend');
@@ -85,6 +93,7 @@ export function dashboardTargets(root) {
85
93
  } catch { /* no frontend directory: nothing to compare */ }
86
94
  return {
87
95
  distDir: path.join(frontend, 'dist'),
96
+ packaged: isInstalledPackage(root),
88
97
  sourcePaths: [
89
98
  path.join(frontend, 'src'),
90
99
  path.join(frontend, 'public'),