Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
381 commits
Select commit Hold shift + click to select a range
2e424e6
feat: uuid version (#891)
thesimplekid Aug 18, 2025
28a0139
Add PostgreSQL support for mint and wallet (#878)
crodas Aug 18, 2025
d3a3c30
feat(cdk): add Bolt12 mint quote subscription support (#976)
thesimplekid Aug 19, 2025
29ce2e4
Http retry should only happen at Http Error (which are transport errors)
crodas Aug 18, 2025
e31a9b1
Update crates/cdk/src/wallet/mint_connector/http_client.rs
crodas Aug 18, 2025
2e63a63
Fixed clippy
crodas Aug 18, 2025
761ed82
feat: log to file (#967)
thesimplekid Aug 19, 2025
86d51ed
Merge pull request #975 from crodas/bug/939-retry
crodas Aug 19, 2025
5c5075a
feat: refresh keysets (#974)
thesimplekid Aug 19, 2025
ecdc781
refactor(cdk): defer BOLT12 invoice fetching to payment execution (#978)
thesimplekid Aug 20, 2025
818367a
fix: reduce mmap_size to 5 MiB (#980)
asmogo Aug 20, 2025
aa624d3
fix: lnbits payment check and units (#981)
thesimplekid Aug 20, 2025
a4aaef7
fix: pass auth cfg through mintd to axum (#986)
gudnuf Aug 21, 2025
b6f7a75
feat: cln as msats (#982)
thesimplekid Aug 21, 2025
9a3d9b7
feat: bip353 (#969)
thesimplekid Aug 21, 2025
4e13c19
feat: mintd db features
thesimplekid Aug 19, 2025
951ff05
feat: zeroize cryptographic secrets on drop
vnprc Aug 21, 2025
9e595f0
Merge pull request #965 from ubbabeck/nix-flake-set-nixpath
thesimplekid Aug 21, 2025
9b5f8d0
Fixed bolt12 missing payments notifications
crodas Aug 21, 2025
b18d69f
Merge pull request #989 from crodas/bug/bolt12-missing-notifications
thesimplekid Aug 21, 2025
7e33078
Merge pull request #988 from vnprc/zeroize_on_drop
thesimplekid Aug 21, 2025
8dec41d
refactor(cdk-lnbits): migrate to LNbits v1 websocket API and remove w…
thesimplekid Aug 21, 2025
6f25620
feat: mintd db features (#977)
thesimplekid Aug 21, 2025
ea9b932
fix left-over `y` in blind_signatures table auth database
a1denvalu3 Aug 22, 2025
dad23ea
Merge pull request #991 from lollerfirst/fix-auth-blind-messages-table
thesimplekid Aug 22, 2025
3772f10
chore: update flake
thesimplekid Aug 25, 2025
61411af
Merge pull request #994 from thesimplekid/update_nix_flake_25
thesimplekid Aug 25, 2025
9ab86fa
Cdk ldk node (#904)
thesimplekid Aug 25, 2025
809d9c8
Fix p2pk (#996)
thesimplekid Aug 26, 2025
4de5566
feat: use trixie (#998)
thesimplekid Aug 26, 2025
218b39a
Introduce Future Streams for Payments and Minting Proofs (#985)
crodas Aug 26, 2025
44cef59
chore: bump 0.12 (#997)
thesimplekid Aug 26, 2025
cb29e74
feat: add TLS support for PostgreSQL connections with configurable SS…
asmogo Aug 26, 2025
6454a33
chore: remove unused `native_tls` import from `cdk-postgres`
asmogo Aug 27, 2025
971957b
replace transports: Option<Vec<Transport>> with just Vec<Transport> (…
codingpeanut157 Aug 27, 2025
f1118b1
compatibility for migrating Nutshell Mints quote ids (#984)
a1denvalu3 Aug 27, 2025
a62decf
add pubkey to mint info if not set
aki-mizu Aug 29, 2025
7995a93
patch sha256 (#1013)
a1denvalu3 Aug 29, 2025
7a22f85
chore: remove readme postgres (#1009)
thesimplekid Aug 29, 2025
14473d8
Merge pull request #1002 from asmogo/fix/psql_tls
crodas Aug 29, 2025
2131f89
Abstract the HTTP Transport (#1012)
crodas Aug 30, 2025
df8b780
chore: update flake (#1018)
thesimplekid Aug 31, 2025
7a71a37
refactor(payment): replace wait_any_incoming_payment with event-based…
thesimplekid Aug 31, 2025
7246ea2
fix: bolt12 is nut25 (#1020)
thesimplekid Aug 31, 2025
6067242
fix: cdk melt quote track payment method (#1021)
thesimplekid Sep 1, 2025
62f085b
Fix missed events race when creating subscriptions (#1023)
crodas Sep 1, 2025
655a4b9
Add suport for Bolt12 notifications for HTTP subscription (#1007)
crodas Sep 2, 2025
dca48f4
fix: get all mint quotes (#1025)
thesimplekid Sep 2, 2025
734e62b
refactor: use quote id to string (#1026)
thesimplekid Sep 2, 2025
39f256a
cdk-ldk web ui updates (#1027)
swedishfrenchpress Sep 3, 2025
8cf3b2d
Merge branch 'main' into main
crodas Sep 4, 2025
ce3d25d
Merge pull request #1015 from aki-mizu/main
crodas Sep 4, 2025
c6cff3f
feat(cdk): add generic key-value store functionality for mint databas…
thesimplekid Sep 5, 2025
3815c62
Fix postgres migration prefixes (#1037)
crodas Sep 5, 2025
ded165f
Update the signatory.proto file to match NUT-XXX (#1032)
crodas Sep 5, 2025
9b35158
fix: sig error code (#1038)
thesimplekid Sep 6, 2025
5518ad2
feat(cdk): add quote_id field to transactions for quote tracking (#1041)
thesimplekid Sep 6, 2025
caa0b4a
fix: remove unused structs (#1042)
thesimplekid Sep 7, 2025
87691bd
chore: increase timeout (#1046)
thesimplekid Sep 8, 2025
4363d14
Add consistent ordering of sql migrations (#1047)
crodas Sep 8, 2025
b5b8ee5
Fix race conditions in minting tests (#1043)
crodas Sep 8, 2025
841e35d
Reorganize tests, add mint quote/payment coverage, and prevent over-i…
crodas Sep 8, 2025
166b902
feat: bolt12 ws (#1052)
thesimplekid Sep 8, 2025
62de0c9
Close websocket connections sooner (#1050)
crodas Sep 8, 2025
b1026fb
fix: None `host_matcher` applies the proxy to all hosts (#1054)
a1denvalu3 Sep 9, 2025
c94979a
fix: used check math (#1051)
thesimplekid Sep 9, 2025
75a3e6d
Prometheus crate (#883)
asmogo Sep 9, 2025
ce599a9
chore: code style (#1056)
thesimplekid Sep 9, 2025
64a4fe5
feat: remove unused ln_routers (#1059)
thesimplekid Sep 10, 2025
21b4080
FFI bindings for Wallet (#932)
davidcaseria Sep 10, 2025
053a3a7
Do not fallback to HTTP on first error (#1061)
crodas Sep 10, 2025
c7f6af0
fix: clippy warn (#1063)
thesimplekid Sep 10, 2025
f2f5425
Add more Amount::split_with_fee tests (#1058)
davidcaseria Sep 10, 2025
0bf5325
Fixed error with wrong placeholder (#1069)
crodas Sep 12, 2025
835c66d
fix: keyset max order checked (#1070)
thesimplekid Sep 13, 2025
aab85d2
feat: update redb (#1071)
thesimplekid Sep 13, 2025
2c93334
fix: replace std::time with instant for wasm (#1060)
gudnuf Sep 13, 2025
7d78240
Improve web interface with dynamic status, navigation, and mobile sup…
swedishfrenchpress Sep 15, 2025
4f65441
chore: move `pay_request` logic into cdk lib (#1028)
a1denvalu3 Sep 15, 2025
1cc4783
Fixed bug with postgres reconnection in the connection pool (#1078)
crodas Sep 15, 2025
c3c8e87
Add `resolve_dns_txt` to HttpTransport and MintConnector (#1068)
crodas Sep 16, 2025
5650050
fix: make http wallet subscriptions wasm compatible (#1062)
gudnuf Sep 16, 2025
2dbb418
feat: store melt_request (#1045)
thesimplekid Sep 16, 2025
5ee405d
Store last pay index (#1077)
thesimplekid Sep 16, 2025
9d25d96
refactor: check mint request (#1079)
thesimplekid Sep 16, 2025
049ce64
feat(cdk): add amount_mintable method and improve mint quote validati…
thesimplekid Sep 16, 2025
c64797a
chore: some docs (#1083)
thesimplekid Sep 17, 2025
62fcb17
chore: remove mintd quick start
thesimplekid Sep 17, 2025
23cba67
MultiMintWallet Refactor (#1001)
davidcaseria Sep 17, 2025
944cf2a
fix: error respose detail (#1090)
thesimplekid Sep 18, 2025
12164a0
Fix Async FFI Constructors (#1085)
davidcaseria Sep 18, 2025
f4c5de7
fix: add free space to auth test (#1091)
thesimplekid Sep 19, 2025
aeafab9
fix: config overwrite on start up (#1081)
thesimplekid Sep 20, 2025
2becc4b
chore: doc fmt (#1094)
thesimplekid Sep 20, 2025
853f13f
fix(build): use OUT_DIR for migration files (#1088)
vnprc Sep 20, 2025
075e256
Remove generated files (#1097)
crodas Sep 21, 2025
df2f9d1
Psgl auth db (#1095)
thesimplekid Sep 21, 2025
be7c836
feat: remove redis cache (#1096)
thesimplekid Sep 21, 2025
3ad860c
fix(cdk): improve error handling when adding mint to MultiMintWallet …
thesimplekid Sep 22, 2025
c1e35f9
Remove cashu ffi (#1102)
thesimplekid Sep 22, 2025
6b80b74
feat: remove features from auth (#1103)
thesimplekid Sep 23, 2025
fdd99e1
chore: fix typo in comment (#1107)
juejinyuxitu Sep 23, 2025
1e6102f
add FFI types for NUT-04 and NUT-05 (#1101)
asmogo Sep 23, 2025
35a4be1
feat(docker): add LDK Node mint service with dedicated Docker setup (…
thesimplekid Sep 23, 2025
fb84343
Bump v0.13 (#1106)
thesimplekid Sep 23, 2025
6ad2c3a
chore: ffi to release
thesimplekid Sep 23, 2025
bf6b672
chore: add tag to 0.13.0
thesimplekid Sep 23, 2025
0f0b78c
Include supported amounts instead of assuming the power of 2 (#1055)
crodas Sep 24, 2025
f41ce0a
optional client identity in grpc payment processor (#1084)
asmogo Sep 24, 2025
e07a9c8
feat(cdk): add WebSocket authentication support (#1116)
thesimplekid Sep 25, 2025
9d4559a
fix: only settle same unit quote internally (#1115)
gudnuf Sep 25, 2025
caba697
refactor(cdk): simplify mint addition in MultiMintWallet (#1121)
thesimplekid Sep 25, 2025
500d162
fix: handle fiat melt amount conversions (#1109)
gudnuf Sep 25, 2025
f48660f
Make Uniffi Records Codable in Swift (#1125)
davidcaseria Sep 25, 2025
05acb91
feat: remove delete fns for quotes (#1122)
thesimplekid Sep 26, 2025
676463f
Revert "feat: remove redis cache (#1096)" (#1129)
thesimplekid Sep 26, 2025
6d0003a
token: add spending-condition inspection helpers and token_secrets() …
a1denvalu3 Sep 26, 2025
4b04d10
Check change unique (#1112)
thesimplekid Sep 27, 2025
f323544
fix: lnbits msats error (#1134)
thesimplekid Sep 28, 2025
5e93529
fix: show ammounts (#1136)
thesimplekid Sep 30, 2025
ddec3bb
Update README with missing crates (#1140)
davidcaseria Sep 30, 2025
cb2e534
feat: added postgres to ffi (#1117)
asmogo Sep 30, 2025
166c96f
Fix htlc witness deserialization (#1138)
stefanbitcr Sep 30, 2025
9ad5238
chore: remove min deps after msrv (#1143)
thesimplekid Oct 1, 2025
144f1da
Allow passing metadata to a melt (#1148)
benthecarman Oct 2, 2025
6bffd78
Make sorting Transactions a stable sort (#1147)
benthecarman Oct 2, 2025
81a47d5
Fix bug with websocket close (#1144)
crodas Oct 2, 2025
ca34449
Add MultiMintWallet check and wait for mint quotes (#1146)
davidcaseria Oct 2, 2025
b5dfa12
chore: update flake (#1150)
thesimplekid Oct 2, 2025
e581dcb
feat: tor isolated circuits (#1064)
a1denvalu3 Oct 3, 2025
a8c35db
Split uniffi types into multiple mods (#1142)
davidcaseria Oct 5, 2025
1a493d6
feat: optimize SQL balance calculation (#1152)
vnprc Oct 6, 2025
c15a79f
chore: auto close stale (#1156)
thesimplekid Oct 6, 2025
c5e5d71
feat(cdk): add payment request and proof to transaction records (#1155)
thesimplekid Oct 6, 2025
03309da
mintd: remove non-existent stdout logging from docs (#1159)
daywalker90 Oct 6, 2025
b43d2ae
chore: update ci to fail fast (#1157)
thesimplekid Oct 6, 2025
c30a078
fix(cashu): skip serializing empty NUT15 settings in mint info (#1158)
thesimplekid Oct 6, 2025
6fe6555
fix(database): add parent directory validation before database creati…
thesimplekid Oct 7, 2025
cdd5935
Introduce a generic pubsub mod in `cdk-common` (#1098)
crodas Oct 8, 2025
582ebc9
Update README.md (#1169)
Olexandr88 Oct 8, 2025
2c2fce9
chore: remove ctor (#1168)
thesimplekid Oct 8, 2025
dab9281
chore: nostr-sdk as workspace dep (#1167)
thesimplekid Oct 8, 2025
cae8768
Fix cdk cli readme (#1165)
thesimplekid Oct 8, 2025
3075ac4
Read the latest mint quote status in a transaction to avoid race cond…
crodas Oct 8, 2025
95aa644
Improve add transaction (#1164)
thesimplekid Oct 9, 2025
5ee760a
Remove the `amounts` from amounts (#1179)
crodas Oct 10, 2025
5fc38d5
fi: add ws resource to ProtectedEndpoints (#1178)
asmogo Oct 10, 2025
7f17c02
feat: fake wallet store amount paid (#1185)
thesimplekid Oct 12, 2025
69650c2
feat: swap tests (#1187)
thesimplekid Oct 12, 2025
f173b2d
feat(cdk): add melt quote state transition validation (#1188)
thesimplekid Oct 13, 2025
5caa7d5
Configure internal Wallets of a MultiMintWallet (#1177)
Oct 13, 2025
db2764c
Redesign Lightning invoice creation and display with better UX and st…
swedishfrenchpress Oct 15, 2025
33c206a
Swap saga (#1183)
thesimplekid Oct 22, 2025
344b81a
Update FFI Database Objects to Records (#1149)
davidcaseria Oct 24, 2025
1604f8a
feat: update stable rust (#1207)
thesimplekid Oct 25, 2025
ec6e1e2
fix: improve Melted error handling and add debug logging (#1213)
thesimplekid Oct 26, 2025
a40989b
Typo fix (#1217)
u32luke Oct 27, 2025
d6824dd
feat: add auto genrated meetings template (#1218)
thesimplekid Oct 27, 2025
18a41e5
feat: backport bot (#1215)
thesimplekid Oct 27, 2025
eb65e76
fix: backport token (#1219)
thesimplekid Oct 27, 2025
26b2688
fix: con grup (#1220)
thesimplekid Oct 27, 2025
5b1e079
feat: tests of backport prs (#1224)
thesimplekid Oct 27, 2025
c43ea95
fix: use back port toekn (#1231)
thesimplekid Oct 28, 2025
e44c83f
added missing env params in docker-compose.ldk-node.yaml (#1230)
gandlafbtc Oct 28, 2025
3a99582
fix: branches for ci (#1233)
thesimplekid Oct 28, 2025
ad4df77
feat(cdk-lnbits): add websocket reconnection with exponential backoff…
thesimplekid Oct 29, 2025
cc1c7f1
chore: add weekly meeting agenda for 2025-10-29 (#1239)
github-actions[bot] Oct 29, 2025
fb07ec4
Include cargo config for cdk-ffi to enforce Android page sizes (#1241)
davidcaseria Oct 30, 2025
0c21cb5
Ldk compose setup (#1242)
gandlafbtc Oct 31, 2025
dd3cb8a
fix: lnbits fee calc (#1243)
thesimplekid Oct 31, 2025
c6434b8
Fix websocket issues and mint quotes (#1246)
crodas Nov 3, 2025
c68c528
PreMintSecrets: fix `into_iter()` (#1244)
codingpeanut157 Nov 3, 2025
aa8258d
fix: time of meeting
thesimplekid Nov 3, 2025
d9e001b
refactor(cdk): implement saga pattern for melt operations (#1186)
thesimplekid Nov 3, 2025
4e01328
fix: add proof recovery mechanism for failed wallet operations (#1250)
crodas Nov 5, 2025
82f2579
chore: add weekly meeting agenda for 2025-11-05 (#1254)
github-actions[bot] Nov 6, 2025
52d796e
refactor: replace proof swap with state check in error recovery (#1256)
crodas Nov 8, 2025
e14469a
feat: add keyset_amounts table to track issued and redeemed amounts (…
crodas Nov 11, 2025
4feed9f
mint async melt (#1258)
thesimplekid Nov 12, 2025
9354c2c
feat(ci): add nightly rustfmt automation with flexible formatting pol…
thesimplekid Nov 12, 2025
50cf1d8
chore: rust version workflow (#1262)
thesimplekid Nov 12, 2025
5af6976
chore: rust version check open issue
thesimplekid Nov 12, 2025
0f1f2fe
chore: add weekly meeting agenda for 2025-11-12 (#1261)
github-actions[bot] Nov 12, 2025
f989fb7
chore: update stable rust to 1.91.1 (#1265)
thesimplekid Nov 12, 2025
d002481
fix: check the removed_ys argument before creating the delete query (…
asmogo Nov 12, 2025
2f0ff7f
chore: meeting agenda fmt (#1266)
thesimplekid Nov 12, 2025
32c9288
Introduce MintMetadataCache for efficient key and metadata management…
crodas Nov 13, 2025
c859939
fix: nut14 disabled in info (#1269)
thesimplekid Nov 13, 2025
2f9100e
Metadata follow up (#1268)
thesimplekid Nov 13, 2025
e5882dc
test: add mutation testing infrastructure and security-critical cover…
thesimplekid Nov 14, 2025
9eaa6f1
feat: update NUT-11 SIG_ALL message aggregation per spec
SatsAndSports Nov 14, 2025
836a50a
fix: require 0 signatures for HTLC with no pubkeys specified (#1275)
thesimplekid Nov 15, 2025
4723e32
fix: return actual error from get_payment_quote (#1274)
gudnuf Nov 15, 2025
2dfac34
Update Wallet::fetch_mint_info (#1277)
crodas Nov 15, 2025
24d397d
Don't read keys from the database (#1280)
crodas Nov 15, 2025
501e72f
Fix missing try_proof_operation_or_reclaim wrapping of a swap (#1278)
crodas Nov 15, 2025
66f7561
ci: reduce ci jobs (#1284)
thesimplekid Nov 16, 2025
0b95cbc
chore: fix some minor issues in comments (#1287)
black5box Nov 17, 2025
df46813
fix: we use the nightly flake so we don't need +nightly (#1288)
thesimplekid Nov 17, 2025
023e7b9
chore: change mutation testing ci time (#1289)
thesimplekid Nov 17, 2025
3df35b4
fix: load keyset keys from database to prevent duplicate insertions (…
thesimplekid Nov 17, 2025
e7fe058
feat: add test coverage for mutants caught in https://github.com/cash…
thesimplekid Nov 17, 2025
e1c18e5
fix: flaky test by using wait and pay (#1292)
thesimplekid Nov 17, 2025
c880ef7
refactor(cdk/wallet): extract keyset key loading into helper method (…
thesimplekid Nov 17, 2025
15c315e
feat(cdk): add invoice decoding for bolt11 and bolt12 (#1294)
thesimplekid Nov 17, 2025
ee91057
fix: nightly ci (#1298)
thesimplekid Nov 17, 2025
ccb84ef
chore: fix nightly pr
thesimplekid Nov 17, 2025
288be4a
fix: nightly fmt pr
thesimplekid Nov 17, 2025
36c6037
fix: allow starting insecure man server (#1297)
thesimplekid Nov 18, 2025
a12fd4d
Prevent database contention in metadata cache load operations (#1300)
crodas Nov 18, 2025
141e62a
feat(cdk): add Lightning address support with BIP353 fallback (#1295)
thesimplekid Nov 18, 2025
fd6f848
fix: Enable pure environment variable configuration for Lightning bac…
thesimplekid Nov 18, 2025
2fa92cb
Fix race condition when concurrent payments are processed for the sam…
crodas Nov 19, 2025
139f7b2
Weekly Meeting Agenda - 2025-11-19 (#1305)
github-actions[bot] Nov 19, 2025
0b6cfe1
fix: add missing comma in get_mint_quotes (#1306)
heathermm55 Nov 19, 2025
c25f196
fix: remove use of unwrap or default in melt saga (#1309)
thesimplekid Nov 19, 2025
eb798e9
release v0.14.0 (#1302)
thesimplekid Nov 20, 2025
fd4557c
fix: ldk-node account for ln fee (#1312)
thesimplekid Nov 20, 2025
590b428
chore: release justfile (#1317)
thesimplekid Nov 21, 2025
94a326c
Revert "Prevent database contention in metadata cache load operations…
thesimplekid Nov 21, 2025
7c49717
Cdk ffi psgl (#1321)
thesimplekid Nov 21, 2025
9307043
Load mint info (#1323)
thesimplekid Nov 22, 2025
4cfc295
feat(multi-mint-wallet): add human-readable address melt quote suppor…
thesimplekid Nov 22, 2025
303836c
Deduplicate mint quote database queries (#1314)
crodas Nov 23, 2025
98a3881
Batch websocket notification reads in integration tests (#1330)
crodas Nov 23, 2025
d00ad9d
feat: multimint_ffi melt with mint (#1332)
thesimplekid Nov 24, 2025
eee20ea
feat: remove deprecated paid field (#1334)
thesimplekid Nov 24, 2025
24f9a50
Remove max_order from keyset database schema (#1329)
crodas Nov 25, 2025
96e2282
feat: cdk-ffi get wallets (#1333)
thesimplekid Nov 25, 2025
681f708
fix: check melt quote in ffi (#1340)
thesimplekid Nov 25, 2025
2889084
fix: use the client id from mint configuration (#1343)
lescuer97 Nov 26, 2025
bcc68a7
fix: proof selection with fees (#1345)
thesimplekid Nov 26, 2025
fea41e4
chore: add weekly meeting agenda for 2025-11-26 (#1348)
github-actions[bot] Nov 26, 2025
9770577
fix: do not remove melt quote (#1349)
thesimplekid Nov 27, 2025
b1aa1da
chore: example use tsk mint
thesimplekid Nov 27, 2025
6af8636
chore: typos
thesimplekid Nov 27, 2025
6530054
Get proofs for wallet tx (#1327)
thesimplekid Nov 28, 2025
90b0b90
Melt external (#1357)
thesimplekid Nov 30, 2025
977347c
feat: kill mutants nov 30 (#1359)
thesimplekid Dec 1, 2025
6809973
Allow multiple melt quotes for a payment request (#1353)
thesimplekid Dec 1, 2025
1c5f694
feat: add portal wallet
denmeh Dec 1, 2025
9da3025
Merge branch 'cashubtc:main' into cdk-portal
denmeh Dec 1, 2025
808de43
fix: wasm use web_time (#1363)
thesimplekid Dec 1, 2025
e95e138
feat: add unit info to the mint
denmeh Dec 1, 2025
94e2adb
Fix connection pool resource initialization and path validation (#1367)
crodas Dec 1, 2025
6e4ec91
Add Python wallet test suite with CI integration (#1362)
crodas Dec 1, 2025
927df47
feat(cdk): add get_token_data and get_mint_keysets to MultiMintWallet…
thesimplekid Dec 2, 2025
2e3be18
Merge branch 'cashubtc:main' into cdk-portal
denmeh Dec 2, 2025
1d52803
feat: add support for static auth token
denmeh Dec 2, 2025
0f23829
feat: Expose unit info
denmeh Dec 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions .backportrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"repoOwner": "cashubtc",
"repoName": "cdk",
"targetBranchChoices": ["v0.10.x", "v0.11.x", "v0.12.x", "v0.13.x"],
"autoMerge": false,
"autoMergeMethod": "merge"
}
9 changes: 9 additions & 0 deletions .cargo-mutants.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Cargo mutants configuration
# See: https://mutants.rs/

# Skip simple getters that are trivially correct and tested by integration tests
# These mutations would be caught by integration tests like test_split_with_fee
exclude_re = [
"cashu/src/amount.rs.*FeeAndAmounts::fee",
"cashu/src/amount.rs.*FeeAndAmounts::amounts",
]
43 changes: 43 additions & 0 deletions .cargo/mutants.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Mutation Testing Configuration for CDK
# Phase 1: Focus on cashu crate only

# Start with cashu crate only - exclude other crates initially
exclude_globs = [
"crates/cdk-*/**", # Exclude other crates initially
"**/tests/**", # Don't mutate test code
"**/benches/**", # Don't mutate benchmarks
]

# Reasonable timeout to catch hangs (5 minutes minimum)
minimum_test_timeout = 300

# Skip specific mutations that cause infinite loops
# These mutations create scenarios where loops never terminate or recursive functions never return.
# Format: "file.rs:line.*pattern"
exclude_re = [
# dhke.rs:61 - Mutating counter += to *= causes infinite loop (counter stays 0)
"crates/cashu/src/dhke.rs:61:.*replace \\+= with \\*=",

# amount.rs:108 - Mutating % to / in split causes infinite loop
"crates/cashu/src/amount.rs:108:.*replace % with /",

# amount.rs:100 - split() returning empty vec causes infinite loops
"crates/cashu/src/amount.rs:100:.*replace.*split.*with vec!\\[\\]",
"crates/cashu/src/amount.rs:100:.*replace.*split.*with vec!\\[Default",

# amount.rs:203 - checked_add returning Some(Default/0) causes infinite increment loops
"crates/cashu/src/amount.rs:203:.*replace.*checked_add.*with Some\\(Default",

# amount.rs:226 - try_sum returning Ok(Default/0) causes infinite loops
"crates/cashu/src/amount.rs:226:.*replace.*try_sum.*with Ok\\(Default",

# amount.rs:288 - From<u64> returning Default/0 causes infinite loops
"crates/cashu/src/amount.rs:288:.*replace.*from.*with Default",

# amount.rs:331 - Sub returning Default/0 causes infinite loops
"crates/cashu/src/amount.rs:331:.*replace.*sub.*with Default",

# Trivial getters - not worth testing
"FeeAndAmounts::fee",
"FeeAndAmounts::amounts",
]
58 changes: 58 additions & 0 deletions .github/ISSUE_TEMPLATE/mutation-testing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
name: Mutation Testing Improvement
about: Track improvements to mutation test coverage
title: '[Mutation] '
labels: 'mutation-testing, enhancement'
assignees: ''

---

## Mutation Details

**File:** `crates/cashu/src/...`
**Line:** 123
**Mutation:** replace foo() with bar()

**Current Status:** MISSED

## Why This Matters

<!-- Explain the security/correctness implications -->

## Proposed Fix

<!-- Describe the test(s) needed to catch this mutation -->

### Test Strategy

- [ ] Add negative test case
- [ ] Add edge case test
- [ ] Add integration test
- [ ] Other: ___________

### Expected Test

```rust
#[test]
fn test_() {
// Test that ensures this mutation would be caught
}
```

## Verification

After implementing the fix:

```bash
# Run mutation test on specific file
cargo mutants --file crates/cashu/src/...

# Or run mutation test on the specific function
cargo mutants --file crates/cashu/src/... --re "function_name"
```

Expected result: Mutation should be **CAUGHT** ✅

## Related

<!-- Link to any related issues or PRs -->
148 changes: 148 additions & 0 deletions .github/scripts/generate-agenda.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
#!/bin/bash
set -e

# Configuration
REPO="${GITHUB_REPOSITORY:-cashubtc/cdk}"
DAYS_BACK="${DAYS_BACK:-7}"
MEETING_LINK="https://meet.fulmo.org/cdk-dev"
OUTPUT_DIR="meetings"

# Calculate date range (last 7 days)
SINCE_DATE=$(date -d "$DAYS_BACK days ago" -u +"%Y-%m-%dT%H:%M:%SZ")
MEETING_DATE=$(date -u +"%b %d %Y 15:00 UTC")
FILE_DATE=$(date -u +"%Y-%m-%d")

echo "Generating meeting agenda for $MEETING_DATE"
echo "Fetching data since $SINCE_DATE"

# Function to format PR/issue list
format_list() {
local items="$1"
if [ -z "$items" ]; then
echo "- None"
else
echo "$items" | while IFS=$'\t' read -r number title url; do
echo "- [#$number]($url) - $title"
done
fi
}

# Fetch merged PRs
echo "Fetching merged PRs..."
MERGED_PRS=$(gh pr list \
--repo "$REPO" \
--state merged \
--search "merged:>=$SINCE_DATE" \
--json number,title,url \
--jq '.[] | [.number, .title, .url] | @tsv' \
2>/dev/null || echo "")

# Fetch recently active PRs (updated in last week, but not newly created)
echo "Fetching recently active PRs..."
RECENTLY_ACTIVE_PRS=$(gh pr list \
--repo "$REPO" \
--state open \
--search "updated:>=$SINCE_DATE -created:>=$SINCE_DATE" \
--json number,title,url \
--jq '.[] | [.number, .title, .url] | @tsv' \
2>/dev/null || echo "")

# Fetch new PRs (opened in the last week)
echo "Fetching new PRs..."
NEW_PRS=$(gh pr list \
--repo "$REPO" \
--state open \
--search "created:>=$SINCE_DATE" \
--json number,title,url \
--jq '.[] | [.number, .title, .url] | @tsv' \
2>/dev/null || echo "")

# Fetch new issues
echo "Fetching new issues..."
NEW_ISSUES=$(gh issue list \
--repo "$REPO" \
--state open \
--search "created:>=$SINCE_DATE" \
--json number,title,url \
--jq '.[] | [.number, .title, .url] | @tsv' \
2>/dev/null || echo "")

# Fetch discussion items (labeled with meeting-discussion)
echo "Fetching discussion items..."
DISCUSSION_PRS=$(gh pr list \
--repo "$REPO" \
--state open \
--label "meeting-discussion" \
--json number,title,url \
--jq '.[] | [.number, .title, .url] | @tsv' \
2>/dev/null || echo "")

DISCUSSION_ISSUES=$(gh issue list \
--repo "$REPO" \
--state open \
--label "meeting-discussion" \
--json number,title,url \
--jq '.[] | [.number, .title, .url] | @tsv' \
2>/dev/null || echo "")

# Combine discussion items (PRs and issues)
DISCUSSION_ITEMS=$(printf "%s\n%s" "$DISCUSSION_PRS" "$DISCUSSION_ISSUES" | grep -v '^$' || echo "")

# Generate markdown
AGENDA=$(cat <<EOF
# CDK Development Meeting

$MEETING_DATE

Meeting Link: $MEETING_LINK

## Merged

$(format_list "$MERGED_PRS")

## New

### Issues

$(format_list "$NEW_ISSUES")

### PRs

$(format_list "$NEW_PRS")

## Recently Active

$(format_list "$RECENTLY_ACTIVE_PRS")

## Discussion

$(format_list "$DISCUSSION_ITEMS")
EOF
)

echo "$AGENDA"

# Output to file if requested
if [ "${OUTPUT_TO_FILE:-true}" = "true" ]; then
mkdir -p "$OUTPUT_DIR"
OUTPUT_FILE="$OUTPUT_DIR/$FILE_DATE-agenda.md"
echo "$AGENDA" > "$OUTPUT_FILE"
echo "Agenda saved to $OUTPUT_FILE"
fi

# Create GitHub Discussion if requested
if [ "${CREATE_DISCUSSION:-false}" = "true" ]; then
echo "Creating GitHub discussion..."
DISCUSSION_TITLE="CDK Dev Meeting - $MEETING_DATE"

# Note: gh CLI doesn't have direct discussion creation yet, so we'd need to use the API
# For now, we'll just output instructions
echo "To create discussion manually, use the GitHub web interface or API"
echo "Title: $DISCUSSION_TITLE"
fi

# Output for GitHub Actions
if [ -n "$GITHUB_OUTPUT" ]; then
echo "agenda_file=$OUTPUT_FILE" >> "$GITHUB_OUTPUT"
echo "meeting_date=$MEETING_DATE" >> "$GITHUB_OUTPUT"
fi
8 changes: 8 additions & 0 deletions .github/templates/failed-backport-issue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Backport PR `#{{ env.PR_NUMBER }}` {{ env.SHORT_PR_TITLE }}
labels: backport
---
PR: #{{ env.PR_NUMBER }}
Title: {{ env.PR_TITLE }}

The backport bot failed. Please open a PR to backport these changes.
27 changes: 27 additions & 0 deletions .github/workflows/autoclose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Close inactive issues and PRs
on:
schedule:
- cron: "30 1 * * *"

jobs:
close-issues:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v10
with:
days-before-issue-stale: 60
days-before-issue-close: 21
stale-issue-label: "stale"
stale-issue-message: "This issue is stale because it has been open for 60 days with no activity."
close-issue-message: "This issue was closed because it has been inactive for 21 days since being marked as stale."
days-before-pr-stale: 60
days-before-pr-close: 21
stale-pr-label: "stale"
stale-pr-message: "This PR is stale because it has been open for 60 days with no activity."
close-pr-message: "This PR was closed because it has been inactive for 21 days since being marked as stale."
exempt-issue-labels: "keep-open"
exempt-pr-labels: "keep-open"
repo-token: ${{ secrets.GITHUB_TOKEN }}
68 changes: 68 additions & 0 deletions .github/workflows/backport.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Backport merged pull request
on:
pull_request_target:
# Run on merge (close) or if label is added after merging
types: [closed, labeled]

# Set concurrency limit to a single backport workflow per PR
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
backport:
permissions:
contents: write # so it can comment
pull-requests: write # so it can create pull requests
name: Backport pull request
runs-on: ubuntu-latest

# Don't run on closed unmerged pull requests or if a non-backport label is added
if: |
github.event.pull_request.merged &&
(
github.event.action != 'labeled' ||
contains(github.event.label.name, 'backport')
)

outputs:
was_successful: ${{ steps.create-pr.outputs.was_successful }}

steps:
- uses: actions/checkout@v4
- id: create-pr
name: Create backport pull requests
uses: korthout/backport-action@v3
with:
github_token: ${{ secrets.BACKPORT_TOKEN }}

open-issue:
permissions:
contents: read
issues: write
name: Open issue for failed backports
runs-on: ubuntu-latest
needs: backport

# Open an issue only if the backport job failed
if: ${{ needs.backport.outputs.was_successful == 'false' }}

steps:
- uses: actions/checkout@v4
- name: Set SHORT_PR_TITLE env
run: |
SHORT_PR_TITLE=$(
echo '${{ github.event.pull_request.title }}' \
| awk '{print (length($0) > 40) ? substr($0, 1, 40) "..." : $0}'
)
echo "SHORT_PR_TITLE=$SHORT_PR_TITLE" >> "$GITHUB_ENV"

- name: Create issue
uses: JasonEtco/create-an-issue@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.number }}
PR_TITLE: ${{ github.event.pull_request.title }}
SHORT_PR_TITLE: ${{ env.SHORT_PR_TITLE }}
with:
filename: .github/templates/failed-backport-issue.md
Loading