Contributions are welcome. This guide covers how to get started, run tests, and submit changes.
git clone https://github.com/devthicket/willowui.git
cd willowui
go build ./...WillowUI requires Go 1.24+ and depends on Ebitengine, which needs platform graphics libraries. On Linux:
sudo apt-get install libasound2-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev libxxf86vm-devmacOS and Windows require no extra system packages.
go build ./... # compile everything
go vet ./... # static analysis
go test ./... # run all testsIntegration tests live in internal/integration/ and test the public API via ui "github.com/devthicket/willowui". New widget tests should go there.
go run ./examples/widgets/buttons/
go run ./examples/reactive/counter/
go run ./examples/theming/theme-gallery/- Follow standard Go conventions (
gofmt,go vet) - Every exported symbol in
willowui.gomust have a doc comment - Use printable ASCII only (U+0020-U+007E) in widget text -- see the font safety section in the README
- Keep the public API in the root package; implementation goes in
internal/ - Tests import the public API:
ui "github.com/devthicket/willowui"
- Bug fixes and small improvements -- open a pull request directly
- Major changes or new features -- open an issue first to discuss the design
- Keep commits focused and messages concise
- Make sure
go build ./...,go vet ./..., andgo test ./...all pass before submitting
| Directory | Purpose |
|---|---|
willowui.go |
Public API surface (re-exports from internal packages) |
internal/ |
All implementation packages |
internal/integration/ |
Integration tests against the public API |
examples/ |
Runnable demos organized by category |
assets/ |
Embedded resources (fonts, icons) |
By contributing, you agree that your contributions will be licensed under the MIT License.