Skip to content

Commit 9f577a0

Browse files
committed
Document project logos in the skill and API coverage
1 parent 8f24608 commit 9f577a0

3 files changed

Lines changed: 40 additions & 3 deletions

File tree

‎API-COVERAGE.md‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@ Coverage of Basecamp 3 API endpoints. Source: [bc3-api/sections](https://github.
66

77
| Status | Sections | Endpoints |
88
|--------|----------|-----------|
9-
| ✅ Implemented | 56 | 216 |
9+
| ✅ Implemented | 57 | 218 |
1010
| ⚠️ Blocked | 0 | 0 |
1111
| ⏭️ Out of scope | 4 | 12 |
12-
| **Total tracked** | **60** | **228** |
12+
| **Total tracked** | **61** | **230** |
1313

14-
**216 of 216 tracked in-scope endpoints.** Moving and copying a recording
14+
**218 of 218 tracked in-scope endpoints.** Uploading and removing a project's
15+
logo (`PUT`/`DELETE /projects/:id/logo.json`, added by
16+
[bc3#14174](https://github.com/basecamp/bc3/pull/14174) and shipped in
17+
[SDK v0.30.0](https://github.com/basecamp/basecamp-sdk/releases/tag/v0.30.0))
18+
land as `projects logo`. Moving and copying a recording
1519
into another project (`POST /recordings/:id/moves.json`,
1620
`POST /recordings/:id/copies.json`) and reading the background filing they
1721
start (`GET /filings/:id.json`), modelled by
@@ -210,6 +214,7 @@ cannot faithfully cover at least one endpoint for a reason outside the CLI. A
210214
|---------|-----------|-------------|--------|-------|----------|-------|
211215
| **Core** |
212216
| projects | 9 | `projects` | ✅ | BC4 | - | list, show, create, update, delete |
217+
| projects (logo) | 2 | `projects logo` | ✅ | BC5 | - | set (`PUT /projects/:id/logo.json`, multipart `logo`), remove (`DELETE` on the same route; 204 with or without a logo). PNG, JPEG, GIF, WebP, AVIF, HEIF or HEIC up to 5 MB, checked before the upload using a local MIME hint; the server applies its shared image validations. People and agents who can edit the project may change it; others get 403. Project JSON carries `logo {url}` when one is attached, so `projects show` shows it. `GET /projects/:id/logo.json` only redirects to the image `logo.url` already names, so the CLI does not wrap it. Project-scoped via `--in`/`--project` |
213218
| projects (wallpaper) | 2 | `projects wallpaper` | ✅ | BC5 | - | set (`PUT /projects/:id/wallpaper.json`, multipart `wallpaper` with an optional `mode`), remove (`DELETE` on the same route; 204 with or without a wallpaper). `mode` sends `wallpaper_mode` through the existing `PUT /projects/:id.json`, with the current name the SDK requires. PNG, JPEG, GIF, WebP, AVIF, HEIF or HEIC up to 10 MB, checked before the upload using a local MIME hint; the server applies its shared image validations. People and personal assistants follow project-edit permissions; shared agents are refused with 403. Project JSON carries `wallpaper {url, mode}` when one is attached, so `projects show` shows it. Project-scoped via `--in`/`--project` |
214219
| todos | 12 | `todos`, `todo`, `done`, `reopen` | ✅ | BC4 | - | list, show, create, update, complete, uncomplete, position (BC5: `steps` shown on `todos show`, plus `subtasks_count`/`subtasks_completed_count`/`subtasks_url`; edit via `subtasks`). `todos create --loose` creates on the to-do set, outside any list |
215220
| subtasks | 8 | `subtasks` | ✅ | BC5 | - | list (`GET /recordings/:id/subtasks.json`, paginated), show, create (`POST` on the same list route), update (partial; `--no-due`/`--no-assignees` clear), complete/uncomplete (`POST`/`DELETE /subtasks/:id/completion.json`), move (`PUT /subtasks/:id/position.json`, 1-based), delete. Account-scoped flat routes (bc3#12659), so no `--in`. Parents are to-dos and cards only. Same `Kanban::Step` records as `card_table_steps` |

‎skill-evals/cases/project-logo.yml‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
task: Use ./brand.png as the logo for project 55555
2+
tags: [domain, update]
3+
accept:
4+
- 'projects? logo set .*brand\.png'
5+
- '(--in|--project|-p) 55555'
6+
reject:
7+
- 'projects? wallpaper'
8+
- 'projects? update'
9+
- 'basecamp api'

‎skills/basecamp/SKILL.md‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ triggers:
1111
- basecamp subtasks
1212
- basecamp project
1313
- project wallpaper
14+
- project logo
1415
- basecamp cards
1516
- basecamp chat
1617
- basecamp campfire
@@ -254,6 +255,28 @@ basecamp projects wallpaper remove --in "<project>" --json
254255
The URL requires authentication and redirects to the image; it is not a
255256
public image link.
256257

258+
## Project logo
259+
260+
The logo is the image beside a project's name, separate from its wallpaper. The
261+
`projects logo` group sets and removes it, for the project in `--in`/`--project`
262+
or the configured default:
263+
264+
```bash
265+
basecamp projects logo set brand.png --in "<project>" --json
266+
basecamp projects logo remove --in "<project>" --json
267+
```
268+
269+
- People and agents who can edit the project can change its logo. Others get
270+
403, and a project the caller cannot see gets 404; do not retry or route
271+
around either refusal.
272+
- The CLI checks the file's size and MIME hint before uploading; leaf help
273+
names the limits. Server image validations still apply. Removing a logo from
274+
a project that has none succeeds.
275+
- Each command returns the project. `.data.logo` is `{url}`, and is absent when
276+
the project has none; `projects show` carries the same field. The URL
277+
requires authentication and redirects to the image; it is not a public image
278+
link.
279+
257280
## Content and stdin
258281

259282
Command help declares content arguments and stdin support. Titles are generally

0 commit comments

Comments
 (0)