Skip to content

Carry an explicit project into the bare boost list usage hint - #591

Open
jeremy wants to merge 1 commit into
mainfrom
drop-account-wide-boosts
Open

Carry an explicit project into the bare boost list usage hint#591
jeremy wants to merge 1 commit into
mainfrom
drop-account-wide-boosts

Conversation

@jeremy

@jeremy jeremy commented Jul 30, 2026

Copy link
Copy Markdown
Member

Why

This PR set out to withdraw the CLI's account-wide boost listing ahead of BC5 removing GET /:account/boosts.json (basecamp/bc3#12464; diagnosis basecamp/bc3#12458). While it was in flight, #590 landed the same withdrawal as part of bounding all the account-wide listings — item-ID-required boost list, --all-projects gone, .surface/.surface-breaking acknowledgments, docs, and the guard tests — and #594 adopted SDK v0.11.0, which dropped Everything().Boosts() entirely (basecamp/basecamp-sdk#504). The original body's premise that the SDK method stays is obsolete.

Rebased onto post-#590/#594 main, one refinement from this branch survives that #590 did not pick up: the missing-ID error for boost list is project-aware.

What

  • A bare boost list that names a project explicitly — via --project, its --in alias, or the root-level flag that lands in app.Flags.Project — now gets a usage hint that carries the project forward into the corrected invocation (Pass the item's ID or URL: basecamp boost list <id> --project my-project) instead of the generic missing-argument path. An explicit --event rides along in the same hint rather than being silently dropped from the correction. A config-supplied project still takes the generic path: only an explicit flag is a statement of intent worth echoing back.
  • Everything else this PR originally carried was absorbed: the flag removal, account-wide code deletion, .surface-breaking entries (already present on main at lines 136–137), ACCOUNT-WIDE-LISTINGS.md/API-COVERAGE.md/SKILL.md updates, and the bare/configured-project/--event guard tests all resolve to main's versions with no residual delta.

Tests

  • New TestBoostListExplicitProjectWithoutIDCarriesProjectIntoHint pins the contract across all three flag forms plus the --event combination, and asserts no request reaches the API. Shown red against pre-change main, where a bare interactive invocation answered with help and a nil error rather than a structured usage error.
  • make check (fmt, vet, lint, unit, e2e, surface, skill-drift, smoke-coverage, provenance, tidy) and make check-surface-compat both pass.

Copilot AI review requested due to automatic review settings July 30, 2026 16:21
@github-actions github-actions Bot added commands CLI command implementations tests Tests (unit and e2e) skills Agent skills docs breaking Breaking change labels Jul 30, 2026
@github-actions

Copy link
Copy Markdown

⚠️ Potential breaking changes detected:

  • The account-wide boost listing functionality has been removed, including the 'list' command functionality for retrieving boosts across all projects without specifying an ID.
  • The '--all-projects' flag for the 'boost list' command has been removed.
  • The behavior of the 'boost list' command has changed. It now requires specifying an item ID or URL, which could break existing scripts relying on default account-wide boost listing.

Review carefully before merging. Consider a major version bump.

@github-actions github-actions Bot added the enhancement New feature or request label Jul 30, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4e88f2cf90

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread API-COVERAGE.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR removes the CLI’s account-wide boost list behavior and the --all-projects flag to avoid calling the soon-to-be-withdrawn BC5 endpoint (GET /:account/boosts.json), keeping boost list item-scoped only and updating docs/surface tracking accordingly.

Changes:

  • Remove boost list account-wide fallback + --all-projects flag; keep boost list item-scoped and return a usage hint on bare invocation.
  • Update unit tests to assert bare boost list is a usage error and makes no API requests; remove now-obsolete account-wide route stubs/tests.
  • Update docs and CLI surface metadata to reflect the removal (SKILL.md, ACCOUNT-WIDE-LISTINGS.md, API-COVERAGE.md, .surface, .surface-breaking).

Tip

If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
internal/commands/boost.go Removes account-wide boost listing + --all-projects; makes boost list item-scoped and returns a usage hint when no ID is provided.
internal/commands/boost_test.go Reworks boost list tests around the new “usage error, no API call” behavior; deletes account-wide listing tests.
internal/commands/accountwide_test.go Drops boost from account-wide listing todolist rejection coverage since it no longer has an account-wide path.
skills/basecamp/SKILL.md Updates documentation to reflect 7 (not 8) account-wide list commands.
ACCOUNT-WIDE-LISTINGS.md Updates the method matrix/invariants to reflect removal of the account-wide boost aggregate.
API-COVERAGE.md Updates EverythingService coverage note/matrix to reflect 16/17 reachable methods due to boost feed withdrawal.
.surface Removes --all-projects from basecamp boost(s) list.
.surface-breaking Records the removed --all-projects flags as acknowledged breaking surface changes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread internal/commands/boost.go Outdated
Copilot AI review requested due to automatic review settings July 31, 2026 20:05
@jeremy
jeremy force-pushed the drop-account-wide-boosts branch from 4e88f2c to 1caccdb Compare July 31, 2026 20:05
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions github-actions Bot removed skills Agent skills docs labels Jul 31, 2026
@jeremy jeremy changed the title Withdraw account-wide boost listing (bc3 #12464) Carry an explicit project into the bare boost list usage hint Jul 31, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

PR #590 withdrew the account-wide boost listing (bc3 #12464) while this
branch was in flight, absorbing its flag removal, surface
acknowledgments, docs, and most of its tests. What survives is the one
refinement #590 did not pick up: a bare `boost list` that names a
project — via --project, its --in alias, or the root-level flag — gets a
usage hint that carries that project forward into the corrected
invocation, instead of the generic missing-argument path. An explicit
--event rides along in the same hint rather than being silently dropped
from the correction. A config-supplied project still takes the generic
path: only an explicit flag is a statement of intent worth echoing back.

The new test pins the contract across all three flag forms plus the
--event combination, and asserts no request reaches the API. It fails
against the pre-change code, where a bare interactive invocation
answered with help and a nil error rather than a structured usage error.
Copilot AI review requested due to automatic review settings July 31, 2026 20:08
@jeremy
jeremy force-pushed the drop-account-wide-boosts branch from 1caccdb to 5f1f4a2 Compare July 31, 2026 20:08
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@jeremy
jeremy requested a review from Copilot July 31, 2026 20:13
@jeremy jeremy removed the breaking Breaking change label Jul 31, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commands CLI command implementations enhancement New feature or request tests Tests (unit and e2e)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants