Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions docs/docs/durable-sessions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ Keep your remote SSH shell sessions alive through network changes, computer slee

## Overview

:::info Remote Connections Only
Durable sessions are designed for **remote SSH connections only**. Local terminals and WSL connections use standard sessions, as they're not affected by network interruptions and remain active as long as Wave is running.
:::

Durable sessions protect your terminal state when working with remote SSH connections, similar to tmux or screen but built directly into Wave. Unlike standard SSH sessions that terminate when the connection drops, durable sessions maintain your:

- **Shell state** - Current directory, environment variables, and shell history
Expand All @@ -24,13 +20,17 @@ Durable sessions protect your terminal state when working with remote SSH connec

Durable sessions automatically reconnect when your connection is restored, picking up right where you left off.

:::info Remote Connections Only
Durable sessions are designed for **remote SSH connections only**. Local terminals and WSL connections use standard sessions, as they're not affected by network interruptions and remain active as long as Wave is running.
:::

## How It Works

When you start a durable session, Wave launches a persistent job manager on the remote server. This manager:
When you start a durable session, Wave launches a lightweight job manager on the remote server. Similar to how tmux and screen work, this manager:

1. Keeps your shell process running independently of the Wave connection
2. Buffers terminal output while disconnected
3. Automatically reattaches when you reconnect
3. Enables Wave to seamlessly reattach when you reconnect
4. Survives Wave restarts and network interruptions

The session continues running on the remote server even if you close Wave, put your computer to sleep, or switch networks.
Expand Down
4 changes: 2 additions & 2 deletions frontend/app/onboarding/onboarding-common.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2025, Command Line Inc.
// Copyright 2026, Command Line Inc.
// SPDX-License-Identifier: Apache-2.0

export const CurrentOnboardingVersion = "v0.13.1";
export const CurrentOnboardingVersion = "v0.14.0";
9 changes: 8 additions & 1 deletion frontend/app/onboarding/onboarding-upgrade-patch.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2025, Command Line Inc.
// Copyright 2026, Command Line Inc.
// SPDX-License-Identifier: Apache-2.0

import Logo from "@/app/asset/logo.svg";
Expand All @@ -20,6 +20,7 @@ import { UpgradeOnboardingModal_v0_12_2_Content } from "./onboarding-upgrade-v01
import { UpgradeOnboardingModal_v0_12_3_Content } from "./onboarding-upgrade-v0123";
import { UpgradeOnboardingModal_v0_13_0_Content } from "./onboarding-upgrade-v0130";
import { UpgradeOnboardingModal_v0_13_1_Content } from "./onboarding-upgrade-v0131";
import { UpgradeOnboardingModal_v0_14_0_Content } from "./onboarding-upgrade-v0140";

interface VersionConfig {
version: string;
Expand Down Expand Up @@ -56,6 +57,12 @@ const versions: VersionConfig[] = [
version: "v0.13.1",
content: () => <UpgradeOnboardingModal_v0_13_1_Content />,
prevText: "Prev (v0.13.0)",
nextText: "Next (v0.14.0)",
},
{
version: "v0.14.0",
content: () => <UpgradeOnboardingModal_v0_14_0_Content />,
prevText: "Prev (v0.13.1)",
},
];

Expand Down
115 changes: 115 additions & 0 deletions frontend/app/onboarding/onboarding-upgrade-v0140.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
// Copyright 2026, Command Line Inc.
// SPDX-License-Identifier: Apache-2.0

import { getApi } from "@/app/store/global";

const UpgradeOnboardingModal_v0_14_0_Content = () => {
return (
<div className="flex flex-col items-start w-full mb-2 unselectable">
<div className="text-secondary leading-relaxed mb-4">
<p className="mb-0">
Wave v0.14 introduces Durable Sessions. Enable them to keep your remote sessions alive through
network interruptions, computer sleep, and restarts — they'll automatically reconnect when your
connection is restored.
</p>
</div>

<div className="flex w-full items-start gap-4 mb-4">
<div className="flex-shrink-0">
<i className="text-[24px] text-sky-500 fa-sharp fa-solid fa-shield"></i>
</div>
<div className="flex flex-col items-start gap-2 flex-1">
<div className="text-foreground text-base font-semibold leading-[18px]">
Durable SSH Sessions{" "}
<button
onClick={() => getApi().openExternal("https://docs.waveterm.dev/durable-sessions")}
className="text-accent text-sm font-normal cursor-pointer hover:underline"
>
[see docs]
</button>
</div>
<div className="text-secondary leading-5">
<ul className="list-disc list-outside space-y-1 pl-5">
<li>
<strong>Session Protection</strong> - Programs and shell state survive disconnects
</li>
<li>
<strong>Visual Status Indicators</strong> - Shield icons show status
</li>
<li>
<strong>Flexible Configuration</strong> - Enable globally, per-connection, or
per-terminal
</li>
</ul>
</div>
</div>
</div>

<div className="flex w-full items-start gap-4 mb-4">
<div className="flex-shrink-0">
<i className="text-[24px] text-accent fa-solid fa-network-wired"></i>
</div>
<div className="flex flex-col items-start gap-2 flex-1">
<div className="text-foreground text-base font-semibold leading-[18px]">
Enhanced Connection Monitoring
</div>
<div className="text-secondary leading-5">
<ul className="list-disc list-outside space-y-1 pl-5">
<li>
<strong>Connection Keepalives</strong> - Active monitoring with keepalive probes
</li>
<li>
<strong>Stalled Connection Detection</strong> - Visual feedback for network issues
</li>
</ul>
</div>
</div>
</div>

<div className="flex w-full items-start gap-4 mb-4">
<div className="flex-shrink-0">
<i className="text-[24px] text-accent fa-solid fa-sparkles"></i>
</div>
<div className="flex flex-col items-start gap-2 flex-1">
<div className="text-foreground text-base font-semibold leading-[18px]">Wave AI Updates</div>
<div className="text-secondary leading-5">
<ul className="list-disc list-outside space-y-1 pl-5">
<li>
<strong>Image Support</strong> - Vision capabilities for BYOK providers
</li>
<li>
<strong>Stop Generation</strong> - Ability to stop AI responses mid-generation
</li>
<li>
<strong>Improved Auto-scrolling</strong>
</li>
</ul>
</div>
</div>
</div>

<div className="flex w-full items-start gap-4">
<div className="flex-shrink-0">
<i className="text-[24px] text-accent fa-solid fa-terminal"></i>
</div>
<div className="flex flex-col items-start gap-2 flex-1">
<div className="text-foreground text-base font-semibold leading-[18px]">Terminal Improvements</div>
<div className="text-secondary leading-5">
<ul className="list-disc list-outside space-y-1 pl-5">
<li>
<strong>Enhanced Context Menu</strong> - Quick access to splits, themes, and more
</li>
<li>
<strong>OSC 52 Clipboard Support</strong> - CLI apps can copy to system clipboard
</li>
</ul>
</div>
</div>
</div>
</div>
);
};

UpgradeOnboardingModal_v0_14_0_Content.displayName = "UpgradeOnboardingModal_v0_14_0_Content";

export { UpgradeOnboardingModal_v0_14_0_Content };
Loading