feat: colour the launch and teardown narration, and release v0.5.0 - #12
Merged
Conversation
Launching a session prints a dozen lines of which exactly one matters — that it is ready, and where. Everything else is progress narration that has to be read past. Dimming the narration and leaving the result bright makes the block scannable without changing what it says. Four roles, not a rainbow. Teal marks identifiers — job ids and node names — echoing the #2DBFB8 the status bar already uses for those same things, so the launch output and the session you land in agree about what an identifier is. Dim carries progress. Yellow marks keys and warnings, red marks errors, and green marks the two moments worth noticing: the session coming up and a cancel landing. The auto-detection tests standard error, not standard output, because that is where all of this is written. The two differ in exactly the case that matters: `sinteractive --detach ... > file` should still narrate to the terminal, while `2>log` must not collect escape sequences. SINTERACTIVE_COLOR takes always/never/auto and NO_COLOR is honoured whatever its value, with an explicit always winning over both for piping into something that renders escapes itself. With colour off every variable is the empty string rather than each use being guarded, so one set of format strings serves both cases and there is no second, less-tested code path. Two messages were tightened while here, since they were being rewritten anyway: "Interactive job with ID N submitted, please wait" is now "Submitted job N, waiting for it to start", and the detach block's prose "To reconnect:" / "To cancel the job:" became an aligned "Reconnect:" / "Cancel:" pair matching the one already shown at launch. Verified that a redirect collects no escapes at all, and that NO_COLOR and TERM=dumb both suppress colour on a real pty. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Storage quota and maintenance-shortened sessions in the notice line, and colour in the launch and teardown narration. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Colour for the launch and teardown narration, plus the v0.5.0 bump.
Two commits: the feature, then the release.
Colour
Launching a session prints a dozen lines of which exactly one matters — that
it is ready, and where. Dimming the narration and leaving the result bright
makes the block scannable without changing what it says.
Four roles, not a rainbow. Teal marks identifiers — job ids and node
names — echoing the
#2DBFB8the status bar already uses for those samethings, so the launch output and the session you land in agree about what an
identifier is. Dim carries progress. Yellow marks keys and warnings,
red errors, green the two moments worth noticing.
Gating
The
autotest is on standard error, not standard output, because that iswhere all of this is written. The two differ in exactly the case that matters:
sinteractive --detach ... > fileshould still narrate to your terminal,while
2>logmust not collect escapes.2>fileNO_COLORset (any value)TERM=dumbor unsetSINTERACTIVE_COLOR=neverSINTERACTIVE_COLOR=alwaysWith colour off every variable is the empty string rather than each use being
guarded, so one set of format strings serves both cases and there is no
second, less-tested path.
Two messages were tightened while being rewritten anyway:
Interactive job with ID N submitted, please wait→Submitted job N, waiting for it to start, and the detach block's proseTo reconnect:/To cancel the job:became an aligned
Reconnect:/Cancel:pair matching the one already shownat launch.
Release v0.5.0
Bumps all four places the version lives, plus the sample output in
docs/deploy.md:sinteractive:22VERSION='0.5.0'pixi.toml:4version = "0.5.0"man/sinteractive.1:1.THlineCHANGELOG.md[0.5.0] - 2026-08-26+ compare linksmake nodes-checkscrapes the version withsed -n "s/^VERSION=.\(.*\)./\1/p",so that line's quoting and column-0 position matter — confirmed it still
returns
0.5.0, and--versionagrees.Shipping in 0.5.0: the quota notice and
--check-quota(#11, closes #8),maintenance-shortened sessions, and this.
All four
validate.ymlgates pass locally.🤖 Generated with Claude Code