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
34 changes: 33 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,37 @@ and this project adheres to

## [Unreleased]

## [0.5.1] - 2026-08-26

### Changed

- Everything the session has to say about itself moved below the status bar,
onto lines of its own. The pane border was carrying three unrelated things
at once — `OVER QUOTA`, `SHORT SESSION`, and a scrolling offer to install
the Claude Code hooks — sharing one rule and taking turns for it. The line
you glance at for the job id was busy enough to stop reading.

There are now up to two lines under the session line, each present only
while it has something on it: warnings nearest (the two share a line, since
both hold for the whole session), then the Claude Code hint, furthest away
because it is an offer rather than something to act on. The pane border is
back to being a plain rule with no text. The status bar grows and shrinks
with the notices, so a session with nothing to say is exactly as tall as it
was before.

The hint no longer scrolls. It scrolled because a 44-column window was all
the border could give it without swallowing the rule; a full-width line of
its own fits the whole sentence in an 80-column terminal. That also retires
the 0.3s redraw the marquee forced on every session that showed it.

One tmux subtlety, found by rendering it rather than by reading: setting one
element of an option array at session scope replaces the whole array for
that session instead of overlaying the global one, so a session-scoped
`status-format[1]` leaves `status-format[0]` empty and the session line —
the thing the notices are meant to sit under — silently disappears. The
extra indices are set globally instead, which leaves the default index 0
alone.

## [0.5.0] - 2026-08-26

### Added
Expand Down Expand Up @@ -471,7 +502,8 @@ First tagged release.
installers (user, system-wide, and per-node fan-out), and a
`bodhi-compute` Claude Code skill.

[Unreleased]: https://github.com/rnabioco/sinteractive/compare/v0.5.0...HEAD
[Unreleased]: https://github.com/rnabioco/sinteractive/compare/v0.5.1...HEAD
[0.5.1]: https://github.com/rnabioco/sinteractive/compare/v0.5.0...v0.5.1
[0.5.0]: https://github.com/rnabioco/sinteractive/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/rnabioco/sinteractive/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/rnabioco/sinteractive/compare/v0.2.2...v0.3.0
Expand Down
29 changes: 18 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,19 +184,22 @@ sequenceDiagram
Note over C: you work here
```

## The notice line
## Notice lines

The rule between your pane and the status bar is normally empty. When there is
something you should know, it carries it — full width, so a message is
readable at a glance rather than crammed next to the clock.

Three things can appear there, ranked, because something you must act on
outranks something you should know:
When something about the session needs saying, it gets a line of its own under
the status bar rather than a corner of one that is already busy. Each line is
there only while its message is, and takes a row of pane height while it is:

```
━━━ ⚠ OVER QUOTA 30.2T / 30T · over by 204.8G │ SHORT SESSION · ends before monthly-maint at Thu 06:00 ━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
● session 245772 | compute07 Help: Ctrl+b h | Detach: Ctrl+b d
⚠ OVER QUOTA 30.2T / 30T · over by 204.8G │ SHORT SESSION · ends before monthly-maint at Thu 06:00
Claude Code: run sinteractive --install-claude to enable the skills and hooks
```

Nearest the session line are the warnings. Both stay true for the whole
session, so they share their line rather than taking turns.

**Over quota** (red). Checked every 10 minutes against the cluster's quota
daemons. The check is cached per user, not per session, so having six sessions
open does not mean six times the polling.
Expand All @@ -208,13 +211,17 @@ sinteractive --check-quota # re-checks now, updates every open session
```

That is also the command to hand an agent — it clears the warning within a
tick of the space actually being freed.
tick of the space actually being freed, and the line goes away with it.

**Short session** (yellow). Shown when the request was trimmed to end before a
maintenance window — see below.

**Claude Code hint** (yellow, scrolling). Only when nothing more important
wants the line, and only while `claude` is actually running in the session.
**Claude Code hint** (yellow). Bottom line, furthest from the session line
because it is an offer rather than something to act on. Shown only while
`claude` is running in a session where the hooks are not registered, and gone
once they are.

The rule between your pane and the status bar carries no text at all.

## Maintenance windows

Expand Down
2 changes: 1 addition & 1 deletion docs/deploy.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ script there, so a copy may be executing while you install.

```bash
make nodes-check
# compute00 sinteractive=0.5.0 assets=yes tmux 3.7c
# compute00 sinteractive=0.5.1 assets=yes tmux 3.7c
# compute01 sinteractive=unknown assets=no tmux 3.7b
# compgpu01 unreachable
```
Expand Down
8 changes: 4 additions & 4 deletions docs/scripting.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,10 +207,10 @@ state file and only falls back to the scheduler when it is stale, so a quiet
session costs nothing.

While Claude Code is running in a session whose hooks are not registered yet,
the yellow rule between the pane and the status bar carries a centred,
scrolling `sinteractive --install-claude` notice. It is gated on a live `claude` process,
so it never appears for people who don't use Claude Code, and it clears once
the hooks are registered.
a `sinteractive --install-claude` hint sits on the bottom status line, below
the session line and below any warnings. It is gated on a live `claude`
process, so it never appears for people who don't use Claude Code, and it
clears once the hooks are registered — taking its line with it.

Hooks fire at turn and tool boundaries, so work already in flight cannot be
warned about — put long work in its own allocation, which outlives the
Expand Down
33 changes: 25 additions & 8 deletions man/sinteractive.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.TH SINTERACTIVE 1 "August 2026" "sinteractive 0.5.0" "User Commands"
.TH SINTERACTIVE 1 "August 2026" "sinteractive 0.5.1" "User Commands"
.SH NAME
sinteractive \- start an interactive tmux session on a Slurm compute node
.SH SYNOPSIS
Expand Down Expand Up @@ -272,7 +272,8 @@ Sessions poll this on their own every
.B $SINTERACTIVE_QUOTA_POLL
seconds (default 600) and show a red
.B OVER QUOTA
notice above the status line while it holds. Running
notice on a second status line, below the session line, while it holds.
Running
.B \-\-check\-quota
after freeing space clears that notice within a tick rather than at the end
of the poll interval, which is what makes it useful to an agent that has just
Expand Down Expand Up @@ -439,6 +440,23 @@ terminal tab is flagged even when you are looking elsewhere.
About ten seconds before the limit, a notice is printed in every pane
and the session shuts down cleanly, so the job completes instead of
being killed at timeout.
.PP
Nothing else is crowded into that line. Anything the session has to say
about itself appears below it, on status lines of its own, each present
only while it has something to say and costing a row of pane height only
while it is there. Nearest the session line are the warnings:
.B "OVER QUOTA"
in red (see
.BR \-\-check\-quota )
and
.B "SHORT SESSION"
in yellow, the latter when the request was trimmed to end before a
maintenance reservation. Both hold for the life of the session, so when
both apply they share the line. Below them, furthest from the session
line because it is only an offer, is the Claude Code hint (see
.BR "CLAUDE CODE INTEGRATION" ).
.PP
The rule between the pane and the status bar carries no text at all.
.SH SCRIPTING AND AGENTS
Headless workflows (e.g. Claude Code) can launch and inspect sessions
without attaching:
Expand Down Expand Up @@ -541,13 +559,12 @@ is available; see
.BR \-\-install\-claude .
.PP
While Claude Code is running in a session whose integration is not yet
registered, the yellow rule between the pane and the status bar carries a
centred, scrolling
registered, a yellow
.B "sinteractive \-\-install\-claude"
notice. The rule is full width and otherwise empty, so this costs nothing
in the status line itself; the notice scrolls through a fixed 44-column
window at about three columns a second, so it reads the same at any
terminal width. It appears only while a
hint sits on the bottom status line, below any warnings \(em furthest
from the session line, because it is an offer rather than something to
act on. It is a whole line and fits an 80-column terminal, so it is
read at a glance rather than scrolled past. It appears only while a
.B claude
process is actually running, and clears once the hooks are registered, so
it never nags anyone who does not use Claude Code.
Expand Down
2 changes: 1 addition & 1 deletion pixi.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[workspace]
name = "sinteractive"
# Keep in sync with VERSION in `sinteractive` and the release tag (vX.Y.Z).
version = "0.5.0"
version = "0.5.1"
description = "Documentation site for sinteractive"
channels = ["conda-forge"]
platforms = ["linux-64", "osx-arm64"]
Expand Down
Loading
Loading