feat: borderfx API, 10+ new widgets, and enhancements to heatmap/linechart/sparkline#385
Merged
Merged
Conversation
…until a new one is made
…er to us, threed demo update
Owner
|
This looks awesome, thank you @keithknott26. Could you confirm - does this replace #381? I'll spin up an agent to review this - can you confirm if there are any breaking changes to the public APIs that we will need to list in the changelog? |
Contributor
Author
|
@mum4k,
Yes this would replace #381 so it can be closed.
I checked v0.20.0..HEAD for public changes. Existing packages mostly got
additive API:
- container: added ActiveID, BorderCell, BorderCellStyle,
BorderCellStyler, BorderCellStyleFunc
- terminal/tcell: added EnableMouse, EnableMouseMotion, DisableMouse,
MouseEnabled
- widgets/heatmap: implementation filled in, plus new options like
SquareCells, AxisCellOpts, Palette
- widgets/linechart: added ValueAt, threshold helpers, BrailleOnly,
DownsampleLTTB
- widgets/sparkline: added threshold/color/rune options
- New widget packages: tab, modal, timeline, spectrum, threed, slider,
radio, checkbox, dropdown, etc.
- Termdashdemo.go updated
One thing I would flag as a possible behavioral compatibility change,
though not a Go API break:
- terminal/tcell/tcell.go (line 147) now enables tcell.MouseButtonEvents
by default instead of calling bare EnableMouse(). If any downstream app
relied on mouse motion/hover events being enabled by default, they’ll now
need to call EnableMouseMotion().
…On Tue, May 19, 2026 at 7:43 PM Jakub Sobon ***@***.***> wrote:
*mum4k* left a comment (mum4k/termdash#385)
<#385 (comment)>
This looks awesome, thank you @keithknott26
<https://github.com/keithknott26>.
Could you confirm - does this replace #381
<#381>?
I'll spin up an agent to review this - can you confirm if there are any
breaking changes to the public APIs that we will need to list in the
changelog?
—
Reply to this email directly, view it on GitHub
<#385 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AEBOIG6YZM56TBRVY5EQA5D43TWTZAVCNFSM6AAAAACZBG6HH2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHM2DIOJTGEZDCOJQGY>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
…cense was consistent across all widgets
…sh license consistent across all widgets
Clean up threed demo scenes and remove unused threed image dependencies while keeping HUD and emojikeyboard changes out of this commit.
Contributor
Author
|
I think thats all commits for now , btw Ive enabled 24bit true color mode so it should make things look a bit more crisp. Let me know if you need me to rework anything. I considered moving borderFX and FX into termdash but i wasnt sure how youd feel about that so i made it a widget instead |
mum4k
approved these changes
Jun 5, 2026
mum4k
left a comment
Owner
There was a problem hiding this comment.
I've run go test and go vet on the full suite. Everything passes! Thanks for the massive contribution and your persistence.
mum4k
added a commit
that referenced
this pull request
Jun 6, 2026
* Adding Treeview widget and tests * Updated testing errors to pass * Updated treeview and tests to guard against race conditions * Updated tests and treeview with mutex locking * Minor fixes for linting errors * Added missing comments to types, added more tests, changed node to tv, changed Treeview to TreeView * Added animated gif and updated README * Added suimon since it went missing in a previous commit * Implement Pie widget with options and drawing functionality * Add Pie widget documentation with demo instructions * Refactor options validation and enhance ColorOption function for pie chart customization * Refactor pie chart drawing logic to simplify radius calculations and improve arc rendering * Add test case for drawing a two-slice pie chart with verification * Refactor pie widget code for improved readability and organization * Remove unnecessary blank line in pie chart drawing function documentation * Update README and pie widget documentation for clarity and accuracy * Add AI agent rules setup Establishes the .agents/rules/ directory structure with Cursor .mdc symlinks, following the same pattern used in AirWorthy and open-hangar. Rules included (adapted for termdash as a Go library): - 001: Persistent rules (meta-rule for rule format and loading) - 002: Documentation maintenance - 005: Git workflow (nvie branching model, devel-based, one-branch policy) - 006: Go best practices (idiomatic Go, readability-first philosophy) - 007: No-breakage policy (public API stability) - 009: Tests and coverage (unit tests, race detector, test helpers) - 012: Q-prompt read-only mode - 013: Go table-driven tests - 014: Compile check (go build + go vet before completing work) Rules intentionally excluded as not applicable: - SwiftUI/iOS rules (tech stack, simulator, SwiftData, accessibility) - Frontend/React rules (Vite SPA, React Router) - Cloud/SRE rules (Encore, security, database migrations) - Domain-specific rules (CRUD patterns, field descriptions) * Update GitHub Actions workflow to run on all PRs and modernize Go linting * Restore pull_request branch restrictions for master and devel * feat: borderfx API, 10+ new widgets, and enhancements to heatmap/linechart/sparkline (#385) * fix(tcell): fix key mapping alignment and extend mouse/event handling * chore(deps): add golang.org/x/image, bump golang.org/x/text to v0.22 * feat(border): add BorderCellStyler API for per-cell border customization * feat(borderfx): add borderfx widget — animated and styled border effects * fix(treeview): use GetExpandedState() instead of direct field access * feat(heatmap): extend heatmap with improved axes, labels, and options * feat(sparkline): add custom spark runes, threshold rendering, and options * feat(linechart): add threshold lines, scale precision, and data downsampling * feat(widgets): add checkbox, radio, slider, spinner, and dropdown widgets * feat(widgets): added timeline, and spectrum analyzer widgets * feat(widgets): add emoji keyboard picker and 3D projection widget * feat(tab): add tab widget with animated header and alarm notification color * feat(radar): add radar widget with phosphor sweep, contacts, and hover tooltips * feat(slider): add more slider styles and vertical positioning and alignment * core(README): Added widget descriptions and demos to README * feat(widgets): Add the modal widget and demo * Fix: downgrade back to Go 1.20 * Fix: Fixed gofmt errors * Fix: Fix for more gofmt errors * Fix: Fix for linting errors * feat(threed): minor fixes to shading and the threed demo - temporary until a new one is made * feat(termdashdemo): Updated termdashdemo with 10 widgets and tabs * feat(threeDemo): Fix for testing error * feat(termdashdemo): Minor gofmt fix * feat(fx): Added FX widget for window and text effects' * feat(threed): Updated threed demo and tests * feat(modal/fx): updated fxdemo and modal widget * feat(threed/fx): Updates to ThreeD/FX to make the user API layer easier to us, threed demo update * feat(threed): Minor golint fix * feat(core): reverted the removal of tcell encoding as it's needed for compatibility * feat(termdashdemo): Fix for tabs in termdashdemo and linting in glphmask * feat(legal/toast): Added toast widget and demo, made sure termdash license was consistent across all widgets * feat(legal/toast): Added toast widget to termdashdemo - cont'd termdash license consistent across all widgets * Updatead README.md * terminal/tcell: restore drag tracking and color support * widgets/borderfx: add animated border profiles * widgets/fx: add framed and focus effects * widgets/threed: simplify API and expand showcase scenes * widgets/dropdown: improve open list rendering * widgets/tab: stabilize animated tab decoration * widgets/timeline: tighten range picker rendering * widgets/radio: fix demo off indicator * termdashdemo: expand interactive widget explorer * docs: add new widget demos * Fix widget rendering regressions Clean up threed demo scenes and remove unused threed image dependencies while keeping HUD and emojikeyboard changes out of this commit. * Remove emojikeyboard from repo * Minor gofmt change for tabdemo * Restore threed logging option compatibility * feat(threed): performance and optimization update * Bump github.com/mattn/go-runewidth from 0.0.15 to 0.0.16 (#378) Bumps [github.com/mattn/go-runewidth](https://github.com/mattn/go-runewidth) from 0.0.15 to 0.0.16. - [Commits](mattn/go-runewidth@v0.0.15...v0.0.16) --- updated-dependencies: - dependency-name: github.com/mattn/go-runewidth dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update CHANGELOG.md for v0.21.0 release --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Keith Knott <keith.knott@gmail.com> Co-authored-by: VincenzoManto <vincmanto@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.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.
Hello Jakub,
Overview
This PR adds the
BorderCellStylerAPI (the core ofborderfx), introduces ten newwidgets, and extends several existing ones with new options and capabilities.
Infrastructure
BorderCellStyler— a per-cell callbackAPI that allows callers to override the rune and cell options on individual border
cells, enabling animated and styled border effects
New Widgets
color-distinct alarm notification indicator
configurable beam color/width/speed, and mouse hover tooltips
Existing Widget Enhancements
GetExpandedState()throughoutDependencies
golang.org/x/image v0.24.0golang.org/x/texttov0.22.0All changes pass
go test -race ./....