Skip to content

feat(projects): set and remove a project's logo - #974

Merged
robzolkos merged 5 commits into
card-moves-cross-projectfrom
project-logo-cli
Oct 28, 2026
Merged

robzolkos merged 5 commits into
card-moves-cross-projectfrom
project-logo-cli

Conversation

@robzolkos

@robzolkos robzolkos commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Why

basecamp/bc3#14174 lets API clients set and remove a project's logo, the image beside its name, and basecamp-sdk wraps it as of v0.30.0. The CLI has had no way to do either, which is what basecamp/basecamp-sdk#977 asks for.

What changed

  • basecamp projects logo set <file> uploads or replaces the logo. It takes PNG, JPEG, GIF, WebP, AVIF, HEIF or HEIC files up to 5 MB, and refuses any other type before uploading. basecamp projects logo remove removes it, and succeeds when there's no logo.
  • projects show returns logo in JSON, and the detail view says whether one is set.
  • The file check and project read-back that wallpaper used are now shared by both images.

Scope

Verification

  • bin/ci passes.
  • Against a local bc3 server with the logo API, I set a logo from a real PNG and checked that the stored image's bytes match the file. Then I removed it, and the project read back with no logo. SVG, text and oversized files were refused before anything was sent.
  • An independent GPT-6.1-sol review found nothing to fix.

Summary by cubic

Adds projects logo set and logo remove so the CLI can set and remove a project's logo, which previously was only possible through the API.

Written for commit 9dd0eba. Summary will update on new commits.

View guided diff Turn on auto-fix

Copilot AI balanced review requested due to automatic review settings October 27, 2026 20:48
@robzolkos
robzolkos requested a review from a team as a code owner October 27, 2026 20:48
@github-actions github-actions Bot added commands CLI command implementations tests Tests (unit and e2e) skills Agent skills output Output formatting and presentation docs labels Oct 27, 2026
Copilot AI previously approved these changes Oct 27, 2026

Copilot AI 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.

🟢 Approved

No active review issues are reported for the project-logo CLI changes.

No open issues 🎉

What changed in this PR

Adds project-logo management to the CLI using the SDK support introduced in #973, alongside the existing wallpaper commands.

Changes:

  • Adds projects logo set and remove, sharing file validation and project read-back helpers with wallpaper.
  • Exposes logo state in project detail output.
  • Adds command, presentation, and end-to-end coverage, plus documentation and agent guidance.

[!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.

File Description
skills/​basecamp/​SKILL.md Documents logo commands, permissions, and output.
skill-evals/​cases/​project-logo.yml Adds an agent evaluation for setting a logo.
internal/​presenter/​schemas/​project.yaml Includes logo state in project details.
internal/​presenter/​presenter_test.go Tests detail output with and without a logo.
internal/​presenter/​format.go Formats an attached logo as “set.”
internal/​commands/​projects.go Adds logo commands and shares image helpers.
internal/​commands/​projects_logo_test.go Tests uploads, removal, validation, scope, and failures.
internal/​commands/​commands.go Registers logo in the project action catalog.
e2e/​smoke/​smoke_projects_write.bats Exercises logo changes while preserving wallpaper.
e2e/​projects.bats Tests logo help and argument validation.
API-COVERAGE.md Records coverage of logo upload and removal endpoints.
.surface Updates the command surface for logo commands and aliases.

Review effort: Balanced

…ject images

The size cap and the noun in its refusal become arguments, and the
helpers lose their wallpaper names, so a project logo can use them as
they are.
bc3#14174 gives a project a logo, the image beside its name, through
PUT and DELETE /projects/:id/logo.json, and SDK v0.30.0 wraps both.
They follow projects wallpaper: the file is checked for size (5 MB) and
image type before the upload, the project comes from --project, --in or
the default, and each command answers with the project read back, which
now carries .logo {url} when one is attached.
The logo's only field is a signed-in redirect URL, no use to read in a
terminal, so the view says the logo is set and leaves the URL to JSON.
@robzolkos
robzolkos requested a balanced review from Copilot October 28, 2026 05:08
Copilot AI dismissed their stale review, a newer Copilot review was requested October 28, 2026 05:08

Copilot AI 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.

🟢 Approved

No active review issues block the project-logo CLI changes.

No open issues 🎉

Review effort: Balanced

…roject-logo-cli

* origin/card-moves-cross-project:
  refactor(commands): share the move and copy flow across recording types (#975)

# Conflicts:
#	internal/commands/commands.go
@robzolkos
robzolkos merged commit 2f4c9a7 into card-moves-cross-project Oct 28, 2026
25 checks passed
@robzolkos
robzolkos deleted the project-logo-cli branch October 28, 2026 05:34
robzolkos added a commit that referenced this pull request Oct 28, 2026
Lands the CLI moves stack as one change:

- #973 cards move --to-project/--to-card-table, cards copy, wormhole moves answer the card's new id
- #975 one shared move and copy flow for every recording type
- #976 todos move --to-project/--to-list (bulk), todos copy, todolists and todolistgroups move/copy
- #977 messages, Docs & Files (bulk, --to-folder), card table columns, schedule entries, check-in questions, email forwards, whole tools; basecamp filings show; a guard refusing container flags a move or copy would ignore
- #974 projects logo set/remove

Pins basecamp-sdk v0.31.0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commands CLI command implementations docs output Output formatting and presentation skills Agent skills tests Tests (unit and e2e)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants