Skip to content

Commit ca34422

Browse files
ndemiancclaude
andcommitted
De-brand the Agents "aquarium" — LevelCode chevron fish, brand-gradient species
The last reachable Microsoft mark in the shipped app. The Agents-window easter egg (sessions.developerJoy.enabled) rendered its swimming "fish" as the literal VS Code logo silhouette — vscodeLogoPath.ts even says so ("VS Code logo silhouette path, extracted from …/vscode-icon.svg") — tinted with VS Code's three RELEASE-CHANNEL colors (#007ACC / #24bfa5 / #E04F00). So Microsoft's logo, in Microsoft's palette, animated across our product. Keep the joy, make it ours: the LevelCode double chevron in our brand-gradient stops (#6a3fe0 / #7069ff / #4fb2ff). All CONTENT swaps in de-brand.mjs — no core patch needed (the patch stays at 11 files). Notes: - the path `from` is a RegExp, so an upstream tweak to the silhouette re-matches and re-swaps instead of silently leaving the VS Code logo in place; - the mark is FILLED (each fish is drawn as clipped vertical slices — a stroke would shred into segments) and spans BODY_X_START..BODY_X_END (5..90) so no head/tail strip is empty; - it's two OVERLAPPING subpaths → fill-rule flipped evenodd→nonzero, else the overlap is knocked out as a hole. Upstream identifiers (vscodeLogoPath.ts, VSCODE_LOGO_PATH, FishSpecies.Insiders) are left alone — internal, never user-visible. Also documents the letterpress watermark as NOT a de-brand issue: it's a generic editor glyph (sidebar + text lines), no VS Code logo/wordmark/colour. de-brand.mjs idempotent (2nd run: 0 changes); npm run compile-client → 0 errors. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 09e4e73 commit ca34422

2 files changed

Lines changed: 45 additions & 0 deletions

File tree

docs/CORE-PATCHES.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,24 @@ regex/callback: link text is `[^\[\]\r\n]+` (can't span an `= [` array bracket t
9595
**`.d.ts` are included on purpose**`monaco.d.ts` copies JSDoc (incl. these links) verbatim from the
9696
editor source, and the build fails ("monaco.d.ts is no longer up to date") unless both sides are stripped.
9797

98+
**Also pass 1 — the aquarium easter egg (not a *name* swap).** `sessions/contrib/aquarium/**` renders the
99+
Agents-window "fish" as live SVG: upstream they are the **VS Code logo silhouette** (`vscodeLogoPath.ts`)
100+
tinted with **VS Code's three release-channel colors** (`#007ACC` / `#24bfa5` / `#E04F00`). We keep the
101+
easter egg and make it ours — the LevelCode **double chevron** in our brand-gradient stops
102+
(`#6a3fe0` / `#7069ff` / `#4fb2ff`). Three things to know if you touch it:
103+
- The path `from` is a **RegExp** (`export const VSCODE_LOGO_PATH = '…';`) so an upstream tweak to the
104+
silhouette can't silently leave Microsoft's logo in place — it still matches and re-swaps.
105+
- The mark is **filled, not stroked**, and sized to the symbol's `0 0 96 96` viewBox spanning
106+
`BODY_X_START..BODY_X_END` (5..90) — each fish is drawn as clipped vertical slices, so a thin stroke
107+
would shred into disconnected segments and a narrower path would leave the head/tail strips empty.
108+
- It is two **overlapping** subpaths, so `fill-rule` is flipped `evenodd``nonzero` (evenodd would knock
109+
the overlap out as a hole). Upstream file/const names (`vscodeLogoPath.ts`, `VSCODE_LOGO_PATH`,
110+
`FishSpecies.Insiders`…) are deliberately left alone — internal identifiers, never user-visible.
111+
98112
- **KEPT** (intentional): `sessions/contrib/applyCommitsToParentRepo/.../applyChangesToParentRepo.ts` "Open in VS Code" — a real hand-off to *external* VS Code via the `vscode://` scheme. And the `{Locked=…}` NLS annotations (translator metadata, never user-visible) keep their MS URLs.
113+
- **NOT a de-brand issue** (checked, left alone): the empty-editor **letterpress watermark**
114+
(`parts/editor/media/letterpress-*.svg`) — it renders a generic editor pane with a sidebar and text
115+
lines. No VS Code logo, wordmark, or brand colour; replacing it would be taste, not de-branding.
99116
- **SKIPPED**: M13 quality-switch dialogs — dormant (no Insiders LevelCode build); rebranding would imply a false "Insiders LevelCode".
100117
- **EXCLUDED**: `platform/agentHost/**` — its ~631 "VS Code" hits are all `test/` files + vendored proprietary Copilot/MS SDK (stripped from the shipped app by `strip-proprietary.mjs`).
101118

scripts/de-brand.mjs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,14 @@ const vscodeDir = process.argv[2] || join(repoRoot, "vscode");
4343
// display string (settings descriptions, notifications) — verified by diff review.
4444
const G = [["Visual Studio Code", "LevelCode"], ["VS Code", "LevelCode"]];
4545

46+
// The LevelCode double-chevron mark (branding/icons/code-icon.svg) as a FILLED silhouette in the
47+
// aquarium symbol's `0 0 96 96` viewBox, spanning the sliced body region (x 5..90, see fish.ts
48+
// BODY_X_START/END). Two overlapping subpaths — they union only under fill-rule:nonzero (the rule
49+
// below flips it; evenodd would knock the overlap out as a hole). Filled, not stroked: each fish is
50+
// rendered as clipped vertical slices, and a thin stroke would shred into disconnected segments.
51+
const LEVELCODE_FISH_CHEVRON =
52+
"M6 47L48 12L90 47L78 57L48 32L18 57ZM6 79L48 44L90 79L78 89L48 64L18 89Z";
53+
4654
// Each rule: { f: <path under vscode/>, subs: [[from, to], ...], extra?: [[from, to], ...] }.
4755
// `subs === G` is a whole-file name sweep; otherwise it's a TARGETED rule (explicit strings) — used for
4856
// files that contain a "VS Code" which must STAY (e.g. a real external-VS-Code reference) or where
@@ -118,6 +126,26 @@ const RULES = [
118126
['"Open VS Code"', '"Open LevelCode"'],
119127
] },
120128

129+
// ---- Agents-window "aquarium" easter egg: the fish were literally the VS Code logo silhouette,
130+
// tinted with VS Code's three RELEASE-CHANNEL colors, swimming across our UI. Keep the joy,
131+
// make it ours — our double-chevron in the brand-gradient stops. Pure content swaps, no patch.
132+
// The path `from` is a REGEX so an upstream tweak to the silhouette can't silently leave
133+
// Microsoft's logo in place; it still re-matches (and the file/const names are upstream's). ----
134+
{ f: "src/vs/sessions/contrib/aquarium/browser/vscodeLogoPath.ts", subs: [
135+
[/export const VSCODE_LOGO_PATH = '[^']*';/, `export const VSCODE_LOGO_PATH = '${LEVELCODE_FISH_CHEVRON}';`],
136+
["// VS Code logo silhouette path, extracted from sessions/contrib/chat/browser/media/vscode-icon.svg.",
137+
"// [LevelCode] The LevelCode double-chevron mark (branding/icons/code-icon.svg) as a filled silhouette."],
138+
] },
139+
{ f: "src/vs/sessions/contrib/aquarium/browser/fish.ts", subs: [
140+
['/** The three VS Code release channel colors used as fish "species". */',
141+
'/** [LevelCode] The three brand-gradient stops as fish "species" (upstream: VS Code release channels). */'],
142+
["[FishSpecies.Stable]: '#007ACC'", "[FishSpecies.Stable]: '#6a3fe0'"],
143+
["[FishSpecies.Insiders]: '#24bfa5'", "[FishSpecies.Insiders]: '#7069ff'"],
144+
["[FishSpecies.Exploration]: '#E04F00'", "[FishSpecies.Exploration]: '#4fb2ff'"],
145+
// Our mark is two OVERLAPPING subpaths; evenodd would knock the overlap out as a hole.
146+
["logoPath.setAttribute('fill-rule', 'evenodd');", "logoPath.setAttribute('fill-rule', 'nonzero');"],
147+
] },
148+
121149
// ---- WS-D pairing: the Agents "Open in VS Code" button OPENS real VS Code, so it must show the VS
122150
// Code shield — not code-icon.svg, which LevelCode overwrites with its own mark. (KEEP note:
123151
// sessions/contrib/applyCommitsToParentRepo/.../applyChangesToParentRepo.ts "Open in VS Code" is a

0 commit comments

Comments
 (0)