A Nostr client that makes relays a first-class concept
Go to file
Jonathan Staab 98d3897e7c Support more bech32 entities 2023-01-13 04:23:04 -08:00
public Add favicon 2023-01-02 04:34:04 -08:00
src Support more bech32 entities 2023-01-13 04:23:04 -08:00
.ackrc Improve channel management and chunked retrieval of events 2022-11-29 10:21:51 -08:00
.env.local Add alerts page 2022-12-20 14:56:03 -08:00
.env.production Make dufflepud configurable 2022-12-03 12:56:39 -08:00
.eslintrc.cjs Upgrade nostr-tools, add agent 2023-01-06 14:19:59 -08:00
.fdignore First commit 2022-11-22 17:28:33 -08:00
.gitignore Make dufflepud configurable 2022-12-03 12:56:39 -08:00
CNAME Add CNAME file 2022-11-26 21:47:56 -08:00
LICENSE Add license 2022-12-19 08:49:31 -08:00
README.md Support more bech32 entities 2023-01-13 04:23:04 -08:00
index.html Nail down sub/unsub with modal 2022-11-30 09:12:28 -08:00
jsconfig.json First commit 2022-11-22 17:28:33 -08:00
package-lock.json Fix person feeds, move people to dexie for storage 2023-01-12 17:57:41 -08:00
package.json Fix person feeds, move people to dexie for storage 2023-01-12 17:57:41 -08:00
postcss.config.cjs First commit 2022-11-22 17:28:33 -08:00
tailwind.config.cjs Get everything working again 2022-11-30 10:26:58 -08:00
vite.config.js Add sourcemaps 2022-12-05 21:46:40 -08:00

README.md

What is this?

Coracle is a web client for the Nostr protocol. While Nostr is useful for many things, Coracle focuses on providing a high-quality social media experience. Check it out at coracle.social.

Dufflepud is a companion server which you can self-host. It helps Coracle with things like link previews and image uploads.

Coracle is currently in alpha - expect bugs, slow loading times, and rough edges.

If you like Coracle and want to support its development, you can donate sats via Geyser.

Features

Bugs

  • Add CSP
  • Reduce reflow on feeds from new stuff coming in
  • Follow fiatjaf's vision of clients being smart and connecting to recommended relays to fetch content
  • Stack views so scroll position isn't lost on navigation
  • Add notification for slow relays, suggest relays based on network
  • Separating events table into notes/reactions/etc would effectively give us a second index on kind.

Changelog

Current

  • Upgrade nostr-tools
  • Publish user relays using nip 23
  • Use user relays for feeds
  • Publish to user relays + target relays:
  • Add correct recommended relay to tags
  • Support some read/write config on relays page
  • Get real home relays for default pubkeys
  • Add settings storage on nostr, maybe use kind 0?
  • Warn that everything will be cleared on logout
  • Clean up login page to prefer extension, make private key entry "advanced"
  • Do I need to implement re-connecting now?
  • Improve login UX for bootstrap delay. Nostr facts?
  • Revisit pagination. Use bigger timedelta + limit, set earliest seen timestamp when paginating? Handle no results on page.
  • We often get the root as the reply, figure out why that is, compared to astral/damus
  • Alerts still aren't great. Maybe lazy load? We delete old events, so context will disappear and notes will become empty.
  • Only use dexie for alerts rather than all events
    • Load feeds by setting a listener since now, paginating using limit (of 2 maybe), and awaiting context for each page. Listener appends to "newNotes", cursor appends to "notes", load more moves new notes into notes. Use the note originally loaded as the anchor, don't re-process the whole list
  • Close connections that haven't been used in a while
  • Load feeds from network rather than user relays? This could make global feed more useful: global for my relays
  • Release to android with https://svelte-native.technology/docs
  • Compress is taking too long and messing up the ui, maybe use dexie for people?
  • Move people to nprofile via bech32 entity (or redirect from there)

0.2.6

  • Add support for at-mentions in note and reply composition
  • Improve cleanup on logout
  • Move add note button to be available everywhere
  • Fix reporting relay along with tags
  • Add support for bech32 keys
  • Add second order follows to network tab
  • Add favicon and social media preview image
  • Extract urls in person bios
  • Add follow/follower counts

0.2.5

  • Batch load context for feeds

0.2.4

  • Fix reactions - livequery is required in order to listen for changes

0.2.3

  • Fix reactions - we'll show new reactions optimistically to avoid complexity in listeners

0.2.2

  • Show notification for new notes rather than automatically adding them to the feed
  • Improve slow relay pruning by using a timeout for each relay
  • Re-work feed loading - go to network first and fall back to cache to ensure results that are as complete as possible
  • Slightly improved context fetching to reduce subscriptions
  • Split person feeds out into separate components
  • Add timeout in scroller to keep polling for new results
  • Fix fall-through on user badge click on alerts page
  • Fix deletion of old events, be more aggressive

0.2.1

  • Exclude people from search who have no profile data available
  • Speed up note retrieval by sorting first when the filter isn't restrictive
  • Only show a certain number of replies on popular notes, with a link at the bottom showing total replies
  • Refine algorithm for which relays to drop when they don't send an eose. This helps avoid the "we couldn't find this note" error message on the note detail, since we were giving up too early.
  • Improve url detection and shortening

0.2.0

  • Completely re-worked data synchronization layer, moving from naive just-in-time requests to background listeners, loaders, and a local copy stored in dexie. Events and tags, but not people are deleted from the database on logout, and old events are periodically purged.
  • Added alert badge and page.
  • Improved relay page. Suggestions are now taken from
  • Removed chat to keep scope of work smaller. Let me know if you'd like to see that come back.
  • Split tabs out into separate components
  • Removed dispatch, added cmd instead
  • Added image previews in addition to link previews
  • Fixed infinite scrolling
  • Removed cursor/listener abstractions
  • Added some default pubkeys
  • Wait for some, not all relays to send eose to keep things fast
  • General refactoring and bugfixing