openfox 2.0.99 → 2.0.101
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/CHANGELOG.md +32 -0
- package/dist/CHANGELOG.md +32 -0
- package/dist/{chunk-SXG6JIH5.js → chunk-7GBFQ2PE.js} +42 -7
- package/dist/{chunk-T67AK4BF.js → chunk-MBYXZ5V5.js} +3 -3
- package/dist/chunk-UCNMVJXD.js +7 -0
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/command-defaults/add-criteria.command.md +0 -1
- package/dist/languages.json +2 -1
- package/dist/package.json +1 -1
- package/dist/{serve-2XOSUJ6N.js → serve-KM2RVX2U.js} +3 -3
- package/dist/server/index.js +2 -2
- package/dist/{update-YMMOOFJA.js → update-GHS75L7T.js} +2 -2
- package/dist/web/assets/{index-ChM1ad7e.js → index-CCBacuE6.js} +46 -46
- package/dist/web/index.html +1 -1
- package/dist/web/sw.js +1 -1
- package/dist/workflow-defaults/default.workflow.json +1 -1
- package/package.json +1 -1
- package/dist/chunk-GNVEAFVU.js +0 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.101 - 2026-07-28
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **Editable step names in workflow editor** — each workflow step now has a customizable Name field instead of being locked to the agent or sub-agent name.
|
|
8
|
+
|
|
9
|
+
### Enhancements
|
|
10
|
+
|
|
11
|
+
- **First workflow step renamed to "Implement"** — the build step now clearly communicates its purpose instead of the generic "Builder" label.
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
- **Add-criteria command no longer forces planner mode** — launching the command keeps your current agent instead of switching to planner.
|
|
16
|
+
- **Workflow button shows regardless of current agent** — the Build & Verify button appears whenever pending criteria exist, not only in planner mode.
|
|
17
|
+
- **Workflow button only shows for pending criteria** — completed, passed, or failed criteria no longer keep the button visible.
|
|
18
|
+
|
|
19
|
+
## 2.0.100 - 2026-07-28
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
- **LSP servers notified on file save** — OpenFox now sends `textDocument/didSave` to language servers after write operations, enabling save-triggered linting and compilation.
|
|
24
|
+
|
|
25
|
+
### Enhancements
|
|
26
|
+
|
|
27
|
+
- **Rust users see setup hint for rust-analyzer** — if `rust-analyzer` is not installed, OpenFox now suggests `rustup component add rust-analyzer`.
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
- **LSP diagnostics no longer miss late-arriving waves** — rust-analyzer sends clear → own analysis → rustc flycheck in rapid succession. A 400ms debounce now captures all waves instead of only the first.
|
|
32
|
+
- **Pyright LSP diagnostics work correctly** — removed `rootPath` and `workspaceFolders` from initialization parameters, which caused pyright to refuse diagnostics or switch to pull mode.
|
|
33
|
+
- **Stale LSP diagnostics cleared on file reopen** — reopening a file now fetches fresh diagnostics instead of returning cached stale ones.
|
|
34
|
+
|
|
3
35
|
## 2.0.99 - 2026-07-27
|
|
4
36
|
|
|
5
37
|
### Bug Fixes
|
package/dist/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.101 - 2026-07-28
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **Editable step names in workflow editor** — each workflow step now has a customizable Name field instead of being locked to the agent or sub-agent name.
|
|
8
|
+
|
|
9
|
+
### Enhancements
|
|
10
|
+
|
|
11
|
+
- **First workflow step renamed to "Implement"** — the build step now clearly communicates its purpose instead of the generic "Builder" label.
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
- **Add-criteria command no longer forces planner mode** — launching the command keeps your current agent instead of switching to planner.
|
|
16
|
+
- **Workflow button shows regardless of current agent** — the Build & Verify button appears whenever pending criteria exist, not only in planner mode.
|
|
17
|
+
- **Workflow button only shows for pending criteria** — completed, passed, or failed criteria no longer keep the button visible.
|
|
18
|
+
|
|
19
|
+
## 2.0.100 - 2026-07-28
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
- **LSP servers notified on file save** — OpenFox now sends `textDocument/didSave` to language servers after write operations, enabling save-triggered linting and compilation.
|
|
24
|
+
|
|
25
|
+
### Enhancements
|
|
26
|
+
|
|
27
|
+
- **Rust users see setup hint for rust-analyzer** — if `rust-analyzer` is not installed, OpenFox now suggests `rustup component add rust-analyzer`.
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
- **LSP diagnostics no longer miss late-arriving waves** — rust-analyzer sends clear → own analysis → rustc flycheck in rapid succession. A 400ms debounce now captures all waves instead of only the first.
|
|
32
|
+
- **Pyright LSP diagnostics work correctly** — removed `rootPath` and `workspaceFolders` from initialization parameters, which caused pyright to refuse diagnostics or switch to pull mode.
|
|
33
|
+
- **Stale LSP diagnostics cleared on file reopen** — reopening a file now fetches fresh diagnostics instead of returning cached stale ones.
|
|
34
|
+
|
|
3
35
|
## 2.0.99 - 2026-07-27
|
|
4
36
|
|
|
5
37
|
### Bug Fixes
|
|
@@ -114,7 +114,7 @@ import {
|
|
|
114
114
|
} from "./chunk-NLN5LPQ4.js";
|
|
115
115
|
import {
|
|
116
116
|
VERSION
|
|
117
|
-
} from "./chunk-
|
|
117
|
+
} from "./chunk-UCNMVJXD.js";
|
|
118
118
|
import {
|
|
119
119
|
clearWorkflowExecution,
|
|
120
120
|
createSession,
|
|
@@ -1708,6 +1708,7 @@ var LSP = {
|
|
|
1708
1708
|
didOpen: "textDocument/didOpen",
|
|
1709
1709
|
didChange: "textDocument/didChange",
|
|
1710
1710
|
didClose: "textDocument/didClose",
|
|
1711
|
+
didSave: "textDocument/didSave",
|
|
1711
1712
|
publishDiagnostics: "textDocument/publishDiagnostics",
|
|
1712
1713
|
definition: "textDocument/definition",
|
|
1713
1714
|
references: "textDocument/references",
|
|
@@ -1780,6 +1781,12 @@ var LspServer = class {
|
|
|
1780
1781
|
diagnosticsCallbacks = /* @__PURE__ */ new Set();
|
|
1781
1782
|
// Pending diagnostic waiters
|
|
1782
1783
|
pendingDiagnostics = /* @__PURE__ */ new Map();
|
|
1784
|
+
// Debounce timers for diagnostic resolution.
|
|
1785
|
+
// Servers may send multiple publishDiagnostics in quick succession
|
|
1786
|
+
// (e.g., rust-analyzer sends an empty clear, then its own analysis,
|
|
1787
|
+
// then rustc flycheck results). We wait for a quiet period before
|
|
1788
|
+
// resolving the waiter so all waves are captured.
|
|
1789
|
+
pendingDiagnosticDebounce = /* @__PURE__ */ new Map();
|
|
1783
1790
|
commandPath;
|
|
1784
1791
|
constructor(config3, workdir, commandPath) {
|
|
1785
1792
|
this.config = config3;
|
|
@@ -1847,7 +1854,6 @@ var LspServer = class {
|
|
|
1847
1854
|
const initParams = {
|
|
1848
1855
|
processId: process.pid,
|
|
1849
1856
|
rootUri: `file://${this.workdir}`,
|
|
1850
|
-
rootPath: this.workdir,
|
|
1851
1857
|
capabilities: {
|
|
1852
1858
|
textDocument: {
|
|
1853
1859
|
publishDiagnostics: {
|
|
@@ -1863,7 +1869,6 @@ var LspServer = class {
|
|
|
1863
1869
|
workspaceFolders: true
|
|
1864
1870
|
}
|
|
1865
1871
|
},
|
|
1866
|
-
workspaceFolders: [{ uri: `file://${this.workdir}`, name: "workspace" }],
|
|
1867
1872
|
initializationOptions: this.config.initOptions
|
|
1868
1873
|
};
|
|
1869
1874
|
const result = await this.connection.sendRequest(LSP.initialize, initParams);
|
|
@@ -1907,6 +1912,10 @@ var LspServer = class {
|
|
|
1907
1912
|
this.process.kill("SIGTERM");
|
|
1908
1913
|
this.process = null;
|
|
1909
1914
|
}
|
|
1915
|
+
for (const [, timer] of this.pendingDiagnosticDebounce) {
|
|
1916
|
+
clearTimeout(timer);
|
|
1917
|
+
}
|
|
1918
|
+
this.pendingDiagnosticDebounce.clear();
|
|
1910
1919
|
this.connection?.dispose();
|
|
1911
1920
|
this.connection = null;
|
|
1912
1921
|
this.state = "stopped";
|
|
@@ -1924,6 +1933,10 @@ var LspServer = class {
|
|
|
1924
1933
|
waiter.resolve([]);
|
|
1925
1934
|
}
|
|
1926
1935
|
this.pendingDiagnostics.clear();
|
|
1936
|
+
for (const [, timer] of this.pendingDiagnosticDebounce) {
|
|
1937
|
+
clearTimeout(timer);
|
|
1938
|
+
}
|
|
1939
|
+
this.pendingDiagnosticDebounce.clear();
|
|
1927
1940
|
}
|
|
1928
1941
|
// ============================================================================
|
|
1929
1942
|
// Document Synchronization
|
|
@@ -1940,6 +1953,7 @@ var LspServer = class {
|
|
|
1940
1953
|
const uri = `file://${path}`;
|
|
1941
1954
|
const languageId = this.getLanguageIdForFile(path);
|
|
1942
1955
|
this.openDocuments.set(path, { version: 1, content });
|
|
1956
|
+
this.diagnostics.delete(path);
|
|
1943
1957
|
await this.connection.sendNotification(LSP.didOpen, {
|
|
1944
1958
|
textDocument: {
|
|
1945
1959
|
uri,
|
|
@@ -1997,6 +2011,19 @@ var LspServer = class {
|
|
|
1997
2011
|
textDocument: { uri }
|
|
1998
2012
|
});
|
|
1999
2013
|
}
|
|
2014
|
+
async didSave(path, content) {
|
|
2015
|
+
if (this.state !== "running" || !this.connection) {
|
|
2016
|
+
return;
|
|
2017
|
+
}
|
|
2018
|
+
const uri = `file://${path}`;
|
|
2019
|
+
const params = {
|
|
2020
|
+
textDocument: { uri }
|
|
2021
|
+
};
|
|
2022
|
+
if (content !== void 0) {
|
|
2023
|
+
params["text"] = content;
|
|
2024
|
+
}
|
|
2025
|
+
await this.connection.sendNotification(LSP.didSave, params);
|
|
2026
|
+
}
|
|
2000
2027
|
// ============================================================================
|
|
2001
2028
|
// Diagnostics
|
|
2002
2029
|
// ============================================================================
|
|
@@ -2017,12 +2044,20 @@ var LspServer = class {
|
|
|
2017
2044
|
for (const callback of this.diagnosticsCallbacks) {
|
|
2018
2045
|
callback(path, diagnostics);
|
|
2019
2046
|
}
|
|
2047
|
+
const existingDebounce = this.pendingDiagnosticDebounce.get(path);
|
|
2048
|
+
if (existingDebounce) {
|
|
2049
|
+
clearTimeout(existingDebounce);
|
|
2050
|
+
this.pendingDiagnosticDebounce.delete(path);
|
|
2051
|
+
}
|
|
2020
2052
|
const waiter = this.pendingDiagnostics.get(path);
|
|
2021
|
-
if (waiter)
|
|
2053
|
+
if (!waiter) return;
|
|
2054
|
+
const debounce = setTimeout(() => {
|
|
2055
|
+
this.pendingDiagnosticDebounce.delete(path);
|
|
2022
2056
|
clearTimeout(waiter.timeout);
|
|
2023
2057
|
this.pendingDiagnostics.delete(path);
|
|
2024
|
-
waiter.resolve(diagnostics);
|
|
2025
|
-
}
|
|
2058
|
+
waiter.resolve(this.diagnostics.get(path) ?? []);
|
|
2059
|
+
}, 400);
|
|
2060
|
+
this.pendingDiagnosticDebounce.set(path, debounce);
|
|
2026
2061
|
}
|
|
2027
2062
|
/**
|
|
2028
2063
|
* Get diagnostics for a file, waiting for LSP to respond if needed
|
|
@@ -7912,4 +7947,4 @@ export {
|
|
|
7912
7947
|
createServerHandle,
|
|
7913
7948
|
createServer
|
|
7914
7949
|
};
|
|
7915
|
-
//# sourceMappingURL=chunk-
|
|
7950
|
+
//# sourceMappingURL=chunk-7GBFQ2PE.js.map
|
|
@@ -200,7 +200,7 @@ async function runCli(options) {
|
|
|
200
200
|
break;
|
|
201
201
|
}
|
|
202
202
|
case "update": {
|
|
203
|
-
const { runUpdate } = await import("./update-
|
|
203
|
+
const { runUpdate } = await import("./update-GHS75L7T.js");
|
|
204
204
|
const code = await runUpdate();
|
|
205
205
|
if (code !== 0) {
|
|
206
206
|
process.exit(code);
|
|
@@ -213,7 +213,7 @@ async function runCli(options) {
|
|
|
213
213
|
if (!configExists) {
|
|
214
214
|
await runNetworkSetup(mode);
|
|
215
215
|
}
|
|
216
|
-
const { runServe } = await import("./serve-
|
|
216
|
+
const { runServe } = await import("./serve-KM2RVX2U.js");
|
|
217
217
|
const serveOptions = { mode };
|
|
218
218
|
if (values.port) serveOptions.port = parseInt(values.port);
|
|
219
219
|
if (values["no-browser"] === true) serveOptions.openBrowser = false;
|
|
@@ -225,4 +225,4 @@ async function runCli(options) {
|
|
|
225
225
|
export {
|
|
226
226
|
runCli
|
|
227
227
|
};
|
|
228
|
-
//# sourceMappingURL=chunk-
|
|
228
|
+
//# sourceMappingURL=chunk-MBYXZ5V5.js.map
|
package/dist/cli/dev.js
CHANGED
package/dist/cli/index.js
CHANGED
package/dist/languages.json
CHANGED
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7GBFQ2PE.js";
|
|
4
4
|
import "./chunk-C6QW2IDH.js";
|
|
5
5
|
import "./chunk-62QCBNPE.js";
|
|
6
6
|
import "./chunk-E2CSSHSI.js";
|
|
@@ -27,7 +27,7 @@ import "./chunk-KNYPBXPW.js";
|
|
|
27
27
|
import "./chunk-NLN5LPQ4.js";
|
|
28
28
|
import {
|
|
29
29
|
VERSION
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-UCNMVJXD.js";
|
|
31
31
|
import "./chunk-O2PLNJIU.js";
|
|
32
32
|
import "./chunk-ZIMGU5ZH.js";
|
|
33
33
|
import {
|
|
@@ -219,4 +219,4 @@ async function runServe(options) {
|
|
|
219
219
|
export {
|
|
220
220
|
runServe
|
|
221
221
|
};
|
|
222
|
-
//# sourceMappingURL=serve-
|
|
222
|
+
//# sourceMappingURL=serve-KM2RVX2U.js.map
|
package/dist/server/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer,
|
|
3
3
|
createServerHandle
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-7GBFQ2PE.js";
|
|
5
5
|
import "../chunk-C6QW2IDH.js";
|
|
6
6
|
import "../chunk-62QCBNPE.js";
|
|
7
7
|
import "../chunk-E2CSSHSI.js";
|
|
@@ -26,7 +26,7 @@ import "../chunk-AY37NB76.js";
|
|
|
26
26
|
import "../chunk-MRWR3SIT.js";
|
|
27
27
|
import "../chunk-KNYPBXPW.js";
|
|
28
28
|
import "../chunk-NLN5LPQ4.js";
|
|
29
|
-
import "../chunk-
|
|
29
|
+
import "../chunk-UCNMVJXD.js";
|
|
30
30
|
import "../chunk-O2PLNJIU.js";
|
|
31
31
|
import "../chunk-ZIMGU5ZH.js";
|
|
32
32
|
import "../chunk-3LRYZ7R3.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VERSION
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UCNMVJXD.js";
|
|
4
4
|
import "./chunk-5WRI5ZAA.js";
|
|
5
5
|
|
|
6
6
|
// src/cli/update.ts
|
|
@@ -46,4 +46,4 @@ async function runUpdate(options = {}) {
|
|
|
46
46
|
export {
|
|
47
47
|
runUpdate
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=update-
|
|
49
|
+
//# sourceMappingURL=update-GHS75L7T.js.map
|