Skip to content

feat(web): add Open VSX theme search - #5654

Merged
juliusmarminge merged 31 commits into
mainfrom
feat/open-vsx-theme-search
Aug 11, 2026
Merged

feat(web): add Open VSX theme search#5654
juliusmarminge merged 31 commits into
mainfrom
feat/open-vsx-theme-search

Conversation

@t3-code

@t3-code t3-code Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • puts community theme search at the top of Add a theme
  • imports permissively licensed Open VSX color themes with integrity and resource checks
  • groups extension variants into one card with arrows
  • keeps paired light and dark palettes together and shows active assignments
  • confirms updates and atomically replaces extension variants

Why

Makes community themes easy to discover without relying on VS Marketplace.

UI Changes

browser-recording-msp1jdsj.mp4

Grouped GitHub theme variants

Demo includes searching, installing, applying a theme, switching light and dark modes, and cycling variants:

https://t3bot-production.up.railway.app/files/lqR9cC183_sMgLrhVy3uH7vE/open-vsx-theme-variants-demo.mp4

Validation

  • pnpm --filter @t3tools/web typecheck
  • targeted lint and formatting checks
  • 47 focused tests
  • real workflow verified and recorded

Built with GPT-5.4 via T3bot.


Note

Medium Risk
Downloads and extracts third-party VSIX packages client-side, which expands the attack surface even with checksum, license, size, and zip-safety checks. Also changes custom theme storage/removal semantics around collections.

Overview
Adds Open VSX community theme discovery so users can search, preview, and install open-source editor themes without manual JSON imports.

The import dialog now leads with ThemeSearchSection, which searches Open VSX, filters to supported SPDX licenses, and installs extensions via checksum-verified VSIX download. Import resolves JSONC includes, pairs light/dark variants, and stores them as a theme collection.

Theme library UI groups collection variants onto one card, with a radial light/dark picker for switching among variants and multi-select removal when deleting an extension pack. Theme save/update paths preserve collection metadata, and replaceCustomThemeCollection atomically swaps an extension’s variants (with optimistic concurrency against concurrent edits).

Reviewed by Cursor Bugbot for commit 0871e31. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Open VSX theme search and install to the theme import dialog

  • Adds searchOpenVsxThemes and importOpenVsxThemeExtension to query Open VSX, validate VSIX packages (checksum, ZIP safety, JSONC includes), and import theme variants with stable IDs.
  • Adds a ThemeSearchSection UI embedded in the theme import dialog, supporting keyword search, sort options, and one-click install or update with an update confirmation prompt.
  • Custom themes are now grouped into collections in ThemeSettings, rendered as a single card with a radial light/dark variant selector; removal supports selecting multiple variants at once.
  • Introduces replaceCustomThemeCollection and removeCustomThemes in themePalette.ts for atomic collection replacement (with optimistic concurrency) and batch removal.
  • Risk: new runtime dependencies (jszip, jsonc-parser, @noble/hashes) are added; VSIX fetch and ZIP parsing happen client-side with size caps and abort support but add latency to theme installs.

Macroscope summarized 0871e31.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Aug 7, 2026
Comment thread apps/web/src/openVsxThemes.ts Outdated
Comment thread apps/web/src/openVsxThemes.ts
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 11.3 KiB 11.3 KiB +19 B (+0.2%) 15.1 KiB
Codex Thread snapshot wire 5.4 KiB 5.5 KiB +7 B (+0.1%) 7.3 KiB
Codex Live turn WebSocket wire 5.9 KiB 5.9 KiB +12 B (+0.2%) 7.8 KiB
Codex Live turn WebSocket decoded 49.7 KiB 49.7 KiB 0 B (0.0%) 66.4 KiB
Codex Live turn messages 16 16 0 (0.0%) 21
Claude Total thread wire 11.3 KiB 11.3 KiB +8 B (+0.1%) 15.1 KiB
Claude Thread snapshot wire 5.5 KiB 5.5 KiB −1 B (−0.0%) 7.3 KiB
Claude Live turn WebSocket wire 5.9 KiB 5.9 KiB +9 B (+0.2%) 7.8 KiB
Claude Live turn WebSocket decoded 50.6 KiB 50.6 KiB 0 B (0.0%) 66.4 KiB
Claude Live turn messages 16 16 0 (0.0%) 21

Baseline: 2db0845 · PR result: 0871e31 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 94.6 KiB
  • Claude decoded thread snapshot: 95.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Comment thread apps/web/src/openVsxThemes.ts Outdated
@macroscopeapp

macroscopeapp Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a significant new feature: Open VSX theme search and import. It introduces new external API integrations, security-relevant package verification logic, and new UI components/workflows that warrant human review.

You can customize Macroscope's approvability policy. Learn more.

Comment thread apps/web/src/openVsxThemes.ts
Comment thread apps/web/src/openVsxThemes.ts Outdated
Comment thread apps/web/src/openVsxThemes.ts
@t3-code
t3-code Bot force-pushed the feat/open-vsx-theme-search branch from 3ab8db4 to ee0d31d Compare August 8, 2026 03:17
@github-actions github-actions Bot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Aug 8, 2026
Comment thread apps/web/src/openVsxThemes.ts
Comment thread apps/web/src/openVsxThemes.ts Outdated
Comment thread apps/web/src/components/settings/ThemeSearchSection.tsx Outdated
Comment thread apps/web/src/components/settings/ThemeSearchSection.tsx
Comment thread apps/web/src/openVsxThemes.ts
Comment thread apps/web/src/openVsxThemes.ts Outdated
@juliusmarminge
juliusmarminge force-pushed the feat/open-vsx-theme-search branch from 1357ed2 to 7c98f0e Compare August 11, 2026 18:08
Comment thread apps/web/src/components/settings/ThemeSettings.tsx
Comment thread apps/web/src/components/settings/ThemeSearchSection.tsx
Comment thread apps/web/src/components/settings/ThemeSettings.tsx
@juliusmarminge
juliusmarminge force-pushed the feat/open-vsx-theme-search branch from 7c98f0e to de0b7ed Compare August 11, 2026 19:14
Comment thread apps/web/src/components/settings/ThemeSettings.tsx Outdated
Comment thread apps/web/src/openVsxThemes.ts
Comment thread apps/web/src/themePalette.ts
Comment thread apps/web/src/components/settings/ThemeSettings.tsx Outdated
Co-authored-by: codex <codex@users.noreply.github.com>

@cursor cursor Bot 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.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit cd45fc0. Configure here.

Comment thread apps/web/src/components/settings/ThemeSettings.tsx
juliusmarminge and others added 3 commits August 11, 2026 21:50
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 11, 2026 20:05
@juliusmarminge
juliusmarminge merged commit f0b57ca into main Aug 11, 2026
18 checks passed
@juliusmarminge
juliusmarminge deleted the feat/open-vsx-theme-search branch August 11, 2026 20:06
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 11, 2026
y5 pushed a commit to y5/t3code that referenced this pull request Aug 12, 2026
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant