feat(web): add Open VSX theme search - #5654
Conversation
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 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.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: 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. |
3ab8db4 to
ee0d31d
Compare
1357ed2 to
7c98f0e
Compare
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
7c98f0e to
de0b7ed
Compare
Co-authored-by: codex <codex@users.noreply.github.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ 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.
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>
## What's Changed * fix(web): use upload icon for disabled push action by @t3-code[bot] in pingdotgg/t3code#6207 * feat(web): add Open VSX theme search by @t3-code[bot] in pingdotgg/t3code#5654 **Full Changelog**: pingdotgg/t3code@v0.0.34-nightly.20260811.1069...v0.0.34-nightly.20260811.1071 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.34-nightly.20260811.1071
Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com>

What Changed
Why
Makes community themes easy to discover without relying on VS Marketplace.
UI Changes
browser-recording-msp1jdsj.mp4
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 typecheckBuilt 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
collectionmetadata, andreplaceCustomThemeCollectionatomically 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
searchOpenVsxThemesandimportOpenVsxThemeExtensionto query Open VSX, validate VSIX packages (checksum, ZIP safety, JSONC includes), and import theme variants with stable IDs.ThemeSearchSectionUI embedded in the theme import dialog, supporting keyword search, sort options, and one-click install or update with an update confirmation prompt.ThemeSettings, rendered as a single card with a radial light/dark variant selector; removal supports selecting multiple variants at once.replaceCustomThemeCollectionandremoveCustomThemesinthemePalette.tsfor atomic collection replacement (with optimistic concurrency) and batch removal.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.