Conversation
There was a problem hiding this comment.
3 issues found across 12 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="e2e/smoke/smoke_todos_write.bats">
<violation number="1" location="e2e/smoke/smoke_todos_write.bats:94">
P2: Missing `-p "$QA_PROJECT"` flag. Every other ID-based todo command in this file (complete, uncomplete, position, trash, restore) and the analogous `cards update` smoke test all pass `-p "$QA_PROJECT"`. Without it, the command may fail to resolve the project context or silently rely on a `.basecamp/config.json` default that won't exist in CI.</violation>
</file>
<file name="internal/commands/todos_test.go">
<violation number="1" location="internal/commands/todos_test.go:1517">
P3: `TestTodosSubcommandsIncludesUpdate` is a duplicate of the check already performed in `TestTodosSubcommands`, which was modified in this same PR to include `"update"` in its expected list. Remove the redundant test.</violation>
</file>
<file name="internal/commands/todos.go">
<violation number="1" location="internal/commands/todos.go:969">
P1: Missing nil check for `app` after `appctx.FromContext`. All sibling commands guard against `app == nil` before calling `ensureAccount`, which dereferences `app.Config` and will panic on nil.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
There was a problem hiding this comment.
Pull request overview
Adds a new basecamp todos update <id|url> [title] write command to the CLI, aligning behavior with existing “update” patterns and updating the Basecamp Go SDK dependency to support safer partial updates.
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.
Changes:
- Introduce
todos updatewith support for title (positional/flag precedence), description (Markdown→HTML + local images), assignee resolution, due/starts-on, and notify. - Bump
github.com/basecamp/basecamp-sdk/goand adapt schedule/checkins callers to SDK fields that moved to pointer types. - Expand unit + smoke coverage and update CLI surface / API coverage docs to reflect the new command.
Reviewed changes
Copilot reviewed 11 out of 12 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/commands/todos.go | Adds the todos update command implementation and adds an update breadcrumb from todos show. |
| internal/commands/todos_test.go | Adds unit tests for todos update request shaping and help/no-op behavior. |
| e2e/smoke/smoke_todos_write.bats | Adds a smoke test that updates a previously-created todo. |
| internal/commands/commands.go | Registers update in the todos command category metadata. |
| API-COVERAGE.md | Updates coverage table to include todos update. |
| .surface | Updates CLI surface snapshot for the new subcommand and flags. |
| go.mod / go.sum | Bumps Basecamp SDK dependency version. |
| internal/version/sdk-provenance.json | Records SDK + API provenance revisions for the bump. |
| internal/commands/schedule.go | Adapts schedule requests to SDK *bool for AllDay. |
| internal/tui/workspace/views/schedule.go | Adapts TUI schedule create request to SDK *bool for AllDay. |
| internal/commands/checkins.go | Adapts checkins question schedule to SDK *int for Hour/Minute. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3d337269e5
ℹ️ 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".
Edit an existing todo's title, description, assignees, dates, and notify flag. Modeled on `cards update`: positional title takes precedence over `--title`, description goes through Markdown→HTML + local-image resolution, and `--assignee` accepts comma-separated names/IDs. Bumps the SDK to pick up the fix for unsafe partial-update serialization in `TodosService.Update()` (fields are now set conditionally, matching the cards pattern). Adapts checkins and schedule commands to the SDK's new pointer types for `Hour`/`Minute` (*int) and `AllDay` (*bool).
Summary
basecamp todos update <id|url> [title]with flags:--title,--description,--assignee,--due,--starts-on,--notify--titleflag (matchescards steps updatepattern)todos create)resolveAssigneeIDs;--toalias addedTodosService.Update()— fields now set conditionally, matching the cards pattern (Fix unsafe partial-update serialization across all Go SDK Update methods basecamp-sdk#201)Hour/Minute→*int,AllDay→*bool)Triggered by https://3.basecamp.com/2914079/buckets/46292715/card_tables/cards/9693937142
Test plan
bin/cipasses (all checks: lint, vet, unit tests, e2e, catalog parity, surface snapshot, skill drift, smoke coverage, provenance)basecamp todos update <id> "Updated title"— title updated, confirmed viatodos showbasecamp todos update <id> --title "Flag title"— title updatedbasecamp todos update <id> --due "next friday"— due_on set to 2026-03-27, confirmed viatodos showbasecamp todos update <id> --description "**bold**"— HTML description persisted, confirmed viatodos show