mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-20 13:02:15 +00:00
fix(coding-agent): sync extension theme changes to session settings (#1483)
This commit is contained in:
parent
34f841f036
commit
6137de9ce7
2 changed files with 51 additions and 0 deletions
|
|
@ -1427,6 +1427,9 @@ export class InteractiveMode {
|
||||||
}
|
}
|
||||||
const result = setTheme(themeOrName, true);
|
const result = setTheme(themeOrName, true);
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
|
if (this.settingsManager.getTheme() !== themeOrName) {
|
||||||
|
this.settingsManager.setTheme(themeOrName);
|
||||||
|
}
|
||||||
this.ui.requestRender();
|
this.ui.requestRender();
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,54 @@ describe("InteractiveMode.showStatus", () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("InteractiveMode.createExtensionUIContext setTheme", () => {
|
||||||
|
test("persists theme changes to settings manager", () => {
|
||||||
|
initTheme("dark");
|
||||||
|
|
||||||
|
let currentTheme = "dark";
|
||||||
|
const settingsManager = {
|
||||||
|
getTheme: vi.fn(() => currentTheme),
|
||||||
|
setTheme: vi.fn((theme: string) => {
|
||||||
|
currentTheme = theme;
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
const fakeThis: any = {
|
||||||
|
session: { settingsManager },
|
||||||
|
settingsManager,
|
||||||
|
ui: { requestRender: vi.fn() },
|
||||||
|
};
|
||||||
|
|
||||||
|
const uiContext = (InteractiveMode as any).prototype.createExtensionUIContext.call(fakeThis);
|
||||||
|
const result = uiContext.setTheme("light");
|
||||||
|
|
||||||
|
expect(result.success).toBe(true);
|
||||||
|
expect(settingsManager.setTheme).toHaveBeenCalledWith("light");
|
||||||
|
expect(currentTheme).toBe("light");
|
||||||
|
expect(fakeThis.ui.requestRender).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("does not persist invalid theme names", () => {
|
||||||
|
initTheme("dark");
|
||||||
|
|
||||||
|
const settingsManager = {
|
||||||
|
getTheme: vi.fn(() => "dark"),
|
||||||
|
setTheme: vi.fn(),
|
||||||
|
};
|
||||||
|
const fakeThis: any = {
|
||||||
|
session: { settingsManager },
|
||||||
|
settingsManager,
|
||||||
|
ui: { requestRender: vi.fn() },
|
||||||
|
};
|
||||||
|
|
||||||
|
const uiContext = (InteractiveMode as any).prototype.createExtensionUIContext.call(fakeThis);
|
||||||
|
const result = uiContext.setTheme("__missing_theme__");
|
||||||
|
|
||||||
|
expect(result.success).toBe(false);
|
||||||
|
expect(settingsManager.setTheme).not.toHaveBeenCalled();
|
||||||
|
expect(fakeThis.ui.requestRender).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("InteractiveMode.showLoadedResources", () => {
|
describe("InteractiveMode.showLoadedResources", () => {
|
||||||
beforeAll(() => {
|
beforeAll(() => {
|
||||||
initTheme("dark");
|
initTheme("dark");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue