Changelog
Every release, every API change — written so an agent can migrate from it alone.
Changelog
This changelog is written for the AI agents that develop the apps
consuming lotusui. From the next release on, it records every
API-visible change — created, updated, renamed, removed — with exact
symbols, old→new forms, and replacement guidance, precise enough to
migrate a consuming app from this document alone. There is
deliberately no migrate tool: read the entries for the versions you
crossed, apply them, then run go build ./... until clean — the
compiler is the safety net. lotusui update prints the relevant
sections when upgrading vendored components.
Format: Keep a Changelog sections, SemVer versions (Go modules enforce it). Until v1.0.0 breaking changes may land in minor versions; each will be recorded here in full.
[Unreleased]
Nothing yet.
[0.1.0] - 2026-08-02
The initial release: the ikaito design language for Gio (gioui.org) — desktop, mobile and web from one Go codebase.
Components
Component vocabulary and docs anatomy follow the conventions the web settled on; the color engine is lotusui's own.
Button— variantsButtonDefault/Secondary/Destructive/Outline/ Ghost/Link; icon-only and with-icon;Roundedpill form; loading (spinner orLoadingText); disabled; 1dp press nudge; focus ring.Badge—BadgeDefault/Secondary/Destructive/Outline/Ghost;Icon; rawBg/Fgstatus pairs.Input— variants outline/subtle/flushed;Filter/Transforminput mechanisms;Error;Start/Endslots; suffix addon.Field— label, helper, error, required, around any control.Checkbox— indeterminate, invalid, disabled.Switch— animated on the shared clock; invalid, disabled.Select— floating panel on the portal primitive;Groupswith labels and separators; check-marked selection; scrollable (7-row cap) opening aligned to the selection; placeholder; invalid.Tabs—TabsDefault(muted well, raised active tab),TabsLine,TabsSubtle;Vertical;Icons; per-tabDisabled; the explicitUpdate-before-Selcontract.Dialog— full-window scrim, width presets per size, entrance motion (Appear()), Escape/backdrop dismissal viaonClose, corner ✕ (suppress withHideClose).DropdownMenu—DropdownMenuItem,DropdownMenuItemIcon,DropdownMenuShortcutItem,DropdownMenuCheckboxItem,DropdownMenuRadioItem,DropdownMenuLabel,DropdownMenuSeparator.Card—CardOutline/Elevated/Subtle, size-scaled padding, equal-height rows viaMin.Y; the image and edge-to-edge patterns documented.Accordion,Alert(+Action,Color),AlertDialog,Avatar,Breadcrumb,Pagination,Popover,Progress,RadioGroup,Separator,Skeleton(+SkeletonCircle),Slider,Spinner,Table,Textarea,Toast/Toaster,Toggle/ToggleGroup,Tooltip— each with live per-example docs and an API table.DropdownMenuTrigger— the anchored floating menu (close on selection/outside/Escape;KeepOpenfor checkbox/radio menus).- One surface grammar: borders never change with elevation; resting surfaces carry the 1dp seat, floating layers the full shadow.
- Strictly monotonic size ladders 2XS→2XL, pinned by a test.
- Extensions beyond the usual web catalogs:
Grid(spans, auto-flow),SimpleGrid(responsive columns, equal-height rows),Split+VSlide(the carousel motion grammar),Stack(VStack/HStack),ListView(virtualized;Scrollable,HoverRow), plus the page/layout utilities. Floating— the portal primitive (end-of-frame layer on Gio'sop.Defer): escapes parent clips, paints above everything, wins hit-testing. Select's panel is built on it.
Sizing and color
- Shared
Sizeenum:Size2XS…Size2XL,SizeMDdefault, one meaning across every component. - Semantic
Palettetokens in paired fill/ink slots;Schemewith interaction steps (.500 base → .600 hover → .700 pressed);ColorScaleC50–C900 with ten stock scales andScaleFrom(anchor); per-instanceColor ColorScaleon Button/Badge — one anchor in, the whole ladder out. Precedence:Scheme>Color> the variant's role scheme. DefaultDarkPalette— dark mode is a palette:NewTheme(WithPalette(lotusui.DefaultDarkPalette)).- Theme construction:
NewTheme(WithPalette/WithRadius/WithSpace/ WithTextSize/WithFaces)— everything resolves once, nothing per frame.
Tooling (go run github.com/ikaito-com/lotusui/cmd/lotusui …)
add/update— the ownership model: vendor a component's source into the app (exported core identifiers auto-qualified, unexported helpers carried into a CLI-owned companion); update with a true three-way merge (base reconstructed from the Go module cache).registry— generatesregistry.json, the build-time catalog for the CLI and AI agents (never read by app code at runtime).skills— installs the agent skill files into.claude/skills/.icons— Iconify fetch + normalization + typed constants;theme— palette generation from an anchor ortheme.json, with WCAG contrast checks;verify— offline drift checks (icons, theme, API baseline, registry);api— the exported-API baseline;init— app scaffold;release— the version ritual.- First block:
login-form(registry/blocks/login).