Giter VIP home page Giter VIP logo

coracle's People

Contributors

alan-ac7 avatar brugeman avatar dtonon avatar fiatjaf avatar fishcakeday avatar gourcetools avatar katokishin avatar kornpow avatar morkowski avatar nostrband avatar pablof7z avatar quentintaranpino avatar staab avatar victorieeman avatar w3irdrobot avatar zenentreadwell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

coracle's Issues

Requesting input on NIP-23

Hey there, NIP-23 is at a bit of a standstill. We need some input from client developers. The NIP has taken a turn as of a few days ago with some proposed simplifications. Would be extremely helpful if you provided your input.

nostr-protocol/nips#32 (comment)

Thanks!

Show WoT distance on profiles

When "mentioning" somebody, the suggested profiles don't indicate that I'm following them although I suspect that's the filter. It would be nice to mark direct follows as such here and everywhere else. As a bonus, seeing if people are follows of follows would also be great.

I could not provoke the listing of impersonators now but in this example:

Screenshot from 2023-06-11 16-42-24

I got two "Leo"s and very little information to judge by which of them I meant to mention. I do follow a "Leo" but I could not tell which of those two it is. It turns out to be the first, which is good but I don't know if that is random or by design.

Using the coracle search feature, I also find two Leo accounts and one is marked as followed by me, which is good. The other does appear first in the list though and it is a different Leo than the other I found in the mention feature.

Edit: Search now lists 4 Leo, now including that second Leo I got in my mention list.

Solve messaging

A few different possibilities here:

  • Link to other apps
  • Embed other apps (e.g. blowater)
  • Prioritize the feature

It's not a huge feature, but it is a drag, and not really the main focus of Coracle.

Give users more control over which relays to connect

I had look at the developer-tool's console while Coracle loads my feed, and found Coracle trying to connect all the relays it knows, regardless of my relay configuration.

I suppose it is intended to reduce delays for fetching replies, but in general I don't believe it a good idea in several reasons like:

  • It increases the CPU and bandwidth usages
  • Most of connections end up with being useless, especially if you use aggregating relays like filter.nostr.wine
  • It seems to conflict with the design or philosophy of nostr, or decentralization

How about subscribing additional relays on demand, and making that behavior optional and controllable by users?
Appreciate if you took this in consideration.

My environment FYI:

Vivaldi	6.0.2979.15 (Stable channel) stable (64-bit) 
Revision	48baf1f6e9cb9f18b98a815e1ae64ed52b71222f
OS	Linux
JavaScript	V8 11.2.214.14
User Agent	Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36

broken pipe when trying to show post of relay using nostr-rs-relay

When I try to show only post from my relay (that use nostr-rs-relay with postgresql) i got "broken pipe" error on console and these logs on postgresql server :

2023-05-21 13:16:32.835 UTC [3697] ERROR:  syntax error at or near "e" at character 269
2023-05-21 13:16:32.835 UTC [3697] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 13:21:06.242 UTC [3694] ERROR:  syntax error at or near "e" at character 269
2023-05-21 13:21:06.242 UTC [3694] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 13:21:06.243 UTC [3709] ERROR:  syntax error at or near "e" at character 269
2023-05-21 13:21:06.243 UTC [3709] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 13:25:42.423 UTC [3751] ERROR:  syntax error at or near "e" at character 269
2023-05-21 13:25:42.423 UTC [3751] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 13:25:42.425 UTC [3729] ERROR:  syntax error at or near "e" at character 269
2023-05-21 13:25:42.425 UTC [3729] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 14:01:42.534 UTC [3832] ERROR:  syntax error at or near "e" at character 269
2023-05-21 14:01:42.534 UTC [3832] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 14:01:42.537 UTC [3844] ERROR:  syntax error at or near "e" at character 269
2023-05-21 14:01:42.537 UTC [3844] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 17:18:23.340 UTC [4473] ERROR:  syntax error at or near "e" at character 269
2023-05-21 17:18:23.340 UTC [4473] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 17:18:23.342 UTC [4402] ERROR:  syntax error at or near "e" at character 269
2023-05-21 17:18:23.342 UTC [4402] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 17:19:38.181 UTC [4473] ERROR:  syntax error at or near "e" at character 269
2023-05-21 17:19:38.181 UTC [4473] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 17:19:38.185 UTC [4392] ERROR:  syntax error at or near "e" at character 269
2023-05-21 17:19:38.185 UTC [4392] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 17:48:20.788 UTC [4509] ERROR:  syntax error at or near "e" at character 269
2023-05-21 17:48:20.788 UTC [4509] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 17:51:14.201 UTC [4509] ERROR:  syntax error at or near "e" at character 269
2023-05-21 17:51:14.201 UTC [4509] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 17:51:14.203 UTC [4490] ERROR:  syntax error at or near "e" at character 269
2023-05-21 17:51:14.203 UTC [4490] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-21 17:51:14.204 UTC [4573] ERROR:  syntax error at or near "e" at character 269
2023-05-21 17:51:14.204 UTC [4573] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE (e.pub_key in ($1) OR e.delegated_by in ($2)) AND e.kind in ($3) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $4 AND (value in ($5))))e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $6 AND (value in ($7)))) AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $8) ORDER BY e.created_at DESC LIMIT 1
2023-05-22 12:49:26.471 UTC [7093] ERROR:  syntax error at or near ")" at character 225
2023-05-22 12:49:26.471 UTC [7093] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-24 15:28:40.520 UTC [13869] ERROR:  syntax error at or near ")" at character 225
2023-05-24 15:28:40.520 UTC [13869] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:26:43.047 UTC [18007] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:26:43.047 UTC [18007] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:26:43.075 UTC [18030] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:26:43.075 UTC [18030] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:26:43.448 UTC [17999] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:26:43.448 UTC [17999] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:26:43.467 UTC [18007] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:26:43.467 UTC [18007] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:26:43.476 UTC [17999] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:26:43.476 UTC [17999] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:26:48.819 UTC [17996] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:26:48.819 UTC [17996] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:26:54.826 UTC [17996] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:26:54.826 UTC [17996] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:00.779 UTC [17999] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:00.779 UTC [17999] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:06.816 UTC [17996] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:06.816 UTC [17996] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:12.800 UTC [18007] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:12.800 UTC [18007] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:18.782 UTC [17996] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:18.782 UTC [17996] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:24.822 UTC [17996] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:24.822 UTC [17996] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:30.804 UTC [18030] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:30.804 UTC [18030] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:36.851 UTC [18007] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:36.851 UTC [18007] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:42.757 UTC [18043] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:42.757 UTC [18043] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:48.837 UTC [17996] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:48.837 UTC [17996] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:27:54.772 UTC [18007] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:27:54.772 UTC [18007] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:00.843 UTC [17983] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:00.843 UTC [17983] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:06.771 UTC [17996] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:06.771 UTC [17996] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:12.836 UTC [17983] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:12.836 UTC [17983] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:18.763 UTC [18030] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:18.763 UTC [18030] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:24.783 UTC [17999] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:24.783 UTC [17999] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:30.799 UTC [18030] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:30.799 UTC [18030] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:36.852 UTC [18030] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:36.852 UTC [18030] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:42.839 UTC [18043] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:42.839 UTC [18043] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:48.827 UTC [18048] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:48.827 UTC [18048] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:28:54.800 UTC [18048] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:28:54.800 UTC [18048] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:29:00.763 UTC [18030] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:29:00.763 UTC [18030] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:29:06.842 UTC [18043] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:29:06.842 UTC [18043] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-25 22:30:12.834 UTC [18007] ERROR:  syntax error at or near ")" at character 225
2023-05-25 22:30:12.834 UTC [18007] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-26 10:34:10.545 UTC [19633] ERROR:  syntax error at or near ")" at character 225
2023-05-26 10:34:10.545 UTC [19633] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-26 10:42:28.243 UTC [19655] ERROR:  syntax error at or near ")" at character 225
2023-05-26 10:42:28.243 UTC [19655] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000
2023-05-26 16:03:52.360 UTC [20393] ERROR:  syntax error at or near ")" at character 225
2023-05-26 16:03:52.360 UTC [20393] STATEMENT:  SELECT e."content", e.created_at FROM "event" e WHERE e.kind in ($1, $2, $3, $4) AND e.id IN (SELECT ee.id FROM "event" ee LEFT JOIN tag t on ee.id = t.event_id WHERE ee.hidden != 1::bit(1) and (t."name" = $5 AND (value in ()))) AND e.created_at > $6 AND e.hidden != 1::bit(1) AND (e.expires_at IS NULL OR e.expires_at > $7) ORDER BY e.created_at ASC LIMIT 1000

Add a limit on depth of thread trees

I absolutely love the thread view of Coracle, but it's sometimes clunky for smaller displays such as mobile. How about setting the maximum depth of thread tree? It could be either of static or dynamic. I can work on it if approved.

Not able to find intended people on 'Add List'

I tried to add people that I follow to a list, but their names did not show up.

Screen Shot 2023-05-12 at 21 07 58
For example, here I am looking for '@nvk', a user I follow. His name is now displayed.

Screen Shot 2023-05-12 at 21 07 48
In this case, I was searching for '@rablle' who I also follow. I could not find him.

"Share" menu option under the 3 dots menu gives wrong note ID

The event ID given by the Share button is incorrect:
share-coracle-note

On the other hand, clicking on the date (top right of the note) updates the URL to the correct event:
it works


I get theses IDs:

  • When clicking the Share button: nevent1qqstednpfhlajfp2ruwhsartc62ns8z69vsztr5rp37yu5esf5hxtnqppadk7cn2v43hggz0vf4x2cm5t54lazke
  • When clicking the date: nevent1qqstednpfhlajfp2ruwhsartc62ns8z69vsztr5rp37yu5esf5hxtnqpz3mhxue69uhhyetvv9ujuerpd46hxtnfdustrux5

Coracle submits invalid REQ filters to relays

Looking at relay filter date, I've noticed that coracle submits invalid NIP-01 REQ filters.
Two examples (replacing the searched pubkey)

{"kinds":[42],"#e":["xxxxx"],"since":null,"until":null,"limit":50}
{"kinds":[4],"#p":["xxxxx"],"authors":[null]}

null is not a valid value for these filters. Instead, since, until, authors shouldn't be specified in the filter at all.

Add chat

Probably have the navigation item open in a new window, in a differently setup app. It could be a section of coracle, or an entirely different client. To that end, some kind of OAuth flow for sharing private keys might be worth speccing.

Bad URL parser

see web+nostr://nevent1qqs2cxz5m7yy2jp8jxzdm68e7skpql55v5cgehcg2g0e3ul3gfutxmgpz3mhxue69uhhyetvv9ujuerpd46hxtnfdujvpjlm

it thinks url is (https://a.com), instead of just https://a.com

Server discovery

When processing events, save relays to the relays table in dexie.

Incorrect URL parsing in NOSTR posts on coracle.social app

Description:

There seems to be an issue with the way CORACLE.SOCIAL is parsing URLs from NOSTR posts. Links containing special characters such as commas and @ signs are incorrectly split into multiple parts.

To Reproduce:

  1. Create a NOSTR post with the following content:
This is NOSTR bug test:

https://mastodon.social/@austin_traffic_bot

https://wyborcza.pl/duzyformat/7,127290,29791364,w-redakcji-andrzeja-skworza-odliczam-az-sie-rozryczysz-i.html#S.MT-K.C-B.1-L.1.duzy

https://wydarzenia.interia.pl/kraj/news-jeden-wielki-chaos-pacjenci-w-ostatniej-chwili-zostawieni-na,nId,6795540
  1. The parsed content appears as follows:
<a class="cursor-pointer transition-all underline" href="https://mastodon.social/" target="_blank">mastodon.social/</a>  @austin_traffic_bot

<a class="cursor-pointer transition-all underline" href="https://wyborcza.pl/duzyformat/7" target="_blank">wyborcza.pl/duzyformat/7</a>  ,127290,29791364,  <a class="cursor-pointer transition-all underline" href="https://w-redakcji-andrzeja-skworza-odliczam-az-sie-rozryczysz-i.html#S.MT-K.C-B.1-L.1.duzy" target="_blank">w-redakcji-andrzeja-skworza-odliczam-az-sie-rozryczysz-i.html#S.MT-K.C-B.1-L.1.duzy</a>

<a class="cursor-pointer transition-all underline" href="https://wydarzenia.interia.pl/kraj/news-jeden-wielki-chaos-pacjenci-w-ostatniej-chwili-zostawieni-na" target="_blank">wydarzenia.interia.pl/kraj/news-jeden-wielki-chaos-pacjenci-w-ostatniej-chwili-zostawieni-na</a>  ,nId,6795540

Expected behavior:

The URLs should be correctly parsed and represented as a whole, without incorrect separation of the parts with special characters.

Screenshots:

image

Desktop (please complete the following information):

  • OS: android, windows, linux
  • Browser ALL
  • Version ---

Additional context:

This bug might originate from how the URL parser interprets special characters. For example, commas are treated as separators and @ signs seem to be interpreted as the start of an email address.

Project lacks a LICENSE file

Hi,

I need to implement a chat in a Svelte application and I was wondering if I can take some part of this app for that, but the project lacks a LICENSE file, so I don't know if I can do it.

If you have something in mind, I can send you a PR to add it.

Thanks!

Coracle failed to publish my note and lost it - or can I recover it?

I just typed an elaborate reply to a note and clicked Send.

I see the message: "Published to 0/11 relays (11 pending)"

It's stuck there. All relays seem to be disconnected. All activity in the console is dead.

So I went to the feed, now there is read activity but my reply still unpublished. It's been like that for more than 10 minutes.

I'd like to get my note and post it using another client. How do I do? (I did not close the window.)

Opening a thread should change the URL

When I go to https://coracle.social/notes, and then click on a note to make the thread pop up, the URL should be updated to https://coracle.social/nevent1xxxxxxxx instead of https://coracle.social/notes#m=1.

This would serve several purposes:

  • I could more easily share the link
  • I would have the note in my browser history allowing to go back to the previous page (= previous note)
  • I would be able to bookmark notes with my browser
  • I would be able to reload the page or reload the browser and stay on the same note

allow direct url links to notes and rooms without login redirect

I'd like to link directly to a note or a public channel with an url like:

https://coracle.social/chat/note18kst54gwje8n5t3cfpdud4duwh37wtfu4zpefd6a6q24nc2uecqs6vy8lq
and the official encoding:
https://coracle.social/chat/nchannel1qqsrmg96258fvne69cuysk7x6k78tcl895723qu5kawaq92eu9wvuqgthxzyq

or

https://coracle.social/notes/note17vkkaqz5mn8wcl76lqf2y4jc98dkhw86xrz8nrj2k6wjkcd54zvsngmqc3

Now this does not seem to work because I'm redirected to the login page. I think it makes more sense to first show the content that the url requests and a allow read-only without disturbance

Data loss: Relays page overwrites wrong relays

  1. I set my preferred relays in https://metadata.nostr.com โ€“ย I verify 10002 events are properly sent to all relays
  2. Load https://coracle.social/relays
  3. Coracle does not properly read relays from my metadata:
  • The UI shows very different relays to the ones I previously saved
  • An inspection on the only common relay (wss://relay.damus.io) shows a REQ asking for kinds: [0, 2, 3, 10001, 10002] for 3 different authors but my pubkey is not there
  1. Changes in Coracle (adding/leaving relay) trigger 10002 events which overwrite my relay settings
  2. Back to https://metadata.nostr.com/ I refresh the page and see I lost my preferred relays. Fortunately I can restore latest versions from there

Coracle seems to correctly write but incorrectly read user relays from 10002 events.

Thanks for you work on it, I really like the client and want to keep using it.

Display images

If a post has an image url embedded, show the image. Add a setting for this as well.

Feed shows very old posts and needs refreshing a few times to load more recent ones

Reproducing the issue:

  1. Load the feed after having already been logged in for a few hours
  2. Notice that at first load, it'll be a mix of very old posts, some more recent ones, and then new ones that roll in
  3. If you refresh, more recent posts will be added, but it will still be missing many when comparing to what I see on Snort or Iris

image

Lists don't populate from kind 30000 notes

I created some lists as kind 30000 notes but they don't show up in the Feeds kebab menu. It would be really cool if these lists were interoperable with other clients. Probably requires a confirmation on deletion since I deleted one and was worried that it might have blasted one of my kind 30000 lists.

Mark all read

Hopping between different clients on different devices I use "mark all read" a lot on my messages but coracle doesn't have that feature.

Color next to relay selector

On https://coracle.social/relays each relay has a colored left border which seems to be stable per relay but has unclear meaning. Even though a full spectrum is represented, users may be biased toward green or against red colored ones.

Proposed solutions:
Color by performance, other documented quality, or remove colors.

Flagged notes showing up in liked tab in profile

Flagged notes showing up own in likes tab in profile

To reproduce:

  1. Flag a note as offensive
  2. Go to your own profile
  3. switch to the "likes" tab
  4. See flagged note with the "You have flagged this content as offensive." Although you can see the original comment initially.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.