v0.8.0 — 12 new widgets, +29% surface
Additive-only bump: 42 → 54 widgets. Every existing consumer keeps working unchanged.
Wave 2 of the GTK / DaisyUI gap-closure campaign. Same recipe as v0.7.0: Base embedding, Draw(painter.Painter, *Theme), existing fillRect/strokeRect/DrawText helpers, theme.Extra["OnAccent"] fallback pattern.
Visual atoms
- Avatar — circular initials bubble; fill in a user-supplied
Colorortheme.Accentby default; ink via the OnAccent fallback. - Skeleton — loading placeholder in three flavors (
SkeletonText— NSurfaceAltbars with a natural 60%-width last line;SkeletonAvatar— same rounded shape asAvatar, no glyphs;SkeletonBlock— a single inset filled rect). - Rating — N-glyph selector; click routing on
EventMouseDowncomputes which star index landed and firesOnChange.
Overlays
- Toast — transient bottom-of-screen notification,
EventTick-drivenLifecountdown,ToastKindenum (Info/Success/Warning/Error), fixed RGB per kind mirroringAlert. - Banner — persistent full-width message with an optional action-button label + click callback +
Revealedstate (mirrorsAdwBanner). - Popover —
Visiblecontainer for aChildwidget with aSurfacefill,Borderstroke, and optionalTitleheader; forwardsEventMouseDowntoChildwith translated coordinates.
Structural
- ActionRow — libadwaita
AdwActionRow:Title(large) + optionalSubtitle(dim) + optionalPrefix/Suffixwidget slots. RoutesEventMouseDowntoPrefix/Suffixbased on X coordinate, likeHeaderBardoes withStart/End. - ViewSwitcher — segmented tab picker; current view highlighted in
Accentwith OnAccent ink; click routing computes segment index and firesOnChange. - ChatBubble — chat-message bubble with
Senderenum (ChatFromUserright-aligned inAccent,ChatFromOtherleft-aligned inSurfaceAlt), multi-line via '\n' split,ChatBubbleMaxWwidth cap.
Interactive / data
- SearchEntry — Entry variant with a
?prefix and a clear-xaffordance on the right (visible only whenText != \"\"); handlesEventChar,EventKeyBackspace,EventMouseDownon the clear slot. - Diff — colored line-by-line diff view;
DiffKind(DiffContext/DiffAdded/DiffRemoved), added rows in a fixed light-green RGB, removed in a fixed light-red RGB,ContextinSurface. - Pagination — prev / page-numbers / next navigation with disabled-state ink for edge pages (Current == 1 disables prev, Current == Total disables next);
EventMouseDownroutes to whichever button rect contains the click.
Development note
Built in parallel by 4 sub-agents in worktree isolation (/tmp/tk-pp-{a,b,c,d}) per the org's parallel-agent-worktree-isolation rule. Each agent worked in its own fresh clone of v0.7.0; the 4 batches merged verbatim with no naming conflicts across the ~30 new package-level constants and enums, and 100.0% cov end-to-end.
Verified
go vet ./...cleango test -cover ./...→ 100.0% of statements- Cross-compile smoke:
js/wasm,linux/arm64,darwin/arm64all clean - CI green
Compatibility
Additive only. No new theme fields, no new external deps beyond github.com/go-widgets/painter. No existing files touched.
To pin:
```go
require github.com/go-widgets/toolkit v0.8.0
```
License
BSD-3-Clause.