feat: v0.22.1 — screen nav ergonomics (#279) + public crossterm backend (#278)#280
Merged
Conversation
…nd (#278) Patch release closing two community issues. Additive only — no existing public items changed. #279 — Navigate from inside `ui.screen(...)` closures: - New `Context::push_screen`/`pop_screen`/`reset_screen` record a deferred navigation applied to the active `ScreenState` the moment the closure returns. `screen(...)` holds a `&mut ScreenState` borrow for the closure's duration, so calling `screens.push(...)` directly inside it never compiled (the only documented example was wrong). Deferring through the Context mirrors SLT's existing command-recording model and dodges the double borrow. - `docs/COMPLETE_REFERENCE.md` §6.5 updated to the working pattern. #278 — Public crossterm backend for custom render loops: - `Terminal`, `InlineTerminal`, and `event::from_crossterm` are now `pub`, and the `crossterm` crate is re-exported as `slt::crossterm`. External integrations can drive SLT's render pipeline with their own event loop (the way ratatui exposes `CrosstermBackend`) without reimplementing the backend or risking a mismatched crossterm version. Note: adding public items is semver-minor; cargo-semver-checks (a soft, non-blocking CI gate) will flag the patch bump accordingly. Closes #278, #279. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…install
`charmbracelet/vhs-action@v2` unconditionally runs its own bundled ffmpeg
installer, which is persistently broken on the GitHub runner ("Failed to
install ffmpeg", reproduced across reruns) and ignores a pre-installed ffmpeg.
Drop the action and install the toolchain directly: ffmpeg from apt, ttyd from
its upstream release binary, and vhs via `go install` (Go ships on
ubuntu-latest). The VHS Gallery job already carries `continue-on-error: true`,
so this only turns a perpetual red X green — it never gated merge.
Co-Authored-By: Claude Opus 4.8 (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.
Patch release closing two community issues. Additive only — no existing public items changed.
#279 — Navigate from inside
ui.screen(...)closuresThe documented screen-navigation example (
docs/COMPLETE_REFERENCE.md§6.5) calledscreens.push(...)inside theui.screen(...)closure, which never compiled:screen(...)holds a&mut ScreenStateborrow for the closure's whole duration (E0499).Fix: new
Context::push_screen(name)/pop_screen()/reset_screen()record a deferred navigation that is applied to the activeScreenStatethe moment the closure returns — mirroring SLT's existing command-recording model, so app code navigates from inside the closure without the double borrow. The §6.5 example is corrected.#278 — Public crossterm backend for custom render loops
Terminal,InlineTerminal, andevent::from_crosstermare nowpub, and thecrosstermcrate is re-exported asslt::crossterm. External integrations can drive SLT's render pipeline with their own event loop — the way ratatui exposesCrosstermBackend— without reimplementing the backend or risking a mismatched crossterm version.Verification (full Core + Extended gate, all green locally)
fmt --check·check --all-features·clippy --all-features -D warnings·test --all-features(full suite + 5 new tests) ·check --examples·typos·check --no-default-features· wasm target ·cargo hack --each-feature·cargo audit·cargo deny checkSemver note
Adding public items is semver-minor; this is bumped as a patch (0.22.0 → 0.22.1) per the maintainer's call.
cargo-semver-checksis a soft, non-blocking CI gate and will flag the patch accordingly — expected, not a failure.Closes #278, #279.
🤖 Generated with Claude Code