@aion0/forge 0.5.18 → 0.5.20
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/.forge/mcp.json +1 -1
- package/RELEASE_NOTES.md +5 -12
- package/lib/workspace/orchestrator.ts +7 -10
- package/next-env.d.ts +1 -1
- package/package.json +1 -1
- package/qa/.forge/agent-context.json +6 -0
package/.forge/mcp.json
CHANGED
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
# Forge v0.5.
|
|
1
|
+
# Forge v0.5.20
|
|
2
2
|
|
|
3
3
|
Released: 2026-04-01
|
|
4
4
|
|
|
5
|
-
## Changes since v0.5.
|
|
5
|
+
## Changes since v0.5.19
|
|
6
6
|
|
|
7
7
|
### Bug Fixes
|
|
8
|
-
-
|
|
9
|
-
- fix:
|
|
10
|
-
- fix: warmup back to 7 polls (21s)
|
|
11
|
-
- fix: only start session monitor on new tmux creation, not existing
|
|
12
|
-
- fix: reduce warmup from 7 polls (21s) to 4 polls (12s)
|
|
13
|
-
- fix: resetState doesn't reset warmupCount, only startMonitoring does
|
|
8
|
+
- fix: hook done always sets done, no state check
|
|
9
|
+
- fix: hook done accepts idle→done, not just running→done
|
|
14
10
|
|
|
15
|
-
### Other
|
|
16
|
-
- Revert "fix: after hook done, suppress extends until file stops changing"
|
|
17
11
|
|
|
18
|
-
|
|
19
|
-
**Full Changelog**: https://github.com/aiwatching/forge/compare/v0.5.17...v0.5.18
|
|
12
|
+
**Full Changelog**: https://github.com/aiwatching/forge/compare/v0.5.19...v0.5.20
|
|
@@ -1111,13 +1111,7 @@ export class WorkspaceOrchestrator extends EventEmitter {
|
|
|
1111
1111
|
if (!entry) return;
|
|
1112
1112
|
if (!this.daemonActive) return;
|
|
1113
1113
|
|
|
1114
|
-
|
|
1115
|
-
if (entry.state.taskStatus !== 'running') {
|
|
1116
|
-
console.log(`[hook] ${entry.config.label}: Stop hook fired but task=${entry.state.taskStatus}, ignoring`);
|
|
1117
|
-
return;
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
|
-
console.log(`[hook] ${entry.config.label}: Stop hook → done`);
|
|
1114
|
+
console.log(`[hook] ${entry.config.label}: Stop hook → done (was ${entry.state.taskStatus})`);
|
|
1121
1115
|
entry.state.taskStatus = 'done';
|
|
1122
1116
|
entry.state.completedAt = Date.now();
|
|
1123
1117
|
this.emit('event', { type: 'task_status', agentId, taskStatus: 'done' } as any);
|
|
@@ -1175,11 +1169,14 @@ export class WorkspaceOrchestrator extends EventEmitter {
|
|
|
1175
1169
|
|
|
1176
1170
|
if (config.primary) {
|
|
1177
1171
|
try {
|
|
1178
|
-
const
|
|
1179
|
-
|
|
1172
|
+
const psPath = join(homedir(), '.forge', 'data', 'project-sessions.json');
|
|
1173
|
+
if (existsSync(psPath)) {
|
|
1174
|
+
const psData = JSON.parse(readFileSync(psPath, 'utf-8'));
|
|
1175
|
+
sessionId = psData[this.projectPath];
|
|
1176
|
+
}
|
|
1180
1177
|
console.log(`[session-monitor] ${config.label}: primary fixedSession=${sessionId || 'NONE'}`);
|
|
1181
1178
|
} catch (err: any) {
|
|
1182
|
-
console.log(`[session-monitor] ${config.label}: failed to
|
|
1179
|
+
console.log(`[session-monitor] ${config.label}: failed to read fixedSession: ${err.message}`);
|
|
1183
1180
|
}
|
|
1184
1181
|
} else {
|
|
1185
1182
|
sessionId = config.boundSessionId;
|
package/next-env.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="next" />
|
|
2
2
|
/// <reference types="next/image-types/global" />
|
|
3
|
-
import "./.next/
|
|
3
|
+
import "./.next/types/routes.d.ts";
|
|
4
4
|
|
|
5
5
|
// NOTE: This file should not be edited
|
|
6
6
|
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
package/package.json
CHANGED