the fork resolution you implemented instantly repaired my nadir account: (in the screenshot again running through the last release without fork resolution)
here we go - new friends release with encryption right from the first friendship request live on mainnet now
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
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
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 I guess I’ll go for a PR for dweb if it is not implemented here )
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 )
multi session / multi user chats (chat groups!)
in-app feedback (anonymously writing to feedback-scratchpad that I then will check for new feedback )
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
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
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 )
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)
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.
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 …
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 …
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 (and vpn seeming to be an issue for WebRTC …)
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
…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
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
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 …
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
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.