Repository navigation
Read a hill chart's progress updates - #990
Conversation
v0.33.0 adds HillChartsService.ListVersions and GetVersion (basecamp-sdk#1061), the reads of a hill chart's progress updates. Nothing else in the CLI breaks. Syncs the vendored MCP model to go/v0.33.0, which serves the two reads as list_hill_chart_versions and get_hill_chart_version in basecamp mcp, and refreshes the Nix vendorHash.
hillcharts updates lists the progress updates on a project's hill chart, newest first, with --limit, --all and --page like other listings, and hillcharts updates show reads one: its note, who made it, and where each tracked todolist sat. show takes the update's ID with --in or --todoset, or its web or API URL, which names the todoset itself; a URL is held to a trusted host and the configured account, and a flag that names another todoset or project is refused rather than overridden. Both resolve the todoset the way hillcharts show does, now one helper shared by show, track and untrack. A presenter schema for Hill::Version leads the list with author and date rather than the constant title, and lists each dot's position and todolist in the detail view.
…dopted account in follow-ups The API also routes a todoset by account alone, so the URL the SDK requests names no project. When --in is given with such a URL, the todoset's own bucket is checked instead. An account taken from a pasted URL is now carried into the breadcrumbs, as other commands that adopt one do.
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
|
Copilot was re-requested on this head but never reported: it has been out across basecamp-sdk, basecamp-cli and basecamp-mcp-server since yesterday, and review requests to it don't register. Rob decided to merge without it. CI is green on this head, Codex reviewed it with no findings, and there are no open threads. |
What
Read a hill chart's progress updates: every time someone moves dots on a hill chart, Basecamp records a progress update with the dots' positions and an optional note.
basecamp hillcharts updates(same asupdates list): a todoset's progress updates, newest first. Flags:--todoset/-t,--in/--project,--limit/-n(default 50),--all,--page.basecamp hillcharts updates show <id|url>: one update, with its dots (- 40/100 Design) and note. Takes an ID with--todoset, or a pasted web or API URL (held to a trusted host and the configured account, and checked against--in/--todosetwhen given). The listing URL gets a hint to useupdatesinstead.--jsonand--mdoutput through a newhill_chart_versionpresenter schema and ahill_dotsfield format. Breadcrumbs point to the update's comments and back to the listing, and keep--account/--profilewhen those weren't inherited.show,trackanduntracknow share one todoset-resolution helper (resolveHillchartTodoset). Their behavior is unchanged.The work is for Hill chart writes in the API. Moving dots and posting a note comes in a stacked draft PR, once the SDK has that operation.
SDK bump
The list and show operations shipped in basecamp-sdk v0.33.0 (
go/v0.33.0, 57e8a94c, basecamp/basecamp-sdk#1061). No Dependabot or sdk-bump PR for that version was open when this branch was cut, so the bump is included here and the PR is based onmain. If sdk-bump opens one later, close it in favor of this PR.go.mod/go.sumto v0.33.0,internal/version/sdk-provenance.jsonupdated.scripts/sync-mcp-model.sh). Catalog counts go from 284 to 286 operations and from 62 to 63 link-paginated. The snapshot addsget_hill_chart_versionandlist_hill_chart_versions.nix/package.nixvendorHash regenerated withmake update-nix-hash.API-COVERAGE.mdgets a new "hill_charts (progress updates)" row;.surfaceis regenerated; the skill gets "hill chart progress" triggers.Testing
make checkpasses locally on the head commit, with golangci-lint v2.11.1 as in CI.hillcharts updatestests (44 including subtests), covering pagination flags and their conflicts, the URL forms (web with fragment, API with and without.json, account-level API route), host/account/project/todoset mismatches refused before any request,--inchecked through the todoset for the account-level URL, and breadcrumbs with an adopted vs. an inherited account. All 34 hillcharts tests pass, plusTestFormatFieldHillDotsin the presenter.e2e/hillcharts.bats15/15, including 7 new tests.e2e/smoke/smoke_hillcharts.bats(updates list,updates show) need a live account. I didn't run the commands against a live or local Basecamp either; the request and response shapes come from the SDK's v0.33.0 fixtures.Review
A cross-family review of the branch found two issues, both fixed in 524b719:
updates showrejected the account-level API URL (/{account}/todosets/{id}/hills/versions/{id}.json, the route the SDK itself requests) because the parser required a/buckets/{project}segment. The project segment is now optional. When--inis given with such a URL, the todoset's own bucket is checked instead. Tests cover the route with and without.json.--account, or adopted from a pasted URL, so a copied follow-up ran against the default account. Both commands now capture the follow-up scope before resolving the account, and append it to every breadcrumb.Codex reviewed 524b719 and found no issues. Copilot was requested on 524b719 but hasn't reviewed: it hasn't reviewed any PR in bc3, basecamp-sdk or basecamp-cli since 16:02 UTC today. The first CI run's race shard 4 failed while listing tests, before any test ran, and passed on a rerun. Test listing succeeds locally.