From 5216a6cc8e0ff7da6a569ec945fc7c4e3925bc50 Mon Sep 17 00:00:00 2001 From: lmjabreu Date: Sat, 17 Oct 2026 10:47:37 +0100 Subject: [PATCH 1/3] docs: document how to change the CLI icon Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 4 ++++ CODEBASE.md | 2 +- docs/icon.md | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 docs/icon.md diff --git a/AGENTS.md b/AGENTS.md index 0139a3a..2cf1d81 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -102,3 +102,7 @@ After updating `SKILL_CONTENT`: 2. Run `tdc skill update claude-code` (and any other installed agents) to propagate changes to installed skill files A CI check (`npm run check:skill-sync`) runs on pull requests and will fail if `skills/comms-cli/SKILL.md` is out of sync with `content.ts`. + +## Changing the CLI icon + +Follow [docs/icon.md](docs/icon.md). Never rename or delete files in `icons/`: OAuth clients registered by released versions keep the `logo_uri` they sent, so every path a release has used must keep serving the icon. diff --git a/CODEBASE.md b/CODEBASE.md index 64ff133..c19b60a 100644 --- a/CODEBASE.md +++ b/CODEBASE.md @@ -23,7 +23,7 @@ come from `@doist/cli-core`. ├─ scripts/ # sync-skill.js, check-skill-sync.js, postinstall.js ├─ dist/ # Build output (tsc). Never edit. ├─ skills/comms-cli/ # Generated SKILL.md (from src/lib/skills/content.ts) -├─ docs/ # SPEC.md, comms-search.md (design notes) +├─ docs/ # SPEC.md, comms-search.md (design notes), icon.md (changing the icon) ├─ icons/ # OAuth callback / skill logo assets ├─ .github/workflows/ # test, lint, release, check-skill-sync, │ # check-semantic-pull-request, issue-automation, diff --git a/docs/icon.md b/docs/icon.md new file mode 100644 index 0000000..d0169e5 --- /dev/null +++ b/docs/icon.md @@ -0,0 +1,35 @@ +# Changing the CLI icon + +The icon shows in four places. + +| Where | What it shows | +| --------------------------------------- | -------------------------------------------------------------------------------- | +| OAuth consent screen (`tdc auth login`) | The URL in `LOGO_URI` (`src/lib/auth-constants.ts`), or an older one (see below) | +| Sign-in result pages in the browser | The URL in `LOGO_URI` | +| README (GitHub and npm) | `icons/comms-cli.png` | +| Comms web, Settings → Integrations | Its own copies in `Doist/comms-web` | + +## 1. Export the artwork + +The source is the `Size=72, Style=Color` variant of [Service / Comms CLI](https://www.figma.com/design/xo9yAsH8PQUpi0eTJh9pmR/?node-id=15223-1259) in Product Library – Global. + +- Export a **512×512 PNG**. +- Don't export SVG. The artwork uses blend modes that SVG export drops, so the tile renders pale. + +## 2. Replace the repo file + +Overwrite `icons/comms-cli.png` with the new PNG, keeping the name. It's the `LOGO_URI` (consent screen and sign-in result pages) and the README header. + +**Never rename or delete it.** `tdc` registers an OAuth client the first time it signs in (one per callback port) and reuses it. Todoist stores the client's `logo_uri` at registration and never refreshes it, so every URL a released version has sent must keep serving the icon. If you ever change `LOGO_URI`, keep the old file in place too. (3.6.1 to 3.6.3 registered `icons/comms-cli_512px.png`, which has since been removed, so clients first registered by those versions show Todoist's fallback icon.) + +The consent screen picks up a replaced file as soon as it's on `main` (allow about ten minutes: GitHub's raw files and Todoist's image proxy each cache for five). No release is needed unless `LOGO_URI` itself changes. + +## 3. Update Comms web + +`Doist/comms-web` keeps its own copies for the CLI card in Settings → Integrations: + +- `src/settings/integrations/comms-cli-icon.png` (32×32) +- `src/settings/integrations/comms-cli-icon@2x.png` (64×64) +- `src/settings/integrations/comms-cli-icon@3x.png` (96×96) + +Resize the 512px PNG to those sizes and open a PR there. From d5c5294f5dfc51aacc01e23bf23e1583236dec3e Mon Sep 17 00:00:00 2001 From: lmjabreu Date: Wed, 21 Oct 2026 08:14:26 +0100 Subject: [PATCH 2/3] docs: 3.6.4 also registered the removed icon path Co-Authored-By: Claude Opus 5.5 --- docs/icon.md | 2 +- src/lib/auth-constants.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/icon.md b/docs/icon.md index d0169e5..ac279cd 100644 --- a/docs/icon.md +++ b/docs/icon.md @@ -20,7 +20,7 @@ The source is the `Size=72, Style=Color` variant of [Service / Comms CLI](https: Overwrite `icons/comms-cli.png` with the new PNG, keeping the name. It's the `LOGO_URI` (consent screen and sign-in result pages) and the README header. -**Never rename or delete it.** `tdc` registers an OAuth client the first time it signs in (one per callback port) and reuses it. Todoist stores the client's `logo_uri` at registration and never refreshes it, so every URL a released version has sent must keep serving the icon. If you ever change `LOGO_URI`, keep the old file in place too. (3.6.1 to 3.6.3 registered `icons/comms-cli_512px.png`, which has since been removed, so clients first registered by those versions show Todoist's fallback icon.) +**Never rename or delete it.** `tdc` registers an OAuth client the first time it signs in (one per callback port) and reuses it. Todoist stores the client's `logo_uri` at registration and never refreshes it, so every URL a released version has sent must keep serving the icon. If you ever change `LOGO_URI`, keep the old file in place too. (3.6.1 to 3.6.4 registered `icons/comms-cli_512px.png`, which has since been removed, so clients first registered by those versions show Todoist's fallback icon.) The consent screen picks up a replaced file as soon as it's on `main` (allow about ten minutes: GitHub's raw files and Todoist's image proxy each cache for five). No release is needed unless `LOGO_URI` itself changes. diff --git a/src/lib/auth-constants.ts b/src/lib/auth-constants.ts index 266c0e2..887578d 100644 --- a/src/lib/auth-constants.ts +++ b/src/lib/auth-constants.ts @@ -4,7 +4,7 @@ export const SECURE_STORE_SERVICE = 'comms-cli' /** * Icon sent as `logo_uri` when registering an OAuth client, and shown on the * local auth result pages. Todoist keeps the URL each client registered with, - * so never rename or delete the file behind it. (3.6.1 to 3.6.3 registered + * so never rename or delete the file behind it. (3.6.1 to 3.6.4 registered * `icons/comms-cli_512px.png`, since removed, so those clients show Todoist's * fallback icon.) */ From af4ba9b6c57ed455d5c6f0d805474c100ed29662 Mon Sep 17 00:00:00 2001 From: lmjabreu Date: Wed, 21 Oct 2026 08:38:33 +0100 Subject: [PATCH 3/3] docs: note the pre-1.5.0 icon URL no longer resolves Co-Authored-By: Claude Opus 5.5 --- docs/icon.md | 2 +- src/lib/auth-constants.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/icon.md b/docs/icon.md index ac279cd..7c59423 100644 --- a/docs/icon.md +++ b/docs/icon.md @@ -20,7 +20,7 @@ The source is the `Size=72, Style=Color` variant of [Service / Comms CLI](https: Overwrite `icons/comms-cli.png` with the new PNG, keeping the name. It's the `LOGO_URI` (consent screen and sign-in result pages) and the README header. -**Never rename or delete it.** `tdc` registers an OAuth client the first time it signs in (one per callback port) and reuses it. Todoist stores the client's `logo_uri` at registration and never refreshes it, so every URL a released version has sent must keep serving the icon. If you ever change `LOGO_URI`, keep the old file in place too. (3.6.1 to 3.6.4 registered `icons/comms-cli_512px.png`, which has since been removed, so clients first registered by those versions show Todoist's fallback icon.) +**Never rename or delete it.** `tdc` registers an OAuth client the first time it signs in (one per callback port) and reuses it. Todoist stores the client's `logo_uri` at registration and never refreshes it, so every URL a released version has sent must keep serving the icon. If you ever change `LOGO_URI`, keep the old file in place too. (1.0.0 to 1.4.0 used a commit-pinned URL that no longer resolves, and 3.6.1 to 3.6.4 registered `icons/comms-cli_512px.png`, which has since been removed, so clients first registered by those versions show Todoist's fallback icon.) The consent screen picks up a replaced file as soon as it's on `main` (allow about ten minutes: GitHub's raw files and Todoist's image proxy each cache for five). No release is needed unless `LOGO_URI` itself changes. diff --git a/src/lib/auth-constants.ts b/src/lib/auth-constants.ts index 887578d..432190e 100644 --- a/src/lib/auth-constants.ts +++ b/src/lib/auth-constants.ts @@ -4,7 +4,8 @@ export const SECURE_STORE_SERVICE = 'comms-cli' /** * Icon sent as `logo_uri` when registering an OAuth client, and shown on the * local auth result pages. Todoist keeps the URL each client registered with, - * so never rename or delete the file behind it. (3.6.1 to 3.6.4 registered + * so never rename or delete the file behind it. (1.0.0 to 1.4.0 used a + * commit-pinned URL that no longer resolves, and 3.6.1 to 3.6.4 registered * `icons/comms-cli_512px.png`, since removed, so those clients show Todoist's * fallback icon.) */