diff --git a/docs/plans/site-ui-4-shots/dag/home-1440-dark-mid.jpg b/docs/plans/site-ui-4-shots/dag/home-1440-dark-mid.jpg new file mode 100644 index 00000000..3eb2106b Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/home-1440-dark-mid.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/home-1440-light-mid.jpg b/docs/plans/site-ui-4-shots/dag/home-1440-light-mid.jpg new file mode 100644 index 00000000..018c664a Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/home-1440-light-mid.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/home-390-dark-mid.jpg b/docs/plans/site-ui-4-shots/dag/home-390-dark-mid.jpg new file mode 100644 index 00000000..7be5f21e Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/home-390-dark-mid.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/home-390-light-mid.jpg b/docs/plans/site-ui-4-shots/dag/home-390-light-mid.jpg new file mode 100644 index 00000000..c9c68d60 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/home-390-light-mid.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/igneum-chain-scene.html b/docs/plans/site-ui-4-shots/dag/igneum-chain-scene.html new file mode 100644 index 00000000..1f2eda95 --- /dev/null +++ b/docs/plans/site-ui-4-shots/dag/igneum-chain-scene.html @@ -0,0 +1,595 @@ + + +Igneum / Miner in motion + + + +
+
IGNEUM.MINER / MOTION LAB
+
+
YOUR WORK. PART OF THE NETWORK.

The chain, made visible.

Follow your blocks. Watch the proofs. See each checkpoint lock.

SIMULATED FEED

Mining-app motion preview
No connection to the devnet

+
+
Blocks in window
—last 90s
Waiting for sample data
+
Your blocks
—in this window
Key 6ad0e117
+
Proven blocks
—
Observer-reported proof status
+
Latest checkpoint
—
Waiting for sample data
+
+
+

Block DAG

Time-aligned miner lanes. Every parent connection.

Simulation running
+
6 miner keys
+
Your browser needs canvas support. The block table below provides the same records as text.
+
IncludedExcludedSelected chainYour block✓ProvenLocked checkpoint
+
Click to inspect · Drag to explore
90s
+ +
+
Try the motionThese controls change the simulation only.
+

Small footprint. Same chain.

The same renderer, scaled for an app overview card.

COMPACT / 60S
+

Motion, with meaning.

01

A block arrives.

A brief signal traces its real parent edges. Your blocks receive a molten frame.

02

The proof takes shape.

Shard tiles reflect planned, proving, verified and paid states from the feed.

03

A checkpoint locks.

A pending marker becomes a solid boundary only when the observer reports locked.

+
Explore the blocks as a table KEYBOARD-ACCESSIBLE / SAME DISPLAYED DATA
Sample blocks in the displayed time window. Select a hash to inspect its proof states.
HashMiner keyDAAInclusionProofFinality
+
Use this in the mining app EXISTING IgneumDag.mount() API RETAINED

Replace your existing live-dag.js with the supplied module. Keep the existing canvas, CSS colour tokens, API endpoint and mount call. The richer preview shell is optional; the renderer does not need it.

const dag = IgneumDag.mount(canvas, {
+  poll: false,
+  mine: yourMinerKey,
+  window: 120,
+  pauseButton,
+  tooltip,
+  onState: updateFeedStatus
+});
+
+// The same observer reply your app already receives.
+dag.push(reply);
+
+// When the screen unmounts:
+dag.destroy();

The separate proof-core.js adds the larger shard visual. This file is a standalone simulation, not a deployed change or a connection to live hardware.

+
+
+ + diff --git a/docs/plans/site-ui-4-shots/dag/live-1440-dark-mid.jpg b/docs/plans/site-ui-4-shots/dag/live-1440-dark-mid.jpg new file mode 100644 index 00000000..9022d75b Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-1440-dark-mid.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/live-1440-dark-selected.jpg b/docs/plans/site-ui-4-shots/dag/live-1440-dark-selected.jpg new file mode 100644 index 00000000..06eeba9c Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-1440-dark-selected.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/live-1440-light-mid.jpg b/docs/plans/site-ui-4-shots/dag/live-1440-light-mid.jpg new file mode 100644 index 00000000..5d165717 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-1440-light-mid.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/live-1440-light-selected.jpg b/docs/plans/site-ui-4-shots/dag/live-1440-light-selected.jpg new file mode 100644 index 00000000..1d8350a5 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-1440-light-selected.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/live-390-dark-mid.jpg b/docs/plans/site-ui-4-shots/dag/live-390-dark-mid.jpg new file mode 100644 index 00000000..6ff647b5 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-390-dark-mid.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/live-390-dark-selected.jpg b/docs/plans/site-ui-4-shots/dag/live-390-dark-selected.jpg new file mode 100644 index 00000000..b9ed5c28 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-390-dark-selected.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/live-390-light-mid.jpg b/docs/plans/site-ui-4-shots/dag/live-390-light-mid.jpg new file mode 100644 index 00000000..58dfd774 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-390-light-mid.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/live-390-light-selected.jpg b/docs/plans/site-ui-4-shots/dag/live-390-light-selected.jpg new file mode 100644 index 00000000..19417325 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-390-light-selected.jpg differ diff --git a/docs/plans/site-ui-4-shots/dag/live-scene-10s.gif b/docs/plans/site-ui-4-shots/dag/live-scene-10s.gif new file mode 100644 index 00000000..70da72c4 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-scene-10s.gif differ diff --git a/docs/plans/site-ui-4-shots/dag/live-scene-10s.mp4 b/docs/plans/site-ui-4-shots/dag/live-scene-10s.mp4 new file mode 100644 index 00000000..17d0aa65 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-scene-10s.mp4 differ diff --git a/docs/plans/site-ui-4-shots/dag/live-scene-10s.webm b/docs/plans/site-ui-4-shots/dag/live-scene-10s.webm new file mode 100644 index 00000000..7a403534 Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/live-scene-10s.webm differ diff --git a/docs/plans/site-ui-4-shots/dag/pack-preview.mp4 b/docs/plans/site-ui-4-shots/dag/pack-preview.mp4 new file mode 100644 index 00000000..78b6000b Binary files /dev/null and b/docs/plans/site-ui-4-shots/dag/pack-preview.mp4 differ diff --git a/docs/plans/site-ui-4-shots/pack/results.json b/docs/plans/site-ui-4-shots/pack/results.json new file mode 100644 index 00000000..ad20bc44 --- /dev/null +++ b/docs/plans/site-ui-4-shots/pack/results.json @@ -0,0 +1,330 @@ +{ + "passed": 73, + "total": 73, + "results": [ + { + "test": "Standalone preview renders without JS errors", + "passed": true, + "evidence": [] + }, + { + "test": "Standalone preview makes no network requests", + "passed": true, + "evidence": [] + }, + { + "test": "Both renderers use the same block records", + "passed": true + }, + { + "test": "Sample contains six miner keys", + "passed": true + }, + { + "test": "Visible source label says simulated", + "passed": true + }, + { + "test": "Original mount API is exposed", + "passed": true + }, + { + "test": "Zoom-in control works", + "passed": true + }, + { + "test": "Zoom-out control works", + "passed": true + }, + { + "test": "Ordinary page scrolling is not captured", + "passed": true, + "evidence": { + "prevented": false, + "w": 90 + } + }, + { + "test": "Modified wheel zooms the graph", + "passed": true, + "evidence": { + "prevented": true, + "w": 103 + } + }, + { + "test": "Keyboard inspection updates the details", + "passed": true, + "evidence": "e231e4cf43678ba5" + }, + { + "test": "Escape clears selection", + "passed": true + }, + { + "test": "Your-block filter is active", + "passed": true + }, + { + "test": "Selected-chain filter is active", + "passed": true + }, + { + "test": "Pause button updates state and accessibility", + "passed": true + }, + { + "test": "Pause freezes displayed records while receiving data", + "passed": true + }, + { + "test": "Pause freezes the rendered pixels", + "passed": true + }, + { + "test": "Paused graph has no continuous RAF loop", + "passed": true, + "evidence": { + "before": 16, + "after": 16 + } + }, + { + "test": "Resume applies buffered block records", + "passed": true + }, + { + "test": "Sample block control selects a new own block", + "passed": true + }, + { + "test": "Sample proof control advances shard states", + "passed": true + }, + { + "test": "Sample checkpoint control produces an explicit locked record", + "passed": true + }, + { + "test": "Accessible table contains block records", + "passed": true + }, + { + "test": "Table selection opens the matching block", + "passed": true + }, + { + "test": "Light theme control works", + "passed": true + }, + { + "test": "Manual reduced motion propagates to both visuals", + "passed": true + }, + { + "test": "System reduced-motion changes stop continuous drawing", + "passed": true, + "evidence": { + "before": 70, + "after": 70 + } + }, + { + "test": "Motion resumes when the system preference changes", + "passed": true + }, + { + "test": "Offscreen main graph suspends animation", + "passed": true, + "evidence": { + "before": 78, + "after": 78 + } + }, + { + "test": "Main preview remains free of JS errors", + "passed": true, + "evidence": [] + }, + { + "test": "Responsive layout 320px has no horizontal overflow", + "passed": true + }, + { + "test": "Compact renderer draws when scrolled into view at 320px", + "passed": true + }, + { + "test": "Responsive preview 320px has no JS errors", + "passed": true, + "evidence": [] + }, + { + "test": "Responsive layout 390px has no horizontal overflow", + "passed": true + }, + { + "test": "Compact renderer draws when scrolled into view at 390px", + "passed": true + }, + { + "test": "Responsive preview 390px has no JS errors", + "passed": true, + "evidence": [] + }, + { + "test": "Responsive layout 768px has no horizontal overflow", + "passed": true + }, + { + "test": "Compact renderer draws when scrolled into view at 768px", + "passed": true + }, + { + "test": "Responsive preview 768px has no JS errors", + "passed": true, + "evidence": [] + }, + { + "test": "Responsive layout 1024px has no horizontal overflow", + "passed": true + }, + { + "test": "Compact renderer draws when scrolled into view at 1024px", + "passed": true + }, + { + "test": "Responsive preview 1024px has no JS errors", + "passed": true, + "evidence": [] + }, + { + "test": "Responsive layout 1440px has no horizontal overflow", + "passed": true + }, + { + "test": "Compact renderer draws when scrolled into view at 1440px", + "passed": true + }, + { + "test": "Responsive preview 1440px has no JS errors", + "passed": true, + "evidence": [] + }, + { + "test": "Valid observer payload is accepted", + "passed": true + }, + { + "test": "Renderer does not mutate supplied records", + "passed": true + }, + { + "test": "Age and selected-chain status do not imply proof or finality", + "passed": true + }, + { + "test": "Existing records update miner, parents and header fields", + "passed": true + }, + { + "test": "Malformed envelope is rejected without throwing", + "passed": true + }, + { + "test": "Invalid block records are rejected without throwing", + "passed": true + }, + { + "test": "Prototype-like hashes are safe map keys", + "passed": true + }, + { + "test": "Tooltip treats incoming text as text, not markup", + "passed": true + }, + { + "test": "Unknown shard state is not promoted to planned or verified", + "passed": true + }, + { + "test": "Zoom has a 30-second lower bound", + "passed": true + }, + { + "test": "Zoom has a 300-second upper bound", + "passed": true + }, + { + "test": "ResizeObserver tracks container-only resizes", + "passed": true + }, + { + "test": "Checkpoint is not snapped to a different blue score", + "passed": true + }, + { + "test": "Exact checkpoint score renders a pending marker", + "passed": true + }, + { + "test": "Weight alone does not infer checkpoint lock", + "passed": true + }, + { + "test": "Stale feed preserves records and reports stale", + "passed": true + }, + { + "test": "Stale feed does not animate as fresh activity", + "passed": true + }, + { + "test": "Mounting again destroys the previous instance", + "passed": true + }, + { + "test": "Destroy stops animation and rejects future pushes", + "passed": true + }, + { + "test": "Polling preserves existing endpoint query parameters", + "passed": true + }, + { + "test": "Polling requests fresh data with an abort signal", + "passed": true + }, + { + "test": "Overlapping polls are prevented", + "passed": true + }, + { + "test": "Queued zoom request uses latest window", + "passed": true + }, + { + "test": "Observer response reaches rendered model", + "passed": true + }, + { + "test": "Destroy aborts an in-flight observer request", + "passed": true + }, + { + "test": "New module runs inside the supplied original HTML host", + "passed": true, + "evidence": [] + }, + { + "test": "Original host pause control still works", + "passed": true + }, + { + "test": "Original host theme control remains compatible", + "passed": true, + "evidence": [] + } + ], + "scope": "Chromium headless; embedded standalone HTML; mocked read-only observer; original uploaded HTML host. Not a live devnet or native mining-engine test." +} \ No newline at end of file diff --git a/docs/plans/site-ui-4-shots/pack/verify-local.log b/docs/plans/site-ui-4-shots/pack/verify-local.log new file mode 100644 index 00000000..00219d0f --- /dev/null +++ b/docs/plans/site-ui-4-shots/pack/verify-local.log @@ -0,0 +1,74 @@ +PASS Standalone preview renders without JS errors +PASS Standalone preview makes no network requests +PASS Both renderers use the same block records +PASS Sample contains six miner keys +PASS Visible source label says simulated +PASS Original mount API is exposed +PASS Zoom-in control works +PASS Zoom-out control works +PASS Ordinary page scrolling is not captured +PASS Modified wheel zooms the graph +PASS Keyboard inspection updates the details +PASS Escape clears selection +PASS Your-block filter is active +PASS Selected-chain filter is active +PASS Pause button updates state and accessibility +PASS Pause freezes displayed records while receiving data +PASS Pause freezes the rendered pixels +PASS Paused graph has no continuous RAF loop +PASS Resume applies buffered block records +PASS Sample block control selects a new own block +PASS Sample proof control advances shard states +PASS Sample checkpoint control produces an explicit locked record +PASS Accessible table contains block records +PASS Table selection opens the matching block +PASS Light theme control works +PASS Manual reduced motion propagates to both visuals +PASS System reduced-motion changes stop continuous drawing +PASS Motion resumes when the system preference changes +PASS Offscreen main graph suspends animation +PASS Main preview remains free of JS errors +PASS Responsive layout 320px has no horizontal overflow +PASS Compact renderer draws when scrolled into view at 320px +PASS Responsive preview 320px has no JS errors +PASS Responsive layout 390px has no horizontal overflow +PASS Compact renderer draws when scrolled into view at 390px +PASS Responsive preview 390px has no JS errors +PASS Responsive layout 768px has no horizontal overflow +PASS Compact renderer draws when scrolled into view at 768px +PASS Responsive preview 768px has no JS errors +PASS Responsive layout 1024px has no horizontal overflow +PASS Compact renderer draws when scrolled into view at 1024px +PASS Responsive preview 1024px has no JS errors +PASS Responsive layout 1440px has no horizontal overflow +PASS Compact renderer draws when scrolled into view at 1440px +PASS Responsive preview 1440px has no JS errors +PASS Valid observer payload is accepted +PASS Renderer does not mutate supplied records +PASS Age and selected-chain status do not imply proof or finality +PASS Existing records update miner, parents and header fields +PASS Malformed envelope is rejected without throwing +PASS Invalid block records are rejected without throwing +PASS Prototype-like hashes are safe map keys +PASS Tooltip treats incoming text as text, not markup +PASS Unknown shard state is not promoted to planned or verified +PASS Zoom has a 30-second lower bound +PASS Zoom has a 300-second upper bound +PASS ResizeObserver tracks container-only resizes +PASS Checkpoint is not snapped to a different blue score +PASS Exact checkpoint score renders a pending marker +PASS Weight alone does not infer checkpoint lock +PASS Stale feed preserves records and reports stale +PASS Stale feed does not animate as fresh activity +PASS Mounting again destroys the previous instance +PASS Destroy stops animation and rejects future pushes +PASS Polling preserves existing endpoint query parameters +PASS Polling requests fresh data with an abort signal +PASS Overlapping polls are prevented +PASS Queued zoom request uses latest window +PASS Observer response reaches rendered model +PASS Destroy aborts an in-flight observer request +PASS New module runs inside the supplied original HTML host +PASS Original host pause control still works +PASS Original host theme control remains compatible +RESULT 73 / 73 diff --git a/site/app.html b/site/app.html index 5a9d3698..77a779a3 100644 --- a/site/app.html +++ b/site/app.html @@ -330,8 +330,8 @@
- Windows v0.3.17 · 62.6 MB - macOS v0.3.17 · 41.9 MB + Windows v0.3.18 · 62.6 MB + macOS v0.3.18 · 42.0 MB Linux · HiveOS the flight sheet, on the miner page
@@ -354,7 +354,7 @@
-Download the minerv0.3.17 · 62.6 MB +Download the minerv0.3.18 · 62.6 MB