docs(ui): say that persistence stops at logout #23

Merged
dusan merged 1 commit from t3code/session-persistence-clarity into main 2026-08-20 03:49:01 +00:00
Owner

Closes #21.

The persistence switch promised more than it delivered. A session marked
persistent survives its window closing, but the agent lives in the login
session scope, so logging out takes every session with it. That limit was
written in docs/spec/session-agent.md and the README — nowhere the user
can see while using the program.

What changed

  • ui/session_editor.blp — the Keep Running Without A Window row gains a
    subtitle: "Survives closing its window, but not logging out".
  • ui/preferences.blp — the Session Agent group description now says
    logging out stops the agent, and a new Surviving Logout row explains
    lingering with a button that copies loginctl enable-linger.
  • crates/terminalko/src/preferences.rs — the copy handler, and a "Copied"
    toast on the dialog itself.
  • docs/spec/preferences.md, docs/spec/session-agent.md — kept consistent
    with the new strings; the Known limit paragraph now names both UI strings
    so they change together with #18.
  • docs/spec/README.md#21 drops off the open-work table.

Decisions

  • Copied, never run. Lingering is a polkit-gated system change; a
    terminal that made it silently would be doing something nobody asked for.
  • The plain wording, not "unless you enable lingering". #18 (socket
    activation) is still open, and by its own account lingering today only half
    works because nothing restarts the agent after the session scope is torn
    down. When #18 lands, the two strings and the spec paragraph change together.
  • No new setting, no schema change, no behaviour change.

Checks

cargo build, cargo fmt --check, cargo clippy --all-targets -- -D warnings
clean; cargo test passes (203 tests). The app runs and the preferences dialog
constructs the new row with no GTK warnings.

Closes #21. The persistence switch promised more than it delivered. A session marked persistent survives its window closing, but the agent lives in the login session scope, so logging out takes every session with it. That limit was written in `docs/spec/session-agent.md` and the README — nowhere the user can see while using the program. ## What changed * `ui/session_editor.blp` — the *Keep Running Without A Window* row gains a subtitle: "Survives closing its window, but not logging out". * `ui/preferences.blp` — the *Session Agent* group description now says logging out stops the agent, and a new *Surviving Logout* row explains lingering with a button that copies `loginctl enable-linger`. * `crates/terminalko/src/preferences.rs` — the copy handler, and a "Copied" toast on the dialog itself. * `docs/spec/preferences.md`, `docs/spec/session-agent.md` — kept consistent with the new strings; the *Known limit* paragraph now names both UI strings so they change together with #18. * `docs/spec/README.md` — #21 drops off the open-work table. ## Decisions * **Copied, never run.** Lingering is a polkit-gated system change; a terminal that made it silently would be doing something nobody asked for. * **The plain wording, not "unless you enable lingering".** #18 (socket activation) is still open, and by its own account lingering today only half works because nothing restarts the agent after the session scope is torn down. When #18 lands, the two strings and the spec paragraph change together. * No new setting, no schema change, no behaviour change. ## Checks `cargo build`, `cargo fmt --check`, `cargo clippy --all-targets -- -D warnings` clean; `cargo test` passes (203 tests). The app runs and the preferences dialog constructs the new row with no GTK warnings.
docs(ui): say that persistence stops at logout
Some checks failed
CI / check (push) Has been cancelled
CI / package (push) Has been cancelled
CI / check (pull_request) Has been cancelled
CI / package (pull_request) Has been cancelled
a2aee1b0c5
The persistence switch promised more than it delivered. A session marked
persistent survives its window closing, but the agent lives in the login
session scope, so logging out takes every session with it. That was only
ever written in the specs and the README.

The session editor's row now says what it survives, and the Session Agent
group in preferences repeats it with `loginctl enable-linger` to copy.
Copied, not run: lingering is a polkit-gated system change, and a terminal
that made it silently would be doing something nobody asked for.

Closes #21.
dusan merged commit fce4b101a7 into main 2026-08-20 03:49:01 +00:00
dusan deleted branch t3code/session-persistence-clarity 2026-08-20 03:49:01 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
dusan/terminalko!23
No description provided.