charmbracelet/bubbletea
Tooling
The tools that build, lint, test, and release Bubble Tea.
Taskfile
Taskfile.yaml exposes two thin wrappers:
tasks:
lint:
cmds:
- golangci-lint run
test:
cmds:
- go test ./... {{.CLI_ARGS}}Use task -l to see them. They exist mostly to provide one-line muscle memory; they do not encode special flags beyond what go test and golangci-lint defaults provide.
golangci-lint
.golangci.yml enables a fairly aggressive linter set:
bodyclose,exhaustive,goconst,godot,gomoddirectives,goprintffuncname,gosec,misspell,nakedret,nestif,nilerr,noctx(with aslog/logexclusion),nolintlint,prealloc,revive,rowserrcheck,sqlclosecheck,tparallel,unconvert,unparam,whitespace,wrapcheck.- Formatters:
gofumpt,goimports. exhaustivetreats adefault:case as exhaustive.max-issues-per-linter: 0andmax-same-issues: 0mean every finding shows in the report.
CI pins golangci-lint v2.9 (.github/workflows/lint.yml).
GitHub Actions
| Workflow | Trigger | Purpose |
|---|---|---|
build.yml |
push, PR | Builds the library, the examples/ module, and the root module against go.mod. Uses Charm's shared meta/.github/workflows/build.yml. |
lint.yml |
push, PR | Runs golangci-lint v2.9 with .golangci.yml and a 10-minute timeout. |
coverage.yml |
push, PR | Runs go test -race -covermode=atomic and uploads to Codecov. |
examples.yml |
push to master, manual |
Runs go mod tidy for examples/ and tutorials/, auto-commits. |
dependabot-sync.yml |
weekly cron, manual | Syncs Dependabot config from charmbracelet/meta. |
lint-sync.yml |
weekly cron, manual | Syncs lint config from charmbracelet/meta. |
release.yml |
tag push (v*.*.*) |
Invokes the shared goreleaser workflow with all the social/release secrets. |
The build.yml and lint.yml workflows reuse the shared charmbracelet/meta workflows. Changes to those workflow files affect all Charm projects, not just Bubble Tea.
goreleaser
.goreleaser.yml is intentionally tiny — release.yml delegates the heavy lifting to charmbracelet/meta/.github/workflows/goreleaser.yml. The shared workflow handles GitHub releases, Docker images, social posts to Twitter/Mastodon, and a Discord webhook ping when a new version drops.
Dependabot
.github/dependabot.yml (synced from the shared meta repo) groups all Go module updates into a single weekly PR titled chore(deps): bump … in the all group. The bot accounts for ~107 of the ~1,861 commits.
Build tools used by examples
The examples/go.mod pulls in:
charm.land/bubbles/v2— the companion components library.charm.land/lipgloss/v2— styling.charm.land/x/...— subset of utility packages.
These are not in the main go.mod so contributors do not pay for them when they only touch the runtime.
VS Code workspace
There is no .vscode/ directory committed; the project relies on gopls defaults plus gofumpt. If you use other editors, configure them to match .golangci.yml's formatter list to avoid noisy diffs.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.