diff --git a/components/RdpHybridPresentation.js b/components/RdpHybridPresentation.js index 06118ee..f0f4f8c 100644 --- a/components/RdpHybridPresentation.js +++ b/components/RdpHybridPresentation.js @@ -16,17 +16,12 @@ const PHASE_PRESENTATION = { 'The authorized appointment data enters the customer-controlled runner.', }, demonstration: { - stage: 'build', + stage: 'demonstrate', label: 'A person shows the task once', detail: 'The demonstration includes the real mouse, keyboard, and RDP timing.', }, - compiled_workflow: { - stage: 'build', - label: 'OpenAdapt builds a reusable workflow', - detail: 'The video shows the exact exported program, not a drawn example.', - }, governed_replay: { - stage: 'run', + stage: 'execute', label: 'OpenAdapt completes the task', detail: 'The runner checks the live record before it enters the new request.', }, @@ -52,8 +47,8 @@ const PHASE_PRESENTATION = { const STORY_STAGES = [ { id: 'request', label: 'Request' }, - { id: 'build', label: 'Build once' }, - { id: 'run', label: 'Run' }, + { id: 'demonstrate', label: 'Demonstrate' }, + { id: 'execute', label: 'Execute' }, { id: 'verify', label: 'Verify or stop' }, ] @@ -301,9 +296,6 @@ export default function RdpHybridPresentation({ const activeStageIndex = STORY_STAGES.findIndex( (item) => item.id === phaseContent?.stage ) - const activeNodeIds = new Set( - entry?.compiled_graph?.node_id ? [entry.compiled_graph.node_id] : [] - ) const nodes = Array.isArray(graph?.nodes) ? graph.nodes : [] const parameterNames = Array.isArray(graph?.bundle?.params) ? graph.bundle.params @@ -481,7 +473,9 @@ export default function RdpHybridPresentation({
- The workflow OpenAdapt built + + What OpenAdapt built from the demonstration + The exact nine-step program and its inputs @@ -498,15 +492,12 @@ export default function RdpHybridPresentation({ - {reducedMotion ? 'Reduced motion' : 'Media-synced'} + Exact exported graph
    {nodes.map((node) => ( -
  1. +
  2. {String(node.index + 1).padStart(2, '0')} diff --git a/components/RdpHybridPresentation.module.css b/components/RdpHybridPresentation.module.css index f04ef10..540eb09 100644 --- a/components/RdpHybridPresentation.module.css +++ b/components/RdpHybridPresentation.module.css @@ -350,20 +350,6 @@ border: 1px solid rgba(142, 207, 193, 0.14); border-radius: 12px; background: #0b1c1d; - opacity: 0.72; - transition: - border-color 0.25s ease, - background 0.25s ease, - opacity 0.25s ease, - transform 0.25s ease; -} - -.graph > ol > li[data-active='true'] { - border-color: rgba(99, 230, 191, 0.72); - background: linear-gradient(145deg, #10443e, #0d2728); - box-shadow: 0 0 28px -13px #60e6bf; - opacity: 1; - transform: translateY(-2px); } .graph > ol > li > span { @@ -579,9 +565,3 @@ text-align: left; } } - -@media (prefers-reduced-motion: reduce) { - .graph > ol > li { - transition: none; - } -} diff --git a/lib/publicJsonArtifacts.mjs b/lib/publicJsonArtifacts.mjs index 376ce76..2d0a4db 100644 --- a/lib/publicJsonArtifacts.mjs +++ b/lib/publicJsonArtifacts.mjs @@ -49,7 +49,7 @@ export const PUBLIC_JSON_ARTIFACTS = Object.freeze({ title: 'RDP presentation manifest', description: 'Content hashes and exact retained-frame provenance for the paced RDP presentation video.', - sha256: 'bb38218d7cb4cbcb31b6e188737071380f373fd8449f6ed42521f930bb32ec95', + sha256: '766d3359f86b4ed34f038642cd7c10187010bb960a6d4d2cccf021f078e16c1d', }), '/demos/rdp/presentation.timeline.json': Object.freeze({ source: '/demos/rdp/presentation.timeline.json', @@ -57,8 +57,8 @@ export const PUBLIC_JSON_ARTIFACTS = Object.freeze({ format: 'json', title: 'RDP hybrid presentation timeline', description: - 'Exact decoded-frame intervals, retained source-frame bindings, compiled graph nodes, and public runtime facts for the RDP presentation.', - sha256: 'b668275ad7308f359380aa1bcb89ce98b7ae49673b36c4491330c399b2472403', + 'Exact decoded-frame intervals, retained source-frame bindings, and public runtime facts for the RDP presentation.', + sha256: 'bde3bdafd21867fe3353ee586256c032efb7c10efe9eac09792d9a88636cd831', }), '/desktop-preview/MANIFEST.json': Object.freeze({ source: '/desktop-preview/MANIFEST.json', diff --git a/public/demos/rdp/openadapt-rdp-demo.mp4 b/public/demos/rdp/openadapt-rdp-demo.mp4 index 7903801..5eb77a0 100644 Binary files a/public/demos/rdp/openadapt-rdp-demo.mp4 and b/public/demos/rdp/openadapt-rdp-demo.mp4 differ diff --git a/public/demos/rdp/presentation.manifest.json b/public/demos/rdp/presentation.manifest.json index fbe25d3..ddc9322 100644 --- a/public/demos/rdp/presentation.manifest.json +++ b/public/demos/rdp/presentation.manifest.json @@ -5,7 +5,7 @@ 800 ], "hybrid_timeline": "openadapt-rdp-demo.timeline.json", - "hybrid_timeline_sha256": "b668275ad7308f359380aa1bcb89ce98b7ae49673b36c4491330c399b2472403", + "hybrid_timeline_sha256": "bde3bdafd21867fe3353ee586256c032efb7c10efe9eac09792d9a88636cd831", "phases": [ { "outcome": "RECORDED", @@ -88,6 +88,6 @@ "schema_version": "openadapt.rdp-presentation-render.v2", "timing": "paced derivative; source frames and input events remain exact", "video": "openadapt-rdp-demo.mp4", - "video_sha256": "c8df573bd0edbf139d4b5718ee14f2bf35b7e69331bfd9c5bc592dbf2e351504", + "video_sha256": "86e376623c05992a15a1196b6639783faebbbabb95e51f458199cb3db398a8d4", "workflow_digest": "da52230dbde8d8ae6bd8060f4d2dc3f8c503487bbb3a214159af9550317670b9" } diff --git a/public/demos/rdp/presentation.timeline.json b/public/demos/rdp/presentation.timeline.json index 30065d5..ecf8e49 100644 --- a/public/demos/rdp/presentation.timeline.json +++ b/public/demos/rdp/presentation.timeline.json @@ -1,13 +1,13 @@ { "derivative": { "fps": 12, - "frame_count": 627, + "frame_count": 467, "frame_size": [ 1280, 800 ], "video": "openadapt-rdp-demo.mp4", - "video_sha256": "c8df573bd0edbf139d4b5718ee14f2bf35b7e69331bfd9c5bc592dbf2e351504" + "video_sha256": "86e376623c05992a15a1196b6639783faebbbabb95e51f458199cb3db398a8d4" }, "program_graph_sha256": "7cb346cabe49b1077b9eaa960257d32f6a9262401fcf7443218e7726a7203570", "schema_version": "openadapt.rdp-hybrid-presentation.v1", @@ -2872,114 +2872,8 @@ "start_pts_s": 17.916666666666668 }, { - "compiled_graph": { - "node_id": "step_000", - "node_index": 0 - }, - "end_frame_exclusive": 229, - "end_pts_s": 19.083333333333332, - "phase": "compiled_workflow", - "start_frame": 216, - "start_pts_s": 18.0 - }, - { - "compiled_graph": { - "node_id": "step_001", - "node_index": 1 - }, - "end_frame_exclusive": 242, - "end_pts_s": 20.166666666666668, - "phase": "compiled_workflow", - "start_frame": 229, - "start_pts_s": 19.083333333333332 - }, - { - "compiled_graph": { - "node_id": "step_002", - "node_index": 2 - }, - "end_frame_exclusive": 255, - "end_pts_s": 21.25, - "phase": "compiled_workflow", - "start_frame": 242, - "start_pts_s": 20.166666666666668 - }, - { - "compiled_graph": { - "node_id": "step_003", - "node_index": 3 - }, - "end_frame_exclusive": 268, - "end_pts_s": 22.333333333333332, - "phase": "compiled_workflow", - "start_frame": 255, - "start_pts_s": 21.25 - }, - { - "compiled_graph": { - "node_id": "step_004", - "node_index": 4 - }, - "end_frame_exclusive": 281, - "end_pts_s": 23.416666666666668, - "phase": "compiled_workflow", - "start_frame": 268, - "start_pts_s": 22.333333333333332 - }, - { - "compiled_graph": { - "node_id": "step_005", - "node_index": 5 - }, - "end_frame_exclusive": 294, - "end_pts_s": 24.5, - "phase": "compiled_workflow", - "start_frame": 281, - "start_pts_s": 23.416666666666668 - }, - { - "compiled_graph": { - "node_id": "step_006", - "node_index": 6 - }, - "end_frame_exclusive": 307, - "end_pts_s": 25.583333333333332, - "phase": "compiled_workflow", - "start_frame": 294, - "start_pts_s": 24.5 - }, - { - "compiled_graph": { - "node_id": "step_007", - "node_index": 7 - }, - "end_frame_exclusive": 320, - "end_pts_s": 26.666666666666668, - "phase": "compiled_workflow", - "start_frame": 307, - "start_pts_s": 25.583333333333332 - }, - { - "compiled_graph": { - "node_id": "__end__", - "node_index": 8 - }, - "end_frame_exclusive": 333, - "end_pts_s": 27.75, - "phase": "compiled_workflow", - "start_frame": 320, - "start_pts_s": 26.666666666666668 - }, - { - "end_frame_exclusive": 376, - "end_pts_s": 31.333333333333332, - "phase": "compiled_workflow", - "start_frame": 333, - "start_pts_s": 27.75 - }, - { - "end_frame_exclusive": 381, - "end_pts_s": 31.75, + "end_frame_exclusive": 221, + "end_pts_s": 18.416666666666668, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -2995,12 +2889,12 @@ "sha256": "2f96c4ec19019bec26152b1e5c286da9ccd593fc12357b60b4238baeadf8dcd3", "source": "rdp-client-framebuffer" }, - "start_frame": 376, - "start_pts_s": 31.333333333333332 + "start_frame": 216, + "start_pts_s": 18.0 }, { - "end_frame_exclusive": 386, - "end_pts_s": 32.166666666666664, + "end_frame_exclusive": 226, + "end_pts_s": 18.833333333333332, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3016,12 +2910,12 @@ "sha256": "11ba5b490b7bd9983027fd20dbe96b8dd5d6d4fa40b0b3705ffa3a545ea5bc72", "source": "rdp-client-framebuffer" }, - "start_frame": 381, - "start_pts_s": 31.75 + "start_frame": 221, + "start_pts_s": 18.416666666666668 }, { - "end_frame_exclusive": 391, - "end_pts_s": 32.583333333333336, + "end_frame_exclusive": 231, + "end_pts_s": 19.25, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3037,12 +2931,12 @@ "sha256": "5c10e836f1c4b95fabb9ac0d37fff0ea392d90168793e906cfa1bc700dfdcd87", "source": "rdp-client-framebuffer" }, - "start_frame": 386, - "start_pts_s": 32.166666666666664 + "start_frame": 226, + "start_pts_s": 18.833333333333332 }, { - "end_frame_exclusive": 396, - "end_pts_s": 33.0, + "end_frame_exclusive": 236, + "end_pts_s": 19.666666666666668, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3058,12 +2952,12 @@ "sha256": "33e5d042bba0cac1aa38fecbac9d8248132724ebde42d3423c8a645b15b14860", "source": "rdp-client-framebuffer" }, - "start_frame": 391, - "start_pts_s": 32.583333333333336 + "start_frame": 231, + "start_pts_s": 19.25 }, { - "end_frame_exclusive": 401, - "end_pts_s": 33.416666666666664, + "end_frame_exclusive": 241, + "end_pts_s": 20.083333333333332, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3079,12 +2973,12 @@ "sha256": "4045874aa25e65b5312f78e3c47807ade563580c605bad3d4e84f52ba767d403", "source": "rdp-client-framebuffer" }, - "start_frame": 396, - "start_pts_s": 33.0 + "start_frame": 236, + "start_pts_s": 19.666666666666668 }, { - "end_frame_exclusive": 406, - "end_pts_s": 33.833333333333336, + "end_frame_exclusive": 246, + "end_pts_s": 20.5, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3100,12 +2994,12 @@ "sha256": "e6e6e21556225545c0b4c45a52c7a8258f920ba244b063691ffc168beaf61b7b", "source": "rdp-client-framebuffer" }, - "start_frame": 401, - "start_pts_s": 33.416666666666664 + "start_frame": 241, + "start_pts_s": 20.083333333333332 }, { - "end_frame_exclusive": 411, - "end_pts_s": 34.25, + "end_frame_exclusive": 251, + "end_pts_s": 20.916666666666668, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3121,12 +3015,12 @@ "sha256": "73abf9410b4d91bc9f6d1c271aae2b46ad2e748a1fa3ec7685f0ce1dc3041243", "source": "rdp-client-framebuffer" }, - "start_frame": 406, - "start_pts_s": 33.833333333333336 + "start_frame": 246, + "start_pts_s": 20.5 }, { - "end_frame_exclusive": 416, - "end_pts_s": 34.666666666666664, + "end_frame_exclusive": 256, + "end_pts_s": 21.333333333333332, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3142,12 +3036,12 @@ "sha256": "1aa75f5def849888cd4c3543b54c2cae2f5210400eb7905bad83b5e9b82078e2", "source": "rdp-client-framebuffer" }, - "start_frame": 411, - "start_pts_s": 34.25 + "start_frame": 251, + "start_pts_s": 20.916666666666668 }, { - "end_frame_exclusive": 421, - "end_pts_s": 35.083333333333336, + "end_frame_exclusive": 261, + "end_pts_s": 21.75, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3163,12 +3057,12 @@ "sha256": "d5d5e2caf4927502c2fc6b78234d90b4e2ba7ebb241065b8d4fe8d1b5b919834", "source": "rdp-client-framebuffer" }, - "start_frame": 416, - "start_pts_s": 34.666666666666664 + "start_frame": 256, + "start_pts_s": 21.333333333333332 }, { - "end_frame_exclusive": 493, - "end_pts_s": 41.083333333333336, + "end_frame_exclusive": 333, + "end_pts_s": 27.75, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3184,12 +3078,12 @@ "sha256": "d5d5e2caf4927502c2fc6b78234d90b4e2ba7ebb241065b8d4fe8d1b5b919834", "source": "rdp-client-framebuffer" }, - "start_frame": 421, - "start_pts_s": 35.083333333333336 + "start_frame": 261, + "start_pts_s": 21.75 }, { - "end_frame_exclusive": 577, - "end_pts_s": 48.083333333333336, + "end_frame_exclusive": 417, + "end_pts_s": 34.75, "facts": { "effect": "not_written", "effect_verifier_kind": "read-only SQL", @@ -3205,12 +3099,12 @@ "sha256": "1d28998718b3b99b0fe82384f9cbabe61d728fa458a6fa002917e849fc74b79e", "source": "rdp-client-framebuffer" }, - "start_frame": 493, - "start_pts_s": 41.083333333333336 + "start_frame": 333, + "start_pts_s": 27.75 }, { - "end_frame_exclusive": 627, - "end_pts_s": 52.25, + "end_frame_exclusive": 467, + "end_pts_s": 38.916666666666664, "facts": { "effect": "confirmed", "effect_verifier_kind": "read-only SQL", @@ -3226,8 +3120,8 @@ "sha256": "d5d5e2caf4927502c2fc6b78234d90b4e2ba7ebb241065b8d4fe8d1b5b919834", "source": "rdp-client-framebuffer" }, - "start_frame": 577, - "start_pts_s": 48.083333333333336 + "start_frame": 417, + "start_pts_s": 34.75 } ], "workflow_digest": "da52230dbde8d8ae6bd8060f4d2dc3f8c503487bbb3a214159af9550317670b9"