Apr 01, 9-10 AM (28)
Apr 01, 10-11 AM (29)
Apr 01, 11-12 PM (34)
Apr 01, 12-1 PM (29)
Apr 01, 1-2 PM (29)
Apr 01, 2-3 PM (41)
Apr 01, 3-4 PM (31)
Apr 01, 4-5 PM (9)
Apr 01, 5-6 PM (11)
Apr 01, 6-7 PM (31)
Apr 01, 7-8 PM (19)
Apr 01, 8-9 PM (9)
Apr 01, 9-10 PM (36)
Apr 01, 10-11 PM (34)
Apr 01, 11-12 AM (14)
Apr 02, 12-1 AM (24)
Apr 02, 1-2 AM (5)
Apr 02, 2-3 AM (10)
Apr 02, 3-4 AM (6)
Apr 02, 4-5 AM (1)
Apr 02, 5-6 AM (7)
Apr 02, 6-7 AM (45)
Apr 02, 7-8 AM (13)
Apr 02, 8-9 AM (44)
Apr 02, 9-10 AM (37)
Apr 02, 10-11 AM (35)
Apr 02, 11-12 PM (38)
Apr 02, 12-1 PM (46)
Apr 02, 1-2 PM (56)
Apr 02, 2-3 PM (45)
Apr 02, 3-4 PM (46)
Apr 02, 4-5 PM (38)
Apr 02, 5-6 PM (34)
Apr 02, 6-7 PM (25)
Apr 02, 7-8 PM (23)
Apr 02, 8-9 PM (31)
Apr 02, 9-10 PM (17)
Apr 02, 10-11 PM (27)
Apr 02, 11-12 AM (47)
Apr 03, 12-1 AM (8)
Apr 03, 1-2 AM (9)
Apr 03, 2-3 AM (13)
Apr 03, 3-4 AM (0)
Apr 03, 4-5 AM (2)
Apr 03, 5-6 AM (6)
Apr 03, 6-7 AM (6)
Apr 03, 7-8 AM (50)
Apr 03, 8-9 AM (35)
Apr 03, 9-10 AM (6)
Apr 03, 10-11 AM (10)
Apr 03, 11-12 PM (14)
Apr 03, 12-1 PM (50)
Apr 03, 1-2 PM (38)
Apr 03, 2-3 PM (60)
Apr 03, 3-4 PM (15)
Apr 03, 4-5 PM (10)
Apr 03, 5-6 PM (5)
Apr 03, 6-7 PM (14)
Apr 03, 7-8 PM (20)
Apr 03, 8-9 PM (6)
Apr 03, 9-10 PM (15)
Apr 03, 10-11 PM (20)
Apr 03, 11-12 AM (17)
Apr 04, 12-1 AM (6)
Apr 04, 1-2 AM (1)
Apr 04, 2-3 AM (4)
Apr 04, 3-4 AM (1)
Apr 04, 4-5 AM (1)
Apr 04, 5-6 AM (5)
Apr 04, 6-7 AM (10)
Apr 04, 7-8 AM (3)
Apr 04, 8-9 AM (3)
Apr 04, 9-10 AM (5)
Apr 04, 10-11 AM (35)
Apr 04, 11-12 PM (9)
Apr 04, 12-1 PM (24)
Apr 04, 1-2 PM (11)
Apr 04, 2-3 PM (8)
Apr 04, 3-4 PM (12)
Apr 04, 4-5 PM (3)
Apr 04, 5-6 PM (9)
Apr 04, 6-7 PM (2)
Apr 04, 7-8 PM (3)
Apr 04, 8-9 PM (5)
Apr 04, 9-10 PM (17)
Apr 04, 10-11 PM (21)
Apr 04, 11-12 AM (23)
Apr 05, 12-1 AM (2)
Apr 05, 1-2 AM (0)
Apr 05, 2-3 AM (2)
Apr 05, 3-4 AM (1)
Apr 05, 4-5 AM (1)
Apr 05, 5-6 AM (9)
Apr 05, 6-7 AM (13)
Apr 05, 7-8 AM (4)
Apr 05, 8-9 AM (1)
Apr 05, 9-10 AM (0)
Apr 05, 10-11 AM (7)
Apr 05, 11-12 PM (7)
Apr 05, 12-1 PM (5)
Apr 05, 1-2 PM (2)
Apr 05, 2-3 PM (3)
Apr 05, 3-4 PM (3)
Apr 05, 4-5 PM (18)
Apr 05, 5-6 PM (3)
Apr 05, 6-7 PM (2)
Apr 05, 7-8 PM (2)
Apr 05, 8-9 PM (0)
Apr 05, 9-10 PM (5)
Apr 05, 10-11 PM (19)
Apr 05, 11-12 AM (18)
Apr 06, 12-1 AM (4)
Apr 06, 1-2 AM (6)
Apr 06, 2-3 AM (12)
Apr 06, 3-4 AM (11)
Apr 06, 4-5 AM (5)
Apr 06, 5-6 AM (7)
Apr 06, 6-7 AM (4)
Apr 06, 7-8 AM (8)
Apr 06, 8-9 AM (24)
Apr 06, 9-10 AM (15)
Apr 06, 10-11 AM (9)
Apr 06, 11-12 PM (2)
Apr 06, 12-1 PM (36)
Apr 06, 1-2 PM (42)
Apr 06, 2-3 PM (22)
Apr 06, 3-4 PM (8)
Apr 06, 4-5 PM (31)
Apr 06, 5-6 PM (18)
Apr 06, 6-7 PM (3)
Apr 06, 7-8 PM (11)
Apr 06, 8-9 PM (6)
Apr 06, 9-10 PM (9)
Apr 06, 10-11 PM (29)
Apr 06, 11-12 AM (16)
Apr 07, 12-1 AM (8)
Apr 07, 1-2 AM (8)
Apr 07, 2-3 AM (3)
Apr 07, 3-4 AM (4)
Apr 07, 4-5 AM (1)
Apr 07, 5-6 AM (17)
Apr 07, 6-7 AM (6)
Apr 07, 7-8 AM (14)
Apr 07, 8-9 AM (35)
Apr 07, 9-10 AM (38)
Apr 07, 10-11 AM (25)
Apr 07, 11-12 PM (63)
Apr 07, 12-1 PM (36)
Apr 07, 1-2 PM (47)
Apr 07, 2-3 PM (43)
Apr 07, 3-4 PM (22)
Apr 07, 4-5 PM (34)
Apr 07, 5-6 PM (19)
Apr 07, 6-7 PM (22)
Apr 07, 7-8 PM (20)
Apr 07, 8-9 PM (20)
Apr 07, 9-10 PM (16)
Apr 07, 10-11 PM (41)
Apr 07, 11-12 AM (21)
Apr 08, 12-1 AM (12)
Apr 08, 1-2 AM (6)
Apr 08, 2-3 AM (9)
Apr 08, 3-4 AM (9)
Apr 08, 4-5 AM (4)
Apr 08, 5-6 AM (21)
Apr 08, 6-7 AM (40)
Apr 08, 7-8 AM (68)
Apr 08, 8-9 AM (32)
Apr 08, 9-10 AM (0)
2,959 commits this week Apr 01, 2026 - Apr 08, 2026
Simplify CardanoClient API to use LocalNodeConnectInfo directly
  Remove the CardanoNodeT/EraT monad transformer stack from CardanoClient
  in favour of plain functions that take LocalNodeConnectInfo as an explicit
  argument. All query and submission functions now have the form
  `LocalNodeConnectInfo -> ... -> IO a`, eliminating the need for
  runCardanoNode at call sites. Update all callers across hydra-node,
  hydra-cluster, hydra-tui, and hydra-chain-observer accordingly.

Signed-off-by: Sasha Bogicevic <[email protected]>
Refactor ChainBackend into a monad-style type class
  Replace the data-passing ChainBackend class (where each method received
  an explicit backend value) with a monad-style class `ChainBackend m`
  where `m` is the computation monad. Each backend is now a newtype over
  ReaderT: DirectBackend wraps ReaderT DirectOptions IO and BlockfrostBackend
  wraps ReaderT BlockfrostOptions IO. Callers use runDirectBackend /
  runBlockfrostBackend runners to execute backend actions in IO.

Signed-off-by: Sasha Bogicevic <[email protected]>