{
- void goWorkflow(workflowId);
- }}
- selectedWorkflowId={selectedWorkflowId}
- />
- );
-}
+const WorkflowsRouteScreen = React.lazy(async () => {
+ const module = await import("./WorkflowsRouteScreen");
+ return { default: module.WorkflowsRouteScreen };
+});
function WorkflowsRouteComponent() {
- return ;
+ return (
+ }
+ >
+
+
+ );
}
diff --git a/desktop/src/app/useWebviewZoomShortcuts.ts b/desktop/src/app/useWebviewZoomShortcuts.ts
index 1c4c4d71d..182927742 100644
--- a/desktop/src/app/useWebviewZoomShortcuts.ts
+++ b/desktop/src/app/useWebviewZoomShortcuts.ts
@@ -56,7 +56,7 @@ function getNextZoomFactor(action: ZoomAction, zoomFactor: number) {
export function useWebviewZoomShortcuts() {
const zoomFactorRef = React.useRef(DEFAULT_ZOOM_FACTOR);
- React.useEffect(() => {
+ React.useLayoutEffect(() => {
const webview = getCurrentWebview();
function handleKeyDown(event: KeyboardEvent) {
diff --git a/desktop/src/features/home/ui/HomeView.tsx b/desktop/src/features/home/ui/HomeView.tsx
index c038510b0..9b31f8195 100644
--- a/desktop/src/features/home/ui/HomeView.tsx
+++ b/desktop/src/features/home/ui/HomeView.tsx
@@ -6,7 +6,11 @@ import { useUsersBatchQuery } from "@/features/profile/hooks";
import type { HomeFeedResponse } from "@/shared/api/types";
import { Button } from "@/shared/ui/button";
import { Skeleton } from "@/shared/ui/skeleton";
-import { FeedSection } from "./FeedSection";
+
+const FeedSection = React.lazy(async () => {
+ const module = await import("./FeedSection");
+ return { default: module.FeedSection };
+});
type FeedFilter = "all" | "mention" | "needs_action";
@@ -117,42 +121,44 @@ export function HomeView({
))}
-
- {showMentions ? (
-
- ) : null}
- {showNeedsAction ? (
-
- ) : null}
-
+
+
+ {showMentions ? (
+
+ ) : null}
+ {showNeedsAction ? (
+
+ ) : null}
+
+
);
diff --git a/desktop/tests/e2e/integration.spec.ts b/desktop/tests/e2e/integration.spec.ts
index 2c6a88434..2e3b73df0 100644
--- a/desktop/tests/e2e/integration.spec.ts
+++ b/desktop/tests/e2e/integration.spec.ts
@@ -4,6 +4,9 @@ import { installRelayBridge, TEST_IDENTITIES } from "../helpers/bridge";
import { openSettings } from "../helpers/settings";
import { assertRelaySeeded } from "../helpers/seed";
+const isCi = Boolean(process.env.CI);
+const relaySeedHookTimeoutMs = isCi ? 90_000 : 30_000;
+
async function createStream(
page: import("@playwright/test").Page,
channelName: string,
@@ -156,6 +159,7 @@ async function getLoggedNotificationCount(
}
test.beforeAll(async () => {
+ test.setTimeout(relaySeedHookTimeoutMs);
await assertRelaySeeded();
});
diff --git a/desktop/tests/e2e/profile.spec.ts b/desktop/tests/e2e/profile.spec.ts
index 8904f0b11..67a670b42 100644
--- a/desktop/tests/e2e/profile.spec.ts
+++ b/desktop/tests/e2e/profile.spec.ts
@@ -280,12 +280,14 @@ test("opens settings with the keyboard shortcut and updates theme", async ({
page,
}) => {
await page.goto("/");
+ await expect(page.getByTestId("chat-title")).toHaveText("Home");
await page.keyboard.press(
process.platform === "darwin" ? "Meta+," : "Control+,",
);
await expect(page.getByTestId("settings-view")).toBeVisible();
+ await expect(page.getByTestId("settings-nav-appearance")).toBeVisible();
await page.getByTestId("settings-nav-appearance").click();
// Default theme is catppuccin-macchiato (dark)
@@ -347,6 +349,7 @@ test("opens settings with the keyboard shortcut and updates theme", async ({
test("supports webview zoom keyboard shortcuts", async ({ page }) => {
await page.goto("/");
+ await expect(page.getByTestId("chat-title")).toHaveText("Home");
await page.keyboard.press(
process.platform === "darwin" ? "Meta+Shift+Equal" : "Control+Shift+Equal",
diff --git a/desktop/tests/e2e/stream.spec.ts b/desktop/tests/e2e/stream.spec.ts
index f149b7a1c..97083fb9c 100644
--- a/desktop/tests/e2e/stream.spec.ts
+++ b/desktop/tests/e2e/stream.spec.ts
@@ -5,6 +5,7 @@ import { assertRelaySeeded } from "../helpers/seed";
const isCi = Boolean(process.env.CI);
const relayDeliveryTimeoutMs = isCi ? 15_000 : 5_000;
+const relaySeedHookTimeoutMs = isCi ? 90_000 : 30_000;
async function expectTimelineToContain(page: Page, text: string) {
await expect(page.getByTestId("message-timeline")).toContainText(text, {
@@ -94,6 +95,7 @@ async function scrollTimelineAwayFromBottom(page: Page, minDistance = 160) {
}
test.beforeAll(async () => {
+ test.setTimeout(relaySeedHookTimeoutMs);
await assertRelaySeeded();
});