From 76a5ab16e39eb13c2f7c24d4d29818c4ca5a2d1a Mon Sep 17 00:00:00 2001 From: jbiskur Date: Sat, 8 Aug 2026 09:24:59 +0100 Subject: [PATCH] feat: add brand assets and Codex interface metadata MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The plugin rendered in Codex with a generic pencil icon and "Website: Unavailable". Root cause: Codex takes presentation metadata from an `interface` object, not from the Agent Plugins `homepage` field, and the package shipped no interface object at all. Adds the Usable mark from the brand kit as assets/usable-icon.svg and assets/usable-logo.png (600x600), and declares interface metadata under extensions["com.openai"] — the namespace the spec sanctions for client-specific data, so the portable core stays untouched. Fields mirror what shipped Codex plugins use: display name, short/long description, developer, category, website, privacy and terms URLs, brand colour #347cbf (the site's theme_color), icon, logo, default prompt. URLs resolved rather than guessed: the apex domain 308-redirects to www, so homepage and the interface URLs use https://www.usable.dev to avoid a redirect hop. /privacy and /terms confirmed 200. Adding assets created two new failure modes, so both are now guarded: - assets/ added to the release archive allowlist, since the allowlist would otherwise silently drop them - the validator now checks client-extension file references are plugin-relative, contained within the plugin root, and actually exist. Verified by deleting the icon and watching validation fail. Three self-tests added (missing asset, path escaping root, non-reverse-domain namespace); suite is 18/18. SVG audited before asserting it is safe in the security docs: it contains only svg, g, path and ellipse elements, with no script, event handlers, href, xlink:href, foreignObject, use, or data: URIs. NOT VERIFIED: whether Codex reads the interface object from the inline com.openai extension. The CLI exposes no way to inspect resolved interface metadata, so this needs a look at the plugin UI. If it still renders unbranded, the documented fallback is a .codex-plugin/plugin.json overlay — which must be added carefully, because skill discovery works today and a malformed overlay could disturb it. Co-Authored-By: Oz --- CHANGELOG.md | 26 +++++++++++++++++++++ assets/usable-icon.svg | 1 + assets/usable-logo.png | Bin 0 -> 47812 bytes docs/permissions-and-data-flow.md | 4 ++++ plugin.json | 26 +++++++++++++++++++-- scripts/build-release.mjs | 1 + scripts/validate-package.mjs | 37 ++++++++++++++++++++++++++++++ tests/smoke/validator.test.mjs | 31 ++++++++++++++++++++++++- 8 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 assets/usable-icon.svg create mode 100644 assets/usable-logo.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 518a5ee..dc0e671 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,32 @@ All notable changes to this project are documented here. Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added +- Usable brand assets: `assets/usable-icon.svg` (composer icon) and `assets/usable-logo.png` + (600×600 logo), taken from the Usable brand kit. +- Codex interface metadata under the `extensions["com.openai"]` namespace in `plugin.json`: + display name, short and long descriptions, developer name, category, website, privacy and + terms URLs, brand colour `#347cbf`, icon and logo paths, and a default prompt. +- Validation of client-extension file references: paths must be plugin-relative, must stay + inside the plugin root, and must exist. Three new self-tests cover a missing asset, a path + escaping the root, and a namespace without a reverse domain. + +### Changed +- `assets/` is now included in the release archive allowlist. +- `homepage` and author URL now use the canonical `https://www.usable.dev`, which is where + the apex domain redirects. + +### Notes +- Codex surfaced the plugin with a generic icon and "Website: Unavailable" because it reads + presentation metadata from an `interface` object, not from the Agent Plugins `homepage` + field. **Whether Codex reads that object from the inline `com.openai` extension has not been + verified visually** — the CLI exposes no way to inspect resolved interface metadata. If the + icon and website still do not render, the fallback is a `.codex-plugin/plugin.json` overlay, + which must be added carefully because a malformed overlay could disturb skill discovery that + currently works. + ## 0.1.0 — 2026-08-07 First prerelease. No client has completed all five acceptance steps, so no client is listed diff --git a/assets/usable-icon.svg b/assets/usable-icon.svg new file mode 100644 index 0000000..034e35c --- /dev/null +++ b/assets/usable-icon.svg @@ -0,0 +1 @@ + diff --git a/assets/usable-logo.png b/assets/usable-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..629384cf329120dc59838aaf2d82a4486a3651ba GIT binary patch literal 47812 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/permissions-and-data-flow.md b/docs/permissions-and-data-flow.md index 9e5e34e..160d536 100644 --- a/docs/permissions-and-data-flow.md +++ b/docs/permissions-and-data-flow.md @@ -10,9 +10,13 @@ Intended for security reviewers deciding whether to allow this plugin in an orga | Runtime dependencies | None. | | Instruction text | `skills/**/*.md` — plain Markdown, fully auditable. | | Network configuration | One remote MCP server declaration in `mcp.json`. | +| Static images | `assets/usable-icon.svg` and `assets/usable-logo.png` — branding only, no scripts. | | Credentials | None. | | Local filesystem access | None requested by the plugin itself. | +The SVG contains only path geometry. It declares no `