Jun 16, 12-1 PM (37)
Jun 16, 1-2 PM (49)
Jun 16, 2-3 PM (34)
Jun 16, 3-4 PM (28)
Jun 16, 4-5 PM (37)
Jun 16, 5-6 PM (17)
Jun 16, 6-7 PM (26)
Jun 16, 7-8 PM (9)
Jun 16, 8-9 PM (11)
Jun 16, 9-10 PM (4)
Jun 16, 10-11 PM (31)
Jun 16, 11-12 AM (9)
Jun 17, 12-1 AM (8)
Jun 17, 1-2 AM (8)
Jun 17, 2-3 AM (11)
Jun 17, 3-4 AM (4)
Jun 17, 4-5 AM (1)
Jun 17, 5-6 AM (6)
Jun 17, 6-7 AM (99)
Jun 17, 7-8 AM (33)
Jun 17, 8-9 AM (23)
Jun 17, 9-10 AM (56)
Jun 17, 10-11 AM (18)
Jun 17, 11-12 PM (19)
Jun 17, 12-1 PM (57)
Jun 17, 1-2 PM (28)
Jun 17, 2-3 PM (37)
Jun 17, 3-4 PM (26)
Jun 17, 4-5 PM (19)
Jun 17, 5-6 PM (16)
Jun 17, 6-7 PM (10)
Jun 17, 7-8 PM (14)
Jun 17, 8-9 PM (12)
Jun 17, 9-10 PM (37)
Jun 17, 10-11 PM (29)
Jun 17, 11-12 AM (14)
Jun 18, 12-1 AM (12)
Jun 18, 1-2 AM (8)
Jun 18, 2-3 AM (5)
Jun 18, 3-4 AM (11)
Jun 18, 4-5 AM (11)
Jun 18, 5-6 AM (11)
Jun 18, 6-7 AM (10)
Jun 18, 7-8 AM (20)
Jun 18, 8-9 AM (83)
Jun 18, 9-10 AM (45)
Jun 18, 10-11 AM (51)
Jun 18, 11-12 PM (23)
Jun 18, 12-1 PM (67)
Jun 18, 1-2 PM (14)
Jun 18, 2-3 PM (53)
Jun 18, 3-4 PM (44)
Jun 18, 4-5 PM (64)
Jun 18, 5-6 PM (24)
Jun 18, 6-7 PM (21)
Jun 18, 7-8 PM (13)
Jun 18, 8-9 PM (17)
Jun 18, 9-10 PM (23)
Jun 18, 10-11 PM (30)
Jun 18, 11-12 AM (26)
Jun 19, 12-1 AM (13)
Jun 19, 1-2 AM (9)
Jun 19, 2-3 AM (5)
Jun 19, 3-4 AM (2)
Jun 19, 4-5 AM (11)
Jun 19, 5-6 AM (4)
Jun 19, 6-7 AM (92)
Jun 19, 7-8 AM (18)
Jun 19, 8-9 AM (38)
Jun 19, 9-10 AM (39)
Jun 19, 10-11 AM (27)
Jun 19, 11-12 PM (30)
Jun 19, 12-1 PM (53)
Jun 19, 1-2 PM (66)
Jun 19, 2-3 PM (32)
Jun 19, 3-4 PM (61)
Jun 19, 4-5 PM (9)
Jun 19, 5-6 PM (4)
Jun 19, 6-7 PM (17)
Jun 19, 7-8 PM (16)
Jun 19, 8-9 PM (11)
Jun 19, 9-10 PM (45)
Jun 19, 10-11 PM (30)
Jun 19, 11-12 AM (8)
Jun 20, 12-1 AM (4)
Jun 20, 1-2 AM (0)
Jun 20, 2-3 AM (4)
Jun 20, 3-4 AM (1)
Jun 20, 4-5 AM (8)
Jun 20, 5-6 AM (6)
Jun 20, 6-7 AM (6)
Jun 20, 7-8 AM (6)
Jun 20, 8-9 AM (2)
Jun 20, 9-10 AM (2)
Jun 20, 10-11 AM (0)
Jun 20, 11-12 PM (2)
Jun 20, 12-1 PM (7)
Jun 20, 1-2 PM (1)
Jun 20, 2-3 PM (9)
Jun 20, 3-4 PM (11)
Jun 20, 4-5 PM (1)
Jun 20, 5-6 PM (0)
Jun 20, 6-7 PM (2)
Jun 20, 7-8 PM (8)
Jun 20, 8-9 PM (7)
Jun 20, 9-10 PM (0)
Jun 20, 10-11 PM (17)
Jun 20, 11-12 AM (5)
Jun 21, 12-1 AM (14)
Jun 21, 1-2 AM (0)
Jun 21, 2-3 AM (1)
Jun 21, 3-4 AM (0)
Jun 21, 4-5 AM (1)
Jun 21, 5-6 AM (0)
Jun 21, 6-7 AM (9)
Jun 21, 7-8 AM (1)
Jun 21, 8-9 AM (2)
Jun 21, 9-10 AM (2)
Jun 21, 10-11 AM (1)
Jun 21, 11-12 PM (2)
Jun 21, 12-1 PM (0)
Jun 21, 1-2 PM (17)
Jun 21, 2-3 PM (4)
Jun 21, 3-4 PM (10)
Jun 21, 4-5 PM (4)
Jun 21, 5-6 PM (8)
Jun 21, 6-7 PM (7)
Jun 21, 7-8 PM (19)
Jun 21, 8-9 PM (0)
Jun 21, 9-10 PM (1)
Jun 21, 10-11 PM (15)
Jun 21, 11-12 AM (15)
Jun 22, 12-1 AM (12)
Jun 22, 1-2 AM (6)
Jun 22, 2-3 AM (9)
Jun 22, 3-4 AM (4)
Jun 22, 4-5 AM (2)
Jun 22, 5-6 AM (29)
Jun 22, 6-7 AM (17)
Jun 22, 7-8 AM (49)
Jun 22, 8-9 AM (90)
Jun 22, 9-10 AM (53)
Jun 22, 10-11 AM (64)
Jun 22, 11-12 PM (74)
Jun 22, 12-1 PM (47)
Jun 22, 1-2 PM (56)
Jun 22, 2-3 PM (119)
Jun 22, 3-4 PM (46)
Jun 22, 4-5 PM (49)
Jun 22, 5-6 PM (29)
Jun 22, 6-7 PM (33)
Jun 22, 7-8 PM (13)
Jun 22, 8-9 PM (13)
Jun 22, 9-10 PM (11)
Jun 22, 10-11 PM (32)
Jun 22, 11-12 AM (36)
Jun 23, 12-1 AM (18)
Jun 23, 1-2 AM (18)
Jun 23, 2-3 AM (23)
Jun 23, 3-4 AM (11)
Jun 23, 4-5 AM (13)
Jun 23, 5-6 AM (30)
Jun 23, 6-7 AM (27)
Jun 23, 7-8 AM (33)
Jun 23, 8-9 AM (28)
Jun 23, 9-10 AM (38)
Jun 23, 10-11 AM (60)
Jun 23, 11-12 PM (37)
Jun 23, 12-1 PM (4)
3,651 commits this week Jun 16, 2026 - Jun 23, 2026
Generate suggested recovery phrase with the system CSPRNG (#5298)
The personal wallet UI recovery-phrase suggestion (`pickMnemonic`) now
draws entropy from `Cardano.Mnemonic.genEntropy`, matching how the
wallet API and CLI generate recovery phrases.

The handler type `pickMnemonic :: Int -> Maybe Bool -> IO (Maybe
[Text])` is unchanged, so the New Wallet "Hint" button behaviour is the
same.
db-synthesizer: eject Layer 2 (config/credential machinery) downstream
With the config parsing now handled by cardano-config and synthesize
taking a ready-made ProtocolInfo, db-synthesizer no longer needs the
vendored node/api machinery in-repo. Remove it entirely:

- 'initialize' and its adapters (the genesis/credential reading and
  protocol assembly) leave; they belong downstream, built on cardano-api.
- Delete the vendored Cardano.Api.*, Cardano.Node.Protocol.* and
  Cardano.Node.Types modules (no remaining consumers), and prune the
  now-unused build-depends (base16-bytestring, cardano-crypto,
  transformers-except).
- Trim DBSynthesizer.Types to the node/api-free option types.

The tools-test integration test becomes synthesis-only: it builds a
forging-capable protocol via the testlib (new
mkSimpleTestProtocolInfoForging, which also returns the block forgers and
genesis) instead of a node configuration file, and forges within the
testlib's KES validity window. The config-driven
synthesise -> immutalise -> analyse pipeline (and the executable) move
downstream. Drop the now-unused config fixtures.

All tool executables, cardano-test and tools-test still build and pass.
db-synthesizer: synthesize takes a ready-made ProtocolInfo; drop executable
Reshape 'synthesize' to accept the (ProtocolInfo, block-forgers) pair
produced by 'protocolInfoCardano', plus the forge options, epoch size and
ChainDB directory directly. Constructing the protocol from a node
configuration is now the caller's responsibility, so 'synthesize' no
longer touches CardanoProtocolParams or the configuration filesystem.

Also remove the standalone db-synthesizer executable (app + CLI parser +
cabal stanza); it will be provided downstream. The tools-test integration
test now builds the protocol itself (initialize + protocolInfoCardano)
and still exercises the full synthesise -> immutalise -> analyse pipeline.

No behavioural change; tools-test still passes.
db-synthesizer: parse node config via cardano-config
Replace db-synthesizer's locally-implemented config parser with the
shared cardano-config package. 'initialize' now parses the node config
with cardano-config and adapts it into the Node*ProtocolConfiguration
records that mkConsensusProtocolCardano consumes: byron-era settings,
genesis file paths (including Dijkstra via the testing config's
experimental genesis) and the hard-fork triggers.

Removes the local parser entirely: the NodeConfigStub type, the
FromJSON/AdjustFilePaths orphan instances (Orphans.hs) and the
confConfigStub field. Forging credentials still come from the tool's own
CLI NodeCredentials; the byron software version is hard-coded, mirroring
the node, since cardano-config does not model it.

tools-test still passes (synthesise -> immutalise -> analyse).
db-analyser: parse node config via cardano-config
Replace db-analyser's locally-implemented CardanoConfig JSON parser with
the shared cardano-config package. The genesis file paths, byron network
magic, genesis hashes and hard-fork triggers are now read from
cardano-config's NodeConfigurationFromFile, with small boundary
conversions for the hash/network-magic representations. db-immutaliser
reuses this path via CardanoBlockArgs, so it migrates too.

No behavioural change: the tools-test integration test (synthesise ->
immutalise -> analyse) still passes with matching block counts.