@co0ontty/wand 4.55.2 → 4.55.3
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/build-info.json +3 -3
- package/dist/server-workspace-routes.js +1 -1
- package/dist/server.js +21 -2
- package/dist/storage.js +1 -1
- package/dist/structured-codex-adapter.js +3 -1
- package/dist/web-ui/content/scripts.js +69 -68
- package/dist/web-ui/content/styles.css +1 -1
- package/dist/web-ui/embedded-assets.js +2 -2
- package/package.json +1 -1
package/dist/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"commit": "
|
|
3
|
-
"builtAt": "2026-09-
|
|
4
|
-
"version": "4.55.
|
|
2
|
+
"commit": "2c47e41268f4636a7b0e0360effe84bf6d795631",
|
|
3
|
+
"builtAt": "2026-09-08T06:01:38.119Z",
|
|
4
|
+
"version": "4.55.3",
|
|
5
5
|
"channel": "stable"
|
|
6
6
|
}
|
|
@@ -228,7 +228,7 @@ export function sanitizeTaskLayout(value) {
|
|
|
228
228
|
* - 布局树由前端 allotment 构造,PUT 时经 sanitizeLayout 校验/规整后落库。
|
|
229
229
|
*/
|
|
230
230
|
export function registerWorkspaceRoutes(app, storage, sessions) {
|
|
231
|
-
//
|
|
231
|
+
// 列出所有项目(按创建时间升序,保证项目层级稳定)
|
|
232
232
|
app.get("/api/workspaces", (_req, res) => {
|
|
233
233
|
backfillSessionWorkspaces(storage);
|
|
234
234
|
const sessionCounts = storage.countSessionsByWorkspace();
|
package/dist/server.js
CHANGED
|
@@ -489,16 +489,35 @@ export async function startServer(config, configPath, options = {}) {
|
|
|
489
489
|
const storage = new WandStorage(resolveDatabasePath(configPath));
|
|
490
490
|
const runtimeConfig = new RuntimeConfigState(config);
|
|
491
491
|
const authService = new AuthService(storage);
|
|
492
|
+
// Helper to get current default models from storage (not from startup-captured config)
|
|
493
|
+
// This allows model preferences to update in real-time when user changes config via UI
|
|
494
|
+
const getCurrentDefaultModels = () => {
|
|
495
|
+
// Try to read from storage first (most up-to-date via UI settings)
|
|
496
|
+
// Falls back to config values for deployment settings
|
|
497
|
+
const prefStorage = storage;
|
|
498
|
+
if (prefStorage) {
|
|
499
|
+
return {
|
|
500
|
+
claude: prefStorage.getPreference("pref:defaultModel", config.defaultModel ?? ""),
|
|
501
|
+
codex: prefStorage.getPreference("pref:defaultCodexModel", config.defaultCodexModel ?? ""),
|
|
502
|
+
opencode: prefStorage.getPreference("pref:defaultOpenCodeModel", config.defaultOpenCodeModel ?? ""),
|
|
503
|
+
grok: prefStorage.getPreference("pref:defaultGrokModel", config.defaultGrokModel ?? ""),
|
|
504
|
+
qoder: prefStorage.getPreference("pref:defaultQoderModel", config.defaultQoderModel ?? ""),
|
|
505
|
+
pi: prefStorage.getPreference("pref:defaultPiModel", config.defaultPiModel ?? ""),
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
return getProviderDefaultModels(config);
|
|
509
|
+
};
|
|
492
510
|
const getModelRefreshOptions = () => {
|
|
493
511
|
const injected = options.modelRefreshOptions?.() ?? {};
|
|
512
|
+
const currentDefaults = getCurrentDefaultModels();
|
|
494
513
|
return {
|
|
495
514
|
storage,
|
|
496
515
|
inheritEnv: config.inheritEnv !== false,
|
|
497
516
|
apiKey: process.env.ANTHROPIC_API_KEY,
|
|
498
517
|
...injected,
|
|
499
518
|
configuredClaudeModels: [
|
|
500
|
-
|
|
501
|
-
config.commitCli === "claude" ? config.commitModel : undefined,
|
|
519
|
+
currentDefaults.claude,
|
|
520
|
+
config.commitCli === "claude" ? (storage.getPreference("pref:commitModel", config.commitModel) ?? "") : undefined,
|
|
502
521
|
...(injected.configuredClaudeModels ?? []),
|
|
503
522
|
],
|
|
504
523
|
};
|
package/dist/storage.js
CHANGED
|
@@ -814,7 +814,7 @@ export class WandStorage {
|
|
|
814
814
|
// ============ Workspaces(多标签 / 分屏项目)============
|
|
815
815
|
listWorkspaces() {
|
|
816
816
|
const rows = this.db
|
|
817
|
-
.prepare("SELECT id, name, cwd, kind, default_provider, layout_json, created_at, last_opened_at FROM workspaces ORDER BY
|
|
817
|
+
.prepare("SELECT id, name, cwd, kind, default_provider, layout_json, created_at, last_opened_at FROM workspaces ORDER BY created_at ASC, id ASC")
|
|
818
818
|
.all();
|
|
819
819
|
return rows.map(mapWorkspaceRow);
|
|
820
820
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { startStructuredCli } from "./structured-exec-pump.js";
|
|
3
3
|
import { CodexProtocolReducer } from "./structured-codex-protocol.js";
|
|
4
|
+
import { whichSync } from "./path-repair.js";
|
|
4
5
|
import { thinkingEffortToCodexReasoningEffort } from "./structured-provider-common.js";
|
|
5
6
|
/** Build the stable CLI contract for a structured Codex turn. */
|
|
6
7
|
export function buildCodexArgs(session) {
|
|
@@ -40,10 +41,11 @@ export class CodexRunner {
|
|
|
40
41
|
}
|
|
41
42
|
start(context, observer) {
|
|
42
43
|
const args = buildCodexArgs(context.session);
|
|
44
|
+
const file = whichSync("codex", { env: context.env }) ?? "codex";
|
|
43
45
|
const reducer = new CodexProtocolReducer(context.session);
|
|
44
46
|
return startStructuredCli({
|
|
45
47
|
sessionId: context.session.id,
|
|
46
|
-
file
|
|
48
|
+
file,
|
|
47
49
|
args,
|
|
48
50
|
cwd: context.session.cwd,
|
|
49
51
|
env: context.env,
|