GithubHelp home page GithubHelp logo

monlovesmango / astral Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fiatjaf/branle

103.0 103.0 39.0 2.06 MB

Nostr client made with Quasar

Home Page: https://astral.ninja

License: MIT License

JavaScript 31.50% Vue 67.91% HTML 0.26% Dockerfile 0.14% SCSS 0.19%
nostr

astral's People

Contributors

cameri avatar cercatrova21 avatar dadbeef avatar diegogurpegui avatar etemiz avatar fiatjaf avatar giszmo avatar guusyy avatar kokial avatar leesalminen avatar monlovesmango avatar nevets963 avatar piraces avatar rafael-xmr avatar w3irdrobot 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

astral's Issues

Promote mnemonic as the primary security rather than a single private key

NIP06 mnemonic is already supported by mutations.js via the existing frontend key input box. In fact, it is the mechanism by which a new private key is already generated.

However, there's no way for the user to see the mnemonic (it's ephemeral within the function call and lost once the private key is returned), and there's no clear indication that mnemonic is supported by the input box even though it is.

  1. Indicate that mnemonic is supported in the "key" input
  2. Change "generate" to show the mnemonic (and an advanced button to see the private key)

Preferring and promoting the use of the mnemonic will afford all of the already established benefits seen by other applications of BIP39.

Can't embed images anymore

When I try to type ![](https://pbs.twimg.com/media/FcAYq6maAAAkHc3.png), I get ![]() with the link added as tag but no way of embedding it in the text note. Or ... how is the way? Why rip those external urls out into tags?

Feature: Allow scrolling past the end of the list.

I dread authoring my reply on the very bottom of the screen. Please add some element after that, so I can scroll the textarea to the center of the screen while writing.

Actually this maybe 80% screen height of extra scrolling is also nice to have when reading, too.

image rendering is broken

Screenshot from 2022-11-22 18-14-56

The content is actually:

"content": "https://mikedilger.com/gossip.png\nhttps://mikedilger.com/gossip.png",

Error: database disk image is malformed

Somehow Astral stopped working. After not seeing a post in one tab that I saw in another tab I closed already, I hit F5 and later closed and opened the tab without seeing any log output on the dev console for minutes, with no loading of events whatsoever, I hit shift-reload and got:

01:06:13.182 Layout was forced before the page was fully loaded. If stylesheets are not yet loaded this may cause a flash of unstyled content. [node.js:369](resource://devtools/server/actors/inspector/node.js)
01:06:15.970 launch for  46fcbe3065eaf1ae7811465924e48923363ff3f526bd6f73d7c184b16bd8ce4d [app.65801ba0.js:1:58365](https://astral.ninja/js/app.65801ba0.js)
01:06:17.847 Reading meta... [c2018daa-97c2-4cc5-8cb1-d95252afb78e:1:7805](blob:https://astral.ninja/c2018daa-97c2-4cc5-8cb1-d95252afb78e)
01:06:17.847 Reading meta... [c2018daa-97c2-4cc5-8cb1-d95252afb78e:1:7805](blob:https://astral.ninja/c2018daa-97c2-4cc5-8cb1-d95252afb78e)
01:06:17.849 Got meta for events.absurd-sql: 
Object { size: 12582912 }
[c2018daa-97c2-4cc5-8cb1-d95252afb78e:1:7861](blob:https://astral.ninja/c2018daa-97c2-4cc5-8cb1-d95252afb78e)
01:06:17.849 Got meta for events.absurd-sql: 
Object { size: 12582912 }
[c2018daa-97c2-4cc5-8cb1-d95252afb78e:1:7861](blob:https://astral.ninja/c2018daa-97c2-4cc5-8cb1-d95252afb78e)
01:06:17.855 Opened! [vendor.a150482c.js:7:20717](https://astral.ninja/js/vendor.a150482c.js)
01:06:17.855 Opened! [vendor.a150482c.js:7:20717](https://astral.ninja/js/vendor.a150482c.js)
01:06:17.950 Error: database disk image is malformed

I see a spinner but no loaded event data.

I think there is a bug with nip05

https://astral.ninja/6b0d4c8d9dc59e110d380b0429a02891f1341a0fa2ba1b1cf83a3db4d47e3964 shows the name "dergigi" but no information about nip5.

https://dergigi.com/.well-known/nostr.json:

{
  "names": {
    "_": "6b0d4c8d9dc59e110d380b0429a02891f1341a0fa2ba1b1cf83a3db4d47e3964"
  }
}

looks good.

The relevant event:

{
  "id": "45f21a870ad194b914d93c553e59c1b0ab242a76b0d66b425323ef4baba212ff",
  "pubkey": "6b0d4c8d9dc59e110d380b0429a02891f1341a0fa2ba1b1cf83a3db4d47e3964",
  "created_at": 1663236946,
  "kind": 0,
  "tags": [],
  "content": "{\"name\":\"dergigi\",\"picture\":\"https://dergigi.com/assets/images/avatar-laser.jpg\",\"about\":\"Writing words and code for Bitcoin. dergigi.com\",\"nip05\":\"dergigi.com\",\"lud06\":\"LNURL1DP68GURN8GHJ7MR9VAJKUEPWD3HXY6T5WVHXXMMD9AKXUATJD3CZ7CTSDYHHVVF0D3H82UNV9UENXVPSXRPGRS\"}",
  "sig": "c10e66983593ceedcd8a37b76ff0726b78dc425da394935388e7636b9b1d3b4010886a922bd5c79d16140d26d99fb7dcdfbe4844b9d8b2835dd5bbe8916d5232",
  "degree": 0
}

also looks good.

The keys match.

What am I missing?

If Astral thinks the nip05 is wrong, it should probably also state that and why. It might be a huge red flag for somebody to use a "fake" nip05 entry.

Feature: Show followers

Querying followers is easy enough ({"#p":[pubkey],kinds:[3]}). Why not add it to the clients?

At least in the own follows list it would be nice to know who followed back.

And on events and chat it should be visible if the author is following me.

(More importantly, show if it's the monlovesmango I am following or an imposter on events and chat).

Unfollowing does not remove notes from follows feed

Running Astral on what I think is effectively current master HEAD, I see messages of unfollowed accounts in my "follows" feed.

This problem persists for days, with many reloads and tab close and re-opens.

I unfollowed jb as can be seen on the "following" list, yet I see many of their notes.

Screenshot from 2022-05-29 12-26-07

While some "in reply" ones were in reply to my notes, so those should probably stick around, the screenshot also contains one that is not "in reply".

Make Astral multi-account capable

Currently, to use multiple accounts I either have to use multiple browsers, browser sessions, Astral instances or wipe the data to sync from zero when switching accounts.

As in many if not most cases, many events are relevant to all one's accounts it makes sense to have the client be multi account capable.

Avoid avatars overlapping with text

Especially the label is hard to read - with my avatar not even being label-colored which would make it worse:

Screenshot from 2022-05-31 13-49-06

Why not do it more like Twitter:

Screenshot from 2022-05-31 13-51-56

Minimal changes:

Screenshot from 2022-05-31 13-52-11

Optimize queries when adding followers

It currently re-queries all known pubkeys when adding a new pubkey.
Use since: for all synced pubkeys and query the new account's older events on a different channel.

Detect and handle disconnects

The app turns unusable when going through a PC suspension (and probably also when internet is gone for some time?). Handle those events, detecting websocket disconnects for example and restore state when the tab gets focus or show a "refresh" button to the user that lets him restore the state without closing or reloading the tab.

Re-"tweet" is broken or I don't get how it works

I opened event/a893213dc51c0a03719bb4d66d0eb11efe7f7b713aca0d42621c0239c5ea3ee6 from the global feed and found three buttons, none of which is featuring a tooltip. Clicking the double-arrows I get this:

Screenshot from 2022-05-30 21-44-38

Scrolling to the right only affects the scrollbar itself.

Relative timestamps don't update

In my feed I see events from "11 min ago" and even after navigating around and coming back to the feed, it reads "11 min ago".

Prevent removing all functioning relays

Astral gets the list of preferred relays using its default list of relays.

If that list contains only defunct relays, it's hard to recover as I have to manually add all default relays to get my fixed list to all default relays so that at the next start of using astral I don't fall back to my defunct relays.

Double-new-line gets converted into no newline

When sending direct messages, something is off with the markdown parsing or so.

Using a single newline gets translated into a newline, which is not markdown standard and not appreciated but understood and somewhat ok.

What is not ok is that double-newline gets translated into no newline at all.

Lack of reply button on a TextNote with quoted TextNote

TextNote

{
  "id": "fba0722266ff7c252c72d5ace7d516611bb62c2dc74e4fdacafdfb6a36b975e4",
  "pubkey": "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245",
  "created_at": 1655070996,
  "kind": 1,
  "tags": [
    [
      "e",
      "ec25b9c7ff8fa8ccdc7d2e3bfa06df82448a88c40212c6d19bce4a6f747b736b"
    ],
    [
      "e",
      "528458f58b76fcf91351e5f3794778016f95b762047b3b9fb1a8bb6444e80971"
    ],
    [
      "p",
      "3efdaebb1d8923ebd99c9e7ace3b4194ab45512e2be79c1b7d68d9243e0d2681"
    ],
    [
      "p",
      "8355095016fddbe31fcf1453b26f613553e9758cf2263e190eac8fd96a3d3de9",
      "wss://nostr-relay.wlvs.space"
    ],
    [
      "p",
      "46fcbe3065eaf1ae7811465924e48923363ff3f526bd6f73d7c184b16bd8ce4d"
    ],
    [
      "p",
      "09e935f7c01fda340051a4700cfb9dde533202bdf56808f68cafef6bae07a5bd"
    ],
    [
      "e",
      "4c712ebfc251f02f9af0ab39e4c4b4fa9427a76e5826e67138dc048a41cba22c"
    ]
  ],
  "content": "#[6]",
  "sig": "2f3886e583dd44bcb52a8f4555cbe938eb56f23378341bb436f4ac78b18f3fe16ddf7d8c7bd813f964e05811c424ae094dbe413aca96967d436978d9e399345a"
}

quotes Note

{
  "id": "4c712ebfc251f02f9af0ab39e4c4b4fa9427a76e5826e67138dc048a41cba22c",
  "pubkey": "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245",
  "created_at": 1654962253,
  "kind": 1,
  "tags": [],
  "content": "Haha sorry everyone accidentally clicking the boost button, I will have a confirmation button in the next testflight release",
  "sig": "8277df96de140c6bc0b831019b2d84155608827f89b584e773ad95c19208356ddd89d18aa9d2002eca7febcb04c8fc3c469f756924cbee6818ecc483ae0d7ca4"
}

I tried to reply to the former but there was no reply button. But there was a reply button for the latter.

Screenshot from 2022-06-12 21-25-24

I would expect it to be reverse: only a reply button for the new Note. No reply button for the quoted Note.

But to make matters worse, it's now no reply at all according to Astral! Just a top-level Note quoting two Notes.

Fix layout shifts on new events being recieved

New events being received pushes the feed down and with images or when unclebobmartin posts, by a lot.
As sorting can also change when a new reply for an older thread is received, the stuff the user was reading might have moved up or down.
This can be quite disorienting

Maybe slowly smooth in a one-line event counter like Twitter has it: "Show 25 Events".

Due to the re-sorting I don't see any good alternatives to this.

event info is broken

I think the "i" next to every event was to show the raw event. this button does not work for me.

App stopped working

"All of a sudden" astral stopped working. After a power outage I spun up quasar normally and connected to localhost:8080 but only got this on the dev console:

 22:07:04.323 [Vue warn]: Property "$store" was accessed during render but is not defined on instance. 
  at <QLayout> 
  at <MainLayout onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > > 
  at <RouterView> 
  at <App> [runtime-core.esm-bundler.js:38](webpack://astral/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?f781)
22:07:04.323 [Vue warn]: Unhandled error during execution of render function 
  at <QLayout> 
  at <MainLayout onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > > 
  at <RouterView> 
  at <App> [runtime-core.esm-bundler.js:38](webpack://astral/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?f781)
22:07:04.324 [Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core 
  at <QLayout> 
  at <MainLayout onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > > 
  at <RouterView> 
  at <App> [runtime-core.esm-bundler.js:38](webpack://astral/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?f781)
22:07:04.326 Uncaught (in promise) TypeError: _ctx.$store is undefined
    default MainLayout.vue:3
    renderFnWithContext runtime-core.esm-bundler.js:850
    hMergeSlot render.js:25
    setup QLayout.js:226
    renderComponentRoot runtime-core.esm-bundler.js:893
    componentUpdateFn runtime-core.esm-bundler.js:5030
    run reactivity.esm-bundler.js:167
    setupRenderEffect runtime-core.esm-bundler.js:5156
    mountComponent runtime-core.esm-bundler.js:4939
    processComponent runtime-core.esm-bundler.js:4897
    patch runtime-core.esm-bundler.js:4489
    componentUpdateFn runtime-core.esm-bundler.js:5037
    run reactivity.esm-bundler.js:167
    setupRenderEffect runtime-core.esm-bundler.js:5156
    mountComponent runtime-core.esm-bundler.js:4939
    processComponent runtime-core.esm-bundler.js:4897
    patch runtime-core.esm-bundler.js:4489
    componentUpdateFn runtime-core.esm-bundler.js:5107
    run reactivity.esm-bundler.js:167
    callWithErrorHandling runtime-core.esm-bundler.js:155
    flushJobs runtime-core.esm-bundler.js:394
[MainLayout.vue:3](webpack://astral/src/layouts/MainLayout.vue?713b)

I cleared the cache, tried Chromium, ... no success. Same error.

Show relay connection count

I suspect the connection to relays is often lost, as reloading the tab results in new events being loaded, so I reload all the time.

With an indicator of connected relays I could probably skip that 80% of the time. Or better add a mechanism to force re-connection, too. When tab gains focus like Twitter does it.

web+nostr URI scheme is broken

While branle can handle web+nostr links such as

web+nostr:event:2757368bc06504ad23baabf358d91c7d5e55845b3432a6ba4e1e546ac367621c

astral cannot.

src/pages/Profile.vue:111 contains the relevant code for above link but I get " 404 Oops. Nothing here..." instead.

Wild things happen when hitting enter while writing a reply

  • Go to "follows" feed
  • click on the reply icon of the first event
  • type something
  • type enter

Expected: Nothing spectacular happens. Just a newline appears in the textarea.

Actual: The view updates to the event one is replying to and the reply is gone.

Don't count markdown and links against the message size limit

I'm not sure where the comment size limit came from in Astral but other clients allow much longer messages.

I think there should be some Twitter-like short-ish limit but links should not count against that limit or at least not in full.

Maybe the client should count the link title in full (or generally apply the limit to the markdown-applied text) and use a much more generous limit for the serialized event's size.

Avoid Fab overlapping with stuff

Fab (this navigation bar thingy) overlaps with the own avatar in direct messaging.

Screenshot from 2022-05-31 15-43-00

It also disappears easily when down-scaling the window.

Why not in a fixed position. For example here:

Screenshot from 2022-05-31 16-20-43

Feature: When checking the "raw" DM, show the decrypted "raw" content, too.

Astral interprets the decrypted content, replacing profile hrefs with profile name etc., so the user might want to see what the other actually sent.

I was surprised to find
<a href=/$pubkey>$someMessage</a> gets replaced with something not containing $someMessage at all. Maybe it could be added back as title?

Please group followers by proximity

Currently followers are not marked as being follows or not. Please split the list at least into two parts:

  • followers that you follow
  • followers that you don't follow

Ideally expand the concept:

  • followers that you follow
  • followers followed by your follows (ideally sorted by how many of my follows follow them)
  • button: "show followers among 2nd degree follows" (if pressed, show those and a button about "3rd degree follows" etc.)

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.