@codextheme/cli 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -5
- package/package.json +2 -2
- package/src/lifecycle.mjs +5 -5
- package/src/main.mjs +3 -3
- package/src/runtime.mjs +11 -11
- package/themes/aurora-glass.codextheme-theme +2 -2
- package/themes/cathedral-nocturne.codextheme-theme +2 -2
- package/themes/crimson-eclipse.codextheme-theme +2 -2
- package/themes/crimson-procession.codextheme-theme +2 -2
- package/themes/midnight-circuit.codextheme-theme +2 -2
- package/themes/silver-reliquary.codextheme-theme +2 -2
package/README.md
CHANGED
|
@@ -5,22 +5,24 @@ Fixed-version, one-command curated and private custom skins for Codex Desktop on
|
|
|
5
5
|
Apply a catalog skin:
|
|
6
6
|
|
|
7
7
|
```sh
|
|
8
|
-
npx --yes @codextheme/cli@0.2.
|
|
8
|
+
npx --yes @codextheme/cli@0.2.4 apply cathedral-nocturne
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
The custom skin studio at [codextheme.tech](https://codextheme.tech) creates an expiring private command:
|
|
12
12
|
|
|
13
13
|
```sh
|
|
14
|
-
npx --yes @codextheme/cli@0.2.
|
|
14
|
+
npx --yes @codextheme/cli@0.2.4 apply-private <private-id>
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Private packages are downloaded only from the fixed `https://codextheme.tech` origin, bounded, integrity-checked, schema-validated, safety-linted, and cached locally with owner-only permissions. The temporary server link expires after 24 hours; `reapply` uses the validated local cache and works after that link expires.
|
|
18
18
|
|
|
19
|
+
The CLI emits and applies only CodexTheme-owned package and renderer names. Historical cached packages are normalized by the runtime compatibility layer without exposing the former namespace in normal command output.
|
|
20
|
+
|
|
19
21
|
```sh
|
|
20
|
-
npx --yes @codextheme/cli@0.2.
|
|
21
|
-
npx --yes @codextheme/cli@0.2.
|
|
22
|
+
npx --yes @codextheme/cli@0.2.4 reapply
|
|
23
|
+
npx --yes @codextheme/cli@0.2.4 restore
|
|
22
24
|
```
|
|
23
25
|
|
|
24
|
-
The CLI has no install scripts, does not use `sudo`, and does not modify the Codex application bundle. Requirements: macOS, Node.js 22.4+, and Codex Desktop. A running Codex process is never closed or reopened without an explicit `y` confirmation. After confirmation, version 0.2.
|
|
26
|
+
The CLI has no install scripts, does not use `sudo`, and does not modify the Codex application bundle. Requirements: macOS, Node.js 22.4+, and Codex Desktop. A running Codex process is never closed or reopened without an explicit `y` confirmation. After confirmation, version 0.2.4 uses an owner-only detached one-shot worker so an apply started inside Codex survives that restart; it does not install a persistent service.
|
|
25
27
|
|
|
26
28
|
CodexTheme is an independent project and is not affiliated with or endorsed by OpenAI.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codextheme/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "One-command curated and private custom skins for Codex Desktop on macOS.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"test": "node --test"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@codextheme/runtime": "0.1.
|
|
21
|
+
"@codextheme/runtime": "0.1.1"
|
|
22
22
|
},
|
|
23
23
|
"engines": {
|
|
24
24
|
"node": ">=22.4"
|
package/src/lifecycle.mjs
CHANGED
|
@@ -9,11 +9,11 @@ export class CliError extends Error {
|
|
|
9
9
|
function mappedError(error) {
|
|
10
10
|
if (error instanceof CliError || String(error?.code ?? "").startsWith("E_")) return error;
|
|
11
11
|
switch (error?.code) {
|
|
12
|
-
case "
|
|
12
|
+
case "CODEXTHEME_RESTART_REQUIRED":
|
|
13
13
|
return new CliError("E_RESTART_REQUIRED", "需要得到你的确认后才能重新打开 Codex。");
|
|
14
|
-
case "
|
|
14
|
+
case "CODEXTHEME_DOM_INCOMPATIBLE":
|
|
15
15
|
return new CliError("E_DOM_INCOMPATIBLE", "当前 Codex 界面结构与该主题暂不兼容。");
|
|
16
|
-
case "
|
|
16
|
+
case "CODEXTHEME_VERIFY_FAILED":
|
|
17
17
|
return new CliError("E_CORE_VERIFY", "主题应用后的完整性验证失败,已尝试回滚。");
|
|
18
18
|
default:
|
|
19
19
|
return new CliError("E_DOM_INCOMPATIBLE", "Codex 主题运行时未能完成本次操作。");
|
|
@@ -62,7 +62,7 @@ async function applyResolvedTheme({ theme, nextState, runtime, stateStore, promp
|
|
|
62
62
|
try {
|
|
63
63
|
result = await runtime.apply({ theme, restartExisting });
|
|
64
64
|
} catch (error) {
|
|
65
|
-
if (error?.code === "
|
|
65
|
+
if (error?.code === "CODEXTHEME_RESTART_REQUIRED" && !restartExisting) {
|
|
66
66
|
await requireRestartConsent(promptRestart);
|
|
67
67
|
if (restartHandoff) return delegateRestart({ theme, nextState, restartHandoff });
|
|
68
68
|
restartExisting = true;
|
|
@@ -141,7 +141,7 @@ export async function reapplyTheme(options) {
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
const RENDERER_ABSENT_CODES = new Set([
|
|
144
|
-
"
|
|
144
|
+
"CODEXTHEME_TARGET_TIMEOUT",
|
|
145
145
|
"ECONNREFUSED",
|
|
146
146
|
]);
|
|
147
147
|
|
package/src/main.mjs
CHANGED
|
@@ -7,9 +7,9 @@ import { confirmRestart } from "./prompt.mjs";
|
|
|
7
7
|
import { runtime as productionRuntime } from "./runtime.mjs";
|
|
8
8
|
import { createStateStore } from "./state.mjs";
|
|
9
9
|
|
|
10
|
-
export const VERSION = "0.2.
|
|
11
|
-
const REAPPLY = "npx --yes @codextheme/cli@0.2.
|
|
12
|
-
const RESTORE = "npx --yes @codextheme/cli@0.2.
|
|
10
|
+
export const VERSION = "0.2.4";
|
|
11
|
+
const REAPPLY = "npx --yes @codextheme/cli@0.2.4 reapply";
|
|
12
|
+
const RESTORE = "npx --yes @codextheme/cli@0.2.4 restore";
|
|
13
13
|
|
|
14
14
|
const HELP = `CodexTheme ${VERSION}
|
|
15
15
|
|
package/src/runtime.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as runtimeCore from "@codextheme/runtime";
|
|
2
2
|
import { themeFilename } from "./catalog.mjs";
|
|
3
3
|
|
|
4
|
-
const RENDERER_ABSENT_CODES = new Set(["
|
|
4
|
+
const RENDERER_ABSENT_CODES = new Set(["CODEXTHEME_TARGET_TIMEOUT", "ECONNREFUSED"]);
|
|
5
5
|
const PRIVATE_THEME_ID = /^private-[a-z0-9]{20}$/;
|
|
6
|
-
const
|
|
7
|
-
const PRIVATE_WINDOW_RULE = /html\.
|
|
6
|
+
const HISTORICAL_PRIVATE_HOME_RULE = /html\.codextheme-codex-skin \.dream-home \{\n position: relative;\n isolation: isolate;\n background-image: (linear-gradient\(rgba\(5, 6, 10, (?:0|1)\.\d{2}\), rgba\(5, 6, 10, (?:0|1)\.\d{2}\)\), var\(--codextheme-image-hero\)) !important;\n background-position: \d{1,3}% \d{1,3}% !important;\n background-size: cover !important;\n\}/;
|
|
7
|
+
const PRIVATE_WINDOW_RULE = /html\.codextheme-codex-skin body::before \{[\s\S]*?\n\}/;
|
|
8
8
|
|
|
9
9
|
function migratePrivateBackgroundAnchor(bundle) {
|
|
10
10
|
const target = bundle?.targets?.codex;
|
|
@@ -15,15 +15,15 @@ function migratePrivateBackgroundAnchor(bundle) {
|
|
|
15
15
|
|| target.css.includes("body:has(.dream-home)::before")
|
|
16
16
|
) return bundle;
|
|
17
17
|
|
|
18
|
-
const legacyHome = target.css.match(
|
|
18
|
+
const legacyHome = target.css.match(HISTORICAL_PRIVATE_HOME_RULE);
|
|
19
19
|
const windowRule = target.css.match(PRIVATE_WINDOW_RULE);
|
|
20
20
|
if (!legacyHome || !windowRule) return bundle;
|
|
21
21
|
|
|
22
|
-
const homeWindow = `${windowRule[0]}\n\nhtml.
|
|
23
|
-
const homeSurface = "html.
|
|
22
|
+
const homeWindow = `${windowRule[0]}\n\nhtml.codextheme-codex-skin body:has(.dream-home)::before {\n background-image: ${legacyHome[1]};\n}`;
|
|
23
|
+
const homeSurface = "html.codextheme-codex-skin .dream-home {\n position: relative;\n isolation: isolate;\n background: transparent !important;\n}";
|
|
24
24
|
const css = target.css
|
|
25
25
|
.replace(PRIVATE_WINDOW_RULE, homeWindow)
|
|
26
|
-
.replace(
|
|
26
|
+
.replace(HISTORICAL_PRIVATE_HOME_RULE, homeSurface);
|
|
27
27
|
|
|
28
28
|
return {
|
|
29
29
|
...bundle,
|
|
@@ -47,10 +47,10 @@ export function createRuntime({ core = runtimeCore, platform = process.platform
|
|
|
47
47
|
|
|
48
48
|
function resolveSafeTheme(bundle) {
|
|
49
49
|
try {
|
|
50
|
-
core.validateThemePackage(bundle);
|
|
51
|
-
if (core.lintThemePackage(
|
|
52
|
-
const migrated = migratePrivateBackgroundAnchor(
|
|
53
|
-
if (migrated !==
|
|
50
|
+
const normalized = core.validateThemePackage(bundle);
|
|
51
|
+
if (core.lintThemePackage(normalized).length) throw new Error("lint");
|
|
52
|
+
const migrated = migratePrivateBackgroundAnchor(normalized);
|
|
53
|
+
if (migrated !== normalized) {
|
|
54
54
|
core.validateThemePackage(migrated);
|
|
55
55
|
if (core.lintThemePackage(migrated).length) throw new Error("lint");
|
|
56
56
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"format": "
|
|
2
|
+
"format": "codextheme-theme",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
4
|
"exportedAt": "2026-07-18T00:00:00.000Z",
|
|
5
5
|
"theme": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"targets": {
|
|
20
20
|
"codex": {
|
|
21
|
-
"css": ":root.
|
|
21
|
+
"css": ":root.codextheme-codex-skin {\n color-scheme: dark !important;\n --codextheme-accent: var(--color-token-primary, #9b7bff);\n --codextheme-surface: var(--color-token-bg-primary, #10111a);\n --codextheme-panel: color-mix(in srgb, var(--codextheme-surface) 94%, white 6%);\n --codextheme-panel-soft: color-mix(in srgb, var(--codextheme-surface) 88%, transparent);\n --codextheme-line: color-mix(in srgb, var(--codextheme-accent) 32%, transparent);\n}\n\nhtml.codextheme-codex-skin body {\n background: #07080d !important;\n color: var(--color-token-text-primary, #f5f3ff) !important;\n}\n\nhtml.codextheme-codex-skin body::before {\n content: \"\";\n position: fixed;\n inset: 0;\n z-index: 0;\n pointer-events: none;\n background-image:\n linear-gradient(90deg, rgba(5, 6, 10, .68) 0%, rgba(5, 6, 10, .28) 46%, rgba(5, 6, 10, .08) 100%),\n var(--codextheme-image-session-bg);\n background-position: center;\n background-size: cover;\n filter: saturate(.92) contrast(1.04);\n}\n\nhtml.codextheme-codex-skin body:has(.dream-home)::before {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--codextheme-surface) 94%, transparent), transparent 68%),\n var(--codextheme-image-hero);\n}\n\nhtml.codextheme-codex-skin body > * {\n position: relative;\n z-index: 1;\n}\n\nhtml.codextheme-codex-skin aside.app-shell-left-panel {\n background: color-mix(in srgb, var(--codextheme-surface) 82%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: 18px 0 42px rgba(0, 0, 0, .25) !important;\n backdrop-filter: blur(18px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface {\n background: color-mix(in srgb, var(--codextheme-surface) 38%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: inset 0 1px rgba(255, 255, 255, .035), -12px 0 40px rgba(0, 0, 0, .18) !important;\n backdrop-filter: blur(14px) saturate(1.03) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface > header.app-header-tint {\n background: color-mix(in srgb, var(--codextheme-panel) 62%, transparent) !important;\n border-bottom-color: var(--codextheme-line) !important;\n backdrop-filter: blur(18px) !important;\n}\n\nhtml.codextheme-codex-skin .composer-surface-chrome {\n background: var(--codextheme-panel) !important;\n border: 1px solid var(--codextheme-line) !important;\n box-shadow: 0 18px 50px rgba(0, 0, 0, .28), inset 0 1px rgba(255, 255, 255, .05) !important;\n backdrop-filter: blur(20px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin :is(pre, code, [data-language]) {\n background-color: color-mix(in srgb, var(--codextheme-surface) 97%, black 3%) !important;\n}\n\nhtml.codextheme-codex-skin :is(button, a, input, textarea, [tabindex]):focus-visible {\n outline: 2px solid var(--codextheme-accent) !important;\n outline-offset: 2px !important;\n}\n\nhtml.codextheme-codex-skin .dream-home {\n position: relative;\n isolation: isolate;\n background: transparent !important;\n}\n\nhtml.codextheme-codex-skin .dream-home::after {\n content: \"\";\n position: absolute;\n inset: 22px;\n z-index: -1;\n border: 1px solid var(--codextheme-line);\n border-radius: 28px;\n pointer-events: none;\n box-shadow: inset 0 0 80px rgba(0, 0, 0, .18);\n}\n\n#codextheme-codex-skin-chrome {\n pointer-events: none;\n color: var(--color-token-text-primary, #f5f3ff);\n}\n\n#codextheme-codex-skin-chrome .dream-brand,\n#codextheme-codex-skin-chrome .dream-signature {\n color: var(--codextheme-accent);\n text-shadow: 0 2px 18px rgba(0, 0, 0, .75);\n}\n\n#codextheme-codex-skin-chrome .dream-polaroid,\n#codextheme-codex-skin-chrome .dream-ribbon,\n#codextheme-codex-skin-chrome .dream-sparkles {\n display: none !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html.codextheme-codex-skin *,\n html.codextheme-codex-skin *::before,\n html.codextheme-codex-skin *::after {\n animation-duration: .001ms !important;\n animation-iteration-count: 1 !important;\n scroll-behavior: auto !important;\n transition-duration: .001ms !important;\n }\n}\n",
|
|
22
22
|
"options": {
|
|
23
23
|
"rendererProfile": "codex-theme-v1",
|
|
24
24
|
"baseTheme": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"format": "
|
|
2
|
+
"format": "codextheme-theme",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
4
|
"exportedAt": "2026-07-18T00:00:00.000Z",
|
|
5
5
|
"theme": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"targets": {
|
|
20
20
|
"codex": {
|
|
21
|
-
"css": ":root.
|
|
21
|
+
"css": ":root.codextheme-codex-skin {\n color-scheme: dark !important;\n --codextheme-accent: var(--color-token-primary, #9b7bff);\n --codextheme-surface: var(--color-token-bg-primary, #10111a);\n --codextheme-panel: color-mix(in srgb, var(--codextheme-surface) 94%, white 6%);\n --codextheme-panel-soft: color-mix(in srgb, var(--codextheme-surface) 88%, transparent);\n --codextheme-line: color-mix(in srgb, var(--codextheme-accent) 32%, transparent);\n}\n\nhtml.codextheme-codex-skin body {\n background: #07080d !important;\n color: var(--color-token-text-primary, #f5f3ff) !important;\n}\n\nhtml.codextheme-codex-skin body::before {\n content: \"\";\n position: fixed;\n inset: 0;\n z-index: 0;\n pointer-events: none;\n background-image:\n linear-gradient(90deg, rgba(5, 6, 10, .68) 0%, rgba(5, 6, 10, .28) 46%, rgba(5, 6, 10, .08) 100%),\n var(--codextheme-image-session-bg);\n background-position: center;\n background-size: cover;\n filter: saturate(.92) contrast(1.04);\n}\n\nhtml.codextheme-codex-skin body:has(.dream-home)::before {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--codextheme-surface) 94%, transparent), transparent 68%),\n var(--codextheme-image-hero);\n}\n\nhtml.codextheme-codex-skin body > * {\n position: relative;\n z-index: 1;\n}\n\nhtml.codextheme-codex-skin aside.app-shell-left-panel {\n background: color-mix(in srgb, var(--codextheme-surface) 82%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: 18px 0 42px rgba(0, 0, 0, .25) !important;\n backdrop-filter: blur(18px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface {\n background: color-mix(in srgb, var(--codextheme-surface) 38%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: inset 0 1px rgba(255, 255, 255, .035), -12px 0 40px rgba(0, 0, 0, .18) !important;\n backdrop-filter: blur(14px) saturate(1.03) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface > header.app-header-tint {\n background: color-mix(in srgb, var(--codextheme-panel) 62%, transparent) !important;\n border-bottom-color: var(--codextheme-line) !important;\n backdrop-filter: blur(18px) !important;\n}\n\nhtml.codextheme-codex-skin .composer-surface-chrome {\n background: var(--codextheme-panel) !important;\n border: 1px solid var(--codextheme-line) !important;\n box-shadow: 0 18px 50px rgba(0, 0, 0, .28), inset 0 1px rgba(255, 255, 255, .05) !important;\n backdrop-filter: blur(20px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin :is(pre, code, [data-language]) {\n background-color: color-mix(in srgb, var(--codextheme-surface) 97%, black 3%) !important;\n}\n\nhtml.codextheme-codex-skin :is(button, a, input, textarea, [tabindex]):focus-visible {\n outline: 2px solid var(--codextheme-accent) !important;\n outline-offset: 2px !important;\n}\n\nhtml.codextheme-codex-skin .dream-home {\n position: relative;\n isolation: isolate;\n background: transparent !important;\n}\n\nhtml.codextheme-codex-skin .dream-home::after {\n content: \"\";\n position: absolute;\n inset: 22px;\n z-index: -1;\n border: 1px solid var(--codextheme-line);\n border-radius: 28px;\n pointer-events: none;\n box-shadow: inset 0 0 80px rgba(0, 0, 0, .18);\n}\n\n#codextheme-codex-skin-chrome {\n pointer-events: none;\n color: var(--color-token-text-primary, #f5f3ff);\n}\n\n#codextheme-codex-skin-chrome .dream-brand,\n#codextheme-codex-skin-chrome .dream-signature {\n color: var(--codextheme-accent);\n text-shadow: 0 2px 18px rgba(0, 0, 0, .75);\n}\n\n#codextheme-codex-skin-chrome .dream-polaroid,\n#codextheme-codex-skin-chrome .dream-ribbon,\n#codextheme-codex-skin-chrome .dream-sparkles {\n display: none !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html.codextheme-codex-skin *,\n html.codextheme-codex-skin *::before,\n html.codextheme-codex-skin *::after {\n animation-duration: .001ms !important;\n animation-iteration-count: 1 !important;\n scroll-behavior: auto !important;\n transition-duration: .001ms !important;\n }\n}\n",
|
|
22
22
|
"options": {
|
|
23
23
|
"rendererProfile": "codex-theme-v1",
|
|
24
24
|
"baseTheme": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"format": "
|
|
2
|
+
"format": "codextheme-theme",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
4
|
"exportedAt": "2026-07-18T00:00:00.000Z",
|
|
5
5
|
"theme": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"targets": {
|
|
20
20
|
"codex": {
|
|
21
|
-
"css": ":root.
|
|
21
|
+
"css": ":root.codextheme-codex-skin {\n color-scheme: dark !important;\n --codextheme-accent: var(--color-token-primary, #9b7bff);\n --codextheme-surface: var(--color-token-bg-primary, #10111a);\n --codextheme-panel: color-mix(in srgb, var(--codextheme-surface) 94%, white 6%);\n --codextheme-panel-soft: color-mix(in srgb, var(--codextheme-surface) 88%, transparent);\n --codextheme-line: color-mix(in srgb, var(--codextheme-accent) 32%, transparent);\n}\n\nhtml.codextheme-codex-skin body {\n background: #07080d !important;\n color: var(--color-token-text-primary, #f5f3ff) !important;\n}\n\nhtml.codextheme-codex-skin body::before {\n content: \"\";\n position: fixed;\n inset: 0;\n z-index: 0;\n pointer-events: none;\n background-image:\n linear-gradient(90deg, rgba(5, 6, 10, .68) 0%, rgba(5, 6, 10, .28) 46%, rgba(5, 6, 10, .08) 100%),\n var(--codextheme-image-session-bg);\n background-position: center;\n background-size: cover;\n filter: saturate(.92) contrast(1.04);\n}\n\nhtml.codextheme-codex-skin body:has(.dream-home)::before {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--codextheme-surface) 94%, transparent), transparent 68%),\n var(--codextheme-image-hero);\n}\n\nhtml.codextheme-codex-skin body > * {\n position: relative;\n z-index: 1;\n}\n\nhtml.codextheme-codex-skin aside.app-shell-left-panel {\n background: color-mix(in srgb, var(--codextheme-surface) 82%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: 18px 0 42px rgba(0, 0, 0, .25) !important;\n backdrop-filter: blur(18px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface {\n background: color-mix(in srgb, var(--codextheme-surface) 38%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: inset 0 1px rgba(255, 255, 255, .035), -12px 0 40px rgba(0, 0, 0, .18) !important;\n backdrop-filter: blur(14px) saturate(1.03) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface > header.app-header-tint {\n background: color-mix(in srgb, var(--codextheme-panel) 62%, transparent) !important;\n border-bottom-color: var(--codextheme-line) !important;\n backdrop-filter: blur(18px) !important;\n}\n\nhtml.codextheme-codex-skin .composer-surface-chrome {\n background: var(--codextheme-panel) !important;\n border: 1px solid var(--codextheme-line) !important;\n box-shadow: 0 18px 50px rgba(0, 0, 0, .28), inset 0 1px rgba(255, 255, 255, .05) !important;\n backdrop-filter: blur(20px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin :is(pre, code, [data-language]) {\n background-color: color-mix(in srgb, var(--codextheme-surface) 97%, black 3%) !important;\n}\n\nhtml.codextheme-codex-skin :is(button, a, input, textarea, [tabindex]):focus-visible {\n outline: 2px solid var(--codextheme-accent) !important;\n outline-offset: 2px !important;\n}\n\nhtml.codextheme-codex-skin .dream-home {\n position: relative;\n isolation: isolate;\n background: transparent !important;\n}\n\nhtml.codextheme-codex-skin .dream-home::after {\n content: \"\";\n position: absolute;\n inset: 22px;\n z-index: -1;\n border: 1px solid var(--codextheme-line);\n border-radius: 28px;\n pointer-events: none;\n box-shadow: inset 0 0 80px rgba(0, 0, 0, .18);\n}\n\n#codextheme-codex-skin-chrome {\n pointer-events: none;\n color: var(--color-token-text-primary, #f5f3ff);\n}\n\n#codextheme-codex-skin-chrome .dream-brand,\n#codextheme-codex-skin-chrome .dream-signature {\n color: var(--codextheme-accent);\n text-shadow: 0 2px 18px rgba(0, 0, 0, .75);\n}\n\n#codextheme-codex-skin-chrome .dream-polaroid,\n#codextheme-codex-skin-chrome .dream-ribbon,\n#codextheme-codex-skin-chrome .dream-sparkles {\n display: none !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html.codextheme-codex-skin *,\n html.codextheme-codex-skin *::before,\n html.codextheme-codex-skin *::after {\n animation-duration: .001ms !important;\n animation-iteration-count: 1 !important;\n scroll-behavior: auto !important;\n transition-duration: .001ms !important;\n }\n}\n",
|
|
22
22
|
"options": {
|
|
23
23
|
"rendererProfile": "codex-theme-v1",
|
|
24
24
|
"baseTheme": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"format": "
|
|
2
|
+
"format": "codextheme-theme",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
4
|
"exportedAt": "2026-07-18T00:00:00.000Z",
|
|
5
5
|
"theme": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"targets": {
|
|
20
20
|
"codex": {
|
|
21
|
-
"css": ":root.
|
|
21
|
+
"css": ":root.codextheme-codex-skin {\n color-scheme: dark !important;\n --codextheme-accent: var(--color-token-primary, #9b7bff);\n --codextheme-surface: var(--color-token-bg-primary, #10111a);\n --codextheme-panel: color-mix(in srgb, var(--codextheme-surface) 94%, white 6%);\n --codextheme-panel-soft: color-mix(in srgb, var(--codextheme-surface) 88%, transparent);\n --codextheme-line: color-mix(in srgb, var(--codextheme-accent) 32%, transparent);\n}\n\nhtml.codextheme-codex-skin body {\n background: #07080d !important;\n color: var(--color-token-text-primary, #f5f3ff) !important;\n}\n\nhtml.codextheme-codex-skin body::before {\n content: \"\";\n position: fixed;\n inset: 0;\n z-index: 0;\n pointer-events: none;\n background-image:\n linear-gradient(90deg, rgba(5, 6, 10, .68) 0%, rgba(5, 6, 10, .28) 46%, rgba(5, 6, 10, .08) 100%),\n var(--codextheme-image-session-bg);\n background-position: center;\n background-size: cover;\n filter: saturate(.92) contrast(1.04);\n}\n\nhtml.codextheme-codex-skin body:has(.dream-home)::before {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--codextheme-surface) 94%, transparent), transparent 68%),\n var(--codextheme-image-hero);\n}\n\nhtml.codextheme-codex-skin body > * {\n position: relative;\n z-index: 1;\n}\n\nhtml.codextheme-codex-skin aside.app-shell-left-panel {\n background: color-mix(in srgb, var(--codextheme-surface) 82%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: 18px 0 42px rgba(0, 0, 0, .25) !important;\n backdrop-filter: blur(18px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface {\n background: color-mix(in srgb, var(--codextheme-surface) 38%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: inset 0 1px rgba(255, 255, 255, .035), -12px 0 40px rgba(0, 0, 0, .18) !important;\n backdrop-filter: blur(14px) saturate(1.03) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface > header.app-header-tint {\n background: color-mix(in srgb, var(--codextheme-panel) 62%, transparent) !important;\n border-bottom-color: var(--codextheme-line) !important;\n backdrop-filter: blur(18px) !important;\n}\n\nhtml.codextheme-codex-skin .composer-surface-chrome {\n background: var(--codextheme-panel) !important;\n border: 1px solid var(--codextheme-line) !important;\n box-shadow: 0 18px 50px rgba(0, 0, 0, .28), inset 0 1px rgba(255, 255, 255, .05) !important;\n backdrop-filter: blur(20px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin :is(pre, code, [data-language]) {\n background-color: color-mix(in srgb, var(--codextheme-surface) 97%, black 3%) !important;\n}\n\nhtml.codextheme-codex-skin :is(button, a, input, textarea, [tabindex]):focus-visible {\n outline: 2px solid var(--codextheme-accent) !important;\n outline-offset: 2px !important;\n}\n\nhtml.codextheme-codex-skin .dream-home {\n position: relative;\n isolation: isolate;\n background: transparent !important;\n}\n\nhtml.codextheme-codex-skin .dream-home::after {\n content: \"\";\n position: absolute;\n inset: 22px;\n z-index: -1;\n border: 1px solid var(--codextheme-line);\n border-radius: 28px;\n pointer-events: none;\n box-shadow: inset 0 0 80px rgba(0, 0, 0, .18);\n}\n\n#codextheme-codex-skin-chrome {\n pointer-events: none;\n color: var(--color-token-text-primary, #f5f3ff);\n}\n\n#codextheme-codex-skin-chrome .dream-brand,\n#codextheme-codex-skin-chrome .dream-signature {\n color: var(--codextheme-accent);\n text-shadow: 0 2px 18px rgba(0, 0, 0, .75);\n}\n\n#codextheme-codex-skin-chrome .dream-polaroid,\n#codextheme-codex-skin-chrome .dream-ribbon,\n#codextheme-codex-skin-chrome .dream-sparkles {\n display: none !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html.codextheme-codex-skin *,\n html.codextheme-codex-skin *::before,\n html.codextheme-codex-skin *::after {\n animation-duration: .001ms !important;\n animation-iteration-count: 1 !important;\n scroll-behavior: auto !important;\n transition-duration: .001ms !important;\n }\n}\n",
|
|
22
22
|
"options": {
|
|
23
23
|
"rendererProfile": "codex-theme-v1",
|
|
24
24
|
"baseTheme": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"format": "
|
|
2
|
+
"format": "codextheme-theme",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
4
|
"exportedAt": "2026-07-18T00:00:00.000Z",
|
|
5
5
|
"theme": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"targets": {
|
|
20
20
|
"codex": {
|
|
21
|
-
"css": ":root.
|
|
21
|
+
"css": ":root.codextheme-codex-skin {\n color-scheme: dark !important;\n --codextheme-accent: var(--color-token-primary, #9b7bff);\n --codextheme-surface: var(--color-token-bg-primary, #10111a);\n --codextheme-panel: color-mix(in srgb, var(--codextheme-surface) 94%, white 6%);\n --codextheme-panel-soft: color-mix(in srgb, var(--codextheme-surface) 88%, transparent);\n --codextheme-line: color-mix(in srgb, var(--codextheme-accent) 32%, transparent);\n}\n\nhtml.codextheme-codex-skin body {\n background: #07080d !important;\n color: var(--color-token-text-primary, #f5f3ff) !important;\n}\n\nhtml.codextheme-codex-skin body::before {\n content: \"\";\n position: fixed;\n inset: 0;\n z-index: 0;\n pointer-events: none;\n background-image:\n linear-gradient(90deg, rgba(5, 6, 10, .68) 0%, rgba(5, 6, 10, .28) 46%, rgba(5, 6, 10, .08) 100%),\n var(--codextheme-image-session-bg);\n background-position: center;\n background-size: cover;\n filter: saturate(.92) contrast(1.04);\n}\n\nhtml.codextheme-codex-skin body:has(.dream-home)::before {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--codextheme-surface) 94%, transparent), transparent 68%),\n var(--codextheme-image-hero);\n}\n\nhtml.codextheme-codex-skin body > * {\n position: relative;\n z-index: 1;\n}\n\nhtml.codextheme-codex-skin aside.app-shell-left-panel {\n background: color-mix(in srgb, var(--codextheme-surface) 82%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: 18px 0 42px rgba(0, 0, 0, .25) !important;\n backdrop-filter: blur(18px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface {\n background: color-mix(in srgb, var(--codextheme-surface) 38%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: inset 0 1px rgba(255, 255, 255, .035), -12px 0 40px rgba(0, 0, 0, .18) !important;\n backdrop-filter: blur(14px) saturate(1.03) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface > header.app-header-tint {\n background: color-mix(in srgb, var(--codextheme-panel) 62%, transparent) !important;\n border-bottom-color: var(--codextheme-line) !important;\n backdrop-filter: blur(18px) !important;\n}\n\nhtml.codextheme-codex-skin .composer-surface-chrome {\n background: var(--codextheme-panel) !important;\n border: 1px solid var(--codextheme-line) !important;\n box-shadow: 0 18px 50px rgba(0, 0, 0, .28), inset 0 1px rgba(255, 255, 255, .05) !important;\n backdrop-filter: blur(20px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin :is(pre, code, [data-language]) {\n background-color: color-mix(in srgb, var(--codextheme-surface) 97%, black 3%) !important;\n}\n\nhtml.codextheme-codex-skin :is(button, a, input, textarea, [tabindex]):focus-visible {\n outline: 2px solid var(--codextheme-accent) !important;\n outline-offset: 2px !important;\n}\n\nhtml.codextheme-codex-skin .dream-home {\n position: relative;\n isolation: isolate;\n background: transparent !important;\n}\n\nhtml.codextheme-codex-skin .dream-home::after {\n content: \"\";\n position: absolute;\n inset: 22px;\n z-index: -1;\n border: 1px solid var(--codextheme-line);\n border-radius: 28px;\n pointer-events: none;\n box-shadow: inset 0 0 80px rgba(0, 0, 0, .18);\n}\n\n#codextheme-codex-skin-chrome {\n pointer-events: none;\n color: var(--color-token-text-primary, #f5f3ff);\n}\n\n#codextheme-codex-skin-chrome .dream-brand,\n#codextheme-codex-skin-chrome .dream-signature {\n color: var(--codextheme-accent);\n text-shadow: 0 2px 18px rgba(0, 0, 0, .75);\n}\n\n#codextheme-codex-skin-chrome .dream-polaroid,\n#codextheme-codex-skin-chrome .dream-ribbon,\n#codextheme-codex-skin-chrome .dream-sparkles {\n display: none !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html.codextheme-codex-skin *,\n html.codextheme-codex-skin *::before,\n html.codextheme-codex-skin *::after {\n animation-duration: .001ms !important;\n animation-iteration-count: 1 !important;\n scroll-behavior: auto !important;\n transition-duration: .001ms !important;\n }\n}\n",
|
|
22
22
|
"options": {
|
|
23
23
|
"rendererProfile": "codex-theme-v1",
|
|
24
24
|
"baseTheme": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"format": "
|
|
2
|
+
"format": "codextheme-theme",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
4
|
"exportedAt": "2026-07-18T00:00:00.000Z",
|
|
5
5
|
"theme": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"targets": {
|
|
20
20
|
"codex": {
|
|
21
|
-
"css": ":root.
|
|
21
|
+
"css": ":root.codextheme-codex-skin {\n color-scheme: dark !important;\n --codextheme-accent: var(--color-token-primary, #9b7bff);\n --codextheme-surface: var(--color-token-bg-primary, #10111a);\n --codextheme-panel: color-mix(in srgb, var(--codextheme-surface) 94%, white 6%);\n --codextheme-panel-soft: color-mix(in srgb, var(--codextheme-surface) 88%, transparent);\n --codextheme-line: color-mix(in srgb, var(--codextheme-accent) 32%, transparent);\n}\n\nhtml.codextheme-codex-skin body {\n background: #07080d !important;\n color: var(--color-token-text-primary, #f5f3ff) !important;\n}\n\nhtml.codextheme-codex-skin body::before {\n content: \"\";\n position: fixed;\n inset: 0;\n z-index: 0;\n pointer-events: none;\n background-image:\n linear-gradient(90deg, rgba(5, 6, 10, .68) 0%, rgba(5, 6, 10, .28) 46%, rgba(5, 6, 10, .08) 100%),\n var(--codextheme-image-session-bg);\n background-position: center;\n background-size: cover;\n filter: saturate(.92) contrast(1.04);\n}\n\nhtml.codextheme-codex-skin body:has(.dream-home)::before {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--codextheme-surface) 94%, transparent), transparent 68%),\n var(--codextheme-image-hero);\n}\n\nhtml.codextheme-codex-skin body > * {\n position: relative;\n z-index: 1;\n}\n\nhtml.codextheme-codex-skin aside.app-shell-left-panel {\n background: color-mix(in srgb, var(--codextheme-surface) 82%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: 18px 0 42px rgba(0, 0, 0, .25) !important;\n backdrop-filter: blur(18px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface {\n background: color-mix(in srgb, var(--codextheme-surface) 38%, transparent) !important;\n border-color: var(--codextheme-line) !important;\n box-shadow: inset 0 1px rgba(255, 255, 255, .035), -12px 0 40px rgba(0, 0, 0, .18) !important;\n backdrop-filter: blur(14px) saturate(1.03) !important;\n}\n\nhtml.codextheme-codex-skin main.main-surface > header.app-header-tint {\n background: color-mix(in srgb, var(--codextheme-panel) 62%, transparent) !important;\n border-bottom-color: var(--codextheme-line) !important;\n backdrop-filter: blur(18px) !important;\n}\n\nhtml.codextheme-codex-skin .composer-surface-chrome {\n background: var(--codextheme-panel) !important;\n border: 1px solid var(--codextheme-line) !important;\n box-shadow: 0 18px 50px rgba(0, 0, 0, .28), inset 0 1px rgba(255, 255, 255, .05) !important;\n backdrop-filter: blur(20px) saturate(1.08) !important;\n}\n\nhtml.codextheme-codex-skin :is(pre, code, [data-language]) {\n background-color: color-mix(in srgb, var(--codextheme-surface) 97%, black 3%) !important;\n}\n\nhtml.codextheme-codex-skin :is(button, a, input, textarea, [tabindex]):focus-visible {\n outline: 2px solid var(--codextheme-accent) !important;\n outline-offset: 2px !important;\n}\n\nhtml.codextheme-codex-skin .dream-home {\n position: relative;\n isolation: isolate;\n background: transparent !important;\n}\n\nhtml.codextheme-codex-skin .dream-home::after {\n content: \"\";\n position: absolute;\n inset: 22px;\n z-index: -1;\n border: 1px solid var(--codextheme-line);\n border-radius: 28px;\n pointer-events: none;\n box-shadow: inset 0 0 80px rgba(0, 0, 0, .18);\n}\n\n#codextheme-codex-skin-chrome {\n pointer-events: none;\n color: var(--color-token-text-primary, #f5f3ff);\n}\n\n#codextheme-codex-skin-chrome .dream-brand,\n#codextheme-codex-skin-chrome .dream-signature {\n color: var(--codextheme-accent);\n text-shadow: 0 2px 18px rgba(0, 0, 0, .75);\n}\n\n#codextheme-codex-skin-chrome .dream-polaroid,\n#codextheme-codex-skin-chrome .dream-ribbon,\n#codextheme-codex-skin-chrome .dream-sparkles {\n display: none !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html.codextheme-codex-skin *,\n html.codextheme-codex-skin *::before,\n html.codextheme-codex-skin *::after {\n animation-duration: .001ms !important;\n animation-iteration-count: 1 !important;\n scroll-behavior: auto !important;\n transition-duration: .001ms !important;\n }\n}\n",
|
|
22
22
|
"options": {
|
|
23
23
|
"rendererProfile": "codex-theme-v1",
|
|
24
24
|
"baseTheme": {
|