VS Code extension that previews Archify diagrams from their JSON sources (live, as you type) and opens rendered Archify HTML in a viewer tab. Bundles the Archify 3.0.1 renderer and runs it on VS Code's Node runtime. Adds validation diagnostics, JSON schema help, source-link navigation, export saving, render-to-file and open-in-browser commands. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
83 lines
3.3 KiB
Markdown
83 lines
3.3 KiB
Markdown
# Brand marks
|
|
|
|
Use a brand mark only when a real product, provider, model family, channel, or
|
|
service identity helps the reader. Semantic `type` still explains what the node
|
|
does; `brand` explains whose product it is.
|
|
|
|
## Agent decision path
|
|
|
|
1. Search the built-in catalogue when the request names a recognizable brand:
|
|
|
|
```bash
|
|
node bin/archify.mjs brands "Claude" --json
|
|
```
|
|
|
|
2. Put the returned canonical ID in the node, participant, or state:
|
|
|
|
```json
|
|
{
|
|
"id": "planner",
|
|
"type": "backend",
|
|
"label": "Claude",
|
|
"brand": "claude"
|
|
}
|
|
```
|
|
|
|
3. If there is no catalogue match and the user supplied the official website,
|
|
capture its icon explicitly:
|
|
|
|
```bash
|
|
node bin/archify.mjs brands capture "https://partner.example.com" --json
|
|
```
|
|
|
|
Put the command's digest-pinned `brand` value in the authored node:
|
|
|
|
```json
|
|
{
|
|
"id": "partner",
|
|
"type": "external",
|
|
"label": "Partner portal",
|
|
"brand": {
|
|
"url": "https://partner.example.com",
|
|
"sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
|
|
}
|
|
}
|
|
```
|
|
|
|
4. If there is no match and no user-provided URL, omit `brand`. Do not invent a
|
|
URL or silently assign a visually similar company.
|
|
|
|
Known-brand URLs resolve to the bundled vector instead of using the network.
|
|
For discovered icon `href` attributes, capture decodes the basic named references
|
|
`amp`, `quot`, `apos`, `lt`, `gt` (and their defined uppercase aliases), plus
|
|
decimal and hexadecimal numeric references, once before URL resolution. Thus
|
|
`/icon.png?v=1&size=32` requests `/icon.png?v=1&size=32`. URL percent escapes
|
|
remain intact; nested escapes are not decoded recursively. This bounded decoder
|
|
does not add a general HTML parser or support every named HTML entity.
|
|
HTML reads stop at an explicit head ending outside comments, raw-text elements
|
|
and quoted attributes, including when those tokens span network chunks. The
|
|
256 KiB head limit and capture deadline still apply; a larger body after the
|
|
head is not read for icon discovery.
|
|
Unknown URL capture accepts only bounded raster image formats, blocks
|
|
credentials, nonstandard public ports, and private or link-local destinations,
|
|
uses bounded concurrency and one total deadline, and returns the captured
|
|
content digest. Later render and validate operations require that exact digest;
|
|
blocked, unavailable, changed, oversized, or unsafe content fails closed instead
|
|
of silently changing the artifact.
|
|
|
|
Page, icon and redirect requests send `Accept-Encoding: identity`. Capture does
|
|
not decompress response bodies: a successful response declaring another content
|
|
coding is closed and rejected explicitly. This keeps the existing byte limits
|
|
and pinned digest tied to the unencoded representation. A later usable icon may
|
|
still succeed; otherwise an encoding error is retained instead of being hidden
|
|
by an unrelated favicon 404.
|
|
|
|
The final artifact never fetches a brand asset when opened. Preset vectors and
|
|
digest-verified captured site icons remain embedded in SVG, PNG, WebP, JPEG,
|
|
Share Card, and WebM exports.
|
|
|
|
Use `node bin/archify.mjs brands --json` to inspect all canonical IDs, aliases,
|
|
categories, domains, and provenance. Current categories cover AI, cloud,
|
|
engineering, data, collaboration, business systems, channels, languages, and
|
|
frameworks.
|