:IF: Friends - the messenger you'll never want to move away from

ha! @happybeing you’re a genius!

the fork resolution you implemented instantly repaired my nadir account: (in the screenshot again running through the last release without fork resolution)

but as you can see there’s a few pads with only read access that are still forked

when running with the fork resolving version of dweb:

no errors on scratchpads fetches anymore, the riddim profile loads correctly, everything works just as expected :tada:

6 Likes

I can copy and paste like the best! :laughing:

Great news, I’ll publish a new release as soon as I can (probably a day or two).

3 Likes

We demand a new release now.

I will remind you, my ferrophillic bacteria can be unleashed at any time 《/Medvedev》

here we go - new friends release with encryption right from the first friendship request live on mainnet now :slight_smile:

I did some tests to validate everything runs as expected. the new friends release does generate a 2048bit RSA key to encrypt/decrypt (a 256bit AES key and with that) friendship requests and handshake data during the WebRTC handshake

updated state:

  • dweb watermark
  • route upgrades as per dwebs upgrade
  • opening friends avatars in larger modal
  • showing your own avatar pic in the messenger somewhere (on the left side above your friends maybe ..?)
  • revisiting translations / locations where text is visible
  • Interface Languages: English, Deutsch, Français, Español, Български, 日本語, 한국어, 中文
  • scrolling when too many friends
  • using asymmetric encryption to exchange encrypted messages (offer/answer/offline messages) in the public scratchpads
  • privacy anonymity with friends - chapter in readme; graphic to show message flow/connections what is communicated where? (thank you @Toivo)
  • spinner for sending/answering friendship requests
  • ‘last seen online’ display for friends
  • simplifying and documenting external stylesheets for easier theming of friends
  • implementing plugins (loaded from autonomi) as JavaScript Webcomponents.
  • more extensive profile pages
  • code cleaning :smiley:
  • extended states (free for chat, afk, DND, show offline)
  • SDK for plugins
  • offline messages (simply utilizing the handshake scratchpads - message encrypted via public key of a asymmetric public key read from friends profile)
  • optionally persisting chat history with friends via scratchpads
  • separate view in chat with persisted files - maybe categorized by type (pictures / audio / video / others)
  • display ANT/gas balance (just here this late because I hope for @happybeing to implement the needed route before I reach this point :smiley: I guess I’ll go for a PR for dweb if it is not implemented here :smiley: )
  • upload avatar in-app (same as point above)
  • releasing a python version of smokesigns (name already reserved)
  • and creating a simple demo on how to use it to connect (from everywhere in the world) via WebRTC to e.g. a locally running Raspberry Pi with a camera and fetching a picture it takes with a pi-camera
  • python terminal chat (friends compatible - only selecting friends and chatting with them as text only; no adding/removing of friends etc)
  • the whole Friends app as JS WebComponent
  • import and use root private key (different from the one generally used by dweb)
  • create invite (send coin to a private key and encrypt it) → share a link leading to the info
  • Friends bundled with dweb via Tauri as standalone app
  • Friends bundled with dweb via Tauri as standalone app for mobile (thank you for this task @happybeing :stuck_out_tongue: )
  • multi session / multi user chats (chat groups!)
  • in-app feedback (anonymously writing to feedback-scratchpad that I then will check for new feedback :smiley: )
  • audio chat
  • video chat (@Tom1 that’s you ;D )
  • screen sharing on audio/video chat
  • account recovery through multiple other friends (multisig/multi-decrypt of owner-secret)
  • revisiting the need for a companion app to break into symmetric nat
    • checking the possibility to route messages through autonomi via its kademlia routing client → client if direct messaging is not available or not desired :smiley:

since it’s not the most positive user experience to always start with empty chat history and to not be able to send messages to other people because people on friends are rarely online these days … I’m seriously thinking about moving up offline messages/chat history persisting in my priority list and doing that immediately after the ‘last seen’ feature.


ps: to have the best user experience I recommend using self compiled dweb from the branch

or to wait a bit until this is part of main and officially released :slight_smile:

10 Likes

here we go - “last seen info” (if there is no info - the peer didn’t start friends with new version yet ever - so offline for super long … at least 3 minutes or so for now :smiley: )

ps:

@Southside I won’t log into my riddim account yet (I think for another few days) because I want to make sure @happybeing has a nicely forked scratchpad at hand if he needs one for debugging in the process of releasing the new dweb version (and friends tends to immediately repair all broken pads when running with the new dweb version)

pps:

ha - funny - right :smiley: it may indeed find a last seen date even if the peer didn’t use the latest release xD

…but I need to fix that design there … not ideal with that line break … in the French version too …

6 Likes

aaaaand to mention it:

from what I see mainnet is repeatedly a bit slowish … but after friending 2 accounts of mine they immediately connected

5 Likes

FYI I expect to release the dweb update later today.

4 Likes

I may have an addition for PUTting scratchpads using the scratchpad_update that can run into retry loops on forks I think … we’ll see …

2 Likes

Cool. I have a generic retry function that takes a closure which you can use to simplify that. Search for retry or retries and you will find it and places I use it to wrap calls to the APIs.

3 Likes

the issue is I suspect that scratchpad_update might resulting in a forking error needs to use scratchpad_put with manual scratchpad creation (counter+1 of the forked version) to resolve the fork and put a new version … just re-running the update seems to kind of work because eventually it doesn’t see the fork and just updates … but that’s a minute-long retry-loop …

3 Likes

ok friends user!

if you open the developer tools and see something like that while friends is running:

image

this means that you

  1. need a (not yet released) new version of dweb

which does this:

somehow I hoped we would get away without it … either you wait for a new release or you self-build and run from


when running the new version you need to use a button in the friends settings:

  1. regenerate your encryption keys manually


sorry for the inconveniences … those fake forks (+changing behavior in maidsafe libs + that nobody expected forks + there was no fork handling in place anywhere) created quite some trouble all over the place …

ps:
… with the next dweb release I’ll just remind everyone that it might be beneficial to push that button …

5 Likes

and to make friends a more enjoyable experience the next 2(-3) tasks will be:

  • message persisting & offline messages (writing message history (additionally) to a scratchpad → offline sent files will be uploaded and linked; not entirely sure on how to do it for files when being connected - I guess then there will be the option to deselect persisting those files in parallel to sending them via WebRTC
    all files appended will be sent via immutable data upload with the next release; deduplication and sending the datamap address will make forwarding files fast and inexpensive; and getting a file from someone and the file disappearing again because of hitting f5 is annoying anyway … it simplifies a lot of things and the benefit of saving some cents are not worth the downsides)

  • stealth mode (not even trying to do WebRTC - slower messaging but if you can connect to autonomi you can send you friends messages; and if they use offline messaging they can answer)

  • sessions that are not the ‘active session’ will switch to stealth mode and just consume offline messages in intervals

a bit off the outlined plan but I’m annoyed by the empty screens and @Southside complaining that connections never work for him :smiley: (and vpn seeming to be an issue for WebRTC …) :smiley:

with encryption in place we can just encrypt our DMs and store them in public scratchpads now + anybody with WebRTC issues can use friends in slo-mo :man_shrugging:

…the systematic will be optimized at some point to have infinite history with a chain of graphEntries / maybe just using a dweb history object and collecting chat data in a scratchpad until it is a full chunk … but this first iteration will just have 1 scratchpad that optionally points to immutable data on the network

8 Likes

just a mini-facelift today because I don’t have enough time for the greater tasks above but you’re right - that’s not encouraging and without it it looks so much cleaner :slight_smile:

@Southside you’re a great tester my friend =)

and just a nice detail I think I never mentioned :smiley:

when you make the window large and click on your friends profile pics you can see them in their full greatness :smiley:

EDIT:

and I guess this means that we need to be able to read old encrypted data → the keys must be known even if they change at some point for whatever reason → the current way to get public/private keys is non-deterministic so that’s not good → one of the next updates will include RSA keys to be derived in some way from account package …

5 Likes

Friends of Friends (and Atlas) should update dweb again following this release a few minutes ago: Dweb - web publishing, RESTful web apps, versioned data and - #299 by happybeing

5 Likes

I’m online in Friends using the new Dweb version. I can’t add southside or aatonnomicc though as ‘Profile not found’. And the request to riddim hasn’t been accepted. I’ve done the Regenerate key. So I have no one to talk to but my main concern is to see if it still works for me or if something is still broken. I’ll be online for another couple of hours but I’ll leave the client running all day. My peer id is jaded_old_storage_guy

2 Likes

I’ll be on line in 2 min see if we can connect

just sent you a friend request :slight_smile:

1 Like

Thank you! I accepted it but it shows you as being offline.

1 Like

@storage_guy you there ???

1 Like

We’re friends now! I thought I’d messed it up by doing the Regenerate key when the problem was something else. This is really good news. Not just for me but everyone because if even someone as ham fisted as myself can’t mess it up is hope for getting anyone in.

3 Likes