Giter Club home page Giter Club logo

iris-messenger's People

Contributors

adamritter avatar blastshielddown avatar brugeman avatar chavao avatar dependabot[bot] avatar dtonon avatar escapedcat avatar hammoveck avatar leplinus avatar lvlr avatar macterra avatar mattn avatar mmalmi avatar motorina0 avatar mrthiti avatar nmfretz avatar npub1zenn0 avatar pencerahan avatar penpenpng avatar petrikaj avatar qvdev avatar rococtz avatar saibato avatar semt3x avatar thrownness avatar timjrobinson avatar trevinhofmann avatar umairmukhtar avatar vivganes avatar yisiliu 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iris-messenger's Issues

Profile links hardcoded to iris.to?

Hosted my own instance of iris-messenger, but profile link isn't related to my domain and so user can't use the link without replace iris.to with my custom domain.

Links to profiles should use local / users home domain instead of hardcoded iris.to.

Possible security issue with shared invitation link?

Hey everyone,

I checked the Iris lib code, especially the method for chat link generation (createChatLink) which is used in Iris messenger to create a new conversation. As far as I can see this link is always the same (except for manual created additional links).

So my question is this: If Alice invites Bob sharing her invitation link and Bob stores this key (secret and link ID). Isn't he always able to watch this "shared users" private graph chatRequests also for additional invitations Alice will send to other people so that he can sneak into their communication?

Maybe I missed something so please feel free to reply with an explanation which would be highly appreciated.

Thanks!

`yarn build` fails

Build failed!

ModuleNotFoundError: Module not found: Error: Can't resolve 'react' in '/iris-messenger/node_modules/react-helmet/es'
✨ Done in 79.79s.

Shared `.put()` variables for groups

I'd like to be able to customize the background of a chat, or the default emoji, or the avatar.

But that would only be fun if my friends in the group also saw those changes.

Putting these customization options in shared "put" values would also make my changes carry over to multiple devices.

This shared put would also be fun for nicknames (which are currently implemented on the user put values only). If implemented for group nicknames, then the concept of "contact nicknames" (only I see these) would become something different than "group nicknames" (everyone in the group sees these).

not all products load in store

hey, its not a problem when visiting you own store (/store) but when visiting /store/pub whether is yours or another persons, only the first product loads out of all of them. sometimes you can spam refresh and it will fix it.
Screen Shot 2021-11-20 at 8 35 36 PM
Screen Shot 2021-11-20 at 8 36 02 PM

Any help would be really appreciated thanks

git clone [email protected]:irislib/iris-messenger.git : Permission denied (publickey). fatal: Could not read from remote repository.

git clone [email protected]:irislib/iris-messenger.git
Cloning into 'iris-messenger'...
The authenticity of host 'github.com (140.82.118.3)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,140.82.118.3' (RSA) to the list of known hosts.
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

In order to build a security critical messenger app

Hi!
In https://github.com/irislib/iris-messenger#privacy
I read "Messages are end-to-end encrypted, but message timestamps and the number of chats aren't. In a decentralized network this information is potentially available to anyone.

By looking at timestamps in chats, it is possible to guess who are chatting with each other. It is also possible, if not trivial, to find out who are communicating with each other by monitoring data subscriptions on the decentralized database.

In that regard, Iris prioritizes decentralization and availability over perfect privacy.

Profile names, photos and online status are currently public. That can be changed when advanced group permissions are developed.

The application is an unaudited proof-of-concept implementation, so don't use it for security critical purposes."

In case I would use iris-messenger as starting point for building a messenger app for security critical purposes, probably the starting points would be to encrypt the message timestamps and encrypt the number of chats.
But how hide the data subscriptions on the decentralized database?
Which other aspects for security should I consider?
How would you suggest me to proceed?

Looking forward to your kind suggestions and hints.
Marco

Some unexpected behaviour

I run iris-messenger locally with only a local gun server:

// DEFAULT_PEERS['https://gun-rs.iris.to/gun'] = {};
// DEFAULT_PEERS['https://gun-us.herokuapp.com/gun'] = {};
DEFAULT_PEERS['http://localhost:8765/gun'] = {};

and opened a firefox and chrome browser and tried to figure out how data is synced and shown or not.

  1. The message filter doesn't show other messages if it's set to Everyone.
  2. If user A follows user B, B doesn't get a notification that A following him
  3. If I user A send a message to user B, user B doesn't see any new message, except B opens the deeplink for the conversation
  4. On the contacts page the conuter of following users is wrong, it shows 2, but it should be 1. It's correct on the profile page

Issues 1, 2 nd 3 does not apply if B starts to follow A.

Here is a video which shows everything: https://youtu.be/uFkgEnqYx6o

Use Svelte?

Forked as a new issue:

Originally posted by @worldpeaceenginelabs in #108 (comment)

Hey Guys, you just speak from my soul 🙏

I just started a fork of Iris https://github.com/worldpeaceenginelabs/METAVERSE-GUN

image

Iris Messenger is just such a good base to start something like this. Look at all the green checkboxes in readme.md (this is what the iris-community has already accomplished) 🙏 just wow! 🤯

I would love to have the codebase of Iris in Svelte!

Since Svelte isnt a language but a compiler, which compiles into Vanilla JS, its like writing in react or vue for instance, but saving the framework typical boilerplate. (You dont need to learn anything new) Like i transfered js code from react projects to Svelte with just cutting off the uneccasary bs surrounding the actual code 😅 (and i code active for just about 4-6 weeks)

Its source code is easy to understand for developers. Svelte.js gathers the logic (JavaScript), the structure (HTML), and the style (CSS) in the same file. This makes the code easy to read and maintain. Guillermo Rauch, Vercel founder & CEO, has even said Svelte, in his opinion, is a lot easier to learn than React - an environment he’s known perfectly for ages.

Svelte does even safe you the DOM/router stuff. So its basically connecting components via imports, exports and modals only.
Less code, better readability, less bugs, less space, faster execution!

This video hitted me. So simple. And since it is clean, typed js, its easier to reuse code or get a snippet from stackexchange.
https://youtu.be/J5x3OMXjgMc Gun Svelte Chat App

Iris definitly needs a makeover to get more code contributions.

But if not Svelte, then minimum Typescript and markup seperated.
Oh wait, such a coincidence, the last part was just Svelte i described 😅

Originally posted by @worldpeaceenginelabs in #108 (comment)

Allow for anonymous "no name" sign up

Let someone sign up without filling in a name in the "name" field of the sign up page.

If they leave the field blank, just make their name a truncated public key or something.

Other users will still be able to give them "nicknames" when talking with them.

This would improve the usability for throwaway communication and decrease the sign up friction even further.

Uploading a picture [Tor]

Hello,

long story short: some days ago, I was able to upload a picture on my profile.

Today this is not possible anymore. If i try, the profile circle look buggy/corrupted.

I'm using the last version of Tor. Everything is ok with Firefox, Brave and Chrome.

Video

Any futhure option to integrate/upload video in to post?

No group edit link and new members of a group are not listed after adding them

After I create a group there is no link to edit the group in order to add new users. I can reach it manually by replacing in the url /chat/ with /group/ when visiting the group chat messages.

When I add a new user to a group and click on Add the name disappear from the input list and the new user does not appear in the list of participants.

Which peer / relay node to use?

The best way to use Iris is with only one peer. But which peer is the best at any given moment?

The peers change so often. My mobile is using https://gun-rs.iris.to/gun because I thought I could get the benefits of using the new rust code that way.

But my desktop is using https://gun-us.herokuapp.com/gun and it seems like most activity is on that one these days.

Why doesn't multiple peers work well yet? What needs to happen for it to work?

Features request for iris-messenger in general

image

All the features here, except the Cesium related ones, i would add to iris-messenger if i was you.
They are not metaverse related, but related to decentralization, privacy and security.

The integrated browser is disputable maybe (but fits just too good in), but the peer-cdn https://github.com/vardius/peer-cdn from the browser section, iris-messenger needs for sure. iris-messenger is already bleeding edge technology. it should stay that way. 😍

👏 Applause to everybody

Dev mode redirects to https

I just tried running Iris in dev mode following the instructions but it always redirects to https (it looks like https://github.com/irislib/iris-messenger/blob/master/src/js/lib/sea.js#L39 does it) which causes it to fail to load (as I have no SSL certificate setup for local network IP's). How do you get around this issue?

Edit: It looks like localhost:8080 works and doesn't redirect. But when running on my home server where I go to SERVER_IP:8080 it redirects and fails with the SSL error.

clarify message deletion behavior in user docs

when a user deletes a public message, is it removed from all peers in the canonical implementation?

is this done via append-only (eg. tombstoning) or actual deletion?

are mutations/edits supported and propagated as well?

Adding a second reply to a message seems to break the system

Not sure if this is something that would eventually resolve itself when the system had more time syncing.

Just now, I posted this reply to a message: https://iris.to/#/message/1x0hHOrUyg0UVs41KqdIIR6WKV3xRU2j7DOeXIvSNyI%3D

Then, right after that, I posted another reply to the same message: https://iris.to/#/message/TXTs6KyrwD3K3idGJiarSA6zKXWPiAGhc80IoXdAhYI%3D

Both my replies correctly show up in my timeline.

When I click at "Show replied message" on my first reply, I see the original message plus my reply. I would expect to see the whole thread, ie BOTH my replies.

Worse: When I click at "Show replied message" on my second reply, I STILL see the original message with my FIRST reply:

image

(In the screenshot, we see the original message, and my first reply, but I clicked at "Show replied message" on my second reply)

You can also see that the original message shows (2) near the speech bubble, but the page only shows one reply.

Seems like there is some bug here that prevents later replies from showing up and always just shows the first reply?

Hope this helps to track down the issue :)

Base64 Sticker Packs

Im thinking of a global library of sticker packs.

Users can basically “bookmark” the location of their favorite sticker packs. Their list of bookmarked packs are saved in their encrypted user graph.

In chats or even in posts/comments, they can access their bookmarked sticker packs to use.

Maybe there’s a sticker uploader app/service that looks kinda like https://readthis.space architecturally

thoughts? Perhaps there’s a more performant / efficient data format than base64. But that’s what works natively with gun right now, so idk.

TypeScript

Would you be interested in having this project set up to use TypeScript instead of JavaScript? In my experience, TS naturally helps with code readability and bug prevention.

Improve distinction between 2 person channel and group channel

  • if it's a group channel, then pub will be the uuid, if it's 2 person channel, then pub is the pub of the other person. Rename pub to chatID?

  • if a 2 person channel, nicknames apply to you and other person. If a group channel, nickname settings will apply to the Group name (which doesn't makes sense). Change nickname to only apply to participant pubKeys?

  • if a 2 person channel, clicking on header will go to that users' profile. Chat QR code and link are that person's profileLink? If a group channel, that QR code and chat link are the channelLink? Need to clarify this.

allow users to add custom key:value pairs to their profile

Users should be able to add key value pairs like

twitter: link
youtube: link
monero: address
location: country
pronouns: blah / blah

etc

Then clients like Iris (or any other one) can hook into these keys and optionally do special things with them.

page is jumping because of async post / image loading

Because of async posts and image loading the page sometimes jumps after scrolled because of a async added image. Would it possible to insert loaded posts before and after the current page position and regardless keep the page at place without jumping up or down?

Bring back the old Iris "contact list" page

Next to the sidebar options "Home" and "Messages", create a "Contacts" or "Network" page.

  • See a phonebook style view of all your first degree contacts with sort and filter
  • provide a user browsing view so you can browse all 2nd degree contacts that you may or may not want to follow

Optional, but would be cool to provide a "visualization" mode where you see your network in an actual graph like the tool that @Dletta created a long time ago for Gun.

How to search post content. Hashtags?

How do we implement the searching of posts and not just searching of users?

Is it feasible to search the content of every post of everyone within 2 degrees? If not, is it more feasible if you're only searching through hashtags?


Hashtags could be implemented through a field like this, below the existing text input box: https://github.com/developit/preact-token-input

Does each hashtag become it's own global index? eg. All posts with "harrypotter" tag are added to a node like ('tags').('harrypotter').(postAddress)? Would that make it more performant to find relevant details? If so, does it defeat the purpose of the degrees of separation (first finding results from 1st degree, then from 2nd degree, then 3rd)?

Track last login times for recap experience

Add a node on the user graph for “login times”.

That way, we can have a “get caught up” query AKA “show me everything that has a timestamp from my last login until now”.

This would be an alternative to tracking “seen” events for every single post on the timeline. although maybe tracking seen status on posts is still desirable.

Detect updates

Iris should detect updates of source files and show a reload button to refresh files, data and service worker if needed?

iris.to down?

Hi there, I have been exploring Iris.to a bit (and some alternatives like https://github.com/fiatjaf/nostr ) However, it appears to me that the primary Gun DB peer for iris.to is down right now? When using the webapp, the little connection icon in the top-left says that I am connected to 0 peers.

Lot of issues (with a local gun server)

I've hardcoded my local gun server and disabled the remotes:

// DEFAULT_PEERS['https://gun-rs.iris.to/gun'] = {};
// DEFAULT_PEERS['https://gun-us.herokuapp.com/gun'] = {};
DEFAULT_PEERS['http://localhost:8765/gun'] = {};

Then I tried to test iris msg on firefox and chrome on the same machine. Almost nothing worked as expected, I've recorded a video because it's easier then explaining: https://youtu.be/EQQmgVxIy_4

Code for local gun server:

const GUN = require('gun')
const server = require('http').createServer().listen(8765);
const gun = GUN({
        radisk: false,
        localStorage: false,
        web: server
});

Installed gun via npm: "gun": "^0.2020.1235"

Implement something like the new Twitter Circles

https://www.engadget.com/twitter-circles-test-183333627.html

Twitter has just started testing a new feature to limit posts to a circle of 150 people (dunbar!!) instead of going full public.

To me, this seems like a really nice solution for people. You don't need a separate "priv" account for closer friends. And you don't need to manage a bunch of private groups.

In Iris, I suppose this would involve creating an encrypted list of 150 of your friends. You share the read key to these people. Then you can always revoke a read key from someone if you remove them from the list.

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.