block-core / blockcore-notes Goto Github PK
View Code? Open in Web Editor NEWNotes app for decentralized infrastructures (Nostr and Web5)
Home Page: https://notes.blockcore.net
License: MIT License
Notes app for decentralized infrastructures (Nostr and Web5)
Home Page: https://notes.blockcore.net
License: MIT License
Perhaps we should use this for clipboard logic going forward: https://web.dev/async-clipboard/
We currently don't show difference between public and private relays in the UI, this task is to ask for suggestions and insight on potential ways to do this.
Users should be allowed to decide if they want to hide muted people in the People listing.
User should be able to choose what kind of sorting they want on saved notes.
Currently the replies includes hashtags of previous comment. Only copy e and p tags when replying.
All hashtags that user writes in the note should be added as "t" tags and hence be searchable on relays.
The local data should be exportable and importable, at minimum the Circle and the settings for Circles.
Circles can be local (private) or public (NIP-02), so user should be able to bring their data with them across devices without posting on the nostr-protocol.
Other data can include all the saved notes.
The "2 days ago" label need to have tooltip that renders the exact timestamp, OR perhaps a neater solution is to allow toggle between "ago" and displaying the date in ISO? I think maybe that is a better option?
We have a very basic implementation of Spotify and Tidal widgets. Tidal supports OEmbed and that's something we should look into to better improve the integrations we have: https://oembed.com/
When Notes receive a lot of the same events, there is a race-condition on get and puts resulting in multiple puts happening because the async await is waiting while next event triggers.
This could be optimized potentially with an queue for writes, where events fill up a queue instead of writing directly as now. The queue could also potentially look for duplicates directly when inserting into the update queues.
Example code where put of contacts and profile happens multiple times, depending on number of relays:
Notes already supports media session to give native OS media control over playback, but we can add even more features.
Add support for seeking and more: https://web.dev/media-session/
"Mute" means that the posts by that user should not appear in the "Home" feed, but user should still be listed in the "People" section.
When a muted person replies on a thread, display a message like:
"This reply if from someone that you muted. Click here to see it" (Thanks "Pyre_3")
The NIP-02 specifies a kind of event that allows keeping a public contact ("follow") list.
This should be an optional opt-in feature for users. Individual Circles should have option to be public or not.
The media queue should be persisted and users should be able to keep them and perhaps store multiple lists.
Currently the import and export is located under Circles, move this to People section.
The same logic must be applied where all circles are gathered and people are filtered if they are in public or private circles.
The profile should be loaded and allowed to be edited by the user when logged in using extension.
The relay object should have a collection of active subscriptions and ensure it doesn't try to do more than the limits
We should store where events has been observed and allow users to potentially broadcast to other relays.
This is especially important for profiles, helping the network keep up-to-date profiles across the network.
Want to utilize the new scheduler APIs that is supported on Edge/Chrome and behind flag on FireFox, not yet supported on Safari, but the polyfill can be used. This is a research/spike task to figure out if it's possible to get the polyfill working together with Visual Studio Code and TypeScript not complaining that "scheduler" doesn't exists.
Leo: For likes you can do kinds: 7 and put event IDs in the ids array
For OPs (root posts) that are on a users profile, we can make queries that sends e.g. 10-50 event IDs and ask specifically for kind 7. This should get reactions to those posts in a fairly optimized manner.
Attempts to fix it, but it doesn't take 100% width, just moves to the left. See screenshots.
Some users have hundreds if not thousands of following and we can't do NIP-05 validation for all of them during import. We also want to validate NIP-05 once in a while for validitiy.
Videos for people the user is following should render in-line player for .mp4 and .webm video files, and also have actions allowing users to play them in the media player within Blockcore Notes.
https://twitter.com/jb55/status/1611078800745590785
nostr:nprofile, nostr:npub, nostr:nevent
Would need to be "web+nostr:nprofile", or maybe just "web+nprofile".
Related to #25 and #26, container task for the generic requirements for mobile package.
Use Cordova or any other new library to package for mobile phones.
Don't want to add ability to store private key directly into the PWA parts, the mobile apps need to have some custom UI/settings that allows storage of the private key in a secure enclave on the devices.
Should be possible to save the relays list publicly, similar to Iris. Iris is using content
on kind 3 to store the relays.
Example:
{
"kind": 3,
"content": "{\"wss://jiggytom.ddns.net\":{\"read\":true,\"write\":true},\"wss://nostr-relay.wlvs.space\":{\"read\":true,\"write\":true},\"wss://nostr.fmt.wiz.biz\":{\"read\":true,\"write\":true},\"wss://nostr.ono.re\":{\"read\":true,\"write\":true},\"wss://relay.damus.io\":{\"read\":true,\"write\":true},\"wss://nostr-pub.wellorder.net\":{\"read\":true,\"write\":true},\"wss://relay.nostr.info\":{\"read\":true,\"write\":true},\"wss://nostr.bitcoiner.social\":{\"read\":true,\"write\":true},\"wss://nostr.onsats.org\":{\"read\":true,\"write\":true},\"wss://nostr.mom\":{\"read\":true,\"write\":true}}",
"tags": [
[
"p",
"00000000827ffaa94bfea288c3dfce4422c794fbb96625b6b31e9049f729d700"
],
[
"p",
"17e2889fba01021d048a13fd0ba108ad31c38326295460c21e69c43fa8fbe515"
],
[
"p",
"32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245"
],
[
"p",
"a341f45ff9758f570a21b000c17d4e53a3a497c8397f26c0e6d61e5acffc7a98"
],
[
"p",
"d987084c48390a290f5d2a34603ae64f55137d9b4affced8c0eae030eb222a25"
],
[
"p",
"edcd20558f17d99327d841e4582f9b006331ac4010806efa020ef0d40078e6da"
]
],
"created_at": 1673191070,
"pubkey": "17e2889fba01021d048a13fd0ba108ad31c38326295460c21e69c43fa8fbe515",
"id": "af087bc5f9ff617f5203a82a83e6f93814ad3ea70f61e1ecfb420fb907f7059f"
}
When Notes is installed on the device as a PWA it can receive rich sharing content. This can be used to open content such as music and video files, but also potentially npub that contains relay info.
For example https://cowdle.gg/ publish their public key as following:
nostr:npub136ljffk35zaknaauukrrlmpgdle6p6a0mlcw383w6gvas0epjguqc8mumr
Pasting this string into add a person does nothing, and I don't get an error messages.
When the app goes to "sleep" on mobile, we don't auto-reconnect the web sockets. This should happen automatically.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.