Commit graph

  • 98bec9b4b2 chore(release): v0.1.8 main v0.1.8 Padreug 2026-10-10 22:31:17 +02:00
  • 3fa2de8c5b Merge pull request 'ADR-005 slice 2: operator alert, settle off-machine, glossary + guide' (#50) from feat/dispense-outcome-slice2 into main padreug 2026-10-10 20:30:36 +00:00
  • 1e235e3e42 test: slice-2 coverage — NIP-17 round trip, alert policy, settle path, op shape Padreug 2026-10-10 22:27:06 +02:00
  • 9eeb7f29b4 docs: dispenser error glossary and operator guide Padreug 2026-10-10 22:27:05 +02:00
  • cdb1fe71cc feat(ui): settle off-machine, glossary links, alerts pubkey Padreug 2026-10-10 22:26:45 +02:00
  • 7375112638 feat(api): settle a cash_owed / partial_pending settlement off-machine Padreug 2026-10-10 22:26:45 +02:00
  • 8d19da43c2 feat(notify): alert the operator over Nostr when a customer is owed cash Padreug 2026-10-10 22:26:45 +02:00
  • 786857f568 feat(models): settle_transaction op, alerts_pubkey, operator_notified_at (m017) Padreug 2026-10-10 22:26:45 +02:00
  • 3f2c46c550 chore(release): v0.1.7 v0.1.7 Padreug 2026-10-10 21:58:51 +02:00
  • 784d41f946 Merge pull request 'ADR-005 rollout step 2 (slice 1): capture cash-out settlements on the machine's dispense report' (#49) from feat/dispense-outcome into main padreug 2026-10-10 19:55:09 +00:00
  • 79413dc06d test: dispense outcome capture — handler transitions, payment gate, resume op, hold mirror Padreug 2026-10-10 21:51:52 +02:00
  • fdba2d363f feat(dashboard): owed-cash worklist buckets, prefilled partial dispense, resume cash-out (ADR-005 §5–§6) Padreug 2026-10-10 21:51:52 +02:00
  • 44c2afa5bb feat(transport): report_dispense RPC — capture a cash-out on the machine's report, not on payment (ADR-005 §1–§2) Padreug 2026-10-10 21:51:51 +02:00
  • b8a5e6352a feat(schema): dispense outcome on settlements, dispense_reports, cash-out hold mirror (ADR-005) Padreug 2026-10-10 21:51:51 +02:00
  • d09c51f277 Merge pull request 'Publish cassette operations instead of counts' (#46) from feat/cassette-ops-publisher into main v0.1.6 padreug 2026-09-23 21:16:33 +00:00
  • 5f60b3fe31 fix(cassettes): break the same-second tie with the machine's counter Padreug 2026-09-23 12:58:04 +02:00
  • 79a4f83293 feat(cassettes): record operations from the dashboard instead of counts Padreug 2026-09-23 12:50:08 +02:00
  • c76a1bb125 feat(cassettes): persist the machine's counts-uncertain marker Padreug 2026-09-23 12:47:30 +02:00
  • 2ac3e2064e feat(cassettes): swap the count-publish endpoint for operation endpoints Padreug 2026-09-23 12:44:18 +02:00
  • 3d8368bcc4 feat(cassettes): consume the machine's operation acknowledgements Padreug 2026-09-23 12:38:12 +02:00
  • 90bd43d6da feat(cassettes): publish operations to the ATM Padreug 2026-09-23 12:35:42 +02:00
  • b2157db219 feat(cassettes): record and read operator operations Padreug 2026-09-23 12:33:46 +02:00
  • d8190375a6 feat(cassettes): schema and models for operator operations Padreug 2026-09-23 09:50:28 +02:00
  • 30870ebd16 Merge pull request 'fix(cassettes): order ATM state events, and reconcile the bay set' (#44) from fix/cassette-state-reconcile into main v0.1.5 padreug 2026-09-22 20:30:44 +00:00
  • 106da5b46b fix(cassettes): drop bays the machine no longer reports Padreug 2026-09-22 22:23:40 +02:00
  • 27449e1d11 fix(cassettes): order state events by created_at, not by one remembered id Padreug 2026-09-22 22:23:19 +02:00
  • 08eea1ba16 Merge pull request 'feat(transport): get_machine_config RPC — server-delivered machine config (#41)' (#42) from feat/get-machine-config-rpc into main v0.1.4 padreug 2026-07-02 21:52:49 +00:00
  • 1f5652b425 feat(transport): get_machine_config RPC — server-delivered machine config (#41) Padreug 2026-07-02 21:54:40 +02:00
  • eefadb6c20 Merge pull request 'fix(ui): make admin dialogs mobile-friendly + add fullscreen QR zoom' (#40) from fix/mobile-friendly-dialogs-and-QR-zoom into main padreug 2026-07-02 18:56:04 +00:00
  • 282d8e75c5 fix(ui): make the zoom QR actually fill the screen Padreug 2026-07-02 19:58:05 +02:00
  • 015208500a fix(ui): make spirekeeper dialogs mobile-friendly + add fullscreen QR zoom Padreug 2026-07-02 19:36:07 +02:00
  • 8b64e9c742 Merge pull request 'feat(pairing): slim the spire seed + carry lnbits_npub (bitspire-#70)' (#37) from bitspire-70-seed-lnbits-npub into main padreug 2026-07-02 17:45:01 +00:00
  • 2b90590104 fix(pairing): retry all bunker admin RPCs past transient timeouts (#38) Padreug 2026-07-02 15:30:55 +02:00
  • 0bb9939822 fix(pairing): default relay to the transport's nostrrelay, not nostrclient proxy Padreug 2026-07-02 00:43:54 +02:00
  • 765b07737b fix(pairing): retry get_key_tokens past a transient empty result Padreug 2026-07-02 00:29:08 +02:00
  • 4e36b98534 feat(pairing-ui): pre-fill the pair dialog relay with the default endpoint Padreug 2026-07-02 00:16:46 +02:00
  • c3791ed6c8 feat(pairing): default seed relay to the nostrclient endpoint + validate relays Padreug 2026-07-02 00:00:13 +02:00
  • 9dc4d09973 feat(pairing): slim the spire seed + carry lnbits_npub (bitspire-#70) Padreug 2026-07-01 21:16:10 +02:00
  • b93e3fb698 test(pair-endpoint): update stale pair_spire double + mock get_super_config Padreug 2026-07-01 21:16:10 +02:00
  • a5ab02e4b6 Merge pull request 'fix(pairing): default bunker_relay to the spire's public event relay, not localhost' (#35) from fix/pair-bunker-relay-default into main v0.1.3 padreug 2026-06-22 15:21:12 +00:00
  • b55fc8bc1c fix(pairing): default bunker_relay to the spire's public event relay, not localhost Padreug 2026-06-22 17:18:24 +02:00
  • d0d20b0f94 Merge pull request 'fix: guard every machine_npub deref against unpaired machines (500 + cassette-consumer crash)' (#33) from fix/unpaired-machine-npub-guards into main v0.1.2 padreug 2026-06-22 14:58:03 +00:00
  • 8dad72a00d fix: complete the unpaired-machine sweep + regression test Padreug 2026-06-22 16:53:45 +02:00
  • d52a3bfafe fix: guard every machine_npub deref against unpaired machines (None) Padreug 2026-06-22 16:45:29 +02:00
  • 622c1be5d3 Merge pull request 'feat(cash-in): secure create_withdraw nostr-transport RPC (#31)' (#32) from feat/secure-cashin-rpc into main v0.1.1 padreug 2026-06-22 13:54:43 +00:00
  • f67cb49bc3 fix(cash-in): return bech32 LNURL, not the raw URL Padreug 2026-06-22 15:32:44 +02:00
  • 9abf695fd5 feat(cash-in): super_config.max_cash_in_sats per-tx cap + UI (#31) Padreug 2026-06-22 12:51:59 +02:00
  • 607b71e796 feat(cash-in): secure create_withdraw nostr-transport RPC (#31) Padreug 2026-06-22 12:17:17 +02:00
  • 56ac4a69e9 Merge pull request 'fix(settlements): process cash-in (outbound) payments, not just cash-out' (#30) from fix/cash-in-settlement into main padreug 2026-06-22 10:19:44 +00:00
  • 7b55dc152b fix(settlements): process cash-in (outbound) payments, not just cash-out Padreug 2026-06-21 17:27:58 +02:00
  • 490605333c Merge pull request 'feat(pairing,ui): optional machine_npub + bunker_relay override + fee decimal-input UX' (#29) from feat/optional-machine-npub-pairing-ux into main padreug 2026-06-21 13:41:57 +00:00
  • 73bd274979 feat(pairing,ui): optional machine_npub + bunker_relay override + fee decimal-input UX Padreug 2026-06-21 12:31:55 +02:00
  • 47b7efc53c Merge pull request 'docs(pairing): TTL + token-revoke now enforced post-bind (nsecbunkerd#27)' (#28) from docs/ttl-revoke-enforced-post-bind into main padreug 2026-06-20 10:05:36 +00:00
  • b193f6262d docs(pairing): TTL + token-revoke now enforced post-bind (nsecbunkerd#27) Padreug 2026-06-19 23:23:11 +02:00
  • cc8d786331 Merge pull request 'fix(fleet-ui): pair-dialog v-else compiler error + TTL docstring correction' (#27) from fix/pair-dialog-and-ttl-doc into main padreug 2026-06-18 23:01:15 +00:00
  • 554b2e2e17 docs(pairing): correct duration_hours TTL docstring Padreug 2026-06-19 00:59:29 +02:00
  • 76090ab5da fix(fleet-ui): wrap pair-dialog steps in template v-if/v-else Padreug 2026-06-19 00:59:29 +02:00
  • 22678dfb4f feat(pairing): authorize kind-22242 (NIP-42 AUTH) in spire policy (#52) Padreug 2026-06-18 19:27:29 +02:00
  • a18f653ca7 feat(ui): Fleet Pair / Revoke spire UI (#9/#12) Padreug 2026-06-18 19:23:22 +02:00
  • d826e68413 feat(ui): Fleet Pair / Revoke spire UI (#9/#12) Padreug 2026-06-18 19:23:22 +02:00
  • 846d5d9d0f Merge pull request 'feat(pairing): optional token TTL + revoke endpoint (#9/#12, #22)' (#23) from feat/pairing-revoke-ttl into main padreug 2026-06-18 17:09:01 +00:00
  • 4db5c3de4e Merge branch 'main' into feat/pairing-revoke-ttl padreug 2026-06-18 17:08:44 +00:00
  • 32959d1533 Merge pull request 'feat(pairing): seed-URL pairing — operator-side producer (S0 / #9)' (#21) from feat/seed-url-pairing into main padreug 2026-06-18 17:03:34 +00:00
  • a5efdf22a1 feat(pairing): optional token TTL + revoke endpoint (#9/#12, #22) Padreug 2026-06-18 18:51:54 +02:00
  • 9c5f07c72e refactor(pairing): use lnbits' public ensure_policy, drop fork duplicate (#9) Padreug 2026-06-18 18:31:21 +02:00
  • 761f078053 feat(pairing): POST /machines/{id}/pair endpoint (#9) Padreug 2026-06-16 23:39:18 +02:00
  • a77f5bcb5c feat(pairing): bunker pairing service — mint per-spire key + seed URL (#9) Padreug 2026-06-16 23:17:48 +02:00
  • bb473f5385 feat(pairing): m010 schema — bunker pairing columns on dca_machines Padreug 2026-06-16 22:47:42 +02:00
  • c651d53419 assets: replace extension logo with AIO mark (256x256) Padreug 2026-06-16 18:10:29 +02:00
  • 86f132afbe chore: bitSpire-accurate short_description for 0.1.0 release v0.1.0 Padreug 2026-06-16 17:43:55 +02:00
  • 439c47ceae docs: repoint migrated issue refs to spirekeeper numbers Padreug 2026-06-16 17:42:56 +02:00
  • 40639ee437 docs: add satmachineadmin -> spirekeeper data-migration runbook Padreug 2026-06-13 22:37:48 +02:00
  • 4ac640a499 docs: update functional identifier refs to spirekeeper Padreug 2026-06-13 22:31:21 +02:00
  • a059e3f596 refactor: rename extension identity to spirekeeper Padreug 2026-06-13 22:30:05 +02:00
  • 9c4d2c1324 docs(security-pathway): flag kind:21001 CLINK collision + rotation Padreug 2026-06-06 21:00:14 +02:00
  • 8a9aa00c20 Merge pull request 'feat(v2): operator fee-config Nostr publisher (closes #39)' (#43) from feat/fee-transport into v2-bitspire padreug 2026-06-01 18:20:09 +00:00
  • 794d7e5395 feat(v2): wire fee-config publish into machine + super-config triggers (#39 3/3) Padreug 2026-06-01 20:07:56 +02:00
  • 12f39226f0 feat(v2): fee_transport — kind-30078 publisher for operator fee config (#39 2/3) Padreug 2026-06-01 20:00:29 +02:00
  • aeaee1f568 refactor(v2): extract kind-30078 publish primitives to nostr_publish.py (#39 1/3) Padreug 2026-06-01 19:54:08 +02:00
  • 52911af7b1 Merge pull request 'feat(v2): principal-based fee split + per-direction config (closes #38)' (#42) from feat/principal-based-fees into v2-bitspire padreug 2026-06-01 17:45:30 +00:00
  • 10f4b50ca5 feat(v2)(ui): per-direction fee inputs in super-config + machine modals (#38 5/5) Padreug 2026-06-01 14:46:27 +02:00
  • d9e8a04b8b feat(v2): record fee_mismatch_sats per settlement, Phase 1 (#38 4/5) Padreug 2026-06-01 14:34:25 +02:00
  • 1babdfbf06 feat(v2): principal-based fee split — fixes super under-payment (#38 3/5) Padreug 2026-06-01 11:24:09 +02:00
  • 4cd0041923 feat(v2): CRUD + per-direction fee cap validation (#38 2/5) Padreug 2026-06-01 10:42:03 +02:00
  • d87d0db324 feat(v2): m009 + models — split fee fractions by direction (#38 1/5) Padreug 2026-06-01 10:18:37 +02:00
  • e9f81d0cbb Merge pull request 'feat(v2): nostr-transport roster-resolver hook — path B wallet routing (#20)' (#36) from feat/roster-resolver into v2-bitspire padreug 2026-05-31 20:33:17 +00:00
  • 99efa52b69 feat(v2): nostr-transport roster-resolver hook (#20 path-B) Padreug 2026-05-31 19:14:45 +02:00
  • 213f95bab7 Merge pull request 'feat(v2): collision guard — refuse machines whose npub matches an operator account (closes #32)' (#33) from feat/collision-detection into v2-bitspire padreug 2026-05-31 18:10:30 +00:00
  • 7bab182abb chore(tests): remove stale test_init.py cookiecutter leftover Padreug 2026-05-31 19:23:36 +02:00
  • 05c1105897 feat(v2): collision guard — refuse machines whose npub matches an operator account (#32) Padreug 2026-05-31 18:45:56 +02:00
  • 44f6c0b1bd Merge pull request 'feat(v2): operator-side cassette inventory v1.1 + signer.nip44_* migration (#29)' (#30) from feat/cassette-config-v1 into v2-bitspire padreug 2026-05-31 13:54:18 +00:00
  • d448fab0d2 chore(v2): lint pass — black + ruff auto-fix + mypy regressions (#29 v1.1) Padreug 2026-05-31 15:50:14 +02:00
  • dcb7de0c27 refactor(v2): cassette transport — signer.nip44_* migration (#29 v1.1 / closes #21 partial) Padreug 2026-05-31 09:21:43 +02:00
  • 4b128ca53c test(v2): re-wire bitspire cross-test fixture for v1.1 positions-keyed shape (#29 v1.1) Padreug 2026-05-30 22:43:12 +02:00
  • 1cebefcde5 test(v2): rewrite cassette tests for v1.1 position-keyed wire shape (#29 v1.1) Padreug 2026-05-30 22:31:08 +02:00
  • 3014962563 refactor(v2)(ui): denomination editable per slot, position read-only (#29 v1.1) Padreug 2026-05-30 22:28:37 +02:00
  • 34e324b4c5 refactor(v2): cassette consumer + API endpoint — position-keyed (#29 v1.1) Padreug 2026-05-30 22:26:55 +02:00
  • 5dbd7314f4 refactor(v2): cassette CRUD + transport — position-keyed (#29 v1.1) Padreug 2026-05-30 22:25:27 +02:00
  • 427cad33de refactor(v2): cassette models — position-keyed wire shape (#29 v1.1) Padreug 2026-05-30 22:23:51 +02:00
  • df6e8e0a22 feat(v2): m008 flip cassette_configs PK to (machine_id, position) (#29 v1.1) Padreug 2026-05-30 22:22:29 +02:00