No description
Find a file
Bruno Windels 300529b7c5 write sync token first
in case we get a TransactionInactiveError,
we have at least written the sync token
and won't repeat the same sync request
2020-10-01 14:38:54 +02:00
assets extract manifest out of build script and have both (non)-maskable icons 2020-09-24 11:15:15 +02:00
doc Merge branch 'master' into bwindels/memberlist 2020-08-19 12:13:38 +02:00
prototypes prototype using await to see if it makes any difference 2020-09-28 16:06:41 +02:00
scripts don't include corejs promise polyfill anymore 2020-09-28 15:28:22 +02:00
src write sync token first 2020-10-01 14:38:54 +02:00
.editorconfig wip 2019-02-17 23:58:01 +01:00
.eslintrc.js update ecmascript version to 2020 so eslint permits optional chaining 2020-08-19 11:50:26 +02:00
.gitignore don't commit lib dir 2020-08-27 19:51:32 +02:00
codestyle.md add some codestyle thoughts 2020-09-03 11:28:27 +02:00
index.html load worker in main and pass paths so it works both on compiled and non-compiled 2020-09-10 18:41:23 +02:00
LICENSE add full license text 2020-08-05 18:40:45 +02:00
package-lock.json Use postcss plugins to fix flexbox bugs in IE11 and lack of css vars 2020-08-07 18:15:53 +01:00
package.json release v0.1.2 2020-09-28 15:38:27 +02:00
README.md Update README.md 2020-08-13 08:09:30 +00:00
TODO.md WIP 2020-08-05 18:17:35 +01:00
yarn.lock use our fork of es6-promise with flush exposed as the promise polyfill 2020-09-28 15:27:38 +02:00

Hydrogen

A minimal Matrix chat client, focused on performance, offline functionality, and broad browser support. This is work in progress and not yet ready for primetime. We're currently not accepting any externally reported issues (features, bug reports, ...) at this time.

Goals

Hydrogen's goals are:

  • Work well on desktop as well as mobile browsers
  • UI components can be easily used in isolation
  • It is a standalone webapp, but can also be easily embedded into an existing website/webapp to add chat capabilities.
  • Loading (unused) parts of the application after initial page load should be supported

Status

Hydrogen 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.

Why

For every interaction or network response (syncing, filling a gap), Hydrogen 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

Try it locally by running npm install dev (only the first time) and npm start in the terminal, and point your browser to http://localhost:3000.