Skip to content
Draft
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
12 changes: 8 additions & 4 deletions apps/dashboard/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ $env:VITE_FLOWCHAIN_CONTROL_PLANE_URL="http://127.0.0.1:8787"
npm run dev
```

If the API is not running, the workbench marks the control-plane as offline, shows stale fixture fallback where appropriate, and keeps rendering deterministic local data. This app is for private/local validation and canary review only; it does not initiate value-bearing wallet flows.
If the API is running, the workbench verifies `/health`, `/state`, and a read-only `/rpc` batch for blocks, transactions, object lifecycle rows, provenance, and raw local JSON. If the API is not running, the workbench marks the control-plane as offline, shows stale fixture fallback where appropriate, and keeps rendering deterministic local data. This app is for private/local validation and canary review only; it does not initiate value-bearing wallet flows.

## Data Boundary

Expand Down Expand Up @@ -75,6 +75,7 @@ Workbench fixture fallback paths:
```text
apps/dashboard/public/data/flowchain-local-devnet-state.json
apps/dashboard/public/data/flowchain-local-devnet-dashboard-state.json
apps/dashboard/public/data/flowchain-bridge-test-deposit.json
```

Generated local source outputs land under the fixture boundary first:
Expand Down Expand Up @@ -105,14 +106,17 @@ fixtures/dashboard/generated/hardware-heartbeats.json

Every displayed record carries source subsystem, fixture/local origin, chain context, ID/hash, status, and last-updated metadata when available.

The workbench adds local setup/API status plus object views for blocks, transactions, agents, models, receipts, memory cells, artifacts, verifier reports, challenges, finality, provenance, and raw JSON. When a current fixture does not yet contain a private-testnet object type, the view stays empty and names the expected control-plane endpoint.
The workbench adds local setup/API status plus object views for blocks, peers, transactions, mempool, accounts, balances, faucet events, wallet public accounts, agents, models, receipts, memory cells, artifacts, verifier modules, verifier reports, challenges, finality, bridge test-lane rows, hardware signals, provenance, and raw JSON. When a current fixture does not yet contain a private-testnet object type, the view stays empty and names the expected control-plane endpoint.

The action cards are API-gated. Refresh is enabled when the local API responds. Faucet, sample transaction, and bridge test-deposit actions stay disabled unless the control-plane advertises matching local-only methods; private keys and seed phrases never enter the browser.

Workbench object coverage:

```text
node/chain status, blocks, transactions, rootfields, agents, models, work receipts,
node/chain status, peers, blocks, transactions, mempool, accounts, balances,
faucet events, wallet public accounts, rootfields, agents, models, work receipts,
memory cells, artifacts, verifier modules, verifier reports, challenges, finality,
provenance/source, hardware signals, raw JSON
bridge deposits/credits/withdrawals, provenance/source, hardware signals, raw JSON
```

## Status Vocabulary
Expand Down
15 changes: 15 additions & 0 deletions apps/dashboard/public/data/flowchain-bridge-test-deposit.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"schema": "flowmemory.bridge_deposit.v0",
"depositId": "0x7e3a7f7ab7dc9b07d762c1f2fce315cf0c08f1a7e854b4dbcb2359efcb9cb269",
"sourceChainId": 84532,
"sourceContract": "0x1111111111111111111111111111111111111111",
"txHash": "0x2222222222222222222222222222222222222222222222222222222222222222",
"logIndex": 0,
"token": "0x3333333333333333333333333333333333333333",
"amount": "20000000",
"sender": "0x4444444444444444444444444444444444444444",
"flowchainRecipient": "0x5555555555555555555555555555555555555555555555555555555555555555",
"nonce": "1",
"metadataHash": "0x6666666666666666666666666666666666666666666666666666666666666666",
"status": "observed"
}
5 changes: 5 additions & 0 deletions apps/dashboard/scripts/sync-fixtures.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ const fixtureCopies = [
source: resolve(repoRoot, "fixtures/launch-core/generated/devnet/dashboard-state.json"),
destination: resolve(destinationDir, "flowchain-local-devnet-dashboard-state.json"),
},
{
label: "FlowChain bridge test deposit",
source: resolve(repoRoot, "fixtures/bridge/base-sepolia-mock-deposit.json"),
destination: resolve(destinationDir, "flowchain-bridge-test-deposit.json"),
},
];

mkdirSync(destinationDir, { recursive: true });
Expand Down
2 changes: 1 addition & 1 deletion apps/dashboard/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ export default function App() {
return (
<AppShell data={data} canaryData={canaryData} workbench={workbench}>
<Routes>
<Route path="/" element={<WorkbenchView data={data} workbench={workbench} />} />
<Route path="/" element={<WorkbenchView data={data} workbench={workbench} onRefresh={() => setVersion((current) => current + 1)} />} />
<Route path="/overview" element={<OverviewView data={data} />} />
<Route path="/canary" element={<CanaryDeploymentView data={canaryData} />} />
<Route path="/flowmemory" element={<FlowMemoryView data={data} />} />
Expand Down
Loading
Loading