Skip to content

Commit 3091cfc

Browse files
karngyanclaude
andauthored
docs(site+web): the durability story where users actually read
How-it-works reframes ownership honestly (sessions own their shells, and outlive the daemon too), the FAQ answers the update question directly, and the update dialog stops implying a restart costs anything. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 397f422 commit 3091cfc

3 files changed

Lines changed: 26 additions & 7 deletions

File tree

site/src/routes/docs.faq.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,21 @@ const QUESTIONS: { q: string; verdict: string; body?: ReactNode }[] = [
119119
verdict: 'Nothing. Closing detaches the session. It does not kill it.',
120120
body: (
121121
<P>
122-
The daemon owns the shell and its scrollback, so the build keeps running. Reattach from any
123-
device and it replays what you missed.
122+
The session owns its shell and its scrollback, so the build keeps running. Reattach from
123+
any device and it replays what you missed.
124+
</P>
125+
),
126+
},
127+
{
128+
q: 'What happens to my sessions when flue updates or restarts?',
129+
verdict: 'Nothing. Sessions outlive the daemon.',
130+
body: (
131+
<P>
132+
Every session runs in its own small holder process, separate from the daemon. Update flue,
133+
restart it, even have it crash: the shells and agents keep running, and the next daemon
134+
picks them back up with their scrollback intact. A machine reboot is the one thing that
135+
ends a session, and even then flue brings it back with its history, a fresh shell, and the
136+
command that resumes the agent conversation it was in.
124137
</P>
125138
),
126139
},

site/src/routes/docs.how-it-works.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ const COMMANDS: { cmd: string; what: string }[] = [
2626
function HowItWorks() {
2727
return (
2828
<DocPage slug="how-it-works" title={DOC.title} blurb={DOC.blurb}>
29-
<Section title="One daemon owns the shells">
29+
<Section title="Sessions own their shells">
3030
<Lead>
31-
A small Go daemon holds the terminals and their scrollback. Everything that draws them is
32-
a client, including the tab you are reading this in.
31+
Every session is a small process of its own that holds the shell and its scrollback. A Go
32+
daemon coordinates them, and everything that draws them is a client, including the tab
33+
you are reading this in.
3334
</Lead>
3435
<P>
3536
The whole product rests on that one move. Normally a shell belongs to the window that
@@ -38,9 +39,13 @@ function HowItWorks() {
3839
</P>
3940
<P>
4041
Closing the tab does not kill the session. It only detaches it. The build keeps running,
41-
the agent keeps working, the SSH session stays up. Reattach and the daemon replays the
42+
the agent keeps working, the SSH session stays up. Reattach and the session replays the
4243
scrollback you missed.
4344
</P>
45+
<P>
46+
It outlives the daemon too. Updating flue, restarting it, even a crash: sessions keep
47+
running through all of it, and the next daemon picks them back up where they were.
48+
</P>
4449
</Section>
4550

4651
<Section title="Every device is another view">

web/src/components/update-notice.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,8 @@ function UpgradeDialog({
250250
<DialogTitle>{latest ? `Update to flue ${latest}` : 'Update flue'}</DialogTitle>
251251
<DialogDescription className="text-sm/6 text-pretty text-zinc-600 sm:text-xs/5 dark:text-zinc-400">
252252
Replacing the binary is something only this machine can do, so it happens in a terminal
253-
rather than here. Whichever way flue was installed, run its line and restart the daemon.{' '}
253+
rather than here. Whichever way flue was installed, run its line and restart the
254+
daemon. Your sessions keep running through the restart.{' '}
254255
{url !== undefined && (
255256
<>
256257
<TextLink href={url} target="_blank">

0 commit comments

Comments
 (0)