























@@ -39,72 +39,6 @@ function expectConfirmedGatewayChange(app: ReturnType<typeof mountApp>) {
3939}
40404141describe("control UI routing", () => {
42-it("renders the dreaming view on the /dreaming route", async () => {
43-const app = mountApp("/dreaming");
44-app.dreamingStatus = {
45-enabled: true,
46-timezone: "Europe/Madrid",
47-verboseLogging: false,
48-storageMode: "inline",
49-separateReports: false,
50-shortTermCount: 2,
51-recallSignalCount: 1,
52-dailySignalCount: 1,
53-groundedSignalCount: 0,
54-totalSignalCount: 2,
55-phaseSignalCount: 0,
56-lightPhaseHitCount: 0,
57-remPhaseHitCount: 0,
58-promotedTotal: 1,
59-promotedToday: 1,
60-shortTermEntries: [],
61-signalEntries: [],
62-promotedEntries: [],
63-phases: {
64-light: { enabled: true, cron: "", managedCronPresent: false, lookbackDays: 7, limit: 20 },
65-deep: {
66-enabled: true,
67-cron: "",
68-managedCronPresent: false,
69-limit: 20,
70-minScore: 0.75,
71-minRecallCount: 3,
72-minUniqueQueries: 2,
73-recencyHalfLifeDays: 7,
74-},
75-rem: {
76-enabled: true,
77-cron: "",
78-managedCronPresent: false,
79-lookbackDays: 7,
80-limit: 20,
81-minPatternStrength: 0.6,
82-},
83-},
84-};
85-app.dreamDiaryPath = "DREAMS.md";
86-app.dreamDiaryContent = [
87-"# Dream Diary",
88-"",
89-"<!-- openclaw:dreaming:diary:start -->",
90-"",
91-"---",
92-"",
93-"*January 1, 2026*",
94-"",
95-"What Happened",
96-"1. Stable operator rule surfaced.",
97-"",
98-"<!-- openclaw:dreaming:diary:end -->",
99-].join("\n");
100-app.requestUpdate();
101-await app.updateComplete;
102-103-expect(app.tab).toBe("dreams");
104-expect(app.querySelector(".dreams__tab")).not.toBeNull();
105-expect(app.querySelector(".dreams__lobster")).not.toBeNull();
106-});
107-10842it("renders responsive navigation shell, drawer, and collapsed states", async () => {
10943const app = mountApp("/chat");
11044await app.updateComplete;
@@ -127,6 +61,19 @@ describe("control UI routing", () => {
12761expect(app.querySelector(".sidebar-brand__logo")).not.toBeNull();
12862expect(app.querySelector(".sidebar-brand__copy")).not.toBeNull();
1296364+app.hello = {
65+ok: true,
66+server: { version: "1.2.3" },
67+} as never;
68+app.requestUpdate();
69+await app.updateComplete;
70+71+const version = app.querySelector<HTMLElement>(".sidebar-version");
72+const statusDot = app.querySelector<HTMLElement>(".sidebar-version__status");
73+expect(version).not.toBeNull();
74+expect(statusDot).not.toBeNull();
75+expect(statusDot?.getAttribute("aria-label")).toContain("Online");
76+13077app.applySettings({ ...app.settings, navWidth: 360 });
13178await app.updateComplete;
13279@@ -274,24 +221,6 @@ describe("control UI routing", () => {
274221expect(shell?.classList.contains("shell--chat-focus")).toBe(true);
275222});
276223277-it("shows one online status dot next to the sidebar version", async () => {
278-const app = mountApp("/chat");
279-await app.updateComplete;
280-281-app.hello = {
282-ok: true,
283-server: { version: "1.2.3" },
284-} as never;
285-app.requestUpdate();
286-await app.updateComplete;
287-288-const version = app.querySelector<HTMLElement>(".sidebar-version");
289-const statusDot = app.querySelector<HTMLElement>(".sidebar-version__status");
290-expect(version).not.toBeNull();
291-expect(statusDot).not.toBeNull();
292-expect(statusDot?.getAttribute("aria-label")).toContain("Online");
293-});
294-295224it("auto-scrolls chat history to the latest message", async () => {
296225vi.spyOn(window, "requestAnimationFrame").mockImplementation((callback) => {
297226queueMicrotask(() => callback(performance.now()));
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。