This repository has been archived on 2022-08-19. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Bruno Windels fc050706b7 newline 2019-09-08 11:54:51 +02:00
doc login and session picker view models, sessions store 2019-07-31 00:06:53 +02:00
prototypes prototypes for lumia idb changes (removing array keys, etc ...) 2019-06-26 22:19:40 +02:00
scripts add non-caching server for local dev 2019-02-16 02:57:19 +01:00
src some minimal styling for login and session picker 2019-09-08 10:40:05 +02:00
.editorconfig wip 2019-02-17 23:58:01 +01:00
.eslintrc.js its syncing, sort off 2019-02-10 21:25:46 +01:00
.gitignore ignore bundle 2019-06-26 22:20:01 +02:00
README.md newline 2019-09-08 11:54:51 +02:00
index-build-debug.html page to debug app on mobile phones without remote access to tools 2019-06-26 22:19:40 +02:00
index-build.html build bundled version 2019-06-23 23:38:30 +02:00
index.html apply css from prototype, other small changes, keep scroll at bottom 2019-06-16 15:21:20 +02:00
package-lock.json rename morpheus to brawl 2019-06-14 23:58:39 +02:00
package.json build bundled version 2019-06-23 23:38:30 +02:00
rollup.config.js build bundled version 2019-06-23 23:38:30 +02:00
yarn.lock build bundled version 2019-06-23 23:38:30 +02:00

README.md

Brawl

A minimal Matrix chat client, focused on performance, offline functionality and working on my Lumia 950 Windows Phone.

Status

Brawl can currently log you in, or pick an existing session, sync already joined rooms, fill gaps in the timeline, and send text messages. Everything is stored locally.

Showing multiple sessions, and sending messages

Why

I started writing Brawl both to have a functional matrix client on my aging phone, and to play around with some ideas I had how to use indexeddb optimally in a matrix client.

For every interaction or network response (syncing, filling a gap), Brawl starts a transaction in indexedb, and only commits it once everything went well. This helps to keep your storage always in a consistent state. As little data is kept in memory as well, and while scrolling in the above GIF, everything is loaded straight from the storage.

If you find this interesting, feel free to reach me at @bwindels:matrix.org.

How to use

I haven't made a deployment script yet for this, so for now you need to locally yarn start or npm start and point your browser to http://localhost:3000.