Add Bubble Up Now and Pop commands - #164
Conversation
|
@basecamp/cli The Test, CI, and Security workflows are currently waiting for maintainer approval ( |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds Bubble Up mutation commands to the HEY CLI (bubble an exact posting now, or pop it back out), including verification logic and documentation updates, alongside SDK-driven API signature adjustments.
Changes:
- Introduces
hey bubble-up-nowandhey popcommands with exact posting/topic preflight and post-mutation verification. - Adds unit tests for Bubble Up behaviors and a new smoke test exercising the real CLI against an authenticated account.
- Updates docs/surface area and adapts callsites to updated SDK types/signatures (calendar recordings params, timetrack start, mute vs ignore in TUI).
Reviewed changes
Copilot reviewed 16 out of 17 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/smoke/bubble_up_test.go | Adds an end-to-end smoke test for Bubble Up + Pop using real CLI calls |
| skills/hey/SKILL.md | Documents new Bubble Up commands and the “exact posting/topic pair” requirement |
| internal/tui/mail.go | Renames “ignore” action/binding to “mute” and routes to SDK mute call |
| internal/tui/calendar.go | Adjusts recordings query params to new SDK pointer fields |
| internal/cmd/timetrack.go | Updates timetrack start to new SDK method signature |
| internal/cmd/sdk.go | Updates recordings params to new SDK pointer fields |
| internal/cmd/root.go | Registers the new Bubble Up commands |
| internal/cmd/reply.go | Refactors reply logic into helper for reuse |
| internal/cmd/recordings.go | Updates recordings params to new SDK pointer fields |
| internal/cmd/compose.go | Reuses reply helper for thread-targeted compose flow |
| internal/cmd/bubble_up_test.go | Adds comprehensive unit tests for Bubble Up/Pop behaviors |
| internal/cmd/bubble_up.go | Implements Bubble Up Now / Pop commands with guarded mutation + verification |
| go.mod | Bumps hey-sdk and related deps to match new API/types |
| go.sum | Updates checksums for bumped dependencies |
| README.md | Adds examples and behavior notes for new Bubble Up commands |
| API-COVERAGE.md | Documents new endpoints/coverage for Bubble Up mutations |
| .surface | Adds new commands/flags to surfaced CLI trigger list |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
b7bfeeb to
7bcbcf6
Compare
|
@basecamp/cli PR #164 is now rebased onto current main at 8d3e675, uses released hey-sdk v0.7.0, and has all review threads resolved at head 7bcbcf6. Focused tests, full make check, make build, surface compatibility, smoke-suite compilation, and the 70.8% coverage floor pass locally. Test, Security, and CodeQL Advanced are action_required; please approve the fork workflows when convenient. |
Summary
hey bubble-up-now <posting-id> --topic-id <topic-id>andhey pop <posting-id> --topic-id <topic-id>.SDK dependency
This pins
github.com/basecamp/hey-sdk/goto current SDK main at3aacc3c01055, becausego/v0.3.0predates the generatedBubbleUpNowandCancelBubbleUpoperations. The first commit contains only the minimal CLI compatibility changes required by that current SDK API. This does not depend on the older reply-draft PR #57 or the conflicting topic-route PR #70. The pseudo-version can be replaced by the next SDK tag when one is cut.Safety and automation behavior
/topics/<id>app_urlreturns retryabletarget_incompletewithout mutation.This strict read path is intentional for automation: two exact postings were absent from parseable
hey box imbox --allresults during separate two-minute polls and appeared later. Historical raw responses were not retained, so the observation cannot distinguish an omitted posting from an incomplete posting shape.Verification
make checkmake check-surface-compat(the repository has no previous tag, so the target reported no tagged baseline)make buildThe production HEY account was inspected read-only to confirm the authenticated Bubble Up forms and state semantics. No live mailbox mutation was performed.
Summary by cubic
Adds
hey bubble-up-now <posting-id> --topic-id <topic-id>andhey pop <posting-id> --topic-id <topic-id>to move an exact posting into and out of Bubble Up, with strict preflight reads and post-mutation verification. Previously the CLI couldn’t control Bubble Up; now it requires an exact posting/topic pair and fails closed on incomplete or mismatched targets.not_found), mismatched posting/topic (target_mismatch), or postings missing a parseable topic inapp_url(target_incomplete).changed/no_op,verified, andbefore/after.internal/cmd/bubble_up.go, registered inroot.go. Uses HEY SDK posting operations (Postings().BubbleUpNow,Postings().CancelBubbleUp); no new HTTP transport. Updates.surface,README.md,skills/hey/SKILL.md,API-COVERAGE.md, and adds focused unit and smoke tests.Migration
app_urlcontains/topics/<id>); do not infer. Retry only after the exact pair is visible in a complete box read.Written for commit 7bcbcf6. Summary will update on new commits.