charmbracelet/bubbletea
How to contribute
Bubble Tea welcomes pull requests. The repo's official guidance is the GitHub "Contribute" page (https://github.com/charmbracelet/bubbletea/contribute); this wiki section adds practical pointers derived from the codebase.
Where work happens
- Default branch:
main - CI: GitHub Actions (
.github/workflows/) runsbuild.yml,lint.yml,coverage.yml, andexamples.ymlon every push and PR. Releases are cut byrelease.ymlon tag push. - Issues and discussions: GitHub issues + Charm's Discord/Matrix (linked from the README).
Pickup workflow
- Pick an issue or describe a small change in a fresh issue first if it is non-trivial. The maintainers prefer to align on shape before code.
- Fork the repo, create a branch off
main, write code, run lint and tests locally. - Open a PR with a clear "what / why / how to test" description. Reference any issues you are closing.
- PRs are reviewed by the Charm team. Expect feedback on naming, error wrapping (
wrapcheckis enabled), and gofumpt formatting. - Once green and reviewed, a maintainer squashes-merges. Conventional Commit prefixes (
feat:,fix:,chore:,docs:) are used in commit messages.
Definition of done
A PR is ready to merge when:
task lintpasses.task test(i.e.go test ./...) passes locally and on CI.examples/andtutorials/still build (build-examplesjob in CI).- New public API has GoDoc comments. Comments use the
[Type]and[Func]link format as elsewhere in the codebase. - Behaviour-changing edits update
UPGRADE_GUIDE_V2.mdor the relevant example, where applicable. - No unrelated
gofumpt/goimportschanges are introduced.
Sub-pages
- Development workflow — local commands, branch hygiene.
- Testing — frameworks, golden files, and
go testrecipes. - Debugging —
dlvheadless mode,LogToFile,TEA_TRACE. - Patterns and conventions — how the code is shaped.
- Tooling — Taskfile, golangci-lint, goreleaser.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.