Name: patchbay
Owner: Secure Scuttlebutt Consortium
Description: An alternative Secure Scuttlebutt client interface that is fully compatible with Patchwork
Created: 2016-05-11 01:38:55.0
Updated: 2018-05-23 11:19:56.0
Pushed: 2018-05-23 11:19:53.0
Homepage: http://www.scuttlebutt.nz
Size: 3133
Language: JavaScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Patchbay is a scuttlebutt client designed to be easy to modify and extend. It uses the same database as Patchwork and Patchfoo, so you can easily take it for a spin with your existing identity.
Patchbay was created by Dominic Tarr towards the end of the life of Patchwork v1.
It was born our out of the observation that maintaining a large client apps can be really hard work.
Patchbay was designed to sidestep this by using some technology (depject
) to make parts easier to swap and extend.
Patchbay now shares a common core library (patchcore
) with Patchwork, and connects this in using the depject
This is another experiment in sharing useful code and mainmtenance.
Current features boasted:
Download easy installer for Mac / Windows / Linux here : https://github.com/ssbc/patchbay/releases
If you'd like to hack on Patchbay, check out the Developer Install below.
CmdOrCtrl
is the command
key on Apple keyboards or the ctrl
key on PC keyboards.
h
/ CmdOrCtrl+Shift+]
: tabs leftj
/ CmdOrCtrl+Shift+[
: tabs rightx
/ CmdOrCtrl+w
: close tabCmdOrCtrl+Shift+w
will close the current windowj
: next message (down)
k
: previous message
o
: open message thread (and scroll to position of this message in that thread)
osing : cttrl + enter = post
Nav bar thing
: start a person query
: start a channel query
: start a search query
: start a navigation (e.g. /public) - need to re-instate suggestions for this
can also paste a message id (starts with `%`) in here to navigate to it. Same with blobs (`&`)
eveloper Install
odium has some build dependencies. On ubuntu systems the following might help:
sudo apt-get install m4 libtool eclipse-cdt-autotools
acOS you may need the following packages installed (in this example, via [Homebrew](https://brew.sh/)):
brew install libtool automake autoconf
Easy Install
runs an embedded sbot with all the right plugins already installed.
git clone https://github.com/ssbc/patchbay.git cd patchbay npm install npm run rebuild
hbay doesn't give you a way to join pubs yet, so this is good if you've already done that with another client (like Patchwork).
Harder Install (full dev setup)
all a standalone scuttlebot (your gossip server)
npm install scuttlebot@latest -g
sbot server
sbot plugins.install ssb-about sbot plugins.install ssb-backlinks sbot plugins.install ssb-search # for search sbot plugins.install ssb-chess-db # for chess sbot plugins.install ssb-private # for private messages sbot plugins.install ssb-meme # for image search
After that you need to make sure that .ssb/config reads: “ssb-chess-db”: “ssbChessIndex” for chess to work.
art your sbot, then (optionally) use an invite code. This will give you your first friend, from which point you can find others:
sbot invite.accept LONG_INVITE_CODE_MAYBE_IN_QUOTES
all Patchbay
git clone https://github.com/ssbc/patchbay.git cd patchbay npm install npm run rebuild
unning the desktop app
mode (embedded sbot):
npm start
er mode:
sbot server
npm run dev
evelopment
Key depject modules in Patchbay
's a quick high level overview of the depject modules you're going to want to know about:
`app.html.app`
top level module which starts the front end js.
`app.sync.initialise`
llection of function which are called on app start.
things like load css into the app, set up custom listeners, set default settings
`app.sync.goTo(location)`
function you call when you want to open a new location.
ation` can be a string (like a message or blob id) or an object.
- some locations are _normalised_ before being passed onto the router.
k out `router.async.normalise` for explicit detail.
`router.sync.router`
is the module where you can add routes to the app.
is ultimately reduced along with all other `router.sync.router` modules into the final router.
`app.html.settings`
ng modules here will add settings sections to the settings page (`app.page.settings`).
How to add a new page
to add a 'cats' page to the app:
d a file `app/page/cats.js` which gives `app.page.cats`
ll the router to send people browsing to location `{page: 'cats'}` to send them to this page
route will look like `[location => location.page === 'cats', api.app.page.cats]`
Note the normaliser will automaticall turn location `/cats` to `{page: 'cats'}`
d a link somewhere which will trigger that route:
e.g. activate`api.app.sync.goTo('/cats')` onclick
e.g. add a link `<a href='/cats'>Cats!</a>` (which will be clicked up by listeners)
Module graph
!
icense