Commit graph

64 commits

Author SHA1 Message Date
56e42cba64 spirekeeper 0.1.8 2026-10-10 22:33:32 +02:00
be094ce2de spirekeeper 0.1.7 — capture cash-out settlements on the machine's dispense report (ADR-005) 2026-10-10 21:59:02 +02:00
2f4aa7fe1b events: add v1.6.8-aio.4
Ticket waves render again in the organiser table (aiolabs/events#68).
The chip's inline LNbits.utils call threw — that global is not in Vue
template scope — and took the whole v-for with it, so every event showed
an empty wave list and no wave could be edited from the LNbits UI.

Frontend only; no schema change, no migration. Added alongside
v1.6.8-aio.3. Archive sha256 verified against two independent fetches
and spot-checked for the fix.
2026-10-03 21:07:32 +02:00
bb2a33f121 events: add v1.6.8-aio.3
Honours per-wave fiat when the organiser set an explicit payment-method
list (aiolabs/events#67). The published tickets_payment_methods tag no
longer advertises fiat for a wave that cannot take it, which previously
contradicted the same event's absent tickets_allow_fiat and produced a
card button the purchase endpoint refused.

Eight lines in models.py; no schema change, no migration. Added
alongside v1.6.8-aio.2 rather than over it. Archive sha256 verified
against two independent fetches and spot-checked for the fix.
2026-10-03 08:06:16 +02:00
a7d9a5c9f8 events: add v1.6.8-aio.2
Preserves ticket waves when a client edits an event without them
(aiolabs/events#65) and exposes waves on public event responses so a
buyer can choose a tier (#66). No schema change.

Added alongside v1.6.8-aio.1 rather than over it — instances still on
the previous version need theirs to stay resolvable.

Archive sha256 verified against two independent fetches, and the archive
spot-checked for both changes. Prerequisite for aiolabs/webapp#176,
which is merged to dev.
2026-09-29 09:25:17 +02:00
5df4679407 events: add v1.6.8-aio.1
Rebase onto upstream v1.6.8 — ticket waves, with pricing, inventory and
the published NIP-52 counts following the wave the buyer selected rather
than the primary-wave roll-up; per-wave capacity required; SatsPay
on-chain dropped pending native LndRest (aiolabs/events#41).

Added alongside v1.6.1-aio.18 rather than over it — instances still on
the previous version need theirs to stay resolvable.

Archive sha256 verified against two independent fetches. Tested on
bohm's dev LNbits before tagging: fork migration m004 applied, a
purchase from the 25-sat wave minted a 25-sat invoice rather than the
primary wave's 10, and the relay copy carried the active wave's counts.
2026-09-29 00:10:54 +02:00
f6f0de6acd events v1.6.1-aio.18 — zero capacity is sold out, not unlimited
Adds the entry alongside aio.17; older versions stay resolvable.

aiolabs/events#62: tickets_available is always published, including
zero. Omitting it meant "unlimited", but api_get_event and
api_ticket_create both read `amount_tickets < 1` as sold out — so a
zero-capacity event advertised unlimited tickets on the card while both
the detail page and the purchase returned 410. Three were live on
aio-demo.
2026-09-27 23:12:45 +02:00
254d7728d8 events v1.6.1-aio.17 — availability fix + relay-confirmed publishes
Adds the entry alongside aio.16; older versions stay resolvable.

aiolabs/events#59: api_ticket_create stopped subtracting `sold` from
`amount_tickets`, which are the same tickets counted twice. Every event
declared itself sold out at half capacity — 16 of 24 live events on
aio-demo affected, 3 refusing sales with stock left.

aiolabs/events#58: publishes are confirmed against the relay's NIP-01
OK rather than the send queue, so an undelivered calendar event stays
flagged for the republish sweep instead of being recorded as sent.
2026-09-27 22:28:11 +02:00
957733a1d7 events v1.6.1-aio.16 — nostr publish reliability
Adds the entry alongside aio.15; older versions stay resolvable for
instances still running them.

Covers aiolabs/events #54 and #55: skipped publishes log at WARNING
instead of returning silently, events.nostr_publish_pending marks a row
from before each publish attempt until a confirmed success, and a
5-minute sweep republishes whatever is still flagged. Carries migration
m003.
2026-09-27 09:28:37 +02:00
463442b790 spirekeeper v0.1.6 — cassette operations replace cassette counts
The operator publishes what it did to a bay and the machine, which holds
the notes, owns the running count. Removes the endpoint that let a
dashboard form loaded before a dispense discard that dispense.

Pairs with aiolabs/bitspire#106 on the machine side; deploy this first.

v0.1.5 stays resolvable for instances still on it.
2026-09-23 23:18:15 +02:00
a7bf0c4bbc spirekeeper: add v0.1.5 (cassette state ordering + bay reconciliation) 2026-09-22 22:42:39 +02:00
c5b9b9923f boltcards: add v1.1.1-aio.4 (/session fiat from warm cache only) 2026-09-22 17:36:20 +02:00
803ca900e8 chatelet: add v0.5.0
Availability fix (#20), unavailable-ranges feed (#21), operator settings +
bookings/mine + card checkout (#22). min_lnbits_version 1.4.1.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 11:13:51 +02:00
514ff498c8 boltcards: add v1.1.1-aio.3 (/session endpoint) 2026-09-20 17:25:24 +02:00
0133e171be chatelet: add v0.4.0 (keyless public booking read-back) 2026-09-15 23:53:37 +02:00
e2fa53384d nwcprovider: add v1.1.3-aio.1 (first fork release: null optional params fix)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Tbyw6FwjhEJg3gHfPHxWt
2026-09-14 22:35:35 +02:00
de3b299fe8 nostrnip5: add v1.1.0 (upstream lnbits/nostrnip5, no aio fork)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RQhTgskDx8LLpD47rzLRS
2026-09-14 15:38:56 +02:00
a08399085f docs: add CLAUDE.md (catalog rules, validation snippet, commit convention)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RQhTgskDx8LLpD47rzLRS
2026-09-14 15:34:56 +02:00
2b915e2040 nostrrelay: add v1.1.0-aio.4 (NIP-09 a-tag rebuild, size field no longer leaks into EVENT)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Tbyw6FwjhEJg3gHfPHxWt
2026-09-13 18:56:44 +02:00
7cda0f53c7 events: add v1.6.1-aio.15 (promo codes enforced)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYwoAkZZmXMMmaBp4WGUBo
2026-09-13 18:55:46 +02:00
c5e6dad1af events: add v1.6.1-aio.14 (Email sent column)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYwoAkZZmXMMmaBp4WGUBo
2026-09-13 18:42:48 +02:00
012834b255 nostrclient: add v1.2.0-aio.3 (CLOSED on REQ when no relay is configured)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Tbyw6FwjhEJg3gHfPHxWt
2026-09-13 16:14:06 +02:00
8eac860073 nostrrelay: add v1.1.0-aio.3 (deliver events to every matching subscription)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Tbyw6FwjhEJg3gHfPHxWt
2026-09-12 14:42:30 +02:00
dc2f4637cd nostrclient: add v1.2.0-aio.2 (OK reply to client-published events)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Tbyw6FwjhEJg3gHfPHxWt
2026-09-12 14:42:30 +02:00
289880b8c6 events: add v1.6.1-aio.13 (admin form parity with the webapp)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018b1bDExMX7W3a47wcgFUjb
2026-09-10 16:45:37 +02:00
2a8efffdc5 payroll: add v0.1.0 (initial release)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011w2qhtS49SVXim9DBPVT8J
2026-09-10 15:51:16 +02:00
Patrick Mulligan
73ea2c60f3 access 0.0.3 — door Edit action in the admin UI
Adds a per-row Edit button to the Access doors table (backend PUT already
existed and preserves the controller token). Lets operators set a door's
Home Assistant webhook URL after creation without delete + recreate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-08 23:58:09 +02:00
5ae05cbc2d events: add v1.6.1-aio.10 (ticket card attachment)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYwoAkZZmXMMmaBp4WGUBo
2026-09-08 16:53:35 +02:00
8c67cbb3f7 events: add v1.6.1-aio.9 (ticket email deliverability headers + body)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYwoAkZZmXMMmaBp4WGUBo
2026-09-08 16:25:33 +02:00
f8f829af2a chore: restore 4-space JSON formatting after the aio.8 entry
The previous commit re-serialised extensions.json with 2-space indent; only
the new events entry was meant to change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYwoAkZZmXMMmaBp4WGUBo
2026-09-07 11:58:56 +02:00
546b15bef3 events: add v1.6.1-aio.8 (guest checkout, Stripe return flow, emailed QR tickets)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYwoAkZZmXMMmaBp4WGUBo
2026-09-07 11:54:59 +02:00
Patrick Mulligan
ad8a192059 catalog: access 0.0.2 (fix self-closing tags in admin UI)
Fixes the overlapping dialog inputs — <q-input .../> nested under the UMD
in-DOM template compiler. Kept 0.0.1 for record.

archive: aiolabs/access @ v0.0.2
sha256:  b507d9c7d0a4fd7797a79cd13f9abeb6310ef21dc8530a920657e8f07a86887d
2026-08-07 22:54:42 +02:00
Patrick Mulligan
c82488887c catalog: add access 0.0.1 (NFC door access)
aiolabs/access — authorize Bolt Card taps (boltcards SUN verify) + unlock a
Z-Wave lock via Home Assistant. Pairs with boltcards 1.1.1-aio.2 (/verify).

archive: aiolabs/access @ v0.0.1
sha256:  fff5ef862ac52bbb28dfe47e14295464fc8733a308f0df2b2047d55151636f19
2026-08-07 22:48:31 +02:00
Patrick Mulligan
257e8aca6a catalog: boltcards 1.1.1-aio.2 (access-control verify endpoint)
Adds the /api/v1/verify SUN-check endpoint the aiolabs access extension uses
for door authorization. Kept 1.1.1-aio.1 alongside for rollback.

archive: aiolabs/boltcards @ v1.1.1-aio.2
sha256:  fe7fbbea81f55cb85fcfbeb02e2be905483f170731e33454f1d84349f7f03cf7
2026-08-07 21:55:04 +02:00
Patrick Mulligan
3c65fdd2b3 catalog: add boltcards 1.1.1-aio.1 (tap-to-receive)
aiolabs fork of the lnbits boltcards extension adding a /pay deposit
endpoint (tap a Bolt Card to RECEIVE sats). Consumed by the bitSpire ATM
cash-in flow (aiolabs/bitspire #84).

Fork of upstream v1.1.1 (upstream's config.json lags at 1.1.0, but the
released tag is v1.1.1) → 1.1.1-aio.1.

archive: aiolabs/boltcards @ v1.1.1-aio.1
sha256:  a01287fa7a19292e41e61db0aedab5e996b637689555743c25b764cc7fbe6cf5

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 00:54:34 +02:00
1033755d23 catalog: add chatelet v0.3.0 (public guest endpoints + privacy fix)
Alongside 0.1.0/0.2.0. sha256 3f5fe8a2…821a.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VUQCfdqiLSsFS2jcGnaFD
2026-07-20 01:45:34 +02:00
5c919fff9b catalog: add chatelet v0.2.0 (operator admin UI)
New entry alongside v0.1.0 (not overwritten — 0.1.0 installs need it
resolvable). Archive pinned to v0.2.0 tag (sha256 95291e60…e74).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VUQCfdqiLSsFS2jcGnaFD
2026-07-20 00:49:39 +02:00
ed486f743c catalog: add chatelet v0.1.0 (Nostr-native room rentals)
New aio-original extension. Archive pinned to v0.1.0 tag (sha256
4f96a2c1…c4b1). aio-original, not a fork, so plain vX.Y.Z tag scheme.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VUQCfdqiLSsFS2jcGnaFD
2026-07-19 23:28:45 +02:00
359edb99b2 feat(spirekeeper): add v0.1.4 catalog entry
Since v0.1.3: slim spire seed + carry lnbits_npub (#37), bunker admin
RPC retry fixes (#38), mobile-friendly admin dialogs + fullscreen QR
zoom (#40), and the get_machine_config transport RPC (#42).

Appended alongside the prior entries so instances on older versions
stay resolvable.
2026-07-02 23:55:35 +02:00
d8fed6ff4c spirekeeper: add v0.1.3 (pairing seed embeds a machine-reachable bunker relay)
New entry alongside v0.1.2. Fixes the localhost-relay /pair gotcha: a seed
minted via the Pair UI baked ws://127.0.0.1 (lnbits' internal bunker relay)
into bunker_url, unreachable by the remote ATM → BunkerTimeoutError. Now
defaults bunker_relay to the spire's public event relay. See spirekeeper#35;
design follow-up #36.
2026-06-22 17:22:21 +02:00
656c9775d6 spirekeeper: add v0.1.2 (unpaired-machine npub guards — fixes platform-fee 500 + cassette-consumer crash)
New entry alongside v0.1.1. Fixes the regression where an unpaired machine
(machine_npub NULL, nullable since #29) crashed normalize_public_key(None):
platform-fee update 500 + cassette consumer error-spam. See spirekeeper#33.
Demo upgrades v0.1.1 -> v0.1.2 to clear it (restart lnbits + hard-refresh).
2026-06-22 16:59:10 +02:00
261c147300 spirekeeper: add v0.1.1 (secure cash-in: create_withdraw RPC + cap + bech32 lnurl)
New entry alongside v0.1.0 (instances on the old version keep resolving it).
Bundles spirekeeper#30 (cash-in settlement processing) + #32 (server-side
create_withdraw RPC, max_cash_in_sats cap, bech32 LNURL fix) + #29. Pairs with
aiolabs/withdraw v1.2.2-aio.2 (extra passthrough). See spirekeeper#31.
2026-06-22 16:08:30 +02:00
e3ff933c88 withdraw: add v1.2.2-aio.2 (link extra -> payout passthrough)
New entry alongside -aio.1 (instances on the old version keep resolving
it). Enables bitSpire cash-in settlements: a withdraw link's extra now
rides onto the payout payment so spirekeeper's cash_in listener fires.
See aiolabs/withdraw#3.
2026-06-21 17:29:37 +02:00
2c9be339b3 events: add v1.6.1-aio.6 (monotonic created_at on NIP-52 republish)
New entry alongside aio.5 (not in place) so instances on the prior
version stay resolvable. Fixes the live ticket-count stall: a same-second
republish no longer ties created_at and gets dropped by relays.
aiolabs/events#26 / #27. sha256 of the v1.6.1-aio.6.zip archive pinned.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 14:21:41 +02:00
52587c4f65 libra: add v0.4.0 (admin add-account UI + account-write hardening)
New catalog entry alongside v0.3.0 (kept resolvable for existing installs).
v0.4.0 = aiolabs/libra @ v0.4.0 (merge of #46):
admin add-account UI, server-side Beancount-coherent name validation,
metadata escaping, unconstrained Open directives, duplicate-detection
fix (libra-#48), unconstrained per-user accounts (libra-#49), ledger-only
recovery (libra-#50), entry-id identity (libra-#42).

archive: .../libra/archive/v0.4.0.zip
sha256:  2abf6160e64030b73a57b16c617e33414ef7338772e580b2a3ebb54ac7f833c4

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 12:28:13 +02:00
3dab7a0d13 catalog: add spirekeeper v0.1.0
New aio extension — the v2-bitspire line of satmachineadmin split into
its own repo (aiolabs/spirekeeper). Operator-side admin for bitSpire
ATMs: Nostr-native DCA distribution + settlement. Archive sha256-pinned.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 18:06:03 +02:00
d8763adad5 chore(events): add v1.6.1-aio.5 — signer abstraction + door-scanner stats endpoint
Bumped 1.6.1-aio.3 → 1.6.1-aio.5 (aio.4 skipped; no tagged release at
that version). Catalog now offers both -aio.3 and -aio.5; older
installs stay resolvable per "don't overwrite a version entry in
place".

aiolabs/events#24

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-07 19:15:37 +02:00
c9a3941b9e Add libra v0.3.0 to catalog
Ships split-ledger routing (aiolabs/libra#28 + #29 from PR #32),
settlement net+credit semantics (#33, #41), voided-tx in user-entries
endpoint (#34), and an integration test suite. New entry added
alongside v0.2.2 per "don't overwrite versions" policy.

Live immediately for any host pointing at the manifest URL — operators
click Upgrade in lnbits admin UI to pull the new code.
2026-06-07 16:34:46 +02:00
95dd8995f8 chore(events): add v1.6.1-aio.3 — nostr scanner + admin owner column 2026-05-24 18:57:10 +02:00
e5f4078aea feat(events): add v1.6.1-aio.2 catalog entry
Nostr-driven inventory sync (ticket counts in NIP-52 tags, republish
on every sale), multi-ticket purchases as N independently-scannable
rows on one invoice, GET /tickets/user + polling endpoint, republish-
all / republish-mine admin tools. Co-merges aiolabs/events PR #15 +
PR #16.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 23:14:54 +02:00