Changelog
All notable changes to sigil-web are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.17.0] - 2026-08-25
Breaking
- This release requires Sigil 0.19 or newer. Upgrading is not a range bump; it moves your runtime. Raise
sigilto^0.19in your ownpackage.sglin the same commit that raisessigil-web, then relock.
Nothing will tell you if you skip that. A dependency's sigil: floor is not enforced during resolution, only the root package's, so a consumer left on the 0.17 or 0.18 runtime resolves a 0.17 stdlib alongside 0.19-line packages and builds green with no error and no warning.
The minor bump is the signal. A patch release would have been picked up automatically by anyone pinned ^0.16, silently; 0.17.0 makes you opt in.
Changed
- Crossed the Sigil 0.19 stdlib boundary.
sigil-stdlibabsorbed theansi,socket,hooks,version,fpandmatchmodules at 0.19.0, and this release moves every dependency range that still reached a standalone copy of one of them. The lock drops from 18 entries to 12:sigil-ansi,sigil-hooks,sigil-docs,sigil-socket,sigil-version,sigil-argsandsigil-gitleave it, andsigil-replnow resolves to thesigil-replpackage insidecodeberg:sigil/sigilrather than the archived standalone repository.
Crossing the boundary is not a single-range change. Bumping one range alone leaves the remaining standalones in the lock beside a 0.19 stdlib, which yields two providers of the same module compiling to one output path, where whichever section builds last silently wins. The ranges moved together:
| dependency | from | to | why |
|---|---|---|---|
sigil | ^0.17 | ^0.19 | sigil-nrepl 0.17.1 requires it |
sigil-nrepl | ^0.16 | ^0.17.1 | 0.17.1 is the first release consuming sigil-repl from the monorepo; 0.17.0 still reaches the archived standalone |
sigil-http | ^0.18.0 | ^0.18.4 | 0.18.4 is the first release that stopped declaring sigil-socket |
sigil-test (dev) | ^0.17 | ^0.19 | keeps the runner pair on one release line |
sigil-test-runner (dev) | ^0.17 | ^0.19 | 0.17.3 declares sigil-ansi, and pulls sigil-version and sigil-git through the workspace |
sigil-tlsmoves0.16.3->0.16.6as part of the relock. That release line bounds the TLS handshake as a whole rather than per read, makestls-writeyield instead of blocking, and fixes a descriptor leak, so HTTPS behaviour changes with it.sigil-cryptomoves0.16.3->0.16.5, andsigil-sqlite0.16.2enters the lock transitively.sigil-sqlitevendors a SQLite amalgamation that is compiled as part of a build.
[0.16.1] - 2026-07-10
Fixed
- Live-stream SSE endpoints (
live-routes) no longer return500 Internal Server Errorwithcar: expected pairwhen a client connects.stream-events-handlernow passes the broadcast handler (identity) explicitly tohttp-response/sse-broadcastinstead of relying on its default. The stream hub carries pre-formatted SSE strings, soidentityis the correct handler; passing it explicitly keepsGETon a live-stream endpoint working across everysigil-httprelease, including ones that type the broadcast handler as a required positional argument.
[0.16.0] - 2026-07-10
Added
serve-filehonors a request'sRange:header. Pass the request as an optional second argument (make-static-handlernow threads it through): a satisfiable range yields206 Partial Content, an unsatisfiable one416 Range Not Satisfiable, served viahttp-response/file. Full-file responses now advertiseAccept-Ranges: bytes, so static assets support byte-range seeking and resumable downloads. Existing single-argumentserve-filecallers are unaffected.
Changed
- Bumped the
sigil-httpdependency to^0.18.0, which provideshttp-response/file'srange:keyword.