Apr 22, 4-5 PM (46)
Apr 22, 5-6 PM (17)
Apr 22, 6-7 PM (10)
Apr 22, 7-8 PM (18)
Apr 22, 8-9 PM (15)
Apr 22, 9-10 PM (23)
Apr 22, 10-11 PM (31)
Apr 22, 11-12 AM (17)
Apr 23, 12-1 AM (7)
Apr 23, 1-2 AM (4)
Apr 23, 2-3 AM (4)
Apr 23, 3-4 AM (6)
Apr 23, 4-5 AM (3)
Apr 23, 5-6 AM (8)
Apr 23, 6-7 AM (17)
Apr 23, 7-8 AM (26)
Apr 23, 8-9 AM (33)
Apr 23, 9-10 AM (33)
Apr 23, 10-11 AM (29)
Apr 23, 11-12 PM (30)
Apr 23, 12-1 PM (51)
Apr 23, 1-2 PM (69)
Apr 23, 2-3 PM (74)
Apr 23, 3-4 PM (26)
Apr 23, 4-5 PM (22)
Apr 23, 5-6 PM (7)
Apr 23, 6-7 PM (7)
Apr 23, 7-8 PM (11)
Apr 23, 8-9 PM (14)
Apr 23, 9-10 PM (6)
Apr 23, 10-11 PM (28)
Apr 23, 11-12 AM (18)
Apr 24, 12-1 AM (7)
Apr 24, 1-2 AM (4)
Apr 24, 2-3 AM (7)
Apr 24, 3-4 AM (5)
Apr 24, 4-5 AM (8)
Apr 24, 5-6 AM (13)
Apr 24, 6-7 AM (12)
Apr 24, 7-8 AM (33)
Apr 24, 8-9 AM (40)
Apr 24, 9-10 AM (41)
Apr 24, 10-11 AM (72)
Apr 24, 11-12 PM (57)
Apr 24, 12-1 PM (100)
Apr 24, 1-2 PM (57)
Apr 24, 2-3 PM (35)
Apr 24, 3-4 PM (19)
Apr 24, 4-5 PM (16)
Apr 24, 5-6 PM (38)
Apr 24, 6-7 PM (27)
Apr 24, 7-8 PM (12)
Apr 24, 8-9 PM (42)
Apr 24, 9-10 PM (17)
Apr 24, 10-11 PM (30)
Apr 24, 11-12 AM (16)
Apr 25, 12-1 AM (8)
Apr 25, 1-2 AM (1)
Apr 25, 2-3 AM (10)
Apr 25, 3-4 AM (5)
Apr 25, 4-5 AM (3)
Apr 25, 5-6 AM (13)
Apr 25, 6-7 AM (1)
Apr 25, 7-8 AM (4)
Apr 25, 8-9 AM (24)
Apr 25, 9-10 AM (17)
Apr 25, 10-11 AM (4)
Apr 25, 11-12 PM (4)
Apr 25, 12-1 PM (13)
Apr 25, 1-2 PM (3)
Apr 25, 2-3 PM (10)
Apr 25, 3-4 PM (6)
Apr 25, 4-5 PM (10)
Apr 25, 5-6 PM (16)
Apr 25, 6-7 PM (13)
Apr 25, 7-8 PM (30)
Apr 25, 8-9 PM (55)
Apr 25, 9-10 PM (13)
Apr 25, 10-11 PM (21)
Apr 25, 11-12 AM (22)
Apr 26, 12-1 AM (5)
Apr 26, 1-2 AM (0)
Apr 26, 2-3 AM (2)
Apr 26, 3-4 AM (5)
Apr 26, 4-5 AM (2)
Apr 26, 5-6 AM (2)
Apr 26, 6-7 AM (3)
Apr 26, 7-8 AM (8)
Apr 26, 8-9 AM (3)
Apr 26, 9-10 AM (0)
Apr 26, 10-11 AM (2)
Apr 26, 11-12 PM (1)
Apr 26, 12-1 PM (6)
Apr 26, 1-2 PM (4)
Apr 26, 2-3 PM (14)
Apr 26, 3-4 PM (14)
Apr 26, 4-5 PM (0)
Apr 26, 5-6 PM (13)
Apr 26, 6-7 PM (13)
Apr 26, 7-8 PM (7)
Apr 26, 8-9 PM (7)
Apr 26, 9-10 PM (5)
Apr 26, 10-11 PM (27)
Apr 26, 11-12 AM (21)
Apr 27, 12-1 AM (7)
Apr 27, 1-2 AM (7)
Apr 27, 2-3 AM (9)
Apr 27, 3-4 AM (9)
Apr 27, 4-5 AM (5)
Apr 27, 5-6 AM (13)
Apr 27, 6-7 AM (7)
Apr 27, 7-8 AM (82)
Apr 27, 8-9 AM (47)
Apr 27, 9-10 AM (33)
Apr 27, 10-11 AM (62)
Apr 27, 11-12 PM (80)
Apr 27, 12-1 PM (66)
Apr 27, 1-2 PM (44)
Apr 27, 2-3 PM (52)
Apr 27, 3-4 PM (42)
Apr 27, 4-5 PM (36)
Apr 27, 5-6 PM (26)
Apr 27, 6-7 PM (13)
Apr 27, 7-8 PM (26)
Apr 27, 8-9 PM (13)
Apr 27, 9-10 PM (15)
Apr 27, 10-11 PM (42)
Apr 27, 11-12 AM (28)
Apr 28, 12-1 AM (17)
Apr 28, 1-2 AM (8)
Apr 28, 2-3 AM (4)
Apr 28, 3-4 AM (5)
Apr 28, 4-5 AM (5)
Apr 28, 5-6 AM (8)
Apr 28, 6-7 AM (8)
Apr 28, 7-8 AM (37)
Apr 28, 8-9 AM (54)
Apr 28, 9-10 AM (59)
Apr 28, 10-11 AM (53)
Apr 28, 11-12 PM (56)
Apr 28, 12-1 PM (49)
Apr 28, 1-2 PM (53)
Apr 28, 2-3 PM (68)
Apr 28, 3-4 PM (31)
Apr 28, 4-5 PM (13)
Apr 28, 5-6 PM (47)
Apr 28, 6-7 PM (9)
Apr 28, 7-8 PM (8)
Apr 28, 8-9 PM (14)
Apr 28, 9-10 PM (20)
Apr 28, 10-11 PM (34)
Apr 28, 11-12 AM (29)
Apr 29, 12-1 AM (13)
Apr 29, 1-2 AM (1)
Apr 29, 2-3 AM (1)
Apr 29, 3-4 AM (6)
Apr 29, 4-5 AM (1)
Apr 29, 5-6 AM (4)
Apr 29, 6-7 AM (12)
Apr 29, 7-8 AM (45)
Apr 29, 8-9 AM (70)
Apr 29, 9-10 AM (49)
Apr 29, 10-11 AM (25)
Apr 29, 11-12 PM (50)
Apr 29, 12-1 PM (39)
Apr 29, 1-2 PM (21)
Apr 29, 2-3 PM (64)
Apr 29, 3-4 PM (16)
Apr 29, 4-5 PM (0)
3,746 commits this week Apr 22, 2026 - Apr 29, 2026
chore(electron): upgrade from 24.2.0 to 41.3.0
Update Electron to 41.3.0 and adapt all affected layers:

Nix packaging:
- Rebuild electron headers derivation for 41.3.0
- Update patchelf/rpath/interpreter handling for new binary layout
- Expand runtime-nodejs-deps.json to include transitive closure (~445 packages)
- Add ELECTRON_SKIP_BINARY_DOWNLOAD=1 to prevent install script fetching
- Migrate nixpkgsJs compat shim to nixpkgs-25.11 nodejs_22; drop glibc-electron-loader.patch

JS dependencies (yarn.lock / package.json):
- @ledgerhq/hw-transport-node-hid 6.33.0, @trezor/connect 9.7.2
- @cardano-foundation/ledgerjs-hw-app-cardano 7.1.4
- @electron/rebuild 4.0.4, @swc/core 1.10.18, webpack 5.106.2
- node-hid 3.3.0, node-forge 1.4.0, moment 2.30.1, ws 8.18.2, axios 1.7.7

Renderer / MobX compatibility (SWC 1.10):
- Set legacyDecorator: true and useDefineForClassFields: false in swc-loader
  options so MobX 5 prototype setters intercept observable class field
  initialisation (SWC 1.3+ changed decorator defaults)
- Relax MobX enforceActions to 'observed' (was 'always'); 'always' blocked
  constructor initialisation routed through setters outside any action

Main process / Electron 41 API fixes:
- safeExitWithCode: app.exit() → process.exit() — app.exit() triggers
  Chromium teardown that causes SIGABRT when renderer is still alive
- CardanoNode._handleCardanoNodeExit: return early when state is STOPPING
  or STOPPED so stop() exclusively owns the shutdown sequence; prevents a
  double broadcastStateChange(STOPPED) IPC call that crashes Chromium
- mainErrorHandler: 'gpu-process-crashed' → 'child-process-gone' (Electron 23+)
- windows/main: 'crashed' → 'render-process-gone' (Electron 23+); remove
  event parameter from 'closed' handler (listener takes no arguments)
- webpack.config (dev): exit webpack watcher when Electron closes cleanly
- package.json dev script: --kill-others --success first so concurrently
  stops all processes when Electron exits

TypeScript fixes (updated @trezor/connect 9.x API):
- Define BridgeInfo/UdevInfo locally (removed from public exports)
- Add required appName field to Trezor manifest
- type: 'warning' as const for dialog MessageBoxOptions
- Cast devicePath to DeviceUniquePath branded type
- Make node-hid-incompatible Device fields optional in local types
- Remove non-existent onLearnMoreClick prop from StakingRewards story
build(nix): migrate to flake-parts with haskell.nix cross-compilation
Replace the ad-hoc nix/ directory and flake-utils setup with a
flake-parts structure mirroring hermod-tracing:

- flake.nix: adopt nixConfig cache block, flake-parts, haskell.nix +
  hackageNix + CHaP; remove devx and flake-utils
- flake/lib.nix: recursiveImports helper for auto-discovering perSystem
- perSystem/project.nix: cabalProject' for cardano-addresses (ghc967)
- perSystem/devShells.nix: shellFor with cabal/ghcid/HLS tools
- perSystem/packages.nix: library, exe and unit test check
- perSystem/haddocks.nix: haddock index package (ghc967)
- perSystem/hydraJobs.nix: required/nonrequired aggregates; Darwin in
  nonrequired
- perSystem/wasm.nix: wasm32-wasi cross-build via projectCross.wasi32
  (ghc9123) with haskell.nix native toolchain; module overrides for ram
  and crypton hsc2hs/C flags
- perSystem/windows.nix: mingwW64 cross-build via projectCross.mingwW64
- perSystem/musl.nix: static x86_64 binary via projectCross.musl64
- cabal-wasm.project: add --sha256 pins for source-repository-packages
- Remove nix/wasm.nix and nix/supported-systems.nix
- Remove old CI workflows (haskell, nix, style, wasm); replace with
  unified pages workflow building Docusaurus + Haddocks
- docusaurus.config.js: update to cardano-addresses.cardano.intersectmbo.org
feat(release-cli): add drt newsfeed subcommands
Adds three subcommands under `drt newsfeed`:

- `release` — fetches installer metadata from a URL, builds a
  software-update + announcement pair with pre-filled hashes/URLs and
  localised text, opens \$EDITOR for review, then writes the newsfeed
  JSON and verification file.  Release notes URL defaults to the GitHub
  release tag derived from the fetched version.
- `publish` — uploads the current newsfeed JSON and verification file
  to an S3 bucket for end-to-end testing (--dry-run supported).
- `message` — adds a standalone announcement item with a configurable
  version target.

Common repo/env args (--env, --newsfeed-repo, --verification-repo) are
shared via a flattened NewsfeedRepoArgs struct and read from NEWSFEED_*
environment variables.
chore(tx-generator): repoint pin to upstream main (post-#94)
cardano-node-clients pull/94 merged at
0581418362 (T022 starvation E2E commit). Per the
*pins-main-only* rule, downstream pins on the main path
must point at a commit on upstream main, never at a
feature-branch tip.

The narHash on 0581418362 matches 4fca187eac (the previous
branch-tip pin) — the merge was a fast-forward of the
already-CI-green head, no source delta. No rebuild needed
on the Cachix path.