2025-10-11 - 2026-10-11
Overview
85 pull requests merged by 1 user
Merged
#180 fix(auth): don't require a Nostr pubkey to be considered logged in
Merged
#179 Ticket waves follow the event's fiat setting
Merged
#177 Let the event form submit and say what is wrong
Merged
#176 Ticket waves: manage them, buy from them, stop lying about totals
Merged
#174 fix(events): stop subtracting sold from amount_tickets
Merged
#171 fix(core): read the routing fee from fee, not the absent fee_msat
Merged
#169 fix(wallet): gate the received-payment toast on status, not absent pending
Merged
#168 fix(wallet): narrow the bolt11 amount section so the build passes
Merged
#166 feat(wallet): denominate invoices in any currency the server accepts
Merged
#165 fix(base): resolve the sats key in price conversions
Merged
#164 fix(wallet): refetch balance and history on resume
Merged
#163 fix(wallet): wire websocket config through module install
Merged
#162 fix(wallet): send amount_msat when paying an amountless invoice
Merged
#161 fix(wallet): read payment status from status, not the unserialized pending
Merged
#160 feat(chatelet): let a guest resume a held-but-unpaid booking
Merged
#159 fix(chatelet): root-relative routes so room deep links and refreshes work
Merged
#158 fix(chatelet): let a min-stay range extend forward (reka span guard)
Merged
#157 fix(chatelet): don't offer a check-in that can't fit a minimum stay
Merged
#156 feat(chatelet): stay calendar, room gallery + house rules, My bookings
Merged
#155 feat(hub): Chatelet tile
Merged
#154 feat(chatelet): book a room and pay by Lightning (slice 2)
Merged
#142 feat(chatelet): guest booking UI — slice 1 (browse + availability)
Merged
#153 feat(events): promo codes — organizer editor and server-validated checkout discount
Merged
#152 fix(events): let the event card shrink below its truncated rows (min-w-0)
Merged
#151 fix(events): resolve the ticket QR logo through @brand-app-logo
Merged
#150 fix(events): pin the sticky buy bar flush above the nav (--bottom-nav-height)
Merged
#149 feat(events): surface the buy-ticket CTA above the description + sticky bar
Merged
#147 feat(events): warn buyers to check their spam folder for the ticket email
Merged
#146 fix(events): let guests default to the card rail in the purchase dialog
Merged
#144 feat(events): guest checkout with email delivery, Stripe return flow, public ticket page
Merged
#139 feat(libra): expense/income form UI fixes
Merged
#138 feat(libra): guide expense description toward categorization
Merged
#131 feat(events): handle free tickets in the purchase flow
Merged
#130 feat(hub): hide standalones not provisioned on this deploy
Merged
#128 feat(layout): re-enable "Back to hub" with a sticky sheet footer
Merged
#127 fix(events): collapse own-event draft + relay copy into one card
Merged
#116 fix(events): clarify scan-tickets "Remaining" stat as "Not scanned"
Merged
#114 feat(ui): UI tweaks round 3
Merged
#119 fix(events): keep event-detail ticket counts live after a purchase
Merged
#115 feat(events): calendar popup respects the selected category filter
Merged
#126 fix(events): publish bookmarks with monotonic created_at (#122)
Merged
#125 fix(events): key the events store by addressable coordinate (#121)
Merged
#124 chore(test): add vitest runner + smoke test
Merged
#113 style(events): frosted-glass calendar popup that shows the feed through it
Merged
#112 fix(events): decrement the live like count on un-like
Merged
#109 fix(wallet): stop double-deducting balance on outgoing payments
Merged
#111 feat(events): real-time favoriting + live like count + post-purchase refresh
Merged
#110 feat(events): calendar date-picker popup, remove calendar page, My Tickets filtering
Merged
#105 feat(ui): cosmetic tweaks — profile pencil, pills, search, ticket count, map icon, avatar trigger, no overlay animations
Merged
#104 feat(branding): per-app banner + per-brand default theme via brand.json
Merged
#103 fix(wallet): accept uppercase QR-scanned BOLT11 invoices on send
Merged
#102 feat(activities): event name on My tickets + organizer on cards
Merged
#91 feat(activities): UI tweaks across feed, detail, hosting, calendar, scan, shell
Merged
#100 feat(nix): lib.mkWebapp accepts extraEnv attr
Merged
#99 fix(nix): pin pnpm bits to flake's own nixpkgs
Merged
#98 feat(nix): flake.nix exposing lib.mkWebapp
Merged
#96 feat(branding): brand kit architecture (Phase 1)
Merged
#94 refactor(events): rename activities module to events + wire VITE_APP_NAME for per-deployment branding
Merged
#93 refactor(libra): redesign transactions list status + type encoding
Merged
#92 feat(libra): show voided transactions in standalone
Merged
#90 feat(webapp): add color scheme switcher with 7 palettes
Merged
#89 fix(activities): surface statsError on the door-scanner page
Merged
#88 feat(base): phase-2 bucket-B migration via signEventViaLnbits
Merged
#87 fix(activities): route ticket scanner through HTTP, not nostr-transport RPC
Merged
#84 chore(api): remove User.prvkey field + thread-through helpers (Q1.2 Option b)
Merged
#83 chore(activities): reroute CreateActivityDialog through TicketApiService.createEvent
Merged
#82 chore(base): delete nostr-metadata-service + retire webapp-side kind-0 broadcast paths
Merged
#81 chore(nostr-feed): delete legacy ScheduledEventService duplicate
Merged
#80 chore(nostr-feed): delete dead-code ReactionService + useReactions duplicates
Merged
#77 feat(activities): hide past events by default + "Past events" filter chip
Merged
#76 feat(activities): backend-truth counts + scanned list, tabs + popup result on Scan Tickets
Merged
#73 feat(activities): organizer ticket scanner over Nostr transport
Merged
#71 feat(activities): ticket purchase + Nostr-driven inventory sync
Merged
#69 feat(activities): notification config on event create + edit
Merged
#68 feat(activities): payment-rails pattern + provider-aware checkout
Merged
#66 fix(activities): stamp local tz offset on event datetimes before submit
Merged
#64 fix(activities): toast on logged-out Create tap instead of opening dialog
Merged
#63 chore(deps): bump nostr-tools to ^2.23.3 to match lnbits
Merged
#62 build: add workbox-window as explicit devDependency
Merged
#61 build: switch from npm to pnpm
Merged
#54 feat(restaurant): customer-facing restaurant bundle (v1)
Merged
#52 feat(layout): adopt unified AppShell across hub + 7 standalones (Phase B)
Merged
#51 feat(layout): unified app-shell primitives (Phase A)
Merged
#44 fix(hub): drop hub PWA install to unblock standalone PWAs (#41)
Merged
#39 feat(market): migrate order DMs to NIP-17 (NIP-44 + NIP-59)
22 issues closed from 1 user
Closed
#143 Ticket total is derived as available + sold — inflates on every organizer edit
Closed
#175 Event lists show duplicate cards when a d-tag exists under more than one pubkey
Closed
#173 MyEventsPage disables the buy button at half capacity (same bug as events#34)
Closed
#170 fee_msat read in core/market/events — the LNbits field is fee
Closed
#122 Use monotonic created_at when publishing replaceable events
Closed
#121 Key the events store by addressable coordinate (kind:pubkey:dtag), not bare d-tag
Closed
#86 Feature Request: When an app is pending, grey it out
Closed
#97 Add flake.nix exposing lib.mkWebapp
Closed
#95 Brand kit architecture: white-label PWA branding
Closed
#79 chore: delete legacy ScheduledEventService (duplicate of TaskService)
Closed
#78 chore: consolidate duplicate ReactionService (base/ vs nostr-feed/)
Closed
#72 Activities feed shows past events with no indication — hide by default + add a "Past events" filter chip
Closed
#59 Roll out client-side image compression to market + profile
Closed
#41 PWA install conflict: hub scope: '/' blocks standalone installs on same origin
Closed
#18 Standalone app: Extract marketplace module as independent PWA
Closed
#26 Adopt standalone app UI patterns in the all-in-one AIO app
Closed
#19 Standalone app: Extract wallet module as independent PWA
Closed
#36 auth: validate URL-supplied token before persisting + tighten guards to require populated user
Closed
#20 Standalone app: Extract chat module as independent PWA
Closed
#38 market: self-heal orphan stalls — re-publish kind-30017 when user has merchant but no stall on relay
Closed
#27 Make event end date optional with sensible defaults
Closed
#8 Market item images load slowly - image optimization may be missing
92 issues created by 1 user
Opened
#1 Feature: Persistent Task List (Work Orders)
Opened
#2 Feature: PIN security for outgoing wallet payments
Opened
#3 Feature: Due Dates for Persistent Tasks
Opened
#4 Feature: Task Rewards (Lightning Bounties)
Opened
#5 Feature: Create invoices in fiat currency (EUR, USD, etc.)
Opened
#6 New device shows notifications for all existing chats
Opened
#7 Discussion: What properties should a task have?
Opened
#8 Market item images load slowly - image optimization may be missing
Opened
#10 Migrate private messaging from NIP-04 to NIP-17
Opened
#11 Security: Harden Nostr private key (prvkey) handling
Opened
#12 Send Lightning invoice to chat contact
Opened
#13 feat(forum): future features (media upload, NIP-72 spaces, bookmarks, profiles, …)
Opened
#14 Optimize .env with domain-based defaults for easier deployment
Opened
#15 forum: add search across posts, comments, and submissions
Opened
#16 Replace LNbits backend with Lightning.Pub
Opened
#17 forum: add NIP-57 zap support to submissions and comments
Opened
#18 Standalone app: Extract marketplace module as independent PWA
Opened
#19 Standalone app: Extract wallet module as independent PWA
Opened
#20 Standalone app: Extract chat module as independent PWA
Opened
#21 Activities: Category badge shows non-category hashtags (e.g. "OrangePillApp")
Opened
#22 Activities: Past events appearing in Upcoming tab
Opened
#23 Clean up: delete atio and cfaun branches after unified main is verified
Opened
#24 CI: auto-compute npmDepsHash on push to main
Opened
#25 Disambiguate task vs activity NIP-52 calendar events on shared relays
Opened
#26 Adopt standalone app UI patterns in the all-in-one AIO app
Opened
#27 Make event end date optional with sensible defaults
Opened
#28 Shared auth across standalone app modules
Opened
#29 Consider keeping CreateActivityDialog for unticketed/unapproved community events
Opened
#30 Add geolocation picker to event creation and map-based event discovery
Opened
#31 Forum: implement Spaces (NIP-72 communities)
Opened
#32 Notifications: per-standalone Nostr-scoped, aggregated by hub
Opened
#33 Adopt the events-style "log in to do this" toast in forum / market / tasks
Opened
#34 Operator-configurable public-vs-private mode per standalone (forum, market, tasks, activities)
Opened
#35 Pre-commit secret-scan hook: false positive on prvkey field accesses
Opened
#36 auth: validate URL-supplied token before persisting + tighten guards to require populated user
Opened
#37 security: add CSP + standard security headers in nginx (demo + prod)
Opened
#38 market: self-heal orphan stalls — re-publish kind-30017 when user has merchant but no stall on relay
Opened
#40 chat: migrate from NIP-04 to NIP-17 (NIP-44 + NIP-59 gift wrap)
Opened
#41 PWA install conflict: hub scope: '/' blocks standalone installs on same origin
Opened
#42 Recurring deep-dive: mine patterns from established open-source Nostr apps
Opened
#43 Centralize hexToUint8Array and other privkey-handling helpers
Opened
#45 Wire currency picker to a real preference store
Opened
#46 Notification badge wiring on standalone bottom-nav profile entry
Opened
#47 Desktop side-rail variant of the unified app shell
Opened
#48 Standalone → hub SSO: token handoff for cross-origin nav back to launcher
Opened
#49 Long-press-to-hub gesture as an alternative to the top-right HubPill
Opened
#50 Remove redundant per-app SettingsPage.vue views
Opened
#53 Review activity-creation affordance against p'a semana — reduce low-effort posts
Opened
#55 Cross-cutting "teams" concept: targeted tasks, scoped budgets, and shared rosters
Opened
#56 tasks: when task-create lands in the webapp, emit ["event-type", "task"] on kind 31922
Opened
#57 tasks: support custom recurrence intervals (every N days/weeks, monthly)
Opened
#58 Cross-standalone aggregator feed (new events, marketplace items, forum posts, …)
Opened
#59 Roll out client-side image compression to market + profile
Opened
#60 Organizer ticket management view (resend email, registration status, refunds)
Opened
#65 forum: post score + highlight missing after page refresh on both list and detail views
Opened
#67 Activity dateDisplay: detail double-renders same-day; cards omit end time
Opened
#70 Standardize 'sat' vs 'sats' currency string end-to-end
Opened
#72 Activities feed shows past events with no indication — hide by default + add a "Past events" filter chip
Opened
#74 Hub vite server crashes on dep-scan: "virtual:pwa-register imported by tasks-app/main.ts could not be resolved"
Opened
#78 chore: consolidate duplicate ReactionService (base/ vs nostr-feed/)
Opened
#79 chore: delete legacy ScheduledEventService (duplicate of TaskService)
Opened
#85 Feature Request: Ability to manually register someone if they've forgotten their ticket
Opened
#86 Feature Request: When an app is pending, grey it out
Opened
#95 Brand kit architecture: white-label PWA branding
Opened
#97 Add flake.nix exposing lib.mkWebapp
Opened
#101 Auto-save profile picture on selection (don't require Update Profile click)
Opened
#106 Activities: free (0-price) tickets attempt an invalid zero-amount invoice
Opened
#107 Activities: support multiple photos on event creation (like market)
Opened
#108 Activities: keywords/tags field on event creation (publish as NIP-52 't' tags)
Opened
#117 Activities: show ticket buyer's username + npub in the hoster scan list
Opened
#118 Explore: collect buyer email at ticket purchase (needs LNbits email/SMTP server)
Opened
#120 Add image cropping to uploads (profile, event, …)
Opened
#121 Key the events store by addressable coordinate (kind:pubkey:dtag), not bare d-tag
Opened
#122 Use monotonic created_at when publishing replaceable events
Opened
#123 Batch nostr subscriptions / profile fetches (subscription grouping)
Opened
#129 Hub: hide standalones disabled on deploy instead of greying them out
Opened
#132 Hub: wire the inactive (deployed-but-greyed) app state end-to-end
Opened
#133 Show an offline/server-unreachable banner so actions don't fail silently
Opened
#134 Cash-on-arrival payment method for event tickets
Opened
#135 Rework or remove the "pending" ticket state
Opened
#136 Event notifications: subscriptions, reminders, updates (infra)
Opened
#137 libra: improve expense description helper text to guide categorization (and add an "Other" account)
Opened
#140 libra: i18n the expense form (AddExpense.vue) to match the income form
Opened
#141 Chatelet guest booking UI — standalone app (Nostr-native)
Opened
#143 Ticket total is derived as available + sold — inflates on every organizer edit
Opened
#145 Events: guest tickets in My Tickets (localStorage) until account claim exists
Opened
#167 Show fiat amounts in wallet transaction history
Opened
#170 fee_msat read in core/market/events — the LNbits field is fee
Opened
#172 Millisatoshi audit: 1000x display error in market checkout, plus two conversion/unit defects
Opened
#173 MyEventsPage disables the buy button at half capacity (same bug as events#34)
Opened
#175 Event lists show duplicate cards when a d-tag exists under more than one pubkey
Opened
#178 Ten dialogs disable submit on vee-validate's meta.valid, which can be false with zero errors