Skip to content

Commit 3a6741d

Browse files
jhgaylorclaude
andauthored
changelog: cut 0.5.0 for the two exec fixes fountain needs (#21)
#19 and #20 both merged after v0.4.1 was tagged, so no released image carries either. Neither had a changelog entry, and `just release` refuses without a `## [0.5.0]` section — this adds it so the tag can be cut. Minor rather than patch: an unupgraded GET on the exec path is new behavior, and holding an unrecognised command open changes exec's lifetime for the clients that hit that branch. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 7c9f66c commit 3a6741d

1 file changed

Lines changed: 37 additions & 1 deletion

File tree

‎CHANGELOG.md‎

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,41 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased]
88

9+
## [0.5.0] - 2026-08-07
10+
11+
Both changes here are about the same client situation: fountain opens `exec`
12+
for its runtime command and then writes the prompt in as **stdin**. Against
13+
0.4.1 neither half of that worked, and a turn could not complete.
14+
15+
### Added
16+
17+
- A plain `GET` on `/v1/sprites/{id}/exec` — no `Upgrade` — is now the session
18+
list, answering `{"sessions": []}` for an idle sprite instead of falling
19+
through to the WebSocket handler and returning `426`. sprites-ex's
20+
`Session.list_by_name/2` is an unupgraded GET, and fountain calls it before
21+
deciding whether to reattach or start fresh, so the `426` aborted that
22+
decision. A missing sprite is still `404`: "no sessions" and "no sprite" are
23+
different answers. The upgrade check reads `Connection` and `Upgrade` as the
24+
lists they are, so `Connection: keep-alive, Upgrade` from a proxy still
25+
reaches exec — INTENTIUS/spritzer#18, #19.
26+
27+
### Changed
28+
29+
- An **unrecognised** command now holds the exec session open, echoing stdin
30+
back on stdout until `StreamStdinEOF` or close, instead of exiting as soon as
31+
it has produced output. A real sprite would have started a process the caller
32+
can write to, and callers do; exiting immediately meant fountain's prompt
33+
write landed on a process that was already gone. Still not execution — the
34+
same echo the interpreter already did, extended over time —
35+
INTENTIUS/spritzer#18, #20.
36+
37+
**Known verbs are unaffected.** `echo`, `cat`, `rm` and the rest exit
38+
immediately exactly as before, which is what chant's Fly lexicon activities
39+
depend on. `ExecResult.Unrecognised` is set by the interpreter's default
40+
branch so the server tells the two apart without inspecting the command
41+
string, and `TestKnownVerbStillExitsImmediately` asserts it separately so the
42+
two paths cannot drift.
43+
944
## [0.4.1] - 2026-07-14
1045

1146
### Fixed
@@ -148,7 +183,8 @@ real API assigns the id and the caller controls only a comment.
148183
- Distroless container image, GoReleaser configuration, mkdocs-material doc site,
149184
and CI.
150185

151-
[Unreleased]: https://github.com/intentius/spritzer/compare/v0.4.1...HEAD
186+
[Unreleased]: https://github.com/intentius/spritzer/compare/v0.5.0...HEAD
187+
[0.5.0]: https://github.com/intentius/spritzer/compare/v0.4.1...v0.5.0
152188
[0.4.1]: https://github.com/intentius/spritzer/compare/v0.4.0...v0.4.1
153189
[0.4.0]: https://github.com/intentius/spritzer/compare/v0.3.1...v0.4.0
154190
[0.3.1]: https://github.com/intentius/spritzer/compare/v0.3.0...v0.3.1

0 commit comments

Comments
 (0)