Add tweakcn custom theme import

Adds a browser-local custom tweakcn theme slot while preserving the existing built-in themes.

Includes:
- tweakcn share-link import, validation, persistence, and custom theme rendering
- Custom option in Appearance and Quick Settings
- responsive/config toolbar and chat tool-card polish from follow-up review
- security hardening for bounded fetches, CSS token validation, redirect handling, and fail-closed unreadable payloads

Verification:
- OPENCLAW_LOCAL_CHECK=0 pnpm check:changed
- GitHub CI clean on 6ff13a1b33
This commit is contained in:
Val Alexander
2026-04-24 20:36:45 -05:00
committed by GitHub
parent 835c4e053c
commit ead8be96fd
23 changed files with 2199 additions and 55 deletions

View File

@@ -259,6 +259,22 @@ describe("scripts/test-projects changed-target routing", () => {
]);
});
it("routes changed ui support files to the ui lane without dead include globs", () => {
const plans = buildVitestRunPlans(["--changed", "origin/main"], process.cwd(), () => [
"ui/src/styles/base.css",
"ui/src/test-helpers/lit-warnings.setup.ts",
]);
expect(plans).toEqual([
{
config: "test/vitest/vitest.ui.config.ts",
forwardedArgs: [],
includePatterns: null,
watchMode: false,
},
]);
});
it("routes auto-reply route source files to route regression tests", () => {
expect(
resolveChangedTestTargetPlan([
@@ -274,7 +290,6 @@ describe("scripts/test-projects changed-target routing", () => {
],
});
});
it("routes changed utils and shared files to their light scoped lanes", () => {
const plans = buildVitestRunPlans(["--changed", "origin/main"], process.cwd(), () => [
"src/shared/string-normalization.ts",