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
Binary file modified docs/screenshots/agent-integration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/bundles-storefronts.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/catalog-overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/dynamic-transactions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/icon-texture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/moderation-guidance.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/offer-editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/verse-integration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/showcase/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# UTM 4.3 showcase
# UTM 4.3.2 showcase

The showcase fixture is deterministic and intentionally uses original, abstract vector icons. It demonstrates a believable UTM 4.3 catalog without relying on Fortnite or other third-party artwork:

Expand All @@ -11,4 +11,4 @@ The showcase fixture is deterministic and intentionally uses original, abstract

Use `showcase-project.json` as a review fixture or run `npm run showcase:fixture -- --output <temporary-folder>` to create a disposable UEFN project with generated Verse and crisp PNG previews from the original SVG source icons. The generated project is disposable and is not committed. Native Content Browser acceptance still requires the icon adoption/import workflow.

The canonical 4.3 capture set is stored in [docs/screenshots](../screenshots/). Run `npm run showcase:capture` to regenerate the renderer-level PNGs from the disposable fixture. The capture uses an explicitly development-only healthy connection state and is not enabled in packaged/customer execution.
The canonical 4.3.2 capture set is stored in [docs/screenshots](../screenshots/). Run `npm run showcase:capture` to regenerate the renderer-level PNGs from the disposable fixture. The capture uses an explicitly development-only healthy connection state, seeds a disposable Codex Agent Skill installation for a stable Agent Integration view, and is not enabled in packaged/customer execution.
5 changes: 4 additions & 1 deletion scripts/capture-showcase.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ let cdp;
try {
const showcaseRuntimeRoot = path.join(root, 'docs', 'showcase', 'runtime');
const fixtureRoot = path.join(showcaseRuntimeRoot, 'Creator Commerce Demo');
const showcaseAgentHome = path.join(showcaseStateRoot, 'agent-home');
fs.rmSync(showcaseRuntimeRoot, { recursive: true, force: true });
const fixtureCommand = process.platform === 'win32'
? [process.env.ComSpec ?? 'cmd.exe', ['/d', '/c', 'npm run showcase:fixture']]
Expand All @@ -279,7 +280,7 @@ try {
const electronPath = path.join(root, 'node_modules', 'electron', 'dist', 'electron.exe');
child = spawn(electronPath, [`--remote-debugging-port=${cdpPort}`, '.'], {
cwd: root,
env: { ...process.env, APPDATA: showcaseStateRoot, LOCALAPPDATA: showcaseStateRoot, UEM_SHOWCASE_MODE: '1', UEM_SHOWCASE_STATE_ROOT: showcaseStateRoot, UEM_TEST_MODE: '1' },
env: { ...process.env, APPDATA: showcaseStateRoot, LOCALAPPDATA: showcaseStateRoot, UEM_AGENT_HOME: showcaseAgentHome, UEM_SHOWCASE_MODE: '1', UEM_SHOWCASE_STATE_ROOT: showcaseStateRoot, UEM_TEST_MODE: '1' },
windowsHide: true,
stdio: ['ignore', 'pipe', 'pipe'],
});
Expand All @@ -302,6 +303,8 @@ try {
const showcaseMcpPort = await freeLoopbackPort();
const agentConfigResult = await cdp.evaluate(`fetch('/api/agent-integration/config', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-UEM-Token': ${JSON.stringify(bridgeToken)} }, body: JSON.stringify({ port: ${showcaseMcpPort} }) }).then(async response => ({ status: response.status, body: await response.json() }))`, true);
if (!agentConfigResult?.body?.success || !agentConfigResult.body.status?.running) throw new Error(`Showcase UTM MCP did not start: ${JSON.stringify(agentConfigResult)}`);
const agentSetupResult = await cdp.evaluate(`fetch('/api/agent-integration/setup', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-UEM-Token': ${JSON.stringify(bridgeToken)} }, body: JSON.stringify({ agent: 'codex' }) }).then(async response => ({ status: response.status, body: await response.json() }))`, true);
if (!agentSetupResult?.body?.success || !agentSetupResult.body.skill?.upToDate) throw new Error(`Showcase Codex Agent Skill setup did not complete: ${JSON.stringify(agentSetupResult)}`);
await waitFor(cdp, "document.body.innerText.includes('This project is open and fully connected')", 'healthy connected state');

await capture(cdp, 'catalog-overview', { width: 1440, height: 980 });
Expand Down
2 changes: 2 additions & 0 deletions tests/showcase-captures.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ test('showcase capture selects the deterministic creator project before opening
const captureSource = read('scripts/capture-showcase.mjs');
assert.match(captureSource, /clickText\(cdp, 'Creator Commerce Demo', '#projects \.project'\)/);
assert.match(captureSource, /fs\.rmSync\(showcaseRuntimeRoot, \{ recursive: true, force: true \}\)/);
assert.match(captureSource, /UEM_AGENT_HOME: showcaseAgentHome/);
assert.match(captureSource, /api\/agent-integration\/setup/);
assert.match(captureSource, /verifyAgentModalLayout/);
assert.match(captureSource, /125% scaling/);
assert.match(captureSource, /150% scaling/);
Expand Down
Loading