You are reading content from Scuttlebutt
@SoapDog (Macbook Air M1) %Dgzt/lCcK2O0W5h9r+FA+cywboi/iayb+FHMZ31h8lg=.sha256

Release 2021.10.1

This release is a major overhaul of Patchfox. It is laying the necessary groundwork for Patchfox to support multiple backends — nodejs-based ssb-server, browser-ssb server, go-ssb server — and become a viable main client.

There is comprehensive information about the ROADMAP on SSB, and the tasks have been broken into discreet issues on Github.

Because there is so much going on, the release notes will give at a glance information only.

Revamped UI with theme support

Patchfox 2021-10-05 22-55-59.png

Every single package has been reworked to support the new design language used in Patchfox. You can now use the little palette at the end of the main navigation bar to switch among the available themes. Your selected theme will be remembered.

For the developer-curious among you, I replaced the old <i>Spectre2 CSS + Augmented UI CSS</i> based layout with <i>Tailwind CSS + DaisyUI</i>.

This represents two months of work and is the necessary foundation to move the ROADMAP forward. Using the new components and layout framework, I'll be able to code more complex packages such as the private messaging feature.

Support Multiple Identities / Connections

This release adds support for using multiple identities and connections with Patchfox. The settings package has been enhanced to allow you to add as many identities as you want.

An account switcher is provided in the top-right corner of the UI. Selecting an identity there will open a new tab using that identity.

Patchfox 2021-10-05 22-57-20.png
Identity switcher modal dialog.

Developers can now use ssb.platform to detect what is the current running backend, and use the supportedPlatforms property in the package declaration to make sure the package only loads for supported platforms.

Be aware that the only supported backend is nodejs-ssb at the moment. Trying to add a go-ssb or browser-ssb identity will work, but connecting to them will not work as expected since the packages have not been patched to handle them. Baby steps, baby steps...

Fixes & Improvements

  • Made packages more backend agnostic by removing direct calls to nodejs-ssb-only features. For cases where this was not possible, made sure they detect what is the current backend before attempting to use such features.
  • Provided ways for package developers to flag which backends their package supports, and also detect the running backend at runtime.
  • Removed hardcoded occurrences of localhost to fetch blobs. Now it uses the same host and port as the remote in settings.

This may seem like a minor update, but this is actually two months of a lot of work. I had to change every single component in Patchfox, that is most of the files. I also had to rearchitect how it works internally so that it can be evolved into a multi-connection/multi-identity client — the first of its kind IIRC — and be able to support the exciting new servers that our friends are working on.

All this work was possible because of the grant received from the butt council. Thank you.

@SoapDog (Macbook Air M1) %lTLKMnEE64S7LNdZrFxyUwIGRyV9rn8DxeGwtdihPNo=.sha256

of course I found a bug as soon as I shipped 2021.10.1 to all stores... So, if you try to reply to a thread it breaks because I forgot to require <Spinner> component in the post compose view. I have already fixed it and will issue a 2021.10.2 ASAP.

I tested everything I could think before releasing, including posting new messages. I forgot to test replying to messages ¬¬

Anyway, I will post the Patchfox OC update tomorrow. I have been working on this since morning and it is already 23:10 in here.

@SoapDog (Macbook Air M1) %afOW83UUP5B8r587jOR3YFIJqHjOEvOfOPj//Yc4pN8=.sha256

Version 2021.10.2 is live on AMO and Chrome Web Store. Waiting review for MS Edge store.

User has not chosen to be hosted publicly
@SoapDog (Macbook Air M1) %EYG7Iahd1B9Ida+pzeUsPlVfukgYXnmp+ZL3qdcygpY=.sha256

Dave [ iOS ],

Thanks a lot for the kind words my friend. It has been a lot of work. Also, Patchfox is not a near and organised codebase like the other clients. It is quite messy sometimes because it kinda reflects who I am, and I'm a bit chaotic. To be honest, the only file that gives me nightmares there is ssb.js which has more than a thousand lines of crappy copy and paste, and duplicated code. That is the next focus for reworking stuff.

I'm quite happy with this new version, I think it sets the stage for building a better Patchfox, one suitable to be used as a main client.

@Rabble %ouHhxT7nna+HFSZHyzvndgxvt0B3u4LA/cfSc61dCkc=.sha256

It's great to see it in chrome, i'd assumed it was only firefox thing.

Excuse my ignorance, but if you connected to a cloud hosted sbot would patchfox need to be a browser extension?

@SoapDog (Macbook Air M1) %K2U4UXASSxOCohztIl34oPyYc4NGykheJUCsWgU3dkM=.sha256

@Rabble part of the roadmap for the recent funding request included releasing Patchfox on other browsers. It is currently available for Firefox, Chrome, Vivaldi, Microsoft Edge, and Brave. The only missing browsers are Safari and Opera. Safari takes more work to ship. Opera is not replying to my messages.

In theory Patchfox can operate like #tightbeam and be pointed towards a remote sbot. That already works. For example, I have both my local identity and also the remote @SoapDog identity running here. @SoapDog is running on a Surface with a fixed IP here on my LAN, so as long as the machine is up, I can access its sbot from the Macboook Air.

I've toyed with the idea of making a side-version of Patchfox that would just be a good old webapp. The main challenges are that it uses some WebExtension APIs internally to create tabs and to store data — such as secrets — and I'm not sure if the equivalent APIs from the browser are safe enough. I guess they are but I'm not a specialist; I guess specialists would say that storing secrets using WebExtension Storage APIs is not safe either.

I plan to abstract that direct WebExtension API usage into something that can be used both in a WebExtension context and maybe a Web context as well.

You'd lose the tight integration with the browser though. Stuff such as omnibox integration, contextual menus...

Join Scuttlebutt now