Skip to content

Read a hill chart's progress updates - #990

Merged
robzolkos merged 3 commits into
mainfrom
hillcharts-progress-updates
Oct 30, 2026
Merged

robzolkos merged 3 commits into
mainfrom
hillcharts-progress-updates

Conversation

@robzolkos

@robzolkos robzolkos commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

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 as updates 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/--todoset when given). The listing URL gets a hint to use updates instead.
  • Human, --json and --md output through a new hill_chart_version presenter schema and a hill_dots field format. Breadcrumbs point to the update's comments and back to the listing, and keep --account/--profile when those weren't inherited.
  • show, track and untrack now 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 on main. If sdk-bump opens one later, close it in favor of this PR.

  • go.mod/go.sum to v0.33.0, internal/version/sdk-provenance.json updated.
  • MCP model synced from the v0.33.0 tag (scripts/sync-mcp-model.sh). Catalog counts go from 284 to 286 operations and from 62 to 63 link-paginated. The snapshot adds get_hill_chart_version and list_hill_chart_versions.
  • nix/package.nix vendorHash regenerated with make update-nix-hash.
  • API-COVERAGE.md gets a new "hill_charts (progress updates)" row; .surface is regenerated; the skill gets "hill chart progress" triggers.

Testing

  • make check passes locally on the head commit, with golangci-lint v2.11.1 as in CI.
  • Go: 20 new hillcharts updates tests (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, --in checked through the todoset for the account-level URL, and breadcrumbs with an adopted vs. an inherited account. All 34 hillcharts tests pass, plus TestFormatFieldHillDots in the presenter.
  • BATS: e2e/hillcharts.bats 15/15, including 7 new tests.
  • Not run: the new smoke tests in 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:

  1. Fixed. updates show rejected 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 --in is given with such a URL, the todoset's own bucket is checked instead. Tests cover the route with and without .json.
  2. Fixed. Breadcrumbs dropped an account given with --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.

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.
@robzolkos
robzolkos requested a review from a team as a code owner October 29, 2026 21:08
@robzolkos

Copy link
Copy Markdown
Collaborator Author

@codex review

@github-actions github-actions Bot added commands CLI command implementations sdk SDK wrapper and provenance tests Tests (unit and e2e) skills Agent skills output Output formatting and presentation docs deps labels Oct 29, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-29T21:11:11.907737Z 524b719 Manual request
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: 524b71938d

ℹ️ 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".

@robzolkos

Copy link
Copy Markdown
Collaborator Author

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.

@robzolkos
robzolkos merged commit 5f88c4f into main Oct 30, 2026
56 of 58 checks passed
@robzolkos
robzolkos deleted the hillcharts-progress-updates branch October 30, 2026 15:26
@robzolkos robzolkos mentioned this pull request Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commands CLI command implementations deps docs output Output formatting and presentation sdk SDK wrapper and provenance skills Agent skills tests Tests (unit and e2e)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant