Skip to content

Commit e14f005

Browse files
authored
Show who completed a to-do or card, and when, by bumping basecamp-sdk to 63115e79 (#942)
* Show who completed a to-do or card, and when, by bumping basecamp-sdk to 63115e79 The CLI read cards and to-dos through SDK types that had no `completion`, so `--json` output said `"completion": null` and `"completer": null` on every completed item, though Basecamp sends who and when. basecamp-sdk#1033 models `completion` on to-dos, cards and subtasks and fills Go's `Completer` and `CompletedAt` from it. Pin the SDK at that merge (scripts/bump-sdk.sh) and re-vendor the MCP model from it (scripts/sync-mcp-model.sh). * Update the Nix vendorHash for the basecamp-sdk bump The Nix flake build computed sha256-hun/… for the go modules at the new pin.
1 parent 9242a3b commit e14f005

6 files changed

Lines changed: 57 additions & 13 deletions

File tree

‎go.mod‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ require (
88
charm.land/bubbles/v2 v2.2.1
99
charm.land/bubbletea/v2 v2.1.0
1010
charm.land/lipgloss/v2 v2.0.6
11-
github.com/basecamp/basecamp-sdk/go v0.27.1-0.20261022210749-d69e9669709e
11+
github.com/basecamp/basecamp-sdk/go v0.27.1-0.20261022230746-63115e7978c9
1212
github.com/basecamp/cli v0.2.2-0.20260828230226-767413fc712d
1313
github.com/basecamp/mcp v0.0.0-20260828100356-2d6f44b51e9d
1414
github.com/basecamp/surfguard/go v0.1.0

‎go.sum‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuP
8989
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
9090
github.com/basecamp/actioncable-go v1.2.0 h1:t0MxlfMTcmaGXZ5ztgKRs7ZiY1MwXtBRwSSSAh1ofVg=
9191
github.com/basecamp/actioncable-go v1.2.0/go.mod h1:ezaV5z1GXQAsqyejqTs6wCFl2D8Wj+COLQkHc/kwoRs=
92-
github.com/basecamp/basecamp-sdk/go v0.27.1-0.20261022210749-d69e9669709e h1:NTjvf3v/uIGLApp9Gs5YsWkGBHyMAz7CONtIr855SBE=
93-
github.com/basecamp/basecamp-sdk/go v0.27.1-0.20261022210749-d69e9669709e/go.mod h1:mUm/MQGMyg1E1cddyxdG7tQHiq0NsYee2zUeAUT5VjU=
92+
github.com/basecamp/basecamp-sdk/go v0.27.1-0.20261022230746-63115e7978c9 h1:ZcW7c/cnQTgFkNHMcnkxPqHIko2d0v2MrOgyykBrOj0=
93+
github.com/basecamp/basecamp-sdk/go v0.27.1-0.20261022230746-63115e7978c9/go.mod h1:mUm/MQGMyg1E1cddyxdG7tQHiq0NsYee2zUeAUT5VjU=
9494
github.com/basecamp/cli v0.2.2-0.20260828230226-767413fc712d h1:jAzDrCCzDpIwhbFT1xVVs0z2xpXoDEkomHfKB2bUUp8=
9595
github.com/basecamp/cli v0.2.2-0.20260828230226-767413fc712d/go.mod h1:iTBTaWvsPEFIcZfkxQHEfISyJ6sZ7036K6bNx0RY3EE=
9696
github.com/basecamp/mcp v0.0.0-20260828100356-2d6f44b51e9d h1:zEQVGq1x1nhKMZ2TudFAcSJ32CHT8richI1vQakIKz4=

‎internal/mcpserver/model/PROVENANCE.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"source": "github.com/basecamp/basecamp-sdk",
3-
"commit": "d69e9669709e121b5336560e2476c460d8f06d04",
4-
"ref": "v0.27.1-1-gd69e9669",
3+
"commit": "63115e7978c989a271220cee8b025135315db882",
4+
"ref": "v0.27.1-3-g63115e79",
55
"files": ["behavior-model.json", "openapi.json"],
66
"synced_by": "scripts/sync-mcp-model.sh",
77
"patches": "binary-upload operations dropped because the toolkit refuses their non-JSON bodies (EXCLUDED_OPERATIONS) and the stream-ticket mint dropped by policy (POLICY_EXCLUDED_OPERATIONS); no tag patches applied (PATCHED_TAGS is empty — the export tags every operation) — see the sync script"

‎internal/mcpserver/model/openapi.json‎

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30740,12 +30740,18 @@
3074030740
"completed": {
3074130741
"type": "boolean"
3074230742
},
30743+
"completion": {
30744+
"$ref": "#/components/schemas/RecordingCompletion"
30745+
},
3074330746
"completed_at": {
3074430747
"type": "string",
30748+
"deprecated": true,
30749+
"description": "This shape is deprecated since 2026-10: Never sent by Basecamp; read completion.created_at instead",
3074530750
"x-go-type": "time.Time",
3074630751
"x-go-type-import": {
3074730752
"path": "time"
30748-
}
30753+
},
30754+
"x-deprecated-reason": "This shape is deprecated since 2026-10: Never sent by Basecamp; read completion.created_at instead"
3074930755
},
3075030756
"comments_count": {
3075130757
"type": "integer",
@@ -30767,7 +30773,10 @@
3076730773
"$ref": "#/components/schemas/Person"
3076830774
},
3076930775
"completer": {
30770-
"$ref": "#/components/schemas/Person"
30776+
"$ref": "#/components/schemas/Person",
30777+
"deprecated": true,
30778+
"description": "This shape is deprecated since 2026-10: Never sent by Basecamp; read completion.creator instead",
30779+
"x-deprecated-reason": "This shape is deprecated since 2026-10: Never sent by Basecamp; read completion.creator instead"
3077130780
},
3077230781
"assignees": {
3077330782
"type": "array",
@@ -37247,6 +37256,26 @@
3724737256
"name"
3724837257
]
3724937258
},
37259+
"RecordingCompletion": {
37260+
"type": "object",
37261+
"description": "Who completed a to-do, card or subtask, and when.",
37262+
"properties": {
37263+
"created_at": {
37264+
"type": "string",
37265+
"x-go-type": "time.Time",
37266+
"x-go-type-import": {
37267+
"path": "time"
37268+
}
37269+
},
37270+
"creator": {
37271+
"$ref": "#/components/schemas/Person"
37272+
}
37273+
},
37274+
"required": [
37275+
"created_at",
37276+
"creator"
37277+
]
37278+
},
3725037279
"RecordingParent": {
3725137280
"type": "object",
3725237281
"properties": {
@@ -38341,12 +38370,18 @@
3834138370
"completed": {
3834238371
"type": "boolean"
3834338372
},
38373+
"completion": {
38374+
"$ref": "#/components/schemas/RecordingCompletion"
38375+
},
3834438376
"completed_at": {
3834538377
"type": "string",
38378+
"deprecated": true,
38379+
"description": "This shape is deprecated since 2026-10: Never sent by Basecamp; read completion.created_at instead",
3834638380
"x-go-type": "time.Time",
3834738381
"x-go-type-import": {
3834838382
"path": "time"
38349-
}
38383+
},
38384+
"x-deprecated-reason": "This shape is deprecated since 2026-10: Never sent by Basecamp; read completion.created_at instead"
3835038385
},
3835138386
"parent": {
3835238387
"$ref": "#/components/schemas/RecordingParent"
@@ -38358,7 +38393,10 @@
3835838393
"$ref": "#/components/schemas/Person"
3835938394
},
3836038395
"completer": {
38361-
"$ref": "#/components/schemas/Person"
38396+
"$ref": "#/components/schemas/Person",
38397+
"deprecated": true,
38398+
"description": "This shape is deprecated since 2026-10: Never sent by Basecamp; read completion.creator instead",
38399+
"x-deprecated-reason": "This shape is deprecated since 2026-10: Never sent by Basecamp; read completion.creator instead"
3836238400
},
3836338401
"assignees": {
3836438402
"type": "array",
@@ -39032,6 +39070,9 @@
3903239070
"completed": {
3903339071
"type": "boolean"
3903439072
},
39073+
"completion": {
39074+
"$ref": "#/components/schemas/RecordingCompletion"
39075+
},
3903539076
"content": {
3903639077
"type": "string"
3903739078
},
@@ -39883,6 +39924,7 @@
3988339924
},
3988439925
"due_on": {
3988539926
"type": "string",
39927+
"x-basecamp-clearable": {},
3988639928
"x-go-type": "types.Date",
3988739929
"x-go-type-import": {
3988839930
"path": "github.com/basecamp/basecamp-sdk/go/pkg/types"
@@ -39908,6 +39950,7 @@
3990839950
},
3990939951
"due_on": {
3991039952
"type": "string",
39953+
"x-basecamp-clearable": {},
3991139954
"x-go-type": "types.Date",
3991239955
"x-go-type-import": {
3991339956
"path": "github.com/basecamp/basecamp-sdk/go/pkg/types"
@@ -40353,6 +40396,7 @@
4035340396
},
4035440397
"due_on": {
4035540398
"type": "string",
40399+
"x-basecamp-clearable": {},
4035640400
"x-go-type": "types.Date",
4035740401
"x-go-type-import": {
4035840402
"path": "github.com/basecamp/basecamp-sdk/go/pkg/types"

‎internal/version/sdk-provenance.json‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"sdk": {
33
"module": "github.com/basecamp/basecamp-sdk/go",
4-
"version": "v0.27.1-0.20261022210749-d69e9669709e",
5-
"revision": "d69e9669709e",
6-
"updated_at": "2026-10-22T21:07:49Z"
4+
"version": "v0.27.1-0.20261022230746-63115e7978c9",
5+
"revision": "63115e7978c9",
6+
"updated_at": "2026-10-22T23:07:46Z"
77
},
88
"api": {
99
"repo": "basecamp/bc3",

‎nix/package.nix‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildGoModule.override { go = go_1_26; } (finalAttrs: {
88
src = lib.cleanSource ./..;
99

1010
# To update: set to lib.fakeHash, run `nix build`, use the hash from the error.
11-
vendorHash = "sha256-U8sNbyU3V12EDPls/wzFVEBhXAOjGFriXrZnYHckeIs=";
11+
vendorHash = "sha256-hun/i3MPdFGgzl0qYgal3ur2UQVCS+qnnJdFBreVDDY=";
1212

1313
subPackages = [ "cmd/basecamp" ];
1414

0 commit comments

Comments
 (0)