@hominis/fireforge 0.18.0 → 0.18.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.
Files changed (35) hide show
  1. package/CHANGELOG.md +18 -2
  2. package/README.md +20 -13
  3. package/dist/src/commands/doctor.js +13 -1
  4. package/dist/src/commands/export-all.js +63 -1
  5. package/dist/src/commands/furnace/create-xpcshell.js +4 -2
  6. package/dist/src/commands/furnace/preview.js +38 -0
  7. package/dist/src/commands/furnace/remove.js +67 -1
  8. package/dist/src/commands/furnace/rename-xpcshell.d.ts +35 -0
  9. package/dist/src/commands/furnace/rename-xpcshell.js +97 -0
  10. package/dist/src/commands/furnace/rename.js +9 -0
  11. package/dist/src/commands/rebase/index.js +19 -1
  12. package/dist/src/commands/status.js +44 -5
  13. package/dist/src/commands/test.js +27 -16
  14. package/dist/src/commands/verify.js +81 -6
  15. package/dist/src/commands/watch.js +43 -7
  16. package/dist/src/core/furnace-constants.d.ts +14 -0
  17. package/dist/src/core/furnace-constants.js +16 -0
  18. package/dist/src/core/furnace-validate.js +67 -1
  19. package/dist/src/core/git-base.d.ts +27 -2
  20. package/dist/src/core/git-base.js +41 -3
  21. package/dist/src/core/git.js +53 -14
  22. package/dist/src/core/mach.d.ts +14 -2
  23. package/dist/src/core/mach.js +12 -2
  24. package/dist/src/core/marionette-preflight.d.ts +16 -0
  25. package/dist/src/core/marionette-preflight.js +19 -0
  26. package/dist/src/core/patch-lint-diff-tag.d.ts +20 -0
  27. package/dist/src/core/patch-lint-diff-tag.js +25 -0
  28. package/dist/src/core/patch-lint.js +5 -4
  29. package/dist/src/core/patch-registration-refs.d.ts +42 -0
  30. package/dist/src/core/patch-registration-refs.js +117 -0
  31. package/dist/src/core/xpcshell-appdir.d.ts +19 -5
  32. package/dist/src/core/xpcshell-appdir.js +46 -20
  33. package/dist/src/errors/git.d.ts +20 -0
  34. package/dist/src/errors/git.js +39 -0
  35. package/package.json +1 -1
@@ -96,4 +96,43 @@ export class GitIndexLockError extends GitError {
96
96
  ' 3. Re-run "fireforge download --force"');
97
97
  }
98
98
  }
99
+ /**
100
+ * Error thrown when `git add` (monolithic or chunked) exceeds the
101
+ * configured timeout while indexing the Firefox source tree.
102
+ *
103
+ * 2026-04-24 eval Finding 10: a 140.10.0esr bump on a previously-working
104
+ * 140.9.0esr workspace aborted after ~854s with a generic
105
+ * `AbortError: The operation was aborted`. The root cause was the
106
+ * `git add` timeout firing, but the surfaced error was indistinguishable
107
+ * from any other AbortError and gave the operator no actionable
108
+ * direction. This typed error carries the elapsed budget and the
109
+ * environment-variable override so the recovery path is
110
+ * self-documenting.
111
+ */
112
+ export class GitIndexingTimeoutError extends GitError {
113
+ phase;
114
+ timeoutMs;
115
+ envVar;
116
+ constructor(phase, timeoutMs, envVar, cause) {
117
+ super(`Git ${phase} indexing exceeded the ${Math.round(timeoutMs / 1000)}s timeout`, 'add -A', cause);
118
+ this.phase = phase;
119
+ this.timeoutMs = timeoutMs;
120
+ this.envVar = envVar;
121
+ }
122
+ get userMessage() {
123
+ const minutes = Math.max(1, Math.round(this.timeoutMs / 60_000));
124
+ const phaseDescription = this.phase === 'monolithic'
125
+ ? 'the monolithic `git add -A` pass'
126
+ : 'one of the chunked `git add -- <dir>` passes';
127
+ return (`Git Error: ${phaseDescription} exceeded the ${minutes}-minute timeout while indexing the Firefox source tree.\n\n` +
128
+ 'Common triggers:\n' +
129
+ ' - Slow or loaded disk (an external volume, encrypted filesystem, or heavily-used SSD under load).\n' +
130
+ ' - A Firefox source tree that has grown beyond what the default timeout accommodates.\n' +
131
+ ' - A background process (antivirus, backup, indexing) holding the working directory.\n\n' +
132
+ 'To recover:\n' +
133
+ ` 1. Extend the timeout via the ${this.envVar} environment variable (milliseconds; e.g. "export ${this.envVar}=1800000" for 30 minutes).\n` +
134
+ ' 2. Re-run "fireforge download --force" — the resume path resumes from the partial initialisation, so the repeat pass is not wasted work.\n' +
135
+ ' 3. If the problem persists, check disk throughput and free space; Firefox source indexing on a cold SSD typically completes in 1–3 minutes.');
136
+ }
137
+ }
99
138
  //# sourceMappingURL=git.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hominis/fireforge",
3
- "version": "0.18.0",
3
+ "version": "0.18.1",
4
4
  "description": "FireForge — a build tool for customizing Firefox",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",