feat: v0.19.3 β 11 patch-safe issues + UI library patterns#202
Merged
Conversation
- New slt-migration skill (398 lines): ratatui/cursive/textual β SLT
mapping with grep-verified API references
- 17 docs files audited and synced to v0.19.2:
- BLOCKING fix: AppCtx 'static lifetime violation in AI_GUIDE/COOKBOOK
examples (now uses owned Theme via *ui.theme() Copy pattern, mirroring
examples/demo_website.rs)
- HIGH: 16 leaked GitHub issue refs scrubbed from prose (sed pattern,
only versions retained)
- MEDIUM: COMPLETE_REFERENCE version banner 0.18.1β0.19.2, WIDGETS
separator path corrected, EXAMPLES demo_cjk row + audit prose cleanup,
llms.txt try_get signature corrected + demo_website/demo_cjk added
- SLT skill (.claude/skills/slt/) updated for v0.19.x: component DX
(provide/use_context/use_state_named/with_if), RichLogState bounded
default, ThemeBuilder const fn, EventBuilder v0.19.1 chain wrappers
- Asset cleanup (~6.1MB): tui-builders-demo.gif (orphan), demo_tetris.png
(orphan), examples/demo_wiki.rs (private blackpink/ deps)
3-pass review: 5 author agents β 10 independent reviewers (2 per group:
codebase-researcher API verification + general-purpose text quality) β
5 post-fix reviewers (release-ready verdict on all groups).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Closes 11 v0.19.x patch-safe issues plus 6 cross-cutting extensions framing SLT in terms of broader UI library positioning patterns (CSS / Flutter / React Native), performance budget, migration guidance, and visual snapshot regression infrastructure. External reporter promise (NebulaNomad423, 3-day delivery): - #200 Anchor enum + overlay_at(Anchor, |ui|) / modal_at(Anchor, |ui|) β 9-cell positioning. Adds overlay_at_offset(anchor, dx, dy, |ui|) / modal_at_offset for CSS inset-style insets (positive = toward viewport center). Fixes 2 long-standing layout bugs (same root cause in flexbox.rs): - Part 2: align(End)/justify(End) inside overlay rendered at center - Part 3: container.grow(1).draw(|buf, rect|) inside overlay didn't render Both caused by overlay shrink-and-center starving inner grow; new any_grow heuristic expands the wrapper to full area when a child has grow > 0. - #201 F12 debug overlay walks node.overlays (was skipping them) + DebugLayer enum (All/TopMost/BaseOnly) + per-layer color tagging (base=green, overlay=red, modal=blue) + count breakdown "14 widgets (8 base, 5 overlay, 1 modal)". Perf (7 issues): - #146 isqrt for filled_circle (Newton's method, MSRV 1.81 < 1.84) - #150 commands_buf reuse via FrameState - #152 group_name: Option<Arc<str>> verified in LayoutNode (already shipped) - #153 LayoutNode 432 β 320 bytes (~26%) via Box<TextNodeData> - #155 FrameData reuse via &mut in collect_all - #157 wrap_segments line_segs capacity hint - #162 viewport bound check before bottom border corner set_char Refactor (2 issues): - #147 min_h/max_h breakpoint variants (xs/sm/md/lg/xl/at) β symmetric with min_w/max_w - #148 deprecate pad/min_width/max_width/min_height/max_height (long-form aliases) with #[deprecated(since = "0.20.0")]; short forms p/min_w/max_w/min_h/max_h UI library cross-cutting extensions (the "broader picture" the user asked for): - docs/POSITIONING.md (286 lines) β CSS place-self / Flutter Align+Positioned / React Native position:absolute β SLT Anchor mapping with migration recipes - docs/PERFORMANCE.md (336 lines) β 60fps frame budget, 6 optimization patterns, comparison vs React/Flutter/UIKit/ratatui, regression detection - docs/MIGRATION.md (234 lines) β v0.19 β v0.20 with deprecation table + sed-based codemod + comparison vs React/Vue/Angular/Flutter migration tooling - tests/visual_snapshots.rs (insta) β 5 demo baselines catch layout drift, border render bugs, theme color shifts, CJK width regressions (golden-file pattern from Flutter / Storybook visual regression tools) - F12 per-layer color tagging (Chrome DevTools / React DevTools / Flutter Inspector convention) + Context::set_debug_layer / debug_layer() - examples/demo_overlay_anchor.rs β 9 anchor positions + 4 inset corners Quality gate (Core + Extended): all green. - cargo fmt -- --check / cargo check --all-features / cargo clippy / cargo test - typos / no-default-features / wasm32-unknown-unknown / cargo hack each-feature - cargo audit / cargo deny check 3-pass review on docs sweep (committed in a923af3): 5 author agents β 10 independent reviewers (codebase-researcher API verification + general-purpose text quality) β 5 post-fix reviewers all PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
subinium
added a commit
that referenced
this pull request
Apr 28, 2026
β¦closed-already + v0.21 deferrals - ### Fixed expanded with the 11 newly-applied fixes (#149, #150, #157, #161, #171, #184, #192, #193, #201, plus #98/#102 already in HEAD). - ### Closed (verified already applied in v0.19.3) lists the 8 v0.19.x issues whose fix landed in PR #202 (#134/#146/#147/#148/#152/#153/#155/#162). No separate v0.20 commit was needed; PR body will tell GitHub to close these so the v0.19.x milestone count goes to zero. - ### Known v0.21 migration notes documents the 4 critical drifts the design-discipline audit surfaced that genuinely need a breaking change to resolve: Hook-family naming asymmetry, scrollbar/separator return shape, status-family fake Response::none(), ScrollState::progress f32 outlier. Plus a brief note on the patch-safe doc-only gaps deferred to a 0.20.x follow-up. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
13 tasks
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.
Summary
v0.19.3 patch release closing 11 v0.19.x patch-safe issues plus 6 cross-cutting extensions framing SLT in terms of broader UI library positioning patterns (CSS / Flutter / React Native), performance budget, migration guidance, and visual snapshot regression infrastructure.
External reporter promise (NebulaNomad423, 3-day delivery): closes #200 (overlay anchor) + #201 (F12 debug overlay). Both bugs traced to the same flexbox root cause (overlay shrink-and-center starved inner
grow); single fix resolves both.What's in this PR
Closed issues (patch-safe)
align(End)/justify(End)renders at center, no clean bottom-right patternΒ #200Anchorenum +overlay_at/modal_at/overlay_at_offset/modal_at_offset+ 2 long-standing layout bug fixesnode.overlaysβ addDebugLayerenum to opt inΒ #201 F12 debug overlay walksnode.overlays+DebugLayerenum + per-layer color taggingisqrtforfilled_circle(Newton's method)min_h/max_hbreakpoint variants (xs/sm/md/lg/xl/at)pad/min_width/max_width/min_height/max_height)commands_bufVec capacity reuse viaFrameStategroup_name: Option<Arc<str>>verified inLayoutNodeLayoutNode432 β 320 bytes (~26% reduction) viaBox<TextNodeData>FrameDatareuse via&mutincollect_allwrap_segmentsline_segscapacity hintUI library cross-cutting extensions
Framing SLT alongside broader UI ecosystem patterns rather than treating each issue in isolation:
docs/POSITIONING.mdβ CSSplace-self/ FlutterAlign+Positioned/ RNposition: absoluteβ SLTAnchormappingdocs/PERFORMANCE.mdβ 60fps frame budget, 6 optimization patterns, comparison vs React / Flutter / UIKit / ratatuidocs/MIGRATION.mdβ v0.19 β v0.20 with deprecation table + sed codemod + comparison vs React / Vue / Angular / Flutter migration toolingtests/visual_snapshots.rs(insta) β 5 demo baselines catch layout / border / theme / CJK regressions (Flutter golden / Storybook visual regression pattern).claude/skills/slt-migration/SKILL.mdβ ratatui / cursive / textual β SLT migration skill (committed in a923af3)Asset cleanup (~6.1 MB)
Removed
tui-builders-demo.gif,demo_tetris.png,examples/demo_wiki.rs(broke external builds via privateassets/blackpink/dependency).Quality gate
All green at this commit:
cargo fmt -- --checkcargo check --all-featurescargo clippy --all-features -- -D warningscargo test --all-featurescargo check --examples --all-featurestyposcargo check -p superlighttui --no-default-featurescargo check -p slt-wasm --target wasm32-unknown-unknowncargo hack check -p superlighttui --each-feature --no-dev-depscargo auditcargo deny checkTest plan
align(End)/justify(End)renders at center, no clean bottom-right patternΒ #200 (overlay anchor + 2 bug fixes) and fix(layout): F12 debug overlay skipsnode.overlaysβ addDebugLayerenum to opt inΒ #201 (F12 walks overlays, layer color distinction, count breakdown) β all passtests/snapshots/visual__*.snap)release.ymlworkflow green;crates.ioshows v0.19.3;docs.rs/superlighttui/0.19.3builds successfullycargo install superlighttui --version 0.19.3+ runexamples/demoReview process
Two-commit branch:
a923af3β docs/skill sync, slt-migration skill, asset cleanup (3-pass review: 5 authors β 10 reviewers β 5 post-fix verifiers, all PASS)b3c4b64β 11 issue fixes + 6 UI-library extensionsNotes
cargo-semver-checksprivate-field rule (semver patch)π€ Generated with Claude Code