Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ on:
required: true
type: string
runtime_manifest_sha256:
description: SHA-256 of the transition runtime artifact-manifest.json embedded in the DMG
description: SHA-256 of the release-bundled-latest runtime artifact-manifest.json embedded in the DMG
required: true
type: string

Expand Down Expand Up @@ -89,6 +89,8 @@ jobs:
npm run build:manager
npm --prefix app run adapter:catalog:check
npm --prefix app run prepare:runtime
npm --prefix app run prepare:release-resources
npm --prefix app run verify:release-resources
cargo test --manifest-path app/src-tauri/Cargo.toml
cargo fmt --manifest-path app/src-tauri/Cargo.toml --check

Expand Down Expand Up @@ -140,7 +142,7 @@ jobs:
RESOURCES="$APP/Contents/Resources"
[[ "$(shasum -a 256 "$RESOURCES/artifact-manifest.json" | awk '{print $1}')" == "$RUNTIME_MANIFEST_SHA256" ]]
node app/scripts/verify-runtime-resources.mjs \
"$RESOURCES" app/config/transition-baseline.json "$VERSION"
"$RESOURCES" app/config/release-baseline.json "$VERSION"
hdiutil detach "$MOUNT_POINT"
trap - EXIT

Expand All @@ -161,8 +163,8 @@ jobs:
echo "- Commit: \`$(git rev-parse HEAD)\`"
echo "- Apple notarization: \`$NOTARIZATION_ID\`"
echo "- DMG SHA-256: \`$DMG_SHA256\`"
echo "- Transition runtime manifest SHA-256: \`$RUNTIME_MANIFEST_SHA256\`"
echo "- Bundled profile: transition-baseline (CodeX 26.715.31925-r1; Doubao 2.19.9-r1; WorkBuddy 5.2.6-r1)"
echo "- Release runtime manifest SHA-256: \`$RUNTIME_MANIFEST_SHA256\`"
echo "- Bundled profile: \`release-bundled-latest\` (verified against the exact signed Adapter Release assets)"
echo "- Product assets: one notarized and stapled DMG only"
echo
echo "The Release remains a draft for a maintainer to publish after reviewing this run."
Expand Down
2 changes: 1 addition & 1 deletion adapters/mac-codex/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changelog

## Mac-CodeX 26.715.71837 r2 — Unreleased
## Mac-CodeX 26.715.71837 r3 — Unreleased

- Added the adapter-owned `immersive-scene-v1` presentation recipe.

Expand Down
8 changes: 4 additions & 4 deletions adapters/mac-codex/PROJECT_MANIFEST.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
"schemaVersion": "1.0.0",
"adapterId": "mac-codex",
"adapterVersion": "26.715.71837",
"adapterReleaseRevision": 2,
"adapterReleaseRevision": 3,
"productVersion": "26.715.71837",
"platform": "macOS",
"releaseTarget": {
"os": "macos",
"arch": "arm64",
"assetIdentity": "mac-codex-26.715.71837-r2-macos-arm64",
"sourceArtifact": "mac-codex-26.715.71837-r2-macos-arm64.zip",
"clientArtifact": "cc-theme-mac-codex-26.715.71837-r2-macos-arm64.zip"
"assetIdentity": "mac-codex-26.715.71837-r3-macos-arm64",
"sourceArtifact": "mac-codex-26.715.71837-r3-macos-arm64.zip",
"clientArtifact": "cc-theme-mac-codex-26.715.71837-r3-macos-arm64.zip"
},
"client": {
"bundleId": "com.openai.codex",
Expand Down
8 changes: 4 additions & 4 deletions adapters/mac-codex/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,10 @@ Adapter 验证外部包内的本地图片、H.264 MP4、静态 WebP 方向图集
```

当前 arm64 用户包为
`cc-theme-mac-codex-26.715.71837-r2-macos-arm64.zip`,源码包为
`mac-codex-26.715.71837-r2-macos-arm64.zip`,校验文件分别为
`cc-theme-mac-codex-26.715.71837-r2-macos-arm64.zip.sha256` 和
`mac-codex-26.715.71837-r2-macos-arm64.zip.sha256`。
`cc-theme-mac-codex-26.715.71837-r3-macos-arm64.zip`,源码包为
`mac-codex-26.715.71837-r3-macos-arm64.zip`,校验文件分别为
`cc-theme-mac-codex-26.715.71837-r3-macos-arm64.zip.sha256` 和
`mac-codex-26.715.71837-r3-macos-arm64.zip.sha256`。
`adapterVersion` 严格跟随 Codex `CFBundleShortVersionString`;同版本再发布时递增
`adapterReleaseRevision`,构建器拒绝覆盖已有同修订制品。精确 build 只存在
compatibility evidence 和 Manager compile context,不进入资产名。
Expand Down
40 changes: 36 additions & 4 deletions adapters/mac-codex/assets/renderer-inject.js
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,9 @@
"--skin-name", "--skin-tagline", "--skin-project-prefix",
"--skin-project-label", "--skin-active-art",
"--skin-native-canvas", "--skin-native-sidebar",
"--scene-gold", "--scene-line", "--scene-panel", "--scene-raised", "--scene-texture-tint",
"--scene-surface-opacity", "--scene-density-inset", "--scene-border-width",
"--scene-navigation-frame-width", "--scene-composer-frame-width", "--scene-card-frame-width",
...NATIVE_THEME_VARIABLES,
];
window[DISABLED_KEY] = false;
Expand Down Expand Up @@ -903,9 +906,14 @@
});

const applyTheme = (root, shell) => {
const colors = THEME.colors || {};
const explicit = new Set(Array.isArray(THEME.explicitColorKeys) ? THEME.explicitColorKeys : []);
const explicitSemantic = new Set(Array.isArray(THEME.explicitSemanticColorKeys) ? THEME.explicitSemanticColorKeys : []);
const appearanceVariant = THEME.appearanceVariants?.[shell] || null;
const colors = appearanceVariant?.colors || THEME.colors || {};
const explicit = new Set(appearanceVariant
? Object.keys(appearanceVariant.colors || {})
: (Array.isArray(THEME.explicitColorKeys) ? THEME.explicitColorKeys : []));
const explicitSemantic = new Set(appearanceVariant
? Object.keys(appearanceVariant.semanticColors || {})
: (Array.isArray(THEME.explicitSemanticColorKeys) ? THEME.explicitSemanticColorKeys : []));
const adaptive = makeAdaptivePalette(artAnalysis?.accentRgb, shell);
const paletteMode = ART.paletteMode === "media" || (ART.paletteMode === undefined && ART.adaptivePalette === true)
? "media" : "system";
Expand Down Expand Up @@ -951,7 +959,7 @@
};

if (BRIDGE_ENABLED) {
const semantic = THEME.semanticColors || {};
const semantic = appearanceVariant?.semanticColors || THEME.semanticColors || {};
const systemSemantic = resolvedPalette.semanticColors || {};
const adaptiveSemantic = adaptiveEnabled ? {
surfaceBase: variables["--skin-panel"],
Expand Down Expand Up @@ -1222,6 +1230,30 @@
"--vscode-simpleFindWidget-sashBorder": "var(--skin-border-default)",
"--oai-wb-surface-primary": "var(--skin-surface-raised)",
});

// The immersive recipe is Adapter-owned, while these values come only
// from the closed Shared Core presentation envelope. Keep the values in
// CSS custom properties so an owned role can consume every declared
// semantic parameter without exposing host selectors to a Theme Package.
if (PRESENTATION_PROFILE === "immersive-scene-v1") {
const scene = THEME.presentation?.parameters || {};
const texture = Math.round(Math.min(1, Math.max(0, Number(scene.textureIntensity) || 0)) * 30);
const requestedOpacity = Number(scene.surfaceOpacity);
const opacity = Math.round(Math.min(1, Math.max(0, Number.isFinite(requestedOpacity) ? requestedOpacity : .72)) * 100);
Object.assign(variables, {
"--scene-gold": "var(--skin-action)",
"--scene-line": "color-mix(in srgb, var(--scene-gold) 34%, transparent)",
"--scene-panel": "color-mix(in srgb, var(--skin-panel) var(--scene-surface-opacity), transparent)",
"--scene-raised": "color-mix(in srgb, var(--skin-panel-2) var(--scene-surface-opacity), transparent)",
"--scene-texture-tint": `color-mix(in srgb, var(--scene-gold) ${texture}%, transparent)`,
"--scene-surface-opacity": `${opacity}%`,
"--scene-density-inset": scene.density === "comfortable" ? "12px" : "0px",
"--scene-border-width": scene.borderTreatment === "etched" ? "1px" : "0px",
"--scene-navigation-frame-width": scene.navigationTreatment === "framed" ? "1px" : "0px",
"--scene-composer-frame-width": scene.composerTreatment === "anchored" ? "1px" : "0px",
"--scene-card-frame-width": scene.cardTreatment === "elevated" ? "1px" : "0px",
});
}
}

for (const [name, value] of Object.entries(variables)) {
Expand Down
56 changes: 45 additions & 11 deletions adapters/mac-codex/assets/skin.css
Original file line number Diff line number Diff line change
Expand Up @@ -1694,40 +1694,74 @@ html.cc-theme[data-skin-theme-bridge] .skin-home > div:first-child > div:first-c
/* Adapter-owned immersive scene recipe. It consumes stable Skin Surface Roles
only; native controls remain live nodes with their host interaction geometry. */
html.cc-theme[data-skin-presentation="immersive-scene-v1"] {
--scene-gold: #c8a55a;
--scene-gold: var(--skin-action, #c8a55a);
--scene-line: color-mix(in srgb, var(--scene-gold) 34%, transparent);
--scene-panel: color-mix(in srgb, var(--skin-panel, #171513) 78%, transparent);
--scene-raised: color-mix(in srgb, var(--skin-panel-2, #211d18) 84%, transparent);
--scene-panel: color-mix(in srgb, var(--skin-panel, #171513) var(--scene-surface-opacity, 78%), transparent);
--scene-raised: color-mix(in srgb, var(--skin-panel-2, #211d18) var(--scene-surface-opacity, 84%), transparent);
--scene-texture-tint: color-mix(in srgb, var(--scene-gold) 11%, transparent);
--scene-density-inset: 12px;
--scene-border-width: 1px;
--scene-navigation-frame-width: 1px;
--scene-composer-frame-width: 1px;
--scene-card-frame-width: 1px;
}

html.cc-theme[data-skin-presentation="immersive-scene-v1"] body {
background: linear-gradient(90deg, rgba(8, 8, 10, .94) 0%, rgba(11, 10, 11, .74) 49%, rgba(14, 11, 9, .26) 100%) !important;
background:
linear-gradient(90deg,
color-mix(in srgb, var(--skin-main-scrim-start) var(--scene-surface-opacity), transparent) 0%,
color-mix(in srgb, var(--skin-main-scrim-mid) var(--scene-surface-opacity), transparent) 49%,
color-mix(in srgb, var(--skin-main-scrim-end) var(--scene-surface-opacity), transparent) 100%),
repeating-linear-gradient(135deg, var(--scene-texture-tint) 0 1px, transparent 1px 12px) !important;
}

html.cc-theme[data-skin-presentation="immersive-scene-v1"] .app-shell-left-panel {
background: linear-gradient(180deg, color-mix(in srgb, var(--scene-panel) 94%, #070606), color-mix(in srgb, var(--scene-panel) 78%, #0d0907)) !important;
border-right: 1px solid var(--scene-line) !important;
border-right: var(--scene-navigation-frame-width) solid var(--scene-line) !important;
box-shadow: inset -1px 0 rgba(255, 240, 202, .05), 12px 0 32px rgba(0, 0, 0, .34) !important;
}

html.cc-theme[data-skin-presentation="immersive-scene-v1"] :is(main.main-surface, [data-app-shell-main-content-layout]) {
background: linear-gradient(90deg, rgba(9, 8, 9, .80), rgba(14, 11, 10, .44) 56%, rgba(12, 10, 9, .16)) !important;
box-shadow: inset 1px 0 var(--scene-line) !important;
background: linear-gradient(90deg,
color-mix(in srgb, var(--skin-main-scrim-start) var(--scene-surface-opacity), transparent),
color-mix(in srgb, var(--skin-main-scrim-mid) var(--scene-surface-opacity), transparent) 56%,
color-mix(in srgb, var(--skin-main-scrim-end) var(--scene-surface-opacity), transparent)) !important;
box-shadow: inset var(--scene-border-width) 0 var(--scene-line) !important;
}

/* These two route-specific rules normally choose a reading-strength scrim.
The immersive profile must take precedence so its single bounded opacity
control cannot leave a second dark veil behind at 0%. */
html.cc-theme[data-skin-theme-bridge][data-skin-presentation="immersive-scene-v1"][data-skin-surface-context="home"] main.main-surface,
html.cc-theme[data-skin-theme-bridge][data-skin-presentation="immersive-scene-v1"][data-skin-surface-context="home"] main.main-surface:not(.skin-home-shell),
html.cc-theme[data-skin-theme-bridge][data-skin-presentation="immersive-scene-v1"]:is([data-skin-surface-context="task"], [data-skin-surface-context="library"]) main.main-surface,
html.cc-theme[data-skin-theme-bridge][data-skin-presentation="immersive-scene-v1"]:is([data-skin-surface-context="task"], [data-skin-surface-context="library"]) main.main-surface:not(.skin-home-shell) {
background: linear-gradient(90deg,
color-mix(in srgb, var(--skin-main-scrim-start) var(--scene-surface-opacity), transparent) 0%,
color-mix(in srgb, var(--skin-main-scrim-mid) var(--scene-surface-opacity), transparent) 58%,
color-mix(in srgb, var(--skin-main-scrim-end) var(--scene-surface-opacity), transparent) 100%) !important;
}

html.cc-theme[data-skin-presentation="immersive-scene-v1"] [data-skin-role="home-hero"] {
border: 1px solid var(--scene-line) !important;
border: var(--scene-border-width) solid var(--scene-line) !important;
border-radius: 18px !important;
box-shadow: 0 22px 54px rgba(0, 0, 0, .42), inset 0 1px rgba(255, 243, 212, .08) !important;
}

html.cc-theme[data-skin-presentation="immersive-scene-v1"] :is([data-skin-role="home-suggestion-card"], [data-skin-role="composer-root"], .composer-surface-chrome, article) {
html.cc-theme[data-skin-presentation="immersive-scene-v1"] [data-skin-role="home-suggestion-card"] {
background: var(--scene-raised) !important;
border: var(--scene-card-frame-width) solid var(--scene-line) !important;
padding: var(--scene-density-inset) !important;
box-shadow: 0 12px 30px rgba(0, 0, 0, .28), inset 0 1px rgba(255, 243, 212, .05) !important;
}

html.cc-theme[data-skin-presentation="immersive-scene-v1"] :is([data-skin-role="composer-root"], .composer-surface-chrome) {
background: var(--scene-raised) !important;
border: 1px solid var(--scene-line) !important;
border: var(--scene-composer-frame-width) solid var(--scene-line) !important;
box-shadow: 0 12px 30px rgba(0, 0, 0, .28), inset 0 1px rgba(255, 243, 212, .05) !important;
}

html.cc-theme[data-skin-presentation="immersive-scene-v1"] :is([role="dialog"], [role="menu"], [role="listbox"], [role="tooltip"]) {
html.cc-theme[data-skin-presentation="immersive-scene-v1"] [data-skin-role="overlay-surface"] {
background: color-mix(in srgb, var(--skin-panel-2, #211d18) 96%, #080707) !important;
border-color: var(--scene-line) !important;
}
Expand Down
41 changes: 31 additions & 10 deletions adapters/mac-codex/contracts/adapter-capability.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
"revision": 2,
"adapterId": "mac-codex",
"adapterVersion": "26.715.71837",
"adapterReleaseRevision": 2,
"adapterReleaseRevision": 3,
"releaseTarget": {
"os": "macos",
"arch": "arm64",
"assetIdentity": "mac-codex-26.715.71837-r2-macos-arm64"
"assetIdentity": "mac-codex-26.715.71837-r3-macos-arm64"
},
"displayName": "Mac Codex",
"availability": "available",
Expand Down Expand Up @@ -69,17 +69,38 @@
"immersive-scene-v1": {
"profileVersion": 1,
"geometryPolicy": "scene-bounded",
"surfaces": {
"shell": "exact",
"navigation": "exact",
"home": "exact",
"conversation": "exact",
"composer": "exact",
"cards": "exact",
"overlays": "exact"
"sceneSemantics": {
"scope": "presentation-scene",
"surfaces": {
"shell": { "decision": "exact", "consumerId": "codex.scene.shell.root", "diagnostic": "scene-surface-shell-exact" },
"navigation": { "decision": "exact", "consumerId": "codex.scene.navigation.sidebar", "diagnostic": "scene-surface-navigation-exact" },
"home": { "decision": "exact", "consumerId": "codex.scene.home.role-frame", "diagnostic": "scene-surface-home-exact" },
"conversation": { "decision": "exact", "consumerId": "codex.scene.conversation.main-frame", "diagnostic": "scene-surface-conversation-exact" },
"composer": { "decision": "exact", "consumerId": "codex.scene.composer.role-frame", "diagnostic": "scene-surface-composer-exact" },
"cards": { "decision": "exact", "consumerId": "codex.scene.cards.suggestion-frame", "diagnostic": "scene-surface-cards-exact" },
"overlays": { "decision": "exact", "consumerId": "codex.scene.overlays.role-frame", "diagnostic": "scene-surface-overlays-exact" }
},
"parameters": {
"density": { "decision": "exact", "consumerId": "codex.scene.density.inset", "diagnostic": "scene-parameter-density-exact" },
"borderTreatment": { "decision": "exact", "consumerId": "codex.scene.border.etched-frame", "diagnostic": "scene-parameter-border-treatment-exact" },
"textureIntensity": { "decision": "exact", "consumerId": "codex.scene.texture.main-canvas", "diagnostic": "scene-parameter-texture-intensity-exact" },
"surfaceOpacity": { "decision": "exact", "consumerId": "codex.scene.opacity.panel-layer", "diagnostic": "scene-parameter-surface-opacity-exact" },
"navigationTreatment": { "decision": "exact", "consumerId": "codex.scene.navigation.framed-sidebar", "diagnostic": "scene-parameter-navigation-treatment-exact" },
"composerTreatment": { "decision": "exact", "consumerId": "codex.scene.composer.anchored-frame", "diagnostic": "scene-parameter-composer-treatment-exact" },
"cardTreatment": { "decision": "exact", "consumerId": "codex.scene.cards.elevated-frame", "diagnostic": "scene-parameter-card-treatment-exact" }
},
"assetSlots": {
"scene.backdrop": { "decision": "exact", "consumerId": "codex.scene.backdrop.active-art", "diagnostic": "scene-asset-backdrop-exact" }
}
}
}
},
"presentationBoundaries": {
"nativeControls": { "decision": "unsupported", "consumerId": null, "diagnostic": "scene-native-controls-host-owned" },
"layout": { "decision": "unsupported", "consumerId": null, "diagnostic": "scene-layout-host-owned" },
"uncataloguedPortals": { "decision": "unsupported", "consumerId": null, "diagnostic": "scene-uncatalogued-portals-unsupported" },
"fonts": { "decision": "unsupported", "consumerId": null, "diagnostic": "scene-fonts-host-owned" }
},
"security": {
"forbiddenPayloads": ["css", "javascript", "html", "shader", "selector", "command", "url", "absolute-path", "path-traversal", "host-version-fact"],
"officialApplicationReadOnly": true,
Expand Down
8 changes: 4 additions & 4 deletions adapters/mac-codex/contracts/adapter-release-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
"revision": 1,
"adapterId": "mac-codex",
"adapterVersion": "26.715.71837",
"adapterReleaseRevision": 2,
"adapterReleaseRevision": 3,
"os": "macos",
"arch": "arm64",
"assetIdentity": "mac-codex-26.715.71837-r2-macos-arm64",
"assetIdentity": "mac-codex-26.715.71837-r3-macos-arm64",
"artifacts": {
"source": "mac-codex-26.715.71837-r2-macos-arm64.zip",
"client": "cc-theme-mac-codex-26.715.71837-r2-macos-arm64.zip"
"source": "mac-codex-26.715.71837-r3-macos-arm64.zip",
"client": "cc-theme-mac-codex-26.715.71837-r3-macos-arm64.zip"
},
"entries": [
"LICENSE",
Expand Down
2 changes: 1 addition & 1 deletion adapters/mac-codex/contracts/skin-theme.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@
"properties": {
"density": { "const": "comfortable" }, "borderTreatment": { "const": "etched" },
"textureIntensity": { "type": "number", "minimum": 0, "maximum": 1 },
"surfaceOpacity": { "type": "number", "minimum": 0.4, "maximum": 0.88 },
"surfaceOpacity": { "type": "number", "minimum": 0, "maximum": 1 },
"navigationTreatment": { "const": "framed" }, "composerTreatment": { "const": "anchored" }, "cardTreatment": { "const": "elevated" }
}
},
Expand Down
4 changes: 2 additions & 2 deletions adapters/mac-codex/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
"ccThemeAdapter": {
"adapterId": "mac-codex",
"adapterVersion": "26.715.71837",
"adapterReleaseRevision": 2,
"adapterReleaseRevision": 3,
"os": "macos",
"arch": "arm64",
"assetIdentity": "mac-codex-26.715.71837-r2-macos-arm64"
"assetIdentity": "mac-codex-26.715.71837-r3-macos-arm64"
},
"description": "A reversible always-latest macOS Theme Adapter for Codex Desktop backgrounds and local style authoring.",
"keywords": [
Expand Down
Loading