artisanal_widgets 0.2.0
artisanal_widgets: ^0.2.0 copied to clipboard
Widget system for composable TUI components, built on top of the artisanal terminal toolkit.
Changelog #
0.2.0 #
Added #
- Added a stable
package:artisanal_widgets/widgets.dartentrypoint for the high-level widget framework surface. - Added stable
package:artisanal_widgets/charting.dartandpackage:artisanal_widgets/selection.dartentrypoints for the supported charting and text-selection surfaces. - Added
ImageAutoMode.sessionCapabilitiessoImage(renderMode: auto)can follow terminal version and device-attribute reports from the active session instead of only using the local process environment. - Added a dedicated
example/tooltip_tracedemo withTuiTraceinstrumentation and built-in replay/trace conversion flags so tooltip hover behavior can be recorded, converted, and replayed during debugging. - Added external diagnostics sources and listenable diagnostics bindings for editor widgets, so demos and downstream apps can drive diagnostics without custom text-pattern glue.
- Added per-widget selection highlight overrides for the shared read-only selection surfaces, so mixed documents can use different selection palettes within one
SelectionArea. - Added span-level selection highlight overrides for
SelectableRichText, so one shared rich-text selection can mix palettes within a single widget.
Changed #
- Fixed
FadeModalBarrierso content-backed barriers dim the child in place instead of painting an opaque black layer over the full view, while keeping the standalone overlay fallback for empty-child route barriers. - Improved
Tintblending soFadeTintand content-backedFadeModalBarrierwidgets fade proportionally toward the target color instead of snapping between no effect and a full tint. - Updated
AnimatedTintto use the sharedblendColor()helper so animated widget tinting follows the same color interpolation path as the rest of the style system. - Fixed
Drawerbackdrops so open drawers dim the background content in place instead of blacking out the full terminal view. - Made
ModalandDrawerhonorbackdropColorthrough the shared tint path instead of ignoring the configured color while dimming the background. - Clarified the package guidance so
artisanal_widgetsremains the primary widget dependency, while thepackage:artisanal/...widget entrypoints are documented as optional umbrella convenience re-exports. - Hosted browser/socket runner helpers now default
Image(renderMode: auto)toImageAutoMode.sessionCapabilitiesinstead of forcing the portable fallback, so remote terminals can upgrade image rendering from live session capability reports. - Added hosted-runner regression coverage for session-capability image probing by default and for portable-fallback mode suppressing those extra image capability requests.
- Improved shared read-only selection in scrollable mixed views, including upward and downward edge auto-scroll, mouse-wheel scrolling during drag selection, and row-wide drag starts from surrounding whitespace.
- Kept
package:artisanal_widgets/artisanal_widgets.dartas the broader experimental compatibility surface while stabilizing the primary widget/app/layout/input/navigation APIs. - Updated the widget docs to prefer the stable
package:artisanal_widgets/widgets.dartimport path. - Updated the package README and focused examples to prefer the stable top-level entrypoints over the broad compatibility import.
- Updated the remaining widget examples and tooling to import the stable
package:artisanal_widgets/widgets.dartentrypoint instead of the broad compatibility surface. - Made
Tooltipfloat from anOverlayancestor instead of reflowing surrounding layout, and updated the gallery example to host its overlay demos through a root overlay so hover tooltips behave like anchored popups. - Made floating
Tooltipfall back to the latest hover pointer position when anchor geometry is not ready yet, avoiding delayed tooltip popups in live sessions. - Made floating
Tooltiprequest an immediate repaint on hover enter and exit so overlay tooltips appear and disappear without waiting for a later event. - Made floating
Tooltiphit-test transparent so it no longer blocks later mouse hover and click interaction underneath. - Fixed
GestureDetectorhover handling so commands returned fromonEnterandonExitare dispatched through the widget pipeline, allowing overlay-backed hover widgets likeTooltipto repaint immediately in live sessions. - Fixed
Stackhit-testing so positioned children use their painted offsets during hit testing, which restores immediate hover interaction for anchored overlays likeTooltip. - Updated the flagship widget app examples to use the stable umbrella imports from
package:artisanal/app.dartandpackage:artisanal/widgets.dart. - Updated the editor showcase examples to use the stable umbrella imports from
package:artisanal/app.dart,package:artisanal/editors.dart, andpackage:artisanal/widgets.dart. - Updated the shared text input test suites to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints. - Updated the flagship component and showcase tests to use the stable
package:artisanal/widgets.dart,package:artisanal/testing.dart, andpackage:artisanal/app.dartentrypoints. - Updated the editor showcase and HelpView regression tests to use the stable
package:artisanal/testing.dartandpackage:artisanal/widgets.dartentrypoints. - Updated the app-shell, reload, and core HelpView tests to use the stable
package:artisanal/app.dart,package:artisanal/widgets.dart, andpackage:artisanal/testing.dartentrypoints. - Updated the status, progress, metric, and key-hint component tests to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints. - Updated the button, toggle, slider, dropdown, and popup-menu component tests to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints. - Updated the tree, tab, split-view, scroll-area, and list-navigation component tests to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints. - Updated the accent-panel, chip, tooltip, accordion, expansion-tile, and hyperlink component tests to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints. - Updated the data-table, list-tile control, and select/pagination component tests to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints. - Updated the command palette, modal/drawer, and git-diff component tests to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints. - Updated the frame border regressions and the OpenCode home layout showcase test to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints. - Updated the remaining card/panel/frame regression test to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints, and to accept stabilized truecolor card-surface rendering. - Updated the foundational widget and basic layout tests to use the stable
package:artisanal/widgets.dartandpackage:artisanal/testing.dartentrypoints. - Updated the main widget gallery example to enable passive all-motion mouse tracking so hover-driven overlays like the tooltip preview work in real terminals.
- Clarified the widget docs and tooltip API docs so passive hover behavior explicitly points callers to
MouseMode.allMotionand the widget runners that already default to it. - Updated the widget-friendly runner defaults to disable core startup probes so early hover-driven UI feedback, such as tooltips in the gallery example, is not delayed behind terminal capability probing.
- Added shared
Tooltiplifecycle trace events for hover transitions, overlay insert/remove, and overlay visible/hidden timing so tooltip traces can measure when the popup is actually requested and rendered. - Fixed hit-test motion bubbling so nested hover handlers all see the first in-bounds mouse move, which restores immediate
Tooltipshow timing when the tooltip target contains its ownMouseRegion. - Stopped floating
Tooltipfrom invalidating its overlay entry during every build while hovered, which eliminates repaint churn that could delay later mouse motion and hide updates. - Stopped
Tooltip.didUpdateWidget()from resyncing the floating overlay on unrelated parent rebuilds, so hovered tooltips no longer trigger periodic overlay rebuilds from app-shell updates.
0.1.0+1 #
- Documentation + assets
0.1.0 #
Added #
- Initial release of
artisanal_widgets. - Flutter-style terminal widget system built on top of
artisanal. - Core widget framework, layout primitives, focus/gesture/input systems, and component library.
- Charting widgets, scroll/selection support, and testing harnesses for TUI widget behavior.