diff --git a/.changeset/fix-subsessions-setting-save.md b/.changeset/fix-subsessions-setting-save.md new file mode 100644 index 0000000..c1ef89a --- /dev/null +++ b/.changeset/fix-subsessions-setting-save.md @@ -0,0 +1,5 @@ +--- +"@jmfederico/pi-web": patch +--- + +Persist the Settings → Session daemon tracked subsessions toggle so it remains enabled after restart. diff --git a/src/server/configRoutes.test.ts b/src/server/configRoutes.test.ts index 34ce545..d9b7344 100644 --- a/src/server/configRoutes.test.ts +++ b/src/server/configRoutes.test.ts @@ -37,11 +37,11 @@ describe("config routes", () => { const response = await app.inject({ method: "PUT", url: "/api/config", - payload: { config: { host: "0.0.0.0", port: 9000, allowedHosts: true, spawnSessions: true, shortcuts: { "core:view.chat": "mod+1", "core:session.stop": null }, plugins: { info: { enabled: false, settings: { note: "hidden" } } } } }, + payload: { config: { host: "0.0.0.0", port: 9000, allowedHosts: true, spawnSessions: true, subsessions: true, shortcuts: { "core:view.chat": "mod+1", "core:session.stop": null }, plugins: { info: { enabled: false, settings: { note: "hidden" } } } } }, }); expect(response.statusCode).toBe(200); - expect(savedConfig).toEqual({ host: "0.0.0.0", port: 9000, allowedHosts: true, spawnSessions: true, shortcuts: { "core:view.chat": "mod+1", "core:session.stop": null }, plugins: { info: { enabled: false, settings: { note: "hidden" } } } }); + expect(savedConfig).toEqual({ host: "0.0.0.0", port: 9000, allowedHosts: true, spawnSessions: true, subsessions: true, shortcuts: { "core:view.chat": "mod+1", "core:session.stop": null }, plugins: { info: { enabled: false, settings: { note: "hidden" } } } }); expect(response.json().config).toEqual(savedConfig); }); diff --git a/src/server/configRoutes.ts b/src/server/configRoutes.ts index afc05f7..478448e 100644 --- a/src/server/configRoutes.ts +++ b/src/server/configRoutes.ts @@ -59,6 +59,7 @@ function parseConfigRequest(value: unknown): PiWebConfig { const shortcuts = value["shortcuts"]; const plugins = value["plugins"]; const spawnSessions = value["spawnSessions"]; + const subsessions = value["subsessions"]; if (host !== undefined) { if (typeof host !== "string") throw new Error("PI WEB config host must be a string"); config.host = host; @@ -74,6 +75,10 @@ function parseConfigRequest(value: unknown): PiWebConfig { if (typeof spawnSessions !== "boolean") throw new Error("PI WEB config spawnSessions must be a boolean"); config.spawnSessions = spawnSessions; } + if (subsessions !== undefined) { + if (typeof subsessions !== "boolean") throw new Error("PI WEB config subsessions must be a boolean"); + config.subsessions = subsessions; + } return config; }