From f8f829af2a098bfb006c302aaa3cd3fdc380eed4 Mon Sep 17 00:00:00 2001 From: Padreug Date: Mon, 7 Sep 2026 11:58:56 +0200 Subject: [PATCH] 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 Claude-Session: https://claude.ai/code/session_01EYwoAkZZmXMMmaBp4WGUBo --- extensions.json | 1170 +++++++++++++++++++++++------------------------ 1 file changed, 585 insertions(+), 585 deletions(-) diff --git a/extensions.json b/extensions.json index 6b5bcb3..38a14b9 100644 --- a/extensions.json +++ b/extensions.json @@ -1,587 +1,587 @@ { - "featured": [ - "satmachineclient", - "libra" - ], - "extensions": [ - { - "id": "satmachineadmin", - "repo": "https://git.atitlan.io/aiolabs/satmachineadmin", - "name": "Satoshi Machine Admin", - "min_lnbits_version": "1.4.0", - "version": "0.0.3", - "short_description": "Admin Dashboard for Satoshi Machine", - "icon": "https://git.atitlan.io/aiolabs/satmachineadmin/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/satmachineadmin/archive/v0.0.3.zip", - "hash": "0cf520ee62037298320d8c0caa6f15d89858447d826af53472cb369023eda46d" - }, - { - "id": "satmachineadmin", - "repo": "https://git.atitlan.io/aiolabs/satmachineadmin", - "name": "Satoshi Machine Admin", - "version": "0.0.4", - "short_description": "Admin Dashboard for Satoshi Machine", - "icon": "https://git.atitlan.io/aiolabs/satmachineadmin/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/satmachineadmin/archive/v0.0.4.zip", - "hash": "f5a6e33e6379984964cd0a4b25225770c4356c5c8a62c8e811b712775a180615" - }, - { - "id": "satmachineadmin", - "repo": "https://git.atitlan.io/aiolabs/satmachineadmin", - "name": "Satoshi Machine Admin", - "version": "0.0.5", - "short_description": "Admin Dashboard for Satoshi Machine", - "icon": "https://git.atitlan.io/aiolabs/satmachineadmin/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/satmachineadmin/archive/v0.0.5.zip", - "hash": "a342a349504c25eb99b5d9a45ea88ea6bfcc21d628068dde1b5fda374d01da68" - }, - { - "id": "satmachineclient", - "repo": "https://git.atitlan.io/aiolabs/satmachineclient", - "name": "Satoshi Machine Client", - "version": "0.0.1", - "short_description": "Client Dashboard for Satoshi Machine", - "icon": "https://git.atitlan.io/aiolabs/satmachineclient/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/satmachineclient/archive/v0.0.1.zip", - "hash": "05cf74b0f8a39953ad9c063c40a983d6223ebbfa906f5598b6ebe2c58eccfd9a" - }, - { - "id": "spirekeeper", - "repo": "https://git.atitlan.io/aiolabs/spirekeeper", - "name": "spirekeeper", - "version": "0.1.0", - "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", - "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.0.zip", - "hash": "a3c8dfba98ebe1d7e3de21d40b16c4455a4ab1fda1e7c80504d6ecb0f68bd6bc" - }, - { - "id": "spirekeeper", - "repo": "https://git.atitlan.io/aiolabs/spirekeeper", - "name": "spirekeeper", - "version": "0.1.1", - "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", - "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.1.zip", - "hash": "766685fda379c3028e3d67aea80b7228374194a55e93b93f01d37c8fad973660" - }, - { - "id": "spirekeeper", - "repo": "https://git.atitlan.io/aiolabs/spirekeeper", - "name": "spirekeeper", - "version": "0.1.2", - "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", - "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.2.zip", - "hash": "31c657cf300c229ffc125affd9a582ca140fca920e9c1721764280e3629e9fc1" - }, - { - "id": "spirekeeper", - "repo": "https://git.atitlan.io/aiolabs/spirekeeper", - "name": "spirekeeper", - "version": "0.1.3", - "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", - "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.3.zip", - "hash": "ea08da489704df8f13f0ada21d9461311ca8f9eb62bcef33adaf36d9d20505e9" - }, - { - "id": "spirekeeper", - "repo": "https://git.atitlan.io/aiolabs/spirekeeper", - "name": "spirekeeper", - "version": "0.1.4", - "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", - "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.4.zip", - "hash": "e44e78cfd34c0112afb792730056abc6b3a02dd5309bb48e290800999c469be0" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "0.0.1", - "short_description": "AIO fork of aiolabs/events", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v0.0.1.zip", - "hash": "410ac9c340551aabe88e0dc7393ed30dc7f4703f1345af5e6b02b0ebc5337d52" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "0.0.2", - "short_description": "AIO fork of aiolabs/events", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v0.0.2.zip", - "hash": "4ac140b97b164f81c482cc19da07a79e961685ae146dc89cba6d12e7d5e80716" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.2.1-aio.1", - "short_description": "AIO fork of lnbits/events", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.2.1-aio.1.zip", - "hash": "73fa1f8859d6e776768b0669002701707a423781474a57780bed68f70a2b7841" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.2.1-aio.2", - "short_description": "NIP-52 Nostr publishing, approval workflow, bidirectional sync", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.2.1-aio.2.zip", - "hash": "d20b7c9ee23b5d9ef71528408da94a127a2ef40277b2b30ee7e78e644da55df8" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.3.0-aio.1", - "short_description": "Rebased onto upstream v1.3.0; approval workflow, NIP-52 bidirectional Nostr sync, optional user_id tickets", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.1.zip", - "hash": "d7a5f3110eae5402af2d64a890ea6aa8e112c47dd5ce6299224e0231f0706cb0" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.3.0-aio.2", - "short_description": "Rebased onto upstream v1.3.0; approval workflow, NIP-52 bidirectional Nostr sync, optional user_id tickets", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.2.zip", - "hash": "ccfa652dc0a5ca2474fa138f9ed6af15a33db7f211e3b66cb162bbfe04be2be0" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.3.0-aio.3", - "short_description": "Optional start/end time on events (NIP-52 kind 31923 with unix-timestamp tags)", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.3.zip", - "hash": "f3aa77dce18fd62916963ae92a3e251a64d4385ab9d2afc71e9b719ece69923b" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.3.0-aio.4", - "short_description": "Edit events with re-approval gating + closes self-approve security gap on PUT /events/{id}", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.4.zip", - "hash": "efe38a743291726bedd1d4eace05683e0169c43d30ac0e0e43c8b4c7bdb36cf5" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.3.0-aio.5", - "short_description": "Public auto_approve probe so non-admin webapp users get accurate edit-flow copy", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.5.zip", - "hash": "40c8adcfd31c8ea528e90c6ebf683aaeb6af077a84aa9b1ea9f031c9d99ed690" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.3.0-aio.6", - "short_description": "Fork-migrations split: schema deltas move to migrations_fork.py (requires aiolabs/lnbits with extension_fork loader)", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.6.zip", - "hash": "637e7dfd06dae37143ed91e004e7cd153d6f56c6d3b79a1fae9283eff8e0dbd3" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.6.1-aio.1", - "short_description": "Rebased onto upstream v1.6.1: fiat checkout + email/Nostr ticket notifications + resend-email button. Keeps aio approval workflow, NIP-52 publish, edit gating, fork-migrations split.", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.1.zip", - "hash": "519bbb8b6cd1094b1c4ab8f49236edfe443b544948a78d9098977ddf11954890" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.6.1-aio.2", - "short_description": "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.", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.2.zip", - "hash": "69c1d5bd7000bfc15265bac659ee01c275c0bed314c21fc575d1ac430b7a1082" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.6.1-aio.3", - "short_description": "Organizer ticket scanning over nostr-transport: events_ticket_register + events_list_event_tickets RPCs (signed-event auth, no HTTP roundtrip at the door). Legacy PUT /tickets/register hardened with admin_key + owner check. Admin index shows wallet owner on All Users' Events; Tickets card promoted above it.", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.3.zip", - "hash": "14521ba712ae4ef0f4c8ad70a256ec384aefee7c524913725c550f43e404f227" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.6.1-aio.5", - "short_description": "Signer-abstraction migration: nostr publishing now routes through resolve_for_wallet → opaque NostrSigner (no more account.prvkey reads; works with LocalSigner / RemoteBunkerSigner / ClientSideOnlySigner). New GET /tickets/event/{event_id}/stats endpoint for HTTP-based door-scanner clients (webapp activities scanner).", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.5.zip", - "hash": "01c6e0abc0f1477fd6e517cce6dfc2bc16a0acec746dfdb4a5191f61464f6f9f" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.6.1-aio.6", - "short_description": "Monotonic created_at on NIP-52 republish: a same-second republish (e.g. two ticket sales) no longer ties created_at and get dropped by relays, so clients' open subscriptions receive live ticket-count updates without a reload.", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.6.zip", - "hash": "7fcc13a0882066499ead6afb9be62d42edf5aa2eae1167ae99be3e2feb8aeec6" - }, - { - "id": "events", - "repo": "https://git.atitlan.io/aiolabs/events", - "name": "AIO Events", - "version": "1.6.1-aio.8", - "short_description": "Guest checkout: tickets by name+email (no account) or user_id+email; frontend_url return contract (Stripe success/cancel URLs back to the calling app, origin allow-listed); customer_email locked on Stripe Checkout (needs lnbits >= 59db244); multipart HTML ticket email with embedded QR from new GET /api/v1/qr/{ticket_id}; per-event extra.payment_methods (lightning/fiat) published as tickets_payment_methods.", - "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", - "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.8.zip", - "hash": "9d6600a1612e14eda71de7efa06fb3959d7631d223a84e7355a7f7b9f27a3f2b" - }, - { - "id": "nostrclient", - "repo": "https://git.atitlan.io/aiolabs/nostrclient", - "name": "AIO nostrclient", - "version": "0.0.1", - "short_description": "AIO fork of aiolabs/nostrclient", - "icon": "https://git.atitlan.io/aiolabs/nostrclient/raw/branch/main/static/images/nostr-bitcoin.png", - "archive": "https://git.atitlan.io/aiolabs/nostrclient/archive/v0.0.1.zip", - "hash": "7f0b1861243a10d16d41d17bc6e64616d61c6b299a86f40dc1a0f9cfc7f9725a" - }, - { - "id": "nostrclient", - "repo": "https://git.atitlan.io/aiolabs/nostrclient", - "name": "AIO nostrclient", - "version": "1.2.0-aio.1", - "short_description": "AIO fork of lnbits/nostrclient", - "icon": "https://git.atitlan.io/aiolabs/nostrclient/raw/branch/main/static/images/nostr-bitcoin.png", - "archive": "https://git.atitlan.io/aiolabs/nostrclient/archive/v1.2.0-aio.1.zip", - "hash": "7f0b1861243a10d16d41d17bc6e64616d61c6b299a86f40dc1a0f9cfc7f9725a" - }, - { - "id": "nostrmarket", - "repo": "https://git.atitlan.io/aiolabs/nostrmarket", - "name": "AIO nostrmarket", - "version": "0.0.1", - "short_description": "AIO fork of aiolabs/nostrmarket", - "icon": "https://git.atitlan.io/aiolabs/nostrmarket/raw/branch/main/static/image/bitcoin-shop.png", - "archive": "https://git.atitlan.io/aiolabs/nostrmarket/archive/v0.0.1.zip", - "hash": "7599485232c600c00896caac15c0fdec07aef26d2cce95c9b2df85b9807bf4f3" - }, - { - "id": "nostrmarket", - "repo": "https://git.atitlan.io/aiolabs/nostrmarket", - "name": "AIO nostrmarket", - "version": "1.1.0-aio.1", - "short_description": "AIO fork of lnbits/nostrmarket", - "icon": "https://git.atitlan.io/aiolabs/nostrmarket/raw/branch/main/static/image/bitcoin-shop.png", - "archive": "https://git.atitlan.io/aiolabs/nostrmarket/archive/v1.1.0-aio.1.zip", - "hash": "edfd11c995a091f71f6439038e6d6ca06cd591abea114e6ac306a6ed5854eb6a" - }, - { - "id": "nostrmarket", - "repo": "https://git.atitlan.io/aiolabs/nostrmarket", - "name": "AIO nostrmarket", - "version": "1.1.0-aio.2", - "short_description": "AIO fork of lnbits/nostrmarket", - "icon": "https://git.atitlan.io/aiolabs/nostrmarket/raw/branch/main/static/image/bitcoin-shop.png", - "archive": "https://git.atitlan.io/aiolabs/nostrmarket/archive/v1.1.0-aio.2.zip", - "hash": "35bd9d20ef43a108ad3b6f0f6a64e3ba56a5b9938ebcf4839f8bc72f3058b23d" - }, - { - "id": "nostrmarket", - "repo": "https://git.atitlan.io/aiolabs/nostrmarket", - "name": "AIO nostrmarket", - "version": "1.1.0-aio.3", - "short_description": "AIO fork of lnbits/nostrmarket", - "icon": "https://git.atitlan.io/aiolabs/nostrmarket/raw/branch/main/static/image/bitcoin-shop.png", - "archive": "https://git.atitlan.io/aiolabs/nostrmarket/archive/v1.1.0-aio.3.zip", - "hash": "f887d25768586920b21c564afd526e218f42bb2ce114b5934c182be1dacb9897" - }, - { - "id": "nostrrelay", - "repo": "https://git.atitlan.io/aiolabs/nostrrelay", - "name": "AIO Nostrrelay", - "version": "0.0.2", - "short_description": "AIO fork of aiolabs/nostrrelay", - "icon": "https://git.atitlan.io/aiolabs/nostrrelay/raw/branch/main/static/image/nostrrelay.png", - "archive": "https://git.atitlan.io/aiolabs/nostrrelay/archive/v0.0.2.zip", - "hash": "6e353358314b740679e55e2ff98c7024a97c6df8bf27d1784e8cee448407bebd" - }, - { - "id": "nostrrelay", - "repo": "https://git.atitlan.io/aiolabs/nostrrelay", - "name": "AIO Nostrrelay", - "version": "1.1.0-aio.1", - "short_description": "AIO fork of lnbits/nostrrelay", - "icon": "https://git.atitlan.io/aiolabs/nostrrelay/raw/branch/main/static/image/nostrrelay.png", - "archive": "https://git.atitlan.io/aiolabs/nostrrelay/archive/v1.1.0-aio.1.zip", - "hash": "0826d16b985be4e9199841223ccd6777aa85120fb6f576dc00c159fef37dd61f" - }, - { - "id": "nostrrelay", - "repo": "https://git.atitlan.io/aiolabs/nostrrelay", - "name": "AIO Nostrrelay", - "version": "1.1.0-aio.2", - "short_description": "AIO fork of lnbits/nostrrelay", - "icon": "https://git.atitlan.io/aiolabs/nostrrelay/raw/branch/main/static/image/nostrrelay.png", - "archive": "https://git.atitlan.io/aiolabs/nostrrelay/archive/v1.1.0-aio.2.zip", - "hash": "2f5435b4849b7d1e8f4af456d88ad336f78132d5db0ec5d60efe304034c1c5cc" - }, - { - "id": "withdraw", - "repo": "https://git.atitlan.io/aiolabs/withdraw", - "name": "AIO Withdraw", - "version": "1.2.2-aio.1", - "short_description": "AIO fork of lnbits/withdraw", - "icon": "https://github.com/lnbits/withdraw/raw/main/static/image/lnurl-withdraw.png", - "archive": "https://git.atitlan.io/aiolabs/withdraw/archive/v1.2.2-aio.1.zip", - "hash": "38c9baf92966b6d8bdb13af12cf324cff4bafd19510cd56650d69e864011492d" - }, - { - "id": "withdraw", - "repo": "https://git.atitlan.io/aiolabs/withdraw", - "name": "AIO Withdraw", - "version": "1.2.2-aio.2", - "short_description": "AIO fork of lnbits/withdraw", - "icon": "https://github.com/lnbits/withdraw/raw/main/static/image/lnurl-withdraw.png", - "archive": "https://git.atitlan.io/aiolabs/withdraw/archive/v1.2.2-aio.2.zip", - "hash": "5e55ff7fce738b84e22ac5d5e82aa1a1d32cc76184025da15b95e6c42c8c7a8c" - }, - { - "id": "libra", - "repo": "https://git.atitlan.io/aiolabs/libra", - "name": "Libra", - "version": "0.1.0", - "short_description": "Double-entry accounting for collectives", - "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", - "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.1.0.zip", - "hash": "b3dc77d95047b3ef0733bd2ae761b547bc8d2275cb022ec071a1ab276d9683da" - }, - { - "id": "libra", - "repo": "https://git.atitlan.io/aiolabs/libra", - "name": "Libra", - "version": "0.2.0", - "short_description": "Double-entry accounting for collectives", - "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", - "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.2.0.zip", - "hash": "c40d6378c012358ce1acf6c7d0957a44f04282c68401648b41637005d37ed5f8" - }, - { - "id": "libra", - "repo": "https://git.atitlan.io/aiolabs/libra", - "name": "Libra", - "version": "0.2.1", - "short_description": "Double-entry accounting for collectives", - "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", - "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.2.1.zip", - "hash": "fe0041e11432e671187988d235d19c9dc3608b5a6a023969eeb8c0800c0962f7" - }, - { - "id": "libra", - "repo": "https://git.atitlan.io/aiolabs/libra", - "name": "Libra", - "version": "0.2.2", - "short_description": "Double-entry accounting for collectives", - "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", - "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.2.2.zip", - "hash": "06a02b18437427164c8db4857fe97bac2e7aa768ca818973cb4023b578faf607" - }, - { - "id": "libra", - "repo": "https://git.atitlan.io/aiolabs/libra", - "name": "Libra", - "version": "0.3.0", - "short_description": "Double-entry accounting for collectives", - "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", - "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.3.0.zip", - "hash": "c04c0999576d4ce1fd33a4c5eced1f5d9f6e62065100766fde39e0fe2e96c230" - }, - { - "id": "libra", - "repo": "https://git.atitlan.io/aiolabs/libra", - "name": "Libra", - "version": "0.4.0", - "short_description": "Double-entry accounting for collectives", - "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", - "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.4.0.zip", - "hash": "2abf6160e64030b73a57b16c617e33414ef7338772e580b2a3ebb54ac7f833c4" - }, - { - "id": "lnurlp", - "repo": "https://github.com/lnbits/lnurlp", - "name": "Pay Links", - "version": "1.1.3", - "min_lnbits_version": "1.3.0", - "short_description": "Make reusable LNURL pay links", - "icon": "https://github.com/lnbits/lnurlp/raw/main/static/image/lnurl-pay.png", - "details_link": "https://raw.githubusercontent.com/lnbits/lnurlp/main/config.json", - "archive": "https://github.com/lnbits/lnurlp/archive/refs/tags/v1.1.3.zip", - "hash": "913b6880fd824e801f05ae50ed6f57817c9a580f1ed1b02b435823d5754e1b98", - "max_lnbits_version": "1.4.0" - }, - { - "id": "lnurlp", - "repo": "https://github.com/lnbits/lnurlp", - "name": "Pay Links", - "version": "1.3.0", - "min_lnbits_version": "1.4.0", - "short_description": "Make reusable LNURL pay links", - "icon": "https://github.com/lnbits/lnurlp/raw/main/static/image/lnurl-pay.png", - "details_link": "https://raw.githubusercontent.com/lnbits/lnurlp/main/config.json", - "archive": "https://github.com/lnbits/lnurlp/archive/refs/tags/v1.3.0.zip", - "hash": "71701b5756628fec6d7418192158c647e840e1fbf9a65e6fd2372bc73f626562" - }, - { - "id": "lnurlp", - "repo": "https://github.com/lnbits/lnurlp", - "name": "Pay Links", - "version": "1.2.0", - "min_lnbits_version": "1.4.0", - "short_description": "Make reusable LNURL pay links", - "icon": "https://github.com/lnbits/lnurlp/raw/main/static/image/lnurl-pay.png", - "details_link": "https://raw.githubusercontent.com/lnbits/lnurlp/main/config.json", - "archive": "https://github.com/lnbits/lnurlp/archive/refs/tags/v1.2.0.zip", - "hash": "d3872eb5f65b9e962fc201d6784f94f3fd576284582b980805142a2b3f62d8e8" - }, - { - "id": "lnurlp", - "repo": "https://git.atitlan.io/aiolabs/lnurlp", - "name": "Pay Links", - "min_lnbits_version": "1.4.0", - "version": "1.3.0-aio.2", - "short_description": "Make reusable LNURL pay links", - "icon": "https://git.atitlan.io/aiolabs/lnurlp/raw/branch/main/static/image/lnurl-pay.png", - "archive": "https://git.atitlan.io/aiolabs/lnurlp/archive/v1.3.0-aio.2.zip", - "hash": "7a6428c81d4a23c1a7060fcd12d4bd732c1383c2ee3cd91a228a01fee8170b3c" - }, - { - "id": "splitpayments", - "repo": "https://git.atitlan.io/aiolabs/splitpayments", - "name": "Split Payments", - "min_lnbits_version": "1.3.0", - "version": "1.1.0-aio.1", - "short_description": "Split incoming payments across wallets", - "icon": "https://git.atitlan.io/aiolabs/splitpayments/raw/branch/main/static/image/split-payments.png", - "archive": "https://git.atitlan.io/aiolabs/splitpayments/archive/v1.1.0-aio.1.zip", - "hash": "dcde1f1127810a3b8655e07eb5b4b789e4cc787c8ceee7be2d7f7921edc2df99" - }, - { - "id": "restaurant", - "repo": "https://git.atitlan.io/aiolabs/restaurant", - "name": "Restaurant", - "min_lnbits_version": "1.3.0", - "version": "0.1.0", - "short_description": "Restaurant CMS: menus, modifiers, inventory, orders, KDS, printer. Lightning-native via LNbits, Nostr-published menus (NIP-99) and order DMs (NIP-17).", - "icon": "https://git.atitlan.io/aiolabs/restaurant/raw/branch/main/static/image/restaurant.png", - "archive": "https://git.atitlan.io/aiolabs/restaurant/archive/v0.1.0.zip", - "hash": "4a7284ca485019238d0a05fb7b7b97366a8d04e3343ce2441beb37b55d78fb67" - }, - { - "id": "tasks", - "repo": "https://git.atitlan.io/aiolabs/tasks", - "name": "Tasks", - "min_lnbits_version": "1.4.1", - "version": "0.0.1", - "short_description": "Recurring tasks and chore-tracking, published over Nostr", - "icon": "https://git.atitlan.io/aiolabs/tasks/raw/branch/main/static/image/tasks.png", - "archive": "https://git.atitlan.io/aiolabs/tasks/archive/v0.0.1.zip", - "hash": "0564d3c51fbadc5e4f4a2c547248e954aa6e0fc796cef266304ae47f3a12dc35" - }, - { - "id": "chatelet", - "repo": "https://git.atitlan.io/aiolabs/chatelet", - "name": "Chatelet", - "min_lnbits_version": "1.4.0", - "version": "0.1.0", - "short_description": "Nostr-native room rentals (Airbnb-style) for LNbits", - "icon": "https://git.atitlan.io/aiolabs/chatelet/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/chatelet/archive/v0.1.0.zip", - "hash": "4f96a2c1d8e6d9dd1013aa7c0957de503b97f0582b63afb351cb06d2d714c4b1" - }, - { - "id": "chatelet", - "repo": "https://git.atitlan.io/aiolabs/chatelet", - "name": "Chatelet", - "min_lnbits_version": "1.4.0", - "version": "0.2.0", - "short_description": "Nostr-native room rentals (Airbnb-style) for LNbits", - "icon": "https://git.atitlan.io/aiolabs/chatelet/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/chatelet/archive/v0.2.0.zip", - "hash": "95291e60b77126de40f295bafbfd0b0cf40919d716d2cf88b9f752dfa3c51e74" - }, - { - "id": "chatelet", - "repo": "https://git.atitlan.io/aiolabs/chatelet", - "name": "Chatelet", - "min_lnbits_version": "1.4.0", - "version": "0.3.0", - "short_description": "Nostr-native room rentals (Airbnb-style) for LNbits", - "icon": "https://git.atitlan.io/aiolabs/chatelet/raw/branch/main/static/image/aio.png", - "archive": "https://git.atitlan.io/aiolabs/chatelet/archive/v0.3.0.zip", - "hash": "3f5fe8a26978bd295a158cc0737cb6a802202920287a5e2f642426d0feef821a" - }, - { - "id": "boltcards", - "repo": "https://git.atitlan.io/aiolabs/boltcards", - "name": "Bolt Cards", - "min_lnbits_version": "1.3.0", - "version": "1.1.1-aio.1", - "short_description": "Self custody Bolt Cards with one time LNURLw", - "icon": "https://git.atitlan.io/aiolabs/boltcards/raw/branch/main/static/image/boltcard.png", - "archive": "https://git.atitlan.io/aiolabs/boltcards/archive/v1.1.1-aio.1.zip", - "hash": "a01287fa7a19292e41e61db0aedab5e996b637689555743c25b764cc7fbe6cf5" - }, - { - "id": "boltcards", - "repo": "https://git.atitlan.io/aiolabs/boltcards", - "name": "Bolt Cards", - "min_lnbits_version": "1.3.0", - "version": "1.1.1-aio.2", - "short_description": "Self custody Bolt Cards with one time LNURLw", - "icon": "https://git.atitlan.io/aiolabs/boltcards/raw/branch/main/static/image/boltcard.png", - "archive": "https://git.atitlan.io/aiolabs/boltcards/archive/v1.1.1-aio.2.zip", - "hash": "fe7fbbea81f55cb85fcfbeb02e2be905483f170731e33454f1d84349f7f03cf7" - }, - { - "id": "access", - "repo": "https://git.atitlan.io/aiolabs/access", - "name": "Access", - "min_lnbits_version": "1.3.0", - "version": "0.0.1", - "short_description": "NFC door access — authorize Bolt Card taps and unlock via Home Assistant", - "icon": "https://git.atitlan.io/aiolabs/access/raw/branch/main/static/image/access.png", - "archive": "https://git.atitlan.io/aiolabs/access/archive/v0.0.1.zip", - "hash": "fff5ef862ac52bbb28dfe47e14295464fc8733a308f0df2b2047d55151636f19" - }, - { - "id": "access", - "repo": "https://git.atitlan.io/aiolabs/access", - "name": "Access", - "min_lnbits_version": "1.3.0", - "version": "0.0.2", - "short_description": "NFC door access — authorize Bolt Card taps and unlock via Home Assistant", - "icon": "https://git.atitlan.io/aiolabs/access/raw/branch/main/static/image/access.png", - "archive": "https://git.atitlan.io/aiolabs/access/archive/v0.0.2.zip", - "hash": "b507d9c7d0a4fd7797a79cd13f9abeb6310ef21dc8530a920657e8f07a86887d" - } - ] + "featured": [ + "satmachineclient", + "libra" + ], + "extensions": [ + { + "id": "satmachineadmin", + "repo": "https://git.atitlan.io/aiolabs/satmachineadmin", + "name": "Satoshi Machine Admin", + "min_lnbits_version": "1.4.0", + "version": "0.0.3", + "short_description": "Admin Dashboard for Satoshi Machine", + "icon": "https://git.atitlan.io/aiolabs/satmachineadmin/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/satmachineadmin/archive/v0.0.3.zip", + "hash": "0cf520ee62037298320d8c0caa6f15d89858447d826af53472cb369023eda46d" + }, + { + "id": "satmachineadmin", + "repo": "https://git.atitlan.io/aiolabs/satmachineadmin", + "name": "Satoshi Machine Admin", + "version": "0.0.4", + "short_description": "Admin Dashboard for Satoshi Machine", + "icon": "https://git.atitlan.io/aiolabs/satmachineadmin/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/satmachineadmin/archive/v0.0.4.zip", + "hash": "f5a6e33e6379984964cd0a4b25225770c4356c5c8a62c8e811b712775a180615" + }, + { + "id": "satmachineadmin", + "repo": "https://git.atitlan.io/aiolabs/satmachineadmin", + "name": "Satoshi Machine Admin", + "version": "0.0.5", + "short_description": "Admin Dashboard for Satoshi Machine", + "icon": "https://git.atitlan.io/aiolabs/satmachineadmin/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/satmachineadmin/archive/v0.0.5.zip", + "hash": "a342a349504c25eb99b5d9a45ea88ea6bfcc21d628068dde1b5fda374d01da68" + }, + { + "id": "satmachineclient", + "repo": "https://git.atitlan.io/aiolabs/satmachineclient", + "name": "Satoshi Machine Client", + "version": "0.0.1", + "short_description": "Client Dashboard for Satoshi Machine", + "icon": "https://git.atitlan.io/aiolabs/satmachineclient/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/satmachineclient/archive/v0.0.1.zip", + "hash": "05cf74b0f8a39953ad9c063c40a983d6223ebbfa906f5598b6ebe2c58eccfd9a" + }, + { + "id": "spirekeeper", + "repo": "https://git.atitlan.io/aiolabs/spirekeeper", + "name": "spirekeeper", + "version": "0.1.0", + "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", + "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.0.zip", + "hash": "a3c8dfba98ebe1d7e3de21d40b16c4455a4ab1fda1e7c80504d6ecb0f68bd6bc" + }, + { + "id": "spirekeeper", + "repo": "https://git.atitlan.io/aiolabs/spirekeeper", + "name": "spirekeeper", + "version": "0.1.1", + "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", + "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.1.zip", + "hash": "766685fda379c3028e3d67aea80b7228374194a55e93b93f01d37c8fad973660" + }, + { + "id": "spirekeeper", + "repo": "https://git.atitlan.io/aiolabs/spirekeeper", + "name": "spirekeeper", + "version": "0.1.2", + "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", + "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.2.zip", + "hash": "31c657cf300c229ffc125affd9a582ca140fca920e9c1721764280e3629e9fc1" + }, + { + "id": "spirekeeper", + "repo": "https://git.atitlan.io/aiolabs/spirekeeper", + "name": "spirekeeper", + "version": "0.1.3", + "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", + "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.3.zip", + "hash": "ea08da489704df8f13f0ada21d9461311ca8f9eb62bcef33adaf36d9d20505e9" + }, + { + "id": "spirekeeper", + "repo": "https://git.atitlan.io/aiolabs/spirekeeper", + "name": "spirekeeper", + "version": "0.1.4", + "short_description": "Operator admin for bitSpire ATMs — DCA distribution over Nostr", + "icon": "https://git.atitlan.io/aiolabs/spirekeeper/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/spirekeeper/archive/v0.1.4.zip", + "hash": "e44e78cfd34c0112afb792730056abc6b3a02dd5309bb48e290800999c469be0" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "0.0.1", + "short_description": "AIO fork of aiolabs/events", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v0.0.1.zip", + "hash": "410ac9c340551aabe88e0dc7393ed30dc7f4703f1345af5e6b02b0ebc5337d52" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "0.0.2", + "short_description": "AIO fork of aiolabs/events", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v0.0.2.zip", + "hash": "4ac140b97b164f81c482cc19da07a79e961685ae146dc89cba6d12e7d5e80716" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.2.1-aio.1", + "short_description": "AIO fork of lnbits/events", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.2.1-aio.1.zip", + "hash": "73fa1f8859d6e776768b0669002701707a423781474a57780bed68f70a2b7841" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.2.1-aio.2", + "short_description": "NIP-52 Nostr publishing, approval workflow, bidirectional sync", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.2.1-aio.2.zip", + "hash": "d20b7c9ee23b5d9ef71528408da94a127a2ef40277b2b30ee7e78e644da55df8" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.3.0-aio.1", + "short_description": "Rebased onto upstream v1.3.0; approval workflow, NIP-52 bidirectional Nostr sync, optional user_id tickets", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.1.zip", + "hash": "d7a5f3110eae5402af2d64a890ea6aa8e112c47dd5ce6299224e0231f0706cb0" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.3.0-aio.2", + "short_description": "Rebased onto upstream v1.3.0; approval workflow, NIP-52 bidirectional Nostr sync, optional user_id tickets", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.2.zip", + "hash": "ccfa652dc0a5ca2474fa138f9ed6af15a33db7f211e3b66cb162bbfe04be2be0" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.3.0-aio.3", + "short_description": "Optional start/end time on events (NIP-52 kind 31923 with unix-timestamp tags)", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.3.zip", + "hash": "f3aa77dce18fd62916963ae92a3e251a64d4385ab9d2afc71e9b719ece69923b" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.3.0-aio.4", + "short_description": "Edit events with re-approval gating + closes self-approve security gap on PUT /events/{id}", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.4.zip", + "hash": "efe38a743291726bedd1d4eace05683e0169c43d30ac0e0e43c8b4c7bdb36cf5" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.3.0-aio.5", + "short_description": "Public auto_approve probe so non-admin webapp users get accurate edit-flow copy", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.5.zip", + "hash": "40c8adcfd31c8ea528e90c6ebf683aaeb6af077a84aa9b1ea9f031c9d99ed690" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.3.0-aio.6", + "short_description": "Fork-migrations split: schema deltas move to migrations_fork.py (requires aiolabs/lnbits with extension_fork loader)", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.3.0-aio.6.zip", + "hash": "637e7dfd06dae37143ed91e004e7cd153d6f56c6d3b79a1fae9283eff8e0dbd3" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.6.1-aio.1", + "short_description": "Rebased onto upstream v1.6.1: fiat checkout + email/Nostr ticket notifications + resend-email button. Keeps aio approval workflow, NIP-52 publish, edit gating, fork-migrations split.", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.1.zip", + "hash": "519bbb8b6cd1094b1c4ab8f49236edfe443b544948a78d9098977ddf11954890" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.6.1-aio.2", + "short_description": "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.", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.2.zip", + "hash": "69c1d5bd7000bfc15265bac659ee01c275c0bed314c21fc575d1ac430b7a1082" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.6.1-aio.3", + "short_description": "Organizer ticket scanning over nostr-transport: events_ticket_register + events_list_event_tickets RPCs (signed-event auth, no HTTP roundtrip at the door). Legacy PUT /tickets/register hardened with admin_key + owner check. Admin index shows wallet owner on All Users' Events; Tickets card promoted above it.", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.3.zip", + "hash": "14521ba712ae4ef0f4c8ad70a256ec384aefee7c524913725c550f43e404f227" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.6.1-aio.5", + "short_description": "Signer-abstraction migration: nostr publishing now routes through resolve_for_wallet → opaque NostrSigner (no more account.prvkey reads; works with LocalSigner / RemoteBunkerSigner / ClientSideOnlySigner). New GET /tickets/event/{event_id}/stats endpoint for HTTP-based door-scanner clients (webapp activities scanner).", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.5.zip", + "hash": "01c6e0abc0f1477fd6e517cce6dfc2bc16a0acec746dfdb4a5191f61464f6f9f" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.6.1-aio.6", + "short_description": "Monotonic created_at on NIP-52 republish: a same-second republish (e.g. two ticket sales) no longer ties created_at and get dropped by relays, so clients' open subscriptions receive live ticket-count updates without a reload.", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.6.zip", + "hash": "7fcc13a0882066499ead6afb9be62d42edf5aa2eae1167ae99be3e2feb8aeec6" + }, + { + "id": "events", + "repo": "https://git.atitlan.io/aiolabs/events", + "name": "AIO Events", + "version": "1.6.1-aio.8", + "short_description": "Guest checkout: tickets by name+email (no account) or user_id+email; frontend_url return contract (Stripe success/cancel URLs back to the calling app, origin allow-listed); customer_email locked on Stripe Checkout (needs lnbits >= 59db244); multipart HTML ticket email with embedded QR from new GET /api/v1/qr/{ticket_id}; per-event extra.payment_methods (lightning/fiat) published as tickets_payment_methods.", + "icon": "https://git.atitlan.io/aiolabs/events/raw/branch/main/static/image/events.png", + "archive": "https://git.atitlan.io/aiolabs/events/archive/v1.6.1-aio.8.zip", + "hash": "9d6600a1612e14eda71de7efa06fb3959d7631d223a84e7355a7f7b9f27a3f2b" + }, + { + "id": "nostrclient", + "repo": "https://git.atitlan.io/aiolabs/nostrclient", + "name": "AIO nostrclient", + "version": "0.0.1", + "short_description": "AIO fork of aiolabs/nostrclient", + "icon": "https://git.atitlan.io/aiolabs/nostrclient/raw/branch/main/static/images/nostr-bitcoin.png", + "archive": "https://git.atitlan.io/aiolabs/nostrclient/archive/v0.0.1.zip", + "hash": "7f0b1861243a10d16d41d17bc6e64616d61c6b299a86f40dc1a0f9cfc7f9725a" + }, + { + "id": "nostrclient", + "repo": "https://git.atitlan.io/aiolabs/nostrclient", + "name": "AIO nostrclient", + "version": "1.2.0-aio.1", + "short_description": "AIO fork of lnbits/nostrclient", + "icon": "https://git.atitlan.io/aiolabs/nostrclient/raw/branch/main/static/images/nostr-bitcoin.png", + "archive": "https://git.atitlan.io/aiolabs/nostrclient/archive/v1.2.0-aio.1.zip", + "hash": "7f0b1861243a10d16d41d17bc6e64616d61c6b299a86f40dc1a0f9cfc7f9725a" + }, + { + "id": "nostrmarket", + "repo": "https://git.atitlan.io/aiolabs/nostrmarket", + "name": "AIO nostrmarket", + "version": "0.0.1", + "short_description": "AIO fork of aiolabs/nostrmarket", + "icon": "https://git.atitlan.io/aiolabs/nostrmarket/raw/branch/main/static/image/bitcoin-shop.png", + "archive": "https://git.atitlan.io/aiolabs/nostrmarket/archive/v0.0.1.zip", + "hash": "7599485232c600c00896caac15c0fdec07aef26d2cce95c9b2df85b9807bf4f3" + }, + { + "id": "nostrmarket", + "repo": "https://git.atitlan.io/aiolabs/nostrmarket", + "name": "AIO nostrmarket", + "version": "1.1.0-aio.1", + "short_description": "AIO fork of lnbits/nostrmarket", + "icon": "https://git.atitlan.io/aiolabs/nostrmarket/raw/branch/main/static/image/bitcoin-shop.png", + "archive": "https://git.atitlan.io/aiolabs/nostrmarket/archive/v1.1.0-aio.1.zip", + "hash": "edfd11c995a091f71f6439038e6d6ca06cd591abea114e6ac306a6ed5854eb6a" + }, + { + "id": "nostrmarket", + "repo": "https://git.atitlan.io/aiolabs/nostrmarket", + "name": "AIO nostrmarket", + "version": "1.1.0-aio.2", + "short_description": "AIO fork of lnbits/nostrmarket", + "icon": "https://git.atitlan.io/aiolabs/nostrmarket/raw/branch/main/static/image/bitcoin-shop.png", + "archive": "https://git.atitlan.io/aiolabs/nostrmarket/archive/v1.1.0-aio.2.zip", + "hash": "35bd9d20ef43a108ad3b6f0f6a64e3ba56a5b9938ebcf4839f8bc72f3058b23d" + }, + { + "id": "nostrmarket", + "repo": "https://git.atitlan.io/aiolabs/nostrmarket", + "name": "AIO nostrmarket", + "version": "1.1.0-aio.3", + "short_description": "AIO fork of lnbits/nostrmarket", + "icon": "https://git.atitlan.io/aiolabs/nostrmarket/raw/branch/main/static/image/bitcoin-shop.png", + "archive": "https://git.atitlan.io/aiolabs/nostrmarket/archive/v1.1.0-aio.3.zip", + "hash": "f887d25768586920b21c564afd526e218f42bb2ce114b5934c182be1dacb9897" + }, + { + "id": "nostrrelay", + "repo": "https://git.atitlan.io/aiolabs/nostrrelay", + "name": "AIO Nostrrelay", + "version": "0.0.2", + "short_description": "AIO fork of aiolabs/nostrrelay", + "icon": "https://git.atitlan.io/aiolabs/nostrrelay/raw/branch/main/static/image/nostrrelay.png", + "archive": "https://git.atitlan.io/aiolabs/nostrrelay/archive/v0.0.2.zip", + "hash": "6e353358314b740679e55e2ff98c7024a97c6df8bf27d1784e8cee448407bebd" + }, + { + "id": "nostrrelay", + "repo": "https://git.atitlan.io/aiolabs/nostrrelay", + "name": "AIO Nostrrelay", + "version": "1.1.0-aio.1", + "short_description": "AIO fork of lnbits/nostrrelay", + "icon": "https://git.atitlan.io/aiolabs/nostrrelay/raw/branch/main/static/image/nostrrelay.png", + "archive": "https://git.atitlan.io/aiolabs/nostrrelay/archive/v1.1.0-aio.1.zip", + "hash": "0826d16b985be4e9199841223ccd6777aa85120fb6f576dc00c159fef37dd61f" + }, + { + "id": "nostrrelay", + "repo": "https://git.atitlan.io/aiolabs/nostrrelay", + "name": "AIO Nostrrelay", + "version": "1.1.0-aio.2", + "short_description": "AIO fork of lnbits/nostrrelay", + "icon": "https://git.atitlan.io/aiolabs/nostrrelay/raw/branch/main/static/image/nostrrelay.png", + "archive": "https://git.atitlan.io/aiolabs/nostrrelay/archive/v1.1.0-aio.2.zip", + "hash": "2f5435b4849b7d1e8f4af456d88ad336f78132d5db0ec5d60efe304034c1c5cc" + }, + { + "id": "withdraw", + "repo": "https://git.atitlan.io/aiolabs/withdraw", + "name": "AIO Withdraw", + "version": "1.2.2-aio.1", + "short_description": "AIO fork of lnbits/withdraw", + "icon": "https://github.com/lnbits/withdraw/raw/main/static/image/lnurl-withdraw.png", + "archive": "https://git.atitlan.io/aiolabs/withdraw/archive/v1.2.2-aio.1.zip", + "hash": "38c9baf92966b6d8bdb13af12cf324cff4bafd19510cd56650d69e864011492d" + }, + { + "id": "withdraw", + "repo": "https://git.atitlan.io/aiolabs/withdraw", + "name": "AIO Withdraw", + "version": "1.2.2-aio.2", + "short_description": "AIO fork of lnbits/withdraw", + "icon": "https://github.com/lnbits/withdraw/raw/main/static/image/lnurl-withdraw.png", + "archive": "https://git.atitlan.io/aiolabs/withdraw/archive/v1.2.2-aio.2.zip", + "hash": "5e55ff7fce738b84e22ac5d5e82aa1a1d32cc76184025da15b95e6c42c8c7a8c" + }, + { + "id": "libra", + "repo": "https://git.atitlan.io/aiolabs/libra", + "name": "Libra", + "version": "0.1.0", + "short_description": "Double-entry accounting for collectives", + "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", + "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.1.0.zip", + "hash": "b3dc77d95047b3ef0733bd2ae761b547bc8d2275cb022ec071a1ab276d9683da" + }, + { + "id": "libra", + "repo": "https://git.atitlan.io/aiolabs/libra", + "name": "Libra", + "version": "0.2.0", + "short_description": "Double-entry accounting for collectives", + "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", + "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.2.0.zip", + "hash": "c40d6378c012358ce1acf6c7d0957a44f04282c68401648b41637005d37ed5f8" + }, + { + "id": "libra", + "repo": "https://git.atitlan.io/aiolabs/libra", + "name": "Libra", + "version": "0.2.1", + "short_description": "Double-entry accounting for collectives", + "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", + "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.2.1.zip", + "hash": "fe0041e11432e671187988d235d19c9dc3608b5a6a023969eeb8c0800c0962f7" + }, + { + "id": "libra", + "repo": "https://git.atitlan.io/aiolabs/libra", + "name": "Libra", + "version": "0.2.2", + "short_description": "Double-entry accounting for collectives", + "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", + "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.2.2.zip", + "hash": "06a02b18437427164c8db4857fe97bac2e7aa768ca818973cb4023b578faf607" + }, + { + "id": "libra", + "repo": "https://git.atitlan.io/aiolabs/libra", + "name": "Libra", + "version": "0.3.0", + "short_description": "Double-entry accounting for collectives", + "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", + "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.3.0.zip", + "hash": "c04c0999576d4ce1fd33a4c5eced1f5d9f6e62065100766fde39e0fe2e96c230" + }, + { + "id": "libra", + "repo": "https://git.atitlan.io/aiolabs/libra", + "name": "Libra", + "version": "0.4.0", + "short_description": "Double-entry accounting for collectives", + "icon": "https://git.atitlan.io/aiolabs/libra/raw/branch/main/static/image/libra.png", + "archive": "https://git.atitlan.io/aiolabs/libra/archive/v0.4.0.zip", + "hash": "2abf6160e64030b73a57b16c617e33414ef7338772e580b2a3ebb54ac7f833c4" + }, + { + "id": "lnurlp", + "repo": "https://github.com/lnbits/lnurlp", + "name": "Pay Links", + "version": "1.1.3", + "min_lnbits_version": "1.3.0", + "short_description": "Make reusable LNURL pay links", + "icon": "https://github.com/lnbits/lnurlp/raw/main/static/image/lnurl-pay.png", + "details_link": "https://raw.githubusercontent.com/lnbits/lnurlp/main/config.json", + "archive": "https://github.com/lnbits/lnurlp/archive/refs/tags/v1.1.3.zip", + "hash": "913b6880fd824e801f05ae50ed6f57817c9a580f1ed1b02b435823d5754e1b98", + "max_lnbits_version": "1.4.0" + }, + { + "id": "lnurlp", + "repo": "https://github.com/lnbits/lnurlp", + "name": "Pay Links", + "version": "1.3.0", + "min_lnbits_version": "1.4.0", + "short_description": "Make reusable LNURL pay links", + "icon": "https://github.com/lnbits/lnurlp/raw/main/static/image/lnurl-pay.png", + "details_link": "https://raw.githubusercontent.com/lnbits/lnurlp/main/config.json", + "archive": "https://github.com/lnbits/lnurlp/archive/refs/tags/v1.3.0.zip", + "hash": "71701b5756628fec6d7418192158c647e840e1fbf9a65e6fd2372bc73f626562" + }, + { + "id": "lnurlp", + "repo": "https://github.com/lnbits/lnurlp", + "name": "Pay Links", + "version": "1.2.0", + "min_lnbits_version": "1.4.0", + "short_description": "Make reusable LNURL pay links", + "icon": "https://github.com/lnbits/lnurlp/raw/main/static/image/lnurl-pay.png", + "details_link": "https://raw.githubusercontent.com/lnbits/lnurlp/main/config.json", + "archive": "https://github.com/lnbits/lnurlp/archive/refs/tags/v1.2.0.zip", + "hash": "d3872eb5f65b9e962fc201d6784f94f3fd576284582b980805142a2b3f62d8e8" + }, + { + "id": "lnurlp", + "repo": "https://git.atitlan.io/aiolabs/lnurlp", + "name": "Pay Links", + "min_lnbits_version": "1.4.0", + "version": "1.3.0-aio.2", + "short_description": "Make reusable LNURL pay links", + "icon": "https://git.atitlan.io/aiolabs/lnurlp/raw/branch/main/static/image/lnurl-pay.png", + "archive": "https://git.atitlan.io/aiolabs/lnurlp/archive/v1.3.0-aio.2.zip", + "hash": "7a6428c81d4a23c1a7060fcd12d4bd732c1383c2ee3cd91a228a01fee8170b3c" + }, + { + "id": "splitpayments", + "repo": "https://git.atitlan.io/aiolabs/splitpayments", + "name": "Split Payments", + "min_lnbits_version": "1.3.0", + "version": "1.1.0-aio.1", + "short_description": "Split incoming payments across wallets", + "icon": "https://git.atitlan.io/aiolabs/splitpayments/raw/branch/main/static/image/split-payments.png", + "archive": "https://git.atitlan.io/aiolabs/splitpayments/archive/v1.1.0-aio.1.zip", + "hash": "dcde1f1127810a3b8655e07eb5b4b789e4cc787c8ceee7be2d7f7921edc2df99" + }, + { + "id": "restaurant", + "repo": "https://git.atitlan.io/aiolabs/restaurant", + "name": "Restaurant", + "min_lnbits_version": "1.3.0", + "version": "0.1.0", + "short_description": "Restaurant CMS: menus, modifiers, inventory, orders, KDS, printer. Lightning-native via LNbits, Nostr-published menus (NIP-99) and order DMs (NIP-17).", + "icon": "https://git.atitlan.io/aiolabs/restaurant/raw/branch/main/static/image/restaurant.png", + "archive": "https://git.atitlan.io/aiolabs/restaurant/archive/v0.1.0.zip", + "hash": "4a7284ca485019238d0a05fb7b7b97366a8d04e3343ce2441beb37b55d78fb67" + }, + { + "id": "tasks", + "repo": "https://git.atitlan.io/aiolabs/tasks", + "name": "Tasks", + "min_lnbits_version": "1.4.1", + "version": "0.0.1", + "short_description": "Recurring tasks and chore-tracking, published over Nostr", + "icon": "https://git.atitlan.io/aiolabs/tasks/raw/branch/main/static/image/tasks.png", + "archive": "https://git.atitlan.io/aiolabs/tasks/archive/v0.0.1.zip", + "hash": "0564d3c51fbadc5e4f4a2c547248e954aa6e0fc796cef266304ae47f3a12dc35" + }, + { + "id": "chatelet", + "repo": "https://git.atitlan.io/aiolabs/chatelet", + "name": "Chatelet", + "min_lnbits_version": "1.4.0", + "version": "0.1.0", + "short_description": "Nostr-native room rentals (Airbnb-style) for LNbits", + "icon": "https://git.atitlan.io/aiolabs/chatelet/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/chatelet/archive/v0.1.0.zip", + "hash": "4f96a2c1d8e6d9dd1013aa7c0957de503b97f0582b63afb351cb06d2d714c4b1" + }, + { + "id": "chatelet", + "repo": "https://git.atitlan.io/aiolabs/chatelet", + "name": "Chatelet", + "min_lnbits_version": "1.4.0", + "version": "0.2.0", + "short_description": "Nostr-native room rentals (Airbnb-style) for LNbits", + "icon": "https://git.atitlan.io/aiolabs/chatelet/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/chatelet/archive/v0.2.0.zip", + "hash": "95291e60b77126de40f295bafbfd0b0cf40919d716d2cf88b9f752dfa3c51e74" + }, + { + "id": "chatelet", + "repo": "https://git.atitlan.io/aiolabs/chatelet", + "name": "Chatelet", + "min_lnbits_version": "1.4.0", + "version": "0.3.0", + "short_description": "Nostr-native room rentals (Airbnb-style) for LNbits", + "icon": "https://git.atitlan.io/aiolabs/chatelet/raw/branch/main/static/image/aio.png", + "archive": "https://git.atitlan.io/aiolabs/chatelet/archive/v0.3.0.zip", + "hash": "3f5fe8a26978bd295a158cc0737cb6a802202920287a5e2f642426d0feef821a" + }, + { + "id": "boltcards", + "repo": "https://git.atitlan.io/aiolabs/boltcards", + "name": "Bolt Cards", + "min_lnbits_version": "1.3.0", + "version": "1.1.1-aio.1", + "short_description": "Self custody Bolt Cards with one time LNURLw", + "icon": "https://git.atitlan.io/aiolabs/boltcards/raw/branch/main/static/image/boltcard.png", + "archive": "https://git.atitlan.io/aiolabs/boltcards/archive/v1.1.1-aio.1.zip", + "hash": "a01287fa7a19292e41e61db0aedab5e996b637689555743c25b764cc7fbe6cf5" + }, + { + "id": "boltcards", + "repo": "https://git.atitlan.io/aiolabs/boltcards", + "name": "Bolt Cards", + "min_lnbits_version": "1.3.0", + "version": "1.1.1-aio.2", + "short_description": "Self custody Bolt Cards with one time LNURLw", + "icon": "https://git.atitlan.io/aiolabs/boltcards/raw/branch/main/static/image/boltcard.png", + "archive": "https://git.atitlan.io/aiolabs/boltcards/archive/v1.1.1-aio.2.zip", + "hash": "fe7fbbea81f55cb85fcfbeb02e2be905483f170731e33454f1d84349f7f03cf7" + }, + { + "id": "access", + "repo": "https://git.atitlan.io/aiolabs/access", + "name": "Access", + "min_lnbits_version": "1.3.0", + "version": "0.0.1", + "short_description": "NFC door access — authorize Bolt Card taps and unlock via Home Assistant", + "icon": "https://git.atitlan.io/aiolabs/access/raw/branch/main/static/image/access.png", + "archive": "https://git.atitlan.io/aiolabs/access/archive/v0.0.1.zip", + "hash": "fff5ef862ac52bbb28dfe47e14295464fc8733a308f0df2b2047d55151636f19" + }, + { + "id": "access", + "repo": "https://git.atitlan.io/aiolabs/access", + "name": "Access", + "min_lnbits_version": "1.3.0", + "version": "0.0.2", + "short_description": "NFC door access — authorize Bolt Card taps and unlock via Home Assistant", + "icon": "https://git.atitlan.io/aiolabs/access/raw/branch/main/static/image/access.png", + "archive": "https://git.atitlan.io/aiolabs/access/archive/v0.0.2.zip", + "hash": "b507d9c7d0a4fd7797a79cd13f9abeb6310ef21dc8530a920657e8f07a86887d" + } + ] }