Mar 24, 4-5 AM (3)
Mar 24, 5-6 AM (4)
Mar 24, 6-7 AM (3)
Mar 24, 7-8 AM (102)
Mar 24, 8-9 AM (40)
Mar 24, 9-10 AM (30)
Mar 24, 10-11 AM (167)
Mar 24, 11-12 PM (26)
Mar 24, 12-1 PM (42)
Mar 24, 1-2 PM (129)
Mar 24, 2-3 PM (13)
Mar 24, 3-4 PM (41)
Mar 24, 4-5 PM (47)
Mar 24, 5-6 PM (111)
Mar 24, 6-7 PM (17)
Mar 24, 7-8 PM (9)
Mar 24, 8-9 PM (15)
Mar 24, 9-10 PM (16)
Mar 24, 10-11 PM (28)
Mar 24, 11-12 AM (14)
Mar 25, 12-1 AM (1)
Mar 25, 1-2 AM (2)
Mar 25, 2-3 AM (14)
Mar 25, 3-4 AM (2)
Mar 25, 4-5 AM (10)
Mar 25, 5-6 AM (5)
Mar 25, 6-7 AM (7)
Mar 25, 7-8 AM (14)
Mar 25, 8-9 AM (22)
Mar 25, 9-10 AM (48)
Mar 25, 10-11 AM (28)
Mar 25, 11-12 PM (36)
Mar 25, 12-1 PM (86)
Mar 25, 1-2 PM (29)
Mar 25, 2-3 PM (28)
Mar 25, 3-4 PM (65)
Mar 25, 4-5 PM (30)
Mar 25, 5-6 PM (16)
Mar 25, 6-7 PM (37)
Mar 25, 7-8 PM (10)
Mar 25, 8-9 PM (9)
Mar 25, 9-10 PM (6)
Mar 25, 10-11 PM (25)
Mar 25, 11-12 AM (16)
Mar 26, 12-1 AM (3)
Mar 26, 1-2 AM (9)
Mar 26, 2-3 AM (21)
Mar 26, 3-4 AM (10)
Mar 26, 4-5 AM (1)
Mar 26, 5-6 AM (14)
Mar 26, 6-7 AM (4)
Mar 26, 7-8 AM (8)
Mar 26, 8-9 AM (18)
Mar 26, 9-10 AM (33)
Mar 26, 10-11 AM (21)
Mar 26, 11-12 PM (34)
Mar 26, 12-1 PM (33)
Mar 26, 1-2 PM (77)
Mar 26, 2-3 PM (46)
Mar 26, 3-4 PM (51)
Mar 26, 4-5 PM (40)
Mar 26, 5-6 PM (19)
Mar 26, 6-7 PM (19)
Mar 26, 7-8 PM (15)
Mar 26, 8-9 PM (9)
Mar 26, 9-10 PM (17)
Mar 26, 10-11 PM (38)
Mar 26, 11-12 AM (11)
Mar 27, 12-1 AM (3)
Mar 27, 1-2 AM (1)
Mar 27, 2-3 AM (26)
Mar 27, 3-4 AM (12)
Mar 27, 4-5 AM (6)
Mar 27, 5-6 AM (3)
Mar 27, 6-7 AM (10)
Mar 27, 7-8 AM (18)
Mar 27, 8-9 AM (32)
Mar 27, 9-10 AM (26)
Mar 27, 10-11 AM (38)
Mar 27, 11-12 PM (26)
Mar 27, 12-1 PM (57)
Mar 27, 1-2 PM (31)
Mar 27, 2-3 PM (60)
Mar 27, 3-4 PM (40)
Mar 27, 4-5 PM (20)
Mar 27, 5-6 PM (29)
Mar 27, 6-7 PM (29)
Mar 27, 7-8 PM (13)
Mar 27, 8-9 PM (15)
Mar 27, 9-10 PM (13)
Mar 27, 10-11 PM (23)
Mar 27, 11-12 AM (15)
Mar 28, 12-1 AM (1)
Mar 28, 1-2 AM (1)
Mar 28, 2-3 AM (12)
Mar 28, 3-4 AM (1)
Mar 28, 4-5 AM (2)
Mar 28, 5-6 AM (1)
Mar 28, 6-7 AM (0)
Mar 28, 7-8 AM (2)
Mar 28, 8-9 AM (7)
Mar 28, 9-10 AM (7)
Mar 28, 10-11 AM (7)
Mar 28, 11-12 PM (7)
Mar 28, 12-1 PM (3)
Mar 28, 1-2 PM (4)
Mar 28, 2-3 PM (10)
Mar 28, 3-4 PM (2)
Mar 28, 4-5 PM (4)
Mar 28, 5-6 PM (5)
Mar 28, 6-7 PM (0)
Mar 28, 7-8 PM (0)
Mar 28, 8-9 PM (0)
Mar 28, 9-10 PM (1)
Mar 28, 10-11 PM (20)
Mar 28, 11-12 AM (20)
Mar 29, 12-1 AM (1)
Mar 29, 1-2 AM (6)
Mar 29, 2-3 AM (5)
Mar 29, 3-4 AM (6)
Mar 29, 4-5 AM (3)
Mar 29, 5-6 AM (5)
Mar 29, 6-7 AM (0)
Mar 29, 7-8 AM (0)
Mar 29, 8-9 AM (13)
Mar 29, 9-10 AM (0)
Mar 29, 10-11 AM (0)
Mar 29, 11-12 PM (2)
Mar 29, 12-1 PM (13)
Mar 29, 1-2 PM (0)
Mar 29, 2-3 PM (0)
Mar 29, 3-4 PM (1)
Mar 29, 4-5 PM (3)
Mar 29, 5-6 PM (4)
Mar 29, 6-7 PM (8)
Mar 29, 7-8 PM (5)
Mar 29, 8-9 PM (0)
Mar 29, 9-10 PM (8)
Mar 29, 10-11 PM (24)
Mar 29, 11-12 AM (17)
Mar 30, 12-1 AM (5)
Mar 30, 1-2 AM (5)
Mar 30, 2-3 AM (7)
Mar 30, 3-4 AM (7)
Mar 30, 4-5 AM (3)
Mar 30, 5-6 AM (12)
Mar 30, 6-7 AM (3)
Mar 30, 7-8 AM (36)
Mar 30, 8-9 AM (27)
Mar 30, 9-10 AM (10)
Mar 30, 10-11 AM (67)
Mar 30, 11-12 PM (47)
Mar 30, 12-1 PM (30)
Mar 30, 1-2 PM (38)
Mar 30, 2-3 PM (61)
Mar 30, 3-4 PM (31)
Mar 30, 4-5 PM (18)
Mar 30, 5-6 PM (38)
Mar 30, 6-7 PM (14)
Mar 30, 7-8 PM (14)
Mar 30, 8-9 PM (13)
Mar 30, 9-10 PM (26)
Mar 30, 10-11 PM (43)
Mar 30, 11-12 AM (26)
Mar 31, 12-1 AM (12)
Mar 31, 1-2 AM (5)
Mar 31, 2-3 AM (14)
Mar 31, 3-4 AM (6)
Mar 31, 4-5 AM (2)
3,358 commits this week Mar 24, 2026 - Mar 31, 2026
Add sync progress, speed tracking, and topology peer display to dashboard server
- Estimate sync progress from preprod genesis time (slot = now - 1654041600)
- Track sync speed via rolling 30s window of slot advancement
- Read GC cycles from stable_state table
- Query peers from topology.json (bootstrap + publicRoots)
- Change node port from 3001 to 3030 in preprod config

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Remove all mock/demo data from dashboard, use real node data only
All 6 dashboard pages now display only real data from the node's
database via the dashboard-server API. Empty states shown when
no data is available instead of fake fixtures.

- Overview: removed mockStatus, MOCK_CHAIN_STATE, ERA_BLOCK_COUNTS
- Blocks: removed generateMockTxHash, mockTxsForBlock, mockTxDetail, mockBlocks fallback
- Peers: removed mockPeers fallback and demo mode
- Mempool: removed mempool.json fixture fallback
- Explorer: removed MOCK_UTXOS, MOCK_DELTAS inline data
- Logs: removed generateMockLogs() and demo mode

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Enlarge table headers and cells to fill screen
- Bumped th/td text from text-[11px] to text-sm across Explorer, Peers, Mempool
- Increased cell padding from px-5 py-3 to px-6 py-4
- Widened content area max-width from 1120px to 1400px
- Removed fixed max-h constraints on table containers (flex-1 instead)
- Added table-fixed layout with explicit column widths on Explorer tables
- Explorer page now uses h-full to fill available viewport

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Rebuild dashboard as production-grade monitoring frontend
Complete rewrite of the SolidJS dashboard with a proper layout system,
new pages, real-time chain visualization, and mock data fallbacks for
offline development.

What changed:
- New layout: collapsible sidebar nav, topbar, footer status bar, right
  chain diagram panel
- ROG cyberpunk theme with neon red/orange/green accents, glass-morphism
  cards, glow effects
- Virtualized chain diagram using TanStack solid-virtual — handles
  thousands of blocks, keyboard navigable, era-colored block nodes
- Expandable block cards with full tx detail panel (inputs, outputs,
  scripts, collateral, mint/burn, metadata)
- New pages: Mempool (sortable tx table, auto-refresh), Settings
  (high-contrast, color-blind modes, i18n, about)
- All pages fall back to realistic mock data when node isn't synced
- 104 unit tests across 7 test files, E2E build smoke test
- GitHub Actions CI: lint, test, build on push to dashboard/
- Dockerfile for containerized deployment (multi-stage bun build)
- i18n pipeline with en-US locale, extensible
- WCAG AA accessibility: ARIA labels, keyboard nav, focus-visible rings,
  prefers-reduced-motion, screen reader support
- Charts: SVG ProgressRing and LineChart components
- Typed API client with SSE hooks and error handling
- Zero tsc errors, 148-module Vite build in ~890ms

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Blockfrost API: Wire NodeAdapter to real LedgerState data (#1728)
* feat(blockfrost): Made changes to wire NodeAdapter to ledger state data

Signed-off-by: Akhil Repala <[email protected]>

* feat(blockfrost): Fixed lint errors

Signed-off-by: Akhil Repala <[email protected]>

* fix(blockfrost): avoid expensive epoch block scans and nil pparams panic

Signed-off-by: Akhil Repala <[email protected]>

* fix(blockfrost): fixed the lint error

Signed-off-by: Akhil Repala <[email protected]>

* fix(blockfrost): harden protocol params and optimize epoch counts

Signed-off-by: Akhil Repala <[email protected]>

* fix(blockfrost): use a single tip snapshot for latest block responses

Signed-off-by: Akhil Repala <[email protected]>

* fix(blockfrost): count epoch blocks from canonical metadata

Signed-off-by: Akhil Repala <[email protected]>

* refactor(blockfrost): map protocol params from native ledger types

Signed-off-by: Akhil Repala <[email protected]>

* refactor(blockfrost): removed the unused function uint64ToInt

Signed-off-by: Akhil Repala <[email protected]>

---------

Signed-off-by: Akhil Repala <[email protected]>