Skip to content

redesign(ai): restyle the signed-in account card to the levelcode.ai classic look#50

Merged
ndemianc merged 4 commits into
developfrom
redesign/account-card
Jul 26, 2026
Merged

redesign(ai): restyle the signed-in account card to the levelcode.ai classic look#50
ndemianc merged 4 commits into
developfrom
redesign/account-card

Conversation

@ndemianc

Copy link
Copy Markdown
Contributor

Redesigns the Manage-account popover (signed-in state) in the editor.

Why

Three problems with the old card:

  • It named a specific model — Plan: Max · Kimi K2.7 Code, and unlock Kimi K2.7 Code on the free CTA. Model churn that confuses clients.
  • It carried a verbose explainer: "Gateway mode: AI runs through your metered LevelCode plan … proxied by the account server … levelcode.ai.providerMode" — not pulling its weight.
  • It didn't match the levelcode.ai site aesthetic.

What changed

Rebuilt to the levelcode.ai "classic" (atom.io) look used across the /ai/* pages:

  • Fixed brand palette, scoped to .acctcard.classicOne Dark by default, One Light under body.vscode-light (the same convention the rest of this webview uses for syntax colors). One violet accent (#7d6bff / #5b3fd6), hairline borders, 6px card / 4px controls, and mono + tabular-nums metadata (email · plan pill · synced).
  • Model-agnostic. The plan line is now a mono plan · Max pill (your own key in BYOK); the free-tier CTA is just Upgrade to Pro. No model name anywhere.
  • The explainer is gone. Its space is not refilled with credits — those live on /ai/account, one click away via Manage account (per the ask). The card shows the email (mono) under the name and stays clean. BYOK keeps a one-line "keys never leave your machine".
  • Sign out becomes a quiet accent link; removed the now-dead privacyNote().

Layout: avatar → name → email → plan · Max pill → (Upgrade, free only) → Manage account → Sign out → Synced.

Mockup

The approved design: https://claude.ai/code/artifact/c0fbc518-d74b-4bad-b5c1-9056e0483c81 (the shipped card drops the credits line the mockup showed, per the decision to keep credits on /ai/account).

Verification

  • chat.html script blocks parse (0 syntax errors, via vm.Script).
  • webviewCss + creditFormat suites (both parse the shipped chat.html) green; full gate 24 suites.
  • No model refs / credits / privacyNote left in the card.
  • A live in-editor render needs the VS Code host (the webview needs acquireVsCodeApi + theme classes), so this is verified against the approved mockup + the extracted-CSS render rather than a screenshot of the running editor.

🤖 Generated with Claude Code

…classic look

The Manage-account popover referenced a specific model ("Plan: Max · Kimi K2.7 Code",
and "unlock Kimi K2.7 Code" on the free CTA) — model churn that confused clients — and
carried a verbose "Gateway mode: … proxied by the account server … levelcode.ai.providerMode"
explainer that wasn't pulling its weight.

Rebuilt to match the levelcode.ai "classic" (atom.io) aesthetic used across the site:
- Fixed brand palette scoped to `.acctcard.classic` — One Dark by default, One Light under
  body.vscode-light (the convention the rest of this webview already uses). One violet accent
  (#7d6bff / #5b3fd6), hairline borders, 6px card / 4px controls, mono + tabular metadata.
- Model-agnostic: the plan line becomes a mono `plan · Max` pill (BYOK: `your own key`); the
  free-tier CTA is just "Upgrade to Pro". No model name anywhere.
- The gateway explainer is gone. Its space isn't refilled with credits (those live on
  /ai/account, one click away via Manage account) — the card now shows the email (mono) under
  the name and stays uncluttered. BYOK keeps a one-line "keys never leave your machine".
- Sign out becomes a quiet accent link; removed the now-dead privacyNote().

Verified: chat.html scripts parse (0 errors); webviewCss + creditFormat suites green; no
model refs / credits / privacyNote left in the card. (Design matches the approved mockup;
a live webview render needs the VS Code host.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 26, 2026 01:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR redesigns the signed-in Manage-account popover UI in extensions/levelcode-ai to match the levelcode.ai “classic” visual style while removing model-specific and overly verbose copy.

Changes:

  • Added a new .acctcard.classic style block with fixed brand palette (dark default, light under body.vscode-light).
  • Updated renderAccount() signed-in markup to be model-agnostic (plan pill), remove credits/explainer text, and simplify actions/layout.
  • Removed the now-dead privacyNote() rendering path in the signed-in card.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

The neutral hollow-ring avatar read as empty, especially in One Dark. Fill it with a soft
accent tint + violet initials — anchored and on-brand, matching the original card's
tinted-avatar approach in the new classic palette.

(Note: the "broken/left-aligned" look in the extracted-CSS preview was a preview bug — it
dropped the base `.acctbody { text-align: center }` rule. The shipped card centers all its
content; verified the rule is present.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 26, 2026 01:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread extensions/levelcode-ai/media/chat.html
…review)

The card's comment claimed "tabular-nums metadata" but no rule set font-variant-numeric,
so digits (the email, any future counter) weren't aligned. Set it on the .acctcard.classic
root — the house pattern here (used in ~10 other places) — so the comment is true and
numbers align throughout the card.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 26, 2026 02:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread extensions/levelcode-ai/media/chat.html Outdated
…card (PR #50 review)

The classic card used a fixed brand palette; high-contrast DARK (body.vscode-high-contrast)
fell through to the One Dark brand palette, overriding the user's accessibility theme, and
high-contrast LIGHT was mapped to the light brand palette rather than HC tokens.

Now BOTH high-contrast modes map the card's --cc-* vars onto the editor's own tokens —
--vscode-foreground / editor(Widget)-background / descriptionForeground / textLink-foreground,
and crucially --vscode-contrastBorder for the required visible edges. The lone filled control
(free-tier Upgrade) takes --vscode-button-* instead of white-on-accent. Normal light/dark keep
the brand look; HC users keep their contrast.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 26, 2026 02:44
@ndemianc
ndemianc merged commit 502cd75 into develop Jul 26, 2026
2 checks passed
@ndemianc
ndemianc deleted the redesign/account-card branch July 26, 2026 02:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment on lines +872 to +876
/* The one filled control (free-tier Upgrade) takes the editor's button colors in HC, not white-on-accent. */
body.vscode-high-contrast .acctcard.classic .abtn.primary, body.vscode-high-contrast-light .acctcard.classic .abtn.primary {
background: var(--vscode-button-background); color: var(--vscode-button-foreground);
border: 1px solid var(--vscode-contrastBorder, transparent);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants