Commit Graph

4994 Commits

Author SHA1 Message Date
Alex Gleason 059dff3686 Add "Don't have Bitcoin?" Cash App prompt to campaign pages 2026-06-25 15:32:00 +03:00
lemon 9bfc3498da Remove unused WLC hero image 2026-06-24 10:02:32 -07:00
lemon 47a35d35cf Make DM backfill progressive and cursor-safe
Keep the fast pooled first render, but merge each read relay's DM backfill
into the visible inbox as soon as that relay finishes instead of waiting for
all relays. Track per-relay sent/received cursors so older pagination cannot
skip dense relay history because another relay returned older sparse events.

Timed-out or failed relays are kept retryable instead of being marked
exhausted, while successful relay cursors unlock deterministic pagination.
Backfilled events still dedupe by id and update latest previews/sort order.
2026-06-23 12:47:44 -07:00
lemon 734be77be7 Render DM inbox fast, then backfill slower relays
Use the shared pooled query for the initial messages page so the inbox keeps
Ditto-style fast first paint with the provider's short eoseTimeout. Page 0 is
marked pending backfill, then a background effect queries each configured read
relay individually, merges those slower results into the same infinite-query
cache entry, and unlocks older-page pagination after backfill completes.

Also update conversation merging so a backfilled newer event updates the row's
latest preview and sort order.
2026-06-23 12:37:34 -07:00
lemon 301309f03c Fetch DMs from every read relay instead of racing the pool
The inbox query went through the shared pool, whose eoseTimeout resolves as
soon as the first relay sends EOSE (+300ms). DMs held only by slower relays
were dropped, so each hard refresh returned a different, incomplete set of
conversations. Fan the kind-4 query out to each configured read relay
individually (Promise.allSettled, bounded by the existing 8s cap) and merge
deduped by event id, so every relay contributes its full set.

The inbox query key now carries the read-relay list; update the send-message
optimistic cache writes to match ['direct-messages', pubkey] by prefix so the
append still lands.
2026-06-23 12:27:00 -07:00
lemon 05c1d1bf39 Hide muted DM conversation immediately on mute
handleMute awaited addMute's relay round-trip (fetch fresh kind 10000 +
publish) before hiding the conversation, leaving the muted thread visible
for a few seconds. Hide the peer optimistically the moment the user
confirms; the relay-backed mute list still reconciles on reload.
2026-06-23 12:22:27 -07:00
lemon cf9535ff39 Add new-chat compose flow to /messages with inline recipient autocomplete
Adds a 'New message' button to the conversation list (and the empty-pane
prompt) that opens a fresh compose pane in the right column instead of a
modal. The pane has a 'To:' field that drives debounced profile search via
useSearchProfiles (name / NIP-05 / npub / nprofile), rendering suggestions
inline beneath the field — no popover. Arrow-key navigation + Enter select a
recipient; choosing one opens the normal thread (existing conversation or a
fresh blank thread). Adds the supporting locale strings across all locales.
2026-06-23 09:26:06 -07:00
lemon a76d53e686 Fix status bubble visibility — use top offset instead of bottom-full
bottom-full anchored the bubble above the avatar block's top edge, which
margin-collapses up into the banner, pushing the bubble off the visible
area. Position it with a top offset within the same coordinate space the
original used, lowered so its tail rests at the banner's bottom edge.
2026-06-23 08:53:37 -07:00
lemon 7e6fe43b86 Polish profile: lower status bubble, plain campaign cards, themed raised total
- Anchor the NIP-38 status bubble to the bottom edge of the banner so it
  no longer overlaps the follow/donate action buttons.
- Drop the founder/verified footer badges from the profile Agora tab so its
  campaign cards render identically to the campaigns page CampaignCard.
- Recolor the 'raised' stat from text-orange-500 to text-primary to match
  bio/profile hyperlink coloring.
2026-06-23 08:50:32 -07:00
lemon 809f4aa7dc Align login back arrow vertically with the dialog close button
The back arrow used top-5 on a size-9 padded button, sitting lower than
the X close button (top-4, size-5 icon). Move it to left-2 top-2 so its
icon center lines up with the X on the opposite side.
2026-06-21 00:13:40 -07:00
lemon c380ef70ae Match login secret-key input and upload button height to submit button
Bump the nsec input and key-file upload icon button to h-12 / size-12 so
they line up with the full-width 'Log in' submit button below them.
2026-06-21 00:11:33 -07:00
lemon 97f5f82b05 Rework login modal: translations, layout, and UX
Overhaul AuthDialog's login step:
- Add translation keys for every previously-hardcoded string (titles,
  buttons, placeholders, status labels, validation/errors) across all
  sixteen locales.
- The secret-key form is no longer collapsible — it's always open and is
  the first option, followed by 'Log in with extension', then a
  text-with-arrow link to the remote-signer step.
- Move the key-file upload icon onto the same row as the nsec input
  (instead of beside the submit button); submit button is now full-width
  below.
- Surface extension-login errors as a destructive toast rather than
  writing them into the nsec input's inline error.
- Replace the centered 'Back' text buttons with a back arrow in the
  top-left of the dialog header.

Also correct AGENTS.md's i18n section: the project ships fifteen
non-English locales (hi, id, sw, tr, zh-Hant were missing from the list).
2026-06-21 00:08:52 -07:00
lemon b01f573bf9 Hide nav language switcher when logged in; swap hero CTA to Verify campaigns
Logged-in users change language via Settings, so the top-nav globe now
appears only when logged out (matching the search icon). On the homepage
hero, replace the 'Explore campaigns' button with 'Verify campaigns' and
order it before 'How it works'. Drop the now-unused exploreCampaigns
locale key across all locales.
2026-06-20 23:55:03 -07:00
lemon 59538e1798 Add search to account dropdown 2026-06-20 23:43:32 -07:00
lemon e132587b6d Add profile message action 2026-06-20 23:40:52 -07:00
lemon c78a7ac089 Match profile group card sizing 2026-06-20 23:30:26 -07:00
lemon 9498411e13 Avoid cramped profile Agora cards 2026-06-20 23:25:11 -07:00
lemon 5e07f72fb8 Refine profile Agora campaign grid 2026-06-20 23:21:46 -07:00
lemon e7ca4cc9b1 Merge profile Agora tabs 2026-06-20 23:13:34 -07:00
lemon 4d148218ac Move profile fields below bio 2026-06-20 22:59:35 -07:00
lemon 716579d91e Simplify profile overflow menu 2026-06-20 22:55:47 -07:00
lemon bba7fb045a Remove profile reaction action 2026-06-20 22:52:14 -07:00
lemon 557063c0f3 Match profile action button heights 2026-06-20 22:50:14 -07:00
lemon 65aeb724a3 Move profile stats above bio 2026-06-20 22:49:26 -07:00
lemon 21306afdb2 Inline raised profile stat 2026-06-20 22:48:20 -07:00
lemon 34b5babc01 Blend verification request button 2026-06-20 22:45:01 -07:00
lemon 43dee910b8 Remove verification request button border 2026-06-20 22:43:22 -07:00
lemon 979cc1d097 Refine verification request button 2026-06-20 22:42:16 -07:00
lemon 00579e5de2 Request verification by message 2026-06-20 22:38:49 -07:00
lemon 978ee5f77e Show verifier statements in messages 2026-06-20 22:32:13 -07:00
lemon 66bc7e80f2 Translate received direct messages 2026-06-20 21:38:56 -07:00
lemon 1b5d2bf771 Filter messages by followed users 2026-06-20 21:22:52 -07:00
lemon 495c2c7ce0 Add message thread header actions 2026-06-20 21:16:08 -07:00
lemon cdf47e2900 Smooth direct message sending 2026-06-20 21:00:08 -07:00
lemon 4d7a7acbae Fix direct message thread decryption 2026-06-20 20:55:49 -07:00
lemon 790787aa43 Remove message count badges 2026-06-20 20:51:16 -07:00
lemon ca972704fb Update messages composer controls 2026-06-20 20:50:25 -07:00
lemon 514db0cc59 Refine message send icon 2026-06-20 20:47:18 -07:00
lemon b34660f7d4 Soften messages input styling 2026-06-20 20:45:48 -07:00
lemon 4e0c97482a Restyle message send icon 2026-06-20 20:43:24 -07:00
lemon bf1770eec2 Unify message pane background 2026-06-20 20:40:54 -07:00
lemon e0f122aaad Remove messages pane borders 2026-06-20 20:37:29 -07:00
lemon b244e9d645 Fix messages viewport overflow 2026-06-20 20:35:50 -07:00
lemon 728a56af3f Search message peers by display name 2026-06-20 20:07:01 -07:00
lemon 5553a31ffa Constrain messages page scrolling 2026-06-20 20:01:03 -07:00
lemon 7a4259db6a Paginate direct messages like feeds 2026-06-20 19:54:24 -07:00
lemon 1e4c0735e6 Redesign and speed up messages page 2026-06-20 19:45:14 -07:00
lemon 2e0defa977 Page direct-message history backwards so old conversations load 2026-06-20 19:38:40 -07:00
lemon 0e75799cf0 Add a NIP-04 direct messages page 2026-06-20 11:35:51 -07:00
mkfain e4b0f9a80d Add a corporate sponsorship page
Add /sponsors, a landing-style page for companies that want to partner
with the platform. Lays out the three ways to get involved: an
unrestricted gift to the Agora Seed Fund (BTC or USD), a matching pool
for an individual campaign, a featured campaign, or a curated list of
campaigns (e.g. political prisoners or women's sovereignty in Africa),
and promoting Agora donations to a customer base as a philanthropic
initiative.

Modeled on AboutPage's section recipe (dark hero, alternating section
backgrounds, hand-rolled cards) and routed under the wide
FundraiserLayout above the /:nip19 catch-all. Adds a Sponsors link to
the site footer. English copy only for now; other locales fall back to
English until the copy settles.
2026-06-19 10:54:13 +03:00