Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
60b410e
Redesign CLI with TypeScript oclif
batuhan May 13, 2026
50b48ab
Add npm and Homebrew publishing
batuhan May 13, 2026
483c045
Align CLI copy with SDK docs
batuhan May 13, 2026
1469c3e
tui
batuhan May 13, 2026
22337eb
wip
batuhan May 14, 2026
2091b0e
wup
batuhan May 14, 2026
4d2ad48
wip
batuhan May 14, 2026
a391e46
wip
batuhan May 14, 2026
d3926c7
wip
batuhan May 14, 2026
8f585a1
wup
batuhan May 14, 2026
bbae3b3
tests
batuhan May 14, 2026
2e61a81
Update e2e-staging.mjs
batuhan May 14, 2026
c81e6f7
Update e2e-staging.mjs
batuhan May 15, 2026
19882b0
remove go
batuhan May 15, 2026
257db3e
wip
batuhan May 15, 2026
6df3f67
wip
batuhan May 15, 2026
a8a2e3f
fixes
batuhan May 15, 2026
44d4f5b
fixes
batuhan May 15, 2026
221f03d
Refactor auth, export, and output rendering
batuhan May 15, 2026
fc6d74d
Simplify CLI command surface
batuhan May 16, 2026
a989bb7
move around
batuhan May 16, 2026
15eb9da
fix(cli): use fileURLToPath for api copy script
batuhan May 16, 2026
83b7ee9
fix(cli): include muted chats by default
batuhan May 16, 2026
9c9ce36
fix(cli): include muted messages by default
batuhan May 16, 2026
c4104ac
fix(cli): redact auth token in config get
batuhan May 16, 2026
2dd24e1
fix(cli): honor contacts limit and ids
batuhan May 16, 2026
e7bb741
fix(cli): reject conflicting description clear
batuhan May 16, 2026
86dceb9
fix(cli): timeout doctor server probe
batuhan May 16, 2026
bf717bd
fix(cli): timeout status server probe
batuhan May 16, 2026
278a4f3
fix(cli): timeout logout token revoke
batuhan May 16, 2026
6e95e51
fix(cli): reject conflicting message cursors
batuhan May 16, 2026
c71fa83
fix(cli): preserve rpc request id on errors
batuhan May 16, 2026
47a46b8
fix(cli): require recipient for start-chat
batuhan May 16, 2026
a27aed8
fix(cli): preserve empty quoted args
batuhan May 16, 2026
6e480f1
fix(cli): surface config read errors
batuhan May 16, 2026
0f1e6f3
fix(cli): include redirect uri in pkce token exchange
batuhan May 16, 2026
ca32c10
fix(cli): honor zero page limits
batuhan May 16, 2026
15cb39f
fix(cli): rethrow non-404 chat retrieve errors
batuhan May 16, 2026
0c68f9c
fix(cli): require explicit skipped account flows
batuhan May 16, 2026
c382c07
fix(cli): keep account login prompts off stdout
batuhan May 16, 2026
fcddeb6
fix(cli): prompt secretly for recovery code
batuhan May 16, 2026
fc667a1
ci: remove unused release oidc permission
batuhan May 16, 2026
23cfa16
docs: fix ascii font palette typo
batuhan May 16, 2026
ac1e610
docs: fix cli command reference markdown
batuhan May 16, 2026
4383335
Remove OpenTUI agent skill
batuhan May 16, 2026
ca16e32
Add CLI plugin SDK and plugin support
batuhan May 16, 2026
6065dc5
Fix pnpm CI and release packaging workflow
batuhan May 16, 2026
60c4e8b
Use pnpm for Homebrew archive installs
batuhan May 16, 2026
fe4a861
Send watch auth headers with ws
batuhan May 16, 2026
bf5f1db
Await list rendering in human output commands
batuhan May 16, 2026
5a3bf3d
Normalize account list shapes and chat retrieve options
batuhan May 16, 2026
cc2281d
Remove unused accounts import
batuhan May 16, 2026
88f2b3e
Remove dead contacts account fallback
batuhan May 16, 2026
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
7 changes: 7 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Changesets

Use `pnpm changeset` in feature branches to describe user-facing package changes.

When changes land on `main`, the release workflow opens or updates a release PR.
Merging that release PR publishes changed packages to npm and creates GitHub
Releases from the generated changelogs.
11 changes: 11 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json",
"changelog": ["@changesets/changelog-github", { "repo": "beeper/pickle" }],
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
29 changes: 0 additions & 29 deletions .github/actions/setup-go/action.yml

This file was deleted.

123 changes: 25 additions & 98 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,115 +2,42 @@ name: CI
on:
push:
branches:
- '**'
- '!integrated/**'
- '!stl-preview-head/**'
- '!stl-preview-base/**'
- '!generated'
- '!codegen/**'
- 'codegen/stl/**'
- "**"
- "!integrated/**"
- "!stl-preview-head/**"
- "!stl-preview-base/**"
- "!generated"
- "!codegen/**"
- "codegen/stl/**"
pull_request:
branches-ignore:
- 'stl-preview-head/**'
- 'stl-preview-base/**'

env:
GOPRIVATE: github.com/beeper/desktop-api-go,github.com/stainless-sdks/beeper-desktop-api-go
- "stl-preview-head/**"
- "stl-preview-base/**"

jobs:
lint:
timeout-minutes: 10
name: lint
runs-on: ${{ github.repository == 'stainless-sdks/beeper-desktop-api-cli' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork

steps:
- uses: actions/checkout@v6

- uses: ./.github/actions/setup-go
with:
stainless-api-key: ${{ secrets.STAINLESS_API_KEY }}

- name: Link staging branch
if: github.repository == 'stainless-sdks/beeper-desktop-api-cli'
run: |
./scripts/link 'github.com/stainless-sdks/beeper-desktop-api-go@${{ github.ref_name }}' || true

- name: Bootstrap
run: ./scripts/bootstrap

- name: Run lints
run: ./scripts/lint

build:
timeout-minutes: 10
name: build
permissions:
contents: read
id-token: write
runs-on: ${{ github.repository == 'stainless-sdks/beeper-desktop-api-cli' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v6

- uses: ./.github/actions/setup-go
with:
stainless-api-key: ${{ secrets.STAINLESS_API_KEY }}

- name: Link staging branch
if: github.repository == 'stainless-sdks/beeper-desktop-api-cli'
run: |
./scripts/link 'github.com/stainless-sdks/beeper-desktop-api-go@${{ github.ref_name }}' || true

- name: Bootstrap
run: ./scripts/bootstrap

- name: Run goreleaser
uses: goreleaser/goreleaser-action@v6.1.0
with:
version: latest
args: release --snapshot --clean --skip=publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Get GitHub OIDC Token
if: |-
github.repository == 'stainless-sdks/beeper-desktop-api-cli' &&
!startsWith(github.ref, 'refs/heads/stl/')
id: github-oidc
uses: actions/github-script@v8
with:
script: core.setOutput('github_token', await core.getIDToken());

- name: Upload tarball
if: |-
github.repository == 'stainless-sdks/beeper-desktop-api-cli' &&
!startsWith(github.ref, 'refs/heads/stl/')
env:
URL: https://pkg.stainless.com/s
AUTH: ${{ steps.github-oidc.outputs.github_token }}
SHA: ${{ github.sha }}
run: ./scripts/utils/upload-artifact.sh

test:
timeout-minutes: 10
name: test
runs-on: ${{ github.repository == 'stainless-sdks/beeper-desktop-api-cli' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- uses: ./.github/actions/setup-go
- uses: actions/setup-node@v6
with:
stainless-api-key: ${{ secrets.STAINLESS_API_KEY }}
node-version: 24
cache: pnpm

- name: Enable pnpm
run: corepack enable

- name: Install dependencies
Comment thread
indent[bot] marked this conversation as resolved.
run: pnpm install --frozen-lockfile

- name: Link staging branch
if: github.repository == 'stainless-sdks/beeper-desktop-api-cli'
run: |
./scripts/link 'github.com/stainless-sdks/beeper-desktop-api-go@${{ github.ref_name }}' || true
- name: Typecheck
run: pnpm typecheck

- name: Bootstrap
run: ./scripts/bootstrap
- name: Test
Comment thread
indent[bot] marked this conversation as resolved.
run: pnpm test

- name: Run tests
run: ./scripts/test
- name: Package Homebrew archive
run: pnpm --filter beeper-cli run pack:homebrew
40 changes: 25 additions & 15 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,27 +11,37 @@ on:
tags:
- "v*"
jobs:
goreleaser:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
- name: Set up Node
uses: actions/setup-node@v6
with:
go-version-file: "go.mod"
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v6.1.0
with:
version: latest
args: release --clean
node-version: 24
cache: pnpm
- name: Enable pnpm
run: corepack enable
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm test
- name: Build Homebrew archive
run: pnpm --filter beeper-cli run pack:homebrew
- name: Publish GitHub release assets
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
tag="${GITHUB_REF_NAME}"
if ! gh release view "${tag}" >/dev/null 2>&1; then
gh release create "${tag}" --title "${tag}" --generate-notes --verify-tag
fi
Comment thread
indent[bot] marked this conversation as resolved.
gh release upload "${tag}" packages/cli/dist/release/*.tar.gz packages/cli/dist/release/homebrew.json --clobber
- name: Publish Homebrew formula
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }}
MACOS_SIGN_P12: ${{ secrets.MACOS_SIGN_P12 }}
MACOS_SIGN_PASSWORD: ${{ secrets.MACOS_SIGN_PASSWORD }}
MACOS_NOTARY_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }}
MACOS_NOTARY_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }}
MACOS_NOTARY_KEY: ${{ secrets.MACOS_NOTARY_KEY }}
run: node scripts/publish-homebrew-formula.mjs
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same scripts/ path bug as the upload step had — only this one wasn't fixed. After the monorepo move there's no scripts/ at the repo root (ls scripts/ returns No such file or directory); the publish script lives at packages/cli/scripts/publish-homebrew-formula.mjs. node scripts/publish-homebrew-formula.mjs from the repo root will fail with Cannot find module, so the formula publish step never runs even after the release assets upload succeeds. Fix with node packages/cli/scripts/publish-homebrew-formula.mjs or set working-directory: packages/cli for this step.

Suggested change
run: node scripts/publish-homebrew-formula.mjs
run: node packages/cli/scripts/publish-homebrew-formula.mjs

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.prism.log
.stdy.log
dist/
node_modules/
/beeper-desktop-cli
*.exe
110 changes: 0 additions & 110 deletions .goreleaser.yml

This file was deleted.

Loading
Loading