Skip to content

Add timeline and reports commands#84

Merged
jeremy merged 4 commits intomainfrom
jeremy-daer/new-apis
Jan 28, 2026
Merged

Add timeline and reports commands#84
jeremy merged 4 commits intomainfrom
jeremy-daer/new-apis

Conversation

@jeremy
Copy link
Copy Markdown
Member

@jeremy jeremy commented Jan 28, 2026

Summary

Adds new CLI commands for the Timeline and Reports APIs from basecamp-sdk PR #39.

New Commands

Timeline - View activity feeds

  • bcq timeline - Account-wide activity feed
  • bcq timeline --in <project> - Project activity timeline
  • bcq timeline me - Current user's activity
  • bcq timeline --person <id> - Specific person's activity

Reports - Cross-project views

  • bcq reports assignable - List people who can be assigned todos
  • bcq reports assigned [person] - Todos assigned to person (defaults to "me")
    • --group-by bucket|date - Group results
  • bcq reports overdue - Overdue todos grouped by lateness
  • bcq reports schedule - Upcoming schedule entries
    • --start/--end - Date window (supports natural language dates)

Changes

  • Update basecamp-sdk to v0.0.0-20260128054241-c856b2d2b56e
  • Add internal/commands/timeline.go
  • Add internal/commands/reports.go
  • Register new commands

Test plan

  • make passes (vet, lint, tests)
  • Each commit compiles independently
  • Manual testing with live Basecamp account

Update to v0.0.0-20260128054241-c856b2d2b56e which adds:
- types.Date for date-only fields (due_on, starts_on)
- Timeline API (Progress, ProjectTimeline, PersonProgress)
- Reports API (AssignablePeople, AssignedTodos, OverdueTodos, UpcomingSchedule)
New command: bcq timeline

Usage:
- bcq timeline              Account-wide activity feed
- bcq timeline --in <proj>  Project activity timeline
- bcq timeline me           Current user's activity
- bcq timeline --person <p> Specific person's activity

Uses SDK Timeline().Progress(), ProjectTimeline(), and PersonProgress() APIs.
New command: bcq reports

Subcommands:
- bcq reports assignable           List assignable people
- bcq reports assigned [person]    Todos assigned to person (defaults to "me")
  --group-by bucket|date           Group results
- bcq reports overdue              Overdue todos grouped by lateness
- bcq reports schedule             Upcoming schedule entries
  --start/--end                    Date window (supports natural language)

Uses SDK Reports().AssignablePeople(), AssignedTodos(), OverdueTodos(),
and UpcomingSchedule() APIs.
Copilot AI review requested due to automatic review settings January 28, 2026 06:10
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds new bcq CLI commands for Basecamp Timeline and Reports APIs, including wiring them into the root command and the command catalog, backed by an updated basecamp-sdk dependency.

Changes:

  • Add bcq timeline command with account/project/person timeline modes.
  • Add bcq reports command group with assignable/assigned/overdue/schedule subcommands.
  • Register new commands in the CLI root and command catalog; bump github.com/basecamp/basecamp-sdk/go.

Reviewed changes

Copilot reviewed 6 out of 7 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
internal/commands/timeline.go Implements the new timeline command and its project/person helpers.
internal/commands/reports.go Implements the new reports command group and subcommands.
internal/commands/commands_test.go Registers new commands in catalog-vs-registered command test.
internal/commands/commands.go Adds timeline and reports to the command catalog.
internal/cli/root.go Registers the new commands on the root CLI command.
go.mod Updates github.com/basecamp/basecamp-sdk/go dependency version.
go.sum Updates checksums for the bumped basecamp-sdk version.

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

- Validate positional arg in timeline: only "me" is supported, error on other values
- Add mutual exclusion check for --person and --project flags in timeline
- Fix flag description consistency: --project is primary, --in is alias
- Fix todos breadcrumb in reports: add --in <project> since project context required
- Fix dateparse comment: note that unrecognized formats are normalized before passthrough
@jeremy jeremy enabled auto-merge (squash) January 28, 2026 06:25
@jeremy jeremy merged commit 9b05826 into main Jan 28, 2026
8 checks passed
@jeremy jeremy deleted the jeremy-daer/new-apis branch January 28, 2026 06:26
jeremy added a commit that referenced this pull request Feb 19, 2026
* Update basecamp-sdk for Timeline and Reports APIs

Update to v0.0.0-20260128054241-c856b2d2b56e which adds:
- types.Date for date-only fields (due_on, starts_on)
- Timeline API (Progress, ProjectTimeline, PersonProgress)
- Reports API (AssignablePeople, AssignedTodos, OverdueTodos, UpcomingSchedule)

* Add timeline command for activity feeds

New command: bcq timeline

Usage:
- bcq timeline              Account-wide activity feed
- bcq timeline --in <proj>  Project activity timeline
- bcq timeline me           Current user's activity
- bcq timeline --person <p> Specific person's activity

Uses SDK Timeline().Progress(), ProjectTimeline(), and PersonProgress() APIs.

* Add reports command for cross-project views

New command: bcq reports

Subcommands:
- bcq reports assignable           List assignable people
- bcq reports assigned [person]    Todos assigned to person (defaults to "me")
  --group-by bucket|date           Group results
- bcq reports overdue              Overdue todos grouped by lateness
- bcq reports schedule             Upcoming schedule entries
  --start/--end                    Date window (supports natural language)

Uses SDK Reports().AssignablePeople(), AssignedTodos(), OverdueTodos(),
and UpcomingSchedule() APIs.

* Address PR review feedback

- Validate positional arg in timeline: only "me" is supported, error on other values
- Add mutual exclusion check for --person and --project flags in timeline
- Fix flag description consistency: --project is primary, --in is alias
- Fix todos breadcrumb in reports: add --in <project> since project context required
- Fix dateparse comment: note that unrecognized formats are normalized before passthrough
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants