Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,15 @@ Breadcrumbs suggest next commands, making it easy for humans and agents to navig

## Authentication

OAuth 2.1 with automatic token refresh. First login opens your browser:
OAuth 2.1 with automatic token refresh. First login opens your browser.
When the server supports it, login uses the OAuth device flow automatically:
you approve a short code in the browser instead of a redirect. Otherwise
login falls back to Launchpad's authorization-code flow.

```bash
basecamp auth login # Authenticate with Basecamp
basecamp auth login --scope read # Read-only access (BC3 OAuth only, default)
basecamp auth login --scope full # Full read+write access (BC3 OAuth only)
basecamp auth login --scope read # Read-only access (default; ignored by Launchpad)
basecamp auth login --scope full # Full read+write access (ignored by Launchpad)
basecamp auth token # Print token for scripts
```

Expand Down Expand Up @@ -175,7 +178,6 @@ See [install.md](install.md) for step-by-step setup instructions.
```
~/.config/basecamp/ # Your Basecamp identity
├── credentials.json # OAuth tokens (fallback when keyring unavailable)
├── client.json # DCR client registration
└── config.json # Global preferences

~/.config/basecamp/theme/ # Tool display (optional)
Expand All @@ -189,6 +191,9 @@ See [install.md](install.md) for step-by-step setup instructions.
└── config.json # Project, account defaults
```

A leftover `~/.config/basecamp/client.json` (from the removed development
client-registration flow) is obsolete and safe to delete.

## Troubleshooting

```bash
Expand Down
14 changes: 14 additions & 0 deletions e2e/auth.bats
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,20 @@ load test_helper
assert_output_contains "--device-code"
}

@test "basecamp auth login --help describes flags provider-neutrally" {
run basecamp auth login --help
assert_success
assert_output_contains "Headless authentication with manual browser instructions"
assert_output_contains "ignored by Launchpad"
}

@test "basecamp profile create --help describes flags provider-neutrally" {
run basecamp profile create --help
assert_success
assert_output_contains "Headless authentication with manual browser instructions"
assert_output_contains "ignored by Launchpad"
}

@test "basecamp auth login rejects --device-code --local" {
run basecamp auth login --device-code --local
assert_failure
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ require (
charm.land/bubbles/v2 v2.1.1
charm.land/bubbletea/v2 v2.0.8
charm.land/lipgloss/v2 v2.0.5
github.com/basecamp/basecamp-sdk/go v0.9.1-0.20260727173625-bb363c847b92
github.com/basecamp/basecamp-sdk/go v0.9.1-0.20260728112802-e9469832f102
github.com/basecamp/cli v0.2.2-0.20260728023309-04e401b12c6c
github.com/charmbracelet/bubbles v1.0.0
github.com/charmbracelet/glamour v1.0.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ github.com/aymanbagabas/go-udiff v0.4.1 h1:OEIrQ8maEeDBXQDoGCbbTTXYJMYRCRO1fnodZ
github.com/aymanbagabas/go-udiff v0.4.1/go.mod h1:0L9PGwj20lrtmEMeyw4WKJ/TMyDtvAoK9bf2u/mNo3w=
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
github.com/basecamp/basecamp-sdk/go v0.9.1-0.20260727173625-bb363c847b92 h1:4gQJTR8e5kBvXHDHLvef+Q00XY7KzWTxnQSLWMSPcyA=
github.com/basecamp/basecamp-sdk/go v0.9.1-0.20260727173625-bb363c847b92/go.mod h1:r83ralDQ0q9vbAby5qQ5x9hgCgUdJLDLHYpiU6jaFjE=
github.com/basecamp/basecamp-sdk/go v0.9.1-0.20260728112802-e9469832f102 h1:s/pAB1d7CAh0aNG6oeu2EwWCRrVTw11pWLWb6fzZIIw=
github.com/basecamp/basecamp-sdk/go v0.9.1-0.20260728112802-e9469832f102/go.mod h1:r83ralDQ0q9vbAby5qQ5x9hgCgUdJLDLHYpiU6jaFjE=
github.com/basecamp/cli v0.2.2-0.20260728023309-04e401b12c6c h1:+5sQBl8sqYoD1Qhwsibn8sBCKWPyZ9NDez6mnuo9Afo=
github.com/basecamp/cli v0.2.2-0.20260728023309-04e401b12c6c/go.mod h1:EK1Dba6DEw8ZAilVBpf/jri3ONDV7LQkLACSDe73f/c=
github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
Expand Down
Loading
Loading