revert: charmbracelet group bump #636 (lipgloss + ultraviolet) — lingering selection output - #669
Merged
Merged
Conversation
…ection output Interactive selection prompts (e.g. `slack create` category picker) leave stale rendered lines on screen after a choice is made or the prompt is torn down. A manual git-bisect over the recent charmbracelet bumps pins the regression to lipgloss v2.0.5 -> v2.0.6 (introduced by #636). The only functional change in lipgloss v2.0.6 is that `Canvas.Render()` now trims trailing whitespace from its output (`uv.TrimSpace(c.scr.Render())`). bubbletea's inline renderer sizes its erase-on-quit from the cells it last painted -- including trailing-space padding -- so a trimmed final frame no longer covers the originally-drawn cells, leaving the residual lines behind. Pinning back to v2.0.5 restores the correct teardown. bubbletea (2.0.9), huh (2.0.3), and x/ansi (0.11.8) were each independently ruled out during the bisect; lipgloss is the sole variable. This is an interim pin -- an upstream issue will track the proper fix so we can un-pin. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #669 +/- ##
=======================================
Coverage 78.19% 78.19%
=======================================
Files 239 239
Lines 18149 18149
=======================================
Hits 14192 14192
Misses 3957 3957 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Add a dependabot ignore rule for charm.land/lipgloss/v2 >= 2.0.6 so the charmbracelet group update won't undo the go.mod pin from this PR. Lift the rule when un-pinning go.mod once the upstream fix ships. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
mwbrooks
approved these changes
Sep 9, 2026
srtaalej
approved these changes
Sep 9, 2026
…sion The lipgloss v2.0.5 pin alone did not fix the lingering selection lines: verified on a real TTY, `slack create` -> Automation App still left stale rendered lines behind with lipgloss pinned to v2.0.5. Root cause: the charmbracelet group bump #636 was titled as a lipgloss v2.0.5 -> v2.0.6 bump, but its go.mod diff also carried github.com/charmbracelet/ultraviolet f5a850f9 -> 006e29f9. The erase/teardown behavior lives in ultraviolet's terminal renderer (rewritten in that window: new lineHasDrift/repaintLine, changed inline erase-height), which the wide selector glyph triggers -- not in lipgloss. The earlier pin reverted the wrong half of #636, and this repo's own go.mod line kept ultraviolet at 006e29f9 even with lipgloss at v2.0.5, so the regressed renderer was never actually reverted until now. lipgloss v2.0.6 requires the new ultraviolet via MVS, so the two are pinned back together: lipgloss to v2.0.5 and ultraviolet to the f5a850f9 pseudo-version. This is the config confirmed clean on a real terminal. The dependabot ignore rule now fences both deps; lift both together once the upstream ultraviolet fix ships. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
Member
Author
|
@mwbrooks @srtaalej Super appreciate the fast reviews! More testing finds that pinning the Let's merge this now but search for upstream fix to remove our @dependabot changes here since I don't believe we can unit test this with confidence at this immediate time. |
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.
Changelog
Fix interactive selection prompts (e.g. the
slack createcategory picker) leaving stale/lingering rendered lines on screen after a selection is made.Summary
Reverts the charmbracelet group bump from #636 across both deps it changed. #636 was titled as a
charm.land/lipgloss/v2v2.0.5 → v2.0.6 bump, but its go.mod diff also carriedgithub.com/charmbracelet/ultravioletf5a850f9→006e29f9. The lingering-selection regression is in ultraviolet's terminal renderer, not lipgloss:slack create→ select a category leaves residual lines on screen after the pick.f5a850f9and006e29f9(new line-drift/repaint handling and changed inline erase-height logic). The wide selector glyph exercises exactly that path.006e29f9, and the regressed renderer was never actually reverted. Both are pinned back together: lipgloss → v2.0.5, ultraviolet →f5a850f9.An earlier revision of this PR pinned only lipgloss; that did not fix the symptom (verified on a real terminal — selections still lingered), which is what surfaced ultraviolet as the true cause.
Testing
go build ./...passes with lipgloss v2.0.5 + ultravioletf5a850f9.slack create→ Automation App category selection verified by hand on a real terminal: prompt tears down cleanly, no lingering lines. The prior config (lipgloss v2.0.5, ultraviolet still006e29f9) reproduced the lingering; pinning ultraviolet back tof5a850f9resolves it.Notes
ignorerule fences bothcharm.land/lipgloss/v2(>= 2.0.6) andgithub.com/charmbracelet/ultraviolet(>= 006e29f9) so the next charmbracelet group bump can't silently re-raise either half and undo the revert.Requirements