Commit graph

8 commits

Author SHA1 Message Date
34f989eedb Merge pull request 'feat: operator settings, guest booking list, card checkout' (#22) from feat/fiat-checkout into main
Reviewed-on: #22
2026-09-21 09:12:16 +00:00
f7e0d51fd6 chore(release): v0.5.0
#20 restores check_in/check_out on AvailabilityQuery (v0.4.0 shipped
the availability endpoint broken); #21 adds the keyless
/public/rooms/{id}/unavailable feed for the guest calendar.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 11:06:16 +02:00
0dad30b648 feat: card rail via LNbits fiat providers (Stripe), per operator
A guest may pay a fiat-priced room by card when its owner has opted in and
LNbits core has a fiat provider for that user — resolved through
settings.get_fiat_providers_for_user(owner), the seam lnbits#67's per-user
Stripe Connect credentials will plug into; chatelet stores no credentials.

Both rails now go through create_payment_request: Lightning unchanged
(sats, deposit_sat), card charges the same deposit share of the fiat price
in the room's currency with extra.checkout parameterising the hosted
Stripe page — success/cancel return to {frontend}/chatelet/{room}?checkout=…
&booking=<id>, customer_email, line item, metadata. frontend_url is
allow-listed against the instance's trusted origins (ported from events)
and resolved before the hold so a refused rail never leaves a dead hold.
Core settles the Stripe webhook onto the same invoice queue, so
tasks.on_invoice_paid confirms card bookings unchanged.

BookingRequestData gains payment_method / fiat_provider / frontend_url;
BookingQuote gains fiat_payment_request / fiat_provider / is_fiat and a
nullable payment_request. RPC chatelet_booking_request passes the fields
through. min_lnbits_version → 1.4.1 (events' floor for these APIs).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 12:25:31 +02:00
b41cfac691 chore(release): v0.4.0
Keyless public booking read-back (#18, #19) for the webapp's booking
dialog.
2026-09-15 23:53:16 +02:00
6fa7774c9f chore: bump version 0.2.0 -> 0.3.0 (public guest endpoints)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VUQCfdqiLSsFS2jcGnaFD
2026-07-20 01:39:39 +02:00
363f78eb70 chore: bump version 0.1.0 -> 0.2.0 (operator admin UI)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VUQCfdqiLSsFS2jcGnaFD
2026-07-20 00:44:10 +02:00
e1f1629662 chore: add extension icon + fix broken tile reference
config.json tile pointed at a non-existent chatelet.png. Add the shared aio
logo (static/image/aio.png) and point the tile at it — matches the fleet
convention (satmachineadmin/spirekeeper) and gives the catalog a valid icon.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VUQCfdqiLSsFS2jcGnaFD
2026-07-19 23:15:05 +02:00
c756ac7cf6 chore: scaffold chatelet LNbits extension
Nostr-native room rentals (Airbnb-style) for the castle. Establishes the
extension manifest, license, README with the design overview, and static
+ template placeholders. No booking logic yet — subsequent commits build
the model, schema, arbiter, Nostr layer, API, tasks, and wiring bottom-up.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VUQCfdqiLSsFS2jcGnaFD
2026-07-19 00:16:23 +02:00