Skip to content

Expose client visibility at create time (#457) — blocked on SDK#554

Draft
jeremy wants to merge 4 commits into
mainfrom
feat/client-visibility-at-create
Draft

Expose client visibility at create time (#457) — blocked on SDK#554
jeremy wants to merge 4 commits into
mainfrom
feat/client-visibility-at-create

Conversation

@jeremy

@jeremy jeremy commented Jul 22, 2026

Copy link
Copy Markdown
Member

Draft — blocked on the Basecamp Go SDK. Unblocker: basecamp/basecamp-sdk#395. Refs #457.

Root cause

The CLI can't set a recording's client visibility at create time because the SDK's create-request types don't carry the field.

  • Server is ready: Basecamp (bc3 master) accepts a top-level visible_to_clients boolean on create, e.g. POST /message_boards/:board_id/messages.json with a flat body {"subject":"…","content":"…","visible_to_clients":true}. Omitted → inherits the parent's visibility; client users are forced visible.
  • SDK is the blocker: none of the six target create inputs (CreateMessageRequest, CreateTodolistRequest, CreateQuestionRequest, CreateScheduleEntryRequest, CreateDocumentRequest, CreateUploadRequest), nor the generated bodies or Smithy shapes, carry visible_to_clients at the pinned v0.8.0. Only the separate SetClientVisibility PUT exists. Repo policy forbids raw generated-client calls and routes SDK blockers to an SDK issue — hence Agent not passing --agent when requesting --md output mode #395.

A create-then-toggle two-step would work for messages today but is non-atomic and can't touch cards/todos/comments (they inherit and 403). We're not shipping that; the clean path is the create-time param.

This PR

Adds SDK-GAP-457.md — the design communiqué behind SDK issue #395: the API contract, the required SDK change (tri-state *bool across all six inputs), and the CLI wiring that follows. The file is transient and is deleted in the commit that wires the feature; these links and the scope split are retained here in the PR body.

Scope

The SDK field must be tri-state (*bool: nil=inherit / true / false) so explicit --visible-to-clients=false sends false rather than being dropped and inheriting — see #395 (AllDay precedent).

#457 closure (locked)

#457 completes only when all four initial commands (messages, todolists, check-in questions, schedule entries) are wired. A messages-first PR may ship earlier but keeps Refs #457 and leaves #457 open; the switch to Fixes #457 happens only once all four are wired. Docs/uploads (#556) are outside the #457 boundary.

Next steps

  1. Land SDK Agent not passing --agent when requesting --md output mode #395 (messages input first).
  2. make bump-sdk, wire the flag (req.VisibleToClients = &visibleToClients only when the flag changed), tests for nil/true/false, regenerate .surface, update SKILL.md, bin/ci green.
  3. Delete SDK-GAP-457.md; flip to ready when all four are wired (Refs #457Fixes #457).

Basecamp (bc3 master) accepts a top-level visible_to_clients param at
create time, but the Go SDK's create-request types don't carry it, so the
CLI can't pass it without an out-of-lane SDK change. Record the required
SDK change (Smithy create inputs -> generated -> wrapper -> mapping) and
the CLI wiring that follows in SDK-GAP-457.md.
Copilot AI review requested due to automatic review settings July 22, 2026 20:02
@github-actions github-actions Bot added docs documentation Improvements or additions to documentation labels Jul 22, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Adds an SDK gap communiqué documenting what the Basecamp Go SDK must expose to let the CLI set visible_to_clients at recording create time (blocking CLI issue #457), so the eventual --visible-to-clients flag can be implemented atomically.

Changes:

  • Add SDK-GAP-457.md describing server behavior, in-scope recording types, and the specific SDK shape/wrapper/mapping changes needed.
  • Document the intended follow-on CLI wiring steps after an SDK bump.

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.


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

Comment thread SDK-GAP-457.md
Comment thread SDK-GAP-457.md Outdated
Comment thread SDK-GAP-457.md Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

All reported issues were addressed across 1 file

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread SDK-GAP-457.md Outdated
Comment thread SDK-GAP-457.md
Comment thread SDK-GAP-457.md Outdated
…cs/uploads

Address review of SDK-GAP-457.md:
- Fix message create contract: POST /message_boards/:board_id/messages.json
  with a flat body; the visible_to_clients key is top-level.
- Require *bool tri-state (nil=inherit, true, false) end-to-end instead of
  bool,omitempty, which drops explicit false; cite the AllDay precedent.
- Defer docs/uploads: they accept arbitrary folder IDs and nested vaults
  inherit folder visibility (silent no-op), so gate or defer before wiring.
- Scope the verified gap to SDK v0.8.0; correct the lane-policy wording.
- Link SDK tracking issue basecamp/basecamp-sdk#395 as the unblocker.
Copilot AI review requested due to automatic review settings July 22, 2026 20:41

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.

Comment thread SDK-GAP-457.md Outdated
Comment thread SDK-GAP-457.md Outdated
Comment thread SDK-GAP-457.md Outdated
…ink follow-ups

- Reference 'this PR' instead of a hard-coded PR number (drift-prone).
- Point at function/struct identifiers instead of line numbers (files.go,
  schedules.go).
- Link deferred docs/uploads to CLI follow-up #556; note the SDK should still
  expose those inputs for completeness (#395 covers all six) while the CLI
  withholds only the flag.
- Clarify #457 closure sequencing (four-together vs messages-first).
Copilot AI review requested due to automatic review settings July 22, 2026 21:02

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 2 comments.

Comment thread SDK-GAP-457.md Outdated
Comment thread SDK-GAP-457.md Outdated
… locked #457 boundary

- Requested SDK change now targets all six inputs in the implementation steps
  (message, todolist, question, schedule entry, document, upload), matching the
  surrounding completeness note; no more four-now/two-later contradiction.
- Gap evidence lists the six actual target wrappers (CreateMessageRequest,
  CreateTodolistRequest, CreateQuestionRequest, CreateScheduleEntryRequest,
  CreateDocumentRequest, CreateUploadRequest), not the unrelated card/todo/
  comment structs.
- Lock #457 completion boundary to the four initial commands; messages-first
  stays Refs #457 until all four are wired.
Copilot AI review requested due to automatic review settings July 22, 2026 21:09

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

All reported issues were addressed across 1 file (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread SDK-GAP-457.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Expose client_visibility on recording-creating commands (messages, cards, etc.)

2 participants