2026-04-11 - 2026-10-11

Overview

47 active pull requests
77 active issues
Excluding merges, 2 authors have pushed 67 commits to main and 249 commits to all branches. On main, 96 files have changed and there have been 7316 additions and 5217 deletions.

45 pull requests merged by 1 user

Merged #124 feat(machine): apply the settle_transaction operator op (ADR-005 §6) 2026-10-10 20:30:29 +00:00

Merged #123 ADR-005 rollout step 1: value-confirmed dispense, fault screens, cash-out latch, dispense-report outbox 2026-10-10 19:54:56 +00:00

Merged #120 feat(deploy): run the tejo from USB (disk-image-tejo-usb) 2026-10-06 17:35:43 +00:00

Merged #119 fix(hal): await the serial close, and stop reporting a cassette layout the dispenser refused 2026-09-29 21:58:32 +00:00

Merged #115 fix(nfc): make the Bolt Card reader an opt-in machine capability 2026-09-29 20:51:37 +00:00

Merged #114 feat(deploy): USB-bootable douro image (disk-image-douro-usb) 2026-09-29 20:51:29 +00:00

Merged #112 perf: cut the image 38% and turn GPU acceleration back on 2026-09-25 05:48:15 +00:00

Merged #111 Give the upgrade window its own timezone, not the system 2026-09-25 05:44:54 +00:00

Merged #108 Finish the console object-argument sweep 2026-09-24 13:09:56 +00:00

Merged #107 Interpolate log fields instead of passing an object 2026-09-24 07:31:55 +00:00

Merged #106 Consume operator cassette operations instead of counts 2026-09-23 21:31:08 +00:00

Merged #105 docs(adr): record the cassette-state synchronization model 2026-09-22 22:26:11 +00:00

Merged #104 fix(cassettes): close the machine-side divergence paths 2026-09-22 20:30:24 +00:00

Merged #103 fix(deploy): guard the WireGuard peer units too, not just the interface 2026-09-22 18:43:54 +00:00

Merged #101 fix(deploy): nightly auto-upgrade failed on both ATMs, for different reasons 2026-09-22 18:28:38 +00:00

Merged #100 fix(access): instrument Complete, and say when a card can't sell 2026-09-22 16:30:58 +00:00

Merged #99 fix(cash-out): settlement watch missed one-tap payments 2026-09-22 16:29:36 +00:00

Merged #97 fix(access): session Complete failed on IPC clone; keep rate lookup off the unlock path 2026-09-22 14:02:47 +00:00

Merged #96 fix(machine): keep the mouse pointer visible on the web demo 2026-09-22 12:59:56 +00:00

Merged #95 fix(idle): drop the redundant "Available: N sats" line 2026-09-20 22:33:13 +00:00

Merged #93 feat(access): verified Bolt Card session at entry + hidden-by-default balance 2026-09-20 15:16:42 +00:00

Merged #92 fix(access): single-shot loaded card + ADR-003 amendment 2026-09-20 14:41:45 +00:00

Merged #86 feat(access): Bolt Card tap-to-enter access gate (ADR-003) 2026-09-20 13:16:22 +00:00

Merged #89 chore: scrub "Lamassu" from shipped labels 2026-09-19 08:18:21 +00:00

Merged #88 feat: support a public browser demo of the kiosk 2026-09-06 18:04:50 +00:00

Merged #85 fix(nfc): auto-recover a wedged CCID reader via USB power-cycle 2026-08-09 16:36:47 +00:00

Merged #84 feat(machine): Bolt Card (NFC) tap-to-receive on cash-in 2026-08-06 16:33:10 +00:00

Merged #83 feat(machine): Bolt Card (NFC) tap-to-pay on cash-out 2026-08-05 21:38:34 +00:00

Merged #82 feat(machine): connectivity auto-recovery + on-screen Retry 2026-08-05 02:33:01 +00:00

Merged #81 fix(lightning): cash-in commission charged twice (send gross principal, not net) 2026-07-30 01:04:20 +00:00

Merged #80 fix(batm3): eGalax touchscreen (kernel 6.6) + USB-bootable image 2026-07-29 23:57:28 +00:00

Merged #79 fix(batm3): get cash-in working — EBDS escrow latch + correct serial device paths 2026-07-29 23:56:24 +00:00

Merged #77 fix(machine): credit bills on stacked-confirmation, not stack command (#58) 2026-07-25 20:44:12 +00:00

Merged #75 fix(machine): decrement cassettes by position, not denomination, on cash-out 2026-07-03 22:31:48 +00:00

Merged #74 feat(machine): consume get_machine_config over the transport (#70 P1 client) 2026-07-02 21:54:34 +00:00

Merged #73 feat: seed-driven pairing over the LNbits nostr-transport (#70) 2026-07-02 21:54:11 +00:00

Merged #72 deploy: bootable slim Sintra image + shared UP Board serial hardware 2026-07-02 21:53:29 +00:00

Merged #68 feat(machine): on-machine QR-pairing wizard 2026-06-24 22:40:16 +00:00

Merged #67 fix(machine): guard the availability beacon sign against bunker blips 2026-06-22 13:56:30 +00:00

Merged #66 feat: secure cash-in via server-stamped create_withdraw RPC (#52) 2026-06-22 13:56:00 +00:00

Merged #65 fix(machine): republish cassettes-state after dispense + on reload 2026-06-22 09:56:40 +00:00

Merged #64 Phase D follow-up: retry-policy switch for idempotent reads (#52) 2026-06-22 09:41:01 +00:00

Merged #63 Phase E: provision VITE_SPIRE_SEED for bunker pairing (#52) 2026-06-21 12:56:02 +00:00

Merged #61 Phase D: typed LNbits error codes + re-pair UX (#52) 2026-06-21 10:43:12 +00:00

Merged #60 Phase C: resolve signer from spire seed / bunker binding at bootstrap (#52) 2026-06-21 10:35:56 +00:00

2 pull requests proposed by 1 user

Proposed #87 feat: Raspberry Pi 5 (aarch64) target + Pyramid Apex RS-232 bill validator 2026-08-17 07:53:13 +00:00

Proposed #110 feat: Raspberry Pi 4 (aarch64) target 2026-09-24 19:45:06 +00:00

25 issues closed from 1 user

Closed #118 Cassette hot-reload always fails on douro (serial close race), and the app reports success anyway 2026-09-29 21:58:32 +00:00

Closed #94 cassette layout changes after first boot never reach spirekeeper (one-shot hello gate) 2026-09-22 20:30:24 +00:00

Closed #76 bug(machine): manual_dispense never decrements DB cassette counts — inventory overstates after operator remediation 2026-09-22 20:30:24 +00:00

Closed #98 nightly nixos-upgrade fails on batm3 (no known_hosts) and sintra (switch step) 2026-09-22 18:28:38 +00:00

Closed #57 feat: Layer 3 — consume operator fee config from Nostr; drop hardcoded cashInFeeFraction / cashOutFeeFraction 2026-06-13 22:03:55 +00:00

Closed #50 security: hash-based dedup on subscribe_payments push callbacks 2026-06-13 22:03:55 +00:00

Closed #38 feat: operator command channel via Nostr (manual dispense, remote management) 2026-06-13 22:03:54 +00:00

Closed #49 security: verify reply event signature in LnbitsClient.sendRpc 2026-06-13 22:03:54 +00:00

Closed #33 Replace hourglass loading animation with pickaxe mining animation 2026-06-13 22:03:53 +00:00

Closed #36 Add npub scan receipt feature to cash-in/cash-out flows 2026-06-13 22:03:53 +00:00

Closed #31 Cash-in bill timeout: consider auto-finalize vs security trade-off 2026-06-13 22:03:53 +00:00

Closed #29 Dispenser re-initialization after errors 2026-06-13 22:03:52 +00:00

Closed #30 Smarter dispense error handling and recovery 2026-06-13 22:03:52 +00:00

Closed #20 Add device configuration for HAL drivers 2026-06-13 22:03:51 +00:00

Closed #28 Validator enable/disable must follow state transitions 2026-06-13 22:03:51 +00:00

Closed #18 Convert apps/machine from Tauri to Electron 2026-06-13 22:03:50 +00:00

Closed #16 Update CLAUDE.md test counts and implementation status 2026-06-13 22:03:50 +00:00

Closed #19 Wire HAL drivers to state machine services 2026-06-13 22:03:50 +00:00

Closed #13 Move integration test scripts to proper directory structure 2026-06-13 22:03:49 +00:00

Closed #12 Fix ndebit-cash-in-flow.md documentation - incorrect SDK references 2026-06-13 22:03:49 +00:00

Closed #45 [migrated PR slot] fix(hal/ebds): poll MEI at 100ms — stop tearing bills on BATM3 2026-06-13 22:03:48 +00:00

Closed #9 Implement noffer-based cash-out flow 2026-06-13 22:03:48 +00:00

Closed #39 [migrated PR slot] feat: operator command channel via Nostr (manual dispense) 2026-06-13 22:03:47 +00:00

Closed #10 [migrated PR slot] feat: implement noffer-based cash-out flow 2026-06-13 22:03:47 +00:00

Closed #5 ShockWallet shows "Unknown Recipient" when scanning ndebit - Profile lookup protocol mismatch 2026-06-13 22:03:45 +00:00

77 issues created by 1 user

Opened #2 Feature: Remote Initiation, Local Redemption 2026-06-13 21:58:16 +00:00

Opened #1 Feature: Public Cash Availability Display 2026-06-13 21:58:16 +00:00

Opened #4 Feature: Optional npub identification for cash-in via NIP-17 2026-06-13 21:58:16 +00:00

Opened #3 Feature: Hold Invoices for Safe Dispensing 2026-06-13 21:58:16 +00:00

Opened #7 Consolidate repository: remove submodules and make lamassu-next standalone 2026-06-13 21:58:17 +00:00

Opened #5 ShockWallet shows "Unknown Recipient" when scanning ndebit - Profile lookup protocol mismatch 2026-06-13 21:58:17 +00:00

Opened #6 Dynamic Commission System 2026-06-13 21:58:17 +00:00

Opened #8 Implement session-scoped ndebit authorization for cash-in security 2026-06-13 21:58:17 +00:00

Opened #9 Implement noffer-based cash-out flow 2026-06-13 21:59:06 +00:00

Opened #10 [migrated PR slot] feat: implement noffer-based cash-out flow 2026-06-13 22:02:42 +00:00

Opened #11 Implement cash-out "Sell Bitcoin" flow with denomination-aware amount selection 2026-06-13 22:02:43 +00:00

Opened #12 Fix ndebit-cash-in-flow.md documentation - incorrect SDK references 2026-06-13 22:02:43 +00:00

Opened #14 Add package READMEs for all packages 2026-06-13 22:02:45 +00:00

Opened #13 Move integration test scripts to proper directory structure 2026-06-13 22:02:45 +00:00

Opened #15 HAL: Implement real hardware drivers (validators and dispensers) 2026-06-13 22:02:46 +00:00

Opened #16 Update CLAUDE.md test counts and implementation status 2026-06-13 22:02:46 +00:00

Opened #18 Convert apps/machine from Tauri to Electron 2026-06-13 22:02:47 +00:00

Opened #17 Cash-in: Detect ndebit claim success and show confirmation to user 2026-06-13 22:02:47 +00:00

Opened #20 Add device configuration for HAL drivers 2026-06-13 22:02:48 +00:00

Opened #21 Test HAL drivers on physical Sintra hardware 2026-06-13 22:02:48 +00:00

Opened #19 Wire HAL drivers to state machine services 2026-06-13 22:02:48 +00:00

Opened #22 LNBits as Nostr-native UI layer over Lightning.Pub 2026-06-13 22:02:49 +00:00

Opened #23 Add k1 session token to ndebit for reliable request matching 2026-06-13 22:02:49 +00:00

Opened #25 Implement unique hash (id_unique_hash) for LNURL-withdraw session tracking 2026-06-13 22:02:50 +00:00

Opened #24 feat(machine): use Nostr events for LNURL-withdraw completion notification 2026-06-13 22:02:50 +00:00

Opened #26 feat: Cashu ecash integration for offline ATM operation and fiat-stable vouchers 2026-06-13 22:02:51 +00:00

Opened #27 Smart cassette fallback on dispenser pickup errors 2026-06-13 22:02:51 +00:00

Opened #28 Validator enable/disable must follow state transitions 2026-06-13 22:02:52 +00:00

Opened #30 Smarter dispense error handling and recovery 2026-06-13 22:02:52 +00:00

Opened #29 Dispenser re-initialization after errors 2026-06-13 22:02:52 +00:00

Opened #31 Cash-in bill timeout: consider auto-finalize vs security trade-off 2026-06-13 22:02:53 +00:00

Opened #32 Evaluate Lightning.Pub triggers as backup payment confirmation 2026-06-13 22:02:53 +00:00

Opened #34 Backport error handling patterns from legacy lamassu-machine 2026-06-13 22:02:54 +00:00

Opened #33 Replace hourglass loading animation with pickaxe mining animation 2026-06-13 22:02:54 +00:00

Opened #35 Improve transaction limit enforcement for cash-in and cash-out 2026-06-13 22:02:55 +00:00

Opened #36 Add npub scan receipt feature to cash-in/cash-out flows 2026-06-13 22:02:55 +00:00

Opened #38 feat: operator command channel via Nostr (manual dispense, remote management) 2026-06-13 22:02:56 +00:00

Opened #37 feat: MEI cash recycler driver for BATM3 2026-06-13 22:02:56 +00:00

Opened #40 Rename fee_percent to fee_rate for clarity 2026-06-13 22:02:57 +00:00

Opened #39 [migrated PR slot] feat: operator command channel via Nostr (manual dispense) 2026-06-13 22:02:57 +00:00

Opened #42 Fleet management: Nostr-native remote control & telemetry for ATM operators 2026-06-13 22:02:58 +00:00

Opened #41 Multi-location deployment: extract per-machine config to runtime site files 2026-06-13 22:02:58 +00:00

Opened #43 Enrich kind 30078 beacon for public ATM status pages 2026-06-13 22:02:59 +00:00

Opened #44 Carry principal/fee split end-to-end via Payment.extra on cash-out invoices (and LNURL-withdraw equivalent) 2026-06-13 22:02:59 +00:00

Opened #46 audit id003 _send 100ms setTimeout — possible escrow→stack race on Sintras 2026-06-13 22:03:00 +00:00

Opened #45 [migrated PR slot] fix(hal/ebds): poll MEI at 100ms — stop tearing bills on BATM3 2026-06-13 22:03:00 +00:00

Opened #49 security: verify reply event signature in LnbitsClient.sendRpc 2026-06-13 22:03:01 +00:00

Opened #47 Operator branding — logo, title, color scheme overrides 2026-06-13 22:03:01 +00:00

Opened #48 satmachineadmin becomes the bitSpire operator dashboard 2026-06-13 22:03:01 +00:00

Opened #50 security: hash-based dedup on subscribe_payments push callbacks 2026-06-13 22:03:02 +00:00

Opened #51 security: NixOS systemd hardening regression — restore baseline isolation 2026-06-13 22:03:02 +00:00

Opened #53 chore: ESLint config missing — pnpm lint is broken across the workspace 2026-06-13 22:03:03 +00:00

Opened #52 track: consume LNbits sidecar bunker (replace VITE_ATM_PRIVATE_KEY with bunker:// URL) 2026-06-13 22:03:03 +00:00

Opened #55 Trim ATM closure to recover eMMC headroom 2026-06-13 22:03:04 +00:00

Opened #54 test(lnbits): exercise FIFO eviction in recordSeen (follow-up to #50) 2026-06-13 22:03:04 +00:00

Opened #56 ATM-side consumer: operator-driven cassette inventory config 2026-06-13 22:03:05 +00:00

Opened #57 feat: Layer 3 — consume operator fee config from Nostr; drop hardcoded cashInFeeFraction / cashOutFeeFraction 2026-06-13 22:03:05 +00:00

Opened #58 bug(cash-in): bill in escrow can be abandoned when user presses "done" before stack confirms 2026-06-13 22:03:06 +00:00

Opened #59 Remote access & recovery plane: NetBird-based, operator-owned (implements ADR-002) 2026-06-14 09:36:51 +00:00

Opened #62 Carry the operator identity in the pairing seed (NIP-19 nprofile) 2026-06-21 09:31:32 +00:00

Opened #69 Sintra: drive the scan-bay illuminator LED during QR scanning 2026-06-24 22:34:08 +00:00

Opened #70 Unpaired machine shows "ATM Unavailable" instead of the pairing wizard (config validated before pairing) 2026-06-29 22:07:54 +00:00

Opened #71 Source operator pubkey + fee config from LNbits over the transport, not env/seed (#70 P1) 2026-07-02 19:15:44 +00:00

Opened #76 bug(machine): manual_dispense never decrements DB cassette counts — inventory overstates after operator remediation 2026-07-03 22:29:19 +00:00

Opened #78 bug(cash-out): unwatched-payment windows — no invoice expiry, silent watchInvoice setup failure 2026-07-25 23:27:55 +00:00

Opened #90 access: persist the access audit to state.db 2026-09-20 13:16:48 +00:00

Opened #91 access: open enrollment lets any /scan/ NDEF tag through the gate 2026-09-20 13:16:51 +00:00

Opened #94 cassette layout changes after first boot never reach spirekeeper (one-shot hello gate) 2026-09-20 15:15:27 +00:00

Opened #98 nightly nixos-upgrade fails on batm3 (no known_hosts) and sintra (switch step) 2026-09-22 13:52:09 +00:00

Opened #102 ATMs should fetch with per-machine read-only deploy keys, not an operator account key 2026-09-22 18:28:20 +00:00

Opened #113 IdleView offers Sell Bitcoin on machines with no dispenser 2026-09-29 19:08:44 +00:00

Opened #116 batm3 nightly auto-upgrade has failed since Sep 24 — mesa builds locally and hits the 60s timeout 2026-09-29 20:51:07 +00:00

Opened #117 Hardware device paths have two sources of truth — the NixOS module's defaults are wrong for every model, and warn misleadingly at boot 2026-09-29 21:20:58 +00:00

Opened #118 Cassette hot-reload always fails on douro (serial close race), and the app reports success anyway 2026-09-29 21:53:37 +00:00

Opened #121 A relay outage at boot is misread as a revoked pairing, and latches the machine on the pairing wizard for good 2026-10-08 05:34:59 +00:00

Opened #122 bug(cash-out): a jammed dispense takes the customer's sats, tells the server nothing, over-counts the cassette, and leaves the machine advertising itself as available 2026-10-09 07:16:28 +00:00

Opened #125 test(machine): settlement-watch.test.ts — 5 of 7 fail on a clean dev checkout 2026-10-10 20:28:58 +00:00