[neon/forks/libquotient]: Summary of bulk changes made

KDE Git Services - Bulk Change null at kde.org
Thu Oct 31 11:08:11 GMT 2024


Git repository change summary for neon/forks/libquotient
Pushed by jriddell into branch 'Neon/unstable'.
Changed from 0000000000000000000000000000000000000000 to c49f69b619a42ec31c74fd2c8f9c7e9d9d9b4ec0
Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository.

This change contains the following new commits:

Git commit 7abdc7ec386776602758d84edc6b583d6dad4ecd by Kitsune Ral on 05/04/2016 at 17:46..
Imported the current source tree from Quaternion/lib.
https://invent.kde.org/neon/forks/libquotient/-/commit/7abdc7ec386776602758d84edc6b583d6dad4ecd

Git commit 6b46f1e30d14ac570274c49c47dbe1319c66e42d by Kitsune Ral on 05/04/2016 at 18:11..
Added .gitignore
https://invent.kde.org/neon/forks/libquotient/-/commit/6b46f1e30d14ac570274c49c47dbe1319c66e42d

Git commit 53e91fb7a4c94909829f17388f4a0687b205e6fb by Kitsune Ral on 05/04/2016 at 18:21..
Took README.md from Quaternion, with minor redactions.
https://invent.kde.org/neon/forks/libquotient/-/commit/53e91fb7a4c94909829f17388f4a0687b205e6fb

Git commit ad59484558ac1ac6df15a0fcaf749b2887ae34b3 by Kitsune Ral on 05/04/2016 at 18:49..
KCoreAddons imported.
https://invent.kde.org/neon/forks/libquotient/-/commit/ad59484558ac1ac6df15a0fcaf749b2887ae34b3

Git commit aeb45da77273f108102149005a93db29a2db5a16 by Kitsune Ral on 05/04/2016 at 20:48..
CMakeLists to build a (so far only static) library.
https://invent.kde.org/neon/forks/libquotient/-/commit/aeb45da77273f108102149005a93db29a2db5a16

Git commit 7bf926aeb3502712aa04b915e7b404b411b51599 by David A Roberts on 07/04/2016 at 09:04..
Allow Connections to be used in QML.
https://invent.kde.org/neon/forks/libquotient/-/commit/7bf926aeb3502712aa04b915e7b404b411b51599

Git commit c73b1c431514188449768d5c6e04dd55254bf13e by Kitsune Ral on 07/04/2016 at 22:49..
Use class instead of struct to remove warning

Originally by Felix Rohrbach (kde at fxrh.de)
https://invent.kde.org/neon/forks/libquotient/-/commit/c73b1c431514188449768d5c6e04dd55254bf13e

Git commit dcc7ce47b6756548402956dc75e9a14a5d5ad759 by Kitsune Ral on 07/04/2016 at 23:13..
Rename Room::messages to Room::messageEvents

Originally by Felx Rohrbach (kde at fxrh.de)
https://invent.kde.org/neon/forks/libquotient/-/commit/dcc7ce47b6756548402956dc75e9a14a5d5ad759

Git commit 123f528d5bb7ce72da34c703232f2aa0e556244f by KitsuneRal on 08/04/2016 at 00:53..
Merge pull request #1 from davidar/master

Allow Connections to be used in QML.
https://invent.kde.org/neon/forks/libquotient/-/commit/123f528d5bb7ce72da34c703232f2aa0e556244f

Git commit 8ddbecbfeac5d35d254a642d24beeb344c33babd by David A Roberts on 09/04/2016 at 04:06..
Make Connection parent of Room.
https://invent.kde.org/neon/forks/libquotient/-/commit/8ddbecbfeac5d35d254a642d24beeb344c33babd

Git commit 32bd6ce054a77d760d98eb3f13fa58704980924b by Felix Rohrbach on 09/04/2016 at 16:16..
Merge pull request #1 from davidar/master

Make Connection parent of Room.
https://invent.kde.org/neon/forks/libquotient/-/commit/32bd6ce054a77d760d98eb3f13fa58704980924b

Git commit a53779d8ebb045e5bc5304f96120fa52d8612d44 by Felix Rohrbach on 09/04/2016 at 19:54..
Implement different types of messages
https://invent.kde.org/neon/forks/libquotient/-/commit/a53779d8ebb045e5bc5304f96120fa52d8612d44

Git commit e074be6a42d4fbc9fd76566365f3ef148a8e7bdd by Felix Rohrbach on 11/04/2016 at 00:18..
Missing method in the last commit
https://invent.kde.org/neon/forks/libquotient/-/commit/e074be6a42d4fbc9fd76566365f3ef148a8e7bdd

Git commit af5fb5e0ffec87d59a7b0df778d226efc3132e57 by Kitsune Ral on 11/04/2016 at 01:44..
Minor fixes and cleanup

1. Remove accidental trailing \
2. Show the contents of NetworkError in logs
https://invent.kde.org/neon/forks/libquotient/-/commit/af5fb5e0ffec87d59a7b0df778d226efc3132e57

Git commit 1f52b9cc31105d78fc24251fa201d9ae43dd8c33 by Kitsune Ral on 11/04/2016 at 01:45..
Don't put excess whitespaces in log lines before QStrings - Qt inserts them automatically.
https://invent.kde.org/neon/forks/libquotient/-/commit/1f52b9cc31105d78fc24251fa201d9ae43dd8c33

Git commit 48e7e8108a62fe990972256143b8d71180312c8b by Kitsune Ral on 11/04/2016 at 01:46..
Use a more telling log line than !!!!
https://invent.kde.org/neon/forks/libquotient/-/commit/48e7e8108a62fe990972256143b8d71180312c8b

Git commit 8045e36b6b8597120f46e0d4d42cf87ac790351b by Kitsune Ral on 11/04/2016 at 03:27..
Drop unneeded check and debug message
https://invent.kde.org/neon/forks/libquotient/-/commit/8045e36b6b8597120f46e0d4d42cf87ac790351b

Git commit def5a08b4d360f6035ad4c420f0206ad6f96e0bd by Kitsune Ral on 11/04/2016 at 03:45..
Factor out the code that searches an insertion point in a timeline.

This is used once in the library and, I guess, twice more in the
Quaternion. Implemented as a template function that is equally suitable
for Event and Message, and any container that supports STL-style
iterators (QList and other Qt containers do).
https://invent.kde.org/neon/forks/libquotient/-/commit/def5a08b4d360f6035ad4c420f0206ad6f96e0bd

Git commit ba8b886e1e027ee1eadfc8fd66346bc0ad4a816b by Kitsune Ral on 11/04/2016 at 05:26..
Add more target_compile_features supported by CMake 3.1 and already used in the code.

See https://cmake.org/cmake/help/v3.1/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html#prop_gbl:CMAKE_CXX_KNOWN_FEATURES for the full list. All the newly added features are already implied by C++11 standard so for older CMakes -std=c++11 should cover all bases anyway.
https://invent.kde.org/neon/forks/libquotient/-/commit/ba8b886e1e027ee1eadfc8fd66346bc0ad4a816b

Git commit 9a1afe11b844174bd0fd4ce80d89e909fb25f638 by David A Roberts on 11/04/2016 at 08:39..
Add QMake project include file.
https://invent.kde.org/neon/forks/libquotient/-/commit/9a1afe11b844174bd0fd4ce80d89e909fb25f638

Git commit b5c8ca7b8b3ce4bcd8ddb45580d00876cc2b1c77 by David A Roberts on 11/04/2016 at 09:40..
Rename package.pri
https://invent.kde.org/neon/forks/libquotient/-/commit/b5c8ca7b8b3ce4bcd8ddb45580d00876cc2b1c77

Git commit 00a73167ca455370868f1f82257420f0cb399a15 by Felix Rohrbach on 11/04/2016 at 21:51..
Merge pull request #2 from KitsuneRal/code-maintenance

Code maintenance
https://invent.kde.org/neon/forks/libquotient/-/commit/00a73167ca455370868f1f82257420f0cb399a15

Git commit 0f6cb38896443cf104aa470eb1822bd2e49143f1 by David A Roberts on 12/04/2016 at 10:11..
Resolve Matrix SRV records.
https://invent.kde.org/neon/forks/libquotient/-/commit/0f6cb38896443cf104aa470eb1822bd2e49143f1

Git commit da90b601b06512e23ac66d0b301e1eafaf2b7bc2 by David A Roberts on 12/04/2016 at 10:31..
Merge remote-tracking branch 'upstream/master'
https://invent.kde.org/neon/forks/libquotient/-/commit/da90b601b06512e23ac66d0b301e1eafaf2b7bc2

Git commit deda947801d536dba9b59370867f205fe8aabaa8 by David A Roberts on 22/04/2016 at 02:44..
Allow login with token.
https://invent.kde.org/neon/forks/libquotient/-/commit/deda947801d536dba9b59370867f205fe8aabaa8

Git commit aa8b077499653b6ebf2d78136c75c801e6f99c29 by David A Roberts on 23/04/2016 at 02:54..
Room: Q_INVOKABLE
https://invent.kde.org/neon/forks/libquotient/-/commit/aa8b077499653b6ebf2d78136c75c801e6f99c29

Git commit 22a675a55ae2dac33a680531f4003fbfeb24ec39 by Felix Rohrbach on 01/05/2016 at 19:38..
Merge pull request #3 from davidar/master

Resolve Matrix SRV records.
https://invent.kde.org/neon/forks/libquotient/-/commit/22a675a55ae2dac33a680531f4003fbfeb24ec39

Git commit fb45e26b8ba9b5495e723cded3b6420b20b39b37 by Kitsune Ral on 02/05/2016 at 00:32..
Supply more information with User::nameChanged signal
https://invent.kde.org/neon/forks/libquotient/-/commit/fb45e26b8ba9b5495e723cded3b6420b20b39b37

Git commit 107b6fc4fc91d2cde3fc3d6ac4c532f1ef986e89 by Kitsune Ral on 02/05/2016 at 10:11..
Store left room members as well.

In particular, this will be needed to render room names according to the CS spec.
https://invent.kde.org/neon/forks/libquotient/-/commit/107b6fc4fc91d2cde3fc3d6ac4c532f1ef986e89

Git commit d5bde8fbf3f8a47fe1140f307be0dcd39d1c0307 by Kitsune Ral on 02/05/2016 at 10:22..
Deduplicated room check-and-creation code.
https://invent.kde.org/neon/forks/libquotient/-/commit/d5bde8fbf3f8a47fe1140f307be0dcd39d1c0307

Git commit 32b055f56287e97d84a4431a36909027991ef1fc by Kitsune Ral on 02/05/2016 at 10:22..
Change the way room members are stored to the one recommended by the CS spec.

According to section 11.2.2.3 of the CS spec, clients SHOULD follow a certain algorithm of making a non-ambiguous display name of a user in the room context. This algorithm implies checking whether other room members have the same display name. This commit prepares for implementation of the algorithm:

1. Use a hash map instead of a list to store room members. The external Room::users() API is kept intact.
2. Convenience CRUD methods are implemented to deal with the hash map.
3. An additional slot for user renaming is introduced (because renaming affects the hash map). Binding of actual signals is left for the next commit.
4. nullptr is the recommended representation of a null pointer since C++11. Use that and mandate compiler support of that.
https://invent.kde.org/neon/forks/libquotient/-/commit/32b055f56287e97d84a4431a36909027991ef1fc

Git commit abfdceda30179c7e7f6fcd72bcb994ee4a9bba5e by Kitsune Ral on 02/05/2016 at 10:22..
Mark read-only accessors in Room::Private as const.
https://invent.kde.org/neon/forks/libquotient/-/commit/abfdceda30179c7e7f6fcd72bcb994ee4a9bba5e

Git commit 0a3fab2d361b260aa280a4ac9e8a162977ec3534 by Kitsune Ral on 02/05/2016 at 10:22..
Introduced Room::roomMemberName(User*) that follows CS spec section 11.2.2.3
https://invent.kde.org/neon/forks/libquotient/-/commit/0a3fab2d361b260aa280a4ac9e8a162977ec3534

Git commit a83eee76db60d3df327a8d8b4ebf6158a2a6f033 by Kitsune Ral on 02/05/2016 at 10:22..
Calculate room displayname according to CS spec, with a new signal fired on a displayname update.

This changes the way displayname is supplied to a client application - instead of calculating immediately, displayname becomes a separate stored value that is refreshed with every change of the list of members, or the name, or the canonical alias. displaynameChanged signal is supplied to subscribe to these updates: in case of displaying a room in the roomlist a client should use this new signal instead of Room::namesChanged.
The displaname calculation algorithm is described in section 11.2.2.5 of the CS spec: https://matrix.org/docs/spec/r0.0.1/client_server.html#calculating-the-display-name-for-a-room
https://invent.kde.org/neon/forks/libquotient/-/commit/a83eee76db60d3df327a8d8b4ebf6158a2a6f033

Git commit b36a9f32b1fcdce404e9a0a8cb780ba2ab89c24b by Kitsune Ral on 02/05/2016 at 10:23..
Reworked room name calculation to get rid of do {} while (false)

(as requested at PR review)
https://invent.kde.org/neon/forks/libquotient/-/commit/b36a9f32b1fcdce404e9a0a8cb780ba2ab89c24b

Git commit 9a415111fefd0d21f8b4abbbe9af9066d78c971b by Kitsune Ral on 02/05/2016 at 14:05..
Actually connect User::nameChanged to Room; make a new Room::memberRenamed signal, which clients should use in the room context.

Processing changes of user displaynames is tricky: we have to not only deal with the currently renamed user but also with its past and new namesakes which might change representation due to that renaming. So in the worst case a single User::nameChanged signal may lead to three Room::memberRenamed references (and 3 user displaynames updated in the UI, respectively). And the newly added users should be taken care of in a similar manner, of course.
https://invent.kde.org/neon/forks/libquotient/-/commit/9a415111fefd0d21f8b4abbbe9af9066d78c971b

Git commit fc95edb7a63bcacb02418c55e15a1aa21ac080cd by Felix Rohrbach on 03/05/2016 at 17:59..
Merge pull request #4 from KitsuneRal/user-room-names2

Render display names of users and rooms according to the spec - take 2
https://invent.kde.org/neon/forks/libquotient/-/commit/fc95edb7a63bcacb02418c55e15a1aa21ac080cd

Git commit f638c58545ee0a159cae3e91e1ccb3089945930e by Kitsune Ral on 06/05/2016 at 13:11..
Add separate success() and failure() signals to BaseJob

This is to facilitate processing of job results (see further commits).
https://invent.kde.org/neon/forks/libquotient/-/commit/f638c58545ee0a159cae3e91e1ccb3089945930e

Git commit a3be7715910434cd8ef9d626b8c9c518e2d5fc40 by Kitsune Ral on 06/05/2016 at 13:35..
Make sure the QNetworkReply object is aborted at any failure and even silent destruction of the job
https://invent.kde.org/neon/forks/libquotient/-/commit/a3be7715910434cd8ef9d626b8c9c518e2d5fc40

Git commit c1de050c143a79361e6b183bbfa84fc2fdaef959 by Kitsune Ral on 06/05/2016 at 13:37..
Enhanced logging of job failures
https://invent.kde.org/neon/forks/libquotient/-/commit/c1de050c143a79361e6b183bbfa84fc2fdaef959

Git commit 0b7bee1e2600ee80554aa85b18d30ca1964535a0 by Kitsune Ral on 06/05/2016 at 14:36..
Use lambda captures instead of throwing job pointers around
https://invent.kde.org/neon/forks/libquotient/-/commit/0b7bee1e2600ee80554aa85b18d30ca1964535a0

Git commit 5a0e6080a6245aa2c68f254d7105f19629a5a654 by Kitsune Ral on 07/05/2016 at 09:14..
Minors: one fix, one cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/5a0e6080a6245aa2c68f254d7105f19629a5a654

Git commit 1cd8802c73ee3c0cc0095f8be30a9bbf3442c3ca by Felix Rohrbach on 08/05/2016 at 16:59..
Merge pull request #5 from KitsuneRal/basejob-improvement

Basejob improvement
https://invent.kde.org/neon/forks/libquotient/-/commit/1cd8802c73ee3c0cc0095f8be30a9bbf3442c3ca

Git commit fab6c26770827ce2b8ed8f5d06b3677b75a19cec by Kitsune Ral on 26/05/2016 at 01:47..
Introducing EventList class + minor fix

Now you can parse a JSON array into a list of events with a one-liner.
Also, fromMSecsSinceEpoch accepts a qint64, not quint64 - fixed the respective cast.
https://invent.kde.org/neon/forks/libquotient/-/commit/fab6c26770827ce2b8ed8f5d06b3677b75a19cec

Git commit 408853a4f327978c990cd65b071e7c6496a0b95c by KitsuneRal on 26/05/2016 at 01:49..
Merge pull request #7 from Fxrh/event-lists

Introducing EventList class + minor fix
https://invent.kde.org/neon/forks/libquotient/-/commit/408853a4f327978c990cd65b071e7c6496a0b95c

Git commit a48e46dd315c66c196626f280cedbf4f0fa52355 by Kitsune Ral on 26/05/2016 at 04:52..
Load a different set of event lists depending on the join state (and actually introduce EventList class)

This makes loading of room events more compliant with the spec, not trying to load from keys that are not supposed to be there. As a result of refactoring along the way, a dedicated QList<Event*> subclass is made that remembers the JSON key it should load from and actually load itself from a QJsonArray.
https://invent.kde.org/neon/forks/libquotient/-/commit/a48e46dd315c66c196626f280cedbf4f0fa52355

Git commit d5df4568d34487aea519ae97dd1666927dcfb62b by KitsuneRal on 26/05/2016 at 05:01..
Merge pull request #8 from Fxrh/event-lists

Load a different set of event lists depending on the join state (and actually introduce EventList class)
https://invent.kde.org/neon/forks/libquotient/-/commit/d5df4568d34487aea519ae97dd1666927dcfb62b

Git commit a2c08f646bf2d6fe0ce385940b5c1bb7b430d5fb by Kitsune Ral on 27/05/2016 at 07:49..
Don't assign the token twice

In a case when authentication doesn't even happen, PasswordLogin job
won't run. The better place to assign (and log) the token is in
Connection::connectWithToken(), therefore.
https://invent.kde.org/neon/forks/libquotient/-/commit/a2c08f646bf2d6fe0ce385940b5c1bb7b430d5fb

Git commit 5e6a0b961d1fc2162c5a7498f10bbd1a477f1ece by Kitsune Ral on 27/05/2016 at 07:51..
Use nullptr
https://invent.kde.org/neon/forks/libquotient/-/commit/5e6a0b961d1fc2162c5a7498f10bbd1a477f1ece

Git commit 028ed5afc18209064002c9f6aa34e08a228d471f by Kitsune Ral on 27/05/2016 at 11:03..
Enhance logging

1. Introduce QDebug manipulators and formatJson manipulator in particular - this allows to accommodate some changes in Qt's debug printing behaviour between versions.
2. Show JSON for some questionable objects (UnknownEvents, events with no event_id etc.)
3. Log the list of typing users and the user id when getting an avatar.
https://invent.kde.org/neon/forks/libquotient/-/commit/028ed5afc18209064002c9f6aa34e08a228d471f

Git commit 40195a814673fb8557a8b9c67a0f4d61191eb34e by Kitsune Ral on 27/05/2016 at 11:03..
Set the object name for each job, to make it clear which job has failed

And we don't need two log lines for timeouts.
https://invent.kde.org/neon/forks/libquotient/-/commit/40195a814673fb8557a8b9c67a0f4d61191eb34e

Git commit 46050cd59a7af8cc7d616fab1a80db95dc8b5b35 by Kitsune Ral on 27/05/2016 at 11:03..
Use 'override' keyword throughout job classes; constify apiPath(), query(), data()

Thanks to CLang model.
https://invent.kde.org/neon/forks/libquotient/-/commit/46050cd59a7af8cc7d616fab1a80db95dc8b5b35

Git commit 15699734c64c1e2359f9f1f3c74fd1f4c4e23a27 by Andrea Scarpino on 30/05/2016 at 21:59..
Require Qt 5.2.0
https://invent.kde.org/neon/forks/libquotient/-/commit/15699734c64c1e2359f9f1f3c74fd1f4c4e23a27

Git commit 43ecbf3135687b2e5a5a604a902f992139cce428 by KitsuneRal on 01/06/2016 at 11:58..
Merge pull request #9 from Fxrh/code-tweaks

Code tweaks
https://invent.kde.org/neon/forks/libquotient/-/commit/43ecbf3135687b2e5a5a604a902f992139cce428

Git commit c3b7873c1c0c78b271b9e04751f882b1e6c64ed8 by KitsuneRal on 01/06/2016 at 22:13..
Merge pull request #10 from ilpianista/master

Relax the Qt requirements down to 5.2.0
https://invent.kde.org/neon/forks/libquotient/-/commit/c3b7873c1c0c78b271b9e04751f882b1e6c64ed8

Git commit 879662932e4d51013193180eb330af731456761a by Felix Rohrbach on 02/06/2016 at 23:19..
First test with travis
https://invent.kde.org/neon/forks/libquotient/-/commit/879662932e4d51013193180eb330af731456761a

Git commit 9677930a4f2d94cd40315a17a3b9e1c09f9957ef by Felix Rohrbach on 02/06/2016 at 23:23..
Next test
https://invent.kde.org/neon/forks/libquotient/-/commit/9677930a4f2d94cd40315a17a3b9e1c09f9957ef

Git commit ddb04c4320b56626e6449ed6ba5261457ccab6a1 by Felix Rohrbach on 02/06/2016 at 23:26..
Bump version of ecm
https://invent.kde.org/neon/forks/libquotient/-/commit/ddb04c4320b56626e6449ed6ba5261457ccab6a1

Git commit 69c3aee424ce717af8743df0470e3a6433d43e02 by Felix Rohrbach on 05/06/2016 at 17:08..
Add missing licence file

The license header in the source files says we ship a copy of the LGPL
which we didn't.
https://invent.kde.org/neon/forks/libquotient/-/commit/69c3aee424ce717af8743df0470e3a6433d43e02

Git commit a808ecf29ed27247919b86a0b310bccdedf96197 by Kitsune Ral on 13/06/2016 at 11:23..
Dropped unused code

Previously Room::Private used to have a gotMessages() slot; now that it doesn't, it doesn't need to be a QObject either.
https://invent.kde.org/neon/forks/libquotient/-/commit/a808ecf29ed27247919b86a0b310bccdedf96197

Git commit 21d254df402bb4a22b23211b234ee3ea27396c83 by Kitsune Ral on 12/07/2016 at 11:17..
Added a missing #include
https://invent.kde.org/neon/forks/libquotient/-/commit/21d254df402bb4a22b23211b234ee3ea27396c83

Git commit e1e83e825dea1891740bd22c117d95d663fbcb50 by Kitsune Ral on 22/07/2016 at 08:55..
Removed unneeded Q_OBJECT macros (slots don't require Q_OBJECT to work).
https://invent.kde.org/neon/forks/libquotient/-/commit/e1e83e825dea1891740bd22c117d95d663fbcb50

Git commit 60e83eee94bbf31ebb5151232c750c88e589c3d7 by Kitsune Ral on 22/07/2016 at 09:09..
Separate errors of access denial kind to a different BaseJob error code as well + stability fixes

1. Introduce ContentAccessDenied error code to BaseJob to allow clients to treat access denial errors differently from other network errors.
2. Since parseJson() overrides are responsible for calling emitResult(), the "default" BaseJob::parseJson() should call emitResult() as well.
3. Make sure BaseJob::fail() doesn't crash in absence of QNetworkReply.
https://invent.kde.org/neon/forks/libquotient/-/commit/60e83eee94bbf31ebb5151232c750c88e589c3d7

Git commit 4134fa4133aedc824bcedc11402805773a2c6144 by Kitsune Ral on 22/07/2016 at 09:15..
Introduced LogoutJob

The job calls the /logout endpoint of CS API that invalidates the passed
access_token; a respective Connection::logout() method and
Connection::loggedOut() signal are added for use in clients.
https://invent.kde.org/neon/forks/libquotient/-/commit/4134fa4133aedc824bcedc11402805773a2c6144

Git commit dd2f1f29aa42dc2cbc1fa0163acd3a60e4d86f60 by Kitsune Ral on 25/07/2016 at 07:30..
Make sync failure handler emit loginError instead of connectionError in case of access denial
https://invent.kde.org/neon/forks/libquotient/-/commit/dd2f1f29aa42dc2cbc1fa0163acd3a60e4d86f60

Git commit 8e41220a812522d6ba53cf391a0cfc5355043b16 by Kitsune Ral on 26/07/2016 at 04:01..
Log creation/deletion of jobs (especially SyncJob)

Due to signal-slot processing it's not obvious when exactly each job object is deleted.
https://invent.kde.org/neon/forks/libquotient/-/commit/8e41220a812522d6ba53cf391a0cfc5355043b16

Git commit 3c11f55bfd2b626e330277255bb0c38fbbae84fa by Kitsune Ral on 26/07/2016 at 07:50..
Added a missing #include.
https://invent.kde.org/neon/forks/libquotient/-/commit/3c11f55bfd2b626e330277255bb0c38fbbae84fa

Git commit 2eb18a735a5f75a77387a211f4311222d00c2d6c by Kitsune Ral on 26/07/2016 at 07:51..
Rewritten BaseJob to not depend on KJob.

Some parts of the code were copied from the KCoreAddons sources - surprisingly few, in fact, mostly API with comments. With this commit, libqmatrixclient doesn't depend on KCoreAddons.
https://invent.kde.org/neon/forks/libquotient/-/commit/2eb18a735a5f75a77387a211f4311222d00c2d6c

Git commit 3254963c1ea587921d2a434839aa703b9aaff6cc by Kitsune Ral on 26/07/2016 at 07:51..
Split BaseJob::gotReply into checkReply and parseReply + internal tweaks to BaseJob

1. The externally (for derived classes) visible additions are checkReply() and parseReply() virtual methods, with gotReply becoming a mere dispatcher (and therefore a private method). Splitting gotReply() in that way allowed to remove boilerplate code from MediaThumbnailJob.
2. The internal tweak is using QScopedPointer<> to store pointers both to the Private object and to a QNetworkReply (with a special deleter that aborts the reply before destructing the object). This allows to remove desperate attempts to call reply->abort() wherever it's no more needed (and not aborting the in-flight replies seems to be a/the culprit of Quaternion after-exit hangs).
https://invent.kde.org/neon/forks/libquotient/-/commit/3254963c1ea587921d2a434839aa703b9aaff6cc

Git commit d8c3e31d34b8129dc24f52a7d726ff1206b90d48 by David A Roberts on 26/07/2016 at 09:37..
Update libqmatrixclient.pri
https://invent.kde.org/neon/forks/libquotient/-/commit/d8c3e31d34b8129dc24f52a7d726ff1206b90d48

Git commit 844d3362022d0278b07e1232460c1662e4fb61d2 by Kitsune Ral on 27/07/2016 at 05:54..
Introduce Status class + BaseJob::{checkReply,parseReply,parseJson} now return it

This better fixes the contract for derived job classes and simplifies error reporting. Methods error() and errorString() are kept for back-compatibility; status() returns a combination of them, conveniently packed into a Status object. For a quick status check, Status::good() is provided.
https://invent.kde.org/neon/forks/libquotient/-/commit/844d3362022d0278b07e1232460c1662e4fb61d2

Git commit c7f0142a3b1b92047612a5b8ada11ef231238ff6 by Kitsune Ral on 27/07/2016 at 10:22..
Removing kcoreaddons submodule
https://invent.kde.org/neon/forks/libquotient/-/commit/c7f0142a3b1b92047612a5b8ada11ef231238ff6

Git commit 67e761a7e62067cd511dee432ebd5f3e8313cecc by GitHub (on behalf of KitsuneRal) on 28/07/2016 at 07:49..
Merge pull request #14 from Fxrh/kitsune-sync-emits-loginerror

Make sync failure handler emit loginError instead of connectionError in case of access denial
https://invent.kde.org/neon/forks/libquotient/-/commit/67e761a7e62067cd511dee432ebd5f3e8313cecc

Git commit f6c623a27bcb5ec2fcc83930e500afb597a32a46 by Kitsune Ral on 28/07/2016 at 09:54..
Fixed double-emission of signal(s) on job timeout + general cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/f6c623a27bcb5ec2fcc83930e500afb597a32a46

Git commit 37bd50b22d65dfd6ae86322fc0bb5cd9825b6472 by Kitsune Ral on 28/07/2016 at 09:59..
Cleanup

Removed unused #includes, fixed incorrect #endif comment.
https://invent.kde.org/neon/forks/libquotient/-/commit/37bd50b22d65dfd6ae86322fc0bb5cd9825b6472

Git commit a5b4f5f989072b075bfb907e5f8f1497b0ab88cc by Kitsune Ral on 29/07/2016 at 11:10..
Added roomMembername() overload for userId, in addition to User*
https://invent.kde.org/neon/forks/libquotient/-/commit/a5b4f5f989072b075bfb907e5f8f1497b0ab88cc

Git commit 2ffb390231ee0793339f92d765495c59f8d84629 by Kitsune Ral on 15/08/2016 at 02:57..
Fixed a typo in the enum definition

Fortunately, the clients don't seem to use it atm.
https://invent.kde.org/neon/forks/libquotient/-/commit/2ffb390231ee0793339f92d765495c59f8d84629

Git commit cccd82a5f6cd74ffbec5d2fb5eac2ed9be64e531 by Kitsune Ral on 22/08/2016 at 07:19..
findInsertionPos: allow usage with polymorphic types

Basically, this commit allows the inserted item type to be different from those in the container, as in findInsertionPos(baseTypeContainer, derivedTypeItem). Of course both types should still provide timestamp() for comparison.
https://invent.kde.org/neon/forks/libquotient/-/commit/cccd82a5f6cd74ffbec5d2fb5eac2ed9be64e531

Git commit c2e38f28987b4fa273765b4234c6a57bdf75e446 by Kitsune Ral on 22/08/2016 at 07:20..
Minor cleanup

The two additional braces are due to the fact that array<> is a wrapper
around a C-style array, which means I'm initializing a sub-object with a
list initialization. Google -Wmissing-braces.
https://invent.kde.org/neon/forks/libquotient/-/commit/c2e38f28987b4fa273765b4234c6a57bdf75e446

Git commit fb6df81fa9f224c94118fd79fea91ae15559c7e3 by Kitsune Ral on 22/08/2016 at 07:22..
Replaced QList<> with QVector<> where appropriate + minor code cleanup

See https://marcmutz.wordpress.com/effective-qt/containers/ for the background and http://lists.qt-project.org/pipermail/development/2015-July/022283.html for the relevant flamewar in Qt dev mailing list.
https://invent.kde.org/neon/forks/libquotient/-/commit/fb6df81fa9f224c94118fd79fea91ae15559c7e3

Git commit ac0336ff600d8b978d3cdb68cd92b3425fe0b100 by GitHub (on behalf of KitsuneRal) on 22/08/2016 at 23:46..
Merge pull request #15 from Fxrh/kitsune-dropped-kcoreaddons

Upon discussion with @Fxrh in #quaternion, this now comes in master,
https://invent.kde.org/neon/forks/libquotient/-/commit/ac0336ff600d8b978d3cdb68cd92b3425fe0b100

Git commit 35ada9866f554ac407b3d52cb7d321f6e7ce0f2a by Kitsune Ral on 22/08/2016 at 23:56..
Fix compilation with Qt 5.2.1
https://invent.kde.org/neon/forks/libquotient/-/commit/35ada9866f554ac407b3d52cb7d321f6e7ce0f2a

Git commit af406da633d5566298ac2846d55e001749a2a146 by Kitsune Ral on 23/08/2016 at 00:03..
Restore accidentally merged-out find_package() lines
https://invent.kde.org/neon/forks/libquotient/-/commit/af406da633d5566298ac2846d55e001749a2a146

Git commit f233e33f212648a4c9313f5d53d9591b9318c12b by Kitsune Ral on 23/08/2016 at 02:58..
CheckAuthMethods: fixed parseJson() to return some value

It's been a warning with GCC/Clang but an error with Visual Studio.
https://invent.kde.org/neon/forks/libquotient/-/commit/f233e33f212648a4c9313f5d53d9591b9318c12b

Git commit 841570bfbc300959fc08fd9b79b62b5c9fbf78b6 by Kitsune Ral on 23/08/2016 at 04:33..
Drop KCoreAddons part; enable building with CLang besides GCC
https://invent.kde.org/neon/forks/libquotient/-/commit/841570bfbc300959fc08fd9b79b62b5c9fbf78b6

Git commit da52097f1c90d7286aff27a84fc14b6b0793ff97 by GitHub (on behalf of KitsuneRal) on 23/08/2016 at 04:46..
Merge pull request #19 from Fxrh/kitsune-travisci
https://invent.kde.org/neon/forks/libquotient/-/commit/da52097f1c90d7286aff27a84fc14b6b0793ff97

Git commit 77d45e9afa195f7d715a5074b16f16c6b2d15235 by GitHub (on behalf of Felix Rohrbach) on 23/08/2016 at 16:35..
Merge pull request #18 from Fxrh/kitsune-use-qvector-with-nonpointers

Replaced QList<> with QVector<> where appropriate + minor code cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/77d45e9afa195f7d715a5074b16f16c6b2d15235

Git commit 958675dccc0a308c02d490d0b246eade0123ce79 by Kitsune Ral on 24/08/2016 at 04:19..
Moved message content classes to a dedicated namespace
https://invent.kde.org/neon/forks/libquotient/-/commit/958675dccc0a308c02d490d0b246eade0123ce79

Git commit 581a6976eeb7c35930cb19e89eae0fd3bf11a785 by Kitsune Ral on 24/08/2016 at 05:29..
Move plain body from Base (former MessageEventContent) inside RoomMessageEvent

According to the spec, this key has the same status as msgtype: both should exist in any message. Besides, it's always supposed to be a plain text so there's no polymorphism allowed here.
https://invent.kde.org/neon/forks/libquotient/-/commit/581a6976eeb7c35930cb19e89eae0fd3bf11a785

Git commit 51dfcc732301b5fe0d8b8b5966b751ff35295ef4 by Kitsune Ral on 24/08/2016 at 08:13..
Drop unused (by code and by spec) hsob_ts value
https://invent.kde.org/neon/forks/libquotient/-/commit/51dfcc732301b5fe0d8b8b5966b751ff35295ef4

Git commit 596533a1840961857a51652f89c3a51435794d02 by Kitsune Ral on 24/08/2016 at 09:01..
Introduce TextContent + minor cleanup

TextContent is a class to deal with formatted (HTML, RTF, Markdown) text messages. Right now it only supports Vector's non-standard "formatted_body".
https://invent.kde.org/neon/forks/libquotient/-/commit/596533a1840961857a51652f89c3a51435794d02

Git commit 6a288217f1279fff1867fbd4c2d2b22e44e43d59 by Kitsune Ral on 25/08/2016 at 00:12..
Structured parsing, folded repetitive initialization code
https://invent.kde.org/neon/forks/libquotient/-/commit/6a288217f1279fff1867fbd4c2d2b22e44e43d59

Git commit 32ff7cd24bda52c889fd969a43adcf1f845b6e3a by Kitsune Ral on 29/08/2016 at 00:02..
Align AudioContent with the rest; special-case creation of VideoContent only

The spec is told to allow any event to have a thumbnail in future, and the thumbnail will reside under "content" JSON key rather than "info".
https://invent.kde.org/neon/forks/libquotient/-/commit/32ff7cd24bda52c889fd969a43adcf1f845b6e3a

Git commit b9423ed655787db3febe5af4f6ff531969e6abb9 by GitHub (on behalf of KitsuneRal) on 29/08/2016 at 00:05..
Merge pull request #20 from Fxrh/kitsune-roommessage-refactoring2
https://invent.kde.org/neon/forks/libquotient/-/commit/b9423ed655787db3febe5af4f6ff531969e6abb9

Git commit c02174bc8f09761c2e4ee3ca4a250ce49025343e by Kitsune Ral on 29/08/2016 at 08:01..
RoomTopicEvent: parse and provide sender information
https://invent.kde.org/neon/forks/libquotient/-/commit/c02174bc8f09761c2e4ee3ca4a250ce49025343e

Git commit 76241cb772bb53901cdd3308262f76ba718d9a47 by Kitsune Ral on 31/08/2016 at 08:50..
Dismiss ConnectionPrivate, long live Connection::Private

Closer investigation found out that there are only two actually used member functions in ConnectionPrivate - provideRoom() and resolveServer(). These two have been transferred to Connection; and data members from ConnectionPrivate found new home in Connection::Private.

Factoring out room management and user management from Connection is still a pending task.
https://invent.kde.org/neon/forks/libquotient/-/commit/76241cb772bb53901cdd3308262f76ba718d9a47

Git commit 4004992d8dd55ee27c3d39434d6a4498b8f515ef by Kitsune Ral on 31/08/2016 at 09:01..
Room: Drop unused code
https://invent.kde.org/neon/forks/libquotient/-/commit/4004992d8dd55ee27c3d39434d6a4498b8f515ef

Git commit 0fe83d59d76cd8f9c8f92d40cc58d9f5b082a84a by Kitsune Ral on 31/08/2016 at 09:27..
Event::fromJson(): made the code more compact

That might be not as efficient as a solution on variadic templates; but
arguably easier to understand.
https://invent.kde.org/neon/forks/libquotient/-/commit/0fe83d59d76cd8f9c8f92d40cc58d9f5b082a84a

Git commit b1b23e3500ff80d62b54153341e66fdfef4534db by Kitsune Ral on 31/08/2016 at 09:30..
QList<Event*> -> using Events=QVector<Event*>
https://invent.kde.org/neon/forks/libquotient/-/commit/b1b23e3500ff80d62b54153341e66fdfef4534db

Git commit 769cb2f694d036e59cfee0c0ce53500f3df822d9 by Kitsune Ral on 05/09/2016 at 23:20..
Set CMAKE_BUILD_TYPE if none is specified
https://invent.kde.org/neon/forks/libquotient/-/commit/769cb2f694d036e59cfee0c0ce53500f3df822d9

Git commit 4e70dd91bb70fa2b9b338686e4d5ab2560947723 by Kitsune Ral on 06/09/2016 at 03:02..
Connection: homeserver(); Connection and ConnectionData: accessToken(); accessors de-virtualized

Details:
 - New: Connection::homeserver(), returns the homeserver URL from inside ConnectionData
 - New/Modify: Connection::accessToken() and ConnectionData::accessToken() - because we will also have refresh tokens eventually; deprecate token() for the same reason
 - Modify: Connection::user(), token(), accessToken() are no more virtual (they should have never been, these are plain accessors, after all)
https://invent.kde.org/neon/forks/libquotient/-/commit/4e70dd91bb70fa2b9b338686e4d5ab2560947723

Git commit bd5ef6e3d9d4105be2f4eea16c774c01c8a84379 by Kitsune Ral on 06/09/2016 at 03:11..
Settings, SettingsGroup, AccountSettings

Settings is a trivial wrapper around QSettings that makes value() and setValue() available from QML (Tensor has the same class atm). SettingsGroup is a cleaner way to reach for sections inside QSettings. It doesn't refer to another QSettings class, rather derives from it and overrides functions that deal with groups. AccountSettings, contrary to the two above, is by no means generic: it serves the specific purpose of storing settings of a single account in a uniform way. Rationale of it is that key literals like "keep_logged_in" cannot be enforced, while function names can; and the same goes for QVariants stored inside - the class enforces specific types while allowing further extension by clients.

Note that functions in QSettings are not virtual, so all these classes are not polymorphic.
https://invent.kde.org/neon/forks/libquotient/-/commit/bd5ef6e3d9d4105be2f4eea16c774c01c8a84379

Git commit 334e4ba4ce410c8426abcd78a361b9a23b14eec7 by Kitsune Ral on 06/09/2016 at 07:09..
Cleanup after moving ConnectionPrivate::provideRoom()
https://invent.kde.org/neon/forks/libquotient/-/commit/334e4ba4ce410c8426abcd78a361b9a23b14eec7

Git commit 866cb97668fadff50dea8d16792c3b6736d531dc by Kitsune Ral on 06/09/2016 at 07:12..
Remember the current SyncJob and allow to explicitly abandon it
https://invent.kde.org/neon/forks/libquotient/-/commit/866cb97668fadff50dea8d16792c3b6736d531dc

Git commit e24ebc6dc5382ad05077575d267f66efac39e8dd by Kitsune Ral on 06/09/2016 at 12:43..
Fix building with VS2013

VS2013 doesn't like 'using' statements if a base class has private constructors (as in QSettings - Q_DISABLE_COPY makes a copy constructor private and deleted). Hence a workaround.
https://invent.kde.org/neon/forks/libquotient/-/commit/e24ebc6dc5382ad05077575d267f66efac39e8dd

Git commit ea865bade764c095aff175d10a4c2601a9ee34e0 by Kitsune Ral on 06/09/2016 at 13:12..
Corrected the faulty VS version
https://invent.kde.org/neon/forks/libquotient/-/commit/ea865bade764c095aff175d10a4c2601a9ee34e0

Git commit ae0b65440834a76f3ce6c266ee4b7d683b215842 by Kitsune Ral on 06/09/2016 at 13:56..
Relaxed VS version a bit.
https://invent.kde.org/neon/forks/libquotient/-/commit/ae0b65440834a76f3ce6c266ee4b7d683b215842

Git commit 573e0e478c4a904ba69e6b523dead41eb28121c1 by Kitsune Ral on 06/09/2016 at 23:14..
Temporarily revert "Event::fromJson(): made the code more compact" as it breaks highlighting

This reverts commit 0fe83d59d76cd8f9c8f92d40cc58d9f5b082a84a.
https://invent.kde.org/neon/forks/libquotient/-/commit/573e0e478c4a904ba69e6b523dead41eb28121c1

Git commit 34e7ba238f46734893111110235e032d44fd3690 by GitHub (on behalf of KitsuneRal) on 06/09/2016 at 23:34..
Merge pull request #24 from Fxrh/kitsune-settings

Settings classes
https://invent.kde.org/neon/forks/libquotient/-/commit/34e7ba238f46734893111110235e032d44fd3690

Git commit 906913c899a9991d303791179b6883cbc5c02151 by GitHub (on behalf of KitsuneRal) on 06/09/2016 at 23:57..
Merge pull request #23 from Fxrh/kitsune-cmakelists
https://invent.kde.org/neon/forks/libquotient/-/commit/906913c899a9991d303791179b6883cbc5c02151

Git commit ae309030049098c2e831991b0317214e3b4de598 by Kitsune Ral on 07/09/2016 at 00:00..
More dead code removal
https://invent.kde.org/neon/forks/libquotient/-/commit/ae309030049098c2e831991b0317214e3b4de598

Git commit 6aee89052be72b57fe4d93f5576bdf99293f5953 by Kitsune Ral on 07/09/2016 at 00:05..
Event::fromJson(): made the code more compact (correctly this time)

That might be not as efficient as a solution on variadic templates; but
arguably easier to understand. Doesn't have the typo bug the previous version of this commit had.
https://invent.kde.org/neon/forks/libquotient/-/commit/6aee89052be72b57fe4d93f5576bdf99293f5953

Git commit f09b42ca73759207c7d63587c0d41c09ad691c47 by Kitsune Ral on 07/09/2016 at 13:17..
A generic lookup(), and its usage in Event and RoomMessageEvent

Feel free to use whenever you need to convert another JSON key to some C++ object, or dispatch anything based on a JSON key.
https://invent.kde.org/neon/forks/libquotient/-/commit/f09b42ca73759207c7d63587c0d41c09ad691c47

Git commit c90e11df0164dc32a6d27cc887ca517af2277bc3 by GitHub (on behalf of KitsuneRal) on 07/09/2016 at 22:09..
Merge pull request #25 from Fxrh/kitsune-generic-dispatch
https://invent.kde.org/neon/forks/libquotient/-/commit/c90e11df0164dc32a6d27cc887ca517af2277bc3

Git commit 2d8f137c6d40a0ed36aa81423a54fe6230388850 by Felix Rohrbach on 07/09/2016 at 22:24..
Fix MediaThumbnailJob

As the url-path seems to start with a slash, we had two slashes in the
request. This broke the feature for some servers, especially when
fetching icons from other servers.
https://invent.kde.org/neon/forks/libquotient/-/commit/2d8f137c6d40a0ed36aa81423a54fe6230388850

Git commit 005907225b376335545744e78a3bdfaec5ad0f90 by Kitsune Ral on 08/09/2016 at 02:21..
Connection: Fixed an unguarded usage of d->syncJob pointer
https://invent.kde.org/neon/forks/libquotient/-/commit/005907225b376335545744e78a3bdfaec5ad0f90

Git commit 763a7b3ed8b7e4562f10dc3d7c53ac35707ce5cb by Kitsune Ral on 09/09/2016 at 04:51..
Strictly require Qt libraries
https://invent.kde.org/neon/forks/libquotient/-/commit/763a7b3ed8b7e4562f10dc3d7c53ac35707ce5cb

Git commit 107a5017149f8dbe7829e8e6d03a0e7a1124f281 by Kitsune Ral on 11/09/2016 at 11:10..
Explicitly stop the timer in finishJob()

This should avoid timeout event catching up on a not-yet-deleted-but-
already-invalid job object.
https://invent.kde.org/neon/forks/libquotient/-/commit/107a5017149f8dbe7829e8e6d03a0e7a1124f281

Git commit 3860a3ced0ce76a977c4f42ff9a3fa4e98b230e9 by Kitsune Ral on 11/09/2016 at 11:11..
Make sure syncJob pointer is null upon abandoning
https://invent.kde.org/neon/forks/libquotient/-/commit/3860a3ced0ce76a977c4f42ff9a3fa4e98b230e9

Git commit 2c33811293a5aea38ec552b94f01d51ec16fd442 by Fabian Niepelt on 12/09/2016 at 17:33..
[FEATURE] Add proper SONAME versioning

This doesn't affect the current build process much but distributions that
require libraries to be built as a shared object also often require
the use of symbol versioning using the SONAME, e.g openSUSE: https://en.opensuse.org/openSUSE:Shared_library_packaging_policy
https://invent.kde.org/neon/forks/libquotient/-/commit/2c33811293a5aea38ec552b94f01d51ec16fd442

Git commit 76d3f8da077509f37bd767dd6fcfd59e0b285fe8 by GitHub (on behalf of KitsuneRal) on 12/09/2016 at 20:58..
Merge pull request #27 from Takios/master

[FEATURE] Add proper SONAME versioning
https://invent.kde.org/neon/forks/libquotient/-/commit/76d3f8da077509f37bd767dd6fcfd59e0b285fe8

Git commit 97fe7a952236f56ed128f4356c21b599c4f3a9e4 by GitHub (on behalf of David A Roberts) on 13/09/2016 at 10:23..
Update libqmatrixclient.pri
https://invent.kde.org/neon/forks/libquotient/-/commit/97fe7a952236f56ed128f4356c21b599c4f3a9e4

Git commit c0ddd658bb3e9035eb701c60ea1c82eb6b53114c by Kitsune Ral on 14/09/2016 at 00:57..
Initialize Room::Private more carefully

See https://marcmutz.wordpress.com/translated-articles/pimp-my-pimpl-
%E2%80%94-reloaded
https://invent.kde.org/neon/forks/libquotient/-/commit/c0ddd658bb3e9035eb701c60ea1c82eb6b53114c

Git commit b3ffe9195f1b018a8c8b7503ee4687d978ea4eab by Kitsune Ral on 14/09/2016 at 00:57..
Don't search for event_id and origin_server_ts in m.receipt events
https://invent.kde.org/neon/forks/libquotient/-/commit/b3ffe9195f1b018a8c8b7503ee4687d978ea4eab

Git commit cf10a4e9e6bcfa7932f166b251563b990f0dd61e by Kitsune Ral on 14/09/2016 at 01:07..
Room::messageEvents: switch to an alias instead of explicit QList<>

To facilitate a possible change of a container type.
https://invent.kde.org/neon/forks/libquotient/-/commit/cf10a4e9e6bcfa7932f166b251563b990f0dd61e

Git commit d1dfe71769accc391a0a722bd4627b2d18389874 by Kitsune Ral on 14/09/2016 at 01:09..
Use Receipt by reference in a loop

Thanks to Clang for pointing this out.
https://invent.kde.org/neon/forks/libquotient/-/commit/d1dfe71769accc391a0a722bd4627b2d18389874

Git commit 87cb641e36fee7010766c73c32fa45115dec1a3c by Felix Rohrbach on 14/09/2016 at 22:26..
Correct user sorting for room name creation

In the previous version, it was possible that u1 >= u2 and u2 >= u1:
Assume u1 == me, u1->id() < u2->id()
Then u1 >= u2, as u1 == me (i.e. it returns false)
but also u2 >= u1, as u2->id() > u1->id() (returns false again)

For me, this had the effect of having three rooms called fxrh.
https://invent.kde.org/neon/forks/libquotient/-/commit/87cb641e36fee7010766c73c32fa45115dec1a3c

Git commit 51ebad8717dcda968dc30195d98545b4091ad251 by Kitsune Ral on 15/09/2016 at 00:44..
More compact fix with the same meaning
https://invent.kde.org/neon/forks/libquotient/-/commit/51ebad8717dcda968dc30195d98545b4091ad251

Git commit c8a34813a551752bf647a0c91a6ee37c95e50251 by GitHub (on behalf of Felix Rohrbach) on 15/09/2016 at 00:51..
Merge pull request #28 from Fxrh/correct-roomname-by-usernames

Correct user sorting for room name creation
https://invent.kde.org/neon/forks/libquotient/-/commit/c8a34813a551752bf647a0c91a6ee37c95e50251

Git commit 53a941afe548be49585aadda336c0e4c05ff3ff1 by Kitsune Ral on 15/09/2016 at 01:56..
Replace an array of room deconstruction log lines with a single connection deconstruction log line
https://invent.kde.org/neon/forks/libquotient/-/commit/53a941afe548be49585aadda336c0e4c05ff3ff1

Git commit e4dd38fe63eb3035b2df0db859c65d31db9c1ea8 by Kitsune Ral on 15/09/2016 at 05:22..
Connection: Don't return SyncJob* from sync()

Given that Connection handles all the output from SyncJob already, there's no use in having the pointer. In fact, it's not used in Quaternion, and Tensor, to the contrary, has a problem _because_ this pointer is grabbed by the QML engine that mistakenly tries to handle its lifecycle.
https://invent.kde.org/neon/forks/libquotient/-/commit/e4dd38fe63eb3035b2df0db859c65d31db9c1ea8

Git commit e2b19b832907325ea7580d3f3ad4679e473dbbea by Kitsune Ral on 16/09/2016 at 14:28..
Room: change the way messages are ordered

This replaces the one-by-one timestamp-ordering algorithm of adding new
messages with copying the whole group of just-arrived messages to either
the beginning or the end of the timeline.

Since origin timestamps do not provide a reasonable order,
findInsertionPos() is entirely deleted. processMessageEvent() is
replaced by two functions: addNewMessageEvents() appends at
messageEvents.end() while addHistoricalMessageEvents() inserts them at
messageEvents.begin(). There's no official way to insert messages in the
middle; cases when getPreviousContent() is called in parallel or a
RoomMessagesJob runs on a gap somewhere in the middle of the timeline
weren't considered before this commit and aren't considered in it.

The new ordering requires you to understand where you have got your
events from (or rather, where you want to insert them). In particular,
updateData() that processes /sync results uses addNewMessageEvents();
getPreviousContent() calls addHistoricalMessageEvents().

In order to notify clients, a single newMessages() signal gives way to
3 new signals: 2 aboutToAdd*Messages() and a common addedMessages().
In addition, clients can derive from Room and use doAdd*Messages()
virtual functions to alter/extend the behaviour.
https://invent.kde.org/neon/forks/libquotient/-/commit/e2b19b832907325ea7580d3f3ad4679e473dbbea

Git commit fab0bb1993b570e01333cfe4d8dc70e2a7bf87b7 by Kitsune Ral on 16/09/2016 at 14:28..
Group processing of state events as well
https://invent.kde.org/neon/forks/libquotient/-/commit/fab0bb1993b570e01333cfe4d8dc70e2a7bf87b7

Git commit ac5ae85ed43d1f92cfc99bf1ea687d33f56ccd13 by GitHub (on behalf of KitsuneRal) on 17/09/2016 at 08:35..
Merge pull request #29 from Fxrh/dont-expose-syncjob

Connection: Don't return SyncJob* from sync()
https://invent.kde.org/neon/forks/libquotient/-/commit/ac5ae85ed43d1f92cfc99bf1ea687d33f56ccd13

Git commit 9ad7029587829aee5c4c21768b7b4831096f1593 by Kitsune Ral on 17/09/2016 at 08:59..
Merge remote-tracking branch 'remotes/origin/master' into fix-messages-ordering
https://invent.kde.org/neon/forks/libquotient/-/commit/9ad7029587829aee5c4c21768b7b4831096f1593

Git commit b1ca4264f25db826a98455698f1e05babd85eb26 by Kitsune Ral on 20/09/2016 at 22:29..
Fixed the order of historical messages
https://invent.kde.org/neon/forks/libquotient/-/commit/b1ca4264f25db826a98455698f1e05babd85eb26

Git commit e0e115faeb49297437d4efc231e4d57e8275ec2a by Kitsune Ral on 20/09/2016 at 23:27..
Push sender from RoomTopicEvent to Event

Because it's supposed to exist in (at least) all events from /sync.
https://invent.kde.org/neon/forks/libquotient/-/commit/e0e115faeb49297437d4efc231e4d57e8275ec2a

Git commit 11dd106d8d99c187c22f7a37ce557daf25450e4b by GitHub (on behalf of KitsuneRal) on 20/09/2016 at 23:45..
Merge pull request #30 from Fxrh/fix-messages-ordering

Fix messages ordering
https://invent.kde.org/neon/forks/libquotient/-/commit/11dd106d8d99c187c22f7a37ce557daf25450e4b

Git commit 36beaf2b1bfaa27b47eaeca6b231d7209bf8dedc by GitHub (on behalf of KitsuneRal) on 20/09/2016 at 23:55..
Merge pull request #31 from Fxrh/kitsune-sender-in-all-events

Push sender from RoomTopicEvent to Event
https://invent.kde.org/neon/forks/libquotient/-/commit/36beaf2b1bfaa27b47eaeca6b231d7209bf8dedc

Git commit 50a92291b0650747c931259976a488c37504024a by Kitsune Ral on 21/09/2016 at 07:52..
Room: don't emit signals if there are no message events received
https://invent.kde.org/neon/forks/libquotient/-/commit/50a92291b0650747c931259976a488c37504024a

Git commit f112ce9b54d57c84fde2f858833b497a3c71984b by Kitsune Ral on 04/10/2016 at 10:34..
Changed angle brackets to parentheses for user disambiguation

This fixes a case when another person mentions you by disambiguated name, and this is not highlighted because Riot uses () and Quaternion uses <> to decorate disambiguated names (as well as to check mentions).
https://invent.kde.org/neon/forks/libquotient/-/commit/f112ce9b54d57c84fde2f858833b497a3c71984b

Git commit ab45e1aee912cf242caea2d762b2b27c83a0e972 by Kitsune Ral on 05/10/2016 at 05:30..
Check there are no non-members "typing" or "having read" messages

Normally, this shouldn't happen anyway - just a double-check,
https://invent.kde.org/neon/forks/libquotient/-/commit/ab45e1aee912cf242caea2d762b2b27c83a0e972

Git commit 14302ddbac1e6d9c95de15c97362c3de09f545eb by Kitsune Ral on 07/10/2016 at 07:20..
Fixed massive leaks of Event objects
https://invent.kde.org/neon/forks/libquotient/-/commit/14302ddbac1e6d9c95de15c97362c3de09f545eb

Git commit bd3bb07a7f76964a3550df2e72541ece53a4bce7 by Kitsune Ral on 07/10/2016 at 07:21..
Use Q_DECLARE_TYPEINFO correctly

The previous code had no effect because QVector<Receipt> was instantiated before Q_DECLARE_TYPEINFO occurence.
https://invent.kde.org/neon/forks/libquotient/-/commit/bd3bb07a7f76964a3550df2e72541ece53a4bce7

Git commit 3573e115ffd6550ce85ae76610c5367b39724c04 by Kitsune Ral on 07/10/2016 at 07:22..
Fixed leaks of RoomMessageEvent content
https://invent.kde.org/neon/forks/libquotient/-/commit/3573e115ffd6550ce85ae76610c5367b39724c04

Git commit 29bff90ecb0d1febfa8728383195f0f41c9a29ef by Kitsune Ral on 07/10/2016 at 09:55..
Fix building with VS2013
https://invent.kde.org/neon/forks/libquotient/-/commit/29bff90ecb0d1febfa8728383195f0f41c9a29ef

Git commit 7b0de25eaea285385a7e46183b487a7c7d1fdecd by Kitsune Ral on 11/10/2016 at 13:45..
Removed long obsolete initialsyncjob.* files (fixes #37)
https://invent.kde.org/neon/forks/libquotient/-/commit/7b0de25eaea285385a7e46183b487a7c7d1fdecd

Git commit 45f38a1d6687d1ceaca87a6d6d94ac2515debb02 by GitHub (on behalf of Felix Rohrbach) on 11/10/2016 at 21:19..
Merge pull request #32 from Fxrh/kitsune-memory-care

Event objects leaks plugged
https://invent.kde.org/neon/forks/libquotient/-/commit/45f38a1d6687d1ceaca87a6d6d94ac2515debb02

Git commit 24deeda0fe95fd352b823b48a3bc2e660f6a261d by Kitsune Ral on 14/10/2016 at 01:06..
MediaThumbnailJob: Use QSize instead of two separate int's for size

Connection::getThumbnail() is now overloaded to provide compatibility with the previous interface.
https://invent.kde.org/neon/forks/libquotient/-/commit/24deeda0fe95fd352b823b48a3bc2e660f6a261d

Git commit 6536124821c1df791a69a58de21a71322d9363f6 by GitHub (on behalf of Felix Rohrbach) on 14/10/2016 at 14:58..
Merge pull request #42 from Fxrh/kitsune-use-qsize

MediaThumbnailJob: Use QSize instead of two separate int's for size
https://invent.kde.org/neon/forks/libquotient/-/commit/6536124821c1df791a69a58de21a71322d9363f6

Git commit 4943cbea505aacdd33bf93c3365588ba73785d4d by Kitsune Ral on 15/10/2016 at 05:50..
BaseJob: Use saved parameters instead of overriding apiPath(), query() and data() in each job class
https://invent.kde.org/neon/forks/libquotient/-/commit/4943cbea505aacdd33bf93c3365588ba73785d4d

Git commit f2cfd4691d4830f57ebaea08b9aa9a4db3aad537 by Kitsune Ral on 16/10/2016 at 22:24..
Changed the order of arguments in SyncJob::SyncJob()
https://invent.kde.org/neon/forks/libquotient/-/commit/f2cfd4691d4830f57ebaea08b9aa9a4db3aad537

Git commit b44ad3573d21c456014d7983669acc31dd6eebdf by GitHub (on behalf of KitsuneRal) on 16/10/2016 at 22:25..
Merge pull request #43 from Fxrh/kitsune-request-params

Merged as amended.
https://invent.kde.org/neon/forks/libquotient/-/commit/b44ad3573d21c456014d7983669acc31dd6eebdf

Git commit 372ed74c04f2c542451771aa792242a4e2afb351 by Kitsune Ral on 20/10/2016 at 00:40..
Room: added setLastReadEvent accessor and a signal for it; don't post receipts for own messages to the server

As discussed with Matthew in #quaternion: https://matrix.to/#/!PCzUtxtOjUySxSelof:matrix.org/$14768896199130qcJqe:matrix.org
https://invent.kde.org/neon/forks/libquotient/-/commit/372ed74c04f2c542451771aa792242a4e2afb351

Git commit a5962ee1fb1ccfa641217778e6bf7f4e9c53dff1 by Kitsune Ral on 20/10/2016 at 22:32..
Fixed building on VS2013

QJsonObject stock constructors are boring anyway - using QJsonObject::QJsonObject wasn't really necessary.
https://invent.kde.org/neon/forks/libquotient/-/commit/a5962ee1fb1ccfa641217778e6bf7f4e9c53dff1

Git commit c8700b59d00d505c59de51d8dc259454073123e3 by Kitsune Ral on 21/10/2016 at 03:52..
Room::markMessagesAsRead correctly handles local user's messages now

setLastReadEvent() is called in any case (read marks a stored in a hashmap so it's a constant time operation anyway); postReceipt() is now called for the nearest previous non-local message.
https://invent.kde.org/neon/forks/libquotient/-/commit/c8700b59d00d505c59de51d8dc259454073123e3

Git commit 06a1131081e4f49a91f40ce00227104ebe6cd8fd by Kitsune Ral on 22/10/2016 at 23:43..
A couple of fixes according to the PR review

Room::markMessagesAsRead: use the iterator to the message, not after the message.
Room::setLastReadEvent: moved to protected
https://invent.kde.org/neon/forks/libquotient/-/commit/06a1131081e4f49a91f40ce00227104ebe6cd8fd

Git commit caaddebae6acf1a1c5281a5beba43782a8c899fc by Kitsune Ral on 23/10/2016 at 10:08..
Room: Don't let the read marker (of any user) get back, only forward
https://invent.kde.org/neon/forks/libquotient/-/commit/caaddebae6acf1a1c5281a5beba43782a8c899fc

Git commit 9a1270dbf8cf6c2dc9337c33a3c59b437676548c by GitHub (on behalf of KitsuneRal) on 24/10/2016 at 00:04..
Merge pull request #44 from Fxrh/kitsune-read-receipts

Room: added setLastReadEvent accessor and a signal for it; don't post receipts for own messages to the server
https://invent.kde.org/neon/forks/libquotient/-/commit/9a1270dbf8cf6c2dc9337c33a3c59b437676548c

Git commit 27b25141e02c32b1e53a25e82b579e6a3d8089c9 by Malte Brandy on 24/10/2016 at 19:03..
Crop avatar to ensure it has exactly the wanted size; Fixes memory leak #54
https://invent.kde.org/neon/forks/libquotient/-/commit/27b25141e02c32b1e53a25e82b579e6a3d8089c9

Git commit d350174d10eafb2dfc85bac93bf59ff9f218c61b by Malte Brandy on 25/10/2016 at 22:39..
Introduce cropedAvatar
https://invent.kde.org/neon/forks/libquotient/-/commit/d350174d10eafb2dfc85bac93bf59ff9f218c61b

Git commit abc47b334efe4f950fa73bec8fa80d5982e337b4 by Kitsune Ral on 27/10/2016 at 07:31..
Use more compact syntax for find_package; display prefix path to Qt

Qt5Core_DIR shows a path to the .cmake file's directory, which is a little too much information. The same change will be made in Quaternion, with the Qt prefix having additional usage in installation.
https://invent.kde.org/neon/forks/libquotient/-/commit/abc47b334efe4f950fa73bec8fa80d5982e337b4

Git commit 9c6c5ad0a716b0e436ca863efb72bc9ad8057116 by Kitsune Ral on 27/10/2016 at 08:07..
Set CMAKE_CXX_STANDARD variable instead of listing compiler features

That list was bound to become outdated every now and then.
https://invent.kde.org/neon/forks/libquotient/-/commit/9c6c5ad0a716b0e436ca863efb72bc9ad8057116

Git commit 704fda67830cf07a5d50973b744e9a0aa2135e92 by GitHub (on behalf of KitsuneRal) on 27/10/2016 at 08:15..
Merge pull request #47 from Fxrh/kitsune-cmake-tweaks

CMake tweaks
https://invent.kde.org/neon/forks/libquotient/-/commit/704fda67830cf07a5d50973b744e9a0aa2135e92

Git commit 8e2113199710b6a2396ddad0f48d9e7ea06f8cc7 by Kitsune Ral on 27/10/2016 at 08:56..
Fixed a false alarm in Qt Creator

Qt Creator turns out to be watching for "at :" substring in logs to detect messages that refer to files - which is not our case. Removing a comma fixes the alarm.
https://invent.kde.org/neon/forks/libquotient/-/commit/8e2113199710b6a2396ddad0f48d9e7ea06f8cc7

Git commit c0d5d26a77d09d2a7e339cf67b60dd319d3f34e8 by Kitsune Ral on 28/10/2016 at 08:03..
Implemented unread messages indication on the lib side

The implementation allows further extension to actually counting unread messages (in their Room::isEventNotable() sense - see the code) but so far just replicates what Quaternion previously provided. The only difference from the Quaternion implementation is that last own message is not marked as read immediately - so that we can allow the local user to send messages while staying with the read marker well above. This implies, though, that the read marker won't reset to the timeline bottom at any movement of the user - rather that it resets to the bottom of the current view (which is the ultimately correct behaviour, anyway).
https://invent.kde.org/neon/forks/libquotient/-/commit/c0d5d26a77d09d2a7e339cf67b60dd319d3f34e8

Git commit 17135e362a3c7b5355934837b548ceab40af9a9f by Kitsune Ral on 28/10/2016 at 13:32..
Relax logging a bit

Kicking markMessagesAsRead() at each mouse move is still a bad idea - I'm looking at you Quaternion.
https://invent.kde.org/neon/forks/libquotient/-/commit/17135e362a3c7b5355934837b548ceab40af9a9f

Git commit e0a879ef17e3363f64ff51b438eae4c7a2267dc8 by Kitsune Ral on 31/10/2016 at 09:30..
Code cleanup upon inspection in CLion

These changes are most harmless; a no more used Private class removed, and an incorrect signal specification in connect() fixed. Also, one explicit #include has been added, just in case.
https://invent.kde.org/neon/forks/libquotient/-/commit/e0a879ef17e3363f64ff51b438eae4c7a2267dc8

Git commit 6b0c1ee80db661a19ef4376d6663278d949715eb by Kitsune Ral on 01/11/2016 at 05:04..
Removed unused #includes
https://invent.kde.org/neon/forks/libquotient/-/commit/6b0c1ee80db661a19ef4376d6663278d949715eb

Git commit 416460b8da337bca3f12fb8bdc00371b2c56481d by Kitsune Ral on 01/11/2016 at 05:15..
Moved MemberNameSorter from Quaternion to lib

This code is useful for any client that uses the Room class and needs to display the list of room members. Also removed an unused #include.
https://invent.kde.org/neon/forks/libquotient/-/commit/416460b8da337bca3f12fb8bdc00371b2c56481d

Git commit 9a6a06a4ac4cb52de37306dd8c9dcea6e00e6531 by Kitsune Ral on 01/11/2016 at 05:21..
Receipt: eventId is extraneous inside the receipt, since receipts are associated with Event objects anyway
https://invent.kde.org/neon/forks/libquotient/-/commit/9a6a06a4ac4cb52de37306dd8c9dcea6e00e6531

Git commit c842e8803924f477532dfcf0f37710e63d86d669 by Kitsune Ral on 01/11/2016 at 05:21..
Removed unused code

These parts are either deprecated or just unlikely to be reused in the current form. Breaks Quaternion master as of now (it #includes logmessage.h).
https://invent.kde.org/neon/forks/libquotient/-/commit/c842e8803924f477532dfcf0f37710e63d86d669

Git commit 66be8322379b9821ae624ad07d2ecf478a34384c by Kitsune Ral on 02/11/2016 at 08:09..
Room: make read marker a Q_PROPERTY; markMessagesAsRead now uses eventId again

The first change allows to use the read marker from QML (hint to Tensor). The second change is actually a fix for a case when markMessagesAsRead() is called with an iterator behind the last read event (in that case markMessagesAsRead() would post a receipt for that older event, which is not quite right).
https://invent.kde.org/neon/forks/libquotient/-/commit/66be8322379b9821ae624ad07d2ecf478a34384c

Git commit b3bae976ed17b238e965a51dc35721fb68aab65f by Kitsune Ral on 03/11/2016 at 12:52..
Auto-promote the read marker over locally-originated messages
https://invent.kde.org/neon/forks/libquotient/-/commit/b3bae976ed17b238e965a51dc35721fb68aab65f

Git commit 0b507b3683e6f4c6429c21f7dd71197dbec07a3d by Kitsune Ral on 06/11/2016 at 00:57..
Room: extend promoteReadMarker over non-local users (again)
https://invent.kde.org/neon/forks/libquotient/-/commit/0b507b3683e6f4c6429c21f7dd71197dbec07a3d

Git commit 3249179dda1a6e624c1ccbe98ed4503eebed60a0 by Malte Brandy on 06/11/2016 at 11:38..
Use #pragma once everywhere
https://invent.kde.org/neon/forks/libquotient/-/commit/3249179dda1a6e624c1ccbe98ed4503eebed60a0

Git commit 2a9caefa6bdce4a6c3a8847f166de16a69dd95dd by GitHub (on behalf of KitsuneRal) on 06/11/2016 at 22:05..
Merge pull request #49 from Fxrh/kitsune-cleanup

Cleanup upon code inspection in CLion
https://invent.kde.org/neon/forks/libquotient/-/commit/2a9caefa6bdce4a6c3a8847f166de16a69dd95dd

Git commit cb108696e62ffd54410297423b3aea0549ddcc84 by Kitsune Ral on 07/11/2016 at 04:08..
Room::doAddNewMessages: Extend auto-promotion to all users, not only local

Thanks to @maralorn for pointing out.
https://invent.kde.org/neon/forks/libquotient/-/commit/cb108696e62ffd54410297423b3aea0549ddcc84

Git commit 8b69437b14021b23c208b27857d139bd2c2bb186 by Kitsune Ral on 07/11/2016 at 10:53..
Fixed a crasher that slipped in the previous commit

Room::Private::member() filters out non-members of the room, which is not the right thing when adding messages from a person that left the room, e.g.
https://invent.kde.org/neon/forks/libquotient/-/commit/8b69437b14021b23c208b27857d139bd2c2bb186

Git commit bc3ab9fdd3efc1fc40d6cef919e68246afb1ac83 by Kitsune Ral on 13/11/2016 at 23:07..
Removed no more used files
https://invent.kde.org/neon/forks/libquotient/-/commit/bc3ab9fdd3efc1fc40d6cef919e68246afb1ac83

Git commit f84b3afb1e7c4662bdda55b9cf8e871083350937 by Kitsune Ral on 13/11/2016 at 23:10..
Merge branch 'pragma-once'
https://invent.kde.org/neon/forks/libquotient/-/commit/f84b3afb1e7c4662bdda55b9cf8e871083350937

Git commit 8113e61fec79b60be5c534af0d1b19e92d970e67 by GitHub (on behalf of KitsuneRal) on 25/11/2016 at 14:34..
Merge pull request #48 from Fxrh/kitsune-unread-messages-in-lib

Unread messages implementation in the library
https://invent.kde.org/neon/forks/libquotient/-/commit/8113e61fec79b60be5c534af0d1b19e92d970e67

Git commit 6776be9849bb32012dc057fe0f6738437b0cd79d by GitHub (on behalf of KitsuneRal) on 25/11/2016 at 14:34..
Merge pull request #46 from maralorn/crop-avatar

Crop avatar to ensure it has exactly the wanted size; Fixes memory leak #45
https://invent.kde.org/neon/forks/libquotient/-/commit/6776be9849bb32012dc057fe0f6738437b0cd79d

Git commit 78cfe3c102b686c71a1da5cbe91a2ae42dc03825 by Kitsune Ral on 26/11/2016 at 09:23..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/78cfe3c102b686c71a1da5cbe91a2ae42dc03825

Git commit 6c95d3787325fdb47e45275974a8edfb3555cfdb by Kitsune Ral on 26/11/2016 at 09:27..
Room: use std::deque for the timeline
https://invent.kde.org/neon/forks/libquotient/-/commit/6c95d3787325fdb47e45275974a8edfb3555cfdb

Git commit 0e9c56561888cbd786d099bc7d004223e7406e6a by Kitsune Ral on 26/11/2016 at 09:27..
Room: provide ability to find an event in the timeline by its id

A new hashmap, eventsIndex, is provided, that allows you to find the event in the timeline if you have eventId. This hashmap uses the fact that deque iterators don't invalidate upon insertion of elements to either end of the deque. Thanks to that, promoteReadMarker() and doAddNewMessageEvents() have been considerably simplified; also, it should be easier now to calculate event indices without rolling back and forth over the timeline.
https://invent.kde.org/neon/forks/libquotient/-/commit/0e9c56561888cbd786d099bc7d004223e7406e6a

Git commit fb4127da9db32e5e18b14beaaabbee7adf9cc334 by Kitsune Ral on 08/01/2017 at 05:09..
Simplified Room::Private::readMarker() code
https://invent.kde.org/neon/forks/libquotient/-/commit/fb4127da9db32e5e18b14beaaabbee7adf9cc334

Git commit f37874c7e55239359d02b926a65cd62d17336522 by GitHub (on behalf of Kitsune Ral) on 10/01/2017 at 22:41..
Merge pull request #51 from Fxrh/kitsune-traceable-events

Make events traceable
https://invent.kde.org/neon/forks/libquotient/-/commit/f37874c7e55239359d02b926a65cd62d17336522

Git commit c4877e0abaef4570362c8e9cc0203effdc6cb0ee by Kitsune Ral on 17/01/2017 at 12:46..
Room: Use reverse iterators internally to deal with read markers

Turns out that because the read marker is positioned _after_ the last read message, a reverse iterator models it much better than the usual one. This commit switches the internal representation to reverse iterators (externally, we operate in terms of event id's, still).
https://invent.kde.org/neon/forks/libquotient/-/commit/c4877e0abaef4570362c8e9cc0203effdc6cb0ee

Git commit 0a653e0e1c6c050f54df12663539cdb2e02717d8 by GitHub (on behalf of Kitsune Ral) on 26/01/2017 at 22:55..
Merge pull request #52 from Fxrh/kitsune-reverse-iterators

Room: Use reverse iterators internally to deal with read markers
https://invent.kde.org/neon/forks/libquotient/-/commit/0a653e0e1c6c050f54df12663539cdb2e02717d8

Git commit c82198c9d35a2a91a7440851b6e7d7a71f662c68 by Kitsune Ral on 23/02/2017 at 05:42..
Receipts internal handling improved

Instead of QHash, use QVector< QPair<> > because it's more efficient and
we don't really need a hashmap functions, only direct iteration over the
list of event-to-receipt pairs. Also, iteration over QJsonObjects is
more efficient (and better conveys the intention) than collecting keys()
and then finding a value() for each of them. Also, fixed accidental
allocation of empty Receipt structures instead of reserving space for
them.
https://invent.kde.org/neon/forks/libquotient/-/commit/c82198c9d35a2a91a7440851b6e7d7a71f662c68

Git commit 988630bee00d54d64038c8216c64117e9ee02c61 by Kitsune Ral on 26/02/2017 at 10:13..
Skip read events with an empty event id
https://invent.kde.org/neon/forks/libquotient/-/commit/988630bee00d54d64038c8216c64117e9ee02c61

Git commit 2a5301b5a50c49b480b2c3968b4bca2610a8d6f0 by Kitsune Ral on 28/02/2017 at 03:31..
Parse event id for all events; timestamp for all except typing and receipts

This is not quite correct because only room events are guaranteed by the spec to have an id and a timestamp. But we don't parse all room events as of yet, so that's a way to at least make those attributes universally available for even unknown room events. It matters, because read receipts can refer to any room event id and because we'll use event id's to filter out duplicate events in further commits; and missing timestamps used to break the timeline display (showing <> instead of <valid timestamps>).
https://invent.kde.org/neon/forks/libquotient/-/commit/2a5301b5a50c49b480b2c3968b4bca2610a8d6f0

Git commit 6c6b5b1bc18e16d0b40b674c8a48e0104ec73729 by Kitsune Ral on 28/02/2017 at 03:31..
Renamed logging_util.h to util.h and moved (improved) Owning<> and lookup() there

Because these fall outside of SyncJob and Event context, respectively. In addition, Owning<> has gained a move assignment operator (because we have a move constructor) and assign() convenience method to take ownership over an existing container; also, Owning<>::release() is done the right way now (the previous version was copying the return value to a new container instead of releasing the old container).
https://invent.kde.org/neon/forks/libquotient/-/commit/6c6b5b1bc18e16d0b40b674c8a48e0104ec73729

Git commit 81b6d940218a212a37e3c600c66fbe9a7476f433 by Kitsune Ral on 28/02/2017 at 03:31..
Room: Make sure an event with the same id isn't added twice to the timeline; forbid empty event id's

Added assertions and enhanced debug messages along the way
https://invent.kde.org/neon/forks/libquotient/-/commit/81b6d940218a212a37e3c600c66fbe9a7476f433

Git commit 2cc1fc52baa28c4896080069a985c200517ad7cd by Kitsune Ral on 06/03/2017 at 00:20..
Fixed building with MSVC
https://invent.kde.org/neon/forks/libquotient/-/commit/2cc1fc52baa28c4896080069a985c200517ad7cd

Git commit ba5ca3c88a20926f2be06872f530d9da12d5a062 by GitHub (on behalf of Kitsune Ral) on 08/03/2017 at 04:16..
Merge pull request #53 from Fxrh/kitsune-fix-adding-events

Fix adding events to the timeline
https://invent.kde.org/neon/forks/libquotient/-/commit/ba5ca3c88a20926f2be06872f530d9da12d5a062

Git commit de9448a65655451e1310947955dd6b341479dc23 by Kitsune Ral on 08/03/2017 at 11:30..
Connection::callApi<>, a factory for all API call jobs

This call (intended to only be used within the lib) creates a job object of the passed type and passes a ConnectionData pointer to its constructor. This allows to avoid making a switchboard of methods on Connection for the whole API, leaving only those that naturally belong there - e.g. joinRoom() or sync() - and moving, e.g., postMessage() to where it belongs - Room. PostMessageJob and RoomMessagesJob were updated along the way, to unbind from the Room class (which they really don't and won't need).
https://invent.kde.org/neon/forks/libquotient/-/commit/de9448a65655451e1310947955dd6b341479dc23

Git commit 3524342faacd12b00fa4c3a3ebe6a68782975eac by Kitsune Ral on 08/03/2017 at 11:30..
Room::getPreviousContent() gets a number of messages + Room::postMessage()

Also, Room now uses callApi<PostReceiptJob>() instead of postReceipt()
(to allow further removal of postReceipt() from Connection)
https://invent.kde.org/neon/forks/libquotient/-/commit/3524342faacd12b00fa4c3a3ebe6a68782975eac

Git commit af8f95fa0446bf377321d9f285b0e55c08fd91da by GitHub (on behalf of Kitsune Ral) on 09/03/2017 at 04:13..
Merge pull request #54 from Fxrh/kitsune-call-server

Connection::callApi + Room::getPreviousMessages(limit)
https://invent.kde.org/neon/forks/libquotient/-/commit/af8f95fa0446bf377321d9f285b0e55c08fd91da

Git commit 39399c95026d7c17701e492822dddcf321dd7b8b by Kitsune Ral on 09/03/2017 at 07:27..
Reduce noise in logs
https://invent.kde.org/neon/forks/libquotient/-/commit/39399c95026d7c17701e492822dddcf321dd7b8b

Git commit c8d31ab28db19a7e1f1ca9cf1a35de17158c43fb by Kitsune Ral on 09/03/2017 at 09:31..
Fixed building with VS2013
https://invent.kde.org/neon/forks/libquotient/-/commit/c8d31ab28db19a7e1f1ca9cf1a35de17158c43fb

Git commit 22ea325ef03cdc15f2c36b1e0c82c84dec01cfb5 by Kitsune Ral on 10/03/2017 at 04:05..
Use special indices instead of iterators for persistent pointers into timeline + no more discarding read markers to events that haven't arrived yet

When using deque::const_reverse_iterator for read markers and eventsIndex, I didn't realise that insertions into std::deque invalidate iterators (though preserve references and pointers). Therefore, a small TimelineItem class has been introduced that stores an event together with a persistent index that is generated upon insertion into the timeline (timeline.back()+1 for newer events, timeline.front()-1 for older events). Using such indices, we can still reach an event by it's index in constant time, while avoiding a problem with invalidating iterators.

While rewriting the code, another problem has been detected with read markers to events that haven't yet arrived to the timeline (in particular, older events). The old code simply discarded such read markers. The new code stores such read markers anyway, so that when that event arrives, it could be matched against the stored last-read-event id.
https://invent.kde.org/neon/forks/libquotient/-/commit/22ea325ef03cdc15f2c36b1e0c82c84dec01cfb5

Git commit 4dddf3e49c55caa7af05f88a04f35b43a172796d by Kitsune Ral on 14/03/2017 at 07:14..
Room: exposed findInTimeline and related things from Room::Private

This will be used from Quaternion for a better algorithm dealing with read markers
https://invent.kde.org/neon/forks/libquotient/-/commit/4dddf3e49c55caa7af05f88a04f35b43a172796d

Git commit 481cc9e2e684b8248ecf42dcf55aa4d23e7c0d41 by GitHub (on behalf of Kitsune Ral) on 16/03/2017 at 02:11..
Merge pull request #55 from Fxrh/kitsune-timeline-items
https://invent.kde.org/neon/forks/libquotient/-/commit/481cc9e2e684b8248ecf42dcf55aa4d23e7c0d41

Git commit 593e572216cdf6d3fb7bf55a7d71b04344074b3a by Kitsune Ral on 16/03/2017 at 02:13..
Aligned README.md with the one of Quaternion
https://invent.kde.org/neon/forks/libquotient/-/commit/593e572216cdf6d3fb7bf55a7d71b04344074b3a

Git commit 286dbbb54ba7b2954f1b1a15cb997e8142d75c8e by Kitsune Ral on 16/03/2017 at 02:14..
Fixed warnings about a static lambda defined but unused
https://invent.kde.org/neon/forks/libquotient/-/commit/286dbbb54ba7b2954f1b1a15cb997e8142d75c8e

Git commit f0f4645efcad290423fa500f495743ff594dfbb0 by Kitsune Ral on 16/03/2017 at 02:16..
Log RoomMessagesJob's parameters
https://invent.kde.org/neon/forks/libquotient/-/commit/f0f4645efcad290423fa500f495743ff594dfbb0

Git commit 567d75fd47b185e6906f34b7c4aef0952b5c2f50 by Kitsune Ral on 20/03/2017 at 13:07..
Added an example of libqmatrixclient usage

Compile and run with your username and password as the first two arguments.
https://invent.kde.org/neon/forks/libquotient/-/commit/567d75fd47b185e6906f34b7c4aef0952b5c2f50

Git commit 9af8b122516867c47dfdc7293b19eecd6f4f4eab by Kitsune Ral on 21/03/2017 at 03:45..
Fixed to work with older MinGW

At least MinGW 4.8 (bundled with Qt 5.2.1 for Windows) crashes with internal error on lambdas-in-lambdas.
https://invent.kde.org/neon/forks/libquotient/-/commit/9af8b122516867c47dfdc7293b19eecd6f4f4eab

Git commit f3d7021ccec51c2b9f4a83c5dc92dc7c56b776f8 by Kitsune Ral on 23/03/2017 at 15:11..
Added a missing #include
https://invent.kde.org/neon/forks/libquotient/-/commit/f3d7021ccec51c2b9f4a83c5dc92dc7c56b776f8

Git commit 15ef0758ccb7e1637d3a0400f5903d4a7906cd93 by Kitsune Ral on 24/03/2017 at 12:42..
BaseJob: Add more error states

This should help to provide more reasonable error messages when a particular resource is not found or entered data are outright incorrect.
https://invent.kde.org/neon/forks/libquotient/-/commit/15ef0758ccb7e1637d3a0400f5903d4a7906cd93

Git commit 26ab888cf732f768770138f791f1ed7a2bade7f3 by Kitsune Ral on 24/03/2017 at 12:44..
Connection::joinRoom now returns a job object pointer

So now you can directly connect to signals emitted by the job, instead of making intermediate signals in Connection for the same thing.
https://invent.kde.org/neon/forks/libquotient/-/commit/26ab888cf732f768770138f791f1ed7a2bade7f3

Git commit 57980b04c1a9d8bde974683fbae892580aee7466 by Kitsune Ral on 25/03/2017 at 07:15..
Simplified formatJson definition

Fixed the "formatJson unused" warning with that.
https://invent.kde.org/neon/forks/libquotient/-/commit/57980b04c1a9d8bde974683fbae892580aee7466

Git commit 0e00f6f74041a5fec528d1511095ea4974150239 by Kitsune Ral on 25/03/2017 at 08:20..
Jobs retry on network and timeout errors

As of now, the retry logic (see BaseJob::finishJob() method) invokes the same network request several times with increasing timeouts and retry intervals. Some additional signals and accessors are also provided to control the behaviour from inheriting classes (see a notable example with SyncJob in the same commit) and clients (support of retries in Quaternion comes in a respective commit shortly).
https://invent.kde.org/neon/forks/libquotient/-/commit/0e00f6f74041a5fec528d1511095ea4974150239

Git commit 2f57ea69098fee6a5f90ec35ebac89a26ef8efeb by Kitsune Ral on 25/03/2017 at 08:21..
Stop sync upon successful logout
https://invent.kde.org/neon/forks/libquotient/-/commit/2f57ea69098fee6a5f90ec35ebac89a26ef8efeb

Git commit 6895d14865c44b6dd6cf138a6a7413c6337b9802 by Kitsune Ral on 25/03/2017 at 09:08..
Split connectionError into networkError and syncError

When SyncJob retries, networkError is emitted; if it fails entirely, either loginError or syncError, depending on the kind of failure.
https://invent.kde.org/neon/forks/libquotient/-/commit/6895d14865c44b6dd6cf138a6a7413c6337b9802

Git commit 2f52210d3d97feaebfb654b2a621ceda2e59af08 by Elvis Angelaccio on 26/03/2017 at 11:22..
Provide a default avatar

If the user doesn't have a custom avatar set, show a default avatar
instead of nothing. This fixes a misalignment in the tableview
between users with and without a custom avatar.

Since libqmatrixclient doesn't recognize yet if a user is online or offline,
just use the `user-available` standard [1] icon for now.

[1]: https://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.htmli
https://invent.kde.org/neon/forks/libquotient/-/commit/2f52210d3d97feaebfb654b2a621ceda2e59af08

Git commit 781278b3358e63359b54deb16b0c7ac8bf95df7c by GitHub (on behalf of Kitsune Ral) on 27/03/2017 at 16:58..
Merge pull request #56 from Fxrh/kitsune-retry-on-some-errors

Jobs retry functionality for recoverable errors
https://invent.kde.org/neon/forks/libquotient/-/commit/781278b3358e63359b54deb16b0c7ac8bf95df7c

Git commit edaf027571106c2dedba7895d56fd4c2121a56ed by Kitsune Ral on 27/03/2017 at 20:24..
Map QNetworkReply::UnknownContentError to BaseJob::IncorrectRequestError

This is what /join returns if I supply garbage for the alias.
https://invent.kde.org/neon/forks/libquotient/-/commit/edaf027571106c2dedba7895d56fd4c2121a56ed

Git commit f4fbf96e7ea5147ef2944784665671219692253d by Kitsune Ral on 30/03/2017 at 09:21..
Fixed accidental auto-promotion when read marker is out of sight
https://invent.kde.org/neon/forks/libquotient/-/commit/f4fbf96e7ea5147ef2944784665671219692253d

Git commit c5832458b129e5e23564b092df1f415d455582d7 by GitHub (on behalf of Kitsune Ral) on 01/04/2017 at 10:52..
Merge pull request #57 from elvisangelaccio/default-avatar

Couldn't find anything cross-platform to track theme changes, so just merging this. Thanks!
https://invent.kde.org/neon/forks/libquotient/-/commit/c5832458b129e5e23564b092df1f415d455582d7

Git commit 2c2fe463a5af4cd6798ed715cc740042c94843eb by Kitsune Ral on 02/04/2017 at 09:51..
Rotten comments fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/2c2fe463a5af4cd6798ed715cc740042c94843eb

Git commit ff977a14a26076f9df426437a2049d2aefd1defc by Kitsune Ral on 02/04/2017 at 19:48..
Renamed JobHttpType to more fitting HttpVerb; removed Job from enum values
https://invent.kde.org/neon/forks/libquotient/-/commit/ff977a14a26076f9df426437a2049d2aefd1defc

Git commit a68587718afca82a06d57cd44fc949ea547e04f6 by Elvis Angelaccio on 04/04/2017 at 10:13..
Don't extend the spec when calculating the display name

Room names conflicts should be handled at the client level, for example
by displaying the canonical alias in a tooltip or in the custom
delegate of the view.

If we extend the display name algorithm at the lib level, we
are just cluttering the display name in the most common scenario
(i.e. when there are no name clashes).
https://invent.kde.org/neon/forks/libquotient/-/commit/a68587718afca82a06d57cd44fc949ea547e04f6

Git commit 6fdadc74c6f090689daad211159930b46a66026d by GitHub (on behalf of Kitsune Ral) on 04/04/2017 at 11:27..
Merge pull request #58 from elvisangelaccio/master

You've got the point. Merged this.
https://invent.kde.org/neon/forks/libquotient/-/commit/6fdadc74c6f090689daad211159930b46a66026d

Git commit 905ebf6c895acfe04ef96f28ac72b303907f70a5 by Kitsune Ral on 05/04/2017 at 15:46..
Make Room data Q_PROPERTY's so that they could be accessed from QML too
https://invent.kde.org/neon/forks/libquotient/-/commit/905ebf6c895acfe04ef96f28ac72b303907f70a5

Git commit b5f3a57840986d3ebdc9bb81d73e0c4d6e876071 by Kitsune Ral on 13/04/2017 at 10:32..
Use own copy of MIME database on Windows

The one that comes with Qt as a fallback is from 2012 (even from newer Qt versions) and is missing many common content types.
https://invent.kde.org/neon/forks/libquotient/-/commit/b5f3a57840986d3ebdc9bb81d73e0c4d6e876071

Git commit 336b66edcc02cbf29f119107777c5bfc6d751c3d by Kitsune Ral on 14/04/2017 at 16:36..
Enable PostMessageJob to send rich text messages
https://invent.kde.org/neon/forks/libquotient/-/commit/336b66edcc02cbf29f119107777c5bfc6d751c3d

Git commit 1f38a992a53b71c62077803767473d1bc8a74c58 by Kitsune Ral on 16/04/2017 at 19:47..
Make sure message body is treated as plain text

The previous code deviated from the spec, trying to guess on the content type of body as if there could be HTML in some cases. The spec openly states that 'body' value should always be in plain text.
https://invent.kde.org/neon/forks/libquotient/-/commit/1f38a992a53b71c62077803767473d1bc8a74c58

Git commit 836f35dc7d84dbd085aeae72c14120dd3994244c by Elvis Angelaccio on 17/04/2017 at 10:09..
Don't discard user display names upon leave membership events

Otherwise the following QJsonObject will discard a valid display name in
RoomMemberEvent::fromJson():

QJsonObject({"content":{"membership":"leave"},"event_id":"$14905359301189950PoADM:matrix.org","membership":"leave","origin_server_ts":1490535930821,"sender":"@elvisangelaccio:matrix.org","state_key":"@elvisangelaccio:matrix.org","type":"m.room.member","unsigned":{"age":1887090448,"prev_content":{"avatar_url":"mxc://matrix.org/PuDxgBQfeplXbCQFvOGpTEmC","displayname":"eang","membership":"join"},"prev_sender":"@elvisangelaccio:matrix.org","replaces_state":"$14905358091189487gXwtE:matrix.org"}})
https://invent.kde.org/neon/forks/libquotient/-/commit/836f35dc7d84dbd085aeae72c14120dd3994244c

Git commit 859355cf660080ba826bb759fd44c3360ea825f6 by GitHub (on behalf of Kitsune Ral) on 17/04/2017 at 12:46..
Merge pull request #59 from elvisangelaccio/fix-displayname

Don't discard user display names upon leave membership events
https://invent.kde.org/neon/forks/libquotient/-/commit/859355cf660080ba826bb759fd44c3360ea825f6

Git commit a54109c57bdbdd7ad51c69a847c0ed3428df717b by Kitsune Ral on 17/04/2017 at 17:16..
Use localeAwareCompare() to sort room members

Because it's a recommended by Qt method to sort end-user-facing lists.
https://invent.kde.org/neon/forks/libquotient/-/commit/a54109c57bdbdd7ad51c69a847c0ed3428df717b

Git commit 3301173ed41b925e0dda09c9ba19bd3d4e027962 by Kitsune Ral on 17/04/2017 at 19:15..
Added markAllMessagesAsRead()
https://invent.kde.org/neon/forks/libquotient/-/commit/3301173ed41b925e0dda09c9ba19bd3d4e027962

Git commit d3a6b34ba7fbe4175a8aaec030cd12f69ba38dfe by Elvis Angelaccio on 19/04/2017 at 10:55..
Don't discard avatars as well

Same workaround as in commit 836f35dc7d, but this time also for avatars.
https://invent.kde.org/neon/forks/libquotient/-/commit/d3a6b34ba7fbe4175a8aaec030cd12f69ba38dfe

Git commit 9a13bbfd8a800712d0a2fcc4887c8d4115d06d4e by GitHub (on behalf of Kitsune Ral) on 19/04/2017 at 17:56..
Merge pull request #60 from elvisangelaccio/dont-discard-avatars

Don't discard avatars as well
https://invent.kde.org/neon/forks/libquotient/-/commit/9a13bbfd8a800712d0a2fcc4887c8d4115d06d4e

Git commit 3fa1ee3c6b04d0793ccca3f903797625f7a08d03 by Elvis Angelaccio on 30/04/2017 at 13:21..
Port to categorized logging

This greatly reduces the noise made by quaternion.

To enable full logging, export the following variable:

QT_LOGGING_RULES="libqmatrixclient.*.debug=true"
https://invent.kde.org/neon/forks/libquotient/-/commit/3fa1ee3c6b04d0793ccca3f903797625f7a08d03

Git commit 096a05d59654244f7c928dc5f2537a760070a577 by GitHub (on behalf of Kitsune Ral) on 30/04/2017 at 16:54..
Merge pull request #61 from elvisangelaccio/qloggingcategory

Port to categorized logging
https://invent.kde.org/neon/forks/libquotient/-/commit/096a05d59654244f7c928dc5f2537a760070a577

Git commit 098a3855650c16f08df1e24139cd0cbac9b112c2 by Kitsune Ral on 08/05/2017 at 10:38..
Make QNetworkAccessManager member a singleton

As Qt documentation advises, a single QNetworkAccessManager is enough for the whole Qt application.
https://invent.kde.org/neon/forks/libquotient/-/commit/098a3855650c16f08df1e24139cd0cbac9b112c2

Git commit 5038ae0a0099c2a5c6ffdd08734b597d92edac70 by Kitsune Ral on 08/05/2017 at 20:28..
Code cleanup and tweaking (partially driven by clang-tidy)

Mainly it's about const-ification (in particular, passing const-refs instead of values) and deleting unneeded declarations/#includes. Since the changes alter the external interface, this is submitted as a PR for peer review.

One of unneeded declarations/definitions is a virtual destructor in BaseJob descendants. Since a job object should be deleted through QObject::deleteLater() anyway (and it's the only correct way of disposing of the object), all deletions will call the stack of destructors through virtual QObject::~QObject(). Therefore even BaseJob could get on with a non-virtual destructor but for the sake of clarity BaseJob::~BaseJob() is still declared virtual.
https://invent.kde.org/neon/forks/libquotient/-/commit/5038ae0a0099c2a5c6ffdd08734b597d92edac70

Git commit 6431636e6a02d4fddb848e09e79156724e00f6f6 by Kitsune Ral on 08/05/2017 at 20:30..
Allow to get a Connection object of the Room

It's just natural, after all, Connection is a parent of Room. But seriously, this will be needed when we have rooms from different Connections living next to each other.
https://invent.kde.org/neon/forks/libquotient/-/commit/6431636e6a02d4fddb848e09e79156724e00f6f6

Git commit b903a3776aabb44863a9a9a4d83c6ee4e033cd5d by Kitsune Ral on 08/05/2017 at 20:30..
LeaveRoomJob now accepts a roomId, not a Room object; Room::leaveRoom() introduced; Connection and Room cleanup

Helps to better encapsulate Room
https://invent.kde.org/neon/forks/libquotient/-/commit/b903a3776aabb44863a9a9a4d83c6ee4e033cd5d

Git commit 4cc133ac28ec6045b8c4697ce8e1ab9f8c85bbf6 by Kitsune Ral on 09/05/2017 at 03:14..
Enable Travis CI webhook so that Matrix rooms could listen
https://invent.kde.org/neon/forks/libquotient/-/commit/4cc133ac28ec6045b8c4697ce8e1ab9f8c85bbf6

Git commit b91b6bca83935db2db949b683bbe584c05c477b6 by Kitsune Ral on 09/05/2017 at 04:27..
README.md: Described how to use Qt logging categories
https://invent.kde.org/neon/forks/libquotient/-/commit/b91b6bca83935db2db949b683bbe584c05c477b6

Git commit cff6aaafeee5c5f7d337c6001694bda119d3cba9 by Kitsune Ral on 09/05/2017 at 05:15..
Returned Connection::disconnectFromServer() for back-compatibility
https://invent.kde.org/neon/forks/libquotient/-/commit/cff6aaafeee5c5f7d337c6001694bda119d3cba9

Git commit b459f1b3e5355b30a51e9d12a35d8aee6a842886 by Kitsune Ral on 12/05/2017 at 03:55..
BaseJob: Do not leak access token into the job configuration

Before the access token was added to Private::requestQuery on every sendRequest() invocation, leading to the same access token being added up to the request once more with each retry.
https://invent.kde.org/neon/forks/libquotient/-/commit/b459f1b3e5355b30a51e9d12a35d8aee6a842886

Git commit 63db311d5a64b9942dc69e1b13b4570a548554c0 by Kitsune Ral on 13/05/2017 at 06:10..
Refactored logging enhancements

logging.h/logging.cpp is now a full-fledged pair for all things logging. Two more categories added, EPHEMERAL and SYNCJOB, that control logging for ephemeral events and SyncJob, respectively (in particular, switching off EPHEMERAL greatly reduces the logspam about moving read markers and how many users have read up to which event).
https://invent.kde.org/neon/forks/libquotient/-/commit/63db311d5a64b9942dc69e1b13b4570a548554c0

Git commit c25de4e19801c7931ce857c29a7a48be7f5c4dbe by Kitsune Ral on 13/05/2017 at 07:00..
More code cleanup and tweaks; fine-tuning logs; performance improvements

After adding some profiling it became clear that to recalculate the room name and emit namesChanged() upon each member event is a waste, especially when there are thousands of those coming at initial sync (*cough* Matrix HQ room). So the room name is recalculated only once and unconditionally (in most cases this will boil down to checking whether name/canonicalAlias changed after processing the events batch), and namesChanged is only emitted once per batch, if any name or alias changed.
https://invent.kde.org/neon/forks/libquotient/-/commit/c25de4e19801c7931ce857c29a7a48be7f5c4dbe

Git commit eabb31a04889a8c8e9825f3d0024c1e8aa2cea54 by GitHub (on behalf of Kitsune Ral) on 17/05/2017 at 02:13..
Merge pull request #62 from Fxrh/kitsune-refactoring

Code tweaks and cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/eabb31a04889a8c8e9825f3d0024c1e8aa2cea54

Git commit d89e8aa3c7c8160fc32bb3357c9d04046b301477 by Kitsune Ral on 18/05/2017 at 05:58..
Enable OSX in Travis CI
https://invent.kde.org/neon/forks/libquotient/-/commit/d89e8aa3c7c8160fc32bb3357c9d04046b301477

Git commit ced7a66686596e74a1f25b5d9634b9b562870943 by GitHub (on behalf of Kitsune Ral) on 18/05/2017 at 06:05..
Merge pull request #64 from Fxrh/kitsune-osx-ci

Enable OSX in Travis CI
https://invent.kde.org/neon/forks/libquotient/-/commit/ced7a66686596e74a1f25b5d9634b9b562870943

Git commit bb26ca86ad350f2562b51284e7c631b1e4f77106 by Kitsune Ral on 22/05/2017 at 00:39..
util.h: lookup() uses forwarding refs; added Dispatch/dispatch and REGISTER_ENUM

The Dispatch<> template and dispatch(), a facility function for it, simplify dispatching to functions that have different signatures that still can be converted to the same std::function<> type. The case in point is in event.cpp; Event::fromJson calls make() that always returns the type we need; however, once we have several possible base types (Event, RoomEvent, StateEvent), we'd have to either write a specific make() incarnation for each of them, or mess with function return type conversions. Dispatch<> helps to keep the code clean.

REGISTER_ENUM is a cross-Qt versions approach to dumping enumeration values to qDebug() and the likes.
https://invent.kde.org/neon/forks/libquotient/-/commit/bb26ca86ad350f2562b51284e7c631b1e4f77106

Git commit f51d9ba6c4aa7d682eac7aae49a025721d298045 by Kitsune Ral on 22/05/2017 at 01:10..
Dispatch<>: Allow nullptr for a function; special-case GCC 4.8
https://invent.kde.org/neon/forks/libquotient/-/commit/f51d9ba6c4aa7d682eac7aae49a025721d298045

Git commit 34764f3020c360ebc769cfe154e79b9e7e98f0f7 by Kitsune Ral on 22/05/2017 at 01:17..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/34764f3020c360ebc769cfe154e79b9e7e98f0f7

Git commit be838b2f4f294a7e1b3f8a771f91d9d1eac14431 by Kitsune Ral on 22/05/2017 at 01:22..
Refactored Events

The biggest change is we have no pimpls in Event objects anymore - because it's two new's instead of one per Event, and we have thousands and even more of Events created during initial sync. The other big change is introduction of RoomEvent, so that now the structure of events almost precisely reflects the CS API spec. The refactoring made UnknownEvent unnecessary as a separate class; a respective base class (either RoomEvent or Event) is used for this purpose now. All the other changes are consequences of these (mostly of RoomEvent introduction).
https://invent.kde.org/neon/forks/libquotient/-/commit/be838b2f4f294a7e1b3f8a771f91d9d1eac14431

Git commit a5e14da86c3299ca8d36eb4a4eb58ce2a245dc4e by Kitsune Ral on 22/05/2017 at 07:55..
Fixed building with CLang 3.5
https://invent.kde.org/neon/forks/libquotient/-/commit/a5e14da86c3299ca8d36eb4a4eb58ce2a245dc4e

Git commit 36dbba9c543b819aec526f18c33f1d95b0ee61c7 by GitHub (on behalf of Kitsune Ral) on 28/05/2017 at 04:00..
Merge pull request #65 from QMatrixClient/kitsune-simplify-events

Events refactoring
https://invent.kde.org/neon/forks/libquotient/-/commit/36dbba9c543b819aec526f18c33f1d95b0ee61c7

Git commit 6e80ef5b5776eb09f14b6815c2f4d6dbec69dffd by Roman Plášil on 02/06/2017 at 08:23..
Fix qmake compilation
https://invent.kde.org/neon/forks/libquotient/-/commit/6e80ef5b5776eb09f14b6815c2f4d6dbec69dffd

Git commit 67b75e13db0d9b201c92d74e829e45d043313be7 by Roman Plášil on 02/06/2017 at 08:29..
Clean up
https://invent.kde.org/neon/forks/libquotient/-/commit/67b75e13db0d9b201c92d74e829e45d043313be7

Git commit 6aef84109f68e07d71432d5bb8437e33eaeed940 by Roman Plášil on 02/06/2017 at 08:36..
Add Room::memberNames() for nick completion in QML
https://invent.kde.org/neon/forks/libquotient/-/commit/6aef84109f68e07d71432d5bb8437e33eaeed940

Git commit 4e762cba7f03aa9074f8575892831d2498175553 by GitHub (on behalf of Kitsune Ral) on 02/06/2017 at 14:08..
Merge pull request #66 from Quiark/reorg

Expose userlist to QML
https://invent.kde.org/neon/forks/libquotient/-/commit/4e762cba7f03aa9074f8575892831d2498175553

Git commit 3913d0b7d0a809293e20766d61b15fcda82598f5 by Roman Plášil on 07/06/2017 at 02:17..
Make markAllMessagesAsRead() Q_INVOKABLE
https://invent.kde.org/neon/forks/libquotient/-/commit/3913d0b7d0a809293e20766d61b15fcda82598f5

Git commit 28ff47e9cc49c81c1521e4b4e8453cbf28384f44 by GitHub (on behalf of Kitsune Ral) on 07/06/2017 at 07:18..
Merge pull request #68 from Quiark/pull-mark-invokable

Make markAllMessagesAsRead() Q_INVOKABLE
https://invent.kde.org/neon/forks/libquotient/-/commit/28ff47e9cc49c81c1521e4b4e8453cbf28384f44

Git commit 41e34a96bf078c4080dd54ed62fa1b1dcc42a17a by Roman Plášil on 07/06/2017 at 08:26..
Split user's bridge (IRC, Gitter) into a separate field in user model object
https://invent.kde.org/neon/forks/libquotient/-/commit/41e34a96bf078c4080dd54ed62fa1b1dcc42a17a

Git commit 3bad869c1cf9281a27dbcbeebcc05edd41c46dff by Roman Plášil on 07/06/2017 at 08:26..
Adjust whitespace
https://invent.kde.org/neon/forks/libquotient/-/commit/3bad869c1cf9281a27dbcbeebcc05edd41c46dff

Git commit c7c8dd72a4a3c503a2febf428932e0eec4b73aa6 by GitHub (on behalf of Kitsune Ral) on 07/06/2017 at 09:43..
Merge pull request #69 from Quiark/pull-bridged-field

Split bridge name into a separate field in user model
https://invent.kde.org/neon/forks/libquotient/-/commit/c7c8dd72a4a3c503a2febf428932e0eec4b73aa6

Git commit 3aedfe41090e466fc161df9619dc377ec72f7297 by Kitsune Ral on 13/06/2017 at 09:33..
Removed RoomMessageEvent::userId in favor of RoomEvent::senderId
https://invent.kde.org/neon/forks/libquotient/-/commit/3aedfe41090e466fc161df9619dc377ec72f7297

Git commit db75ffed3f1555a99d0c4eb31827990f316d3b3b by Kitsune Ral on 22/06/2017 at 07:18..
Connection is now able to generate transaction ids

The generation algorithm doesn't support several Quaternions using the same accessToken, as of yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/db75ffed3f1555a99d0c4eb31827990f316d3b3b

Git commit 7150b8e864f0a2b9ba602bb56384f7f521f4098d by Kitsune Ral on 22/06/2017 at 07:18..
BaseJob::* facility classes: better construction

Use std::initializer_list instead of QList<> because we actually want to construct from initializer lists; and only enable Data(std::initializer_list) for older Qt's that don't have the same on the level of QJsonObject.
https://invent.kde.org/neon/forks/libquotient/-/commit/7150b8e864f0a2b9ba602bb56384f7f521f4098d

Git commit 1c89c319ae8b61111e893969a40d740a9d76c945 by Kitsune Ral on 22/06/2017 at 08:09..
Enable creation and usage of Event and RoomEvent objects locally, including QML

This includes RoomEvent gaining transactionId property and addId() method so that it could gain ids when being/having been sent.
https://invent.kde.org/neon/forks/libquotient/-/commit/1c89c319ae8b61111e893969a40d740a9d76c945

Git commit 2a51e977575387001eb025e09eba77d9afbd9981 by Kitsune Ral on 22/06/2017 at 08:12..
Enable creation of RoomMessageEvents

RoomMessageEvent and MessageContentEvent::* classes have been massively overhauled to enable creation of m.room.message events locally instead of from JSON.
https://invent.kde.org/neon/forks/libquotient/-/commit/2a51e977575387001eb025e09eba77d9afbd9981

Git commit 631b322ba2b7e7ffc44b2a1ab653b851be86fd33 by Kitsune Ral on 22/06/2017 at 08:25..
MessageEventContent: generalise mimeType

mimeType is relevant to most of the content types, and at the same time getting a MIME type in a generic way is handy for clients to uniformly detect whether they can display the content and what renderer to use for it.
https://invent.kde.org/neon/forks/libquotient/-/commit/631b322ba2b7e7ffc44b2a1ab653b851be86fd33

Git commit 7d745dca7bdd328fd96acdf53f15f4a5cd7cf484 by Kitsune Ral on 22/06/2017 at 08:36..
RoomMessageEvent: Simplify constructors, use QString msgType internally

QString msgType allows non-standard types (we don't want to restrict clients to types from the spec)
https://invent.kde.org/neon/forks/libquotient/-/commit/7d745dca7bdd328fd96acdf53f15f4a5cd7cf484

Git commit 749def2b983d2338272c0891d15de20df22e2eea by Kitsune Ral on 27/06/2017 at 10:44..
Enable sending RoomMessageEvents

1. PostMessageJob is now SendEventJob, which reflects two things: first, it's a PUT instead of a POST (POST for /send is not supported by the latest spec anyway), so that we could enable tracking transaction ids for local echo in the near future; second, it's no more just about messages, the job can support sending any room events (topic changes etc.).
2. Room::postMessage() now uses the new RoomMessageEvent API to send m.room.message events.
https://invent.kde.org/neon/forks/libquotient/-/commit/749def2b983d2338272c0891d15de20df22e2eea

Git commit 47c2015beb75693c7181fb7359a4aa166e926fe7 by Kitsune Ral on 28/06/2017 at 22:27..
Fixed building with Qt version=5.4; moved away a macro unused in headers
https://invent.kde.org/neon/forks/libquotient/-/commit/47c2015beb75693c7181fb7359a4aa166e926fe7

Git commit 3dfb74af71fe0cceaeb14d1ef0ade846f3a659f9 by GitHub (on behalf of Kitsune Ral) on 15/07/2017 at 04:07..
Merge pull request #72 from QMatrixClient/kitsune-send-events

Events creation and sending
https://invent.kde.org/neon/forks/libquotient/-/commit/3dfb74af71fe0cceaeb14d1ef0ade846f3a659f9

Git commit c898caed6a7c8d7a5466d556b2d186ddc861884b by Kitsune Ral on 16/07/2017 at 11:12..
Fixed too strict validations in (Room)Event
https://invent.kde.org/neon/forks/libquotient/-/commit/c898caed6a7c8d7a5466d556b2d186ddc861884b

Git commit 86acf9fb5a5ea4328e6130ba8263ec8cd82ba0d2 by Roman Plášil on 18/07/2017 at 02:03..
Room event timestamp can also be undefined
https://invent.kde.org/neon/forks/libquotient/-/commit/86acf9fb5a5ea4328e6130ba8263ec8cd82ba0d2

Git commit ffa2228462afe5f2d330bc2aecad1029742222c4 by GitHub (on behalf of Kitsune Ral) on 18/07/2017 at 03:08..
Merge pull request #77 from Quiark/master

Room event timestamp can also be undefined
https://invent.kde.org/neon/forks/libquotient/-/commit/ffa2228462afe5f2d330bc2aecad1029742222c4

Git commit 95a6d19a4336571f5af703fa953e161c66f16e37 by Kitsune Ral on 19/07/2017 at 08:35..
Make sure -Wall is used regardless of the parent project settings
https://invent.kde.org/neon/forks/libquotient/-/commit/95a6d19a4336571f5af703fa953e161c66f16e37

Git commit 40b65a93981233c2420e8a4eb653add8c438b446 by Kitsune Ral on 19/07/2017 at 08:55..
Restore compatibility with CMake versions below 3.3
https://invent.kde.org/neon/forks/libquotient/-/commit/40b65a93981233c2420e8a4eb653add8c438b446

Git commit 575a459f01e27b2f9efa676e031f96b49bd319af by Kitsune Ral on 22/07/2017 at 08:45..
SendEventJob: Fixed empty transaction id's
https://invent.kde.org/neon/forks/libquotient/-/commit/575a459f01e27b2f9efa676e031f96b49bd319af

Git commit 725043ceca17bc7de8ca17989025959511ed776b by Kitsune Ral on 08/08/2017 at 06:37..
Vector has been renamed to Riot long ago
https://invent.kde.org/neon/forks/libquotient/-/commit/725043ceca17bc7de8ca17989025959511ed776b

Git commit c1929dc22c87ac61e5369cb752e6ddd0ef6a79bf by Roman Plášil on 16/08/2017 at 05:56..
WIP saving intermediate state to JSON
https://invent.kde.org/neon/forks/libquotient/-/commit/c1929dc22c87ac61e5369cb752e6ddd0ef6a79bf

Git commit 6ae8e3d78b5c4a75ca7d5ca88af730071047d148 by Roman Plášil on 16/08/2017 at 06:09..
Implement saving save to enable incremental sync even after shutdown
https://invent.kde.org/neon/forks/libquotient/-/commit/6ae8e3d78b5c4a75ca7d5ca88af730071047d148

Git commit f3d893150f3991db2aed7a890d6156a576ae2e42 by Roman Plášil on 18/08/2017 at 06:29..
Fix compilation for Qt 5.2.1
https://invent.kde.org/neon/forks/libquotient/-/commit/f3d893150f3991db2aed7a890d6156a576ae2e42

Git commit de1f9a320bdabf4859a89d2686873aea622c1354 by Kitsune Ral on 19/08/2017 at 08:58..
Room::localUser() facility method
https://invent.kde.org/neon/forks/libquotient/-/commit/de1f9a320bdabf4859a89d2686873aea622c1354

Git commit 5f85a2bfc5d5fee00fcdfb1230af32344376e39a by Kitsune Ral on 19/08/2017 at 09:01..
BaseJob::Data: Small update to better match Qt API

Also: Query and Data constructors from initialization_list<> are no more explicit, as clang-tidy recommends.
https://invent.kde.org/neon/forks/libquotient/-/commit/5f85a2bfc5d5fee00fcdfb1230af32344376e39a

Git commit 456604040ce9cf3c22b726e8ef279a1fe4a85f39 by Roman Plášil on 23/08/2017 at 06:49..
Use QUrl for state save file, create directory if it doesn't exist
https://invent.kde.org/neon/forks/libquotient/-/commit/456604040ce9cf3c22b726e8ef279a1fe4a85f39

Git commit 1a00b1c38c0957df9758b0edeff4559f2515fe5e by Roman Plášil on 27/08/2017 at 04:32..
Use QJsonObject.insert and QStringLiteral
https://invent.kde.org/neon/forks/libquotient/-/commit/1a00b1c38c0957df9758b0edeff4559f2515fe5e

Git commit 1b459a0f32b28b2f3fe8dcc0cd2553c3aea9ccee by Roman Plášil on 27/08/2017 at 06:45..
Remove saveStateFile property and just use an argument.
https://invent.kde.org/neon/forks/libquotient/-/commit/1b459a0f32b28b2f3fe8dcc0cd2553c3aea9ccee

Git commit 72f7d49f89c14965be7d667f83a20c9d527708cb by Kitsune Ral on 28/08/2017 at 01:28..
Use -pedantic with compilers that support it
https://invent.kde.org/neon/forks/libquotient/-/commit/72f7d49f89c14965be7d667f83a20c9d527708cb

Git commit 3ce6dd3db9480b017f89a977d4333f01f25f2cff by Kitsune Ral on 28/08/2017 at 06:10..
Better documentation

Thanks to CII Best Practices Badge project for the hints and for the original CONTRIBUTING.md
https://invent.kde.org/neon/forks/libquotient/-/commit/3ce6dd3db9480b017f89a977d4333f01f25f2cff

Git commit 45c138903c20d32a8a69b5637a72898bc690f1f1 by Kitsune Ral on 01/09/2017 at 10:48..
BaseJob::Data: expose constructors from QJsonObject

We had a stupid situation when this class has less features when
compiled with newer Qt because we explicitly added a constructor from
std::initializer_list for older Qt versions but did not reuse the same
constructor from QJsonObject for newer versions.
https://invent.kde.org/neon/forks/libquotient/-/commit/45c138903c20d32a8a69b5637a72898bc690f1f1

Git commit c28211698b8f9b82cafc0f9d9457e40c6c17632a by Kitsune Ral on 01/09/2017 at 10:50..
Added files to (eventually) generate *Job classes automatically

KitsuneRal/api-generator project is a place where all the heavy lifting will (eventually) be implemented. This commit marks a point when the generated files at least compile (whether they work is not tested yet). Return values are so far entirely ignored.
https://invent.kde.org/neon/forks/libquotient/-/commit/c28211698b8f9b82cafc0f9d9457e40c6c17632a

Git commit 206976c56013067593f006d621fd4f34475d5ce0 by Kitsune Ral on 01/09/2017 at 10:50..
Added (so far unused) preprocessing section to apigen.yaml
https://invent.kde.org/neon/forks/libquotient/-/commit/206976c56013067593f006d621fd4f34475d5ce0

Git commit 9a26c52f8c3e71f803fd38128ecddfd6ce9748f6 by Roman Plášil on 01/09/2017 at 16:58..
Use status return type for parseJson
https://invent.kde.org/neon/forks/libquotient/-/commit/9a26c52f8c3e71f803fd38128ecddfd6ce9748f6

Git commit b62149fdb0b5c247c075a1070bf4b75c1a3d057e by Josip Delic on 01/09/2017 at 18:59..
Add Connection::leftRoom signal
https://invent.kde.org/neon/forks/libquotient/-/commit/b62149fdb0b5c247c075a1070bf4b75c1a3d057e

Git commit 59acb4e7eafb346cf76f086aba229a5ba9d8f1b2 by GitHub (on behalf of Kitsune Ral) on 02/09/2017 at 02:52..
Merge pull request #81 from delijati/master

Add Connection::leftRoom signal  #80
https://invent.kde.org/neon/forks/libquotient/-/commit/59acb4e7eafb346cf76f086aba229a5ba9d8f1b2

Git commit a7ee0dfacc2c571572240191b3cf0846a9e32998 by Roman Plášil on 03/09/2017 at 06:43..
More fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/a7ee0dfacc2c571572240191b3cf0846a9e32998

Git commit f72923d2d82ca463bba22e8c97f225f54113ed68 by Kitsune Ral on 03/09/2017 at 08:53..
CMakeLists: add_custom_target(update-api), aux_source_directory to load files list

- cmake --target update-api can be used to update the api files
- aux_source_directory() is used to enumerate generated files instead
  of apifiles.txt (we wouldn't be able to rerun CMake on the changed
  files list anyway).
https://invent.kde.org/neon/forks/libquotient/-/commit/f72923d2d82ca463bba22e8c97f225f54113ed68

Git commit 8ebadee2e44a05c8329c934005249bd7eabcb88d by Kitsune Ral on 03/09/2017 at 09:31..
Try to introduce api-generator to Travis CI
https://invent.kde.org/neon/forks/libquotient/-/commit/8ebadee2e44a05c8329c934005249bd7eabcb88d

Git commit 56d34ecab5eb35c426a6e64b034bf2507761dd09 by Roman Plášil on 04/09/2017 at 02:35..
Use SyncJob::SyncData as a plain member
https://invent.kde.org/neon/forks/libquotient/-/commit/56d34ecab5eb35c426a6e64b034bf2507761dd09

Git commit 7b22c356aca065acb04d1c4fa96d878bf6b36757 by Kitsune Ral on 04/09/2017 at 04:10..
Travis CI: build in containers, use newer compilers

api-generator only builds on newer compilers (GCC 5, Clang 3.8). Qt version is unchanged.
https://invent.kde.org/neon/forks/libquotient/-/commit/7b22c356aca065acb04d1c4fa96d878bf6b36757

Git commit fd4ee6b9eb083d25f701cede70922d7f54643cad by Kitsune Ral on 04/09/2017 at 04:20..
Generate job files on every Travis build
https://invent.kde.org/neon/forks/libquotient/-/commit/fd4ee6b9eb083d25f701cede70922d7f54643cad

Git commit cb56a6aa547307e33caf43173f628ea855a4366d by Kitsune Ral on 04/09/2017 at 04:28..
Use QMatrixClient's fork of matrix-doc in the meantime

Because only the fork contains operationId's yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/cb56a6aa547307e33caf43173f628ea855a4366d

Git commit 071856d31995f665ee9219b3e05510ab83f9f4d8 by Roman Plášil on 04/09/2017 at 11:23..
Use move on SyncData
https://invent.kde.org/neon/forks/libquotient/-/commit/071856d31995f665ee9219b3e05510ab83f9f4d8

Git commit d1fd237d8f917d393a2a8491abc1554abd398085 by Kitsune Ral on 05/09/2017 at 03:09..
Include unread/notification counters to the cache
https://invent.kde.org/neon/forks/libquotient/-/commit/d1fd237d8f917d393a2a8491abc1554abd398085

Git commit c0bd6c511b54eb9154e8f42427a62f5ac202cb4a by Kitsune Ral on 05/09/2017 at 09:34..
Room: memberCount(); slight optimization and reformatting
https://invent.kde.org/neon/forks/libquotient/-/commit/c0bd6c511b54eb9154e8f42427a62f5ac202cb4a

Git commit 8a8d68f2893a389d1073a86a3d10a1dd64afadce by Kitsune Ral on 05/09/2017 at 09:49..
Merge branch 'master' into kitsune-apigen
https://invent.kde.org/neon/forks/libquotient/-/commit/8a8d68f2893a389d1073a86a3d10a1dd64afadce

Git commit da975f68f6a8503bf5466292dcdceed8c6f7fa6f by Kitsune Ral on 05/09/2017 at 10:23..
Initialize more properly to fix a warning
https://invent.kde.org/neon/forks/libquotient/-/commit/da975f68f6a8503bf5466292dcdceed8c6f7fa6f

Git commit c5ed011aa13d08d62e999fc6b5ff142a2bc07421 by Kitsune Ral on 07/09/2017 at 06:35..
Actually use the types map in apigen.yaml
https://invent.kde.org/neon/forks/libquotient/-/commit/c5ed011aa13d08d62e999fc6b5ff142a2bc07421

Git commit e3ae4840e3082cbd30b4f699ef142787187ef688 by Kitsune Ral on 08/09/2017 at 07:25..
Connection: Room and User factories are std::functions now

Instead of createUser() and createRoom() virtual functions, use std::function<> to store predefined lambdas that would create respective descendants from User and Room, respectively. No more need QuaternionConnection just for the sake of creating a QuaternionRoom.
https://invent.kde.org/neon/forks/libquotient/-/commit/e3ae4840e3082cbd30b4f699ef142787187ef688

Git commit 180d62e094a1a6b6fc69c99b291ef075dc649135 by Kitsune Ral on 08/09/2017 at 07:51..
Revert previous commit as it breaks building with VC 2015

This reverts commit da975f68f6a8503bf5466292dcdceed8c6f7fa6f.
https://invent.kde.org/neon/forks/libquotient/-/commit/180d62e094a1a6b6fc69c99b291ef075dc649135

Git commit c4f690edf4cc2e11f19370f80ddd7428aba0b536 by Kitsune Ral on 08/09/2017 at 07:51..
Connection: Room and User factories are std::functions now

Instead of createUser() and createRoom() virtual functions, use std::function<> to store predefined lambdas that would create respective descendants from User and Room, respectively. No more need QuaternionConnection just for the sake of creating a QuaternionRoom.
https://invent.kde.org/neon/forks/libquotient/-/commit/c4f690edf4cc2e11f19370f80ddd7428aba0b536

Git commit c87b4d9dcaacd932cbb7e4a9dca00c55b6338eef by Kitsune Ral on 08/09/2017 at 09:36..
Better toJson for container objects

The previous version couldn't deal with containers of objects that have no implicit conversion to QJsonValue. The current one can.
https://invent.kde.org/neon/forks/libquotient/-/commit/c87b4d9dcaacd932cbb7e4a9dca00c55b6338eef

Git commit 9852ef0b8aa1033328b313f6f78232f5670f00df by Kitsune Ral on 08/09/2017 at 13:39..
Prepend basePath to produce endpoint paths correctly
https://invent.kde.org/neon/forks/libquotient/-/commit/9852ef0b8aa1033328b313f6f78232f5670f00df

Git commit 788e4f0af51d415053061f303b290a01633bb6c8 by Kitsune Ral on 09/09/2017 at 11:02..
apigen.yaml: cleanup

Commented out parts that aren't used yet; moved the whole 'env:' section down below (because it's used by Printer rather than Analyzer or Translator).
https://invent.kde.org/neon/forks/libquotient/-/commit/788e4f0af51d415053061f303b290a01633bb6c8

Git commit 1c86ff91b5db9bd6757e8149df462d4247fef90c by Kitsune Ral on 09/09/2017 at 11:14..
First files made by api-generator

Actual usage will some with the next commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/1c86ff91b5db9bd6757e8149df462d4247fef90c

Git commit 442470d4fcc565d54086caecdb07e9a046b26333 by Kitsune Ral on 09/09/2017 at 11:17..
Kicking, inviting, exposing rooms in Invite state

Kicking and inviting use generated job classes. Rooms in Invite state are stored separately in the hash from those in Join/Leave state because The Spec says so. For clients, this means that the same room may appear twice in the rooms map if it's been left and then the user was again invited to it. The code in Quaternion that properly processes this will arrive shortly.
https://invent.kde.org/neon/forks/libquotient/-/commit/442470d4fcc565d54086caecdb07e9a046b26333

Git commit 715ebcfc5c33ff83cc8f185b6e14cfbba01c637b by Kitsune Ral on 09/09/2017 at 11:19..
preamble.mustache now only mentions that the file is generated
https://invent.kde.org/neon/forks/libquotient/-/commit/715ebcfc5c33ff83cc8f185b6e14cfbba01c637b

Git commit d57485bb3a7d980642e7f68edd5785c144acc742 by Kitsune Ral on 09/09/2017 at 12:00..
converters.h: Facility methods for generated jobs

A cherry-pick from the kitsune-apigen branch; a family of toJson() and fromJson<>() functions to unify conversion of data back and forth.
https://invent.kde.org/neon/forks/libquotient/-/commit/d57485bb3a7d980642e7f68edd5785c144acc742

Git commit 8ae1da50f8474a698ce83f61233b3a8975faeaee by Kitsune Ral on 09/09/2017 at 12:01..
First files made by api-generator

Actual usage will come with the next commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/8ae1da50f8474a698ce83f61233b3a8975faeaee

Git commit 24e3d967d7c9029147202e10385b0b8e8881e4d9 by Kitsune Ral on 09/09/2017 at 12:02..
Kicking, inviting, exposing rooms in Invite state

Kicking and inviting use generated job classes. Rooms in Invite state are stored separately in the hash from those in Join/Leave state because The Spec says so. For clients, this means that the same room may appear twice in the rooms map if it's been left and then the user was again invited to it. The code in Quaternion that properly processes this will arrive shortly.
https://invent.kde.org/neon/forks/libquotient/-/commit/24e3d967d7c9029147202e10385b0b8e8881e4d9

Git commit 6300d53663ea118a1f80ceed24648d8553766e17 by Kitsune Ral on 09/09/2017 at 12:34..
Collect files from jobs/generated into the list of built sources
https://invent.kde.org/neon/forks/libquotient/-/commit/6300d53663ea118a1f80ceed24648d8553766e17

Git commit 5ddfbf25f2657f232649a9fdd2ad481127f6c349 by Kitsune Ral on 13/09/2017 at 12:09..
Add a missing #include
https://invent.kde.org/neon/forks/libquotient/-/commit/5ddfbf25f2657f232649a9fdd2ad481127f6c349

Git commit 5ad32f13b8a7a8552e2b6c56571bd8177b3fabb2 by GitHub (on behalf of Kitsune Ral) on 15/09/2017 at 09:40..
Merge pull request #82 from QMatrixClient/kitsune-uncouple-factories

Connection: Room and User factories are std::functions now
https://invent.kde.org/neon/forks/libquotient/-/commit/5ad32f13b8a7a8552e2b6c56571bd8177b3fabb2

Git commit cb3848c1e7fe09c2e778d38139c399b9f0484ce5 by Kitsune Ral on 15/09/2017 at 09:48..
MediaThumbnailJob: get rid of useless pimpl; add scaledThumbnail()

Also use scaledThumbnail() in User::requestAvatar()
https://invent.kde.org/neon/forks/libquotient/-/commit/cb3848c1e7fe09c2e778d38139c399b9f0484ce5

Git commit 6b40c313f8e4a0964e857973d8f9636a9f833f9d by Kitsune Ral on 16/09/2017 at 11:40..
Better API for clients to catch up on room list changes

joinedRoom() and leftRoom() now pass the preempted Invite state of the
room as well; roomMap() only returns Invite and Join rooms, not Leave.
https://invent.kde.org/neon/forks/libquotient/-/commit/6b40c313f8e4a0964e857973d8f9636a9f833f9d

Git commit 726f8d464f4b29f6fd3dc92fa5493e239970b209 by Kitsune Ral on 16/09/2017 at 11:40..
provideRoom: Added invitedRoom() signal; fixed issues with some transitions

Notably:
* setJoinState() invocation has been missing from the previous code
* processing invites did not take into account that a Leave state may already exist, thereby forcing clients that display left rooms to look through their records just in case they have to replace a Leave with Invite.
* joinedRoom() was emitted even when the room is not newly joined.
https://invent.kde.org/neon/forks/libquotient/-/commit/726f8d464f4b29f6fd3dc92fa5493e239970b209

Git commit 16fd53ff0be54531661e9e0cd27c4f893295b62e by Kitsune Ral on 16/09/2017 at 13:30..
Merge branch 'master' into kitsune-invite-kick
https://invent.kde.org/neon/forks/libquotient/-/commit/16fd53ff0be54531661e9e0cd27c4f893295b62e

Git commit be258954da33ea3f96fa947569bf617caae68452 by Kitsune Ral on 19/09/2017 at 01:55..
Connection: More deprecations; documented callApi<>()
https://invent.kde.org/neon/forks/libquotient/-/commit/be258954da33ea3f96fa947569bf617caae68452

Git commit 1b11a6ee708291db37b0c7879eb103d81d70a6b7 by Kitsune Ral on 19/09/2017 at 01:55..
Event::originalJsonObject(), RoomEvent validations commented out

* Event::originalJsonObject() exposes the original JSON for the event without converting it to QByteArray. This is useful to quickly dump an event into a bigger JSON without reconstructing a JSON object.
* Validations in RoomEvent::RoomEvent() do more harm than good. The rest of the library tolerates absence of those attributes pretty well (it wouldn't be able to do much with that anyway); at the same time, dumping JSON to logs turns out to be pretty heavy, and throwing many invalid events at a client is a good way to hit its performance.
https://invent.kde.org/neon/forks/libquotient/-/commit/1b11a6ee708291db37b0c7879eb103d81d70a6b7

Git commit 4e23da3de66e425997506c75204a9e3ea22ccfa5 by Kitsune Ral on 19/09/2017 at 01:55..
Room: Slight optimization of makeErrorStr()

The previous version constructed QString from const char* and QByteArray
parts,
only to convert it back to QByteArray; the current version
does the whole thing in QByteArray terms.
https://invent.kde.org/neon/forks/libquotient/-/commit/4e23da3de66e425997506c75204a9e3ea22ccfa5

Git commit d4cb62523585137dee7879f2143ae1b4dd62513d by Kitsune Ral on 19/09/2017 at 03:57..
Fix a race condition leading to a crash on close

It seems that some reply processing still might have happened after
BaseJob::abandon() (caused in turn by destroying a Connection object),
probably because the event from QNetworkReply landed in the event queue
after BaseJob::abandon() but before actual deletion of a job object. Now
countered by disconnecting from QNetworkReply signals in abandon() and
stop().
https://invent.kde.org/neon/forks/libquotient/-/commit/d4cb62523585137dee7879f2143ae1b4dd62513d

Git commit 0b11b06379fe668063ea5658a261f53f1dcf117a by Kitsune Ral on 19/09/2017 at 03:57..
BaseJob: improved logging

Your QT_LOGGING_RULES (especially useful with Qt 5.6 and newer) should
work a bit better now:
* "Job" prefix is no more needed because the Qt logging prefix
(libqmatrixclient.jobs) says it already;
* The "created" record didn't follow the logging category if overridden
from the concrete job class (see SyncJob); so instead of "created"
there's now much more useful "sending request" record.
https://invent.kde.org/neon/forks/libquotient/-/commit/0b11b06379fe668063ea5658a261f53f1dcf117a

Git commit 95e6ae003e3f5ed806bc7adf4e10713cd4e35d1f by Kitsune Ral on 19/09/2017 at 04:01..
Connection::cacheState property, load/saveState() tweaks and fixes

The property controls whether or not the rooms state is cached: if it's off, loadState() and saveState() become no-ops. Other changes:
* loadState/saveState properly deal with rooms in Invite state (this is not quite relevant to the current branch but very much is in the light of a concurrent kitsune-invite-kick PR);
* Profile loadState/saveState (because dumping and especially parsing JSON takes time);
* Use QJsonDocument::Compact layout, it's about 3 times smaller and quicker to parse than Indented, and we really don't care about the cache being human-friendly;
* Have a default path for the state cache, based on the connection's user id.
https://invent.kde.org/neon/forks/libquotient/-/commit/95e6ae003e3f5ed806bc7adf4e10713cd4e35d1f

Git commit c5c26ff4a09eecaa6d8e1507087566ccf0fd96b4 by Kitsune Ral on 19/09/2017 at 04:01..
Room: cache last read event and unread messages flag with the room state

Since there's no such thing as "unread messages flag" in the CS API spec, there's now a non-standard key-value in cached m.read receipts for that.
https://invent.kde.org/neon/forks/libquotient/-/commit/c5c26ff4a09eecaa6d8e1507087566ccf0fd96b4

Git commit 35ef29ead1da906e4978dcd908e7c1513ac9bfd3 by Kitsune Ral on 19/09/2017 at 09:08..
Merge branch 'master' into cache-state-to-json
https://invent.kde.org/neon/forks/libquotient/-/commit/35ef29ead1da906e4978dcd908e7c1513ac9bfd3

Git commit 68c3727db0e2fd4cc6d08d3969f3494a906ef4d4 by Kitsune Ral on 19/09/2017 at 09:59..
Room: Fixed a special case with invalid-read-marker-becoming-valid

It's a case when the last-read-event id refers to an event that was outside the loaded timeline and has just arrived. Depending on what messages follow the discovered last-read one, we might need to promote the read marker and update unreadMessages flag. The latter is especially relevant in our current situation when empty timelines upon the application startup are a norm.
https://invent.kde.org/neon/forks/libquotient/-/commit/68c3727db0e2fd4cc6d08d3969f3494a906ef4d4

Git commit f42a3090d40343166d2abd198e66fd13e4c7ccd1 by Kitsune Ral on 20/09/2017 at 03:31..
Room::updateData(): Don't profile empty structures
https://invent.kde.org/neon/forks/libquotient/-/commit/f42a3090d40343166d2abd198e66fd13e4c7ccd1

Git commit 7e8c2ee1d00e43aab90030493c31aef0b4467f71 by Kitsune Ral on 20/09/2017 at 04:00..
Minor optimisations in sync data parsing
https://invent.kde.org/neon/forks/libquotient/-/commit/7e8c2ee1d00e43aab90030493c31aef0b4467f71

Git commit b01591bddbcc4bcf3957feeb6b4b2875a9a2d978 by Kitsune Ral on 20/09/2017 at 05:05..
BaseJob: track the outcome of sendRequest() in the logs

Also: no reason to start the job timer if the request is not running, so don't even bother.
https://invent.kde.org/neon/forks/libquotient/-/commit/b01591bddbcc4bcf3957feeb6b4b2875a9a2d978

Git commit 81c04033fa32ed0fa45c44db22ce11ff0636669b by Kitsune Ral on 20/09/2017 at 11:47..
User: no more croppedAvatar(); added avatarUrl() accessor

avatarUrl() is not yet invokable from QML; I'm considering to make all the simple things in User Q_PROPERTies instead.
https://invent.kde.org/neon/forks/libquotient/-/commit/81c04033fa32ed0fa45c44db22ce11ff0636669b

Git commit f936182135d166e5dea734775e24cabd4b763c64 by Kitsune Ral on 20/09/2017 at 11:48..
Room::Private::toJson(): save user avatar URLs as well

Otherwise, users are doomed to stay avatarless upon restoration, until they update avatars again.
https://invent.kde.org/neon/forks/libquotient/-/commit/f936182135d166e5dea734775e24cabd4b763c64

Git commit 9cc3f82026c64862bae6a535d2b883b8cf97fba0 by Kitsune Ral on 21/09/2017 at 11:44..
Merge branch 'master' into kitsune-invite-kick
https://invent.kde.org/neon/forks/libquotient/-/commit/9cc3f82026c64862bae6a535d2b883b8cf97fba0

Git commit 4eeecd2cf3c9a33878974b93211b29df891ecc9a by GitHub (on behalf of Kitsune Ral) on 21/09/2017 at 11:55..
Merge pull request #83 from QMatrixClient/kitsune-invite-kick

Support inviting, kicking and dealing with rooms in Invite state
https://invent.kde.org/neon/forks/libquotient/-/commit/4eeecd2cf3c9a33878974b93211b29df891ecc9a

Git commit d51e7a43736096eb2776acd99e1aab6deeb65667 by Kitsune Ral on 21/09/2017 at 11:59..
jobs: SetRoomStateJob (with or without state key); setting room topic
https://invent.kde.org/neon/forks/libquotient/-/commit/d51e7a43736096eb2776acd99e1aab6deeb65667

Git commit 15feb65dbb17161ccfbda614e0635f2698beacd7 by Kitsune Ral on 22/09/2017 at 05:04..
BaseJob: Log the sent request more nicely
https://invent.kde.org/neon/forks/libquotient/-/commit/15feb65dbb17161ccfbda614e0635f2698beacd7

Git commit ae59271da3a199eb936aa709893ef592cd51f172 by Kitsune Ral on 22/09/2017 at 05:17..
Use epoch milliseconds instead of std::rand() to seed the txn counter

std::rand() on MinGW on Windows 7, at least in debug mode, nicely generates the same value across runs, reliably leading to messages loss as the server discards them.
https://invent.kde.org/neon/forks/libquotient/-/commit/ae59271da3a199eb936aa709893ef592cd51f172

Git commit d8c512ee5cbc4cc45668db805330f24fb7815a20 by Roman Plášil on 23/09/2017 at 10:19..
Update qmake build file
https://invent.kde.org/neon/forks/libquotient/-/commit/d8c512ee5cbc4cc45668db805330f24fb7815a20

Git commit faa395c5e3b148217073dc9d2953084d68d685bd by GitHub (on behalf of Kitsune Ral) on 27/09/2017 at 21:52..
Merge pull request #86 from Quiark/master

Update qmake build file
https://invent.kde.org/neon/forks/libquotient/-/commit/faa395c5e3b148217073dc9d2953084d68d685bd

Git commit b469f1c9ab7603a297b1c0082d804312cabbd550 by Kitsune Ral on 30/09/2017 at 15:02..
Merge branch 'master' into kitsune-apigen
https://invent.kde.org/neon/forks/libquotient/-/commit/b469f1c9ab7603a297b1c0082d804312cabbd550

Git commit 79f52e3f6142afd48d30b842618ef0867072443b by Kitsune Ral on 01/10/2017 at 23:20..
Introduce EncryptionEvent class

This allows to detect if a room has been encrypted (no room state, just
an event as of yet). Closes #84.
https://invent.kde.org/neon/forks/libquotient/-/commit/79f52e3f6142afd48d30b842618ef0867072443b

Git commit 21fa206adab838fe90c84b16e910d1b696da0e28 by Kitsune Ral on 02/10/2017 at 02:46..
Room::id(): return cref

A cref is still faster than incrementing a refcounter in QString, and all the other COW stuff, and room id is not supposed to change ever.
https://invent.kde.org/neon/forks/libquotient/-/commit/21fa206adab838fe90c84b16e910d1b696da0e28

Git commit b2c9daabc2e8b89e1108211d8c9badf1bac66640 by Kitsune Ral on 02/10/2017 at 03:20..
All jobs: Drop ConnectionData parameter from the constructor

Having to pass ConnectionData to each and every job class was nothing but boilerplate since the very beginning. Removing it required to prepend BaseJob::start() with ConnectionData-setting code, and to provide a way to alter the request configuration depending on the (late-coming) ConnectionData object. This is a new responsibility of BaseJob::start(); the previous BaseJob::start() contents have moved to BaseJob::sendRequest() (which is now invoked on retries, instead of start()).
https://invent.kde.org/neon/forks/libquotient/-/commit/b2c9daabc2e8b89e1108211d8c9badf1bac66640

Git commit ab33516eb9aed5db5decb572cb30a83971f4c51e by Kitsune Ral on 02/10/2017 at 05:31..
Drop ConnectionData parameter from {{template}} files too; less blanks
https://invent.kde.org/neon/forks/libquotient/-/commit/ab33516eb9aed5db5decb572cb30a83971f4c51e

Git commit ce1bbe88509715c9a35bb7aeeb5f20f0d4918ec4 by Kitsune Ral on 02/10/2017 at 11:24..
api-generator has been renamed to gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/ce1bbe88509715c9a35bb7aeeb5f20f0d4918ec4

Git commit c9dc5e12b835425f1ba5c447ddb3c3394ccac93e by Kitsune Ral on 03/10/2017 at 07:20..
Room: cache unread indicator inside m.read content, not next to it

The CS API, turns out, has a quite official extension point inside m.read event content - clients are allowed to put whatever extra data they feel reasonable.
https://invent.kde.org/neon/forks/libquotient/-/commit/c9dc5e12b835425f1ba5c447ddb3c3394ccac93e

Git commit c0953cf02f18d3ce6d514af1d22b54a4612bd139 by Kitsune Ral on 08/10/2017 at 02:23..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/c0953cf02f18d3ce6d514af1d22b54a4612bd139

Git commit dd093699ba8a5634962cc7a2d5afffa303b0dcb1 by Kitsune Ral on 10/10/2017 at 03:19..
Extend the number of types supported by fromJson<>()

Template function cannot have partial specializations, and we need to deserialise QVector<> objects. So fromJson<>() is now a wrapper around FromJson<> template class that does all the dispatching stuff in its operator().
https://invent.kde.org/neon/forks/libquotient/-/commit/dd093699ba8a5634962cc7a2d5afffa303b0dcb1

Git commit 7726249de84b829bf066638ab96c2785f3a32427 by Kitsune Ral on 10/10/2017 at 03:20..
Protect against identifiers hitting on C/C++ reserved words
https://invent.kde.org/neon/forks/libquotient/-/commit/7726249de84b829bf066638ab96c2785f3a32427

Git commit 13d1943710025d6a9dd6011b67c083ac9b00aa75 by Kitsune Ral on 10/10/2017 at 07:35..
Jobs with non-trivial results are generated properly

This addresses the last bullet in KitsuneRal/gtad#10, completing the implementation.
https://invent.kde.org/neon/forks/libquotient/-/commit/13d1943710025d6a9dd6011b67c083ac9b00aa75

Git commit e7df1390b98cb6a4b0cae1558c331a8e79d71f95 by Kitsune Ral on 12/10/2017 at 14:08..
{{templates}} polishing
https://invent.kde.org/neon/forks/libquotient/-/commit/e7df1390b98cb6a4b0cae1558c331a8e79d71f95

Git commit 8800690c691dc9534fdb0f2d902862f816704d50 by Kitsune Ral on 12/10/2017 at 22:02..
Support banning and unbanning

Closes #38. Also rearranged #includes
https://invent.kde.org/neon/forks/libquotient/-/commit/8800690c691dc9534fdb0f2d902862f816704d50

Git commit b2a017303a34e248873b2e47e560a41dc4c5111c by Kitsune Ral on 13/10/2017 at 08:37..
All jobs: Drop ConnectionData parameter from the constructor

Having to pass ConnectionData to each and every job class was nothing but boilerplate since the very beginning. Removing it required to prepend BaseJob::start() with ConnectionData-setting code, and to provide a way to alter the request configuration depending on the (late-coming) ConnectionData object. This is a new responsibility of BaseJob::start(); the previous BaseJob::start() contents have moved to BaseJob::sendRequest() (which is now invoked on retries, instead of start()).
https://invent.kde.org/neon/forks/libquotient/-/commit/b2a017303a34e248873b2e47e560a41dc4c5111c

Git commit 8207ef24c0e71133f3cfe115a4652767b4a63f9d by Kitsune Ral on 13/10/2017 at 08:37..
Extend the number of types supported by fromJson<>()

Template function cannot have partial specializations, and we need to deserialise QVector<> objects. So fromJson<>() is now a wrapper around FromJson<> template class that does all the dispatching stuff in its operator().
https://invent.kde.org/neon/forks/libquotient/-/commit/8207ef24c0e71133f3cfe115a4652767b4a63f9d

Git commit 360fa9c8a053d8b0888c5d2a8cda6c7672cdd5a1 by Kitsune Ral on 13/10/2017 at 08:38..
Cleaner generated files
https://invent.kde.org/neon/forks/libquotient/-/commit/360fa9c8a053d8b0888c5d2a8cda6c7672cdd5a1

Git commit d27d2ab396f92b7d5139f43afe52be6e0470eaea by Kitsune Ral on 13/10/2017 at 08:38..
Support banning and unbanning

Closes #38. Also rearranged #includes
https://invent.kde.org/neon/forks/libquotient/-/commit/d27d2ab396f92b7d5139f43afe52be6e0470eaea

Git commit 2d3590dbdb23c82f1960327ffbd78e778231b9c8 by Kitsune Ral on 13/10/2017 at 21:17..
Pass universal references in Connection::callApi<>; fixed a typo in util.h

So that even uncopyable types could be used for parameters; also fixed a typo in util.h that prevented dispatch() from using with multiple argument functions.
https://invent.kde.org/neon/forks/libquotient/-/commit/2d3590dbdb23c82f1960327ffbd78e778231b9c8

Git commit 76c42a9863b83229e6afaf4be32e9582e3d97d3f by Kitsune Ral on 13/10/2017 at 23:53..
Cleanup around Room (potentially breaks API compatibility, beware)

Notably:
* API for SendEventJob and SetRoomStateJob has been altered to accept references, not pointers.
* Methods on Room that invoke requests to the server, have lost const, because they may be reflecting the changed state on the fly, within themselves
https://invent.kde.org/neon/forks/libquotient/-/commit/76c42a9863b83229e6afaf4be32e9582e3d97d3f

Git commit ee214de7b829b08155bc223ea64c61c9ce2bcdf3 by Kitsune Ral on 14/10/2017 at 07:17..
Make JoinState (de)serializable library-wide
https://invent.kde.org/neon/forks/libquotient/-/commit/ee214de7b829b08155bc223ea64c61c9ce2bcdf3

Git commit 8058139171897eea4a35325b98ba2f72a8c7303f by Kitsune Ral on 14/10/2017 at 07:17..
Leaving a room now uses a generated Job file
https://invent.kde.org/neon/forks/libquotient/-/commit/8058139171897eea4a35325b98ba2f72a8c7303f

Git commit 608e7a7163583e2e30cd6c3e9de7449c41651ca4 by Kitsune Ral on 14/10/2017 at 07:17..
Connection::forgetRoom()
https://invent.kde.org/neon/forks/libquotient/-/commit/608e7a7163583e2e30cd6c3e9de7449c41651ca4

Git commit 2bf912d6e6ddd9ff81a92ff28ac8c4c1d8f2d7e1 by Kitsune Ral on 14/10/2017 at 07:17..
Support of changing the display name

Note that although the mechanism is generic enough to change any user's
display name, The Spec states that power rules are very strict about it.
https://invent.kde.org/neon/forks/libquotient/-/commit/2bf912d6e6ddd9ff81a92ff28ac8c4c1d8f2d7e1

Git commit b231ed76210405e670d6aad53350faab1ae18d3b by Kitsune Ral on 14/10/2017 at 07:17..
LogoutJob is supplied by generated code
https://invent.kde.org/neon/forks/libquotient/-/commit/b231ed76210405e670d6aad53350faab1ae18d3b

Git commit c2b84e41fba24f32270c24c0a6f679a1c4de0eea by Kitsune Ral on 14/10/2017 at 07:41..
Actually added generated/profile.* files, needed to change display name
https://invent.kde.org/neon/forks/libquotient/-/commit/c2b84e41fba24f32270c24c0a6f679a1c4de0eea

Git commit 4aa8eb029737f536a6ad3b1e3eaf296a68a3b926 by Kitsune Ral on 15/10/2017 at 13:36..
Fixed building with clang+libcpp (used on OS X)

libcpp has pessimistic definition of array that only engages constexpr in C++14 mode and newer; so one cannot use std::array<> in constexpr code.
https://invent.kde.org/neon/forks/libquotient/-/commit/4aa8eb029737f536a6ad3b1e3eaf296a68a3b926

Git commit 1ae42237adcc5486e526ff3a9e93d0901940a74b by Kitsune Ral on 15/10/2017 at 14:03..
Connection::forgetRoom(): Minor fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/1ae42237adcc5486e526ff3a9e93d0901940a74b

Git commit c1049d374a3c6d79750c57d2e1751d440df3d8cc by Kitsune Ral on 17/10/2017 at 08:11..
Fixed a blunder leading to users not having names

If all users suddenly don't have names, update to this commit, delete your cache and run again. Issue since 2bf912d6e6ddd9ff81a92ff28ac8c4c1d8f2d7e1.
https://invent.kde.org/neon/forks/libquotient/-/commit/c1049d374a3c6d79750c57d2e1751d440df3d8cc

Git commit 614917ad7c1c0beec847094369a2b3bd383562ca by Kitsune Ral on 17/10/2017 at 08:12..
Cache the actual user name, not the display name

Display name is a calculated thing, name is received from the server.
https://invent.kde.org/neon/forks/libquotient/-/commit/614917ad7c1c0beec847094369a2b3bd383562ca

Git commit f2f85ba093df5dcd991fd206af4d79d57f4c7fc8 by Kitsune Ral on 17/10/2017 at 08:13..
Avoid leaking access_token in the logs

Closes #102.
https://invent.kde.org/neon/forks/libquotient/-/commit/f2f85ba093df5dcd991fd206af4d79d57f4c7fc8

Git commit ecc364d4ad752b34e41b717e3deff4d17a840378 by Kitsune Ral on 18/10/2017 at 23:14..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/ecc364d4ad752b34e41b717e3deff4d17a840378

Git commit 878248db6122952998b390cf8ff4591c3f144474 by Kitsune Ral on 19/10/2017 at 02:24..
Be more friendly to IDE, list the API files
https://invent.kde.org/neon/forks/libquotient/-/commit/878248db6122952998b390cf8ff4591c3f144474

Git commit 55e0375851c439c97fc353c61d7c8b2b19485082 by Kitsune Ral on 19/10/2017 at 10:23..
Generated jobs: Don't dump empty strings to body parameters

This is important for (soon to be added) LoginJob, since the server is
sensitive to getting an (even empty) entity for "medium" as opposed to
omitting it entirely. This cannot be addressed on the spec level; on the
other hand, removing empty parameters from the payload reduces useless
bytes getting on the wire.
https://invent.kde.org/neon/forks/libquotient/-/commit/55e0375851c439c97fc353c61d7c8b2b19485082

Git commit e4fabf6e618b5045efec2629cb5d7b5bf73677e8 by Kitsune Ral on 19/10/2017 at 10:26..
Don't log renames

This causes enormous traffic in the logs upon every startup when
main.debug logs are on.
https://invent.kde.org/neon/forks/libquotient/-/commit/e4fabf6e618b5045efec2629cb5d7b5bf73677e8

Git commit ba620ee07989aff134fec6b5d6f058cab3377ecc by Kitsune Ral on 19/10/2017 at 10:36..
Introduce device_id and initial_device_name support; switch to generated LoginJob

This is _almost_ a backwards-compatible change, except that connect*()
and other relevant methods in Connection are no more virtual (that
wasn't much useful anyway). Otherwise it's a matter of passing
initial_device_name to connectToServer(), saving device_id (along with
access_token) from the result of LoginJob and then passing device_id
(along with access_token, again) to connectWithToken() upon the next run.
https://invent.kde.org/neon/forks/libquotient/-/commit/ba620ee07989aff134fec6b5d6f058cab3377ecc

Git commit 756e716886036447915a10992189774991f4dd8d by Kitsune Ral on 19/10/2017 at 10:40..
Don't log renames

This causes enormous traffic in the logs upon every startup when
main.debug logs are on.
https://invent.kde.org/neon/forks/libquotient/-/commit/756e716886036447915a10992189774991f4dd8d

Git commit 76438ba95d16c7d007fc16ffc194889f937a19f7 by Kitsune Ral on 19/10/2017 at 10:40..
Introduce device_id and initial_device_name support; switch to generated LoginJob

This is _almost_ a backwards-compatible change, except that connect*()
and other relevant methods in Connection are no more virtual (that
wasn't much useful anyway). Otherwise it's a matter of passing
initial_device_name to connectToServer(), saving device_id (along with
access_token) from the result of LoginJob and then passing device_id
(along with access_token, again) to connectWithToken() upon the next run.
https://invent.kde.org/neon/forks/libquotient/-/commit/76438ba95d16c7d007fc16ffc194889f937a19f7

Git commit f2e59227aa325e060319e8ee86b8368bef4f4240 by Roman Plášil on 20/10/2017 at 08:18..
Try using wildcard for qmake project file
https://invent.kde.org/neon/forks/libquotient/-/commit/f2e59227aa325e060319e8ee86b8368bef4f4240

Git commit ddd4c9fd8dc6dc52956b1557cf3e59d3d5295b8f by GitHub (on behalf of Kitsune Ral) on 20/10/2017 at 11:06..
Merge pull request #103 from Quiark/master

Try using wildcard for qmake project file
https://invent.kde.org/neon/forks/libquotient/-/commit/ddd4c9fd8dc6dc52956b1557cf3e59d3d5295b8f

Git commit 514fa7512ea23691f7ae7e23257e752a0b758b50 by Kitsune Ral on 20/10/2017 at 11:11..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/514fa7512ea23691f7ae7e23257e752a0b758b50

Git commit 34faa56649f04fafd6ace276ba186070f41901be by Kitsune Ral on 20/10/2017 at 14:50..
Better support of qmake

qmc-example.pro added; better CONFIG for libqmatrixclient; refreshed files list. Closes #104
https://invent.kde.org/neon/forks/libquotient/-/commit/34faa56649f04fafd6ace276ba186070f41901be

Git commit 94e6636d8225a0561ed7df3fa8081c5b0183610c by Kitsune Ral on 23/10/2017 at 23:38..
Support inheritance in data structures
https://invent.kde.org/neon/forks/libquotient/-/commit/94e6636d8225a0561ed7df3fa8081c5b0183610c

Git commit 6600905fb0704e0d22eb776167750f341e7f3d98 by Kitsune Ral on 25/10/2017 at 06:55..
Fixed a typo in the logs
https://invent.kde.org/neon/forks/libquotient/-/commit/6600905fb0704e0d22eb776167750f341e7f3d98

Git commit 2fb03272a8bc7da4943347ea7ecca6070f667bd6 by Kitsune Ral on 26/10/2017 at 16:47..
Move out common message event content classes

ImageContent is usable outside of m.room.message (in particular, m.room.avatar
uses the same structure for content. And EventContent::Base is very suitable to
derive from even for standard event content structures (such as in room name
events), let alone non-standard ones.
Also, renamed MessageEventContent to EventContent (for obvious reasons).
https://invent.kde.org/neon/forks/libquotient/-/commit/2fb03272a8bc7da4943347ea7ecca6070f667bd6

Git commit 0ce284eeca96ac92524a390837b551bebb5431cc by Kitsune Ral on 26/10/2017 at 16:53..
Move out the avatar code from User

Avatars are also a property of rooms, and the supporting code is basically
the same. The only thing different will be emitted signals, and the cleanest
thing to support that (aside from making Avatar a QObject) seems to be to
parameterise the thumbnail-updating logic with a continuation invoked upon
completion of the thumbnail job.
https://invent.kde.org/neon/forks/libquotient/-/commit/0ce284eeca96ac92524a390837b551bebb5431cc

Git commit c287d335da0d2ae6609dd090d45a89c6b8974af0 by Kitsune Ral on 27/10/2017 at 11:43..
Fixed building with qmake
https://invent.kde.org/neon/forks/libquotient/-/commit/c287d335da0d2ae6609dd090d45a89c6b8974af0

Git commit 0fb7adfcaa5dffee4efd0a34a2a4fd655fe5c709 by Kitsune Ral on 27/10/2017 at 12:19..
Support m.room.avatar events

The events are detected in /sync output, and avatars for rooms are loaded from respective URLs. Clients can use Room::avatar() method to request a pixmap of a certain size, and react to avatarChanged() in order to update the UI when new pixmaps/avatars arrive. avatarChanged() signal is overloaded with two tasks - the first firing merely indicates that a new avatar is available (without actual pixmap yet available) while the second firing means that an actual pixmap has arrived (all this is entirely transparent for clients, they just should update their pixmaps from Room::avatar() every time when Room::avatarChanged() is emitted).
https://invent.kde.org/neon/forks/libquotient/-/commit/0fb7adfcaa5dffee4efd0a34a2a4fd655fe5c709

Git commit 8214e671ec0e0df90f0b7cfa0304f0b6ac99d189 by Kitsune Ral on 27/10/2017 at 13:11..
Fix room avatars getting lost after restarting Quaternion
https://invent.kde.org/neon/forks/libquotient/-/commit/8214e671ec0e0df90f0b7cfa0304f0b6ac99d189

Git commit a7f158d1cfdc5c572a62af5a6945e4a6b88e8253 by Kitsune Ral on 27/10/2017 at 18:22..
Put access token to headers instead of query
https://invent.kde.org/neon/forks/libquotient/-/commit/a7f158d1cfdc5c572a62af5a6945e4a6b88e8253

Git commit 53e3ef39af62dc44cfa3984db3cc18b0a5d349b6 by Kitsune Ral on 30/10/2017 at 09:13..
Room::timelineSize() convenience method
https://invent.kde.org/neon/forks/libquotient/-/commit/53e3ef39af62dc44cfa3984db3cc18b0a5d349b6

Git commit 7387a65d84ac121e59690dcbcd2df947b30ddcaf by Kitsune Ral on 31/10/2017 at 06:57..
Fix Connection::deviceId(): Q_INVOKABLE is incompatible with references
https://invent.kde.org/neon/forks/libquotient/-/commit/7387a65d84ac121e59690dcbcd2df947b30ddcaf

Git commit f4ef8a48fedb77b81465e7ac2f8e124db8cbd754 by Kitsune Ral on 31/10/2017 at 06:58..
More .gitignored files
https://invent.kde.org/neon/forks/libquotient/-/commit/f4ef8a48fedb77b81465e7ac2f8e124db8cbd754

Git commit da8bb556dca628e20be732b4a30895010abcc9bf by Kitsune Ral on 31/10/2017 at 10:12..
Streamline EventContent hierarchy

Two changes to make EventContent hierarchy easier to understand and use:
- InfoBase is unbound from Base, and downstream classes use multiple inheritance
to work "info" objects
- MIME types are separated from Base into a separate TypedBase class because
MIME typing is not common to all content kinds.
https://invent.kde.org/neon/forks/libquotient/-/commit/da8bb556dca628e20be732b4a30895010abcc9bf

Git commit 1cc5d08159936e87f7c1dc791d6ab3c0e46e7035 by Kitsune Ral on 01/11/2017 at 05:38..
Move converters.h out of jobs/

Because they are applicable beyond jobs.
https://invent.kde.org/neon/forks/libquotient/-/commit/1cc5d08159936e87f7c1dc791d6ab3c0e46e7035

Git commit f591e02176f494c06c7288f975e8571dda2bc6ad by Kitsune Ral on 01/11/2017 at 08:11..
Drop UnknownEvent files from the source tree

We don't use them for several months already.
https://invent.kde.org/neon/forks/libquotient/-/commit/f591e02176f494c06c7288f975e8571dda2bc6ad

Git commit 2931b4d13e1883150b92f80f08aa51d86ac2445f by Kitsune Ral on 01/11/2017 at 14:41..
ReceiptEvent: Use fromJson<>() from converters.h; add TypeId

Event::toTimestamp() duplicates fromJson<>() code, so it should go.
https://invent.kde.org/neon/forks/libquotient/-/commit/2931b4d13e1883150b92f80f08aa51d86ac2445f

Git commit c4e1e0906558608326210eb333b0beb73636de60 by Kitsune Ral on 01/11/2017 at 14:42..
Add fromJson<QList<QString>> and fromJson<QStringList>
https://invent.kde.org/neon/forks/libquotient/-/commit/c4e1e0906558608326210eb333b0beb73636de60

Git commit 64c0b7e045d9e8d58d91f252219a5579d4ba9441 by Kitsune Ral on 01/11/2017 at 14:51..
Add TypeId to more events
https://invent.kde.org/neon/forks/libquotient/-/commit/64c0b7e045d9e8d58d91f252219a5579d4ba9441

Git commit a275ef911b3f4d0334df0628324aee0081dd3a65 by Kitsune Ral on 01/11/2017 at 15:19..
StateEvent; EventContent::SimpleContent; event types refactoring

* StateEvent<> is a new class template for all state events. It provides a uniform interface to the state content, as well as a means to serialize the content back to JSON. In addition, StateEvent now parses the "prev_content" JSON object, so one can refer to the previous state now (a notable step to proper reflection of state changes in the displayed timeline in clients).
* EventContent::SimpleContent, together with StateEvent<>, forms a generalisation for simple state events, such as room name, topic, aliases etc. that boil down to a single key-value pair. DECLARE_SIMPLE_STATE_EVENT is a macro defined to streamline creation of events based on SimpleContent, providing API back-compatibility for events defined so far. As a result, a very concise simplestateevents.h replaces all those room*event.* files.
* Event/RoomEvent::fromJson() code is squeezed down to plain type lists passed to makeIfMatches() "chained factory" function template. TypeId is mandatory for an event type to be included into that factory.
* Event::toTimestamp() and Event::toStringList are completely superseded by respective fromJson<>() converters.
https://invent.kde.org/neon/forks/libquotient/-/commit/a275ef911b3f4d0334df0628324aee0081dd3a65

Git commit 2390082f7ca264aabeadc8f62bb71c39ce2b96f0 by Kitsune Ral on 01/11/2017 at 17:59..
Event::isStateEvent(); fixed StateEvent::_prev always being initialised

Event::isStateEvent() is an easier way to make checking an event kind (instead of enumerating through all types corresponding to state changes). StateEvent::_prev (accessible through prev_content) should only be initialised if there's a previous state in the original JSON.
https://invent.kde.org/neon/forks/libquotient/-/commit/2390082f7ca264aabeadc8f62bb71c39ce2b96f0

Git commit 08fda4edfb1753aff148a664d623aa2497621965 by Kitsune Ral on 01/11/2017 at 18:01..
Imbue RoomMemberEvent with EventContent

It now allows to check what exactly has happened to the member (display name change, joining, avatar update), fixing #105.
https://invent.kde.org/neon/forks/libquotient/-/commit/08fda4edfb1753aff148a664d623aa2497621965

Git commit e11404c364056f1ae23a1820a6f458275463599c by Kitsune Ral on 01/11/2017 at 21:05..
Fixed CI
https://invent.kde.org/neon/forks/libquotient/-/commit/e11404c364056f1ae23a1820a6f458275463599c

Git commit 366a69f5c1ced61d270832a76233bda1fcdf0b6c by Kitsune Ral on 01/11/2017 at 21:40..
Fix AppVeyor CI
https://invent.kde.org/neon/forks/libquotient/-/commit/366a69f5c1ced61d270832a76233bda1fcdf0b6c

Git commit 7ba7e2072850a59f9797ea97a05c5139c743b88f by Kitsune Ral on 02/11/2017 at 12:17..
Update the lib version for dynamic linking
https://invent.kde.org/neon/forks/libquotient/-/commit/7ba7e2072850a59f9797ea97a05c5139c743b88f

Git commit 414621681a0c1e8bf1f5a01b376b47f24cb95aab by Kitsune Ral on 02/11/2017 at 12:21..
Room: Move away internal methods to not mislead client authors
https://invent.kde.org/neon/forks/libquotient/-/commit/414621681a0c1e8bf1f5a01b376b47f24cb95aab

Git commit 352810b5945d4994369379c568eb48dd41071776 by Kitsune Ral on 02/11/2017 at 12:28..
Document room transitions in .h instead of .cpp

The original comment got a bit rotten, so refresh it as well.
https://invent.kde.org/neon/forks/libquotient/-/commit/352810b5945d4994369379c568eb48dd41071776

Git commit 02fa295085ae2297062d10f476a0b40b7fcb2559 by Kitsune Ral on 03/11/2017 at 14:53..
Provide facilities to migrate from legacy settings location

This is for a case of renaming an organisation or an application
https://invent.kde.org/neon/forks/libquotient/-/commit/02fa295085ae2297062d10f476a0b40b7fcb2559

Git commit 5bafd65538a877e8f186fc44d03d4b2c705820f3 by Kitsune Ral on 03/11/2017 at 16:45..
Settings: Catch literal "false" values stored by Qt.labs.Settings QML module

Those stand for a boolean false value in Qt.labs.Settings, but plain JavaScript thinks that "false" == true so if you take a value through QMatrixClient::Settings instead of Qt.labs.Settings, you would get screwed.
https://invent.kde.org/neon/forks/libquotient/-/commit/5bafd65538a877e8f186fc44d03d4b2c705820f3

Git commit f467add664c3a562b3a44ada9b2f59ff71a70e27 by Kitsune Ral on 04/11/2017 at 15:22..
Update README.md

The documentation is now more independent from Quaternion and includes
instructions not only for CMake but also for qmake. It also mentions that we
have an example console client!
https://invent.kde.org/neon/forks/libquotient/-/commit/f467add664c3a562b3a44ada9b2f59ff71a70e27

Git commit fa3bffd340ac512fbab77a05f10d2bf167ca2cc0 by GitHub (on behalf of Kitsune Ral) on 05/11/2017 at 06:51..
README.md: Replace some leftover references to Quaternion
https://invent.kde.org/neon/forks/libquotient/-/commit/fa3bffd340ac512fbab77a05f10d2bf167ca2cc0

Git commit 27bec8d012b6310bf1f23c1c879232a841605f60 by Roman Plášil on 10/11/2017 at 09:36..
Fix (IRC) bridge detection
https://invent.kde.org/neon/forks/libquotient/-/commit/27bec8d012b6310bf1f23c1c879232a841605f60

Git commit 87d358f5aadd85840bf649769e7d052fdeaad684 by GitHub (on behalf of Kitsune Ral) on 10/11/2017 at 09:44..
Merge pull request #112 from Quiark/master

Fix (IRC) bridge detection
https://invent.kde.org/neon/forks/libquotient/-/commit/87d358f5aadd85840bf649769e7d052fdeaad684

Git commit 92ede101bbde3b853a3eed20f6c097cd7a137b9c by Kitsune Ral on 10/11/2017 at 10:27..
Add Telegram to the list of bridge suffixes
https://invent.kde.org/neon/forks/libquotient/-/commit/92ede101bbde3b853a3eed20f6c097cd7a137b9c

Git commit e8ced4bb607084a3771f853bd7dcb6a4396aef59 by Kitsune Ral on 16/11/2017 at 04:01..
Automate cache resets

The idea is simple: store a version in the cache; if, upon the next load, the (major) version is too old, the cache is discarded. The currently used version values (0.0) do not discard the cache; but the next commit will bump the (major) version.
https://invent.kde.org/neon/forks/libquotient/-/commit/e8ced4bb607084a3771f853bd7dcb6a4396aef59

Git commit f12e09ea1b45be1a96533aa83f6227940c70d548 by Kitsune Ral on 16/11/2017 at 05:03..
Require state_key to be present in all state events

This impacts the cache as well, as we don't save state_keys for most
state events.
https://invent.kde.org/neon/forks/libquotient/-/commit/f12e09ea1b45be1a96533aa83f6227940c70d548

Git commit 491e392af73be3ebfd928e80efc0514fd43b8e87 by Kitsune Ral on 16/11/2017 at 05:10..
Simplify code that loads events from JSON arrays
https://invent.kde.org/neon/forks/libquotient/-/commit/491e392af73be3ebfd928e80efc0514fd43b8e87

Git commit d8a5a5fb25f3b00fd52a707a8d0e3655cd63a4fe by Kitsune Ral on 16/11/2017 at 05:20..
Fix CI
https://invent.kde.org/neon/forks/libquotient/-/commit/d8a5a5fb25f3b00fd52a707a8d0e3655cd63a4fe

Git commit afbbb6b296e43d7e63c568d326cf8732396da387 by Kitsune Ral on 20/11/2017 at 10:28..
Slightly rearrange code so that the NAM singleton could be configured easier
https://invent.kde.org/neon/forks/libquotient/-/commit/afbbb6b296e43d7e63c568d326cf8732396da387

Git commit 6fe34a3fc474c298a2df160343b9b3f09caffac2 by Kitsune Ral on 21/11/2017 at 07:40..
Workaround Qt's poor bearer management

Closes #109
https://invent.kde.org/neon/forks/libquotient/-/commit/6fe34a3fc474c298a2df160343b9b3f09caffac2

Git commit fed4b4fe965a9e2788055b602c7217cb298f5fce by Kitsune Ral on 21/11/2017 at 07:54..
Mitigate the mess with slashes between base URL and endpoint string

Closes #125
https://invent.kde.org/neon/forks/libquotient/-/commit/fed4b4fe965a9e2788055b602c7217cb298f5fce

Git commit 8ec38f87990cd5355a4cf0cf0533a6459fa2f6e3 by Kitsune Ral on 21/11/2017 at 08:12..
Eliminate race condition in Avatar::get()

The race occurred because _ongoingRequest wasn't properly reinitialized if another request on a bigger size arrives while a request for a smaller size is in the air. The old request is now abandoned and continuations are collected inside the Avatar object rather than in the lambda connected to the job. Closes #124.
Along the way, _scaledPixmaps is now std::vector instead of QHash since usually it only contains very few (1 or 2) entries and QHash is a waste of memory for that.
https://invent.kde.org/neon/forks/libquotient/-/commit/8ec38f87990cd5355a4cf0cf0533a6459fa2f6e3

Git commit 128b7259a7f6cc39545711323a074103ea9520f7 by Kitsune Ral on 21/11/2017 at 08:33..
Use QStringLiteral instead of bare QString constructors for string constants

For job endpoints, we should eventually move to QLatin1String or QByteArray instead. Maybe later.
https://invent.kde.org/neon/forks/libquotient/-/commit/128b7259a7f6cc39545711323a074103ea9520f7

Git commit 795fa8c45bec3569cc74f02750d831031dbe29d1 by Kitsune Ral on 22/11/2017 at 05:28..
Force-create NAM earlier

To somewhat ease a bump at sending the first network request.
https://invent.kde.org/neon/forks/libquotient/-/commit/795fa8c45bec3569cc74f02750d831031dbe29d1

Git commit f772058ab4d57c9503bb1e1e4354c246bde7cdb6 by Kitsune Ral on 22/11/2017 at 05:29..
Use unique_ptr for connectionData
https://invent.kde.org/neon/forks/libquotient/-/commit/f772058ab4d57c9503bb1e1e4354c246bde7cdb6

Git commit defbad696b924835de9bb8b16e0055a6cc983566 by Kitsune Ral on 22/11/2017 at 05:34..
Undeprecated Connection::getThumbnail(), moved Q_INVOKABLE calls to slots

Connection::getThumbnail() should not have been deprecated because it's the only way to request a thumbnail using an event loop (i.e. from QML or via QMetaObject::invokeMethod).
https://invent.kde.org/neon/forks/libquotient/-/commit/defbad696b924835de9bb8b16e0055a6cc983566

Git commit ca70d70f441d93a1da431a8fa3e927396e2abf70 by Kitsune Ral on 25/11/2017 at 10:52..
ConnectionData::setBaseUrl()
https://invent.kde.org/neon/forks/libquotient/-/commit/ca70d70f441d93a1da431a8fa3e927396e2abf70

Git commit ad12695aceabc7db7cbdfdd760175c65f4f3d0d1 by Kitsune Ral on 25/11/2017 at 10:59..
Make Connection::resolveServer() work as it should

Closes #119; many thanks to @r0kk3rz for prodding me into that.
https://invent.kde.org/neon/forks/libquotient/-/commit/ad12695aceabc7db7cbdfdd760175c65f4f3d0d1

Git commit ab3680f61222a1e915cf6fc4e14f6892c9c99341 by Kitsune Ral on 26/11/2017 at 01:15..
Deprecated resolved(); grouped signals from the same operations
https://invent.kde.org/neon/forks/libquotient/-/commit/ab3680f61222a1e915cf6fc4e14f6892c9c99341

Git commit ca1d23cf72d4f902dc2da6be0faf93774a6c5583 by Kitsune Ral on 26/11/2017 at 01:21..
Make connectToServer/connectWithToken auto-resolve HS if needed

"Needed" means when the current HS URL is invalid even by its outlooks. If it is just inaccessible, no attempt to fix things will be made. This breaks compatibility with previous library behaviour because connectWithToken historically has been fully synchronous and clients depend on that. connectWithToken _may_ work synchronously if HS URL is good enough; but this is no more guaranteed. Moreover, in the future the server will be probed via /versions before working, so connectWithToken will become entirely asynchronous.
https://invent.kde.org/neon/forks/libquotient/-/commit/ca1d23cf72d4f902dc2da6be0faf93774a6c5583

Git commit 8f762a2458db773f6db24b568b2e944427297c2b by Kitsune Ral on 28/11/2017 at 01:54..
Bumped up the soname version

NB: Dynamic library generation requires CMake; no libqmatrixclient.pro yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/8f762a2458db773f6db24b568b2e944427297c2b

Git commit 357625eb55e2f4569bb487ffe14a9236188e25f3 by Kitsune Ral on 28/11/2017 at 03:42..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/357625eb55e2f4569bb487ffe14a9236188e25f3

Git commit bcdede472add732c49c95564034c8cfa1c38c725 by Kitsune Ral on 29/11/2017 at 18:36..
Generated jobs: Apply naming convention to parameters

It's now camelCase everywhere, even if The Spec uses snake_case (it is
not consistent in that respect).
https://invent.kde.org/neon/forks/libquotient/-/commit/bcdede472add732c49c95564034c8cfa1c38c725

Git commit d01154a1899e216b04d6fd2ad3bb384715ca843b by Kitsune Ral on 30/11/2017 at 02:56..
Connection: no more default to matrix.org; update HS URL from /login response
https://invent.kde.org/neon/forks/libquotient/-/commit/d01154a1899e216b04d6fd2ad3bb384715ca843b

Git commit f56edce1d27d71e5568506326468af411c78e731 by Kitsune Ral on 06/12/2017 at 00:07..
converters.h: support QByteArray
https://invent.kde.org/neon/forks/libquotient/-/commit/f56edce1d27d71e5568506326468af411c78e731

Git commit e6a7ca28ce03ff1277430816dc5a41d503f93555 by Kitsune Ral on 06/12/2017 at 00:10..
Connection: undeprecate joinRoom()

This is for the same reason as Connection::getThumbnail() - it's the only non-template (hence, supported by QML and Qt queued signal connections) way to invoke joining a room.
https://invent.kde.org/neon/forks/libquotient/-/commit/e6a7ca28ce03ff1277430816dc5a41d503f93555

Git commit ea2dcf5d6c9329a14b4e0039bd2dc45ac3fd89d8 by Kitsune Ral on 06/12/2017 at 10:02..
converters.h: Use perfect forwarding
https://invent.kde.org/neon/forks/libquotient/-/commit/ea2dcf5d6c9329a14b4e0039bd2dc45ac3fd89d8

Git commit 905263ceb5e2e13b862bec0a64f6d84eca3c2e9d by Kitsune Ral on 06/12/2017 at 10:15..
GTAD pre-0.4, with local data types and parametrised arrays; make avoidCopy? actually work

Along with this:
- avoid copying of QStrings (unneeded convenience in our case)
- even less empty lines
https://invent.kde.org/neon/forks/libquotient/-/commit/905263ceb5e2e13b862bec0a64f6d84eca3c2e9d

Git commit 21952d689db64bfb11e1cd11a7da802b649f9ae8 by Kitsune Ral on 06/12/2017 at 10:24..
jobs/generated: don't rely on QString's COW; firmer formatting
https://invent.kde.org/neon/forks/libquotient/-/commit/21952d689db64bfb11e1cd11a7da802b649f9ae8

Git commit e74de57832f684244d7da82fa743b63d459bf488 by Kitsune Ral on 07/12/2017 at 02:45..
Make BaseJob::Data consume QByteArray as well, not only QJsonObject

This is needed to support cases of content-repo, where the request/response bodies are not JSON.
https://invent.kde.org/neon/forks/libquotient/-/commit/e74de57832f684244d7da82fa743b63d459bf488

Git commit e9b445909f2707ca199e102e8cae2f11f7b64701 by Kitsune Ral on 07/12/2017 at 02:55..
converters.h: support QByteArray
https://invent.kde.org/neon/forks/libquotient/-/commit/e9b445909f2707ca199e102e8cae2f11f7b64701

Git commit 67fad643e30eb38f51e496f6f4257c04eb0d8b92 by Kitsune Ral on 07/12/2017 at 02:55..
Connection: undeprecate joinRoom()

This is for the same reason as Connection::getThumbnail() - it's the only non-template (hence, supported by QML and Qt queued signal connections) way to invoke joining a room.
https://invent.kde.org/neon/forks/libquotient/-/commit/67fad643e30eb38f51e496f6f4257c04eb0d8b92

Git commit 70d9ca7b870e35109dfdbe9ab3c63ba094a75379 by Kitsune Ral on 07/12/2017 at 02:55..
converters.h: Use perfect forwarding
https://invent.kde.org/neon/forks/libquotient/-/commit/70d9ca7b870e35109dfdbe9ab3c63ba094a75379

Git commit e88627976488b0b6eea6da3389eefb860980d661 by Kitsune Ral on 07/12/2017 at 03:30..
Generated jobs: Don't dump empty strings to body parameters

This is important for (soon to be added) LoginJob, since the server is
sensitive to getting an (even empty) entity for "medium" as opposed to
omitting it entirely. This cannot be addressed on the spec level; on the
other hand, removing empty parameters from the payload reduces useless
bytes getting on the wire.
https://invent.kde.org/neon/forks/libquotient/-/commit/e88627976488b0b6eea6da3389eefb860980d661

Git commit 6fc3c79c2b3ac318d3a140594ded28020f9a8afb by Kitsune Ral on 07/12/2017 at 03:33..
Generated jobs: Apply naming convention to parameters

It's now camelCase everywhere, even if The Spec uses snake_case (it is
not consistent in that respect).
https://invent.kde.org/neon/forks/libquotient/-/commit/6fc3c79c2b3ac318d3a140594ded28020f9a8afb

Git commit 15b2ea9e4e7077b8547f5f7f39156b0227c338e8 by Kitsune Ral on 07/12/2017 at 03:34..
Connection: no more default to matrix.org; update HS URL from /login response
https://invent.kde.org/neon/forks/libquotient/-/commit/15b2ea9e4e7077b8547f5f7f39156b0227c338e8

Git commit c18b0c5be800a39898b6f6619209d1f96d022afa by Kitsune Ral on 07/12/2017 at 03:35..
jobs/generated: don't rely on QString's COW; firmer formatting
https://invent.kde.org/neon/forks/libquotient/-/commit/c18b0c5be800a39898b6f6619209d1f96d022afa

Git commit 80588a782ce702384802e3e0cb469f71e5640ef4 by Kitsune Ral on 07/12/2017 at 03:35..
Make BaseJob::Data consume QByteArray as well, not only QJsonObject

This is needed to support cases of content-repo, where the request/response bodies are not JSON.
https://invent.kde.org/neon/forks/libquotient/-/commit/80588a782ce702384802e3e0cb469f71e5640ef4

Git commit 879e0bd17abedcc93d005eb7b66f6e9aa762200a by Kitsune Ral on 07/12/2017 at 03:49..
New generated jobs for: room directory, 3PIDs, redactions, typing notifications and others

Closes #128 (the issue has the full list of jobs arriving herewith).
https://invent.kde.org/neon/forks/libquotient/-/commit/879e0bd17abedcc93d005eb7b66f6e9aa762200a

Git commit f7e210bc04bdb45b05f3c75237001b8e51198242 by Kitsune Ral on 07/12/2017 at 03:53..
Use new GTAD features: avoid copying of custom schemas; inline body where appropriate

Body inlining is needed in content-repo cases and also cases with freeform JSON in the body (such as the one of upcoming PostReceiptJob).
https://invent.kde.org/neon/forks/libquotient/-/commit/f7e210bc04bdb45b05f3c75237001b8e51198242

Git commit 0c5a042104eaa6f8efb0dfc1c0eacca161d5787f by Kitsune Ral on 07/12/2017 at 03:53..
GTAD: Enable content-repo stubs generation
https://invent.kde.org/neon/forks/libquotient/-/commit/0c5a042104eaa6f8efb0dfc1c0eacca161d5787f

Git commit b1dd0e7ea87842fb5ff9deb14beb3474136b06f3 by Kitsune Ral on 07/12/2017 at 03:53..
New generated jobs for: room directory, 3PIDs, redactions, typing notifications and others

Closes #128 (the issue has the full list of jobs arriving herewith).
https://invent.kde.org/neon/forks/libquotient/-/commit/b1dd0e7ea87842fb5ff9deb14beb3474136b06f3

Git commit 6453ab3ea9a2781940d60e49bc28c38db0fbac79 by Kitsune Ral on 07/12/2017 at 08:55..
PasswordLogin: Fix the legacy job class to compile with new BaseJob::Data
https://invent.kde.org/neon/forks/libquotient/-/commit/6453ab3ea9a2781940d60e49bc28c38db0fbac79

Git commit 1796fb03406bc0a12a513218f6aaa34e9cd60734 by Kitsune Ral on 07/12/2017 at 08:55..
Fix compilation with Qt 5.2
https://invent.kde.org/neon/forks/libquotient/-/commit/1796fb03406bc0a12a513218f6aaa34e9cd60734

Git commit 404e37d64a71baf3c9ca44ed2a16288876fb2995 by Kitsune Ral on 10/12/2017 at 07:16..
Fix setting the homeserver hostname (not URL) coming from /login
https://invent.kde.org/neon/forks/libquotient/-/commit/404e37d64a71baf3c9ca44ed2a16288876fb2995

Git commit c46fccdfacaa299eee9bfb96d86d2c784db3e9ca by Kitsune Ral on 10/12/2017 at 07:17..
Elaborate a deprecation comment
https://invent.kde.org/neon/forks/libquotient/-/commit/c46fccdfacaa299eee9bfb96d86d2c784db3e9ca

Git commit 2b4952b6686f647c5470033de2cb14577cfb41f1 by Kitsune Ral on 10/12/2017 at 07:17..
Log room creation only once
https://invent.kde.org/neon/forks/libquotient/-/commit/2b4952b6686f647c5470033de2cb14577cfb41f1

Git commit 552031b1809a9bb7e596d12e21e50c40c91b0f21 by Kitsune Ral on 10/12/2017 at 07:18..
Use the generated PostReceiptJob; don't compile unused job classes

Rewire Connection::postReceipt() to the generated job too; this call is still deprecated though.
https://invent.kde.org/neon/forks/libquotient/-/commit/552031b1809a9bb7e596d12e21e50c40c91b0f21

Git commit 6572b4836231597de6a340296ee07fbeb13ebece by Kitsune Ral on 10/12/2017 at 07:18..
EventType: Add more enumeration values
https://invent.kde.org/neon/forks/libquotient/-/commit/6572b4836231597de6a340296ee07fbeb13ebece

Git commit c38366210643ef0956884531910d7ece3d6a4cac by Kitsune Ral on 10/12/2017 at 07:18..
Introduce RoomEventsView

Will be used in Room to work with ranges of events.
https://invent.kde.org/neon/forks/libquotient/-/commit/c38366210643ef0956884531910d7ece3d6a4cac

Git commit 6ecdefd8463c0b393dc51535ddb4b4283b5891d8 by Kitsune Ral on 10/12/2017 at 07:20..
RedactionEvent and RoomEvent::redactedBecause()

A RoomEvent now has an optional pointer to a RedactionEvent that is non-null if the room event is redacted. transactionId and serverTimestamp are only filled if the event is not redacted. There's no way to construct a redacted event as of yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/6ecdefd8463c0b393dc51535ddb4b4283b5891d8

Git commit df7f9bd2c26ca67fb3d221f9d3a68e34fb25a235 by Kitsune Ral on 10/12/2017 at 07:22..
Process incoming redactions

This only applies to new messages; historical redaction events are just skipped because historical events are already redacted on the server side. Closes #117.
https://invent.kde.org/neon/forks/libquotient/-/commit/df7f9bd2c26ca67fb3d221f9d3a68e34fb25a235

Git commit d8a7d9cbef6d90b6b15ffbf26bf43f5555dbaefd by Kitsune Ral on 10/12/2017 at 07:22..
Enable sending requests for redaction to the server

Closes #118
https://invent.kde.org/neon/forks/libquotient/-/commit/d8a7d9cbef6d90b6b15ffbf26bf43f5555dbaefd

Git commit 5a5ae02e1eb9d58b162d8e3c0b3f837a6719d38f by Kitsune Ral on 10/12/2017 at 07:32..
Fixed compilation with older Qt
https://invent.kde.org/neon/forks/libquotient/-/commit/5a5ae02e1eb9d58b162d8e3c0b3f837a6719d38f

Git commit 71185be83b646c7d5a2d6d3dc0306710e1f6fdd0 by Kitsune Ral on 11/12/2017 at 10:24..
Whitelist origin_server_ts in redaction logic

The Spec doesn't mention it but both Synapse and Riot act as if origin_server_ts was whitelisted, and it was also confirmed in #matrix-dev to be reasonable behaviour.
https://invent.kde.org/neon/forks/libquotient/-/commit/71185be83b646c7d5a2d6d3dc0306710e1f6fdd0

Git commit bc1b65f872edf5f493f5fcc9792a37f03d6b7794 by Kitsune Ral on 12/12/2017 at 01:16..
Fix a compiler warning
https://invent.kde.org/neon/forks/libquotient/-/commit/bc1b65f872edf5f493f5fcc9792a37f03d6b7794

Git commit 6d670e1c72eb5deba241c8484fc31665c48cb660 by Kitsune Ral on 12/12/2017 at 01:20..
Deduplicate events within a batch

Closes #130.
https://invent.kde.org/neon/forks/libquotient/-/commit/6d670e1c72eb5deba241c8484fc31665c48cb660

Git commit 8137e2e4e84878a330d20d0545476fae4e60dfe5 by Kitsune Ral on 13/12/2017 at 02:09..
Refactoring around Room::Private::insertEvent(s)
https://invent.kde.org/neon/forks/libquotient/-/commit/8137e2e4e84878a330d20d0545476fae4e60dfe5

Git commit 3a1f1eced05f5f7ca3244f009e111eed2e809119 by Kitsune Ral on 13/12/2017 at 08:22..
EventsBatch: document the class
https://invent.kde.org/neon/forks/libquotient/-/commit/3a1f1eced05f5f7ca3244f009e111eed2e809119

Git commit bb14969dfa5e9e8a26a005a7f804f21a62460f68 by Kitsune Ral on 13/12/2017 at 23:27..
Room::markMessagesAsRead(): Move private overload to pimpl
https://invent.kde.org/neon/forks/libquotient/-/commit/bb14969dfa5e9e8a26a005a7f804f21a62460f68

Git commit c5f480355c7d4c000a4ee73fd7f8107a9a9340c2 by Kitsune Ral on 14/12/2017 at 09:41..
Move all internal event pointers to std::unique_ptr<>

This causes the following changes along the way:
- Owning<> template is decommissioned.
- event.h has been rearranged, and Event/RoomEvent::fromJson static methods have been replaced with an external makeEvent<> function template. A side effect of that is that one cannot use a factory with a type other than the one it's defined for (i.e. you cannot call makeEvent<TypingEvent>) but that feature has been out of use for long anyway.
- Room::doAddNewMessageEvents() and Room::doAddHistoricalMessageEvents() have been removed, giving place to Room::onAddNewTimelineEvents() and Room::onAddHistoricalTimelineEvents(). The most important difference is that all code that must be executed now resides in addNewMessageEvents() (it moved from Room to Room::Private) and classes inheriting from Room are not obliged to call the overridden function from the overriding function (they can do it but those functions have empty bodies in Room). This was a long overdue change, and owning pointers simply mandated it. Room::onAddNewTimelineEvents/onAddHistoricalTimelineEvents should not do anything with the passed range in terms of ownership, it's just a way to allow the derived class to update his data in due course.
- Room::Private::dropDuplicateEvents() and Room::Private::insertEvents(), notably, have been updated to work with owning pointers. insertEvents() move()s pointers to the timeline, while dropDuplicateEvents uses remove_if instead of stable_partition and doesn't explicitly delete event objects.

Also, a bugfix: Event accidentally had not virtual destructor for quite a long time. According to the standard, deleting an object through a pointer to a base class without a virtual destructor leads to UB. So the fact that libqmatrixclient clients even worked all these months is mere coincidence and compiler authors good will :-D
https://invent.kde.org/neon/forks/libquotient/-/commit/c5f480355c7d4c000a4ee73fd7f8107a9a9340c2

Git commit 95797cf0ea78779ac98348fa1110abc09f5a344f by Kitsune Ral on 14/12/2017 at 10:05..
That virtual ~Event() mentioned in the previous commit message
https://invent.kde.org/neon/forks/libquotient/-/commit/95797cf0ea78779ac98348fa1110abc09f5a344f

Git commit 5c624bfdcb0fae5ea08466507e557b5acfb463b8 by Kitsune Ral on 14/12/2017 at 10:05..
Fixed building with older compilers
https://invent.kde.org/neon/forks/libquotient/-/commit/5c624bfdcb0fae5ea08466507e557b5acfb463b8

Git commit 468a73a804924ed6e63cd4aa58d9bcbc0ebc79d9 by Kitsune Ral on 14/12/2017 at 10:18..
One more fix for older compilers
https://invent.kde.org/neon/forks/libquotient/-/commit/468a73a804924ed6e63cd4aa58d9bcbc0ebc79d9

Git commit cca9a575e64e2824d36680d67de84c5cb1653165 by Kitsune Ral on 14/12/2017 at 10:38..
Declare SyncRoomData as C++-movable

This fixes compilation with older compilers that try to instantiate a copy constructor (and fail because unique_ptr) but actually is more proper in general. Also: do not advertise the class as Q_MOVABLE_TYPE: this was useful for QList/QVector when SyncRoomData was copyable; now it isn't, and Qt containers can't deal with non-copyable classes at all.
https://invent.kde.org/neon/forks/libquotient/-/commit/cca9a575e64e2824d36680d67de84c5cb1653165

Git commit f96592d21940f5deccfed4173b54a7d9ba35fd1c by Kitsune Ral on 14/12/2017 at 10:53..
Add a missing header to fixing building on OSX
https://invent.kde.org/neon/forks/libquotient/-/commit/f96592d21940f5deccfed4173b54a7d9ba35fd1c

Git commit 9d3ea273e291a40e34f86b4beeaa6b59bc3260dd by Kitsune Ral on 14/12/2017 at 11:20..
Another fix for CI on OSX
https://invent.kde.org/neon/forks/libquotient/-/commit/9d3ea273e291a40e34f86b4beeaa6b59bc3260dd

Git commit 643aa92da416ab7b25c8b406a90007e4e7ebbb41 by Kitsune Ral on 16/12/2017 at 10:33..
Fix an assertion failure when redacting an unknown event

Closes #135.
https://invent.kde.org/neon/forks/libquotient/-/commit/643aa92da416ab7b25c8b406a90007e4e7ebbb41

Git commit c641563dda852880fb9f8189b83d02a59aabe17a by Kitsune Ral on 16/12/2017 at 10:34..
CMakeLists.txt: Make -Wreturn-type an error

Because a missing return in a non-void function is always an error.
https://invent.kde.org/neon/forks/libquotient/-/commit/c641563dda852880fb9f8189b83d02a59aabe17a

Git commit 575f859bb1a16b5d680789876f156aaf1e4f6c52 by Kitsune Ral on 16/12/2017 at 10:35..
Connection: proactively create a Room object upon joining a room

So that clients could start using this object without waiting for the next sync.
https://invent.kde.org/neon/forks/libquotient/-/commit/575f859bb1a16b5d680789876f156aaf1e4f6c52

Git commit a76c6faede34b95e4bc5c823cbbe51b3f32556ea by Kitsune Ral on 19/12/2017 at 04:55..
Don't use LoginJob::homeServer() anymore

Because the respective parameter in /login result is deprecated. Closes #137.
https://invent.kde.org/neon/forks/libquotient/-/commit/a76c6faede34b95e4bc5c823cbbe51b3f32556ea

Git commit a0eba40e90b030e8033ff3c59de4df0c5fc38479 by Kitsune Ral on 20/12/2017 at 10:42..
Clean away legacy settings when possible

Otherwise they stick around when deleting actual settings (e.g. at logout).
https://invent.kde.org/neon/forks/libquotient/-/commit/a0eba40e90b030e8033ff3c59de4df0c5fc38479

Git commit a39ebe7af964a9c311bf213ba84a1aa5ce43d381 by Kitsune Ral on 20/12/2017 at 10:43..
Connection::accessToken - return QByteArray instead of QString

Because that's what it really is.
https://invent.kde.org/neon/forks/libquotient/-/commit/a39ebe7af964a9c311bf213ba84a1aa5ce43d381

Git commit 2bdfc1a657175c3c13d086c780f2907d141fc749 by Kitsune Ral on 21/12/2017 at 06:41..
Connection::logout: supply receiver to connect(job,...)
https://invent.kde.org/neon/forks/libquotient/-/commit/2bdfc1a657175c3c13d086c780f2907d141fc749

Git commit 00cc69489ce5153a39d91599acdda95a2c20b698 by Kitsune Ral on 24/12/2017 at 23:21..
Qt 5.6 or newer is required from now on
https://invent.kde.org/neon/forks/libquotient/-/commit/00cc69489ce5153a39d91599acdda95a2c20b698

Git commit 00a3b28c8e561c35ad33499819d5aaced49b50da by Kitsune Ral on 24/12/2017 at 23:37..
Code cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/00a3b28c8e561c35ad33499819d5aaced49b50da

Git commit 7b65cec153970c3e7525f24e0d167e0aa7ba4de4 by Kitsune Ral on 25/12/2017 at 00:13..
Use pimpl for Avatars
https://invent.kde.org/neon/forks/libquotient/-/commit/7b65cec153970c3e7525f24e0d167e0aa7ba4de4

Git commit 997a1c879f853606deb47c75c4735779a2f37189 by Kitsune Ral on 25/12/2017 at 00:16..
CONTRIBUTING.md refreshed and slightly extended
https://invent.kde.org/neon/forks/libquotient/-/commit/997a1c879f853606deb47c75c4735779a2f37189

Git commit a4a1129385731c3999a6d5986a24fc069938245c by Kitsune Ral on 25/12/2017 at 00:17..
ReceiptEvent: use QVector instead of std::vector

Because we should practice what we preach in CONTRIBUTING.md.
https://invent.kde.org/neon/forks/libquotient/-/commit/a4a1129385731c3999a6d5986a24fc069938245c

Git commit cbfe29b3435fbe47fee268facbe6a82000fce0ad by Kitsune Ral on 25/12/2017 at 05:46..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/cbfe29b3435fbe47fee268facbe6a82000fce0ad

Git commit 7ef5d0b10ae214f7c58aa77fb84547be1388f2d6 by Kitsune Ral on 25/12/2017 at 08:20..
Now really switching to the new toolchain: C++14, GCC/Clang 5, Qt 5.6

Also a bit of code tightening with some C++14 (but not only) things.
https://invent.kde.org/neon/forks/libquotient/-/commit/7ef5d0b10ae214f7c58aa77fb84547be1388f2d6

Git commit b1014408917dd900f029924802433321f1eb5ac4 by Kitsune Ral on 25/12/2017 at 10:01..
Fix CI

Old GCC was still invoked; qmake-based builds weren't switched to C++14.
https://invent.kde.org/neon/forks/libquotient/-/commit/b1014408917dd900f029924802433321f1eb5ac4

Git commit 155da0f2bdd831f59defd784e98fa9d4e7cea97e by Kitsune Ral on 25/12/2017 at 10:03..
Connection: Be more accurate with lambda captures
https://invent.kde.org/neon/forks/libquotient/-/commit/155da0f2bdd831f59defd784e98fa9d4e7cea97e

Git commit 37e807b7e4b8991353802b38da226ef47b8848ec by Kitsune Ral on 25/12/2017 at 11:00..
BaseJob: consolidate job timeout configuration

This prepares the backend to enable timeouts/retry intervals configurable from clients.
https://invent.kde.org/neon/forks/libquotient/-/commit/37e807b7e4b8991353802b38da226ef47b8848ec

Git commit 72ac40aec4685781d8d669cb69a70c6baf167500 by Kitsune Ral on 25/12/2017 at 11:12..
Room: Remove C++14 code from the header file

This will provide some backwards-compatibility to clients that are not ready to move _their_ code to C++14 (at least, it will allow them to not add C++14 requirement to their makefiles as of yet).
https://invent.kde.org/neon/forks/libquotient/-/commit/72ac40aec4685781d8d669cb69a70c6baf167500

Git commit 1b7bf10fea3dc395e8d43b16c39e6b0ac231e366 by Kitsune Ral on 25/12/2017 at 11:19..
Polished warnings configuration

The whole thing should go without or almost without warnings with GCC and with Clang (MSVC is another story and I don't care about it much).
https://invent.kde.org/neon/forks/libquotient/-/commit/1b7bf10fea3dc395e8d43b16c39e6b0ac231e366

Git commit 95486e555f0ab5dc78a7bdc14e22d73bff5cfd7e by Kitsune Ral on 25/12/2017 at 11:29..
qmake: Use -std=C++14, not -std=gnu++1y substituted for CONFIG += c++14
https://invent.kde.org/neon/forks/libquotient/-/commit/95486e555f0ab5dc78a7bdc14e22d73bff5cfd7e

Git commit ea6ce4d4628a06f4216335b4c72b02859852ff48 by Kitsune Ral on 25/12/2017 at 12:03..
qmake: Use the compiler specified in the environment; revert to CONFIG += c++14

qmake doesn't follow standard CC and CXX environment variables and its CONFIG produces CXX_FLAGS added after QMAKE_CXX_FLAGS. Big thank you to The Qt Company :-|
https://invent.kde.org/neon/forks/libquotient/-/commit/ea6ce4d4628a06f4216335b4c72b02859852ff48

Git commit 9335a3beba0c15a64478458f418b648834779683 by Kitsune Ral on 25/12/2017 at 12:23..
BaseJob: further minor code cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/9335a3beba0c15a64478458f418b648834779683

Git commit 53241b0b47d80b90c3834336dc3db89676e1c007 by Kitsune Ral on 25/12/2017 at 12:33..
Connection: change the attempt number propagated from BaseJob
https://invent.kde.org/neon/forks/libquotient/-/commit/53241b0b47d80b90c3834336dc3db89676e1c007

Git commit 878c1e710de54bf913e085f5d5f6a198810c968f by Kitsune Ral on 25/12/2017 at 12:35..
qmake: Use QMAKE_CXX_FLAGS_WARN_ON rather than QMAKE_CXX_FLAGS

Because the damn thing puts QMAKE_CXX_FLAGS before what's put by CONFIG, and CONFIG injects -W -Wall that cancels -Wno-unused-parameter.
https://invent.kde.org/neon/forks/libquotient/-/commit/878c1e710de54bf913e085f5d5f6a198810c968f

Git commit 961bca954677cf68a3beae29bb9e16e2a5dddf3d by Kitsune Ral on 25/12/2017 at 14:07..
CMakeLists: Add -W to the mix
https://invent.kde.org/neon/forks/libquotient/-/commit/961bca954677cf68a3beae29bb9e16e2a5dddf3d

Git commit 205a9a268eb3d1c35b1decaf323619a72a33036e by Kitsune Ral on 26/12/2017 at 12:12..
Settings: factored out common declarations/definitions to macros

It cannot be made in templates because property and methods names are involved.
https://invent.kde.org/neon/forks/libquotient/-/commit/205a9a268eb3d1c35b1decaf323619a72a33036e

Git commit e1be26ce46a60d26f6e936ca0443eac135b91cef by Kitsune Ral on 26/12/2017 at 12:12..
NetworkSettings: store proxy configuration

No credentials, just type, host, and port.
https://invent.kde.org/neon/forks/libquotient/-/commit/e1be26ce46a60d26f6e936ca0443eac135b91cef

Git commit 00bd1be842f58b87633371a76587c103533baff5 by Kitsune Ral on 27/12/2017 at 06:42..
StateEvent<>: Look for prev_content in unsigned, not top-level
https://invent.kde.org/neon/forks/libquotient/-/commit/00bd1be842f58b87633371a76587c103533baff5

Git commit 1dce783c4ac9ca37343648114885d332bdfe7fa1 by Kitsune Ral on 27/12/2017 at 10:28..
Introduce StateEventBase - a non-template base for StateEvent<>

This will hold common logic for all state events, including the newly introduced repeatsState() that returns true when prev_content repeats content. This will be used to address QMatrixClient/Quaternion#245.
https://invent.kde.org/neon/forks/libquotient/-/commit/1dce783c4ac9ca37343648114885d332bdfe7fa1

Git commit a3b9fe1ddd2d3b0a0cbb07ffc42317b30a1a3899 by Kitsune Ral on 28/12/2017 at 02:26..
Switch from QPixmap to QImage; add convenience avatar() overloads to Room and User

The switch is necessary because MediaThumbnailJob is supposed to return something that can be worked on in non-GUI threads (as is the case of QML image providers), and QPixmap is not supposed for usage out of the main thread.
https://invent.kde.org/neon/forks/libquotient/-/commit/a3b9fe1ddd2d3b0a0cbb07ffc42317b30a1a3899

Git commit 206834e8dc637287baf7e631065de6d951e704bf by Kitsune Ral on 28/12/2017 at 07:28..
NetworkSettings: add setupApplicationProxy() accessible from QML; proxyPort is quint16 now

setupApplicationProxy(), so that clients in QML could apply changes in proxy settings without going down to C++. quint16, because this is a type actually used by QNetworkProxy.
https://invent.kde.org/neon/forks/libquotient/-/commit/206834e8dc637287baf7e631065de6d951e704bf

Git commit 1587c356229b293eeb0b810f57a902a953381267 by Kitsune Ral on 29/12/2017 at 11:31..
Use std::unique_ptr instead of bare pointers; cleanup stale declarations
https://invent.kde.org/neon/forks/libquotient/-/commit/1587c356229b293eeb0b810f57a902a953381267

Git commit 06645269475561027790e0b58602647a92d6599d by Kitsune Ral on 29/12/2017 at 11:41..
Allow to customize and connect to the used QNetworkAccessManager from clients

We don't really want to let the world know that we use the only instance of NAM; instead, we provide a point of customisation to whatever NAM is created in ConnectionData, in the form of a static customizeNetworkAccess() method that gets a function to run on a/the created NAM. This function can do additional configuration on NAM (such as setting a proxy factory, network configuration, or caching) and/or connect to its signals, such as sslErrors() and proxyAuthenticationRequired(). Closes #143.
https://invent.kde.org/neon/forks/libquotient/-/commit/06645269475561027790e0b58602647a92d6599d

Git commit 9790e94cd6e490d58823b8782af0302d23a7c3bb by Kitsune Ral on 29/12/2017 at 13:58..
Fix building with Microsoft's standard library
https://invent.kde.org/neon/forks/libquotient/-/commit/9790e94cd6e490d58823b8782af0302d23a7c3bb

Git commit e2147ca36d22194582f76faf8b6fc89623172084 by Kitsune Ral on 29/12/2017 at 14:23..
Don't use generic lambdas in initialisers

This seems to upset MSVC.
https://invent.kde.org/neon/forks/libquotient/-/commit/e2147ca36d22194582f76faf8b6fc89623172084

Git commit 4377a868f0d69ca92afca13b0087aee2d97bd7ac by Kitsune Ral on 30/12/2017 at 08:48..
QMatrixClient::NetworkAccessManager (singleton Qt NAM that remembers ignored SSL errors)

Closes #145.
https://invent.kde.org/neon/forks/libquotient/-/commit/4377a868f0d69ca92afca13b0087aee2d97bd7ac

Git commit 2c440249052b0d518fccd953a7dc657f9eed7ab7 by Kitsune Ral on 30/12/2017 at 08:50..
BaseJob: do not suppress SSL errors

It is the application's responsibility to properly display the error and get confirmation from the user about it.
https://invent.kde.org/neon/forks/libquotient/-/commit/2c440249052b0d518fccd953a7dc657f9eed7ab7

Git commit 0b5f0deb773f850d1b905fafc656f67f5b63de24 by Kitsune Ral on 30/12/2017 at 23:53..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/0b5f0deb773f850d1b905fafc656f67f5b63de24

Git commit 04c53826b0694dee38010b2f5116db6cf2e9b221 by Kitsune Ral on 03/01/2018 at 03:13..
jobs/generated: Polish formatting; other minor cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/04c53826b0694dee38010b2f5116db6cf2e9b221

Git commit 0a688331ec0d9d9c592e8c542946dbd66d9c6b2f by Kitsune Ral on 03/01/2018 at 03:19..
Support request and response headers

Enable specifying headers in the request and checking/using headers in the response.
https://invent.kde.org/neon/forks/libquotient/-/commit/0a688331ec0d9d9c592e8c542946dbd66d9c6b2f

Git commit 9aed9cc6327c3756a29d30b8538799be9dadd01a by Kitsune Ral on 03/01/2018 at 03:20..
Fully support content-repo API

That includes dealing with headers and raw (non-JSON) responses.
https://invent.kde.org/neon/forks/libquotient/-/commit/9aed9cc6327c3756a29d30b8538799be9dadd01a

Git commit 7ccf4a68e1a0b747f2535e838cdfa221bfb6d744 by Kitsune Ral on 04/01/2018 at 04:21..
gtad.yaml: Update to the most recent GTAD

Use _scopeRenderer (instead of _typeRenderer) and _literalQuote.
https://invent.kde.org/neon/forks/libquotient/-/commit/7ccf4a68e1a0b747f2535e838cdfa221bfb6d744

Git commit e623303aa2077110113d1cb92b70e758ba1533b0 by Kitsune Ral on 04/01/2018 at 14:27..
Disable generation of jobs that stand in the way

We have a better SyncJob and SetRoomStateJob yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/e623303aa2077110113d1cb92b70e758ba1533b0

Git commit d313f575a780c764bc404106ec37c30f99ba6182 by Kitsune Ral on 04/01/2018 at 14:28..
Updated generated jobs

Just one file, the rest are the same.
https://invent.kde.org/neon/forks/libquotient/-/commit/d313f575a780c764bc404106ec37c30f99ba6182

Git commit f31dbfc9a91460d664d570ea8f0f34cb7dea27d3 by Kitsune Ral on 04/01/2018 at 14:28..
gtad.yaml: Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/f31dbfc9a91460d664d570ea8f0f34cb7dea27d3

Git commit b052b4c3ebc65dc573a36bfb0e1d98e91f49ca18 by Kitsune Ral on 05/01/2018 at 02:18..
{{base}}.cpp.mustache: Fix addExpectedContentType() invocation code
https://invent.kde.org/neon/forks/libquotient/-/commit/b052b4c3ebc65dc573a36bfb0e1d98e91f49ca18

Git commit 2a9e64dc046707040fa9fbf5474459b47f881473 by Kitsune Ral on 05/01/2018 at 02:18..
jobs/generated: Use BaseJob::addExpectedContentType()
https://invent.kde.org/neon/forks/libquotient/-/commit/2a9e64dc046707040fa9fbf5474459b47f881473

Git commit c944e7d87c3ac7b2f83adc0ea7c04eeccda07b2b by Kitsune Ral on 05/01/2018 at 02:18..
Avatar: Use Connection::getThumbnail instead of callApi<>
https://invent.kde.org/neon/forks/libquotient/-/commit/c944e7d87c3ac7b2f83adc0ea7c04eeccda07b2b

Git commit 5d85fc6335d4b49438a83e1e592ccac5a41d2332 by Kitsune Ral on 05/01/2018 at 08:36..
CMakeLists.txt: Exclude more API files from generation

All of these new exclusions have parameters named 'signed', 'unsigned' and 'default' which are C++ reserverd words. GTAD does not give a proper workaround for these yet (see #24) so exclude them for now.
https://invent.kde.org/neon/forks/libquotient/-/commit/5d85fc6335d4b49438a83e1e592ccac5a41d2332

Git commit bd5b10c8d59b971379799b164eb968eea939079a by Kitsune Ral on 05/01/2018 at 08:36..
jobs/generated: Make default values propagate properly

Thanks to the latest GTAD. initializeDefaultValue is a partial that in turn inserts a type-specific {{>initializer}} if there is a non-trivial default value.
https://invent.kde.org/neon/forks/libquotient/-/commit/bd5b10c8d59b971379799b164eb968eea939079a

Git commit 859a0c70353d9c92fbc02c9d5aa467bf9c28e9e6 by Kitsune Ral on 05/01/2018 at 10:55..
BaseJob: Provide a simplified constructor
https://invent.kde.org/neon/forks/libquotient/-/commit/859a0c70353d9c92fbc02c9d5aa467bf9c28e9e6

Git commit ea5cd86a9deacc9a6b57f1c432ad6e51e92de428 by Kitsune Ral on 05/01/2018 at 10:55..
jobs/generated: Convert numbers to string in a way that actually works

Plus a bit of fooling around with linebreaks.
https://invent.kde.org/neon/forks/libquotient/-/commit/ea5cd86a9deacc9a6b57f1c432ad6e51e92de428

Git commit ccf2b4dd9d41b39167379669f035b45d656e3633 by Kitsune Ral on 05/01/2018 at 10:57..
jobs: expect application/json by default; set query in constructor body; properly convert numbers to strings in query

The query should be set in constructor body because there's no reason to pass non-required parameters into the query.
As for numbers to strings conversion - there was an attempt to use QJsonValue(a).toString() for that. That doesn't work; QJsonValue does not turn numbers to strings.
https://invent.kde.org/neon/forks/libquotient/-/commit/ccf2b4dd9d41b39167379669f035b45d656e3633

Git commit e3a1511b6b03aedab065386aa0fa7a9e1cd78a70 by Kitsune Ral on 05/01/2018 at 10:58..
jobs/generated: content-repo.*, create_room.*
https://invent.kde.org/neon/forks/libquotient/-/commit/e3a1511b6b03aedab065386aa0fa7a9e1cd78a70

Git commit a568ea9a2a6b5ffb4b47520bbacb71943d8f8174 by Kitsune Ral on 05/01/2018 at 10:58..
MediaThumbnailJob: Rewire to GetContentThumbnailJob; decommission ThumbnailType

"crop" thumbnail type didn't seem to be ever used. Once GTAD is able to generate enums, the respective code will show up in GetContentThumbnailJob and this parameter can be reintroduced in MediaThumbnailJob. As of now, just rely on the default "scale" value.
https://invent.kde.org/neon/forks/libquotient/-/commit/a568ea9a2a6b5ffb4b47520bbacb71943d8f8174

Git commit 02e518415c140e8271c4f4222fb7e1d42393de66 by Kitsune Ral on 06/01/2018 at 06:07..
Add a missing #include

std::bind belongs to <functional>, don't rely on implicitly including it from other standard headers.
https://invent.kde.org/neon/forks/libquotient/-/commit/02e518415c140e8271c4f4222fb7e1d42393de66

Git commit 10a32c47a95b8438309841c4cb63159c4799bb8b by Kitsune Ral on 09/01/2018 at 02:01..
Avatar: Use Connection::getThumbnail instead of callApi<>
https://invent.kde.org/neon/forks/libquotient/-/commit/10a32c47a95b8438309841c4cb63159c4799bb8b

Git commit 59bbe67c490ba4e993dd332208fc8cbeeb933c71 by Kitsune Ral on 09/01/2018 at 02:09..
isJobRunning() facility function
https://invent.kde.org/neon/forks/libquotient/-/commit/59bbe67c490ba4e993dd332208fc8cbeeb933c71

Git commit 0dbf41133cdc9d8b73592f78db117396bc7bd2da by Kitsune Ral on 09/01/2018 at 02:14..
Avatar: Mark get() as const operation

With all the liberty that pimpl idiom gives it's easy to get away without proper const's; but let's be consistent :)
https://invent.kde.org/neon/forks/libquotient/-/commit/0dbf41133cdc9d8b73592f78db117396bc7bd2da

Git commit 1990a0f67906a8f919c97cea56fc5670cc09399c by Kitsune Ral on 09/01/2018 at 02:22..
Avatar: Use QPointer<> and isJobRunning()
https://invent.kde.org/neon/forks/libquotient/-/commit/1990a0f67906a8f919c97cea56fc5670cc09399c

Git commit bab9a9bc259552abb8b4a8570d2a121283d611ec by Kitsune Ral on 09/01/2018 at 02:22..
Fix an occasional crash when resolving a server name

Closes #149.
https://invent.kde.org/neon/forks/libquotient/-/commit/bab9a9bc259552abb8b4a8570d2a121283d611ec

Git commit 8fb9e3560ebf24ed6b697e3142a4fc7c6bd23393 by Kitsune Ral on 09/01/2018 at 02:48..
BaseJob: change initial job status from NoError to Pending

Otherwise isJobRunning() is of no great use.
https://invent.kde.org/neon/forks/libquotient/-/commit/8fb9e3560ebf24ed6b697e3142a4fc7c6bd23393

Git commit dca271aaf0142e2722219df8fcc03bf8fc03c150 by Kitsune Ral on 09/01/2018 at 02:53..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/dca271aaf0142e2722219df8fcc03bf8fc03c150

Git commit 93cb0e5897cc94d8cc691bbe62f5b0093dd0a00f by Kitsune Ral on 09/01/2018 at 02:53..
Job template: Use QIODevice instead of QByteArray to store byte streams

This allows smooth pipelining of files to and from the network.
https://invent.kde.org/neon/forks/libquotient/-/commit/93cb0e5897cc94d8cc691bbe62f5b0093dd0a00f

Git commit f951ab8a931c68f61b9710a540b2c971bbf502ca by Kitsune Ral on 09/01/2018 at 02:54..
jobs/generated: Polish formatting; other minor cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/f951ab8a931c68f61b9710a540b2c971bbf502ca

Git commit 986fc27e451b21cdd118e74da9e9ff22e275ef75 by Kitsune Ral on 09/01/2018 at 02:54..
BaseJob, MediaThumbnailJob: Support request and response headers

Enable specifying headers in the request and checking/using headers in the response.
https://invent.kde.org/neon/forks/libquotient/-/commit/986fc27e451b21cdd118e74da9e9ff22e275ef75

Git commit b142117d78a2a4ce21e818c62cb7a10cff80af0d by Kitsune Ral on 09/01/2018 at 02:54..
BaseJob: Provide a simplified constructor
https://invent.kde.org/neon/forks/libquotient/-/commit/b142117d78a2a4ce21e818c62cb7a10cff80af0d

Git commit 7169338dedbf0184da4c971e7cecb6be13b1d129 by Kitsune Ral on 09/01/2018 at 02:54..
jobs/generated: Use BaseJob::addExpectedContentType()
https://invent.kde.org/neon/forks/libquotient/-/commit/7169338dedbf0184da4c971e7cecb6be13b1d129

Git commit 01806d00977578681a401ad294a957ecec0a3d53 by Kitsune Ral on 09/01/2018 at 02:54..
jobs: expect application/json by default; set query in constructor body; properly convert numbers to strings in query

The query should be set in constructor body because there's no reason to pass non-required parameters into the query.
As for numbers to strings conversion - there was an attempt to use QJsonValue(a).toString() for that. That doesn't work; QJsonValue does not turn numbers to strings.
https://invent.kde.org/neon/forks/libquotient/-/commit/01806d00977578681a401ad294a957ecec0a3d53

Git commit 4c1d52601be66caafa913171b5d5ed47ee4eb67d by Kitsune Ral on 09/01/2018 at 02:54..
jobs/generated: content-repo.*, create_room.*
https://invent.kde.org/neon/forks/libquotient/-/commit/4c1d52601be66caafa913171b5d5ed47ee4eb67d

Git commit a671d1aeff6bc9c01aa4204e0c05da894c72b603 by Kitsune Ral on 09/01/2018 at 02:54..
MediaThumbnailJob: Rewire to GetContentThumbnailJob; decommission ThumbnailType

"crop" thumbnail type didn't seem to be ever used. Once GTAD is able to generate enums, the respective code will show up in GetContentThumbnailJob and this parameter can be reintroduced in MediaThumbnailJob. As of now, just rely on the default "scale" value.
https://invent.kde.org/neon/forks/libquotient/-/commit/a671d1aeff6bc9c01aa4204e0c05da894c72b603

Git commit f8503c78763b634ba3e82ac49f42b80a47849629 by Kitsune Ral on 12/01/2018 at 13:09..
Qualify a bind() invocation with 'std::'; use an actual value instead of a placeholder

An unqualified bind() seems to upset some build environments; also, use a User* value at hand instead of binding it at the moment of signal-slot triggering.
https://invent.kde.org/neon/forks/libquotient/-/commit/f8503c78763b634ba3e82ac49f42b80a47849629

Git commit f7eddb98158033ed79d94df8897c9cdc6e7837d8 by Kitsune Ral on 12/01/2018 at 14:00..
Event/RoomEvent: use Q_DECLARE_METATYPE properly
https://invent.kde.org/neon/forks/libquotient/-/commit/f7eddb98158033ed79d94df8897c9cdc6e7837d8

Git commit f8f7fb7a00e5100881e347f18e96a5b1a8f56227 by Kitsune Ral on 12/01/2018 at 14:00..
BaseJob::maxRetries: Align the type with that of JobTimeoutConfig

Fixes some signedness warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/f8f7fb7a00e5100881e347f18e96a5b1a8f56227

Git commit 0199c963de5a46a6526389829e210f5c68226911 by Kitsune Ral on 12/01/2018 at 14:15..
BaseJob::Data -> RequestData; support QIODevice* input/output
https://invent.kde.org/neon/forks/libquotient/-/commit/0199c963de5a46a6526389829e210f5c68226911

Git commit a4509336ad07ef91771492830a0756af68d55962 by Kitsune Ral on 12/01/2018 at 14:15..
Drop extraneous #include <QString>
https://invent.kde.org/neon/forks/libquotient/-/commit/a4509336ad07ef91771492830a0756af68d55962

Git commit 9e8e958b5d72b9671425b5bcd34fa016874b8677 by Kitsune Ral on 12/01/2018 at 14:15..
BaseJob: afterStart(), beforeAbandon(), up/downloadProgress()

To support the upcoming DownloadFileJob
https://invent.kde.org/neon/forks/libquotient/-/commit/9e8e958b5d72b9671425b5bcd34fa016874b8677

Git commit 24b60a9693d032cc30ce75803730e4727b418087 by Kitsune Ral on 12/01/2018 at 14:15..
DownloadFileJob

Instead of exposing a QIODevice as GetContentJob does it gets a filename
and saves the incoming payload into it.
https://invent.kde.org/neon/forks/libquotient/-/commit/24b60a9693d032cc30ce75803730e4727b418087

Git commit 6d77401c5bf1d67d1660c0661c695ed241fdf58a by Kitsune Ral on 12/01/2018 at 14:22..
Connection::getThumbnail: Add an overload for QString

Connection::getThumbnail(QString,...) is better fitting to retrieve
images for QML image providers - one doesn't need to create a QUrl
(which if made naively ends up being incorrect) and also doesn't need to
stack up "mxc://" before the mediaId. Just call Connection::getThumbnail
with the id the QML engine gives you.
https://invent.kde.org/neon/forks/libquotient/-/commit/6d77401c5bf1d67d1660c0661c695ed241fdf58a

Git commit f80065013935a0b32acafd4d96dda271441436fe by Kitsune Ral on 12/01/2018 at 14:31..
Connection: files up/downloading support
https://invent.kde.org/neon/forks/libquotient/-/commit/f80065013935a0b32acafd4d96dda271441436fe

Git commit 1902ab6d923d2e3e475e5559ff409b68b3c66f67 by Kitsune Ral on 13/01/2018 at 05:22..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/1902ab6d923d2e3e475e5559ff409b68b3c66f67

Git commit 8f4a940d70cdcfc34a2ffe2d9a9561c0d821c56e by Kitsune Ral on 13/01/2018 at 05:50..
User: Q_PROPERTYs; setAvatar()
https://invent.kde.org/neon/forks/libquotient/-/commit/8f4a940d70cdcfc34a2ffe2d9a9561c0d821c56e

Git commit 32d2673ff6268ad00c2b80912e7675673480096c by Kitsune Ral on 13/01/2018 at 10:42..
Refactor EventContent; allow to easily check files out of message events

The whole inheritance/templating structure has been considerably simplified by using a trick with mixin classes; thanks to that, *Info classes are no more templated, they are just mixed together by the almighty UrlBasedContent<> template (but the same can easily be done outside of it, as LocationContent implementation shows). RoomMessageEvent has gained hasFileContent(); it's also possible to easily get a FileInfo core object just by calling msgEvent->content()->fileInfo().
https://invent.kde.org/neon/forks/libquotient/-/commit/32d2673ff6268ad00c2b80912e7675673480096c

Git commit 281216273ed417ae790dac9346adb8a6a0a5019c by Kitsune Ral on 13/01/2018 at 10:43..
RoomEvent-aware file up/downloads along with status tracking
https://invent.kde.org/neon/forks/libquotient/-/commit/281216273ed417ae790dac9346adb8a6a0a5019c

Git commit f5b4c73ee571121f7b7505f03d9b1da7036aff32 by Kitsune Ral on 13/01/2018 at 15:01..
Merge branch 'master' into kitsune-content-repo-create-room
https://invent.kde.org/neon/forks/libquotient/-/commit/f5b4c73ee571121f7b7505f03d9b1da7036aff32

Git commit 71b9445d7f696cdfabaf05ec7d26a52891dea873 by Kitsune Ral on 13/01/2018 at 15:18..
BaseJob::Data -> RequestData; support QIODevice* input/output
https://invent.kde.org/neon/forks/libquotient/-/commit/71b9445d7f696cdfabaf05ec7d26a52891dea873

Git commit 290ddb17189cf4c3a476b72eef13df1d26e8ede0 by Kitsune Ral on 13/01/2018 at 15:18..
Drop extraneous #include <QString>
https://invent.kde.org/neon/forks/libquotient/-/commit/290ddb17189cf4c3a476b72eef13df1d26e8ede0

Git commit b3ad6aa8fe62f461c99ae7728482bd9958e38909 by Kitsune Ral on 13/01/2018 at 15:18..
BaseJob: afterStart(), beforeAbandon(), up/downloadProgress()

To support the upcoming DownloadFileJob
https://invent.kde.org/neon/forks/libquotient/-/commit/b3ad6aa8fe62f461c99ae7728482bd9958e38909

Git commit 43710d6a5731778e28d907a3a264bcf74550073e by Kitsune Ral on 13/01/2018 at 15:19..
DownloadFileJob

Instead of exposing a QIODevice as GetContentJob does it gets a filename
and saves the incoming payload into it.
https://invent.kde.org/neon/forks/libquotient/-/commit/43710d6a5731778e28d907a3a264bcf74550073e

Git commit daff357c0631d675606feb4e001c98d1742b0bb0 by Kitsune Ral on 13/01/2018 at 15:19..
Connection::getThumbnail: Add an overload for QString

Connection::getThumbnail(QString,...) is better fitting to retrieve
images for QML image providers - one doesn't need to create a QUrl
(which if made naively ends up being incorrect) and also doesn't need to
stack up "mxc://" before the mediaId. Just call Connection::getThumbnail
with the id the QML engine gives you.
https://invent.kde.org/neon/forks/libquotient/-/commit/daff357c0631d675606feb4e001c98d1742b0bb0

Git commit bb4d1e98f077d29b62efa5f453086fa569698856 by Kitsune Ral on 13/01/2018 at 15:19..
Connection: files up/downloading support
https://invent.kde.org/neon/forks/libquotient/-/commit/bb4d1e98f077d29b62efa5f453086fa569698856

Git commit eec3865e536a6c4f95f917eefc2e94c8d0c158b1 by Kitsune Ral on 13/01/2018 at 15:35..
User: Q_PROPERTYs; setAvatar()
https://invent.kde.org/neon/forks/libquotient/-/commit/eec3865e536a6c4f95f917eefc2e94c8d0c158b1

Git commit b9f4b655273481e64d7d7ead6a30dbf85a901063 by Kitsune Ral on 13/01/2018 at 15:35..
Refactor EventContent; allow to easily check files out of message events

The whole inheritance/templating structure has been considerably simplified by using a trick with mixin classes; thanks to that, *Info classes are no more templated, they are just mixed together by the almighty UrlBasedContent<> template (but the same can easily be done outside of it, as LocationContent implementation shows). RoomMessageEvent has gained hasFileContent(); it's also possible to easily get a FileInfo core object just by calling msgEvent->content()->fileInfo().
https://invent.kde.org/neon/forks/libquotient/-/commit/b9f4b655273481e64d7d7ead6a30dbf85a901063

Git commit 93b170ceaced07a3de64708094bb68303a3d4440 by Kitsune Ral on 14/01/2018 at 01:02..
RoomEvent-aware file up/downloads along with status tracking

Closes #121; closes #122.
https://invent.kde.org/neon/forks/libquotient/-/commit/93b170ceaced07a3de64708094bb68303a3d4440

Git commit 525be6dce815f88ed9cc97480bff461741665e8f by Kitsune Ral on 15/01/2018 at 00:33..
EventContent: rewrite without mixins

MSVC is not good at dealing with type parameter packs of member functions, which is what the whole mixin magic in UrlBasedContent<> relied on. So it's one more level of inheritance instead of mixins now.
https://invent.kde.org/neon/forks/libquotient/-/commit/525be6dce815f88ed9cc97480bff461741665e8f

Git commit 0910bf6c5bbc6c9250023796b2e641f19232c3cd by Kitsune Ral on 15/01/2018 at 01:12..
One more fix, this time for MSVC 2015 only

Making a structure from an initializer list seems to be a problem for it if initializers are defined in the structure.
https://invent.kde.org/neon/forks/libquotient/-/commit/0910bf6c5bbc6c9250023796b2e641f19232c3cd

Git commit 0de5e3b421633bb58805aa4b9d1bf3f07535702c by Kitsune Ral on 15/01/2018 at 01:27..
DownloadFileJob: Be tolerant to request retries
https://invent.kde.org/neon/forks/libquotient/-/commit/0de5e3b421633bb58805aa4b9d1bf3f07535702c

Git commit 5d6360b641084cf95a7f30bb760abdb7a73ebd27 by Kitsune Ral on 15/01/2018 at 02:20..
EventContent: provide mediaId in the top-level JSON, not in "info" subobject

Given that it's a sidedoor anyway, it should at least be straightforward to use.
https://invent.kde.org/neon/forks/libquotient/-/commit/5d6360b641084cf95a7f30bb760abdb7a73ebd27

Git commit 038659c6997e5acad6ecf7171bbd3c4ec14b5d3d by Kitsune Ral on 16/01/2018 at 08:00..
EventContent: inject mediaThumbnailId into content original JSON

For QML to easily make URLs to thumbnails.
https://invent.kde.org/neon/forks/libquotient/-/commit/038659c6997e5acad6ecf7171bbd3c4ec14b5d3d

Git commit ada271e47071681848fdbdecd3aecaa9073091b4 by Kitsune Ral on 17/01/2018 at 03:22..
Room::downloadFile(): make sure temporary file names don't clash

Particularly in case when there are two events that have an image with
the same file name (image.png).
https://invent.kde.org/neon/forks/libquotient/-/commit/ada271e47071681848fdbdecd3aecaa9073091b4

Git commit 0f43e74bcf06b2b09018d564a73aa931098eb790 by Kitsune Ral on 17/01/2018 at 04:00..
Room::getPreviousContent(): Don't skip if the last job just finished
working

The sequence is: RoomMessagesJob::success -> addHistoricalMessageEvents
-> MessageEventModel notification -> QML notification about model reset
-> MessageEventModel completes updating -> QML updates from the model
but by then scrolling has already stopped at the oldest (just loaded)
event -> since there's no momentum, next batch is not fetched. In order
to address this, two things are done: in QML, the current position is
checked in modelReset() handler; in Room (this commit), prev_batch is
updated before historical messages are added (and the model gets
notified, respectively), to prevent firing another job with the old
prev_batch.
https://invent.kde.org/neon/forks/libquotient/-/commit/0f43e74bcf06b2b09018d564a73aa931098eb790

Git commit 936feeedaeda390004d9026ce23324becbcd2c93 by Kitsune Ral on 17/01/2018 at 08:44..
Fix an occasional crash introduced by the previous commit
https://invent.kde.org/neon/forks/libquotient/-/commit/936feeedaeda390004d9026ce23324becbcd2c93

Git commit bbb207277a1f8ca1deb69116f20523fcedf05c64 by Kitsune Ral on 17/01/2018 at 11:17..
Fix a mistake reported by Clang static analyzer
https://invent.kde.org/neon/forks/libquotient/-/commit/bbb207277a1f8ca1deb69116f20523fcedf05c64

Git commit 0221eb08bc7b0a58a110cc7a942159afa755aeec by Kitsune Ral on 17/01/2018 at 23:51..
Move links pretty-printing code from Quaternion to lib

This code is useful for all clients, and extensions to pretty-printing
can be later added either via making prettyPrint() virtual or even by
providing a registry of additional "text transformers" or even "event
content renderers" applied to visualise the event.
https://invent.kde.org/neon/forks/libquotient/-/commit/0221eb08bc7b0a58a110cc7a942159afa755aeec

Git commit ac944a40f12c4aff06af8c01fa36c63643159919 by Kitsune Ral on 18/01/2018 at 05:20..
Room: add properties for shown (room/event), message and members count

Closes #151.
https://invent.kde.org/neon/forks/libquotient/-/commit/ac944a40f12c4aff06af8c01fa36c63643159919

Git commit 959b2d023d37713cefaee049b09e09507107e4b0 by Kitsune Ral on 18/01/2018 at 08:37..
Typo fix
https://invent.kde.org/neon/forks/libquotient/-/commit/959b2d023d37713cefaee049b09e09507107e4b0

Git commit 72ff8cf1e77e859de08e343df964f496dc2f9dd8 by Kitsune Ral on 20/01/2018 at 05:50..
RoomMessageEvent::hasTextContent()

Similar to hasFileContent(), allows to ascertain that an event has TextContent without checking against all possible msgtypes.
https://invent.kde.org/neon/forks/libquotient/-/commit/72ff8cf1e77e859de08e343df964f496dc2f9dd8

Git commit 3bfb1d9736e05fe216c016ae2dbb8eac4ac78048 by Kitsune Ral on 20/01/2018 at 05:52..
Room: store the first displayed event as well; Room::*DisplayedMarker() methods
https://invent.kde.org/neon/forks/libquotient/-/commit/3bfb1d9736e05fe216c016ae2dbb8eac4ac78048

Git commit 766f0cc7743724d830df30eca6899cad20ba1dc8 by Kitsune Ral on 22/01/2018 at 01:29..
Room::setLastReadEvent: don't update if the event is the same
https://invent.kde.org/neon/forks/libquotient/-/commit/766f0cc7743724d830df30eca6899cad20ba1dc8

Git commit b8db2e9bf3ae6479157e4419fe27600cccd443ed by Kitsune Ral on 22/01/2018 at 01:30..
splitMediaId: better assertion failure message
https://invent.kde.org/neon/forks/libquotient/-/commit/b8db2e9bf3ae6479157e4419fe27600cccd443ed

Git commit 0ecfd3897cc3264c21f80a121b4b6774ac2d67f7 by Kitsune Ral on 22/01/2018 at 02:49..
Room: emit addedMessages() before possible read marker auto-promotion

Read marker auto-promotion may be bound to a dataChanged() signal in the
client model, while a routine connection for addedMessages() is
endInsertRows(). Emitting endInsertRows() after dataChanged() over the
same rows has unpredictable consequences for representation of data in
those rows - hence the fix.
https://invent.kde.org/neon/forks/libquotient/-/commit/0ecfd3897cc3264c21f80a121b4b6774ac2d67f7

Git commit b9b2d97e83ac14798c220d6f6dc4ead1809a9cf7 by Kitsune Ral on 24/01/2018 at 02:22..
splitMediaId: fix typos in the assertion failure message
https://invent.kde.org/neon/forks/libquotient/-/commit/b9b2d97e83ac14798c220d6f6dc4ead1809a9cf7

Git commit 36ca96ed4ef0e4f63e6925ea8d6e8b7925473fea by Kitsune Ral on 24/01/2018 at 07:40..
Avatar: Only allow mxc:// links for avatars

Otherwise an attempt to use a possibly insecure link goes to Connection::getThumbnail(), leading to an assertion failure in splitMediaId(). See also the discussion in QMatrixClient/Quaternion#265.
https://invent.kde.org/neon/forks/libquotient/-/commit/36ca96ed4ef0e4f63e6925ea8d6e8b7925473fea

Git commit 68d7a22c25014f09c0346cf1a2501b4fd1fd882a by Kitsune Ral on 24/01/2018 at 12:22..
Typo fixes for the previous commit

Requires deleting the cache :(
https://invent.kde.org/neon/forks/libquotient/-/commit/68d7a22c25014f09c0346cf1a2501b4fd1fd882a

Git commit b4e699a0076fc7827fa89af33d8774d43eb017ce by Kitsune Ral on 24/01/2018 at 14:17..
Fix dangling references
https://invent.kde.org/neon/forks/libquotient/-/commit/b4e699a0076fc7827fa89af33d8774d43eb017ce

Git commit 52aadc68d73d7e590ab7ec3f8b4382483a50bcf1 by Kitsune Ral on 25/01/2018 at 04:23..
Room::Private::toJson: don't save zero numbers
https://invent.kde.org/neon/forks/libquotient/-/commit/52aadc68d73d7e590ab7ec3f8b4382483a50bcf1

Git commit 84e183a70b831d1e18c373099988420f5050254b by Kitsune Ral on 25/01/2018 at 04:23..
BaseJob::checkReply: log job returned status more explicitly
https://invent.kde.org/neon/forks/libquotient/-/commit/84e183a70b831d1e18c373099988420f5050254b

Git commit 6ab89ce02e450605cebd432d2113a3115d0cf8c1 by Kitsune Ral on 25/01/2018 at 04:28..
Connection::forgetRoom: Support forgetting invites too

Closes #157.
https://invent.kde.org/neon/forks/libquotient/-/commit/6ab89ce02e450605cebd432d2113a3115d0cf8c1

Git commit d1663570003b20be58d4ce87e4b1d26bdf0029a8 by Kitsune Ral on 25/01/2018 at 04:29..
Room::toJson: fix invite state caching

Causes a cache version upgrade; the old cache stores the state in an
incorrect place that won't be supported. Closes #159.
https://invent.kde.org/neon/forks/libquotient/-/commit/d1663570003b20be58d4ce87e4b1d26bdf0029a8

Git commit 80f75c9b5c6642e8c02e626f991e2ed620a2dc4f by Kitsune Ral on 25/01/2018 at 05:05..
Connection::provideRoom: assert no empty ids

Bonus: slightly more accurate comment in Connection::forgetRoom
https://invent.kde.org/neon/forks/libquotient/-/commit/80f75c9b5c6642e8c02e626f991e2ed620a2dc4f

Git commit d11b0af7b4a6c572409c0ac979c99a02bfb14761 by Kitsune Ral on 25/01/2018 at 05:06..
Connection: intercept late-coming /sync response on a just forgotten room

Closes #160.
https://invent.kde.org/neon/forks/libquotient/-/commit/d11b0af7b4a6c572409c0ac979c99a02bfb14761

Git commit 14abbe278dd05394ffb5b4354f54ba8795ca0b5b by Kitsune Ral on 25/01/2018 at 05:07..
Merge branch 'kitsune-invite-state-caching'
https://invent.kde.org/neon/forks/libquotient/-/commit/14abbe278dd05394ffb5b4354f54ba8795ca0b5b

Git commit d45298d5db97663f300879002a8e0ccdf6b8d523 by Kitsune Ral on 25/01/2018 at 05:31..
Merge branch 'kitsune-better-forget'
https://invent.kde.org/neon/forks/libquotient/-/commit/d45298d5db97663f300879002a8e0ccdf6b8d523

Git commit cb54a2a5f9e83a5076eb501e60e88846a4aa28df by Kitsune Ral on 25/01/2018 at 05:46..
Expose avatar URLs of Room and User as Q_PROPERTY

This is needed for QML integration. Closes #155.
https://invent.kde.org/neon/forks/libquotient/-/commit/cb54a2a5f9e83a5076eb501e60e88846a4aa28df

Git commit 8590054a675bc5d2b07fff1acbb084d67c068113 by Kitsune Ral on 25/01/2018 at 10:42..
StateEvent<>: introduce Prev structure and prevSenderId() accessor

Also switch prev_content() from accidental snake case to camel case (old name still provided for compatibility).
https://invent.kde.org/neon/forks/libquotient/-/commit/8590054a675bc5d2b07fff1acbb084d67c068113

Git commit 3a913f33853c675a1051460bc36278be20a4c941 by Kitsune Ral on 25/01/2018 at 10:45..
Room, User: const-tighten up the code, set QObject names

To make debugging (including QML debugging) more convenient.
https://invent.kde.org/neon/forks/libquotient/-/commit/3a913f33853c675a1051460bc36278be20a4c941

Git commit 80f7e44e1a9056fc55147718dd2812eb93925ec1 by Kitsune Ral on 25/01/2018 at 10:48..
Room, User: expose avatarMediaId(); declare User for the metatype system

To make it easy to use User objects and fetch room and user avatars from QML. Closes #155.
https://invent.kde.org/neon/forks/libquotient/-/commit/80f7e44e1a9056fc55147718dd2812eb93925ec1

Git commit 2f83e4be20a15013181c1ba6944e21f051ccac9d by Kitsune Ral on 25/01/2018 at 10:54..
Merge branch 'kitsune-avatar-url-properties'
https://invent.kde.org/neon/forks/libquotient/-/commit/2f83e4be20a15013181c1ba6944e21f051ccac9d

Git commit 36db5ddad0183c21444246d5ab55a6b44de8b529 by Kitsune Ral on 25/01/2018 at 23:54..
splitMediaId: better assertion failure message
https://invent.kde.org/neon/forks/libquotient/-/commit/36db5ddad0183c21444246d5ab55a6b44de8b529

Git commit 7d506f7bebbcc3b5f8a37589f8fda6fa1e7e1efd by Kitsune Ral on 25/01/2018 at 23:56..
splitMediaId: fix typos in the assertion failure message
https://invent.kde.org/neon/forks/libquotient/-/commit/7d506f7bebbcc3b5f8a37589f8fda6fa1e7e1efd

Git commit 76bff84a2aa63db677044cc529b910768fa018fa by Kitsune Ral on 26/01/2018 at 00:00..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/76bff84a2aa63db677044cc529b910768fa018fa

Git commit b34368907cba52954849bfb0266e119e5563eeb7 by Kitsune Ral on 26/01/2018 at 01:37..
CreateRoomJob: Update to the latest Spec version
https://invent.kde.org/neon/forks/libquotient/-/commit/b34368907cba52954849bfb0266e119e5563eeb7

Git commit 56d997607c21d52d0ce75067601814e5106a8ef0 by Kitsune Ral on 30/01/2018 at 06:18..
Connection::onSyncSuccess: call processEvents upon each room parsing

When there are too many rooms to process, this gives at least some
bandwidth for the GUI in the meantime.
https://invent.kde.org/neon/forks/libquotient/-/commit/56d997607c21d52d0ce75067601814e5106a8ef0

Git commit 89a9656025e938a24a2ce8949e7aaf1aacaae37b by Kitsune Ral on 30/01/2018 at 07:06..
RequestData: use auto

Should improve compatibility with compilers that don't like conversions
between different std::unique_ptr<> types.
https://invent.kde.org/neon/forks/libquotient/-/commit/89a9656025e938a24a2ce8949e7aaf1aacaae37b

Git commit 20be17094ea2d371e98638f3988dff0d65fae917 by Kitsune Ral on 30/01/2018 at 07:06..
User: fullName, isGuest, better doc comments

User::fullName() is used in Room::roomMembername now. That string
construction may be further cached now if it ever becomes a bottleneck.
https://invent.kde.org/neon/forks/libquotient/-/commit/20be17094ea2d371e98638f3988dff0d65fae917

Git commit eca077cfdb9d92a3f2fa29d65e71ae6c213923f4 by Kitsune Ral on 30/01/2018 at 07:07..
CreateRoomJob: Update to the latest Spec version
https://invent.kde.org/neon/forks/libquotient/-/commit/eca077cfdb9d92a3f2fa29d65e71ae6c213923f4

Git commit 2393ea6a1c43f2e7ac7bcb5d7fb4915cec09f2e3 by Kitsune Ral on 30/01/2018 at 07:07..
Connection class cleanup

createRoom and createUser renamed to roomFactory and userFactory
(because createRoom will mean a different thing); unneeded #include
moved to the cpp file.
https://invent.kde.org/neon/forks/libquotient/-/commit/2393ea6a1c43f2e7ac7bcb5d7fb4915cec09f2e3

Git commit 096fbd4ed4033bbf770769b50ed709862c369281 by Kitsune Ral on 30/01/2018 at 07:07..
Connection::createRoom and Connection::createDirectChat
https://invent.kde.org/neon/forks/libquotient/-/commit/096fbd4ed4033bbf770769b50ed709862c369281

Git commit fcb0342410beaacc84c59813a1a7b6195c6abf7f by Kitsune Ral on 30/01/2018 at 07:07..
Connection: more Q_PROPERTYs, newUser signal
https://invent.kde.org/neon/forks/libquotient/-/commit/fcb0342410beaacc84c59813a1a7b6195c6abf7f

Git commit 038471e340c51f36f612fbb19d8a2b60a9923973 by Kitsune Ral on 30/01/2018 at 07:07..
Connection: expose the list of users; use an ordered map

It's still an open question whether it's better to store a separate
sorted index of users, next to an unsorted one; but a sorted list of
users is of much more use in GUI than an unsorted one.
https://invent.kde.org/neon/forks/libquotient/-/commit/038471e340c51f36f612fbb19d8a2b60a9923973

Git commit db5d99c8b3f68b116fc55a4563bb66db4bf82cf8 by Kitsune Ral on 30/01/2018 at 07:17..
Fix compatibility with Qt before 5.10
https://invent.kde.org/neon/forks/libquotient/-/commit/db5d99c8b3f68b116fc55a4563bb66db4bf82cf8

Git commit eb88190b190e00f808903388052664f0c31d3a42 by Kitsune Ral on 30/01/2018 at 07:17..
Fix compatibility with Qt before 5.10
https://invent.kde.org/neon/forks/libquotient/-/commit/eb88190b190e00f808903388052664f0c31d3a42

Git commit db398e7134f3a7b6cd7f4281add1decfeb961a55 by Kitsune Ral on 30/01/2018 at 07:47..
Room: setName(), setCanonicalAlias()
https://invent.kde.org/neon/forks/libquotient/-/commit/db398e7134f3a7b6cd7f4281add1decfeb961a55

Git commit 13bc7b8b784c2095a0187a1787f56f207528867e by Kitsune Ral on 30/01/2018 at 07:49..
Fix compilation with Clang

Did two QChar::isDigit() overloads, one static and one member, confuse it?
https://invent.kde.org/neon/forks/libquotient/-/commit/13bc7b8b784c2095a0187a1787f56f207528867e

Git commit 0a80e38c1b425322d96dc662c6d47e3ca5fc2c86 by Kitsune Ral on 30/01/2018 at 08:47..
Fix compilation with Clang

Did two QChar::isDigit() overloads, one static and one member, confuse it?
https://invent.kde.org/neon/forks/libquotient/-/commit/0a80e38c1b425322d96dc662c6d47e3ca5fc2c86

Git commit 86c41b9d233918ebc3312d19fc8f702a0f5da789 by Kitsune Ral on 30/01/2018 at 11:36..
User: Fixes in newly introduced methods
https://invent.kde.org/neon/forks/libquotient/-/commit/86c41b9d233918ebc3312d19fc8f702a0f5da789

Git commit 75542386eaf7a6e4ecd064401f2c3373c48f3cd3 by Kitsune Ral on 30/01/2018 at 11:37..
User: Fixes in newly introduced methods
https://invent.kde.org/neon/forks/libquotient/-/commit/75542386eaf7a6e4ecd064401f2c3373c48f3cd3

Git commit 0aade6a4a9726e30814b5f3c9dcf27a7125e324a by Kitsune Ral on 30/01/2018 at 14:35..
Merge branch 'kitsune-create-room'

Closes #34.
https://invent.kde.org/neon/forks/libquotient/-/commit/0aade6a4a9726e30814b5f3c9dcf27a7125e324a

Git commit 7f7ca55599887af0ad8d2eb9efbf432fc140ffca by Kitsune Ral on 31/01/2018 at 01:30..
Connection::createdRoom() signal
https://invent.kde.org/neon/forks/libquotient/-/commit/7f7ca55599887af0ad8d2eb9efbf432fc140ffca

Git commit 1a58c8382575e39acd5ef438480aff2fe7cf79ad by Kitsune Ral on 01/02/2018 at 00:35..
AppVeyor CI configuration

Compared to the (very similar) Quaternion project configuration, this one adds qmake-based building with MSVC 2017 (MSVC 2015 can be added if anybody needs it).
https://invent.kde.org/neon/forks/libquotient/-/commit/1a58c8382575e39acd5ef438480aff2fe7cf79ad

Git commit f353c7841d9aec6ccc65ae2841f20b420872833f by Kitsune Ral on 01/02/2018 at 00:42..
Add GCC 4.9.2 to the workaround path for FileTransferInfo code

Closes #161. Doesn't make GCC 4.9.2 officially supported but libqmatrixclient can be compiled with it as of now.
https://invent.kde.org/neon/forks/libquotient/-/commit/f353c7841d9aec6ccc65ae2841f20b420872833f

Git commit ff1565e72627715c371aebb70d3d49aa2d153134 by Roman Plášil (on behalf of Roman Plášil) on 01/02/2018 at 01:38..
Make qmake warning spec compatible with msvc
https://invent.kde.org/neon/forks/libquotient/-/commit/ff1565e72627715c371aebb70d3d49aa2d153134

Git commit caaf2ed08deb159d5546024b76fc48ab9d24f6b5 by GitHub (on behalf of Kitsune Ral) on 01/02/2018 at 01:46..
Merge pull request #164 from Quiark/master

Make qmake warning spec compatible with msvc
https://invent.kde.org/neon/forks/libquotient/-/commit/caaf2ed08deb159d5546024b76fc48ab9d24f6b5

Git commit aa3f747fc8480a8d58b41d447ecb7ca9b43c96e1 by Roman Plášil on 01/02/2018 at 07:32..
Move forgetRoom over to slots #166
https://invent.kde.org/neon/forks/libquotient/-/commit/aa3f747fc8480a8d58b41d447ecb7ca9b43c96e1

Git commit a375af174a73b6dc77c4f6e06ceb1a0e910af3a9 by GitHub (on behalf of Kitsune Ral) on 01/02/2018 at 07:39..
Merge pull request #167 from Quiark/master

Move forgetRoom over to slots #166
https://invent.kde.org/neon/forks/libquotient/-/commit/a375af174a73b6dc77c4f6e06ceb1a0e910af3a9

Git commit 2eb0cace848d7d0415a69be9159cfdf6b1bf1117 by Kitsune Ral on 01/02/2018 at 08:03..
Room::fileNameToDownload: get a sensible initial name for the file picker

Works (at least, should work) with both Qt Widgets and QML.
https://invent.kde.org/neon/forks/libquotient/-/commit/2eb0cace848d7d0415a69be9159cfdf6b1bf1117

Git commit b7fce41348f2c8449e84c3078b67dad7cf78ace5 by Kitsune Ral on 01/02/2018 at 08:15..
Log transferred bytes in PROFILER category
https://invent.kde.org/neon/forks/libquotient/-/commit/b7fce41348f2c8449e84c3078b67dad7cf78ace5

Git commit ffb8233d1b6ac54e37391e1949697ba8f6828f47 by Kitsune Ral on 01/02/2018 at 09:16..
On Windows, make sure the downloaded file has a proper extension

Closes #287.
https://invent.kde.org/neon/forks/libquotient/-/commit/ffb8233d1b6ac54e37391e1949697ba8f6828f47

Git commit 818fbda8c43fa76ede72db2e941ec81fe093cc59 by GitHub (on behalf of Kitsune Ral) on 02/02/2018 at 10:37..
Add CII Best Practices badge to the flair section
https://invent.kde.org/neon/forks/libquotient/-/commit/818fbda8c43fa76ede72db2e941ec81fe093cc59

Git commit c62180d910cc23b5360bbb0807d792f876f195a6 by Kitsune Ral on 03/02/2018 at 03:12..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/c62180d910cc23b5360bbb0807d792f876f195a6

Git commit 83427d7e20008f05bfc78339b3cdb30719c77272 by Kitsune Ral on 03/02/2018 at 10:13..
BaseJob::makeRequestUrl

A static method that constructs a request URL for this job and the passed set of parameters.
https://invent.kde.org/neon/forks/libquotient/-/commit/83427d7e20008f05bfc78339b3cdb30719c77272

Git commit e1aedb9f3dcf7dcdc68e5eefab206258013c5114 by Kitsune Ral on 03/02/2018 at 10:14..
GTAD: Generate job-specific makeRequestUrl() methods
https://invent.kde.org/neon/forks/libquotient/-/commit/e1aedb9f3dcf7dcdc68e5eefab206258013c5114

Git commit e000929c0b06752703056b890ff0b5a4deae1c6a by Kitsune Ral on 03/02/2018 at 10:15..
BaseJob::makeRequestUrl

A static method that constructs a request URL for this job and the passed set of parameters.
https://invent.kde.org/neon/forks/libquotient/-/commit/e000929c0b06752703056b890ff0b5a4deae1c6a

Git commit 23dc9a3259108f8e0c55e535b9341042f1ff77f5 by Kitsune Ral on 03/02/2018 at 10:17..
jobs/generated: Generate job-specific makeRequestUrl() methods
https://invent.kde.org/neon/forks/libquotient/-/commit/23dc9a3259108f8e0c55e535b9341042f1ff77f5

Git commit 15d8e2b7b5268cd9c7fc69826f905de80c82fa54 by Kitsune Ral on 03/02/2018 at 10:18..
DownloadFileJob, MediaThumbnailJob: augment generated makeRequestUrl() methods
https://invent.kde.org/neon/forks/libquotient/-/commit/15d8e2b7b5268cd9c7fc69826f905de80c82fa54

Git commit 1e48c18f6a7c6cd3c751e3156310a53bc63c27fc by Kitsune Ral on 03/02/2018 at 10:20..
thumbnailInfo() for event content classes and RoomMessageEvent: hasThumbnail
https://invent.kde.org/neon/forks/libquotient/-/commit/1e48c18f6a7c6cd3c751e3156310a53bc63c27fc

Git commit f6b55a3c8fc60dd263954df3359027eff2ef1e18 by Kitsune Ral on 03/02/2018 at 10:21..
Room: urlToDownload() and urlToThumbnail()

Closes #168.
https://invent.kde.org/neon/forks/libquotient/-/commit/f6b55a3c8fc60dd263954df3359027eff2ef1e18

Git commit e80bfd2fc710d4780a2c22bde9d605a41bd4aaa4 by Kitsune Ral on 03/02/2018 at 12:24..
Merge branch 'kitsune-expose-download-urls' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/e80bfd2fc710d4780a2c22bde9d605a41bd4aaa4

Git commit 898f0c73b4d76c091e48c5e767b94d6ad18f582f by GitHub (on behalf of Kitsune Ral) on 05/02/2018 at 13:30..
Merge pull request #170 from QMatrixClient/kitsune-expose-download-urls

Expose download URLs
https://invent.kde.org/neon/forks/libquotient/-/commit/898f0c73b4d76c091e48c5e767b94d6ad18f582f

Git commit 6a9b1876bf8ebeca398c9c57ef90e01c25a7ada6 by Kitsune Ral on 07/02/2018 at 06:12..
MediaThumbnailJob::parseReply: Do not ignore underlying errors
https://invent.kde.org/neon/forks/libquotient/-/commit/6a9b1876bf8ebeca398c9c57ef90e01c25a7ada6

Git commit b7c1ff183384738f170d53128c684681cb34f3b7 by Kitsune Ral on 07/02/2018 at 06:12..
RoomEvent/RoomMemberEvent: do not store what can be calculated on the fly

Basically, segments of originalJsonObject() are used as-you-go instead of parsing them upon event creation.
https://invent.kde.org/neon/forks/libquotient/-/commit/b7c1ff183384738f170d53128c684681cb34f3b7

Git commit 3bf51eea5e6152cd39daa971ac6f88d0571ce198 by Kitsune Ral on 19/02/2018 at 09:51..
Fix a typo in the previous commit

A symptom that you suffered from it is you don't see any usernames whatsoever, and after restarting room names are also gone (to fix that, delete cache files).
https://invent.kde.org/neon/forks/libquotient/-/commit/3bf51eea5e6152cd39daa971ac6f88d0571ce198

Git commit d54bdd710163afe9e09b2c4c65bbf21454ed2ceb by Kitsune Ral on 20/02/2018 at 01:38..
BaseJob: added Abandoned status

For a very brief period between calling BaseJob::abandon() and deletion of the job object.
https://invent.kde.org/neon/forks/libquotient/-/commit/d54bdd710163afe9e09b2c4c65bbf21454ed2ceb

Git commit 8fbbd6063a2d313c630d14842bbce4de8c1e7851 by Kitsune Ral on 23/02/2018 at 01:42..
BaseJob: In case of 4xx errors, fill the status with the message from the response
https://invent.kde.org/neon/forks/libquotient/-/commit/8fbbd6063a2d313c630d14842bbce4de8c1e7851

Git commit 76b1d775edae36dd2f36fdd4886c6c956bf6b49b by Kitsune Ral on 23/02/2018 at 01:50..
RoomMemberEvent: make it sendable

To do that, both RoomMemberEvent and MemberEventContent got respective constructors.
Also: the fallback value for unknown _received_ membership types is now Undefined; it's not allowed in member events for sending (will fail on assertion now) because the server requires membership to be explicitly set.
https://invent.kde.org/neon/forks/libquotient/-/commit/76b1d775edae36dd2f36fdd4886c6c956bf6b49b

Git commit 9474a9afeb7ff63538ee85b4b59e172e5d32db32 by Kitsune Ral on 23/02/2018 at 04:42..
Avatar: provide common logic for uploading; don't store Connection

Although the setting part of the work is class(User or Room)-specific, the uploading part is common, so Avatar provides it now.
Also: there's no need to store Connection, as it's only used in get() and upload() - just pass it as the parameter to the methods.
https://invent.kde.org/neon/forks/libquotient/-/commit/9474a9afeb7ff63538ee85b4b59e172e5d32db32

Git commit b243fc6495e06fa4d41562aa20028dfdb3efd28e by Kitsune Ral on 23/02/2018 at 05:09..
Room: user() and memberJoinState(); code cleanup

Room::user() came instead of Room::Private::member() and memberJoinState() came instead of Private::hasMember.
https://invent.kde.org/neon/forks/libquotient/-/commit/b243fc6495e06fa4d41562aa20028dfdb3efd28e

Git commit 2c095d29b96393dcfa3121c8cb9f4c4fd4f88d6a by Kitsune Ral on 24/02/2018 at 10:42..
Don't copy event content in accessors
https://invent.kde.org/neon/forks/libquotient/-/commit/2c095d29b96393dcfa3121c8cb9f4c4fd4f88d6a

Git commit c12f5cc213ecbb40c506e304e6b41c1437ca0d33 by Kitsune Ral on 24/02/2018 at 10:43..
Support per-room user traits

User::Private stores two new maps (for display names and avatars respectively) and is able to retrieve and store names/avatars on a per-room basis. The "most used" trait is stored separately and room lists are not kept for it (because most people have a single name and a single avatar across all or most rooms).
TODO: The avatar container should be replaced with something less clumsy; the current code doesn't even compile with MSVC. A "handle" copyable structure that would hold the Avatar is one of options.
Closes #141.
https://invent.kde.org/neon/forks/libquotient/-/commit/c12f5cc213ecbb40c506e304e6b41c1437ca0d33

Git commit e09c740c85e2e9a861e84f706680ce1ec662a4bc by Kitsune Ral on 24/02/2018 at 10:48..
User/Room: signal that a user/member is about to change the name

Enables to address QMatrixClient/Quaternion#284. Also fixes a gibberish condition in Room::Private::renameMember() that led to improper warnings and a too early return.
https://invent.kde.org/neon/forks/libquotient/-/commit/e09c740c85e2e9a861e84f706680ce1ec662a4bc

Git commit e10927767faaf7a03a772ab97fe6292907cc4b4b by Kitsune Ral on 24/02/2018 at 10:48..
User: store avatars on the heap; use two containers to store avatars-to-rooms mapping

Because they are uncopiable, unlike pointers to them; and a combination of QHash of avatars and a QMultiHash of rooms is much more convenient than a std::vector<std::pair<...>>.
https://invent.kde.org/neon/forks/libquotient/-/commit/e10927767faaf7a03a772ab97fe6292907cc4b4b

Git commit be336237914ae4517e21f6e82d6c6facf16660d8 by Kitsune Ral on 24/02/2018 at 10:49..
Merge branch 'kitsune-room-specific-userinfo'
https://invent.kde.org/neon/forks/libquotient/-/commit/be336237914ae4517e21f6e82d6c6facf16660d8

Git commit fea4f3b5c8d313b429777a8c73ee520af24eecfe by Kitsune Ral on 25/02/2018 at 05:37..
ReceiptEvent: code cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/fea4f3b5c8d313b429777a8c73ee520af24eecfe

Git commit e77a53946805649be99f8c0f6ee9c00702348132 by Kitsune Ral on 26/02/2018 at 00:06..
Room: show 1-on-1 invitations in a better way

Previously it was just an "Empty room" name, now it's "Invitation from
%1".
https://invent.kde.org/neon/forks/libquotient/-/commit/e77a53946805649be99f8c0f6ee9c00702348132

Git commit a2f991555bec7b317606093e95ec2b5684b0005a by Kitsune Ral on 26/02/2018 at 00:06..
SyncJob: parse events from global account data too

Closes #123 (room account data were parsed even before). No specific event classes for account data yet, though.
https://invent.kde.org/neon/forks/libquotient/-/commit/a2f991555bec7b317606093e95ec2b5684b0005a

Git commit 7c10807549b2a73527bd594789d0e5b9ab58c874 by Kitsune Ral on 26/02/2018 at 00:06..
TagEvent: m.tag events parsing

Using them in rooms and connection comes in the next commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/7c10807549b2a73527bd594789d0e5b9ab58c874

Git commit ec412621d71b1a7758b15d2b3c5cd5e7b2081ab1 by Kitsune Ral on 26/02/2018 at 00:06..
Room and Connection: support room tags

Closes #134.
https://invent.kde.org/neon/forks/libquotient/-/commit/ec412621d71b1a7758b15d2b3c5cd5e7b2081ab1

Git commit 91cc0e8db0006beeb91b9e007cd21343984dfb6a by Kitsune Ral on 26/02/2018 at 00:07..
Merge branch 'kitsune-account-data'
https://invent.kde.org/neon/forks/libquotient/-/commit/91cc0e8db0006beeb91b9e007cd21343984dfb6a

Git commit 41171cc181c4bc48ba2bdc39b582d0f6c2fdde0d by Kitsune Ral on 26/02/2018 at 00:08..
qmc-example: Single-shot sync instead of continuous; room tags; code cleanup

Single-shot sync is now used because with that qmc-example can be used as a crude auto-testing tool.
https://invent.kde.org/neon/forks/libquotient/-/commit/41171cc181c4bc48ba2bdc39b582d0f6c2fdde0d

Git commit e18be10126ad06d217d855fe1bab9383aa508894 by Kitsune Ral on 26/02/2018 at 00:08..
Travis CI: an attempt to introduce automatic testing

Adding valgrind to the mix.
https://invent.kde.org/neon/forks/libquotient/-/commit/e18be10126ad06d217d855fe1bab9383aa508894

Git commit 06cc6a80a44a510db1e11ebe8795c8e13a0156e2 by Kitsune Ral on 26/02/2018 at 00:45..
Fix (not working for quite a long time) CI on OSX
https://invent.kde.org/neon/forks/libquotient/-/commit/06cc6a80a44a510db1e11ebe8795c8e13a0156e2

Git commit 4bb5f23d1b70136769a8df76907acb75aa824af9 by Kitsune Ral on 26/02/2018 at 00:53..
Fix on the previous fix (sorry for the mess)
https://invent.kde.org/neon/forks/libquotient/-/commit/4bb5f23d1b70136769a8df76907acb75aa824af9

Git commit 979756e26af57e715efe64f8de8068243fa27e9f by Kitsune Ral on 26/02/2018 at 02:09..
Deal with memory more carefully

Plugs some memory leaks reported by Valgrind.
https://invent.kde.org/neon/forks/libquotient/-/commit/979756e26af57e715efe64f8de8068243fa27e9f

Git commit 431eea5f4a03f8a5622eaf30f45187ad51e50b42 by Kitsune Ral on 26/02/2018 at 07:50..
Travis CI: Skip valgrind on OSX; send a message to a test room on every run
https://invent.kde.org/neon/forks/libquotient/-/commit/431eea5f4a03f8a5622eaf30f45187ad51e50b42

Git commit 4b5d5d20de1a3c00c77e395260f572c2b90f54f4 by Kitsune Ral on 26/02/2018 at 08:26..
qmc-example: Optionally send a test message; don't dump incoming messages to cout

The room alias is the third parameter (after user and password).
https://invent.kde.org/neon/forks/libquotient/-/commit/4b5d5d20de1a3c00c77e395260f572c2b90f54f4

Git commit 967b18197aa262751f357c25d812e63b9bcce8b2 by Kitsune Ral on 26/02/2018 at 08:27..
TagEvent: drop unneeded methods; add a license block to the .cpp file

Those methods are more appropriate for Room.
https://invent.kde.org/neon/forks/libquotient/-/commit/967b18197aa262751f357c25d812e63b9bcce8b2

Git commit 37b67cbd07beca1b6f010794a7ff1920bc053e6e by Kitsune Ral on 26/02/2018 at 08:50..
qmc-example: Temporarily comment out the code that uses uncommitted features
https://invent.kde.org/neon/forks/libquotient/-/commit/37b67cbd07beca1b6f010794a7ff1920bc053e6e

Git commit f366cb25d1a5256341c1253fb04e36bd70373a70 by Kitsune Ral on 27/02/2018 at 02:36..
Room: Save tags in the cache; isFavourite() and isLowPriority()
https://invent.kde.org/neon/forks/libquotient/-/commit/f366cb25d1a5256341c1253fb04e36bd70373a70

Git commit efeeca097a3c69991683615366f07625855ba2ac by Kitsune Ral on 27/02/2018 at 06:35..
Travis CI: Fix a typo
https://invent.kde.org/neon/forks/libquotient/-/commit/efeeca097a3c69991683615366f07625855ba2ac

Git commit 375bea5ee67a90c6419acf50c06c05ed0435c772 by Kitsune Ral on 27/02/2018 at 10:51..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/375bea5ee67a90c6419acf50c06c05ed0435c772

Git commit dafb0e10a421a36d976d8d8f18fb3aadeaece994 by Kitsune Ral on 27/02/2018 at 11:14..
jobs/generated: SetAccountDataJob, SetAccountDataPerRoomJob
https://invent.kde.org/neon/forks/libquotient/-/commit/dafb0e10a421a36d976d8d8f18fb3aadeaece994

Git commit 292ed58962fb11d6572e273bcb4d2ad762d60365 by Kitsune Ral on 27/02/2018 at 11:15..
jobs/generated: GetJoinedRoomsJob
https://invent.kde.org/neon/forks/libquotient/-/commit/292ed58962fb11d6572e273bcb4d2ad762d60365

Git commit f1f71255fb1a9e90dadd34fd055d14155da485ea by Kitsune Ral on 27/02/2018 at 11:18..
jobs/generated: GetPushersJob, PostPusherJob
https://invent.kde.org/neon/forks/libquotient/-/commit/f1f71255fb1a9e90dadd34fd055d14155da485ea

Git commit 52afbb96cee8ea1aa739909fc54b28dd7dcb4a2f by Kitsune Ral on 27/02/2018 at 11:20..
jobs/generated: SendMessageJob (might or might not preempt non-generated SendEventJob)
https://invent.kde.org/neon/forks/libquotient/-/commit/52afbb96cee8ea1aa739909fc54b28dd7dcb4a2f

Git commit dce6f26a125f237471c579675ac149a33a951d84 by Kitsune Ral on 27/02/2018 at 11:22..
jobs/generated: GetRoomTagsJob, SetRoomTagJob, DeleteRoomTagJob
https://invent.kde.org/neon/forks/libquotient/-/commit/dce6f26a125f237471c579675ac149a33a951d84

Git commit e9e407ba2aca7e3dc0cea5040738953f1961e09c by Kitsune Ral on 27/02/2018 at 11:23..
jobs/generated: SearchUserDirectoryJob
https://invent.kde.org/neon/forks/libquotient/-/commit/e9e407ba2aca7e3dc0cea5040738953f1961e09c

Git commit a95618af600c8c72c15ece48682ee6260de27aff by Kitsune Ral on 27/02/2018 at 11:27..
jobs/generated: SendToDeviceJob
https://invent.kde.org/neon/forks/libquotient/-/commit/a95618af600c8c72c15ece48682ee6260de27aff

Git commit 07485711f867813098180afcfe15e4af393b66ec by Kitsune Ral on 28/02/2018 at 05:46..
Profiling logs: added µs, less empty profiling log lines

Closes #177.
https://invent.kde.org/neon/forks/libquotient/-/commit/07485711f867813098180afcfe15e4af393b66ec

Git commit 164938cc1900afe94128e83c8c52bf04a8981ded by Kitsune Ral on 28/02/2018 at 06:21..
To the previous commit: µ (mu, micro) is a part of Latin-1 code page.

And QDebug doesn't work with u"" anyway.
https://invent.kde.org/neon/forks/libquotient/-/commit/164938cc1900afe94128e83c8c52bf04a8981ded

Git commit efd37913fdb4223168a0bb0e7897d75be4606d1f by Kitsune Ral on 28/02/2018 at 07:41..
Don't resolve the homeserver port from a user MXID

Closes #176. The right way (c) of server name resolution will be done in #178 (see also the Google Doc mentioned in it).
https://invent.kde.org/neon/forks/libquotient/-/commit/efd37913fdb4223168a0bb0e7897d75be4606d1f

Git commit 9ff04e98d62f93a7a6003fc80d189e96c6835f84 by Kitsune Ral on 28/02/2018 at 08:11..
Skip retry interval if the last job attempt timed out

Closes #175.
https://invent.kde.org/neon/forks/libquotient/-/commit/9ff04e98d62f93a7a6003fc80d189e96c6835f84

Git commit 646ee63846c8985b6222ae1096ccc970a1834ce5 by Kitsune Ral on 01/03/2018 at 11:12..
Fix tags saving/restoring (finally)

Closes #134.
https://invent.kde.org/neon/forks/libquotient/-/commit/646ee63846c8985b6222ae1096ccc970a1834ce5

Git commit e15645d0e7afc0f45727d0d6611445fc26ef5219 by Kitsune Ral on 01/03/2018 at 11:19..
Connection::tagNames()

To be able to get all available tags throughout the connection.
https://invent.kde.org/neon/forks/libquotient/-/commit/e15645d0e7afc0f45727d0d6611445fc26ef5219

Git commit c94c36418461f0909f125d3833e323689c4357f8 by Kitsune Ral on 02/03/2018 at 05:29..
Travis CI: run qmc-example on OSX; set valgrind options externally

The first part at least checks that qmc-example works on OSX (and we no more make a useless bundle for it). The second part allows to change valgrind options without tinkering .travis.yml.
https://invent.kde.org/neon/forks/libquotient/-/commit/c94c36418461f0909f125d3833e323689c4357f8

Git commit fa5a91b92c3b397c2959c78aaa2fd023d0cfea2a by GitHub (on behalf of Kitsune Ral) on 02/03/2018 at 11:47..
ISSUE_TEMPLATE.md
https://invent.kde.org/neon/forks/libquotient/-/commit/fa5a91b92c3b397c2959c78aaa2fd023d0cfea2a

Git commit 4916c0b65f8415db1e189e7a9963fce71d3b8b71 by Roman Plášil on 03/03/2018 at 10:19..
Improve compatibility with gcc 4.9 to be able to build for Android with QtCreator
https://invent.kde.org/neon/forks/libquotient/-/commit/4916c0b65f8415db1e189e7a9963fce71d3b8b71

Git commit 2285d147ab673dc8a561624fd7d90ae685a93e02 by Kitsune Ral on 03/03/2018 at 11:19..
Merge branch 'ci-tweaks'
https://invent.kde.org/neon/forks/libquotient/-/commit/2285d147ab673dc8a561624fd7d90ae685a93e02

Git commit 2e6585db10d905e4e7e93fc6765240789f43fdaa by Kitsune Ral on 03/03/2018 at 14:26..
Caching: switching to binary JSON format; yield to event loop while making a cache payload
https://invent.kde.org/neon/forks/libquotient/-/commit/2e6585db10d905e4e7e93fc6765240789f43fdaa

Git commit 5cdb186e067786eb53dd9b5e94bde8b12e672f44 by GitHub (on behalf of Kitsune Ral) on 04/03/2018 at 05:44..
Merge pull request #180 from Quiark/update_compiler

Making it compile for android
https://invent.kde.org/neon/forks/libquotient/-/commit/5cdb186e067786eb53dd9b5e94bde8b12e672f44

Git commit 9faea79681597a50e21abb8a530ef36e87391f31 by Kitsune Ral on 04/03/2018 at 05:58..
CMakeLists.txt: indent files with 4 spaces as everywhere else

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/9faea79681597a50e21abb8a530ef36e87391f31

Git commit 2222bb226f43e9419c4a231c9f95da8466de4c0a by Kitsune Ral on 04/03/2018 at 06:00..
QCoreApplication::processEvents() is static, doesn't need instance()

Thanks to clang-tidy for spotting that.
https://invent.kde.org/neon/forks/libquotient/-/commit/2222bb226f43e9419c4a231c9f95da8466de4c0a

Git commit 5f346a377c6c2e1989c61ba62cc08e1629ab15f4 by Kitsune Ral on 04/03/2018 at 06:21..
Room::toJson(): Use QJsonObject/Array modern constructors; check execution time

Now that we're on Qt 5.6 we can afford brace-initialization of those objects.
https://invent.kde.org/neon/forks/libquotient/-/commit/5f346a377c6c2e1989c61ba62cc08e1629ab15f4

Git commit fc4daac8862ad6a9824ec86628f222d74ce21201 by Kitsune Ral on 04/03/2018 at 06:22..
Connection: allow to choose between binary and text JSON cache
https://invent.kde.org/neon/forks/libquotient/-/commit/fc4daac8862ad6a9824ec86628f222d74ce21201

Git commit ff85bba352ee23d6e2689804da40a9433a117e71 by Kitsune Ral on 05/03/2018 at 01:23..
Fix a typo leading to cache never working
https://invent.kde.org/neon/forks/libquotient/-/commit/ff85bba352ee23d6e2689804da40a9433a117e71

Git commit 089a23093dd8e73b4e1e5b1a2aa3935028066faa by Kitsune Ral on 05/03/2018 at 01:23..
simplestateevents.h: minor tweaks
https://invent.kde.org/neon/forks/libquotient/-/commit/089a23093dd8e73b4e1e5b1a2aa3935028066faa

Git commit 1edfe9d82ea9d9a50645d419c736db45bf940978 by Kitsune Ral on 05/03/2018 at 01:24..
jobs/generated: SetAccountDataJob, SetAccountDataPerRoomJob
https://invent.kde.org/neon/forks/libquotient/-/commit/1edfe9d82ea9d9a50645d419c736db45bf940978

Git commit bc08637eaaf25fb83b685e48e86553d3edacc09a by Kitsune Ral on 05/03/2018 at 01:24..
converters.h: pass QJsonValue by reference; add support of QHash<QString, T>
https://invent.kde.org/neon/forks/libquotient/-/commit/bc08637eaaf25fb83b685e48e86553d3edacc09a

Git commit 0be3571d7c96e3df7ec523217e02d58850c7fe73 by Kitsune Ral on 05/03/2018 at 01:24..
Support saving account data on the server

Closes #152. Saving of specific event types should be added separately.
https://invent.kde.org/neon/forks/libquotient/-/commit/0be3571d7c96e3df7ec523217e02d58850c7fe73

Git commit 9057fc02b06bdd3e38e9cf39e68287e02d58596b by Kitsune Ral on 05/03/2018 at 07:14..
Use constants instead of hardcoded strings
https://invent.kde.org/neon/forks/libquotient/-/commit/9057fc02b06bdd3e38e9cf39e68287e02d58596b

Git commit 6ea1fb621488910de055bd3af4d00343a763541a by Kitsune Ral on 05/03/2018 at 07:14..
ReadMarkerEvent; TagEvent remade with less boilerplate code

tagevent.h -> accountdataevents.h now has a macro to define more
simplistic events along the lines of simplestateevents.h but inheriting
from Event instead. TagEvent and ReadMarkerEvent(m.fully_read) are
defined using this macro. ReadMarkerEvent is also wired through event.*
(but not further yet).
https://invent.kde.org/neon/forks/libquotient/-/commit/6ea1fb621488910de055bd3af4d00343a763541a

Git commit fcf335e202a49c62be29566daf233866cd2f3584 by Kitsune Ral on 05/03/2018 at 07:14..
Room::toJson(): Fix caching of tags
https://invent.kde.org/neon/forks/libquotient/-/commit/fcf335e202a49c62be29566daf233866cd2f3584

Git commit f9cd6410623b7ddebf97e248584d1a8e838b4da8 by Kitsune Ral on 05/03/2018 at 07:15..
Room: addTag() and removeTag()

Slightly changed TagRecord constructors to match.
https://invent.kde.org/neon/forks/libquotient/-/commit/f9cd6410623b7ddebf97e248584d1a8e838b4da8

Git commit 2e7627528308da7629f1293757de2fb4bb22a7ad by Kitsune Ral on 05/03/2018 at 07:15..
qmc-example: tests for redaction and tagging; send origin in test messages
https://invent.kde.org/neon/forks/libquotient/-/commit/2e7627528308da7629f1293757de2fb4bb22a7ad

Git commit 658f79dc57a2528878cf29ba3f69095b9e6d18e5 by Kitsune Ral on 05/03/2018 at 09:25..
Merge branch 'kitsune-save-room-tags'
https://invent.kde.org/neon/forks/libquotient/-/commit/658f79dc57a2528878cf29ba3f69095b9e6d18e5

Git commit 5c4238d43acfd5bbd5d3c387a4705348de490fe0 by Kitsune Ral on 05/03/2018 at 09:27..
qmc-example: Rewritten with a QObject for clearer dispatching
https://invent.kde.org/neon/forks/libquotient/-/commit/5c4238d43acfd5bbd5d3c387a4705348de490fe0

Git commit 9a3a7e39cb8e88ddfd929647325dc919d0a02a1b by Kitsune Ral on 05/03/2018 at 09:30..
Profile-log if saving state has been interrupted by processEvents for long enough
https://invent.kde.org/neon/forks/libquotient/-/commit/9a3a7e39cb8e88ddfd929647325dc919d0a02a1b

Git commit 1c5b7f8a1c6d82a612f4a2a74eeb644a40370ca5 by Kitsune Ral on 05/03/2018 at 09:36..
Travis: added one more parameter to qmc-example
https://invent.kde.org/neon/forks/libquotient/-/commit/1c5b7f8a1c6d82a612f4a2a74eeb644a40370ca5

Git commit e8b6e90feedd4aec3e255984da8952ef716c68db by Kitsune Ral on 05/03/2018 at 09:36..
First pieces of server-side read marker support
https://invent.kde.org/neon/forks/libquotient/-/commit/e8b6e90feedd4aec3e255984da8952ef716c68db

Git commit f207955e2e0a77b7a47b47513374ccc3e6a71c1e by Kitsune Ral on 05/03/2018 at 10:28..
qmc-example: Logging tweaks
https://invent.kde.org/neon/forks/libquotient/-/commit/f207955e2e0a77b7a47b47513374ccc3e6a71c1e

Git commit 63efbe26f37819048bb236d4839cc5f25c102785 by Kitsune Ral on 05/03/2018 at 12:06..
Support server-side read marker (m.full_read)

Closes #183. There's also the m.read part but it can be done sometime later, as it's pure optimisation.
https://invent.kde.org/neon/forks/libquotient/-/commit/63efbe26f37819048bb236d4839cc5f25c102785

Git commit bc10ecd90b0bda973658db419bca88923b436ff3 by Kitsune Ral on 05/03/2018 at 12:07..
Merge branch 'kitsune-fully-read-marker'
https://invent.kde.org/neon/forks/libquotient/-/commit/bc10ecd90b0bda973658db419bca88923b436ff3

Git commit bcbdf7e418de975c43a0bd4bd8ecbeabd2f4ca0d by Kitsune Ral on 06/03/2018 at 08:34..
Make sure the read marker is reinstated after Quaternion restart
https://invent.kde.org/neon/forks/libquotient/-/commit/bcbdf7e418de975c43a0bd4bd8ecbeabd2f4ca0d

Git commit 78d5fa9aa0a675b74053da76811d9fb9e02aa511 by Kitsune Ral on 06/03/2018 at 09:07..
CONTRIBUTING.md: add sections on API, doc-comments; update on automatic testing.
https://invent.kde.org/neon/forks/libquotient/-/commit/78d5fa9aa0a675b74053da76811d9fb9e02aa511

Git commit 86d8895f939d8b36dbf8e5104f238b2eaed87a94 by Kitsune Ral on 06/03/2018 at 23:57..
qmc-example: Ensure prerequisites before running the tagging test
https://invent.kde.org/neon/forks/libquotient/-/commit/86d8895f939d8b36dbf8e5104f238b2eaed87a94

Git commit 1b3e61777b89194ec81a2327683be094e7aa3c99 by Kitsune Ral on 07/03/2018 at 05:33..
qmc-example: Remove no more needed deleteLater

Might help with autotest segfaulting on OSX.
https://invent.kde.org/neon/forks/libquotient/-/commit/1b3e61777b89194ec81a2327683be094e7aa3c99

Git commit d2afe5e1342e012b45245d86c8211b3f06df0062 by Kitsune Ral on 07/03/2018 at 08:50..
qmc-example: Fix redaction test to work even if the synced message is already redacted
https://invent.kde.org/neon/forks/libquotient/-/commit/d2afe5e1342e012b45245d86c8211b3f06df0062

Git commit 5b2fb28a8ccc434a80a062b187236bb6af8c9912 by Kitsune Ral on 07/03/2018 at 09:38..
Travis: experimental Valgrind suppressions file
https://invent.kde.org/neon/forks/libquotient/-/commit/5b2fb28a8ccc434a80a062b187236bb6af8c9912

Git commit 7340ba9ac15202b065c121f43b9f7b5e1cf0b5f3 by Kitsune Ral on 07/03/2018 at 10:04..
Fix resetting the read marker if a read receipt comes from the sync

Closes #184.
https://invent.kde.org/neon/forks/libquotient/-/commit/7340ba9ac15202b065c121f43b9f7b5e1cf0b5f3

Git commit ce79719dd2f8e3ba320449409ea559fee2f836d6 by Kitsune Ral on 07/03/2018 at 10:28..
Travis: Small fixes to Valgrind suppressions
https://invent.kde.org/neon/forks/libquotient/-/commit/ce79719dd2f8e3ba320449409ea559fee2f836d6

Git commit a614db0d7103cd52c4b593fddb0ecaf019eac407 by Kitsune Ral on 07/03/2018 at 10:29..
User: use std::unique_ptr instead of QScopedPointer

Slightly safer for the case (probably).
https://invent.kde.org/neon/forks/libquotient/-/commit/a614db0d7103cd52c4b593fddb0ecaf019eac407

Git commit e7f5da903228d32de47a9c6021e4d59cda0101ef by Kitsune Ral on 07/03/2018 at 23:28..
Avatar: check URLs before fetching, not on updating the URL

Closes #187.
https://invent.kde.org/neon/forks/libquotient/-/commit/e7f5da903228d32de47a9c6021e4d59cda0101ef

Git commit 551935c24f66b7db4c6845c8a92cecc980fe3834 by Kitsune Ral on 08/03/2018 at 04:29..
User: Streamline Avatar storage

Don't use pointers and explicit operator new() for Avatars now that we store them in a separate container from the avatar(url)-to-room mapping. Less heap wasted.
https://invent.kde.org/neon/forks/libquotient/-/commit/551935c24f66b7db4c6845c8a92cecc980fe3834

Git commit 17d3333a8952e3bd2491080081d00a251157e34a by Lewis Rockliffe on 19/03/2018 at 08:49..
fix error handling in loadState()
https://invent.kde.org/neon/forks/libquotient/-/commit/17d3333a8952e3bd2491080081d00a251157e34a

Git commit 4e78035d03817c29ceac46bdf9cb045e4ba3a101 by Krombel on 20/03/2018 at 22:42..
ignore possible appendixes from content type

Currently libqmatrixclient fails checking the `Content-Type` header
when there is an appendix like "charset". That is allowed e.g. in
[rfc7231](https://tools.ietf.org/html/rfc7231#section-3.1.1.5))

One example is a Content-Type `application/json` vs `application/json;charset=UTF-8`
Setting of the charset appendis is currently not supported. It fails with
libqmatrixclient.jobs: "LoginJob" status 106 : "Incorrect content type of the response"

This PR aims to just drop that appendix as it is currently not handled somewhere else.
https://invent.kde.org/neon/forks/libquotient/-/commit/4e78035d03817c29ceac46bdf9cb045e4ba3a101

Git commit 16d176e93ca4a2e3db5ea8d6ff0155bfe47c9067 by GitHub (on behalf of Kitsune Ral) on 21/03/2018 at 05:43..
Merge pull request #190 from krombel/ignore_content_type_appendix

ignore possible appendixes from content type
https://invent.kde.org/neon/forks/libquotient/-/commit/16d176e93ca4a2e3db5ea8d6ff0155bfe47c9067

Git commit 3fc58ced0f65acae4696946a29ccda832263b4c2 by Kitsune Ral on 21/03/2018 at 11:08..
Fix Travis failing to build PRs
https://invent.kde.org/neon/forks/libquotient/-/commit/3fc58ced0f65acae4696946a29ccda832263b4c2

Git commit ef6a94c567f316363bc713294969329dd7f50268 by GitHub (on behalf of Kitsune Ral) on 21/03/2018 at 11:22..
Merge pull request #189 from r0kk3rz/master

fix error handling in loadState()
https://invent.kde.org/neon/forks/libquotient/-/commit/ef6a94c567f316363bc713294969329dd7f50268

Git commit 791d6b2a86e81cdaf610913140ca94989ca1e41d by Kitsune Ral on 23/03/2018 at 01:47..
Room::downloadFile(): Make sure a generated file name is sane

Closes #191.
https://invent.kde.org/neon/forks/libquotient/-/commit/791d6b2a86e81cdaf610913140ca94989ca1e41d

Git commit bac178f488299ec37ebe86aa91053cf1133d1c12 by Kitsune Ral on 23/03/2018 at 01:47..
BaseJob::start(): self-destruct if not succesfully started

Closes #193.
https://invent.kde.org/neon/forks/libquotient/-/commit/bac178f488299ec37ebe86aa91053cf1133d1c12

Git commit f31cf101872420a14995f2b24d21377a65adc9dd by Kitsune Ral on 23/03/2018 at 03:00..
Room::downloadFile(): don't start another job if the transfer is ongoing
https://invent.kde.org/neon/forks/libquotient/-/commit/f31cf101872420a14995f2b24d21377a65adc9dd

Git commit 403dde950b4a7398c856d495ed2d66157b175bf1 by Kitsune Ral on 23/03/2018 at 03:01..
DownloadFileJob::beforeStart(): make sure to immediately return in case of error
https://invent.kde.org/neon/forks/libquotient/-/commit/403dde950b4a7398c856d495ed2d66157b175bf1

Git commit 062840871f0d740d55cec0aadb8c18b95f7cef62 by Kitsune Ral on 23/03/2018 at 03:15..
Room::downloadFile(): make sure to store the initiated file transfer anew

QHash doesn't overwrite an entry if it already exists; this might lead to the target file name from the previous transfer kept in the table of file transfers. The commit fixes that.
https://invent.kde.org/neon/forks/libquotient/-/commit/062840871f0d740d55cec0aadb8c18b95f7cef62

Git commit a5428e53525afbc6fe6f697edb4f742d84c9ae0c by Kitsune Ral on 23/03/2018 at 08:22..
Room::downloadFile(): Events are const
https://invent.kde.org/neon/forks/libquotient/-/commit/a5428e53525afbc6fe6f697edb4f742d84c9ae0c

Git commit 08fb435749f33ee5d266bbc2ea63c7c42169be97 by Kitsune Ral on 24/03/2018 at 06:06..
converters.h: Make the default toJson() less greedy

template<T> toJson(T&&) grabbed even things that it cannot convert, leading to unpleasant effects in a situation when all that was needed was one implicit conversion (e.g. from QList<QString> to QStringList). So now it's three trivial toJson() overloads instead of a template.
https://invent.kde.org/neon/forks/libquotient/-/commit/08fb435749f33ee5d266bbc2ea63c7c42169be97

Git commit 4e31b0371cea6441dc4281aaa28a9b693a751454 by Kitsune Ral on 24/03/2018 at 06:06..
MemberEventContent/RoomMemberEvent: parse and expose is_direct
https://invent.kde.org/neon/forks/libquotient/-/commit/4e31b0371cea6441dc4281aaa28a9b693a751454

Git commit 962f7f4beb192810afe82bfd4b68613a96a69063 by Kitsune Ral on 24/03/2018 at 06:06..
Introduce DirectChatEvent (parse only, no processing yet)
https://invent.kde.org/neon/forks/libquotient/-/commit/962f7f4beb192810afe82bfd4b68613a96a69063

Git commit f7ee38b6c1d6c809feddd91647d83e6c6fdd3837 by Kitsune Ral on 24/03/2018 at 06:12..
Dealing with direct chats

Receiving and caching m.direct (and other non-room account data along the way); Connection::addToDirectChats/removeFromDirectChats (might get siblings in Room eventually but not now), Connection/User::requestDirectChat. Closes #163.
https://invent.kde.org/neon/forks/libquotient/-/commit/f7ee38b6c1d6c809feddd91647d83e6c6fdd3837

Git commit de75f8f525c6dfe599580018d4a5dbb885dfa456 by Kitsune Ral on 24/03/2018 at 06:12..
Test/example for direct chats marking

Also: refactored to gather up code dealing with the semaphor.
https://invent.kde.org/neon/forks/libquotient/-/commit/de75f8f525c6dfe599580018d4a5dbb885dfa456

Git commit 47cb949973a05cea6fb3a13ffd19b6e07e7720ae by Kitsune Ral on 24/03/2018 at 07:25..
Work around a bug in MSVC leading to "ambiguous call" compilation error
https://invent.kde.org/neon/forks/libquotient/-/commit/47cb949973a05cea6fb3a13ffd19b6e07e7720ae

Git commit 6b960db9b33efe6f6a014aed08b9177a2ba201f8 by Kitsune Ral on 24/03/2018 at 07:29..
Merge branch 'kitsune-direct-chats'
https://invent.kde.org/neon/forks/libquotient/-/commit/6b960db9b33efe6f6a014aed08b9177a2ba201f8

Git commit 7a2e843dde6b78aabab05811d3f481176537098e by Kitsune Ral on 24/03/2018 at 08:15..
.travis.yml: Escape all env variables in the configuration with '

Not only those that already caused trouble.
https://invent.kde.org/neon/forks/libquotient/-/commit/7a2e843dde6b78aabab05811d3f481176537098e

Git commit e7e9330d665c1d8d2391707d27019a7f454cbcdf by Kitsune Ral on 26/03/2018 at 02:43..
Introduce JoinStates (QFlags<JoinState>)

This required to change numeric values for JoinState enum; so anybody
who relied on them being 0-based and/or contiguous, beware.
https://invent.kde.org/neon/forks/libquotient/-/commit/e7e9330d665c1d8d2391707d27019a7f454cbcdf

Git commit e9cdf6c887b80210dcb6d754c1db82d3fad2ec06 by Kitsune Ral on 26/03/2018 at 02:45..
Connection::room() and Connection::invitation()
https://invent.kde.org/neon/forks/libquotient/-/commit/e9cdf6c887b80210dcb6d754c1db82d3fad2ec06

Git commit 2aa9d96134567576d15e4807071990883f3ef6d3 by Kitsune Ral on 26/03/2018 at 04:36..
One more Valgrind suppression for cases when the test run into "Too many requests"
https://invent.kde.org/neon/forks/libquotient/-/commit/2aa9d96134567576d15e4807071990883f3ef6d3

Git commit b385baadc8e73ff3c499a0111e2a553d35dd29b6 by Kitsune Ral on 26/03/2018 at 04:37..
Direct chat (un)marking: update internal structure synchronously

The asynchronous update first implemented was more verbose and caused
more problems than provided solutions. The idea was that the internal
directChats map would better reflect the server state if updated
asynchronously. However, it also causes a local race condition; e.g., to
quickly remove rooms from direct chats one after another becomes very
non-trivial (one has to wait until the previous operation succeeds). So
after some playing with the code, hitting pitfalls along the way, I
decided to align the logic with the one for room tags; synchronously
issued signals look uglyish but at least work predictably. And race
conditions between several clients generally cannot be cleanly resolved
anyway.
https://invent.kde.org/neon/forks/libquotient/-/commit/b385baadc8e73ff3c499a0111e2a553d35dd29b6

Git commit 381ab25563cce26be8e3983b3fb3b8090385a766 by Kitsune Ral on 26/03/2018 at 04:38..
Connection::doInDirectChat() and refactored direct chat requesting logic

Basically, the whole requestDirectChat() body has been moved and generalised to doInDirectChat(), and requestDirectChat() delegates to doInDirectChat(). The logic has been updated to cope with formerly left/forgotten rooms present in the list of direct chats (cleaning up the list along the way).
https://invent.kde.org/neon/forks/libquotient/-/commit/381ab25563cce26be8e3983b3fb3b8090385a766

Git commit a73bb17418a6dfea556a837c48463e454c8db130 by Kitsune Ral on 26/03/2018 at 05:06..
Minor cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/a73bb17418a6dfea556a837c48463e454c8db130

Git commit aacc01fbddc32ceee36a0baedad219ad5d07f955 by Kitsune Ral on 26/03/2018 at 05:07..
Merge branch 'kitsune-more-on-direct-chats'
https://invent.kde.org/neon/forks/libquotient/-/commit/aacc01fbddc32ceee36a0baedad219ad5d07f955

Git commit de05579f18a5c264fe0dbea68ea83abcff526d00 by Kitsune Ral on 26/03/2018 at 12:03..
Connection::directChatUsers()
https://invent.kde.org/neon/forks/libquotient/-/commit/de05579f18a5c264fe0dbea68ea83abcff526d00

Git commit 93dc89d9353e9f30d42528d8ffaba992f58139aa by Kitsune Ral on 26/03/2018 at 12:05..
Room: isDirectChat() and directChatUsers()

isDirectChat() has been declared previously but not implemented, hence a
bit of strangeness in the commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/93dc89d9353e9f30d42528d8ffaba992f58139aa

Git commit 39a8c43d96896aa1401a791b246de53794e06f65 by Kitsune Ral on 26/03/2018 at 12:06..
Count unread messages
https://invent.kde.org/neon/forks/libquotient/-/commit/39a8c43d96896aa1401a791b246de53794e06f65

Git commit 85d0ea867ee9b607595962dc93d4f09ac0ae1f9a by Kitsune Ral on 26/03/2018 at 12:29..
Fix compilation on some environments

...where deque<>::difference_type is long rather than int.
https://invent.kde.org/neon/forks/libquotient/-/commit/85d0ea867ee9b607595962dc93d4f09ac0ae1f9a

Git commit d38020752c4a03fdc5b74f9704b28b302ec5ebf8 by Kitsune Ral on 26/03/2018 at 14:13..
Room::updateUnreadCount(): Fix a too stringent assertion
https://invent.kde.org/neon/forks/libquotient/-/commit/d38020752c4a03fdc5b74f9704b28b302ec5ebf8

Git commit f213e02daa6b9e83e8e76d1576e446357c6c3bc7 by Kitsune Ral on 27/03/2018 at 11:34..
Rework unread messages counting logic

The previous one didn't cover all the cases; the current one seems to do. Closes #192. Accompanied by the developer's notes at: https://github.com/QMatrixClient/libqmatrixclient/wiki/unread_count
https://invent.kde.org/neon/forks/libquotient/-/commit/f213e02daa6b9e83e8e76d1576e446357c6c3bc7

Git commit 0f85d696c595fddb47ffa4eaec305d93e2ac8ab0 by Kitsune Ral on 28/03/2018 at 01:11..
Merge branch 'kitsune-unread-messages-count'
https://invent.kde.org/neon/forks/libquotient/-/commit/0f85d696c595fddb47ffa4eaec305d93e2ac8ab0

Git commit 503957c86a84f1be190719a17984df1bb1267658 by Kitsune Ral on 28/03/2018 at 02:29..
BaseJob: small refactoring and cleanup in logging code
https://invent.kde.org/neon/forks/libquotient/-/commit/503957c86a84f1be190719a17984df1bb1267658

Git commit d602de60433da80fc66a7152881d3dfe934eca62 by Kitsune Ral on 28/03/2018 at 02:33..
BaseJob: Process error 429 (Too Many Requests)

The job will retry after the period either advised by the server or the default retry period. Closes #186.
https://invent.kde.org/neon/forks/libquotient/-/commit/d602de60433da80fc66a7152881d3dfe934eca62

Git commit b2d22d7ce9d7235cf9ab61268e48102ff06cb727 by Kitsune Ral on 28/03/2018 at 03:26..
BaseJob: more improvements in logging and errors detection
https://invent.kde.org/neon/forks/libquotient/-/commit/b2d22d7ce9d7235cf9ab61268e48102ff06cb727

Git commit 244fa53c10ee8697ff30e4135f6ac4cb4abb4506 by Kitsune Ral on 28/03/2018 at 04:19..
BaseJob: Dump error body (if there's any) to logs; detect error 429 more reliably
https://invent.kde.org/neon/forks/libquotient/-/commit/244fa53c10ee8697ff30e4135f6ac4cb4abb4506

Git commit e7868adbf5b275f66529fb2dae323ed8aeb69e05 by Kitsune Ral on 28/03/2018 at 23:53..
Room: Track encryption state and do not allow sending (unencrypted) messages to it

Closes #138. This is of course not encryption support yet, rather a safeguard for rooms that use encryption.
https://invent.kde.org/neon/forks/libquotient/-/commit/e7868adbf5b275f66529fb2dae323ed8aeb69e05

Git commit 29093379b707bfe620234c2968b37aa86666542a by Kitsune Ral on 30/03/2018 at 05:15..
Introduce install target for the library

Closes #113.
https://invent.kde.org/neon/forks/libquotient/-/commit/29093379b707bfe620234c2968b37aa86666542a

Git commit 44764f015f25db307811f2969c117b37133fc676 by Kitsune Ral on 31/03/2018 at 04:20..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/44764f015f25db307811f2969c117b37133fc676

Git commit efeb50a46ad824aa258472f6ac8da74810f05a55 by Kitsune Ral on 31/03/2018 at 05:23..
Move source files to a separate folder

It's been long overdue to separate them from the rest of the stuff (docs etc.). Also, this allows installing to a directory within the checked out git tree (say, ./install/, similar to ./build/).
https://invent.kde.org/neon/forks/libquotient/-/commit/efeb50a46ad824aa258472f6ac8da74810f05a55

Git commit 9222abb1ae7e40cdf1d1eb62f6d38d2168f1c133 by Kitsune Ral on 31/03/2018 at 05:55..
Install CMake files to the proper place
https://invent.kde.org/neon/forks/libquotient/-/commit/9222abb1ae7e40cdf1d1eb62f6d38d2168f1c133

Git commit 9d8900197e69e9c0ffaaff6f63a40cb80cf08fb1 by Kitsune Ral on 31/03/2018 at 06:41..
BaseJob::gotReply(): Minor fix in logging
https://invent.kde.org/neon/forks/libquotient/-/commit/9d8900197e69e9c0ffaaff6f63a40cb80cf08fb1

Git commit 6a61d3a127db1e253821bfb2ebb7f433bd534c4a by Kitsune Ral on 31/03/2018 at 10:54..
Make and install CMake config package; provide examples/CMakeLists.txt using it
https://invent.kde.org/neon/forks/libquotient/-/commit/6a61d3a127db1e253821bfb2ebb7f433bd534c4a

Git commit a62bc225b8b4c714e7943aad69d84704a03b8015 by Kitsune Ral on 31/03/2018 at 11:29..
Merge branch 'kitsune-install-target'

Closes #113.
https://invent.kde.org/neon/forks/libquotient/-/commit/a62bc225b8b4c714e7943aad69d84704a03b8015

Git commit 62dc885e46838368f5bba3f3e2fd0985dda36af1 by Kitsune Ral on 01/04/2018 at 05:01..
BaseJob: use QDebugStateSaver

...instead of copying the whole QDebug object.
https://invent.kde.org/neon/forks/libquotient/-/commit/62dc885e46838368f5bba3f3e2fd0985dda36af1

Git commit 9b856f28f2745a6d1f0425b8e7ac9c91119f3f36 by Kitsune Ral on 01/04/2018 at 05:19..
Pass actual changes with Connection::directChatsListChanged()

Also: provide Connection::directChats() to get the whole direct chats map.
https://invent.kde.org/neon/forks/libquotient/-/commit/9b856f28f2745a6d1f0425b8e7ac9c91119f3f36

Git commit e003ffd274127a9f734f18c736d28be936a0dc89 by Kitsune Ral on 02/04/2018 at 05:08..
Room/Connection: accountData()/accountDataChanged()

Generic account data are at least readable now (you can get, say,
pushers from the library without it even being aware of what a pusher
is).
https://invent.kde.org/neon/forks/libquotient/-/commit/e003ffd274127a9f734f18c736d28be936a0dc89

Git commit d7725b45bfd33163840536f975853837aa8e4763 by Kitsune Ral on 02/04/2018 at 05:13..
lookup()/dispatch() removed; unique_ptr_cast() and qAsConst() introduced

qAsConst() is a copy-paste from Qt code and is only supplied by QMatrixClient if Qt is below 5.7. unique_ptr_cast<> is similar to static_cast<> of pointers but deals with unique_ptr's, passing ownership to the newly made pointer.
https://invent.kde.org/neon/forks/libquotient/-/commit/d7725b45bfd33163840536f975853837aa8e4763

Git commit c36f899c4485ebf602fcaf225f41c64fbea773c3 by Kitsune Ral on 02/04/2018 at 05:15..
Be more cautious with rvalues

Clang on FreeBSD doesn't seem to be playing nice in Release
configuration. See the comment in the committed code.
https://invent.kde.org/neon/forks/libquotient/-/commit/c36f899c4485ebf602fcaf225f41c64fbea773c3

Git commit 7ef14023ab337972530bb3f4ad35f8daa326233b by Kitsune Ral on 02/04/2018 at 05:40..
Fixes according to results of static analysis

Many thanks to clang-tidy and clazy authors for the tools, and to Qt Creator developers for making them easily available in the IDE.
https://invent.kde.org/neon/forks/libquotient/-/commit/7ef14023ab337972530bb3f4ad35f8daa326233b

Git commit a584bfaaa663347270782bccf9309ff016eea530 by Kitsune Ral on 02/04/2018 at 06:21..
BaseJob: set the status upon headers arrival

So that DownloadFileJob could figure if it should save the incoming payload to the file or it's the JSON details about the error.
https://invent.kde.org/neon/forks/libquotient/-/commit/a584bfaaa663347270782bccf9309ff016eea530

Git commit 1555dfd596dcdf7e774dd3582802a6f15e6e6cbb by Kitsune Ral on 02/04/2018 at 06:22..
Updated documentation

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/1555dfd596dcdf7e774dd3582802a6f15e6e6cbb

Git commit eef87062763a22ff14f829808435d9acc0a411e4 by Kitsune Ral on 03/04/2018 at 09:02..
CMakeLists.txt: Specify the API version correctly

It's not version 2, it's still version 0.2.
https://invent.kde.org/neon/forks/libquotient/-/commit/eef87062763a22ff14f829808435d9acc0a411e4

Git commit d9f09be82b716c5261a36feb6006c4978d989d9e by Kitsune Ral on 03/04/2018 at 09:03..
More fixes from static analysis
https://invent.kde.org/neon/forks/libquotient/-/commit/d9f09be82b716c5261a36feb6006c4978d989d9e

Git commit d76b2fbe30a503009d33c4df06848d7356fc39a6 by Kitsune Ral on 03/04/2018 at 09:32..
DirectChatEvent: be careful with range-for over temporaries

...because temporaries returned by temporaries tend to disappear before you enter the loop body (see the bottom of http://en.cppreference.com/w/cpp/language/range-for#Explanation).
https://invent.kde.org/neon/forks/libquotient/-/commit/d76b2fbe30a503009d33c4df06848d7356fc39a6

Git commit b8244eadff1dbe151fe15998cf60cb9b82e684e6 by Kitsune Ral on 05/04/2018 at 10:25..
Unofficially relax Qt requirement to 5.5.1

This is to support uMatriks that still has to compile on xenial codebase.
https://invent.kde.org/neon/forks/libquotient/-/commit/b8244eadff1dbe151fe15998cf60cb9b82e684e6

Git commit cf5b5e74b20de2a0579de6a176d76f96bbe87603 by Kitsune Ral on 05/04/2018 at 11:41..
qmc-example: fix false negatives due to a missing return
https://invent.kde.org/neon/forks/libquotient/-/commit/cf5b5e74b20de2a0579de6a176d76f96bbe87603

Git commit 7ca442a432994a19a86d43c917a1f537bcebb387 by Kitsune Ral on 11/04/2018 at 09:51..
Comment out install(EXPORT_ANDROID_MK)

It's only available in CMake 3.7 and later and is not needed for any known project anyway.
https://invent.kde.org/neon/forks/libquotient/-/commit/7ca442a432994a19a86d43c917a1f537bcebb387

Git commit b68186efc5fcedad6980686c8a07bab3b47a874d by Kitsune Ral on 13/04/2018 at 05:44..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/b68186efc5fcedad6980686c8a07bab3b47a874d

Git commit bf1dc1484ad5aefd5b86f7f79f23f5d6fc9b940a by Kitsune Ral on 13/04/2018 at 11:33..
converters.h: Support QVariantMap and QVariantHash
https://invent.kde.org/neon/forks/libquotient/-/commit/bf1dc1484ad5aefd5b86f7f79f23f5d6fc9b940a

Git commit 139a6743a4e7a3b2e380d4f3e8f43558bc3164fa by Kitsune Ral on 13/04/2018 at 11:33..
Support Qt 5.4

That is until ubports move to xenial.
https://invent.kde.org/neon/forks/libquotient/-/commit/139a6743a4e7a3b2e380d4f3e8f43558bc3164fa

Git commit 341bea5fc7df0143fa118072d2dbb8158cc6eb23 by Kitsune Ral on 14/04/2018 at 05:01..
CMakeLists.txt: minor refactoring
https://invent.kde.org/neon/forks/libquotient/-/commit/341bea5fc7df0143fa118072d2dbb8158cc6eb23

Git commit 07d2b179bb08c4b941eca3f20b9ef31740ad95bd by Kitsune Ral on 14/04/2018 at 05:08..
Mustache: {{#producesNonJson?}} -> {{#producesNotJson?}}

According to the most recent changes in GTAD.
https://invent.kde.org/neon/forks/libquotient/-/commit/07d2b179bb08c4b941eca3f20b9ef31740ad95bd

Git commit e5cb9b6380040e40de1b3766ac90296d3828375a by Kitsune Ral on 14/04/2018 at 05:10..
Mustache templates: Overload toJson() instead of operator QJsonObject()/QJsonValue()

It slightly reduces the header interface and shortcuts the actual call chain (not that it had any performance implications, just easier reasoning).
https://invent.kde.org/neon/forks/libquotient/-/commit/e5cb9b6380040e40de1b3766ac90296d3828375a

Git commit 4ced9792f27ed3d891c1f7772ae30d9fe452dd79 by Kitsune Ral on 14/04/2018 at 05:12..
jobs/generated: Overload toJson() instead of operator QJsonObject()/QJsonValue()

It slightly reduces the header interface and shortcuts the actual call chain (not that it had any performance implications, just easier reasoning).
https://invent.kde.org/neon/forks/libquotient/-/commit/4ced9792f27ed3d891c1f7772ae30d9fe452dd79

Git commit 03bcadc3e85e68cd870bc3395b1e65794214175a by Kitsune Ral on 16/04/2018 at 04:40..
ConnectionsGuard<> template to automatically disconnect subscribers

Case in point is a room list model (so far in Quaternion, but planned for inclusion to the lib) that stores lists of connections and rooms; upon dropping, e.g., a room from the list the model should disconnect from the room's signals.
https://invent.kde.org/neon/forks/libquotient/-/commit/03bcadc3e85e68cd870bc3395b1e65794214175a

Git commit 3319a57871efe46d607b00b2e5ae5ea563acc98d by Kitsune Ral on 22/04/2018 at 07:38..
Code reformatting
https://invent.kde.org/neon/forks/libquotient/-/commit/3319a57871efe46d607b00b2e5ae5ea563acc98d

Git commit 698d41f191b9a7dd2c5c1662c5f5bd6b7c2697f6 by Kitsune Ral on 22/04/2018 at 09:36..
Avatar: clear the list of callbacks after completion + general code cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/698d41f191b9a7dd2c5c1662c5f5bd6b7c2697f6

Git commit 5f6ac71684056aaae13335a6b867d43c8cdb1692 by Kitsune Ral on 24/04/2018 at 22:50..
Avatar: don't allow null callbacks to be registered
https://invent.kde.org/neon/forks/libquotient/-/commit/5f6ac71684056aaae13335a6b867d43c8cdb1692

Git commit aa49fbcf8b20b7f9e184be41cbe3d0c13a115e6b by Kitsune Ral on 25/04/2018 at 06:58..
BaseJob: rewrite error detection using genuine HTTP codes

Qt Network error codes don't represent well some cases. Closes #200.
https://invent.kde.org/neon/forks/libquotient/-/commit/aa49fbcf8b20b7f9e184be41cbe3d0c13a115e6b

Git commit 12dc0570e2467619ef8c8b22fd2fb4a7419c92e4 by Kitsune Ral on 25/04/2018 at 07:07..
BaseJob::doCheckReply: catch non-HTTP errors too
https://invent.kde.org/neon/forks/libquotient/-/commit/12dc0570e2467619ef8c8b22fd2fb4a7419c92e4

Git commit 9be5c32d812a55ca55e1cf80d8e29fe593c85a62 by Kitsune Ral on 27/04/2018 at 04:26..
User::processEvent: fix bridge postfix not being stripped

Closes #197.
https://invent.kde.org/neon/forks/libquotient/-/commit/9be5c32d812a55ca55e1cf80d8e29fe593c85a62

Git commit e74e48507f68e36c289c5dbe4b75f32a6910f3c1 by Kitsune Ral on 27/04/2018 at 04:28..
User::rawName(); bonus, bring order to doc comments

This new function allows to get the username along with its bridge
(basically, undoing the change applied by processEvent for cases when it
is undesirable).
https://invent.kde.org/neon/forks/libquotient/-/commit/e74e48507f68e36c289c5dbe4b75f32a6910f3c1

Git commit 3a763fd470b8aeffa3d412e6f605231492fb5b0c by Kitsune Ral on 27/04/2018 at 04:34..
Fix broken User::displayName() logic

Also, add an assert to Connection::user() to make sure it doesn't create users with invalid ids. Closes #201.
https://invent.kde.org/neon/forks/libquotient/-/commit/3a763fd470b8aeffa3d412e6f605231492fb5b0c

Git commit f95a915f2e496631a04e0a4d8d75788e7295aae3 by Kitsune Ral on 27/04/2018 at 04:39..
Cache bridge names along with user names

Otherwise the bridge is forgotten after restart. This bumps the cache
version.
https://invent.kde.org/neon/forks/libquotient/-/commit/f95a915f2e496631a04e0a4d8d75788e7295aae3

Git commit f5af25428212f139c59941bb294a184242c8b5e0 by Kitsune Ral on 27/04/2018 at 04:40..
Use bridge names as the first line of disambiguation

If can get away without showing MXIDs we should do it.
https://invent.kde.org/neon/forks/libquotient/-/commit/f5af25428212f139c59941bb294a184242c8b5e0

Git commit b5d962b0f5dcd3497db8a4b3bada46bb666d08e1 by Kitsune Ral on 29/04/2018 at 09:29..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/b5d962b0f5dcd3497db8a4b3bada46bb666d08e1

Git commit 7c9037bdf4c2f6fee5d800d87e7f9dd9b4070990 by Kitsune Ral on 30/04/2018 at 13:14..
ConnectionsGuard: suppress the copying assignment operator

It accidentally leaked through using QPointer::operator=
https://invent.kde.org/neon/forks/libquotient/-/commit/7c9037bdf4c2f6fee5d800d87e7f9dd9b4070990

Git commit 228d379967ca0627564e1db5669029792f72bf06 by Kitsune Ral on 30/04/2018 at 13:15..
Mustache templates: cleanup C++
https://invent.kde.org/neon/forks/libquotient/-/commit/228d379967ca0627564e1db5669029792f72bf06

Git commit cbb7c2d7eff7ac8724d766ade2c3e659d15d97e2 by Kitsune Ral on 30/04/2018 at 13:17..
jobs/generated: cleanup C++
https://invent.kde.org/neon/forks/libquotient/-/commit/cbb7c2d7eff7ac8724d766ade2c3e659d15d97e2

Git commit dbb70c537f017e94bd7e97c05357e89f38f6e69c by Kitsune Ral on 30/04/2018 at 13:18..
gtad.yaml: Migrate to GTAD 0.5 config format
https://invent.kde.org/neon/forks/libquotient/-/commit/dbb70c537f017e94bd7e97c05357e89f38f6e69c

Git commit d6c9f76d4c2b27869b8590665a9001ff77477421 by Kitsune Ral on 30/04/2018 at 13:19..
Build systems: add jobs/generated/definitions to the mix
https://invent.kde.org/neon/forks/libquotient/-/commit/d6c9f76d4c2b27869b8590665a9001ff77477421

Git commit ecf7b64d3ca30ff607ca399f24800a50594b7ebf by Kitsune Ral on 30/04/2018 at 13:19..
ConnectionsGuard: suppress the copying assignment operator

It accidentally leaked through using QPointer::operator=
https://invent.kde.org/neon/forks/libquotient/-/commit/ecf7b64d3ca30ff607ca399f24800a50594b7ebf

Git commit ae5835b959455d3f4eb86b3a1f3d98f3713bdfbe by Kitsune Ral on 30/04/2018 at 13:27..
jobs/generated: cleanup C++
https://invent.kde.org/neon/forks/libquotient/-/commit/ae5835b959455d3f4eb86b3a1f3d98f3713bdfbe

Git commit fe4afda065fc9a1db64fd8032bad4e10bff3d020 by Kitsune Ral on 30/04/2018 at 13:33..
jobs/generated: GetNotificationsJob
https://invent.kde.org/neon/forks/libquotient/-/commit/fe4afda065fc9a1db64fd8032bad4e10bff3d020

Git commit 6a73f99fc71df74b1c60e6e202cd4d6787d0cb07 by Kitsune Ral on 30/04/2018 at 13:45..
ConnectionsGuard: one more fix about defaults
https://invent.kde.org/neon/forks/libquotient/-/commit/6a73f99fc71df74b1c60e6e202cd4d6787d0cb07

Git commit f79544e0fad0b531d49dba9be001995805f18974 by Kitsune Ral on 30/04/2018 at 22:42..
jobs/generated: GetNotificationsJob
https://invent.kde.org/neon/forks/libquotient/-/commit/f79544e0fad0b531d49dba9be001995805f18974

Git commit 8d7ff5d3741ff525d337871185ee9f7f2e885af5 by Kitsune Ral on 30/04/2018 at 22:42..
ConnectionsGuard: one more fix about defaults
https://invent.kde.org/neon/forks/libquotient/-/commit/8d7ff5d3741ff525d337871185ee9f7f2e885af5

Git commit df268cad0ad517a75c813606bf3ef11bdba6f4e6 by Kitsune Ral on 01/05/2018 at 04:41..
Mustache: more C++ tidying and empty lines removal
https://invent.kde.org/neon/forks/libquotient/-/commit/df268cad0ad517a75c813606bf3ef11bdba6f4e6

Git commit 203a6b61480f726fae341d119f09f9dc83b8829a by Kitsune Ral on 01/05/2018 at 11:46..
Integrate converters with EventPtr partially

So that events can be created from JSON in the same way as all other
types.
https://invent.kde.org/neon/forks/libquotient/-/commit/203a6b61480f726fae341d119f09f9dc83b8829a

Git commit fb979167127ffaaacec7361ecb45791bf542305f by Kitsune Ral on 01/05/2018 at 11:46..
Event: cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/fb979167127ffaaacec7361ecb45791bf542305f

Git commit 0cc26526b243fd10d84ccda87852defd29631b39 by Kitsune Ral on 01/05/2018 at 11:46..
RedactionEvent: make the constructor explicit
https://invent.kde.org/neon/forks/libquotient/-/commit/0cc26526b243fd10d84ccda87852defd29631b39

Git commit 13f891185de9a678d37fe377c1426805c2e974ac by Kitsune Ral on 01/05/2018 at 11:46..
User::processEvent: add const
https://invent.kde.org/neon/forks/libquotient/-/commit/13f891185de9a678d37fe377c1426805c2e974ac

Git commit 68957eace7f840fffe7442f1d50d3793422bc152 by Kitsune Ral on 01/05/2018 at 11:46..
converters.h: Support std::vector<>
https://invent.kde.org/neon/forks/libquotient/-/commit/68957eace7f840fffe7442f1d50d3793422bc152

Git commit 5c61bb08e3fe87591884e0440a85d64482500199 by Kitsune Ral on 01/05/2018 at 11:47..
Room: endorse std::move

That is, add "using std::move" and strip std:: from actual usages.
https://invent.kde.org/neon/forks/libquotient/-/commit/5c61bb08e3fe87591884e0440a85d64482500199

Git commit b657cd22aa64f24f2e0f9f31ef8a5d4e38a26a3a by Kitsune Ral on 01/05/2018 at 11:47..
Event and Room: further abstract event pointers

So that eventual switch from std::unique_ptr to some other pointer (as a
case - QSharedPointer) would be as painless as possible.
https://invent.kde.org/neon/forks/libquotient/-/commit/b657cd22aa64f24f2e0f9f31ef8a5d4e38a26a3a

Git commit 21c62057bebd676a1950aa405a5f1a2c316c22ac by Kitsune Ral on 01/05/2018 at 11:54..
jobs/generated: use std::move in baseURL; type updates from the API files

The type updates are a matter of pending PR to matrix-doc yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/21c62057bebd676a1950aa405a5f1a2c316c22ac

Git commit 2a341e30ef2db74b331a8870ceb2f182af68f194 by Kitsune Ral on 01/05/2018 at 11:54..
GetNotificationsJob: don't alias EventPtr with Event

It's useless and misleading.
https://invent.kde.org/neon/forks/libquotient/-/commit/2a341e30ef2db74b331a8870ceb2f182af68f194

Git commit ea363441269c9100c4bcc8076d4b3d125333a649 by Kitsune Ral on 01/05/2018 at 11:59..
gtad.yaml: Use EventPtr for Notifications.Event; add variant type to the map

Variants are not yet supported but just in case, let's have the line, it's very obvious.
https://invent.kde.org/neon/forks/libquotient/-/commit/ea363441269c9100c4bcc8076d4b3d125333a649

Git commit 38934c2310b426be640988dc10f48de88a3d92bc by Kitsune Ral on 01/05/2018 at 11:59..
jobs/generated: use std::move in baseURL; type updates from the API files

The type updates are a matter of pending PR to matrix-doc yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/38934c2310b426be640988dc10f48de88a3d92bc

Git commit 1e42eca5c3d864750609eacd4996794c901c6c37 by Kitsune Ral on 01/05/2018 at 12:01..
Merge branch 'master' into kitsune-gtad
https://invent.kde.org/neon/forks/libquotient/-/commit/1e42eca5c3d864750609eacd4996794c901c6c37

Git commit da16225dfbec9b155c2c299757203f7676ac6ccf by Kitsune Ral on 01/05/2018 at 12:08..
Fix building on OSX
https://invent.kde.org/neon/forks/libquotient/-/commit/da16225dfbec9b155c2c299757203f7676ac6ccf

Git commit 37700bbf2df8b96c82a193c25764d9020b1140e9 by Kitsune Ral on 03/05/2018 at 12:22..
GTAD: Use QMatrixClient::Event-derived classes in generated jobs + Mustache cleanup

This should make generated jobs buildable across the whole CS API (sync.yaml is disabled as the manual implementation is still considerably better).
https://invent.kde.org/neon/forks/libquotient/-/commit/37700bbf2df8b96c82a193c25764d9020b1140e9

Git commit 853fda2e7942ffb3bc8051e6411faa23cff6f3c2 by Kitsune Ral on 03/05/2018 at 12:22..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/853fda2e7942ffb3bc8051e6411faa23cff6f3c2

Git commit d304c1b9ac7a86096899b459eba8e36ed310b6ce by Kitsune Ral on 03/05/2018 at 12:23..
Room::Private::processRedaction: minor refactoring
https://invent.kde.org/neon/forks/libquotient/-/commit/d304c1b9ac7a86096899b459eba8e36ed310b6ce

Git commit 564d518c086f2aeab0f0466b7cd1915e20edc7da by Kitsune Ral on 03/05/2018 at 13:47..
GetRoomEventsJob (replaces RoomMessagesJob) + refactoring

1. Updates in this commit (see further) allow to generate and build
GetRoomEventsJob from message_pagination.yaml; this job completely
preempts RoomMessagesJob.
2. EventsBatch<> is no more a thing; there's EventsArray<> to replace it
but it's loaded from a JSON array rather than an event batch (a JSON
array inside another JSON object). SyncJob that used it extensively has
been moved to "conventional" containers (Events, RoomEvents and the
newly introduced StateEvents). RoomMessagesJob that also used
EventsBatch<> is decommissioned (see above).
3. RoomEventsRange is now an alias for Range<RoomEvents>, defined in
util.h (otherwise almost the same).
4. Connection::getMessages() is no more. Use Room::getPreviousContent()
and Connection::callApi<GetRooMEventsJob>() instead.
5. Moving things around in Room, since SyncJob now supplies state events
in more specific StateEvents, rather than RoomEvents.
https://invent.kde.org/neon/forks/libquotient/-/commit/564d518c086f2aeab0f0466b7cd1915e20edc7da

Git commit f3927ca0c16a61fcb0933333ecff8095917a5b47 by Kitsune Ral on 03/05/2018 at 13:47..
jobs/generated: Drop unused code
https://invent.kde.org/neon/forks/libquotient/-/commit/f3927ca0c16a61fcb0933333ecff8095917a5b47

Git commit a5b6d786878ab5c67a7b436ba475e8ac4d22f1f0 by Kitsune Ral on 03/05/2018 at 13:48..
Preempt jobs/joinroomjob.* with jobs/generated/joining.*

Enables responding to third-party invites.
https://invent.kde.org/neon/forks/libquotient/-/commit/a5b6d786878ab5c67a7b436ba475e8ac4d22f1f0

Git commit 90868cac42ab8ad69cb3f3a29949e0815cc5a7ce by Kitsune Ral on 03/05/2018 at 14:15..
gtad.yaml: Update regexes to match string parts

According to KitsuneRal/gtad#31.
https://invent.kde.org/neon/forks/libquotient/-/commit/90868cac42ab8ad69cb3f3a29949e0815cc5a7ce

Git commit 844eddfffb8e1ee5d213371299dee0d15614bef8 by Kitsune Ral on 03/05/2018 at 14:20..
.travis.yml: Use newer Qt

Because GTAD needs it.
https://invent.kde.org/neon/forks/libquotient/-/commit/844eddfffb8e1ee5d213371299dee0d15614bef8

Git commit 28a0d70164e2596d306521cd18d25c0e8c0b5336 by Kitsune Ral on 04/05/2018 at 04:11..
EvT::TypeId: Use a member function instead of a variable

The latter one causes linkage errors when used from a template method (but not from a template class, puzzlingly).
https://invent.kde.org/neon/forks/libquotient/-/commit/28a0d70164e2596d306521cd18d25c0e8c0b5336

Git commit 4cbe1a5fe9b0ae17e89425c3127db2af9b328320 by Kitsune Ral on 04/05/2018 at 04:27..
Preempt job/setroomstatejob.* with jobs/generated/room_state.*

The template part (not exposed in the auto-generated class) goes to Room::Private::requestSetState(). Also, Room::setMemberState() to interface with User class.
https://invent.kde.org/neon/forks/libquotient/-/commit/4cbe1a5fe9b0ae17e89425c3127db2af9b328320

Git commit d03cf06707ef99ae02442d95a489eaf29f8bb900 by Kitsune Ral on 04/05/2018 at 04:27..
Ignore non-shadow qmake builds
https://invent.kde.org/neon/forks/libquotient/-/commit/d03cf06707ef99ae02442d95a489eaf29f8bb900

Git commit 4289e72fdbe14b92d14fc18b9aa23cd0e2ae7eba by Kitsune Ral on 04/05/2018 at 09:05..
gtad.yaml: Support OpenAPI value maps (aka additionalProperties)

This is useful for things like tags map in m.tags event, or the map-of-maps-of-messages in SendToDeviceJob (coming in the next commit). Requires GTAD 0.4.9 or later.
https://invent.kde.org/neon/forks/libquotient/-/commit/4289e72fdbe14b92d14fc18b9aa23cd0e2ae7eba

Git commit b71f291d1979355c5efd7f53988d1d1acf294b09 by Kitsune Ral on 04/05/2018 at 09:07..
SendToDeviceJob: use a map-of-maps for messages instead of an opaque QJsonObject
https://invent.kde.org/neon/forks/libquotient/-/commit/b71f291d1979355c5efd7f53988d1d1acf294b09

Git commit 54c45b52cec717baf0448b4928e606f518a5f8fe by Kitsune Ral on 04/05/2018 at 11:24..
converters.h: support std::unordered_map<QString, T>
https://invent.kde.org/neon/forks/libquotient/-/commit/54c45b52cec717baf0448b4928e606f518a5f8fe

Git commit 33b1c4f9748f0d33da1d18a3abe861014c116b5c by Kitsune Ral on 04/05/2018 at 11:24..
{{base}}.h.mustache: better code ordering, more comments
https://invent.kde.org/neon/forks/libquotient/-/commit/33b1c4f9748f0d33da1d18a3abe861014c116b5c

Git commit c5b3de1732ca49c78c8ed8cf77f9e9fa414d2f04 by Kitsune Ral on 04/05/2018 at 11:24..
gtad.yaml: Support maps of events

Use std::unordered_map<> (now supported by GTAD and converters.h) for
that.
https://invent.kde.org/neon/forks/libquotient/-/commit/c5b3de1732ca49c78c8ed8cf77f9e9fa414d2f04

Git commit c71c4eb027cc7bb3b6b1a9bd41c048fcdfe4aa90 by Kitsune Ral on 04/05/2018 at 11:24..
jobs/generated: code ordering, more comments
https://invent.kde.org/neon/forks/libquotient/-/commit/c71c4eb027cc7bb3b6b1a9bd41c048fcdfe4aa90

Git commit a83eb9350def2b1537affe4390ea54d37ffbc777 by Kitsune Ral on 04/05/2018 at 11:24..
gtad.yaml: Use QStringList instead of QVector<QString>

QStringList's API is richer, after all.
https://invent.kde.org/neon/forks/libquotient/-/commit/a83eb9350def2b1537affe4390ea54d37ffbc777

Git commit e49a842e877d17a1c6cbbb2349c2816639447721 by Kitsune Ral on 04/05/2018 at 11:24..
Connection, jobs/generated: Use QStringList instead of QVector<QString>

QStringList's API is richer, after all.
https://invent.kde.org/neon/forks/libquotient/-/commit/e49a842e877d17a1c6cbbb2349c2816639447721

Git commit 7f202c6a09ff34b063f5de94e8afc385bbf8379b by Kitsune Ral on 04/05/2018 at 11:24..
gtad.yaml: Even more concise type stubbing

With most recent GTAD.
https://invent.kde.org/neon/forks/libquotient/-/commit/7f202c6a09ff34b063f5de94e8afc385bbf8379b

Git commit 7681802be815ca1a03f219b82e3bd1b02863d34e by Kitsune Ral on 04/05/2018 at 11:24..
gtad.yaml: Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/7681802be815ca1a03f219b82e3bd1b02863d34e

Git commit f70ec41accd6da9f223bc41b446ad1d2d77de3f4 by Kitsune Ral on 04/05/2018 at 13:04..
Fix building on OSX
https://invent.kde.org/neon/forks/libquotient/-/commit/f70ec41accd6da9f223bc41b446ad1d2d77de3f4

Git commit 49022915fde72b83d9f18944c268110b01fa3469 by Kitsune Ral on 04/05/2018 at 14:04..
New home for the generated code - lib/csapi
https://invent.kde.org/neon/forks/libquotient/-/commit/49022915fde72b83d9f18944c268110b01fa3469

Git commit dad4eb9b3af7e550d1030d1d0340881508f473f6 by Kitsune Ral on 05/05/2018 at 10:34..
README.md: cleaning up captions

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/dad4eb9b3af7e550d1030d1d0340881508f473f6

Git commit a63838235134b066c092ad98e1f18ff7991c91c1 by Kitsune Ral on 05/05/2018 at 10:34..
CONTRIBUTING.md: add a section about using GTAD

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/a63838235134b066c092ad98e1f18ff7991c91c1

Git commit a8d2a73c771f188fc0fdc6351b4923af788317d5 by Kitsune Ral on 05/05/2018 at 10:36..
Merge branch 'kitsune-gtad'
https://invent.kde.org/neon/forks/libquotient/-/commit/a8d2a73c771f188fc0fdc6351b4923af788317d5

Git commit f794be48f23770f438c66e84484fa54e267fcc96 by Kitsune Ral on 06/05/2018 at 01:47..
CMakeLists.txt: Bump API version
https://invent.kde.org/neon/forks/libquotient/-/commit/f794be48f23770f438c66e84484fa54e267fcc96

Git commit 1f62e677ecaffea39ae2fdcc07ac4e1a09d027a1 by Kitsune Ral on 06/05/2018 at 01:49..
Room::calculateDisplayname: fix a misleading room name after leaving a one-on-one
https://invent.kde.org/neon/forks/libquotient/-/commit/1f62e677ecaffea39ae2fdcc07ac4e1a09d027a1

Git commit ff3c70978d3d33b65f3e5878c2876fb74c152232 by Kitsune Ral on 06/05/2018 at 02:45..
lib/csapi: SearchJob
https://invent.kde.org/neon/forks/libquotient/-/commit/ff3c70978d3d33b65f3e5878c2876fb74c152232

Git commit 1dc3784d5a3ef05433bc42318b896ff2a4e149cf by Kitsune Ral on 06/05/2018 at 05:17..
lib/csapi/*.mustache: Optimise #includes, eliminate some blank lines
https://invent.kde.org/neon/forks/libquotient/-/commit/1dc3784d5a3ef05433bc42318b896ff2a4e149cf

Git commit 59596449eef2dfba0da8cf7e0c6ac4fcbf3a7a1e by Kitsune Ral on 06/05/2018 at 05:18..
Optimise #includes, eliminate some excess blank lines in lib/csapi
https://invent.kde.org/neon/forks/libquotient/-/commit/59596449eef2dfba0da8cf7e0c6ac4fcbf3a7a1e

Git commit b97e759502aa1bcfee72029ed5ea1eda12af12b8 by Kitsune Ral on 06/05/2018 at 10:35..
converters.h: Fix CI
https://invent.kde.org/neon/forks/libquotient/-/commit/b97e759502aa1bcfee72029ed5ea1eda12af12b8

Git commit 79403a004129852af10f0a7d9b8dca0276724d28 by Kitsune Ral on 06/05/2018 at 11:02..
Remove unused job classes.
https://invent.kde.org/neon/forks/libquotient/-/commit/79403a004129852af10f0a7d9b8dca0276724d28

Git commit 73fec4b25d81b73f25309bfb3e274df7553341ea by Kitsune Ral on 23/05/2018 at 07:42..
BaseJob: more careful error handling; unify and extend error signals in Connection

(Note: this commit breaks back-compatibility.)

BaseJob::gotReply() had a bold assumption that whenever there's no reasonable JSON body in case of error, that meant IncorrectRequestError (which of course was incorrect). This led to syncs dying in Quaternion because it (correctly) considered IncorrectRequestError to be grave enough to not retry. Closes #206.
Also: don't dump the whole payload to logs, limit with initial 500 characters (closes #205)
https://invent.kde.org/neon/forks/libquotient/-/commit/73fec4b25d81b73f25309bfb3e274df7553341ea

Git commit c03d9b0a595caf8a2d3fbc225625c0e9a083a95c by Kitsune Ral on 24/05/2018 at 10:44..
Room: Make isFavourite/LowPriority/DirectChat accessible from QML

The first two as Q_PROPERTYs, the last one as Q_INVOKABLE.
https://invent.kde.org/neon/forks/libquotient/-/commit/c03d9b0a595caf8a2d3fbc225625c0e9a083a95c

Git commit c5d06cf378e820ca4290998a5580e87957daf061 by Kitsune Ral on 26/05/2018 at 11:17..
lib/csapi/: Don't send parameters that were omitted

This is important because payloads that include omitted parameters may be malformed. Closes #208 (an example of such malformed payload).
https://invent.kde.org/neon/forks/libquotient/-/commit/c5d06cf378e820ca4290998a5580e87957daf061

Git commit 6a4af80a7199753b493b17684162673b024d2191 by Kitsune Ral on 26/05/2018 at 11:18..
lib/csapi/: regenerate job classes from the most recent templates

The second part to close #208.
https://invent.kde.org/neon/forks/libquotient/-/commit/6a4af80a7199753b493b17684162673b024d2191

Git commit 6b5ac73edbb9d29902fad1b42807dbc2a5f52396 by Kitsune Ral on 28/05/2018 at 01:54..
qmc-example: Updates to Valgrind suppressions
https://invent.kde.org/neon/forks/libquotient/-/commit/6b5ac73edbb9d29902fad1b42807dbc2a5f52396

Git commit 9a4d2414895cd80e379f8bd5a22ff66afbae9856 by Kitsune Ral on 28/05/2018 at 01:58..
BaseJob: refresh rotten comments about kill()

There is no more BaseJob::kill() for a very long time; we have abandon()
instead, with a bit different meaning. Which, by the way, now emits
finished() because that's what finished() has been for.
https://invent.kde.org/neon/forks/libquotient/-/commit/9a4d2414895cd80e379f8bd5a22ff66afbae9856

Git commit baca58ea5c271333038ad13466eeb7acc50ecdde by Kitsune Ral on 28/05/2018 at 02:00..
BaseJob: support status tracking

The newly introduced statusChanged() signal allows clients to be
notified about the job state transitions.
https://invent.kde.org/neon/forks/libquotient/-/commit/baca58ea5c271333038ad13466eeb7acc50ecdde

Git commit a677a3443fda9f77e893d448a55e8d0482d3d4b0 by Kitsune Ral on 28/05/2018 at 09:44..
Move out prettyPrint() from Room to util.h

So that it could be used outside of room context.
https://invent.kde.org/neon/forks/libquotient/-/commit/a677a3443fda9f77e893d448a55e8d0482d3d4b0

Git commit e58a03c84f89a5ec9091ca81ef040df659700ef2 by Kitsune Ral on 29/05/2018 at 07:47..
BaseJob: "background" switch; more extensive error reporting

Running a request in background, aside from some tweaks on the network
layer (see QNetworkRequest::BackgroundRequestAttribute), allows to
distinguish jobs not immediately caused by user interaction (such as
fetching thumbnails). This can be used to show or not show certain
notifications in UI of clients.

Error reporting has been extended with more methods:
errorCaption() - a human-readable phrase calculated from the status
code; intended to be shown as a dialog caption and in similar
situations.
errorRawData() - former errorDetails(), returns the raw response from
the server.
errorUrl() - returns a URL that may be useful with the error (e.g. for
the upcoming "consent not given" error, this will have the policy URL).
Connection::resultFailed() - a new signal emitted when _any_
BaseJob::failure() is emitted (enables centralised error handling
across all network requests in clients).

As a part of matching changes in Connection, callApi has an overload
that allows to specify the policy; a custom enum instead of bool has
been chosen for the parameter type, to avoid clashes with (arbitrary)
types of job parameters.
https://invent.kde.org/neon/forks/libquotient/-/commit/e58a03c84f89a5ec9091ca81ef040df659700ef2

Git commit c55c1cc83985f808e9cfc7475e5113566a1ac5a8 by Kitsune Ral on 29/05/2018 at 07:48..
BaseJob: Treat M_CONSENT_NOT_GIVEN separately from other content access errors

Closes #207.
https://invent.kde.org/neon/forks/libquotient/-/commit/c55c1cc83985f808e9cfc7475e5113566a1ac5a8

Git commit 7e15f82aebf79ad95794c4a5dc7d2929e48df4ff by Kitsune Ral on 30/05/2018 at 06:20..
BaseJob::setStatus: Don't try to remove access token if it's empty

Closes #210.
https://invent.kde.org/neon/forks/libquotient/-/commit/7e15f82aebf79ad95794c4a5dc7d2929e48df4ff

Git commit e7ac6f3480358fd989c8a3090590d665d18e1cec by Kitsune Ral on 02/06/2018 at 04:30..
addToJson(): Omit unneeded defaulting of ValT to void
https://invent.kde.org/neon/forks/libquotient/-/commit/e7ac6f3480358fd989c8a3090590d665d18e1cec

Git commit 0dd491fbd189baaabadcab2344a05e3cf3898287 by Kitsune Ral on 02/06/2018 at 04:32..
csapi: Use Omittable<> container instead of intrusive 'omitted' field

Also: use the latest feature of GTAD, +set/+on, to make gtad.yaml more compact.
https://invent.kde.org/neon/forks/libquotient/-/commit/0dd491fbd189baaabadcab2344a05e3cf3898287

Git commit c1c03990e87d6821624566b2332e8bd504436700 by Kitsune Ral on 02/06/2018 at 04:53..
Typo fix
https://invent.kde.org/neon/forks/libquotient/-/commit/c1c03990e87d6821624566b2332e8bd504436700

Git commit 239c33243b21f120f581a646b298950bb18489ee by Kitsune Ral on 02/06/2018 at 06:06..
GTAD: drop question marks and "true" from attributes

They lead to an (incorrect) assumption that those attributes are actual
binary flags rather than just flags (there's no such thing as
avoidCopy=false, avoidCopy should be absent instead).
https://invent.kde.org/neon/forks/libquotient/-/commit/239c33243b21f120f581a646b298950bb18489ee

Git commit 5a5a7251b1bc6f39af17cd00dea2eb6bddd72e1c by Kitsune Ral on 02/06/2018 at 07:45..
csapi: Fix adding omittables to a query string
https://invent.kde.org/neon/forks/libquotient/-/commit/5a5a7251b1bc6f39af17cd00dea2eb6bddd72e1c

Git commit 1eb85b1b1465463830371bcd951374b7527e5bc5 by Kitsune Ral on 02/06/2018 at 12:38..
Room::dropDuplicateEvents(): use a reference instead of a pointer

There's no case for a nullptr in that function, and I'm fine to use
non-const ref parameters.
https://invent.kde.org/neon/forks/libquotient/-/commit/1eb85b1b1465463830371bcd951374b7527e5bc5

Git commit e0498178cf727732b730b92ec74b5355925b7006 by Kitsune Ral on 02/06/2018 at 12:38..
Connection::loadedRoomState() signal

Closes #211.
https://invent.kde.org/neon/forks/libquotient/-/commit/e0498178cf727732b730b92ec74b5355925b7006

Git commit bf78bd17a485dff30da670c91c0c1571e624edf0 by Kitsune Ral on 02/06/2018 at 12:42..
More reliable test state tracking; join/leave tests

1. Instead of a single numeric semaphore, tests are first added to the `running`
list and then transferred to `succeeded` or `failed`, depending on the outcome.
2. The test flow now starts with joining the test room and finishes with
leaving it. Closes #209.
https://invent.kde.org/neon/forks/libquotient/-/commit/bf78bd17a485dff30da670c91c0c1571e624edf0

Git commit 381089a0404eecbb693f5c7cb1000ecf3f58f4cc by Kitsune Ral on 02/06/2018 at 13:55..
BaseJob: fix error handling for M_CONSENT_NOT_GIVEN
https://invent.kde.org/neon/forks/libquotient/-/commit/381089a0404eecbb693f5c7cb1000ecf3f58f4cc

Git commit f06d6e0497d7d7545a19b2cd16fdf2fda15e205c by Kitsune Ral on 03/06/2018 at 01:28..
gtad.yaml: Make sure to pass avoidCopy to ref'ed types
https://invent.kde.org/neon/forks/libquotient/-/commit/f06d6e0497d7d7545a19b2cd16fdf2fda15e205c

Git commit f96e349baa30a8a5b263a98a12158614a82fdd27 by Kitsune Ral on 03/06/2018 at 02:18..
gtad.yaml: Fallback to QJsonArray no more needed

...with the latest GTAD
https://invent.kde.org/neon/forks/libquotient/-/commit/f96e349baa30a8a5b263a98a12158614a82fdd27

Git commit 48c7d2de6fda86a5115147bc7d9825c3627a17d9 by Kitsune Ral on 03/06/2018 at 04:20..
gtad.yaml: Fixes around defaultValue

1. defaultValue now preempts Omittable<>
2. Fixed the problem when defaultValue was provided but initializer was empty
(a case for int's, bool's etc.)
https://invent.kde.org/neon/forks/libquotient/-/commit/48c7d2de6fda86a5115147bc7d9825c3627a17d9

Git commit 8a8c645f2a2dc91e9d956b7dee8ef5cf741541f4 by Kitsune Ral on 03/06/2018 at 04:22..
csapi: Updated to the most recent API definitions
https://invent.kde.org/neon/forks/libquotient/-/commit/8a8c645f2a2dc91e9d956b7dee8ef5cf741541f4

Git commit 38440a724acf8836e74e5bca29105e493f36eb7c by Kitsune Ral on 03/06/2018 at 08:12..
csapi + converters: Support variant types (using QVariant)

This mandated some rearrangement of toJson() overloads and FromJson<>
specializations for QVariant* types - instead of variant_converters.h they are
now in converters.cpp.
https://invent.kde.org/neon/forks/libquotient/-/commit/38440a724acf8836e74e5bca29105e493f36eb7c

Git commit 5be3dcc9d45d2c52a514b5ebfa691dca9c73b047 by Kitsune Ral on 03/06/2018 at 09:24..
csapi/notifications.*: Use QVariant instead of QJsonObject

Thanks to the latest GTAD. QJsonObject wasn't quite correct there.
https://invent.kde.org/neon/forks/libquotient/-/commit/5be3dcc9d45d2c52a514b5ebfa691dca9c73b047

Git commit 32a912ff71bc86d862d89e0a01a35ce7b001de7c by Kitsune Ral on 03/06/2018 at 10:06..
csapi/content-repo.*: jobs return results in data() instead of content() now

Because GTAD has been updated to use a different default name for
returned properties.
https://invent.kde.org/neon/forks/libquotient/-/commit/32a912ff71bc86d862d89e0a01a35ce7b001de7c

Git commit 66b08e3570d272d4dd81823cdf303ce7eae17609 by Kitsune Ral on 03/06/2018 at 10:37..
csapi: GetTurnServerJob
https://invent.kde.org/neon/forks/libquotient/-/commit/66b08e3570d272d4dd81823cdf303ce7eae17609

Git commit 553c22541026bd44f8fbc7f4e186e60703f5ecb3 by Kitsune Ral on 03/06/2018 at 10:48..
csapi: No need to explicitly #include <QtCore/QStringList>
https://invent.kde.org/neon/forks/libquotient/-/commit/553c22541026bd44f8fbc7f4e186e60703f5ecb3

Git commit 826b8fb5afc80dd6adcc7ecee22997365a59f9d0 by Kitsune Ral on 03/06/2018 at 10:50..
csapi: PeekEventsJob, ReportContentJob, presence jobs
https://invent.kde.org/neon/forks/libquotient/-/commit/826b8fb5afc80dd6adcc7ecee22997365a59f9d0

Git commit ddf10847d496dd65b00bc2026412958acd09790d by Kitsune Ral on 03/06/2018 at 10:50..
csapi: jobs to setup push-rules
https://invent.kde.org/neon/forks/libquotient/-/commit/ddf10847d496dd65b00bc2026412958acd09790d

Git commit fc0a6d894637517a3b88fc0534621d5fb6a4fbbc by Kitsune Ral on 03/06/2018 at 22:26..
converters.*: Fixes

Qualify functions properly; add converters.* to libqmatrixclient.pri
https://invent.kde.org/neon/forks/libquotient/-/commit/fc0a6d894637517a3b88fc0534621d5fb6a4fbbc

Git commit 5c4e3578317b4dd585cc6419afde90ebc345dc0c by Kitsune Ral on 04/06/2018 at 02:07..
Make libQMatrixClient buildable outside of Quaternion
https://invent.kde.org/neon/forks/libquotient/-/commit/5c4e3578317b4dd585cc6419afde90ebc345dc0c

Git commit 936e7673e0a08da3d6e10fcfed85e53db210295e by Kitsune Ral on 04/06/2018 at 07:51..
CMakeLists: fix build breakage if GTAD path is relative
https://invent.kde.org/neon/forks/libquotient/-/commit/936e7673e0a08da3d6e10fcfed85e53db210295e

Git commit b0fedde2361cb9c58b99f1fffb1085315d5fb981 by Kitsune Ral on 04/06/2018 at 10:29..
CMakeLists: Fix build breakage if MATRIX_DOC_PATH is relative

I should've guessed it at the previous commit, I know.
https://invent.kde.org/neon/forks/libquotient/-/commit/b0fedde2361cb9c58b99f1fffb1085315d5fb981

Git commit a2024608abf4912b9720829ba0b0c20bbb4a5916 by Kitsune Ral on 08/06/2018 at 03:47..
csapi: added sync filter definitions and jobs
https://invent.kde.org/neon/forks/libquotient/-/commit/a2024608abf4912b9720829ba0b0c20bbb4a5916

Git commit 35d4c9d028f6a4387f8168898378e80dd03d7f94 by Kitsune Ral on 08/06/2018 at 03:54..
gtad.yaml: Update to the released GTAD 0.6

variant types now use comma (,) as a delimiter instead of | (because regexes).
Also: moved around the `schema` section to be closer to `$ref`.
https://invent.kde.org/neon/forks/libquotient/-/commit/35d4c9d028f6a4387f8168898378e80dd03d7f94

Git commit 907865f71aed9c51565bb3ed229e791757874a61 by Kitsune Ral on 08/06/2018 at 03:59..
csapi: add jobs from rooms.yaml

Getting a single event (/events), getting the full room state as well as with
a specific type/key (/state), getting the list of room members (/members and
/joined_members).
https://invent.kde.org/neon/forks/libquotient/-/commit/907865f71aed9c51565bb3ed229e791757874a61

Git commit 318e094e19bc8ecfe89031e4c62a8cd14d307157 by Kitsune Ral on 08/06/2018 at 07:59..
csapi: Added registration and account management jobs

Regrettably had to cut corners and use QJsonObject for auth_data.yaml because
GTAD 0.6 doesn't properly deal with a combination of properties and
additionalProperties in the API description.
https://invent.kde.org/neon/forks/libquotient/-/commit/318e094e19bc8ecfe89031e4c62a8cd14d307157

Git commit b28e2d697842f58e2994ead62635b31f48162cdc by Kitsune Ral on 08/06/2018 at 08:03..
csapi: add jobs for device management

Same as for account management jobs, auth objects are modeled as generic
QJsonObjects for now.
https://invent.kde.org/neon/forks/libquotient/-/commit/b28e2d697842f58e2994ead62635b31f48162cdc

Git commit c5ebff775e71b5d32a3b2af8f666e3f13f8970c2 by Kitsune Ral on 08/06/2018 at 08:07..
csapi: add jobs for keys management

This concludes the Great Income of Jobs to libQMatrixClient - all CS API calls
are now covered with job classes, yay!
https://invent.kde.org/neon/forks/libquotient/-/commit/c5ebff775e71b5d32a3b2af8f666e3f13f8970c2

Git commit 4b1b308f28bdaef598a5dfc249d7af6a0346b367 by Kitsune Ral on 08/06/2018 at 10:05..
SyncJob: Support receiving to_device and presence events
https://invent.kde.org/neon/forks/libquotient/-/commit/4b1b308f28bdaef598a5dfc249d7af6a0346b367

Git commit 6767cb8eccea7b74531f59f165a28afa0bec61f4 by Kitsune Ral on 08/06/2018 at 14:24..
csapi: Fix boolean query parameters incorrectly passed
https://invent.kde.org/neon/forks/libquotient/-/commit/6767cb8eccea7b74531f59f165a28afa0bec61f4

Git commit 46801080846d58ab1528e921bebcb14e651f7956 by Kitsune Ral on 09/06/2018 at 13:53..
csapi: Now really fix passing query parameters

Also: GetContentThumbnailJob (again) requires width and height.
https://invent.kde.org/neon/forks/libquotient/-/commit/46801080846d58ab1528e921bebcb14e651f7956

Git commit b0d1808e2732bbba2782321b2e39ec1cab96d885 by Kitsune Ral on 09/06/2018 at 14:06..
converters.h: drop unneeded template<> line
https://invent.kde.org/neon/forks/libquotient/-/commit/b0d1808e2732bbba2782321b2e39ec1cab96d885

Git commit c5f469375f7c7b09f5f5c9a13ca07c6cf7c2b68a by Kitsune Ral on 10/06/2018 at 22:48..
Connection: InFore/Background -> Fore/BackgroundRequest
https://invent.kde.org/neon/forks/libquotient/-/commit/c5f469375f7c7b09f5f5c9a13ca07c6cf7c2b68a

Git commit cee574090838ab54961d2d34b76d60964f7a8304 by Kitsune Ral on 10/06/2018 at 22:50..
BaseJob: Drop 'error' from methods that work in normal job state too
https://invent.kde.org/neon/forks/libquotient/-/commit/cee574090838ab54961d2d34b76d60964f7a8304

Git commit b2c3a9c54d5ba78bf67d65f9b61c39f2c6f64ac8 by Kitsune Ral on 10/06/2018 at 22:52..
Update README.md

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/b2c3a9c54d5ba78bf67d65f9b61c39f2c6f64ac8

Git commit 4fc03b25639df302f4a1dc02666d785ba4dfcade by Kitsune Ral on 11/06/2018 at 01:50..
Update CONTRIBUTING.md

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/4fc03b25639df302f4a1dc02666d785ba4dfcade

Git commit 886d8c585fbd3efe6fd298f8d5b5f980c752deae by Kitsune Ral on 11/06/2018 at 03:47..
gtad.yaml: More concise list joining
https://invent.kde.org/neon/forks/libquotient/-/commit/886d8c585fbd3efe6fd298f8d5b5f980c752deae

Git commit 0f3e1fd2e7e70af150c9b9dae654da6f5abdc6f8 by Kitsune Ral on 11/06/2018 at 03:54..
Event::toJson(): Return an empty object instead of UB
https://invent.kde.org/neon/forks/libquotient/-/commit/0f3e1fd2e7e70af150c9b9dae654da6f5abdc6f8

Git commit 1dd130831d406b526df274a9f9f9fb4ffd5a0d58 by Kitsune Ral on 16/06/2018 at 09:43..
csapi: Use {{>cjoin}} instead of {{>join,}}; fix a typo breaking update-api
https://invent.kde.org/neon/forks/libquotient/-/commit/1dd130831d406b526df274a9f9f9fb4ffd5a0d58

Git commit 42b1e859f10d352eb1b8ad5ad5226500f65d9dfe by Kitsune Ral on 16/06/2018 at 09:44..
converters.h: Make it still compile with Qt older than 5.6

Some folks are still on Ubuntu vivid :(
https://invent.kde.org/neon/forks/libquotient/-/commit/42b1e859f10d352eb1b8ad5ad5226500f65d9dfe

Git commit 5a34e11132b612361439c7e1243ff2f3ac959213 by Kitsune Ral on 16/06/2018 at 11:50..
Connection::doInDirectChat: be more careful with cleanup

d->directChats was cleaned up while it was iterated upon, obviously
leading to Undefined Behaviour. Closes #214.
https://invent.kde.org/neon/forks/libquotient/-/commit/5a34e11132b612361439c7e1243ff2f3ac959213

Git commit df0927e8be4ea9c5cec06ed7eaee0ccf44a0942f by Kitsune Ral on 16/06/2018 at 11:51..
Connection::createRoom: avoid inviting yourself to the created room
https://invent.kde.org/neon/forks/libquotient/-/commit/df0927e8be4ea9c5cec06ed7eaee0ccf44a0942f

Git commit f2593ec532311133c51146d1a42faf7e01ea5e86 by Kitsune Ral on 16/06/2018 at 11:56..
Connection::doInDirectChat: "direct chat with self" feature

Essentially - create/switch to the room with you as the only member
instead of getting the first room where you happen to be flagged as a
direct chat user (which is pretty unpredictable even if stable from the
user point of view).
https://invent.kde.org/neon/forks/libquotient/-/commit/f2593ec532311133c51146d1a42faf7e01ea5e86

Git commit fe4bedeb349ed867feba7cb3c996a97f726d2083 by Kitsune Ral on 16/06/2018 at 12:17..
CMakeLists.txt: Don't build API files list if not needed
https://invent.kde.org/neon/forks/libquotient/-/commit/fe4bedeb349ed867feba7cb3c996a97f726d2083

Git commit 58a95b07908d9f1afa1bd8f99d26ccac24ff3b89 by Kitsune Ral on 24/06/2018 at 00:22..
converters.h: Support QSet<>

Also: toJson<optional> is no more (was #if 0'd anyway).
https://invent.kde.org/neon/forks/libquotient/-/commit/58a95b07908d9f1afa1bd8f99d26ccac24ff3b89

Git commit b882b47c8201c5ef29d97747655c9751e47f2066 by Kitsune Ral on 30/06/2018 at 08:08..
Use C++14 [[deprecated]] attribute instead of doc-comment

Testing the waters in one place to start with.
https://invent.kde.org/neon/forks/libquotient/-/commit/b882b47c8201c5ef29d97747655c9751e47f2066

Git commit 78a425ec47dff47a09e3547d041fdd3216aa1403 by Kitsune Ral on 30/06/2018 at 09:03..
Try [[gnu::const]]
https://invent.kde.org/neon/forks/libquotient/-/commit/78a425ec47dff47a09e3547d041fdd3216aa1403

Git commit 84f44ed93e528bcedf4c4c3bc8e54377854f27d0 by Kitsune Ral on 01/07/2018 at 02:48..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/84f44ed93e528bcedf4c4c3bc8e54377854f27d0

Git commit 46c9d422bc50c3eb4a5012962666e3bf3a0916a1 by Kitsune Ral on 01/07/2018 at 05:26..
More cleanup and minor tweaks
https://invent.kde.org/neon/forks/libquotient/-/commit/46c9d422bc50c3eb4a5012962666e3bf3a0916a1

Git commit 28d4677f4bcb863478d3bf9f813c0ba0bf300fe8 by Kitsune Ral on 01/07/2018 at 10:44..
weakPtr -> weakPtrCast
https://invent.kde.org/neon/forks/libquotient/-/commit/28d4677f4bcb863478d3bf9f813c0ba0bf300fe8

Git commit e0ef2b8bd9e2ef9ea978e22e587cf8f50a01639b by Kitsune Ral on 01/07/2018 at 23:35..
Fix FTBFS
https://invent.kde.org/neon/forks/libquotient/-/commit/e0ef2b8bd9e2ef9ea978e22e587cf8f50a01639b

Git commit 47f27816c401a6cc15fb13607658aee716a2eb2c by Kitsune Ral on 03/07/2018 at 02:06..
SyncJob: log sync data statistics better
https://invent.kde.org/neon/forks/libquotient/-/commit/47f27816c401a6cc15fb13607658aee716a2eb2c

Git commit ded46e7115cf9a3460a780f445a0c8ff22a628fa by Kitsune Ral on 03/07/2018 at 02:22..
Provide #include back-compatibility for REGISTER_ENUM
https://invent.kde.org/neon/forks/libquotient/-/commit/ded46e7115cf9a3460a780f445a0c8ff22a628fa

Git commit eaca25fd5115ab00a29b7d47dfc6e16cbfd5e552 by Kitsune Ral on 03/07/2018 at 02:23..
Roll various switch case fallthrough markers into a macro
https://invent.kde.org/neon/forks/libquotient/-/commit/eaca25fd5115ab00a29b7d47dfc6e16cbfd5e552

Git commit 4e302b7d83611ab20babfc44429d024048871085 by Kitsune Ral on 03/07/2018 at 22:51..
Experimental usage of QStringLiteral with a raw string literal
https://invent.kde.org/neon/forks/libquotient/-/commit/4e302b7d83611ab20babfc44429d024048871085

Git commit df164cd856a34d8c1462793a40e56d387389b82f by Kitsune Ral on 03/07/2018 at 22:52..
Connection: Trim raw data in emitted signals

If the payload is too large, an attempt to allocate a QString out of
QByteArray may end with qBadAlloc(). So by default the data emitted in
case of error are trimmed to 64KiB, and this can be overridden to a
different value (or switched off entirely with <n>=0) by adding -
DTRIM_RAW_DATA=<n> to CPP_FLAGS.
https://invent.kde.org/neon/forks/libquotient/-/commit/df164cd856a34d8c1462793a40e56d387389b82f

Git commit d5397fe5ae2ca34d5cfb11394dac17728a2b50ce by Kitsune Ral on 04/07/2018 at 00:06..
Merge branch 'kitsune-raw-literal-qstringliteral'
https://invent.kde.org/neon/forks/libquotient/-/commit/d5397fe5ae2ca34d5cfb11394dac17728a2b50ce

Git commit f1ffe1e7a3e81c07a07a8416ce307e4413ec8fbc by Kitsune Ral on 04/07/2018 at 00:07..
Event types system remade to be extensible

There were two common points that had to be updated every time a new event is introduced:
the EventType enumeration and one of 3 doMakeEvent<> specialisations. The new code
has a template class, EventFactory<>, that uses a list of static factory methods
to create events instead of typelists used in doMakeEvent<>(); the EventType enumeration
is replaced with a namespace populated with constants as necessary.

In general, EventType is considered a deprecated mechanism altogether; instead, a set
of facilities is provided: is<>() to check if an event has a certain type (to replace
comparison against an EventType value) and visit<>() to execute actions based on
the event type (replacing switch statements over EventType values).

Closes #129.
https://invent.kde.org/neon/forks/libquotient/-/commit/f1ffe1e7a3e81c07a07a8416ce307e4413ec8fbc

Git commit bd853f392aaf5b05e0a8023da85a38e91d90a6e0 by Kitsune Ral on 04/07/2018 at 00:07..
TimelineItem::operator*()
https://invent.kde.org/neon/forks/libquotient/-/commit/bd853f392aaf5b05e0a8023da85a38e91d90a6e0

Git commit ed467d27b07781fdd2f7ddef043568954ce50b69 by Kitsune Ral on 04/07/2018 at 11:12..
Events: use a template structure instead of template variables; rearrange code into blocks

A template member variable in it seemed to cause internal compiler error in MSVC 2017, let alone MSVC 2015...
https://invent.kde.org/neon/forks/libquotient/-/commit/ed467d27b07781fdd2f7ddef043568954ce50b69

Git commit 3dd6b5e6cc50aafce74b21b5a0bf4b26a9fcf6ee by Kitsune Ral on 04/07/2018 at 11:13..
Use QStringLiteral() and operator"" _ls() in network jobs
https://invent.kde.org/neon/forks/libquotient/-/commit/3dd6b5e6cc50aafce74b21b5a0bf4b26a9fcf6ee

Git commit 2cbb2a8c1be8bf08b1b835ffaa7bb0bee823e3a6 by Kitsune Ral on 04/07/2018 at 11:13..
Break down event.* into smaller files

We now have event.*, roomevent.*, stateevent.* and eventloader.h. If you only use event leaf-classes (such as RoomMemberEvent) you shouldn't notice anything.
https://invent.kde.org/neon/forks/libquotient/-/commit/2cbb2a8c1be8bf08b1b835ffaa7bb0bee823e3a6

Git commit 5d1dd53890611376873f6f959e206d5a56cfff70 by Kitsune Ral on 04/07/2018 at 12:05..
Add #include to fix FTBFS with qmake
https://invent.kde.org/neon/forks/libquotient/-/commit/5d1dd53890611376873f6f959e206d5a56cfff70

Git commit 6a9de91752dfe75e185bf90ab856367b2c804582 by Kitsune Ral on 04/07/2018 at 12:34..
Merge branch 'kitsune-events-rewritten'
https://invent.kde.org/neon/forks/libquotient/-/commit/6a9de91752dfe75e185bf90ab856367b2c804582

Git commit b52f3998a454a18ad46d1f276052965b96cd2ca9 by Kitsune Ral on 04/07/2018 at 12:34..
lib/csapi: Updated from the latest API definitions
https://invent.kde.org/neon/forks/libquotient/-/commit/b52f3998a454a18ad46d1f276052965b96cd2ca9

Git commit c9ace4f4037577846085fa6805a2918c5a2e745b by Kitsune Ral on 04/07/2018 at 12:34..
Support ignoring users

Closes #215.
https://invent.kde.org/neon/forks/libquotient/-/commit/c9ace4f4037577846085fa6805a2918c5a2e745b

Git commit 552475704351e68a3983348de39aa60620e1578d by Kitsune Ral on 04/07/2018 at 13:08..
Add more #includes missing
https://invent.kde.org/neon/forks/libquotient/-/commit/552475704351e68a3983348de39aa60620e1578d

Git commit 1742f6e0f0af6aa6deefe2cee4bc41877f4ac2ad by Kitsune Ral on 07/07/2018 at 01:30..
util.h: DISABLE_MOVE macro
https://invent.kde.org/neon/forks/libquotient/-/commit/1742f6e0f0af6aa6deefe2cee4bc41877f4ac2ad

Git commit bd8764cbbb0ec003549261586867a6ae6f46f5cd by Kitsune Ral on 07/07/2018 at 02:05..
Reinstate EventTypeRegistry, keeping EventTypeTraits<> around

You can now get a (much more readable) Matrix type (event_mtype_t) for the internal event type code (event_type_t) using EventTypeRegistry::getMatrixType().
https://invent.kde.org/neon/forks/libquotient/-/commit/bd8764cbbb0ec003549261586867a6ae6f46f5cd

Git commit a80e4a675e21a1401fabfeecaf7e538227aa9dbd by Kitsune Ral on 07/07/2018 at 05:35..
Remove [[gnu::const]] from linkifyUrls()

It's not a pure function by any account. Closes #377. Also: minor tweaks
in util.cpp
https://invent.kde.org/neon/forks/libquotient/-/commit/a80e4a675e21a1401fabfeecaf7e538227aa9dbd

Git commit ab1f92a1eea2556f9ee6dd81f343c5b61f1b781c by Kitsune Ral on 07/07/2018 at 12:09..
visit<>(): Add an overload accepting a default value
https://invent.kde.org/neon/forks/libquotient/-/commit/ab1f92a1eea2556f9ee6dd81f343c5b61f1b781c

Git commit cab30e850847ac221b08c3a8b715d0298bb63ddf by Kitsune Ral on 08/07/2018 at 00:02..
Move Omittable<> to util.h
https://invent.kde.org/neon/forks/libquotient/-/commit/cab30e850847ac221b08c3a8b715d0298bb63ddf

Git commit 0621efc37355d1986800e40f367d918bf859c5cd by Kitsune Ral on 08/07/2018 at 00:05..
Generalize weakPtrCast<>()
https://invent.kde.org/neon/forks/libquotient/-/commit/0621efc37355d1986800e40f367d918bf859c5cd

Git commit c0c1f47926cb01ddcfe9ed6556af2623d462b770 by Kitsune Ral on 08/07/2018 at 00:05..
eventCast<>()
https://invent.kde.org/neon/forks/libquotient/-/commit/c0c1f47926cb01ddcfe9ed6556af2623d462b770

Git commit 97acdeeb4249bf4b8660425d080de4499266895b by Kitsune Ral on 08/07/2018 at 00:08..
TimelineItem: get(); validating viewAs<>()

Having get() allows to work with TimelineItem as a smart pointer.
https://invent.kde.org/neon/forks/libquotient/-/commit/97acdeeb4249bf4b8660425d080de4499266895b

Git commit 24578e84ea325456c5635ec7ac46f9a818d3befe by Kitsune Ral on 08/07/2018 at 01:58..
TimelineItem::viewAs(): fix a typo
https://invent.kde.org/neon/forks/libquotient/-/commit/24578e84ea325456c5635ec7ac46f9a818d3befe

Git commit f86f5272c27b4af1037045482135480a4bac3cd4 by Kitsune Ral on 08/07/2018 at 01:58..
Omittable: support perfect forwarding
https://invent.kde.org/neon/forks/libquotient/-/commit/f86f5272c27b4af1037045482135480a4bac3cd4

Git commit c4acd8ece12622164caf396c06bd0f22ab3589f7 by Kitsune Ral on 08/07/2018 at 01:58..
eventCast(): generalize to smart pointers
https://invent.kde.org/neon/forks/libquotient/-/commit/c4acd8ece12622164caf396c06bd0f22ab3589f7

Git commit 62c7a8f5fc8ad8bd1e123d2535bc5001c15fa75b by Kitsune Ral on 08/07/2018 at 04:58..
visit<>(): support catch-all visitors on the tail
https://invent.kde.org/neon/forks/libquotient/-/commit/62c7a8f5fc8ad8bd1e123d2535bc5001c15fa75b

Git commit 0bfcf63e459e0cb4242d65acaf6e689f40c41ae3 by Kitsune Ral on 08/07/2018 at 05:29..
visit<>(): drop the overload for pointer-like objects

It confuses compilers and adds a mostly unneeded null check; it's dead easy
to just dereference a pointer before passing it to visit<>().
https://invent.kde.org/neon/forks/libquotient/-/commit/0bfcf63e459e0cb4242d65acaf6e689f40c41ae3

Git commit 08a3c52134cfc3458a86c2fc238f9a20a04e0c3c by Kitsune Ral on 08/07/2018 at 05:50..
Use constexpr functions instead of variables

MSVC struggles with template variables...
https://invent.kde.org/neon/forks/libquotient/-/commit/08a3c52134cfc3458a86c2fc238f9a20a04e0c3c

Git commit 4120f7f3e071b9682817f4acbd33904ae938be71 by Kitsune Ral on 08/07/2018 at 10:37..
Revert perfect forwarding support in Omittable

Turned out to work in unexpected ways when an Omittable<> gets copied.
https://invent.kde.org/neon/forks/libquotient/-/commit/4120f7f3e071b9682817f4acbd33904ae938be71

Git commit 3002c73eebb9a7bb6eb03b9c6ac31bc232ff595b by Kitsune Ral on 09/07/2018 at 05:43..
Fix legacy EventType values being incorrectly initialised

Static storage initialisation fiasco, as it is...
https://invent.kde.org/neon/forks/libquotient/-/commit/3002c73eebb9a7bb6eb03b9c6ac31bc232ff595b

Git commit 5bdfd6545c2c116c9260750cbc46ddc37eb455ef by Kitsune Ral on 09/07/2018 at 05:45..
Room: Revert from visit() to a combination of ifs and eventCasts

Easier to read, and also easier compiler diagnostics if things go wrong. Still using visit() for state events processing though - it maintains that all lambdas return some value.
https://invent.kde.org/neon/forks/libquotient/-/commit/5bdfd6545c2c116c9260750cbc46ddc37eb455ef

Git commit a0f49a396c9bd2a9f65df2682f8a6618e79c5dc7 by Kitsune Ral on 09/07/2018 at 05:56..
Add a missing #include
https://invent.kde.org/neon/forks/libquotient/-/commit/a0f49a396c9bd2a9f65df2682f8a6618e79c5dc7

Git commit e66cae5fd3e74c5839804e560332e5690709931a by Kitsune Ral on 10/07/2018 at 11:18..
Room::postHtmlMessage() - a facility method to send HTML messages
https://invent.kde.org/neon/forks/libquotient/-/commit/e66cae5fd3e74c5839804e560332e5690709931a

Git commit 9af5e25dbc040fa99d05cb23f7df53e3476ab1dd by Kitsune Ral on 11/07/2018 at 09:07..
EventTypeRegistry::getMatrixType(): move implementation to .cpp
https://invent.kde.org/neon/forks/libquotient/-/commit/9af5e25dbc040fa99d05cb23f7df53e3476ab1dd

Git commit c76150cf77933ef83a7820fc53c22034873675b6 by Kitsune Ral on 11/07/2018 at 09:09..
Room::isRedaction: disallow empty pointers

They should not come anywhere around Room.
https://invent.kde.org/neon/forks/libquotient/-/commit/c76150cf77933ef83a7820fc53c22034873675b6

Git commit f7f42ab0f406b462e3e94bf4e806b9de22339c43 by Kitsune Ral on 11/07/2018 at 09:14..
event.h: protect from readding factory methods
https://invent.kde.org/neon/forks/libquotient/-/commit/f7f42ab0f406b462e3e94bf4e806b9de22339c43

Git commit d714e47dd713d89d1581dbad1a8e751fcf5fa2e4 by Kitsune Ral on 11/07/2018 at 09:14..
Add missing #includes
https://invent.kde.org/neon/forks/libquotient/-/commit/d714e47dd713d89d1581dbad1a8e751fcf5fa2e4

Git commit 1ffb27f506ed1a4b3766768b872a86af7799a39e by Kitsune Ral on 11/07/2018 at 09:16..
EventFactory::make() should return nullptr in case of failure

Otherwise factory chaining doesn't work right (an unknown event returned
by a chained factory is treated as successful parsing).
https://invent.kde.org/neon/forks/libquotient/-/commit/1ffb27f506ed1a4b3766768b872a86af7799a39e

Git commit 88834ea75ee3304f8ab773e05aa64ce84643f236 by Kitsune Ral on 11/07/2018 at 09:24..
Introduce DISABLE_EVENTTYPE flag

If defined (value doesn't matter), it will suppress generation of
deprecated EventType constants. Not defined by default, as of 0.4.
https://invent.kde.org/neon/forks/libquotient/-/commit/88834ea75ee3304f8ab773e05aa64ce84643f236

Git commit 606db144b9ef6f1b2958ff49c4a6860bff48090c by Kitsune Ral on 11/07/2018 at 09:34..
csapi: Update to the latest API definitions

Presence requires authentication; GetConfigJob; GetLoginFlowsJob; serverName parameter in JoinRoomJob.
https://invent.kde.org/neon/forks/libquotient/-/commit/606db144b9ef6f1b2958ff49c4a6860bff48090c

Git commit 35f88375844c43ba902229ebdf0e34d5cc7fe85c by Kitsune Ral on 11/07/2018 at 10:01..
converters.h: overload addTo() for QStringList to fix FTBFS with the new csapi
https://invent.kde.org/neon/forks/libquotient/-/commit/35f88375844c43ba902229ebdf0e34d5cc7fe85c

Git commit 496e106083f3740d44716b96ed1b098d61df19eb by Kitsune Ral on 11/07/2018 at 13:16..
Room: (optionally) keep redaction events in the timeline

If KEEP_REDACTIONS_IN_TIMELINE is defined, the library adds redaction
events to the timeline as well. If not, the legacy behaviour is used:
redaction events themselves are dropped from the timeline and only
stored as parts of redacted events. Closes #220. Closes #196 (requires
KEEP_REDACTIONS_IN_TIMELINE for that).
https://invent.kde.org/neon/forks/libquotient/-/commit/496e106083f3740d44716b96ed1b098d61df19eb

Git commit f49d3d45451bf66237c3fc05a1ef8f77fcaec1e6 by Kitsune Ral on 16/07/2018 at 12:35..
Fix a clazy warning
https://invent.kde.org/neon/forks/libquotient/-/commit/f49d3d45451bf66237c3fc05a1ef8f77fcaec1e6

Git commit 56480bc96b28356c44547cc3d9ea1afbda9f04f9 by Kitsune Ral on 16/07/2018 at 13:11..
Connection::uploadFile(): Fix a missing negation

...leading to uploadFile() being never even functional - the code really
needs tests. Closes #221.
https://invent.kde.org/neon/forks/libquotient/-/commit/56480bc96b28356c44547cc3d9ea1afbda9f04f9

Git commit 5e6b4bb975fa9697a6aca001629c65db506a437f by Kitsune Ral on 18/07/2018 at 09:39..
csapi: Doxy-comments thanks to the latest GTAD
https://invent.kde.org/neon/forks/libquotient/-/commit/5e6b4bb975fa9697a6aca001629c65db506a437f

Git commit f3a251404c00787b650e618fb5c257162507c18b by Kitsune Ral on 18/07/2018 at 09:42..
csapi: third_party_lookup.* and its dependencies in application-service/

As per the latest API definitions.
https://invent.kde.org/neon/forks/libquotient/-/commit/f3a251404c00787b650e618fb5c257162507c18b

Git commit 50a117a7764ff134b57051a0456d4eac32ae7df5 by Kitsune Ral on 18/07/2018 at 23:44..
qmake/CMake: Add lib/application-service/definitions/*
https://invent.kde.org/neon/forks/libquotient/-/commit/50a117a7764ff134b57051a0456d4eac32ae7df5

Git commit 980b2997b78e8a1e4322fa7b25ba8c4d5199318d by Kitsune Ral on 18/07/2018 at 23:46..
Connection::stateChanged() signal

Also: as of the previous commit, we officially bump API version to 0.4
https://invent.kde.org/neon/forks/libquotient/-/commit/980b2997b78e8a1e4322fa7b25ba8c4d5199318d

Git commit f004c32ae4291fd8eca7f4106af7582e6fc86f5a by Kitsune Ral on 18/07/2018 at 23:47..
ConnectionData: use std::move()
https://invent.kde.org/neon/forks/libquotient/-/commit/f004c32ae4291fd8eca7f4106af7582e6fc86f5a

Git commit b71baf486dc276ad616e3c7b46f44b4cafb62f40 by Kitsune Ral on 19/07/2018 at 22:28..
csapi: Rename entities in application-service/

The actual change is in API definition files, this is just regeneration.
https://invent.kde.org/neon/forks/libquotient/-/commit/b71baf486dc276ad616e3c7b46f44b4cafb62f40

Git commit d3f1f39dafc87ce5b4654ac2a9b21df53dad1a4b by Kitsune Ral on 21/07/2018 at 11:09..
csapi: Fix indentaton of data structures inside job classes
https://invent.kde.org/neon/forks/libquotient/-/commit/d3f1f39dafc87ce5b4654ac2a9b21df53dad1a4b

Git commit b7586ded8583f75edab227cf810a32b9a440cabc by Black Hat on 21/07/2018 at 12:40..
Mark Room::addTag() and Room::removeTag() as Q_INVOKABLE.
https://invent.kde.org/neon/forks/libquotient/-/commit/b7586ded8583f75edab227cf810a32b9a440cabc

Git commit 287eccb4b7f88a52cd191ae208009335fca7e907 by Black Hat on 21/07/2018 at 13:37..
Overload Room:addTag.
https://invent.kde.org/neon/forks/libquotient/-/commit/287eccb4b7f88a52cd191ae208009335fca7e907

Git commit 22b14860e6b2bda990a05167ae61d8d7f24a2427 by Kitsune Ral on 21/07/2018 at 13:59..
csapi: add definitions/auth_data.* and optimise out trivial files with the latest GTAD
https://invent.kde.org/neon/forks/libquotient/-/commit/22b14860e6b2bda990a05167ae61d8d7f24a2427

Git commit 909c5db6e7bbc0d3d5d2433a22390eadca745b37 by Kitsune Ral on 22/07/2018 at 00:08..
qmake: use object_parallel_to_source
https://invent.kde.org/neon/forks/libquotient/-/commit/909c5db6e7bbc0d3d5d2433a22390eadca745b37

Git commit 0bfc7a22ce93012fed9b3ed4853959cbf6c981d0 by Kitsune Ral on 22/07/2018 at 00:11..
csapi: Minor cleanup in #includes
https://invent.kde.org/neon/forks/libquotient/-/commit/0bfc7a22ce93012fed9b3ed4853959cbf6c981d0

Git commit 34c52daab6997a0df216d41289db55ecb727860c by Kitsune Ral on 22/07/2018 at 00:49..
csapi: Minor cleanup in #includes, part 2
https://invent.kde.org/neon/forks/libquotient/-/commit/34c52daab6997a0df216d41289db55ecb727860c

Git commit 04d463a4347f54e66687a99fbc906923e50bcad1 by Black Hat on 22/07/2018 at 03:44..
Change order data type.
https://invent.kde.org/neon/forks/libquotient/-/commit/04d463a4347f54e66687a99fbc906923e50bcad1

Git commit e223f0384627ef690fd7125ed07d3ba172593430 by GitHub (on behalf of Kitsune Ral) on 22/07/2018 at 08:51..
Merge pull request #223 from encombhat/master

Expose Room::addTag() and Room::removeTag() to QML
https://invent.kde.org/neon/forks/libquotient/-/commit/e223f0384627ef690fd7125ed07d3ba172593430

Git commit 86ae04267e14ff03b5157e2d92a90fb74ce422a6 by Kitsune Ral on 22/07/2018 at 10:46..
gtad.yaml: cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/86ae04267e14ff03b5157e2d92a90fb74ce422a6

Git commit 716aa2a97d6654cc45ed6a9c8b08cad6d833e301 by Kitsune Ral on 22/07/2018 at 10:47..
Switched to GTAD 0.7-pre

{{>}} instead of {{#@filePartial}}, library macros begin with _ instead
of @, mustache/definitions split - see the GTAD commit log.
https://invent.kde.org/neon/forks/libquotient/-/commit/716aa2a97d6654cc45ed6a9c8b08cad6d833e301

Git commit cbb8c1bf4e33639d8a00341021542de99bd6bce2 by Kitsune Ral on 23/07/2018 at 10:49..
Fix rooms tags being incorrectly set

Many thanks to @encombhat for pinpointing.
https://invent.kde.org/neon/forks/libquotient/-/commit/cbb8c1bf4e33639d8a00341021542de99bd6bce2

Git commit f36f50e9b0e652cd20b2ffee32a3dbe8460de9a3 by Black Hat on 24/07/2018 at 13:46..
Fix compilation issue of qmc-example.
https://invent.kde.org/neon/forks/libquotient/-/commit/f36f50e9b0e652cd20b2ffee32a3dbe8460de9a3

Git commit 61e0c0401afe937698c65903e6b43f1c78518f8d by GitHub (on behalf of Kitsune Ral) on 24/07/2018 at 21:43..
Merge pull request #225 from encombhat/master

Fix compilation issue of qmc-example.
https://invent.kde.org/neon/forks/libquotient/-/commit/61e0c0401afe937698c65903e6b43f1c78518f8d

Git commit 6ac825fe586b36c73abcadb6300a252c1da7b45a by Kitsune Ral on 27/07/2018 at 03:16..
Omittable<>: use std::decay<>, add assertion

...against unwrapping omitted values (the release build will return a
default-constructed value).
https://invent.kde.org/neon/forks/libquotient/-/commit/6ac825fe586b36c73abcadb6300a252c1da7b45a

Git commit cbf57ac2f5def2c2f54e07707120f8b224cdb093 by Kitsune Ral on 27/07/2018 at 03:16..
event.h: drop eventCast for references; other cleanup

Omittable<> doesn't work with reference types and returning an unknown
event spoils the experience. It's much simpler to just deal with event
pointers instead.
https://invent.kde.org/neon/forks/libquotient/-/commit/cbf57ac2f5def2c2f54e07707120f8b224cdb093

Git commit a0506e5b9da88a5cac8fa4675ceb33501e085684 by Kitsune Ral on 27/07/2018 at 03:28..
makeEvent<>: Add a doc comment

[ci skip]
https://invent.kde.org/neon/forks/libquotient/-/commit/a0506e5b9da88a5cac8fa4675ceb33501e085684

Git commit d532b3f532c2daf45f6a03a7b48e923b6b7651ee by Kitsune Ral on 27/07/2018 at 03:40..
Fix compilation with Clang
https://invent.kde.org/neon/forks/libquotient/-/commit/d532b3f532c2daf45f6a03a7b48e923b6b7651ee

Git commit 284b751ee424985341812a32721227112160a905 by Kitsune Ral on 27/07/2018 at 05:33..
connectSingleShot()

Time and again I need one-off slots that disconnect once they are done. The code has been inside Connection implementation for quite some time, now it's put to the interface for usage in other places (notably qmc-example).
https://invent.kde.org/neon/forks/libquotient/-/commit/284b751ee424985341812a32721227112160a905

Git commit baee19241daffd50e0b32559cda64d5b6ede09a2 by Kitsune Ral on 27/07/2018 at 05:35..
Initial support for local echo

The Room class has gained a new internal container, unsyncedEvents, storing
locally-created Event objects that are about to be sent or are sent but not yet synced.
These objects are supposed to be complete enough to be displayed by clients
in a usual way; access to them is provided by Room::pendingEvents() accessor.
A set of pendingEvent* signals has been added to notify clients about changes
in this container (adding, removal, status update). Yet unsent events don't
have Event::id() at all; sent but yet unsynced ones have Event::id() but have
almost nothing else except the content for now (probably a sender and an
(at least local) timestamp are worth adding).

Also: SendEventJob is removed in favor of GTAD-generated SendMessageJob.
https://invent.kde.org/neon/forks/libquotient/-/commit/baee19241daffd50e0b32559cda64d5b6ede09a2

Git commit a2ebdd4baa81d21a570792e6895ed8384e43c9c4 by Kitsune Ral on 27/07/2018 at 05:35..
util.h: findFirstOf

A spin on the standard algorithm.
https://invent.kde.org/neon/forks/libquotient/-/commit/a2ebdd4baa81d21a570792e6895ed8384e43c9c4

Git commit 6559a63cdd245279d0adb02994ffc043a794733f by Kitsune Ral on 27/07/2018 at 05:35..
Provide a way to match the echo against the synced event

This needed to split the container with the freshly arrived events into parts that don't have local echo and echo'ed events, and add them to the timeline emitting two different pairs of signals. Instead of being removed, pending events are now merged (effectively they are removed from unsyncedEvents container anyway but models can represent this as an echo event being "transformed" into a full-fledged one on a timeline).
https://invent.kde.org/neon/forks/libquotient/-/commit/6559a63cdd245279d0adb02994ffc043a794733f

Git commit f1e57caac169e53194111d05b16153d13a400bfb by Kitsune Ral on 27/07/2018 at 06:16..
Make Room::postMessage and Room::postHtmlMessage return transactionId

This is at least some (actually, not even that bad) identification of a message. Ideally it would probably be to return some handler that would allow to track the end-to-end status of the event - from getting sent to landing in the timeline. Right now the experience is crippled - transactionId always exists but only works for message events and Room has no way to give the event status by transactionId. pendingEvent* signals are somewhat helping, though.
https://invent.kde.org/neon/forks/libquotient/-/commit/f1e57caac169e53194111d05b16153d13a400bfb

Git commit c7e4d01c479452aad4616ee2d5a285f4fe0565aa by Kitsune Ral on 27/07/2018 at 09:30..
Update tests (WIP)
https://invent.kde.org/neon/forks/libquotient/-/commit/c7e4d01c479452aad4616ee2d5a285f4fe0565aa

Git commit 84aa055bba602635599def37915b96ccf3f63484 by Kitsune Ral on 27/07/2018 at 09:34..
Merge branch 'kitsune-local-echo'
https://invent.kde.org/neon/forks/libquotient/-/commit/84aa055bba602635599def37915b96ccf3f63484

Git commit 53521f42d15d2553028bae09f1cd12206bc32955 by Kitsune Ral on 28/07/2018 at 09:00..
Room: validate tags before sending them to the server

See https://github.com/matrix-org/matrix-doc/pull/1457 for the background.
https://invent.kde.org/neon/forks/libquotient/-/commit/53521f42d15d2553028bae09f1cd12206bc32955

Git commit 941cfdf8b591bf14002f28e99e06c200dc5bcc84 by Kitsune Ral on 28/07/2018 at 09:57..
csapi/third_party_lookup.*: Properly pass a variadic (aka exploded) parameters

Most of the actual change was in the API definition files (thanks to @anoadragon453), plus a converter from a QJsonObject map to the URL query string.
https://invent.kde.org/neon/forks/libquotient/-/commit/941cfdf8b591bf14002f28e99e06c200dc5bcc84

Git commit 68358af90bdfbcb6f2884c6d1c795f1724cf840b by Kitsune Ral on 29/07/2018 at 09:33..
csapi: define PushRule more accurately

It's not always a JSON object; it's either a SetTweakAction object or a string. (Unfortunately, QVariant isn't a template type and there's no easy way to put Q_DECLARE_METATYPE(SetTweakAction) in a Mustache template, so adding one is left as an exercise to the user now.)
https://invent.kde.org/neon/forks/libquotient/-/commit/68358af90bdfbcb6f2884c6d1c795f1724cf840b

Git commit 0ec67c2f6ba0e122fb7274cec1aaa1ee398b9bfd by Kitsune Ral on 30/07/2018 at 23:56..
RoomEvent: don't store transactionId separately

It's present on the vast minority of events so better be embedded into
JSON instead.
https://invent.kde.org/neon/forks/libquotient/-/commit/0ec67c2f6ba0e122fb7274cec1aaa1ee398b9bfd

Git commit dc3acd336e30a17d6b5d0cbe6cde2838737c9030 by Kitsune Ral on 31/07/2018 at 00:01..
Room::readMarkerMoved: pass 'from' and 'to' ids with the signal
https://invent.kde.org/neon/forks/libquotient/-/commit/dc3acd336e30a17d6b5d0cbe6cde2838737c9030

Git commit 85b09ebc7cbcf58f1802438f600a3eaeb2286887 by Kitsune Ral on 01/08/2018 at 08:07..
Event: use Q_DISABLE_COPY
https://invent.kde.org/neon/forks/libquotient/-/commit/85b09ebc7cbcf58f1802438f600a3eaeb2286887

Git commit b0551c2164ff519ac8fcd2df5ff5a72655779f2f by Kitsune Ral on 03/08/2018 at 08:07..
Connection::sendMessage: mark as tentative

...and therefore deprecated for use in clients _yet_.
https://invent.kde.org/neon/forks/libquotient/-/commit/b0551c2164ff519ac8fcd2df5ff5a72655779f2f

Git commit de72fb7f9b6e36021c284c011f19714defe80713 by Kitsune Ral on 03/08/2018 at 08:14..
Refactor event items

* TimelineItem and a newly introduced PendingEventItem are now
inheriting from the common EventItemBase class
* PendingEventItem has its own status and annotation, serving to track
transition of the item through pending states
https://invent.kde.org/neon/forks/libquotient/-/commit/de72fb7f9b6e36021c284c011f19714defe80713

Git commit 527a12eb5b6009f679b7e18eceda782f3f5747b7 by Kitsune Ral on 03/08/2018 at 08:14..
Room::retryMessage and Room::discardMessage
https://invent.kde.org/neon/forks/libquotient/-/commit/527a12eb5b6009f679b7e18eceda782f3f5747b7

Git commit f7cb3edec2597928271f6354bf767ba891cadf74 by Kitsune Ral on 03/08/2018 at 08:32..
Fix qmc-example building
https://invent.kde.org/neon/forks/libquotient/-/commit/f7cb3edec2597928271f6354bf767ba891cadf74

Git commit 3f06bbfa88868a8f27c87b56d3b1af7019e4a410 by Kitsune Ral on 03/08/2018 at 10:22..
Room::Private::doSendEvent: more logs
https://invent.kde.org/neon/forks/libquotient/-/commit/3f06bbfa88868a8f27c87b56d3b1af7019e4a410

Git commit ed28e010c6423ccec730ca581b8d6d48c2c6cd17 by Kitsune Ral on 03/08/2018 at 11:22..
RoomEvent: fix wrong JSON key to pick/store transaction id
https://invent.kde.org/neon/forks/libquotient/-/commit/ed28e010c6423ccec730ca581b8d6d48c2c6cd17

Git commit 7298e99125522c4d010ec83052cd10ce085e09b4 by Kitsune Ral on 03/08/2018 at 11:55..
Room: improve logging, add an assertion
https://invent.kde.org/neon/forks/libquotient/-/commit/7298e99125522c4d010ec83052cd10ce085e09b4

Git commit 98751495f1990dccf285e3b4739f86de7b7f68fd by Kitsune Ral on 04/08/2018 at 11:36..
Room: avoid overloading postMessage, as QML is bad at resolving overloaded slots

Closes #227.
https://invent.kde.org/neon/forks/libquotient/-/commit/98751495f1990dccf285e3b4739f86de7b7f68fd

Git commit 463e987e590ec79eaf60501eedc0c727302bef31 by Kitsune Ral on 05/08/2018 at 09:27..
qmc-example: fixed indentation
https://invent.kde.org/neon/forks/libquotient/-/commit/463e987e590ec79eaf60501eedc0c727302bef31

Git commit 218a3771e2fdd0bc407b1906f5ebe10fcf95b011 by Kitsune Ral on 05/08/2018 at 09:27..
eventCast: add an assertion
https://invent.kde.org/neon/forks/libquotient/-/commit/218a3771e2fdd0bc407b1906f5ebe10fcf95b011

Git commit f9701e7d999fb8a8854f245d8fb636603df7730d by Kitsune Ral on 05/08/2018 at 09:33..
Room: rework processing redactions

Redaction events are now processed before, not after/along with normal
events. This complicates logistics a bit but makes sure to-be-redacted
events get redacted even before the client is notified about new
arrivals. Also, redaction events are unconditionally out of the timeline
for the moment (the non-starter KEEP_REDACTIONS_IN_TIMELINE macro is
gone). This reinstates #196 for now, which will be addressed separately.
https://invent.kde.org/neon/forks/libquotient/-/commit/f9701e7d999fb8a8854f245d8fb636603df7730d

Git commit 8bd8aaf0858bb0a0ebcac8c3d29cfbb20279164d by Kitsune Ral on 05/08/2018 at 10:58..
Room: add redaction events to the timeline

Not that it felt right but Riot does it and so should we. Closes #220.
https://invent.kde.org/neon/forks/libquotient/-/commit/8bd8aaf0858bb0a0ebcac8c3d29cfbb20279164d

Git commit c0e75a52504a3d31bcca0d4c39745d4d6c1fe917 by Kitsune Ral on 06/08/2018 at 03:01..
RoomMemberEvent: a set of is*() facility methods
https://invent.kde.org/neon/forks/libquotient/-/commit/c0e75a52504a3d31bcca0d4c39745d4d6c1fe917

Git commit c8dc0c075497ca8f174b738ee4253ca282cbec8c by Kitsune Ral on 06/08/2018 at 12:17..
Room: addedMessages passes timeline indices
https://invent.kde.org/neon/forks/libquotient/-/commit/c8dc0c075497ca8f174b738ee4253ca282cbec8c

Git commit 62e1550ed842a8a0d4c7b31d788176814a03e814 by Kitsune Ral on 11/08/2018 at 06:02..
Connection: drop extraneous Q_INVOKABLE

Slots are Q_INVOKABLE by definition.
https://invent.kde.org/neon/forks/libquotient/-/commit/62e1550ed842a8a0d4c7b31d788176814a03e814

Git commit b028dff6bf6074fdeea5d6f50e97df074f53b45b by Kitsune Ral on 11/08/2018 at 06:24..
Connection::*DirectChat(): add overloads accepting User*
https://invent.kde.org/neon/forks/libquotient/-/commit/b028dff6bf6074fdeea5d6f50e97df074f53b45b

Git commit 4442a820c8617fbb5352c44456105c0571143f58 by Kitsune Ral on 11/08/2018 at 06:40..
Connection: don't crash on invalid user ids coming from the server

Closes #230.
https://invent.kde.org/neon/forks/libquotient/-/commit/4442a820c8617fbb5352c44456105c0571143f58

Git commit 20b95b66b2cc0c8f69800570c3b1f0bc4aa413cf by Kitsune Ral on 11/08/2018 at 09:11..
JoinStates: add JoinState::Any to match any state
https://invent.kde.org/neon/forks/libquotient/-/commit/20b95b66b2cc0c8f69800570c3b1f0bc4aa413cf

Git commit 082f233dc9f429d06548fba90c8129ef3f83a4b4 by Kitsune Ral on 11/08/2018 at 09:55..
Connection::doInDirectChat: don't remove invite/left rooms from direct chats

Deletion of Invite rooms was a clear bug; as for left rooms, it makes sense to keep
them in direct chat maps because they may be re-joined later on.
https://invent.kde.org/neon/forks/libquotient/-/commit/082f233dc9f429d06548fba90c8129ef3f83a4b4

Git commit b3559aa9ac082abe96da2bae084d0645b93fb658 by Kitsune Ral on 11/08/2018 at 10:06..
Reverse direct chats map

Speeds up lookup of user(s) in a direct chat room.

Also: "The other one's"  avatar is used to set the avatar of direct
chats only, not any room with 2 participants.
https://invent.kde.org/neon/forks/libquotient/-/commit/b3559aa9ac082abe96da2bae084d0645b93fb658

Git commit 5773165cd9e5546016dc3cf3bd9538692eb6c19d by Kitsune Ral on 12/08/2018 at 00:14..
Fix building with older Qt versions
https://invent.kde.org/neon/forks/libquotient/-/commit/5773165cd9e5546016dc3cf3bd9538692eb6c19d

Git commit ae46c0409cb1b67430e967afb06bb89ef51c5d77 by Kitsune Ral on 12/08/2018 at 00:26..
Fix FTBFS (in a hacky way, needs a proper fix)
https://invent.kde.org/neon/forks/libquotient/-/commit/ae46c0409cb1b67430e967afb06bb89ef51c5d77

Git commit 825b46f42c3d7c813ccab49023e6f7ed6a5e1477 by Kitsune Ral on 12/08/2018 at 00:39..
Revert JoinState::Any introduction

Wasn't used in the code in the end.
https://invent.kde.org/neon/forks/libquotient/-/commit/825b46f42c3d7c813ccab49023e6f7ed6a5e1477

Git commit dc3d7911932057effad55c79ef5e1a12ef270e05 by Kitsune Ral on 13/08/2018 at 02:41..
ConnectionsGuard: Fix clazy warning
https://invent.kde.org/neon/forks/libquotient/-/commit/dc3d7911932057effad55c79ef5e1a12ef270e05

Git commit eae291e82ea8407c47d3b6591c2d98796bf9b006 by Kitsune Ral on 13/08/2018 at 12:12..
accountdataevents.h: Drop useless(?) static declarations for tag names
https://invent.kde.org/neon/forks/libquotient/-/commit/eae291e82ea8407c47d3b6591c2d98796bf9b006

Git commit 4e45218924babe6708fe2128574a3cf6341fe3c6 by Kitsune Ral on 13/08/2018 at 12:13..
Room::tagsChanged(): elaborate additions/removals along with the signal
https://invent.kde.org/neon/forks/libquotient/-/commit/4e45218924babe6708fe2128574a3cf6341fe3c6

Git commit b3e90ac833424ef21a0f8947f74aa3ed445e16e1 by Kitsune Ral on 19/08/2018 at 22:28..
Settings: get<>(); pass arguments more efficiently

Settings::get() and SettingsGroup::get() allow concise and efficient
type-specific interface to value(); instead of wrapping your
defaultValue into a QVariant, just pass it to get() instead of value().
https://invent.kde.org/neon/forks/libquotient/-/commit/b3e90ac833424ef21a0f8947f74aa3ed445e16e1

Git commit e507ca582b1b243ee4422a4a3e0b11b28697cb16 by Kitsune Ral on 19/08/2018 at 23:48..
Room::displaynameChanged() should pass the old name too

Also: general cleanup.
https://invent.kde.org/neon/forks/libquotient/-/commit/e507ca582b1b243ee4422a4a3e0b11b28697cb16

Git commit 41b408334619a6e755fffbef1c40e7165ab0e0f7 by Josip Delic on 25/08/2018 at 11:33..
Update marius voip to new libqtmc
https://invent.kde.org/neon/forks/libquotient/-/commit/41b408334619a6e755fffbef1c40e7165ab0e0f7

Git commit d9ff200ff62fb7f5b6b51082dc3979d5454a1bec by Kitsune Ral on 25/08/2018 at 13:40..
Update to the recent CS API (watch out for breakage)

Breaking changes:
* guest_can_join is no more a thing - neither in Connection::createRoom, nor even in CreateRoomJob (it turned out that Synapse didn't really process this flag);
* LoginJob has changed its list of arguments. If you use Connection to do logins (and you really should), you shouldn't be affected.
* GetPublicRoomsJob now returns PublicRoomsResponse instead of providing all the response parts within the job

Watch other changes in the diff.
https://invent.kde.org/neon/forks/libquotient/-/commit/d9ff200ff62fb7f5b6b51082dc3979d5454a1bec

Git commit 508d1f5e14f0286bb3feaf74c4f143ce2a950234 by Josip Delic on 25/08/2018 at 18:17..
Update make it compile
https://invent.kde.org/neon/forks/libquotient/-/commit/508d1f5e14f0286bb3feaf74c4f143ce2a950234

Git commit 9357d2bb37029858b397d17e8aa64e57da4202e8 by Josip Delic on 25/08/2018 at 19:32..
Set state event
https://invent.kde.org/neon/forks/libquotient/-/commit/9357d2bb37029858b397d17e8aa64e57da4202e8

Git commit bc83e269b8f64f5d0e712bf245d05925573e84d9 by Black Hat on 29/08/2018 at 11:54..
Use local QHash.
https://invent.kde.org/neon/forks/libquotient/-/commit/bc83e269b8f64f5d0e712bf245d05925573e84d9

Git commit a76e13b7411f7d09fdefca368e085a2e3e885903 by Black Hat on 29/08/2018 at 12:17..
Use QMultiHash.
https://invent.kde.org/neon/forks/libquotient/-/commit/a76e13b7411f7d09fdefca368e085a2e3e885903

Git commit 8d07a6bec2689a81c3c3db64e5457143bd671223 by Josip Delic on 29/08/2018 at 19:51..
Use GetTurnServerJob for csapi
https://invent.kde.org/neon/forks/libquotient/-/commit/8d07a6bec2689a81c3c3db64e5457143bd671223

Git commit 6bb64db38f4a5f47d275a663861fd216f1bcf612 by Josip Delic on 29/08/2018 at 19:56..
Merge branch 'master' of https://github.com/QMatrixClient/libqmatrixclient
https://invent.kde.org/neon/forks/libquotient/-/commit/6bb64db38f4a5f47d275a663861fd216f1bcf612

Git commit 3d446f3ff6effb87da2e2a9df0e2c7ba9073e154 by Kitsune Ral on 30/08/2018 at 00:00..
SyncJob: Add account_data to left rooms

Closes #240.
https://invent.kde.org/neon/forks/libquotient/-/commit/3d446f3ff6effb87da2e2a9df0e2c7ba9073e154

Git commit dd84d4876fb201fb2cdf6149340d5a0da06dcafb by Black Hat on 30/08/2018 at 10:44..
Remove unused check.
https://invent.kde.org/neon/forks/libquotient/-/commit/dd84d4876fb201fb2cdf6149340d5a0da06dcafb

Git commit 79f338877dec3de5ec7394f190025395877cb00b by Black Hat on 30/08/2018 at 14:11..
Add signal for read receipt.
https://invent.kde.org/neon/forks/libquotient/-/commit/79f338877dec3de5ec7394f190025395877cb00b

Git commit 62ad12b69b3b085a32c9522194b7b141d2346361 by Kitsune Ral on 02/09/2018 at 06:15..
Switch tag order from strings to floats, as The Spec preaches

The Spec wasn't entirely consistent on this until recently but floats actually are used in the wild, rather than strings.
https://invent.kde.org/neon/forks/libquotient/-/commit/62ad12b69b3b085a32c9522194b7b141d2346361

Git commit 9c9401ecadda1273395576634882b4917b961482 by Kitsune Ral on 09/09/2018 at 07:13..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/9c9401ecadda1273395576634882b4917b961482

Git commit 3dfcd0f4f4501dba5925d894b7f0fbc9414549c8 by Kitsune Ral on 09/09/2018 at 08:33..
Avatar: don't paint on null images; optimise initial placeholder generation
https://invent.kde.org/neon/forks/libquotient/-/commit/3dfcd0f4f4501dba5925d894b7f0fbc9414549c8

Git commit 0aa785e1bd0b421f3328f386a08a1fe83761d8e2 by Kitsune Ral on 09/09/2018 at 08:40..
room.h: Unify doc-comments

Doxygen/Qt style is preferred from now on.
https://invent.kde.org/neon/forks/libquotient/-/commit/0aa785e1bd0b421f3328f386a08a1fe83761d8e2

Git commit 3b8cf1a5b1277b1df0981ee41d24d6b3dcea51e6 by Kitsune Ral on 09/09/2018 at 09:21..
util.h: move qAsConst out of QMatrixClient

It's borrowed from Qt; namespacing basically forced client writers to put "using namespace QMatrixClient" before using qAsConst.
https://invent.kde.org/neon/forks/libquotient/-/commit/3b8cf1a5b1277b1df0981ee41d24d6b3dcea51e6

Git commit 2a1596c16baad77fc80391c66694101f91028deb by Kitsune Ral on 09/09/2018 at 09:23..
Room::beforeDestruction()

This is to allow connecting to before-destruction of one specific room, rather than any room under a connection (for which Connection::aboutToDeleteRoom() still exists).
https://invent.kde.org/neon/forks/libquotient/-/commit/2a1596c16baad77fc80391c66694101f91028deb

Git commit 1e78ca6b9c09cb16677ab3db1656085adbd4901b by GitHub (on behalf of Black Hat) on 12/09/2018 at 13:04..
Merge pull request #1 from QMatrixClient/master

Merge to latest commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/1e78ca6b9c09cb16677ab3db1656085adbd4901b

Git commit 5f61ec9305ba17cc414f0bd02d4f97234bc2c849 by Black Hat on 12/09/2018 at 13:09..
Add QMatrixClient.pc.in
https://invent.kde.org/neon/forks/libquotient/-/commit/5f61ec9305ba17cc414f0bd02d4f97234bc2c849

Git commit b5b0d8438bdf3cb8b37f311e8047ef6883f858c2 by GitHub (on behalf of Kitsune Ral) on 12/09/2018 at 14:10..
Merge pull request #239 from encombhat/master

Add readUser for RoomEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/b5b0d8438bdf3cb8b37f311e8047ef6883f858c2

Git commit d4f67946169670bfd74037b8169ef1e315832c20 by Black Hat on 12/09/2018 at 22:47..
Use pkg-config only on GNU/Linux.
https://invent.kde.org/neon/forks/libquotient/-/commit/d4f67946169670bfd74037b8169ef1e315832c20

Git commit 966632bc5938c42cfb13a2f66976650141e24a9b by Black Hat on 12/09/2018 at 23:47..
Fix cdynamic linking issue of pkg-config.
https://invent.kde.org/neon/forks/libquotient/-/commit/966632bc5938c42cfb13a2f66976650141e24a9b

Git commit 875514ee865b00be67542849f94d2c2561ba4137 by GitHub (on behalf of Kitsune Ral) on 13/09/2018 at 00:08..
Merge pull request #242 from encombhat/pkg-config

Add QMatrixClient.pc.in
https://invent.kde.org/neon/forks/libquotient/-/commit/875514ee865b00be67542849f94d2c2561ba4137

Git commit 78f4af8068378eab738f4acdcfe25b091b2919b2 by Kitsune Ral on 16/09/2018 at 08:31..
Use the right header file for QImage
https://invent.kde.org/neon/forks/libquotient/-/commit/78f4af8068378eab738f4acdcfe25b091b2919b2

Git commit 602a93be0160f099f6ef5dfeedac7ef91014c0f0 by Kitsune Ral on 16/09/2018 at 08:33..
Connection: make factories a bit more customisable
https://invent.kde.org/neon/forks/libquotient/-/commit/602a93be0160f099f6ef5dfeedac7ef91014c0f0

Git commit 343341e1422251a863149cad515b955aae395569 by Kitsune Ral on 16/09/2018 at 08:35..
BaseJob::rawData: only add "truncated" when actually truncated
https://invent.kde.org/neon/forks/libquotient/-/commit/343341e1422251a863149cad515b955aae395569

Git commit 52931841d816e2fd128579ef7e51eec1cbd0bb09 by Kitsune Ral on 16/09/2018 at 08:35..
Introduce Room::displaynameAboutToChange()
https://invent.kde.org/neon/forks/libquotient/-/commit/52931841d816e2fd128579ef7e51eec1cbd0bb09

Git commit e3908964948892633f09cec0df8c5b4d149c9ac7 by Black Hat on 16/09/2018 at 10:54..
Remove default avatar.
https://invent.kde.org/neon/forks/libquotient/-/commit/e3908964948892633f09cec0df8c5b4d149c9ac7

Git commit fad9f09f3a2cd0090c80c9cb817734ce810e6f12 by Josip Delic on 16/09/2018 at 19:26..
Merge remote-tracking branch 'upstream/master'
https://invent.kde.org/neon/forks/libquotient/-/commit/fad9f09f3a2cd0090c80c9cb817734ce810e6f12

Git commit eac9bfcb9aaf4426d16b47d7b2128a9fad68de70 by GitHub (on behalf of Kitsune Ral) on 17/09/2018 at 08:10..
Merge pull request #243 from QMatrixClient/default-avatar

Remove default avatar.
https://invent.kde.org/neon/forks/libquotient/-/commit/eac9bfcb9aaf4426d16b47d7b2128a9fad68de70

Git commit e7ccd1dd76b9a5124b7c9cf06cbcab029050d8df by Josip Delic on 17/09/2018 at 09:31..
remove tunrnserver
https://invent.kde.org/neon/forks/libquotient/-/commit/e7ccd1dd76b9a5124b7c9cf06cbcab029050d8df

Git commit 8837f87bd94f4daa20a7645a1c4ba0dafe842001 by Josip Delic on 17/09/2018 at 09:33..
remove tunrnserver
https://invent.kde.org/neon/forks/libquotient/-/commit/8837f87bd94f4daa20a7645a1c4ba0dafe842001

Git commit c1a3dd719b735f7f77306d92baf5923df4fb0b10 by Josip Delic on 17/09/2018 at 09:45..
return false in processStateEvent; make processCall private
https://invent.kde.org/neon/forks/libquotient/-/commit/c1a3dd719b735f7f77306d92baf5923df4fb0b10

Git commit 9fb5fd1181fc74a040630df333a20ddd29cd7b28 by GitHub (on behalf of Kitsune Ral) on 17/09/2018 at 10:31..
Merge pull request #244 from delijati/master

Updated voip pull request #110
https://invent.kde.org/neon/forks/libquotient/-/commit/9fb5fd1181fc74a040630df333a20ddd29cd7b28

Git commit ffc32a7bba6782ab4f341aa0f4bd46596475f5b9 by Black Hat on 21/09/2018 at 11:21..
Add avatar caching.
https://invent.kde.org/neon/forks/libquotient/-/commit/ffc32a7bba6782ab4f341aa0f4bd46596475f5b9

Git commit 70a56b2f525442bf5b8ad20953ab43c12ad00b7f by Black Hat on 23/09/2018 at 04:56..
Coding improvements.

Change _localFile initializer.
Move avatar into <cache>/avatar.
Remove redundant codes.
Change _localFile to QString.
Code deduplication.
https://invent.kde.org/neon/forks/libquotient/-/commit/70a56b2f525442bf5b8ad20953ab43c12ad00b7f

Git commit f5c2e47fa1ab84fdaffe03c30ba973d7dea5ac05 by Kitsune Ral on 25/09/2018 at 02:35..
Room::addTag: fix the QML-friendly overload's parameter

TagRecord::order_type is float now, not QString.
https://invent.kde.org/neon/forks/libquotient/-/commit/f5c2e47fa1ab84fdaffe03c30ba973d7dea5ac05

Git commit 4244cee8d5e0f760cccd2b45ad587670573ef03c by Kitsune Ral on 29/09/2018 at 12:59..
Prepare for CS API 0.4.0

This commit consists of two parts: upgrading the API infrastructure and trivial but sweeping update to the generated files.
1. The API infrastructure (converters.h, *.mustache and some other non-generated files) now can deal with top-level JSON arrays and response inlining; better supports property maps; and gets some formatting fixes in generated code.
2. Generated files now use QJsonValue instead of QJsonObject as a default type
to (un)marshall Matrix API data structures, to match the change in the infrastructure above

This commit is still using the old Matrix API definitions, before CS API 0.4.0. Getting to CS API 0.4.0 will come next.
https://invent.kde.org/neon/forks/libquotient/-/commit/4244cee8d5e0f760cccd2b45ad587670573ef03c

Git commit 1e6510790dab6b9141ae52993987b406399668cd by Kitsune Ral on 29/09/2018 at 13:00..
Support CS API 0.4.0

Numerous changes in CS (and now also AS) API, including compatibility-breaking ones - see the diff for details.
https://invent.kde.org/neon/forks/libquotient/-/commit/1e6510790dab6b9141ae52993987b406399668cd

Git commit b55334ac0fe89f780776bc4eab90ffe1ca3c57bb by Kitsune Ral on 29/09/2018 at 13:22..
Merge branch 'cs-api-0.4.0'
https://invent.kde.org/neon/forks/libquotient/-/commit/b55334ac0fe89f780776bc4eab90ffe1ca3c57bb

Git commit 547170c8eb03f3b8477f131724e028ef38ed16fa by GitHub (on behalf of Kitsune Ral) on 29/09/2018 at 13:48..
Merge pull request #247 from QMatrixClient/avatar-cache

WIP: Add avatar caching.
https://invent.kde.org/neon/forks/libquotient/-/commit/547170c8eb03f3b8477f131724e028ef38ed16fa

Git commit 4e3703a45fcff6433441482892cfb14fd9bd8a7c by Kitsune Ral on 30/09/2018 at 03:59..
toJson(TagRecord): don't dump order if there's none
https://invent.kde.org/neon/forks/libquotient/-/commit/4e3703a45fcff6433441482892cfb14fd9bd8a7c

Git commit 2c7f3f2a15afcdd7d5200757daa6629239593e02 by Kitsune Ral on 30/09/2018 at 04:18..
Room: use csapi/tags.h; fix tagsChanged() double-emission

Instead of overwriting the entire set of tags even on single-tag
operations, SetRoomTagJob and DeleteRoomTagJob are used now.
(Room::setTags() still uses SetRoomAccountDataJob).
https://invent.kde.org/neon/forks/libquotient/-/commit/2c7f3f2a15afcdd7d5200757daa6629239593e02

Git commit f5651c74ddddd8c66b3b42b471fbe2ff278c0d9a by Kitsune Ral on 30/09/2018 at 05:06..
Room: Unify tags both when getting and setting
https://invent.kde.org/neon/forks/libquotient/-/commit/f5651c74ddddd8c66b3b42b471fbe2ff278c0d9a

Git commit 5f2b4caa9b9cd63e1652d6550ceebecdb52df424 by Kitsune Ral on 30/09/2018 at 10:35..
Avatar: fixes and optimisations

Closes #249.
https://invent.kde.org/neon/forks/libquotient/-/commit/5f2b4caa9b9cd63e1652d6550ceebecdb52df424

Git commit 50cc85d3dea93735fe352831421eea2fcf9c24c5 by Kitsune Ral on 04/10/2018 at 05:49..
Modernise and fix code dealing with call events

Call events no more store deserialised values; instead they deserialise
values on the fly, same as all other events. They are no more treated as
state events (The Spec doesn't define them as state events in the first
place). A common base class, CallEventBase, is introduced that defines
data pieces common to all call events (call id and version).
https://invent.kde.org/neon/forks/libquotient/-/commit/50cc85d3dea93735fe352831421eea2fcf9c24c5

Git commit cb33c0a0498628ded34a5c9719d6807047a8b2cd by Kitsune Ral on 04/10/2018 at 05:49..
events.h: #ifndef DISABLE_EVENTTYPE -> #ifdef ENABLE_EVENTTYPE_ALIAS

This turns off the legacy EventType namespace with event type aliases
(EventType::RoomMessageEvent etc.). To still use it, pass -
DENABLE_EVENTTYPE_ALIAS to the compiler.
https://invent.kde.org/neon/forks/libquotient/-/commit/cb33c0a0498628ded34a5c9719d6807047a8b2cd

Git commit fa6bf46d76a69b8f1b03145a5e3d643d541ce353 by Kitsune Ral on 04/10/2018 at 23:06..
Room: fix a blunder leading to accessing data after move
https://invent.kde.org/neon/forks/libquotient/-/commit/fa6bf46d76a69b8f1b03145a5e3d643d541ce353

Git commit 50734026dfcbe0bdda2a9d0bd1656da05f29a3f2 by Krombel on 10/10/2018 at 20:09..
add http2 and pipelining for all Jobs
https://invent.kde.org/neon/forks/libquotient/-/commit/50734026dfcbe0bdda2a9d0bd1656da05f29a3f2

Git commit 246ececa1f8f0c69a6ee95d1d2de9d311d4e81b1 by GitHub (on behalf of Kitsune Ral) on 11/10/2018 at 03:18..
Merge pull request #250 from krombel/enable_http2_and_pipelining

add http2 and pipelining for all Jobs
https://invent.kde.org/neon/forks/libquotient/-/commit/246ececa1f8f0c69a6ee95d1d2de9d311d4e81b1

Git commit 98c416813177f7141079101da978fe1222574b5c by Kitsune Ral on 12/10/2018 at 06:14..
Room::addTag: use float instead of Omittable<float>

No-order is already modelled with the other overload, and Omittable<>
breaks interfacing with QML.
https://invent.kde.org/neon/forks/libquotient/-/commit/98c416813177f7141079101da978fe1222574b5c

Git commit 122ace9815ddf3652287d205809ba9defcc6b63d by Kitsune Ral on 26/10/2018 at 10:26..
Use tr() for plurals
https://invent.kde.org/neon/forks/libquotient/-/commit/122ace9815ddf3652287d205809ba9defcc6b63d

Git commit 7c7ce3d468af242364efb53e77ed12047b6a5382 by Kitsune Ral on 29/10/2018 at 03:10..
Connection::joinRoom: allow to specify intermediate servers

Closes #127.
https://invent.kde.org/neon/forks/libquotient/-/commit/7c7ce3d468af242364efb53e77ed12047b6a5382

Git commit 00f2f9f376a046717bed6818410610b6cc52dd9a by Kitsune Ral on 03/11/2018 at 11:10..
User::displayname(): avoid calling nameForRoom twice

nameForRoom() is O(n) in this context (n - number of names of a given
user).
https://invent.kde.org/neon/forks/libquotient/-/commit/00f2f9f376a046717bed6818410610b6cc52dd9a

Git commit ce3c66a55fce969753c587bd664fd51bd4fa900c by Kitsune Ral on 03/11/2018 at 12:17..
MediaThumbnailJob: minor code polishing
https://invent.kde.org/neon/forks/libquotient/-/commit/ce3c66a55fce969753c587bd664fd51bd4fa900c

Git commit 04435ef1d621b18ad837cdcb4b06155952f51f0c by Kitsune Ral on 04/11/2018 at 06:38..
DEFINE_SIMPLE_STATE_EVENT: fix value_type mistakenly dubbed as content_type
https://invent.kde.org/neon/forks/libquotient/-/commit/04435ef1d621b18ad837cdcb4b06155952f51f0c

Git commit f3221451ce29c3b571e08fe3ce51a49f252029e5 by Kitsune Ral on 04/11/2018 at 07:06..
DEFINE_SIMPLE_STATE_EVENT: fix construction from an rvalue QJsonObject
https://invent.kde.org/neon/forks/libquotient/-/commit/f3221451ce29c3b571e08fe3ce51a49f252029e5

Git commit 9993a0ea50165fd70f75b68c329ea045fb51d7f4 by Kitsune Ral on 04/11/2018 at 07:07..
Support dumping Events to QDebug
https://invent.kde.org/neon/forks/libquotient/-/commit/9993a0ea50165fd70f75b68c329ea045fb51d7f4

Git commit 2fe086f4e8f15cf366fc2cf1c9942c7b7541cec7 by Kitsune Ral on 04/11/2018 at 08:53..
StateEvent::dumpTo: add state_key to the logline
https://invent.kde.org/neon/forks/libquotient/-/commit/2fe086f4e8f15cf366fc2cf1c9942c7b7541cec7

Git commit d4edc5eb4eec92a96fcaf4eefc59943dfb59e02e by Kitsune Ral on 04/11/2018 at 08:55..
StateEventKey and std::hash<StateEventKey> to arrange state events in hashmaps
https://invent.kde.org/neon/forks/libquotient/-/commit/d4edc5eb4eec92a96fcaf4eefc59943dfb59e02e

Git commit 6dd950637d0c90c7540cd64b2eb002f1414389a5 by Kitsune Ral on 04/11/2018 at 09:01..
Room: store state events in a unified way

Closes #194.
https://invent.kde.org/neon/forks/libquotient/-/commit/6dd950637d0c90c7540cd64b2eb002f1414389a5

Git commit 23ebed25b79f4b6edf630546d7d9d571398a1640 by Kitsune Ral on 04/11/2018 at 10:55..
Profiler logging fixes and improvements
https://invent.kde.org/neon/forks/libquotient/-/commit/23ebed25b79f4b6edf630546d7d9d571398a1640

Git commit a81383549df4db8a487a847dca41900f3ab38c27 by Kitsune Ral on 04/11/2018 at 11:09..
profilerMinNsecs(): Fix a misnomer - it's PROFILER_LOG_USECS now - and document it
https://invent.kde.org/neon/forks/libquotient/-/commit/a81383549df4db8a487a847dca41900f3ab38c27

Git commit be7d25ed22abd07a254bfb8ff6c30de4fcc79e6a by Kitsune Ral on 04/11/2018 at 22:54..
isEchoEvent: check the pending event for ids, not the synced one

Synced events always have their event ids, so checking those for event id renders most of the function useless (and returns an incorrect result). Closes #248.
https://invent.kde.org/neon/forks/libquotient/-/commit/be7d25ed22abd07a254bfb8ff6c30de4fcc79e6a

Git commit bbfdedbc941e3eb53252ce7144fac787e64a6c2e by Kitsune Ral on 04/11/2018 at 22:59..
isEchoEvent: check the pending event for ids, not the synced one

Synced events always have their event ids, so checking those for event id renders most of the function useless (and returns an incorrect result). Closes #248.
https://invent.kde.org/neon/forks/libquotient/-/commit/bbfdedbc941e3eb53252ce7144fac787e64a6c2e

Git commit e85137fca110de758f59cde2f6c6368090cf65c5 by Kitsune Ral on 14/11/2018 at 12:54..
Room: ensure proper error signalling on event sending failures
https://invent.kde.org/neon/forks/libquotient/-/commit/e85137fca110de758f59cde2f6c6368090cf65c5

Git commit 6ca6dde46b9c72fc8833bc6fb81614fb705424f2 by Kitsune Ral on 14/11/2018 at 12:55..
Improvements in comments

- registerEventType(): comment the cryptic _ variable
- Room::postEvent: document the return value
- Room::Private: upgrade comments to doc-comments - even though in Private, they still are helpful to show hints in IDEs.
- General cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/6ca6dde46b9c72fc8833bc6fb81614fb705424f2

Git commit 2a72a0ad0f8b4a0d24c9c2262917ff658ca5fec4 by Kitsune Ral on 14/11/2018 at 12:55..
Room: historyEdge(), syncEdge, Private::timelineBase()

Also: make moveEventsToTimeline() always put historical events from
position -1 rather than 0 so that Private::baseState could always
correspond to the before-0 position.
https://invent.kde.org/neon/forks/libquotient/-/commit/2a72a0ad0f8b4a0d24c9c2262917ff658ca5fec4

Git commit 7ce14ccedc7a5239396e7662da1b2ba45195c271 by Kitsune Ral on 14/11/2018 at 12:55..
DEFINE_SIMPLE_STATE_EVENT: Add default constructor

...that creates an "empty" event, i.e. an event with content initialised by a default constructor (not all content types support this but those for simple events do).
https://invent.kde.org/neon/forks/libquotient/-/commit/7ce14ccedc7a5239396e7662da1b2ba45195c271

Git commit 3478e691df49b9c0938220db57b03a9c6fcbec8d by Kitsune Ral on 14/11/2018 at 12:56..
Room: fix incorrect handling of state event redactions

Also: use Matrix type instead of internal type id in StateEventKey
(Because internal type id maps to the library type system which will not
discern between Unknown events and therefore will mix together events of
different types in Room::Private::baseState/currentState. The Room code
is updated accordingly (bonus: more asserts there).)
Closes #255.
https://invent.kde.org/neon/forks/libquotient/-/commit/3478e691df49b9c0938220db57b03a9c6fcbec8d

Git commit c94ad527ed94a4c1ca368dc8c8c59e490b907649 by Kitsune Ral on 17/11/2018 at 10:50..
User::isIgnored()
https://invent.kde.org/neon/forks/libquotient/-/commit/c94ad527ed94a4c1ca368dc8c8c59e490b907649

Git commit 760c42bbb6027bfc6ebeb70a3a77608378d7c510 by Kitsune Ral on 17/11/2018 at 10:52..
StateEventBase::replacedState()

Brings event id of the state event that was in effect before this one arrived. This key is not specced but it's used in the wild since forever.
https://invent.kde.org/neon/forks/libquotient/-/commit/760c42bbb6027bfc6ebeb70a3a77608378d7c510

Git commit 6f18091a48530399908fbc6ebcb0697bae970abb by Kitsune Ral on 17/11/2018 at 11:40..
Room::processStateEvent: process banning correctly

Closes #258.
https://invent.kde.org/neon/forks/libquotient/-/commit/6f18091a48530399908fbc6ebcb0697bae970abb

Git commit 06edc1033427ca96f03954d810aef33e5c940597 by Kitsune Ral on 17/11/2018 at 12:55..
Room: cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/06edc1033427ca96f03954d810aef33e5c940597

Git commit af0c8135afce32d9e06cc2446d9c675693d2c5fb by Kitsune Ral on 18/11/2018 at 23:35..
BaseJob::rawDataSample()

A new recommended (and localisable) way of getting a piece of raw
response to display next to error messages as "details".
BaseJob::rawData() returns exactly the trimmed piece of data, no
"truncated" suffix there anymore.
https://invent.kde.org/neon/forks/libquotient/-/commit/af0c8135afce32d9e06cc2446d9c675693d2c5fb

Git commit e9d72c469b4c9a2246a086e4c47d80fe7d011179 by Kitsune Ral on 18/11/2018 at 23:35..
Room: profile addHistoricalMessageEvents (+cleanup)
https://invent.kde.org/neon/forks/libquotient/-/commit/e9d72c469b4c9a2246a086e4c47d80fe7d011179

Git commit 82c78b63cdd093853fd058740e7038e3c8a1cbbd by Kitsune Ral on 18/11/2018 at 23:35..
Room: expose eventsHistoryJob as a Q_PROPERTY
https://invent.kde.org/neon/forks/libquotient/-/commit/82c78b63cdd093853fd058740e7038e3c8a1cbbd

Git commit e5175246c809695dff2aff4b50f4ac5c0e6c2f46 by Kitsune Ral on 18/11/2018 at 23:41..
Profiler logging fixes and improvements
https://invent.kde.org/neon/forks/libquotient/-/commit/e5175246c809695dff2aff4b50f4ac5c0e6c2f46

Git commit 62ec908efc0ea2390920d319c51984f51ce450bd by Kitsune Ral on 18/11/2018 at 23:41..
profilerMinNsecs(): Fix a misnomer - it's PROFILER_LOG_USECS now - and document it
https://invent.kde.org/neon/forks/libquotient/-/commit/62ec908efc0ea2390920d319c51984f51ce450bd

Git commit bdd0b841c48b42915087fde8d86e86e01631c627 by Kitsune Ral on 18/11/2018 at 23:48..
Room: ensure proper error signalling on event sending failures
https://invent.kde.org/neon/forks/libquotient/-/commit/bdd0b841c48b42915087fde8d86e86e01631c627

Git commit a3150b2050f2669b1e263db7213235e0a317ae31 by Kitsune Ral on 18/11/2018 at 23:51..
Improvements in comments

- registerEventType(): comment the cryptic _ variable
- Room::postEvent: document the return value
- Room::Private: upgrade comments to doc-comments - even though in Private, they still are helpful to show hints in IDEs.
- General cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/a3150b2050f2669b1e263db7213235e0a317ae31

Git commit 67a1d2db7a71b3add7ca0749afe337b1a5a6db09 by Kitsune Ral on 18/11/2018 at 23:53..
Room: cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/67a1d2db7a71b3add7ca0749afe337b1a5a6db09

Git commit 4248f8a75b63b267faae56bd811cb8d3fd896495 by Kitsune Ral on 18/11/2018 at 23:54..
Room: profile addHistoricalMessageEvents (+cleanup)
https://invent.kde.org/neon/forks/libquotient/-/commit/4248f8a75b63b267faae56bd811cb8d3fd896495

Git commit 06998c1406aab9943b62d6facb36cdee1cf52115 by Kitsune Ral on 19/11/2018 at 00:18..
Room: process new state events after applying redactions

This was one more cause of #257 - the case when a redaction on a state
event arrives in the same batch as the redacted event.
https://invent.kde.org/neon/forks/libquotient/-/commit/06998c1406aab9943b62d6facb36cdee1cf52115

Git commit e1fdb33a4161b29d6df590ccea339d361d9fc4e8 by Kitsune Ral on 19/11/2018 at 00:22..
Don't cache empty events; prepare for lazy-loading

These two are intermingled in Room::addHistoricalMessageEvents because
processing empty events found in a historical batch is no different from
discovering (not lazy-loaded) members.
https://invent.kde.org/neon/forks/libquotient/-/commit/e1fdb33a4161b29d6df590ccea339d361d9fc4e8

Git commit dc3d6bd3b46ae7a9e8d9b9f62e50db982ef2b004 by Kitsune Ral on 20/11/2018 at 04:39..
Make SyncData more self-contained and prepare for cache splitting

SyncData now resides in its own pair of files and is capable to load either from file or from JSON. There is also (yet untested) capability to load rooms from files if a file name stands is the value for a given room id. This allows to store the master cache file separately from cache files for each room, massively easing the problem of bulky accounts that can overflow the poor capacity of Qt's JSON engine.
https://invent.kde.org/neon/forks/libquotient/-/commit/dc3d6bd3b46ae7a9e8d9b9f62e50db982ef2b004

Git commit 8e9e89846f75cae907bb9c2c6868dcb0f37896ae by Kitsune Ral on 20/11/2018 at 04:39..
eventloader.h: drop unneeded #include
https://invent.kde.org/neon/forks/libquotient/-/commit/8e9e89846f75cae907bb9c2c6868dcb0f37896ae

Git commit 92a504cd7255fd23c2ce4b8ffb4880e80dc1d839 by Kitsune Ral on 20/11/2018 at 06:30..
SyncJob::parseJson: fix a validation mistake
https://invent.kde.org/neon/forks/libquotient/-/commit/92a504cd7255fd23c2ce4b8ffb4880e80dc1d839

Git commit f9dccac588f2aa1c809018c0c5eb606a1470d2c5 by Kitsune Ral on 20/11/2018 at 11:26..
Add syncdata.* to libqmatrixclient.pri
https://invent.kde.org/neon/forks/libquotient/-/commit/f9dccac588f2aa1c809018c0c5eb606a1470d2c5

Git commit 7f6dec0676123629d2cdf9da7640c1e17566ed3d by Kitsune Ral on 22/11/2018 at 07:53..
Generalise and expose cacheLocation()
https://invent.kde.org/neon/forks/libquotient/-/commit/7f6dec0676123629d2cdf9da7640c1e17566ed3d

Git commit 0c3a45356a803baa0eb5e553262a85cac897ac4f by Kitsune Ral on 22/11/2018 at 07:53..
Room: Change enum, Changes flag set, and changed() signal

This allows to batch updates into signals being emitted only once per
sync. Also supercedes emitNamesChanged flag used in a few places.
https://invent.kde.org/neon/forks/libquotient/-/commit/0c3a45356a803baa0eb5e553262a85cac897ac4f

Git commit 5fb74ca3d253b658fe77aaeb6a106cf6c0a9e7f0 by Kitsune Ral on 22/11/2018 at 07:53..
Save state cache per-room

Closes #257.
https://invent.kde.org/neon/forks/libquotient/-/commit/5fb74ca3d253b658fe77aaeb6a106cf6c0a9e7f0

Git commit 7f50a504c7c4b266f98d0a0f449e3025e7a263ea by Kitsune Ral on 22/11/2018 at 12:06..
Fix QString initialisation from QStringBuilder

You can't assign a QStringBuilder to auto.
https://invent.kde.org/neon/forks/libquotient/-/commit/7f50a504c7c4b266f98d0a0f449e3025e7a263ea

Git commit 53f3fe79ef91bb5ba318b61b3a073c12409abc72 by Kitsune Ral on 22/11/2018 at 12:06..
Connection: Log when a room state cache is written
https://invent.kde.org/neon/forks/libquotient/-/commit/53f3fe79ef91bb5ba318b61b3a073c12409abc72

Git commit 64799eaf667840c7f81d80810508d948f64f97d6 by Kitsune Ral on 23/11/2018 at 06:55..
Connection::saveState: use null instead of an empty object for a room
placeholder

Otherwise placeholder objects are confused with normal room JSON objects
when loading from the cache. Closes #257 (again).
https://invent.kde.org/neon/forks/libquotient/-/commit/64799eaf667840c7f81d80810508d948f64f97d6

Git commit 49ad563550ba9d2d03fc7a519ccb857a6d08791c by Kitsune Ral on 23/11/2018 at 06:55..
Room/Connection: don't save the just loaded room cache
https://invent.kde.org/neon/forks/libquotient/-/commit/49ad563550ba9d2d03fc7a519ccb857a6d08791c

Git commit 52081fe91724e5f2a82c55f0e6230d8841dd859a by Kitsune Ral on 23/11/2018 at 06:55..
Room: track more Changes
https://invent.kde.org/neon/forks/libquotient/-/commit/52081fe91724e5f2a82c55f0e6230d8841dd859a

Git commit fd524590e3888ee5b4c0e25eb2138db4763dd0ec by Kitsune Ral on 23/11/2018 at 10:23..
Room::setLastReadEvent: save room state when updating own read marker
https://invent.kde.org/neon/forks/libquotient/-/commit/fd524590e3888ee5b4c0e25eb2138db4763dd0ec

Git commit bea4a7c81769c7e241478e4b0b29c62f389bc957 by Kitsune Ral on 23/11/2018 at 10:24..
Update CS API
https://invent.kde.org/neon/forks/libquotient/-/commit/bea4a7c81769c7e241478e4b0b29c62f389bc957

Git commit 3fc5e927de395ebd949af742d2116367e6a01712 by Hubert Chathi on 03/12/2018 at 22:53..
use the configured paths in the pkgconfig file
https://invent.kde.org/neon/forks/libquotient/-/commit/3fc5e927de395ebd949af742d2116367e6a01712

Git commit 147115e7591b87086141418ead8e0e1237362f9c by Hubert Chathi on 03/12/2018 at 23:08..
use the API version as the SOVERSION
https://invent.kde.org/neon/forks/libquotient/-/commit/147115e7591b87086141418ead8e0e1237362f9c

Git commit 754405277eef2b7d12239c0979df209dc47fe0d7 by GitHub (on behalf of Kitsune Ral) on 04/12/2018 at 09:22..
Merge pull request #261 from uhoreg/pkgconfig_path

use the configured paths in the pkgconfig file
https://invent.kde.org/neon/forks/libquotient/-/commit/754405277eef2b7d12239c0979df209dc47fe0d7

Git commit 39204f0099e5556eb46bed00f3b31413af860a45 by GitHub (on behalf of Kitsune Ral) on 04/12/2018 at 09:23..
Merge pull request #262 from uhoreg/soname

use the API version as the SOVERSION
https://invent.kde.org/neon/forks/libquotient/-/commit/39204f0099e5556eb46bed00f3b31413af860a45

Git commit 67503969a67a4d6801bf82b7bbebe0b0c67e3ecc by Kitsune Ral (on behalf of Hubert Chathi) on 04/12/2018 at 11:21..
use the configured paths in the pkgconfig file
https://invent.kde.org/neon/forks/libquotient/-/commit/67503969a67a4d6801bf82b7bbebe0b0c67e3ecc

Git commit 0f3efa2f4c43cd65fac8060a70909ad9fd6265d5 by Kitsune Ral (on behalf of Hubert Chathi) on 04/12/2018 at 11:21..
use the API version as the SOVERSION
https://invent.kde.org/neon/forks/libquotient/-/commit/0f3efa2f4c43cd65fac8060a70909ad9fd6265d5

Git commit 8ad8a74152c5701b6ca1f9a00487ba9257a439b4 by Kitsune Ral on 06/12/2018 at 12:01..
Avoid Omittable<>::operator bool

It was accidentally (and incorrectly) used in tags sorting code; will be dropped in versions after 0.4.x.
https://invent.kde.org/neon/forks/libquotient/-/commit/8ad8a74152c5701b6ca1f9a00487ba9257a439b4

Git commit c665883be52016be51f5b0a902e43885b024a8ac by Kitsune Ral on 08/12/2018 at 07:25..
Connection: Avoid Omittable<>::operator bool

It was accidentally (and incorrectly) used in tags sorting code;
will be dropped from Omittable<> in a later commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/c665883be52016be51f5b0a902e43885b024a8ac

Git commit be4a16cd4188ebeeba60768deadd88de5cc5be7b by Kitsune Ral on 08/12/2018 at 07:25..
function_traits<>: support any arity; add compile-time tests
https://invent.kde.org/neon/forks/libquotient/-/commit/be4a16cd4188ebeeba60768deadd88de5cc5be7b

Git commit 1de8d511251163ed35e0647c70c3e94e071b2fe0 by Kitsune Ral on 08/12/2018 at 07:25..
Special-case FALLTHROUGH for Clang
https://invent.kde.org/neon/forks/libquotient/-/commit/1de8d511251163ed35e0647c70c3e94e071b2fe0

Git commit 1414f3b5cc2bca3a3871bfe569510c1a422629fe by Kitsune Ral on 08/12/2018 at 07:25..
RoomMemberEvent: cleanup

Don't make JSON for event content only to parse it again; drop extraneous constructs.
https://invent.kde.org/neon/forks/libquotient/-/commit/1414f3b5cc2bca3a3871bfe569510c1a422629fe

Git commit ced7179117fd67cb1632f943f4ba1fde96423c0c by Kitsune Ral on 08/12/2018 at 07:46..
StateEvent<>: make data members private

Keeping them protected extends API surface with no reasonable use from it (and for now derived classes don't access StateEvent<> data members directly, anyway).
https://invent.kde.org/neon/forks/libquotient/-/commit/ced7179117fd67cb1632f943f4ba1fde96423c0c

Git commit ed1f15151babee9ebc690ffa5c2593119540e8f0 by Kitsune Ral on 08/12/2018 at 07:46..
Omittable: make operator-> and operator* return an empty object if omitted == true

That is, instead of Q_ASSERTing in debug builds (release builds already work that way). The idea is that since the value is default-initialised anyway it can be used as a "blank canvas" to access specific fields inside the value's structure. The next commit will use that.
https://invent.kde.org/neon/forks/libquotient/-/commit/ed1f15151babee9ebc690ffa5c2593119540e8f0

Git commit 5ea115d6eb0b60dfd0c2be5fbe5e69615b133238 by Kitsune Ral on 08/12/2018 at 07:47..
Omittable: better editability; drop implicit cast to bool
https://invent.kde.org/neon/forks/libquotient/-/commit/5ea115d6eb0b60dfd0c2be5fbe5e69615b133238

Git commit 3489b77bba1b9429925dfe9539c2a9e8137fc622 by Kitsune Ral on 08/12/2018 at 08:44..
Merge branch 'kitsune-tweaks-fixes'
https://invent.kde.org/neon/forks/libquotient/-/commit/3489b77bba1b9429925dfe9539c2a9e8137fc622

Git commit 95d4df58b39962f771885a6615efe1a682aab356 by Kitsune Ral on 08/12/2018 at 11:11..
function_traits: more tests, fix function objects/lambdas not working with some compilers

A member function reference is not the same as a member function pointer.
https://invent.kde.org/neon/forks/libquotient/-/commit/95d4df58b39962f771885a6615efe1a682aab356

Git commit 3392e66fd015e191b01f6e3fc6839edc3948e31f by Kitsune Ral on 08/12/2018 at 11:12..
Refactor toJson/fillJson

Both now use through a common JsonConverter<> template class with its
base definition tuned for structs/QJsonObjects and specialisations for
non-object types. This new implementation doesn't work with virtual
fillJson functions yet (so EventContent classes still use toJson as a
member function) and does not cope quite well with non-constructible
objects (you have to specialise JsonConverter<> rather than, more
intuitively, JsonObjectConverter<>), but overall is more streamlined
compared to the previous implementation. It also fixes one important
issue that pushed for a rewrite: the previous implementation was not
working with structure hierarchies at all so (in particular) the Filter
part of CS API was totally disfunctional.
https://invent.kde.org/neon/forks/libquotient/-/commit/3392e66fd015e191b01f6e3fc6839edc3948e31f

Git commit 9628594881346c8e06594e65d3befafc310e12d5 by Kitsune Ral on 08/12/2018 at 11:12..
EventContent: minor cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/9628594881346c8e06594e65d3befafc310e12d5

Git commit a0053484024a85ae47dcd2b464cb15c0f85109e5 by Kitsune Ral on 08/12/2018 at 11:12..
SyncJob: accept Filter instead of QString for the filter
https://invent.kde.org/neon/forks/libquotient/-/commit/a0053484024a85ae47dcd2b464cb15c0f85109e5

Git commit 1ff8a0c26fc2738a085ca0302f0471ffa95a567e by Kitsune Ral on 08/12/2018 at 11:12..
Connection: support members lazy-loading

This should cover the Connection-related part of #253.

Connection gained lazyLoading/setLazyLoading accessors and the respective Q_PROPERTY.
When lazy loading is on, sync() adds lazy_load_members: true to its filter.
https://invent.kde.org/neon/forks/libquotient/-/commit/1ff8a0c26fc2738a085ca0302f0471ffa95a567e

Git commit 9272d21ce6e5439444794e6da58e08421e8973db by Kitsune Ral on 08/12/2018 at 11:12..
Room summaries
https://invent.kde.org/neon/forks/libquotient/-/commit/9272d21ce6e5439444794e6da58e08421e8973db

Git commit 4a252aa465c7a36268e8014674800e6d98a449e9 by Kitsune Ral on 08/12/2018 at 13:39..
Omittable<>::merge<>
https://invent.kde.org/neon/forks/libquotient/-/commit/4a252aa465c7a36268e8014674800e6d98a449e9

Git commit dae8dc138f29fce19ae666eb152567a566abe229 by Kitsune Ral on 09/12/2018 at 10:28..
JoinState: use unsigned int as the underlying type
https://invent.kde.org/neon/forks/libquotient/-/commit/dae8dc138f29fce19ae666eb152567a566abe229

Git commit d51684b759f686b2c9895c5013dce88fead9661b by Kitsune Ral on 09/12/2018 at 10:45..
MSC 688: MSC-compliant RoomSummary; update Room::calculateDisplayname()

The members of the summary can be omitted in the payload; this change fixes calculation
of the roomname from hero names passed in room summary. Also: RoomSummary can be dumped to QDebug now.
https://invent.kde.org/neon/forks/libquotient/-/commit/d51684b759f686b2c9895c5013dce88fead9661b

Git commit 1678296d5b6190679a9ef950f9421945fa159f8f by Kitsune Ral on 09/12/2018 at 10:45..
fromJson, fillFromJson: avoid overwriting pods if the JSON value is undefined
https://invent.kde.org/neon/forks/libquotient/-/commit/1678296d5b6190679a9ef950f9421945fa159f8f

Git commit 9225eaec426ecd44a1c203e11e1aafe7772c46d7 by Kitsune Ral on 09/12/2018 at 10:55..
Room: track more changes; fix cache smashing upon restart

Commit fd52459 introduced a regression rendering the cache unusable
after a client restart (an empty state overwrites whatever state was in
the cache). This commit contains the fix, along with more room change
tracking.
https://invent.kde.org/neon/forks/libquotient/-/commit/9225eaec426ecd44a1c203e11e1aafe7772c46d7

Git commit 9a1453bbd56fb7912c73845fc8580ce79e694286 by Kitsune Ral on 09/12/2018 at 10:57..
Room: track more changes; fix cache smashing upon restart

Commit fd52459 introduced a regression rendering the cache unusable
after a client restart (an empty state overwrites whatever state was in
the cache). This commit contains the fix, along with more room change
tracking.

# Conflicts:
#	lib/room.h
https://invent.kde.org/neon/forks/libquotient/-/commit/9a1453bbd56fb7912c73845fc8580ce79e694286

Git commit 9b3e437f3268e251f1950000b210cf849d49c24e by Kitsune Ral on 09/12/2018 at 11:04..
Room: defer memberListChanged(); track room summary changes

This concludes beta-version of lazy-loading support in libQMatrixClient (#253).
https://invent.kde.org/neon/forks/libquotient/-/commit/9b3e437f3268e251f1950000b210cf849d49c24e

Git commit 8f39d870759de362d5ac911d6554347fb3b46759 by Kitsune Ral on 09/12/2018 at 23:22..
Suppress a function_traits<> test with lambdas on MSVC2015

Assigning a lambda to a static variable causes it to fail with
'auto must always deduce to the same type' error.
https://invent.kde.org/neon/forks/libquotient/-/commit/8f39d870759de362d5ac911d6554347fb3b46759

Git commit 501c79f55b5f6cb5df80993330d0b1ae1764024a by Kitsune Ral on 10/12/2018 at 07:32..
Room::getPreviousContent: use early return

...instead of the entire function body wrapped in an if block.
https://invent.kde.org/neon/forks/libquotient/-/commit/501c79f55b5f6cb5df80993330d0b1ae1764024a

Git commit c6720cc8bb8d45ab4d2b7390f076d50cb59cb8d3 by Kitsune Ral on 11/12/2018 at 03:23..
Expose Connection::nextBatchToken()
https://invent.kde.org/neon/forks/libquotient/-/commit/c6720cc8bb8d45ab4d2b7390f076d50cb59cb8d3

Git commit 0e67d1e92285e0c03e4e34ad747490ae4dc5482d by Kitsune Ral on 11/12/2018 at 03:26..
RoomMemberEvent: properly integrate with GetMembersByRoomJob

GetMembersByRoomJob was dysfunctional so far, creating "unknown
RoomMemberEvents" instead of proper ones. Now that we need it for lazy-
loading, it's fixed!
https://invent.kde.org/neon/forks/libquotient/-/commit/0e67d1e92285e0c03e4e34ad747490ae4dc5482d

Git commit f0bd24a830aef3405994849ce413e2d488f75429 by Kitsune Ral on 11/12/2018 at 03:29..
Make Room::setDisplayed() trigger loading all members

Closes #253.
https://invent.kde.org/neon/forks/libquotient/-/commit/f0bd24a830aef3405994849ce413e2d488f75429

Git commit 2db8593c40930c5b511678326467073bdc38384f by Kitsune Ral on 11/12/2018 at 07:30..
Merge branch 'master' into kitsune-lazy-loading
https://invent.kde.org/neon/forks/libquotient/-/commit/2db8593c40930c5b511678326467073bdc38384f

Git commit 095444aff98ac56663bb205837a57e746d950f3b by Kitsune Ral on 12/12/2018 at 04:20..
Room::allMembersLoaded(); more doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/095444aff98ac56663bb205837a57e746d950f3b

Git commit c46663aece5e001543b07d3ed901e64c38be4172 by Kitsune Ral on 12/12/2018 at 04:20..
qmc-example: Use lazy-loading; check full-loading upon setDisplayed
https://invent.kde.org/neon/forks/libquotient/-/commit/c46663aece5e001543b07d3ed901e64c38be4172

Git commit 393485594b2bb7ab3a7ddc7e49c8cae1105bf77e by Kitsune Ral on 12/12/2018 at 04:37..
Room: more doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/393485594b2bb7ab3a7ddc7e49c8cae1105bf77e

Git commit c33680b62d968e1e0e2abcdc084eaecf5dd94d2f by Kitsune Ral on 12/12/2018 at 07:50..
csapi/rooms.h: regenerate to update doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/c33680b62d968e1e0e2abcdc084eaecf5dd94d2f

Git commit cda9a0f02cc3e779da378d0328f9d24c708b2600 by Kitsune Ral on 12/12/2018 at 08:05..
gtad.yaml: use more compact definitions where possible
https://invent.kde.org/neon/forks/libquotient/-/commit/cda9a0f02cc3e779da378d0328f9d24c708b2600

Git commit 91b20cae3f60bf8c3b2b66c28911feca2d1d575d by Kitsune Ral on 12/12/2018 at 22:20..
gtad.yaml: use more compact definitions where possible
https://invent.kde.org/neon/forks/libquotient/-/commit/91b20cae3f60bf8c3b2b66c28911feca2d1d575d

Git commit 5b06b165ba2adec50099452bcf4c5f20009423ad by Kitsune Ral on 12/12/2018 at 22:23..
gtad.yaml: wrap bool in Omittable<>

Case in point: https://github.com/matrix-org/matrix-doc/issues/1750
https://invent.kde.org/neon/forks/libquotient/-/commit/5b06b165ba2adec50099452bcf4c5f20009423ad

Git commit 8dcda23ed210151904c9137067626eddae683822 by Kitsune Ral on 12/12/2018 at 22:47..
Regenerate csapi/
https://invent.kde.org/neon/forks/libquotient/-/commit/8dcda23ed210151904c9137067626eddae683822

Git commit b4aa613c82aabd0082dd68c1cf2e1598c19bb73e by Kitsune Ral on 12/12/2018 at 22:58..
Merge branch 'kitsune-omittable-bool' into kitsune-lazy-loading
https://invent.kde.org/neon/forks/libquotient/-/commit/b4aa613c82aabd0082dd68c1cf2e1598c19bb73e

Git commit 07c9eacc0d0009040e359fd822674a48ef8edeac by Kitsune Ral on 12/12/2018 at 23:00..
Bump room state cache version to reset the cache
https://invent.kde.org/neon/forks/libquotient/-/commit/07c9eacc0d0009040e359fd822674a48ef8edeac

Git commit 50571a92b4e9f634c4daf546222fa082120db6c7 by Kitsune Ral on 12/12/2018 at 23:12..
Merge branch 'kitsune-joinstate-unsigned'
https://invent.kde.org/neon/forks/libquotient/-/commit/50571a92b4e9f634c4daf546222fa082120db6c7

Git commit cb5f0f61e74cdc4ee64530cd73af0d080538bc1e by Kitsune Ral on 13/12/2018 at 01:17..
Connection: initialize lazyLoading member variable
https://invent.kde.org/neon/forks/libquotient/-/commit/cb5f0f61e74cdc4ee64530cd73af0d080538bc1e

Git commit cf4759edba82baf51dd40285d2e13b200ca7fd29 by Kitsune Ral on 13/12/2018 at 10:55..
qmc-example: Fix the lazy-loading test
https://invent.kde.org/neon/forks/libquotient/-/commit/cf4759edba82baf51dd40285d2e13b200ca7fd29

Git commit 2cbb053faeae1f23606c56ef9fd9d13ca4a2dd21 by Kitsune Ral on 13/12/2018 at 10:56..
Room::getAllMembers: fix off-by-one error
https://invent.kde.org/neon/forks/libquotient/-/commit/2cbb053faeae1f23606c56ef9fd9d13ca4a2dd21

Git commit 12a0b95fdcfea15cd0ef313aec8868656629b986 by Kitsune Ral on 14/12/2018 at 13:24..
qmc-example: clearer QMC_CHECK; start tests only after the first sync is done

Because lazy-loading test is executed on a room different from the test room.
https://invent.kde.org/neon/forks/libquotient/-/commit/12a0b95fdcfea15cd0ef313aec8868656629b986

Git commit fcc8d2ca615fce6e42bf1cf6585d60f94a2db926 by GitHub (on behalf of Kitsune Ral) on 14/12/2018 at 14:32..
Merge pull request #263 from QMatrixClient/kitsune-lazy-loading

Lazy loading members
https://invent.kde.org/neon/forks/libquotient/-/commit/fcc8d2ca615fce6e42bf1cf6585d60f94a2db926

Git commit bf5401753432533b31e7d18519c2031c84e774b7 by Kitsune Ral on 16/12/2018 at 05:22..
Room::getAllMembers: revert off-by-one "bugfix"

It actually introduces an off-by-one error; the original code was
correct. #qmatrixclient:matrix.org is used instead of #test:matrix.org
to check lazy-loading (see https://github.com/matrix-org/synapse/issues/4300)
https://invent.kde.org/neon/forks/libquotient/-/commit/bf5401753432533b31e7d18519c2031c84e774b7

Git commit 6276e6694a8fe2f8b37374ac8080a92721064eba by Kitsune Ral on 16/12/2018 at 05:22..
Room: messageSent(), better pendingEventAboutToAdd(), more doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/6276e6694a8fe2f8b37374ac8080a92721064eba

Git commit 2b68f4ae10d6c61b47c983e496380c86da1ff211 by Kitsune Ral on 16/12/2018 at 05:22..
qmc-example: refactor QMCTest to properly order actions

To be more specific:
- No race condition in running tests when the test room is already
joined; joining occurs before the very first sync.
- qmc-example doesn't (in vain) wait for the last sync in order to make
sure the final message ("All tests finished") is delivered - uses
Room::messageSent() instead now.
- Running QMCTest::loadMembers() does not rely on having a test room
https://invent.kde.org/neon/forks/libquotient/-/commit/2b68f4ae10d6c61b47c983e496380c86da1ff211

Git commit d81e33841e0e2bb7dacc562aea7b820900b0d074 by Kitsune Ral on 16/12/2018 at 05:27..
qmc-example: check Room::messageSent() more carefully
https://invent.kde.org/neon/forks/libquotient/-/commit/d81e33841e0e2bb7dacc562aea7b820900b0d074

Git commit 163f0acb78b62eeb5ca75ead2fa0beba816fb68a by Matthew Hodgson on 16/12/2018 at 17:00..
fix macOS installation instructions
https://invent.kde.org/neon/forks/libquotient/-/commit/163f0acb78b62eeb5ca75ead2fa0beba816fb68a

Git commit 3bf592eff94f4a2d3e9094d74b7462214ee0b341 by GitHub (on behalf of Kitsune Ral) on 16/12/2018 at 23:34..
Merge pull request #265 from ara4n/matthew/macos

fix macOS installation instructions
https://invent.kde.org/neon/forks/libquotient/-/commit/3bf592eff94f4a2d3e9094d74b7462214ee0b341

Git commit 40979a2c81f28ccd165982bd137c25a94f34c4cc by Kitsune Ral on 24/12/2018 at 04:50..
Clarify doc-comment for BaseJob::finished a bit

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/40979a2c81f28ccd165982bd137c25a94f34c4cc

Git commit 5e85dba348676009b2e3b1e41ce9d3e7b8bca1ca by Kitsune Ral on 26/12/2018 at 01:56..
RoomAvatarEvent: use correct #includes
https://invent.kde.org/neon/forks/libquotient/-/commit/5e85dba348676009b2e3b1e41ce9d3e7b8bca1ca

Git commit 241f7165816624da45fca58578885b17589ec1f7 by Kitsune Ral on 26/12/2018 at 03:40..
EventContent: allow empty (default-constructed) thumbnails
https://invent.kde.org/neon/forks/libquotient/-/commit/241f7165816624da45fca58578885b17589ec1f7

Git commit 34da172eadf142cb13825086ab10e5627fff2668 by Hubert Chathi on 27/12/2018 at 22:19..
initial Debianization
https://invent.kde.org/neon/forks/libquotient/-/commit/34da172eadf142cb13825086ab10e5627fff2668

Git commit eb8a2396c4e0a5e4e38b743d14891a0d51a43e41 by qso on 04/01/2019 at 22:43..
added option for installation of qmc-example application
https://invent.kde.org/neon/forks/libquotient/-/commit/eb8a2396c4e0a5e4e38b743d14891a0d51a43e41

Git commit 6a34116431067e8f5d56b8e24d6205ed1b9e35c8 by Kitsune Ral on 05/01/2019 at 10:45..
qmc-example: streamline redaction test

...using features from the new lib.
https://invent.kde.org/neon/forks/libquotient/-/commit/6a34116431067e8f5d56b8e24d6205ed1b9e35c8

Git commit f545d181ade8736dfda93e8abb34ab93ac34e931 by Kitsune Ral on 05/01/2019 at 10:46..
.travis.yml: use Homebrew addon and newer image

The current default lands on a blunder with SSLSetALPNProtocols function
(similar to https://stackoverflow.com/questions/46685756/how-do-i-make-
use-of-sslsetalpnprotocols).
https://invent.kde.org/neon/forks/libquotient/-/commit/f545d181ade8736dfda93e8abb34ab93ac34e931

Git commit 3b88c2b537b6cb98dcd0f2066d39e426b5cc52da by Kitsune Ral on 05/01/2019 at 12:01..
Connection::upload*: autodetect content type if not supplied
https://invent.kde.org/neon/forks/libquotient/-/commit/3b88c2b537b6cb98dcd0f2066d39e426b5cc52da

Git commit e017dd42637071687f88f5a36e7e03f1536332be by Kitsune Ral on 05/01/2019 at 12:01..
FileTransferInfo: new properties: isUpload and started

Also: use constructors instead of list-based initialisation in FileTransferPrivateInfo to enable a case of "invalid/empty" FileTransferPrivateInfo with status == None.
https://invent.kde.org/neon/forks/libquotient/-/commit/e017dd42637071687f88f5a36e7e03f1536332be

Git commit 143fffcf3962184befbbe37bebc5544d25bc7c39 by Kitsune Ral on 05/01/2019 at 12:01..
Room::fileSource

Also: const'ified other methods related to file urls.
https://invent.kde.org/neon/forks/libquotient/-/commit/143fffcf3962184befbbe37bebc5544d25bc7c39

Git commit 3ecf762f497a4d4b6ea7583689c0b9b284300201 by Kitsune Ral on 05/01/2019 at 12:01..
EventContent: use qint64 for the payload size
https://invent.kde.org/neon/forks/libquotient/-/commit/3ecf762f497a4d4b6ea7583689c0b9b284300201

Git commit 4ec3dd92d2cb5af4cf4893770e29db51d23e0e67 by Kitsune Ral on 05/01/2019 at 12:01..
Make content in events editable
https://invent.kde.org/neon/forks/libquotient/-/commit/4ec3dd92d2cb5af4cf4893770e29db51d23e0e67

Git commit 77830a97e524a4bd27d8cbcd3830cbe450a5755a by Kitsune Ral on 05/01/2019 at 12:01..
EventContent: only dump to json non-empty/valid values
https://invent.kde.org/neon/forks/libquotient/-/commit/77830a97e524a4bd27d8cbcd3830cbe450a5755a

Git commit f6740316dfcdb287b019b4258df2213c31965d42 by Kitsune Ral on 05/01/2019 at 12:01..
PendingEventItem: add FileUploaded status and setFileUploaded helper function
https://invent.kde.org/neon/forks/libquotient/-/commit/f6740316dfcdb287b019b4258df2213c31965d42

Git commit 3dcf0d3fd1e64d64b57976e400888fe8a02c4451 by Kitsune Ral on 05/01/2019 at 12:01..
Room::postFile() and supplementary things in Room::Private
https://invent.kde.org/neon/forks/libquotient/-/commit/3dcf0d3fd1e64d64b57976e400888fe8a02c4451

Git commit e3c1b93483eafbb94f1224b57e562984f4100538 by Kitsune Ral on 05/01/2019 at 12:01..
Support file events in Room::retryMessage/discardMessage
https://invent.kde.org/neon/forks/libquotient/-/commit/e3c1b93483eafbb94f1224b57e562984f4100538

Git commit 816377ea3c204f22698e1458b815fdd3c3837adc by Kitsune Ral on 05/01/2019 at 12:01..
More defaults to construct LocationContent and PlayableContent
https://invent.kde.org/neon/forks/libquotient/-/commit/816377ea3c204f22698e1458b815fdd3c3837adc

Git commit 2a6cbbff8246dd2f682624d1551facb2813394ad by Kitsune Ral on 05/01/2019 at 12:01..
RoomMessageEvent: easier creation of file-based events
https://invent.kde.org/neon/forks/libquotient/-/commit/2a6cbbff8246dd2f682624d1551facb2813394ad

Git commit fb46c2d2a6e53557452837c2690f32a56387fcac by Kitsune Ral on 05/01/2019 at 12:01..
Room: findPendingEvent; fixes for postFile()
https://invent.kde.org/neon/forks/libquotient/-/commit/fb46c2d2a6e53557452837c2690f32a56387fcac

Git commit e3578b3cc6b978db1c04a1f684e1a03676c33f3b by Kitsune Ral on 05/01/2019 at 12:01..
EventContent::ImageInfo: support originalFilename in POD constructor

It's not mandated by the spec for anything except m.file but hey it's
convenient.
https://invent.kde.org/neon/forks/libquotient/-/commit/e3578b3cc6b978db1c04a1f684e1a03676c33f3b

Git commit 24c80a57fe1a79289f3028a81d6f8e0ac5f505fe by Kitsune Ral on 05/01/2019 at 12:49..
API version++; use QMediaResource from QtMultimedia (new dep) to detect m.video
resolution

The API version number should have been bumped long ago.
https://invent.kde.org/neon/forks/libquotient/-/commit/24c80a57fe1a79289f3028a81d6f8e0ac5f505fe

Git commit e31bc6fe6b87562ea7879ab5ad1f8556f6df2d1d by Kitsune Ral on 05/01/2019 at 12:49..
qmc-example: upgrade sendMesage() test; add sendFile() test

Now really closes #267.
https://invent.kde.org/neon/forks/libquotient/-/commit/e31bc6fe6b87562ea7879ab5ad1f8556f6df2d1d

Git commit 27555e44dfbaae26a0e030cb3c22eb00ba8371f0 by Kitsune Ral on 05/01/2019 at 13:10..
Add Qt5::Multimedia to examples/CMakeLists.txt too
https://invent.kde.org/neon/forks/libquotient/-/commit/27555e44dfbaae26a0e030cb3c22eb00ba8371f0

Git commit 9c08bbce341081a8ccbe0fccf48658b3e75e02cf by GitHub (on behalf of Kitsune Ral) on 05/01/2019 at 15:12..
Merge pull request #272 from QMatrixClient/kitsune-upload-attachments

Support of attachments uploading
https://invent.kde.org/neon/forks/libquotient/-/commit/9c08bbce341081a8ccbe0fccf48658b3e75e02cf

Git commit e3a048ed3a8a5060affe6fcba1e1867294351177 by Kitsune Ral on 06/01/2019 at 01:35..
RoomEvent: don't log transactionId anymore

It's already logged in Room - actually, several times at different
stages.
https://invent.kde.org/neon/forks/libquotient/-/commit/e3a048ed3a8a5060affe6fcba1e1867294351177

Git commit a23fa6df08008f4a3f7437efa8afe839a102dc8e by Kitsune Ral on 06/01/2019 at 08:43..
visit(): pass decayed event types to is()

So that is<> could be specialised for some types.
https://invent.kde.org/neon/forks/libquotient/-/commit/a23fa6df08008f4a3f7437efa8afe839a102dc8e

Git commit c83a73b17eaef465150458282e63a478ba238f26 by Kitsune Ral on 06/01/2019 at 08:45..
Create StateEventBase events if state_key is there

This makes unknown state events to still be treated as state events.
https://invent.kde.org/neon/forks/libquotient/-/commit/c83a73b17eaef465150458282e63a478ba238f26

Git commit 0a09894add1c155279bfe5362d3a676f616b4530 by Kitsune Ral on 06/01/2019 at 09:39..
README.md: add/update badges
https://invent.kde.org/neon/forks/libquotient/-/commit/0a09894add1c155279bfe5362d3a676f616b4530

Git commit de292f1537863846c9bb43de65a3c1ef4f37d18d by GitHub (on behalf of Kitsune Ral) on 06/01/2019 at 10:41..
README.md: make the CII badge a bit more prominent

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/de292f1537863846c9bb43de65a3c1ef4f37d18d

Git commit 5d570825262a0ac0f78deedbd393c5d258493dc2 by qso on 06/01/2019 at 22:28..
added info for QMATRIXCLIENT_INSTALL_EXAMPLE option to README
https://invent.kde.org/neon/forks/libquotient/-/commit/5d570825262a0ac0f78deedbd393c5d258493dc2

Git commit a5e804c88d8c1940e920f91eea7a8be466eef53e by GitHub (on behalf of Kitsune Ral) on 10/01/2019 at 07:22..
Merge pull request #271 from qsodev/example_install

added option for installation of qmc-example application
https://invent.kde.org/neon/forks/libquotient/-/commit/a5e804c88d8c1940e920f91eea7a8be466eef53e

Git commit 7b6ba76954f88558a638f174c68a87207fe4788d by Kitsune Ral on 13/01/2019 at 05:01..
util.h: check for fallthrough attribute instead of C++ version
https://invent.kde.org/neon/forks/libquotient/-/commit/7b6ba76954f88558a638f174c68a87207fe4788d

Git commit d5c07b98cd708d0bf4590e7fd249aa972b090461 by Kitsune Ral on 13/01/2019 at 05:01..
Fix Omittables accidentally becoming non-omitted when compared with non-Omittable values
https://invent.kde.org/neon/forks/libquotient/-/commit/d5c07b98cd708d0bf4590e7fd249aa972b090461

Git commit 8dc2a3273ac3a5bb518fa987b25e3df15106c4d2 by Kitsune Ral on 13/01/2019 at 05:01..
Connection::provideRoom: allow omitting join state
https://invent.kde.org/neon/forks/libquotient/-/commit/8dc2a3273ac3a5bb518fa987b25e3df15106c4d2

Git commit 3f39c30bffcb4ebc8eefe9bd9feb1b71b1c13981 by Kitsune Ral on 13/01/2019 at 07:11..
Room::Room: initialise display name

So that the room has at least some display name before any events come
to it.
https://invent.kde.org/neon/forks/libquotient/-/commit/3f39c30bffcb4ebc8eefe9bd9feb1b71b1c13981

Git commit a9bdc89f66ba283859fd9ca7383a7256198174ed by Kitsune Ral on 13/01/2019 at 07:12..
Connection: fix/workaround glitches on joining/leaving

Closes #273, in particular.
https://invent.kde.org/neon/forks/libquotient/-/commit/a9bdc89f66ba283859fd9ca7383a7256198174ed

Git commit 007bd03300666ccab6d7887f5987df2a0085bab1 by Kitsune Ral on 13/01/2019 at 08:12..
util.h: check for fallthrough attribute instead of C++ version
https://invent.kde.org/neon/forks/libquotient/-/commit/007bd03300666ccab6d7887f5987df2a0085bab1

Git commit 4824705ea4eddfdb5d3845a64a96a1f5e2c022d0 by Kitsune Ral on 13/01/2019 at 08:12..
qmc-example: improve conclusion code

Make the HTML version of the report and send it to the room if available
(tests HTML outlooks along the way).
https://invent.kde.org/neon/forks/libquotient/-/commit/4824705ea4eddfdb5d3845a64a96a1f5e2c022d0

Git commit a5267dbaa22581e316f440dc7327f2e7431012d5 by Kitsune Ral on 13/01/2019 at 08:12..
qt_connection_util.h: a new home for connectSingleShot() and newly made connectUntil()
https://invent.kde.org/neon/forks/libquotient/-/commit/a5267dbaa22581e316f440dc7327f2e7431012d5

Git commit 5544331af35bb3f0533975611d1e432ba6817a5c by Kitsune Ral on 13/01/2019 at 08:12..
qmc-example: use connectUntil()
https://invent.kde.org/neon/forks/libquotient/-/commit/5544331af35bb3f0533975611d1e432ba6817a5c

Git commit ebe43ac929393787a9a55cf7569b540c73f8048c by Kitsune Ral on 13/01/2019 at 08:19..
Security fix: require that state events have state_key

This has been fixed in the past but got undone after the great remaking of the event types system. Further commits will introduce tests to make sure this does not get undone again.

# Conflicts:
#	lib/events/stateevent.cpp
https://invent.kde.org/neon/forks/libquotient/-/commit/ebe43ac929393787a9a55cf7569b540c73f8048c

Git commit 3cb7982fda8c0049eff51a9ab65eb43667e2c4ce by Kitsune Ral on 13/01/2019 at 08:53..
Fix building with Qt before 5.10

See https://bugreports.qt.io/browse/QTBUG-60339
https://invent.kde.org/neon/forks/libquotient/-/commit/3cb7982fda8c0049eff51a9ab65eb43667e2c4ce

Git commit 4c30996f28bfb6507eb5fb6f730a8769f8d964e3 by Kitsune Ral on 13/01/2019 at 09:02..
Security fix: require that state events have state_key

This has been fixed in the past but got undone after the great remaking of the event types system. Further commits will introduce tests to make sure this does not get undone again.
https://invent.kde.org/neon/forks/libquotient/-/commit/4c30996f28bfb6507eb5fb6f730a8769f8d964e3

Git commit e2c0148960e6e2b4595599de94d7a867f13782a0 by Kitsune Ral on 13/01/2019 at 09:02..
qmc-example: add setTopic test for true and fake state changes
https://invent.kde.org/neon/forks/libquotient/-/commit/e2c0148960e6e2b4595599de94d7a867f13782a0

Git commit bdbdaff756cbd1402339d75faddc6c2beebc6eed by Kitsune Ral on 13/01/2019 at 09:20..
qmc-example: add setTopic test for true and fake state changes
https://invent.kde.org/neon/forks/libquotient/-/commit/bdbdaff756cbd1402339d75faddc6c2beebc6eed

Git commit d76424cb6c16cdef29761f00592db05989532a20 by Kitsune Ral on 13/01/2019 at 09:21..
Merge branch 'kitsune-fake-state-events-immunity'
https://invent.kde.org/neon/forks/libquotient/-/commit/d76424cb6c16cdef29761f00592db05989532a20

Git commit 863848b2158e3278ae65d25de0b189a6008c60d1 by Kitsune Ral on 13/01/2019 at 09:54..
Update version in CMakeLists.txt
https://invent.kde.org/neon/forks/libquotient/-/commit/863848b2158e3278ae65d25de0b189a6008c60d1

Git commit 23bf0e83aec1adaf81d9c50ce2385a98c20e3c93 by Kitsune Ral on 13/01/2019 at 10:23..
Merge branch 'kitsune-workaround-stuck-invites'
https://invent.kde.org/neon/forks/libquotient/-/commit/23bf0e83aec1adaf81d9c50ce2385a98c20e3c93

Git commit d488348d41b1abecd858a2625099dc94a8b05eac by Hubert Chathi on 14/01/2019 at 16:21..
Merge branch 'upstream' (v0.4.2.1)
https://invent.kde.org/neon/forks/libquotient/-/commit/d488348d41b1abecd858a2625099dc94a8b05eac

Git commit f438d37b169965ee0a9937b5178560a653f1197b by Kitsune Ral on 15/01/2019 at 07:43..
.travis.yml: Use ninja on Linux
https://invent.kde.org/neon/forks/libquotient/-/commit/f438d37b169965ee0a9937b5178560a653f1197b

Git commit cc7d034fa67196ad4950d3785aff64e4c5765855 by Alexey Andreyev on 30/01/2019 at 16:32..
Connection: infinite sync loop logic by default
https://invent.kde.org/neon/forks/libquotient/-/commit/cc7d034fa67196ad4950d3785aff64e4c5765855

Git commit 22dd5f1e8988b03a691487cdad164a82a36e7f8c by Alexey Andreyev on 03/02/2019 at 08:07..
Connection: separated sync loop logic with delay control

Signed-off-by: Alexey Andreyev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/22dd5f1e8988b03a691487cdad164a82a36e7f8c

Git commit bf6cd3d29052f9e79fee29c6a6646d95271a196a by Alexey Andreyev on 05/02/2019 at 10:59..
Connection: simplified sync loop logic without delays

Signed-off-by: Alexey Andreyev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/bf6cd3d29052f9e79fee29c6a6646d95271a196a

Git commit ae7a982f03e8e57eab014bcd8dd099d9248e63d8 by Kitsune Ral on 09/02/2019 at 10:13..
csapi: presence lists are no more
https://invent.kde.org/neon/forks/libquotient/-/commit/ae7a982f03e8e57eab014bcd8dd099d9248e63d8

Git commit c810b069ab827b1149aeeb9e1f662e5ef85867e5 by Kitsune Ral on 09/02/2019 at 12:15..
csapi: GetVersionsJob now returns unstableFeatures (MSC1497)
https://invent.kde.org/neon/forks/libquotient/-/commit/c810b069ab827b1149aeeb9e1f662e5ef85867e5

Git commit d1cf4bc530613a9d3ee10768dd068a0391f6e105 by Kitsune Ral on 09/02/2019 at 12:15..
csapi: GetCapabilitiesJob (MSC1753)
https://invent.kde.org/neon/forks/libquotient/-/commit/d1cf4bc530613a9d3ee10768dd068a0391f6e105

Git commit 0ec97b031c4d89acc9ea6e343620f3762f8eb51b by Kitsune Ral on 09/02/2019 at 12:16..
csapi: UpgradeRoomJob (MSC1501)
https://invent.kde.org/neon/forks/libquotient/-/commit/0ec97b031c4d89acc9ea6e343620f3762f8eb51b

Git commit ee1d26586572d4d74105a0713d0237dbc2d183f0 by Kitsune Ral on 09/02/2019 at 12:16..
csapi: add RedirectToSSOJob

This is actually a rehash (MSC1721) of redirectToCAS that existed before but was explicitly disabled in the library because of its seeming uselessness in the context of non-web clients. On the second thought, however, `RedirectToSSOJob::makeRequestURL()` can actually be used to open a web browser from a non-web client in order to perform the login procedure.
https://invent.kde.org/neon/forks/libquotient/-/commit/ee1d26586572d4d74105a0713d0237dbc2d183f0

Git commit 7337876aac42552da6d926b38d7466cf2e51b7d8 by Kitsune Ral on 09/02/2019 at 12:16..
csapi: support redirect-after-login (MSC1730)
https://invent.kde.org/neon/forks/libquotient/-/commit/7337876aac42552da6d926b38d7466cf2e51b7d8

Git commit 73c836239bfa35713ad76d5e205ce2f2dceffffd by Alexey Andreyev on 10/02/2019 at 12:08..
Connection: move syncLoopTimeout to Connection::Private

Signed-off-by: Alexey Andreyev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/73c836239bfa35713ad76d5e205ce2f2dceffffd

Git commit 1e273212eca1dfa294d1a4bb9271261bf5671aa3 by Kitsune Ral on 10/02/2019 at 23:05..
SimpleContent: don't derive from Base as it gives zero added value

Originally there was an idea to make a common base class for all event content. Aside from really trivial unification of toJson() this doesn't span across various types of events, and since state events use static, rather than dynamic, polymorphism (StateEvent<> is a template with the aggregated content vs. RoomMessageEvent with the aggregated pointer-to-content-base), there's no considerable value in using the base class. If state events start using the same approach as message events, this may be brought back but not until then.
https://invent.kde.org/neon/forks/libquotient/-/commit/1e273212eca1dfa294d1a4bb9271261bf5671aa3

Git commit e9ace5cbe8a930a8aa3cc81df1a4f73d51c5fa90 by Kitsune Ral on 10/02/2019 at 23:24..
Connection::createRoom: support passing a room version

On the path to address #233.
https://invent.kde.org/neon/forks/libquotient/-/commit/e9ace5cbe8a930a8aa3cc81df1a4f73d51c5fa90

Git commit 01230c16ef8b529ec07d429617247ee383e5c2bb by Kitsune Ral on 10/02/2019 at 23:44..
RoomCreateEvent

Closes #234.
https://invent.kde.org/neon/forks/libquotient/-/commit/01230c16ef8b529ec07d429617247ee383e5c2bb

Git commit e98ec84ab31b2dc656597ac5c87a8299b6c8aed8 by GitHub (on behalf of Kitsune Ral) on 11/02/2019 at 00:10..
Merge pull request #274 from a-andreyev/aa13q-loop-logic

Connection: additional infinite sync loop logic
https://invent.kde.org/neon/forks/libquotient/-/commit/e98ec84ab31b2dc656597ac5c87a8299b6c8aed8

Git commit 63e2c0338e07cbc1939a5ad0f8047a9edab9b97c by Kitsune Ral on 11/02/2019 at 12:07..
Merge branch 'kitsune-update-matrix-api'
https://invent.kde.org/neon/forks/libquotient/-/commit/63e2c0338e07cbc1939a5ad0f8047a9edab9b97c

Git commit 1c83d54f705ad786e4a27aaab94e3a0af725a07c by Kitsune Ral on 14/02/2019 at 22:47..
Omittable: disallow implicit conversion to value_type altogether

Because it works, and fails, in surprising ways. And none of the code uses it, as of now.
https://invent.kde.org/neon/forks/libquotient/-/commit/1c83d54f705ad786e4a27aaab94e3a0af725a07c

Git commit 52dcb27e1c19389bd833c93609910483ea3be549 by Kitsune Ral on 14/02/2019 at 22:47..
RoomVersionsCapability: fix naming for 'default' parameter

The same word is used as a predicate in push_rule.yaml and
as a noun in capabilities.yaml; fortunately, GTAD gives some
means to distinguish the two.
https://invent.kde.org/neon/forks/libquotient/-/commit/52dcb27e1c19389bd833c93609910483ea3be549

Git commit a2d9a7b865bfd93386844270849ab72b36a86fbe by Kitsune Ral on 14/02/2019 at 22:47..
csapi/capabilities.*: fix the definition

As per https://github.com/matrix-org/matrix-doc/pull/1879.
https://invent.kde.org/neon/forks/libquotient/-/commit/a2d9a7b865bfd93386844270849ab72b36a86fbe

Git commit 3285850731022773c45621509205b9e8cd790282 by Kitsune Ral on 14/02/2019 at 22:47..
Merge branch 'kitsune-backend-fixes'
https://invent.kde.org/neon/forks/libquotient/-/commit/3285850731022773c45621509205b9e8cd790282

Git commit 9a0f5ce3de03cb7479737da62b38fd6a63898651 by Kitsune Ral on 14/02/2019 at 22:49..
Merge branch 'master' into kitsune-room-versions
https://invent.kde.org/neon/forks/libquotient/-/commit/9a0f5ce3de03cb7479737da62b38fd6a63898651

Git commit e12fc32b94c3840249676b2e0656c174846f1c6e by Kitsune Ral on 14/02/2019 at 22:49..
Connection: load supported room versions

A part of #236.
https://invent.kde.org/neon/forks/libquotient/-/commit/e12fc32b94c3840249676b2e0656c174846f1c6e

Git commit a8adbc1d3c8ba787321ebd558062a9c12b12324a by Kitsune Ral on 15/02/2019 at 02:10..
RoomTombstoneEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/a8adbc1d3c8ba787321ebd558062a9c12b12324a

Git commit 6af5e93134065cd97644d2eee43b2852df549553 by Kitsune Ral on 15/02/2019 at 02:11..
Simplify RoomCreateEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/6af5e93134065cd97644d2eee43b2852df549553

Git commit 87018c0a180248df4a2f61665efbfb3af84bbfea by Kitsune Ral on 15/02/2019 at 02:44..
Room::baseStateLoaded

Mirroring Connection::loadedRoomState but for each single room (will be
used as a NOTIFY signal for one-time-set events).
https://invent.kde.org/neon/forks/libquotient/-/commit/87018c0a180248df4a2f61665efbfb3af84bbfea

Git commit 173cfceab7da61e85467658a2c320609485b1139 by Kitsune Ral on 15/02/2019 at 02:45..
Add a FIXME upon the recent failure under Valgrind
https://invent.kde.org/neon/forks/libquotient/-/commit/173cfceab7da61e85467658a2c320609485b1139

Git commit f3ec748689db531df787d19bcfe76b0a40665b67 by Kitsune Ral on 15/02/2019 at 02:49..
Room: version(), predecessorId(), successorId()

Use RoomCreateEvent and RoomTombstoneEvent in the backend, covering most
of #235.
https://invent.kde.org/neon/forks/libquotient/-/commit/f3ec748689db531df787d19bcfe76b0a40665b67

Git commit 0f4368a19e344c8e3d74d97d4c9de171e723a9a1 by Kitsune Ral on 15/02/2019 at 03:19..
Disallow sending events to rooms that have been upgraded

This concludes the mandatory part of #235.
https://invent.kde.org/neon/forks/libquotient/-/commit/0f4368a19e344c8e3d74d97d4c9de171e723a9a1

Git commit 5ac901775c5ebd39338ae7854d2c3391cf9084fa by Kitsune Ral on 15/02/2019 at 03:24..
Room::upgraded()

A signal emitted when the room receives a tombstone event from the
server.
https://invent.kde.org/neon/forks/libquotient/-/commit/5ac901775c5ebd39338ae7854d2c3391cf9084fa

Git commit ac7d2ad8b0942cc465c0d340f159cb0b343008ab by Kitsune Ral on 15/02/2019 at 03:29..
Room::checkVersion() and Room::unstableVersion()

Initial (sans power levels checking) implementation of the check that
room should be upgraded. Closes most of #236.
https://invent.kde.org/neon/forks/libquotient/-/commit/ac7d2ad8b0942cc465c0d340f159cb0b343008ab

Git commit 5460bf4024999b78fb3837ffc14ca818a71dd4dc by Kitsune Ral on 15/02/2019 at 06:45..
Use Changes enum properly

Don't use distinct items for each type of event; only for repeated/
combinable ones.
https://invent.kde.org/neon/forks/libquotient/-/commit/5460bf4024999b78fb3837ffc14ca818a71dd4dc

Git commit 0130d9646af5530180158854dbedc35d7c01fd4f by Kitsune Ral on 15/02/2019 at 07:46..
Fix FTBFS
https://invent.kde.org/neon/forks/libquotient/-/commit/0130d9646af5530180158854dbedc35d7c01fd4f

Git commit 11b1bfe8f3640bfb1e2dd1710624c67aedb4f98b by Kitsune Ral on 16/02/2019 at 08:27..
Room::switchVersion()

Closes #236.
https://invent.kde.org/neon/forks/libquotient/-/commit/11b1bfe8f3640bfb1e2dd1710624c67aedb4f98b

Git commit 4e2de22c7d327836d2fe44764f8c7855a51f6206 by Kitsune Ral on 16/02/2019 at 08:29..
Room::checkVersion(): check power levels

This is a flimsy implementation without proper RoomPowerLevelEvent
definition, just to enable upgrades without causing noise to each and
every user of a room on an unstable version.
https://invent.kde.org/neon/forks/libquotient/-/commit/4e2de22c7d327836d2fe44764f8c7855a51f6206

Git commit 7e9bf3911e0457bf5af21672d4325882584b78ad by Kitsune Ral on 16/02/2019 at 11:00..
Room::canSwitchVersions()
https://invent.kde.org/neon/forks/libquotient/-/commit/7e9bf3911e0457bf5af21672d4325882584b78ad

Git commit 73e6bd47f4bafa7e65f8d826d8c6527c59aeb865 by Kitsune Ral on 16/02/2019 at 11:22..
Room::version(): Fallback an empty version to "1"
https://invent.kde.org/neon/forks/libquotient/-/commit/73e6bd47f4bafa7e65f8d826d8c6527c59aeb865

Git commit ac5daf2ed495a932aba23606f5b3d0dca5aaf676 by Kitsune Ral on 17/02/2019 at 08:41..
Connection: loadingCapabilities(); sort availableRoomVersions
https://invent.kde.org/neon/forks/libquotient/-/commit/ac5daf2ed495a932aba23606f5b3d0dca5aaf676

Git commit 061c6a69fd55696e7dd82854ace9aa67915628d7 by Kitsune Ral on 17/02/2019 at 08:46..
Room: emit room, not id in upgraded(); add upgradeFailed()
https://invent.kde.org/neon/forks/libquotient/-/commit/061c6a69fd55696e7dd82854ace9aa67915628d7

Git commit ad5d44f31b3ab7e582b84ab05161c97cbc7eefc8 by Kitsune Ral on 17/02/2019 at 09:54..
Room: add isUnstable(); unstableVersion() -> stabilityUpdated()
https://invent.kde.org/neon/forks/libquotient/-/commit/ad5d44f31b3ab7e582b84ab05161c97cbc7eefc8

Git commit 9ef28a3b43dc576716ace005e300b43c3af74b9f by Kitsune Ral on 17/02/2019 at 22:00..
Room: fix building with MSVC
https://invent.kde.org/neon/forks/libquotient/-/commit/9ef28a3b43dc576716ace005e300b43c3af74b9f

Git commit 23008cac0c351d2e30583c53456394bbd4d14c5a by Kitsune Ral on 17/02/2019 at 23:15..
Merge branch 'kitsune-room-versions'
https://invent.kde.org/neon/forks/libquotient/-/commit/23008cac0c351d2e30583c53456394bbd4d14c5a

Git commit 6edd8a23765285350a667ae214f5e450f5f24129 by Kitsune Ral on 19/02/2019 at 12:12..
Room::downloadFile: construct the temporary filename more carefully

Closes #279.
https://invent.kde.org/neon/forks/libquotient/-/commit/6edd8a23765285350a667ae214f5e450f5f24129

Git commit 20e4f76280a8ac36ca1cdfe7d0d7bdeb2eef444d by Kitsune Ral on 20/02/2019 at 08:48..
BaseJob: M_UNSUPPORTED_ROOM_VERSION & M_INCOMPATIBLE_ROOM_VERSION
https://invent.kde.org/neon/forks/libquotient/-/commit/20e4f76280a8ac36ca1cdfe7d0d7bdeb2eef444d

Git commit 3e69bcc053a66c385c2c0ad9e6ae2e36eefaf4e3 by Kitsune Ral on 20/02/2019 at 10:56..
.travis.yml: minor improvements
https://invent.kde.org/neon/forks/libquotient/-/commit/3e69bcc053a66c385c2c0ad9e6ae2e36eefaf4e3

Git commit e48c5db65cb078c8ee84fd617441a78247671dad by Kitsune Ral on 20/02/2019 at 22:27..
Travis CI: switch macOS builds to xcode10.1 image

xcode10.0 seems to have Homebrew broken, and xcode9.4 has a problem with
SSLSetALPNProtocols (see also commit
f545d181ade8736dfda93e8abb34ab93ac34e931).
https://invent.kde.org/neon/forks/libquotient/-/commit/e48c5db65cb078c8ee84fd617441a78247671dad

Git commit 02872ea0cf6dccabb55b38a33fc5ad67f183254b by Kitsune Ral on 22/02/2019 at 01:50..
Merge remote-tracking branch 'remotes/origin/kitsune-simpler-simple-content'
https://invent.kde.org/neon/forks/libquotient/-/commit/02872ea0cf6dccabb55b38a33fc5ad67f183254b

Git commit 297216e95c0802248110403f1b8fdcd5eb02fae6 by Kitsune Ral on 22/02/2019 at 01:55..
Room::setAliases, Connection: roomByAlias, updateRoomAliases
https://invent.kde.org/neon/forks/libquotient/-/commit/297216e95c0802248110403f1b8fdcd5eb02fae6

Git commit 9931e90193d4a233893540ac5534fa46d7a8d006 by Alexander Akulich on 23/02/2019 at 13:56..
Remove the 'pretty' SupportedRoomVersion vector debug operator

This way we conform with Qt standard debug output and do not rely
on a Qt private API.

This also fixes compilation for Qt < 5.7.
https://invent.kde.org/neon/forks/libquotient/-/commit/9931e90193d4a233893540ac5534fa46d7a8d006

Git commit 293b54791f171382f3ce1afb1e035165142ab120 by GitHub (on behalf of Kitsune Ral) on 24/02/2019 at 03:23..
Merge pull request #285 from Kaffeine/kaffeine/fix_debug_private_api

Refactor Connection::SupportedRoomVersion debug operators
https://invent.kde.org/neon/forks/libquotient/-/commit/293b54791f171382f3ce1afb1e035165142ab120

Git commit ccb94f4fde97ed7f10b69c6739da3b090c80a3a1 by Kitsune Ral on 24/02/2019 at 11:09..
Merge branch 'kitsune-aliases-map'
https://invent.kde.org/neon/forks/libquotient/-/commit/ccb94f4fde97ed7f10b69c6739da3b090c80a3a1

Git commit 1a9fd422581cf14c384d2467950ab3f2e1039565 by Alexey Andreyev on 24/02/2019 at 11:19..
Fix Qt<5.7 build for std::hash<StateEventKey>
https://invent.kde.org/neon/forks/libquotient/-/commit/1a9fd422581cf14c384d2467950ab3f2e1039565

Git commit 6636e46a2e9049f261b8a64cb6c1bf7c4f076c54 by Kitsune Ral on 25/02/2019 at 02:17..
makeRedacted: update the list of preserved parts

Closes #256.
https://invent.kde.org/neon/forks/libquotient/-/commit/6636e46a2e9049f261b8a64cb6c1bf7c4f076c54

Git commit 93876f06b6a1929dc757595ba4410b742402b7ab by Kitsune Ral on 25/02/2019 at 02:27..
Room::postHtmlMessage: default message type to m.text

postHtmlText becomes just a synonym for 2-arg postHtmlMessage (hopefully
at least this doesn't confuse QML that is generally terrible at
resolving overloads).
https://invent.kde.org/neon/forks/libquotient/-/commit/93876f06b6a1929dc757595ba4410b742402b7ab

Git commit 2213080a13a4eb472c8ac2267efcebc6f0936eb1 by Kitsune Ral on 25/02/2019 at 04:34..
RoomMessageEvent: support m.in_reply_to (not spec-compliant yet); optimise away TextContent when not needed

1. The spec says "if you support rich replies you MUST support fallbacks" - this commit only adds dealing with event JSON but not with textual fallbacks.
2. TextContent is only created if there's something on top of plain body (an HTML body or a reply).
https://invent.kde.org/neon/forks/libquotient/-/commit/2213080a13a4eb472c8ac2267efcebc6f0936eb1

Git commit 5b5eb135be40449a6a63eb9872787bec1ecd0fc2 by Kitsune Ral on 25/02/2019 at 05:46..
Have a build-wide macro for compilers that don't handle init-lists right

WORKAROUND_EXTENDED_INITIALIZER_LIST -> BROKEN_INITIALIZER_LISTS is
available from util.h now.
https://invent.kde.org/neon/forks/libquotient/-/commit/5b5eb135be40449a6a63eb9872787bec1ecd0fc2

Git commit 395ed0ca307a4cef696048b30718f8d5c99492a0 by Kitsune Ral on 25/02/2019 at 22:55..
Room::addNewMessageEvents: fix possible use of an invalid iterator

Closes #286.
https://invent.kde.org/neon/forks/libquotient/-/commit/395ed0ca307a4cef696048b30718f8d5c99492a0

Git commit bae6360ce04e98579096ff7a15f60cf7c3c2c4db by GitHub (on behalf of Kitsune Ral) on 26/02/2019 at 00:50..
Merge pull request #287 from a-andreyev/aa13q-fix-5.6-build-qhash

Fix Qt<5.7 build for std::hash<StateEventKey>
https://invent.kde.org/neon/forks/libquotient/-/commit/bae6360ce04e98579096ff7a15f60cf7c3c2c4db

Git commit c9b3cce218c5724d511b6e0dffb8d389ce19c08f by Kitsune Ral on 26/02/2019 at 03:03..
Room: avoid dangling pointers, even if not dereferenced

Closes #288; fixes one more case similar to #286.
Also: disconnect file transfer signals correctly in Room::postFile.
https://invent.kde.org/neon/forks/libquotient/-/commit/c9b3cce218c5724d511b6e0dffb8d389ce19c08f

Git commit c411bd00d9a4574ee858003493b523811c50d024 by Kitsune Ral on 26/02/2019 at 03:49..
prettyPrint(): only linkify http(s), ftp, mailto, magnet links

Closes #278.
https://invent.kde.org/neon/forks/libquotient/-/commit/c411bd00d9a4574ee858003493b523811c50d024

Git commit 17c7afaa4339e7e2259718f19a80ffbf960b1a8d by Kitsune Ral on 26/02/2019 at 04:12..
Linkify Matrix identifiers

This is a crude interim implementation until we get new fancy Matrix
URIs.
https://invent.kde.org/neon/forks/libquotient/-/commit/17c7afaa4339e7e2259718f19a80ffbf960b1a8d

Git commit a78ae0e75225629563ce253308e9b88383b0ea4d by Kitsune Ral on 26/02/2019 at 05:11..
Room::avatarObject

Closes #268.
https://invent.kde.org/neon/forks/libquotient/-/commit/a78ae0e75225629563ce253308e9b88383b0ea4d

Git commit e7a549d3d7341f66cb84761da9783f39276da116 by Kitsune Ral on 26/02/2019 at 11:31..
README.md: update versioning convention for pre-releases
https://invent.kde.org/neon/forks/libquotient/-/commit/e7a549d3d7341f66cb84761da9783f39276da116

Git commit e0a0542a812937b189f2adc7da9f2c9bba2d89b1 by Kitsune Ral on 26/02/2019 at 11:56..
README.md: use dash instead of tilde in pre-releases

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/e0a0542a812937b189f2adc7da9f2c9bba2d89b1

Git commit 39d44789d0f378b29d2c15994e8fa630edcdb408 by Kitsune Ral on 27/02/2019 at 02:21..
BaseJob::abandon() fixes

1. It should work with non-started jobs now (Closes #289).
2. It should allow clients to still handle `finished()` instead of
cutting them off right before emitting the signal.
https://invent.kde.org/neon/forks/libquotient/-/commit/39d44789d0f378b29d2c15994e8fa630edcdb408

Git commit 46cb751f73ca4234d5600e0c76e7f93c74278ef5 by Kitsune Ral on 27/02/2019 at 06:28..
Connection::stopSync: undo the sync loop
https://invent.kde.org/neon/forks/libquotient/-/commit/46cb751f73ca4234d5600e0c76e7f93c74278ef5

Git commit 0975f96207300b31279c63eaea597d2e9c435532 by Kitsune Ral on 27/02/2019 at 06:28..
qmc-example: use Connection::syncLoop
https://invent.kde.org/neon/forks/libquotient/-/commit/0975f96207300b31279c63eaea597d2e9c435532

Git commit b467b0816f5f6816778f90b55a9d0b5437310fd5 by Kitsune Ral on 27/02/2019 at 11:49..
Refresh CONTRIBUTING.md
https://invent.kde.org/neon/forks/libquotient/-/commit/b467b0816f5f6816778f90b55a9d0b5437310fd5

Git commit cdd5082b868936dccf330d16b1c134834fa94b21 by Marc Deop on 01/03/2019 at 19:06..
chore: add .clang-format
https://invent.kde.org/neon/forks/libquotient/-/commit/cdd5082b868936dccf330d16b1c134834fa94b21

Git commit 05d79f971eb9e779227e022ac47e4b78d400c9ec by Marc Deop on 01/03/2019 at 19:11..
fixup! chore: add .clang-format
https://invent.kde.org/neon/forks/libquotient/-/commit/05d79f971eb9e779227e022ac47e4b78d400c9ec

Git commit c971b924cd62822ed6fb1a0291c483ae73a3ecda by Marc Deop on 02/03/2019 at 11:24..
fixup! fixup! chore: add .clang-format
https://invent.kde.org/neon/forks/libquotient/-/commit/c971b924cd62822ed6fb1a0291c483ae73a3ecda

Git commit aacc4bcb4a487871daae6717f77605aaba444341 by Marc Deop on 02/03/2019 at 11:26..
style: apply .clang-format to all .cpp and .h files
https://invent.kde.org/neon/forks/libquotient/-/commit/aacc4bcb4a487871daae6717f77605aaba444341

Git commit 8c685b4ae5b47e55a55f23e16ccbda0132cb60c5 by Kitsune Ral on 10/03/2019 at 07:59..
Room::checkVersion(): be tolerant to already upgraded rooms
https://invent.kde.org/neon/forks/libquotient/-/commit/8c685b4ae5b47e55a55f23e16ccbda0132cb60c5

Git commit ced57b074d0dc4e6e582a4bddca7a07e41d2063f by Kitsune Ral on 12/03/2019 at 12:16..
Make Room::prettyPrint Q_INVOKABLE

So that it can be called from QML code
https://invent.kde.org/neon/forks/libquotient/-/commit/ced57b074d0dc4e6e582a4bddca7a07e41d2063f

Git commit b6b4b5e82c8984c0c7e29c4ccf5c2d25cda563f9 by Kitsune Ral on 13/03/2019 at 09:07..
Room: make notificationCount, highlightCount Q_PROPERTYs

Closes #299. Due to restrictions for the NOTIFY signal notificationCountChanged and highlightCountChanged no more carry Room* as a parameter, breaking back-compatibility.
https://invent.kde.org/neon/forks/libquotient/-/commit/b6b4b5e82c8984c0c7e29c4ccf5c2d25cda563f9

Git commit d9452a731a1983d9b5d3f8cd419b09299c30996e by Kitsune Ral on 13/03/2019 at 09:10..
Bump API_VERSION to 0.6
https://invent.kde.org/neon/forks/libquotient/-/commit/d9452a731a1983d9b5d3f8cd419b09299c30996e

Git commit f13d54bd9931a340af862cc0a03af2ac68fe5e06 by Kitsune Ral on 13/03/2019 at 22:42..
Fix read receipts and redactions on v3 rooms

Previously slashes in eventIds (that come plenty in v3 due to base64 encoding) were not properly encoded - they are now.
https://invent.kde.org/neon/forks/libquotient/-/commit/f13d54bd9931a340af862cc0a03af2ac68fe5e06

Git commit d6cddf3e016a4fe3e906e2ab815a1e8b775c284c by Kitsune Ral on 13/03/2019 at 22:45..
Fix read receipts and redactions on v3 rooms

Previously slashes in eventIds (that come plenty in v3 due to base64 encoding) were not properly encoded - they are now.
https://invent.kde.org/neon/forks/libquotient/-/commit/d6cddf3e016a4fe3e906e2ab815a1e8b775c284c

Git commit 6577320f8653fbd99a100a844d7b42a46da5f45a by Kitsune Ral on 17/03/2019 at 00:03..
RoomMemberEvent: sanitize user display names

MemberEventContent::displayName() will strip away Unicode text direction override characters. Direct access to JSON can still provide "raw" data.
https://invent.kde.org/neon/forks/libquotient/-/commit/6577320f8653fbd99a100a844d7b42a46da5f45a

Git commit 4a7e1a8c8a1940827ba9aea0bd830ef9dbf912ed by Kitsune Ral on 17/03/2019 at 09:58..
User: strip RLO/LRO markers on renaming as well

Continuation of work on #545.
https://invent.kde.org/neon/forks/libquotient/-/commit/4a7e1a8c8a1940827ba9aea0bd830ef9dbf912ed

Git commit bc27d9cdcc5cb71aec12f2e3f15b5762a93b721f by Kitsune Ral on 17/03/2019 at 10:29..
prettyPrint: do not apply sanitized()

Only display names should be sanitized; messages are only HTML-escaped.
https://invent.kde.org/neon/forks/libquotient/-/commit/bc27d9cdcc5cb71aec12f2e3f15b5762a93b721f

Git commit 9e0897ed1c1b4bbec6333bd6674bd8db737b13cb by Kitsune Ral on 21/03/2019 at 06:41..
Room::displayName: fix NOTIFY signal for Q_PROPERTY
https://invent.kde.org/neon/forks/libquotient/-/commit/9e0897ed1c1b4bbec6333bd6674bd8db737b13cb

Git commit 266f4b8a82fa437bbd49c8e3d85313677e068699 by Kitsune Ral on 21/03/2019 at 06:43..
Room::displayName: fix NOTIFY signal for Q_PROPERTY
https://invent.kde.org/neon/forks/libquotient/-/commit/266f4b8a82fa437bbd49c8e3d85313677e068699

Git commit a15c26ccc514fc405fd06d9a88dc333f104fba78 by Kitsune Ral on 21/03/2019 at 06:49..
sanitized(): revert to only dropping Unicode RLO/LRO markers (no HTML escaping)

Because user display names (in particular) can be used in non-HTML context. Clients should take care about HTML escaping where appropriate.
https://invent.kde.org/neon/forks/libquotient/-/commit/a15c26ccc514fc405fd06d9a88dc333f104fba78

Git commit 19b94c0643b6f1f1f4fa327e50b69fb11675cf21 by Kitsune Ral on 23/03/2019 at 06:51..
Update to the latest CS API definitions

No breaking changes; GetAccountDataJob/GetAccountDataPerRoomJob added.
https://invent.kde.org/neon/forks/libquotient/-/commit/19b94c0643b6f1f1f4fa327e50b69fb11675cf21

Git commit 23352250c9b9f9fa7d1d46294f8c1a7de1e19f61 by Kitsune Ral on 23/03/2019 at 11:43..
Room::downloadFile(): Tighten URL validations

Check the URL before passing over to Connection::downloadFile(), not only the file name.
https://invent.kde.org/neon/forks/libquotient/-/commit/23352250c9b9f9fa7d1d46294f8c1a7de1e19f61

Git commit 01d9f7b3f1785034503497798fb732ee6ee5fba3 by Kitsune Ral on 23/03/2019 at 12:49..
Update to the latest CS API definitions

No breaking changes; GetAccountDataJob/GetAccountDataPerRoomJob added.
https://invent.kde.org/neon/forks/libquotient/-/commit/01d9f7b3f1785034503497798fb732ee6ee5fba3

Git commit 9ba481f2c8e7f1db6144ece7119d8cc314c57bc5 by Kitsune Ral on 23/03/2019 at 12:49..
Room::downloadFile(): Tighten URL validations

Check the URL before passing over to Connection::downloadFile(), not only the file name.
https://invent.kde.org/neon/forks/libquotient/-/commit/9ba481f2c8e7f1db6144ece7119d8cc314c57bc5

Git commit 866b3d2155c0c7f2a58bb1a3c6355129361cb53a by Kitsune Ral on 24/03/2019 at 09:51..
linkifyUrls(): fix linkification of emails containing "www."

Closes #303.
https://invent.kde.org/neon/forks/libquotient/-/commit/866b3d2155c0c7f2a58bb1a3c6355129361cb53a

Git commit 21e5138f6cf1e96d3cac702e2ada2a0148a3ec92 by Kitsune Ral on 24/03/2019 at 09:53..
linkifyUrls(): fix linkification of emails containing "www."

Closes #303.
https://invent.kde.org/neon/forks/libquotient/-/commit/21e5138f6cf1e96d3cac702e2ada2a0148a3ec92

Git commit e855085835909549aa866ed968e24902eb378b5a by Kitsune Ral on 24/03/2019 at 10:08..
RoomMemberEvent: sanitize user display names

MemberEventContent::displayName() will strip away Unicode text direction override characters. Direct access to JSON can still provide "raw" data.
https://invent.kde.org/neon/forks/libquotient/-/commit/e855085835909549aa866ed968e24902eb378b5a

Git commit e2dea5a7e263707c283b63f0c31b4fae8399db3b by Kitsune Ral on 24/03/2019 at 10:08..
User: strip RLO/LRO markers on renaming as well

Continuation of work on #545.
https://invent.kde.org/neon/forks/libquotient/-/commit/e2dea5a7e263707c283b63f0c31b4fae8399db3b

Git commit adcea5868d45610be0539af3e1cfc15f8495815c by Kitsune Ral on 24/03/2019 at 10:09..
Expose linkifyUrls() into library API for future use
https://invent.kde.org/neon/forks/libquotient/-/commit/adcea5868d45610be0539af3e1cfc15f8495815c

Git commit d8147d4ad8493ae9de94aee8a222a24d000a7c96 by Kitsune Ral on 26/03/2019 at 02:58..
Room::canSwitchVersions(): return false on tombstoned rooms

A softer take on #306.
https://invent.kde.org/neon/forks/libquotient/-/commit/d8147d4ad8493ae9de94aee8a222a24d000a7c96

Git commit c8becd7ba500802bbb23b986108ad965d4f31df5 by Kitsune Ral on 26/03/2019 at 02:59..
Room::canSwitchVersions(): return false on tombstoned rooms

A softer take on #306.
https://invent.kde.org/neon/forks/libquotient/-/commit/c8becd7ba500802bbb23b986108ad965d4f31df5

Git commit d1efa846ee2e454b56dc77db403e40f1d9dfc7cd by Kitsune Ral on 26/03/2019 at 03:00..
Room::switchVersion(): refuse to switch a version if a tombstone is already there

Closes #306.
https://invent.kde.org/neon/forks/libquotient/-/commit/d1efa846ee2e454b56dc77db403e40f1d9dfc7cd

Git commit 0e439f23ff96a219ad7156e40294f88d44d55361 by Kitsune Ral on 27/03/2019 at 10:06..
Connection::domain()
https://invent.kde.org/neon/forks/libquotient/-/commit/0e439f23ff96a219ad7156e40294f88d44d55361

Git commit c659d18f36aa9f587003d5f50a9734c85d684a7c by Kitsune Ral on 27/03/2019 at 10:09..
qmc-example: add a couple homeserver data sanity checks
https://invent.kde.org/neon/forks/libquotient/-/commit/c659d18f36aa9f587003d5f50a9734c85d684a7c

Git commit fe3141f7bc3d2c92dcfe8ee5b3eb8d3ca6f0ab17 by Kitsune Ral on 27/03/2019 at 10:09..
Connection::domain()
https://invent.kde.org/neon/forks/libquotient/-/commit/fe3141f7bc3d2c92dcfe8ee5b3eb8d3ca6f0ab17

Git commit 57cf115d713bf02d0ba97a7a1f2e3874be8080e3 by Kitsune Ral on 27/03/2019 at 10:09..
qmc-example: add a couple homeserver data sanity checks
https://invent.kde.org/neon/forks/libquotient/-/commit/57cf115d713bf02d0ba97a7a1f2e3874be8080e3

Git commit 3d13e32530990569a418449c86d9848fd71490e4 by Kitsune Ral on 29/03/2019 at 04:02..
Room::processRedaction(): avoid accidental creation of entries in
currentState; cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/3d13e32530990569a418449c86d9848fd71490e4

Git commit 460aa0350c22312829d3e2a3d8556221b3f89173 by Kitsune Ral on 30/03/2019 at 06:38..
Room::processStateEvent, User: take the previous membership state from oldStateEvent

memberJoinState() just happens to return the not-yet-updated state,
making its use around state changes very sensitive to moving things
around. The event's own prevContent is unsigned, therefore untrusted.
https://invent.kde.org/neon/forks/libquotient/-/commit/460aa0350c22312829d3e2a3d8556221b3f89173

Git commit 3401eee364d9a41f7f28f2702a4b416a11fb19bc by Kitsune Ral on 30/03/2019 at 06:39..
Connection: make sure to mark rooms supposed to be direct chats as such

Closes #305. Relies on correct tracking of Invite membership from the previous commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/3401eee364d9a41f7f28f2702a4b416a11fb19bc

Git commit 01c5a35398a55dfc4a30e466aeb13419387555d3 by Kitsune Ral on 30/03/2019 at 07:19..
Room::processRedaction(): avoid accidental creation of entries in currentState; cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/01c5a35398a55dfc4a30e466aeb13419387555d3

Git commit a28892ca3b40a32556ee7615116c322f6b2a4ae5 by Kitsune Ral on 30/03/2019 at 07:19..
Room::processStateEvent, User: take the previous membership state from oldStateEvent

memberJoinState() just happens to return the not-yet-updated state,
making its use around state changes very sensitive to moving things
around. The event's own prevContent is unsigned, therefore untrusted.
https://invent.kde.org/neon/forks/libquotient/-/commit/a28892ca3b40a32556ee7615116c322f6b2a4ae5

Git commit e2b30ad0dc6f5a369cbd1dce3f9c92ef5d801dae by Kitsune Ral on 30/03/2019 at 07:19..
Connection: make sure to mark rooms supposed to be direct chats as such

Closes #305. Relies on correct tracking of Invite membership from the previous commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/e2b30ad0dc6f5a369cbd1dce3f9c92ef5d801dae

Git commit 27c29894a77a0733085b3901297a64773069c61a by Kitsune Ral on 30/03/2019 at 11:52..
User::nameForRoom(): null hint is not a hint

This caused the library to erroneously believe that users with no
representation in other rooms have no display name even if that display
name is provided for the given room.
https://invent.kde.org/neon/forks/libquotient/-/commit/27c29894a77a0733085b3901297a64773069c61a

Git commit 07827998c5ffe495ce83e4b1034d9e016f7296e8 by Kitsune Ral on 31/03/2019 at 09:41..
Room::refreshDisplayName() - for debugging purposes only

Clients should not need to call this method explicitly.
https://invent.kde.org/neon/forks/libquotient/-/commit/07827998c5ffe495ce83e4b1034d9e016f7296e8

Git commit 3f449c8773af6183c14b9c40ff1951a565bc1e67 by Kitsune Ral on 31/03/2019 at 09:42..
Room::updateData(): recalculate room name only when state changes occur
https://invent.kde.org/neon/forks/libquotient/-/commit/3f449c8773af6183c14b9c40ff1951a565bc1e67

Git commit 7acd18f52da02bcf272b3fe3c8901753bc4adcc9 by Kitsune Ral on 31/03/2019 at 09:44..
Room: track invited users; polish the room naming algorithm

It's no more entirely along the spec lines but gives better results with
or without lazy-loading, across a wide range of cases. Closes #310.
https://invent.kde.org/neon/forks/libquotient/-/commit/7acd18f52da02bcf272b3fe3c8901753bc4adcc9

Git commit 56728b20b227e2e767f103787c394d86b7148843 by Kitsune Ral on 31/03/2019 at 09:45..
CMakeLists.txt: bump the version to 0.5.1
https://invent.kde.org/neon/forks/libquotient/-/commit/56728b20b227e2e767f103787c394d86b7148843

Git commit 91e70b1242e6e40170285bd29fdfd7c82fd45691 by Kitsune Ral on 31/03/2019 at 09:48..
User::nameForRoom(): null hint is not a hint

This caused the library to erroneously believe that users with no
representation in other rooms have no display name even if that display
name is provided for the given room.
https://invent.kde.org/neon/forks/libquotient/-/commit/91e70b1242e6e40170285bd29fdfd7c82fd45691

Git commit 27ba75b458d2418051b170eb811ab88c00c336db by Kitsune Ral on 31/03/2019 at 09:48..
Room::refreshDisplayName() - for debugging purposes only

Clients should not need to call this method explicitly.
https://invent.kde.org/neon/forks/libquotient/-/commit/27ba75b458d2418051b170eb811ab88c00c336db

Git commit 1cc9a93bb403ba50aa80524bc9d9dae44241941e by Kitsune Ral on 31/03/2019 at 09:48..
Room::updateData(): recalculate room name only when state changes occur
https://invent.kde.org/neon/forks/libquotient/-/commit/1cc9a93bb403ba50aa80524bc9d9dae44241941e

Git commit 2a53784faa9b776406900db0a7a750c8963ced92 by Kitsune Ral on 31/03/2019 at 09:48..
Room: track invited users; polish the room naming algorithm

It's no more entirely along the spec lines but gives better results with
or without lazy-loading, across a wide range of cases. Closes #310.
https://invent.kde.org/neon/forks/libquotient/-/commit/2a53784faa9b776406900db0a7a750c8963ced92

Git commit 3ea5915d864040dd7f1b1cdffcacd67850a644bf by Kitsune Ral on 31/03/2019 at 09:52..
CMakeLists.txt: slightly better version management
https://invent.kde.org/neon/forks/libquotient/-/commit/3ea5915d864040dd7f1b1cdffcacd67850a644bf

Git commit 27386af703974154256cf755712bb46099500847 by Kitsune Ral on 03/04/2019 at 10:33..
room.h: more doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/27386af703974154256cf755712bb46099500847

Git commit 7508887564935f70b086ed6fe79bd86757d1fc38 by Kitsune Ral on 03/04/2019 at 11:08..
Room::postFile: initiate uploading the file even before adding a pending event

This is to make sure a pending event with file transfer already placed.
https://invent.kde.org/neon/forks/libquotient/-/commit/7508887564935f70b086ed6fe79bd86757d1fc38

Git commit 008207f178475531c0a8a86b2192c09d7134ad0e by Kitsune Ral on 03/04/2019 at 11:11..
room.h: more doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/008207f178475531c0a8a86b2192c09d7134ad0e

Git commit 8035ec464ce797abab5e464c2cfb485f7fa14d06 by Kitsune Ral on 03/04/2019 at 11:11..
Room::postFile: initiate uploading the file even before adding a pending event

This is to make sure a pending event with file transfer already placed.
https://invent.kde.org/neon/forks/libquotient/-/commit/8035ec464ce797abab5e464c2cfb485f7fa14d06

Git commit 1c5696e8f5a9ef87a065e2496eecf178e41e75a7 by Kitsune Ral on 04/04/2019 at 12:27..
Clean up on clang-tidy/clazy analysis
https://invent.kde.org/neon/forks/libquotient/-/commit/1c5696e8f5a9ef87a065e2496eecf178e41e75a7

Git commit 25e94244b4e08d6e5b6eb241076ca0f90816393f by Kitsune Ral on 04/04/2019 at 23:39..
Update README.md and CONTRIBUTING.md (attn: LGPL v3 coming)

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/25e94244b4e08d6e5b6eb241076ca0f90816393f

Git commit edf6a717268d9751f58d256bfe21aab078dfb9f6 by Kitsune Ral on 06/04/2019 at 11:32..
Room::processStateEvent: be more careful with signals handling at user renames
https://invent.kde.org/neon/forks/libquotient/-/commit/edf6a717268d9751f58d256bfe21aab078dfb9f6

Git commit 432e7fd7107d8260e0016a1adcd8d94263dc1044 by Kitsune Ral on 06/04/2019 at 11:32..
Clean up on clang-tidy/clazy analysis
https://invent.kde.org/neon/forks/libquotient/-/commit/432e7fd7107d8260e0016a1adcd8d94263dc1044

Git commit a10a06052aa3f85f937844cb72f8775712e4299b by Kitsune Ral on 06/04/2019 at 11:32..
Update README.md and CONTRIBUTING.md (attn: LGPL v3 coming)

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/a10a06052aa3f85f937844cb72f8775712e4299b

Git commit c36341512560cedf063279848fa43c44b146161b by Kitsune Ral on 06/04/2019 at 11:32..
Room::processStateEvent: be more careful with signals handling at user renames
https://invent.kde.org/neon/forks/libquotient/-/commit/c36341512560cedf063279848fa43c44b146161b

Git commit 613e3754dccc56334c6a132381c230781619f264 by Kitsune Ral on 06/04/2019 at 11:55..
CMakeLists.txt: API version should be 0.5.1 instead of 0.5

Also: modernised version setting.
https://invent.kde.org/neon/forks/libquotient/-/commit/613e3754dccc56334c6a132381c230781619f264

Git commit 5fcbbe4939f5bd9c64fc399d0d7ec43044f41c0c by Kitsune Ral on 06/04/2019 at 12:37..
CMakeLists.txt: use project() to set the version
https://invent.kde.org/neon/forks/libquotient/-/commit/5fcbbe4939f5bd9c64fc399d0d7ec43044f41c0c

Git commit af55d9a0f23ed48c7dcec26efe6b01fb44a8c4fc by Kitsune Ral on 06/04/2019 at 12:48..
.gitignore: ignore project files of Qt Creator pre-releases as well
https://invent.kde.org/neon/forks/libquotient/-/commit/af55d9a0f23ed48c7dcec26efe6b01fb44a8c4fc

Git commit 533f837086d3522c54f0622d3f27e0a5d1347b24 by Kitsune Ral on 15/04/2019 at 11:29..
BaseJob: fix a possible crash upon logout

See https://github.com/QMatrixClient/Quaternion/issues/566 for details.
https://invent.kde.org/neon/forks/libquotient/-/commit/533f837086d3522c54f0622d3f27e0a5d1347b24

Git commit 4c9ed0c64ec45c084af657e1fa188242a1d26d1a by Kitsune Ral on 16/04/2019 at 07:21..
BaseJob: preserve the calculated error code if JSON error code is unknown

Resetting the code to IncorrectRequestError has been a part of the cause for the incorrect Quaternion behaviour on expired tokens.
https://invent.kde.org/neon/forks/libquotient/-/commit/4c9ed0c64ec45c084af657e1fa188242a1d26d1a

Git commit fa41fd7ef8b4706a65de73f8be3e9cff1b8b8014 by Kitsune Ral on 16/04/2019 at 07:22..
Connection::logout: ignore ContentAccessError

Closes #316.
https://invent.kde.org/neon/forks/libquotient/-/commit/fa41fd7ef8b4706a65de73f8be3e9cff1b8b8014

Git commit 97cec65105cab43b95d76b73ebdab74f2e222d81 by Kitsune Ral on 17/04/2019 at 09:53..
Bump the version to 0.5.1.2
https://invent.kde.org/neon/forks/libquotient/-/commit/97cec65105cab43b95d76b73ebdab74f2e222d81

Git commit a6df4183d6da324f2c2329f21d732071b3337cb8 by Kitsune Ral on 24/04/2019 at 01:40..
BaseJob: fix a possible crash upon logout

See https://github.com/QMatrixClient/Quaternion/issues/566 for details.
https://invent.kde.org/neon/forks/libquotient/-/commit/a6df4183d6da324f2c2329f21d732071b3337cb8

Git commit 8a3bb2d5b27824890482fa7185bbc1fcda9dd49c by Kitsune Ral on 24/04/2019 at 01:40..
BaseJob: preserve the calculated error code if JSON error code is unknown

Resetting the code to IncorrectRequestError has been a part of the cause for the incorrect Quaternion behaviour on expired tokens.
https://invent.kde.org/neon/forks/libquotient/-/commit/8a3bb2d5b27824890482fa7185bbc1fcda9dd49c

Git commit 1103c1fa00d99c4e090f76fd07a384032f79f0c1 by Kitsune Ral on 24/04/2019 at 01:40..
Connection::logout: ignore ContentAccessError

Closes #316.
https://invent.kde.org/neon/forks/libquotient/-/commit/1103c1fa00d99c4e090f76fd07a384032f79f0c1

Git commit 05c9984fd1d369397fbf3c9cad67413906e817cc by Black Hat on 24/04/2019 at 13:18..
Make ignore-user related method Q_INVOKABLE.
https://invent.kde.org/neon/forks/libquotient/-/commit/05c9984fd1d369397fbf3c9cad67413906e817cc

Git commit 52a81dfa8a5415be369d819837f445479b833cde by GitHub (on behalf of Kitsune Ral) on 25/04/2019 at 21:43..
Merge pull request #319 from QMatrixClient/user-ignored-qml

Make ignore-user related method Q_INVOKABLE.
https://invent.kde.org/neon/forks/libquotient/-/commit/52a81dfa8a5415be369d819837f445479b833cde

Git commit 52407a933bfe1fcc5f3aa1dccaa0b9a8279aa634 by Hubert Chathi on 29/04/2019 at 15:58..
Debian release 0.4.2.1-1
https://invent.kde.org/neon/forks/libquotient/-/commit/52407a933bfe1fcc5f3aa1dccaa0b9a8279aa634

Git commit 0378e830c40a1d7302a8108d460940b6cd15201e by Kitsune Ral on 03/05/2019 at 13:57..
Connection::stateCacheDir

Same as stateCachePath but returns QDir.
https://invent.kde.org/neon/forks/libquotient/-/commit/0378e830c40a1d7302a8108d460940b6cd15201e

Git commit 2d39b1e51e500fa17788630cd0e6a57a451eb475 by Kitsune Ral on 03/05/2019 at 23:34..
Room::allHistoryLoaded
https://invent.kde.org/neon/forks/libquotient/-/commit/2d39b1e51e500fa17788630cd0e6a57a451eb475

Git commit 346adee1810109f4b7b14298e55d29a44c076a66 by Kitsune Ral on 13/05/2019 at 12:44..
prettyPrint(): First linkify, than add more tags

Otherwise the linkification gets confused by HTML tags being already
there and doesn't linkify what has to be linkified if that occurs at the
beginning of the message.
https://invent.kde.org/neon/forks/libquotient/-/commit/346adee1810109f4b7b14298e55d29a44c076a66

Git commit 3c253ed025246a34d849d14aac6feaee672d7e63 by Kitsune Ral on 13/05/2019 at 12:44..
linkifyUrls(): be more conservative in parsing serverparts

Closes #321.
https://invent.kde.org/neon/forks/libquotient/-/commit/3c253ed025246a34d849d14aac6feaee672d7e63

Git commit 1a034626bcbe064ebe0ada8cdfe1a47f2d82e477 by Kitsune Ral on 13/05/2019 at 12:44..
sanitized(): add object replacement character (0xfffc) to the blacklist
https://invent.kde.org/neon/forks/libquotient/-/commit/1a034626bcbe064ebe0ada8cdfe1a47f2d82e477

Git commit 74fa9bc64128d88939259ccb2ba4dca51571559a by Alexey Andreyev on 13/05/2019 at 22:41..
Provide a colour code for the user

Contributes to #296
https://invent.kde.org/neon/forks/libquotient/-/commit/74fa9bc64128d88939259ccb2ba4dca51571559a

Git commit fc8a8bb521daeb6ef2fd3353ba516c8393c27f7e by GitHub (on behalf of Kitsune Ral) on 13/05/2019 at 23:00..
Merge pull request #298 from a-andreyev/aa13q-fancy-colors

Provide a colour code for the user
https://invent.kde.org/neon/forks/libquotient/-/commit/fc8a8bb521daeb6ef2fd3353ba516c8393c27f7e

Git commit d6f39dcb0de69322479f287514a8c36afcb3fe7b by Kitsune Ral on 14/05/2019 at 06:30..
User::Private::makeHueF: Fix trying to use the moved value
https://invent.kde.org/neon/forks/libquotient/-/commit/d6f39dcb0de69322479f287514a8c36afcb3fe7b

Git commit 44ce399ab59204864b8c0c70d9b92e73e7e0135a by Kitsune Ral on 17/05/2019 at 12:19..
Minor code refactoring
https://invent.kde.org/neon/forks/libquotient/-/commit/44ce399ab59204864b8c0c70d9b92e73e7e0135a

Git commit 9ca07298008d891250ffc79771bc5ef8c97950cb by Kitsune Ral on 17/05/2019 at 12:20..
Drop unneeded #include
https://invent.kde.org/neon/forks/libquotient/-/commit/9ca07298008d891250ffc79771bc5ef8c97950cb

Git commit 7374cef74ab92dd2165831c73db51c7dfa4a3511 by Kitsune Ral on 18/05/2019 at 12:48..
event.h: add doc-comments; deprecate ptrCast()
https://invent.kde.org/neon/forks/libquotient/-/commit/7374cef74ab92dd2165831c73db51c7dfa4a3511

Git commit 1033f3b4249b8b0224ba725b220338e6c9621084 by Kitsune Ral on 18/05/2019 at 12:50..
Connection::onSyncSuccess(): fix using after move()

Also rewrite the account data piece with visit().
https://invent.kde.org/neon/forks/libquotient/-/commit/1033f3b4249b8b0224ba725b220338e6c9621084

Git commit bb6d33182269425d98f7aa4e22aa5478cff57550 by Kitsune Ral on 18/05/2019 at 23:47..
Move a doc-comment to its place
https://invent.kde.org/neon/forks/libquotient/-/commit/bb6d33182269425d98f7aa4e22aa5478cff57550

Git commit 626b2711a49e581babafd179ce362a1c88db8b85 by Kitsune Ral on 18/05/2019 at 23:54..
Connection: use QScopedPointer instead of unique_ptr

While theoretically less robust (no equivalent of make_unique),
QScopedPointer is navigable in Qt Creator debug views, unlike
unique_ptr. Of course this will eventually be fixed; but given that
inability to create an owning pointer object means sure abnormal
termination of our code shortly afterwards, having make_unique in this
particular case doesn't help in any way at all; so unique_ptr has zero
advantages over QScopedPointer in this setting.
https://invent.kde.org/neon/forks/libquotient/-/commit/626b2711a49e581babafd179ce362a1c88db8b85

Git commit 9087c2fbe8369fd18a47b4edc5ecf20c438ff0ce by GitHub (on behalf of Kitsune Ral) on 19/05/2019 at 06:33..
Update .clang-format as per the field experience
https://invent.kde.org/neon/forks/libquotient/-/commit/9087c2fbe8369fd18a47b4edc5ecf20c438ff0ce

Git commit 4ae7fe50e5aae28dee3d207b0ca02207c46bb781 by Kitsune Ral on 19/05/2019 at 06:35..
Improve wording in a comment
https://invent.kde.org/neon/forks/libquotient/-/commit/4ae7fe50e5aae28dee3d207b0ca02207c46bb781

Git commit 89e0cec42fe9538cbd170a9dc3fcf6dd18b5ac02 by Kitsune Ral on 19/05/2019 at 22:46..
Connection: Fix a race condition in direct chats handling upon initial sync

Closes #323.
https://invent.kde.org/neon/forks/libquotient/-/commit/89e0cec42fe9538cbd170a9dc3fcf6dd18b5ac02

Git commit e3d2edbea279da8c3ed19b9faa77a287b6a65faf by Kitsune Ral on 19/05/2019 at 22:48..
event.h: add doc-comments; deprecate ptrCast()
https://invent.kde.org/neon/forks/libquotient/-/commit/e3d2edbea279da8c3ed19b9faa77a287b6a65faf

Git commit 92f10dcbc39c9a0762e665ac9acbf4fd8b39f614 by Kitsune Ral on 19/05/2019 at 22:48..
Connection::onSyncSuccess(): fix using after move()

Also rewrite the account data piece with visit().
https://invent.kde.org/neon/forks/libquotient/-/commit/92f10dcbc39c9a0762e665ac9acbf4fd8b39f614

Git commit 432dc68bb0dd4d37542f3fcc2b83309a927362f0 by Kitsune Ral on 19/05/2019 at 22:48..
Connection: Fix a race condition in direct chats handling upon initial sync

Closes #323.
https://invent.kde.org/neon/forks/libquotient/-/commit/432dc68bb0dd4d37542f3fcc2b83309a927362f0

Git commit 681203f951d13e9e8eaf772435cac28c6d74cd42 by Kitsune Ral on 21/05/2019 at 23:23..
Version 0.5.2
https://invent.kde.org/neon/forks/libquotient/-/commit/681203f951d13e9e8eaf772435cac28c6d74cd42

Git commit 48ffee5fa78f44bd00d76772ad79ae4eeb6c8dc4 by Alexey Andreyev on 22/05/2019 at 23:12..
Move out the logic of the hue calculation to utils
https://invent.kde.org/neon/forks/libquotient/-/commit/48ffee5fa78f44bd00d76772ad79ae4eeb6c8dc4

Git commit 1040e73ed3d4bdd38d573a6fe7cdf6f177e354d3 by GitHub (on behalf of Kitsune Ral) on 25/05/2019 at 11:21..
SECURITY.md

Moved over text about vulnerabilities reporting and extended it with more details on supported versions and commitments.
https://invent.kde.org/neon/forks/libquotient/-/commit/1040e73ed3d4bdd38d573a6fe7cdf6f177e354d3

Git commit 0e2df34b31bc5c3d76ee4cc60f02892600890508 by GitHub (on behalf of Kitsune Ral) on 25/05/2019 at 11:23..
SECURITY.md: minor edits
https://invent.kde.org/neon/forks/libquotient/-/commit/0e2df34b31bc5c3d76ee4cc60f02892600890508

Git commit 4fdc2af2505da55d384be7d312540d1cbd79aaf8 by Kitsune Ral on 25/05/2019 at 11:38..
Refer to SECURITY.md from the rest of documentation

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/4fdc2af2505da55d384be7d312540d1cbd79aaf8

Git commit 26c51455901a6c0112531d86d61d65d31a70dfaa by Ville Ranki on 31/05/2019 at 14:01..
Ignore some errors on leaving rooms, add new error enum. Fixes #307
https://invent.kde.org/neon/forks/libquotient/-/commit/26c51455901a6c0112531d86d61d65d31a70dfaa

Git commit 7ea51059b86d8124c077ed84ad3b91770af8d610 by Kitsune Ral on 02/06/2019 at 04:22..
lib/room.*: Spelling fixes in comments

[ci skip]
https://invent.kde.org/neon/forks/libquotient/-/commit/7ea51059b86d8124c077ed84ad3b91770af8d610

Git commit e8718d8b1d61d6f70e61da0436f793a461e83bd7 by Kitsune Ral on 07/06/2019 at 10:28..
BaseJob::StatusCode: add Error-less synonyms; officially deprecate JsonParseError
https://invent.kde.org/neon/forks/libquotient/-/commit/e8718d8b1d61d6f70e61da0436f793a461e83bd7

Git commit 10c4be59438ac614a01800fb44e351e7039fe6e6 by Kitsune Ral on 07/06/2019 at 10:29..
*.cpp.mustache: switch from now-deprecated JsonParseError to IncorrectResponse
https://invent.kde.org/neon/forks/libquotient/-/commit/10c4be59438ac614a01800fb44e351e7039fe6e6

Git commit 93f0c8fe89f448d1d58caa757573f17102369471 by Kitsune Ral on 07/06/2019 at 10:33..
Generated files in csapi/: switch from now-deprecated JsonParserError to IncorrectResponse
https://invent.kde.org/neon/forks/libquotient/-/commit/93f0c8fe89f448d1d58caa757573f17102369471

Git commit 7591ec34cee15a58611408a996bdb1b92b6ffb98 by GitHub (on behalf of Ville Ranki) on 11/06/2019 at 08:58..
Remove unnecessary error checks in lib/connection.cpp

Co-Authored-By: Kitsune Ral <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/7591ec34cee15a58611408a996bdb1b92b6ffb98

Git commit a19e12544d174588bb99d1d9d5b2576f0ea1e037 by GitHub (on behalf of Ville Ranki) on 11/06/2019 at 08:59..
Comment change as requested

Co-Authored-By: Kitsune Ral <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/a19e12544d174588bb99d1d9d5b2576f0ea1e037

Git commit c77e79bcd5d854c45b50fa14514df5e701d0e62c by Kitsune Ral on 22/06/2019 at 11:19..
.clang-format: fine-tune penalties
https://invent.kde.org/neon/forks/libquotient/-/commit/c77e79bcd5d854c45b50fa14514df5e701d0e62c

Git commit 45c66cc358c251fa316d993ec251982486530760 by Kitsune Ral on 23/06/2019 at 08:50..
.clang-format: Skip on CommentPragmas

We do want doc-comments to be formatted as well.
https://invent.kde.org/neon/forks/libquotient/-/commit/45c66cc358c251fa316d993ec251982486530760

Git commit 30004700fbfe84a51a651174105c5ae4391db159 by Kitsune Ral on 23/06/2019 at 10:47..
Use clang-format to autoformat generated API files
https://invent.kde.org/neon/forks/libquotient/-/commit/30004700fbfe84a51a651174105c5ae4391db159

Git commit e083d327e6f6581210f8d077d8bbe1151e81e82c by Kitsune Ral on 23/06/2019 at 10:50..
csapi/: Make Mustache files more readable

Now that clang-format takes care of formatting, the template readability can be prioritised.
https://invent.kde.org/neon/forks/libquotient/-/commit/e083d327e6f6581210f8d077d8bbe1151e81e82c

Git commit 63ae79c3e2820efc2ba60d33e2caf2d7b9b3c408 by Kitsune Ral on 23/06/2019 at 22:21..
Merge branch 'master' into clang-format

# Conflicts:
#	CMakeLists.txt
#	lib/avatar.cpp
#	lib/connection.cpp
#	lib/connection.h
#	lib/connectiondata.cpp
#	lib/csapi/account-data.cpp
#	lib/csapi/account-data.h
#	lib/csapi/capabilities.cpp
#	lib/csapi/capabilities.h
#	lib/csapi/content-repo.cpp
#	lib/csapi/create_room.cpp
#	lib/csapi/filter.cpp
#	lib/csapi/joining.cpp
#	lib/csapi/keys.cpp
#	lib/csapi/list_joined_rooms.cpp
#	lib/csapi/notifications.cpp
#	lib/csapi/openid.cpp
#	lib/csapi/presence.cpp
#	lib/csapi/pushrules.cpp
#	lib/csapi/registration.cpp
#	lib/csapi/room_upgrades.cpp
#	lib/csapi/room_upgrades.h
#	lib/csapi/search.cpp
#	lib/csapi/users.cpp
#	lib/csapi/versions.cpp
#	lib/csapi/whoami.cpp
#	lib/csapi/{{base}}.cpp.mustache
#	lib/events/accountdataevents.h
#	lib/events/eventcontent.h
#	lib/events/roommemberevent.cpp
#	lib/events/stateevent.cpp
#	lib/jobs/basejob.cpp
#	lib/jobs/basejob.h
#	lib/networkaccessmanager.cpp
#	lib/networksettings.cpp
#	lib/room.cpp
#	lib/room.h
#	lib/settings.cpp
#	lib/settings.h
#	lib/syncdata.cpp
#	lib/user.cpp
#	lib/user.h
#	lib/util.cpp
https://invent.kde.org/neon/forks/libquotient/-/commit/63ae79c3e2820efc2ba60d33e2caf2d7b9b3c408

Git commit 8d96901ff455e4072dd4b050cf9c17a5780bfacb by Kitsune Ral on 23/06/2019 at 22:37..
CMakeLists.txt: Re-add parts of CSAPI that accidentally went missing
https://invent.kde.org/neon/forks/libquotient/-/commit/8d96901ff455e4072dd4b050cf9c17a5780bfacb

Git commit 9e96bc9b8dec6613e3e2f2fd564e9f6bee9bbce4 by Kitsune Ral on 23/06/2019 at 22:38..
csapi/*/**: clang-format contents of csapi subdirs as well
https://invent.kde.org/neon/forks/libquotient/-/commit/9e96bc9b8dec6613e3e2f2fd564e9f6bee9bbce4

Git commit 08c424d4e853b4dc67d966ca0336892e580f9d20 by Kitsune Ral on 24/06/2019 at 22:45..
CMakeLists: use REALPATH instead of PROGRAM to find gtad

PROGRAM doesn't seem to work right with relative paths.
https://invent.kde.org/neon/forks/libquotient/-/commit/08c424d4e853b4dc67d966ca0336892e580f9d20

Git commit 553acc9d234140fd94e768679756077271902e6f by Kitsune Ral on 24/06/2019 at 23:03..
CMakeLists: replace list(TRANSFORM) with foreach/list(APPEND)

list(TRANSFORM) is only available from CMake 3.12.
https://invent.kde.org/neon/forks/libquotient/-/commit/553acc9d234140fd94e768679756077271902e6f

Git commit e7ade79e9e13a8dca31e7684c47f17ec28cc9c44 by Kitsune Ral on 24/06/2019 at 23:32..
.travis.yml: add "update: true" to homebrew config
https://invent.kde.org/neon/forks/libquotient/-/commit/e7ade79e9e13a8dca31e7684c47f17ec28cc9c44

Git commit 90623dd4a191d4cce2ddd514f313f689d0a135b0 by Alexey Andreyev (on behalf of Felix Rohrbach) on 25/06/2019 at 11:48..
Include olm via cmake (should work on Linux and MinGW)
https://invent.kde.org/neon/forks/libquotient/-/commit/90623dd4a191d4cce2ddd514f313f689d0a135b0

Git commit 1cf67730a0880a520ae04bdf4ef61592daa9fe06 by Alexey Andreyev (on behalf of Kitsune Ral) on 25/06/2019 at 11:48..
Introduce EncryptionEvent class

This allows to detect if a room has been encrypted (no room state, just
an event as of yet). Closes #84.
https://invent.kde.org/neon/forks/libquotient/-/commit/1cf67730a0880a520ae04bdf4ef61592daa9fe06

Git commit d3ddd394e855cfe217bf0f0d368822c9b99316bb by GitHub (on behalf of Kitsune Ral) on 25/06/2019 at 12:19..
Merge pull request #322 from a-andreyev/aa13q-fancy-colors

Move out the logic of the hue calculation to utils
https://invent.kde.org/neon/forks/libquotient/-/commit/d3ddd394e855cfe217bf0f0d368822c9b99316bb

Git commit 72d5660efd0755bb53a8699cd39865155400d288 by Hubert Chathi on 25/06/2019 at 20:33..
Merge branch 'upstream' (v0.5.2)
https://invent.kde.org/neon/forks/libquotient/-/commit/72d5660efd0755bb53a8699cd39865155400d288

Git commit 5722ceaf4bd10c29f1091e3dc5a87f5650ea8c71 by Kitsune Ral on 25/06/2019 at 22:51..
BaseJob::Status: fromHttpCode
https://invent.kde.org/neon/forks/libquotient/-/commit/5722ceaf4bd10c29f1091e3dc5a87f5650ea8c71

Git commit 688dc682e0c6ae12dc87d781ffe53c974dad60df by Hubert Chathi on 26/06/2019 at 04:22..
debian version 0.5.2-1
https://invent.kde.org/neon/forks/libquotient/-/commit/688dc682e0c6ae12dc87d781ffe53c974dad60df

Git commit f58e3a24161db2cb2e400b5a686f140eb054f541 by Kitsune Ral on 29/06/2019 at 11:05..
Merge remote-tracking branch 'remotes/origin/master' into use-clang-format
https://invent.kde.org/neon/forks/libquotient/-/commit/f58e3a24161db2cb2e400b5a686f140eb054f541

Git commit 8ddf663ac60332cfa83f829b8d40596f9fe1c926 by Kitsune Ral on 30/06/2019 at 05:13..
CMakeLists.txt: add clang-format invocation to update-api target

...instead of using a separate update-format-api target.
https://invent.kde.org/neon/forks/libquotient/-/commit/8ddf663ac60332cfa83f829b8d40596f9fe1c926

Git commit b5dd30189df0d7515116b2abac1f93fc0f8a1989 by Kitsune Ral on 30/06/2019 at 05:59..
CONTRIBUTING.md: officially embrace and recommend clang-format
https://invent.kde.org/neon/forks/libquotient/-/commit/b5dd30189df0d7515116b2abac1f93fc0f8a1989

Git commit 12478cf7330727083103d22f76de92c4aa476f5b by Kitsune Ral on 01/07/2019 at 07:10..
Handle M_UNKNOWN as The Spec says; factor out BaseJob::parseError()
https://invent.kde.org/neon/forks/libquotient/-/commit/12478cf7330727083103d22f76de92c4aa476f5b

Git commit 00ff511ab11fae58eb9dc43879f2483a9f303263 by Kitsune Ral on 01/07/2019 at 07:26..
Merge branch 'master' into forget-rooms-really
https://invent.kde.org/neon/forks/libquotient/-/commit/00ff511ab11fae58eb9dc43879f2483a9f303263

Git commit 5602c38fe32377081c9f3dafb3f77666948053c5 by GitHub (on behalf of Kitsune Ral) on 01/07/2019 at 07:57..
Merge pull request #327 from vranki/bugfix/forget_rooms_really2

Ignore some errors on leaving rooms, add new error enum. Fixes #307
https://invent.kde.org/neon/forks/libquotient/-/commit/5602c38fe32377081c9f3dafb3f77666948053c5

Git commit ddc5a60184972e1449191ce77561b875a145a665 by Kitsune Ral on 01/07/2019 at 23:53..
linkifyUrls: support matrix: scheme and relative URLs
https://invent.kde.org/neon/forks/libquotient/-/commit/ddc5a60184972e1449191ce77561b875a145a665

Git commit 6a6857b9d4dbf22402f2871494bdd06cdccdf366 by Kitsune Ral on 03/07/2019 at 14:28..
Room/Connection: make room aliases work properly

Closes #301.
https://invent.kde.org/neon/forks/libquotient/-/commit/6a6857b9d4dbf22402f2871494bdd06cdccdf366

Git commit fe82533860a327fbbaa0c980188ccd56d8463b1c by Kitsune Ral on 04/07/2019 at 04:17..
Connection::token() is no more

Use Connection::accessToken() instead.
https://invent.kde.org/neon/forks/libquotient/-/commit/fe82533860a327fbbaa0c980188ccd56d8463b1c

Git commit d15ba3d77598c60b1eb713cb2a5348390071db44 by Kitsune Ral on 04/07/2019 at 07:03..
.travis.yml: add "update: true" to homebrew config
https://invent.kde.org/neon/forks/libquotient/-/commit/d15ba3d77598c60b1eb713cb2a5348390071db44

Git commit af623d68df8cec92277e9a40f18beac617b5d397 by Alexey Andreyev on 04/07/2019 at 08:21..
Add libQtOlm
https://invent.kde.org/neon/forks/libquotient/-/commit/af623d68df8cec92277e9a40f18beac617b5d397

Git commit bb98bd26bdd72998e09553e1703d552d1d217f86 by Alexey Andreyev on 04/07/2019 at 08:21..
Add full EncryptionEvent to room logic. Issue #95
https://invent.kde.org/neon/forks/libquotient/-/commit/bb98bd26bdd72998e09553e1703d552d1d217f86

Git commit 46a7350086e42ea3960fe54ef5c68b2207527899 by Alexey Andreyev on 04/07/2019 at 08:21..
Update libQtOlm
https://invent.kde.org/neon/forks/libquotient/-/commit/46a7350086e42ea3960fe54ef5c68b2207527899

Git commit 69ba71cca36b4a90328d169c845195f39c041a3a by Alexey Andreyev on 04/07/2019 at 08:21..
Add EncryptionManager class. Add AccountSettings::encryptionAccountPickle logic.
https://invent.kde.org/neon/forks/libquotient/-/commit/69ba71cca36b4a90328d169c845195f39c041a3a

Git commit 79f6f33bbbd60eafe92b5187a3bf5fd8966f8bf5 by Alexey Andreyev on 04/07/2019 at 08:21..
Upload device public keys. Issue #87
https://invent.kde.org/neon/forks/libquotient/-/commit/79f6f33bbbd60eafe92b5187a3bf5fd8966f8bf5

Git commit e1bee9d71d88d6500d2c6124689a0e8685aeab90 by Alexey Andreyev on 04/07/2019 at 08:21..
Upload one-time keys. Issue #88
https://invent.kde.org/neon/forks/libquotient/-/commit/e1bee9d71d88d6500d2c6124689a0e8685aeab90

Git commit b5f9e1bd20f985c18ec630fa496510018547b728 by Alexey Andreyev on 04/07/2019 at 12:26..
Change libQtOlm location. Fix .travis.yml and .appveyor.yml
https://invent.kde.org/neon/forks/libquotient/-/commit/b5f9e1bd20f985c18ec630fa496510018547b728

Git commit a9984d39e5186e2cfd105cf2ffb4148d9a8573a2 by Black Hat on 04/07/2019 at 13:52..
Connection.cpp: Add .well-known parsing in resolveServer()
https://invent.kde.org/neon/forks/libquotient/-/commit/a9984d39e5186e2cfd105cf2ffb4148d9a8573a2

Git commit 5d9d56a4fe9f3178c8bc9b3839ec608659c0c371 by Black Hat on 05/07/2019 at 02:15..
Clean up .well-known logic
https://invent.kde.org/neon/forks/libquotient/-/commit/5d9d56a4fe9f3178c8bc9b3839ec608659c0c371

Git commit 281e3235d3d4618afd9f01049b8a2acbe1c8475c by Kitsune Ral on 06/07/2019 at 02:41..
Connection::serverPart: replace auto with QString because of QStringBuilder

See https://github.com/KDE/clazy/blob/master/docs/checks/README-auto-unexpected-qstringbuilder.md
Closes #613.
https://invent.kde.org/neon/forks/libquotient/-/commit/281e3235d3d4618afd9f01049b8a2acbe1c8475c

Git commit 9ad25f204fa6caadf93203c42f3ea7de17dceab0 by Kitsune Ral on 06/07/2019 at 03:35..
Room::setLocalAliases: now actually working (with a caveat)

The caveat is that the library doesn't support .well-known yet, therefore will work not fully correctly (in particular - won't correctly set aliases) with servers that have serverpart different from the homeserver hostname used to connect to it.
https://invent.kde.org/neon/forks/libquotient/-/commit/9ad25f204fa6caadf93203c42f3ea7de17dceab0

Git commit 5b8079ca3d35360b7d98814654f37885f21bcb7e by Kitsune Ral on 06/07/2019 at 10:53..
Fix clazy warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/5b8079ca3d35360b7d98814654f37885f21bcb7e

Git commit 01cce0e39d255cbcf39f6a1aa58c6d7ab1d995d1 by Kitsune Ral on 06/07/2019 at 10:58..
Convenience: StateKeyKey, StateKeyKeyL, basicStateEventJson()
https://invent.kde.org/neon/forks/libquotient/-/commit/01cce0e39d255cbcf39f6a1aa58c6d7ab1d995d1

Git commit cbb4f219d5c79f81706019c0679222d5ccee4a4c by Kitsune Ral on 06/07/2019 at 10:59..
loadStateEvent()
https://invent.kde.org/neon/forks/libquotient/-/commit/cbb4f219d5c79f81706019c0679222d5ccee4a4c

Git commit 025e5ab7d90ce8cf474567457301de32d5a3e34a by Kitsune Ral on 06/07/2019 at 11:13..
Be stricter on usage of stateKey

A few places in the library dealt with state events without any notion
of state_key inside events, including StateEvent[Base] and relevant
functions in Room. A number of workarounds have been made; e.g.,
Room::setMemberState() accepted userId as a separate parameter, ignoring
the state key inside the RoomMemberEvent already passed to it, and
Room::setLocalAliases() had a bug in the initial version where the
function still tried to pass aliases in an event with an empty state
key. This commit fixes this shortcoming: StateEventBase now gets
stateKey as one more parameter, Room::Private::getCurrentState()
respects stateKey and returns properly constructed stub events, and
Room::setMemberState() gives way to a more generic Room::setState() that
works uniformly with whatever state event you pass to it.
https://invent.kde.org/neon/forks/libquotient/-/commit/025e5ab7d90ce8cf474567457301de32d5a3e34a

Git commit f58819e4e930ee66e790eccaedf551f807956d72 by Kitsune Ral on 06/07/2019 at 12:01..
Fix building with Clang
https://invent.kde.org/neon/forks/libquotient/-/commit/f58819e4e930ee66e790eccaedf551f807956d72

Git commit a4d1acb8e9e3f101c891f9089a07e214e5cc55f8 by Kitsune Ral on 06/07/2019 at 12:03..
.appveyor.yml: stick with static libs
https://invent.kde.org/neon/forks/libquotient/-/commit/a4d1acb8e9e3f101c891f9089a07e214e5cc55f8

Git commit 717f3bc6c91b14905f222e094e439b4cdcdab2c8 by Kitsune Ral on 06/07/2019 at 14:08..
Merge branch 'master' into e2ee-enc-mng
https://invent.kde.org/neon/forks/libquotient/-/commit/717f3bc6c91b14905f222e094e439b4cdcdab2c8

Git commit 4e521ae29a55deaab2ca9d62cddd3791015c6cfb by Kitsune Ral on 06/07/2019 at 14:09..
EncryptionEvent: Adjust upon merge from master
https://invent.kde.org/neon/forks/libquotient/-/commit/4e521ae29a55deaab2ca9d62cddd3791015c6cfb

Git commit d5b4e6440dae82eebc86657dd2f828edaf81b180 by Kitsune Ral on 07/07/2019 at 04:52..
Fix qmake builds in CI
https://invent.kde.org/neon/forks/libquotient/-/commit/d5b4e6440dae82eebc86657dd2f828edaf81b180

Git commit 6c9d895c03b9d0e7ffbf5bace3994536ff3215be by GitHub (on behalf of Kitsune Ral) on 07/07/2019 at 05:47..
Merge pull request #329 from a-andreyev/aa13q-e2ee-enc-mng

E2EE: Introduce EncryptionManager with uploadIdentityKeys and uploadOneTimeKeys API.
https://invent.kde.org/neon/forks/libquotient/-/commit/6c9d895c03b9d0e7ffbf5bace3994536ff3215be

Git commit 40002b09f741e5ce1ed618141b2a218438d97084 by Kitsune Ral on 07/07/2019 at 07:47..
Logging categories: libqmatrixclient.* -> quotient.*
https://invent.kde.org/neon/forks/libquotient/-/commit/40002b09f741e5ce1ed618141b2a218438d97084

Git commit 3d2b359b6766c008ba28f16737a9faee79043d07 by Kitsune Ral on 07/07/2019 at 07:48..
Documentation: libQMatrixClient -> libQuotient, QMatrixClient -> quotient-im, etc.
https://invent.kde.org/neon/forks/libquotient/-/commit/3d2b359b6766c008ba28f16737a9faee79043d07

Git commit 112632e27fa26fcfbb49886d21704f398cd6a928 by Kitsune Ral on 07/07/2019 at 07:58..
.travis.yml: pass LD_LIBRARY_PATH so that the example could find olm
https://invent.kde.org/neon/forks/libquotient/-/commit/112632e27fa26fcfbb49886d21704f398cd6a928

Git commit 898906a2ac056ab8837a7307c745c3437feff74e by Kitsune Ral on 07/07/2019 at 07:59..
Optimize Travis CI execution

The same code is already in Quaternion's .travis.yml, just copy it here as well.
https://invent.kde.org/neon/forks/libquotient/-/commit/898906a2ac056ab8837a7307c745c3437feff74e

Git commit eada787376b9f13e7fdd4e7d127074d5c3b3353e by Kitsune Ral on 07/07/2019 at 08:31..
.travis.yml: Fix a typo in qmc-example invocation
https://invent.kde.org/neon/forks/libquotient/-/commit/eada787376b9f13e7fdd4e7d127074d5c3b3353e

Git commit 0bfb1c1c69c02c7936cb018ead496616322a1cf7 by Alexey Andreyev on 08/07/2019 at 08:36..
E2EE: add new account generation logic
https://invent.kde.org/neon/forks/libquotient/-/commit/0bfb1c1c69c02c7936cb018ead496616322a1cf7

Git commit 8c49ac34c94b53f74c23f67ce3a2720673ab2fac by Alexey Andreyev on 08/07/2019 at 10:00..
E2EE: fix uploadIdentityKeys signatures generation
https://invent.kde.org/neon/forks/libquotient/-/commit/8c49ac34c94b53f74c23f67ce3a2720673ab2fac

Git commit 36f63f398b8a36e0b276e78eceaf3c4123be6b13 by Kitsune Ral on 08/07/2019 at 10:42..
RoomEvent::setRoomId()/setSender()
https://invent.kde.org/neon/forks/libquotient/-/commit/36f63f398b8a36e0b276e78eceaf3c4123be6b13

Git commit f0c1269bf592f5ba1ccde3b667e6737fe75a335d by Kitsune Ral on 08/07/2019 at 10:42..
Room: Set roomId and sender on pending events

Also: refactoring to streamline state events submission.
https://invent.kde.org/neon/forks/libquotient/-/commit/f0c1269bf592f5ba1ccde3b667e6737fe75a335d

Git commit f8eb9db4c4c13d6db65d23393fdcda2ac020bb3e by GitHub (on behalf of Kitsune Ral) on 08/07/2019 at 11:00..
Merge pull request #332 from quotient-im/aa13q-e2ee-pickle

E2EE: add new account and identity keys generation logic
https://invent.kde.org/neon/forks/libquotient/-/commit/f8eb9db4c4c13d6db65d23393fdcda2ac020bb3e

Git commit 36ba515437198659205fceabcdcea0db2d3a6dba by Alexey Andreyev on 08/07/2019 at 13:45..
E2EE: fix EncryptionManager algorithm names
https://invent.kde.org/neon/forks/libquotient/-/commit/36ba515437198659205fceabcdcea0db2d3a6dba

Git commit 9f0c237dbd1d684e0ce9a7a51bf415577c209f5e by GitHub (on behalf of Kitsune Ral) on 08/07/2019 at 22:21..
Merge pull request #333 from quotient-im/aa13q-e2ee-enc-mng

E2EE: fix EncryptionManager algorithm names
https://invent.kde.org/neon/forks/libquotient/-/commit/9f0c237dbd1d684e0ce9a7a51bf415577c209f5e

Git commit 651478c1681ba6f93e22c20328a048dbbc263ffe by Kitsune Ral on 09/07/2019 at 01:19..
Move serverPart() to the public API

Also: Connection::resolveServer() now only accepts MXIDs, not domains.
https://invent.kde.org/neon/forks/libquotient/-/commit/651478c1681ba6f93e22c20328a048dbbc263ffe

Git commit 31e28e2a99e6815da407d201e7287423a4956138 by Kitsune Ral on 09/07/2019 at 02:49..
Merge branch 'master' into use-clang-format
https://invent.kde.org/neon/forks/libquotient/-/commit/31e28e2a99e6815da407d201e7287423a4956138

Git commit f40d511917e7ac1e44106b24bfa3cdf93bd6f664 by Black Hat on 09/07/2019 at 12:46..
Add more checks according to the spec
https://invent.kde.org/neon/forks/libquotient/-/commit/f40d511917e7ac1e44106b24bfa3cdf93bd6f664

Git commit 45443dfbd8e800238ec0f0b6d284c144c02ee0d8 by GitHub (on behalf of Kitsune Ral) on 09/07/2019 at 22:49..
Merge pull request #330 from quotient-im/bhat-wellknown

.well-known support
https://invent.kde.org/neon/forks/libquotient/-/commit/45443dfbd8e800238ec0f0b6d284c144c02ee0d8

Git commit 6c4e78e8a55eab681393faff888448c887bb7127 by Kitsune Ral on 10/07/2019 at 06:49..
CMakeLists.txt: fix things around clang-format, inherit CLANG_FORMAT_ARGS
https://invent.kde.org/neon/forks/libquotient/-/commit/6c4e78e8a55eab681393faff888448c887bb7127

Git commit ecda3a007ed504d3c6b64b7895082107222d62f7 by Kitsune Ral on 10/07/2019 at 10:32..
.travis.yml: switch to xenial and Qt 5.9
https://invent.kde.org/neon/forks/libquotient/-/commit/ecda3a007ed504d3c6b64b7895082107222d62f7

Git commit 5b37e15d6a57d3b689c88f5cfce7afea9787a034 by Kitsune Ral on 10/07/2019 at 23:08..
.travis.yml: temporarily disabling Valgrind because it's broken
https://invent.kde.org/neon/forks/libquotient/-/commit/5b37e15d6a57d3b689c88f5cfce7afea9787a034

Git commit 74caea2669b8f76ca76507bc40321fdcd23dc522 by Kitsune Ral on 12/07/2019 at 09:02..
Minor polish
https://invent.kde.org/neon/forks/libquotient/-/commit/74caea2669b8f76ca76507bc40321fdcd23dc522

Git commit f1546e894b2a7550bce3e8d84067968bf5cf7087 by Alexey Andreyev on 13/07/2019 at 23:33..
E2EE: provide a shared header with encryption standard key names
https://invent.kde.org/neon/forks/libquotient/-/commit/f1546e894b2a7550bce3e8d84067968bf5cf7087

Git commit bc8d6b7addc07b6882e86ad02ddd0261ce544101 by Black Hat on 18/07/2019 at 04:42..
libQtOlm: Upstream fix of qmake not able to find libOlm on macOS.
https://invent.kde.org/neon/forks/libquotient/-/commit/bc8d6b7addc07b6882e86ad02ddd0261ce544101

Git commit 0542a3036a82cd816225171dba88ded291beca15 by GitHub (on behalf of Kitsune Ral) on 25/07/2019 at 06:26..
Merge pull request #334 from quotient-im/bhat-olm-qmake-macos

libQtOlm: Upstream fix of qmake not able to find libOlm on macOS.
https://invent.kde.org/neon/forks/libquotient/-/commit/0542a3036a82cd816225171dba88ded291beca15

Git commit 2737dc00334ad3a56c1b311435dbe84453ee389e by Alexey Andreyev on 27/07/2019 at 10:33..
E2EE: introduce EncryptedEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/2737dc00334ad3a56c1b311435dbe84453ee389e

Git commit b38d48e5bd2764568539089b248d0c3683783aa8 by Kitsune Ral on 30/07/2019 at 23:36..
converters.h: more comments; documented addParam<>()

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/b38d48e5bd2764568539089b248d0c3683783aa8

Git commit a16b8bcb89738d7efff868105f037ce066263dd8 by Kitsune Ral on 31/07/2019 at 02:00..
QMCTest::loadingMembers(): find a room by alias

...now that #264 is closed. Also, it gets the newest
#quotient:matrix.org rather than the old upgraded room.
https://invent.kde.org/neon/forks/libquotient/-/commit/a16b8bcb89738d7efff868105f037ce066263dd8

Git commit 5d9016c865c0f5eafbc4e2fe24438447c8896e4a by Kitsune Ral on 31/07/2019 at 02:02..
.appveyor.yml: Switch to Qt 5.12; no more Visual Studio 2015 builds
https://invent.kde.org/neon/forks/libquotient/-/commit/5d9016c865c0f5eafbc4e2fe24438447c8896e4a

Git commit 26bc529ec86dce5478ab37222a27902af7f0dd5a by Kitsune Ral on 31/07/2019 at 02:09..
converters.h: fallback to intrusive toJson() for JsonObjectConverter; general improvements

Single-argument fromJson<Omittable<T>>() now works as well.
https://invent.kde.org/neon/forks/libquotient/-/commit/26bc529ec86dce5478ab37222a27902af7f0dd5a

Git commit b87097866f38b90f36fb216b7516a135227930a1 by Kitsune Ral on 31/07/2019 at 02:16..
Initial support for edited messages (receive only)
https://invent.kde.org/neon/forks/libquotient/-/commit/b87097866f38b90f36fb216b7516a135227930a1

Git commit b89d5c43746ed672d98bf350db2a9e1b0878e2d0 by Kitsune Ral on 31/07/2019 at 02:28..
Support for receiving m.reaction events

* struct EventRelation; class ReactionEvent; Room::relatedEvents()
* Reaction events are processed in both history and sync batches
* Redacting a reaction removes it from the list of related events
* QMCTest::sendReaction()
https://invent.kde.org/neon/forks/libquotient/-/commit/b89d5c43746ed672d98bf350db2a9e1b0878e2d0

Git commit 1ea94b918569dd26452f285c408e605f9dc15343 by Kitsune Ral on 31/07/2019 at 02:28..
Room::postReaction()
https://invent.kde.org/neon/forks/libquotient/-/commit/1ea94b918569dd26452f285c408e605f9dc15343

Git commit f31104a7a65e21504a921da9710fe193b0e41904 by Kitsune Ral on 31/07/2019 at 08:14..
.travis.yml: switch to xenial and Qt 5.9
https://invent.kde.org/neon/forks/libquotient/-/commit/f31104a7a65e21504a921da9710fe193b0e41904

Git commit 0df1cdcf40fd639f039f0c0e7165c8c40f6efd79 by Kitsune Ral on 31/07/2019 at 08:14..
.travis.yml: temporarily disabling Valgrind because it's broken
https://invent.kde.org/neon/forks/libquotient/-/commit/0df1cdcf40fd639f039f0c0e7165c8c40f6efd79

Git commit f5083ee71e6fad9f28c4b835899f3ad574b426f1 by GitHub (on behalf of Kitsune Ral) on 31/07/2019 at 08:33..
Merge pull request #335 from quotient-im/aa13q-e2ee-encrypted-msg

E2EE: introduce EncryptedEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/f5083ee71e6fad9f28c4b835899f3ad574b426f1

Git commit 405271605f334ad09c7dc638fc5d6ef11849cada by Kitsune Ral on 01/08/2019 at 00:55..
Merge branch 'master' into kitsune-relations

Unified *Key -> *KeyL identifiers in roommessageevent.cpp along the way.
https://invent.kde.org/neon/forks/libquotient/-/commit/405271605f334ad09c7dc638fc5d6ef11849cada

Git commit c81ce9d05dab090871f1a79ebdd54b6f88ccd1cc by Kitsune Ral on 01/08/2019 at 02:06..
Add EncryptedEvent to libqmatrixclient.pri as well
https://invent.kde.org/neon/forks/libquotient/-/commit/c81ce9d05dab090871f1a79ebdd54b6f88ccd1cc

Git commit 5b236dfe895c7766002559570aa29c9033009228 by GitHub (on behalf of Kitsune Ral) on 01/08/2019 at 03:16..
Merge pull request #341 from quotient-im/kitsune-relations

Reactions and edited messages support
https://invent.kde.org/neon/forks/libquotient/-/commit/5b236dfe895c7766002559570aa29c9033009228

Git commit 35cfef7a4253d49a37e5ce21c337fbb3d2633c42 by Kitsune Ral on 02/08/2019 at 00:32..
Merge branch 'master' into use-clang-format
https://invent.kde.org/neon/forks/libquotient/-/commit/35cfef7a4253d49a37e5ce21c337fbb3d2633c42

Git commit 8dcf42e70578c8c37fe3200c3e99ffa8d80d03c3 by Kitsune Ral on 02/08/2019 at 00:35..
.clang-format: Bring back AlwaysBreakTemplateDeclarations

It was accidentally left commented out in trying to support clang-format 5. Now that we're embracing clang-format 6+ only, it really should be on.
https://invent.kde.org/neon/forks/libquotient/-/commit/8dcf42e70578c8c37fe3200c3e99ffa8d80d03c3

Git commit accf1b2ac33eaa91ec4030cb77079d5a26680a0b by Kitsune Ral on 02/08/2019 at 04:56..
.clang-format: Enable ConstructorInitializerAllOnOneLineOrOnePerLine
https://invent.kde.org/neon/forks/libquotient/-/commit/accf1b2ac33eaa91ec4030cb77079d5a26680a0b

Git commit 83453eda5dc74c64548b51860d8f7ef08123bec3 by Kitsune Ral on 02/08/2019 at 05:52..
e2ee.h: add a missing #include

Revealed after reordering #includes with clang-format.
https://invent.kde.org/neon/forks/libquotient/-/commit/83453eda5dc74c64548b51860d8f7ef08123bec3

Git commit 1a1ea8fc87e827fa44c80ff30277e3bee62f4ebb by Kitsune Ral on 02/08/2019 at 10:56..
.clang-format: Alter brace wrapping to (mostly) match WebKit style
https://invent.kde.org/neon/forks/libquotient/-/commit/1a1ea8fc87e827fa44c80ff30277e3bee62f4ebb

Git commit c05ade838f0fce81f2bbe80a3295618a8a26ff52 by Kitsune Ral on 02/08/2019 at 10:59..
Apply the new brace wrapping to source files
https://invent.kde.org/neon/forks/libquotient/-/commit/c05ade838f0fce81f2bbe80a3295618a8a26ff52

Git commit 16ed52736f38b7d42fadc5174472a48f6c623c8f by Kitsune Ral on 02/08/2019 at 11:01..
Room/qmc-example: consider fake state event rejection as valid

This is an addition in https://github.com/matrix-org/synapse/pull/5805 -
Synapse no more tolerates fake state events (which actually obviates
the need for this test but fake state events still go through on older
Synapses). To allow checking for both cases Room behaviour has been
slightly changed (without compat breakage) to make sure the pending
event status is set to ReachedServer (and pendingEventChanged() is
emitted, if necessary) before merging the pending event into the
timeline.
https://invent.kde.org/neon/forks/libquotient/-/commit/16ed52736f38b7d42fadc5174472a48f6c623c8f

Git commit 2b1c470d4f27311fadc21edee411c22651fa97f9 by Kitsune Ral on 02/08/2019 at 11:01..
qmc-example: Drop resetting the topic after topic-setting tests

That never really worked.
https://invent.kde.org/neon/forks/libquotient/-/commit/2b1c470d4f27311fadc21edee411c22651fa97f9

Git commit 2681303c2aed1bf20e385c41f1382f5aade66e35 by Kitsune Ral on 02/08/2019 at 11:01..
Room: avoid assertion crashes; name variables better
https://invent.kde.org/neon/forks/libquotient/-/commit/2681303c2aed1bf20e385c41f1382f5aade66e35

Git commit 412e2cf19449e73aa7da729e9c5de6502687aade by Black Hat on 02/08/2019 at 13:23..
Update libQtOlm
https://invent.kde.org/neon/forks/libquotient/-/commit/412e2cf19449e73aa7da729e9c5de6502687aade

Git commit 66e116b7b1e848e80577a0229c8995db0a54932e by GitHub (on behalf of Kitsune Ral) on 03/08/2019 at 08:29..
Merge pull request #295 from marcdeop/140_impose_coding_standard

140 impose coding standard
https://invent.kde.org/neon/forks/libquotient/-/commit/66e116b7b1e848e80577a0229c8995db0a54932e

Git commit b9833c1ad21e1a57ff5d33ad94cb3b865159d06a by Kitsune Ral on 03/08/2019 at 09:03..
Merge branch 'kitsune-update-fake-state-test'
https://invent.kde.org/neon/forks/libquotient/-/commit/b9833c1ad21e1a57ff5d33ad94cb3b865159d06a

Git commit 54c7eeab3e42737c7261aa2ae085cf87e616ee1b by Kitsune Ral on 03/08/2019 at 11:25..
qmc-example: fix assertion failure
https://invent.kde.org/neon/forks/libquotient/-/commit/54c7eeab3e42737c7261aa2ae085cf87e616ee1b

Git commit b0f259c3aa4ca619a6998184d16f9ab2daf5b5f4 by Kitsune Ral on 04/08/2019 at 00:31..
Updated documentation; bumped up requirements

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/b0f259c3aa4ca619a6998184d16f9ab2daf5b5f4

Git commit 7a5b359b8823646ce97cbaf05c251cb04c291466 by Kitsune Ral on 09/08/2019 at 01:18..
Rename zero-impact strings
https://invent.kde.org/neon/forks/libquotient/-/commit/7a5b359b8823646ce97cbaf05c251cb04c291466

Git commit 27ca32a1e5a56e09b9cc1d94224d2831004dcf3d by Kitsune Ral on 09/08/2019 at 01:18..
Namespace: QMatrixClient -> Quotient (with back comp alias)
https://invent.kde.org/neon/forks/libquotient/-/commit/27ca32a1e5a56e09b9cc1d94224d2831004dcf3d

Git commit 62674f731b0e46d8a413e26ca1c9da27fd9aae9a by Kitsune Ral on 09/08/2019 at 01:18..
stringToHueF: pick a safer name for the variable

std::string is still a thing, after all.
https://invent.kde.org/neon/forks/libquotient/-/commit/62674f731b0e46d8a413e26ca1c9da27fd9aae9a

Git commit a18cfa5877798e50e4222726fa63fcef5ee248bb by Kitsune Ral on 09/08/2019 at 01:18..
Rename CMake/pkg-config related parts
https://invent.kde.org/neon/forks/libquotient/-/commit/a18cfa5877798e50e4222726fa63fcef5ee248bb

Git commit 38f063e75757e97bfe1fda9655ab460454ba99db by Kitsune Ral on 09/08/2019 at 11:39..
Rename entries for qmake
https://invent.kde.org/neon/forks/libquotient/-/commit/38f063e75757e97bfe1fda9655ab460454ba99db

Git commit 01570f70926c716441cdb62928231a35af72ebc3 by Kitsune Ral on 09/08/2019 at 14:02..
Merge branch 'renaming'
https://invent.kde.org/neon/forks/libquotient/-/commit/01570f70926c716441cdb62928231a35af72ebc3

Git commit 0c425aedbf3729941e40b1606a7c54169b84cf97 by Kitsune Ral on 11/08/2019 at 00:31..
Cleanup

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/0c425aedbf3729941e40b1606a7c54169b84cf97

Git commit a1be9751f17041a7f577b04f7545035734a92e22 by Kitsune Ral on 11/08/2019 at 03:30..
SyncData: x-qmatrixclient -> x-quotient
https://invent.kde.org/neon/forks/libquotient/-/commit/a1be9751f17041a7f577b04f7545035734a92e22

Git commit 64d096d3f8cdf93216ab138ea0378ae60a19b7d2 by Kitsune Ral on 11/08/2019 at 03:33..
Connection: check for cache_type setting in libQuotient group

The fallback to libQMatrixClient still remains.
https://invent.kde.org/neon/forks/libquotient/-/commit/64d096d3f8cdf93216ab138ea0378ae60a19b7d2

Git commit 0ecc5d4992ad2086ee9e399a23f233b653b74ee3 by Kitsune Ral on 11/08/2019 at 04:17..
Officially bump requirements: CMake 3.10, C++17, Qt 5.9
https://invent.kde.org/neon/forks/libquotient/-/commit/0ecc5d4992ad2086ee9e399a23f233b653b74ee3

Git commit 9ce16ef3123d5e63b931cafefb7dba4e894fc82b by Kitsune Ral on 11/08/2019 at 04:18..
Drop EventType namespace and DEFINE_EVENTTYPE_ALIAS macro

They've been deprecated for almost a year by now.
https://invent.kde.org/neon/forks/libquotient/-/commit/9ce16ef3123d5e63b931cafefb7dba4e894fc82b

Git commit b41acc4c2ee3bf483e89157230655f3695177b60 by Kitsune Ral on 11/08/2019 at 04:37..
README.md: oldest good Debian is Buster, not Stretch

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/b41acc4c2ee3bf483e89157230655f3695177b60

Git commit 35d9c4dd6743d706ed9382c021923ef790e7c446 by Kitsune Ral on 11/08/2019 at 06:48..
Configure MSVC warnings in CMakeLists.txt; build in AppVeyor with Qt 5.13
https://invent.kde.org/neon/forks/libquotient/-/commit/35d9c4dd6743d706ed9382c021923ef790e7c446

Git commit 0f10255cf20df9415cbafa71b1d131af713f4b82 by Kitsune Ral on 11/08/2019 at 07:05..
CMakeLists.txt: suppress some MSVC warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/0f10255cf20df9415cbafa71b1d131af713f4b82

Git commit 56a180e1f99ab8f0c5c2e5fb0d3ea326e5838888 by Kitsune Ral on 11/08/2019 at 07:08..
CMakeLists.txt: fixed typos
https://invent.kde.org/neon/forks/libquotient/-/commit/56a180e1f99ab8f0c5c2e5fb0d3ea326e5838888

Git commit f2e958b4becb9021546d0355026fefce8557c7b6 by Kitsune Ral on 11/08/2019 at 07:12..
CMakeLists.txt: suppress more MSVC warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/f2e958b4becb9021546d0355026fefce8557c7b6

Git commit a3223e749d6f6c72b7c0ef638a1314d8bc77bc06 by Kitsune Ral on 11/08/2019 at 07:41..
CMakeLists.txt: more MSVC warning suppresions
https://invent.kde.org/neon/forks/libquotient/-/commit/a3223e749d6f6c72b7c0ef638a1314d8bc77bc06

Git commit e9ae0d5eaac12a276ea352f1e633fb22cdd46828 by Kitsune Ral on 11/08/2019 at 08:01..
Now that we're C++17, remove old compatibility cruft
https://invent.kde.org/neon/forks/libquotient/-/commit/e9ae0d5eaac12a276ea352f1e633fb22cdd46828

Git commit 1803e79038a8f8ab966c40572c039b10bf51072e by Kitsune Ral on 11/08/2019 at 08:02..
More MSVC suppresions; switch to C++17 in qmake as well
https://invent.kde.org/neon/forks/libquotient/-/commit/1803e79038a8f8ab966c40572c039b10bf51072e

Git commit 372a9ed301e52d6daf7ccdb9a9982a67f46486a1 by Kitsune Ral on 11/08/2019 at 08:08..
Use [[maybe_unused]] instead of [[gnu::unused]]
https://invent.kde.org/neon/forks/libquotient/-/commit/372a9ed301e52d6daf7ccdb9a9982a67f46486a1

Git commit 9758dfad6d08edf7ae67b38ad59651e33b7e6465 by Kitsune Ral on 11/08/2019 at 09:13..
CMakeLists.txt: tell CMake to not add /W3 flag for MSVC

...because /W4 is explicitly added instead.
https://invent.kde.org/neon/forks/libquotient/-/commit/9758dfad6d08edf7ae67b38ad59651e33b7e6465

Git commit ac2b6ddae48a15e57ef3c72caf33711ae01a9fbd by Kitsune Ral on 12/08/2019 at 06:15..
CONTRIBUTING.md: more about commenting code
https://invent.kde.org/neon/forks/libquotient/-/commit/ac2b6ddae48a15e57ef3c72caf33711ae01a9fbd

Git commit cf19c87f6561afee7aba5591d3c81b7a158449ea by Kitsune Ral on 12/08/2019 at 06:37..
Make Settings::remove() to clear the legacy; more doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/cf19c87f6561afee7aba5591d3c81b7a158449ea

Git commit 1ece121b14ae82f7dd0b893d0dbef3de7c84d303 by Kitsune Ral on 12/08/2019 at 06:47..
e2ee.h: Make constants inline instead of static

This changes from internal linkage for every translation unit including
e2ee.h to external linkage across translation units but without the need
to create a .cpp file just to define and init the constants.
https://invent.kde.org/neon/forks/libquotient/-/commit/1ece121b14ae82f7dd0b893d0dbef3de7c84d303

Git commit dd6731a2afc5b37badd52aadaa0b3e663719d3ea by Kitsune Ral on 12/08/2019 at 07:53..
.travis.yml: Switch to bionic
https://invent.kde.org/neon/forks/libquotient/-/commit/dd6731a2afc5b37badd52aadaa0b3e663719d3ea

Git commit e30b69013e269464495fcda0f0d4065ff10e1c00 by Kitsune Ral on 12/08/2019 at 07:58..
Ok, bionic has its own Qt5
https://invent.kde.org/neon/forks/libquotient/-/commit/e30b69013e269464495fcda0f0d4065ff10e1c00

Git commit 1642cffa53f8224f4bcf5165dacbfd2a063c320e by Kitsune Ral on 12/08/2019 at 08:53..
Update Qt5 package naming to match that in bionic
https://invent.kde.org/neon/forks/libquotient/-/commit/1642cffa53f8224f4bcf5165dacbfd2a063c320e

Git commit 4bc7bd71d5c00218e919c14c607dda3edc470ee4 by Kitsune Ral on 12/08/2019 at 09:13..
.travis.yml: add qtmultimedia5-dev to Linux build boxes
https://invent.kde.org/neon/forks/libquotient/-/commit/4bc7bd71d5c00218e919c14c607dda3edc470ee4

Git commit de378851ef9f6a89bb1f4fffa88681cc0e83d93f by Kitsune Ral on 12/08/2019 at 09:56..
qmc-example.pro: CONFIG += c++17 warn_on
https://invent.kde.org/neon/forks/libquotient/-/commit/de378851ef9f6a89bb1f4fffa88681cc0e83d93f

Git commit 18cb395868f448a34dacd55a0b7b5c5eb9f06e27 by Kitsune Ral on 12/08/2019 at 11:13..
README.md: a few notes around using with qmake
https://invent.kde.org/neon/forks/libquotient/-/commit/18cb395868f448a34dacd55a0b7b5c5eb9f06e27

Git commit fadce11be92abe76cecfe6356b3b38f25dd93e8d by Kitsune Ral on 13/08/2019 at 11:28..
Support for server notices rooms (MSC1452)

Closes #326.
https://invent.kde.org/neon/forks/libquotient/-/commit/fadce11be92abe76cecfe6356b3b38f25dd93e8d

Git commit 8663c2e78407a0c0df872eaf9bb6b41de2fbdc9e by Kitsune Ral on 16/08/2019 at 04:40..
BaseJob: support M_USER_DEACTIVATED error code

Closes #344.
https://invent.kde.org/neon/forks/libquotient/-/commit/8663c2e78407a0c0df872eaf9bb6b41de2fbdc9e

Git commit 5d94e0fa2a3cd1e43b99b0c309bc9e84c6850378 by Roland Pallai on 17/08/2019 at 18:11..
Update the cache for sure if unread counters were changed

In Quaternion, I was able to reproduce a process where
`d->notificationCount` and `d->highlightCount` were changed in
`Room::updateData()` meanwhile `roomChanges` indicated `NoChange`
thus the cache became permanently inconsistent with running state.

Without deep understanding of `roomChanges` logic, I've applied
this straightforward change which made this phenomenon
unreproducible.
https://invent.kde.org/neon/forks/libquotient/-/commit/5d94e0fa2a3cd1e43b99b0c309bc9e84c6850378

Git commit 904fb065c07894978845003bac156616da21274e by Kitsune Ral on 17/08/2019 at 23:23..
.clang-format: minor tweaks in penalties
https://invent.kde.org/neon/forks/libquotient/-/commit/904fb065c07894978845003bac156616da21274e

Git commit 41a3661f353207be4005a2cd9b0bb7cfa5601a69 by Kitsune Ral on 18/08/2019 at 09:22..
New logging categories: events.state, events.messages, and e2ee
https://invent.kde.org/neon/forks/libquotient/-/commit/41a3661f353207be4005a2cd9b0bb7cfa5601a69

Git commit 7e4e7e9cf10828192482f91748cf29807f101f36 by Kitsune Ral on 18/08/2019 at 10:01..
Room::decryptMessage: fix memory leaks and dangling pointers
https://invent.kde.org/neon/forks/libquotient/-/commit/7e4e7e9cf10828192482f91748cf29807f101f36

Git commit 618b0dfd5434fc4e99fe8a19d03b3c50c57cb76b by GitHub (on behalf of Kitsune Ral) on 18/08/2019 at 10:22..
Merge pull request #345 from rpallai/UnreadNotifsChange

Update the cache for sure if unread counters were changed
https://invent.kde.org/neon/forks/libquotient/-/commit/618b0dfd5434fc4e99fe8a19d03b3c50c57cb76b

Git commit a9eef2c6b2f73ebc921b07fe37009bccf31038c8 by Kitsune Ral on 18/08/2019 at 10:28..
Room::decryptMessage: now with the header file changes
https://invent.kde.org/neon/forks/libquotient/-/commit/a9eef2c6b2f73ebc921b07fe37009bccf31038c8

Git commit aa004bd80f9548c00bd7856c20421f168fadad69 by Kitsune Ral on 18/08/2019 at 10:28..
Room: use new logging categories
https://invent.kde.org/neon/forks/libquotient/-/commit/aa004bd80f9548c00bd7856c20421f168fadad69

Git commit 8f076ef801b9478c9414787252d46703be87953b by Kitsune Ral on 18/08/2019 at 10:30..
room.cpp: applied clang-format with updated penalty values
https://invent.kde.org/neon/forks/libquotient/-/commit/8f076ef801b9478c9414787252d46703be87953b

Git commit 25f8622bcdd4322ce9e41c34883cea5ff71a6817 by Kitsune Ral on 18/08/2019 at 23:20..
Room::Private::doSendEvent: fix too early change in BaseJob signals

That's a matter of another upcoming commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/25f8622bcdd4322ce9e41c34883cea5ff71a6817

Git commit 8629748c5c609882486d25d989becfe0ae2352ed by Kitsune Ral on 20/08/2019 at 08:59..
Store userId in ConnectionData instead of Connection

To collect all connection-identifying information in a single place.
https://invent.kde.org/neon/forks/libquotient/-/commit/8629748c5c609882486d25d989becfe0ae2352ed

Git commit 92614294a89c1f450b82c2b6e35614cf124dc344 by Kitsune Ral on 20/08/2019 at 09:10..
Connection::run()

Finally, clients can pre-create job objects and then separately submit
them for execution on a given connection - previously such separation
was a privilege of Connection (others had to use Connection::callApi<>,
which invoked jobs right away).
https://invent.kde.org/neon/forks/libquotient/-/commit/92614294a89c1f450b82c2b6e35614cf124dc344

Git commit ad159b5206de615762e22f95e97ae61400f11761 by Kitsune Ral on 20/08/2019 at 10:56..
BaseJob: Status/StatusCode tweaks, cleanup, mo' comments

Notably, recovered Status::fromHttpCode() that was introduced in
5722ceaf4bd10c29f1091e3dc5a87f5650ea8c71 but fell victim of a careless
merge (so much for introducing non-topical changes in feature branches).
https://invent.kde.org/neon/forks/libquotient/-/commit/ad159b5206de615762e22f95e97ae61400f11761

Git commit 59c4996a602e9eeae4e3bfc0210ff15f957df38f by Kitsune Ral on 20/08/2019 at 12:14..
BaseJob/ConnectionData: connection-wide rate-limiting

As before, completely transparent for clients, driven by 529 errors from
the server (but cases of rate limiting are signalled by
BaseJob::rateLimited). That brings changes to BaseJob API: timeouts now
use int64_t and also can be handled in std::chrono terms; aboutToStart()
-> aboutToSendRequest(); started() -> sentRequest(). Closes #292.
https://invent.kde.org/neon/forks/libquotient/-/commit/59c4996a602e9eeae4e3bfc0210ff15f957df38f

Git commit e997f214562acf30ae8d4ea7132dde6e583ac6fe by Kitsune Ral on 25/08/2019 at 04:07..
RoomMessageEvent::content(): constify event content
https://invent.kde.org/neon/forks/libquotient/-/commit/e997f214562acf30ae8d4ea7132dde6e583ac6fe

Git commit c3b69fb217c2de0f3b73051b36d4b1e190ef493e by Kitsune Ral on 26/08/2019 at 10:20..
setAvatarForRoom: try recover from otherAvatars inconsistency

Hopefully manages cases like #347 in a better way.
https://invent.kde.org/neon/forks/libquotient/-/commit/c3b69fb217c2de0f3b73051b36d4b1e190ef493e

Git commit c27916e7f96860659c5cfd7d311f6b10db3d592f by Kitsune Ral on 26/08/2019 at 10:20..
Room::calculateDisplayname: use local aliases for room naming

The Spec now allows it, even if with a disclaimer that
it's subject for further removal.
https://invent.kde.org/neon/forks/libquotient/-/commit/c27916e7f96860659c5cfd7d311f6b10db3d592f

Git commit d803b04d37e82dd7f8b901d29e04851d97d1f4eb by Kitsune Ral on 27/08/2019 at 07:51..
Tighten the code; add a missing #include

MSVC warns on class/struct mismatch and errors on std::array because
`<array>` is not indirectly included on that platform.
https://invent.kde.org/neon/forks/libquotient/-/commit/d803b04d37e82dd7f8b901d29e04851d97d1f4eb

Git commit c4a20a6d9a5f6bfbd4315450ccaff8195a3f521a by Kitsune Ral on 27/08/2019 at 07:51..
Don't use enumerator attributes

Anything after enumerators is a problem for moc before Qt 5.12; so
we can't use enumerator attributes before then.
https://invent.kde.org/neon/forks/libquotient/-/commit/c4a20a6d9a5f6bfbd4315450ccaff8195a3f521a

Git commit 97cac4b919735eb59493dd1cd528992ba90e611b by Kitsune Ral on 27/08/2019 at 08:22..
More compliant 'using' for chrono_literals

Compilers warn on using 'using ...::operator""s' because they
think we're redefining the reserved suffix.
https://invent.kde.org/neon/forks/libquotient/-/commit/97cac4b919735eb59493dd1cd528992ba90e611b

Git commit af0f7e3ae58c1f28baa9fe1385d70eefbacc0e8a by Kitsune Ral on 27/08/2019 at 09:49..
libquotient.pri: use c++1z to help older qmake

CONFIG *= c++17 is available from Qt 5.12 only.
https://invent.kde.org/neon/forks/libquotient/-/commit/af0f7e3ae58c1f28baa9fe1385d70eefbacc0e8a

Git commit 3b6959ab8ca5cd8d55c2e4627eb9a61dfb2506ff by GitHub (on behalf of Kitsune Ral) on 29/08/2019 at 03:36..
Merge pull request #348 from quotient-im/kitsune-better-basejob

Better BaseJob
https://invent.kde.org/neon/forks/libquotient/-/commit/3b6959ab8ca5cd8d55c2e4627eb9a61dfb2506ff

Git commit 473686bf953aa8726c7b747935d260be5d9f8ba1 by Kitsune Ral on 11/09/2019 at 09:39..
CMakeLists.txt: use set_target_properties(); specify C++ std per-target
https://invent.kde.org/neon/forks/libquotient/-/commit/473686bf953aa8726c7b747935d260be5d9f8ba1

Git commit 944653463fe4134c82d85e2d01e2bc0fa43fd727 by Kitsune Ral on 12/09/2019 at 02:12..
Introduce HashQ<> and UnorderedMap<>

Invading into std:: is frowned upon, even though legitimate from the C++ standard perspective. Given that it's possible to pass a hash object to unordered_map, it only takes an alias for std::unordered_map to avoid having to specialize std::hash. And besides, a generic compatibility bridge between qHash and std::hash has been long needed.

std::hash<QString> in converters.h remains for now; it will be dropped separately when the API files get regenerated to use UnorderedMap.
https://invent.kde.org/neon/forks/libquotient/-/commit/944653463fe4134c82d85e2d01e2bc0fa43fd727

Git commit c9f99699761e97b16bdb44f584f07baec5488b47 by Kitsune Ral on 24/09/2019 at 10:56..
Room: cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/c9f99699761e97b16bdb44f584f07baec5488b47

Git commit 363cf452bcdbaf6ff1cf94a83ca66cbb31122346 by Black Hat on 27/09/2019 at 05:22..
Merge branch 'master' of https://github.com/quotient-im/libQuotient into
bhat-libqtolm-update
https://invent.kde.org/neon/forks/libquotient/-/commit/363cf452bcdbaf6ff1cf94a83ca66cbb31122346

Git commit e454cee984b97d178a8c1d272431d1749576fbf0 by Black Hat on 27/09/2019 at 05:35..
Fix appveyor build #1.
https://invent.kde.org/neon/forks/libquotient/-/commit/e454cee984b97d178a8c1d272431d1749576fbf0

Git commit f376c1d46897e149e5393b5ef84667c06ca7f673 by Black Hat on 27/09/2019 at 06:02..
Fix AppVeyor #2.
https://invent.kde.org/neon/forks/libquotient/-/commit/f376c1d46897e149e5393b5ef84667c06ca7f673

Git commit c0591030c168e48bc65c43e8227d08060a66ee69 by Black Hat on 27/09/2019 at 06:49..
update libQtOlm
https://invent.kde.org/neon/forks/libquotient/-/commit/c0591030c168e48bc65c43e8227d08060a66ee69

Git commit 3995077cf3be380d4f06aeb6e5b753f39ff6cd15 by Black Hat on 27/09/2019 at 07:03..
try to fix AppVeyor
https://invent.kde.org/neon/forks/libquotient/-/commit/3995077cf3be380d4f06aeb6e5b753f39ff6cd15

Git commit 0442e2694e9e2f0f9d67026ff8ad2247f4ff50e5 by Black Hat on 27/09/2019 at 07:26..
Force C++17
https://invent.kde.org/neon/forks/libquotient/-/commit/0442e2694e9e2f0f9d67026ff8ad2247f4ff50e5

Git commit 12ac9d60cc0d6cbedb5be2fcdb030683247c4e1d by Black Hat on 27/09/2019 at 07:32..
Olm relwithdebuginfo build
https://invent.kde.org/neon/forks/libquotient/-/commit/12ac9d60cc0d6cbedb5be2fcdb030683247c4e1d

Git commit e6ede4f43c8a9325900838009fb8a60f164faa33 by Black Hat on 27/09/2019 at 07:49..
Fix Travis CI.
https://invent.kde.org/neon/forks/libquotient/-/commit/e6ede4f43c8a9325900838009fb8a60f164faa33

Git commit 97e2ac6201c14aaaf2a2ea9af60c904b197e067d by Black Hat on 27/09/2019 at 18:21..
Fix travis ci
https://invent.kde.org/neon/forks/libquotient/-/commit/97e2ac6201c14aaaf2a2ea9af60c904b197e067d

Git commit a49461cf05ae31e6cf560ab960212e2310ab0f52 by Black Hat on 27/09/2019 at 19:05..
Fix Travis CI QMake
https://invent.kde.org/neon/forks/libquotient/-/commit/a49461cf05ae31e6cf560ab960212e2310ab0f52

Git commit ccf4f267f294c1e731fecdada9470ed84ad78ecf by Black Hat on 27/09/2019 at 19:27..
Fix QMake travis ci
https://invent.kde.org/neon/forks/libquotient/-/commit/ccf4f267f294c1e731fecdada9470ed84ad78ecf

Git commit 71e7bbfbe774b422af178db57fe3e800a17f336d by Black Hat on 28/09/2019 at 21:49..
Enable QMake for AppVeyor
https://invent.kde.org/neon/forks/libquotient/-/commit/71e7bbfbe774b422af178db57fe3e800a17f336d

Git commit 6870ee0d7a0df3427845de07ddae1e2fd5768bbb by Black Hat on 28/09/2019 at 23:10..
Set CXX_STANDARD by target property
https://invent.kde.org/neon/forks/libquotient/-/commit/6870ee0d7a0df3427845de07ddae1e2fd5768bbb

Git commit 8f1bfa5c5764e399259c13b260661647363cf5d9 by Kitsune Ral on 29/09/2019 at 08:46..
Fix formatting weirdness

Alas, clang-format is not terrifically good around [[attributes]]
https://invent.kde.org/neon/forks/libquotient/-/commit/8f1bfa5c5764e399259c13b260661647363cf5d9

Git commit be53652eb30edd6e096c172a97609070d1e74746 by Kitsune Ral on 29/09/2019 at 08:51..
Settings: childGroups() should merge legacy and current groups; QMC->QTNT in macros

Because otherwise migrating one group to the current location leads to all other groups suddenly disappearing from Settings view.
https://invent.kde.org/neon/forks/libquotient/-/commit/be53652eb30edd6e096c172a97609070d1e74746

Git commit 1e6cbd34eff9817b99e02d2dfee4e0b0c8250794 by Kitsune Ral on 29/09/2019 at 08:52..
.clang-format: don't add a whitespace before a colon in range-for
https://invent.kde.org/neon/forks/libquotient/-/commit/1e6cbd34eff9817b99e02d2dfee4e0b0c8250794

Git commit 36589cd6e4c557da7d694c5973546f29a09dee7c by Kitsune Ral on 29/09/2019 at 14:35..
Make connectSingleShot work wherever QObject::connect works

Also: doc-comment connectUntil and unify implementation of both functions.
https://invent.kde.org/neon/forks/libquotient/-/commit/36589cd6e4c557da7d694c5973546f29a09dee7c

Git commit 72dd1eb7c1986c23a7630205e2f2a0280b7c2a2b by Kitsune Ral on 29/09/2019 at 14:35..
Simplify visit() signature

Checking that BaseEventT descends from Event is really extraneous.
https://invent.kde.org/neon/forks/libquotient/-/commit/72dd1eb7c1986c23a7630205e2f2a0280b7c2a2b

Git commit 534a15d05e0b6e1b44b6387003e1475150e848e8 by Kitsune Ral on 29/09/2019 at 14:35..
function_traits: drop unused pieces

is_callable won't ever be needed because std::is_invokable is here; arg_number and returns() didn't find its users; and function_type has been just broken all along for member functions.
https://invent.kde.org/neon/forks/libquotient/-/commit/534a15d05e0b6e1b44b6387003e1475150e848e8

Git commit f9c0e04259be9fd3be70486bc1eb76bf8f2612fe by Kitsune Ral on 29/09/2019 at 14:35..
Rename pieces with qmc/qmatrixclient
https://invent.kde.org/neon/forks/libquotient/-/commit/f9c0e04259be9fd3be70486bc1eb76bf8f2612fe

Git commit 7802bcb4dd44c7523cbc687b52dd2e65b900c636 by Kitsune Ral on 29/09/2019 at 14:35..
BaseJob, urlForLog() -> dumpRequest(): include HTTP verb into log lines
https://invent.kde.org/neon/forks/libquotient/-/commit/7802bcb4dd44c7523cbc687b52dd2e65b900c636

Git commit 508f4362b7b5e1863153cca6fe6756adedfa33ee by Kitsune Ral on 29/09/2019 at 14:35..
Connection: allRooms(), rooms(), roomsCount(); deprecate roomMap()

Closes #354.
https://invent.kde.org/neon/forks/libquotient/-/commit/508f4362b7b5e1863153cca6fe6756adedfa33ee

Git commit d0a0f8cda88d644ca38b2b90024303fbe362602c by Kitsune Ral on 29/09/2019 at 23:11..
Move C++ standard requirement to target_compile_features

...so that users of the library wouldn't need to redefine that they need C++17.
https://invent.kde.org/neon/forks/libquotient/-/commit/d0a0f8cda88d644ca38b2b90024303fbe362602c

Git commit f71d16b56ab90e494d6a41c276210a4ce593987e by Kitsune Ral on 01/10/2019 at 04:14..
Room::getCurrentState()
https://invent.kde.org/neon/forks/libquotient/-/commit/f71d16b56ab90e494d6a41c276210a4ce593987e

Git commit 3e694fc4c85920d897979f955901cfd93dfba562 by Black Hat on 01/10/2019 at 04:38..
Merge branch 'master' of https://github.com/quotient-im/libQuotient into bhat-libqtolm-update
https://invent.kde.org/neon/forks/libquotient/-/commit/3e694fc4c85920d897979f955901cfd93dfba562

Git commit 36f51c5bb7f080a71a00472b9f0e453983c9afa9 by Black Hat on 01/10/2019 at 04:39..
Update libQtOlm
https://invent.kde.org/neon/forks/libquotient/-/commit/36f51c5bb7f080a71a00472b9f0e453983c9afa9

Git commit f24007465236a94b51a85a06f7f88192b9771ab0 by GitHub (on behalf of Black Hat) on 01/10/2019 at 05:20..
Merge pull request #342 from quotient-im/bhat-libqtolm-update

Update libQtOlm
https://invent.kde.org/neon/forks/libquotient/-/commit/f24007465236a94b51a85a06f7f88192b9771ab0

Git commit f09665afde34dcf6eb7416ba1a5a8d539db67223 by GitHub (on behalf of Martin Rey) on 01/10/2019 at 21:11..
Fix openSUSE misspelling

Fix #355
The correct spelling of openSUSE can be checked on https://en.opensuse.org/Portal:Distribution
https://invent.kde.org/neon/forks/libquotient/-/commit/f09665afde34dcf6eb7416ba1a5a8d539db67223

Git commit bcd2179c78b26bd3150636ea255878f1caafc063 by GitHub (on behalf of Black Hat) on 02/10/2019 at 00:22..
Merge pull request #356 from m-rey/patch-1

Fix openSUSE misspelling
https://invent.kde.org/neon/forks/libquotient/-/commit/bcd2179c78b26bd3150636ea255878f1caafc063

Git commit 1a1093b849df33baa5cee246d71e6ba63730c52f by Kitsune Ral on 02/10/2019 at 00:36..
wrap_in_function()

Because Apple stdlib doesn't have std::function deduction guides.
https://invent.kde.org/neon/forks/libquotient/-/commit/1a1093b849df33baa5cee246d71e6ba63730c52f

Git commit a2badac44d94294d9404224a55b3193c87cc201d by Kitsune Ral on 02/10/2019 at 02:36..
More fixes for Apple not having deduction guides in stdlib
https://invent.kde.org/neon/forks/libquotient/-/commit/a2badac44d94294d9404224a55b3193c87cc201d

Git commit 4623632e14ee9367e5728daf745d5323eb6a51d5 by Kitsune Ral on 02/10/2019 at 03:04..
BaseJob::Private: experiment with [[nodiscard]]
https://invent.kde.org/neon/forks/libquotient/-/commit/4623632e14ee9367e5728daf745d5323eb6a51d5

Git commit c201f8a50d155707aabb83850c17a74dd4d571d3 by Black Hat on 02/10/2019 at 08:23..
Fix Room::localAliases()
When homeserver's csapi is in a subdomain, e.g. matrix.example.org, the
authority of api endpoint url differs from server name, example.org.
This causes Room::localAliases() to fail.
https://invent.kde.org/neon/forks/libquotient/-/commit/c201f8a50d155707aabb83850c17a74dd4d571d3

Git commit 67b31ac6400833bc7ef33b48e2126d8aca1c5f18 by Kitsune Ral on 11/10/2019 at 02:56..
.travis.yml: factor out common parts
https://invent.kde.org/neon/forks/libquotient/-/commit/67b31ac6400833bc7ef33b48e2126d8aca1c5f18

Git commit a4538e65359ea71f285d352d9cb44bdcdcab7139 by Kitsune Ral on 13/10/2019 at 07:06..
CI: use env variables to group common CMake (and other) values

For AppVeyor, skip olm installation as we don't intend to check dynamic linkage.
https://invent.kde.org/neon/forks/libquotient/-/commit/a4538e65359ea71f285d352d9cb44bdcdcab7139

Git commit 143b7f98664854a3204f7a4395f903d4149b1ca1 by Kitsune Ral on 13/10/2019 at 07:07..
Travis CI: Use built rather than installed olm

...until the patch to fix olm CMake installation is accepted upstream.
https://invent.kde.org/neon/forks/libquotient/-/commit/143b7f98664854a3204f7a4395f903d4149b1ca1

Git commit a3aa9b5addcc87cfe18c831207f0e97481b0e428 by Kitsune Ral on 13/10/2019 at 10:14..
Travis CI: Build olm as a dynamic object
https://invent.kde.org/neon/forks/libquotient/-/commit/a3aa9b5addcc87cfe18c831207f0e97481b0e428

Git commit e9b4f1223d90428ae79a4a5662dd03bc8cafe01e by Kitsune Ral on 13/10/2019 at 10:47..
Update Valgrind suppressions
https://invent.kde.org/neon/forks/libquotient/-/commit/e9b4f1223d90428ae79a4a5662dd03bc8cafe01e

Git commit 88d69a360090f8c027746358c6625224673113bf by Kitsune Ral on 13/10/2019 at 10:48..
Merge branch 'ci-refactoring'
https://invent.kde.org/neon/forks/libquotient/-/commit/88d69a360090f8c027746358c6625224673113bf

Git commit 1047c85d9b21559d27f2d70147faac38d3e78fb0 by Kitsune Ral on 14/10/2019 at 06:53..
.travis.yml: A few smaller improvements
https://invent.kde.org/neon/forks/libquotient/-/commit/1047c85d9b21559d27f2d70147faac38d3e78fb0

Git commit 53e5a26e662e8f2eb92e9f9df7b27ae0dcacee6e by Kitsune Ral on 14/10/2019 at 09:00..
Use aliases instead of env variables

They are a tad cleaner.
https://invent.kde.org/neon/forks/libquotient/-/commit/53e5a26e662e8f2eb92e9f9df7b27ae0dcacee6e

Git commit cfb58baeacf97f2d54348f4e5efd6c203ddc002a by Kitsune Ral on 15/10/2019 at 09:17..
Merge branch 'kitsune-travis-tweaks'
https://invent.kde.org/neon/forks/libquotient/-/commit/cfb58baeacf97f2d54348f4e5efd6c203ddc002a

Git commit 0a82e68f86a3b4716ebada39c041a6c8673d2999 by Kitsune Ral on 17/10/2019 at 00:59..
Connection::joinRoom: make sure the room object is created early enough

All direct slots connected to finished() will run before success() is
even emitted; so create the room object in the earliest slot connected
to finished(), rather than to success().
https://invent.kde.org/neon/forks/libquotient/-/commit/0a82e68f86a3b4716ebada39c041a6c8673d2999

Git commit d59ca7ac194e8d57177afb1ac89603e22b61b4ec by Kitsune Ral on 18/10/2019 at 01:25..
qmc-example -> quotest, QMCTest -> TestManager

Also: some bits of refactoring in the test code
to make it more extensible. Closes #352.
https://invent.kde.org/neon/forks/libquotient/-/commit/d59ca7ac194e8d57177afb1ac89603e22b61b4ec

Git commit ff78cd3370eccf593be789677dd8c4e2cdcea173 by Kitsune Ral on 18/10/2019 at 01:25..
TestManager::setTopic: add debug logging
https://invent.kde.org/neon/forks/libquotient/-/commit/ff78cd3370eccf593be789677dd8c4e2cdcea173

Git commit 8b9207d5a04386957d8eab8dd251421eaaa7c0d2 by Kitsune Ral on 20/10/2019 at 10:17..
Qualify types in signals and Q_INVOKABLEs

Because https://doc.qt.io/qt-5/moc.html#limitations .
For direct connections that doesn't matter but it very much does
for queued ones. Along with this DirectChatsMap and IgnoredUsersList
have been moved from Connection:: to Quotient::.
https://invent.kde.org/neon/forks/libquotient/-/commit/8b9207d5a04386957d8eab8dd251421eaaa7c0d2

Git commit 3e153666542e903da420e405ca9f2f210b49475f by Kitsune Ral on 20/10/2019 at 10:17..
Quotest: factor out tests into TestSuite; rework sync tests

Synchronous tests now use QSignalSpy instead of connecting to the signal
just before its emission.
https://invent.kde.org/neon/forks/libquotient/-/commit/3e153666542e903da420e405ca9f2f210b49475f

Git commit a0de0e5621b75c8790012275af851a85ad601dfc by Kitsune Ral on 20/10/2019 at 10:18..
Update documentation regarding C++17 support level

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/a0de0e5621b75c8790012275af851a85ad601dfc

Git commit 0a3be84c0c531ae215c43c488fc23e52a4680e9f by Kitsune Ral on 20/10/2019 at 23:52..
tests/CMakeLists.txt: QMC -> Quotient; add Qt5::Test to deps
https://invent.kde.org/neon/forks/libquotient/-/commit/0a3be84c0c531ae215c43c488fc23e52a4680e9f

Git commit c8ae34af0c4b28ef5aabf60b97661241860bc200 by Kitsune Ral on 21/10/2019 at 00:41..
ConnectionData: fix read-after-free in clearing the job queue
https://invent.kde.org/neon/forks/libquotient/-/commit/c8ae34af0c4b28ef5aabf60b97661241860bc200

Git commit ff23e445ca78a6ac127d7a04494a8cbb97a7f1ac by Kitsune Ral on 21/10/2019 at 01:02..
Merge branch 'kitsune-quotest2'
https://invent.kde.org/neon/forks/libquotient/-/commit/ff23e445ca78a6ac127d7a04494a8cbb97a7f1ac

Git commit 34a4c5628d6561a26f07d6166dcca05ef3ace191 by Kitsune Ral on 21/10/2019 at 01:02..
Merge branch 'kitsune-update-docs'
https://invent.kde.org/neon/forks/libquotient/-/commit/34a4c5628d6561a26f07d6166dcca05ef3ace191

Git commit 693beec0005bdd98732ad8b4ad760f9de4a9faee by Kitsune Ral on 21/10/2019 at 05:11..
Connection: make syncLoop() reentrant

...in the sense that you can call it twice and expect the second
invocation to be gracefully ignored rather than two loops conflicting
with each other.
https://invent.kde.org/neon/forks/libquotient/-/commit/693beec0005bdd98732ad8b4ad760f9de4a9faee

Git commit ff77965cb92e94061345e4e955f1d7289de2597a by Kitsune Ral on 21/10/2019 at 06:58..
Connection: record sync timeout; suspend sync before logout

This is mostly internal but clients may see fewer spurious sync failures
upon logging out.
https://invent.kde.org/neon/forks/libquotient/-/commit/ff77965cb92e94061345e4e955f1d7289de2597a

Git commit b4b2c7c4043368320a81759269945b08a5b81929 by Kitsune Ral on 21/10/2019 at 07:01..
Quotest: derive TestManager from QCoreApplication

Also: joining the test room didn't survive being a test in its
own right and has been reverted to be a part of setupAndRun().
https://invent.kde.org/neon/forks/libquotient/-/commit/b4b2c7c4043368320a81759269945b08a5b81929

Git commit 9b588b30505a71da8004965364a42d24f6f2f16d by Kitsune Ral on 21/10/2019 at 07:05..
Quotest: use clog instead of cout

Because cout is not synchronised with stderr and the library's
debug printing is not aligned with that from quotest.

qDebug()/qWarn() would probably be even better, for consistency;
but require switching from std::string to QString.
https://invent.kde.org/neon/forks/libquotient/-/commit/9b588b30505a71da8004965364a42d24f6f2f16d

Git commit b822e2e116c38c99fd9f05fbe0f3c0fd20103b29 by Kitsune Ral on 21/10/2019 at 11:26..
Quotest: more work on test invocation

Tests should be private slots, not public slots; and they
are invoked through a QueuedConnection so that both sync
and async tests could be processed uniformly with clear code.
https://invent.kde.org/neon/forks/libquotient/-/commit/b822e2e116c38c99fd9f05fbe0f3c0fd20103b29

Git commit 15bd23eb3ac1d1d043b7492a60748981dcef4627 by Kitsune Ral on 21/10/2019 at 23:31..
Merge branch 'kitsune-quotest3'
https://invent.kde.org/neon/forks/libquotient/-/commit/15bd23eb3ac1d1d043b7492a60748981dcef4627

Git commit 8a574f8727cc8b1c91acf0840e99c9382c289098 by Kitsune Ral on 23/10/2019 at 02:46..
Remove the old source file
https://invent.kde.org/neon/forks/libquotient/-/commit/8a574f8727cc8b1c91acf0840e99c9382c289098

Git commit 60bb1cf942ad0815dcf42cbfe8acd1e076d848cf by Kitsune Ral on 31/10/2019 at 23:43..
Derive Omittable<> from std::optional<>

That breaks API all over the place but:
1. The fixes are trivial.
2. More of std:: is used instead of home-baking the same stuff.
https://invent.kde.org/neon/forks/libquotient/-/commit/60bb1cf942ad0815dcf42cbfe8acd1e076d848cf

Git commit edbbc2bc77599ead0e14bc08cdddda10d1c5f305 by Kitsune Ral on 31/10/2019 at 23:43..
Omittable: get rid of value()

Xcode 10 doesn't have it, and value() is not quite fitting
mostly-exceptionless Quotient anyway.
https://invent.kde.org/neon/forks/libquotient/-/commit/edbbc2bc77599ead0e14bc08cdddda10d1c5f305

Git commit fd3d6812a6a9c89c7ea4872defc4dd8dec2b19ed by Kitsune Ral on 01/11/2019 at 00:43..
Merge branch 'kitsune-std-optional'
https://invent.kde.org/neon/forks/libquotient/-/commit/fd3d6812a6a9c89c7ea4872defc4dd8dec2b19ed

Git commit ce1de2a78a947423b305289beefc5f904734b234 by Kitsune Ral on 01/11/2019 at 01:25..
Reinstate Omittable<>::omitted (deprecated)

To ease on back-compatibility.
https://invent.kde.org/neon/forks/libquotient/-/commit/ce1de2a78a947423b305289beefc5f904734b234

Git commit ae5c2aa9acce500e2ad94c6781843c02310dbab3 by Kitsune Ral on 01/11/2019 at 11:47..
Omittable: Add direct-list-initialising operator=; document

See the change in connection.cpp for the example of usage.

Also: removed static_asserts: the first one is provided by std::optional,
and the second one is only relevant to edit().
https://invent.kde.org/neon/forks/libquotient/-/commit/ae5c2aa9acce500e2ad94c6781843c02310dbab3

Git commit f82ad2a6196b7501bfe4138e2314f61180cde261 by Kitsune Ral on 01/11/2019 at 14:34..
Merge branch 'kitsune-std-optional2'
https://invent.kde.org/neon/forks/libquotient/-/commit/f82ad2a6196b7501bfe4138e2314f61180cde261

Git commit 2a7871cd9bc67a0bf311766a1edee2ff7a8e5355 by Kitsune Ral on 02/11/2019 at 07:20..
Compatibility with Qt 5.14
https://invent.kde.org/neon/forks/libquotient/-/commit/2a7871cd9bc67a0bf311766a1edee2ff7a8e5355

Git commit cb869d4649b00775ba7bea6ecc81473eadf594b3 by Kitsune Ral on 02/11/2019 at 11:41..
Add LGTM support

See https://lgtm.com
https://invent.kde.org/neon/forks/libquotient/-/commit/cb869d4649b00775ba7bea6ecc81473eadf594b3

Git commit 9d50c475ea60efa472ba6c298fbf23836edcad19 by Kitsune Ral on 10/11/2019 at 08:42..
makeRedacted: fix code formatting
https://invent.kde.org/neon/forks/libquotient/-/commit/9d50c475ea60efa472ba6c298fbf23836edcad19

Git commit fdd094a5ef3dd8a2ef06cfa1282482a60837b317 by Kitsune Ral on 10/11/2019 at 10:20..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/fdd094a5ef3dd8a2ef06cfa1282482a60837b317

Git commit 1d57741c679ec3112ae45e833b8f152fa737b944 by Kitsune Ral on 19/11/2019 at 06:11..
Add LGTM badge
https://invent.kde.org/neon/forks/libquotient/-/commit/1d57741c679ec3112ae45e833b8f152fa737b944

Git commit 5937127b73a82fc86f6546397373ce9dbaf4e560 by Kitsune Ral on 19/11/2019 at 08:57..
BaseJob: Don't send accessToken if not needed; send again on 401

The first part closes #358; the second part is a workaround for non-standard
cases when endpoints without security by the spec turn out to be secured
(in particular, the case of authenticating media servers).
https://invent.kde.org/neon/forks/libquotient/-/commit/5937127b73a82fc86f6546397373ce9dbaf4e560

Git commit 4be8a673b4ad2f1caa0e34b53ed3b12e750cf569 by Alexey Andreyev on 30/11/2019 at 00:13..
Fix room highlighting for names with hashtag

Fixes #359
https://invent.kde.org/neon/forks/libquotient/-/commit/4be8a673b4ad2f1caa0e34b53ed3b12e750cf569

Git commit f44eef6a0adbba1b02371e95bb36365589644471 by GitHub (on behalf of Kitsune Ral) on 05/12/2019 at 17:01..
Merge pull request #363 from quotient-im/aa13q-room-highlighting

Fix room highlighting for names with hashtag
https://invent.kde.org/neon/forks/libquotient/-/commit/f44eef6a0adbba1b02371e95bb36365589644471

Git commit d18324f1a309bea59a0dc681de820c80bd9086e9 by Alexey Andreyev on 06/12/2019 at 11:43..
MSC1954: Remove prev_content from the essential keys list

Fixes #318
https://invent.kde.org/neon/forks/libquotient/-/commit/d18324f1a309bea59a0dc681de820c80bd9086e9

Git commit f0d241c6bb8fb3219736ec6ead20564bcea9a991 by Kitsune Ral on 08/12/2019 at 14:07..
Remove extraneous qualification
https://invent.kde.org/neon/forks/libquotient/-/commit/f0d241c6bb8fb3219736ec6ead20564bcea9a991

Git commit e3e94f86edc94b743af913b4b5b8b9af7c446fab by Kitsune Ral on 08/12/2019 at 18:01..
ConnectionData: stop the timer on destruction

...to prevent from trying to send requests after closing the connection.
https://invent.kde.org/neon/forks/libquotient/-/commit/e3e94f86edc94b743af913b4b5b8b9af7c446fab

Git commit 77f1ca99ade62565ce30758005b911eb340953e6 by Kitsune Ral on 08/12/2019 at 18:06..
Room::addNewMessageEvents: search the whole sync batch for events to
redact

It seems that sometimes redactions may precede the unredacted events
within the same sync batch.
https://invent.kde.org/neon/forks/libquotient/-/commit/77f1ca99ade62565ce30758005b911eb340953e6

Git commit aa6486024fda9910cecccfdcefae2b7e3cd0c108 by GitHub (on behalf of Kitsune Ral) on 08/12/2019 at 18:07..
Merge pull request #365 from quotient-im/aa13q-msc1954-drop-prev-content

MSC1954: Remove prev_content from the essential keys list
https://invent.kde.org/neon/forks/libquotient/-/commit/aa6486024fda9910cecccfdcefae2b7e3cd0c108

Git commit bb44e61bab711327d1ae9f0d0732364006296c0e by Kitsune Ral on 09/12/2019 at 08:26..
Merge branch 'kitsune-look-further-for-redactions'
https://invent.kde.org/neon/forks/libquotient/-/commit/bb44e61bab711327d1ae9f0d0732364006296c0e

Git commit e829f867c14cb51e89e4d10550f2f41329c14ba8 by Kitsune Ral on 09/12/2019 at 08:52..
Initialise read marker if none is found in the whole timeline

Closes #361.
https://invent.kde.org/neon/forks/libquotient/-/commit/e829f867c14cb51e89e4d10550f2f41329c14ba8

Git commit 105ff3874baf0792616e1b330ce97f0b725adaf5 by Kitsune Ral on 09/12/2019 at 15:23..
Room: more doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/105ff3874baf0792616e1b330ce97f0b725adaf5

Git commit 1b38ad0ce7ca8b2a5a7e4936824697b84e6b7076 by Kitsune Ral on 09/12/2019 at 15:32..
Code cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/1b38ad0ce7ca8b2a5a7e4936824697b84e6b7076

Git commit 608e252bae9cf8cf763e05363bfacf5e1760134f by Kitsune Ral on 09/12/2019 at 15:34..
RoomEvent::timestamp() -> originTimestamp()

The previous name is still available but deprecated.
https://invent.kde.org/neon/forks/libquotient/-/commit/608e252bae9cf8cf763e05363bfacf5e1760134f

Git commit 3e81ba0da47278f383ce8c329010602f84a50482 by Kitsune Ral on 09/12/2019 at 15:35..
Room::predecessor() and Room::successor()
https://invent.kde.org/neon/forks/libquotient/-/commit/3e81ba0da47278f383ce8c329010602f84a50482

Git commit 4b56d47284500ab61f8e0c5cd7c807c58e1b53cb by Kitsune Ral on 09/12/2019 at 15:58..
Room::creation() and Room::tombstone()
https://invent.kde.org/neon/forks/libquotient/-/commit/4b56d47284500ab61f8e0c5cd7c807c58e1b53cb

Git commit 6b2847de2325f2b818dc336c9339d50de58604ea by Kitsune Ral on 11/12/2019 at 17:00..
Pass action scope to Room::setTags

The tags can now be applied not only to the current room but also
propagated to its predecessors and successors.
https://invent.kde.org/neon/forks/libquotient/-/commit/6b2847de2325f2b818dc336c9339d50de58604ea

Git commit 7b5f65ba64ae4df54919336f4beec19493d1b5ee by Kitsune Ral on 11/12/2019 at 17:26..
BaseJob::StatusCode: offset first error from ErrorLevel

Q_ENUM seems to resolve int to the first enum identifier with that value
so NetworkError == ErrorLevel looks confusing in logs.
https://invent.kde.org/neon/forks/libquotient/-/commit/7b5f65ba64ae4df54919336f4beec19493d1b5ee

Git commit c15771776cf277e6235fce6ebb6c6d7e3702a257 by Kitsune Ral on 11/12/2019 at 18:18..
Merge branch 'kitsune-better-upgrade-ux'
https://invent.kde.org/neon/forks/libquotient/-/commit/c15771776cf277e6235fce6ebb6c6d7e3702a257

Git commit 1ffa6b96adeba8c1a00a0a32112c8b0aaeb2350e by Kitsune Ral on 12/12/2019 at 16:11..
RequestData: optimise fromData() and preopen the buffer

It was just a coincidence that QBuffer allowed reading from it
without being isReadable() at the moment of starting a job.
https://invent.kde.org/neon/forks/libquotient/-/commit/1ffa6b96adeba8c1a00a0a32112c8b0aaeb2350e

Git commit eabed200f5fe09a37942a52387c0d3f25070b0c3 by Kitsune Ral on 12/12/2019 at 16:34..
Room::fileNameToDownload(): fix a typo in a check on Windows

As a result of the typo, the extension was never attached to returned
file names if there was none originally.
https://invent.kde.org/neon/forks/libquotient/-/commit/eabed200f5fe09a37942a52387c0d3f25070b0c3

Git commit ec3ddd6930991b04d13cdb12720f141482f9a6eb by Kitsune Ral on 12/12/2019 at 16:37..
Move FileError definition from DownloadFileJob to BaseJob

Will use it in BaseJob in a later commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/ec3ddd6930991b04d13cdb12720f141482f9a6eb

Git commit d438c08e11d17dc9c005806a6036e1aeb769c54b by Kitsune Ral on 12/12/2019 at 16:39..
Connection::uploadFile/Content(): refactoring around QIODevice::open()

No more "The file is already open" log messages.
https://invent.kde.org/neon/forks/libquotient/-/commit/d438c08e11d17dc9c005806a6036e1aeb769c54b

Git commit f6505a541fc0a2e02f9c79496488121a3e46fb01 by Kitsune Ral on 12/12/2019 at 16:47..
BaseJob: prepare() -> initiate() + refactoring around it

* BaseJob::initiate() now calls ConnectionData::submit()
  without relying on Connection to do that
* ConnectionData::submit() is now the only site where a job enters
  Pending state
* No more shortcuts to BaseJob::sendRequest(), even retries are sent
  through the ConnectionData submission queue
* Additional validation in BaseJob::initiate() that the request data
  device is actually open (because QtNetwork API officially
  requires that, even if you can get away passing a closed QBuffer
  to it)
https://invent.kde.org/neon/forks/libquotient/-/commit/f6505a541fc0a2e02f9c79496488121a3e46fb01

Git commit 7641518deea3591c6903cb5b1b6c7b551c30281b by Kitsune Ral on 12/12/2019 at 16:49..
Room::downloadFile: minor cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/7641518deea3591c6903cb5b1b6c7b551c30281b

Git commit 38f45066a2304935550e2c5b6be21a9744f66bf1 by Kitsune Ral on 12/12/2019 at 17:57..
BaseJob::initiate(): fix nullptr dereferencing
https://invent.kde.org/neon/forks/libquotient/-/commit/38f45066a2304935550e2c5b6be21a9744f66bf1

Git commit 8782ae93ddcf6925eee9189aa07441c822e3b9ba by Kitsune Ral on 12/12/2019 at 18:32..
.travis.yml: use correct environment variables

It should be TEST_USER and TEST_PWD, not QMC_* legacy stuff.
https://invent.kde.org/neon/forks/libquotient/-/commit/8782ae93ddcf6925eee9189aa07441c822e3b9ba

Git commit 5a3f154b2795d90f2c7bc31dfead49ad0e746a8a by Kitsune Ral on 13/12/2019 at 11:01..
quotest: cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/5a3f154b2795d90f2c7bc31dfead49ad0e746a8a

Git commit 646186d802cfe7213146e4a68f8f926e21931b17 by Kitsune Ral on 13/12/2019 at 11:18..
Room::postFile(): minor refactoring
https://invent.kde.org/neon/forks/libquotient/-/commit/646186d802cfe7213146e4a68f8f926e21931b17

Git commit 04960510df6058b4f25d3c41001a519e9fc5ba4a by Kitsune Ral on 13/12/2019 at 11:47..
Room: make downloaded file name building more robust

Specifically, handle colons and long file names gracefully. Closes #366.
https://invent.kde.org/neon/forks/libquotient/-/commit/04960510df6058b4f25d3c41001a519e9fc5ba4a

Git commit 92264831077874511341b2dabae255649f741f54 by Kitsune Ral on 23/12/2019 at 18:48..
Connection::forgetRoom: slightly simplify code
https://invent.kde.org/neon/forks/libquotient/-/commit/92264831077874511341b2dabae255649f741f54

Git commit 79b9f6d928cbd516a610d845891f4054df05e0c4 by Kitsune Ral on 23/12/2019 at 18:49..
ConnectionData::submit: when not queuing, still submit asynchronously

Otherwise BaseJob::messageSent has every chance to be overlooked by
clients who subscribe to it after calling callApi().
https://invent.kde.org/neon/forks/libquotient/-/commit/79b9f6d928cbd516a610d845891f4054df05e0c4

Git commit 0373153481e4a08f1dfb194e672188d74ce07d85 by Kitsune Ral on 24/12/2019 at 08:26..
RoomMemberEvent: introduce the reason field (MSC2367)

See https://github.com/matrix-org/matrix-doc/pull/2367. Closes #370.
https://invent.kde.org/neon/forks/libquotient/-/commit/0373153481e4a08f1dfb194e672188d74ce07d85

Git commit 16d6700950f5f0ebd71481efd5e1a24f04e3c651 by GitHub (on behalf of Black Hat) on 28/12/2019 at 08:12..
isEditing(): fix a bug in replacing events
https://invent.kde.org/neon/forks/libquotient/-/commit/16d6700950f5f0ebd71481efd5e1a24f04e3c651

Git commit e0c01b6fee5027211bd44a39860e40a2b7b226ad by Black Hat on 29/12/2019 at 13:29..
Add RoomPowerLevelEvent type
https://invent.kde.org/neon/forks/libquotient/-/commit/e0c01b6fee5027211bd44a39860e40a2b7b226ad

Git commit 7d55e22ee3465e75e5ac7750bb1d205eb555761d by Black Hat on 29/12/2019 at 13:42..
Merge branch 'master' of https://github.com/quotient-im/libQuotient into bhat-powerlevel
https://invent.kde.org/neon/forks/libquotient/-/commit/7d55e22ee3465e75e5ac7750bb1d205eb555761d

Git commit 52fdd715d605f201331a88ffb1d9caafcf86beb1 by Black Hat on 29/12/2019 at 13:43..
Add missing file
https://invent.kde.org/neon/forks/libquotient/-/commit/52fdd715d605f201331a88ffb1d9caafcf86beb1

Git commit 00921320a407beaae62d01dbcf1550c3334a9258 by Black Hat on 30/12/2019 at 13:55..
Simplify code
https://invent.kde.org/neon/forks/libquotient/-/commit/00921320a407beaae62d01dbcf1550c3334a9258

Git commit 2a54e66226863bdea4b0828675f38b75e4c7776f by Black Hat on 01/01/2020 at 06:04..
Mark methods as const.
https://invent.kde.org/neon/forks/libquotient/-/commit/2a54e66226863bdea4b0828675f38b75e4c7776f

Git commit d4034fb12b189156e135dcf0fb94960a1d8e9be9 by Black Hat on 01/01/2020 at 06:45..
Add powerLevelForState()
https://invent.kde.org/neon/forks/libquotient/-/commit/d4034fb12b189156e135dcf0fb94960a1d8e9be9

Git commit 285cff6584c48575d4ce49739d7006c21cc91a3f by Black Hat on 01/01/2020 at 07:44..
Fix linux build
https://invent.kde.org/neon/forks/libquotient/-/commit/285cff6584c48575d4ce49739d7006c21cc91a3f

Git commit 3accf7dfd82e8e14a7f90a8debee921f2f428679 by Black Hat on 01/01/2020 at 08:11..
Fix linux build
https://invent.kde.org/neon/forks/libquotient/-/commit/3accf7dfd82e8e14a7f90a8debee921f2f428679

Git commit ac48199de174aa8cca52e703a3e65034fcd5db07 by Black Hat on 12/01/2020 at 12:29..
Use parsed RoomPowerLevelsEvent in room upgrading
https://invent.kde.org/neon/forks/libquotient/-/commit/ac48199de174aa8cca52e703a3e65034fcd5db07

Git commit e3a5b3a5e5253fc5ce67574b01e8d25ec14e4d25 by GitHub (on behalf of Black Hat) on 21/01/2020 at 19:03..
Merge pull request #371 from quotient-im/bhat-powerlevel

Add m.room.power_levels support
https://invent.kde.org/neon/forks/libquotient/-/commit/e3a5b3a5e5253fc5ce67574b01e8d25ec14e4d25

Git commit 1af2dffb70862a59801a73dacedc695bb062977a by Andres Salomon on 07/02/2020 at 05:04..
Fix build on big-endian systems

On little-endian systems, this call to qToLittleEndian(hash) disappears
completely.

On big-endian systems, it turns into qbswap(hash), and causes a build
error.  qbswap() isn't defined for QByteArrays, because QByteArray
isn't an array containing multi-byte elements. Since each element
is a single byte, machine endianness isn't a factor.  (If we really
wanted to swap the bytes, we'd need to reverse every 4 bytes of
the array.)

This just drops the call to QToLittleEndian completely. The lines
after it converts part of the hash to a QDataStream, which DOES have
to worry about endianness, but that code is also specifically calling
QDataStream::setByteOrder to specify little-endian.
https://invent.kde.org/neon/forks/libquotient/-/commit/1af2dffb70862a59801a73dacedc695bb062977a

Git commit 9bcf0cbc3d690663d37d1737173ab5088fed152f by GitHub (on behalf of Kitsune Ral) on 07/02/2020 at 11:09..
Merge pull request #375 from dilinger/big-endian

Fix build on big-endian systems
https://invent.kde.org/neon/forks/libquotient/-/commit/9bcf0cbc3d690663d37d1737173ab5088fed152f

Git commit 5072340473b23b77ebb7d4e91f3727ff30950a9a by Roland Pallai on 10/02/2020 at 15:34..
Edit (transmit): fix json struct of `m.new_content`
https://invent.kde.org/neon/forks/libquotient/-/commit/5072340473b23b77ebb7d4e91f3727ff30950a9a

Git commit e5e9aa06ca9fb936e34d56c47cccb4111f2e80bd by Roland Pallai on 10/02/2020 at 15:38..
Edit (transmit): fix asterisk marking for dumb clients

The prepared body got overwritten due to missing return statement.
https://invent.kde.org/neon/forks/libquotient/-/commit/e5e9aa06ca9fb936e34d56c47cccb4111f2e80bd

Git commit 1c3373484b96fb8bc855f02caa87bad7567c5e17 by Roland Pallai on 10/02/2020 at 15:40..
TextContent: use MSC-1849 compatible `m.relates_to` field
https://invent.kde.org/neon/forks/libquotient/-/commit/1c3373484b96fb8bc855f02caa87bad7567c5e17

Git commit 14df474a5032554faf575f8becbac4c9f2bec3e5 by Roland Pallai on 10/02/2020 at 16:25..
Add EventContent::replacementOf() helper
https://invent.kde.org/neon/forks/libquotient/-/commit/14df474a5032554faf575f8becbac4c9f2bec3e5

Git commit b6c1502adeee683d7e6f127c5c3ac270a0285fcb by Ram Nad on 12/02/2020 at 18:18..
trying qmake fix
https://invent.kde.org/neon/forks/libquotient/-/commit/b6c1502adeee683d7e6f127c5c3ac270a0285fcb

Git commit 43d8bc7212d6fecbed20203a9f5e6e53bfadece3 by GitHub (on behalf of Kitsune Ral) on 12/02/2020 at 19:33..
Merge pull request #378 from ram-nad/travis-fix

CI: trying qmake fix
https://invent.kde.org/neon/forks/libquotient/-/commit/43d8bc7212d6fecbed20203a9f5e6e53bfadece3

Git commit 473483665d03c748f568a823218edfb9f5cbc7c9 by Alexey Andreev on 18/02/2020 at 17:40..
[quotest] Update README.md

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/473483665d03c748f568a823218edfb9f5cbc7c9

Git commit 17c89693811a4aa27db700d8f9f278393c8e0926 by Alexey Andreev on 18/02/2020 at 17:41..
[quotest] Refactor Cmake files with variable project name

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/17c89693811a4aa27db700d8f9f278393c8e0926

Git commit d3ca82b9d7477a35e7580f2d6ce579dcbf791d07 by GitHub (on behalf of Alexey Andreyev) on 20/02/2020 at 08:57..
Merge pull request #379 from quotient-im/aa13q-quotest-readme

[quotest] Update readme, refactor cmake file with variable names
https://invent.kde.org/neon/forks/libquotient/-/commit/d3ca82b9d7477a35e7580f2d6ce579dcbf791d07

Git commit 4f027cf952e2458d2301236d43b4c9fbcdba345b by Karol Kosek on 22/02/2020 at 10:52..
RoomMemberEvent: add isRejectedInvite(), isBan(), and isUnban()
https://invent.kde.org/neon/forks/libquotient/-/commit/4f027cf952e2458d2301236d43b4c9fbcdba345b

Git commit 2de9cb11b4157eebacc3906df79a8d6d4fb43651 by Alexey Andreev (on behalf of Alexey Andreyev) on 25/02/2020 at 14:24..
E2EE: Fix EncryptionManager initialization place

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/2de9cb11b4157eebacc3906df79a8d6d4fb43651

Git commit 60c0f079f0366e501de6658b5fb56ec905da0c31 by Alexey Andreev (on behalf of Alexey Andreyev) on 25/02/2020 at 14:27..
E2EE: introduce RoomKeyEvent

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/60c0f079f0366e501de6658b5fb56ec905da0c31

Git commit 283208f8f891aafaaa0ae573bd8b9fcda783da12 by Alexey Andreev (on behalf of Alexey Andreyev) on 25/02/2020 at 14:31..
E2EE: implement SyncData::deviceOneTimeKeysCount

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/283208f8f891aafaaa0ae573bd8b9fcda783da12

Git commit f341e4a3c60cf4a6f6f4c986f8fe68c82feba1dd by Alexey Andreev (on behalf of Alexey Andreyev) on 25/02/2020 at 14:31..
E2EE: EncryptedEvent constructor debug message

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/f341e4a3c60cf4a6f6f4c986f8fe68c82feba1dd

Git commit 3c293b287466e8de188fc62e73efc4730ab4dd31 by Alexey Andreev (on behalf of Alexey Andreyev) on 25/02/2020 at 14:32..
E2EE: fix olm session decrypt, move to EncryptionManager

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/3c293b287466e8de188fc62e73efc4730ab4dd31

Git commit 715a0c0aa094eedbe24516e19a7b37dde71ba994 by Alexey Andreev (on behalf of Alexey Andreyev) on 25/02/2020 at 14:57..
E2EE: add connection session decrypt, handle to-device and device_one_time_keys_count

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/715a0c0aa094eedbe24516e19a7b37dde71ba994

Git commit 6a3cd81b5179a38b5731f09b62f56b24ada7ff0f by Alexey Andreev (on behalf of Alexey Andreyev) on 25/02/2020 at 15:04..
E2EE: implement megolm inbound session decrypt for room

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/6a3cd81b5179a38b5731f09b62f56b24ada7ff0f

Git commit 8ff15ee94fc39eef1279d479d12b1cbdec9f4ac5 by Alexey Andreev (on behalf of Alexey Andreyev) on 25/02/2020 at 15:08..
Room: fix merge regression

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/8ff15ee94fc39eef1279d479d12b1cbdec9f4ac5

Git commit 42bca67768d6f174ecf125563ab28ef79b994e23 by Ram Nad on 07/03/2020 at 21:13..
fixing msc2432
https://invent.kde.org/neon/forks/libquotient/-/commit/42bca67768d6f174ecf125563ab28ef79b994e23

Git commit ef81c79c4e7d24d63d1520ddefef347c11052235 by GitHub (on behalf of Kitsune Ral) on 09/03/2020 at 16:20..
Merge pull request #320 from krkk/roommemberevent-types

RoomMemberEvent: add isRejectedInvite(), isBan() and isUnban()
https://invent.kde.org/neon/forks/libquotient/-/commit/ef81c79c4e7d24d63d1520ddefef347c11052235

Git commit 56d9a0addaabf2cec78e1c82a9846997a3669736 by Alexey Andreev on 12/03/2020 at 14:11..
E2EE: Make building E2EE optional. Contributes to #369

Signed-off-by: Alexey Andreev <aa13q at ya.ru>
https://invent.kde.org/neon/forks/libquotient/-/commit/56d9a0addaabf2cec78e1c82a9846997a3669736

Git commit 301d29e8db272938b0977af5db872c80f89fd708 by GitHub (on behalf of Kitsune Ral) on 13/03/2020 at 11:07..
Merge pull request #346 from quotient-im/aa13q-e2ee-encrypted-msg

E2EE: implement receiving of the messages
https://invent.kde.org/neon/forks/libquotient/-/commit/301d29e8db272938b0977af5db872c80f89fd708

Git commit 4102144290312ebed7d4af69dd640835275a9675 by Kitsune Ral on 13/03/2020 at 17:39..
Connection: support getting the list of login flows

The flows themselves are not facilitated in any way (yet).
https://invent.kde.org/neon/forks/libquotient/-/commit/4102144290312ebed7d4af69dd640835275a9675

Git commit a0008f808859ee491bf0a1bc683748a42c5e209a by Kitsune Ral on 14/03/2020 at 19:28..
Connection: minor cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/a0008f808859ee491bf0a1bc683748a42c5e209a

Git commit d02a510a586db1a89476cd283ea24a281e9bb6af by Kitsune Ral on 15/03/2020 at 13:53..
Connection: loginWithToken(); connectWithToken() -> assumeIdentity()
https://invent.kde.org/neon/forks/libquotient/-/commit/d02a510a586db1a89476cd283ea24a281e9bb6af

Git commit 5b7bfc2d559c1707208007f2b7d5c8e898b98f7e by GitHub (on behalf of Roland Pallai) on 17/03/2020 at 18:57..
MSC1849 compatible edited messages (#373)

* Make handling of edited messages MSC1849 compatible

Server side aggregation replaces `content` with `new_content` in
edited messages. The same must be done at client side on
incremental updates to keep timeline consistent.

As server side aggregations is in use by default from Synapse 1.2.0
this patch fixes a real issue.
https://invent.kde.org/neon/forks/libquotient/-/commit/5b7bfc2d559c1707208007f2b7d5c8e898b98f7e

Git commit 682f96d4af19226e553138b1a86ed9233c35edbd by GitHub (on behalf of Roland Pallai) on 17/03/2020 at 21:09..
Use constant

Co-Authored-By: Kitsune Ral <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/682f96d4af19226e553138b1a86ed9233c35edbd

Git commit ab3d0263b770e30de673c63740a5c26bcbf33e58 by Kitsune Ral on 18/03/2020 at 08:51..
SsoSession and Connection::prepareForSso()

The response in the web browser is quite barebone, just enough
to give feedback that things are alright. Closes #386. Closes #388.
https://invent.kde.org/neon/forks/libquotient/-/commit/ab3d0263b770e30de673c63740a5c26bcbf33e58

Git commit 792dc5dcc8e548030f9246f20a39ef6febee3910 by GitHub (on behalf of Kitsune Ral) on 19/03/2020 at 11:51..
Merge pull request #376 from rpallai/editing-fixes

Simple changes for sending edits
https://invent.kde.org/neon/forks/libquotient/-/commit/792dc5dcc8e548030f9246f20a39ef6febee3910

Git commit a682edf6e93f9ad4a087d5ba1374e42b06ec27e9 by GitHub (on behalf of Ram Nad) on 19/03/2020 at 19:41..
Add warranty in lib/events/roomcanonicalaliasevent.h

Co-Authored-By: Kitsune Ral <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/a682edf6e93f9ad4a087d5ba1374e42b06ec27e9

Git commit 99c7e1c5e2a78c6babba50418789bd4c4f0e9db3 by Ram Nad on 19/03/2020 at 20:59..
made suggested changes
https://invent.kde.org/neon/forks/libquotient/-/commit/99c7e1c5e2a78c6babba50418789bd4c4f0e9db3

Git commit c86ca8eb7f8cc4884f11be34fc71e1c4963c8ace by Ram Nad on 19/03/2020 at 21:09..
adding header in qmake
https://invent.kde.org/neon/forks/libquotient/-/commit/c86ca8eb7f8cc4884f11be34fc71e1c4963c8ace

Git commit c810c10da56fad0f5c07b2096cae73e8471d9f0e by GitHub (on behalf of Kitsune Ral) on 20/03/2020 at 07:32..
Merge pull request #389 from quotient-im/kitsune-login-flows

Support single sign-on
https://invent.kde.org/neon/forks/libquotient/-/commit/c810c10da56fad0f5c07b2096cae73e8471d9f0e

Git commit a2177b704c06bccc4840607803bca4fbe747830b by Ram Nad on 20/03/2020 at 07:42..
added altAliases()
https://invent.kde.org/neon/forks/libquotient/-/commit/a2177b704c06bccc4840607803bca4fbe747830b

Git commit 57ed7c21829347bd553a481becc6484164419c18 by Ram Nad on 20/03/2020 at 07:58..
dont use this
https://invent.kde.org/neon/forks/libquotient/-/commit/57ed7c21829347bd553a481becc6484164419c18

Git commit ecdab8ba9d2f411e5cfb049866501f159725a3db by GitHub (on behalf of Ram Nad) on 20/03/2020 at 09:31..
Make constructor explicit lib/events/roomcanonicalaliasevent.h

Co-Authored-By: Kitsune Ral <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/ecdab8ba9d2f411e5cfb049866501f159725a3db

Git commit 153c1c66c7cc162920e5d4e4d902efcadf015d5b by GitHub (on behalf of Ram Nad) on 20/03/2020 at 09:31..
Make rvalue constructor explicit Update lib/events/roomcanonicalaliasevent.h

Co-Authored-By: Kitsune Ral <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/153c1c66c7cc162920e5d4e4d902efcadf015d5b

Git commit f9dee85c5f8eb35df14a29d011c3cb84915962a6 by Ram Nad on 20/03/2020 at 09:36..
emit nameChanged() on AliasesChange
https://invent.kde.org/neon/forks/libquotient/-/commit/f9dee85c5f8eb35df14a29d011c3cb84915962a6

Git commit a19c50d97c107f5048fa0ca6ff086050eb5eece1 by Ram Nad on 20/03/2020 at 09:36..
Merge branch 'msc2432-fix' of github.com:ram-nad/libQuotient into msc2432-fix
https://invent.kde.org/neon/forks/libquotient/-/commit/a19c50d97c107f5048fa0ca6ff086050eb5eece1

Git commit ed62c822ca200613bde60e48547ba32a0bd21c13 by GitHub (on behalf of Ram Nad) on 21/03/2020 at 11:48..
Update aliases code lib/room.cpp

Co-Authored-By: Kitsune Ral <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/ed62c822ca200613bde60e48547ba32a0bd21c13

Git commit d06bbd6633eea048e35421b1785e96468c3cf5c0 by GitHub (on behalf of Kitsune Ral) on 21/03/2020 at 14:05..
Merge pull request #383 from ram-nad/msc2432-fix

fixing msc2432
https://invent.kde.org/neon/forks/libquotient/-/commit/d06bbd6633eea048e35421b1785e96468c3cf5c0

Git commit 79a3e9e2accd0de0ac8bf35d8b77f36ca211899f by Black Hat on 24/03/2020 at 05:48..
Expose aliases() and altAliases() as properties
https://invent.kde.org/neon/forks/libquotient/-/commit/79a3e9e2accd0de0ac8bf35d8b77f36ca211899f

Git commit 89573ca2a1c19d79c1417e64613f1a0fa696837c by Kitsune Ral on 24/03/2020 at 12:02..
Connection: fix a deprecation warning
https://invent.kde.org/neon/forks/libquotient/-/commit/89573ca2a1c19d79c1417e64613f1a0fa696837c

Git commit c3149cecf3bee2ae4360d5d46dffd5fc4330539e by Kitsune Ral on 25/03/2020 at 21:35..
.travis.yml: be explicit about using trusty

Travis CI switched to xenial by default since some time ago.
https://invent.kde.org/neon/forks/libquotient/-/commit/c3149cecf3bee2ae4360d5d46dffd5fc4330539e

Git commit 80c1747137a3f799a20c4d1f3d1a2baa72084adb by Kitsune Ral on 25/03/2020 at 21:35..
Compatibility with Qt 5.14
https://invent.kde.org/neon/forks/libquotient/-/commit/80c1747137a3f799a20c4d1f3d1a2baa72084adb

Git commit 9e58bbe349205ded067fdc92c221fa128a05820f by Kitsune Ral on 25/03/2020 at 21:35..
Fix missing alias updates; make Room aliases accessors work (using MSC2432)

Backport of #383 to 0.5.x branch. Fixes #301.
https://invent.kde.org/neon/forks/libquotient/-/commit/9e58bbe349205ded067fdc92c221fa128a05820f

Git commit fb63012ec32c98c663802951153207442d1d63df by Kitsune Ral on 25/03/2020 at 21:35..
linkifyUrls(): be more conservative in parsing serverparts

Closes #321.
https://invent.kde.org/neon/forks/libquotient/-/commit/fb63012ec32c98c663802951153207442d1d63df

Git commit dc53839b2afd2e1ee5af882924a1c0a5b553da4e by Kitsune Ral on 25/03/2020 at 21:35..
Support for server notices rooms (MSC1452)

Fixes #326.
https://invent.kde.org/neon/forks/libquotient/-/commit/dc53839b2afd2e1ee5af882924a1c0a5b553da4e

Git commit b4748f1a31808d21aeb359b21aedd3b483b535d1 by Kitsune Ral on 25/03/2020 at 21:35..
.well-known support

Squashed cherry-pick of #330.
https://invent.kde.org/neon/forks/libquotient/-/commit/b4748f1a31808d21aeb359b21aedd3b483b535d1

Git commit 10b5ab9e13c46f275c3b1e567fb6a6421b103e6e by Kitsune Ral on 25/03/2020 at 21:35..
setAvatarForRoom: try recover from otherAvatars inconsistency

Cherry-pick of what seems to be a fix for #347.
https://invent.kde.org/neon/forks/libquotient/-/commit/10b5ab9e13c46f275c3b1e567fb6a6421b103e6e

Git commit 94581d2a55853e91e117301b408446d9426ef8e6 by Kitsune Ral on 25/03/2020 at 21:35..
Update the cache for sure if unread counters were changed

Backport of #345.
https://invent.kde.org/neon/forks/libquotient/-/commit/94581d2a55853e91e117301b408446d9426ef8e6

Git commit f7442619401fa789647101f56fdfbddaf4fc6796 by Kitsune Ral on 25/03/2020 at 21:35..
BaseJob: support M_USER_DEACTIVATED error code

Backport for #344.
https://invent.kde.org/neon/forks/libquotient/-/commit/f7442619401fa789647101f56fdfbddaf4fc6796

Git commit 4c59f10262b3de2e8b808b0839d772b0d70d2057 by Kitsune Ral on 25/03/2020 at 21:35..
qmc-example: make tests work again
https://invent.kde.org/neon/forks/libquotient/-/commit/4c59f10262b3de2e8b808b0839d772b0d70d2057

Git commit 76265ca6aa7a6c8d777aa55190d9038600ef11b1 by Kitsune Ral on 25/03/2020 at 21:35..
BaseJob: Only send access token when needed

This is a basic fix for #358, without a workaround added in 5937127b
(such workaround would break API compatibility).
https://invent.kde.org/neon/forks/libquotient/-/commit/76265ca6aa7a6c8d777aa55190d9038600ef11b1

Git commit 27a2f59722b6e6642dae05cd4f04f5f40304eeb1 by Kitsune Ral (on behalf of Alexey Andreyev) on 25/03/2020 at 21:35..
Fix room highlighting for names with hashtag

Fixes #359
https://invent.kde.org/neon/forks/libquotient/-/commit/27a2f59722b6e6642dae05cd4f04f5f40304eeb1

Git commit fe1a7c61a81ff4820645ecafccd693ea0a887d36 by Kitsune Ral on 25/03/2020 at 21:35..
Initialise read marker if none is found in the whole timeline

Backport of a fix to #361.
https://invent.kde.org/neon/forks/libquotient/-/commit/fe1a7c61a81ff4820645ecafccd693ea0a887d36

Git commit 24be625ff62601ac8c61a4269b5fbe7d8405dae7 by Kitsune Ral on 25/03/2020 at 21:35..
Redaction: update essential keys list

No more special:
- prev_content (MSC1954, fixes #318)
- aliases (follow up on MSC2432)
https://invent.kde.org/neon/forks/libquotient/-/commit/24be625ff62601ac8c61a4269b5fbe7d8405dae7

Git commit df310485be69a5891b2dc57391854951709d474e by Kitsune Ral on 25/03/2020 at 21:35..
Room: make downloaded file name building more robust

Backport of a fix for #366.
https://invent.kde.org/neon/forks/libquotient/-/commit/df310485be69a5891b2dc57391854951709d474e

Git commit 5b7032e414899b5f9e8f19aec567eaed5e0fc4c2 by Kitsune Ral on 25/03/2020 at 21:35..
Support of MSC1849 message editing

This is a backport of #341, as fixed by #373 and #376.
https://invent.kde.org/neon/forks/libquotient/-/commit/5b7032e414899b5f9e8f19aec567eaed5e0fc4c2

Git commit ef59622e3506c7d234c1fff7dea1aa921f965e25 by Kitsune Ral on 26/03/2020 at 08:26..
Room::aliases(): don't add canonical alias if it's empty

Fixes #394.
https://invent.kde.org/neon/forks/libquotient/-/commit/ef59622e3506c7d234c1fff7dea1aa921f965e25

Git commit 3ba2acce470407854bb38b2633675e916a51a904 by Kitsune Ral on 26/03/2020 at 08:28..
AliasesEventContent::toJson(): optimise generated JSON
https://invent.kde.org/neon/forks/libquotient/-/commit/3ba2acce470407854bb38b2633675e916a51a904

Git commit ec4110c63443e29c78fdf0f72af08f5395ec48f7 by Kitsune Ral on 26/03/2020 at 12:25..
Refactoring around Connection::onSyncSuccess()

The method grew large and a bit unwieldy over the years.
https://invent.kde.org/neon/forks/libquotient/-/commit/ec4110c63443e29c78fdf0f72af08f5395ec48f7

Git commit 16a0a88b3db9e8c3f1c8ff80139b77a31f2da287 by Kitsune Ral on 26/03/2020 at 21:52..
Support for receiving m.reaction events

Continuation of the #341 backport.
https://invent.kde.org/neon/forks/libquotient/-/commit/16a0a88b3db9e8c3f1c8ff80139b77a31f2da287

Git commit 7033aa5ad8152f77164a4c644837d1fe44aa0430 by Kitsune Ral on 26/03/2020 at 21:52..
Connection: support getting the list of login flows

Backport of #386.
https://invent.kde.org/neon/forks/libquotient/-/commit/7033aa5ad8152f77164a4c644837d1fe44aa0430

Git commit 1b5d6216beddd17c820240dd4bdeaf9c47624cf6 by Kitsune Ral on 26/03/2020 at 21:52..
Connection: loginWithToken(); connectWithToken() -> assumeIdentity()

Part of #388 backport.
https://invent.kde.org/neon/forks/libquotient/-/commit/1b5d6216beddd17c820240dd4bdeaf9c47624cf6

Git commit 123d58fc3c29d8e9adbb5b654df53d5cbb0a32fa by Kitsune Ral on 26/03/2020 at 21:52..
SsoSession and Connection::prepareForSso()

Final part of #388 backport.
https://invent.kde.org/neon/forks/libquotient/-/commit/123d58fc3c29d8e9adbb5b654df53d5cbb0a32fa

Git commit 2216c5f844e5227976f4b0a8208c6c7e834934ae by Kitsune Ral on 26/03/2020 at 21:52..
Connection: allRooms(), rooms(), roomsCount(); deprecate roomMap()

Backport of #354.
https://invent.kde.org/neon/forks/libquotient/-/commit/2216c5f844e5227976f4b0a8208c6c7e834934ae

Git commit e95487a144ffe0923efda938b20e45bb5b9a59ff by Kitsune Ral on 26/03/2020 at 22:14..
Fix building tests without E2EE
https://invent.kde.org/neon/forks/libquotient/-/commit/e95487a144ffe0923efda938b20e45bb5b9a59ff

Git commit 2ff67baac4b8352f06421089c2b94566df032b21 by Kitsune Ral on 26/03/2020 at 22:24..
Travis CI: build with and without E2EE
https://invent.kde.org/neon/forks/libquotient/-/commit/2ff67baac4b8352f06421089c2b94566df032b21

Git commit 01abbe7008b1614760740ba425a174c61af695a1 by Kitsune Ral on 27/03/2020 at 08:24..
.travis.yml: fix a typo
https://invent.kde.org/neon/forks/libquotient/-/commit/01abbe7008b1614760740ba425a174c61af695a1

Git commit cb09112c5b88f391019c05368ff6e8998722ba3c by Kitsune Ral on 27/03/2020 at 09:16..
QuotientConfig.cmake: fix another typo

...to fix building tests _with_ E2EE by CMake.
https://invent.kde.org/neon/forks/libquotient/-/commit/cb09112c5b88f391019c05368ff6e8998722ba3c

Git commit 0591b3d58f7cff90fd6dcfb54c01f04b6a4549a4 by Kitsune Ral on 27/03/2020 at 16:30..
CMakeLists.txt: update version to 0.5.3
https://invent.kde.org/neon/forks/libquotient/-/commit/0591b3d58f7cff90fd6dcfb54c01f04b6a4549a4

Git commit f5876b7c9fbaf07696605929e37f9921ce6e745e by Kitsune Ral on 27/03/2020 at 17:07..
Fix compatibility with MSVC 2015
https://invent.kde.org/neon/forks/libquotient/-/commit/f5876b7c9fbaf07696605929e37f9921ce6e745e

Git commit a81590c9e3b26f76d02d498802a44719c116fa13 by Kitsune Ral on 27/03/2020 at 21:48..
Fix FTBFS with Quotient_ENABLE_E2EE
https://invent.kde.org/neon/forks/libquotient/-/commit/a81590c9e3b26f76d02d498802a44719c116fa13

Git commit 72e12a84cefa86758153ad20f6c8da63e1829ba4 by Kitsune Ral on 28/03/2020 at 15:08..
CMakeLists.txt: don't EXCLUDE_FROM_ALL if QtOlm is in-tree
https://invent.kde.org/neon/forks/libquotient/-/commit/72e12a84cefa86758153ad20f6c8da63e1829ba4

Git commit 51a85fa0e8814dfe47bb5174fa09a0e216d17d19 by Kitsune Ral on 29/03/2020 at 08:49..
Fix building tests with installed Quotient in E2EE configuration
https://invent.kde.org/neon/forks/libquotient/-/commit/51a85fa0e8814dfe47bb5174fa09a0e216d17d19

Git commit b588dee7d22da65360d61ea911cdbaae0d8093fb by Kitsune Ral on 29/03/2020 at 08:50..
quotest: minor cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/b588dee7d22da65360d61ea911cdbaae0d8093fb

Git commit 6f8f373efd5ae6909a481d17e6b20bca885ccd48 by Kitsune Ral on 29/03/2020 at 08:51..
Travis CI: install olm

...now that its CMake files are fixed for that.
https://invent.kde.org/neon/forks/libquotient/-/commit/6f8f373efd5ae6909a481d17e6b20bca885ccd48

Git commit c2493836c3b0f706e03ce71769761890d1314d7e by GitHub (on behalf of Kitsune Ral) on 29/03/2020 at 09:48..
Merge pull request #396 from quotient-im/kitsune-fix-e2ee-building

Kitsune fix e2ee building
https://invent.kde.org/neon/forks/libquotient/-/commit/c2493836c3b0f706e03ce71769761890d1314d7e

Git commit bd14854f1d4790aeea5e39ee6ceabbd690331761 by Kitsune Ral on 30/03/2020 at 17:12..
BaseJob: shutdown timers on abandoning and destruction

A part of the fix for #398.
https://invent.kde.org/neon/forks/libquotient/-/commit/bd14854f1d4790aeea5e39ee6ceabbd690331761

Git commit 41a74ae1175b4b8723ef829270f7149c302a13c1 by Kitsune Ral on 30/03/2020 at 17:12..
BaseJob: validate the connection health before running the request
https://invent.kde.org/neon/forks/libquotient/-/commit/41a74ae1175b4b8723ef829270f7149c302a13c1

Git commit cfbc71bc70707ff1ed691cc04ecbe246024f6734 by Kitsune Ral on 30/03/2020 at 17:16..
Connection::resolveServer(): refactor

Also: use 4-arg connect() to make sure lambdas are disconnected
if the connection is gone.
https://invent.kde.org/neon/forks/libquotient/-/commit/cfbc71bc70707ff1ed691cc04ecbe246024f6734

Git commit 08cc50a3e6699e4d0cff60108260adbd8cbdf419 by Kitsune Ral on 30/03/2020 at 17:41..
Connection::resolveServer(): reparent jobs to ensure proper clean-away

This is a spot fix for #398; Quotient 0.6 will reparent all jobs to make
sure they are removed after the connection is gone (this also partially
helps with #397).
https://invent.kde.org/neon/forks/libquotient/-/commit/08cc50a3e6699e4d0cff60108260adbd8cbdf419

Git commit ecc31fc7a615faa516a03c07ebd96d0d2494c315 by Kitsune Ral on 30/03/2020 at 17:45..
BaseJob: shutdown timers on abandoning and destruction

A part of the fix for #398.
https://invent.kde.org/neon/forks/libquotient/-/commit/ecc31fc7a615faa516a03c07ebd96d0d2494c315

Git commit d38516e4e123474876e4fc7f850fe321ec5ccb54 by Kitsune Ral on 30/03/2020 at 17:57..
BaseJob: check the connection even harder
https://invent.kde.org/neon/forks/libquotient/-/commit/d38516e4e123474876e4fc7f850fe321ec5ccb54

Git commit 0a7008bfd345afb083d8ac8c0c6cf21f879aedc6 by Kitsune Ral on 30/03/2020 at 18:01..
Connection::resolveServer(): refactor

Also: use 4-arg connect() to make sure lambdas are disconnected
if the connection is gone.
https://invent.kde.org/neon/forks/libquotient/-/commit/0a7008bfd345afb083d8ac8c0c6cf21f879aedc6

Git commit 86b29318385edf07ecbaca975e5ab90f11304d1a by Kitsune Ral on 31/03/2020 at 05:33..
Reparent all jobs to their connections

(Mostly) fixes #397. Fixes #398. If there's a need to reparent the job
to some other object, it should now be done after callApi()/run() call
(not that there were many touch points before that moment, anyway).
Collateral damage: job-starting methods are no more const (but that
didn't belong them anyway, too).
https://invent.kde.org/neon/forks/libquotient/-/commit/86b29318385edf07ecbaca975e5ab90f11304d1a

Git commit f0c5016656c4b2ddd26be5522b735a7959469ed1 by Kitsune Ral on 31/03/2020 at 05:46..
Version 0.5.3.1
https://invent.kde.org/neon/forks/libquotient/-/commit/f0c5016656c4b2ddd26be5522b735a7959469ed1

Git commit c4bbd187b8dac480230848906c31c4a0bc24663e by Kitsune Ral on 01/04/2020 at 16:49..
CMakeLists.txt: bump API_VERSION; prepare for 0.5.3.2

Because new API has been introduced in 0.5.3.
https://invent.kde.org/neon/forks/libquotient/-/commit/c4bbd187b8dac480230848906c31c4a0bc24663e

Git commit b1466995c4e93d196bbf932593a64e530a7fded9 by Kitsune Ral on 03/04/2020 at 17:56..
Merge branch 'kitsune-job-lifetime-fixes'
https://invent.kde.org/neon/forks/libquotient/-/commit/b1466995c4e93d196bbf932593a64e530a7fded9

Git commit 3d04593f513916ee6e4fcb1ec2d18afa7b76590a by Kitsune Ral on 05/04/2020 at 13:48..
RequestData: create empty QByteArray by default

May fix #380. Also: remove explicit copying disablers,
the unique_ptr<> member disables copying just fine.
https://invent.kde.org/neon/forks/libquotient/-/commit/3d04593f513916ee6e4fcb1ec2d18afa7b76590a

Git commit ab9996fc62767d61da779d869e68bfc966ffce8f by Kitsune Ral on 06/04/2020 at 18:53..
CMakeLists: install header files to a subdirectory

This is a Quotient part of #328 fix; QtOlm part is pending.
https://invent.kde.org/neon/forks/libquotient/-/commit/ab9996fc62767d61da779d869e68bfc966ffce8f

Git commit a8572345e7a30c96b8ede47e95af65ff2cdef86c by Kitsune Ral on 06/04/2020 at 19:41..
Revert changes accidentally sneaked in with the previous commit
https://invent.kde.org/neon/forks/libquotient/-/commit/a8572345e7a30c96b8ede47e95af65ff2cdef86c

Git commit fc2614d88ccc3c938ea69fd6a8f4978bc9663e16 by Kitsune Ral on 06/04/2020 at 19:58..
BaseJob: disable pipelining

Longer running on RHEL/CentOS 8 leads to crashes that no more occur
with disabled pipelining.
https://invent.kde.org/neon/forks/libquotient/-/commit/fc2614d88ccc3c938ea69fd6a8f4978bc9663e16

Git commit 254c971106b8cc5603caea123803a70bc4bf2e6e by Kitsune Ral on 07/04/2020 at 14:11..
Room::addNewMessageEvents: fix an assertion failure on empty sender

When a message is redacted it has no sender. If it happens to be
in the bulkhead, Quotient tries to promote a read marker over it and
fails on being unable to resolve the author.
https://invent.kde.org/neon/forks/libquotient/-/commit/254c971106b8cc5603caea123803a70bc4bf2e6e

Git commit 160b11bdfe32c9983fe5f34eafa783148b2decbe by Kitsune Ral on 07/04/2020 at 14:14..
BaseJob: don't finish and re-try at the same time

Due to a missing return statement, a retry with auth case led to the job
being finished and pending at the same time, with no good consequences.
https://invent.kde.org/neon/forks/libquotient/-/commit/160b11bdfe32c9983fe5f34eafa783148b2decbe

Git commit 803f5d21935fe159a87864f10a52707eaf93fe5f by Kitsune Ral on 08/04/2020 at 16:35..
EventStatus::Replaced

This can be handy to pass the replaced status to QML.
https://invent.kde.org/neon/forks/libquotient/-/commit/803f5d21935fe159a87864f10a52707eaf93fe5f

Git commit feb5e82fbe96269f1f7683470b02fbc9c70acaa0 by Kitsune Ral on 12/04/2020 at 08:01..
Room::canSwitchVersions(): refactor and make Q_INVOKABLE
https://invent.kde.org/neon/forks/libquotient/-/commit/feb5e82fbe96269f1f7683470b02fbc9c70acaa0

Git commit 0c96ae749c749a5a36e9f28a91bb69f7702d94c5 by Kitsune Ral on 12/04/2020 at 10:15..
Room::safeMemberName()

Pulled from Quaternion code.
https://invent.kde.org/neon/forks/libquotient/-/commit/0c96ae749c749a5a36e9f28a91bb69f7702d94c5

Git commit e4b0165aa004e469ade8e24cc16a989affd3d782 by Bart Ribbers on 13/04/2020 at 09:54..
CMakeLists.txt: update libQtOlm to 3.0.1
https://invent.kde.org/neon/forks/libquotient/-/commit/e4b0165aa004e469ade8e24cc16a989affd3d782

Git commit e8be883d1c05bd82040e59c4744362509bd24222 by Kitsune Ral on 14/04/2020 at 04:33..
Room: emit updatedEvent() on un-reaction
https://invent.kde.org/neon/forks/libquotient/-/commit/e8be883d1c05bd82040e59c4744362509bd24222

Git commit 04a277dbb6c15e79be8623f3c36edd465d4b80a7 by Kitsune Ral on 14/04/2020 at 05:14..
Settings: use UTF-8 encoding

Fixes #403.
https://invent.kde.org/neon/forks/libquotient/-/commit/04a277dbb6c15e79be8623f3c36edd465d4b80a7

Git commit 58dfe74390ebdd8ec6611d3b8fecfe7d051ff955 by GitHub (on behalf of Kitsune Ral) on 14/04/2020 at 09:18..
Merge pull request #399 from PureTryOut/qtolm

CMakeLists.txt: update libQtOlm to 3.0.0
https://invent.kde.org/neon/forks/libquotient/-/commit/58dfe74390ebdd8ec6611d3b8fecfe7d051ff955

Git commit 4088ab4572c5b7cde603aeb1a89bc4515833beaf by Kitsune Ral on 14/04/2020 at 12:21..
BaseJob::makeRequestUrl(): even more tolerance to slash separators

The code is really defensive now, making sure there's exactly one slash
between the base path and the endpoint. It's still very conservative
about the path composition otherwise (no normalisation etc.).
https://invent.kde.org/neon/forks/libquotient/-/commit/4088ab4572c5b7cde603aeb1a89bc4515833beaf

Git commit 7ecc82079f85a7fa29f122fd2fd78401af0ee799 by Kitsune Ral on 15/04/2020 at 10:53..
Connection: connectToServer -> loginWithPassword

connectToServer() is left for compatibility but deprecated.
https://invent.kde.org/neon/forks/libquotient/-/commit/7ecc82079f85a7fa29f122fd2fd78401af0ee799

Git commit b19a7c8b9786ad506ab208da4f0f5e76ff7daa74 by Kitsune Ral on 15/04/2020 at 11:07..
Connection: cleanup and reformat
https://invent.kde.org/neon/forks/libquotient/-/commit/b19a7c8b9786ad506ab208da4f0f5e76ff7daa74

Git commit b27e4e2b75180c920deef1399487228f79882f47 by Kitsune Ral on 15/04/2020 at 11:07..
README.md: describe used CMake variables

In particular, the newly introduced Quotient_ENABLE_E2EE (which people
should NOT switch on without proper understanding as yet).

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/b27e4e2b75180c920deef1399487228f79882f47

Git commit 753c281f4eb055d684e63472468fd091f2166526 by Kitsune Ral on 15/04/2020 at 11:07..
Connection: track resolving and login flows jobs; isUsable()

This is to prevent the jobs from several
resolveServer() / setHomeserver() invocations running in parallel.
https://invent.kde.org/neon/forks/libquotient/-/commit/753c281f4eb055d684e63472468fd091f2166526

Git commit 44ea26d3c32dd2f4c4aa53b85ef7ec75fb354cb3 by Kitsune Ral on 17/04/2020 at 05:49..
gtad.yaml, *.mustache: upgrade to GTAD 0.7 beta

That means much more readable templates thanks to GTAD 0.7 in turn using
the upgrade Mustache engine.
https://invent.kde.org/neon/forks/libquotient/-/commit/44ea26d3c32dd2f4c4aa53b85ef7ec75fb354cb3

Git commit 906699cc525e9e0be231a58cabffc31ad1f5193c by Kitsune Ral on 17/04/2020 at 05:49..
.clang-format: no empty lines at the start of blocks
https://invent.kde.org/neon/forks/libquotient/-/commit/906699cc525e9e0be231a58cabffc31ad1f5193c

Git commit 7036ed0dcb137cb5cbb6b426dd338c5e2e4c6424 by Kitsune Ral on 17/04/2020 at 05:49..
Regenerate API files using new GTAD and refreshed templates

No functional changes.
https://invent.kde.org/neon/forks/libquotient/-/commit/7036ed0dcb137cb5cbb6b426dd338c5e2e4c6424

Git commit b7053de670ec869e7d353641bd9ba2250958549c by Kitsune Ral on 20/04/2020 at 12:22..
Refresh .gitignore
https://invent.kde.org/neon/forks/libquotient/-/commit/b7053de670ec869e7d353641bd9ba2250958549c

Git commit d8e1f4ee70902e2b9e5e9c699423d7f3fafe6238 by Hubert Chathi on 20/04/2020 at 22:01..
New upstream version 0.5.3.2
https://invent.kde.org/neon/forks/libquotient/-/commit/d8e1f4ee70902e2b9e5e9c699423d7f3fafe6238

Git commit 035d428becd62869b88793bb48d59410056b1f31 by Hubert Chathi on 20/04/2020 at 22:01..
Update upstream source from tag 'upstream/0.5.3.2'

Update to upstream version '0.5.3.2'
with Debian dir 49a325a077f4a2ebcd5b73adf3782a6fb5ecb3fe
https://invent.kde.org/neon/forks/libquotient/-/commit/035d428becd62869b88793bb48d59410056b1f31

Git commit 50106cea246204514447d58f40f7e31e4e0b08fb by Hubert Chathi on 20/04/2020 at 22:02..
remove autogenerated file
https://invent.kde.org/neon/forks/libquotient/-/commit/50106cea246204514447d58f40f7e31e4e0b08fb

Git commit f1788ee27f33e9339334e0d79bde9a27d9ce2e44 by Hubert Chathi on 20/04/2020 at 22:40..
Update packaging for new release.
https://invent.kde.org/neon/forks/libquotient/-/commit/f1788ee27f33e9339334e0d79bde9a27d9ce2e44

Git commit 6ff843d2d4915c037ad2dbe7470a34b2cbb279bc by Kitsune Ral on 21/04/2020 at 05:23..
.appveyor.yml: cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/6ff843d2d4915c037ad2dbe7470a34b2cbb279bc

Git commit 3c2f98375c4b82e7f1ee8a0f5d477e55c8685075 by Kitsune Ral on 12/05/2020 at 19:23..
basejob.cpp: nitpicks from clang-format
https://invent.kde.org/neon/forks/libquotient/-/commit/3c2f98375c4b82e7f1ee8a0f5d477e55c8685075

Git commit cf4d3d7ed82e62b57a11fbc7f491535a761dc75c by Kitsune Ral on 31/05/2020 at 11:25..
Move around and format code

No functional changes here.
https://invent.kde.org/neon/forks/libquotient/-/commit/cf4d3d7ed82e62b57a11fbc7f491535a761dc75c

Git commit 9707038be3b270ce014d2d432f004532414bbef6 by Kitsune Ral on 31/05/2020 at 11:25..
Ignore all Qt Creator projects, not only CMake-based ones
https://invent.kde.org/neon/forks/libquotient/-/commit/9707038be3b270ce014d2d432f004532414bbef6

Git commit a9edfbd19a624aa4e882df2f5e577ba1831914a3 by Kitsune Ral on 31/05/2020 at 11:25..
BaseJob::rawData: overload for (even) quicker access

No functional changes either.
https://invent.kde.org/neon/forks/libquotient/-/commit/a9edfbd19a624aa4e882df2f5e577ba1831914a3

Git commit dacc4a9727cb1c400b70ae2b9d470ce42c24ead3 by Kitsune Ral on 31/05/2020 at 11:25..
room.cpp: clean away unused variables
https://invent.kde.org/neon/forks/libquotient/-/commit/dacc4a9727cb1c400b70ae2b9d470ce42c24ead3

Git commit 51ef6011d6dfc55ea0c8b0cdd1d9e7315087aad9 by Kitsune Ral on 31/05/2020 at 11:25..
BaseJob: use non-deprecated API for Qt 5.15

Qt 5.15 renamed HTTP2AllowedAttribute to Http2AllowedAttribute,
deprecating the old spelling.
https://invent.kde.org/neon/forks/libquotient/-/commit/51ef6011d6dfc55ea0c8b0cdd1d9e7315087aad9

Git commit 4c012575f6ffcf61b9e66ba8a1f798caa8c08748 by Kitsune Ral on 01/06/2020 at 07:25..
.travis.yml: adjust to new GTAD
https://invent.kde.org/neon/forks/libquotient/-/commit/4c012575f6ffcf61b9e66ba8a1f798caa8c08748

Git commit 7ac93db4553aa624326a8e28b74151c784b937a7 by Kitsune Ral on 01/06/2020 at 12:47..
Remove the piece of code introduced too early on

parseJsonDocument() will come later.
https://invent.kde.org/neon/forks/libquotient/-/commit/7ac93db4553aa624326a8e28b74151c784b937a7

Git commit 51d27f3bcaacefda78dc033021b6a85152ab972e by Kitsune Ral on 01/06/2020 at 12:54..
GTAD parts: new home and format updates for GTAD 0.7

All GTAD-related files (gtad.yaml and templates) from now live in their
dedicated gtad/ directory - this helps against removing them
accidentally along with the rest of the generated files. The format
to list generated files in gtad.yaml has changed a bit before
GTAD 0.7 beta2; gtad.yaml in this commit conforms to the new structure.
https://invent.kde.org/neon/forks/libquotient/-/commit/51d27f3bcaacefda78dc033021b6a85152ab972e

Git commit 1973d7d53d80ced1eabc61aa0d42e1d4d7995c85 by Kitsune Ral on 01/06/2020 at 12:58..
Merge branch 'kitsune-new-gtad'
https://invent.kde.org/neon/forks/libquotient/-/commit/1973d7d53d80ced1eabc61aa0d42e1d4d7995c85

Git commit 79ede9bcb6d4fc5e269f506b2a10bfe4c302040a by Kitsune Ral on 05/06/2020 at 05:40..
Connection::run(): Q_INVOKABLE and chaining
https://invent.kde.org/neon/forks/libquotient/-/commit/79ede9bcb6d4fc5e269f506b2a10bfe4c302040a

Git commit db8b9569f83ba3643c9005359ba556f2c3e357f4 by Kitsune Ral on 05/06/2020 at 05:42..
Use CBOR for binary JSON caching on Qt 5.15+

Qt 5.15 deprecates binary JSON format in favour of CBOR now used as
a backend for its JSON classes.
https://invent.kde.org/neon/forks/libquotient/-/commit/db8b9569f83ba3643c9005359ba556f2c3e357f4

Git commit ba3da1a570cefc43c5d78d3af716432a478cdd9d by Kitsune Ral on 05/06/2020 at 05:48..
Avoid Qt 5.15 deprecation warning

operator+() is no more wanted with iterators on associative containers.
https://invent.kde.org/neon/forks/libquotient/-/commit/ba3da1a570cefc43c5d78d3af716432a478cdd9d

Git commit 04956392c4b1102ac9ae627c324493f035887472 by Kitsune Ral on 07/06/2020 at 06:43..
BaseJob: expose statusCode as Q_PROPERTY
https://invent.kde.org/neon/forks/libquotient/-/commit/04956392c4b1102ac9ae627c324493f035887472

Git commit eccab6df7003bb9c20c48dfe0af57502383ba42e by Kitsune Ral on 07/06/2020 at 06:43..
MediaThumbnailJob: be specific about the transform

What's needed for a thumbnail is normally "scale", not "crop"
(as these are defined in The Spec).
https://invent.kde.org/neon/forks/libquotient/-/commit/eccab6df7003bb9c20c48dfe0af57502383ba42e

Git commit 21c04d5b035cec0b6378e60acc93523f52c1c973 by Kitsune Ral on 07/06/2020 at 06:45..
BaseJob: jsonData() and prepareResult/Error()

* JSON response is stored internally in BaseJob, rather than passed
  around virtual response handlers. This allow to lazily deserialise
  parts of the JSON response when the client calls for them instead of
  deserialising upon arrival and storing POD pieces. This is
  incompatible with the current generated code, so temporarily FTBFS.
* BaseJob::loadFromJson() and BaseJob::takeFromJson() have been added
  to facilitate picking parts of the result as described above
  in derived job classes.
* BaseJob::jsonData(), BaseJob::jsonItems() and (protected)
  BaseJob::reply() for direct access to the response in its various
  forms.
* To further eliminate boilerplate code in generated job classes,
  a group of *ExpectedKeys() methods has been added - this allows to
  reflect the API definition of required response keys in a more
  "declarative" way, delegating validation to BaseJob.
* parseReply() and parseJson() pair turns to singular prepareResult().
  Thanks to all the changes above, in most cases it will not need
  overriding, unlike before.
* BaseJob::Private::parseJson() is introduced, to wrap
  QJsonDocument::parseJson() into something less verbose. This serves
  a completely different purpose to the former BaseJob::parseJson().
* BaseJob::doCheckReply() takes the place, and the name, of
  checkReply().
https://invent.kde.org/neon/forks/libquotient/-/commit/21c04d5b035cec0b6378e60acc93523f52c1c973

Git commit 2795c514f283fb274c8e70e81b04be3d02703fe7 by Kitsune Ral on 07/06/2020 at 11:48..
util.cpp: drop OptimizeOnFirstUsage option on newer Qt

Qt 5.12+ always optimise QRegularExpression on first usage.
https://invent.kde.org/neon/forks/libquotient/-/commit/2795c514f283fb274c8e70e81b04be3d02703fe7

Git commit cf960897089289656fc0f5d9a7d3d1242565b16f by Kitsune Ral on 07/06/2020 at 11:53..
README.md: minor cleanup

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/cf960897089289656fc0f5d9a7d3d1242565b16f

Git commit f6faea5971d94627da67dc1442504da07374958d by Kitsune Ral on 07/06/2020 at 11:54..
AccountSettins: use perfect forwarding
https://invent.kde.org/neon/forks/libquotient/-/commit/f6faea5971d94627da67dc1442504da07374958d

Git commit b9bc0ca1af18cd247a21fe6bc0f644bf7270a770 by Kitsune Ral on 07/06/2020 at 14:17..
Drop Qt Gui from qmake process
https://invent.kde.org/neon/forks/libquotient/-/commit/b9bc0ca1af18cd247a21fe6bc0f644bf7270a770

Git commit e1f5d0aa2c33e6da6c3a609c8bc7e0b5867e748d by Kitsune Ral on 07/06/2020 at 14:19..
SsoSession: let Private be a class everywhere

Fixes a compilation warning that Private is a struct in one place and
a class in another.
https://invent.kde.org/neon/forks/libquotient/-/commit/e1f5d0aa2c33e6da6c3a609c8bc7e0b5867e748d

Git commit a0430b1fb722a77ad7cbd28f181727d46d92b3a2 by Kitsune Ral on 07/06/2020 at 17:44..
gtad/*: optimise and use latest GTAD features

- The generated code is updated to be compatible with the BaseJob
  changes introduced in the previous commit. This includes greatly
  reducing the number of header files that have to be explicitly
  #included, as basejob.h now #includes converters.h. Also, thanks to
  the changes in BaseJob, none of generated job classes needs
  a pimpl Private class.
- gtad/template.*.mustache files are replaced with data.h.mustache for
  data structures (entirely defined in header files from now on) and
  operation.*.mustache for API operations (also massively moved to
  header files, possibly also becoming header-only in the future).
- New variable-dropping and title-overring features in GTAD 0.7 allow
  to use the upstream matrix-doc repo to generate the code.
- CMakeLists.txt makes use of file globbing with CONFIGURE_DEPENDS
  where possible to alleviate build reconfiguration after a GTAD call.
https://invent.kde.org/neon/forks/libquotient/-/commit/a0430b1fb722a77ad7cbd28f181727d46d92b3a2

Git commit 32729d9a7519cd2c4cddb0174b8329c6fd4a4a83 by Kitsune Ral on 07/06/2020 at 17:46..
Update generated files according to gtad/* changes
https://invent.kde.org/neon/forks/libquotient/-/commit/32729d9a7519cd2c4cddb0174b8329c6fd4a4a83

Git commit 4ff89aa1ec48623264944f18f97cd92115268eaf by Kitsune Ral on 07/06/2020 at 17:47..
Travis CI: clone olm and gtad outside of source tree

libQuotient now has gtad/ directory that stands in the way of cloning
GTAD - which is just to emphasize that cloning other projects into
the source tree has never been a good idea.
https://invent.kde.org/neon/forks/libquotient/-/commit/4ff89aa1ec48623264944f18f97cd92115268eaf

Git commit 0898550adcc5e6fe2648fcd4e181ecab9b5befea by Kitsune Ral on 07/06/2020 at 17:47..
Small updates to match the new generated definitions
https://invent.kde.org/neon/forks/libquotient/-/commit/0898550adcc5e6fe2648fcd4e181ecab9b5befea

Git commit 10d9ac4673e374a9ac17ff492591136520337c4c by Kitsune Ral on 09/06/2020 at 05:11..
Fix qmake build failure at AppVeyor

Turned out libQuotient code base was not good for NMake inference rules
but qmake has been intelligent enough to detect that and disable before.
After the recent optimisations qmake's intelligence was not enough so
CONFIG += no_batch was not automatically added, leading to the linking
failure because NMake skipped compilation of all source files.
https://invent.kde.org/neon/forks/libquotient/-/commit/10d9ac4673e374a9ac17ff492591136520337c4c

Git commit 370d9b3e46332d38df8798cda208c534c58be808 by GitHub (on behalf of Kitsune Ral) on 09/06/2020 at 06:52..
Merge pull request #405 from quotient-im/kitsune-basejob-store-json-response

Store JSON response in BaseJob + tweaks to the generated code
https://invent.kde.org/neon/forks/libquotient/-/commit/370d9b3e46332d38df8798cda208c534c58be808

Git commit 2ddab7a6faab58d8e911012e8a827a3a51504621 by Kitsune Ral on 09/06/2020 at 17:04..
Comments refresh

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/2ddab7a6faab58d8e911012e8a827a3a51504621

Git commit 533f0af3c5c101c7c4d9ed3260fb66baf78304fa by Kitsune Ral on 10/06/2020 at 05:32..
More comments refresh

[ci skip]
https://invent.kde.org/neon/forks/libquotient/-/commit/533f0af3c5c101c7c4d9ed3260fb66baf78304fa

Git commit 9e10771ed3195de3e23ef9e8bffc8eb0b734991f by Kitsune Ral on 10/06/2020 at 13:06..
.travis.yml: fix a typo in the matrix-doc URL
https://invent.kde.org/neon/forks/libquotient/-/commit/9e10771ed3195de3e23ef9e8bffc8eb0b734991f

Git commit 3f58a12da394244137ba85249dd13d09cb07e927 by Kitsune Ral on 10/06/2020 at 13:06..
quotest: make sure to send all events before leaving
https://invent.kde.org/neon/forks/libquotient/-/commit/3f58a12da394244137ba85249dd13d09cb07e927

Git commit 08f4490d4d770878f805d26bfe1d0ef9cb3f7393 by Kitsune Ral on 10/06/2020 at 13:06..
TestSuite::sendRedaction: fix a stale TODO

Add another TODO instead :-|
https://invent.kde.org/neon/forks/libquotient/-/commit/08f4490d4d770878f805d26bfe1d0ef9cb3f7393

Git commit f3b8dbe01a43c5334a371edda833173468d99dc4 by Kitsune Ral on 10/06/2020 at 13:06..
Room: fix messageSent() being emitted too early

Closes #406.
https://invent.kde.org/neon/forks/libquotient/-/commit/f3b8dbe01a43c5334a371edda833173468d99dc4

Git commit 1293972514b10cd7a5ca6435646c496bb427e305 by Kitsune Ral on 10/06/2020 at 13:06..
libquotient.pri: set /std:c++17 explicitly

Qt 5.9's qmake only seems to use CONFIG *= c++1z for GCC/LLVM but
not for MSVC.
https://invent.kde.org/neon/forks/libquotient/-/commit/1293972514b10cd7a5ca6435646c496bb427e305

Git commit 4237a138f9ad1baa7384f3a539e9343a1471b538 by Kitsune Ral on 10/06/2020 at 20:21..
CI: test more configurations
https://invent.kde.org/neon/forks/libquotient/-/commit/4237a138f9ad1baa7384f3a539e9343a1471b538

Git commit 0ad4e7da9f561b158cecf793ab34f2968b457ca8 by Kitsune Ral on 10/06/2020 at 20:21..
CMakeLists.txt: exclude key_backup.yaml from API

As of now, it's a bit immature for code generation. Will be reincluded
once it gets better.
https://invent.kde.org/neon/forks/libquotient/-/commit/0ad4e7da9f561b158cecf793ab34f2968b457ca8

Git commit 9fc2c15dc021b2fddcb24bbc367c02639ec1256b by Kitsune Ral on 10/06/2020 at 20:21..
syncdata.h: fix an old warning about operator<<

The warning has been that it is declared as a friend but not exactly
in namespace Quotient (though all compilers still could find and link it
but only as long as it is defined in the namespace). Now instead of
being declared as a friend it's just declared in the namespace :)
https://invent.kde.org/neon/forks/libquotient/-/commit/9fc2c15dc021b2fddcb24bbc367c02639ec1256b

Git commit ff3c8481f499e42d51e1a8ef5f75a4e634858862 by Kitsune Ral on 11/06/2020 at 05:29..
Merge branch 'kitsune-expand-ci'
https://invent.kde.org/neon/forks/libquotient/-/commit/ff3c8481f499e42d51e1a8ef5f75a4e634858862

Git commit b1f050da4f6df4f6c563d36356bce9be36619ddd by Kitsune Ral on 11/06/2020 at 12:43..
CMakeLists.txt: only use CONFIGURE_DEPENDS when needed
https://invent.kde.org/neon/forks/libquotient/-/commit/b1f050da4f6df4f6c563d36356bce9be36619ddd

Git commit 0db2db1d247a0a4e6e6545ec0d72879416e6226b by Kitsune Ral on 11/06/2020 at 17:24..
BaseJob::prepareError(): be more tolerant to empty error payloads

TooManyRequests can come without a payload, apparently.
https://invent.kde.org/neon/forks/libquotient/-/commit/0db2db1d247a0a4e6e6545ec0d72879416e6226b

Git commit 9ef0a32c2273d617b81fe47e1557f9d2754f0930 by Kitsune Ral on 12/06/2020 at 10:55..
CMakeLists.txt: fix update-api target when there's no clang-format
https://invent.kde.org/neon/forks/libquotient/-/commit/9ef0a32c2273d617b81fe47e1557f9d2754f0930

Git commit 1e9ebbe5d5e0fa210f15277e4973a85bdb6d0d67 by Kitsune Ral on 12/06/2020 at 11:12..
CMakeLists.txt: fix a typo
https://invent.kde.org/neon/forks/libquotient/-/commit/1e9ebbe5d5e0fa210f15277e4973a85bdb6d0d67

Git commit 5ec1b6919028c181b192e22a901838088123ac7a by Kitsune Ral on 12/06/2020 at 11:12..
Merge remote-tracking branch 'origin/kitsune-conservative-configure-depends'
https://invent.kde.org/neon/forks/libquotient/-/commit/5ec1b6919028c181b192e22a901838088123ac7a

Git commit 0b8c5d4180b305d7cfcd94bba34d1a1324fb2a38 by Kitsune Ral on 12/06/2020 at 17:28..
Connection: add (STORED false) to derived Q_PROPERTYs
https://invent.kde.org/neon/forks/libquotient/-/commit/0b8c5d4180b305d7cfcd94bba34d1a1324fb2a38

Git commit ebdb2ba9d15e6cdfb1458e7895032afd641aafe3 by Kitsune Ral on 12/06/2020 at 18:20..
BaseJob: fail early if the job needs token and there's none
https://invent.kde.org/neon/forks/libquotient/-/commit/ebdb2ba9d15e6cdfb1458e7895032afd641aafe3

Git commit b1071cf34b86685c3cdb5004d6112881966a7ce6 by Kitsune Ral on 12/06/2020 at 18:29..
Connection::syncLoop: give a pause between syncs

As it's observed now, Synapse responds almost immediately on /sync
requests - even if there are no events to return. This downgrades
long-polling to simply polling, and since clients don't expect it,
polling loops become pretty violent. To alleviate that somehow,
syncLoop now accepts the second parameter, msecBetween (500 msecs
by default), to configure waiting between the previous sync response
and the next sync request. This is only for syncLoop();
Connection::sync() fires instantly, as before.
https://invent.kde.org/neon/forks/libquotient/-/commit/b1071cf34b86685c3cdb5004d6112881966a7ce6

Git commit d257f0b6155d6d1450cf0c82d1538e553380c44e by Kitsune Ral on 12/06/2020 at 18:36..
Connection::isLoggedIn() and more robust logout()

isLoggedIn() is just a wrapper around Connection::accessToken() that
returns whether it's not empty. Now, Connection::accessToken() and
Connection::logout() are changed in such a way that if there's
a logout job ongoing Connection::accessToken() will return an empty
value even though the access token is still stored in ConnectionData.
This gives a hint to the rest of Connection and to the client code
that the user is not quite authenticated anymore. Finally, syncLoop()
and sync() have been altered to check isLoggedIn() before proceeding
with their network request.
https://invent.kde.org/neon/forks/libquotient/-/commit/d257f0b6155d6d1450cf0c82d1538e553380c44e

Git commit f85badbd7bae173871b7681322745c73b23aa512 by Kitsune Ral on 12/06/2020 at 18:37..
The previous commit is incomplete, this completes it
https://invent.kde.org/neon/forks/libquotient/-/commit/f85badbd7bae173871b7681322745c73b23aa512

Git commit a2520bae3677be9df0abcef7681a138a6c4ad849 by Kitsune Ral on 14/06/2020 at 15:23..
quotient_common.h for common namespace things

The two main cases for this header file are:
* namespace QMatrixClient = Quotient should occur exactly once,
  to respect ODR.
* Q_NAMESPACE for namespace Quotient (to enable Q_ENUM_NS, particularly)
  must be defined exactly once, for the same reason.
https://invent.kde.org/neon/forks/libquotient/-/commit/a2520bae3677be9df0abcef7681a138a6c4ad849

Git commit 955bcf1d221c0ba4526474a779bee84f064b1c56 by Kitsune Ral on 14/06/2020 at 15:50..
libquotient.pri: fix a typo leading to qmake FTBFS
https://invent.kde.org/neon/forks/libquotient/-/commit/955bcf1d221c0ba4526474a779bee84f064b1c56

Git commit 767b97dd885bcc04aac022763e5011115769196a by Kitsune Ral on 18/06/2020 at 05:31..
gtad: restrict the identifier regex
https://invent.kde.org/neon/forks/libquotient/-/commit/767b97dd885bcc04aac022763e5011115769196a

Git commit e0ac446f41fdb1c476196a5ebfb72c995a959b8d by Kitsune Ral on 19/06/2020 at 12:59..
*.h.mustache: minor fixes

The Quotient:: workaround seems no more necessary.
https://invent.kde.org/neon/forks/libquotient/-/commit/e0ac446f41fdb1c476196a5ebfb72c995a959b8d

Git commit cbd107e595bbb78ef3411a4a92f66d495c6fc5b4 by Kitsune Ral on 19/06/2020 at 12:59..
Rename a few 'data' responses
https://invent.kde.org/neon/forks/libquotient/-/commit/cbd107e595bbb78ef3411a4a92f66d495c6fc5b4

Git commit e17764a1ae81393968dfb747c7b67353c109bc71 by Kitsune Ral on 19/06/2020 at 13:03..
csapi/: generated using the latest GTAD and matrix-doc

For matrix-doc, specifically, it is master (5cb4b086) merged with
https://github.com/matrix-org/matrix-doc/pull/2518.
https://invent.kde.org/neon/forks/libquotient/-/commit/e17764a1ae81393968dfb747c7b67353c109bc71

Git commit f6ad01c959e19362a0b15779b816432595153d3b by Kitsune Ral on 19/06/2020 at 13:59..
Revert adding a pause between syncs, use sane timeout defaults

This reverts commit b1071cf34b86685c3cdb5004d6112881966a7ce6. Passing
-1 to sync() and, respectively, to SyncJob does not add any timeout;
however, careful reading of the spec reveals that the default value
for the timeout (0) means to return as soon as possible, not as late
as possible. As a consequence, syncLoop() without parameters initiates
a sync polling frenzy, with the client sending a new request as soon as
the previous returns, while the server returns the request as soon as
it practically can, not as soon as another event for the client comes
around.

To fix this, the default value for syncLoop() is changed to 30 seconds.
The recently added msecBetween parameter is abolished; we really don't
want to steer people to classic polling from long polling.
https://invent.kde.org/neon/forks/libquotient/-/commit/f6ad01c959e19362a0b15779b816432595153d3b

Git commit 593c241661148dfd80854d3e156d9a4ee60d5ab4 by Kitsune Ral on 19/06/2020 at 15:56..
Fix FTBFS and warnings with E2EE switched on
https://invent.kde.org/neon/forks/libquotient/-/commit/593c241661148dfd80854d3e156d9a4ee60d5ab4

Git commit d70b2d29c11ec7a0e177c2979beeab9ddb6eb5c3 by Kitsune Ral on 20/06/2020 at 17:07..
Room: PostReadMarkersJob should be in background

...meaning - errors from it should not throw up at a user, who has no
clue (they still should go to logs for investigation).
https://invent.kde.org/neon/forks/libquotient/-/commit/d70b2d29c11ec7a0e177c2979beeab9ddb6eb5c3

Git commit b1e84568dbb70dc4fa24a915c6d15438be958378 by Kitsune Ral on 26/06/2020 at 17:05..
Disable HTTP2; enable pipelining

Long run tests over 2+ days kept crashing before this commit but
stopped crashing with pipelining on and HTTP2 off.
https://invent.kde.org/neon/forks/libquotient/-/commit/b1e84568dbb70dc4fa24a915c6d15438be958378

Git commit 8da4918aa10340ef52177977a8bcad489419f8e2 by Kitsune Ral on 18/07/2020 at 16:13..
quotest: log final report as late as possible

...to spare the developer from scrolling up in the search of it.
https://invent.kde.org/neon/forks/libquotient/-/commit/8da4918aa10340ef52177977a8bcad489419f8e2

Git commit e7bf4f3e4fc059ef9ea0e0b253a1953a91fd77d8 by Kitsune Ral on 18/07/2020 at 16:20..
ResourceResolver

Introducing the uniform way to resolve Matrix URIs and identifiers
to Room/User objects, passing an optional event id (if supplied) to
the client-defined handler. Just call ResourceResolver::visitResource()
or ResourceResolver::openResource() and you'll have that string parsed
and dispatched where you need.
https://invent.kde.org/neon/forks/libquotient/-/commit/e7bf4f3e4fc059ef9ea0e0b253a1953a91fd77d8

Git commit 012f6ea6a4fa63d4e48e910f829e060c19cbcb1e by Kitsune Ral on 18/07/2020 at 16:20..
Fix building with older Qt
https://invent.kde.org/neon/forks/libquotient/-/commit/012f6ea6a4fa63d4e48e910f829e060c19cbcb1e

Git commit 5f3e88b87748bb982858850803e8405ac88919d9 by Kitsune Ral on 18/07/2020 at 16:20..
quotest: delay sync start till after joining

To ensure that the sync returns the details of the room just joined.
https://invent.kde.org/neon/forks/libquotient/-/commit/5f3e88b87748bb982858850803e8405ac88919d9

Git commit 99ae651d04fedb13eccd837f296c6a79790d37ca by Kitsune Ral on 18/07/2020 at 16:20..
quotest: consolidate processing of syncDone()
https://invent.kde.org/neon/forks/libquotient/-/commit/99ae651d04fedb13eccd837f296c6a79790d37ca

Git commit 4dd51859c9ada4660e2a9cd16c3d0a99ad13761f by Kitsune Ral on 18/07/2020 at 16:20..
class MatrixUri; support action=join and via=
https://invent.kde.org/neon/forks/libquotient/-/commit/4dd51859c9ada4660e2a9cd16c3d0a99ad13761f

Git commit 227d7c0ba26c3eb3e7394e0a5b7cc79544db7515 by Kitsune Ral on 18/07/2020 at 16:20..
quotest: unit tests for MatrixUri
https://invent.kde.org/neon/forks/libquotient/-/commit/227d7c0ba26c3eb3e7394e0a5b7cc79544db7515

Git commit af329351289606f3cb1ef865cb0cbe61c1d1711b by Kitsune Ral on 19/07/2020 at 14:12..
MatrixUri->Uri: Extend to non-Matrix URIs
https://invent.kde.org/neon/forks/libquotient/-/commit/af329351289606f3cb1ef865cb0cbe61c1d1711b

Git commit 1529f46e6dd457d059fb7e6e9cd10fa0b0399553 by Kitsune Ral on 20/07/2020 at 17:33..
UriResolverBase::visitUser(): add return value

To enable reporting when the action is incorrect.
https://invent.kde.org/neon/forks/libquotient/-/commit/1529f46e6dd457d059fb7e6e9cd10fa0b0399553

Git commit c94dc1104e1eb5e0537fcd9429626988524c8a98 by Kitsune Ral on 21/07/2020 at 09:31..
converters.*: clean away old cruft
https://invent.kde.org/neon/forks/libquotient/-/commit/c94dc1104e1eb5e0537fcd9429626988524c8a98

Git commit 9f9577ccdebad84faf96766f8e5b07e2f2b605c5 by Kitsune Ral on 21/07/2020 at 16:24..
Connection: tolerate an empty set of room versions

Closes #314.
https://invent.kde.org/neon/forks/libquotient/-/commit/9f9577ccdebad84faf96766f8e5b07e2f2b605c5

Git commit 6d804f56e570c39ea9967c66c4bdad6f530e956e by Kitsune Ral on 21/07/2020 at 16:26..
Uri: bare-sigil URIs are invalid
https://invent.kde.org/neon/forks/libquotient/-/commit/6d804f56e570c39ea9967c66c4bdad6f530e956e

Git commit bd74588539d8a5922e9f51eb691052c06c02a5ed by Kitsune Ral on 22/07/2020 at 16:38..
quotest: Minor refactoring of basic URI tests
https://invent.kde.org/neon/forks/libquotient/-/commit/bd74588539d8a5922e9f51eb691052c06c02a5ed

Git commit 894755776f0d100032eb4346ea4a1f07defb61cb by GitHub (on behalf of Kitsune Ral) on 22/07/2020 at 19:04..
Merge pull request #407 from quotient-im/kitsune-resource-resolver

Matrix URIs and resolving them
https://invent.kde.org/neon/forks/libquotient/-/commit/894755776f0d100032eb4346ea4a1f07defb61cb

Git commit e9237a46bbdf6cbfee23c4f1acc06d90251566b0 by Kitsune Ral on 23/07/2020 at 09:58..
Room::P::isEventNotable(): edits are not notable

Edits are (normally) applied to some other event up the timeline,
therefore not displayed. Having [1] in unread counts while seeing
nothing in the timeline is quite confusing.
https://invent.kde.org/neon/forks/libquotient/-/commit/e9237a46bbdf6cbfee23c4f1acc06d90251566b0

Git commit d1c5e514fb65bbea182b34a893bca12b321e3bac by Kitsune Ral on 24/07/2020 at 06:29..
csapi/: refresh from the latest matrix-doc
https://invent.kde.org/neon/forks/libquotient/-/commit/d1c5e514fb65bbea182b34a893bca12b321e3bac

Git commit c51a372076ed92c48a6b1853aded1473c821474b by Kitsune Ral on 24/07/2020 at 09:32..
Room: send read receipts in a background request

Sending them in the foreground causes Quaternion to throw scary
messages when read receipts don't go through while that's actually
not a big deal. Also, network traffic deprioritisation.
https://invent.kde.org/neon/forks/libquotient/-/commit/c51a372076ed92c48a6b1853aded1473c821474b

Git commit 55d8d9c073b732e296c72bc8a747bbd691931209 by Kitsune Ral on 24/07/2020 at 15:50..
SECURITY.md: add 0.6.x breed
https://invent.kde.org/neon/forks/libquotient/-/commit/55d8d9c073b732e296c72bc8a747bbd691931209

Git commit 176b260bfaf8f575560bfe3fb520ee3fa0ad3a7a by Kitsune Ral on 26/07/2020 at 07:26..
RoomAvatarEvent: add constructors from content

So that room avatar events could also be sent, not only received.
https://invent.kde.org/neon/forks/libquotient/-/commit/176b260bfaf8f575560bfe3fb520ee3fa0ad3a7a

Git commit 776c2fd5b3caa60903a3a15db728a00753e02d67 by Kitsune Ral on 29/07/2020 at 06:27..
User: deprecate bridged() and rawName()

Bridge postfixes stopped being a thing long ago; since then, bridged()
has nothing but an empty string, and rawName() coincides with name().
https://invent.kde.org/neon/forks/libquotient/-/commit/776c2fd5b3caa60903a3a15db728a00753e02d67

Git commit 7cba88bad28e1d3aa7a37b345b40325918030505 by Kitsune Ral on 29/07/2020 at 06:34..
User: don't spend another pointer on Connection

Users are always parented to their Connection; there's no need to store
a pointer to the connection on top of the one already stored by QObject.
https://invent.kde.org/neon/forks/libquotient/-/commit/7cba88bad28e1d3aa7a37b345b40325918030505

Git commit 5557b68a01f1b0f2e8e169aacdbe74f89b14cde3 by Kitsune Ral on 29/07/2020 at 06:57..
Fix FTBFS
https://invent.kde.org/neon/forks/libquotient/-/commit/5557b68a01f1b0f2e8e169aacdbe74f89b14cde3

Git commit a4bcc4c95768e919d6b37fa3593104d71ad8ae22 by Kitsune Ral on 29/07/2020 at 14:11..
User: only set object name at initialisation

User::updateName() usually operates on a specific room; setting an
object name from an arbitrary (whichever came last at any point in time)
room member event for a given user does not look like a good idea.
And having it in User::updateAvatar() seems to be a copy-paste fallout.
https://invent.kde.org/neon/forks/libquotient/-/commit/a4bcc4c95768e919d6b37fa3593104d71ad8ae22

Git commit 5010a78505a1a89b60cd5d3102e78717567354dd by Kitsune Ral on 30/07/2020 at 19:32..
User: minor cleanup; doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/5010a78505a1a89b60cd5d3102e78717567354dd

Git commit 6d40d7b8cc40259e451636e3a372de08d075553b by Kitsune Ral on 02/08/2020 at 16:23..
quotest: add changeName test
https://invent.kde.org/neon/forks/libquotient/-/commit/6d40d7b8cc40259e451636e3a372de08d075553b

Git commit 38f3f752d4cac7f155e25af36357a4c6445d885f by Kitsune Ral on 02/08/2020 at 17:25..
User: fix FTBFS and access after move
https://invent.kde.org/neon/forks/libquotient/-/commit/38f3f752d4cac7f155e25af36357a4c6445d885f

Git commit 896639f1e8b03b5d90e89a28c7d58596eb50df6a by Kitsune Ral on 02/08/2020 at 17:47..
Bump the API version
https://invent.kde.org/neon/forks/libquotient/-/commit/896639f1e8b03b5d90e89a28c7d58596eb50df6a

Git commit 08e19449ad4e33b9ec3eb66c56501f1c4a977350 by Kitsune Ral on 02/08/2020 at 17:47..
Event::dumpTo: make protected, and RoomEvent override

The override adds the event's origin timestamp
https://invent.kde.org/neon/forks/libquotient/-/commit/08e19449ad4e33b9ec3eb66c56501f1c4a977350

Git commit 1c89a4be8a9862df32d9c5d0ecb716a460738ec9 by Kitsune Ral on 03/08/2020 at 17:10..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/1c89a4be8a9862df32d9c5d0ecb716a460738ec9

Git commit a3fe6efd9b9ef90491abab44f1c1e2b9516aa5a3 by Kitsune Ral on 03/08/2020 at 17:13..
quotest: use #test instead of #quotient in loadMembers test

#quotient:matrix.org is a primary channel to talk to users and
developers, and events produced by changeName test come really noisy.
#test:matrix.org is a perfect place to test things out, OTOH.
https://invent.kde.org/neon/forks/libquotient/-/commit/a3fe6efd9b9ef90491abab44f1c1e2b9516aa5a3

Git commit 82bcc316d736bd04174876efde38827c34181c33 by Kitsune Ral on 03/08/2020 at 17:15..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/82bcc316d736bd04174876efde38827c34181c33

Git commit b3ca93a3173af1d16edf5316ede217a202827c01 by Kitsune Ral on 03/08/2020 at 17:15..
quotest: use #test instead of #quotient in loadMembers test

#quotient:matrix.org is a primary channel to talk to users and
developers, and events produced by changeName test come really noisy.
#test:matrix.org is a perfect place to test things out, OTOH.
https://invent.kde.org/neon/forks/libquotient/-/commit/b3ca93a3173af1d16edf5316ede217a202827c01

Git commit 122dbaa1a68be31d9ea48860d87b757c3b51783e by Kitsune Ral on 03/08/2020 at 17:41..
quotest: clean up the room state after testing
https://invent.kde.org/neon/forks/libquotient/-/commit/122dbaa1a68be31d9ea48860d87b757c3b51783e

Git commit 83476d31854f403b7017003a560c2d5545360487 by Kitsune Ral on 04/08/2020 at 09:26..
Room: various minor tweaks and fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/83476d31854f403b7017003a560c2d5545360487

Git commit 5849686e96b4a7277f2b2152ff3aa76cc6d0f18e by Kitsune Ral on 04/08/2020 at 09:38..
User: optimise names/avatars storing and updating

The current mechanism relied on a complicated and fragile machinery
around setNameForRoom() and setAvatarForRoom() that maintained the
"most used" entity for a given user along with "other" ones. Given that
per-room avatars are pretty rare in Matrix, it's also been inefficient
as commit c69f100e shows. The new mechanism stores the "default" (as
per user profile) name and avatar and maintains a singleton map of
avatar objects across all users. Per-user profile only (normally) exists
for the local user so there's yet another inefficiency - this will be
fixed in 0.7 by introducing a special class for a user profile.
https://invent.kde.org/neon/forks/libquotient/-/commit/5849686e96b4a7277f2b2152ff3aa76cc6d0f18e

Git commit 623212f538123606b3c27849c84f833d45ce9f02 by Kitsune Ral on 04/08/2020 at 11:26..
Quotest: fix whitespacesmissing ina log line
https://invent.kde.org/neon/forks/libquotient/-/commit/623212f538123606b3c27849c84f833d45ce9f02

Git commit 3648c6a40c585e718bcfc0068cfa431e46f24a52 by Kitsune Ral on 04/08/2020 at 11:28..
Cleanup around [BaseJob::]IncorrectResponse[Error]
https://invent.kde.org/neon/forks/libquotient/-/commit/3648c6a40c585e718bcfc0068cfa431e46f24a52

Git commit eedfd50f9661149f804f169c458b6ef25f96a834 by Kitsune Ral on 04/08/2020 at 11:30..
Connection: stop the sync loop on SyncJob::failure
https://invent.kde.org/neon/forks/libquotient/-/commit/eedfd50f9661149f804f169c458b6ef25f96a834

Git commit d88663890261c2c276cd76576655b137a8758670 by Kitsune Ral on 04/08/2020 at 11:32..
BaseJob: go for a retry on IncorrectResponse

The most frequent occurence of IncorrectResponse so far is a proxy/CDN
failure. This is not a grave error; there's a chance that the retry will
succeed. In the worst case the job will fail after 3 identical errors
(except SyncJob that will try to get through forever - but SyncJob
failures should still be indicated in the client's UI in some
non-intrusive way).
https://invent.kde.org/neon/forks/libquotient/-/commit/d88663890261c2c276cd76576655b137a8758670

Git commit 4a5d51d7bc2b1b23a96c347b6127ec64d7c298b2 by Kitsune Ral on 04/08/2020 at 11:50..
quotest: don't fail on past name changes coming in sync

Sync may bring past events in a few batches, it turns out, and quotest
used to choke on name changes from its own past executions.
https://invent.kde.org/neon/forks/libquotient/-/commit/4a5d51d7bc2b1b23a96c347b6127ec64d7c298b2

Git commit 5319f16ba723e654eaf347f7d5d6957e57bd6d32 by Kitsune Ral on 04/08/2020 at 11:51..
quotest: clean up the room state after testing
https://invent.kde.org/neon/forks/libquotient/-/commit/5319f16ba723e654eaf347f7d5d6957e57bd6d32

Git commit 640cfee652721a1683a0f87d409d0b85bfada211 by Kitsune Ral on 04/08/2020 at 11:51..
Room: various minor tweaks and fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/640cfee652721a1683a0f87d409d0b85bfada211

Git commit 2804099f16a15f6098d26c5d62749d2d1aab9ea2 by Kitsune Ral on 04/08/2020 at 11:51..
Cleanup around [BaseJob::]IncorrectResponse[Error]
https://invent.kde.org/neon/forks/libquotient/-/commit/2804099f16a15f6098d26c5d62749d2d1aab9ea2

Git commit 68a4875c047611e7f58ed001dc9ec4231a11728a by Kitsune Ral on 04/08/2020 at 11:51..
Connection: stop the sync loop on SyncJob::failure
https://invent.kde.org/neon/forks/libquotient/-/commit/68a4875c047611e7f58ed001dc9ec4231a11728a

Git commit 7982e62cf53c830b821cbe2d85fd4fef1e633576 by Kitsune Ral on 04/08/2020 at 11:51..
BaseJob: go for a retry on IncorrectResponse

The most frequent occurence of IncorrectResponse so far is a proxy/CDN
failure. This is not a grave error; there's a chance that the retry will
succeed. In the worst case the job will fail after 3 identical errors
(except SyncJob that will try to get through forever - but SyncJob
failures should still be indicated in the client's UI in some
non-intrusive way).
https://invent.kde.org/neon/forks/libquotient/-/commit/7982e62cf53c830b821cbe2d85fd4fef1e633576

Git commit 3f09b1b3e1edcdb7b21d7f3e4f4764f0bd084f30 by Kitsune Ral on 04/08/2020 at 11:52..
quotest: don't fail on past name changes coming in sync

Sync may bring past events in a few batches, it turns out, and quotest
used to choke on name changes from its own past executions.

Also: fix whitespacesmissing ina log line.
https://invent.kde.org/neon/forks/libquotient/-/commit/3f09b1b3e1edcdb7b21d7f3e4f4764f0bd084f30

Git commit dd6cf808d69eaa52f7642def5f6f94500ee9bc79 by Kitsune Ral on 04/08/2020 at 15:12..
User: optimise names/avatars storing and updating

The current mechanism relied on a complicated and fragile machinery
around setNameForRoom() and setAvatarForRoom() that maintained the
"most used" entity for a given user along with "other" ones. Given that
per-room avatars are pretty rare in Matrix, it's also been inefficient
as kitsune-benchmark-set_ForRoom branch shows. The new mechanism stores
the "default" (as per user profile) name and avatar and maintains
a singleton map of avatar objects across all users. Per-user profile
only (normally) exists for the local user so there's yet another
inefficiency that will be fixed further down the road by introducing
a separate user profile class.
https://invent.kde.org/neon/forks/libquotient/-/commit/dd6cf808d69eaa52f7642def5f6f94500ee9bc79

Git commit 13153e65276ae35cbfd02fdbb120c44f4051a2aa by Kitsune Ral on 04/08/2020 at 15:20..
Connection: self-delete after emitting loggedOut()

The Connection object has quite few uses after logging out - neither
rooms nor users under it no more represent actual situation, and the
object cannot be cleanly reused for a new login (also, the use case
for that is pretty dubious). This doesn't cover the case when
the session has been forcibly logged-out by the server (causing
loginError() to be emitted) - in that case re-authentication
is an expected flow.
https://invent.kde.org/neon/forks/libquotient/-/commit/13153e65276ae35cbfd02fdbb120c44f4051a2aa

Git commit 68b9c6d5388fd21f761a6fdc4960a26d70a36b0b by Kitsune Ral on 04/08/2020 at 16:10..
quotest: fix the log wording
https://invent.kde.org/neon/forks/libquotient/-/commit/68b9c6d5388fd21f761a6fdc4960a26d70a36b0b

Git commit 08b9adcf611e0307daa8297205eb9ed3af66c71e by Kitsune Ral on 11/08/2020 at 20:53..
Drop unneeded #include
https://invent.kde.org/neon/forks/libquotient/-/commit/08b9adcf611e0307daa8297205eb9ed3af66c71e

Git commit 8fa7dae82ac8e49b2a965377a663aedd08a5230b by Kitsune Ral on 11/08/2020 at 21:02..
Build system optimisations

* -DQT_NO_JAVA_STYLE_ITERATORS
* Use precompiled headers on CMake >= 3.16
  (except GCC, blame its cheap PCH implementation)
* -fvisibility-inlines-hidden when using CMake
https://invent.kde.org/neon/forks/libquotient/-/commit/8fa7dae82ac8e49b2a965377a663aedd08a5230b

Git commit 812e460f2159556ad00ab838d58b349fa3542047 by Kitsune Ral on 17/08/2020 at 17:38..
Fetch user profile when needed

5849686e introduced a new way of storing user avatars and names -
unfortunately it didn't fully cover the case of the user's default
(profile) name and avatar. This commit fixes it; in 0.6.x branch,
the fix requires a const_cast<> hack since name() and avatarObject()
invocations are used as triggers to fetch the profile. 0.7 will have
User::fetchProfile() method instead.
https://invent.kde.org/neon/forks/libquotient/-/commit/812e460f2159556ad00ab838d58b349fa3542047

Git commit 744592ee490858c464bba216cf19161aaf30d786 by Kitsune Ral on 22/08/2020 at 19:37..
Cleanup and some extra comments
https://invent.kde.org/neon/forks/libquotient/-/commit/744592ee490858c464bba216cf19161aaf30d786

Git commit 47786ad98b7c70f6719599d89a706fa820bb8b8e by Kitsune Ral on 22/08/2020 at 19:41..
quotest: fix changeName test failures

Member renames upon profile changes don't come right away, it turns out;
so check User::nameChanged instead of Room::memberRenamed.
https://invent.kde.org/neon/forks/libquotient/-/commit/47786ad98b7c70f6719599d89a706fa820bb8b8e

Git commit c75ef102c4b24c89f28a4773d7758adcbf4b6846 by Kitsune Ral on 22/08/2020 at 19:44..
Cleanup and some extra comments
https://invent.kde.org/neon/forks/libquotient/-/commit/c75ef102c4b24c89f28a4773d7758adcbf4b6846

Git commit 90e940c9b398aa26d50095b2ca6905d0815f6412 by Kitsune Ral on 22/08/2020 at 19:45..
quotest: fix changeName test failures

Member renames upon profile changes don't come right away, it turns out;
so check User::nameChanged instead of Room::memberRenamed.
https://invent.kde.org/neon/forks/libquotient/-/commit/90e940c9b398aa26d50095b2ca6905d0815f6412

Git commit 1cf07ee56315af86cadccc977948e9ed1d51da1a by Kitsune Ral on 22/08/2020 at 20:34..
quotest: fix FTBFS after a sloppy cherry-pick
https://invent.kde.org/neon/forks/libquotient/-/commit/1cf07ee56315af86cadccc977948e9ed1d51da1a

Git commit bc105c2fef5334d0654071f72e248a0892a9b20b by Kitsune Ral on 23/08/2020 at 08:28..
More cleanup; drop Qt bearer management on Qt 5.15+

Qt 5.15 deprecates bearer management.
https://invent.kde.org/neon/forks/libquotient/-/commit/bc105c2fef5334d0654071f72e248a0892a9b20b

Git commit d7820ada21fb29b273a68a5ea69477ef5763d5de by Kitsune Ral on 23/08/2020 at 08:29..
More cleanup; drop Qt bearer management on Qt 5.15+

Qt 5.15 deprecates bearer management.
https://invent.kde.org/neon/forks/libquotient/-/commit/d7820ada21fb29b273a68a5ea69477ef5763d5de

Git commit c306470f21b888e0195f473c5030be40ffcdb5fc by Kitsune Ral on 23/08/2020 at 14:14..
csapi/profile.cpp: fix setting empty name/avatar

This is a temporary workaround for
https://github.com/matrix-org/synapse/issues/8029 - note that
regenerating CS API code will lead to overwriting this. The proper fix
should be done in matrix-doc (see
https://github.com/matrix-org/matrix-doc/issues/2717).
https://invent.kde.org/neon/forks/libquotient/-/commit/c306470f21b888e0195f473c5030be40ffcdb5fc

Git commit e9d04a5f527e823232807100966ed85b5d3360db by Kitsune Ral on 23/08/2020 at 14:17..
User: displayname() should fallback to name()

As of 0.6.1, User::name() triggers fetching the user profile (whether
this is right is a separate question but that's the way it works with
the current library API) - displayname() should use it rather than
shortcut to d->defaultName to get results consistent with User::name().
https://invent.kde.org/neon/forks/libquotient/-/commit/e9d04a5f527e823232807100966ed85b5d3360db

Git commit b0f6671d212b8c8d0c9e310cf72f45445c261bf6 by Kitsune Ral on 30/08/2020 at 16:38..
Bump version in CMakeLists.txt to 0.6.1

The new release upcoming.
https://invent.kde.org/neon/forks/libquotient/-/commit/b0f6671d212b8c8d0c9e310cf72f45445c261bf6

Git commit 813c8e3fe0da9ee3b46fff1618d3e4ed05f2c429 by Kitsune Ral on 03/09/2020 at 20:32..
SyndData::parseJson: use fromJson()

...instead of a complicated explicit code converting from JSON
to varianthash to hash.
https://invent.kde.org/neon/forks/libquotient/-/commit/813c8e3fe0da9ee3b46fff1618d3e4ed05f2c429

Git commit 787601f22025fc33bbcff768ebc6e554ec2809a2 by Kitsune Ral on 03/09/2020 at 20:32..
Address clazy warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/787601f22025fc33bbcff768ebc6e554ec2809a2

Git commit 1ce9a71999fce0ad2efe1f7063316947714bab2a by Kitsune Ral on 03/09/2020 at 20:33..
Code formatting fix
https://invent.kde.org/neon/forks/libquotient/-/commit/1ce9a71999fce0ad2efe1f7063316947714bab2a

Git commit 86665ae5a075400e55bf229cfa2e998d376d095f by Kitsune Ral on 04/09/2020 at 05:57..
CONTRIBUTING.md: clarify the matrix-doc repo situation

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/86665ae5a075400e55bf229cfa2e998d376d095f

Git commit cb47079d239b0a4bcd0346d43cccbebfc9e5a285 by Kitsune Ral on 04/09/2020 at 05:59..
csapi/profile.h: require displayname/avatar_url

See https://github.com/matrix-org/matrix-doc/issues/2717
https://invent.kde.org/neon/forks/libquotient/-/commit/cb47079d239b0a4bcd0346d43cccbebfc9e5a285

Git commit 4f6df90d85adaaeb7012d2e56a2691481eed5a9b by Kitsune Ral on 04/09/2020 at 16:39..
More fixing of clazy warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/4f6df90d85adaaeb7012d2e56a2691481eed5a9b

Git commit 3db7a3a9c1b2ae1a34382be2a999eab4327390a6 by Kitsune Ral on 04/09/2020 at 19:41..
Update documentation

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/3db7a3a9c1b2ae1a34382be2a999eab4327390a6

Git commit c641e3f070d6687e10a2cdb9fe3e4f7d12c5704f by Kitsune Ral on 04/09/2020 at 20:45..
csapi/profile.*: require displayname/avatar_url

See https://github.com/matrix-org/matrix-doc/issues/2717
https://invent.kde.org/neon/forks/libquotient/-/commit/c641e3f070d6687e10a2cdb9fe3e4f7d12c5704f

Git commit 65c60c786dd18553a804e01ac60e5a167cb0a400 by Kitsune Ral on 04/09/2020 at 20:45..
SyndData::parseJson: use fromJson()

...instead of a complicated explicit code converting from JSON
to varianthash to hash.
https://invent.kde.org/neon/forks/libquotient/-/commit/65c60c786dd18553a804e01ac60e5a167cb0a400

Git commit 5eff546aea4f15f7c60af40b452661d058bcabf7 by Kitsune Ral on 04/09/2020 at 20:46..
Fixes of clazy warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/5eff546aea4f15f7c60af40b452661d058bcabf7

Git commit 6c91fa90ced57ca3067993add2ac03a31403150e by Kitsune Ral on 04/09/2020 at 20:46..
CONTRIBUTING.md: clarify the matrix-doc repo situation

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/6c91fa90ced57ca3067993add2ac03a31403150e

Git commit 6e4e22cfa4a807ab18fbf1d704f312d0876a4ef5 by Kitsune Ral on 04/09/2020 at 20:46..
Update documentation

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/6e4e22cfa4a807ab18fbf1d704f312d0876a4ef5

Git commit 3c85f049389dec3b0ee6406f0be2cfaf0089f1fe by Kitsune Ral on 11/09/2020 at 05:10..
More stringent serverpart checks in user ids

May lead to new crashes due to nullptr returned from Connection::user()
on more utterly invalid content from the wire that the library still
doesn't properly invalidate. This has long been quite a good case for
exceptions, or another error-handling framework: Connection::user() can
return nullptr either when out of memory or when the id is invalid or
empty, and other places are likely to treat invalid ids in different
ways but probably just hope that memory exhaustion "never happens", or
try to handle it in a quite different way than an empty or invalid id.
Something to think of in 0.7.
https://invent.kde.org/neon/forks/libquotient/-/commit/3c85f049389dec3b0ee6406f0be2cfaf0089f1fe

Git commit 0e87640560343c15b0a218796509d2d94e1a5c77 by Kitsune Ral on 11/09/2020 at 05:10..
util.cpp: assert validity of regular expressions
https://invent.kde.org/neon/forks/libquotient/-/commit/0e87640560343c15b0a218796509d2d94e1a5c77

Git commit 948be2ef2bf04e306fbb0e2c3e0a98f4151337a7 by Kitsune Ral on 11/09/2020 at 05:15..
Uri::toUrl(): fix incorrect matrix.to rep

The first character inside the fragment should be /
https://invent.kde.org/neon/forks/libquotient/-/commit/948be2ef2bf04e306fbb0e2c3e0a98f4151337a7

Git commit bc342225ebf6f6cee966684558422b5142662901 by Kitsune Ral on 23/10/2020 at 16:20..
0.6.2
https://invent.kde.org/neon/forks/libquotient/-/commit/bc342225ebf6f6cee966684558422b5142662901

Git commit 4b50702e014007d19cc89c2118da0af2b01b976b by John on 27/10/2020 at 00:38..
Added filter param to getPreviousContent so that a server side filter
can be applied.
https://invent.kde.org/neon/forks/libquotient/-/commit/4b50702e014007d19cc89c2118da0af2b01b976b

Git commit 12f1eea08f84e1ca9229272d3fae88dc8d787c72 by GitHub (on behalf of Kitsune Ral) on 28/10/2020 at 12:08..
Merge pull request #411 from JohnDr/johnd-mods

Added filter param to getPreviousContent
https://invent.kde.org/neon/forks/libquotient/-/commit/12f1eea08f84e1ca9229272d3fae88dc8d787c72

Git commit e00b3674f9fd8b606ea4d293dfb078ed4a621e12 by Kitsune Ral on 06/11/2020 at 13:07..
More stringent serverpart checks in user ids

May lead to new crashes due to nullptr returned from Connection::user()
on more utterly invalid content from the wire that the library still
doesn't properly invalidate. This has long been quite a good case for
exceptions, or another error-handling framework: Connection::user() can
return nullptr either when out of memory or when the id is invalid or
empty, and other places are likely to treat invalid ids in different
ways but probably just hope that memory exhaustion "never happens", or
try to handle it in a quite different way than an empty or invalid id.
Something to think of in 0.7.

(cherry picked from commit 3c85f049389dec3b0ee6406f0be2cfaf0089f1fe)
https://invent.kde.org/neon/forks/libquotient/-/commit/e00b3674f9fd8b606ea4d293dfb078ed4a621e12

Git commit 2753ebd6c6c320e459d2cab65e8a0328138c1d60 by Kitsune Ral on 06/11/2020 at 13:07..
util.cpp: assert validity of regular expressions

(cherry picked from commit 0e87640560343c15b0a218796509d2d94e1a5c77)
https://invent.kde.org/neon/forks/libquotient/-/commit/2753ebd6c6c320e459d2cab65e8a0328138c1d60

Git commit c5b162574d937408927d0ad89fb0c6ba96d49dd8 by Kitsune Ral on 06/11/2020 at 13:07..
Uri::toUrl(): fix incorrect matrix.to rep

The first character inside the fragment should be /

(cherry picked from commit 948be2ef2bf04e306fbb0e2c3e0a98f4151337a7)
https://invent.kde.org/neon/forks/libquotient/-/commit/c5b162574d937408927d0ad89fb0c6ba96d49dd8

Git commit 5f2bc54070b3b56070e308f3336c2113dcb62122 by Kitsune Ral on 06/11/2020 at 13:08..
.clang-format: add SpaceInEmptyBlock: false (clang 10)
https://invent.kde.org/neon/forks/libquotient/-/commit/5f2bc54070b3b56070e308f3336c2113dcb62122

Git commit 91cb9913f94c105b26eb4cfb99562eb86ba0f16a by Kitsune Ral on 06/11/2020 at 13:09..
Further restrict IPv6 branch of ServerPartRegEx
https://invent.kde.org/neon/forks/libquotient/-/commit/91cb9913f94c105b26eb4cfb99562eb86ba0f16a

Git commit 21fd088d207ee2c2724c5b250875a843b618497d by Kitsune Ral on 06/11/2020 at 13:11..
ChangePasswordJob: logoutDevices doesn't need Omittable

This is generated by GTAD 0.7.1 (to be released), based on the changed
registration.yaml (to be committed and pulled).
https://invent.kde.org/neon/forks/libquotient/-/commit/21fd088d207ee2c2724c5b250875a843b618497d

Git commit 398304961570f78019ddeb545c2cc5f18b6dd706 by Kitsune Ral on 08/11/2020 at 15:33..
User: take profile data from prevContent when main content omits them

Closes #412.
https://invent.kde.org/neon/forks/libquotient/-/commit/398304961570f78019ddeb545c2cc5f18b6dd706

Git commit 7355e2f801eb85e771a6c454c77f9eb62398f38b by Kitsune Ral on 08/11/2020 at 17:53..
converters.h: add QUrl support
https://invent.kde.org/neon/forks/libquotient/-/commit/7355e2f801eb85e771a6c454c77f9eb62398f38b

Git commit f4db6988bf2fd71f74ac851557d82c6f65cc89b1 by Kitsune Ral on 08/11/2020 at 17:57..
More robust member profile data retrieval

MemberEventContent: displayname and avatarUrl are now Omittables;
CS API doesn't guarantee their presence (see also
https://github.com/matrix-org/matrix-doc/issues/1375) but Quotient
used to assume they are always there, causing #412.
RoomMemberEvent: displayname() -> newDisplayName() and
avatarUrl() -> newAvatarUrl(), to emphasise the actual semantics (and
also the changed interface). The old signatures still work but are
deprecated.

Instead of roomMembername() (with weird camel-casing), three new
methods in addition to safeMemberName() are introduced to Room:
- memberName() - produces the "best known" display name for a
  given member; User::name() uses it to avoid the pitfall of #412.
- disambiguatedMemberName() - this is what roomMembername() used to be;
  not recommended for direct use when UI is concerned.
- safeMemberName() - remains as is, with the fix to the documentation
  that used to mislead that the function returns HTML-escaped content
  (it didn't, and doesn't).
- htmlSafeMemberName() - does what safeMemberName() claimed to do.

Respectively, memberNames() is deprecated in favor of safeMemberNames()
and htmlSafeMemberNames(). The corresponding Q_PROPERTY uses
safeMemberNames() now.

Similar to memberName(), Room has got memberAvatarUrl() to spare
User class from diving into Room state to find the member avatar URL.

Closes #412.
https://invent.kde.org/neon/forks/libquotient/-/commit/f4db6988bf2fd71f74ac851557d82c6f65cc89b1

Git commit 538e02f92bd5ccaf4f4870deb8de1a4b93b4ee0a by Kitsune Ral on 08/11/2020 at 17:58..
Room: drop setMemberState()
https://invent.kde.org/neon/forks/libquotient/-/commit/538e02f92bd5ccaf4f4870deb8de1a4b93b4ee0a

Git commit 2162cc8c6b026bbdf077f0b51a89a38e20963cd6 by Kitsune Ral on 09/11/2020 at 19:44..
Room: be more robust in Release mode

...in one particular case, when trying to add a user to a room it's
already a member of.
https://invent.kde.org/neon/forks/libquotient/-/commit/2162cc8c6b026bbdf077f0b51a89a38e20963cd6

Git commit b27ef93df9b5147ab03c8a255918874b9f73c201 by Kitsune Ral on 10/11/2020 at 12:07..
MembershipType: drop warning on empty values

This is a usual situation when a membership type is undefined; and
the current code constructs _a lot_ of stub events by loading them from
empty JSON. So just silence those warnings for now.
https://invent.kde.org/neon/forks/libquotient/-/commit/b27ef93df9b5147ab03c8a255918874b9f73c201

Git commit 39b80fa8eb9b70d287aa453663b845319d8b6196 by Kitsune Ral on 11/11/2020 at 18:17..
.clang-format: update for ClangFormat 10+

Also: add space before colon in range-based for from now on.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/39b80fa8eb9b70d287aa453663b845319d8b6196

Git commit 4cc8838c3bbe712493a4f6ddbecd0f7093e907bb by Kitsune Ral on 12/11/2020 at 17:51..
More JSON key constants
https://invent.kde.org/neon/forks/libquotient/-/commit/4cc8838c3bbe712493a4f6ddbecd0f7093e907bb

Git commit 92a4267efc76b01d9161c204596c74e0d128cd28 by Kitsune Ral on 12/11/2020 at 17:52..
Room: add power level events to redaction rules
https://invent.kde.org/neon/forks/libquotient/-/commit/92a4267efc76b01d9161c204596c74e0d128cd28

Git commit da4bc5afcfeb9e7fa1253720839291194578bd4a by Kitsune Ral on 14/11/2020 at 18:58..
ConnectionData: fix defunct jobs stalling the queue
https://invent.kde.org/neon/forks/libquotient/-/commit/da4bc5afcfeb9e7fa1253720839291194578bd4a

Git commit 8f4c7f67930be402836ca7a6266ba4277266a12d by Kitsune Ral on 14/11/2020 at 19:01..
Drop EventFactory<RoomPowerLevelsEvent>

RoomPowerLevelsEvent is not used in csapi/ classes so the factory is of
no use either.
https://invent.kde.org/neon/forks/libquotient/-/commit/8f4c7f67930be402836ca7a6266ba4277266a12d

Git commit 693241d572e3e7e6b23435104a1b98c9afbec5c9 by Kitsune Ral on 14/11/2020 at 21:30..
ConnectionData: fix defunct jobs stalling the queue
https://invent.kde.org/neon/forks/libquotient/-/commit/693241d572e3e7e6b23435104a1b98c9afbec5c9

Git commit c919c021be42228ff615e581a2f80e649c992807 by Kitsune Ral on 14/11/2020 at 21:34..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/c919c021be42228ff615e581a2f80e649c992807

Git commit 5b1bfc102fccd4e57893b34bf2b0a14ba6a9f577 by Kitsune Ral on 14/11/2020 at 21:35..
Make StateEventBase Q_GADGET too

To align with the two other base event classes (Event and RoomEvent).
https://invent.kde.org/neon/forks/libquotient/-/commit/5b1bfc102fccd4e57893b34bf2b0a14ba6a9f577

Git commit e81117fbd97f9ea077d377c89fdabd19726b3fbf by Kitsune Ral on 15/11/2020 at 12:06..
Room::P::getCurrentState<>(): bypass the factory chain

This is to optimize a rather hot path creating stub events (for
member events in bigger rooms, in particular) when the event type is
known. Version 0.7 will have a completely different code based on
event content rather than event that will obviate stubs creation but
0.6.x can benefit from it.
https://invent.kde.org/neon/forks/libquotient/-/commit/e81117fbd97f9ea077d377c89fdabd19726b3fbf

Git commit 6e8be18d1587af3dc82526e32fb12d3a895908f2 by Kitsune Ral on 15/11/2020 at 13:27..
MembershipType: drop warning on empty values

This is a usual situation when a membership type is undefined; and
the current code constructs _a lot_ of stub events by loading them from
empty JSON. So just silence those warnings for now.
https://invent.kde.org/neon/forks/libquotient/-/commit/6e8be18d1587af3dc82526e32fb12d3a895908f2

Git commit 2340f3dab4f03743582099bf2d81bf4fc9976ed4 by Kitsune Ral on 15/11/2020 at 13:28..
Room: add power level events to redaction rules
https://invent.kde.org/neon/forks/libquotient/-/commit/2340f3dab4f03743582099bf2d81bf4fc9976ed4

Git commit 52cab4b11bdd48cd87e04c01b12c698ec4145e6d by Kitsune Ral on 15/11/2020 at 20:51..
Cleanup across event classes

In particular: removed unnecessary #includes, deprecated and no more
used constructs, replaced stored members with dynamic generation
from JSON (TypingEvent and, especially promising for performance,
ReceiptEvent)
https://invent.kde.org/neon/forks/libquotient/-/commit/52cab4b11bdd48cd87e04c01b12c698ec4145e6d

Git commit a7b688c341befa0001889f5865c27ce83797bcdd by Kitsune Ral on 19/11/2020 at 13:56..
Fix Q_ASSERT failure on sending messages

Changes in e81117fb exposed a flaw in EncryptionEvent causing assertion
failure when this event is default-initialised (i.e. no encryption).
https://invent.kde.org/neon/forks/libquotient/-/commit/a7b688c341befa0001889f5865c27ce83797bcdd

Git commit dda813899fdb4a520dc83e10c17c1923712a8f7d by Kitsune Ral on 19/11/2020 at 13:59..
Fix Q_ASSERT failure on sending messages

Changes in e81117fb exposed a flaw in EncryptionEvent causing assertion
failure when this event is default-initialised (i.e. no encryption).
https://invent.kde.org/neon/forks/libquotient/-/commit/dda813899fdb4a520dc83e10c17c1923712a8f7d

Git commit f72d7a2164ef592693525a591f11be1503972208 by Kitsune Ral on 24/11/2020 at 15:45..
.clang-format: update for ClangFormat 10+

Also: add space before colon in range-based for from now on.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/f72d7a2164ef592693525a591f11be1503972208

Git commit 36d3bf193617f30355bb02c9b038ec9dd6ca123d by Kitsune Ral on 24/11/2020 at 15:50..
CMakeLists.txt: enable generating csapi/search.*

Now that the logic behind producing the C++ structures changed (they
are filled in on the fly, rather than created upon job completion
and then copied/moved by the accessor), GTAD makes buildable code for
search.yaml.
https://invent.kde.org/neon/forks/libquotient/-/commit/36d3bf193617f30355bb02c9b038ec9dd6ca123d

Git commit 21554bccc39ab2f63869c244ed880686805887cb by Kitsune Ral on 24/11/2020 at 15:50..
csapi/search.*
https://invent.kde.org/neon/forks/libquotient/-/commit/21554bccc39ab2f63869c244ed880686805887cb

Git commit 6e35066523b7a4e8a6679e8a878ff375eacb78e3 by Kitsune Ral on 26/11/2020 at 09:37..
quotest: Refreshed a comment

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/6e35066523b7a4e8a6679e8a878ff375eacb78e3

Git commit baabe61cc2e5a2afc00f02ae55465c21b2915bd8 by Carl Schwan on 26/11/2020 at 20:54..
Add feature summary to cmake file
https://invent.kde.org/neon/forks/libquotient/-/commit/baabe61cc2e5a2afc00f02ae55465c21b2915bd8

Git commit 17d6e00597fdc1c8f25808735cbc728c4a6b3506 by David Faure on 26/11/2020 at 21:32..
Enable QT_NO_URL_CAST_FROM_STRING and QT_STRICT_ITERATORS.

* QT_NO_URL_CAST_FROM_STRING makes it clearer where QUrls are created
from QStrings (which incurs a parsing cost).

* QT_STRICT_ITERATORS helps detecting where begin()/end() is used
instead of cbegin()/cend(). KDE developers have verified that
the generated assembly code is identical.
https://invent.kde.org/neon/forks/libquotient/-/commit/17d6e00597fdc1c8f25808735cbc728c4a6b3506

Git commit 7b2eb5b3a14dd198564658c143567b3eb7a879f6 by Carl Schwan on 27/11/2020 at 09:58..
Make it compile with QT_NO_KEYWORDS
https://invent.kde.org/neon/forks/libquotient/-/commit/7b2eb5b3a14dd198564658c143567b3eb7a879f6

Git commit d857b67f4168f97af5b4e4c5b31159fbd7854ea5 by GitHub (on behalf of Kitsune Ral) on 27/11/2020 at 14:19..
Merge pull request #418 from ognarb/work/QT_NO_KEYWORDS

Make it compile with QT_NO_KEYWORDS
https://invent.kde.org/neon/forks/libquotient/-/commit/d857b67f4168f97af5b4e4c5b31159fbd7854ea5

Git commit 49be26bf04f1b17c586c204e94fe6cb3853bdd50 by GitHub (on behalf of Kitsune Ral) on 02/12/2020 at 10:16..
Merge pull request #416 from ognarb/work/cmakefeaturesummary

Add feature summary to cmake file
https://invent.kde.org/neon/forks/libquotient/-/commit/49be26bf04f1b17c586c204e94fe6cb3853bdd50

Git commit e7c9ca9017eb68b1c17e352f3ee60df0e939aa5e by Kitsune Ral on 03/12/2020 at 16:43..
Room: fix breakage in internal member map

The change in 39830496 led to prev_content becoming a fallback not only
for displaying user names but also for storing them in the internal
member map, which is really not what was intended.
https://invent.kde.org/neon/forks/libquotient/-/commit/e7c9ca9017eb68b1c17e352f3ee60df0e939aa5e

Git commit 57c46baaea2384c1caed46033f6bdb3c5c3a75da by Kitsune Ral on 03/12/2020 at 19:19..
CMakeLists.txt: reworked configuration logging

Notably, screen-wide ==== fences are gone, and the status messages are
now located next to where the relevant piece of configuration occurs,
instead of having a configuration summary block. Also, features related
to code generation have been added for feature_summary().
https://invent.kde.org/neon/forks/libquotient/-/commit/57c46baaea2384c1caed46033f6bdb3c5c3a75da

Git commit ff020f3b7b95bbdcff7c98c54b84a6d8de38c149 by Kitsune Ral on 03/12/2020 at 20:54..
Room: fix breakage in internal member map

The change in 39830496 led to prev_content becoming a fallback not only
for displaying user names but also for storing them in the internal
member map, which is really not what was intended.

A lot of debug logging has been added - this will be moved to a new
logging category before merging.
https://invent.kde.org/neon/forks/libquotient/-/commit/ff020f3b7b95bbdcff7c98c54b84a6d8de38c149

Git commit f160c92d06446bd90b8ac4e1d238ecabb0c97651 by Kitsune Ral on 03/12/2020 at 21:13..
CMakeLists.txt: fix configuration failures
https://invent.kde.org/neon/forks/libquotient/-/commit/f160c92d06446bd90b8ac4e1d238ecabb0c97651

Git commit 6ac7d7b77242b36d7fc52ea84a061464c71579c7 by Tobias Fella on 10/12/2020 at 00:53..
Fix DELETE jobs with json data

DeleteDeviceJob requires authentication, but the JSON data is not added for DELETE requests.
Since QNetworkAccessManager::deleteResource does not support body data, we need to send a custom request.
https://invent.kde.org/neon/forks/libquotient/-/commit/6ac7d7b77242b36d7fc52ea84a061464c71579c7

Git commit 2e7ab6c1aca2921c60ed0d61542abf8949493a02 by GitHub (on behalf of Kitsune Ral) on 10/12/2020 at 08:39..
Merge pull request #420 from TobiasFella/work/deletefix

Fix DELETE jobs with json data
https://invent.kde.org/neon/forks/libquotient/-/commit/2e7ab6c1aca2921c60ed0d61542abf8949493a02

Git commit ff2cb9f8a3a3ba01c9881ee1b196c9397c91ee6d by Kitsune Ral (on behalf of Tobias Fella) on 10/12/2020 at 08:44..
Fix DELETE jobs with json data

DeleteDeviceJob requires authentication, but the JSON data is not added for DELETE requests.
Since QNetworkAccessManager::deleteResource does not support body data, we need to send a custom request.
https://invent.kde.org/neon/forks/libquotient/-/commit/ff2cb9f8a3a3ba01c9881ee1b196c9397c91ee6d

Git commit 97b0beca9becb0513111801ba3380f29e44383b2 by Kitsune Ral on 10/12/2020 at 16:34..
Uri: fix a few cases of insufficient escaping
https://invent.kde.org/neon/forks/libquotient/-/commit/97b0beca9becb0513111801ba3380f29e44383b2

Git commit 903e309c51cdbe9b29131a1ce1a24facfd51de9e by Kitsune Ral on 10/12/2020 at 16:34..
Uri: fix a few cases of insufficient escaping
https://invent.kde.org/neon/forks/libquotient/-/commit/903e309c51cdbe9b29131a1ce1a24facfd51de9e

Git commit 42b78ce6c487d6c39415f160de1bf0f9aaa12185 by GitHub (on behalf of Kitsune Ral) on 22/12/2020 at 20:01..
Merge pull request #423 from quotient-im/kitsune-fix-namesakes-failure

Room: fix breakage in internal member map
https://invent.kde.org/neon/forks/libquotient/-/commit/42b78ce6c487d6c39415f160de1bf0f9aaa12185

Git commit 104356d945671762af23e346f7898a3208770d97 by Kitsune Ral on 23/12/2020 at 16:18..
Connection::resolveServer(): fix error handling

Part of the fix for #421.
https://invent.kde.org/neon/forks/libquotient/-/commit/104356d945671762af23e346f7898a3208770d97

Git commit 9ef83e044ed4f8409156b19d529dfc7e45f565c1 by Kitsune Ral on 23/12/2020 at 16:21..
BaseJob: tolerate unexpected error payloads

Proxy servers may return arbitrary HTML, for one example; so don't
expect to find a valid JSON object in whatever non-empty payload
next to a non-2xx HTTP code. Fixes #421.
https://invent.kde.org/neon/forks/libquotient/-/commit/9ef83e044ed4f8409156b19d529dfc7e45f565c1

Git commit 1a832ae9b6a0d679b551fd644136e4bc17e7db29 by Kitsune Ral on 23/12/2020 at 16:21..
BaseJob: add [[fallthrough]] as clang-tidy says
https://invent.kde.org/neon/forks/libquotient/-/commit/1a832ae9b6a0d679b551fd644136e4bc17e7db29

Git commit 3ef036cd5936df4c0324ef54aa2bc11d745bd4c7 by Kitsune Ral on 23/12/2020 at 16:27..
Connection::resolveServer(): fix error handling

Part of the fix for #421.

(cherry picked from commit 104356d945671762af23e346f7898a3208770d97)
https://invent.kde.org/neon/forks/libquotient/-/commit/3ef036cd5936df4c0324ef54aa2bc11d745bd4c7

Git commit 374377c37e8b82f1503fbb259e529f6551716df3 by Kitsune Ral on 23/12/2020 at 16:27..
BaseJob: tolerate unexpected error payloads

Proxy servers may return arbitrary HTML, for one example; so don't
expect to find a valid JSON object in whatever non-empty payload
next to a non-2xx HTTP code. Fixes #421.

(cherry picked from commit 9ef83e044ed4f8409156b19d529dfc7e45f565c1)
https://invent.kde.org/neon/forks/libquotient/-/commit/374377c37e8b82f1503fbb259e529f6551716df3

Git commit 84b21debc68b16b7dad7f6ed2e679e1c224956ea by Kitsune Ral on 23/12/2020 at 16:27..
BaseJob: add [[fallthrough]] as clang-tidy says

(cherry picked from commit 1a832ae9b6a0d679b551fd644136e4bc17e7db29)
https://invent.kde.org/neon/forks/libquotient/-/commit/84b21debc68b16b7dad7f6ed2e679e1c224956ea

Git commit 3bfe40e40183821557845456349e1079af7b4e25 by Kitsune Ral on 23/12/2020 at 16:29..
BaseJob::Status: add comparison with int

Since Status single-parameter constructor is (intentionally)
not explicit, comparisons may not do what's expected in cases like
the one fixed by 3ef036cd. This makes comparisons "do the right thing".
https://invent.kde.org/neon/forks/libquotient/-/commit/3bfe40e40183821557845456349e1079af7b4e25

Git commit 0a2acd750a4155969092be674ed3dd9a71b2354f by Kitsune Ral on 24/12/2020 at 17:20..
Fix clang-tidy/clazy warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/0a2acd750a4155969092be674ed3dd9a71b2354f

Git commit 66972c81d018231f08f3767feda4b41ae5e1b8e0 by Kitsune Ral on 24/12/2020 at 17:21..
Room: don't accept . at 0-th position in the tag

Also: use a structured binding for better code readability.
https://invent.kde.org/neon/forks/libquotient/-/commit/66972c81d018231f08f3767feda4b41ae5e1b8e0

Git commit 424d5c33542c4c38baefb773163e9ebed1accfb6 by Kitsune Ral on 24/12/2020 at 17:23..
quotest: wait until the final report is actually sent

Previously the code was waiting until an arbitrary event is sent.
https://invent.kde.org/neon/forks/libquotient/-/commit/424d5c33542c4c38baefb773163e9ebed1accfb6

Git commit de2fa43fc7cc89b4a45cbd885866b5ca747751ef by Kitsune Ral on 24/12/2020 at 18:27..
Refresh CONTRIBUTING.md

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/de2fa43fc7cc89b4a45cbd885866b5ca747751ef

Git commit 58e260ef9b081344db8b375d20dbbf015350a3c8 by Kitsune Ral on 24/12/2020 at 18:27..
Bump the version to 0.6.3
https://invent.kde.org/neon/forks/libquotient/-/commit/58e260ef9b081344db8b375d20dbbf015350a3c8

Git commit e617f0151df9a5edbefeb2c36d306a2989a278af by Kitsune Ral on 24/12/2020 at 21:29..
Fix clang-tidy/clazy warnings

(cherry picked from commit 0a2acd750a4155969092be674ed3dd9a71b2354f)
https://invent.kde.org/neon/forks/libquotient/-/commit/e617f0151df9a5edbefeb2c36d306a2989a278af

Git commit ecaf0093e5857074b51607924035555a4442d4d1 by Kitsune Ral on 24/12/2020 at 21:29..
Room: don't accept . at 0-th position in the tag

Also: use a structured binding for better code readability.
(cherry picked from commit 66972c81d018231f08f3767feda4b41ae5e1b8e0)
https://invent.kde.org/neon/forks/libquotient/-/commit/ecaf0093e5857074b51607924035555a4442d4d1

Git commit 34660bed9e90374a1ace0913331ca2965513d19b by Kitsune Ral on 24/12/2020 at 21:32..
quotest: wait until the final report is actually sent

Previously the code was waiting until an arbitrary event is sent.

(cherry picked from commit 424d5c33542c4c38baefb773163e9ebed1accfb6)
https://invent.kde.org/neon/forks/libquotient/-/commit/34660bed9e90374a1ace0913331ca2965513d19b

Git commit d5670a9dea90e111d805ae144c7295cd58b29d22 by Kitsune Ral on 24/12/2020 at 21:32..
Refresh CONTRIBUTING.md

[skip ci]

(cherry picked from commit de2fa43fc7cc89b4a45cbd885866b5ca747751ef)
https://invent.kde.org/neon/forks/libquotient/-/commit/d5670a9dea90e111d805ae144c7295cd58b29d22

Git commit cd9c9296bb1ac7af7ebbbf66931e731dbf581bc8 by Carl Schwan on 26/12/2020 at 13:54..
Port existing copyright statement to reuse using licensedigger
https://invent.kde.org/neon/forks/libquotient/-/commit/cd9c9296bb1ac7af7ebbbf66931e731dbf581bc8

Git commit e731d9bbc36a628bd5a24fcf17efa2b47e4c2c1f by Carl Schwan on 26/12/2020 at 16:31..
Add a few more files
https://invent.kde.org/neon/forks/libquotient/-/commit/e731d9bbc36a628bd5a24fcf17efa2b47e4c2c1f

Git commit 78cfde52d8f3ff04a07031a87a0c7218a3b0079f by Carl Schwan on 27/12/2020 at 17:08..
more :)
https://invent.kde.org/neon/forks/libquotient/-/commit/78cfde52d8f3ff04a07031a87a0c7218a3b0079f

Git commit d6c2622b0cdc33ad272542ab611c15de07202520 by Kitsune Ral on 27/12/2020 at 18:00..
More comments/documentation

Notably, recommend using loginFlowsChanged() rather than
homeserverChanged() to detect when a Connection object is ready for
a login sequence. Related: #427.

(cherry picked from commit 8981c5451ac378f16d5b57d7460d053e2cbc666e)
https://invent.kde.org/neon/forks/libquotient/-/commit/d6c2622b0cdc33ad272542ab611c15de07202520

Git commit 9d854e778d8d6ef8e03e1ea74fe958675b24fd45 by Nicolas Fella on 27/12/2020 at 20:24..
Fix use-after-free of QNetworkReply in BaseJob

Usually QNetworkAccessManager expects the user to delete the replies, but when the QNetworkAccessManager itself is deleted it deletes all pending replies (https://code.woboq.org/qt5/qtbase/src/network/access/qnetworkaccessmanager.cpp.html#529).

This can lead to use-after-free crashes when d->reply is accessed. By putting the reply into a QPointer the exiting if(d->reply) checks can work properly.
https://invent.kde.org/neon/forks/libquotient/-/commit/9d854e778d8d6ef8e03e1ea74fe958675b24fd45

Git commit 95343a29f141f7d2b231a41615bc0e57acb890fe by GitHub (on behalf of Kitsune Ral) on 27/12/2020 at 21:24..
Merge pull request #430 from nicolasfella/replycleanup

Fix use-after-free of QNetworkReply in BaseJob
https://invent.kde.org/neon/forks/libquotient/-/commit/95343a29f141f7d2b231a41615bc0e57acb890fe

Git commit 2b52afbbf4316ec37eb6d1166990fa7ec5a61320 by Kitsune Ral on 27/12/2020 at 21:25..
function_traits<>: define as empty by default

An incomplete type was preventing some SFINAE cases for literal types.
https://invent.kde.org/neon/forks/libquotient/-/commit/2b52afbbf4316ec37eb6d1166990fa7ec5a61320

Git commit f286ef4c5b3c71510d6ef15e8cc12cada84f3682 by Kitsune Ral (on behalf of Nicolas Fella) on 27/12/2020 at 21:25..
Fix use-after-free of QNetworkReply in BaseJob

Usually QNetworkAccessManager expects the user to delete the replies, but when the QNetworkAccessManager itself is deleted it deletes all pending replies (https://code.woboq.org/qt5/qtbase/src/network/access/qnetworkaccessmanager.cpp.html#529).

This can lead to use-after-free crashes when d->reply is accessed. By putting the reply into a QPointer the exiting if(d->reply) checks can work properly.

(cherry picked from commit 9d854e778d8d6ef8e03e1ea74fe958675b24fd45)
https://invent.kde.org/neon/forks/libquotient/-/commit/f286ef4c5b3c71510d6ef15e8cc12cada84f3682

Git commit 639f1d482633a7adb72164c56e3b5ea429db96a5 by Kitsune Ral on 28/12/2020 at 10:19..
event.h: Minor tweaks around visit<>
https://invent.kde.org/neon/forks/libquotient/-/commit/639f1d482633a7adb72164c56e3b5ea429db96a5

Git commit 7c29f33121f58a52f43fa83183eaca47fa374980 by Kitsune Ral on 28/12/2020 at 10:19..
More comments/documentation

Notably, recommend using loginFlowsChanged() rather than
homeserverChanged() to detect when a Connection object is ready for
a login sequence. Related: #427.
https://invent.kde.org/neon/forks/libquotient/-/commit/7c29f33121f58a52f43fa83183eaca47fa374980

Git commit 6c9ff40dbd91cc4966f0ecf9ed817efc2495a2fb by Kitsune Ral on 28/12/2020 at 10:19..
Connection: refactor the resolve/login code

1. resolveServer() now emits homeserverChanged() even when there's no
   .well-known file found.
2. checkAndConnect() entirely removed from the header file.
3. Sunny-day scenario for assumeIdentity() is now asynchronous,
   triggering a call to /whoami to double-check the user.
4. LoginFlow aliases is moved out from LoginFlows to Quotient namespace.
https://invent.kde.org/neon/forks/libquotient/-/commit/6c9ff40dbd91cc4966f0ecf9ed817efc2495a2fb

Git commit 56c1db077b5da653c230432abc6c746318a77bed by Kitsune Ral on 28/12/2020 at 10:19..
Cleanup and clang-tidy/clazy fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/56c1db077b5da653c230432abc6c746318a77bed

Git commit 5d15e3b23649a54abdb3812c10f4a7d2ce07d7dd by Kitsune Ral on 28/12/2020 at 10:19..
BaseJob::initiate: add Q_LIKELY

...to show the sunny-day case.
https://invent.kde.org/neon/forks/libquotient/-/commit/5d15e3b23649a54abdb3812c10f4a7d2ce07d7dd

Git commit 12c37cf3ce2aa397050fff6ce846d557524a3fe7 by Kitsune Ral on 28/12/2020 at 10:20..
BaseJob::initiate: add Q_LIKELY

...to show the sunny-day case.

(cherry picked from commit 5d15e3b23649a54abdb3812c10f4a7d2ce07d7dd)
https://invent.kde.org/neon/forks/libquotient/-/commit/12c37cf3ce2aa397050fff6ce846d557524a3fe7

Git commit 6ee20f1507b12fcb9556717eeb2784c7530ec588 by Kitsune Ral on 28/12/2020 at 10:24..
Cleanup and clang-tidy/clazy fixes

(cherry picked from commit 56c1db077b5da653c230432abc6c746318a77bed)
https://invent.kde.org/neon/forks/libquotient/-/commit/6ee20f1507b12fcb9556717eeb2784c7530ec588

Git commit f10b3fadc2483986e372418725d4e50dbf85075c by Kitsune Ral on 28/12/2020 at 12:07..
Connection: refactor the resolve/login code

1. resolveServer() now emits homeserverChanged() even when there's no
   .well-known file found.
2. checkAndConnect() entirely removed from the header file.
3. Sunny-day scenario for assumeIdentity() is now asynchronous,
   triggering a call to /whoami to double-check the user.

(based on commit 6c9ff40dbd91cc4966f0ecf9ed817efc2495a2fb to master)
https://invent.kde.org/neon/forks/libquotient/-/commit/f10b3fadc2483986e372418725d4e50dbf85075c

Git commit 4bdeacdd332865abf55b94af29f100842ab5d04f by Kitsune Ral on 28/12/2020 at 13:03..
Use generated SetReadMarkerJob instead of PostReadMarkersJob
https://invent.kde.org/neon/forks/libquotient/-/commit/4bdeacdd332865abf55b94af29f100842ab5d04f

Git commit 1b2b2ee36695d378a54753b7059acb4c063d7061 by Kitsune Ral on 28/12/2020 at 14:33..
Add a new logging category for room member changes

MEMBERS, aka quotient.events.members.* - this was promised in ff020f3b
but not actually done "before merging".
https://invent.kde.org/neon/forks/libquotient/-/commit/1b2b2ee36695d378a54753b7059acb4c063d7061

Git commit dcef98f962c29b004d5d9fff1cff0102c6c9768f by Kitsune Ral on 28/12/2020 at 14:53..
Room: really fix namesakes assertion failure

This removes now-deprecated RoomMemberEvent API usages and also does
a few more things differently from the stable branch. Rather than rely
on prev_content (the way pre-0.7 goes), processStateEvent() now
includes a pre-check for no-op state events (the fix in ff020f3b
turned out to be insufficient for such events and they still caused
the same assertion failure at some point down the line). Now the state
event is only added to currentState and, where relevant, to baseState,
if it actually changes the room state; otherwise, it is ignored for
the purpose of state tracking (even when still added to the timeline,
if it came in the timeline block).
One side-effect of this change is that processStateEvent() now returns
OtherChange instead of NoChange for unknown state events.
At the same time removeMemberFromMap() now has an additional safety net,
making sure that a given user is actually deleted from the map even
if their name is mismatched. This comes at a cost of looking through
the whole hashmap but normally should not occur with the current code
that shaves away no-op state events. We'll only see when some client
starts to actively use 0.7 (quotest doesn't trigger those).
https://invent.kde.org/neon/forks/libquotient/-/commit/dcef98f962c29b004d5d9fff1cff0102c6c9768f

Git commit a49c3f2eb4e1aa5c6687c7637c1a06fcd69b0a23 by Kitsune Ral on 28/12/2020 at 15:02..
Room: inline a once-used variable
https://invent.kde.org/neon/forks/libquotient/-/commit/a49c3f2eb4e1aa5c6687c7637c1a06fcd69b0a23

Git commit e5bf7c2fa64716de0b75a67acc5f8620e8dc1704 by Carl Schwan on 28/12/2020 at 17:22..
Add support for sticker events
https://invent.kde.org/neon/forks/libquotient/-/commit/e5bf7c2fa64716de0b75a67acc5f8620e8dc1704

Git commit 7366ea54135c46546253b72e2813d8d24f743481 by Carl Schwan on 28/12/2020 at 17:22..
Add cmake change
https://invent.kde.org/neon/forks/libquotient/-/commit/7366ea54135c46546253b72e2813d8d24f743481

Git commit 2174e1980fd2cf5407ba8cd7cabb85d74d242ed2 by Kitsune Ral on 28/12/2020 at 17:57..
event.h: Fix breakage of AppVeyor CI

The breakage was caused by 639f1d48.
https://invent.kde.org/neon/forks/libquotient/-/commit/2174e1980fd2cf5407ba8cd7cabb85d74d242ed2

Git commit 0f974c0f96f29035ee766e8913504fed4a4903a5 by Kitsune Ral on 28/12/2020 at 18:18..
Connection: fix FTBFS with Quotient_E2EE_ENABLED
https://invent.kde.org/neon/forks/libquotient/-/commit/0f974c0f96f29035ee766e8913504fed4a4903a5

Git commit 0bafa198fb08c8545a026a8806b47cf95bdc8272 by Kitsune Ral on 28/12/2020 at 18:42..
Merge branch 'kitsune-fix-msvc-build' into master
https://invent.kde.org/neon/forks/libquotient/-/commit/0bafa198fb08c8545a026a8806b47cf95bdc8272

Git commit b729000839ff0a6557d6c7adbce921fa31fcdbfa by GitHub (on behalf of Kitsune Ral) on 28/12/2020 at 20:05..
Merge pull request #425 from ognarb/sticker

Add support for stickers
https://invent.kde.org/neon/forks/libquotient/-/commit/b729000839ff0a6557d6c7adbce921fa31fcdbfa

Git commit 62feba453b9642d24084f73636ea8d6f1e3278bc by Kitsune Ral on 29/12/2020 at 09:31..
Connection: fix FTBFS with Quotient_E2EE_ENABLED

(cherry picked from commit 0f974c0f96f29035ee766e8913504fed4a4903a5)
https://invent.kde.org/neon/forks/libquotient/-/commit/62feba453b9642d24084f73636ea8d6f1e3278bc

Git commit 68eabcc5e33f4f29f3fb2e57e3f1adbaf719661d by GitHub (on behalf of Kitsune Ral) on 29/12/2020 at 19:47..
First shot at GHA
https://invent.kde.org/neon/forks/libquotient/-/commit/68eabcc5e33f4f29f3fb2e57e3f1adbaf719661d

Git commit 2fed7f8aa2f86d80f406d01aafa0826c834d7ad3 by GitHub (on behalf of Kitsune Ral) on 01/01/2021 at 17:51..
.clang-format: ensure older ClangFormat compatibility

IndentGotoLabels is a ClangFormat 10 thing
https://invent.kde.org/neon/forks/libquotient/-/commit/2fed7f8aa2f86d80f406d01aafa0826c834d7ad3

Git commit 23cf8bec21c8ea31be90822143db82a60b46e7bb by GitHub (on behalf of Kitsune Ral) on 01/01/2021 at 19:17..
.clang-format: more old ClangFormat compat
https://invent.kde.org/neon/forks/libquotient/-/commit/23cf8bec21c8ea31be90822143db82a60b46e7bb

Git commit 1156f7bda0bb3728fb275cb1a12580bfb84156b1 by Kitsune Ral on 01/01/2021 at 19:18..
Fix using a C compiler for CXX; don't fail-fast
https://invent.kde.org/neon/forks/libquotient/-/commit/1156f7bda0bb3728fb275cb1a12580bfb84156b1

Git commit 0c375fcd31448ef470e9a840fb1130775ef05e88 by Kitsune Ral on 01/01/2021 at 19:18..
Use the default path to install Qt
https://invent.kde.org/neon/forks/libquotient/-/commit/0c375fcd31448ef470e9a840fb1130775ef05e88

Git commit c315330cbee1c0fbd10352e0a38b51874f649cd0 by Kitsune Ral on 01/01/2021 at 19:18..
Add E2EE config; install libQuotient, build quotest
https://invent.kde.org/neon/forks/libquotient/-/commit/c315330cbee1c0fbd10352e0a38b51874f649cd0

Git commit 99beeb1f4a51a7fad2d1620aa5c7851a1938554c by Kitsune Ral on 01/01/2021 at 19:18..
A few renames; trigger by PRs too; start quotest
https://invent.kde.org/neon/forks/libquotient/-/commit/99beeb1f4a51a7fad2d1620aa5c7851a1938554c

Git commit d46f9498c1deef0a229de693b1b5954fa9fd5bf2 by Kitsune Ral on 01/01/2021 at 19:18..
Better quotest origin line; setup CC/CXX globally

There's no "job number" anymore but a textual description of the job
is even better.
https://invent.kde.org/neon/forks/libquotient/-/commit/d46f9498c1deef0a229de693b1b5954fa9fd5bf2

Git commit 6a97ce7e39ff23a398dd5a53d76cfc9ea3d1efcb by Kitsune Ral on 01/01/2021 at 19:18..
Add update-api support

Along adding update-api support DESTDIR and CMAKE_ARGS were moved to
the environment setup step in order to use `${{ runner.workspace }}`
for installation and not pollute `${{ github.workspace }}` where
libQuotient sources reside.
https://invent.kde.org/neon/forks/libquotient/-/commit/6a97ce7e39ff23a398dd5a53d76cfc9ea3d1efcb

Git commit 788db43da4c8cd609189b7c2c5b4358cb303492c by Kitsune Ral on 01/01/2021 at 19:18..
GTAD requires GCC 8 at least
https://invent.kde.org/neon/forks/libquotient/-/commit/788db43da4c8cd609189b7c2c5b4358cb303492c

Git commit 10ba44adf1f782a62ff9d30b929554057c35b00f by Kitsune Ral on 02/01/2021 at 08:14..
Add Valgrind on Linux
https://invent.kde.org/neon/forks/libquotient/-/commit/10ba44adf1f782a62ff9d30b929554057c35b00f

Git commit 4831b613331095112fb31ea50394b53d5721084b by GitHub (on behalf of Kitsune Ral) on 02/01/2021 at 09:20..
Merge pull request #434 from quotient-im/kitsune-gha-ci

Migrate to GitHub Actions
https://invent.kde.org/neon/forks/libquotient/-/commit/4831b613331095112fb31ea50394b53d5721084b

Git commit 835b6f98384100437ca90797555f5b050a53851a by Kitsune Ral on 02/01/2021 at 14:56..
Backport .github/workflows/ci.yml from master

Mostly taken from #434, except removed E2EE matrix variants
since E2EE is not ready on 0.6.x and is discouraged from using.
https://invent.kde.org/neon/forks/libquotient/-/commit/835b6f98384100437ca90797555f5b050a53851a

Git commit 5f590a9d99b0958b2a86dba047abc6b066a3b344 by Kitsune Ral on 02/01/2021 at 15:07..
.clang-format: backport ClangFormat compat fixes

Cherry-picked and squashed from 2fed7f8a and 23cf8bec.
https://invent.kde.org/neon/forks/libquotient/-/commit/5f590a9d99b0958b2a86dba047abc6b066a3b344

Git commit 9c8966b094a838fb72a46c1068d9d6f88c3795c2 by Kitsune Ral on 02/01/2021 at 15:18..
Drop .travis.yml

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/9c8966b094a838fb72a46c1068d9d6f88c3795c2

Git commit 0966f4821b6e5460b62d9fe8be14066ed001c1c2 by Kitsune Ral on 02/01/2021 at 15:18..
Drop .travis.yml

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/0966f4821b6e5460b62d9fe8be14066ed001c1c2

Git commit b3e3bd7d6f6934257c17c486260ac4670373141c by Heiko Becker on 06/01/2021 at 18:57..
Use CMAKE_INSTALL_DATADIR instead of hard-coding share

Signed-off-by: Heiko Becker <heirecka at exherbo.org>
https://invent.kde.org/neon/forks/libquotient/-/commit/b3e3bd7d6f6934257c17c486260ac4670373141c

Git commit 23f2bb6ca3c0c44fd8972902b4d9b5d6c23d52e7 by GitHub (on behalf of Kitsune Ral) on 07/01/2021 at 06:29..
Merge pull request #436 from heirecka/datadir-instead-hard-coding-share

Use CMAKE_INSTALL_DATADIR instead of hard-coding share
https://invent.kde.org/neon/forks/libquotient/-/commit/23f2bb6ca3c0c44fd8972902b4d9b5d6c23d52e7

Git commit 90d41b697af39253483d9bcca4e57b11d2197112 by Kitsune Ral on 07/01/2021 at 19:16..
Prefer connecting to BaseJob::result(), not finished()

...because finished() includes abandoning and should only be relevant
when lifecycle issues are involved.
https://invent.kde.org/neon/forks/libquotient/-/commit/90d41b697af39253483d9bcca4e57b11d2197112

Git commit 4f06d46d6d6062d6d17f69eeaddb7810edac5bbf by Kitsune Ral on 07/01/2021 at 20:15..
BaseJob: more logging
https://invent.kde.org/neon/forks/libquotient/-/commit/4f06d46d6d6062d6d17f69eeaddb7810edac5bbf

Git commit 12e00b234e5c5f4ed57b5c400d06f780e71014f4 by Kitsune Ral on 07/01/2021 at 20:18..
BaseJob: setStatus(Pending) on scheduling a retry

Fixes #437.
https://invent.kde.org/neon/forks/libquotient/-/commit/12e00b234e5c5f4ed57b5c400d06f780e71014f4

Git commit be00308ad67286b45912202750fe49fb87f16e4a by Kitsune Ral on 07/01/2021 at 20:22..
Connection::resolveServer: abandon is not a failure

So just reset the base URL and return, with no error signals.
https://invent.kde.org/neon/forks/libquotient/-/commit/be00308ad67286b45912202750fe49fb87f16e4a

Git commit 8fc5de0529458851a4cd5c042b2b2f2543068c22 by Kitsune Ral on 07/01/2021 at 20:23..
Prefer connecting to BaseJob::result(), not finished()

...because finished() includes abandoning and should only be relevant
when lifecycle issues are involved.

(cherry picked from commit 90d41b697af39253483d9bcca4e57b11d2197112)
https://invent.kde.org/neon/forks/libquotient/-/commit/8fc5de0529458851a4cd5c042b2b2f2543068c22

Git commit 32794f67621f87fa796c423a900385e6a1fba4b9 by Kitsune Ral on 07/01/2021 at 20:23..
BaseJob: more logging

(cherry picked from commit 4f06d46d6d6062d6d17f69eeaddb7810edac5bbf)
https://invent.kde.org/neon/forks/libquotient/-/commit/32794f67621f87fa796c423a900385e6a1fba4b9

Git commit 6af9ae29cb3c29e8e196d303409da369d23c3450 by Kitsune Ral on 07/01/2021 at 20:25..
Connection::resolveServer: abandon is not a failure

So just reset the base URL and return, with no error signals.

(cherry picked from commit be00308ad67286b45912202750fe49fb87f16e4a)
https://invent.kde.org/neon/forks/libquotient/-/commit/6af9ae29cb3c29e8e196d303409da369d23c3450

Git commit aa790406aa0b076938f877e38545baf481a986ec by Kitsune Ral on 07/01/2021 at 20:25..
BaseJob: setStatus(Pending) on scheduling a retry

Fixes #437.

(cherry picked from commit 12e00b234e5c5f4ed57b5c400d06f780e71014f4)
https://invent.kde.org/neon/forks/libquotient/-/commit/aa790406aa0b076938f877e38545baf481a986ec

Git commit 78a3137920d9680072dc3796dd90f849e8467fd4 by Kitsune Ral on 07/01/2021 at 20:32..
isJobRunning() -> isJobPending()

To be very clear what this function checks. See also #437.
https://invent.kde.org/neon/forks/libquotient/-/commit/78a3137920d9680072dc3796dd90f849e8467fd4

Git commit 6101971af86fdecd084759aa039b9d20a9d662a7 by Kitsune Ral on 07/01/2021 at 20:39..
Connection: don't explicitly reset QPointers

See #437 for the discussion.
https://invent.kde.org/neon/forks/libquotient/-/commit/6101971af86fdecd084759aa039b9d20a9d662a7

Git commit 41e57c9f1e44a47694eb1fc0725a8c8985780e0c by Kitsune Ral on 07/01/2021 at 20:44..
Connection: don't explicitly reset QPointers

See #437 for the discussion.

(cherry picked from commit 6101971af86fdecd084759aa039b9d20a9d662a7)
https://invent.kde.org/neon/forks/libquotient/-/commit/41e57c9f1e44a47694eb1fc0725a8c8985780e0c

Git commit d09383d5dc7379c534860b5a66467a32d6adc932 by Kitsune Ral on 08/01/2021 at 06:41..
quotest: use the target room for loadMembers test

Now that we've crowded it with a few synthetic users, lazy-loading of
members doesn't some other room to get tested. Bonus:
Connection::roomByAlias() has its own very simple test now.
https://invent.kde.org/neon/forks/libquotient/-/commit/d09383d5dc7379c534860b5a66467a32d6adc932

Git commit 70846cf880c2b2e6dc9aa225aa3fb0e86ca04568 by Kitsune Ral on 08/01/2021 at 06:41..
quotest: use the target room for loadMembers test

Now that we've crowded it with a few synthetic users, lazy-loading of
members doesn't some other room to get tested. Bonus:
Connection::roomByAlias() has its own very simple test now.

(cherry picked from commit d09383d5dc7379c534860b5a66467a32d6adc932)
https://invent.kde.org/neon/forks/libquotient/-/commit/70846cf880c2b2e6dc9aa225aa3fb0e86ca04568

Git commit 8a4c762c25c97f355eef47051428d5859bf610e2 by GitHub (on behalf of Kitsune Ral) on 08/01/2021 at 07:37..
Add a timeout to quotest runs

The current Quotest gets stuck somewhere, and the its big internal 3-minute watchdog doesn't cut it for some reason. While investigating that, an external timeout would be quite handy.
https://invent.kde.org/neon/forks/libquotient/-/commit/8a4c762c25c97f355eef47051428d5859bf610e2

Git commit c382480ca8b08abb93a23cf29cc3c386ba6e5d29 by Kitsune Ral on 11/01/2021 at 10:42..
LGTM: fine-tune the set of analysed files
https://invent.kde.org/neon/forks/libquotient/-/commit/c382480ca8b08abb93a23cf29cc3c386ba6e5d29

Git commit f0e9534d1aff015d7d2822e58f615bd1434153c9 by Kitsune Ral on 11/01/2021 at 10:43..
LGTM: fine-tune the set of analysed files
https://invent.kde.org/neon/forks/libquotient/-/commit/f0e9534d1aff015d7d2822e58f615bd1434153c9

Git commit 21ff5c1e92624b09a1f065af07d8330c8aedcd58 by Kitsune Ral on 11/01/2021 at 10:43..
Add a timeout to quotest runs

The current Quotest gets stuck somewhere, and the its big internal 3-minute watchdog doesn't cut it for some reason. While investigating that, an external timeout would be quite handy.
https://invent.kde.org/neon/forks/libquotient/-/commit/21ff5c1e92624b09a1f065af07d8330c8aedcd58

Git commit 723563bb27ceb17594eb04784449cd9f8ea6001d by GitHub (on behalf of Kitsune Ral) on 11/01/2021 at 18:15..
Don't run the test if TEST_USER is empty
https://invent.kde.org/neon/forks/libquotient/-/commit/723563bb27ceb17594eb04784449cd9f8ea6001d

Git commit 0990ab8121002e1613ac68558e07c74855370713 by GitHub (on behalf of Kitsune Ral) on 11/01/2021 at 18:17..
Ok, do the same in a different way
https://invent.kde.org/neon/forks/libquotient/-/commit/0990ab8121002e1613ac68558e07c74855370713

Git commit ddbcacdce5e69fa7cbcaa891540da2815451b6ce by Kitsune Ral on 12/01/2021 at 17:27..
Don't run the test if TEST_USER is empty
https://invent.kde.org/neon/forks/libquotient/-/commit/ddbcacdce5e69fa7cbcaa891540da2815451b6ce

Git commit 7ac0bf044e521be4043c0b545d42323e2f9101a4 by Kitsune Ral on 12/01/2021 at 18:26..
EventItemBase: Allow adding custom data

A new field of std::any type is added that allows clients to "annotate"
any event item with arbitrary kind of data. This is mainly intended so
that clients could calculate certain information about the item (e.g.
special formatting depending on the event contents, or position) without
having to calculate this information every time it is visualised.
In case of Quaternion, the idea is to calculate the "spamminess" of
the event basing on the past activity of a given user in this room -
calculating it upon displaying each event is extremely heavyweight.
https://invent.kde.org/neon/forks/libquotient/-/commit/7ac0bf044e521be4043c0b545d42323e2f9101a4

Git commit b876fa4de3d7f58418bd03935f2336eb9edff3ac by Kitsune Ral on 14/01/2021 at 07:27..
EncryptionManager: fix a typo
https://invent.kde.org/neon/forks/libquotient/-/commit/b876fa4de3d7f58418bd03935f2336eb9edff3ac

Git commit d123822b2d0eb2854f1bcdb98c1cfa4f0257ed43 by Kitsune Ral on 14/01/2021 at 07:40..
Fix a typo in the previous typo fix
https://invent.kde.org/neon/forks/libquotient/-/commit/d123822b2d0eb2854f1bcdb98c1cfa4f0257ed43

Git commit 7ce8513f65a21a02798447f745eb90290cb5a6fb by Kitsune Ral on 15/01/2021 at 06:59..
Drop a file deleted in master
https://invent.kde.org/neon/forks/libquotient/-/commit/7ce8513f65a21a02798447f745eb90290cb5a6fb

Git commit b0d3ecc774ca4aec24bceb5ec1f1ded844a7213a by GitHub (on behalf of Kitsune Ral) on 15/01/2021 at 07:17..
Merge pull request #428 from ognarb/licensing

Port existing copyright statement to reuse using licensedigger
https://invent.kde.org/neon/forks/libquotient/-/commit/b0d3ecc774ca4aec24bceb5ec1f1ded844a7213a

Git commit 544ec34b4563aacac6fd5b2f4aa64813096cd4b8 by GitHub (on behalf of Kitsune Ral) on 15/01/2021 at 07:19..
Merge branch 'master' into dfaure/stricter-flags
https://invent.kde.org/neon/forks/libquotient/-/commit/544ec34b4563aacac6fd5b2f4aa64813096cd4b8

Git commit 8d9684a4ceec239daf66ff98effe46ab70a3f6a4 by GitHub (on behalf of Kitsune Ral) on 15/01/2021 at 12:10..
Merge pull request #417 from dfaure/dfaure/stricter-flags

Enable QT_NO_URL_CAST_FROM_STRING and QT_STRICT_ITERATORS.
https://invent.kde.org/neon/forks/libquotient/-/commit/8d9684a4ceec239daf66ff98effe46ab70a3f6a4

Git commit 24d14f297f72cbdfd4b2b93e2ab7986d5854a1c5 by Kitsune Ral on 15/01/2021 at 15:53..
CONTRIBUTING.md: drop one last mention of Travis CI
https://invent.kde.org/neon/forks/libquotient/-/commit/24d14f297f72cbdfd4b2b93e2ab7986d5854a1c5

Git commit a4e78956f105875625b572d8b98459ffa86fafe5 by Kitsune Ral on 15/01/2021 at 15:53..
CMakeLists.txt: 0.6.4
https://invent.kde.org/neon/forks/libquotient/-/commit/a4e78956f105875625b572d8b98459ffa86fafe5

Git commit 0a775d9b3209be15dea8b8915fc0a1c8e0046ba6 by Kitsune Ral on 16/01/2021 at 21:08..
Updated copyright statements upon Git audit

After going through all the files and the history of commits on them
it was clear that some copyright statements are obsolete (the code has
been overwritten since) and some are missing. This commit tries best to
remedy that, along with adding SPDX tags where they were still not used.
Also, a minimal SPDX convention is documented for further contributions.
Closes #426.
https://invent.kde.org/neon/forks/libquotient/-/commit/0a775d9b3209be15dea8b8915fc0a1c8e0046ba6

Git commit 9fb2970eadf810f7ae38389b333b543c22fb8be7 by Kitsune Ral on 17/01/2021 at 07:26..
Merge branch 'kitsune-use-spdx' into master
https://invent.kde.org/neon/forks/libquotient/-/commit/9fb2970eadf810f7ae38389b333b543c22fb8be7

Git commit 09eb39236666e81d5da014acea011dcd74d0999b by Andres Salomon on 18/01/2021 at 09:00..
Update upstream source from tag 'upstream/0.6.4'

Update to upstream version '0.6.4'
with Debian dir aa8705fd74743e79c043bc9e3e425d5064404cfe
https://invent.kde.org/neon/forks/libquotient/-/commit/09eb39236666e81d5da014acea011dcd74d0999b

Git commit e50780916e6a0c5b9dc456f643f6474d0d2198dc by Andres Salomon on 18/01/2021 at 10:16..
Update for the 0.6.4 release and package rename
https://invent.kde.org/neon/forks/libquotient/-/commit/e50780916e6a0c5b9dc456f643f6474d0d2198dc

Git commit b32444d59d033a4de02c8ad5ff059baf8bb8d2e5 by Andres Salomon on 18/01/2021 at 22:43..
Remove libqmatrixclient-dev dummy package
https://invent.kde.org/neon/forks/libquotient/-/commit/b32444d59d033a4de02c8ad5ff059baf8bb8d2e5

Git commit 370099abaa8e8624901e481804d055226a501642 by Andres Salomon on 19/01/2021 at 22:40..
release 0.6.4-2
https://invent.kde.org/neon/forks/libquotient/-/commit/370099abaa8e8624901e481804d055226a501642

Git commit 17e62b85cae99d8485be44f90f0622e4ba843fa0 by Carl Schwan on 21/01/2021 at 18:21..
Add more properties to CallCandidateEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/17e62b85cae99d8485be44f90f0622e4ba843fa0

Git commit 0368242c543d388b789eb02f22552128e3b14c18 by Carl Schwan on 21/01/2021 at 18:21..
Apply suggestions from code review

Co-authored-by: Kitsune Ral <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/0368242c543d388b789eb02f22552128e3b14c18

Git commit a9987b1bc7f789f3063c06ed23e1f51024341463 by Carl Schwan on 21/01/2021 at 18:21..
Move tests
https://invent.kde.org/neon/forks/libquotient/-/commit/a9987b1bc7f789f3063c06ed23e1f51024341463

Git commit ba9c361b6ee18401fcd9a79175f56758a11d7f7d by Carl Schwan on 21/01/2021 at 18:21..
fix build
https://invent.kde.org/neon/forks/libquotient/-/commit/ba9c361b6ee18401fcd9a79175f56758a11d7f7d

Git commit 390162a0c707c51590acb27df81e98a85d3b6cf7 by Carl Schwan on 22/01/2021 at 14:40..
Remove quotest from ctest
https://invent.kde.org/neon/forks/libquotient/-/commit/390162a0c707c51590acb27df81e98a85d3b6cf7

Git commit 0e3973cade9348946a3675a242723711b9b75ad1 by GitHub (on behalf of Alexey Rusakov) on 22/01/2021 at 15:38..
Merge pull request #440 from ognarb/callcandidateupdate

Add more properties to CallCandidateEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/0e3973cade9348946a3675a242723711b9b75ad1

Git commit ced197fc6606c0f12eee161408742da54f40411b by GitHub (on behalf of Alexey Rusakov) on 22/01/2021 at 16:30..
Adjust according to the just merged PR
https://invent.kde.org/neon/forks/libquotient/-/commit/ced197fc6606c0f12eee161408742da54f40411b

Git commit 3a23e40be271a54db84c39c1ba47956915bb23ec by Carl Schwan on 23/01/2021 at 15:34..
Load user info (display name + avatar) for the local user.

This is needed for a few cases like the account list in NeoChat or the
account switcher. In this cases we don't have a room binded to the user
and can't fetch the real display name and avatar.
https://invent.kde.org/neon/forks/libquotient/-/commit/3a23e40be271a54db84c39c1ba47956915bb23ec

Git commit 680e0f9deb3042db5cda43b81dbc7b1c153b8744 by Carl Schwan on 23/01/2021 at 15:34..
Add test
https://invent.kde.org/neon/forks/libquotient/-/commit/680e0f9deb3042db5cda43b81dbc7b1c153b8744

Git commit bfaf9330c4214636478df977ab7f6b5d1d843104 by Carl Schwan on 23/01/2021 at 17:14..
Update test
https://invent.kde.org/neon/forks/libquotient/-/commit/bfaf9330c4214636478df977ab7f6b5d1d843104

Git commit 4920adbc13db417756a0ee4c033fad96b8249eea by Alexey Rusakov on 25/01/2021 at 08:06..
CMakeLists.txt: include(CTest)

It's a missing line from the recent autotests introduction. Without it
CMake doesn't introduce BUILD_TESTING option, and if you explicitly
pass it, fails to configure the project.
https://invent.kde.org/neon/forks/libquotient/-/commit/4920adbc13db417756a0ee4c033fad96b8249eea

Git commit 08de0609df2649170ecdc927c312e08387e6cc67 by Alexey Rusakov on 25/01/2021 at 08:14..
CI: no need to explicitly build quotest

Now that CTest is included, quotest target should build (and install)
automatically together with the library.
https://invent.kde.org/neon/forks/libquotient/-/commit/08de0609df2649170ecdc927c312e08387e6cc67

Git commit a8e8f1cd39e846941de544c7791e1ab6398a335b by Alexey Rusakov on 25/01/2021 at 09:33..
Collapse the autotest entirely in *.cpp file

Otherwise CMake's automoc complains that it doesn't see a moc-able class
definition in the file that includes "*.moc".
https://invent.kde.org/neon/forks/libquotient/-/commit/a8e8f1cd39e846941de544c7791e1ab6398a335b

Git commit f621367f0706ae3093eedb8cf0d068c34acee6ea by Alexey Rusakov on 25/01/2021 at 09:35..
Autotests: make sure types passed to QCOMPARE are the same

The current test may fail with "undefined reference" errors discussed at
https://stackoverflow.com/questions/14198972/undefined-symbols-for-qcompare.
https://invent.kde.org/neon/forks/libquotient/-/commit/f621367f0706ae3093eedb8cf0d068c34acee6ea

Git commit a1b1b96bcd78c6efb0ad3c1ba9c93284497d74a6 by Alexey Rusakov on 25/01/2021 at 10:05..
CMakeLists.txt: refactor configuration of features

- The feature summary is only generated at the end of the configuration.
- InstallQuotest feature is defined in quotest/CMakeLists.txt now,
  and therefore is only available if quotest is getting built
  (i.e., if BUILD_TESTING is on).
- API generation configuration code merged from two places into one.
https://invent.kde.org/neon/forks/libquotient/-/commit/a1b1b96bcd78c6efb0ad3c1ba9c93284497d74a6

Git commit e23cddccf0dbafdb5e8d3503d6f6b7491f5b9010 by Alexey Rusakov on 25/01/2021 at 13:03..
CI: include github.ref in the quotest origin
https://invent.kde.org/neon/forks/libquotient/-/commit/e23cddccf0dbafdb5e8d3503d6f6b7491f5b9010

Git commit 579fc2504be9e5e0291e44da685f10a21a4c64a5 by Alexey Rusakov on 25/01/2021 at 17:27..
CI: install to ~/.local; invoke quotest from there

That way InstallQuotest feature is also tested. Also fix the Valgrind
suppression file path.
Also: use cmake arguments instead of pushd/popd dance
https://invent.kde.org/neon/forks/libquotient/-/commit/579fc2504be9e5e0291e44da685f10a21a4c64a5

Git commit d4005a2ee5fbd51ae169b8827421f448a4cf8050 by Alexey Rusakov on 25/01/2021 at 17:27..
Use Ninja
https://invent.kde.org/neon/forks/libquotient/-/commit/d4005a2ee5fbd51ae169b8827421f448a4cf8050

Git commit 37fde3d877b162e8867416bd1d70ee0808976620 by Alexey Rusakov on 25/01/2021 at 17:27..
CI: build libraries statically

Shared libraries are a bit of a chore to handle, maybe another time.
https://invent.kde.org/neon/forks/libquotient/-/commit/37fde3d877b162e8867416bd1d70ee0808976620

Git commit 302dbc2df4e55855d1c9a97f679101e9d40a260e by Alexey Rusakov on 25/01/2021 at 17:27..
Make quotest origin even more informative
https://invent.kde.org/neon/forks/libquotient/-/commit/302dbc2df4e55855d1c9a97f679101e9d40a260e

Git commit dbbd2c61c912769c8a0063454862fa2168e7afd9 by Alexey Rusakov on 25/01/2021 at 17:28..
Revert to running quotest from the source tree

For some reason the installed one doesn't find QtTest dynamic library.
https://invent.kde.org/neon/forks/libquotient/-/commit/dbbd2c61c912769c8a0063454862fa2168e7afd9

Git commit 7c0742aa2b0b548bf99abe43c1a0410a11576893 by Alexey Rusakov on 25/01/2021 at 20:33..
Connection: stop login flows job before resolving

This avoids a corner case when a login flows job finishes (or worse,
goes for a retry) while the homeserver is (being) resolved, yielding
the Connection object in an inconsistent state to the client.
https://invent.kde.org/neon/forks/libquotient/-/commit/7c0742aa2b0b548bf99abe43c1a0410a11576893

Git commit cd71f81a964751cc820074bb345f904b22a2c583 by Alexey Rusakov on 25/01/2021 at 20:49..
Room::P::removeMemberFromMap: comment that Q_ASSERT

Maybe it's not even that bad, given that an effort is taken to recover
from the internal member list corruption.
https://invent.kde.org/neon/forks/libquotient/-/commit/cd71f81a964751cc820074bb345f904b22a2c583

Git commit ba1d3bda99c04f8783d1a5266f0fa7700ef3eb18 by Alexey Rusakov on 25/01/2021 at 20:50..
Merge branch 'fix-ci' into master
https://invent.kde.org/neon/forks/libquotient/-/commit/ba1d3bda99c04f8783d1a5266f0fa7700ef3eb18

Git commit b850edadde2299b122a5cd17da85e943430e43b7 by Roland Pallai on 28/01/2021 at 14:25..
Fix rich replies json format (transmit)

With this patch it looks like:

"m.relates_to": {
  "m.in_reply_to": {
    "event_id": "$another:event.com"
  }
}

instead of:

"m.relates_to": {
  "event_id": "$another:event.com",
  "rel_type": "m.in_reply_to"
},

So it fits the specification by now.

https://matrix.org/docs/spec/client_server/r0.6.1#rich-replies
https://invent.kde.org/neon/forks/libquotient/-/commit/b850edadde2299b122a5cd17da85e943430e43b7

Git commit df6b2d31ec8f2f5890826719e960f450a4968f22 by Roland Pallai on 28/01/2021 at 14:41..
Fix rich edits (transmit)

The new formatted_body was not included into new content on edit
due to badly constructed json.
https://invent.kde.org/neon/forks/libquotient/-/commit/df6b2d31ec8f2f5890826719e960f450a4968f22

Git commit cf661d5e85441f849c0e0faca1c929810d4fd752 by Alexey Rusakov on 28/01/2021 at 15:03..
Drop qmake from CI

If someone still needs it - fix it; otherwise building with qmake
will be dropped in 0.7
https://invent.kde.org/neon/forks/libquotient/-/commit/cf661d5e85441f849c0e0faca1c929810d4fd752

Git commit 6da63e11a2c8c9cc7d9e6fff0293d5e973071af0 by GitHub (on behalf of Alexey Rusakov) on 28/01/2021 at 15:50..
Merge pull request #448 from rpallai/richreplyfix

Fix rich replies json format (transmit)
https://invent.kde.org/neon/forks/libquotient/-/commit/6da63e11a2c8c9cc7d9e6fff0293d5e973071af0

Git commit b069c6bb377641840026aa37cb8acf7e2a76bfe5 by Alexey Rusakov (on behalf of Roland Pallai) on 28/01/2021 at 15:51..
Fix rich replies json format (transmit)

With this patch it looks like:

"m.relates_to": {
  "m.in_reply_to": {
    "event_id": "$another:event.com"
  }
}

instead of:

"m.relates_to": {
  "event_id": "$another:event.com",
  "rel_type": "m.in_reply_to"
},

So it fits the specification by now.

https://matrix.org/docs/spec/client_server/r0.6.1#rich-replies
(cherry picked from commit b850edadde2299b122a5cd17da85e943430e43b7)
https://invent.kde.org/neon/forks/libquotient/-/commit/b069c6bb377641840026aa37cb8acf7e2a76bfe5

Git commit 3fbd9ca775caeca4a28aeb48f5c8db013659c263 by GitHub (on behalf of Alexey Rusakov) on 28/01/2021 at 16:03..
Merge pull request #449 from rpallai/richeditfix

Fix rich edits (transmit)
https://invent.kde.org/neon/forks/libquotient/-/commit/3fbd9ca775caeca4a28aeb48f5c8db013659c263

Git commit 221cc9faf713eb383a0e76a56018794796690369 by Alexey Rusakov (on behalf of Roland Pallai) on 28/01/2021 at 16:04..
Fix rich edits (transmit)

The new formatted_body was not included into new content on edit
due to badly constructed json.

(cherry picked from commit df6b2d31ec8f2f5890826719e960f450a4968f22)
https://invent.kde.org/neon/forks/libquotient/-/commit/221cc9faf713eb383a0e76a56018794796690369

Git commit 9760bc4c22b2abf9732732df22cadb7f7db0641c by Carl Schwan on 09/02/2021 at 20:11..
Update
https://invent.kde.org/neon/forks/libquotient/-/commit/9760bc4c22b2abf9732732df22cadb7f7db0641c

Git commit fb6e3f215774d48f7e0c6000cc7a9ebbc66ceb64 by GitHub (on behalf of Carl Schwan) on 15/02/2021 at 20:03..
Update quotest/quotest.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/fb6e3f215774d48f7e0c6000cc7a9ebbc66ceb64

Git commit 48d2ecc4df4d1883326036e55949156cfb37acc6 by GitHub (on behalf of Alexey Rusakov) on 16/02/2021 at 09:13..
Merge pull request #442 from ognarb/localuserinfo

Load user info (display name + avatar) for the local user.
https://invent.kde.org/neon/forks/libquotient/-/commit/48d2ecc4df4d1883326036e55949156cfb37acc6

Git commit 86f24d1ecf300b82b3a7253b81a2c392669d2c2b by Alexey Rusakov on 21/02/2021 at 19:20..
Uri: support abbreviated types in Matrix URIs

As per the latest iteration of MSC2312, room/, user/ and event/ are
only supported for parsing and replication but not for emitting from
Matrix identifiers.
https://invent.kde.org/neon/forks/libquotient/-/commit/86f24d1ecf300b82b3a7253b81a2c392669d2c2b

Git commit b25785d294669f2bab7dcd1e3cd1fba61991fe46 by Alexey Rusakov on 21/02/2021 at 19:47..
Update a comment that still mentions Riot
https://invent.kde.org/neon/forks/libquotient/-/commit/b25785d294669f2bab7dcd1e3cd1fba61991fe46

Git commit 81664eaf5a983dbd326e4d24d21c2108ea4d6353 by Alexey Rusakov on 21/02/2021 at 19:48..
Uri: support abbreviated types in Matrix URIs

As per the latest iteration of MSC2312, room/, user/ and event/ are
only supported for parsing and replication but not for emitting from
Matrix identifiers.

(cherry picked from commit 86f24d1ecf300b82b3a7253b81a2c392669d2c2b)
https://invent.kde.org/neon/forks/libquotient/-/commit/81664eaf5a983dbd326e4d24d21c2108ea4d6353

Git commit ec60e76d585813ea54a22b58d6fabc52f113e4b1 by Alexey Rusakov on 21/02/2021 at 19:48..
Update a comment that still mentions Riot

(cherry picked from commit b25785d294669f2bab7dcd1e3cd1fba61991fe46)
https://invent.kde.org/neon/forks/libquotient/-/commit/ec60e76d585813ea54a22b58d6fabc52f113e4b1

Git commit ea9ff39ea147897e576a3a4664348ad77ceee501 by Alexey Rusakov on 21/02/2021 at 21:22..
SECURITY.md: 0.5.x is no more supported

It's been 2 years, time to move on.
https://invent.kde.org/neon/forks/libquotient/-/commit/ea9ff39ea147897e576a3a4664348ad77ceee501

Git commit 789433971a83a2d5ccad43e28402cd2bbbe0d640 by Alexey Rusakov on 21/02/2021 at 21:25..
Update documentation

Replace references to Spectral with NeoChat as a more lively and better
supported client; deprecate qmake; remove a mention that libQuotient
uses LGPL-2.1-only because it's not true, according to ./COPYING
https://invent.kde.org/neon/forks/libquotient/-/commit/789433971a83a2d5ccad43e28402cd2bbbe0d640

Git commit b5b2d95ce2c8cf164177a86d6293809ff049ca0a by Alexey Rusakov on 21/02/2021 at 21:28..
0.6.5
https://invent.kde.org/neon/forks/libquotient/-/commit/b5b2d95ce2c8cf164177a86d6293809ff049ca0a

Git commit 1f92a5a957f7de38ef7c2bf425b8d6ac7fa1239c by Arnav Rawat on 22/02/2021 at 19:42..
Adds ability remove the avatar
Not possible previously
https://invent.kde.org/neon/forks/libquotient/-/commit/1f92a5a957f7de38ef7c2bf425b8d6ac7fa1239c

Git commit 382b08fc5ad9f22dacb2e6504869c42062565e7c by GitHub (on behalf of Alexey Rusakov) on 23/02/2021 at 09:43..
Merge pull request #455 from arawaaa/removeavatar

Adds ability remove the avatar
https://invent.kde.org/neon/forks/libquotient/-/commit/382b08fc5ad9f22dacb2e6504869c42062565e7c

Git commit f5862e8b6fccb85f7080ccddcdea436540588b36 by Carl Schwan on 26/02/2021 at 14:00..
Add public method to determine if we can change the user password
https://invent.kde.org/neon/forks/libquotient/-/commit/f5862e8b6fccb85f7080ccddcdea436540588b36

Git commit 1335534aa71519ce55bee226ac67c1b0188f4b4b by GitHub (on behalf of Carl Schwan) on 26/02/2021 at 17:04..
Apply suggestion

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/1335534aa71519ce55bee226ac67c1b0188f4b4b

Git commit 337809639b5e9b3e78a4b33eafe0e1e3bb3288fc by GitHub (on behalf of Carl Schwan) on 26/02/2021 at 17:05..
Merge pull request #457 from quotient-im/work/capability

Add public method to determine if we can change the user password
https://invent.kde.org/neon/forks/libquotient/-/commit/337809639b5e9b3e78a4b33eafe0e1e3bb3288fc

Git commit 6dc8bc05a95324de512ef7999b47507e712ccb76 by Alexey Rusakov on 04/03/2021 at 13:29..
Tighten up against malformed user ids in events

A few months ago 3c85f049 introduced validation of user ids but the rest
of the library code wasn't updated to the fact that Connection::user()
may quite legitimately (if not routinely) return nullptr, leading to
crashes particularaly when malformed ids come from the wire. This commit
adds necessary checks before using the value returned from user().

Closes #456.
https://invent.kde.org/neon/forks/libquotient/-/commit/6dc8bc05a95324de512ef7999b47507e712ccb76

Git commit a95d5e83b4d0ab3a9bf2adef1ae4246adc317d04 by Arnav Rawat on 11/03/2021 at 22:09..
Support for pinned messages
Fixes issue #188
https://invent.kde.org/neon/forks/libquotient/-/commit/a95d5e83b4d0ab3a9bf2adef1ae4246adc317d04

Git commit 847bfdca018ce944360c47c18ffee8a4c3d20f5b by Arnav Rawat on 11/03/2021 at 22:19..
Whoops
https://invent.kde.org/neon/forks/libquotient/-/commit/847bfdca018ce944360c47c18ffee8a4c3d20f5b

Git commit 5155f825bb71fca649a97ac4a7fa356cf85ee722 by Arnav Rawat on 12/03/2021 at 00:33..
historyedge() a result of findInTimeline()
https://invent.kde.org/neon/forks/libquotient/-/commit/5155f825bb71fca649a97ac4a7fa356cf85ee722

Git commit 52092d332dbc8b300a70cb47cd3b4edd98a37149 by Alexey Rusakov on 17/03/2021 at 20:23..
0.6.6
https://invent.kde.org/neon/forks/libquotient/-/commit/52092d332dbc8b300a70cb47cd3b4edd98a37149

Git commit 133dcfffc8668dfbaa0aed9dc1f46923064ca862 by Andres Salomon on 28/03/2021 at 03:40..
Update to upstream version '0.6.6'
https://invent.kde.org/neon/forks/libquotient/-/commit/133dcfffc8668dfbaa0aed9dc1f46923064ca862

Git commit eb2f105aea98f640e2f95854983bb06ade95bb3e by Andres Salomon on 28/03/2021 at 03:55..
debian/changelog: prepare the 0.6.6-1 release
https://invent.kde.org/neon/forks/libquotient/-/commit/eb2f105aea98f640e2f95854983bb06ade95bb3e

Git commit 8858c40091ed73b730fe62bf565b34cdda1b4e39 by Vladyslav Hnatiuk on 03/04/2021 at 05:39..
Fix broken links in README.
https://invent.kde.org/neon/forks/libquotient/-/commit/8858c40091ed73b730fe62bf565b34cdda1b4e39

Git commit fd84529d1611a8b50440e08ee2af3897f1d1fb3c by GitHub (on behalf of Alexey Rusakov) on 03/04/2021 at 06:50..
Merge pull request #460 from Aksem/master

Fix broken links in README
https://invent.kde.org/neon/forks/libquotient/-/commit/fd84529d1611a8b50440e08ee2af3897f1d1fb3c

Git commit ae85fd8602cefd1b71db8cb173ed77a873dbe223 by Carl Schwan on 26/04/2021 at 15:52..
Make it possible to load the user metadata

In the normal case there is always a room that is associated with an
user. So it is in most of the cases, possible to load the metadata
(display name and avatar url) with the help of the room.

In some cases, it is not possible. For example, when opening an user
matrix link pointing to an user and not to a room. In this case, we need
to load the metadata independly of the room, since the user is not
linked to a room.
https://invent.kde.org/neon/forks/libquotient/-/commit/ae85fd8602cefd1b71db8cb173ed77a873dbe223

Git commit 2e40ea5121065558d493cddf8a94db57f87acd3e by GitHub (on behalf of Alexey Rusakov) on 26/04/2021 at 17:08..
Merge pull request #461 from quotient-im/work/force-load-user-data

Make it possible to load the user metadata
https://invent.kde.org/neon/forks/libquotient/-/commit/2e40ea5121065558d493cddf8a94db57f87acd3e

Git commit f89ece678c47a54a28c91c2d0ced65ba3e9a6540 by GitHub (on behalf of Alexey Rusakov) on 26/04/2021 at 17:12..
CI: Use GCC 9 where GCC 8 was

GitHub images no more have GCC 8.
https://invent.kde.org/neon/forks/libquotient/-/commit/f89ece678c47a54a28c91c2d0ced65ba3e9a6540

Git commit 0ce00a737cd8cd87d12cff716071808b90a4919e by Alexey Rusakov on 08/05/2021 at 08:07..
Fix joinedRoom signal not being emitted in some cases

An alternative implementation of #463 (and thanks to Carl for spotting
the original problem).
https://invent.kde.org/neon/forks/libquotient/-/commit/0ce00a737cd8cd87d12cff716071808b90a4919e

Git commit 97cee4406349e8951ab6971119eddce9a1949e7b by Alexey Rusakov on 08/05/2021 at 13:01..
CI: Use GCC 9 where GCC 8 was

GitHub images no more have GCC 8.

(cherry picked from commit f89ece678c47a54a28c91c2d0ced65ba3e9a6540)
https://invent.kde.org/neon/forks/libquotient/-/commit/97cee4406349e8951ab6971119eddce9a1949e7b

Git commit 0c8a819f8a3c31360e3f6044374aa219e93ec21e by Alexey Rusakov on 09/05/2021 at 10:33..
Fix joinedRoom signal not being emitted in some cases

An alternative implementation of #463 (and thanks to Carl for spotting
the original problem).
https://invent.kde.org/neon/forks/libquotient/-/commit/0c8a819f8a3c31360e3f6044374aa219e93ec21e

Git commit d3edd940098d2a9dbe511311f35187d5c93cbe9b by Tobias Fella on 19/05/2021 at 21:25..
Add libquotient.kdev4 to .gitignore
https://invent.kde.org/neon/forks/libquotient/-/commit/d3edd940098d2a9dbe511311f35187d5c93cbe9b

Git commit 7761c2b791291adee0505c869305b5675e90ed3b by GitHub (on behalf of Alexey Rusakov) on 20/05/2021 at 05:37..
Merge pull request #466 from TobiasFella/gitignore

Add libquotient.kdev4 to .gitignore
https://invent.kde.org/neon/forks/libquotient/-/commit/7761c2b791291adee0505c869305b5675e90ed3b

Git commit 006926dfe58557fdd5e4361ca88bcf5df1ec990c by Alexey Rusakov (on behalf of Tobias Fella) on 20/05/2021 at 05:38..
Add libquotient.kdev4 to .gitignore
https://invent.kde.org/neon/forks/libquotient/-/commit/006926dfe58557fdd5e4361ca88bcf5df1ec990c

Git commit 28823df2af5a4bfbab6dc455252c8ea0e211ffcb by arawaaa on 25/05/2021 at 18:11..
Merge branch 'quotient-im:master' into pinned
https://invent.kde.org/neon/forks/libquotient/-/commit/28823df2af5a4bfbab6dc455252c8ea0e211ffcb

Git commit 17bf4d180297c7e87363e179b8afa79ddb15dca7 by Arnav Rawat on 25/05/2021 at 19:17..
Fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/17bf4d180297c7e87363e179b8afa79ddb15dca7

Git commit f0c95397234d9f350e0f952dbe2b7bb652027b5f by Alexey Rusakov on 07/06/2021 at 05:55..
Connection::joinRoom() shouldn't enforce room state

This is an adjustment to the earlier fix of #471: if a join is
immediately followed by a leave (e.g. from another client/bot - you
can't do it programmatically from libQuotient) the sync may bring the
room already in the Leave state; therefore `joinRoom` should not
impose the state but rather ask `provideRoom` to create a `Join` room -
just as it's designed when passed an empty `joinState`.
https://invent.kde.org/neon/forks/libquotient/-/commit/f0c95397234d9f350e0f952dbe2b7bb652027b5f

Git commit 0571ba1fb1948a6cc050230a85201291ababbf04 by Alexey Rusakov on 07/06/2021 at 06:00..
Connection::joinRoom() shouldn't enforce room state

This is an adjustment to the earlier fix of #471: if a join is
immediately followed by a leave (e.g. from another client/bot - you
can't do it programmatically from libQuotient) the sync may bring the
room already in the Leave state; therefore `joinRoom` should not
impose the state but rather ask `provideRoom` to create a `Join` room -
just as it's designed when passed an empty `joinState`.
https://invent.kde.org/neon/forks/libquotient/-/commit/0571ba1fb1948a6cc050230a85201291ababbf04

Git commit 1abc131a53daeecddfc670830266948901fe82dc by Alexey Rusakov on 07/06/2021 at 12:39..
0.6.7
https://invent.kde.org/neon/forks/libquotient/-/commit/1abc131a53daeecddfc670830266948901fe82dc

Git commit dcbb2cfd0e238f788105d7d249f8aac6ad0823e4 by Alexey Rusakov on 12/06/2021 at 18:44..
CMakeLists: require at least Qt 5.12; add Qt 6 support
https://invent.kde.org/neon/forks/libquotient/-/commit/dcbb2cfd0e238f788105d7d249f8aac6ad0823e4

Git commit c18a591b484db451eb084ec4f1f17057813800df by Alexey Rusakov on 12/06/2021 at 18:51..
Adjust to new moc/QMetaType requirements

See https://www.qt.io/blog/whats-new-in-qmetatype-qvariant#qmetatype-knows-your-properties-and-methods-types
https://invent.kde.org/neon/forks/libquotient/-/commit/c18a591b484db451eb084ec4f1f17057813800df

Git commit ff171e91877048f132955abaa617a26c63632bdf by Alexey Rusakov on 12/06/2021 at 18:56..
connection.cpp: erase_if -> remove_if

erase_if is now also provided by Qt; doing pretty much the same thing,
the Qt implementation only returns the number of removed entries instead
of returning a collection of them, however. Worth admitting at this
point that the function in connection.cpp has never had the semantics
of STL's erase_if() and doesn't quite have the semantics of remove_if()
either; but at least it's closer to remove_if().
https://invent.kde.org/neon/forks/libquotient/-/commit/ff171e91877048f132955abaa617a26c63632bdf

Git commit 84d6295f859ee600d7aa3860767030bdc78914ba by Alexey Rusakov on 13/06/2021 at 12:06..
uri.cpp, room.*: Get rid of QStringRefs
https://invent.kde.org/neon/forks/libquotient/-/commit/84d6295f859ee600d7aa3860767030bdc78914ba

Git commit 620c2fe55b327e555477ed29bd670ddc6b9023d1 by Alexey Rusakov on 13/06/2021 at 12:07..
Make RequestData compile again

This fixes reliance on QIODevice being magically available for
std::unique_ptr<> by indirect inclusion. Since Qt 6 this inclusion no
more happens, time to #include <QIODevice> explicitly.
https://invent.kde.org/neon/forks/libquotient/-/commit/620c2fe55b327e555477ed29bd670ddc6b9023d1

Git commit 67ea5b45701e6bd5bf244039dc60a134d67a4cab by Alexey Rusakov on 13/06/2021 at 12:08..
Disable the piece depending on Qt Multimedia for Qt 6

Waiting for the Multimedia arrival in Qt 6.2.
https://invent.kde.org/neon/forks/libquotient/-/commit/67ea5b45701e6bd5bf244039dc60a134d67a4cab

Git commit b8a78fe7a2370697eea4517ab000130fe1180715 by Alexey Rusakov on 13/06/2021 at 12:10..
Exclude code no more needed with Qt6
https://invent.kde.org/neon/forks/libquotient/-/commit/b8a78fe7a2370697eea4517ab000130fe1180715

Git commit beb3a135a336dca654d967b88ea06a7457fbbec1 by Alexey Rusakov on 13/06/2021 at 12:11..
EncryptionEvent: fix "too perfect forwarding"

Now that QMetaType introspects into types, it reveals hidden problems
(which is very nice of it).
https://invent.kde.org/neon/forks/libquotient/-/commit/beb3a135a336dca654d967b88ea06a7457fbbec1

Git commit faf0122db53e4d010ec1f9f00f40feedd6786e71 by Alexey Rusakov on 13/06/2021 at 14:29..
Uri: Fix ambiguity around QChar constructors

QChar now accepts more types for construction, and that unraveled
concatenation of a Type/SecondaryType character with a QString.
To fix it, give the compiler a hint by casting to the enum's underlying
type (which also nicely documents that we _actually_ switch from enum
to character type).
https://invent.kde.org/neon/forks/libquotient/-/commit/faf0122db53e4d010ec1f9f00f40feedd6786e71

Git commit fad6ac5fdee53c349c69afd0ad5e57f340228c6b by Alexey Rusakov on 13/06/2021 at 14:29..
Generate a moc file for quotient_common.h

Previously Q_NAMESPACE did not require its own moc, somehow blending
into others; now it does.
https://invent.kde.org/neon/forks/libquotient/-/commit/fad6ac5fdee53c349c69afd0ad5e57f340228c6b

Git commit f4255f83bf5f4bfe03dc7518a89b378d3238c940 by Alexey Rusakov on 13/06/2021 at 14:29..
CI: Use Qt 5.12, as required from now
https://invent.kde.org/neon/forks/libquotient/-/commit/f4255f83bf5f4bfe03dc7518a89b378d3238c940

Git commit ab269f183fdc6f611559d69475543089088b4712 by Alexey Rusakov on 13/06/2021 at 14:29..
CI: version Qt cache
https://invent.kde.org/neon/forks/libquotient/-/commit/ab269f183fdc6f611559d69475543089088b4712

Git commit 55845602abf09bc5ccee2032a21b95b245d3cedd by Alexey Rusakov on 13/06/2021 at 14:29..
BaseJob: FollowRedirectsAttribute -> RedirectPolicyAttribute

The latter obsoleted the former since Qt 5.9, actually.
https://invent.kde.org/neon/forks/libquotient/-/commit/55845602abf09bc5ccee2032a21b95b245d3cedd

Git commit 21db98f32bc7e87685c7bd813945cbba75ec0fb7 by Alexey Rusakov on 13/06/2021 at 15:06..
AppVeyor: disable E2EE building, drop older Qt

E2EE will be remade anyway so building it now makes little sense.
https://invent.kde.org/neon/forks/libquotient/-/commit/21db98f32bc7e87685c7bd813945cbba75ec0fb7

Git commit 083f62f58bc525d761969133e12a859de9b29648 by Alexey Rusakov on 13/06/2021 at 15:11..
CMakeLists: require explicit BUILD_WITH_QT6 for Qt 6

It's not there, it's experimental - people should know what they are
doing.
https://invent.kde.org/neon/forks/libquotient/-/commit/083f62f58bc525d761969133e12a859de9b29648

Git commit d20aa002c0dcb2b40bbf7b48c5c995a5ed8138c1 by GitHub (on behalf of Alexey Rusakov) on 13/06/2021 at 16:15..
Merge pull request #480 from quotient-im/kitsune-qt6-compat

Qt 6 support
https://invent.kde.org/neon/forks/libquotient/-/commit/d20aa002c0dcb2b40bbf7b48c5c995a5ed8138c1

Git commit 607d8603b6d5b8409aa3f0275d8dfc8d0b5fbaa0 by Alexey Rusakov on 23/06/2021 at 11:41..
Update to the new matrix-doc layout and tooling

Among things affecting Quotient, the update involved moving API files
from api/ to data/api/, adding extensions to event schema files, and
switching from ReStructured Text to Markdown as a lightweight markup
language. This commit updates the build system and GTAD configuration
to accommodate for these.

The build system is also more robust now in choosing whether the
update-api target should be provided. Previously the target was provided
whenever GTAD_PATH and MATRIX_DOC_PATH were specified, even if they
did not point to anything valid. CMake now checks that MATRIX_DOC_PATH
is an actual directory and that GTAD_PATH points to an actual file.
https://invent.kde.org/neon/forks/libquotient/-/commit/607d8603b6d5b8409aa3f0275d8dfc8d0b5fbaa0

Git commit ebea54ba87558e50604976821f378d125f6b498e by Alexey Rusakov on 23/06/2021 at 11:42..
Re-generated API files according to the previous commit

Only API-preserving changes are included in this branch (0.7 will have
all changes).
https://invent.kde.org/neon/forks/libquotient/-/commit/ebea54ba87558e50604976821f378d125f6b498e

Git commit fefa95b86c31f3b7e46fc28327b23050cbadedb9 by Alexey Rusakov on 23/06/2021 at 14:45..
Update to the new matrix-doc layout and tooling

Among things affecting Quotient, the update involved moving API files
from api/ to data/api/, adding extensions to event schema files, and
switching from ReStructured Text to Markdown as a lightweight markup
language. This commit updates the build system and GTAD configuration
to accommodate for these.

The build system is also more robust now in choosing whether the
update-api target should be provided. Previously the target was provided
whenever GTAD_PATH and MATRIX_DOC_PATH were specified, even if they
did not point to anything valid. CMake now checks that MATRIX_DOC_PATH
is an actual directory and that GTAD_PATH points to an actual file.

# Conflicts:
#	CMakeLists.txt
https://invent.kde.org/neon/forks/libquotient/-/commit/fefa95b86c31f3b7e46fc28327b23050cbadedb9

Git commit 653932bb30a4c3111dc1f99a641a011f10f21edd by Alexey Rusakov on 23/06/2021 at 16:59..
Require ClangFormat 10 or newer, if used
https://invent.kde.org/neon/forks/libquotient/-/commit/653932bb30a4c3111dc1f99a641a011f10f21edd

Git commit 65e6ecd9711372e1e2afde769967ee46b3920307 by Alexey Rusakov on 23/06/2021 at 17:12..
*.mustache: Drop a stray leading end-of-line

An SPDX comment in the source code did not collapse entirely.
https://invent.kde.org/neon/forks/libquotient/-/commit/65e6ecd9711372e1e2afde769967ee46b3920307

Git commit 0d4315008374d9a4dfb11f934875b1a16670ec74 by Alexey Rusakov on 23/06/2021 at 17:12..
Re-generate API files
https://invent.kde.org/neon/forks/libquotient/-/commit/0d4315008374d9a4dfb11f934875b1a16670ec74

Git commit 466fe1a43389ac1d7408d32eee3e85e8b074b4bd by GitHub (on behalf of Alexey Rusakov) on 23/06/2021 at 18:16..
Step to Ubuntu 20.04; drop (old) E2EE code building
https://invent.kde.org/neon/forks/libquotient/-/commit/466fe1a43389ac1d7408d32eee3e85e8b074b4bd

Git commit 780d1b61c37a89f93eb58fb271083444f775acd2 by Alexey Rusakov on 27/06/2021 at 05:11..
Retain the current room member avatar when renaming

Closes #481. Note: the library doesn't even have the API in User
to set per-room avatars; one still can achieve that by calling
Room::setState<RoomMemberEvent>(...) though (and it's likely to be _the_
recommended way to deal with per-room user profiles in 0.7, with User
being entirely deprecated).
https://invent.kde.org/neon/forks/libquotient/-/commit/780d1b61c37a89f93eb58fb271083444f775acd2

Git commit 45d9745fd9c093875e67e92cd69543adfc707644 by Alexey Rusakov on 27/06/2021 at 05:15..
Room::processEphemeralEvents(): refactoring
https://invent.kde.org/neon/forks/libquotient/-/commit/45d9745fd9c093875e67e92cd69543adfc707644

Git commit ac8a4487e0254386462c43bfc0aeef8412854117 by Alexey Rusakov on 28/06/2021 at 18:32..
gtad.yaml: update for use with GTAD pre-0.8
https://invent.kde.org/neon/forks/libquotient/-/commit/ac8a4487e0254386462c43bfc0aeef8412854117

Git commit 1e70bbb4906f661a11856215556025ba86aac196 by Alexey Rusakov on 28/06/2021 at 19:04..
gtad.yaml: update for use with GTAD pre-0.8
https://invent.kde.org/neon/forks/libquotient/-/commit/1e70bbb4906f661a11856215556025ba86aac196

Git commit cfaad642038b215fb8239875c5c8303c53241929 by Alexey Rusakov on 28/06/2021 at 19:22..
.appveyor.yml: drop old E2EE code from testing
https://invent.kde.org/neon/forks/libquotient/-/commit/cfaad642038b215fb8239875c5c8303c53241929

Git commit ab61344a34fea54d540afbff875abe92d68cf529 by Alexey Rusakov on 28/06/2021 at 19:31..
.appveyor.yml: use an existing Qt 5.9 config
https://invent.kde.org/neon/forks/libquotient/-/commit/ab61344a34fea54d540afbff875abe92d68cf529

Git commit 3e0483df2d7c9d95ae633a03e792b65455cf0d1b by Alexey Rusakov on 28/06/2021 at 20:45..
.appveyor.yml: typo fix
https://invent.kde.org/neon/forks/libquotient/-/commit/3e0483df2d7c9d95ae633a03e792b65455cf0d1b

Git commit 0735daf3c905c2758aa89dff02570789804b9e8f by Alexey Rusakov on 29/06/2021 at 06:54..
.appveyor.yml: And another typo fix
https://invent.kde.org/neon/forks/libquotient/-/commit/0735daf3c905c2758aa89dff02570789804b9e8f

Git commit 32d6616677bc4a94554527110e8d227aaf3aea34 by Alexey Rusakov on 29/06/2021 at 07:41..
More re-generated API files (only doc-comments updated)

All actual updates to the API go to 0.7.
https://invent.kde.org/neon/forks/libquotient/-/commit/32d6616677bc4a94554527110e8d227aaf3aea34

Git commit 7f4ef8b303c36831a9172a1fc60888e906fc9b93 by Alexey Rusakov on 30/06/2021 at 18:10..
Add a commented out delimiter override example
https://invent.kde.org/neon/forks/libquotient/-/commit/7f4ef8b303c36831a9172a1fc60888e906fc9b93

Git commit b64bfa8f72084d9d9397001a735e985a4bf94e56 by Alexey Rusakov on 02/07/2021 at 08:33..
Abandon BaseJob::Query - Mustache template
https://invent.kde.org/neon/forks/libquotient/-/commit/b64bfa8f72084d9d9397001a735e985a4bf94e56

Git commit 7aa6e7c300779f652558397bcb7bb3b726d30cb9 by Alexey Rusakov on 02/07/2021 at 08:34..
Abandon BaseJob::Query - generated API files
https://invent.kde.org/neon/forks/libquotient/-/commit/7aa6e7c300779f652558397bcb7bb3b726d30cb9

Git commit 74dda96855b6245b09a8f7eb0512b4457b18a6b7 by Alexey Rusakov on 02/07/2021 at 08:35..
Actually delete BaseJob::Query

It was a tiny wrapper around QUrlQuery to facilitate creation from
an initializer list - however, Mustache templates long changed to
not actually used that additional constructor.
https://invent.kde.org/neon/forks/libquotient/-/commit/74dda96855b6245b09a8f7eb0512b4457b18a6b7

Git commit d75b24e3d86e48585af62954e569b806ef1fa552 by Alexey Rusakov on 02/07/2021 at 16:18..
Room::memberJoinState(): return Leave if user == nullptr
https://invent.kde.org/neon/forks/libquotient/-/commit/d75b24e3d86e48585af62954e569b806ef1fa552

Git commit bc05d7b2f525d0f9af29f2fc35ce12bf6fe792a7 by Alexey Rusakov on 10/07/2021 at 09:45..
Room: fix the read markers/receipts confusion

This turns the design changes laid out in #464 comments to code:
- readMarker() now returns the fully read marker, unlike
  readMarker(User*) that returns a read receipt, even when called for
  the local user.
- Private::setLastReadEvent() -> setLastReadReceipt(), incorporating
  the "promotion" logic from promoteReadReceipt().
- The above makes promoteReadReceipt() unneeded; the remaining piece
  of logic that recalculates the number of unread messages is put to
  its own method - Private::recalculateUnreadCount().
- Private::updateUnreadCount() is only slightly refreshed, continues
  to use the fully read marker position (as it used to).
- Now that read receipts and fully read markers are managed separately,
  Private::setLastReadReceipt() has got its counterpart,
  Private::setFullyReadMarker(); both only update their respective
  markers locally (emitting signals as needed), without interaction
  with the homeserver.
- Private::markMessagesAsRead() now delegates updating the fully read
  marker to setFullyReadMarker() and on top of that sends the new
  fully read marker to the homeserver.
- Private::serverReadMarker -> fullyReadUntilEventId (to be really clear
  what it stores).
- The hand-written PostReadMarkersJob is replaced with the generated
  SetReadMarkerJob that does the same thing (and can update the read
  receipt on top, though the current code doesn't use that).
https://invent.kde.org/neon/forks/libquotient/-/commit/bc05d7b2f525d0f9af29f2fc35ce12bf6fe792a7

Git commit cade454debdb2305302a142d4d392d5c49d0de75 by Alexey Rusakov on 10/07/2021 at 16:38..
Room: refactoring around logging (esp. profile logs)
https://invent.kde.org/neon/forks/libquotient/-/commit/cade454debdb2305302a142d4d392d5c49d0de75

Git commit 7b65051e959968fe538f40c975d85757cfcc7df7 by Alexey Rusakov on 10/07/2021 at 16:38..
Fix Room::processAccountDataEvent() return value
https://invent.kde.org/neon/forks/libquotient/-/commit/7b65051e959968fe538f40c975d85757cfcc7df7

Git commit b04ff258cc60687fadf0129eba0be2071f0da00c by Alexey Rusakov on 10/07/2021 at 16:39..
Update and extend doc-comments for read marker-related methods
https://invent.kde.org/neon/forks/libquotient/-/commit/b04ff258cc60687fadf0129eba0be2071f0da00c

Git commit 90a5ad87ac455d1d1eb6401824312b28a318fddb by Alexey Rusakov on 10/07/2021 at 18:43..
Merge branch '0.6.x' into kitsune-fix-read-receipts-and-markers-0.6
https://invent.kde.org/neon/forks/libquotient/-/commit/90a5ad87ac455d1d1eb6401824312b28a318fddb

Git commit 9edfefe9b209583d18ce92e7ffd73e8aa1f3ef1e by Alexey Rusakov on 11/07/2021 at 15:51..
Fix Room::processAccountDataEvent() return value

(cherry picked from commit 7b65051e959968fe538f40c975d85757cfcc7df7)
https://invent.kde.org/neon/forks/libquotient/-/commit/9edfefe9b209583d18ce92e7ffd73e8aa1f3ef1e

Git commit adb6725c04918d1323b4fc4e3a8cba91ae1dde60 by Alexey Rusakov on 11/07/2021 at 15:52..
Fix Room::processAccountDataEvent() return value

(cherry picked from commit 7b65051e959968fe538f40c975d85757cfcc7df7)
(cherry picked from commit 9edfefe9b209583d18ce92e7ffd73e8aa1f3ef1e)
https://invent.kde.org/neon/forks/libquotient/-/commit/adb6725c04918d1323b4fc4e3a8cba91ae1dde60

Git commit a83ec9004f52074ba43c17c1113f05db55584067 by Alexey Rusakov on 14/07/2021 at 12:28..
CMakeLists: fixed potential linking errors around quotient_common.h

quotient_common.h has Q_NAMESPACE but no own compilation unit, and moc
was not called on it either - using metaobject data on an enumeration
defined in that file leads to a linking error due to sharedMetaObject
not being defined. The fix makes so that the file is detected by automoc
with the respective definition being generated.
https://invent.kde.org/neon/forks/libquotient/-/commit/a83ec9004f52074ba43c17c1113f05db55584067

Git commit 8dcb1868adc022efe3fde1fdb99fef2b6634c82c by Alexey Rusakov on 14/07/2021 at 12:31..
SyncData::parseJson(): fix incorrect reserve() arg

That is unlikely to impact performance, since reserve() is usually
called only once per given JSON object (`{ "join": { ... } }`).
https://invent.kde.org/neon/forks/libquotient/-/commit/8dcb1868adc022efe3fde1fdb99fef2b6634c82c

Git commit 5a200039d6a34815b29c4a918bca8fa451c61f45 by Alexey Rusakov on 14/07/2021 at 17:54..
SyncData::parseJson(): further minor optimisation

Just to align with the similar changes coming in 0.7
https://invent.kde.org/neon/forks/libquotient/-/commit/5a200039d6a34815b29c4a918bca8fa451c61f45

Git commit 3d2af27dbba9bf9de238002cb64d6f8046a25a2b by Alexey Rusakov on 14/07/2021 at 17:55..
User::rename(): actually build on the current state

This is a further extension of #481 fix that takes the whole current
state event content, rather than just the avatar URL.
https://invent.kde.org/neon/forks/libquotient/-/commit/3d2af27dbba9bf9de238002cb64d6f8046a25a2b

Git commit e12d7ba24f2fb833255f8fecd80cafa9f06dbadf by Alexey Rusakov on 16/07/2021 at 17:58..
Merge branch 'kitsune-fix-read-receipts-and-markers-0.6' into 0.6.x
https://invent.kde.org/neon/forks/libquotient/-/commit/e12d7ba24f2fb833255f8fecd80cafa9f06dbadf

Git commit 9a5fa623c17f5644da7cdb459ade86bc8e1cdbf3 by Alexey Rusakov on 16/07/2021 at 20:09..
Officially drop Qt Multimedia with Qt 6

Closes #483.
https://invent.kde.org/neon/forks/libquotient/-/commit/9a5fa623c17f5644da7cdb459ade86bc8e1cdbf3

Git commit 0cb9a462945b1a9dd30979e9b97415dff16816e0 by Alexey Rusakov on 16/07/2021 at 20:09..
UriResolver: fix clang-tidy warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/0cb9a462945b1a9dd30979e9b97415dff16816e0

Git commit e9dace0e22a2aa3727bc842a30b4ad504029c0fc by Alexey Rusakov on 16/07/2021 at 20:09..
Log thumbnail requests in their own category

As pointed out by one of users, thumbnail requests produce quite a bit
of logging traffic, so it's better to manage them separately.
https://invent.kde.org/neon/forks/libquotient/-/commit/e9dace0e22a2aa3727bc842a30b4ad504029c0fc

Git commit 680d51c4686ab5645405a0ca9631b71a567eaefa by Alexey Rusakov on 16/07/2021 at 20:09..
SyncData::parseJson(): minor optimisation
https://invent.kde.org/neon/forks/libquotient/-/commit/680d51c4686ab5645405a0ca9631b71a567eaefa

Git commit d85c63ffaf776683a74d0a20dcdb76f7ade8461b by Alexey Rusakov on 16/07/2021 at 20:11..
User::rename(): don't discard the current state

Closes #481.
https://invent.kde.org/neon/forks/libquotient/-/commit/d85c63ffaf776683a74d0a20dcdb76f7ade8461b

Git commit e3bdbc84ec5ada04e436dba9067d902e2c6c030a by Alexey Rusakov on 18/07/2021 at 13:53..
CMakeLists: fixed potential linking errors around quotient_common.h

quotient_common.h has Q_NAMESPACE but no own compilation unit, and moc
was not called on it either - using metaobject data on an enumeration
defined in that file leads to a linking error due to sharedMetaObject
not being defined. The fix makes so that the file is detected by automoc
with the respective definition being generated.

Cherry-picked from a83ec900 (0.6.x branch).
https://invent.kde.org/neon/forks/libquotient/-/commit/e3bdbc84ec5ada04e436dba9067d902e2c6c030a

Git commit 004ebf8d5ba095ca1b11e30d86cedc2ff8c0cfe7 by Alexey Rusakov on 18/07/2021 at 16:22..
Room::postFile(): adjust to the changed RoomMessageEvent API

9a5fa623 dropped one of RoomMessageEvent constructors for Qt 6 in order
to address #483 - breaking the build with Qt 6 along the way, as
Room::postFile() relied on that constructor. This commit changes
Room::postFile() in turn, deprecating the current signature and adding
a new one that accepts an EventContent object rather than a path to
a file. In order to achieve that, FileInfo and ImageInfo classes have
gained new constructors that accept QFileInfo instead of the legacy
series of parameters, streamlining usage of EventContent structures.
https://invent.kde.org/neon/forks/libquotient/-/commit/004ebf8d5ba095ca1b11e30d86cedc2ff8c0cfe7

Git commit 86fe0a8f0682c0122439d53cc96b4b742a69ffcf by Alexey Rusakov on 18/07/2021 at 16:24..
Make EventContent::TypedBase() constructor protected

TypedBase is an abstract class; constructing it doesn't make sense. But
even if it were not abstract, it's not supposed to be instantiated.
https://invent.kde.org/neon/forks/libquotient/-/commit/86fe0a8f0682c0122439d53cc96b4b742a69ffcf

Git commit 6d24915e4bdd56dbdace8358297ee9d2d9aa83a0 by Alexey Rusakov on 18/07/2021 at 16:55..
Revert previous commit

Q_DECLARE_METATYPE is really unhappy about types without
a public default constructor.
https://invent.kde.org/neon/forks/libquotient/-/commit/6d24915e4bdd56dbdace8358297ee9d2d9aa83a0

Git commit 110190d48a80a471e6d10d048602390b35e7ed07 by Alexey Rusakov on 18/07/2021 at 17:13..
Re-apply the previous commit and actually fix the breakage

Ok, it was stupid to delete #include <QtCore/QMetaType> in 004ebf8d and
then to expect that Qt macros would still work, given that I don't use
QObject. In my defense I can only say that with Qt 6 it still compiled.
https://invent.kde.org/neon/forks/libquotient/-/commit/110190d48a80a471e6d10d048602390b35e7ed07

Git commit c05b5c2b79f9ab301fee587ee781b9c8e18b8a2f by Alexey Rusakov on 18/07/2021 at 18:09..
MembershipType -> Membership, also used for JoinState

Instead of being defined independently, JoinState now uses values from
the Membership enumeration (former MemberEventContent::MembershipType)
that was moved to quotient_common.h for that purpose. Both enumerations
gained a Q_FLAG_NS decoration and operator<< overrides that strip
"Quotient::" prefix when dumping member/join state values to the log -
obviating toCString(JoinState) along the way. Quotient::MembershipType
alias is deprecated from now.
https://invent.kde.org/neon/forks/libquotient/-/commit/c05b5c2b79f9ab301fee587ee781b9c8e18b8a2f

Git commit e05402045261a404ad5d8add63b82672d3d9aebb by Alexey Rusakov on 18/07/2021 at 18:09..
Fix building with Qt 5.12
https://invent.kde.org/neon/forks/libquotient/-/commit/e05402045261a404ad5d8add63b82672d3d9aebb

Git commit 3c28d13c1a61999e7c3141f3ca08b5b734bd160c by Alexey Rusakov on 18/07/2021 at 18:09..
Introduce to_array() to fix building on macOS

A previous incarnation, make_array, existed in basejob.cpp before.
The new direction taken by C++20 is to either deduce the array (but
the used Apple standard library doesn't have deduction guides yet) or
to use to_array() that converts a C array to std::array. This latter
option is taken here, with to_array() defined in quotient_common.h
until we move over to C++20.
https://invent.kde.org/neon/forks/libquotient/-/commit/3c28d13c1a61999e7c3141f3ca08b5b734bd160c

Git commit e4a08bc431be9a2b680a4cd70f2ceda07c99b7bf by Alexey Rusakov on 18/07/2021 at 18:10..
Fix bit rot in comments
https://invent.kde.org/neon/forks/libquotient/-/commit/e4a08bc431be9a2b680a4cd70f2ceda07c99b7bf

Git commit 2187f26ebdc9edf7b3cbfa1d208c03c4384f4135 by Alexey Rusakov on 18/07/2021 at 18:56..
Add a missing #include

Without this, it compiles on Linux but on macOS and Windows.
https://invent.kde.org/neon/forks/libquotient/-/commit/2187f26ebdc9edf7b3cbfa1d208c03c4384f4135

Git commit e4bfe89b3b2fea57a7267abb7cf892e15f1deeb5 by Alexey Rusakov on 18/07/2021 at 20:15..
Merge branch 'kitsune-member-state-enum' into master
https://invent.kde.org/neon/forks/libquotient/-/commit/e4bfe89b3b2fea57a7267abb7cf892e15f1deeb5

Git commit 2f0ea91020d47cf1c3ac2bf6b0c53aa9afc6ddeb by Alexey Rusakov on 19/07/2021 at 16:21..
Fix m.read getting stuck behind m.fully_read
https://invent.kde.org/neon/forks/libquotient/-/commit/2f0ea91020d47cf1c3ac2bf6b0c53aa9afc6ddeb

Git commit 52beda703bd683944ce569c50bccde7ba9e5a0ac by Alexey Rusakov on 19/07/2021 at 20:05..
addHistoricalMessageEvents(): restore force-recount logic

Pre-e12d7ba2, addHistoricalMessageEvents() triggered recounting and
emitting unreadMessagesChanged() even if the number remained the same.
This logic has been lost when refactoring the code; now it's back there
again.
https://invent.kde.org/neon/forks/libquotient/-/commit/52beda703bd683944ce569c50bccde7ba9e5a0ac

Git commit cfe15ce7c3bf4bbd7e80d29fb708d5635c1ef001 by Alexey Rusakov on 20/07/2021 at 17:26..
Promote read receipts/marker in addNewMessageEvents()

Read marker promotion worked before the rework - and it works again
with this commit. Read receipts are promoted from anywhere, the fully
read marker is only promoted if it's adjacent to the batch just added.
https://invent.kde.org/neon/forks/libquotient/-/commit/cfe15ce7c3bf4bbd7e80d29fb708d5635c1ef001

Git commit 1d19a08e91e239eb9ee86e83bad346e2c742331c by Alexey Rusakov on 20/07/2021 at 21:15..
Merge branch 'kitsune-read-receipts-markers-part2' into 0.6.x
https://invent.kde.org/neon/forks/libquotient/-/commit/1d19a08e91e239eb9ee86e83bad346e2c742331c

Git commit f340d73ae5dac0d0cfee732aabbd5222c7be16dd by Alexey Rusakov on 24/07/2021 at 17:19..
Make operator ""_ls constexpr
https://invent.kde.org/neon/forks/libquotient/-/commit/f340d73ae5dac0d0cfee732aabbd5222c7be16dd

Git commit cddf3c6a2ab7481e5816ca7632b9f919efa0ac40 by Alexey Rusakov on 24/07/2021 at 18:56..
Wrap SyncRoomData counters into Omittables

Also: introduce a merge(T1&, const Omittable<T2>&) that does pretty much
the same as Omittable<T1>::merge(const Omittable<T2>&) except it works
on non-omittables as the left/first operand.
The change removes the need for a clumsy -2 fallback in unreadCount,
and makes the logic loading those counters cleaner along the way.
https://invent.kde.org/neon/forks/libquotient/-/commit/cddf3c6a2ab7481e5816ca7632b9f919efa0ac40

Git commit 45a2e6f7a8dba592f87b17956619c2bc245d1538 by Alexey Rusakov on 24/07/2021 at 19:06..
Room::Private::sync/historyEdge()

Move Room::sync/historyEdge() implementation to Room::Private, so that
internal logic could use the same readable shortcuts without q->
prefixes, instead of timeline.crend() and timeline.cend() that are much
less readable.
https://invent.kde.org/neon/forks/libquotient/-/commit/45a2e6f7a8dba592f87b17956619c2bc245d1538

Git commit 2f35303d2fbcf0e0fc9727c327a6c98f2da8648d by Alexey Rusakov on 24/07/2021 at 19:43..
Fix unread counter left intact after loading backscroll

Another regression after the read receipts/markers rework,
most prominently seen when a room has "0+" unread messages and the first
historical batch gets loaded.
https://invent.kde.org/neon/forks/libquotient/-/commit/2f35303d2fbcf0e0fc9727c327a6c98f2da8648d

Git commit ef4957eb544ccb3824c4e5ac00b724192b76f1f2 by Alexey Rusakov on 24/07/2021 at 19:53..
Room::setLastDisplayedEventId: Update local read receipt immediately

There is no harm in updating it locally, as read receipts are only
supposed to move forwards; if an update from another client of the same
user arrives the next millisecond, it will only be incorporated if it
points to an even newer event (exactly as would be expected). In any
case, read receipts are more for others than for yourself.
https://invent.kde.org/neon/forks/libquotient/-/commit/ef4957eb544ccb3824c4e5ac00b724192b76f1f2

Git commit 240ab55c1ec700d5d9c5456fe120c4af17767778 by Alexey Rusakov on 25/07/2021 at 07:04..
Room: update cache state if needed after loading history

For now this is to update saved unread counts.
https://invent.kde.org/neon/forks/libquotient/-/commit/240ab55c1ec700d5d9c5456fe120c4af17767778

Git commit 4ef72d95868451b7e53bd49a873648332a121130 by Alexey Rusakov on 28/07/2021 at 01:57..
setFirst/LastDisplayedEvent(): warn about unloaded events
https://invent.kde.org/neon/forks/libquotient/-/commit/4ef72d95868451b7e53bd49a873648332a121130

Git commit 000b57306afe450c21df3aa95313567614c34516 by Alexey Rusakov on 28/07/2021 at 13:08..
.clang-format: revert BraceWrapping.AfterControlStatement

It triggers a bug in libformat that prevents
AllowShortFunctionsOnASingleLine to do its job:
https://bugs.llvm.org/show_bug.cgi?id=47936
https://invent.kde.org/neon/forks/libquotient/-/commit/000b57306afe450c21df3aa95313567614c34516

Git commit eed5a6f127ec3bb1553ac629457f196d8893665a by Alexey Rusakov on 28/07/2021 at 13:08..
Room::usersAtEventId(): switch from QMultiHash to QHash of QSets

While slightly more complex for updating, this allows COW to kick in in
the read accessor; using QSet instead of QList also provides better
consistency guarantees. For QML both are converted to an Array-like
collection since Qt 5.15; Qt 5.12 turns QSet<> in a QVariantList,
according to the documentation, which is quite reasonable too.
https://invent.kde.org/neon/forks/libquotient/-/commit/eed5a6f127ec3bb1553ac629457f196d8893665a

Git commit ed1b034089dfc1948acaa80a5200cb0df28d0c1c by Alexey Rusakov on 28/07/2021 at 13:46..
SyncData: minor update to the cache version

The minor component is now updated in .cpp, not in .h.
https://invent.kde.org/neon/forks/libquotient/-/commit/ed1b034089dfc1948acaa80a5200cb0df28d0c1c

Git commit 277f43defe3fa55ff32fe53952c6331a81d65a20 by Alexey Rusakov on 28/07/2021 at 13:46..
Room: fix the read markers/receipts confusion

This turns the design changes laid out in #464 comments to code, as of
0.6.x branch (0.7 API will be introduced separately):
- readMarker() now returns the fully read marker, unlike
  readMarker(User*) that returns a read receipt, even when called for
  the local user.
- Private::setLastReadEvent() -> setLastReadReceipt(), incorporating
  the "promotion" logic from promoteReadReceipt().
- The above makes promoteReadReceipt() unneeded; the remaining piece
  of logic that recalculates the number of unread messages is put to
  its own method - Private::recalculateUnreadCount().
- Private::updateUnreadCount() is only slightly refreshed, continues
  to use the fully read marker position (as it used to).
- Now that read receipts and fully read markers are managed separately,
  Private::setLastReadReceipt() has got its counterpart,
  Private::setFullyReadMarker(); both only update their respective
  markers locally (emitting signals as needed), without interaction
  with the homeserver.
- Private::markMessagesAsRead() now delegates updating the fully read
  marker to setFullyReadMarker() and on top of that sends the new
  fully read marker to the homeserver.
- Private::serverReadMarker -> fullyReadUntilEventId (to be really clear
  what it stores).
- The hand-written PostReadMarkersJob is replaced with the generated
  SetReadMarkerJob that does the same thing (and can update the read
  receipt on top).
https://invent.kde.org/neon/forks/libquotient/-/commit/277f43defe3fa55ff32fe53952c6331a81d65a20

Git commit 70035f204345b09305fbb487208708e69bd79a53 by Alexey Rusakov on 30/07/2021 at 05:41..
Formatting
https://invent.kde.org/neon/forks/libquotient/-/commit/70035f204345b09305fbb487208708e69bd79a53

Git commit 42f20f827565a2bdd9e1373b7ee2c408991b9d44 by Alexey Rusakov on 30/07/2021 at 06:07..
.clang-format: add DEFINE_EVENT_TYPEID to StatementMacros
https://invent.kde.org/neon/forks/libquotient/-/commit/42f20f827565a2bdd9e1373b7ee2c408991b9d44

Git commit e0d9125de7ac132c2a54152015687abbe5e73193 by Alexey Rusakov on 30/07/2021 at 06:10..
Room: drop 0.6 deprecations; deprecate RoomAliasEvent

Namely memberCount(), localAliases(), remoteAliases(), timelineEdge().
https://invent.kde.org/neon/forks/libquotient/-/commit/e0d9125de7ac132c2a54152015687abbe5e73193

Git commit 02eac9e9ff573d85677f900288e82473f5296ee3 by Alexey Rusakov on 30/07/2021 at 06:12..
Use a better type in makeRedacted
https://invent.kde.org/neon/forks/libquotient/-/commit/02eac9e9ff573d85677f900288e82473f5296ee3

Git commit 7ee1681d7640b7e7683f7bb40bf768704a48832c by Alexey Rusakov on 30/07/2021 at 06:22..
Clean up after the previous commit

RoomAliasesEvent is no more even registered (meaning that the library
will load m.room.aliases as unknown state events); quotest code updated
to use historyEdge() instead of timelineEdge().
https://invent.kde.org/neon/forks/libquotient/-/commit/7ee1681d7640b7e7683f7bb40bf768704a48832c

Git commit 62c829cc8de8a870c08926c41331f2766e766f37 by Alexey Rusakov on 30/07/2021 at 06:31..
Quotient::ReadReceipt; deprecated readMarker()

It's now possible to get receipts along with their timestamps by calling
Room::lastReadReceipt(). Together this new method, fullyReadMarker(),
and lastFullyReadEventId() deprecate readMarker() overloads and
readMarkerEventId() respectively.

lastFullyReadEventId is also a Q_PROPERTY (deprecating
readMarkerEventId); readMarkerMoved() signal is deprecated by
fullyReadMarkerMoved(), while readMarkerForUserMoved() is deprecated
in favour of existing lastReadEventChanged().
https://invent.kde.org/neon/forks/libquotient/-/commit/62c829cc8de8a870c08926c41331f2766e766f37

Git commit a2e8575f8b843eb9534c42b9c2864923a0329119 by Alexey Rusakov on 30/07/2021 at 17:32..
Merge branch 'master' into kitsune-fix-read-receipts-and-markers
https://invent.kde.org/neon/forks/libquotient/-/commit/a2e8575f8b843eb9534c42b9c2864923a0329119

Git commit 2975b435f1ae198187183b883b5e666c7659e8fc by Alexey Rusakov on 30/07/2021 at 21:25..
Room::setReadReceipt()
https://invent.kde.org/neon/forks/libquotient/-/commit/2975b435f1ae198187183b883b5e666c7659e8fc

Git commit 6d558fa9c12b52fe3cc47cc143d0a758c4ea929a by Alexey Rusakov on 31/07/2021 at 06:30..
Add/update doc-comments on the new/updated methods

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/6d558fa9c12b52fe3cc47cc143d0a758c4ea929a

Git commit 5c3f853a04a0c1a2b360391a9f27e7c0fd9f42bd by Alexey Rusakov on 31/07/2021 at 06:33..
Room: Mark dependent Q_PROPERTYs as STORED false

hasUnreadMessages is derived from unreadCount; isFavourite/isLowPriority
effectively depend on tagNames.
https://invent.kde.org/neon/forks/libquotient/-/commit/5c3f853a04a0c1a2b360391a9f27e7c0fd9f42bd

Git commit 8398e7118503d51da431ba850812ec76d1976b67 by Alexey Rusakov on 31/07/2021 at 20:07..
Fix lack of percent encoding in User::fetchProfile

Users with slashes in their ids do it at their own peril of course but
to encode the id in the URL is a good thing in any case. Too bad it's
pretty invisible and has to be dealt with case by case, instead of GTAD
magically sticking QUrl::toPercentEncoding() where appropriate in
the generated code.
https://invent.kde.org/neon/forks/libquotient/-/commit/8398e7118503d51da431ba850812ec76d1976b67

Git commit f7a2e0f9885ecc622c67dd457993cb19c293f515 by Alexey Rusakov on 01/08/2021 at 15:17..
SyncRoomData: distinguish between omitted and 0 unread counters

This is a more conservative but less idiomatic.readable fix for entirely
missing notification_count/highlight_count. In reality, Synapse seems
to always send them; but that is not required by The Spec.
https://invent.kde.org/neon/forks/libquotient/-/commit/f7a2e0f9885ecc622c67dd457993cb19c293f515

Git commit 000710d2c78b0843d920b7cf983f693a3ddf193e by Alexey Rusakov on 01/08/2021 at 15:19..
Enhanced logging for read receipts
https://invent.kde.org/neon/forks/libquotient/-/commit/000710d2c78b0843d920b7cf983f693a3ddf193e

Git commit e4a8251d90c2e9f2847366085b3a2897a2d02201 by Alexey Rusakov on 01/08/2021 at 15:22..
Room::toJson(): save the last local user's read receipt

Read receipts are entangled with counting unread messages, and saving
them also helps in not sending receipts for too old events. Other users'
read receipts are still treated as truly ephemeral.
https://invent.kde.org/neon/forks/libquotient/-/commit/e4a8251d90c2e9f2847366085b3a2897a2d02201

Git commit b17867c2b74916055adbc158cdf6437b27bceb14 by Alexey Rusakov on 01/08/2021 at 15:47..
Room::setDisplayed(): Don't reset unread counters

Closes #489.
https://invent.kde.org/neon/forks/libquotient/-/commit/b17867c2b74916055adbc158cdf6437b27bceb14

Git commit ea1e849f617f62b3d209b2019e0daa3c6bed50f0 by Alexey Rusakov on 02/08/2021 at 07:02..
More doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/ea1e849f617f62b3d209b2019e0daa3c6bed50f0

Git commit 72643d2f90aa929ec5e44159f717057fdad56cbd by Alexey Rusakov on 02/08/2021 at 07:04..
Fix lack of percent encoding in User::load()

Users with slashes in their ids do it at their own peril of course but
to encode the id in the URL is a good thing in any case. Too bad it's
pretty invisible and has to be dealt with case by case, instead of GTAD
magically sticking QUrl::toPercentEncoding() where appropriate in
the generated code.
https://invent.kde.org/neon/forks/libquotient/-/commit/72643d2f90aa929ec5e44159f717057fdad56cbd

Git commit 1f52b5a2da9bce4d25f4c897370e58c8b6d56ba1 by Alexey Rusakov on 07/08/2021 at 09:08..
README.md: replace "PRs welcome" with a merge chance badge
https://invent.kde.org/neon/forks/libquotient/-/commit/1f52b5a2da9bce4d25f4c897370e58c8b6d56ba1

Git commit f7cbefe5ad626ae1798a5d7bb7546e89ad336acd by Alexey Rusakov on 07/08/2021 at 14:55..
API files: reformat after .clang-format change

See 000b5730.
https://invent.kde.org/neon/forks/libquotient/-/commit/f7cbefe5ad626ae1798a5d7bb7546e89ad336acd

Git commit f81aa4d723577ce30518424510e45ef39ff0e29e by Alexey Rusakov on 07/08/2021 at 16:59..
Drop an out-of-date comment

BaseJob::loadFromJson() does just fine without QStringViews.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/f81aa4d723577ce30518424510e45ef39ff0e29e

Git commit 35ce036407e1865402d01070e9680a9cda4f361c by Alexey Rusakov on 07/08/2021 at 20:06..
converters.h: (actually) enable QUrl; drop unused types

QUrl can now be converted even with QT_NO_URL_CAST_FROM_STRING; and it
can also be put to queries. QByteArray did not really need conversion
in JSON context; and QJsonObject is/was never used in queries.
https://invent.kde.org/neon/forks/libquotient/-/commit/35ce036407e1865402d01070e9680a9cda4f361c

Git commit 08d5cef8bbbef65c961370d4a9e2c48a6d7281f1 by Alexey Rusakov on 07/08/2021 at 20:08..
gtad.yaml: use QUrl where API uses 'format: uri'
https://invent.kde.org/neon/forks/libquotient/-/commit/08d5cef8bbbef65c961370d4a9e2c48a6d7281f1

Git commit bf6303c41264d913ca049009034aa948464b8f30 by Alexey Rusakov on 07/08/2021 at 20:14..
User::avatar: add const
https://invent.kde.org/neon/forks/libquotient/-/commit/bf6303c41264d913ca049009034aa948464b8f30

Git commit bd649c591fa020fde0bd56a63c13025097b831ae by Alexey Rusakov on 07/08/2021 at 20:25..
Update generated files

This uses API definition files from
https://github.com/matrix-org/matrix-doc/pull/3236, and additionally
makes uploadFile>content_uri to have 'format: uri' (as suggested in
the PR review). Only use this commit with the next one; alone it breaks
the build.
https://invent.kde.org/neon/forks/libquotient/-/commit/bd649c591fa020fde0bd56a63c13025097b831ae

Git commit e5a760371a158bec6a70353b96614611adecc4bc by Alexey Rusakov on 07/08/2021 at 20:25..
Update non-generated code to work with QUrls in CS API
https://invent.kde.org/neon/forks/libquotient/-/commit/e5a760371a158bec6a70353b96614611adecc4bc

Git commit 8093ea85347588431c0ddbf6e178a4db5f51b909 by Alexey Rusakov on 09/08/2021 at 20:27..
Enhanced logging for read receipts
https://invent.kde.org/neon/forks/libquotient/-/commit/8093ea85347588431c0ddbf6e178a4db5f51b909

Git commit c79dcb673b6f2888faa4b62cd53689fde9f7ea10 by Alexey Rusakov on 09/08/2021 at 20:29..
Room::toJson(): save the last local user's read receipt

Read receipts are entangled with counting unread messages, and saving
them also helps in not sending receipts for too old events. Other users'
read receipts are still treated as truly ephemeral.
https://invent.kde.org/neon/forks/libquotient/-/commit/c79dcb673b6f2888faa4b62cd53689fde9f7ea10

Git commit 4f08c88d234119c2a76874ebd2b1433b81992427 by Alexey Rusakov on 09/08/2021 at 20:29..
Room::setDisplayed(): Don't reset unread counters

Closes #489.
https://invent.kde.org/neon/forks/libquotient/-/commit/4f08c88d234119c2a76874ebd2b1433b81992427

Git commit f71dcc7571fe2d4e14e349a01bac474b2b8a553e by Alexey Rusakov on 09/08/2021 at 20:40..
Merge branch 'kitsune-fix-read-receipts-markers-part3' into 0.6.x
https://invent.kde.org/neon/forks/libquotient/-/commit/f71dcc7571fe2d4e14e349a01bac474b2b8a553e

Git commit 5d9443fccf2d336f16d6beacb5e1775c79123c02 by GitHub (on behalf of Alexey Rusakov) on 09/08/2021 at 20:58..
Merge pull request #492 from quotient-im/kitsune-qurl-in-csapi

Use QUrl in CS API backend
https://invent.kde.org/neon/forks/libquotient/-/commit/5d9443fccf2d336f16d6beacb5e1775c79123c02

Git commit 5276e4321c6b3348fc5b1d3d16f93131d9676e76 by Alexey Rusakov on 10/08/2021 at 06:10..
Room::Private::sync/historyEdge()

Move Room::sync/historyEdge() implementation to Room::Private, so that
internal logic could use the same readable shortcuts without q->
prefixes, instead of timeline.crend() and timeline.cend() that are much
less readable.
https://invent.kde.org/neon/forks/libquotient/-/commit/5276e4321c6b3348fc5b1d3d16f93131d9676e76

Git commit f46e19924a1c0a5ac3f1d2a489f8017a5e143fda by Alexey Rusakov on 10/08/2021 at 13:23..
Turn EventStatus from a class to a namespace

This wrapper only exists for an enum inside of it and dates back to
times when Qt meta-object system did not support free-standing enums.
https://invent.kde.org/neon/forks/libquotient/-/commit/f46e19924a1c0a5ac3f1d2a489f8017a5e143fda

Git commit ee1020881e8a0939734d8dd0d85f94ae9330350c by Alexey Rusakov on 21/08/2021 at 09:38..
Merge branch 'kitsune/event-status-namespace'
https://invent.kde.org/neon/forks/libquotient/-/commit/ee1020881e8a0939734d8dd0d85f94ae9330350c

Git commit 14d896c9d659d3d3c4f9c4d6eeb50e59a2a002a9 by Alexey Rusakov on 21/08/2021 at 09:40..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/14d896c9d659d3d3c4f9c4d6eeb50e59a2a002a9

Git commit 71384a49c3a053e715241172d9d9893bb1742e6b by Alexey Rusakov on 22/08/2021 at 17:37..
Mustache: avoid BaseJob::Data

It's about to be deprecated in the next commits.
https://invent.kde.org/neon/forks/libquotient/-/commit/71384a49c3a053e715241172d9d9893bb1742e6b

Git commit ed24065f2e9b8fce059c54137c04b790c6ce4fd1 by Alexey Rusakov on 22/08/2021 at 18:05..
Regenerate API files
https://invent.kde.org/neon/forks/libquotient/-/commit/ed24065f2e9b8fce059c54137c04b790c6ce4fd1

Git commit 40548a7995147f3f99212928ae27047de7a79618 by Alexey Rusakov on 22/08/2021 at 18:10..
Deprecate BaseJob::Data

The grand plan is to get rid of `BaseJob` and turn job invocations
to function calls returning `QFuture`. `RequestData` will stay though,
feeding data into those calls.
https://invent.kde.org/neon/forks/libquotient/-/commit/40548a7995147f3f99212928ae27047de7a79618

Git commit c50420a0f2df7a7bf291312c38ac43e2c9f58141 by Alexey Rusakov on 22/08/2021 at 18:15..
Drop QMatrixClient namespace alias
https://invent.kde.org/neon/forks/libquotient/-/commit/c50420a0f2df7a7bf291312c38ac43e2c9f58141

Git commit c26015503aa0fbca37abdfc4870ac94bb7befeee by Alexey Rusakov on 22/08/2021 at 18:19..
Drop other stuff deprecated pre- or early 0.6

BaseJob: StatusCode::JsonParseError
Connection: resolved() and reconnected() signals; roomMap(); postReceipt()
User: bridged() and rawName()
ConnectionData: setHost() and setPort()
StateEventBase: prev_content()
https://invent.kde.org/neon/forks/libquotient/-/commit/c26015503aa0fbca37abdfc4870ac94bb7befeee

Git commit 776feaa5eeaffe78773aec9a4431fef147fa95c4 by Alexey Rusakov on 22/08/2021 at 18:21..
Use Q_DECL_DEPRECATED_X instead of \deprecated doc-comment

This still works with older moc yet produces actual warnings when
compiling C++ code.
https://invent.kde.org/neon/forks/libquotient/-/commit/776feaa5eeaffe78773aec9a4431fef147fa95c4

Git commit 395f3758e810fed6cd276a356fd5f0e955c5477e by Alexey Rusakov on 22/08/2021 at 18:22..
Settings: no more setToken() and accessToken(); deprecate clearAccessToken()

Access tokens should be stored with Qt Keychain that's about to come;
and these methods were deprecated since before 0.5.
https://invent.kde.org/neon/forks/libquotient/-/commit/395f3758e810fed6cd276a356fd5f0e955c5477e

Git commit fd42d1dbd29800ef53ab9997c948f39a92aa8bff by Alexey Rusakov on 22/08/2021 at 18:23..
RoomEvent: drop timestamp()

Use originTimestamp(); the corresponding Q_PROPERTY was not renamed
(in error) so it is now.
https://invent.kde.org/neon/forks/libquotient/-/commit/fd42d1dbd29800ef53ab9997c948f39a92aa8bff

Git commit 93cee89f9a99e51275ac9cd304180499b0543eea by Alexey Rusakov on 22/08/2021 at 18:45..
Fix building with MSVC
https://invent.kde.org/neon/forks/libquotient/-/commit/93cee89f9a99e51275ac9cd304180499b0543eea

Git commit 3cbc13a33c81a75e18c415bd31cc2156461ffa1f by Alexey Rusakov on 22/08/2021 at 18:58..
User::isGuest(): fix a clazy warning
https://invent.kde.org/neon/forks/libquotient/-/commit/3cbc13a33c81a75e18c415bd31cc2156461ffa1f

Git commit 2914657e594b46bcdc04d320732fa1799978c0a8 by Alexey Rusakov on 23/08/2021 at 07:12..
Merge branch 'kitsune/deprecations'
https://invent.kde.org/neon/forks/libquotient/-/commit/2914657e594b46bcdc04d320732fa1799978c0a8

Git commit 6953e55361f600a591c08b9cd287a350230b3ef8 by Alexey Rusakov on 23/08/2021 at 07:42..
Room: isMember(); memberState() only needs user id

Room::memberJoinState() was only used to check if the user has joined
the room (it couldn't be used for anything else), meaning that its best
replacement is actually not memberState() but isMember() introduced
hereby. It's also better to pass user ids instead of User objects to
memberState() and isMember() since that is enough to check membership.

# Conflicts:
#	lib/room.cpp
#	lib/room.h
https://invent.kde.org/neon/forks/libquotient/-/commit/6953e55361f600a591c08b9cd287a350230b3ef8

Git commit 49684766dd0a1916b551374aaa5a37c8f4a83d9d by Alexey Rusakov on 24/08/2021 at 00:25..
tests/CMakeLists.txt: align CMake required version

Following the library's CMakeLists file, it's 3.10.
https://invent.kde.org/neon/forks/libquotient/-/commit/49684766dd0a1916b551374aaa5a37c8f4a83d9d

Git commit 6d2a7b01c2af2270e47cd0e4d84b0dda686e982d by Alexey Rusakov on 24/08/2021 at 01:09..
Refresh documentation
https://invent.kde.org/neon/forks/libquotient/-/commit/6d2a7b01c2af2270e47cd0e4d84b0dda686e982d

Git commit 4f4387f91fd6efccf102e43aa593c09a9e50b42f by Alexey Rusakov on 24/08/2021 at 01:52..
0.6.8
https://invent.kde.org/neon/forks/libquotient/-/commit/4f4387f91fd6efccf102e43aa593c09a9e50b42f

Git commit 8d21c8a6579ad9c63e331ffb42e3ed81b9c73caf by Tobias Fella on 26/08/2021 at 16:16..
Add AccountRegistry

Basic session management class; Created from Quaternion's
AccountRegistry
and NeoChat's AccountListModel.
The connections can be accessed by the user's id, this technically
limits it to one connection for each matrix account.
https://invent.kde.org/neon/forks/libquotient/-/commit/8d21c8a6579ad9c63e331ffb42e3ed81b9c73caf

Git commit 6d55a2c27852f9285aa1b435a1fd56ba08aa83e5 by GitHub (on behalf of Alexey Rusakov) on 26/08/2021 at 19:36..
Merge pull request #497 from TobiasFella/accountregistry

Add AccountRegistry
https://invent.kde.org/neon/forks/libquotient/-/commit/6d55a2c27852f9285aa1b435a1fd56ba08aa83e5

Git commit f005f3b69651bd6d6f58879804e1281f6c08177a by Alexey Rusakov on 30/08/2021 at 10:36..
SettingsGroup, AccountSettings: simplify constructors

The parameter packs intended to pass organisation/application names to
QSettings never worked that way since Quotient::Settings didn't have
that parameter pack in its constructor. On the other hand, setting
organisation/application name using static methods before constructing
the first settings object has been working just fine so far. If someone
needs to create a settings object with customised org/app name for some
reason (sneaking settings from other apps?), those can be brought back
in a working manner and without breaking API/ABI even.
https://invent.kde.org/neon/forks/libquotient/-/commit/f005f3b69651bd6d6f58879804e1281f6c08177a

Git commit 06a8ef6ebed5962117121486059ba46dc7f6d4f9 by Alexey Rusakov on 30/08/2021 at 10:36..
Room: displayNameForHtml

This is useful for cases when the room display name is returned to QML
that doesn't have an equivalent of QString::toHtmlEscaped().
https://invent.kde.org/neon/forks/libquotient/-/commit/06a8ef6ebed5962117121486059ba46dc7f6d4f9

Git commit e2de07628f61c565ac8c85fa3aae84a5fa6feba3 by Tobias Fella on 31/08/2021 at 13:06..
Add functions and macros to query for Quotient's version
https://invent.kde.org/neon/forks/libquotient/-/commit/e2de07628f61c565ac8c85fa3aae84a5fa6feba3

Git commit 45d0e42f8380b829e6c5382ae927b9936f922668 by GitHub (on behalf of Alexey Rusakov) on 01/09/2021 at 06:32..
Merge pull request #498 from TobiasFella/versioninfo

Add functions and macros to query for Quotient's version
https://invent.kde.org/neon/forks/libquotient/-/commit/45d0e42f8380b829e6c5382ae927b9936f922668

Git commit 6be4436494506f2fa5dbbdc633577e059a422bfe by Alexey Rusakov on 01/09/2021 at 16:34..
Add Windows, CodeQL

Windows and CodeQL snippets picked from Quaternion
https://invent.kde.org/neon/forks/libquotient/-/commit/6be4436494506f2fa5dbbdc633577e059a422bfe

Git commit c813a084b6dc8206a9c7305bbb236e23edcb49e5 by Alexey Rusakov on 01/09/2021 at 16:35..
Fix building with MSVC

Turned out it was broken, and I was looking the other way.
https://invent.kde.org/neon/forks/libquotient/-/commit/c813a084b6dc8206a9c7305bbb236e23edcb49e5

Git commit 66795dbc90e5013eb5ddf941f7e462053a3d5229 by Alexey Rusakov on 01/09/2021 at 16:35..
Fix bin path differences between POSIX and Windows
https://invent.kde.org/neon/forks/libquotient/-/commit/66795dbc90e5013eb5ddf941f7e462053a3d5229

Git commit e150cdaf11800220f2cac0b6b348ebf8583514b0 by Alexey Rusakov on 01/09/2021 at 16:35..
Add update-api on Windows pipeline
https://invent.kde.org/neon/forks/libquotient/-/commit/e150cdaf11800220f2cac0b6b348ebf8583514b0

Git commit 339db5a0e3e458f12beeec57116514e88f8ab354 by Alexey Rusakov on 01/09/2021 at 16:35..
Change GTAD/matrix-doc paths

`${{ runner.workspace }}` is, unfortunately, not portable to Windows.
https://invent.kde.org/neon/forks/libquotient/-/commit/339db5a0e3e458f12beeec57116514e88f8ab354

Git commit db9dd0ea43f2140e0df72d05861939ee1cb98053 by Alexey Rusakov on 01/09/2021 at 16:35..
CMakeLists: fix resolving gtad on Windows
https://invent.kde.org/neon/forks/libquotient/-/commit/db9dd0ea43f2140e0df72d05861939ee1cb98053

Git commit 87d05252acc4ed94d24150eabb2dd1a1f700f46f by Alexey Rusakov on 01/09/2021 at 16:35..
CMakeLists: allow to pass clang-format options in CLANG_FORMAT

This supersedes passing clang-format options in a separate
CLANG_FORMAT_ARGS CMake variable.
https://invent.kde.org/neon/forks/libquotient/-/commit/87d05252acc4ed94d24150eabb2dd1a1f700f46f

Git commit 92efa87eff1b35bc857633af20ea8987d926dd5e by Alexey Rusakov on 01/09/2021 at 19:51..
Drop .appveyor.yml
https://invent.kde.org/neon/forks/libquotient/-/commit/92efa87eff1b35bc857633af20ea8987d926dd5e

Git commit c521332793e63cad244905e3abb20ded905444fa by GitHub (on behalf of Alexey Rusakov) on 02/09/2021 at 02:48..
Merge pull request #495 from quotient-im/kitsune-ci-windows-codeql

CI: add Windows, CodeQL
https://invent.kde.org/neon/forks/libquotient/-/commit/c521332793e63cad244905e3abb20ded905444fa

Git commit f14b04157a9cacaf60f815f164939cc42dad04da by Alexey Rusakov on 03/09/2021 at 04:53..
Require CMake 3.16; drop qmake; use C++20 and newer compilers

Also, refresh the documentation a bit.
https://invent.kde.org/neon/forks/libquotient/-/commit/f14b04157a9cacaf60f815f164939cc42dad04da

Git commit ee678fac0ee09c6262c7a39b2b1072660e6db9ca by Alexey Rusakov on 03/09/2021 at 04:53..
CI experiment: requires GCC 10 and Clang 11
https://invent.kde.org/neon/forks/libquotient/-/commit/ee678fac0ee09c6262c7a39b2b1072660e6db9ca

Git commit 2736eb8ff2e95daf6ec8b2616d70381054d1a238 by Alexey Rusakov on 03/09/2021 at 04:54..
CONTRIBUTING.md: update code conventions to C++20
https://invent.kde.org/neon/forks/libquotient/-/commit/2736eb8ff2e95daf6ec8b2616d70381054d1a238

Git commit df66314bb47f1a824f35e9d5c7764305a4f103cb by Alexey Rusakov on 03/09/2021 at 05:20..
Tacitly allow CMake 3.13 to keep LGTM working

Also: drop olm from the LGTM build environment, it's of no use there
for now.
https://invent.kde.org/neon/forks/libquotient/-/commit/df66314bb47f1a824f35e9d5c7764305a4f103cb

Git commit 9ec9f5c05ff32779c5ea76423adbe05487f37fa9 by GitHub (on behalf of Alexey Rusakov) on 03/09/2021 at 06:53..
Merge pull request #500 from quotient-im/kitsune/bump-minimal-versions

Require CMake 3.16, kindly ask for C++20; drop qmake
https://invent.kde.org/neon/forks/libquotient/-/commit/9ec9f5c05ff32779c5ea76423adbe05487f37fa9

Git commit 4bab0f2ef2c68b478d669f90557d6bef6332e823 by Tobias Fella on 05/09/2021 at 20:09..
Implement the mxc protocol in the NetworkAccessManager

Allows images to be loaded using the NetworkAccessManager instead of an
ImageProvider
https://invent.kde.org/neon/forks/libquotient/-/commit/4bab0f2ef2c68b478d669f90557d6bef6332e823

Git commit 67186252eac4f3890d5abae31e74efee956b2f5d by Tobias Fella on 05/09/2021 at 20:52..
Create a NAM for each thread
https://invent.kde.org/neon/forks/libquotient/-/commit/67186252eac4f3890d5abae31e74efee956b2f5d

Git commit 6d3bc1667e084fa2fc7b2c547374d2c62a29e8df by Tobias Fella on 07/09/2021 at 14:19..
Fix showing non-animated Images
https://invent.kde.org/neon/forks/libquotient/-/commit/6d3bc1667e084fa2fc7b2c547374d2c62a29e8df

Git commit e9214955da79c742ac7971239410b9809de869a7 by Alexey Rusakov on 08/09/2021 at 03:47..
Room: actually initialise read marker when needed

This fixes the `q->readMarker() != historyEdge()` assertion failure
occuring in recalculateUnreadCount() when new events from sync arrive
to a room with no read marker and all history loaded.
https://invent.kde.org/neon/forks/libquotient/-/commit/e9214955da79c742ac7971239410b9809de869a7

Git commit 9e548e0625a819052cd10d5c4bf129dde649a6a4 by Alexey Rusakov on 09/09/2021 at 17:31..
Straighten up file transfer cancellation

There was a mess with fileTransferCancelled(); it was only emitted when
a download (but not an upload) was cancelled; besides, in case of
downloads a file transfer info structure was getting deleted whereas
uploads left a file transfer in Cancelled status. This all now converges
on:
- fileTransferFailed() for both failures and cancellations (to simplify
  slot connection, and also to follow the practice in, e.g., Qt Network).
- the file transfer info structure is kept around in Cancelled status,
  following the logic used for failures. There's no particular cleanup
  which may become a problem if one uploads and cancels many times
  (download file transfers are keyed to event ids, mitigating
  the problem); this will be fixed in another commit.

Closes #503. Closes #504.
https://invent.kde.org/neon/forks/libquotient/-/commit/9e548e0625a819052cd10d5c4bf129dde649a6a4

Git commit c1015d78fc90972a87b02a7863a9148c446c94b1 by GitHub (on behalf of Tobias Fella) on 10/09/2021 at 15:36..
Update lib/networkaccessmanager.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/c1015d78fc90972a87b02a7863a9148c446c94b1

Git commit 3b383a6dcb75531ca7efcaa4afa28b92dbe15e3e by GitHub (on behalf of Tobias Fella) on 10/09/2021 at 15:36..
Update lib/networkaccessmanager.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/3b383a6dcb75531ca7efcaa4afa28b92dbe15e3e

Git commit 8dfa505066a03cc8450527699634fda71cbd8915 by Tobias Fella on 10/09/2021 at 19:41..
Return a failed MxcReply on invalid requests
https://invent.kde.org/neon/forks/libquotient/-/commit/8dfa505066a03cc8450527699634fda71cbd8915

Git commit 4106a073d03b4ba9176da24c6b169c5fc2c79fb4 by Tobias Fella on 10/09/2021 at 20:10..
Percent-encode all the things
https://invent.kde.org/neon/forks/libquotient/-/commit/4106a073d03b4ba9176da24c6b169c5fc2c79fb4

Git commit df46414a4e16d608049610935aeabab222e06d72 by Alexey Rusakov on 10/09/2021 at 20:42..
Add "quotient.network" logging category
https://invent.kde.org/neon/forks/libquotient/-/commit/df46414a4e16d608049610935aeabab222e06d72

Git commit 2bf18a64d236c2364e12d4c2f1a9464cc6a2ebf9 by Alexey Rusakov on 10/09/2021 at 20:44..
Move URL creation to Room/Connection; use query instead of fragment

The query is easier to manipulate; and the original mxc URL is not used
for the real network request anyway.
https://invent.kde.org/neon/forks/libquotient/-/commit/2bf18a64d236c2364e12d4c2f1a9464cc6a2ebf9

Git commit 4babd9b2f1ba1d8c8c58c2f728cc4875ecf144c7 by Alexey Rusakov on 11/09/2021 at 10:48..
Don't parent NAM to QCoreApplication

QThreadStorage accepts ownership over stored objects.
https://invent.kde.org/neon/forks/libquotient/-/commit/4babd9b2f1ba1d8c8c58c2f728cc4875ecf144c7

Git commit 6597866ead7a3eb03cfcbbd99b547de1bb72867e by Alexey Rusakov on 11/09/2021 at 11:05..
Further tweaks to MxcReply

- QNetworkReply::isSequential() already returns `true`, there's no need
to overload it again.
- Use `Q_SLOTS` instead of `slots` because it's an external library
  interface and clients may use other libraries using `slots` identifier;
- Use `emit` instead of `Q_EMIT` because this is a part of internal
  implementation and if we ever use a library that has an `emit`
  identifier, a massive search-replace will be in order anyway.
- Use `QMetaObject::invokeMethod()` with a queued connection as
  a clearer way to achieve the same goal as `QTimer::singleShot(0, ...)`.
https://invent.kde.org/neon/forks/libquotient/-/commit/6597866ead7a3eb03cfcbbd99b547de1bb72867e

Git commit 9da6b25a26403952e5a76b043076ba302c8d3c30 by Alexey Rusakov on 11/09/2021 at 18:35..
BaseJob: deprecate endpoint accessors; query returns an object

To provide more room for internal changes in BaseJob.
https://invent.kde.org/neon/forks/libquotient/-/commit/9da6b25a26403952e5a76b043076ba302c8d3c30

Git commit 0209be8305aa38722a3d25593ae71fbb3ac05e52 by Tobias Fella on 11/09/2021 at 19:02..
Add convenience function for activating encryption and fix
EncryptionEvent constructor
https://invent.kde.org/neon/forks/libquotient/-/commit/0209be8305aa38722a3d25593ae71fbb3ac05e52

Git commit 693b5da2920f173a9e3f723b845d35a7b4aa9823 by Alexey Rusakov on 12/09/2021 at 02:35..
Add a download test to quotest
https://invent.kde.org/neon/forks/libquotient/-/commit/693b5da2920f173a9e3f723b845d35a7b4aa9823

Git commit 2c61b463fa0608626a58aed79ebecb3bbd8c41d3 by Alexey Rusakov on 12/09/2021 at 02:36..
NAM::createRequest(): more logging
https://invent.kde.org/neon/forks/libquotient/-/commit/2c61b463fa0608626a58aed79ebecb3bbd8c41d3

Git commit 77b69eb370e1cdbc33e44121f4f8483e19cad7d8 by Alexey Rusakov on 12/09/2021 at 02:37..
MxcReply: make sure to create a Private object
https://invent.kde.org/neon/forks/libquotient/-/commit/77b69eb370e1cdbc33e44121f4f8483e19cad7d8

Git commit 06a4fbb5c0ad0fadba1e5924f73d067850a78312 by Alexey Rusakov on 12/09/2021 at 02:38..
Connection: update AccountRegistry

Clients don't need to do it themselves.
https://invent.kde.org/neon/forks/libquotient/-/commit/06a4fbb5c0ad0fadba1e5924f73d067850a78312

Git commit 167509514587aa22d837b42a8d30d7c1128e0a45 by Alexey Rusakov on 12/09/2021 at 02:52..
Fix building with older Qt
https://invent.kde.org/neon/forks/libquotient/-/commit/167509514587aa22d837b42a8d30d7c1128e0a45

Git commit bcaab611840a0a2ad284e6f1e7c2f0b4de10222d by Alexey Rusakov on 12/09/2021 at 03:38..
Fix a memory leak in DownloadRunner
https://invent.kde.org/neon/forks/libquotient/-/commit/bcaab611840a0a2ad284e6f1e7c2f0b4de10222d

Git commit 41944ac3ee76029201c2108a063ae2b6354f6a22 by GitHub (on behalf of Alexey Rusakov) on 12/09/2021 at 04:16..
Merge pull request #499 from TobiasFella/mxcnam

Implement the mxc protocol in the NetworkAccessManager
https://invent.kde.org/neon/forks/libquotient/-/commit/41944ac3ee76029201c2108a063ae2b6354f6a22

Git commit 31c72a8ed620904867755b5370d881053ba060a7 by Alexey Rusakov on 12/09/2021 at 04:29..
0.6.9
https://invent.kde.org/neon/forks/libquotient/-/commit/31c72a8ed620904867755b5370d881053ba060a7

Git commit a76ed82eb298d30c7b654c74378f93a9a35580a6 by GitHub (on behalf of Alexey Rusakov) on 12/09/2021 at 08:04..
Merge pull request #506 from TobiasFella/activateencryption

Add convenience function for activating encryption
https://invent.kde.org/neon/forks/libquotient/-/commit/a76ed82eb298d30c7b654c74378f93a9a35580a6

Git commit 59c9ca720093f2931c2eee1c0d5806d7e2e0c85f by Tobias Fella on 14/09/2021 at 13:29..
Add room types to RoomCreateEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/59c9ca720093f2931c2eee1c0d5806d7e2e0c85f

Git commit 88a51b85935d4de6c4bd58b6ece5d498241465fc by GitHub (on behalf of Alexey Rusakov) on 15/09/2021 at 15:22..
Merge pull request #507 from TobiasFella/roomcreationtypes

Add room types to RoomCreateEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/88a51b85935d4de6c4bd58b6ece5d498241465fc

Git commit fe9425f313e7c172095ff9355743427337b7ea78 by Tobias Fella on 18/09/2021 at 14:01..
Add the encryptedfile to the eventcontent
https://invent.kde.org/neon/forks/libquotient/-/commit/fe9425f313e7c172095ff9355743427337b7ea78

Git commit f7e15e742f026c794b4e3419cc851a16a31e9f07 by GitHub (on behalf of Alexey Rusakov) on 18/09/2021 at 14:20..
Merge pull request #505 from TobiasFella/encryptedfile
https://invent.kde.org/neon/forks/libquotient/-/commit/f7e15e742f026c794b4e3419cc851a16a31e9f07

Git commit 9f43d34c590a825504b72be7f6b238d0ff2c915a by Alexey Rusakov on 19/09/2021 at 20:23..
Use C++ instead of commenting
https://invent.kde.org/neon/forks/libquotient/-/commit/9f43d34c590a825504b72be7f6b238d0ff2c915a

Git commit cdce40f31f775e609b2ec7dbda685ac6a9b9cde3 by Alexey Rusakov on 28/09/2021 at 06:41..
SyncData: drop a shortcut that led to ignoring invites

Fixes #510.
https://invent.kde.org/neon/forks/libquotient/-/commit/cdce40f31f775e609b2ec7dbda685ac6a9b9cde3

Git commit bc217e85058fbee1ec81f45e9ffea916f0f89270 by Alexey Rusakov on 28/09/2021 at 06:41..
quotest: timelineEdge() -> historyEdge()

timelineEdge() is deprecated.
https://invent.kde.org/neon/forks/libquotient/-/commit/bc217e85058fbee1ec81f45e9ffea916f0f89270

Git commit 92024f20fd8cfe4adb586b1d477969e45ba9ab4d by Alexey Rusakov on 28/09/2021 at 06:45..
SyncData: drop a shortcut that led to ignoring invites

Fixes #510.
https://invent.kde.org/neon/forks/libquotient/-/commit/92024f20fd8cfe4adb586b1d477969e45ba9ab4d

Git commit de11927581864a140e3a60e1ff4e8100e4235a6c by Alexey Rusakov on 03/10/2021 at 03:33..
0.6.10
https://invent.kde.org/neon/forks/libquotient/-/commit/de11927581864a140e3a60e1ff4e8100e4235a6c

Git commit ec85b9352febb982dd02469635d0553901acce4d by Alexey Rusakov on 03/10/2021 at 17:43..
prettyPrint(): tighten up Matrix identifier regex

It was too permissive on characters before the identifier and also
allowed the domain name to start on dash, which should not occur.
Closes #512.
https://invent.kde.org/neon/forks/libquotient/-/commit/ec85b9352febb982dd02469635d0553901acce4d

Git commit 4c3efb82b9f47ca92973089413da994619ddeb5c by Alexey Rusakov on 04/10/2021 at 01:18..
AccountRegistry: minor code cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/4c3efb82b9f47ca92973089413da994619ddeb5c

Git commit bd71b075e699ab4dda92d72bac77cbfeb6217625 by Alexey Rusakov on 04/10/2021 at 01:18..
prettyPrint(): tighten up Matrix identifier regex

It was too permissive on characters before the identifier and also
allowed the domain name to start on dash, which should not occur.
Closes #512.
https://invent.kde.org/neon/forks/libquotient/-/commit/bd71b075e699ab4dda92d72bac77cbfeb6217625

Git commit 062d534a0024959117e310f8c2a964434acb9fa0 by Alexey Rusakov on 04/10/2021 at 07:53..
Add tests for prettyPrint()
https://invent.kde.org/neon/forks/libquotient/-/commit/062d534a0024959117e310f8c2a964434acb9fa0

Git commit c49de691291147233f24c9db17c0c1a3e2b73dde by Alexey Rusakov on 04/10/2021 at 07:53..
Further tighten the linkifier in prettyPrint()
https://invent.kde.org/neon/forks/libquotient/-/commit/c49de691291147233f24c9db17c0c1a3e2b73dde

Git commit 73c1c8747b0c00524239724bb7cf00776448c5c7 by Alexey Rusakov on 04/10/2021 at 07:54..
quotient_common.h: remove a stray semicolon
https://invent.kde.org/neon/forks/libquotient/-/commit/73c1c8747b0c00524239724bb7cf00776448c5c7

Git commit c168a0a29f0a4eed2a21933749689b8fe9b0aa42 by Alexey Rusakov on 04/10/2021 at 07:55..
Add tests for prettyPrint()
https://invent.kde.org/neon/forks/libquotient/-/commit/c168a0a29f0a4eed2a21933749689b8fe9b0aa42

Git commit 88cbbe5eb2e024d71e0897617ab65860cee51607 by Alexey Rusakov on 04/10/2021 at 07:55..
Further tighten the linkifier in prettyPrint()
https://invent.kde.org/neon/forks/libquotient/-/commit/88cbbe5eb2e024d71e0897617ab65860cee51607

Git commit c16813c5209f0421ec773a98cf935a2eb2ea3d7c by Alexey Rusakov on 04/10/2021 at 09:05..
Move away wrap_in_function to private interface

This has always been merely a workaround to enable
connectUntil/connectSingleShot and was never intended to be used
elsewhere, let alone in clients.
https://invent.kde.org/neon/forks/libquotient/-/commit/c16813c5209f0421ec773a98cf935a2eb2ea3d7c

Git commit 677c73263f434d1564695a8128d75fefd1a7b50b by Alexey Rusakov on 04/10/2021 at 09:06..
Drop old compatibility code

libQuotient 0.7 really requires Qt 5.12, nothing earlier will work.
https://invent.kde.org/neon/forks/libquotient/-/commit/677c73263f434d1564695a8128d75fefd1a7b50b

Git commit df5606ebd360d753b6261133254408aadbbb7f7f by Alexey Rusakov on 04/10/2021 at 09:07..
Make connectSingleShot() a tiny wrapper on Qt 6

Qt 6 has Qt::SingleShotConnection; connectSingleShot remains just for
the sake of compatibility across Qt 5 and Qt 6. If you target Qt 6 only,
feel free to use the Qt facility directly.
https://invent.kde.org/neon/forks/libquotient/-/commit/df5606ebd360d753b6261133254408aadbbb7f7f

Git commit 7c11f7fddbcc98e4b3b92060c475799d7518624c by Alexey Rusakov on 04/10/2021 at 16:26..
gtad.yaml: make _rightQuote example less trivial
https://invent.kde.org/neon/forks/libquotient/-/commit/7c11f7fddbcc98e4b3b92060c475799d7518624c

Git commit 96f31d7d8ed1c9ab905c24ac039079aea622f4dc by Alexey Rusakov on 04/10/2021 at 16:39..
BaseJob: percent-encode variable path parts

This is meant to spare clients from having to percent-encode
room aliases, v3 event ids etc. that happen to hit the endpoint path.
It is unfair to expect clients to do that since they are not supposed
to care about the shape of CS API, which parameter should be encoded
in which way. The trick (together with the slightly updated GTAD
configuration) is to percent-encode parts that happen to be QStrings
and not `const char[]`'s while passing all constant parts as plain
C character literals. This also allows to make it more certain that
the path is correctly encoded by passing and storing QByteArray's
wherever the path is already encoded, and only use QStrings (next to
const char arrays) before that.

Since the change alters the API contract (even if that contract was
crappy), some crude detection of percent-encoded stuff on input is
inserted; if input is already percent-encoded, a warning is put to
the logs, alerting developers about the change.
https://invent.kde.org/neon/forks/libquotient/-/commit/96f31d7d8ed1c9ab905c24ac039079aea622f4dc

Git commit 1fd25fe944b67c55435ed4d4d8fd1cbb0989bb5f by Alexey Rusakov on 04/10/2021 at 16:40..
Regenerate CS API files upon the previous commit
https://invent.kde.org/neon/forks/libquotient/-/commit/1fd25fe944b67c55435ed4d4d8fd1cbb0989bb5f

Git commit f89285a3bd7c093622be966823d0ae1254822905 by Alexey Rusakov on 04/10/2021 at 16:48..
Room: use more modern Connection API
https://invent.kde.org/neon/forks/libquotient/-/commit/f89285a3bd7c093622be966823d0ae1254822905

Git commit 67da887e864d292608e7132388f518596374af34 by Alexey Rusakov on 05/10/2021 at 01:43..
BaseJob::StatusCode: officially deprecate most *Error enumerators
https://invent.kde.org/neon/forks/libquotient/-/commit/67da887e864d292608e7132388f518596374af34

Git commit 9cfd6ad6a4651280a12099d1a92432f07fc5aae0 by Alexey Rusakov on 05/10/2021 at 01:44..
BaseJob: refresh error handling

- BaseJob::prepareError() slightly updated to get the current status
  instead of checking the returned value outside in gotReply()
- BaseJob::gotReply() no more reports on 429 Too Many Requests twice
  (the first time with dubious "Too Many Requests: Unknown error")
https://invent.kde.org/neon/forks/libquotient/-/commit/9cfd6ad6a4651280a12099d1a92432f07fc5aae0

Git commit 107471447a62663eaf97b4b982d8c3f3e1b3364e by Alexey Rusakov on 05/10/2021 at 01:44..
Connection: fix C++20 warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/107471447a62663eaf97b4b982d8c3f3e1b3364e

Git commit 7b516cdf0b987e542b1e4cd4556ecb2bfbde3ff9 by Alexey Rusakov on 05/10/2021 at 02:15..
Quotest: return non-zero when things go really wrong

...such as stuck login or failure to join the room. Closes #496.
https://invent.kde.org/neon/forks/libquotient/-/commit/7b516cdf0b987e542b1e4cd4556ecb2bfbde3ff9

Git commit 06ecefe0645cc60ab213e5b41c9689fa6e020745 by Alexey Rusakov on 06/10/2021 at 17:17..
Quotest: return non-zero when things go really wrong

...such as stuck login or failure to join the room. Closes #496.
https://invent.kde.org/neon/forks/libquotient/-/commit/06ecefe0645cc60ab213e5b41c9689fa6e020745

Git commit 0a342369406e2d259ce20e5fa6d53ac271cbf3c2 by Alexey Rusakov on 06/10/2021 at 17:18..
0.6.11
https://invent.kde.org/neon/forks/libquotient/-/commit/0a342369406e2d259ce20e5fa6d53ac271cbf3c2

Git commit fe77279cf0f7de006db40a828cc2fb7261e8e0bd by Tobias Fella on 09/10/2021 at 22:07..
Keep the reply when replacing an event
https://invent.kde.org/neon/forks/libquotient/-/commit/fe77279cf0f7de006db40a828cc2fb7261e8e0bd

Git commit 01103222dc59526b37d594b93b0b1cd7473e3f6f by Alexey Rusakov on 10/10/2021 at 18:46..
Merge branch 'master' into kitsune-fix-read-receipts-and-markers
https://invent.kde.org/neon/forks/libquotient/-/commit/01103222dc59526b37d594b93b0b1cd7473e3f6f

Git commit 762be1e73d6f5021e63fc9a4fea273951b3fb113 by Alexey Rusakov on 10/10/2021 at 20:27..
ReadReceipt::operator==/!=: Add const where it's due
https://invent.kde.org/neon/forks/libquotient/-/commit/762be1e73d6f5021e63fc9a4fea273951b3fb113

Git commit 5c0346f3a700e6af31463490b7af3382b86e09d5 by Alexey Rusakov on 10/10/2021 at 20:27..
Room: actually initialise read marker when needed

This fixes the `q->readMarker() != historyEdge()` assertion failure
occuring in recalculateUnreadCount() when new events from sync arrive
to a room with no read marker and all history loaded.
https://invent.kde.org/neon/forks/libquotient/-/commit/5c0346f3a700e6af31463490b7af3382b86e09d5

Git commit a1e885177bd9421a8ede4bec870a8fdc8b89a693 by Alexey Rusakov on 11/10/2021 at 14:02..
formatJson(QDebug): Drop some very old cruft
https://invent.kde.org/neon/forks/libquotient/-/commit/a1e885177bd9421a8ede4bec870a8fdc8b89a693

Git commit fc0fdf2ed6006c11ffd47675fabb1232721c5e7d by Alexey Rusakov on 12/10/2021 at 07:26..
RoomMemberEvent::is*(): fix comparison against Omittable

Closes #514.
https://invent.kde.org/neon/forks/libquotient/-/commit/fc0fdf2ed6006c11ffd47675fabb1232721c5e7d

Git commit fd915b0865bde5741ceb1dd1e76a99d25b8c63fd by Alexey Rusakov on 12/10/2021 at 16:01..
Omittable: add a deduction guide

Just for completeness, not really needed anywhere yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/fd915b0865bde5741ceb1dd1e76a99d25b8c63fd

Git commit de164d60f2561fb0ad142b5d4fd31ff9817c2725 by Alexey Rusakov on 12/10/2021 at 17:17..
Make sure to expose both the flags type and the underlying enum

See also https://bugreports.qt.io/browse/QTBUG-82295.
https://invent.kde.org/neon/forks/libquotient/-/commit/de164d60f2561fb0ad142b5d4fd31ff9817c2725

Git commit e633f9ed1558fe1e8aa026af2932a1d06b8beadb by Alexey Rusakov on 13/10/2021 at 08:00..
CMakeLists: don't report that update-api is enabled when it's actually not

add_feature_info() treats unset variable as "no change" rather than
"false", which may lead to a confusing build configuration report when
GTAD_PATH and/or MATRIX_DOC_PATH and/or CLANG_FORMAT have been there
before but were removed since.
https://invent.kde.org/neon/forks/libquotient/-/commit/e633f9ed1558fe1e8aa026af2932a1d06b8beadb

Git commit f620284bac23bb86c329863c53f3699845bf606f by Alexey Rusakov on 13/10/2021 at 08:16..
CMakeLists: more robust GTAD_PATH detection

After switching over to get_filename_component(PROGRAM) paths with
~ (home directory) were no more resolved. They are again.
https://invent.kde.org/neon/forks/libquotient/-/commit/f620284bac23bb86c329863c53f3699845bf606f

Git commit b7de9c00b79ef0d187190aa5d126bff7503f471f by Alexey Rusakov on 13/10/2021 at 17:55..
connection.h: more doc-comments
https://invent.kde.org/neon/forks/libquotient/-/commit/b7de9c00b79ef0d187190aa5d126bff7503f471f

Git commit 0aa70ed9b3cff3c9e0dbbea9beb419d840e42341 by Alexey Rusakov on 13/10/2021 at 17:57..
Connection::resolveServer(): don't connect to loginFlowsJob

Checking whether any login flows are available is a good enough measure
of the homeserver actual workability. Closes #515.
https://invent.kde.org/neon/forks/libquotient/-/commit/0aa70ed9b3cff3c9e0dbbea9beb419d840e42341

Git commit 5a8c406749160a01865cbac8b4591a8e3c31e4c6 by Hubert Chathi on 16/10/2021 at 04:03..
Update to upstream version 0.6.11
https://invent.kde.org/neon/forks/libquotient/-/commit/5a8c406749160a01865cbac8b4591a8e3c31e4c6

Git commit e9c2e2a26d3711e755aa5eb8a8478917c71d612b by Hubert Chathi on 16/10/2021 at 18:33..
Debian version 0.6.11-1
https://invent.kde.org/neon/forks/libquotient/-/commit/e9c2e2a26d3711e755aa5eb8a8478917c71d612b

Git commit 9ee0efbf1d7a431c370b13e1d49c903165d474fe by Alexey Rusakov on 17/10/2021 at 18:32..
Room: qualify signal parameters
https://invent.kde.org/neon/forks/libquotient/-/commit/9ee0efbf1d7a431c370b13e1d49c903165d474fe

Git commit 316069f3c342b64598a40d9d7fd6e015ec0c91dd by GitHub (on behalf of Alexey Rusakov) on 03/11/2021 at 08:03..
Merge pull request #513 from TobiasFella/editedreplies

Keep the reply when replacing an event
https://invent.kde.org/neon/forks/libquotient/-/commit/316069f3c342b64598a40d9d7fd6e015ec0c91dd

Git commit 965f0e94f3f8c98ccb704b1d5abdeac1efc699cc by Smitty on 07/11/2021 at 22:08..
Add method to get all state events in a room

It is useful to be able to get all of the state events that have
occured in a room, instead of needing to use Room::getCurrentState,
which filters based on the event type and state key.
https://invent.kde.org/neon/forks/libquotient/-/commit/965f0e94f3f8c98ccb704b1d5abdeac1efc699cc

Git commit 061de37889b0fa4bf8baae1f11693950297418c5 by Alexey Rusakov on 08/11/2021 at 13:46..
Q_DISABLE_MOVE/COPY_MOVE; QT_IGNORE_DEPRECATIONS

DISABLE_MOVE is no more; instead, the library provides Q_DISABLE_MOVE
(and also Q_DISABLE_COPY_MOVE while at it) for Qt pre-5.13 that don't
have it yet. Same for QT_IGNORE_DEPRECATIONS - it only arrived in 5.15
but all the building pieces existed prior so libQuotient has it
regardless of the Qt version used for building.
https://invent.kde.org/neon/forks/libquotient/-/commit/061de37889b0fa4bf8baae1f11693950297418c5

Git commit 48400a8aa28537c1bedc095b5c4c08f677cca0f5 by Alexey Rusakov on 08/11/2021 at 13:47..
Drop unused #include
https://invent.kde.org/neon/forks/libquotient/-/commit/48400a8aa28537c1bedc095b5c4c08f677cca0f5

Git commit 38291a7b442906b638ce0d34a429c72089e80f6d by Alexey Rusakov on 08/11/2021 at 18:27..
Room::Change: deprecate AccountDataChange, ReadMarkerChange

These usually don't affect the room outlooks in the room list in any
way; so can be merged into OtherChange instead.

Also: OtherChanges synonym has been added, implying that there might
be more than one change behind a single "Other" flag.
https://invent.kde.org/neon/forks/libquotient/-/commit/38291a7b442906b638ce0d34a429c72089e80f6d

Git commit 65bb0b5fcf029df7a9bfa0b7b7b7e3203fd7862f by Alexey Rusakov on 11/11/2021 at 06:37..
DECL_DEPRECATED_ENUMERATOR

A handy macro that introduces an enumerator with a respective
Q_DECL_DEPRECATED_X recommending the substitution.
https://invent.kde.org/neon/forks/libquotient/-/commit/65bb0b5fcf029df7a9bfa0b7b7b7e3203fd7862f

Git commit 766410a6c9e928915ece112f4f4f4a4317789e5f by Alexey Rusakov on 11/11/2021 at 07:27..
Merge branch 'dev' into kitsune-fix-read-receipts-and-markers
https://invent.kde.org/neon/forks/libquotient/-/commit/766410a6c9e928915ece112f4f4f4a4317789e5f

Git commit 29195491c25bcba50b78a30c779db07913f87d3a by Alexey Rusakov on 11/11/2021 at 12:01..
Update comments around read receipts code
https://invent.kde.org/neon/forks/libquotient/-/commit/29195491c25bcba50b78a30c779db07913f87d3a

Git commit a4f34202b47f91f7fdfbe2006b2eae10b9b8eeac by Alexey Rusakov on 11/11/2021 at 21:18..
Fix a few quirks in converters.h
https://invent.kde.org/neon/forks/libquotient/-/commit/a4f34202b47f91f7fdfbe2006b2eae10b9b8eeac

Git commit fb30d455e2dbeed8c242cfbeb153f834b0358f11 by Alexey Rusakov on 12/11/2021 at 10:10..
Fix building with GCC

It didn't like using QT_IGNORE_DEPRECATIONS inside a statement.
https://invent.kde.org/neon/forks/libquotient/-/commit/fb30d455e2dbeed8c242cfbeb153f834b0358f11

Git commit 05e71a72fdc6da3fb319edc67b723999285c9657 by Alexey Rusakov on 12/11/2021 at 15:22..
Fix a few quirks in converters.h
https://invent.kde.org/neon/forks/libquotient/-/commit/05e71a72fdc6da3fb319edc67b723999285c9657

Git commit f2bf3f203965c51824e8681427798f7a09784ce3 by Alexey Rusakov on 12/11/2021 at 15:22..
Make ReceiptEvent constructible from content

Makes the Room::P::toJson() code more readable.
https://invent.kde.org/neon/forks/libquotient/-/commit/f2bf3f203965c51824e8681427798f7a09784ce3

Git commit d8c9f0d5802f8b1c3ef362964dac5c8d60a61871 by Tobias Fella on 15/11/2021 at 22:03..
Port away from deprecated upfront percent encoding
https://invent.kde.org/neon/forks/libquotient/-/commit/d8c9f0d5802f8b1c3ef362964dac5c8d60a61871

Git commit cb7b9e8d04f060893a5ffb8cfa22c627c7dbe507 by Tobias Fella on 15/11/2021 at 23:53..
Port away from implicit 'this' captures in lambdas

Deprecated with C++20
https://invent.kde.org/neon/forks/libquotient/-/commit/cb7b9e8d04f060893a5ffb8cfa22c627c7dbe507

Git commit a16509d7fad5a0856ad83d0ef33b7b9d205efdd8 by GitHub (on behalf of Alexey Rusakov) on 16/11/2021 at 13:42..
Merge pull request #519 from TobiasFella/noupfrontencoding

Port away from deprecated upfront percent encoding
https://invent.kde.org/neon/forks/libquotient/-/commit/a16509d7fad5a0856ad83d0ef33b7b9d205efdd8

Git commit d5515bb6dd8ebf46aa36a8bc696b90a573a8492c by GitHub (on behalf of Alexey Rusakov) on 16/11/2021 at 13:44..
Merge pull request #520 from TobiasFella/implicitthiscapture

Port away from implicit 'this' captures in lambdas
https://invent.kde.org/neon/forks/libquotient/-/commit/d5515bb6dd8ebf46aa36a8bc696b90a573a8492c

Git commit edb63528e6f3048045f70eb6a48412917bdbea0b by Alexey Rusakov on 17/11/2021 at 17:33..
Bind read receipts to userIds, not to User* values

This reduces the surface interacting with the User class that eventually
will be split into LocalUser (most part) and RoomMember (a tiny wrapper
around the member data in a given room, used almost everywhere in Room
where User currently is).

Also: dropped a log message when the new receipt is at or behind
the old one as it causes a lot of noise in the logs.
https://invent.kde.org/neon/forks/libquotient/-/commit/edb63528e6f3048045f70eb6a48412917bdbea0b

Git commit 7b633ba257fc8643ef8cc2ef724f3b6ac9e186ba by Alexey Rusakov on 17/11/2021 at 17:33..
Room: doc-comments cleanup

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/7b633ba257fc8643ef8cc2ef724f3b6ac9e186ba

Git commit b472fc355dc5ce70391ca2b9bc8da35b973ae3a3 by Alexey Rusakov on 17/11/2021 at 17:33..
Room: lastLocalReadReceipt(), localReadReceiptMarker()

To simplify retrieval of the local m.read receipt and the marker for it.
https://invent.kde.org/neon/forks/libquotient/-/commit/b472fc355dc5ce70391ca2b9bc8da35b973ae3a3

Git commit 0052c0b2b4f9860ee9223ef161f40929e7c4c454 by Alexey Rusakov on 17/11/2021 at 17:38..
Merge branch 'dev' into kitsune-fix-read-receipts-and-markers

# Conflicts:
#	lib/room.cpp
https://invent.kde.org/neon/forks/libquotient/-/commit/0052c0b2b4f9860ee9223ef161f40929e7c4c454

Git commit d02a6ffc90d0d2a7984560ec28241be228014fac by GitHub (on behalf of Alexey Rusakov) on 17/11/2021 at 18:37..
Merge pull request #487 from quotient-im/kitsune-fix-read-receipts-and-markers

Distinguish between read receipts and the fully read marker
https://invent.kde.org/neon/forks/libquotient/-/commit/d02a6ffc90d0d2a7984560ec28241be228014fac

Git commit d97195d3c67dcf08d727a2a65863b99982c6b24e by Alexey Rusakov on 17/11/2021 at 19:18..
Room: refactoring around logging (esp. profile logs)
https://invent.kde.org/neon/forks/libquotient/-/commit/d97195d3c67dcf08d727a2a65863b99982c6b24e

Git commit bcf7f7e6408872d8315e5c69829d7ce790e4820a by Alexey Rusakov on 17/11/2021 at 19:27..
Fix QDateTime(QDate) deprecation warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/bcf7f7e6408872d8315e5c69829d7ce790e4820a

Git commit 76b6238af16a1ccd284831ce42ec9e2cb1fba2c5 by Alexey Rusakov on 18/11/2021 at 17:03..
Make Room::Changes an enum class; simplify enumerators

This enumeration sees very limited (if any) use outside Quotient; and
though this change will surely break code using it the fix is very
straightforward and quick.
https://invent.kde.org/neon/forks/libquotient/-/commit/76b6238af16a1ccd284831ce42ec9e2cb1fba2c5

Git commit d6cf6b32cdd2843c40fc696accd8a6456f1ea15c by Alexey Rusakov on 19/11/2021 at 11:45..
Make enum values logging more terse()

By default enum class values are logged along with the qualifier; this
may or may not be desirable in a given setting. For JoinState(s) and
Membership(Mask) operator<< was overloaded to implicitly suppress
qualification; however, this is both overly sweeping and uses Qt's
internal API for the backend.

Instead, a new QDebug manipulator, terse(), is introduced, that does
the same as those operator<< overloads but on a per-invocation basis.
This makes it slightly more verbose to log enums but makes the QDebug
reconfiguration explicit and doesn't require to produce new overloads
every time a new enum ends up in logs. And it's built entirely on
the published Qt API, reusing the QDebugManip framework that Quotient
already has.

Also: operator<<(QDebug, QDebugManip) has been moved out of
the namespace to fix lookup issues when there's no prior
`using namespace Quotient`.
https://invent.kde.org/neon/forks/libquotient/-/commit/d6cf6b32cdd2843c40fc696accd8a6456f1ea15c

Git commit 2d1cf137d7380a15673826bce00e71461fbc7446 by Alexey Rusakov on 19/11/2021 at 11:46..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/2d1cf137d7380a15673826bce00e71461fbc7446

Git commit 71b7f05e42f93c3da590b6f7f55658a81b607c0e by GitHub (on behalf of Alexey Rusakov) on 19/11/2021 at 16:17..
Add continue-on-error for regenerated API files

The current upstream API definitions are expected to fail the test.
https://invent.kde.org/neon/forks/libquotient/-/commit/71b7f05e42f93c3da590b6f7f55658a81b607c0e

Git commit 02fa42b8ac5694485c7f6dedc62a873e97da2d35 by GitHub (on behalf of Alexey Rusakov) on 19/11/2021 at 17:57..
continue-on-error on the job level

Continue on the step level marks the whole job as successful which is not really accurate.
https://invent.kde.org/neon/forks/libquotient/-/commit/02fa42b8ac5694485c7f6dedc62a873e97da2d35

Git commit bf5f209d2d237301c65cc0973f1707b9386f3110 by Alexey Rusakov on 21/11/2021 at 06:07..
Room: isEventNotable, notificationFor, checkForNotifications

Room::isEventNotable has been moved out from Room::Private and made
compliant with MSC2654.

The concept of Room::checkForNotifications is taken from Quaternion
where a method with the same name has been in QuaternionRoom for a long
time - however, actual body is a stub for now, always returning
{ Notification::None } (Quaternion's implementation is too crude to be
taken to the library). Now we really need a pushrules processor to fill
this method with something reasonably good. Internally the library now
calls checkForNotifications() on every event added to the timeline,
filling up the events-to-notifications map because it is anticipated
that calculation of notifications can be rather resource-intensive and
should only be done once for a given event.

Finally, Room::notificationsFor is an accessor into the mentioned map,
standing next to isEventNotable (but unlike isEventNotable, it's not
virtual; checkForNotifications is).
https://invent.kde.org/neon/forks/libquotient/-/commit/bf5f209d2d237301c65cc0973f1707b9386f3110

Git commit 96f3daf7a2c4ec875904c11350c93612265e2eed by Alexey Rusakov on 21/11/2021 at 06:07..
SyncData: support MSC2654; partiallyReadCount

Since MSC2654's unread count is counted from the m.read receipt, and
the course is to follow the spec's terminology and use "unread count"
for the number of notable events since m.read, this required to move
the existing number of notable events since m.fully_read to another
field, henceforth called partiallyReadCount. At the same time,
SyncData::notificationCount is dropped completely since MSC2654 claims
to supersede it.

Also: Room::resetNotificationCount() and Room::resetHighlightCount() are
deprecated, as these never worked properly overwriting values that can
be calculated or sourced from the server, only for these values to be
set back again the next time the room is updated from /sync.
https://invent.kde.org/neon/forks/libquotient/-/commit/96f3daf7a2c4ec875904c11350c93612265e2eed

Git commit e7babe6715672a358f7cc8b90d5df27e21a1b3e8 by Alexey Rusakov on 21/11/2021 at 06:07..
Room::Private::postprocessChanges()

This makes updating display name and emission of necessary signals
including Room::changed() more systematic when it has to occur outside
of updateData() flow - e.g. when loading all members.
https://invent.kde.org/neon/forks/libquotient/-/commit/e7babe6715672a358f7cc8b90d5df27e21a1b3e8

Git commit b2f9b212c78bc9dd7c69f6a2d1f94376adb488e3 by Alexey Rusakov on 21/11/2021 at 06:07..
EventStats and Room::partiallyRead/unreadStats()

This introduces a new API to count unread events that would allow to
obtain those unread and highlight counts since either the fully read
marker (Room::partiallyReadStats) or the last read receipt
(Room::unreadStats). Element uses the read receipt as the anchor
to count unread numbers, while Quaternion historically used the fully
read marker for that (with the pre-0.7 library sticking the two markers
to each other). From now on the meaning of "unread" in Quotient is
aligned with that of the spec and Element, and "partially read" means
events between the fully read marker and the local read receipt;
the design allows client authors to use either or both counting
strategies as they see fit. Respectively, Room::P::setFullyReadMarker()
updates partially-read statistics, while Room::P::setLastReadReceipt(),
when called on a local user, updates unread statistics.

Room::notificationCount() and Room::highlightCount() maintain their
previous meaning as the counters since the last read receipt;
Room::notificationCount() counts unread events locally, falling back
to the value from the above-mentioned key defined by MSC2654, and if
that is not there, further to `unread_notifications/notification_count`
defined in the current spec. Room::highlightCount(), however, is still
taken from the homeserver, not from Room::unreadStats().highlightCount.
https://invent.kde.org/neon/forks/libquotient/-/commit/b2f9b212c78bc9dd7c69f6a2d1f94376adb488e3

Git commit 9e5c9ff3ef0eeff8abd0bc3508d9152506e27e30 by Alexey Rusakov on 21/11/2021 at 06:07..
Document Room::Change and its enumerators
https://invent.kde.org/neon/forks/libquotient/-/commit/9e5c9ff3ef0eeff8abd0bc3508d9152506e27e30

Git commit 52e640bce5a8931330fa6d653212e524e7baa2eb by Alexey Rusakov on 21/11/2021 at 06:07..
Minor brushup in the comment to QUO_DECLARE_FLAGS

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/52e640bce5a8931330fa6d653212e524e7baa2eb

Git commit ffb1f978c377e0442bed9eab17727932d59fc55a by Alexey Rusakov on 21/11/2021 at 11:24..
Log the hexadecimal value of Changes too, just in case
https://invent.kde.org/neon/forks/libquotient/-/commit/ffb1f978c377e0442bed9eab17727932d59fc55a

Git commit e16ed41a6a28a43919126a85f7a802c5b2e091b6 by GitHub (on behalf of Alexey Rusakov) on 21/11/2021 at 14:29..
CI: Nicer and more detailed logging for quotest
https://invent.kde.org/neon/forks/libquotient/-/commit/e16ed41a6a28a43919126a85f7a802c5b2e091b6

Git commit a2cc707107464fd98fc8a33afde3ed29f8cd9526 by GitHub (on behalf of Alexey Rusakov) on 21/11/2021 at 20:48..
CI: Restrict workflow concurrency; tighten job timeout
https://invent.kde.org/neon/forks/libquotient/-/commit/a2cc707107464fd98fc8a33afde3ed29f8cd9526

Git commit 59ab0d5e04152e9657bdb47a6c9e860f4864be20 by Alexey Rusakov on 22/11/2021 at 16:58..
Fix a crash on trying to mark unknown events as fully read
https://invent.kde.org/neon/forks/libquotient/-/commit/59ab0d5e04152e9657bdb47a6c9e860f4864be20

Git commit 2fdcb290c7c5249896e3f8b542df16e248487f34 by Alexey Rusakov on 22/11/2021 at 21:36..
Fix stupid false-negatives from Room::updateStats()
https://invent.kde.org/neon/forks/libquotient/-/commit/2fdcb290c7c5249896e3f8b542df16e248487f34

Git commit c57d6de40fb790a4920a9c8ff235511860d68f32 by Alexey Rusakov on 24/11/2021 at 08:50..
Don't require C++20 from the clients just yet
https://invent.kde.org/neon/forks/libquotient/-/commit/c57d6de40fb790a4920a9c8ff235511860d68f32

Git commit 91c1d93d3389ac924f1013dc7b37dfe70a17e57e by GitHub (on behalf of Alexey Rusakov) on 24/11/2021 at 18:39..
Merge pull request #521 from quotient-im/kitsune-unread-statistics
https://invent.kde.org/neon/forks/libquotient/-/commit/91c1d93d3389ac924f1013dc7b37dfe70a17e57e

Git commit f6155d62740a88b020273ba623c816f7b9805772 by Alexey Rusakov on 26/11/2021 at 12:44..
Drop Q_GADGET from most uncopyable classes; other minor cleanup

Q_GADGET is generally used to enable two things outside of QObject:
Q_PROPERTY/Q_INVOKABLE and Q_ENUM/Q_FLAG. While the latter can be used
in its own right in QML, the former requires Q_GADGET instances to be
passed to QML by value, which is not really possible with
uncopyable/unassignable classes. Bottom line is that Q_PROPERTY in
anything derived from Quotient::Event is not viable, making Q_GADGET
macro useless unless there's a Q_ENUM/Q_FLAG (as is the case with
RoomMessageEvent, e.g.).
https://invent.kde.org/neon/forks/libquotient/-/commit/f6155d62740a88b020273ba623c816f7b9805772

Git commit f4a0acf818c4c89d132b2ec96d47c5817b106149 by Alexey Rusakov on 26/11/2021 at 12:46..
Drop #include "logging.h" from event.h

Makes compilation a tad lighter.
https://invent.kde.org/neon/forks/libquotient/-/commit/f4a0acf818c4c89d132b2ec96d47c5817b106149

Git commit b3d62050befbb1c526f03e4356f3263d197c45f2 by Alexey Rusakov on 26/11/2021 at 13:02..
Event: deprecate originalJson[Object]()

The "original JSON" wording is misleading: the returned JSON can be and
is routinely edited as a part of event construction, redaction, editing.
Also, originalJson() name is misleading in that it returns a stringified
(in a very specific way) JSON and not an object. You have to call
fullJson() to get the object, and originalJsonObject(), confusingly,
returns exactly the same thing but as a value rather than as
a reference. The original intention of keeping originalJsonObject() was
to make it Q_INVOKABLE or use it as an accessor for a Q_PROPERTY.
unfortunately, this was never really practical as discussed in
the previous commit.

All that implies that clients have to handle passing event JSON to QML
themselves, in the form they prefer (as an object or a string). The
added complexity is negligible though; on the other hand, there's added
flexibility in, e.g., choosing a compact instead of default JSON layout
or even generate a highlighted JSON representation.
https://invent.kde.org/neon/forks/libquotient/-/commit/b3d62050befbb1c526f03e4356f3263d197c45f2

Git commit 4ba795556721a88d2ac258d9095a46de21d77011 by Alexey Rusakov on 26/11/2021 at 15:07..
Revert "Drop #include "logging.h" from event.h"

Doesn't really help build times, instead breaking the build on older Qt.
https://invent.kde.org/neon/forks/libquotient/-/commit/4ba795556721a88d2ac258d9095a46de21d77011

Git commit 429b3adaf921dd7534a04fccae1bc3c1801d2e40 by Alexey Rusakov on 26/11/2021 at 16:27..
Room::processEphemeralEvents: Fix updatedCount always being zero

Trying to test bits with Changes::testFlag(Change::Any) was a bad idea.

Along the way: made logging in setLastReadReceipt() refer to the actual
timeline item when possible.
https://invent.kde.org/neon/forks/libquotient/-/commit/429b3adaf921dd7534a04fccae1bc3c1801d2e40

Git commit 38eaa61b9fa8e0a04baa847824bb1e1280395a57 by Alexey Rusakov on 26/11/2021 at 16:33..
Fix crashing on invalid member and encryption events

The problem is in Room::processStateEvent(): after
potentially-inserting-nullptr into currentState, pre-check failure
(that may occur on member and trigger events for now) leaves that
nullptr in the hash map. Basically anything that uses currentState
(e.g., Room::toJson) assumes that currentState has no nullptrs - which
leads to either an assertion failure, or nullptr dereferencing. The fix
removes the nullptr placeholder if the pre-checks failed.
https://invent.kde.org/neon/forks/libquotient/-/commit/38eaa61b9fa8e0a04baa847824bb1e1280395a57

Git commit 9701f24ac0214e4d8bd7fe1d6d4fa542d75d3d18 by Smitty on 27/11/2021 at 01:25..
Add Room::{stateEventsOfType,currentState}

This is useful for implementing Spaces support, where all events of
type `m.space.child` are needed, and we don't know their state keys in
advance.
https://invent.kde.org/neon/forks/libquotient/-/commit/9701f24ac0214e4d8bd7fe1d6d4fa542d75d3d18

Git commit 17234b8d7ce59f757099ad7894d3a8d73b859f12 by GitHub (on behalf of Alexey Rusakov) on 27/11/2021 at 10:23..
Merge pull request #518 from Smittyvb/room-stateEvents
https://invent.kde.org/neon/forks/libquotient/-/commit/17234b8d7ce59f757099ad7894d3a8d73b859f12

Git commit c476df5a306383c164b974234c1574f76abb98b8 by GitHub (on behalf of Alexey Rusakov) on 27/11/2021 at 17:43..
Add issue templates
https://invent.kde.org/neon/forks/libquotient/-/commit/c476df5a306383c164b974234c1574f76abb98b8

Git commit 1903a8e26893a3f332ba39643aa8da5fdaf1536b by GitHub (on behalf of Alexey Rusakov) on 27/11/2021 at 17:45..
Delete ISSUE_TEMPLATE.md

New issue templates reside under .github/
https://invent.kde.org/neon/forks/libquotient/-/commit/1903a8e26893a3f332ba39643aa8da5fdaf1536b

Git commit 0a46049ef26270933ecf6fea7395b03e6aee783e by Alexey Rusakov on 27/11/2021 at 18:15..
Add SonarCloud analysis to CI
https://invent.kde.org/neon/forks/libquotient/-/commit/0a46049ef26270933ecf6fea7395b03e6aee783e

Git commit 0425fd280e7eee7a4c9bcf18f79910f181322c42 by Alexey Rusakov on 27/11/2021 at 19:14..
Event::content() -> contentPart()

There's a clash between Event::content() (a template function) and
RoomMessageEvent::content() (plain member). Out of these two, the name
more fits to the RME's member function - strictly speaking,
Event::content() retrieves a part of content, and so is renamed.
In addition, contentPart() defaults to QJsonValue now, which is pretty
intuitive (the function returns values from a JSON object) and allows
to implement more elaborate logic such as

if (const auto v = contentPart<>("key"_ls); v.isObject()) {
  // foo
} else if (v.isString()) {
  // bar
} else {
  // boo
}
https://invent.kde.org/neon/forks/libquotient/-/commit/0425fd280e7eee7a4c9bcf18f79910f181322c42

Git commit 102ed8b661e6ca66d754de0d102713d930fb224d by Alexey Rusakov on 27/11/2021 at 21:29..
Code cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/102ed8b661e6ca66d754de0d102713d930fb224d

Git commit ce4e878040946b963b30c4768847e2be24dd77fa by Alexey Rusakov on 27/11/2021 at 21:53..
basicEventJson(): dismiss with the template

Given that QJsonObject only accepts QStrings in the list constructor,
the template is useless cruft.
https://invent.kde.org/neon/forks/libquotient/-/commit/ce4e878040946b963b30c4768847e2be24dd77fa

Git commit ab91944cc71a72699d0168b7c472326e59319477 by Alexey Rusakov on 28/11/2021 at 10:19..
Event::unsignedPart()

Similar to contentPart() - apparently there are enough places across
the code that would benefit from it.
https://invent.kde.org/neon/forks/libquotient/-/commit/ab91944cc71a72699d0168b7c472326e59319477

Git commit e12a7aac030aaf53122da4b1bd55f3a97325f624 by Alexey Rusakov on 28/11/2021 at 14:44..
Fix CI breakage caused by the previous commit
https://invent.kde.org/neon/forks/libquotient/-/commit/e12a7aac030aaf53122da4b1bd55f3a97325f624

Git commit 080af15c8aa7cc51f97c924ba4678083b7f8da8f by Alexey Rusakov on 28/11/2021 at 15:10..
One more small thing to actually fix CI breakage

It's might look weird; but without making fromJson() a specialisation
it becomes an overload next to an implicit specialisation of
the template function defined just above, and then loses to that
specialisation because it (also) has the perfect match.

(would be great if the compiler shaded the implicit specialisation in
such cases - alas it's not how the standard works.)
https://invent.kde.org/neon/forks/libquotient/-/commit/080af15c8aa7cc51f97c924ba4678083b7f8da8f

Git commit ca1ba482b50c41425bd0a540c7bb68406d10e552 by Alexey Rusakov on 28/11/2021 at 15:42..
Don't std::move when the callee doesn't support it

In both fixed cases the callee accepts a const reference, which makes
std::move() useless. Static analyzers apparently missed them because
the cases are inside a macro.
https://invent.kde.org/neon/forks/libquotient/-/commit/ca1ba482b50c41425bd0a540c7bb68406d10e552

Git commit 8a769cddcd1a063dd9400518ff65c0b1f1aec1b4 by Alexey Rusakov on 28/11/2021 at 15:53..
Comment on const return types in event.h

Proper linters recognise that the returned types are not primitive,
while people might still be confused a bit.
https://invent.kde.org/neon/forks/libquotient/-/commit/8a769cddcd1a063dd9400518ff65c0b1f1aec1b4

Git commit efd07e0f728d08ff76975c7b053104ab05c48799 by Alexey Rusakov on 28/11/2021 at 15:54..
CMakeLists: drop obsolete -W from the warnings list

Turns out it's been deprecated by -Wextra since before Quotient existed.
https://invent.kde.org/neon/forks/libquotient/-/commit/efd07e0f728d08ff76975c7b053104ab05c48799

Git commit 121c2a08b25d79bcfd09c050d72c6ea7cc7720f9 by Alexey Rusakov on 28/11/2021 at 16:21..
Simplify converters.*

There was a lot of excess redirection in fromJson() and toJson() with
most of JsonConverter<> specialisations being unnecessary boilerplate.
These have been replaced by overloads for toJson() and explicit
specialisations for fromJson() wherever possible without breaking
the conversion logic.
https://invent.kde.org/neon/forks/libquotient/-/commit/121c2a08b25d79bcfd09c050d72c6ea7cc7720f9

Git commit d7f96a88710235c7c8648a7216bb5ad7d779889a by Alexey Rusakov on 29/11/2021 at 09:58..
Track room stubbed state size in logs
https://invent.kde.org/neon/forks/libquotient/-/commit/d7f96a88710235c7c8648a7216bb5ad7d779889a

Git commit 3849a2466208a741165385f20150bddad59d2b8c by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Start implementing Qt olm binding
https://invent.kde.org/neon/forks/libquotient/-/commit/3849a2466208a741165385f20150bddad59d2b8c

Git commit d9286b1ad5516082bc9b40adaceb9485acf4a553 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add tests
https://invent.kde.org/neon/forks/libquotient/-/commit/d9286b1ad5516082bc9b40adaceb9485acf4a553

Git commit c794d61b161ad48312bf079f1e5f483cfac1dc38 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add destructor
https://invent.kde.org/neon/forks/libquotient/-/commit/c794d61b161ad48312bf079f1e5f483cfac1dc38

Git commit e2075a1f33f7987385fc61338ce1756715fdaf6a by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Start inboundsession wrapper
https://invent.kde.org/neon/forks/libquotient/-/commit/e2075a1f33f7987385fc61338ce1756715fdaf6a

Git commit c8d67f737e84bbec98a54fc19a8aa56dbc39d542 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Implement Inboundsession
https://invent.kde.org/neon/forks/libquotient/-/commit/c8d67f737e84bbec98a54fc19a8aa56dbc39d542

Git commit 8706c055e69b01097b702403aaa0d222e5ab0d29 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Implement outboundsession
https://invent.kde.org/neon/forks/libquotient/-/commit/8706c055e69b01097b702403aaa0d222e5ab0d29

Git commit 5b072f7d2519df4c60cc6ae4ce728e99a09d8d44 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
ifdef everything
https://invent.kde.org/neon/forks/libquotient/-/commit/5b072f7d2519df4c60cc6ae4ce728e99a09d8d44

Git commit 0b2b70ac815f48fd83424c282fcf50ef97b08a7b by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Fix documentation typos

Co-authored-by: Tobias Fella <9750016+TobiasFella at users.noreply.github.com>
https://invent.kde.org/neon/forks/libquotient/-/commit/0b2b70ac815f48fd83424c282fcf50ef97b08a7b

Git commit faaea2eb2a090787f365eb12a42f8452bb0f07e2 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Make it work
https://invent.kde.org/neon/forks/libquotient/-/commit/faaea2eb2a090787f365eb12a42f8452bb0f07e2

Git commit 4e0fe24681daef069abde3448c26f5cb850d8bb7 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Update test
https://invent.kde.org/neon/forks/libquotient/-/commit/4e0fe24681daef069abde3448c26f5cb850d8bb7

Git commit 723038cb3fe16c3f0078d00362fcb53c10f9eb4a by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Depends on OpenSSL for crypo rand
https://invent.kde.org/neon/forks/libquotient/-/commit/723038cb3fe16c3f0078d00362fcb53c10f9eb4a

Git commit dca69e8326ce6fd0374123ad8c167a2b0051d8fb by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add group session decrypt/encrypt test and fix bug found by it
https://invent.kde.org/neon/forks/libquotient/-/commit/dca69e8326ce6fd0374123ad8c167a2b0051d8fb

Git commit 987d399bc9ce628c376d505e3ebb78ae703d7c68 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Improve API
https://invent.kde.org/neon/forks/libquotient/-/commit/987d399bc9ce628c376d505e3ebb78ae703d7c68

Git commit 799008ddbe2414ca0bce060a4d7f6a77c04c8d10 by Tobias Fella (on behalf of Alexey Andreyev) on 01/12/2021 at 20:34..
E2EE: Introduce session (WiP)
https://invent.kde.org/neon/forks/libquotient/-/commit/799008ddbe2414ca0bce060a4d7f6a77c04c8d10

Git commit d0d8b267753792d0310dd964b0b688d6262e6eb4 by Tobias Fella (on behalf of Alexey Andreyev) on 01/12/2021 at 20:34..
Add missing reinterpret_cast for session data
https://invent.kde.org/neon/forks/libquotient/-/commit/d0d8b267753792d0310dd964b0b688d6262e6eb4

Git commit 57a218086d3c687cd26580ee2a0d2135646411dc by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add hehlper functions
https://invent.kde.org/neon/forks/libquotient/-/commit/57a218086d3c687cd26580ee2a0d2135646411dc

Git commit fe2d5dd577a05e4a0e250d89487cd14025204b02 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Start adding test for session stuff
https://invent.kde.org/neon/forks/libquotient/-/commit/fe2d5dd577a05e4a0e250d89487cd14025204b02

Git commit f3fdd967d544650f9af8aadbaddfcf6d8a9fe957 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add first session test and it fails :(
https://invent.kde.org/neon/forks/libquotient/-/commit/f3fdd967d544650f9af8aadbaddfcf6d8a9fe957

Git commit 069602584e0f3ec10a26380af69b95f5da11a8b7 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add more test and methods in session handling
https://invent.kde.org/neon/forks/libquotient/-/commit/069602584e0f3ec10a26380af69b95f5da11a8b7

Git commit eabea7af10b5734a507484478a64d2c9f716279f by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add QOlmSession::decrypt
https://invent.kde.org/neon/forks/libquotient/-/commit/eabea7af10b5734a507484478a64d2c9f716279f

Git commit 583d484b2dc27d3216706a1e0858b794d4c5fe19 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Implement session sorting
https://invent.kde.org/neon/forks/libquotient/-/commit/583d484b2dc27d3216706a1e0858b794d4c5fe19

Git commit efe7e4ebc9c71f68d29c5c1a5a6bacbaea6fd146 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Disable olm test when disabling encryption
https://invent.kde.org/neon/forks/libquotient/-/commit/efe7e4ebc9c71f68d29c5c1a5a6bacbaea6fd146

Git commit d44a7914c5f2ba231fdd9c830b1eace69c3383d0 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add device key test
https://invent.kde.org/neon/forks/libquotient/-/commit/d44a7914c5f2ba231fdd9c830b1eace69c3383d0

Git commit 7ad805492f8b42a4bc854313695a912c89019957 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Fix CI
https://invent.kde.org/neon/forks/libquotient/-/commit/7ad805492f8b42a4bc854313695a912c89019957

Git commit 5910689306149cacf3ac644d3ea42e10f889e3fe by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add encrypted file struct
https://invent.kde.org/neon/forks/libquotient/-/commit/5910689306149cacf3ac644d3ea42e10f889e3fe

Git commit dd0316ce57bd9256a093d66845e1d40cd9426ba4 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Move files
https://invent.kde.org/neon/forks/libquotient/-/commit/dd0316ce57bd9256a093d66845e1d40cd9426ba4

Git commit 9f71b2a79fba7c5d5ce09ebfdd482c8c470203d9 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Remove duplicated file
https://invent.kde.org/neon/forks/libquotient/-/commit/9f71b2a79fba7c5d5ce09ebfdd482c8c470203d9

Git commit d72f220e3e3a3b243fdafd93d1405f8207dc516a by Tobias Fella (on behalf of Alexey Andreyev) on 01/12/2021 at 20:34..
E2EE: initial port to internal olm wrapper

Remove qtolm git module. Update CMakeLists.txt.
Rename olm to crypto subdir to prevent disambiguation. Rename internal
files accordingly. Comment out not ported E2EE API usage.
https://invent.kde.org/neon/forks/libquotient/-/commit/d72f220e3e3a3b243fdafd93d1405f8207dc516a

Git commit 12dd7bab004a0b85807347e9bac4ead2baf56bc5 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Fix test
https://invent.kde.org/neon/forks/libquotient/-/commit/12dd7bab004a0b85807347e9bac4ead2baf56bc5

Git commit 0769764249e10f2f6d1a84ac87e93b2fa3b6c61a by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
More porting to new API
https://invent.kde.org/neon/forks/libquotient/-/commit/0769764249e10f2f6d1a84ac87e93b2fa3b6c61a

Git commit 10b89faeea9e385ea901d45418491cd91dff99b9 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
More tests
https://invent.kde.org/neon/forks/libquotient/-/commit/10b89faeea9e385ea901d45418491cd91dff99b9

Git commit f9f7d130e5768d0f69edc8900d37f540b61fa974 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Key verification
https://invent.kde.org/neon/forks/libquotient/-/commit/f9f7d130e5768d0f69edc8900d37f540b61fa974

Git commit 4593856411a2a8e4b82333abd5684b253daab47c by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Add more test and use macro to remove duplicated code
https://invent.kde.org/neon/forks/libquotient/-/commit/4593856411a2a8e4b82333abd5684b253daab47c

Git commit fe9b2f918753d40d93f8aecf182485e75d4b75bb by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
More test but still failing in signing/signature verification
https://invent.kde.org/neon/forks/libquotient/-/commit/fe9b2f918753d40d93f8aecf182485e75d4b75bb

Git commit a5e84c51e9c89021edc8aaade8c751fb6d39cb89 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
remove old files
https://invent.kde.org/neon/forks/libquotient/-/commit/a5e84c51e9c89021edc8aaade8c751fb6d39cb89

Git commit d9dc94a8fb59c8590c4aa7cdf773c2825e69d823 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Fix signing keys
https://invent.kde.org/neon/forks/libquotient/-/commit/d9dc94a8fb59c8590c4aa7cdf773c2825e69d823

Git commit 38547289d56cf66b4f1384ae789cf5b6cd71763e by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Fix cmake code
https://invent.kde.org/neon/forks/libquotient/-/commit/38547289d56cf66b4f1384ae789cf5b6cd71763e

Git commit e9527012622497b0c418df9442180df58401d394 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Apply suggestions from code review

Co-authored-by: Nicolas Fella <6377822+nicolasfella at users.noreply.github.com>
https://invent.kde.org/neon/forks/libquotient/-/commit/e9527012622497b0c418df9442180df58401d394

Git commit 97f2d162618e7fb2473c184c77875ac9d5e8d1d5 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Apply a few more comments
https://invent.kde.org/neon/forks/libquotient/-/commit/97f2d162618e7fb2473c184c77875ac9d5e8d1d5

Git commit 5c50f0ccadedbcb07d51dbac9b1d59c03a26af2f by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
fix typo
https://invent.kde.org/neon/forks/libquotient/-/commit/5c50f0ccadedbcb07d51dbac9b1d59c03a26af2f

Git commit bc4ef60c29709a6f782f6e75e1f040f250fb8bd7 by Tobias Fella on 01/12/2021 at 20:34..
Ifdef E2EE out at cmake level
https://invent.kde.org/neon/forks/libquotient/-/commit/bc4ef60c29709a6f782f6e75e1f040f250fb8bd7

Git commit ea617d31cf3f72f76fd49c0a20f445a78678fe5f by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Apply suggestions from code review

Co-authored-by: Tobias Fella <9750016+TobiasFella at users.noreply.github.com>
https://invent.kde.org/neon/forks/libquotient/-/commit/ea617d31cf3f72f76fd49c0a20f445a78678fe5f

Git commit c2836e007e2d46c0c20270b99ede5b78d2c7170b by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
ssl
https://invent.kde.org/neon/forks/libquotient/-/commit/c2836e007e2d46c0c20270b99ede5b78d2c7170b

Git commit 0a75a095665101d4ffcbec10b43633eee5a0d6d3 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:34..
Fix everything
https://invent.kde.org/neon/forks/libquotient/-/commit/0a75a095665101d4ffcbec10b43633eee5a0d6d3

Git commit 65877dc9fb6e024d456343d42ef55e0c5c8b67b3 by Tobias Fella on 01/12/2021 at 20:34..
Upload one-time keys when their count is low
https://invent.kde.org/neon/forks/libquotient/-/commit/65877dc9fb6e024d456343d42ef55e0c5c8b67b3

Git commit 1186c9fc980f9659191df4b3f5b540befe946dfa by Tobias Fella on 01/12/2021 at 20:34..
Make sure that only one upload is running
https://invent.kde.org/neon/forks/libquotient/-/commit/1186c9fc980f9659191df4b3f5b540befe946dfa

Git commit 211d0c1b96c13f949f50799f5a4412ae31586546 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:36..
Uncomment some stuff
https://invent.kde.org/neon/forks/libquotient/-/commit/211d0c1b96c13f949f50799f5a4412ae31586546

Git commit 1d851e7b2e5e0c937413b8fd4bcdb35c8492430b by Tobias Fella on 01/12/2021 at 20:36..
Upload device keys when creating a new olm account
https://invent.kde.org/neon/forks/libquotient/-/commit/1d851e7b2e5e0c937413b8fd4bcdb35c8492430b

Git commit 00b6103ceeed63238cb8c691163ed8489dd72ddb by Tobias Fella on 01/12/2021 at 20:56..
Start implementing device key tracking
https://invent.kde.org/neon/forks/libquotient/-/commit/00b6103ceeed63238cb8c691163ed8489dd72ddb

Git commit 1f2ae094b29aa3fc237919659ced66c6d236d068 by Tobias Fella on 01/12/2021 at 20:56..
Clear current query job when it finished
https://invent.kde.org/neon/forks/libquotient/-/commit/1f2ae094b29aa3fc237919659ced66c6d236d068

Git commit e0945db3c4c539040f07ff7683efa9dc4e6b9e6a by Tobias Fella on 01/12/2021 at 20:56..
Actually load devices from sync data and filter relevant users
https://invent.kde.org/neon/forks/libquotient/-/commit/e0945db3c4c539040f07ff7683efa9dc4e6b9e6a

Git commit c408b460bea2010c6745e03c549e136d6b1d9ec6 by Tobias Fella on 01/12/2021 at 20:56..
Start tracking user's devices when a a room starts being encrypted
https://invent.kde.org/neon/forks/libquotient/-/commit/c408b460bea2010c6745e03c549e136d6b1d9ec6

Git commit f451813f21a76e8c011bbd27f4ded1d31044a572 by Tobias Fella on 01/12/2021 at 20:56..
Update tracked users list when new user joins encrypted room
https://invent.kde.org/neon/forks/libquotient/-/commit/f451813f21a76e8c011bbd27f4ded1d31044a572

Git commit 6449f66152396ed539904b0e89d41601aeadf30d by Tobias Fella on 01/12/2021 at 20:56..
Verify deviceKeys signatures
https://invent.kde.org/neon/forks/libquotient/-/commit/6449f66152396ed539904b0e89d41601aeadf30d

Git commit 5d3fe54fdfae4b74272a80c4bbe8f5d8a3e4c5cb by Tobias Fella on 01/12/2021 at 20:56..
Fix signature verification logic
https://invent.kde.org/neon/forks/libquotient/-/commit/5d3fe54fdfae4b74272a80c4bbe8f5d8a3e4c5cb

Git commit 265f105d77bf91c127c363b0c880357f91df7db4 by Tobias Fella on 01/12/2021 at 20:56..
Cache deviceslist across restarts
https://invent.kde.org/neon/forks/libquotient/-/commit/265f105d77bf91c127c363b0c880357f91df7db4

Git commit 5f3e33e1c15be19f09d83a0d6f44d551021a9d44 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
Implement key verification events
https://invent.kde.org/neon/forks/libquotient/-/commit/5f3e33e1c15be19f09d83a0d6f44d551021a9d44

Git commit a2b65a3abb635a478555b61de33cb5257d8dd34e by Tobias Fella on 01/12/2021 at 20:56..
Query for keys less and actually load users from cache
https://invent.kde.org/neon/forks/libquotient/-/commit/a2b65a3abb635a478555b61de33cb5257d8dd34e

Git commit d997bbf54e755c42b62fadca8ee63b27aa0e7480 by Tobias Fella on 01/12/2021 at 20:56..
More fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/d997bbf54e755c42b62fadca8ee63b27aa0e7480

Git commit 8b573fc9f9f4b65ace0fdc5b4598f1974e01f7e3 by Tobias Fella on 01/12/2021 at 20:56..
Fix compilation without E2EE
https://invent.kde.org/neon/forks/libquotient/-/commit/8b573fc9f9f4b65ace0fdc5b4598f1974e01f7e3

Git commit cddab50ca80944203930255e37e825abb47a272b by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
Finish writing TestOlmAccount::signatureValid
https://invent.kde.org/neon/forks/libquotient/-/commit/cddab50ca80944203930255e37e825abb47a272b

Git commit 9bf12da8aaa1b2005d9d7d8eae4269c8a9bf1c08 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
test: Add QueryKey test (failing)
https://invent.kde.org/neon/forks/libquotient/-/commit/9bf12da8aaa1b2005d9d7d8eae4269c8a9bf1c08

Git commit fc531b625efa3f0c0ceebed3c23a3d185d398a4d by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
Fix tests
https://invent.kde.org/neon/forks/libquotient/-/commit/fc531b625efa3f0c0ceebed3c23a3d185d398a4d

Git commit 8e0e3849da4f024d94c1cbfb053dfb47706e2d16 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
Text: Add KeyChange test
https://invent.kde.org/neon/forks/libquotient/-/commit/8e0e3849da4f024d94c1cbfb053dfb47706e2d16

Git commit 429dbc5670b3f9eba44221395a75221b8306c068 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
Add a test (now failing)
https://invent.kde.org/neon/forks/libquotient/-/commit/429dbc5670b3f9eba44221395a75221b8306c068

Git commit d30a5153cca335ff6f23cc5a3019001913df0edd by Tobias Fella on 01/12/2021 at 20:56..
Fix JSON formatting for one-time-key signature creation
https://invent.kde.org/neon/forks/libquotient/-/commit/d30a5153cca335ff6f23cc5a3019001913df0edd

Git commit 0ec4df82265c2f796035c0c103b9f6693f62e24a by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
Fix setting encrypted flag in rooms
https://invent.kde.org/neon/forks/libquotient/-/commit/0ec4df82265c2f796035c0c103b9f6693f62e24a

Git commit 40d6616ef0c4a9be20d5fe5e50f4b9959d0ab3d1 by Tobias Fella on 01/12/2021 at 20:56..
Cleanup and Refactor EncryptionManager
https://invent.kde.org/neon/forks/libquotient/-/commit/40d6616ef0c4a9be20d5fe5e50f4b9959d0ab3d1

Git commit 3e51359d1b7891b9a6e4611662c753653c3618bf by Tobias Fella on 01/12/2021 at 20:56..
Things
https://invent.kde.org/neon/forks/libquotient/-/commit/3e51359d1b7891b9a6e4611662c753653c3618bf

Git commit 1ce9d98cc3957af5a81f6672f3fb86a4dd170ed9 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
Uncomment some stuff
https://invent.kde.org/neon/forks/libquotient/-/commit/1ce9d98cc3957af5a81f6672f3fb86a4dd170ed9

Git commit 2c5c990f4248a3112d26c3a92e011655064f3fcf by Tobias Fella on 01/12/2021 at 20:56..
Update the OlmAccountPickle in the accountsettings when the olmaccount
changes
https://invent.kde.org/neon/forks/libquotient/-/commit/2c5c990f4248a3112d26c3a92e011655064f3fcf

Git commit f89c05408bc9a4bf59366f92c50f055d527b9a28 by Tobias Fella on 01/12/2021 at 20:56..
Remove unrelated changes
https://invent.kde.org/neon/forks/libquotient/-/commit/f89c05408bc9a4bf59366f92c50f055d527b9a28

Git commit 46e7f0d69db376cf45b354fef69ecba1e4636805 by Tobias Fella on 01/12/2021 at 20:56..
Emit needsSave when required
https://invent.kde.org/neon/forks/libquotient/-/commit/46e7f0d69db376cf45b354fef69ecba1e4636805

Git commit cdd21a33eabebbad33a610cbe189116caba3ac89 by Tobias Fella on 01/12/2021 at 20:56..
Fix FTBFS
https://invent.kde.org/neon/forks/libquotient/-/commit/cdd21a33eabebbad33a610cbe189116caba3ac89

Git commit d04543ba00335d87a872b0f0c8ff35c85301e096 by Tobias Fella on 01/12/2021 at 20:56..
Try fixing the CI
https://invent.kde.org/neon/forks/libquotient/-/commit/d04543ba00335d87a872b0f0c8ff35c85301e096

Git commit a30d457161fcaadfe944e4411d4b0e487e856178 by Tobias Fella on 01/12/2021 at 20:56..
Fix build without E2EE
https://invent.kde.org/neon/forks/libquotient/-/commit/a30d457161fcaadfe944e4411d4b0e487e856178

Git commit 9f08e5d865a5500d2926f10de85da2d5dcd063f7 by Tobias Fella on 01/12/2021 at 20:56..
Add a function for decrypting E2EE files/images
https://invent.kde.org/neon/forks/libquotient/-/commit/9f08e5d865a5500d2926f10de85da2d5dcd063f7

Git commit 1bc8c3c2a177668af00889ae18f26d81dfef4af1 by Tobias Fella on 01/12/2021 at 20:56..
Remove outdated comment
https://invent.kde.org/neon/forks/libquotient/-/commit/1bc8c3c2a177668af00889ae18f26d81dfef4af1

Git commit 0bafc33d70ddfdc8c4015a7f330623c726fe7ef7 by Tobias Fella on 01/12/2021 at 20:56..
Only build the encryptionmanager when encryption is enabled
https://invent.kde.org/neon/forks/libquotient/-/commit/0bafc33d70ddfdc8c4015a7f330623c726fe7ef7

Git commit 6190e2b23a5ef62530a90fc03e264605e716ad2e by Tobias Fella on 01/12/2021 at 20:56..
Fix olm error parsing
https://invent.kde.org/neon/forks/libquotient/-/commit/6190e2b23a5ef62530a90fc03e264605e716ad2e

Git commit eaf23c0f6bb97fdf16631296ab7016447a99c4f2 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
Don't die on broken olm account
https://invent.kde.org/neon/forks/libquotient/-/commit/eaf23c0f6bb97fdf16631296ab7016447a99c4f2

Git commit 703b3f89ef54d9d40c9117788d0920b6b745bd62 by Tobias Fella on 01/12/2021 at 20:56..
Implement (meg)olm key caching, megolm decrypting, EncryptedEvent
decryption, handling of encrypted redactions and replies
https://invent.kde.org/neon/forks/libquotient/-/commit/703b3f89ef54d9d40c9117788d0920b6b745bd62

Git commit 60bd11426e941f9d349962b8b2ea4bddd9488965 by Tobias Fella on 01/12/2021 at 20:56..
Don't crash when ToDeviceEvent decryption fails
https://invent.kde.org/neon/forks/libquotient/-/commit/60bd11426e941f9d349962b8b2ea4bddd9488965

Git commit 244938d2c99674ba09f3c1f92b2a4f8507ac5e58 by Tobias Fella on 01/12/2021 at 20:56..
Various fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/244938d2c99674ba09f3c1f92b2a4f8507ac5e58

Git commit 0583534d83f902235b46ef6761d6698ddb6e6aba by Tobias Fella on 01/12/2021 at 20:56..
Store pickling key in qtkeychain and pickle encrypted
https://invent.kde.org/neon/forks/libquotient/-/commit/0583534d83f902235b46ef6761d6698ddb6e6aba

Git commit 77a13cfdace5cb27adb52b3a644a155aee522b12 by Tobias Fella on 01/12/2021 at 20:56..
Implement download and decryption of encrypted files
https://invent.kde.org/neon/forks/libquotient/-/commit/77a13cfdace5cb27adb52b3a644a155aee522b12

Git commit b35a736da2b09fe5cc0091f9fbd370d057503a54 by Tobias Fella on 01/12/2021 at 20:56..
Handle encrypted file download through existing API
https://invent.kde.org/neon/forks/libquotient/-/commit/b35a736da2b09fe5cc0091f9fbd370d057503a54

Git commit 8636c7028b45ee8de3125bcf4df40ad60ed949a0 by Tobias Fella on 01/12/2021 at 20:56..
Add mxc protocol to the networkaccessmanager
https://invent.kde.org/neon/forks/libquotient/-/commit/8636c7028b45ee8de3125bcf4df40ad60ed949a0

Git commit f42b91eb52ea408c6aedd4954cac7eb02e7b0df4 by Tobias Fella on 01/12/2021 at 20:56..
Try adding qtkeychain to github CI
https://invent.kde.org/neon/forks/libquotient/-/commit/f42b91eb52ea408c6aedd4954cac7eb02e7b0df4

Git commit 82cffec29937e4449a75040485d5188f429b7b1e by Tobias Fella on 01/12/2021 at 20:56..
Try decrypting existing messages when a new key is added
https://invent.kde.org/neon/forks/libquotient/-/commit/82cffec29937e4449a75040485d5188f429b7b1e

Git commit 34db4fd1294e41765a5db58ee1a0c59712af62c6 by Tobias Fella on 01/12/2021 at 20:56..
Various improvements and fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/34db4fd1294e41765a5db58ee1a0c59712af62c6

Git commit cab1c772abaf380f30a504231fc06b070feb09ec by Tobias Fella on 01/12/2021 at 20:56..
Save olm account on shutdown
https://invent.kde.org/neon/forks/libquotient/-/commit/cab1c772abaf380f30a504231fc06b070feb09ec

Git commit 06facdb1179e2e6789d7263541294fb427f649e5 by Tobias Fella on 01/12/2021 at 20:56..
Move non-cache data to a non-cache location
https://invent.kde.org/neon/forks/libquotient/-/commit/06facdb1179e2e6789d7263541294fb427f649e5

Git commit 15e75b20d5bb9339a8b769b717db00fb5c16b050 by Tobias Fella on 01/12/2021 at 20:56..
Add function to decrypt notifications
https://invent.kde.org/neon/forks/libquotient/-/commit/15e75b20d5bb9339a8b769b717db00fb5c16b050

Git commit 545852ca45fadb3ee43072763e81cbfba0366e25 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
Fix compilation
https://invent.kde.org/neon/forks/libquotient/-/commit/545852ca45fadb3ee43072763e81cbfba0366e25

Git commit 6896d3e1bd57c398bd4e1ee9badac87dc66ccea7 by Tobias Fella (on behalf of Carl Schwan) on 01/12/2021 at 20:56..
We always need qtkeychain
https://invent.kde.org/neon/forks/libquotient/-/commit/6896d3e1bd57c398bd4e1ee9badac87dc66ccea7

Git commit 877591582f07b5c5c104370e80c858b951c0757f by Tobias Fella on 01/12/2021 at 20:56..
Use UnorderedMap instead of std::map
https://invent.kde.org/neon/forks/libquotient/-/commit/877591582f07b5c5c104370e80c858b951c0757f

Git commit e4802dc967c640ebac1d0bc7db55b47b79233544 by Tobias Fella on 01/12/2021 at 20:56..
Try fixing windows CI
https://invent.kde.org/neon/forks/libquotient/-/commit/e4802dc967c640ebac1d0bc7db55b47b79233544

Git commit e99802772ebab9802e2f35d83ce1de9f83691d90 by Tobias Fella on 01/12/2021 at 20:56..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/e99802772ebab9802e2f35d83ce1de9f83691d90

Git commit 8020505eb582479cf62d0157fe866f63a888f1a9 by Tobias Fella on 01/12/2021 at 20:56..
Apply more suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/8020505eb582479cf62d0157fe866f63a888f1a9

Git commit 3128df9daa196b2cf3cdb8e029e22d79c397ff66 by Tobias Fella on 01/12/2021 at 20:56..
Apply even more suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/3128df9daa196b2cf3cdb8e029e22d79c397ff66

Git commit dcc4556a761f96ae6c71115bf6297feca32581bf by Tobias Fella on 01/12/2021 at 20:56..
More improvements
https://invent.kde.org/neon/forks/libquotient/-/commit/dcc4556a761f96ae6c71115bf6297feca32581bf

Git commit 9217026e46d7ac0d761cc5206d7ef00978558c47 by Tobias Fella on 01/12/2021 at 20:56..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/9217026e46d7ac0d761cc5206d7ef00978558c47

Git commit ae0ad49f36e8ba5983839581302ed16ddbd75d5f by Alexey Rusakov on 02/12/2021 at 13:04..
visit(Event, ...) -> switchOnType()

It has not much to do with the Visitor design pattern; also,
std::visit() has different conventions on the order of parameters.
https://invent.kde.org/neon/forks/libquotient/-/commit/ae0ad49f36e8ba5983839581302ed16ddbd75d5f

Git commit dc08fb9dfd474023084de9ce86f29f177ca52fdc by Alexey Rusakov on 02/12/2021 at 14:24..
Improve function_traits<>; split out from util.*

Quotient::function_traits<> did not support member functions in a proper
way (i.e. the way std::invoke_result<> treats them, with the function's
owning class represented as the first parameter). Now that I gained
the skill and understanding in function_traits<> somewhat wicked
machinery, I could properly support member functions. Overloads and
generic lambdas are not supported but maybe we'll get to those one day.
https://invent.kde.org/neon/forks/libquotient/-/commit/dc08fb9dfd474023084de9ce86f29f177ca52fdc

Git commit c3a0515ac2ead7b2d0653be3517836cd31be480e by Alexey Rusakov on 02/12/2021 at 20:18..
Cleanup on Sonar issues
https://invent.kde.org/neon/forks/libquotient/-/commit/c3a0515ac2ead7b2d0653be3517836cd31be480e

Git commit 3b5d5f65c5eb10997362f9f9509fe2161eaa335c by Alexey Rusakov on 03/12/2021 at 14:07..
CMakeLists.txt: add .h files to sources

This is driven by the change in the way Qt Creator 6 works with CMake
(see https://www.qt.io/blog/qt-creator-6-cmake-update) that basically
requires you to explicitly add header files as source files. While this
obviously added to the size of the source files list, it also drove
dropping the repeated file(GLOB_RECURSE ... CONFIGURE_DEPENDS) call
which added a considerable speedbump to the beginning of each build
(now that call is just one).
https://invent.kde.org/neon/forks/libquotient/-/commit/3b5d5f65c5eb10997362f9f9509fe2161eaa335c

Git commit dc458f3952b0005a0feb63fbebed11ae9ad5a062 by Alexey Rusakov on 03/12/2021 at 14:11..
Rely on GTAD 0.9 that calls clang-format itself

There was that ugly workaround in CMakeLists.txt to produce the list of
files to be formatted and making a separate build target for
clang-format. As GTAD 0.9 calls clang-format itself this workaround is
no more necessary; generate-unformatted-api and format-api build targets
are now gone, and clang-format is no more one-build-system-configuration
behind GTAD on the list of files to handle.
https://invent.kde.org/neon/forks/libquotient/-/commit/dc458f3952b0005a0feb63fbebed11ae9ad5a062

Git commit 0d212bdb7849d12582d906a03935cb6f51767e3b by Alexey Rusakov on 03/12/2021 at 20:35..
Add a couple of bare .h files to CMakeLists.txt

These were missing from the commit introducing .h files to sources,
highlighting the reason why .h files should be there...
https://invent.kde.org/neon/forks/libquotient/-/commit/0d212bdb7849d12582d906a03935cb6f51767e3b

Git commit 776d05bf98a5dd9e484d5a0e651c71fa95498689 by Alexey Rusakov on 03/12/2021 at 20:36..
Cleanup; drop an unused RoomAliasesEvent constructor

Also, RoomAliasesEvent is to be completely gone after 0.7.
https://invent.kde.org/neon/forks/libquotient/-/commit/776d05bf98a5dd9e484d5a0e651c71fa95498689

Git commit 7981c654c0cd53f6e100ecae25882246a9de5d6e by Alexey Rusakov on 05/12/2021 at 20:47..
Drop 'qmc-example' from one last(?) place
https://invent.kde.org/neon/forks/libquotient/-/commit/7981c654c0cd53f6e100ecae25882246a9de5d6e

Git commit 9ddb72611f5575ccd5d3b68734a9d40d8ef2befc by Alexey Rusakov on 06/12/2021 at 06:17..
Add execution of autotests to CI
https://invent.kde.org/neon/forks/libquotient/-/commit/9ddb72611f5575ccd5d3b68734a9d40d8ef2befc

Git commit ac0ce7da24b4e567a34863db3261f755674d8337 by Alexey Rusakov on 06/12/2021 at 21:42..
autotests/: don't instantiate QApplication

Those tests don't even need an event loop.
https://invent.kde.org/neon/forks/libquotient/-/commit/ac0ce7da24b4e567a34863db3261f755674d8337

Git commit 47bd4dfb2bc720d2b5919b93985f87d918af572a by Tobias Fella on 06/12/2021 at 23:25..
Port E2EE to database instead of JSON files
https://invent.kde.org/neon/forks/libquotient/-/commit/47bd4dfb2bc720d2b5919b93985f87d918af572a

Git commit 449456c2c86f56e9294294e03436d3aa0ff089f5 by Alexey Rusakov on 07/12/2021 at 13:28..
Fix quotest invocation; use working-directory
https://invent.kde.org/neon/forks/libquotient/-/commit/449456c2c86f56e9294294e03436d3aa0ff089f5

Git commit cb7c57953024a23fc7c20db75f3a15f81bb62bd3 by Alexey Rusakov on 07/12/2021 at 13:43..
Fix valgrind invocation failure

It turned out that, confusingly, ${{ runner.workspace }} refers to
the directory above $GITHUB_WORKSPACE, which is why the previous commit
ended up with valgrind not finding its suppressions.
https://invent.kde.org/neon/forks/libquotient/-/commit/cb7c57953024a23fc7c20db75f3a15f81bb62bd3

Git commit 0128b8a296b1be7e7702ec525539614d47dd7471 by Alexey Rusakov on 07/12/2021 at 14:58..
CI: Put all build directories to ${{ runner.workspace }}/build
https://invent.kde.org/neon/forks/libquotient/-/commit/0128b8a296b1be7e7702ec525539614d47dd7471

Git commit 2c6fa33ca52842e9dfba0dd3893a9d5526e10e60 by Tobias Fella on 07/12/2021 at 18:08..
Rename "crypto" -> "e2ee"
https://invent.kde.org/neon/forks/libquotient/-/commit/2c6fa33ca52842e9dfba0dd3893a9d5526e10e60

Git commit 0f20fb028602016c718f4fd05cdb18b80442b3ca by Tobias Fella on 07/12/2021 at 18:09..
id -> matrixId
https://invent.kde.org/neon/forks/libquotient/-/commit/0f20fb028602016c718f4fd05cdb18b80442b3ca

Git commit 5cf182fd4fed95e1a16936f400e8ff6fcf991d7c by Tobias Fella on 07/12/2021 at 18:18..
Fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/5cf182fd4fed95e1a16936f400e8ff6fcf991d7c

Git commit 1cf9b67e3586888e5f72a30b82bb9541c026d672 by Tobias Fella on 07/12/2021 at 21:05..
snake_case table names
https://invent.kde.org/neon/forks/libquotient/-/commit/1cf9b67e3586888e5f72a30b82bb9541c026d672

Git commit 18695131e056b86e38d7b43f787014fbd1516240 by Tobias Fella on 07/12/2021 at 21:10..
Remove default constructor
https://invent.kde.org/neon/forks/libquotient/-/commit/18695131e056b86e38d7b43f787014fbd1516240

Git commit 6cf625779fe270fd4192639e30acc45687270246 by Tobias Fella on 07/12/2021 at 22:07..
Add clangd files to .gitignore
https://invent.kde.org/neon/forks/libquotient/-/commit/6cf625779fe270fd4192639e30acc45687270246

Git commit 9fb07da8451f024085061e2985e9be384e7beb5c by Tobias Fella on 07/12/2021 at 22:15..
Maintain list of undecrypted events to speed up decryption of old
messages
https://invent.kde.org/neon/forks/libquotient/-/commit/9fb07da8451f024085061e2985e9be384e7beb5c

Git commit bd728a91f69382a052d07582788fcecec8b0f35e by Alexey Rusakov on 08/12/2021 at 14:51..
Test installed quotest

This covers Quotient_INSTALL_TESTS setting.
https://invent.kde.org/neon/forks/libquotient/-/commit/bd728a91f69382a052d07582788fcecec8b0f35e

Git commit a0ce17dfe793c924205b449c026f2f776b032ff3 by Tobias Fella on 08/12/2021 at 22:07..
Store encryptedevent in decrypted roomevents
https://invent.kde.org/neon/forks/libquotient/-/commit/a0ce17dfe793c924205b449c026f2f776b032ff3

Git commit 3054255cba206c91e3bdf0ea42fde39d51261e6a by Tobias Fella on 08/12/2021 at 22:14..
Update logging categories
https://invent.kde.org/neon/forks/libquotient/-/commit/3054255cba206c91e3bdf0ea42fde39d51261e6a

Git commit 39ca00755d91c5e608bfe2a67c84ceb29ed49976 by Tobias Fella on 08/12/2021 at 22:18..
Try fixing sonar
https://invent.kde.org/neon/forks/libquotient/-/commit/39ca00755d91c5e608bfe2a67c84ceb29ed49976

Git commit c585227b3724666e3cf7aab3ab53d6f5930e7218 by Alexey Rusakov on 09/12/2021 at 20:07..
Fix CI failure on macOS

CMAKE_INSTALL_RPATH_USE_LINK_PATH is more universal than setting LD_LIBRARY_PATH

Also: drop an extra slash in the path to installed quotest.
https://invent.kde.org/neon/forks/libquotient/-/commit/c585227b3724666e3cf7aab3ab53d6f5930e7218

Git commit 1f6771c3b14453ae9b6651a9edb1f7778d3f71f3 by GitHub (on behalf of Tobias Fella) on 09/12/2021 at 22:59..
Update lib/connection.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/1f6771c3b14453ae9b6651a9edb1f7778d3f71f3

Git commit 58798ce15f0f235d64f9c34b3f8c013678ebf25f by Tobias Fella on 09/12/2021 at 22:59..
Ifdef all the things
https://invent.kde.org/neon/forks/libquotient/-/commit/58798ce15f0f235d64f9c34b3f8c013678ebf25f

Git commit b3be614b71b12e729d1bf3d6ca7d7068a0786fc8 by Tobias Fella on 09/12/2021 at 22:59..
Rename database
https://invent.kde.org/neon/forks/libquotient/-/commit/b3be614b71b12e729d1bf3d6ca7d7068a0786fc8

Git commit 7129118a7735a13af0db7d71efd60a330feac877 by Tobias Fella on 09/12/2021 at 23:12..
ifdef more things
https://invent.kde.org/neon/forks/libquotient/-/commit/7129118a7735a13af0db7d71efd60a330feac877

Git commit 6cec450f1d749936bd51a1471ac0ed74f633ef66 by Tobias Fella on 09/12/2021 at 23:26..
Fix compilation of tests against older qt
https://invent.kde.org/neon/forks/libquotient/-/commit/6cec450f1d749936bd51a1471ac0ed74f633ef66

Git commit 90b4ac346ac253345aca2b9a3c98df75d9c058d3 by GitHub (on behalf of Alexey Rusakov) on 10/12/2021 at 02:32..
Merge pull request #523 from quotient-im/kitsune/ci-add-autotests

Add autotests to CI
https://invent.kde.org/neon/forks/libquotient/-/commit/90b4ac346ac253345aca2b9a3c98df75d9c058d3

Git commit b4cc38fc7c2c63d8122106a2451aec2c60176a4b by Tobias Fella on 10/12/2021 at 15:10..
Use individual databases for each connection
https://invent.kde.org/neon/forks/libquotient/-/commit/b4cc38fc7c2c63d8122106a2451aec2c60176a4b

Git commit b4a6070d44140a3cbc931b18530721e31f069455 by GitHub (on behalf of Tobias Fella) on 10/12/2021 at 15:15..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/b4a6070d44140a3cbc931b18530721e31f069455

Git commit 4a17403f9adad9b4390f7e0010c0f7e23a718f7b by GitHub (on behalf of Tobias Fella) on 10/12/2021 at 15:25..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/4a17403f9adad9b4390f7e0010c0f7e23a718f7b

Git commit 6b29d759a47012eef74948e72c0d0395eb6bf282 by Tobias Fella on 10/12/2021 at 16:01..
Remove data from database when leaving room
https://invent.kde.org/neon/forks/libquotient/-/commit/6b29d759a47012eef74948e72c0d0395eb6bf282

Git commit e5256e0b1e4c43ce96d99d1b82ca5d98a1baded6 by Alexey Rusakov on 17/12/2021 at 07:07..
RoomMemberEvent: fix an off-by-one error

Also: extended quotest to cover member renames, not just user profile renames.
https://invent.kde.org/neon/forks/libquotient/-/commit/e5256e0b1e4c43ce96d99d1b82ca5d98a1baded6

Git commit 24a562cc64e8fac6c55108ae2b7b6997ecdd2010 by Alexey Rusakov on 21/12/2021 at 12:15..
Quotest: add a missing \n in the output
https://invent.kde.org/neon/forks/libquotient/-/commit/24a562cc64e8fac6c55108ae2b7b6997ecdd2010

Git commit 487e7f5ef75a5a5a4d732027d0b7705fdffb71ca by Alexey Rusakov on 21/12/2021 at 12:15..
Add event_loader.h to CMakeLists

Another forgotten header file.
https://invent.kde.org/neon/forks/libquotient/-/commit/487e7f5ef75a5a5a4d732027d0b7705fdffb71ca

Git commit b989383165b648269a231d1febadc8150676d5cf by Alexey Rusakov on 21/12/2021 at 17:40..
Don't chain RoomEvent to Event factory any more

Objects derived from Event are not room events (in the spec sense) and
never occur in the same arrays as room events; therefore this chaining
has always been superfluous.
https://invent.kde.org/neon/forks/libquotient/-/commit/b989383165b648269a231d1febadc8150676d5cf

Git commit 231c4d723eb53f3ea5f641b743d198584840a963 by Alexey Rusakov on 22/12/2021 at 12:44..
Simplify the code around EventFactory<>

The former code assumed that EventFactory<> is just a class-level shell
for a bunch of functions and a static data member that only exists to
allow specialisations to occur for the whole group together. On top of
that, setupFactory() and registerEventType() strived to protect this
group from double registration coming from static variables in an
anonymous namespace produced by REGISTER_EVENT_TYPE.

The whole thing is now de-static-ed: resolving the factory now relies
on class-static Event/RoomEvent/StateEventBase::factory variables
instead of factory_t type aliases; and REGISTER_EVENT_TYPE produces
non-static inline variables instead, obviating the need of
registerEventType/setupFactory kludge.
https://invent.kde.org/neon/forks/libquotient/-/commit/231c4d723eb53f3ea5f641b743d198584840a963

Git commit 060af9334049c58767b6457da2d7c07fdb0d171e by Alexey Rusakov on 22/12/2021 at 15:13..
StateEventBase: force type to unknown if stateKey is not in JSON
https://invent.kde.org/neon/forks/libquotient/-/commit/060af9334049c58767b6457da2d7c07fdb0d171e

Git commit ab5da392cda29f7f6ecf7f982e834fc9f008f33d by GitHub (on behalf of Alexey Rusakov) on 22/12/2021 at 16:57..
Merge pull request #526 from quotient-im/kitsune/simpler-event-factories

Simplify event factories
https://invent.kde.org/neon/forks/libquotient/-/commit/ab5da392cda29f7f6ecf7f982e834fc9f008f33d

Git commit 79841d6add9e60716ec6690cde3bccf952cceada by GitHub (on behalf of Tobias Fella) on 22/12/2021 at 18:13..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/79841d6add9e60716ec6690cde3bccf952cceada

Git commit 5920f8cf64b60a07ddf73852d6d4f724ab3bb03a by Tobias Fella on 22/12/2021 at 18:16..
Another improvement
https://invent.kde.org/neon/forks/libquotient/-/commit/5920f8cf64b60a07ddf73852d6d4f724ab3bb03a

Git commit 1176ec1eedb749e81e3d446733c267a971feefa4 by Tobias Fella on 23/12/2021 at 23:03..
Find sql when using libquotient
https://invent.kde.org/neon/forks/libquotient/-/commit/1176ec1eedb749e81e3d446733c267a971feefa4

Git commit 31bb962f36c31621b311f1aee654e36ea09e8d77 by Tobias Fella on 24/12/2021 at 00:47..
Fix reading unencrypted images
https://invent.kde.org/neon/forks/libquotient/-/commit/31bb962f36c31621b311f1aee654e36ea09e8d77

Git commit 42eaf3671c656088f8d038f83973f0931ad7051c by Alexey Rusakov on 24/12/2021 at 01:33..
Sonar: leave just one job

There's not much value in analysing the code without E2EE and with E2EE
because E2EE is additive; and there's no plan to look close into
the generated API code apart from what already ends up being committed.
https://invent.kde.org/neon/forks/libquotient/-/commit/42eaf3671c656088f8d038f83973f0931ad7051c

Git commit a08348007dd0a73a40b7b1d755b3affc963b5b80 by Alexey Rusakov on 24/12/2021 at 01:34..
Sonar: add coverage analysis
https://invent.kde.org/neon/forks/libquotient/-/commit/a08348007dd0a73a40b7b1d755b3affc963b5b80

Git commit 0cbbae133d61ccb1fbb41a40660a70c65f65235f by Alexey Rusakov on 24/12/2021 at 01:34..
Merge Sonar invocation back to ci.yml

For coverage analysis to work, a test run is needed, making the overlap
between ci.yaml and sonar.yml quite significant again.

Note: 'update-api' option is temporarily dropped from the matrix
to speed up the check. If things run fine, 'update-api' will come back.
https://invent.kde.org/neon/forks/libquotient/-/commit/0cbbae133d61ccb1fbb41a40660a70c65f65235f

Git commit 669ed9bcae110ca0539876193ec3b8cb9b8a8a18 by Alexey Rusakov on 24/12/2021 at 01:36..
Actually do and submit coverage

...instead of hoping the thing will sort itself out because CLion does.
https://invent.kde.org/neon/forks/libquotient/-/commit/669ed9bcae110ca0539876193ec3b8cb9b8a8a18

Git commit 3fa5925ad6c9ce558dd9726a02614fd6f9c031e5 by Alexey Rusakov on 24/12/2021 at 01:36..
Analyse in 2 threads
https://invent.kde.org/neon/forks/libquotient/-/commit/3fa5925ad6c9ce558dd9726a02614fd6f9c031e5

Git commit e1c19404846b2a7a2f321c662528252e4eeef35e by Alexey Rusakov on 24/12/2021 at 05:42..
Don't strip lib from names in .gcov files

That apparently confuses Sonar as it fails to match the source files.
https://invent.kde.org/neon/forks/libquotient/-/commit/e1c19404846b2a7a2f321c662528252e4eeef35e

Git commit a207439d165b00b689e37b2759e0ca42bdfb22ae by Alexey Rusakov on 24/12/2021 at 07:00..
Reinstate update-api jobs
https://invent.kde.org/neon/forks/libquotient/-/commit/a207439d165b00b689e37b2759e0ca42bdfb22ae

Git commit ebabb2f535c3a8ca86d9ba21cfb99ff237ab621d by Alexey Rusakov on 24/12/2021 at 07:02..
Merge branch 'kitsune/sonar-coverage'
https://invent.kde.org/neon/forks/libquotient/-/commit/ebabb2f535c3a8ca86d9ba21cfb99ff237ab621d

Git commit e4a9132ab5c684be9743823df7c31d12da1e3f3b by Alexey Rusakov on 24/12/2021 at 09:40..
CI: Add missing coverage files
https://invent.kde.org/neon/forks/libquotient/-/commit/e4a9132ab5c684be9743823df7c31d12da1e3f3b

Git commit 179564eb4c2d5ee59ef129edab39ca1a7cbc4258 by Alexey Rusakov on 24/12/2021 at 11:22..
CI: Move a comment outside of the script

Comments inside shell scripts apparently break the flimsy GHA machinery.
https://invent.kde.org/neon/forks/libquotient/-/commit/179564eb4c2d5ee59ef129edab39ca1a7cbc4258

Git commit 165e17d4ad289dabdcb6a09ce27c02c6122b7f8a by Alexey Rusakov on 24/12/2021 at 12:37..
CI: Fix rm being run in the wrong directory

It's been alright with the comment inside the script.
https://invent.kde.org/neon/forks/libquotient/-/commit/165e17d4ad289dabdcb6a09ce27c02c6122b7f8a

Git commit aeed7f3bada2cefcb52d4418b5ed76f19980d702 by Tobias Fella on 24/12/2021 at 13:29..
Cache deviceslist to binary when possible
https://invent.kde.org/neon/forks/libquotient/-/commit/aeed7f3bada2cefcb52d4418b5ed76f19980d702

Git commit ae0180acc50de443e98bc1c59dee94f0096df2e0 by Alexey Rusakov on 24/12/2021 at 14:40..
Prune empty/ish call*event.cpp files
https://invent.kde.org/neon/forks/libquotient/-/commit/ae0180acc50de443e98bc1c59dee94f0096df2e0

Git commit 60947d610d0ece6943d2c2e385d6c6c2f960853d by Tobias Fella on 24/12/2021 at 16:07..
Apply suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/60947d610d0ece6943d2c2e385d6c6c2f960853d

Git commit f01427c307c825feaa6c45888c259903605c9796 by GitHub (on behalf of Tobias Fella) on 25/12/2021 at 14:59..
Update lib/e2ee/qolmoutboundsession.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/f01427c307c825feaa6c45888c259903605c9796

Git commit f4d6a08811b0bf3a10a23ff703fc5a8ff1fcc624 by Tobias Fella on 25/12/2021 at 15:00..
Apply suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/f4d6a08811b0bf3a10a23ff703fc5a8ff1fcc624

Git commit 43470ab005512acb5f137aa6b9026ebcf3fcc142 by Tobias Fella on 25/12/2021 at 15:01..
Move run-tests.sh
https://invent.kde.org/neon/forks/libquotient/-/commit/43470ab005512acb5f137aa6b9026ebcf3fcc142

Git commit 5af76cb4bedaea85bf8e2a8538fabe4e47d40e1a by Tobias Fella on 25/12/2021 at 15:56..
Remove unneeded code
https://invent.kde.org/neon/forks/libquotient/-/commit/5af76cb4bedaea85bf8e2a8538fabe4e47d40e1a

Git commit 586332cda3d786ccbe74b21bd70d290fee722719 by Tobias Fella on 25/12/2021 at 16:03..
Remove irrelevant include
https://invent.kde.org/neon/forks/libquotient/-/commit/586332cda3d786ccbe74b21bd70d290fee722719

Git commit d56bb69f06c70bb7cf659d5fdde4e2306d7fb2f2 by Tobias Fella on 25/12/2021 at 17:19..
Don't save olm account ón shutdown

It causes the program to crash for some reason
https://invent.kde.org/neon/forks/libquotient/-/commit/d56bb69f06c70bb7cf659d5fdde4e2306d7fb2f2

Git commit 9ef0c672595f47532966566ec08f16424fcf1abb by GitHub (on behalf of Tobias Fella) on 25/12/2021 at 17:22..
Update lib/e2ee/qolmoutboundsession.h

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/9ef0c672595f47532966566ec08f16424fcf1abb

Git commit b465e785aac47bab8f4b8f4dac9672c9c32ea020 by GitHub (on behalf of Tobias Fella) on 25/12/2021 at 17:22..
Update lib/e2ee/qolmoutboundsession.h

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/b465e785aac47bab8f4b8f4dac9672c9c32ea020

Git commit 3164daa6d6cbfb75a1528b2671f5c78422a5539e by Tobias Fella on 25/12/2021 at 18:57..
Remove assert
https://invent.kde.org/neon/forks/libquotient/-/commit/3164daa6d6cbfb75a1528b2671f5c78422a5539e

Git commit ff415143b0d953f04a207125e265111b925ce763 by GitHub (on behalf of Tobias Fella) on 25/12/2021 at 20:51..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/ff415143b0d953f04a207125e265111b925ce763

Git commit ebff6633ad464991fdffed1841ec6dc5b34296a2 by Carl Schwan on 25/12/2021 at 22:46..
Make canChangePassword available from QML
https://invent.kde.org/neon/forks/libquotient/-/commit/ebff6633ad464991fdffed1841ec6dc5b34296a2

Git commit 730c0ef9092cacd2f079aeadc657c0c94ebcc9e6 by GitHub (on behalf of Alexey Rusakov) on 26/12/2021 at 08:22..
Merge #528: Make canChangePassword available from QML
https://invent.kde.org/neon/forks/libquotient/-/commit/730c0ef9092cacd2f079aeadc657c0c94ebcc9e6

Git commit 53c494f1b9f273395caade35c93e3fb520d083ec by Alexey Rusakov on 27/12/2021 at 19:15..
Quotest: add compile warnings from libQuotient
https://invent.kde.org/neon/forks/libquotient/-/commit/53c494f1b9f273395caade35c93e3fb520d083ec

Git commit 58b2501aeecf2c169fd1f583dca292169568b5fa by Alexey Rusakov on 27/12/2021 at 19:15..
Connection: Simplify room/user factory code

There's no need to return lambdas where pointers to specialised function
templates would work just fine.
https://invent.kde.org/neon/forks/libquotient/-/commit/58b2501aeecf2c169fd1f583dca292169568b5fa

Git commit 674e984e459375974f619d0e778d43a2cc928dc3 by Alexey Rusakov on 27/12/2021 at 19:16..
Key* strings: drop 'static'; add 'constexpr' where ok
https://invent.kde.org/neon/forks/libquotient/-/commit/674e984e459375974f619d0e778d43a2cc928dc3

Git commit 3e0ca5db7698d59c6f2e9e7ae3a3a1654641eb4e by Alexey Rusakov on 27/12/2021 at 19:19..
EventItem::setUserData: use std::move

Fixes a clang-tidy warning.
https://invent.kde.org/neon/forks/libquotient/-/commit/3e0ca5db7698d59c6f2e9e7ae3a3a1654641eb4e

Git commit 5f4d9ef6df492bfd91fa7c48fb4d5f8c2afc40b2 by Alexey Rusakov on 27/12/2021 at 19:19..
EventFactory: remove default constructor

This is a leftover from deferred `name` initialisation that wasn't
needed in the end.
https://invent.kde.org/neon/forks/libquotient/-/commit/5f4d9ef6df492bfd91fa7c48fb4d5f8c2afc40b2

Git commit 7ec3ba834dd313c4408622da30e04cdc6f4cf7c7 by GitHub (on behalf of arawaaa) on 27/12/2021 at 23:35..
Merge branch 'dev' into pinned
https://invent.kde.org/neon/forks/libquotient/-/commit/7ec3ba834dd313c4408622da30e04cdc6f4cf7c7

Git commit 7bb59b7a4a8b8804fa1eb5e631463da6a6cfdf84 by Alexey Rusakov on 28/12/2021 at 08:08..
Convert struct LoginFlows to namespace

Because that's what it really is.
https://invent.kde.org/neon/forks/libquotient/-/commit/7bb59b7a4a8b8804fa1eb5e631463da6a6cfdf84

Git commit 0d9428bfbd997ac2073a470e59749cda81e0b213 by Alexey Rusakov on 28/12/2021 at 08:08..
Settings classes: unify on QUO_ macro prefix

At some point macros were prepended with QTNT (pronounced "cute-n't",
"Quotient" with vowels dropped) but that didn't go very far. Having
forgotten about this, I introduced QUO prefix in a few places. Being
initial letters of "Quotient", QUO feels more understandable (and
coincidentally is a well-known Latin word); so let's unify on this.
https://invent.kde.org/neon/forks/libquotient/-/commit/0d9428bfbd997ac2073a470e59749cda81e0b213

Git commit 418b85c285fa0a0c196a26eef5cc0c9c3dbe20fe by Alexey Rusakov on 28/12/2021 at 08:08..
EventContent::FileInfo: default payloadSize to 0

Fixes a clang-tidy warning.
https://invent.kde.org/neon/forks/libquotient/-/commit/418b85c285fa0a0c196a26eef5cc0c9c3dbe20fe

Git commit 474d71067462f821697111a727e5f56767d2b00e by Alexey Rusakov on 29/12/2021 at 17:07..
Introduce quotient_export.h

Instead of using CMake's generate_export_header macro, it's a bit easier
to maintain a static file (that is not supposed to ever change) with
necessary export/import/hidden visibility macros.
https://invent.kde.org/neon/forks/libquotient/-/commit/474d71067462f821697111a727e5f56767d2b00e

Git commit 02fdd08b98d878168eb81376a44586176dfd9576 by Alexey Rusakov on 29/12/2021 at 17:07..
Quotest: test sending and receiving custom events

This seems to be the crux of #413.
https://invent.kde.org/neon/forks/libquotient/-/commit/02fdd08b98d878168eb81376a44586176dfd9576

Git commit 7350fe82953cf6274b8845a890eafb21a09b9931 by Alexey Rusakov on 29/12/2021 at 17:07..
Add QUOTIENT_API throughout non-generated code

This include all (hopefully) classes/structures and functions that have
non-inline definitions, as well as namespaces with Q_NAMESPACE since
those have non-inline (as of Qt 5.15) QMetaObject - for that a new
macro, QUO_NAMESPACE, has been devised to accommodate the lack of
Q_NAMESPACE_EXPORT in Qt before 5.14.
https://invent.kde.org/neon/forks/libquotient/-/commit/7350fe82953cf6274b8845a890eafb21a09b9931

Git commit f69e1c52246b986fb91f595ee0ee363e5343dbbb by Alexey Rusakov on 29/12/2021 at 17:07..
operation.h.mustache: Add QUOTIENT_API
https://invent.kde.org/neon/forks/libquotient/-/commit/f69e1c52246b986fb91f595ee0ee363e5343dbbb

Git commit 952f8aa8ad19348b50a3b3545d98f7889bfdae76 by Alexey Rusakov on 29/12/2021 at 17:07..
Regenerate CS API files
https://invent.kde.org/neon/forks/libquotient/-/commit/952f8aa8ad19348b50a3b3545d98f7889bfdae76

Git commit 7eda212753057c07f429dfdfb0cf3a18312de054 by Alexey Rusakov on 29/12/2021 at 17:07..
Refactor EventFactory and move it out of _impl::

Strictly speaking, EventFactory can be further instantiated if any
client application figures they need a whole new base class for events
and respectively a separate EventFactory specialisation for it.

Where this whole commit started though was a linkage error because I
did not plan to expose Quotient-specific logging categories for linkage
(effectively, usage) from the client code - meanwhile the inline code
of EventFactory uses qDebug(EVENTS), meaning I had to either add
QUOTIENT_API to EVENTS or hide those invocations. This in turn led
to trimming the EventFactory constructor back to trivial implementation
and dropping the guard variable that was supposed to trace duplicate
EventFactory<BaseEventT> objects for the same BaseEventT - with the
reasoning that such situation is not really dangerous (unlike
EventTypeRegistry double-initialisation fiasco, see #413), and at the
same time it can be easily detected in the logs by duplicated factory
method registration messages. And while I was at it, I replaced the
meaningless bool in the return type of EventFactory<>::addMethod with
the slightly more (but still barely) useful reference to the inserted
factory method. One can (in theory) use it now if they need to turn
some event JSON into an object of some specific event type or nullptr
if the event type in the JSON payload doesn't match - but at the same
rate (for now at least) one can call makeIfMatches<EventT>() directly.

With this commit, both Quotest and Quaternion build and link using
either Clang or GCC even under -fvisibility=hidden. However, running
quotest now reproduces #413, which is a matter of event typeId
infrastructure refactoring, coming in further commits.
https://invent.kde.org/neon/forks/libquotient/-/commit/7eda212753057c07f429dfdfb0cf3a18312de054

Git commit 806bfd6da07127c33d1014ef2335a8b9602afe6c by Alexey Rusakov on 29/12/2021 at 17:17..
CMakeLists.txt: apply -fvisibility=hidden

Also, -fvisibility-inlines-hidden is applied in a CMake-native way now.
As can be expected, BUILDING_SHARED_QUOTIENT is set when a dynamic
library is built while QUOTIENT_STATIC is set whenever static
libQuotient is around (both for building it and for building with it).
https://invent.kde.org/neon/forks/libquotient/-/commit/806bfd6da07127c33d1014ef2335a8b9602afe6c

Git commit ac7ee73cb4fa1ac05f7bcae1800cb79b36c7647f by Alexey Rusakov on 29/12/2021 at 17:17..
CI: Put the shared object configuration to the test

For now on Linux with GCC only, with a plan to add Windows eventually.
https://invent.kde.org/neon/forks/libquotient/-/commit/ac7ee73cb4fa1ac05f7bcae1800cb79b36c7647f

Git commit 27bb7ba696ae803c6a6903f85fe14074b23b7bcc by Alexey Rusakov on 29/12/2021 at 17:17..
Use QLatin1String for event typeId's

Before all, this fixes the problem with double-initialising of type ids;
it could have been fixed with a smaller change but EventTypeRegistry
is fairly superfluous now when inline variables are a thing and it's
possible to have an extensible registry system using literally pointers
to the memory that are guaranteed to be unique. That being said,
event_type_t is still QLatin1String and not a bare const char* (or
void*), mostly to stay on the safe side when it comes to type
identities: unlike const char*, QLatin1String's are deep-compared,
meaning that matching for switchOnType (former visit) occurs a bit
slower now. This may change in the future; but this is the first step
in getting rid of EventTypeRegistry.

This change means that initializeTypeId is no more needed; also, two
static member functions, typeId() and matrixTypeId(), are being replaced
with a single inline static member variable, TypeId. This commit doesn't
apply that transition across the event types, meaning that you'll get
a pile of warnings when compiling the library. These warnings will be
tackled in further commits within this branch.
https://invent.kde.org/neon/forks/libquotient/-/commit/27bb7ba696ae803c6a6903f85fe14074b23b7bcc

Git commit 3150fd8efd1d39dbcb836a9d9dbf2bd139ff1418 by Alexey Rusakov on 31/12/2021 at 04:39..
Merge: Cleanup across the code base
https://invent.kde.org/neon/forks/libquotient/-/commit/3150fd8efd1d39dbcb836a9d9dbf2bd139ff1418

Git commit 783d83012551df128d044382f6dd2047c5269700 by GitHub (on behalf of Alexey Rusakov) on 01/01/2022 at 11:48..
OtherChange is Change::Other now

`Room::Change` has been changed to be an enum class recently; and it's values are no more suffixed with `Change`.
https://invent.kde.org/neon/forks/libquotient/-/commit/783d83012551df128d044382f6dd2047c5269700

Git commit 527c3764bb9ec36aaab46b1ef4dfdd512828ff2c by GitHub (on behalf of Alexey Rusakov) on 01/01/2022 at 12:35..
Merge pull request #458 from arawaaa/pinned

Pinned message support
https://invent.kde.org/neon/forks/libquotient/-/commit/527c3764bb9ec36aaab46b1ef4dfdd512828ff2c

Git commit cae9d908e8b319e8a0c33f7089ecb7f2e9317de8 by Alexey Rusakov on 01/01/2022 at 12:40..
CI: up to Qt 5.12.12
https://invent.kde.org/neon/forks/libquotient/-/commit/cae9d908e8b319e8a0c33f7089ecb7f2e9317de8

Git commit e4511d02a20e53e1aa2e5d4886bd68dd73f885b3 by Alexey Rusakov on 01/01/2022 at 18:57..
Get LGTM working again

Unfortunately LGTM still sits on Ubuntu 19.10 (not even LTS) which
really limits the choice of compilers: the newest GCC is of version 9
and the newest Clang seems to be version 9 as well - both are quite old
and giving when it comes to modern features support. The latest error
is GCC 9 tripping over the assignment of the function specialisation to
std::function. Clang 9 doesn't and otherwise seems fine.
https://invent.kde.org/neon/forks/libquotient/-/commit/e4511d02a20e53e1aa2e5d4886bd68dd73f885b3

Git commit 2d4db46ab06ddef0f181f96898b6e183aa02e6e5 by GitHub (on behalf of Alexey Rusakov) on 01/01/2022 at 19:17..
Merge pull request #530 from quotient-im/kitsune/lgtm-clang

Get LGTM working again
https://invent.kde.org/neon/forks/libquotient/-/commit/2d4db46ab06ddef0f181f96898b6e183aa02e6e5

Git commit 545f9084bacead9f02ba6df609822be4672b7952 by Alexey Rusakov on 01/01/2022 at 19:18..
CI: add events.debug to QT_LOGGING_RULES
https://invent.kde.org/neon/forks/libquotient/-/commit/545f9084bacead9f02ba6df609822be4672b7952

Git commit bbaaab6590e5435fd9c967ca4af5ef06d9182698 by Alexey Rusakov on 01/01/2022 at 19:46..
BUILD_SHARED_LIBS in most jobs; fix not finding libQuotient.so.*
https://invent.kde.org/neon/forks/libquotient/-/commit/bbaaab6590e5435fd9c967ca4af5ef06d9182698

Git commit 39b50a13a0379ea32be114c85f3c697d75d4e03b by Alexey Rusakov on 01/01/2022 at 19:46..
Quotest: build with hidden visibility too
https://invent.kde.org/neon/forks/libquotient/-/commit/39b50a13a0379ea32be114c85f3c697d75d4e03b

Git commit 5b8ea1a0d419fda1729aaa81e34ad20e0dacef44 by Alexey Rusakov on 01/01/2022 at 19:46..
Try to fix building with MSVC with Qt pre-5.14

MSVC is quite picky to redeclaration with __declspec(dllexport), judging
it as changing the class of storage. This commit tries to reorder
declarations so that MSVC is made aware of dllexport attribute on the
first encounter rather than the second one.
https://invent.kde.org/neon/forks/libquotient/-/commit/5b8ea1a0d419fda1729aaa81e34ad20e0dacef44

Git commit a5a261b2c0dc60f99c8caa4729683d2780677f88 by Alexey Rusakov on 01/01/2022 at 19:46..
Define destructors out-of-line when unique/scoped ptr are involved

Once visibility kicks in, MSVC changes its ways and tries to instantiate
Private classes wrapped in smart pointers upon their occurence in the
header file - which leads to build breakage because of a missing
destructor. Usually making the outer class destructor out-of-line helps
to fix this (see RoomEvent, for one example).
https://invent.kde.org/neon/forks/libquotient/-/commit/a5a261b2c0dc60f99c8caa4729683d2780677f88

Git commit 8f03628ee0e4d1d1cb4e2f237e8fa695bc2cde42 by Alexey Rusakov on 01/01/2022 at 19:46..
Drop inline next to constexpr

Thanks to Sonar for reminding that constexpr implies inline.
https://invent.kde.org/neon/forks/libquotient/-/commit/8f03628ee0e4d1d1cb4e2f237e8fa695bc2cde42

Git commit 22ac47b275c2bcad5b5ff3c0cc3e10f3caaeb65b by Alexey Rusakov on 01/01/2022 at 19:46..
Don't use QUOTIENT_API inside REGISTER_EVENT_TYPE

On Windows QUOTIENT_API expands to different things depending on whether
the library is built or used. This results in confusing statements (and
MSVC erroring out on them, in some cases - see below - quite
legitimately) not only when the application includes Quotient headers
but also when the application defines custom events and uses
REGISTER_EVENT_TYPE to make them creatable from /sync responses.

To avoid repeated registration when dynamic linking is involved,
EventFactory<>::addMethod() now bluntly looks up the method for this
type in the vector of already registered methods. It would surely be
quicker to use a static variable instead; but since the refreshed API
for addMethod returns a reference to the factory method it's necessary
to do this lookup anyway. Once the primary goal of this branch is
achieved across platforms I might experiment with lighter ways to
register factory methods; for now here's a minimal change to make
the code build on Windows.
https://invent.kde.org/neon/forks/libquotient/-/commit/22ac47b275c2bcad5b5ff3c0cc3e10f3caaeb65b

Git commit 874ea3fae21d6b5cab12c8e524e8b25442e4cdd5 by Alexey Rusakov on 01/01/2022 at 19:46..
Fix more Sonar warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/874ea3fae21d6b5cab12c8e524e8b25442e4cdd5

Git commit ca42b3659e1916d384d092b8c31c49e3ffd6441b by Alexey Rusakov on 01/01/2022 at 19:46..
CMakeLists: Drop unneeded parts from install(TARGETS)

Those DESTINATION specifications match precisely what CMake does by
default (on Linux at least); what's worse is that they prevent CMake
to install the DLL file on Windows.
https://invent.kde.org/neon/forks/libquotient/-/commit/ca42b3659e1916d384d092b8c31c49e3ffd6441b

Git commit 2dee2bf4f0b2bd6615866644b2df9460da6babbb by Alexey Rusakov on 01/01/2022 at 19:53..
Only test dynamic linking on Linux

On Windows and macOS, the assumed practice is to package things up in
a monolithic distribution package. On Linux, fine-grained library
packages are installed.

After adding CMAKE_INSTALL_RPATH_USE_LINK_PATH dynamic linkage is
testable on macOS but that's not the "proper" way to install things on
the platform, anyway. It also probably works on Windows but I couldn't
get a workable setup for quotest after a few attempts. Perhaps it's
a matter of running windeployqt instead of trying to figure out and
add to PATH all the locations needed; or maybe not; I don't have the
motivation to explore this further.
https://invent.kde.org/neon/forks/libquotient/-/commit/2dee2bf4f0b2bd6615866644b2df9460da6babbb

Git commit ca6a104941b71e7b6a8bdcb6ebcdfff5ec8e8aca by Vladyslav Hnatiuk on 01/01/2022 at 21:14..
Fix enum in room Notification struct
https://invent.kde.org/neon/forks/libquotient/-/commit/ca6a104941b71e7b6a8bdcb6ebcdfff5ec8e8aca

Git commit d516280a2b38ccb060e4f7502b873e19b1559ed1 by Alexey Rusakov on 02/01/2022 at 04:28..
Manage symbols visibility for dynamic linking
https://invent.kde.org/neon/forks/libquotient/-/commit/d516280a2b38ccb060e4f7502b873e19b1559ed1

Git commit 7d37d296f942ac993d041b4576ed52265170c4a8 by Alexey Rusakov on 02/01/2022 at 05:09..
Add ImplPtr and makeImpl

The original (more complex and comprehensive) solution belongs to
https://oliora.github.io/2015/12/29/pimpl-and-rule-of-zero.html - this
commit only provides a small wrapper for non-copyable Private class
implementations common throughout libQuotient. Unlike the original,
default initialisation is made explicit - you have to pass
ZeroImpl<Private>() instead (and I firmly believe it's a good thing:
normally pointers to Private should not remain nullptr). The reason
ZeroImpl<> is not a template variable is quite simple: unique_ptr is
non-copyable and so cannot be initialised from; while a template
function will initialise the value in-place thanks to copy elision.
https://invent.kde.org/neon/forks/libquotient/-/commit/7d37d296f942ac993d041b4576ed52265170c4a8

Git commit 8730fb0782860f278760e369b9f42f266f0572b3 by GitHub (on behalf of Hnatiuk Vladyslav) on 02/01/2022 at 10:27..
Merge branch 'quotient-im:dev' into fix-qt-6
https://invent.kde.org/neon/forks/libquotient/-/commit/8730fb0782860f278760e369b9f42f266f0572b3

Git commit 6f3ae9504dcf4984718caee229f0b1ee56c2de63 by GitHub (on behalf of Alexey Rusakov) on 02/01/2022 at 11:26..
Merge pull request #531 from Aksem/fix-qt-6
https://invent.kde.org/neon/forks/libquotient/-/commit/6f3ae9504dcf4984718caee229f0b1ee56c2de63

Git commit 9fc7bfd5ef1daf84307d553941855fb377fddc7c by Alexey Rusakov on 05/01/2022 at 13:06..
Add a comment, as Sonar advises
https://invent.kde.org/neon/forks/libquotient/-/commit/9fc7bfd5ef1daf84307d553941855fb377fddc7c

Git commit c1bfb156844aa3c53b1588c48ba2002143199510 by Alexey Rusakov on 05/01/2022 at 13:38..
.clang-format: slightly tweak penalties

With the previous settings clang-format seemed too lenient to characters
beyond position 80.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/c1bfb156844aa3c53b1588c48ba2002143199510

Git commit 7ed5f8d90ce25431fb120698c8a079807df7c13a by GitHub (on behalf of Alexey Rusakov) on 05/01/2022 at 15:09..
Merge pull request #532 from quotient-im/kitsune/implptr

ImplPtr
https://invent.kde.org/neon/forks/libquotient/-/commit/7ed5f8d90ce25431fb120698c8a079807df7c13a

Git commit ecbff4c1a21ff4c0ab72141bc1a34ae189d33483 by Alexey Rusakov on 05/01/2022 at 16:28..
CMakeLists: add install(TARGETS) components again

Older CMake versions fail if they don't find those (LGTM uses CMake 3.13
and that one does, at least).
https://invent.kde.org/neon/forks/libquotient/-/commit/ecbff4c1a21ff4c0ab72141bc1a34ae189d33483

Git commit 9e3752b8333813b9f00970a1af6e7ca9087ca424 by Alexey Rusakov on 05/01/2022 at 17:22..
Thumbnail: drop unneeded constructors

Those are already inherited with 'using'.
https://invent.kde.org/neon/forks/libquotient/-/commit/9e3752b8333813b9f00970a1af6e7ca9087ca424

Git commit 3986de7f8f1c98f952911c2f93891ea8643df62c by Alexey Rusakov on 05/01/2022 at 17:22..
Make TagRecord generally better

It doesn't need all those things inside - order_type alias is no more
in use; operator<() is better outside; QLatin1String is better to
compare against than const char* (because const char* is assumed to be
UTF-8); and TagRecord is really small so it doesn't need const& for
parameters.
https://invent.kde.org/neon/forks/libquotient/-/commit/3986de7f8f1c98f952911c2f93891ea8643df62c

Git commit 9351d9afcbaae0bdc8aa26f7361be1f84cac7467 by Alexey Rusakov on 05/01/2022 at 17:22..
DEFINE_EVENT_TYPEID: fix up deprecation warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/9351d9afcbaae0bdc8aa26f7361be1f84cac7467

Git commit c483ef95bd3e5effd6dd08c6d0ea0f83d0aec051 by Alexey Rusakov on 05/01/2022 at 17:22..
Fully-qualify types passed to slots
https://invent.kde.org/neon/forks/libquotient/-/commit/c483ef95bd3e5effd6dd08c6d0ea0f83d0aec051

Git commit 703e5e8c1b48bea7bd82906967cb7651f7e96751 by Alexey Rusakov on 06/01/2022 at 07:21..
Cleanup Room::pinnedEvents()

Use 'auto'; range-for instead of an iterator loop.
https://invent.kde.org/neon/forks/libquotient/-/commit/703e5e8c1b48bea7bd82906967cb7651f7e96751

Git commit bc4a0f5d408d901f3c8f4dfeec0574ded04845bf by Alexey Rusakov on 06/01/2022 at 07:22..
Brush up SsoSession; document Connection::prepareForSso

Although parented to Connection, SsoSession was pretty leaky in that
unsuccessful login attempts didn't delete the object and in some errors
didn't even close the local HTTP socket (though new connections would no
more be accepted). Also, without the documentation it wasn't clear who
owns the object returned by Connection::prepareForSso(). Now it is.

Unfortunately, it's not easy to cover SsoSession with tests. Basically,
it takes a homeserver and a mock "SSO agent" that would check
the SSO URL for validity and then both send the login authorisation
to the homeserver as well as ping the callback given by SsoSession.
Maybe for another time.
https://invent.kde.org/neon/forks/libquotient/-/commit/bc4a0f5d408d901f3c8f4dfeec0574ded04845bf

Git commit bd280a087ecab30f94f7937513ee298c233fcba1 by Alexey Rusakov on 18/01/2022 at 07:55..
Revise inline keyword usage

- Templates and constexpr imply inline
- A function called from a single site better be inlined.
https://invent.kde.org/neon/forks/libquotient/-/commit/bd280a087ecab30f94f7937513ee298c233fcba1

Git commit aa2465bb7991876c3b5afb5afda54f43fefd9e0a by Alexey Rusakov on 18/01/2022 at 07:55..
.clang-format: try harder to avoid return type on its own line

In reality it's often not just the return type but the return type and
the preceding attribute, in particular [[deprecated("...")]] - and
unfortunately this attribute (and any other, actually) cannot be given
its own line using ClangFormat. So at least try to glue those two to
the function name as much as possible...
https://invent.kde.org/neon/forks/libquotient/-/commit/aa2465bb7991876c3b5afb5afda54f43fefd9e0a

Git commit aaa57e0e458435e23047fcb325872f0350171bad by Alexey Rusakov on 18/01/2022 at 07:55..
AccountRegistry: derive from QVector and clean up

Notably, Quotient::AccountRegistry::instance() is now deprecated
in favour of Quotient::Accounts inline variable.
https://invent.kde.org/neon/forks/libquotient/-/commit/aaa57e0e458435e23047fcb325872f0350171bad

Git commit b17b629df44dbc888f6b6bee79d0d13d662371cf by Alexey Rusakov on 18/01/2022 at 07:57..
Add [[maybe_unused]] to things the lib doesn't use
https://invent.kde.org/neon/forks/libquotient/-/commit/b17b629df44dbc888f6b6bee79d0d13d662371cf

Git commit 1010c8d0009293a6ae357c23e8b4732302b6b8bd by Alexey Rusakov on 18/01/2022 at 07:57..
Drop unused forward declarations
https://invent.kde.org/neon/forks/libquotient/-/commit/1010c8d0009293a6ae357c23e8b4732302b6b8bd

Git commit c7907084282c7957d085acb329574ab6a7d593c8 by Alexey Rusakov on 18/01/2022 at 10:43..
Move over non-interface code to QLatin1String

It's better than const char* because any interaction between const char*
and QString assumes that const char* contains UTF-8, which is
pessimistic and therefore inefficient; at the same time:
- construction of QString from QLatin1String is extremely fast
  (boiling down to padding null bytes)
- "something"_ls is much shorter than QStringLiteral("something")
- "something"_ls produces a direct pointer to the literal at compile
  time, using the benefits of raw string literals (deduplication, e.g.)

The library API will also transition to QLatin1String where applicable,
likely in 0.8.
https://invent.kde.org/neon/forks/libquotient/-/commit/c7907084282c7957d085acb329574ab6a7d593c8

Git commit bf82aeea369cacfc93a0e6d6d9feb01f1f2afdb2 by Alexey Rusakov on 18/01/2022 at 10:43..
Don't use 'static' on top-level/namespace scope

When internal linkage is necessary, anonymous namespaces fulfil the same
purpose in a better way. See also:
https://stackoverflow.com/questions/4422507/superiority-of-unnamed-namespace-over-static
https://invent.kde.org/neon/forks/libquotient/-/commit/bf82aeea369cacfc93a0e6d6d9feb01f1f2afdb2

Git commit 142fc5a21f541e2a7592119df075a543527195b9 by Alexey Rusakov on 18/01/2022 at 18:25..
Merge branch 'kitsune/cleanup2' into dev
https://invent.kde.org/neon/forks/libquotient/-/commit/142fc5a21f541e2a7592119df075a543527195b9

Git commit e1ffc58ab9abf6321f92a6b648d6f8da08b0924d by Alexey Rusakov on 19/01/2022 at 12:33..
CMakeLists: Bring back ARCHIVE DESTINATION in install()

The older CMake used by LGTM is still unhappy without it. (See also
recent changes to this file.)
https://invent.kde.org/neon/forks/libquotient/-/commit/e1ffc58ab9abf6321f92a6b648d6f8da08b0924d

Git commit fdff209744ac4c422f63fe2549aa0132df7e6292 by Alexey Rusakov on 21/01/2022 at 01:04..
Redo EventRelation; deprecate RelatesTo

RelatesTo and EventRelation have been two means to the same end in two
different contexts. (Modernised) EventRelation is the one used now both
for ReactionEvent and EventContent::TextContent. The modernisation
mostly boils down to using inline variables instead of functions to
return relation types and switching to QLatin1String from const char*
(because we know exactly that those constants are Latin-1 and
QLatin1String is more efficient than const char* to compare/convert to
QString).
https://invent.kde.org/neon/forks/libquotient/-/commit/fdff209744ac4c422f63fe2549aa0132df7e6292

Git commit 0689028f4a0db403a55c6158e750fee3ba6c7098 by Alexey Rusakov on 21/01/2022 at 01:04..
Refactor assembleContentJson()

Get rid of that Q_ASSERT() in the middle that only worked in Debug
builds anyway.
https://invent.kde.org/neon/forks/libquotient/-/commit/0689028f4a0db403a55c6158e750fee3ba6c7098

Git commit 59590c44716e0bbb4499b8ca9844ecd75d638a01 by Alexey Rusakov on 21/01/2022 at 09:51..
Merge: merge event relation structures into one
https://invent.kde.org/neon/forks/libquotient/-/commit/59590c44716e0bbb4499b8ca9844ecd75d638a01

Git commit 63c953800330017ebb2afbabf41e5c4932c4d640 by Alexey Rusakov on 22/01/2022 at 13:45..
Quotest: fix changeName test

This test was very unreliable because memberRenamed() signal was emitted
upon lazy-loading of past member renames. The new code connects to
aboutToAddNewMessages() instead, which should only contain the latest
renaming event (past events are delivered in the 'state' object).
https://invent.kde.org/neon/forks/libquotient/-/commit/63c953800330017ebb2afbabf41e5c4932c4d640

Git commit cc9908e5159ed93a18eda9f9794a7c9fc7f67f27 by Alexey Rusakov on 23/01/2022 at 09:34..
Fix visit() return type

It's too restrictive compared to switchOnType() overloads and doesn't
map to the case with a default value.
https://invent.kde.org/neon/forks/libquotient/-/commit/cc9908e5159ed93a18eda9f9794a7c9fc7f67f27

Git commit abbab8d8f8c566bc2c9cdf766c6fbb11d978ca47 by Alexey Rusakov on 23/01/2022 at 16:12..
Omittable: split out from util.h and refresh

Improvements:
- Quotient::lift() - a way to invoke a function on an optional (including
  Omittable) or a pointer if it's 'truthy'. Doesn't need enhanced
  function_traits<>, only the standard library; works on any number
  of arguments that can be dereferenced and casted to bool.
- then() - the version of lift() as a member function.
- edit() was renamed to ensure() (edit() might become a read-write
  counterpart of then() at some point). It's not really used across
  libQuotient codebase (or elsewhere) but is staying there just in case.
  It can also accept an initializer, removing the requirement of
  default-constructibility.
- Quotient::merge() is simplified, with one universal implementation
  covering both Omittable/optional and plain values.
- All that now lives in its dedicated pair of files, further
  decluttering util.h
https://invent.kde.org/neon/forks/libquotient/-/commit/abbab8d8f8c566bc2c9cdf766c6fbb11d978ca47

Git commit 29775218e0c8b6c176015dd3128a0d545906ae6f by Alexey Rusakov on 23/01/2022 at 16:12..
Cleanup some #includes
https://invent.kde.org/neon/forks/libquotient/-/commit/29775218e0c8b6c176015dd3128a0d545906ae6f

Git commit 1215888438b901ad80e8bf9882cdcc6a3f057399 by Alexey Rusakov on 23/01/2022 at 16:12..
converters.h: slightly clearer code in _impl::addTo
https://invent.kde.org/neon/forks/libquotient/-/commit/1215888438b901ad80e8bf9882cdcc6a3f057399

Git commit 8183a33c130f1284404edc61767ff6d29402d200 by Alexey Rusakov on 23/01/2022 at 16:12..
RoomStateView

This class is called to provide an arbitrary snapshot of a room state;
as the first step, Room::currentState() returns an instance of this
class that stores, well, the current state. Implelementation-wise it's
the same hash map of two-part state event keys to const event pointers;
however, RoomStateView provides additional operations:
- get(), that deprecates Room::getCurrentState(), returns a pointer to
  a particular event if the current state has it. Unlike the original
  method, the pointer returned from this one can be nullptr; this is
  done to get rid of stubbed state events that have to be created
  everytime a "state miss" occurred (i.e., when getCurrentState()
  does not find an existing event in the current state).
- eventsOfType() - this is a new place for Room::stateEventsOfType()
  introduced recently.
- query() - this is a way to specify a piece of the state content that
  you need to retrieve by passing a member function or a function object
  that retrieves it. That is especially convenient with member functions
  of the event class; just pass the pointer to this member function,
  and query() will parse the event type it has to retrieve out of it and
  call that member function on the event object. Returns an Omittable<>;
  if the respective piece of state doesn't exist, you'll get
  `Quotient::none` (the same as `std::nullopt`).
- queryOr() - the same but with the fallback value; instead of an
  Omittable<>, the fallback value will be returned if the needed event
  is not found.
https://invent.kde.org/neon/forks/libquotient/-/commit/8183a33c130f1284404edc61767ff6d29402d200

Git commit a1fcad591968ec717214a73a2dbe78f608207bc5 by Alexey Rusakov on 23/01/2022 at 16:12..
Move away Omittable static tests to autotests/

These are not required to build libQuotient, and omittable.cpp entirely
consisted of them.
https://invent.kde.org/neon/forks/libquotient/-/commit/a1fcad591968ec717214a73a2dbe78f608207bc5

Git commit 9ae0d4e45befc79f621b03dc4efe869cd4277e06 by Alexey Rusakov on 23/01/2022 at 16:12..
Refactor Room::setState()

There are two important aspects here:
- Introducing Room::setState(evtType, stateKey, contentJson). These
  components are ultimately what is getting sent to the homeserver,
  so it makes sense to expose a respective `setState()` overload.
  Unlike setState(event) the new overload can be Q_INVOKABLE.
- Room::setState() is no more const. Although it doesn't cause any
  changes in Room class (and only transient changes in Room::Private),
  it ultimately initiates a change in the room state, so calling it
  const has always been a bit of hypocrisy. If you relied on that, you
  most likely do something wrong (see the fix to User::rename()
  in this very commit for a simple example of such wrongness).

Also: the backend is simplified by calling the original templated
Room::setState() instead of calling Room::Private::requestSetState()
that does exactly the same thing.
https://invent.kde.org/neon/forks/libquotient/-/commit/9ae0d4e45befc79f621b03dc4efe869cd4277e06

Git commit 08612cb253417fe70ef45a1ad08663a0745d748a by Alexey Rusakov on 23/01/2022 at 21:40..
No more default construction of events

Default construction was only done to support stubbed state in Room
and even that did not really use those, opting to construct an event
from an empty QJsonObject instead. Now that Room doesn't have
stubbed state, default constructors are even less needed.
https://invent.kde.org/neon/forks/libquotient/-/commit/08612cb253417fe70ef45a1ad08663a0745d748a

Git commit 1747575321cda4fc11f90c2ffb2148a69d0d9946 by Alexey Rusakov on 28/01/2022 at 16:08..
QUO_IMPLICIT

Because Apple Clang choked on `explicit(false)`.
https://invent.kde.org/neon/forks/libquotient/-/commit/1747575321cda4fc11f90c2ffb2148a69d0d9946

Git commit b39b70bf90d816377b2873a5c2506bd256c0a00e by GitHub (on behalf of Alexey Rusakov) on 28/01/2022 at 20:28..
Merge pull request #525 from quotient-im/kitsune/query-current-state

Move out current room state to its own class
https://invent.kde.org/neon/forks/libquotient/-/commit/b39b70bf90d816377b2873a5c2506bd256c0a00e

Git commit 350f40d07943a32319182bac6a21adf456642075 by Alexey Rusakov on 29/01/2022 at 15:12..
SyncData: expect self-contained /sync response

SyncData can load room objects out-of-line. This is only expected when
loading data from the cache (and since quite long ago, the cache always
saves room objects out of line, avoiding too large JSON payloads that
Qt parser chokes on). However, the code processed /sync response in
the same way; in particular, this meant that SyncData filled the vector
of unresolved room ids even when it came from /sync. SyncJob then looked
at this vector and entered an error state if it was not empty. Well,
payloads from the wire can be weird and it ultimately came to pass that
a homeserver returned a non-object against a given room key, triggering
the unresolved rooms branch in SyncJob - and stalling the whole sync
loop as a result (https://invent.kde.org/network/neochat/-/issues/500).

With this commit SyncData only fills unresolvedRoomIds when loading
rooms from the cache (with the implied fallback of discarding the cache
and loading from /sync anew instead). Respectively, SyncJob must never
end up with SyncData that has unresolved rooms (even if those occur
in the actual payload like in the mentioned issue, those rooms will be
completely empty instead); the added assertion only guards for internal
consistency.
https://invent.kde.org/neon/forks/libquotient/-/commit/350f40d07943a32319182bac6a21adf456642075

Git commit 0be5e13ce90c783ab49ae1f3223e9d84538b9112 by GitHub (on behalf of Tobias Fella) on 29/01/2022 at 20:25..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/0be5e13ce90c783ab49ae1f3223e9d84538b9112

Git commit 2fc62d38e8f748d1a78baca8b6f2df40e7cfa1a9 by Tobias Fella on 30/01/2022 at 20:20..
Use room() instead of provideRoom()
https://invent.kde.org/neon/forks/libquotient/-/commit/2fc62d38e8f748d1a78baca8b6f2df40e7cfa1a9

Git commit 023ef3005d3fae80637c6ce140e84db26250d564 by Tobias Fella on 30/01/2022 at 22:13..
Port devices list to database
https://invent.kde.org/neon/forks/libquotient/-/commit/023ef3005d3fae80637c6ce140e84db26250d564

Git commit 27baabc9b8c9476fc550aef4462c193d5a9997a6 by GitHub (on behalf of Tobias Fella) on 30/01/2022 at 22:15..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/27baabc9b8c9476fc550aef4462c193d5a9997a6

Git commit ac53741920b1e92b8ac61bb7c11afcae5722b241 by GitHub (on behalf of Tobias Fella) on 06/02/2022 at 19:00..
Update lib/e2ee/qolminboundsession.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/ac53741920b1e92b8ac61bb7c11afcae5722b241

Git commit 9960d33e0c2bbe4dd8f305cae3b01c2d704d28ff by Tobias Fella on 06/02/2022 at 19:01..
Port to QRandomGenerator
https://invent.kde.org/neon/forks/libquotient/-/commit/9960d33e0c2bbe4dd8f305cae3b01c2d704d28ff

Git commit ef64359505778913235666f0e759dd0758f7f4ac by Tobias Fella on 06/02/2022 at 19:06..
Only create one database
https://invent.kde.org/neon/forks/libquotient/-/commit/ef64359505778913235666f0e759dd0758f7f4ac

Git commit 4837fd6de188b849a5d11de6791ba844398ce415 by GitHub (on behalf of Tobias Fella) on 06/02/2022 at 19:10..
Update lib/e2ee/qolmaccount.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/4837fd6de188b849a5d11de6791ba844398ce415

Git commit 7b5edb737522b03d4f697e0e09f1771ad5edef89 by Tobias Fella on 07/02/2022 at 20:48..
Remove encryptionmanager and various fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/7b5edb737522b03d4f697e0e09f1771ad5edef89

Git commit 840aead6e77a7ab8605bd2f70820ddd2219bdad5 by Tobias Fella on 07/02/2022 at 21:04..
Refactor KeyVerificationEvents
https://invent.kde.org/neon/forks/libquotient/-/commit/840aead6e77a7ab8605bd2f70820ddd2219bdad5

Git commit 94f34099b8a4c8a40cc99496ceaf9ad5b285c08f by Tobias Fella on 09/02/2022 at 21:18..
Move includes to .cpp file
https://invent.kde.org/neon/forks/libquotient/-/commit/94f34099b8a4c8a40cc99496ceaf9ad5b285c08f

Git commit 6415d6fb194799870eb89cbaff4ba07939aa6ccb by Tobias Fella on 09/02/2022 at 21:25..
Fix compilation without E2EE
https://invent.kde.org/neon/forks/libquotient/-/commit/6415d6fb194799870eb89cbaff4ba07939aa6ccb

Git commit 73623b69477352f901aa0d02a667bd2438a91491 by Alexey Rusakov on 11/02/2022 at 13:23..
EventRelation: defer to non-deprecated symbols
https://invent.kde.org/neon/forks/libquotient/-/commit/73623b69477352f901aa0d02a667bd2438a91491

Git commit 4f581f22d707fd226a56400817c9e47e54116589 by Alexey Rusakov on 11/02/2022 at 13:23..
Better documentation for QUO_DECLARE_FLAGS[_NS]
https://invent.kde.org/neon/forks/libquotient/-/commit/4f581f22d707fd226a56400817c9e47e54116589

Git commit 10ac7c13cdcd62b62af6e89cb726376cfbc53302 by Alexey Rusakov on 11/02/2022 at 13:23..
Enable to/fromJson to work with non-assignable objects

Previously you could not use toJson() on a polymorphic structure such
as one of those defined in eventcontent.h because it is not assignable
and the default specialisation of JsonObjectConverter used assignment.
To avoid that limitation, one had to specialise JsonObjectConverter for
each descendant of EventContent::Base, which is a lot of boilerplate.

The new JsonConverter (the template underpinning the "default"
to/fromJson implementation) improves on two things:
1. dump() allows to construct your own QJsonObject - or anything else
   convertable to QJsonValue - instead of requiring to fill in the
   pre-constructed one.
2. load() allows to construct your value type directly from QJsonObject
   instead of default-constructing it in advance.
https://invent.kde.org/neon/forks/libquotient/-/commit/10ac7c13cdcd62b62af6e89cb726376cfbc53302

Git commit 148bb1256fb15c73c605c5301da2b9602f859660 by Tobias Fella on 11/02/2022 at 22:07..
Implement more suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/148bb1256fb15c73c605c5301da2b9602f859660

Git commit b0aef4af9cbf00755c7b70c71d77f0bf7ce0d200 by Tobias Fella on 12/02/2022 at 11:12..
Replace QPair with std::pair
https://invent.kde.org/neon/forks/libquotient/-/commit/b0aef4af9cbf00755c7b70c71d77f0bf7ce0d200

Git commit 044ae4a029b710571420f830a497647f7a54698a by Alexey Rusakov on 13/02/2022 at 18:25..
Merge branch 'dev'

The result is FTBFS as yet; next commits will fix that, along with a few
other things.
https://invent.kde.org/neon/forks/libquotient/-/commit/044ae4a029b710571420f830a497647f7a54698a

Git commit 2cf44607cf0f057e147c2c4fe6dded6c13c58a8a by Alexey Rusakov on 14/02/2022 at 13:45..
Don't #include "logging.h" from headers

Logging categories used by Quotient are not supposed to be exposed
externally, which basically forbids usage of logging in header files.
A more flexible solution would involve moving logging.h to private
headers but Quotient doesn't have that thing yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/2cf44607cf0f057e147c2c4fe6dded6c13c58a8a

Git commit 7221c10118a8895ec39ba6a78768574a4b00dfed by Alexey Rusakov on 14/02/2022 at 14:41..
Revert "Don't #include "logging.h" from headers"

This reverts commit 2cf44607cf0f057e147c2c4fe6dded6c13c58a8a (that was
stupid, honestly).
https://invent.kde.org/neon/forks/libquotient/-/commit/7221c10118a8895ec39ba6a78768574a4b00dfed

Git commit 34cd6a6c6dfe2981001341f39e4e1e9aaa9c8898 by Tobias Fella on 14/02/2022 at 20:46..
Don't set lifetime as version in call invites
https://invent.kde.org/neon/forks/libquotient/-/commit/34cd6a6c6dfe2981001341f39e4e1e9aaa9c8898

Git commit 2aab2a0c95bbd3f12890badb58a825bb57d8e613 by GitHub (on behalf of Alexey Rusakov) on 14/02/2022 at 21:51..
Merge pull request #533 from TobiasFella/fixcalls

Don't set lifetime as version in call invites
https://invent.kde.org/neon/forks/libquotient/-/commit/2aab2a0c95bbd3f12890badb58a825bb57d8e613

Git commit 52a787eefb3fb3d147648d08fc439a4b8a966fd3 by Alexey Rusakov on 16/02/2022 at 16:58..
Add a few missing QUOTIENT_API stanzas

Also, removed Q_GADGET macros from key verification events as those
don't seem to do anything (no Q_ENUM/Q_FLAG things, namely).
https://invent.kde.org/neon/forks/libquotient/-/commit/52a787eefb3fb3d147648d08fc439a4b8a966fd3

Git commit 53dfa70601b2d27a6be12d52e86af123d0b26b79 by Alexey Rusakov on 16/02/2022 at 16:58..
Cleanup

A note on switching to QLatin1String for JSON key constants - this is
more concise and barely affects (if at all) runtime performance (padding
each QChar with zeros is trivial for assignment; and comparison can be
done directly with the same performance as for two QStrings).
https://invent.kde.org/neon/forks/libquotient/-/commit/53dfa70601b2d27a6be12d52e86af123d0b26b79

Git commit 0f6506c022ff1ccaa648ff50b81ae29f5a6f2176 by Alexey Rusakov on 16/02/2022 at 16:58..
Connection: guard device loading per-object

Using a static variable is incorrect as it doesn't load the device list
for any subsequent created Connection object.
https://invent.kde.org/neon/forks/libquotient/-/commit/0f6506c022ff1ccaa648ff50b81ae29f5a6f2176

Git commit 445e34f26450cf8262a65b74e1294579d9cd56be by Alexey Rusakov (on behalf of Tobias Fella) on 16/02/2022 at 16:58..
Fix file decryption
https://invent.kde.org/neon/forks/libquotient/-/commit/445e34f26450cf8262a65b74e1294579d9cd56be

Git commit 2178ca994c4b33197239155f7f6715e0451b9172 by Alexey Rusakov on 16/02/2022 at 16:58..
Use QHash instead of QMap

We don't seem to need sorted associative containers in those cases.
https://invent.kde.org/neon/forks/libquotient/-/commit/2178ca994c4b33197239155f7f6715e0451b9172

Git commit 0a43c023b94e12b3130572f2dd0d6ac8bb4ed110 by Alexey Rusakov on 16/02/2022 at 16:58..
isSupportedAlgorithm()

That's a better primitive than just exposing SupportedAlgorithms list.
https://invent.kde.org/neon/forks/libquotient/-/commit/0a43c023b94e12b3130572f2dd0d6ac8bb4ed110

Git commit b5e1fc7d8fcf9336db0dfb351403aa06dcb226a0 by Alexey Rusakov on 16/02/2022 at 16:58..
More cleanup, especially in EncryptedFile

For EncryptedFile:
- JSON converter bodies moved away to .cpp;
- instead of C-style casts, reinterpret_cast is used to convert from
  (const) char* to (const) unsigned char*;
- the size for the target plain text takes into account the case where
  the cipher block size can be larger than 1 (after reading
  https://www.openssl.org/docs/man1.1.1/man3/EVP_DecryptUpdate.html).
- file decryption is wrapped in #ifdef Quotient_E2EE_ENABLED, to avoid
  OpenSSL linking errors when compiling without E2EE.
https://invent.kde.org/neon/forks/libquotient/-/commit/b5e1fc7d8fcf9336db0dfb351403aa06dcb226a0

Git commit ba2dc2a1aa23c91a52bcd0d9f3feb29ea9ecfcd2 by Alexey Rusakov on 16/02/2022 at 16:58..
ci.yml: enable E2EE pipelines again

The whole cycle will get terribly long again; looking forward to
parallel quotest...
https://invent.kde.org/neon/forks/libquotient/-/commit/ba2dc2a1aa23c91a52bcd0d9f3feb29ea9ecfcd2

Git commit e93260a6b68279518270d0aec2c55f826375fa8a by Alexey Rusakov on 16/02/2022 at 16:58..
quotient_export.h: #include <qglobal.h>

To ensure Q_DECL_EXPORT/Q_DECL_IMPORT macros are defined.
https://invent.kde.org/neon/forks/libquotient/-/commit/e93260a6b68279518270d0aec2c55f826375fa8a

Git commit a42fd5d188e58da95169ea21b4cae23cccd26819 by Alexey Rusakov on 16/02/2022 at 16:58..
TestOlmUtility: fix building with Qt 5.12

QKeyValueIterator::operator->() only arrived in Qt 5.15.
https://invent.kde.org/neon/forks/libquotient/-/commit/a42fd5d188e58da95169ea21b4cae23cccd26819

Git commit 6a7e21cfc542588d6bcf7efe839439bf9b632600 by Tobias Fella on 16/02/2022 at 23:29..
Don't create QApplications in tests
https://invent.kde.org/neon/forks/libquotient/-/commit/6a7e21cfc542588d6bcf7efe839439bf9b632600

Git commit 120524a139dbac5d55c952de5dba0e23ba1025f8 by Alexey Rusakov on 18/02/2022 at 09:44..
CI: setup mock Synapse before running ctest

To use this in CI required extending/fixing autotests/run-tests.sh:
it can now accept arguments that are further passed to ctest invocation,
and it no more cd's to the build directory because build directories
can be in all kinds of places, expecting the caller to pick
the directory upfront.
https://invent.kde.org/neon/forks/libquotient/-/commit/120524a139dbac5d55c952de5dba0e23ba1025f8

Git commit 6be59df7036f8df385da29051c5320563518728a by Alexey Rusakov on 18/02/2022 at 10:06..
Use QCoreApplication in autotests

QEventLoop refuses to work without an application object instance.
https://invent.kde.org/neon/forks/libquotient/-/commit/6be59df7036f8df385da29051c5320563518728a

Git commit 0a1b8b9f38ddadb32d54884a05f0e7246d7c25e7 by Alexey Rusakov on 18/02/2022 at 13:14..
run-tests.sh: use a trap for cleanup

This both is more reliable (GHA executes scripts in fail-fast mode) and
ensures that the return value is that of ctest.
https://invent.kde.org/neon/forks/libquotient/-/commit/0a1b8b9f38ddadb32d54884a05f0e7246d7c25e7

Git commit 4f4c04c53ea27777e8cf4ecab690985ad3f78e1f by Alexey Rusakov on 18/02/2022 at 13:18..
testgroupsession.*: fix TestOlmSession copy-pasta
https://invent.kde.org/neon/forks/libquotient/-/commit/4f4c04c53ea27777e8cf4ecab690985ad3f78e1f

Git commit d4f1b09476c4bcc5c33cc40e2506d7fd6a731456 by Alexey Rusakov on 18/02/2022 at 13:27..
TestOlmAccount: align homeserver address with that in run-tests.sh

It would probably be even better to pass the homeserver address in
the environment but that's a bigger endeavour.

Also: reformatted CREATE_CONNECTION macro.
https://invent.kde.org/neon/forks/libquotient/-/commit/d4f1b09476c4bcc5c33cc40e2506d7fd6a731456

Git commit 34d5ed388caf8a39327c2ea4da5de197faf5583d by Alexey Rusakov on 18/02/2022 at 15:41..
testolmaccount.cpp: cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/34d5ed388caf8a39327c2ea4da5de197faf5583d

Git commit c239efb530d984bcfc19a02c96bfb5481adb0971 by Alexey Rusakov on 18/02/2022 at 15:42..
TestOlmAccount::claimKeys(): auth bob as bob, not as alice
https://invent.kde.org/neon/forks/libquotient/-/commit/c239efb530d984bcfc19a02c96bfb5481adb0971

Git commit d7ecf9b839b841ca22a3611b3608801a811e7b00 by Alexey Rusakov on 18/02/2022 at 22:10..
Only testolmaccount on Linux

On other platforms Docker fails to stand up the container.
https://invent.kde.org/neon/forks/libquotient/-/commit/d7ecf9b839b841ca22a3611b3608801a811e7b00

Git commit fb406897292184c46432ed0247ca9bdbef666f69 by Tobias Fella on 23/02/2022 at 00:37..
Fix tests a bit
https://invent.kde.org/neon/forks/libquotient/-/commit/fb406897292184c46432ed0247ca9bdbef666f69

Git commit 110ca4b01ae86216ee8c03cd2b4eda5ac351df2a by Tobias Fella on 24/02/2022 at 14:53..
Fix test
https://invent.kde.org/neon/forks/libquotient/-/commit/110ca4b01ae86216ee8c03cd2b4eda5ac351df2a

Git commit cfa64f86da6fcfe04947a634a208705543824810 by Tobias Fella on 24/02/2022 at 16:21..
Fix all tests
https://invent.kde.org/neon/forks/libquotient/-/commit/cfa64f86da6fcfe04947a634a208705543824810

Git commit 1458d1fc856c33b25c07ac16a86bbc2096110ba1 by GitHub (on behalf of Tobias Fella) on 25/02/2022 at 14:15..
Don't run e2ee on macos
https://invent.kde.org/neon/forks/libquotient/-/commit/1458d1fc856c33b25c07ac16a86bbc2096110ba1

Git commit 9815e9a0a27f0c4a493ad96e9d865ee489ca9404 by Tobias Fella on 25/02/2022 at 14:35..
Save key counts to state

Otherwise new one time keys will be uploaded on every start
https://invent.kde.org/neon/forks/libquotient/-/commit/9815e9a0a27f0c4a493ad96e9d865ee489ca9404

Git commit b0e1455989405ef46eb6d9ed2cd559a1164d04f4 by Tobias Fella on 25/02/2022 at 15:03..
Ifdef
https://invent.kde.org/neon/forks/libquotient/-/commit/b0e1455989405ef46eb6d9ed2cd559a1164d04f4

Git commit 62039b527507aa6c45fbf7ac787da6234d2faac3 by GitHub (on behalf of Alexey Rusakov) on 26/02/2022 at 11:57..
Merge pull request #477 from TobiasFella/work/readencryptedmessages
https://invent.kde.org/neon/forks/libquotient/-/commit/62039b527507aa6c45fbf7ac787da6234d2faac3

Git commit 458a0472bd0c6ea0a859c5e55ba5dd3d92ecec99 by Tobias Fella on 26/02/2022 at 17:55..
Add convenience functions for querying user devices and keys from cache
https://invent.kde.org/neon/forks/libquotient/-/commit/458a0472bd0c6ea0a859c5e55ba5dd3d92ecec99

Git commit ccff9edb1c7102cfcc846561a3bdc41fc1496df9 by Tobias Fella on 26/02/2022 at 17:59..
Handle to-device messages before handling roomdata

Probably improves the performance slightly

If we handle to room data first, if a message arrives at the same time as the to-device message containing the key and we handle the message first, it will not be decryptable and stored as undecrypted. Then, when the key is handled, the cache of undecrypted messages is searched, the message decrypted and replaced.

When handling the key first, the message can be decryped instantly.
https://invent.kde.org/neon/forks/libquotient/-/commit/ccff9edb1c7102cfcc846561a3bdc41fc1496df9

Git commit 29510632780f695eefc9d5107e223aa02caac2c6 by Tobias Fella on 26/02/2022 at 18:40..
Use QOlmMessage::Type in more places

Make sure that the enum values correspond to the values used in the spec
and use them instead of magic constants
https://invent.kde.org/neon/forks/libquotient/-/commit/29510632780f695eefc9d5107e223aa02caac2c6

Git commit eb50b8ebe4447cafe23d5f1d4ca9351e594e917e by Tobias Fella on 26/02/2022 at 21:25..
Check that decrypted events are for the current room
https://invent.kde.org/neon/forks/libquotient/-/commit/eb50b8ebe4447cafe23d5f1d4ca9351e594e917e

Git commit b5ba85fc3a4ddd61bb6f7a433310a997bd1e574d by GitHub (on behalf of Alexey Rusakov) on 27/02/2022 at 07:13..
Merge #534: Handle to-device messages before handling roomdata
https://invent.kde.org/neon/forks/libquotient/-/commit/b5ba85fc3a4ddd61bb6f7a433310a997bd1e574d

Git commit bb04635c6bc9e051f4bba311aafeb0b0d355f7f5 by Alexey Rusakov on 27/02/2022 at 07:33..
CI: switch sonar CI config to include E2EE
https://invent.kde.org/neon/forks/libquotient/-/commit/bb04635c6bc9e051f4bba311aafeb0b0d355f7f5

Git commit 8871fd723382d1a19e8e29b2877f70151bf8e8a1 by GitHub (on behalf of Alexey Rusakov) on 27/02/2022 at 08:36..
Merge #536: Use QOlmMessage::Type in more places
https://invent.kde.org/neon/forks/libquotient/-/commit/8871fd723382d1a19e8e29b2877f70151bf8e8a1

Git commit 6e092bd322f52bde1b037d600a7ce71f5b30f2e4 by Tobias Fella on 27/02/2022 at 13:06..
Apply suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/6e092bd322f52bde1b037d600a7ce71f5b30f2e4

Git commit f159d5ec0caf75468c802ee997630af8f7fda02d by Tobias Fella on 27/02/2022 at 13:11..
Apply suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/f159d5ec0caf75468c802ee997630af8f7fda02d

Git commit 4768823708fe42140d23fbb828d2d5f438bb3787 by GitHub (on behalf of Alexey Rusakov) on 27/02/2022 at 13:26..
Merge pull request #537 from TobiasFella/decryptcheckroom
https://invent.kde.org/neon/forks/libquotient/-/commit/4768823708fe42140d23fbb828d2d5f438bb3787

Git commit fc2ffecd22d6008426c2305dbeb31fc2caab6163 by Tobias Fella on 27/02/2022 at 16:43..
Return false instead of error for failed signature checks
https://invent.kde.org/neon/forks/libquotient/-/commit/fc2ffecd22d6008426c2305dbeb31fc2caab6163

Git commit 0928bd405f4958d3a12277614d2715cfac1f7ac0 by GitHub (on behalf of Tobias Fella) on 27/02/2022 at 16:47..
Update lib/e2ee/qolmutility.cpp

Co-authored-by: Carl Schwan <carl at carlschwan.eu>
https://invent.kde.org/neon/forks/libquotient/-/commit/0928bd405f4958d3a12277614d2715cfac1f7ac0

Git commit bcc8d2d6547e2efd595628a1528ed609eccddad6 by Alexey Rusakov on 27/02/2022 at 17:04..
Build with shared libs for Sonar

Building with static libs fails on QtKeychain apparently underlinking
with glib when --coverage is passed.
https://invent.kde.org/neon/forks/libquotient/-/commit/bcc8d2d6547e2efd595628a1528ed609eccddad6

Git commit 7b1320be28024280d930617858f26dd4db34e68c by GitHub (on behalf of Alexey Rusakov) on 27/02/2022 at 17:10..
Merge #535: Convenience functions for querying user devices and keys from cache
https://invent.kde.org/neon/forks/libquotient/-/commit/7b1320be28024280d930617858f26dd4db34e68c

Git commit 66918a4c7d393a8b22de7bf23009651dbd919366 by GitHub (on behalf of Alexey Rusakov) on 27/02/2022 at 17:14..
Merge #538: Verification should return false instead of error for failed signature checks
https://invent.kde.org/neon/forks/libquotient/-/commit/66918a4c7d393a8b22de7bf23009651dbd919366

Git commit fb9d7dc22c74022b914b1964965ed6b8b850d831 by Tobias Fella on 07/03/2022 at 18:56..
Store the device's ed25519 in the database
https://invent.kde.org/neon/forks/libquotient/-/commit/fb9d7dc22c74022b914b1964965ed6b8b850d831

Git commit cc7056851f92ba5b6224b5b82413ec55fd6aaa7f by Tobias Fella on 07/03/2022 at 19:20..
Guard against device reuse attacks
https://invent.kde.org/neon/forks/libquotient/-/commit/cc7056851f92ba5b6224b5b82413ec55fd6aaa7f

Git commit ce32dc09a9257ce5cb3188879f549d9b2fa816a1 by Tobias Fella on 07/03/2022 at 19:56..
Add datbase migration
https://invent.kde.org/neon/forks/libquotient/-/commit/ce32dc09a9257ce5cb3188879f549d9b2fa816a1

Git commit 01f7641292eb5dff236f434d7140259c429521ca by Tobias Fella on 08/03/2022 at 21:35..
Store time of last decrypted message for each olm session

Is required to correctly choose a session to use for sending messages
https://invent.kde.org/neon/forks/libquotient/-/commit/01f7641292eb5dff236f434d7140259c429521ca

Git commit 3cf68a084ea5bff20129222867a399b05e6e0bd6 by GitHub (on behalf of Alexey Rusakov) on 09/03/2022 at 13:12..
Merge #542: Guard against device reuse attacks
https://invent.kde.org/neon/forks/libquotient/-/commit/3cf68a084ea5bff20129222867a399b05e6e0bd6

Git commit cbc42d892f7fcc0ef269229c5750266c544729b2 by GitHub (on behalf of Tobias Fella) on 09/03/2022 at 19:08..
Update lib/database.cpp

Co-authored-by: Carl Schwan <carl at carlschwan.eu>
https://invent.kde.org/neon/forks/libquotient/-/commit/cbc42d892f7fcc0ef269229c5750266c544729b2

Git commit b8c22ff0663350a019ae918771fac4b6447d2b09 by Tobias Fella on 09/03/2022 at 19:23..
Check for empty ed25519 key.
https://invent.kde.org/neon/forks/libquotient/-/commit/b8c22ff0663350a019ae918771fac4b6447d2b09

Git commit b865be5ad72b3996bf072268d061d7466bf4623a by GitHub (on behalf of Alexey Rusakov) on 10/03/2022 at 06:21..
Merge pull request #541 from TobiasFella/storesessionedkey

Store some more things in the database
https://invent.kde.org/neon/forks/libquotient/-/commit/b865be5ad72b3996bf072268d061d7466bf4623a

Git commit 4f137493f026afba2299ae5b65ef6eb17939aece by Tobias Fella on 10/03/2022 at 18:45..
Add constructor for creating roomkeyevents
https://invent.kde.org/neon/forks/libquotient/-/commit/4f137493f026afba2299ae5b65ef6eb17939aece

Git commit 658e6db49364862be1ab8e264b03dc04a7bed721 by Tobias Fella on 10/03/2022 at 18:45..
Implement sending encrypted messages
https://invent.kde.org/neon/forks/libquotient/-/commit/658e6db49364862be1ab8e264b03dc04a7bed721

Git commit 30004d4e0d6aca06491777f77ed966a451eff50f by Tobias Fella on 10/03/2022 at 18:50..
Save and load outgoing megolm session
https://invent.kde.org/neon/forks/libquotient/-/commit/30004d4e0d6aca06491777f77ed966a451eff50f

Git commit 0ef080bdfa3a8a64d1faadf4a11a8b9dbb5bc055 by Tobias Fella on 10/03/2022 at 19:03..
Keep log of where we send keys and send keys to new devices and users
https://invent.kde.org/neon/forks/libquotient/-/commit/0ef080bdfa3a8a64d1faadf4a11a8b9dbb5bc055

Git commit 2071f5020975bc3f5ecbb9e2444acaad8f13060a by Tobias Fella on 10/03/2022 at 19:03..
Implement sending encrypted files
https://invent.kde.org/neon/forks/libquotient/-/commit/2071f5020975bc3f5ecbb9e2444acaad8f13060a

Git commit 7ba17e2b9b6d76aeea250f37c833ad7eed2f61da by Tobias Fella on 10/03/2022 at 19:03..
Properly create encrypted edits
https://invent.kde.org/neon/forks/libquotient/-/commit/7ba17e2b9b6d76aeea250f37c833ad7eed2f61da

Git commit 71eed90fdea8689d237da8de1bf385202b85cffd by Tobias Fella on 10/03/2022 at 20:41..
More work; Update olm pickle & timestamps in database; Remove TODOs
https://invent.kde.org/neon/forks/libquotient/-/commit/71eed90fdea8689d237da8de1bf385202b85cffd

Git commit 80251f1db42268be0e678543b0b054f925fbfe88 by GitHub (on behalf of Tobias Fella) on 10/03/2022 at 20:47..
Update lib/events/encryptedfile.h
https://invent.kde.org/neon/forks/libquotient/-/commit/80251f1db42268be0e678543b0b054f925fbfe88

Git commit deb1cb4dbbbd4f607e05e9a3b624d3f5f7e2772e by GitHub (on behalf of Tobias Fella) on 10/03/2022 at 20:51..
Update lib/room.cpp
https://invent.kde.org/neon/forks/libquotient/-/commit/deb1cb4dbbbd4f607e05e9a3b624d3f5f7e2772e

Git commit 336f8b2e93b43e85b9ea4b9da2b2b34221e657aa by Tobias Fella on 10/03/2022 at 20:54..
Minor fix
https://invent.kde.org/neon/forks/libquotient/-/commit/336f8b2e93b43e85b9ea4b9da2b2b34221e657aa

Git commit 494099a4b51b4d537a40a89c9d642fe3bd61e559 by Tobias Fella on 11/03/2022 at 14:05..
Fix loading images when E2EE is disabled
https://invent.kde.org/neon/forks/libquotient/-/commit/494099a4b51b4d537a40a89c9d642fe3bd61e559

Git commit 3c8e76869fd4f814a9e56a0e4e8f803b309aee61 by GitHub (on behalf of Alexey Rusakov) on 12/03/2022 at 11:45..
Merge #543: Fix loading images when E2EE is disabled
https://invent.kde.org/neon/forks/libquotient/-/commit/3c8e76869fd4f814a9e56a0e4e8f803b309aee61

Git commit 7cd71c978f39a0bd8f82ebdf01cbaaf317ebe020 by Tobias Fella on 23/03/2022 at 19:42..
Add database migration
https://invent.kde.org/neon/forks/libquotient/-/commit/7cd71c978f39a0bd8f82ebdf01cbaaf317ebe020

Git commit fc3ad90a054e3c674127a0cdd385ddbb98cf2010 by Tobias Fella on 09/04/2022 at 13:49..
Correctly load EncryptedEvents
https://invent.kde.org/neon/forks/libquotient/-/commit/fc3ad90a054e3c674127a0cdd385ddbb98cf2010

Git commit 42abb01516ee4d3d0fe11ffddd47c7e76d786385 by Tobias Fella on 09/04/2022 at 13:52..
Check edKey when receiving an olm message
https://invent.kde.org/neon/forks/libquotient/-/commit/42abb01516ee4d3d0fe11ffddd47c7e76d786385

Git commit 5c93193508a49b79a92fd0d80cf4db14f1d0762e by Tobias Fella on 09/04/2022 at 13:52..
Make sure devices are known before decrypting olm messages
https://invent.kde.org/neon/forks/libquotient/-/commit/5c93193508a49b79a92fd0d80cf4db14f1d0762e

Git commit b0a43c3534865b9fcc1af90ee2c821ac11b2a204 by Tobias Fella on 09/04/2022 at 13:52..
Don't crash when decrypting existing messages
https://invent.kde.org/neon/forks/libquotient/-/commit/b0a43c3534865b9fcc1af90ee2c821ac11b2a204

Git commit 2af8d83526ed7a24c18b185e1d64d97632e10f1e by Tobias Fella on 09/04/2022 at 13:52..
Prepare for MSC 3700
https://invent.kde.org/neon/forks/libquotient/-/commit/2af8d83526ed7a24c18b185e1d64d97632e10f1e

Git commit b7dbd566f0611a88aafef78f23d53b724302c33f by Tobias Fella on 09/04/2022 at 16:34..
Comment out debug statement
https://invent.kde.org/neon/forks/libquotient/-/commit/b7dbd566f0611a88aafef78f23d53b724302c33f

Git commit ad50a5167b98579e8e4960352653dca995490368 by Tobias Fella on 16/04/2022 at 18:47..
Try fixing lgtm.com
https://invent.kde.org/neon/forks/libquotient/-/commit/ad50a5167b98579e8e4960352653dca995490368

Git commit 06b7093aaa0b5cce58c1191c7e0bf9bdfe135005 by Tobias Fella on 16/04/2022 at 18:53..
Only build function when E2EE is enabled
https://invent.kde.org/neon/forks/libquotient/-/commit/06b7093aaa0b5cce58c1191c7e0bf9bdfe135005

Git commit c0c4cd014718fdb54ee691ccbdab46981e15d25f by Tobias Fella on 16/04/2022 at 20:09..
Use more idiomatic C++
https://invent.kde.org/neon/forks/libquotient/-/commit/c0c4cd014718fdb54ee691ccbdab46981e15d25f

Git commit 87e8d6d6ef325f176a7d3b5da441569f9b24c847 by GitHub (on behalf of Alexey Rusakov) on 16/04/2022 at 20:23..
Merge pull request #544 from TobiasFella/checkedkey

Check edKey when receiving an olm message and prepare for MSC 3700
https://invent.kde.org/neon/forks/libquotient/-/commit/87e8d6d6ef325f176a7d3b5da441569f9b24c847

Git commit bcde0a74e82e7dbb9eed6b108ebbb63941da34ea by Tobias Fella on 16/04/2022 at 21:18..
Merge branch 'dev' into sendmessages
https://invent.kde.org/neon/forks/libquotient/-/commit/bcde0a74e82e7dbb9eed6b108ebbb63941da34ea

Git commit 3a81aea545ec014d597f3756c362913aad4421df by Tobias Fella on 16/04/2022 at 21:32..
Fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/3a81aea545ec014d597f3756c362913aad4421df

Git commit 534b6f3fb3a4bd14d78942cab7eb430dd98e471c by Alexey Rusakov on 23/04/2022 at 17:46..
SLICE()

Add a macro to make slicing clear in the code and quiet for static
analysis.
https://invent.kde.org/neon/forks/libquotient/-/commit/534b6f3fb3a4bd14d78942cab7eb430dd98e471c

Git commit 408785f0680a531c493de225fad60b6369227cfb by Alexey Rusakov on 23/04/2022 at 17:47..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/408785f0680a531c493de225fad60b6369227cfb

Git commit 16d4f4e48304543a0ab59b235edba07f5f2c2204 by Tobias Fella on 02/05/2022 at 18:25..
Implement key verification
https://invent.kde.org/neon/forks/libquotient/-/commit/16d4f4e48304543a0ab59b235edba07f5f2c2204

Git commit 72ffe9651fcdc3dfc0ceb34bd677aa15bbbe2ebf by Alexey Rusakov on 04/05/2022 at 06:05..
CMakeLists.txt: add roomcanonicalaliasevent.h

Yet another missing header from times when .h files weren't added to
CMakeLists.
https://invent.kde.org/neon/forks/libquotient/-/commit/72ffe9651fcdc3dfc0ceb34bd677aa15bbbe2ebf

Git commit 272cb01b05529971ea38e09bf75d8d8f194a9dd8 by Tobias Fella on 05/05/2022 at 12:23..
Fix license identifier
https://invent.kde.org/neon/forks/libquotient/-/commit/272cb01b05529971ea38e09bf75d8d8f194a9dd8

Git commit b79f67919e05698a8c3daffbe0fe53fa1ce46e54 by Alexey Rusakov on 08/05/2022 at 15:43..
toSnakeCase and EventContent::SingleKeyValue

This is a rework of EventContent::SimpleContent previously defined in
simplestateevents.h. Quite a few events (and not only state events) have
just a single key-value pair in their content - this structure (which
is really just a template wrapper around the value) and the accompanying
JsonConverter<> specialisation encapsulate the concept to streamline
definition of such events. This commit only has simplestateevents.h
using it; further commits will use SingleKeyValue in other places.

toSnakeCase is a facility function that converts camelCase used for
C++ variables into snake_case used in JSON payloads. Combined with
the preprocessor trick that makes a string literal from an identifier,
this allows to reduce boilerplate code that repeats the same name for
fields in C++ event classes and fields in JSON. SingleKeyValue uses it,
and there are other cases for it coming.
https://invent.kde.org/neon/forks/libquotient/-/commit/b79f67919e05698a8c3daffbe0fe53fa1ce46e54

Git commit b094a75f704b59f1382b6eec1f3bf0ab51fb0a85 by Alexey Rusakov on 08/05/2022 at 15:43..
StateEvent: use non-member JSON converters

With the reworked JsonConverter code it is possible to work uniformly
with structures that have a member toJson() and a constructor converting
from QJsonObject, as well as with structures that rely on an external
JsonConverter specialisation.
https://invent.kde.org/neon/forks/libquotient/-/commit/b094a75f704b59f1382b6eec1f3bf0ab51fb0a85

Git commit 09ecce1744344f1bfbacd31c8f300440a4139be4 by Alexey Rusakov on 08/05/2022 at 15:43..
Cleanup; comments reformatting
https://invent.kde.org/neon/forks/libquotient/-/commit/09ecce1744344f1bfbacd31c8f300440a4139be4

Git commit d271a171dbec4068e43e8f711d5d2e966a2072ac by Alexey Rusakov on 08/05/2022 at 15:43..
Simplify EventContent a bit

Main changes:
1. Base::fillJson() gets a QJsonObject& instead of QJsonObject* - c'mon,
   there's nothing inherently wrong with using an lvalue reference for a
   read-write parameter.
2. UrlWithThumbnailContent merged into UrlBasedContent. The original
   UrlBasedContent was only used to produce a single class,
   AudioContent, and even that can logically have a thumbnail even if
   the spec doesn't provision that. And there's no guarantee even for
   visual content (ImageContent, e.g.) to have thumbnail data; the
   fallback is already tested.
3. toInfoJson is converted from a template to a couple of overloads
   that supersede fillInfoJson() member functions in FileInfo/ImageInfo.
   These overloads are easier on the eye; and clang-tidy no more warns
   about ImageInfo::fillInfoJson() shadowing FileInfo::fillInfoJson().
4. Now that UrlWithThumbnail is gone, PlayableContent can directly
   derive from UrlBasedContent since both its specialisations use it.
5. Instead of FileInfo/ImageInfo, fillInfoJson() has been reinvented
   within UrlBasedContent so that, in particular, PlayableContent
   wouldn't need to extract 'info' subobject and then roll it back
   inside the content JSON object.
https://invent.kde.org/neon/forks/libquotient/-/commit/d271a171dbec4068e43e8f711d5d2e966a2072ac

Git commit 4070706fcc91cd46054b00c5f3a267a9d8c44fb7 by Alexey Rusakov on 08/05/2022 at 15:43..
Event content: provide toJson() instead of deriving from EC::Base

EventContent::Base has been made primarily for the sake of dynamic
polymorphism needed within RoomMessageEvent content (arguably, it might
not be really needed even there, but that's a bigger matter for another
time). When that polymorphism is not needed, it's easier for reading
and maintenance to have toJson() member function (or even specialise
JsonConverter<> outside of the content structure) instead of deriving
from EC::Base and then still having fillJson() member function. This
commit removes EventContent::Base dependency where it's not beneficial.
https://invent.kde.org/neon/forks/libquotient/-/commit/4070706fcc91cd46054b00c5f3a267a9d8c44fb7

Git commit 843f7a0ac2619a2f2863d457cdeaa03707255793 by Alexey Rusakov on 08/05/2022 at 15:43..
basic*EventJson() -> *Event::basicJson()

This makes it easier and more intuitive to build a minimal JSON payload
for a given event type. A common basicJson() call point is also
convenient in template contexts (see next commits).
https://invent.kde.org/neon/forks/libquotient/-/commit/843f7a0ac2619a2f2863d457cdeaa03707255793

Git commit 41f630cf7be6e806e498cb31711f403bf6919ff8 by Alexey Rusakov on 08/05/2022 at 15:43..
Pass matrixType(QString), not Event::Type, to basicJson()

Not that it was very important, as the two are basically the same thing
(and matrixTypeId() is about to be obsoleted); but formally basicJson()
is supposed to get the former, not the latter.
https://invent.kde.org/neon/forks/libquotient/-/commit/41f630cf7be6e806e498cb31711f403bf6919ff8

Git commit e7a4b5a545b0f59b95ca8097009dbf6eea534db1 by Alexey Rusakov on 08/05/2022 at 15:43..
Generalise DEFINE_SIMPLE_EVENT

This macro was defined in accountdataevents.h but adding one more
parameter (base class) makes it applicable to pretty much any event
with the content that has one key-value pair (though state events
already have a non-macro solution in the form of
`StateEvent<EventContent::SingleKeyValue>`). Now CustomEvent definition
in quotest.cpp can be replaced with a single line.
https://invent.kde.org/neon/forks/libquotient/-/commit/e7a4b5a545b0f59b95ca8097009dbf6eea534db1

Git commit f4a20cc3710ee8f4b1788f73d05466aa0e660d61 by Alexey Rusakov on 08/05/2022 at 15:43..
More cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/f4a20cc3710ee8f4b1788f73d05466aa0e660d61

Git commit 4b35dfd8af196ff9e8669499ea3ed7e4127f5901 by Alexey Rusakov on 08/05/2022 at 15:43..
Use std::pair instead of QPair

QPair is giving way to its STL counterpart, becoming its alias in Qt 6.
https://invent.kde.org/neon/forks/libquotient/-/commit/4b35dfd8af196ff9e8669499ea3ed7e4127f5901

Git commit c42d268db0b40cdba06381fc64a6966a72c90709 by Alexey Rusakov on 08/05/2022 at 15:43..
QUO_CONTENT_GETTER

To streamline adding of simple getters of content parts.
https://invent.kde.org/neon/forks/libquotient/-/commit/c42d268db0b40cdba06381fc64a6966a72c90709

Git commit 3458fdf7b416fe64b82ec9b99553c7b2aa299e4c by GitHub (on behalf of Alexey Rusakov) on 08/05/2022 at 17:08..
Merge #548: Streamline usage of event types, part 1
https://invent.kde.org/neon/forks/libquotient/-/commit/3458fdf7b416fe64b82ec9b99553c7b2aa299e4c

Git commit 98fdf62391fdc5135d8324476903a4c43345e732 by Alexey Rusakov on 11/05/2022 at 14:17..
Fix race condition in consumeRoomData()

QCoreApplication::processEvents() is well-known to be a _wrong_ solution
to the unresponsive UI problem; despite that, connection.cpp has long
had that call to let UI update itself while processing bulky room
updates (mainly from the initial sync). This commit finally fixes this,
after an (admittedly rare) race condition has been hit, as follows:
0. Pre-requisite: quotest runs all the tests and is about to leave
   the room; there's an ongoing sync request.
1. Quotest calls /leave
2. Sync returns, with the batch of _several_ rooms (that's important)
3. The above code handles the first room in the batch
4. processEvents() is called, just in time for the /leave response.
5. The /leave response handler in quotest ends up calling
   Connection::logout() (processEvents() still hasn't returned).
6. Connection::logout() calls abandon() on the ongoing SyncJob,
   pulling the rug from under onSyncSuccess()/consumeRoomData().
7. processEvents() returns and the above code proceeds to the next
   room - only to find that the roomDataList (that is a ref to
   a structure owned by SyncJob), is now pointing to garbage.

Morals of the story:
1. processEvents() effectively makes code multi-threaded: one flow is
   suspended and another one may run _on the same data_. After the first
   flow is resumed, it cannot make any assumptions regarding which data
   the second flow touched and/or changed.
2. The library had quite a few cases of using &&-refs, avoiding even
   move operations but also leaving ownership of the data with the
   original producer (SyncJob). If the lifetime of that producer ends
   too soon, those refs become dangling.

The fix makes two important things, respectively:
2. Ownership of room data is now transfered to the processing side,
   the moment it is scheduled (see below), in the form of moving
   into a lambda capture.
1. Instead of processEvents(), processing of room data is scheduled
   via QMetaObject::invokeMethod(), uncoupling the moment when the
   data was received in SyncJob from the moment they are processed
   in Room::updateData() (and all the numerous  signal-slots it calls).

Also: Room::baseStateLoaded now causes Connection::loadedRoomState, not
the other way round - this is more natural and doesn't need Connection
to keep firstTimeRooms map around.
https://invent.kde.org/neon/forks/libquotient/-/commit/98fdf62391fdc5135d8324476903a4c43345e732

Git commit b32c1c27ae412d073a7e98bdaf22678bdc66ab23 by Alexey Rusakov on 11/05/2022 at 14:18..
CallAnswerEvent: drop lifetime

See https://github.com/matrix-org/matrix-spec/pull/1054.

# Conflicts:
#	lib/events/callanswerevent.cpp
#	lib/events/callanswerevent.h
https://invent.kde.org/neon/forks/libquotient/-/commit/b32c1c27ae412d073a7e98bdaf22678bdc66ab23

Git commit 572b727b22d66a79431326c924236ef431fd972b by Alexey Rusakov on 14/05/2022 at 09:23..
Cleanup across the board

Mainly driven by clang-tidy and SonarCloud warnings (sadly, SonarCloud
doesn't store historical reports so no link can be provided here).
https://invent.kde.org/neon/forks/libquotient/-/commit/572b727b22d66a79431326c924236ef431fd972b

Git commit 42bdfa1d7a2cb7d8e6af58f7b91689c31c64f276 by GitHub (on behalf of Alexey Rusakov) on 14/05/2022 at 14:28..
Merge pull request #549 from quotient-im/kitsune/various-fixes

Various fixes and cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/42bdfa1d7a2cb7d8e6af58f7b91689c31c64f276

Git commit f1ed7eec77f843de689c3f3540db73bb235b2164 by Alexey Rusakov on 16/05/2022 at 04:39..
Quotest: test checkResource()
https://invent.kde.org/neon/forks/libquotient/-/commit/f1ed7eec77f843de689c3f3540db73bb235b2164

Git commit 0599ef6e603dce219b2ba000d7322e8d937753b9 by Alexey Rusakov on 16/05/2022 at 04:39..
room.cpp: use return {} where appropriate
https://invent.kde.org/neon/forks/libquotient/-/commit/0599ef6e603dce219b2ba000d7322e8d937753b9

Git commit 3fcc0c5acb160364e819688cc67a8aaf814fafef by Alexey Rusakov on 16/05/2022 at 04:41..
Optimise #includes for QOlm* classes
https://invent.kde.org/neon/forks/libquotient/-/commit/3fcc0c5acb160364e819688cc67a8aaf814fafef

Git commit 9c8c33ab0b2138b45cbfe29f4be235f631730826 by Alexey Rusakov on 16/05/2022 at 08:42..
Expected<>

This is a minimal implementation along the lines of `std::expected<>`
introduced in C++23; once compilers catch up with C++23 support, it may
become simply a typedef of std::expected. There are no tests as yet; but
the following commits will introduce QOlmExpected that would replace
the current `std::variant<T, QOlmError>` pattern used throughout `QOlm*`
classes, automatically pulling Expected under the coverage of `QOlm*`
unit tests.
https://invent.kde.org/neon/forks/libquotient/-/commit/9c8c33ab0b2138b45cbfe29f4be235f631730826

Git commit 1fe8dc00de4d9bb7072ec9677ec7f8e73e4fc769 by Alexey Rusakov on 16/05/2022 at 08:42..
QOlmAccount::needsSave() shouldn't be const

Making Qt signals const is an impossible commitment - once the signal
is out, you can't control if any called slot will change the emitting
class or not. The code compiles but const-ness is not preserved.
https://invent.kde.org/neon/forks/libquotient/-/commit/1fe8dc00de4d9bb7072ec9677ec7f8e73e4fc769

Git commit a3486fd0e9786c47564ce8173a2e4039135b10f9 by Alexey Rusakov on 16/05/2022 at 08:42..
Simplify QOlmSession::matchesInboundSession*()

There's no particular use in letting `QOlmError` out, only to confirm
that, well, `QOlmError` is just another form of no-match.
https://invent.kde.org/neon/forks/libquotient/-/commit/a3486fd0e9786c47564ce8173a2e4039135b10f9

Git commit 79b3dba1ed4b6870c4e989ada88e33b1ce0ddc21 by Alexey Rusakov on 16/05/2022 at 08:42..
QOlmExpected and associated refactoring

As mentioned in the commit introducing `Expected`, `QOlmExpected` is
simply an alias for `Expected<T, QOlmError>`. This simplifies quite
a few function signatures in `QOlm*` classes and collapses unwieldy
`std::holds_alternative<>`/`std::get<>` constructs into a neat
contextual bool cast and an invocation of `operator*` or
`value()`/`error()` accessors that don't need to specify the type.

While refactoring the code, I found a couple of cases of mismatching
`uint32_t` and `qint32_t` in return values; a couple of cases where
`decrypt()` returns `QString` which is in fact `QByteArray` (e.g., in
`QOlmSession::decrypt()`); there's a repetitive algorithm in
`Connection::Private::sessionDecryptPrekey()` and
`sessionDecryptGeneral()`
https://invent.kde.org/neon/forks/libquotient/-/commit/79b3dba1ed4b6870c4e989ada88e33b1ce0ddc21

Git commit 56dbaab8fc8edc314ef7f7962697e7eb6ba71343 by GitHub (on behalf of Alexey Rusakov) on 16/05/2022 at 12:15..
Update autotests/testolmutility.cpp

Co-authored-by: Tobias Fella <9750016+TobiasFella at users.noreply.github.com>
https://invent.kde.org/neon/forks/libquotient/-/commit/56dbaab8fc8edc314ef7f7962697e7eb6ba71343

Git commit decc676f1e469dc26c80c33da64fad15805de8f2 by Alexey Rusakov on 16/05/2022 at 15:37..
expected.h: add a copyright notice

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/decc676f1e469dc26c80c33da64fad15805de8f2

Git commit 77b190d822c1e980b98b84999f0cfb609ed05a49 by GitHub (on behalf of Alexey Rusakov) on 16/05/2022 at 15:38..
Merge #550: Quotient::Expected and QOlmExpected
https://invent.kde.org/neon/forks/libquotient/-/commit/77b190d822c1e980b98b84999f0cfb609ed05a49

Git commit ff54bf2d0979dc6b9b3b77bba827ae7f3baa9f58 by Tobias Fella on 16/05/2022 at 18:37..
Add constructor for creating roomkeyevents
https://invent.kde.org/neon/forks/libquotient/-/commit/ff54bf2d0979dc6b9b3b77bba827ae7f3baa9f58

Git commit 20bd96ac67c06617e619460c4cd07b5e15cc74d7 by Tobias Fella on 16/05/2022 at 18:41..
Implement sending encrypted messages
https://invent.kde.org/neon/forks/libquotient/-/commit/20bd96ac67c06617e619460c4cd07b5e15cc74d7

Git commit 3eb7ad8b0a1ac0f6f9cda679108937a01268f184 by Tobias Fella on 16/05/2022 at 18:46..
Save and load outgoing megolm session
https://invent.kde.org/neon/forks/libquotient/-/commit/3eb7ad8b0a1ac0f6f9cda679108937a01268f184

Git commit 6f5ac9b7315d75692960e5eac7b1eb6867c0d203 by Tobias Fella on 16/05/2022 at 18:47..
Keep log of where we send keys and send keys to new devices and users
https://invent.kde.org/neon/forks/libquotient/-/commit/6f5ac9b7315d75692960e5eac7b1eb6867c0d203

Git commit efa450920e5fc338e771e653ca0889e948d04ee7 by Tobias Fella on 16/05/2022 at 18:47..
Implement sending encrypted files
https://invent.kde.org/neon/forks/libquotient/-/commit/efa450920e5fc338e771e653ca0889e948d04ee7

Git commit fcde81c8618fbe10c1cb91c0ec6887a3df705a23 by Tobias Fella on 16/05/2022 at 18:47..
Properly create encrypted edits
https://invent.kde.org/neon/forks/libquotient/-/commit/fcde81c8618fbe10c1cb91c0ec6887a3df705a23

Git commit e437c29654e8f988ad694083401bbef23fbbcb18 by Tobias Fella on 16/05/2022 at 18:51..
More work; Update olm pickle & timestamps in database; Remove TODOs
https://invent.kde.org/neon/forks/libquotient/-/commit/e437c29654e8f988ad694083401bbef23fbbcb18

Git commit 1b302abce0bfd9fb62cdc721bc7300dc61b1784f by Tobias Fella on 16/05/2022 at 18:53..
Update lib/events/encryptedfile.h
https://invent.kde.org/neon/forks/libquotient/-/commit/1b302abce0bfd9fb62cdc721bc7300dc61b1784f

Git commit 8af39e510e550d001e207bdc0177a1480f6ebcba by Tobias Fella on 16/05/2022 at 19:03..
Add database migration
https://invent.kde.org/neon/forks/libquotient/-/commit/8af39e510e550d001e207bdc0177a1480f6ebcba

Git commit 6f961ff2726c87e679cc9f6c39ed27a92a31cb0d by Tobias Fella on 16/05/2022 at 19:05..
Fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/6f961ff2726c87e679cc9f6c39ed27a92a31cb0d

Git commit 89d8f6c44f86a27df28b1d89a80564fb0d4d89fc by Tobias Fella on 16/05/2022 at 19:26..
Fix build failures
https://invent.kde.org/neon/forks/libquotient/-/commit/89d8f6c44f86a27df28b1d89a80564fb0d4d89fc

Git commit c671867a0a3e2a6ad0e7ae6e93fa09467c06188f by GitHub (on behalf of Tobias Fella) on 18/05/2022 at 20:02..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/c671867a0a3e2a6ad0e7ae6e93fa09467c06188f

Git commit 9c4cc1b9b065765843c81a0c555b3afa5122b61e by GitHub (on behalf of Tobias Fella) on 18/05/2022 at 20:05..
Update lib/events/encryptedevent.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/9c4cc1b9b065765843c81a0c555b3afa5122b61e

Git commit b29eb3954b798ac9110906cd79c4f288deaa2596 by Tobias Fella on 18/05/2022 at 20:39..
Make database independent of {Room, User, Connection}
https://invent.kde.org/neon/forks/libquotient/-/commit/b29eb3954b798ac9110906cd79c4f288deaa2596

Git commit 41897df408c1398881bb8cf82ae0dc4503cefef7 by Tobias Fella on 19/05/2022 at 12:11..
Use list of 3-tuple instead of map
https://invent.kde.org/neon/forks/libquotient/-/commit/41897df408c1398881bb8cf82ae0dc4503cefef7

Git commit 146c2f73a22be32033a4999fd722cb92dcdf3c2f by GitHub (on behalf of Tobias Fella) on 19/05/2022 at 12:15..
Update lib/room.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/146c2f73a22be32033a4999fd722cb92dcdf3c2f

Git commit 7b0de6473b6e23f1d74e7ad5739ad86c6b243797 by Tobias Fella on 19/05/2022 at 12:32..
Apply Suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/7b0de6473b6e23f1d74e7ad5739ad86c6b243797

Git commit 7a1283d2cc753781d4adbf4c69d3167651fce97b by Tobias Fella on 19/05/2022 at 12:54..
Apply suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/7a1283d2cc753781d4adbf4c69d3167651fce97b

Git commit 5df53b8d5c8b21228ecf9938330dd4d85d3de6af by Tobias Fella on 19/05/2022 at 14:01..
Document devices tuple
https://invent.kde.org/neon/forks/libquotient/-/commit/5df53b8d5c8b21228ecf9938330dd4d85d3de6af

Git commit 0f2c40957b438d0a2f5ce7cb2ba033bab077cbeb by GitHub (on behalf of Alexey Rusakov) on 19/05/2022 at 14:14..
Merge pull request #540 from TobiasFella/sendmessages

Implement sending encrypted messages
https://invent.kde.org/neon/forks/libquotient/-/commit/0f2c40957b438d0a2f5ce7cb2ba033bab077cbeb

Git commit 20f169af3df90198770e7017c399b08f7d313ebd by Alexey Rusakov on 19/05/2022 at 15:42..
Fix FTBFS without E2EE
https://invent.kde.org/neon/forks/libquotient/-/commit/20f169af3df90198770e7017c399b08f7d313ebd

Git commit a78bf8528fc38f7e1a3f6f912ef3d915eb1b5f29 by Alexey Rusakov on 19/05/2022 at 15:42..
Use Clang 12 for LGTM now that it runs on focal
https://invent.kde.org/neon/forks/libquotient/-/commit/a78bf8528fc38f7e1a3f6f912ef3d915eb1b5f29

Git commit 10197b03cc354f69b9d3cc028d00cf3df00ca91f by GitHub (on behalf of Alexey Rusakov) on 19/05/2022 at 19:21..
README: drop defunct Merge chance badge
https://invent.kde.org/neon/forks/libquotient/-/commit/10197b03cc354f69b9d3cc028d00cf3df00ca91f

Git commit a8076b9a2394150e11381dc8fc2e3af2bbd03f39 by Tobias Fella on 19/05/2022 at 19:58..
Fix cipher text buffer initialization
https://invent.kde.org/neon/forks/libquotient/-/commit/a8076b9a2394150e11381dc8fc2e3af2bbd03f39

Git commit 7787df0119e52621a03b3d4ad30d27165191fd77 by Tobias Fella on 19/05/2022 at 20:33..
Add function to check if e2ee is supported
https://invent.kde.org/neon/forks/libquotient/-/commit/7787df0119e52621a03b3d4ad30d27165191fd77

Git commit 44f34c60fe1f1dde859655bbda86221b6cec4811 by Tobias Fella on 20/05/2022 at 10:44..
Truncate ciphertext buffer to actual size during file encryption

The ciphertext for AES CTR is exactly as large as the plaintext (not
necessarily a multiple of the blocksize!). By truncating the ciphertext,
we do not send bytes that will be decrypted to gibberish.

As a side node, we probably do not need to initialize the ciphertext
buffer larger than the plaintext size at all, but the OpenSSL docs are a
bit vague about that.
https://invent.kde.org/neon/forks/libquotient/-/commit/44f34c60fe1f1dde859655bbda86221b6cec4811

Git commit 004cbef8c2fb138310a12439f4b5907862df5654 by GitHub (on behalf of Alexey Rusakov) on 20/05/2022 at 16:40..
Merge pull request #552 from TobiasFella/work/encryptionsupported

Add function to check if e2ee is supported
https://invent.kde.org/neon/forks/libquotient/-/commit/004cbef8c2fb138310a12439f4b5907862df5654

Git commit 59f2b60835752fc87e75f456145d21cc5f77a433 by GitHub (on behalf of Tobias Fella) on 20/05/2022 at 18:33..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/59f2b60835752fc87e75f456145d21cc5f77a433

Git commit 729ba7da174eacc88bf9bd4e2e80eeab3fc92716 by GitHub (on behalf of Alexey Rusakov) on 20/05/2022 at 19:32..
Merge pull request #553 from TobiasFella/work/fixencryption

Truncate ciphertext buffer to actual size during file encryption
https://invent.kde.org/neon/forks/libquotient/-/commit/729ba7da174eacc88bf9bd4e2e80eeab3fc92716

Git commit 617514cf9da4d444c285ebb27ff1c7fd034a484f by Tobias Fella on 20/05/2022 at 20:24..
Adapt update-api target to matrix-doc split
https://invent.kde.org/neon/forks/libquotient/-/commit/617514cf9da4d444c285ebb27ff1c7fd034a484f

Git commit 753037cfc0d72a49144d30e9111ca21f01b81afd by Tobias Fella on 20/05/2022 at 20:33..
Provide backwards compatibility for MATRIX_SPEC_PATH
https://invent.kde.org/neon/forks/libquotient/-/commit/753037cfc0d72a49144d30e9111ca21f01b81afd

Git commit 4e127d5f74c56b1e366de3e8afb7f07700a566b4 by Tobias Fella on 21/05/2022 at 14:29..
Use branch of matrix-spec
https://invent.kde.org/neon/forks/libquotient/-/commit/4e127d5f74c56b1e366de3e8afb7f07700a566b4

Git commit 946cd4cb73f95526aa09777afc2a493610d9696d by Tobias Fella on 27/05/2022 at 19:13..
Load and store accounts in the keychain
https://invent.kde.org/neon/forks/libquotient/-/commit/946cd4cb73f95526aa09777afc2a493610d9696d

Git commit 0b5e72a2c6502f22a752b72b4df5fa25746fdd25 by Alexey Rusakov on 29/05/2022 at 06:17..
Refactor EncryptedFile and EC::FileInfo::file

Besides having a misleading name (and it goes back to the spec),
EncryptedFile under `file` key preempts the `url` (or `thumbnail_url`)
string value so only one of the two should exist. This is a case for
using std::variant<> - despite its clumsy syntax, it can actually
simplify and streamline code when all the necessary bits are in place
(such as conversion to JSON and getting the common piece - the URL -
out of it). This commit replaces `FileInfo::url` and `FileInfo::file`
with a common field `source` of type `FileSourceInfo` that is an alias
for a variant type covering both underlying types; and `url()` is
reintroduced as a function instead, to allow simplified access
to whichever URL is available inside the variant.

Oh, and EncryptedFile is EncryptedFileMetadata now, to clarify that it
does not represent the file payload itself but rather the data necessary
to obtain that payload.
https://invent.kde.org/neon/forks/libquotient/-/commit/0b5e72a2c6502f22a752b72b4df5fa25746fdd25

Git commit 841846ea5efad80ce20e0d42b1885def224e58ad by Alexey Rusakov on 29/05/2022 at 06:17..
Cleanup and fix Sonar warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/841846ea5efad80ce20e0d42b1885def224e58ad

Git commit c2d87291dbf8bd240e3e96138ec52aa5da22416b by Alexey Rusakov on 29/05/2022 at 06:17..
Move encryptFile/decryptFile out of EncryptedFileMetadata

These are not operations on EncryptedFileMetadata but rather on
a combination of EncryptedFileMetadata and ciphertext. If C++ had
multimethods these could be bound to such a combination.
https://invent.kde.org/neon/forks/libquotient/-/commit/c2d87291dbf8bd240e3e96138ec52aa5da22416b

Git commit 0e1f49a4ab8e6903709f387c154c2bf131a1370c by Alexey Rusakov on 29/05/2022 at 06:17..
DownloadFileJob: refactor file decryption
https://invent.kde.org/neon/forks/libquotient/-/commit/0e1f49a4ab8e6903709f387c154c2bf131a1370c

Git commit c2e9256b1c334bdadcc208429084cbc83496fb4b by Alexey Rusakov on 29/05/2022 at 06:21..
Cleanup and address Sonar warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/c2e9256b1c334bdadcc208429084cbc83496fb4b

Git commit 64797165f04a16d290dd27c2f962060b40f85be3 by Alexey Rusakov on 29/05/2022 at 06:21..
Refactor creation of Megolm sessions in Room

Notably, replace a multi-level hash map with QMultiHash and factor out
Room::P::createOlmSession().
https://invent.kde.org/neon/forks/libquotient/-/commit/64797165f04a16d290dd27c2f962060b40f85be3

Git commit 0f8335a32debc4c61d9fc9875c79c0ba6ba05357 by Alexey Rusakov on 29/05/2022 at 06:22..
Move some Meg/Olm session logic from Room::Private to Connection::Private

Functions (Room::Private::)createOlmSession, payloadForUserDevice
and sendRoomKeyToDevices don't have a lot to do with the given Room
object but deal with quite a few things stored in Connection. This
commit moves them to Connection::Private, exposing
sendSessionKeyToDevices (the new name for sendRoomKeyToDevices) in
Connection so that Room could call it from Room::P::sendMegolmSession().

While moving these over, a few additional things were adjusted:
- more functions marked as const
- a few functions could be moved now from Connection
  to Connection::Private
- false slots in Connection (such as picklingMode) are moved out of
  the slots block
- keys.yml in Matrix CS API definitions has been adjusted to match
  the real structure of `/claim` response (see quotient-im/matrix-spec
  repo); csapi/keys.h has been regenerated accordingly.
https://invent.kde.org/neon/forks/libquotient/-/commit/0f8335a32debc4c61d9fc9875c79c0ba6ba05357

Git commit bbc203f267961469251a3e04045b455480f4daa4 by GitHub (on behalf of Tobias Fella) on 29/05/2022 at 09:52..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/bbc203f267961469251a3e04045b455480f4daa4

Git commit afcad0615b26421e60b234dc8488b6ea1150d416 by Tobias Fella on 29/05/2022 at 10:13..
Fix CI
https://invent.kde.org/neon/forks/libquotient/-/commit/afcad0615b26421e60b234dc8488b6ea1150d416

Git commit 346c36768e145435a54ce0ba6138af916410cbea by GitHub (on behalf of Alexey Rusakov) on 29/05/2022 at 10:46..
Merge pull request #556 from quotient-im/kitsune/fixes

Cleanup and refactoring
https://invent.kde.org/neon/forks/libquotient/-/commit/346c36768e145435a54ce0ba6138af916410cbea

Git commit 283f95e429917bd0c7fb5982ceac1602eb2af0b9 by Tobias Fella on 29/05/2022 at 12:40..
Error handling
https://invent.kde.org/neon/forks/libquotient/-/commit/283f95e429917bd0c7fb5982ceac1602eb2af0b9

Git commit fc01bc08fafe82b254f7562b55209c872297fac6 by Alexey Rusakov on 29/05/2022 at 13:07..
Refresh and organise run-tests.sh/adjust-config.sh

run-tests.sh now uses the latest version of Synapse and has less
repetitive code; adjust-config.sh moved to autotests/ (it had nothing
specific to CI, after all), works with the newest Synapse (that has
an additional enable_registration_without_verification safeguard) and
no more depends on the config directory being called "data" but rather
should be called from inside that directory (for the case when it is
used separately from run-tests.sh and the config directory is not
called "data").
https://invent.kde.org/neon/forks/libquotient/-/commit/fc01bc08fafe82b254f7562b55209c872297fac6

Git commit 886dda59307672f88c38a8555e9bfe67535d953f by Alexey Rusakov on 29/05/2022 at 18:07..
TestOlmAccount: fix tests

Mainly the change is about eliminating the checks for an exact number
of key-value pairs inside `one_time_key_counts` - these checks started
failing with new Synapse throwing `signed_curve25519: 0` into this dict.
https://invent.kde.org/neon/forks/libquotient/-/commit/886dda59307672f88c38a8555e9bfe67535d953f

Git commit 01d0e0b68079e9b82f3d2640613b3f45b95dc71e by GitHub (on behalf of Alexey Rusakov) on 29/05/2022 at 20:03..
Merge #557: Refresh and organise run-tests.sh/adjust-config.sh
https://invent.kde.org/neon/forks/libquotient/-/commit/01d0e0b68079e9b82f3d2640613b3f45b95dc71e

Git commit 9c436d314f6b082287fb129ea1fcf960313e5c27 by Tobias Fella on 29/05/2022 at 20:21..
Also reemit resolveError
https://invent.kde.org/neon/forks/libquotient/-/commit/9c436d314f6b082287fb129ea1fcf960313e5c27

Git commit 8a868988be0c5ce4ea8a22f4a6f8c7e8b2e42037 by Alexey Rusakov on 30/05/2022 at 06:49..
run-tests.sh: fix weird CI failure on Linux/Clang

Also fix a leftover data/ prefix in adjust-config.sh
https://invent.kde.org/neon/forks/libquotient/-/commit/8a868988be0c5ce4ea8a22f4a6f8c7e8b2e42037

Git commit e31d1bfcc9255f2e6ad4dbd54bd49429939e8e78 by GitHub (on behalf of Alexey Rusakov) on 30/05/2022 at 09:30..
Merge pull request #555 from TobiasFella/accountskeychain

Load and store accounts in the keychain
https://invent.kde.org/neon/forks/libquotient/-/commit/e31d1bfcc9255f2e6ad4dbd54bd49429939e8e78

Git commit 999ec716d5e2b03aceb562e730edf3939eb2578a by Alexey Rusakov on 30/05/2022 at 13:23..
Emit loggedOut() after the access token is gone

...not before.
https://invent.kde.org/neon/forks/libquotient/-/commit/999ec716d5e2b03aceb562e730edf3939eb2578a

Git commit 078f5aab2e1eb1dea30828429069836509551b07 by Alexey Rusakov on 30/05/2022 at 13:24..
Cleanup and reformatting
https://invent.kde.org/neon/forks/libquotient/-/commit/078f5aab2e1eb1dea30828429069836509551b07

Git commit 6e27a49fbbc58a7310753f882fe372ddb0f63e33 by Alexey Rusakov on 30/05/2022 at 15:41..
CI: Build with QtKeychain 0.13.2

QtKeychain master suffers from
https://github.com/frankosterfeld/qtkeychain/issues/213.
https://invent.kde.org/neon/forks/libquotient/-/commit/6e27a49fbbc58a7310753f882fe372ddb0f63e33

Git commit 05067556a295dc5e01a97a54c625a1776611c8dd by Tobias Fella on 30/05/2022 at 22:08..
Save connection state when destructing accountregistry
https://invent.kde.org/neon/forks/libquotient/-/commit/05067556a295dc5e01a97a54c625a1776611c8dd

Git commit a7c43995c3a47bbbac8d862f69f9229eb39f4ed6 by Alexey Rusakov on 31/05/2022 at 11:52..
AccountRegistry: fix dropping an inexistent Connection

On Debug builds this would lead to an assertion failure inside Qt.
https://invent.kde.org/neon/forks/libquotient/-/commit/a7c43995c3a47bbbac8d862f69f9229eb39f4ed6

Git commit 49b0d191ab8917c61b28da3cfeaf1d28c143d5c8 by GitHub (on behalf of Alexey Rusakov) on 31/05/2022 at 14:22..
#558: Save connection state when destructing accountregistry
https://invent.kde.org/neon/forks/libquotient/-/commit/49b0d191ab8917c61b28da3cfeaf1d28c143d5c8

Git commit 3c6ca3c89d7b1a972d50ec4eb0b42ab350771f72 by Alexey Rusakov on 31/05/2022 at 15:37..
Update gtad.yml to match v3 API definitions

Also: use quotient-im/matrix-spec main branch again, now that it has
adjusted definitions; drop un(der)used partials
https://invent.kde.org/neon/forks/libquotient/-/commit/3c6ca3c89d7b1a972d50ec4eb0b42ab350771f72

Git commit fed831820965ad5654317d5e7df18c23fa75de20 by Alexey Rusakov on 31/05/2022 at 15:37..
gtad.yaml (again): shortcut OneTimeKeys

This requires OneTimeKeys in keys.yaml to be marked as such (done in
quotient-im/matrix-spec but it's not there in matrix-org/matrix-spec).
https://invent.kde.org/neon/forks/libquotient/-/commit/fed831820965ad5654317d5e7df18c23fa75de20

Git commit 42811660094c88a4a1bfa8bd8ace5f4b148c246a by Alexey Rusakov on 31/05/2022 at 16:25..
Regenerate API files (FTBFS; see the next commit)
https://invent.kde.org/neon/forks/libquotient/-/commit/42811660094c88a4a1bfa8bd8ace5f4b148c246a

Git commit 21ae4eca4c06e500ec04a52ad42772bf8e8e9b6f by Alexey Rusakov on 31/05/2022 at 16:58..
Tweak QOlmAccount and data structures around

This is mainly to plug the definition of a string-to-variant map
for one-time keys (see
https://spec.matrix.org/v1.2/client-server-api/#key-algorithms) into
the CS API generated code (see the "shortcut OneTimeKeys" commit for
gtad.yaml); but along with it came considerable streamlining of code
in qolmaccount.cpp. Using std::variant to store that map also warranted
converters.h to gain support for that type (even wider than toJson()
that is already in dev - a non-trivial merge from dev is in order).
https://invent.kde.org/neon/forks/libquotient/-/commit/21ae4eca4c06e500ec04a52ad42772bf8e8e9b6f

Git commit 945b1ab33c92b7b13e2c6b6ebc1f56c5caee0f79 by Alexey Rusakov on 31/05/2022 at 17:07..
Fix Room::getPreviousContent() to match new CS API

There was a fairly nasty change where `from` parameter in /messages
became optional and that led to two QString parameters (`from` and `dir)
switching positions. Because they have the same type, the problem only
shows at runtime. This commit fixes Room::getPreviousContent() to pass
the parameters at right positions; client code won't feel anything
(unless it uses GetRoomEventsJob directly).
https://invent.kde.org/neon/forks/libquotient/-/commit/945b1ab33c92b7b13e2c6b6ebc1f56c5caee0f79

Git commit ec75d2d0e9601dcf32387120ca67135ac7e7f472 by Alexey Rusakov on 31/05/2022 at 17:16..
Merge branch 'dev' into update-api-update
https://invent.kde.org/neon/forks/libquotient/-/commit/ec75d2d0e9601dcf32387120ca67135ac7e7f472

Git commit fe66480d4f6d96444ca090df2ae04dc7da033ea4 by Tobias Fella on 31/05/2022 at 17:51..
Remove accounts from accountsLoading when they're no longer loading
https://invent.kde.org/neon/forks/libquotient/-/commit/fe66480d4f6d96444ca090df2ae04dc7da033ea4

Git commit cd442611b19ec4a438d0847bf09b7bca99b494d3 by Alexey Rusakov on 01/06/2022 at 06:05..
Fix FTBFS after the merge
https://invent.kde.org/neon/forks/libquotient/-/commit/cd442611b19ec4a438d0847bf09b7bca99b494d3

Git commit 6c735f9f55b936e9de1497c2f5896f0a018d4227 by GitHub (on behalf of Alexey Rusakov) on 01/06/2022 at 08:08..
#554: Fix update-api jobs
https://invent.kde.org/neon/forks/libquotient/-/commit/6c735f9f55b936e9de1497c2f5896f0a018d4227

Git commit 2142d4fef9eb3174c1ead5312548391178d0872e by GitHub (on behalf of Alexey Rusakov) on 01/06/2022 at 16:33..
Merge pull request #559 from TobiasFella/removeaccountsloading
https://invent.kde.org/neon/forks/libquotient/-/commit/2142d4fef9eb3174c1ead5312548391178d0872e

Git commit 46ed9cc3336231d418449046ff5486b7abc9c925 by Tobias Fella on 01/06/2022 at 21:32..
Immediately create a new megolm session when user leaves instead of
deferring until sending event
https://invent.kde.org/neon/forks/libquotient/-/commit/46ed9cc3336231d418449046ff5486b7abc9c925

Git commit 90ee70312e5387a289bc12b4e37c48844906bc35 by GitHub (on behalf of Alexey Rusakov) on 02/06/2022 at 07:30..
Merge pull request #560 from TobiasFella/createnewsessionwhenuserleaves
https://invent.kde.org/neon/forks/libquotient/-/commit/90ee70312e5387a289bc12b4e37c48844906bc35

Git commit 2ecc08357fab7d22947b9cb5251d2f29be2ec55b by Alexey Rusakov on 04/06/2022 at 20:35..
Address Sonar warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/2ecc08357fab7d22947b9cb5251d2f29be2ec55b

Git commit de3a446b7b005ac57edb422eced7eec252ed3a92 by Alexey Rusakov on 06/06/2022 at 12:22..
GTAD: inline public_rooms_chunk.yaml

Also: drop inlining PublicRoomResponse by the name because it's already
inlined by $ref before that. This configuration needs the latest GTAD
(revision 51c53ed3) to work correctly; earlier GTAD will produce FTBFS
code.
https://invent.kde.org/neon/forks/libquotient/-/commit/de3a446b7b005ac57edb422eced7eec252ed3a92

Git commit c9a2c38b5645de22315aac35c78a40127b5d2fe9 by Alexey Rusakov on 06/06/2022 at 12:22..
Regenerate API files

This only updates 3 files affected by the change in the previous commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/c9a2c38b5645de22315aac35c78a40127b5d2fe9

Git commit f10259aa3b5051e4b36b4e0fd2f2d0db06fb7c20 by Alexey Rusakov on 07/06/2022 at 13:21..
Add GTAD as a submodule

Code generation in libQuotient is pretty sensitive to GTAD version
(or even a particular commit at times); so it makes sense to have GTAD
as a submodule in order to control the revision CI uses.

(amended with the GTAD commit that uses the right yaml-cpp commit)
https://invent.kde.org/neon/forks/libquotient/-/commit/f10259aa3b5051e4b36b4e0fd2f2d0db06fb7c20

Git commit a2ba9119c6b20d227f75e9a3427df06b4923ee89 by Alexey Rusakov on 07/06/2022 at 13:21..
CI: use GTAD submodule

Also: make all cloning for update-api shallow, for optimisation.
https://invent.kde.org/neon/forks/libquotient/-/commit/a2ba9119c6b20d227f75e9a3427df06b4923ee89

Git commit c566c94cc8db0401c30e6e047110d514bae1fa36 by GitHub (on behalf of Alexey Rusakov) on 07/06/2022 at 20:53..
Merge pull request #561 from quotient-im/kitsune/gtad-submodule

Add GTAD as a submodule
https://invent.kde.org/neon/forks/libquotient/-/commit/c566c94cc8db0401c30e6e047110d514bae1fa36

Git commit d547e84c9335d9524ae7530be622d5ed2f0b1fb8 by Alexey Rusakov on 08/06/2022 at 12:10..
Save connection state while QCoreApplication is still there

This reimplements #558 in a more reliable way. Deconstruction of
AccountRegistry may (or may not, yay for static initialisation) occur
after deconstruction of QCoreApplication, in which case an attempt
to determine the directory for the state fails because it depends on
the application object existence.
https://invent.kde.org/neon/forks/libquotient/-/commit/d547e84c9335d9524ae7530be622d5ed2f0b1fb8

Git commit 40311ec08a88de821884197bc60f1b48748cbbb3 by Alexey Rusakov on 11/06/2022 at 15:01..
gtad.yaml: more clarifying comments
https://invent.kde.org/neon/forks/libquotient/-/commit/40311ec08a88de821884197bc60f1b48748cbbb3

Git commit c11dc723e8b5170e6fd3750cffe5990f13772cdd by Alexey Rusakov on 11/06/2022 at 15:01..
gtad: update submodule
https://invent.kde.org/neon/forks/libquotient/-/commit/c11dc723e8b5170e6fd3750cffe5990f13772cdd

Git commit f16e4d4e3e293a646569cb765a22607e4fd69756 by Alexey Rusakov on 11/06/2022 at 15:01..
Regenerate API files

The latest GTAD no more emits public_rooms_chunk.h
(public_rooms_response.h already has the same definition), and skips on
PublicRoomsResponse structure that is never used.
https://invent.kde.org/neon/forks/libquotient/-/commit/f16e4d4e3e293a646569cb765a22607e4fd69756

Git commit 743909a728e22f52f7531b0f98395f0361cd0fd3 by Alexey Rusakov on 11/06/2022 at 17:42..
gtad.yaml: Treat child rooms state as events
https://invent.kde.org/neon/forks/libquotient/-/commit/743909a728e22f52f7531b0f98395f0361cd0fd3

Git commit 130c3ee975fe5312e97080cd978c0807b2611a68 by Alexey Rusakov on 11/06/2022 at 19:33..
gtad.yaml: Drop deprecated home_server field from login/register
https://invent.kde.org/neon/forks/libquotient/-/commit/130c3ee975fe5312e97080cd978c0807b2611a68

Git commit 3a2e7f19c97289fb962b1c0ba4439870bbd0f31d by Alexey Rusakov on 11/06/2022 at 19:33..
gtad: update submodule (again)
https://invent.kde.org/neon/forks/libquotient/-/commit/3a2e7f19c97289fb962b1c0ba4439870bbd0f31d

Git commit ed05d9d589fe3d36bd3714e648016352179afbef by Alexey Rusakov on 11/06/2022 at 19:33..
Regenerate API files using latest matrix-spec

New:
- refresh tokens support (changes in login.* and registration.*;
  RefreshJob);
- GetRelatingEvents[WithRelType[AndEventType]]Job

Changed space_hierarchy.*:
- childrenState is of type StateEvents now; limit and maxDepth are
  (omittable) integers, not doubles.
- no more unused `stripped_state.h` file inclusion.
https://invent.kde.org/neon/forks/libquotient/-/commit/ed05d9d589fe3d36bd3714e648016352179afbef

Git commit 9e594bd1d49dc0e1fdb8b74cef11fe3bfa3fdc1e by Alexey Rusakov on 12/06/2022 at 08:32..
CI: No more allow failure of update-api jobs
https://invent.kde.org/neon/forks/libquotient/-/commit/9e594bd1d49dc0e1fdb8b74cef11fe3bfa3fdc1e

Git commit 153981c0c3b8bfe82b4c5b773ae6f361afce14ed by Alexey Rusakov on 12/06/2022 at 10:51..
Require CMake 3.16; extend C++20 to headers

...meaning, clients have to compile in C++20 mode too from now.
https://invent.kde.org/neon/forks/libquotient/-/commit/153981c0c3b8bfe82b4c5b773ae6f361afce14ed

Git commit 7d4b46e6daf656a1e97426cb1f2f8c99c68c4dda by Alexey Rusakov on 12/06/2022 at 12:16..
Reduce the number of CI jobs

It takes well over an hour to build the whole lineup for now; while
the single right fix for that is making quotest capable of running in
parallel, a few GCC jobs can be safely dropped for now (and we'll see
if they should be brought back when parallel quotest unleashes the CI).
https://invent.kde.org/neon/forks/libquotient/-/commit/7d4b46e6daf656a1e97426cb1f2f8c99c68c4dda

Git commit a831d6f9cd55e33061e748b29cf256ba84ece20d by Alexey Rusakov on 12/06/2022 at 13:04..
Merge branch 'kitsune/more-gtad-fixes' into dev
https://invent.kde.org/neon/forks/libquotient/-/commit/a831d6f9cd55e33061e748b29cf256ba84ece20d

Git commit 9ba97217e2ee6378cc7cf338828d093b81e6b8f4 by Alexey Rusakov on 13/06/2022 at 18:51..
Refresh documentation

CONTRIBUTING.md got bitrotten in quite a few places.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/9ba97217e2ee6378cc7cf338828d093b81e6b8f4

Git commit fcf0153d8304700733ea8e74f5ed3125c2a959e1 by Alexey Rusakov on 14/06/2022 at 05:17..
Add .clang-tidy file

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/fcf0153d8304700733ea8e74f5ed3125c2a959e1

Git commit cc69883ef7219ec42cb7bdb2e3d66256c17a6532 by Alexey Rusakov on 14/06/2022 at 08:22..
Stop using LGTM.com

Its platform has been lagging behind most of the time; but more
importantly, the value from its analysis is almost non-existent, with
just one considerable issue being identified over the recent year if not
more. These days we have clang-tidy and Sonar that are much better at
static code analysis.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/cc69883ef7219ec42cb7bdb2e3d66256c17a6532

Git commit a4f0071395939a93bcb3afd72085415a25216701 by Alexey Rusakov on 14/06/2022 at 09:33..
CI: bump used versions for GitHub Actions

Also, use MSVC 2019 on Windows.
https://invent.kde.org/neon/forks/libquotient/-/commit/a4f0071395939a93bcb3afd72085415a25216701

Git commit b55c110ecbca5ad41ac9ccb5647836709ac8f4a8 by Alexey Rusakov on 14/06/2022 at 09:40..
CI: Switch to Qt 5.15 and introduce Qt 6 options

Qt 6 builds are allowed to fail for now.
https://invent.kde.org/neon/forks/libquotient/-/commit/b55c110ecbca5ad41ac9ccb5647836709ac8f4a8

Git commit da5156f5e2da08123549b554d9eafcf366fa4e11 by Alexey Rusakov on 15/06/2022 at 15:33..
Rearrange CI jobs to spend time more efficiently

- CodeQL analysis was executed on every job that ran Clang, humping
  the total execution time by 10+ minutes alone. Now it only runs on
  a single job.
- libolm is no more compiled but installed from the repo, along with
  libssl-dev; and both are installed in the same transaction as ninja
  and valgrind, shaving out one apt transaction
- One more Windows job has been added to test building with Qt 6.3.1
  on that OS.
- Qt version is pushed earlier in the job matrix, as it becomes more
  significant than the compiler for a given platform.
https://invent.kde.org/neon/forks/libquotient/-/commit/da5156f5e2da08123549b554d9eafcf366fa4e11

Git commit f779b235ddac990d17a9a8d8dd222b9e0e7abd49 by Alexey Rusakov on 17/06/2022 at 08:38..
Make Connection::sendToDevices() an actual slot

Although Qt 5 didn't complain about that, you could never really use
sendToDevices() in its slot (or even invocable) capacity because
Qt's meta-type system could not handle move-only UsersToDevicesToEvents.
Qt 6 is more stringent; the build fails at trying to instantiate
QMetaType for that type (with a rather unhelpful error message thrown
by Clang, and more helpful but very verbose diagnostic from MSVC)
because it does not provide a copy constructor.

However, sendToDevice doesn't really need to have full-blown events
in that parameter; just the content of the event is equally fine.
This commit does exactly that: replaces UsersToDevicesToEvents with
UsersToDevicesToContent that contains QJsonObject's instead of
EventPtr's. The code around is updated accordingly.

Also: factor out the key event JSON creation from
makeMessageEventForSessionKey() because it's the same JSON for each
target device; the function therefore is called encryptSessionKeyEvent()
now.
https://invent.kde.org/neon/forks/libquotient/-/commit/f779b235ddac990d17a9a8d8dd222b9e0e7abd49

Git commit 2504e6e5f216e34fc9aabfda0c462b1b37620a5e by Alexey Rusakov on 17/06/2022 at 08:41..
Further fix building with Qt 6

Also: build with Qt 6 first, so that it fails sooner.
https://invent.kde.org/neon/forks/libquotient/-/commit/2504e6e5f216e34fc9aabfda0c462b1b37620a5e

Git commit 3581b9d03fe2f169909b3977606abd3b459c0529 by Alexey Rusakov on 17/06/2022 at 08:41..
CMakeLists and elsewhere: require Qt 5.15
https://invent.kde.org/neon/forks/libquotient/-/commit/3581b9d03fe2f169909b3977606abd3b459c0529

Git commit 621dfbf39f9d08be5a24070d9e222e4c3e522728 by GitHub (on behalf of Alexey Rusakov) on 17/06/2022 at 13:28..
Merge #562: Build with Qt 5.15 and Qt 6
https://invent.kde.org/neon/forks/libquotient/-/commit/621dfbf39f9d08be5a24070d9e222e4c3e522728

Git commit 56575aaed81e1d55e41f577d7b6683702e4c0384 by Alexey Rusakov on 18/06/2022 at 17:36..
Replace LGTM badge with GHA/Sonar

Also: add a Matrix chat badge.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/56575aaed81e1d55e41f577d7b6683702e4c0384

Git commit 10867950474a360426685ad888237a5542b0cfac by Alexey Rusakov on 18/06/2022 at 17:36..
operation.cpp.mustache: streamline RequestData construction

That `std::move(_data)` never worked because the passed object is
a precursor to RequestData, and RequestData always takes things by
const-ref or by value, never by rvalue. Also, explicit mention of
RequestData is unnecessary, as its constructors are implicit by design.
https://invent.kde.org/neon/forks/libquotient/-/commit/10867950474a360426685ad888237a5542b0cfac

Git commit 2dd85770cbfd6d9c7506757f25765c05ef74987d by Alexey Rusakov on 18/06/2022 at 17:36..
Regenerate API files upon the previous commit
https://invent.kde.org/neon/forks/libquotient/-/commit/2dd85770cbfd6d9c7506757f25765c05ef74987d

Git commit 6b355d1aa87072143e09ea5269e8cf465318a64f by Alexey Rusakov on 18/06/2022 at 19:26..
Drop pre-Qt 5.15 code
https://invent.kde.org/neon/forks/libquotient/-/commit/6b355d1aa87072143e09ea5269e8cf465318a64f

Git commit 5a63f8a18645d612decdcc853335df0682c41d03 by Alexey Rusakov on 18/06/2022 at 19:29..
Drop make_array(); use std::to_array() where needed

make_array() has been introduced to cover for shortcomings on macOS and
Windows. These shortcomings are no more there, so we can just use the
standardrlibrary.
https://invent.kde.org/neon/forks/libquotient/-/commit/5a63f8a18645d612decdcc853335df0682c41d03

Git commit 7ef84728ab3744192583eb587a4585c576f5a176 by Alexey Rusakov on 18/06/2022 at 19:39..
Move C++-only macros to util.h

This pertains to QUO_IMPLICIT and DECL_DEPRECATED_ENUMERATOR - both can
be used with no connection to Qt meta-type system (which is what
quotient_common.h is for).
https://invent.kde.org/neon/forks/libquotient/-/commit/7ef84728ab3744192583eb587a4585c576f5a176

Git commit 42f2d07fcb9f31b4e280a025472a6e810f36fb23 by Alexey Rusakov on 18/06/2022 at 20:51..
CI: switch to macos-11 image
https://invent.kde.org/neon/forks/libquotient/-/commit/42f2d07fcb9f31b4e280a025472a6e810f36fb23

Git commit 19e0251f02d547028583c2ebe9207885ff087dc4 by Alexey Rusakov on 19/06/2022 at 21:13..
CI: fix macos-10.15 leftover
https://invent.kde.org/neon/forks/libquotient/-/commit/19e0251f02d547028583c2ebe9207885ff087dc4

Git commit 7c1125cdd146227320aa7eb082225c4051ea0563 by Alexey Rusakov on 19/06/2022 at 21:13..
Add a missing #include
https://invent.kde.org/neon/forks/libquotient/-/commit/7c1125cdd146227320aa7eb082225c4051ea0563

Git commit 23672cbb025814f2d8d6960f72ab602ef7a55b41 by Alexey Rusakov on 21/06/2022 at 15:56..
room.cpp: replace two signal connections with one
https://invent.kde.org/neon/forks/libquotient/-/commit/23672cbb025814f2d8d6960f72ab602ef7a55b41

Git commit 34ff85b715b377c4b2a8e30b1af8327aa7928e36 by Alexey Rusakov on 21/06/2022 at 15:57..
Move out Overloads to util.h

...instead of tucking the template in filesourceinfo.cpp where it surely
will be forgotten.
https://invent.kde.org/neon/forks/libquotient/-/commit/34ff85b715b377c4b2a8e30b1af8327aa7928e36

Git commit 3e4aa28596e0020c0b1c49f077e53339762dced3 by Alexey Rusakov on 21/06/2022 at 15:57..
.clang-tidy: drop some dubious noisy warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/3e4aa28596e0020c0b1c49f077e53339762dced3

Git commit 5d29c23eb82d440163afffe3fd8f7f600149fd64 by Alexey Rusakov on 21/06/2022 at 16:05..
CMakeLists: suppress subobject-linkage warnings

GCC (even 12.x) doesn't like when a template parameter is of
a pointer/reference type and dumps this warning. See also:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90670
https://invent.kde.org/neon/forks/libquotient/-/commit/5d29c23eb82d440163afffe3fd8f7f600149fd64

Git commit 1fa81ac5dc9259b7368e0487e0424c76bc87053e by Alexey Rusakov on 21/06/2022 at 16:35..
Fix a few clang-tidy/GCC warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/1fa81ac5dc9259b7368e0487e0424c76bc87053e

Git commit b7f1c721fbe5cf7d56b041c0249b9d71600a24c4 by Alexey Rusakov on 22/06/2022 at 00:16..
More .clang-tidy tweaks
https://invent.kde.org/neon/forks/libquotient/-/commit/b7f1c721fbe5cf7d56b041c0249b9d71600a24c4

Git commit 04db5b6d853f3084660612c1d2db91d54ec63691 by Alexey Rusakov on 22/06/2022 at 00:16..
Use fixed width types for enums
https://invent.kde.org/neon/forks/libquotient/-/commit/04db5b6d853f3084660612c1d2db91d54ec63691

Git commit 610631675826bb572bff97ce7d16d07097f14e3f by Alexey Rusakov on 22/06/2022 at 12:03..
Clean up RequestData from Sonar warnings

Also: make ImplPtr more flexible.
https://invent.kde.org/neon/forks/libquotient/-/commit/610631675826bb572bff97ce7d16d07097f14e3f

Git commit 6a2cec476b72d44ecf1cd05e47724d325a46f246 by Alexey Rusakov on 22/06/2022 at 12:03..
Address a few more Sonar warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/6a2cec476b72d44ecf1cd05e47724d325a46f246

Git commit 6a7e4f883ec22ef26c1d10ba1544b0afd1a0f4d2 by Alexey Rusakov on 22/06/2022 at 18:44..
Streamline RoomPowerLevelsEvent backoffice code

Also: leave a link at the place in the spec with power level defaults
      to make it clear they are not invented out of thin air.
https://invent.kde.org/neon/forks/libquotient/-/commit/6a7e4f883ec22ef26c1d10ba1544b0afd1a0f4d2

Git commit 796d78dccef1a32e35f7d24feb83cd846c55e2d2 by Alexey Rusakov on 22/06/2022 at 18:44..
RoomSummary::merge(): explicitly cast between int and bool

Honestly, it was quite intuitive even without that, but in reality
there are implicit conversion under the wraps. This commit makes them
explicit, for clarity.
https://invent.kde.org/neon/forks/libquotient/-/commit/796d78dccef1a32e35f7d24feb83cd846c55e2d2

Git commit f853db5acc17f0ecd4ada65320fb2c846fc1b4d0 by Alexey Rusakov on 22/06/2022 at 19:24..
.clang-tidy: drop another rather useless warning

'performance-no-automatic-move' triggers on code where copy elision
normally takes place anyway. In fact, all cases it triggered on were
also subject to named return value optimisation (NRVO).

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/f853db5acc17f0ecd4ada65320fb2c846fc1b4d0

Git commit 5de8d0a4bc9744327703c1613fc5ac3f232f44a8 by Alexey Rusakov on 22/06/2022 at 19:36..
Fix signature verification

toJson(SignedOneTimeKey) incorrectly generated a "signatures" key
mapped to an empty object when no signatures were in the C++ value.

Also: fallback keys have an additional flag that also has to be taken
into account when verifying signatures.
https://invent.kde.org/neon/forks/libquotient/-/commit/5de8d0a4bc9744327703c1613fc5ac3f232f44a8

Git commit 7576f77799c3d446d3376b0801f218a86320480d by Alexey Rusakov on 23/06/2022 at 05:57..
Drop QUOTIENT_API where it's undue
https://invent.kde.org/neon/forks/libquotient/-/commit/7576f77799c3d446d3376b0801f218a86320480d

Git commit 19746de7426aeb67eb90e8c48448356691e270b0 by Alexey Rusakov on 23/06/2022 at 05:57..
Use QUO_CONTENT_GETTER

In keyverificationevent.*, this massively shortens repetitive getter
definitions; the remaining few non-trivial ones are moved to
keyverificationevent.h, dropping the respective .cpp file and therefore
the dedicated translation unit. In roomkeyevent.h, it's just shorter.
https://invent.kde.org/neon/forks/libquotient/-/commit/19746de7426aeb67eb90e8c48448356691e270b0

Git commit 143ac38aabab90b40fbe73b489b91fb159e66b6b by Alexey Rusakov on 23/06/2022 at 16:37..
Streamline Room::P::shouldRotateMegolmSession()

Now there's only 1 instead of 5 lookups of the same EncryptionEvent,
and the code is shorter.
https://invent.kde.org/neon/forks/libquotient/-/commit/143ac38aabab90b40fbe73b489b91fb159e66b6b

Git commit 9f7a65b04c246de4c27b205ece778ede1ad7df7e by Alexey Rusakov on 24/06/2022 at 07:18..
Fix copy-pasta in signed one-time key JSON dumper
https://invent.kde.org/neon/forks/libquotient/-/commit/9f7a65b04c246de4c27b205ece778ede1ad7df7e

Git commit 6ae41d68dcdb91e5ec4a3ea48a151daaa0765765 by Alexey Rusakov on 24/06/2022 at 13:10..
Rework SignedOneTimeKey as a QJsonObject wrapper

Since this object has to be verified against a signature it also carries
there's a rather specific procedure described in The Spec for that.
That procedure basically assumes handling the signed one-time key
object as a JSON object, not as a C++ object. And originally Quotient
E2EE code was exactly like that (obtaining the right QJsonObject from
the job result and handling it as specced) but then one enthusiastic
developer (me) decided it's better to use a proper C++ structure -
breaking the verification logic along the way. After a couple attempts
to fix it, here we are again: SignedOneTimeKey is a proper QJsonObject,
and even provides a method returning its JSON in the form prepared for
verification (according to the spec).
https://invent.kde.org/neon/forks/libquotient/-/commit/6ae41d68dcdb91e5ec4a3ea48a151daaa0765765

Git commit 7fdb1a8653863f580b2672faefc08fb372258df8 by Alexey Rusakov on 24/06/2022 at 13:56..
Code cleanup and reformatting
https://invent.kde.org/neon/forks/libquotient/-/commit/7fdb1a8653863f580b2672faefc08fb372258df8

Git commit 4d4d363b29ff4e471511ff454a58d7d8b88d215d by Alexey Rusakov on 24/06/2022 at 16:41..
Start using C++20's designated initializers
https://invent.kde.org/neon/forks/libquotient/-/commit/4d4d363b29ff4e471511ff454a58d7d8b88d215d

Git commit 63e4cce8cc32af9bd92ead9876a3642d7cbdfb31 by Alexey Rusakov on 24/06/2022 at 20:41..
Fix the just introduced Sonar warning

Too many parameters of the same type in a row.
https://invent.kde.org/neon/forks/libquotient/-/commit/63e4cce8cc32af9bd92ead9876a3642d7cbdfb31

Git commit 8580043a64941e1c1f132737e4b50280ac17812a by Alexey Rusakov on 24/06/2022 at 21:11..
Make EventContent::Base() move constructor noexcept
https://invent.kde.org/neon/forks/libquotient/-/commit/8580043a64941e1c1f132737e4b50280ac17812a

Git commit bc8e01df4286f5f8ff9103fbebad801f355db689 by Alexey Rusakov on 03/07/2022 at 20:55..
Shorten switchOnType, function_traits and connect*

...thanks to C++20 awesomeness. A notable change is that
wrap_in_function() (and respectively function_traits<>::function_type)
and fn_return_t alias are gone. The former are no more needed because
connectUntil/connectSingleShot no more use std::function. The latter
has been relatively underused and with the optimisation of switchOnType
hereby, could be completely replaced with std::invoke_result_t.

Rewriting connect* functions using constexpr and auto parameters made
the implementation 30% more compact and much easier to understand
(though still with a couple of - now thoroughly commented - tricky
places). Dropping std::function<> from it may also bring some (quite
modest, likely) performance benefits.
https://invent.kde.org/neon/forks/libquotient/-/commit/bc8e01df4286f5f8ff9103fbebad801f355db689

Git commit 64948b6840032b04ef00bfe207baa29dd445d141 by Alexey Rusakov on 07/07/2022 at 16:33..
Avoid std::derived_from and std::bind_front

Apple Clang doesn't have those yet.
https://invent.kde.org/neon/forks/libquotient/-/commit/64948b6840032b04ef00bfe207baa29dd445d141

Git commit 955e1314ebfd83d6f44d88547159e6492035681e by Alexey Rusakov on 08/07/2022 at 07:29..
CI: use GCC 11 and (therefore) ubuntu-22.04

GCC 10 ICE's[1] in qt_connection_util.h code; and ubuntu-20.04 doesn't
have GCC 11.

Also: patch a Qt 5.15 header when compiling with GCC because a
combination of Qt 5.15 and GCC 11 in turn triggers QTBUG-91909/90568...
Which in turn required moving Qt setup before the build environment
setup. Life's fun.

[1] Internal Compiler Error
https://invent.kde.org/neon/forks/libquotient/-/commit/955e1314ebfd83d6f44d88547159e6492035681e

Git commit 3f586005840e012a98e0f300a726b1cbda75e001 by Alexey Rusakov on 08/07/2022 at 07:29..
Adjust Synapse image for tests

:latest stopped working for some reason.
https://invent.kde.org/neon/forks/libquotient/-/commit/3f586005840e012a98e0f300a726b1cbda75e001

Git commit b5334cbfc18eddd599164fb255c2cabc6720d77c by Alexey Rusakov on 08/07/2022 at 15:42..
Merge remote-tracking branch 'origin/kitsune/c++20-galore' into dev
https://invent.kde.org/neon/forks/libquotient/-/commit/b5334cbfc18eddd599164fb255c2cabc6720d77c

Git commit 6e4810bfd6794b7fd03803a6de12b8f896cc4654 by Alexey Rusakov on 08/07/2022 at 15:43..
Use clang-format 12; update CONTRIBUTING.md wrt code formatting

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/6e4810bfd6794b7fd03803a6de12b8f896cc4654

Git commit a5e41aad196f0981f6f881a4f6e0a1c9f2d3e298 by Alexey Rusakov on 08/07/2022 at 18:03..
clang-format: don't break lines before lambda body

Aside from breaking that line, the previous line - with connect*() -
is often broken up too, making smaller lambdas consume much more
vertical space.
https://invent.kde.org/neon/forks/libquotient/-/commit/a5e41aad196f0981f6f881a4f6e0a1c9f2d3e298

Git commit 267219c955b938483c3d113e455c4abd96ef8ce6 by Alexey Rusakov on 08/07/2022 at 18:04..
qt_connection_util.h: use auto
https://invent.kde.org/neon/forks/libquotient/-/commit/267219c955b938483c3d113e455c4abd96ef8ce6

Git commit e2ea64c603b1e4b2184e363ee0d0a13fa0e286a0 by Alexey Rusakov on 11/07/2022 at 09:27..
Add QUOTIENT_API to RoomStateView

Fixing link errors at non-template RoomStateView::get() when building
with libQuotient as a shared object. There's also a test in quotest.cpp
now to cover that case.
https://invent.kde.org/neon/forks/libquotient/-/commit/e2ea64c603b1e4b2184e363ee0d0a13fa0e286a0

Git commit 982e2665d141a948a30d9092d588b35875fee7d6 by Alexey Rusakov on 11/07/2022 at 09:47..
Small .clang-format adjustments
https://invent.kde.org/neon/forks/libquotient/-/commit/982e2665d141a948a30d9092d588b35875fee7d6

Git commit 0d52a733176fb3cb21daad12cf0a44178553d48b by Alexey Rusakov on 11/07/2022 at 09:58..
Reuse Room::setState() overloads from one another
https://invent.kde.org/neon/forks/libquotient/-/commit/0d52a733176fb3cb21daad12cf0a44178553d48b

Git commit 2245a44aca8d51e331cf1211ff6e2b38c57e5246 by Alexey Rusakov on 12/07/2022 at 09:31..
Pack up StickerEvent in the header file

Dropping yet another translation unit.
https://invent.kde.org/neon/forks/libquotient/-/commit/2245a44aca8d51e331cf1211ff6e2b38c57e5246

Git commit 607489a2e6a3e3238eac0178f5c7bbc70f178f46 by Alexey Rusakov on 12/07/2022 at 09:52..
Fix deprecation messages

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/607489a2e6a3e3238eac0178f5c7bbc70f178f46

Git commit ab2d78de6a9d33e1470ae9db2ed6ed9565c817e5 by Alexey Rusakov on 12/07/2022 at 09:54..
fromJson()/toJson() refactoring

fromJson() is generalised to accept any JSON-like type while passing
QJsonObject to JsonConverter<>::load (instead of doLoad). This allows to
(still) rely on JsonConverter<> as a customisation point while providing
an opportunity to overload fromJson for custom types in a pointed way
(specifically, by providing the overload for
`fromJson(const QJsonObject&)`), instead of having to go with full-blown
JsonConverter<> specialisation. This will be used in a further commit
to simplify ReceiptEvent definition.

Using if constexpr in combination with constraints (`requires()`) -
the first such case in Quotient codebase - allowed to put the entire
logic in a single JsonConverter<>::load() body instead of having a
facility JsonExporter<> class for SFINAE.

Aside from that, fromJson<QJsonValue, QJsonValue> is entirely dropped
because it's not supposed to be used that way (it's no-op after all);
reflecting that, Event::unsignedPart() and Event::contentPart() no more
default to QJsonValue as the expected return type, you have to
explicitly provide the type instead (and as one can see from the changes
in the commit, it's actually better that way since it's better
to validate the value inside JSON - e.g. check QString or QJsonObject
for emptiness - than the QJsonValue envelope which may still wrap
an empty value).

toJson() is also generalised, replacing 3 functions with one that has
a constexpr if to discern between two kinds of types.
https://invent.kde.org/neon/forks/libquotient/-/commit/ab2d78de6a9d33e1470ae9db2ed6ed9565c817e5

Git commit 44aeb57e196bcd9e041c498a212f17b0dcd1244f by Alexey Rusakov on 12/07/2022 at 09:54..
Refactor things around EncryptionEvent[Content]

EncryptionEvent was marked as Q_GADGET only for the sake of defining
EncryptionType inside of it as Q_ENUM, with aliases also available under
Quotient:: and EncryptionEventContent. This is a legacy from
pre-Q_ENUM_NS times. However, event types are not really made to be
proper Q_GADGETs: Q_GADGET implies access by value or reference
but event types are uncopyable for the former and QML is ill-equipped
for the latter.

This commit moves EncryptionType definition to where other such
enumerations reside - on the namespace level in quotient_common.h; and
the other two places are now deprecated; and EncryptionEvent is no more
Q_GADGET.

With fromJson/toJson refactored in the previous commit there's no more
need to specialise JsonConverter<>: specialising fromJson() is just
enough.

Moving EncryptionType to quotient_common.h exposed the clash
of two Undefined enumerators (in RoomType and EncryptionType),
warranting both enumerations to become scoped (which they ought to be,
anyway). And while we're at it, the base type of enumerations is
specified explicitly, as MSVC apparently uses a signed base type (int?)
by default, unlike other compilers, and the upcoming enum converters
will assume an unsigned base type.

Finally, using fillFromJson() instead of fromJson() in
the EncryptionEventContent constructor allowed to make default values
explicit in the header file, rather than buried in the initialisation
code.
https://invent.kde.org/neon/forks/libquotient/-/commit/44aeb57e196bcd9e041c498a212f17b0dcd1244f

Git commit 9a65bde0fa438ee4ad101b58721b77182ae1ae70 by Alexey Rusakov on 12/07/2022 at 09:54..
Make AliasesEventContent a simple structure

JSON conversions are moved out of the class, obviating the need to
define the plain data constructor and gaining default-constructibility
along the way - previously the default constructor was preempted
by user-defined ones.
https://invent.kde.org/neon/forks/libquotient/-/commit/9a65bde0fa438ee4ad101b58721b77182ae1ae70

Git commit e7dee15531ad357bd33ac546fb1b9332a5c1260c by Alexey Rusakov on 12/07/2022 at 09:56..
converters.*: facilities to convert enums

This introduces enumTo/FromJsonString() and flagTo/FromJsonString(),
four facility functions to simplify conversion between C++ enums and
JSON, and refactors a couple of places where it's useful.
https://invent.kde.org/neon/forks/libquotient/-/commit/e7dee15531ad357bd33ac546fb1b9332a5c1260c

Git commit 73167a23212541ff6aeaeb901d7dfe636badc6e8 by Alexey Rusakov on 12/07/2022 at 12:56..
Merge branch 'kitsune/converters-upgrade' into dev
https://invent.kde.org/neon/forks/libquotient/-/commit/73167a23212541ff6aeaeb901d7dfe636badc6e8

Git commit e172699e9a20737c4abb9bd96609f48e65415961 by Alexey Rusakov on 13/07/2022 at 19:36..
eventcontent.h: Use C++17 nested namespaces notation
https://invent.kde.org/neon/forks/libquotient/-/commit/e172699e9a20737c4abb9bd96609f48e65415961

Git commit 767681c11ec6fecf9d35ba699db31ea2bdcd0702 by Alexey Rusakov on 15/07/2022 at 08:33..
Bring back documentation on PROFILE_LOG_USECS

I was about to decommission it but got to use it myself.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/767681c11ec6fecf9d35ba699db31ea2bdcd0702

Git commit 24a206f6429f6fa29b9aa1ce39b7e4694e39b046 by Alexey Rusakov on 15/07/2022 at 08:36..
operator<<(QDebug, QElapsedTimer): always use ms

That switch between micro- and milliseconds was pure visual sugaring,
in a potentially time-sensitive context.

Also: there's no sense in using const-ref for a small parameter in
a function that is, to top it off, almost always inlined.
https://invent.kde.org/neon/forks/libquotient/-/commit/24a206f6429f6fa29b9aa1ce39b7e4694e39b046

Git commit 78c1a2db7c42b7d2cd5a036a5ef19bb95c679b86 by Alexey Rusakov on 15/07/2022 at 12:31..
Connection::user(): validate after lookup, not before

If userMap only holds valid ids, there's no reason to spend time
validating the sought id: if it's invalid, it won't be found. And
lookups over a hash map are cheap.
https://invent.kde.org/neon/forks/libquotient/-/commit/78c1a2db7c42b7d2cd5a036a5ef19bb95c679b86

Git commit 2cc19e66c0bed3065cf7274dbc908bcb90b7502e by Alexey Rusakov on 16/07/2022 at 18:33..
logging.h: suppress clang-tidy warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/2cc19e66c0bed3065cf7274dbc908bcb90b7502e

Git commit cc8753612f2f45b18a9c924920395fb5f4c57078 by Alexey Rusakov on 16/07/2022 at 19:54..
Room::decryptIncomingEvents()

The result of factoring out duplicate code.
https://invent.kde.org/neon/forks/libquotient/-/commit/cc8753612f2f45b18a9c924920395fb5f4c57078

Git commit 4770d303b7141971fa9a25f85874e6bbe71776d9 by Alexey Rusakov on 16/07/2022 at 19:55..
Speed up read receipt updates

Profiling revealed 3 inefficiencies in read receipts code - and given
there are a lot of them coming, these inefficiences quickly add up.
Fixing them allows to slash read receipt processing time by 60%, and
the total time of updating a room by more than a half.

1. Room::lastReadEventChanged() is emitted per receipt. This can be
   taxing on initial syncs or in bigger rooms; this commit converts it
   to an aggregate signal only emitted once per sync room batch and
   carrying the list of all user ids (more on that below) with updated
   read receipts.

   For that, Room::P::setLastReadEvent() is split into
   Room::P::setLocalLastReadEvent() that is called whenever the local
   read receipt has to be updated, and setLastReadEvent() proper that is
   very fast and only updates the internal data structures, nothing else.
   setLocalLastEvent() calls it, as does processEphemeralEvents(); both
   take responsibility to emit lastReadEventChanged() depending on the
   outcome of setLastReadEvent() invocation(s).

2. Massively aggravating the above point, user id from each read receipt
   is turned to a User object - and since most of the users are unknown
   at early moments, this causes thousands of allocations. Therefore
   the new aggregated lastReadEventChanged() only carries user ids, and
   clients will have to resolve them to User objects if they need.

3. Despite fairly tight conditions (note we're talking about thousands
   of receipts), Quotient still creates an intermediate C++ structure
   (EventsWithReceipts), only for the sake of passing it to
   processEphemeralEvent() that immediately disassembles it back again,
   converting to a series of calls to set(Local)LastReadEvent(). To fix
   this, processEphemeralEvent() now takes the event content JSON
   directly and iterates over it instead.

Aside from that, a few extraneous conditions and logging has been
removed and the whole function rewritten with switchOnType() to reduce
cognitive complexity.
https://invent.kde.org/neon/forks/libquotient/-/commit/4770d303b7141971fa9a25f85874e6bbe71776d9

Git commit aac349a2b3fe643b55808586f461642ea15da8e5 by Alexey Rusakov on 25/07/2022 at 14:10..
Don't redact certain event types even though lib doesn't know them

Event type ids don't need a C++ type to be used, and clients might
define those types on their side (NeoChat does that, e.g.).
https://invent.kde.org/neon/forks/libquotient/-/commit/aac349a2b3fe643b55808586f461642ea15da8e5

Git commit c0ecba539aecebc7f3e32f40fc1d45d80d5e1f5c by Alexey Rusakov on 25/07/2022 at 14:10..
Fix accidentally logging all receipt authors

...instead of just the number of them.
https://invent.kde.org/neon/forks/libquotient/-/commit/c0ecba539aecebc7f3e32f40fc1d45d80d5e1f5c

Git commit a329538c617bad01ffd35a83a0b684f90993dd0d by Alexey Rusakov on 26/07/2022 at 12:28..
Add missing QUOTIENT_API pieces

The upcoming event type infrastructure finally helps to detect those
omissions more or less reliably (for event types only though).
https://invent.kde.org/neon/forks/libquotient/-/commit/a329538c617bad01ffd35a83a0b684f90993dd0d

Git commit d422b1fd87c48572ae1fc162ce239196e3254752 by Alexey Rusakov on 26/07/2022 at 14:56..
Hopefully fix building with GCC

The last commit broke it.
https://invent.kde.org/neon/forks/libquotient/-/commit/d422b1fd87c48572ae1fc162ce239196e3254752

Git commit 7754947d7f758ddcb31d4ff3ea79435fb1c171e9 by Alexey Rusakov on 26/07/2022 at 15:18..
Another fix attempt
https://invent.kde.org/neon/forks/libquotient/-/commit/7754947d7f758ddcb31d4ff3ea79435fb1c171e9

Git commit 36344a6e0283f924b72cb2b25001bdf212a7e707 by Alexey Rusakov on 26/07/2022 at 21:06..
...and the definitive fix
https://invent.kde.org/neon/forks/libquotient/-/commit/36344a6e0283f924b72cb2b25001bdf212a7e707

Git commit 953d5a9d03b2a3ca439a79775a0c212965d91c20 by Alexey Rusakov on 29/07/2022 at 15:51..
Moving eventCast()

In a situation where you have an EventPtr that you want to place
somewhere as an `event_ptr_tt<SomeMoreSpecificEventType>` you have to
carefully check that the stored event is actually of
SomeMoreSpecificType and if it is, release() that event pointer,
downcast, and re-wrap it into that new event_ptr_tt - or, as can be seen
from the diff here, re-loadEvent() from JSON, which is simpler but
inefficient. To help clients, and the library, eventCast() can now
accept an rvalue smart pointer and do all the necessary things with it.
https://invent.kde.org/neon/forks/libquotient/-/commit/953d5a9d03b2a3ca439a79775a0c212965d91c20

Git commit d4b8f54f764bec5758c8f672d4ab05d59e02c269 by Alexey Rusakov on 30/07/2022 at 05:37..
moving eventCast(): disallow passing nullptr

This is aligned with the non-moving version.
https://invent.kde.org/neon/forks/libquotient/-/commit/d4b8f54f764bec5758c8f672d4ab05d59e02c269

Git commit 150df8ce08976ac7b8c25dbed1b965b7c2f65249 by Alexey Rusakov on 01/08/2022 at 10:15..
Pull out common JsonConverter code to JsonObjectUnpacker
https://invent.kde.org/neon/forks/libquotient/-/commit/150df8ce08976ac7b8c25dbed1b965b7c2f65249

Git commit 88dcdd3ef0af4030a963b08bf8c5bff0784c320d by Alexey Rusakov on 01/08/2022 at 11:52..
Fix FTBFS
https://invent.kde.org/neon/forks/libquotient/-/commit/88dcdd3ef0af4030a963b08bf8c5bff0784c320d

Git commit dd7487070b6e1e8cf1097f8c78579ab19cf4892e by Alexey Rusakov on 01/08/2022 at 12:03..
EventItem: use doc-comments correctly

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/dd7487070b6e1e8cf1097f8c78579ab19cf4892e

Git commit 16fbc40f741594f44c84b29842f9287c7e2e0d5b by Alexey Rusakov on 04/08/2022 at 13:47..
.clang-format: fewer empty lines before access blocks in classes

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/16fbc40f741594f44c84b29842f9287c7e2e0d5b

Git commit deb6c1141af445de6f3f1fd5afc83ed2ac4def4b by Alexey Rusakov on 05/08/2022 at 10:34..
Fix Connection::accountData<>()

The template version has never worked, to the point where instantiating
it would immediately lead to FTBFS. The new version returns an event
pointer as a simpler fix that would make it usable - in particular,
there's no more need to have separate
Connection::Private::unpackAccountData(). To simplify the fix,
eventCast() has been made more tolerating - passing nullptr to it is
processed in an expected (no-op) way now.
https://invent.kde.org/neon/forks/libquotient/-/commit/deb6c1141af445de6f3f1fd5afc83ed2ac4def4b

Git commit 3214feeb031fa231c7c42c21c53410302966e32e by Alexey Rusakov on 05/08/2022 at 10:36..
eventloader.h: use basicJson() in a uniform way

There's no particular reason the order of parameters in
StateEventBase::basicJson() should be as it was, and (the only)
loadStateEvent() usage in room.cpp suggests the unified order is more
convenient. Besides, this order is aligned with that in
the StateEventBase constructor.
https://invent.kde.org/neon/forks/libquotient/-/commit/3214feeb031fa231c7c42c21c53410302966e32e

Git commit 740e7a8c9fb4140c5eccd35bf4c78925754736db by Tobias Fella on 10/08/2022 at 20:28..
Emit Room::newFileTransfer when downloading a file
https://invent.kde.org/neon/forks/libquotient/-/commit/740e7a8c9fb4140c5eccd35bf4c78925754736db

Git commit 6308bff3336ca7680eee54d9bd125f780fa9f033 by GitHub (on behalf of Alexey Rusakov) on 11/08/2022 at 05:33..
Merge #564: Emit Room::newFileTransfer when downloading a file
https://invent.kde.org/neon/forks/libquotient/-/commit/6308bff3336ca7680eee54d9bd125f780fa9f033

Git commit 82f4efb0227e7e22e831733fae3952818b063ac2 by Alexey Rusakov on 24/08/2022 at 07:41..
Merge branch 'dev' into device-verification

# Conflicts:
#	autotests/testfilecrypto.cpp
#	lib/connection.cpp
#	lib/connection.h
#	lib/database.cpp
#	lib/database.h
#	lib/e2ee/qolmoutboundsession.cpp
#	lib/e2ee/qolmoutboundsession.h
#	lib/eventitem.h
#	lib/events/encryptedevent.cpp
#	lib/events/encryptedevent.h
#	lib/events/encryptedfile.cpp
#	lib/events/encryptedfile.h
#	lib/events/keyverificationevent.cpp
#	lib/events/keyverificationevent.h
#	lib/events/roomkeyevent.h
#	lib/room.cpp
#	lib/room.h
https://invent.kde.org/neon/forks/libquotient/-/commit/82f4efb0227e7e22e831733fae3952818b063ac2

Git commit 1c94d1b41eb352b31b2dc915fea95e26f6138284 by Alexey Rusakov on 25/08/2022 at 17:48..
KeyVerificationSession: cleanup

- Use std::chrono for the timeout (it's more readable and
  less ambiguous) and make it a local variable
- Only pass a Connection object once to constructors
- Ensure buildability even without E2EE (key verification is disabled
  in that case)
- Reorder #includes
- Other cleanup following clang-tidy warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/1c94d1b41eb352b31b2dc915fea95e26f6138284

Git commit 2e1f179bf75da9705963be9305ab6db34afa4d6d by Alexey Rusakov on 25/08/2022 at 17:48..
Connection::Private::assembleEncryptedContent()

What was partially factored out before into encryptSessionKeyEvent()
is now the complete algorithm converting any event json into encrypted
content.
https://invent.kde.org/neon/forks/libquotient/-/commit/2e1f179bf75da9705963be9305ab6db34afa4d6d

Git commit 376da43a29f3ebad807da2761e7a0c0b105587ec by Alexey Rusakov on 25/08/2022 at 17:59..
More code reorganisation

- Common switchOnType() piece for key verification events is factored
  out into processIfVerificationEvent()
- Bare event JSON removed from KeyVerificationSession into constructors
  of respective events
- Connection::sendToDevice() uses assembleEncryptedContent() introduced
  in the previous commit
- commonSupportedMethods() moved out to .cpp; error/string converters
  made static
https://invent.kde.org/neon/forks/libquotient/-/commit/376da43a29f3ebad807da2761e7a0c0b105587ec

Git commit 6404b8cd4d57468b810538da04f8017fb13ccc37 by Alexey Rusakov on 25/08/2022 at 17:59..
Refactor the code handling emoji

- Use a dedicated structure, EmojiEntry, instead of QVariantMap
  (it's Q_GADGET, should be readable from QML just fine)
- While we're at it, QVector is better than QList in Qt 5.15
- Remove language from the session state - it's used in a single method
- Modernise handleKey() code
https://invent.kde.org/neon/forks/libquotient/-/commit/6404b8cd4d57468b810538da04f8017fb13ccc37

Git commit e89986123c1bc55ceccb28c417c33ecdca602512 by Alexey Rusakov on 25/08/2022 at 18:28..
.clang-format: put e2ee/ headers in their own section

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/e89986123c1bc55ceccb28c417c33ecdca602512

Git commit 4ad2f6e165a4eb486155eae652e187dc4d6b7d99 by Alexey Rusakov on 25/08/2022 at 18:28..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/4ad2f6e165a4eb486155eae652e187dc4d6b7d99

Git commit b257cf4e38d540a0063f06ebdb51dcd2574cc809 by GitHub (on behalf of Alexey Rusakov) on 26/08/2022 at 06:34..
Merge #547: Implement device verification
https://invent.kde.org/neon/forks/libquotient/-/commit/b257cf4e38d540a0063f06ebdb51dcd2574cc809

Git commit d1a4bbf693ad14f2ea0a308fef61db95161a17b7 by Tobias Fella on 26/08/2022 at 21:36..
Fix device verification

QByteArrays don't like interacting with QStrings
https://invent.kde.org/neon/forks/libquotient/-/commit/d1a4bbf693ad14f2ea0a308fef61db95161a17b7

Git commit d9449a48c7f80ed70b1760138a8de1c0c3638567 by GitHub (on behalf of Alexey Rusakov) on 01/09/2022 at 21:17..
Merge pull request #566 from quotient-im/verificationfix
https://invent.kde.org/neon/forks/libquotient/-/commit/d9449a48c7f80ed70b1760138a8de1c0c3638567

Git commit 5efbf75c8719407549e4bcfcf4c5329b37630990 by Alexey Rusakov on 03/09/2022 at 13:26..
KeyVerificationDoneEvent: fix copy-pasta in DEFINE_EVENT_TYPEID
https://invent.kde.org/neon/forks/libquotient/-/commit/5efbf75c8719407549e4bcfcf4c5329b37630990

Git commit 8cb629f406f5b8b1ff7ce787dd3967d5684e07c3 by Alexey Rusakov on 04/09/2022 at 16:41..
Fix a typo in cacheLocation() doc-comment

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/8cb629f406f5b8b1ff7ce787dd3967d5684e07c3

Git commit dbc78d185c4bafe03b458f9eeb7ef3af35ce2eb2 by Alexey Rusakov on 04/09/2022 at 16:42..
SingleKeyValue: allow seamless construction from the underlying type

SingleKeyValue is a tiny wrapper and supposed to be discreet.
Having to explicitly (even if only with braces) construct its objects
stands in the way of readability on the consuming side of the code and
sometimes prevents direct initialisation of event objects without
constructors getting some kind of ContentParamTs parameter pack where
a single content_type argument would suffice otherwise.
https://invent.kde.org/neon/forks/libquotient/-/commit/dbc78d185c4bafe03b458f9eeb7ef3af35ce2eb2

Git commit a26147582ce8cbd6a5206aee4b59de98c9dfe9b6 by Alexey Rusakov on 04/09/2022 at 16:42..
DEFINE_SIMPLE_EVENT: support custom JSON keys
https://invent.kde.org/neon/forks/libquotient/-/commit/a26147582ce8cbd6a5206aee4b59de98c9dfe9b6

Git commit a18f505fe7ca66556d66538a7c9b9ff31d2c1b29 by Alexey Rusakov on 04/09/2022 at 16:42..
EventMetaType, QUO_EVENT, QUO_BASE_EVENT

The new metatype framework replaces
EventFactory/DEFINE_EVENT_TYPEID/REGISTER_EVENT_TYPE; it is faster,
more functional and extensible. Of note:
- EventMetaType mostly reproduces the logic of EventFactory but supports
  custom base event types not just for loading (that part EventFactory
  also supported) but also for matching - previously you had to have
  Event::is*Event() for base type matching. Now Quotient::is() can
  match against both base and leaf types.
- Instead of DEFINE_EVENT_TYPEID and REGISTER_EVENT_TYPE there's now
  a single macro, QUO_EVENT, intended for use in the way similar to
  Q_OBJECT. Actually, the entire framework borrows heavily from
  QMetaObject and Q_OBJECT. Making event types full-fledged QObjects
  is still not considered because half of QObject functions would not
  be applicable (e.g. signals/slots) while another half (in particular,
  using Matrix type ids to select event types) would still have to be
  done on top of QObject. And QML can just access events as
  const QJsonObjects which is arguably more lightweight as well.
- QUO_BASE_EVENT is a new macro replacing EventFactory object
  definitions. This was necessary for the same reason why Q_OBJECT is
  a macro: aside from a static object definition, this macro
  introduces a virtual function override to resolve the metatype at
  runtime. This very mechanism is used to make event type
  matching/casting as quick as possible
- QUO_BASE_EVENT and QUO_EVENT use the C++20 __VA_OPT__ feature that
  is only available with the new MSVC preprocessor (see
  https://docs.microsoft.com/en-us/cpp/preprocessor/preprocessor-experimental-overview);
  the respective switch was added to CMakeLists.txt.
https://invent.kde.org/neon/forks/libquotient/-/commit/a18f505fe7ca66556d66538a7c9b9ff31d2c1b29

Git commit 17cd3beaefa5501a902e08c7644e8cd97c9091a0 by Alexey Rusakov on 04/09/2022 at 16:42..
Streamline event types

This commit introduces a few things to further reduce the boilerplate
across event type definitions:
- Event type is no more separately stored in Event and therefore no more
  passed to base event constructors. Until the previous commit, it was
  used by is() to quickly match the event type; with the new event
  metatype class, the same is achieved even quicker by comparing
  metatype pointers.
- EventTemplate is a generalisation of StateEvent for all event types
  providing common constructor signatures and content() for (most) leaf
  event types. StateEvent therefore has become a partial specialisation
  of EventTemplate for types derived from StateEventBase; as the known
  client code base does not use it directly, a compatibility alias is
  not provided. Also, DEFINE_SIMPLE_EVENT now expands into a class
  deriving from EventTemplate.
- On top of StateEvent->EventTemplate specialisation,
  KeyedStateEventBase and KeylessStateEventBase types are introduced
  with appropriate constructor signatures (with or without state_key,
  respectively) to allow `using` of them from derived event types.
  To facilitate writing of constraints, concepts for keyed and keyless
  state event types are also introduced; RoomStateView, e.g., makes use
  of those to provide appropriate method signatures.
- typeId(), unknownEventTypeId(), UnknownEventTypeId are no more
  provided - they weren't used throughout the known code base
  (Quaternion, NeoChat), and the concept of "unknown event types" is
  hereby eliminated entirely.
- RoomKeyEvent no more accepts senderId as a parameter; it has never
  been a good practice as the sender is assigned by Connection anyway.
https://invent.kde.org/neon/forks/libquotient/-/commit/17cd3beaefa5501a902e08c7644e8cd97c9091a0

Git commit 896f46d4cf08ab05611b72edeb6c4d70e597342f by Alexey Rusakov on 04/09/2022 at 16:42..
GTAD: Stop using eventloader.h in generated files
https://invent.kde.org/neon/forks/libquotient/-/commit/896f46d4cf08ab05611b72edeb6c4d70e597342f

Git commit d5eef705b2b5d9dec17d72ab27cbdd48a1391485 by Alexey Rusakov on 04/09/2022 at 16:42..
Regenerate CS API upon GTAD config change
https://invent.kde.org/neon/forks/libquotient/-/commit/d5eef705b2b5d9dec17d72ab27cbdd48a1391485

Git commit 3fa9afc796788e0c7f44db15c21a5ba1294d3b2d by Alexey Rusakov on 04/09/2022 at 16:42..
Remove #include "logging.h" from event.h

We don't expose logging internals to the outside world.
https://invent.kde.org/neon/forks/libquotient/-/commit/3fa9afc796788e0c7f44db15c21a5ba1294d3b2d

Git commit 80499cc7619bb857c284e6e89db728ccee9c61f6 by Alexey Rusakov on 04/09/2022 at 16:42..
More cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/80499cc7619bb857c284e6e89db728ccee9c61f6

Git commit fc6321d53f7743f7629841d02c6e28e1a3ab3f83 by Alexey Rusakov on 04/09/2022 at 16:42..
RoomStateView::content()

This gives a more conventional API compared to queryOr() that can be
used for event objects that have content() defined - with the downside
being that content() unpacks the entire object instead of retrieving
one particular piece (but for state events and single key-value content
it's not a problem, and those make for the vast majority of events).
https://invent.kde.org/neon/forks/libquotient/-/commit/fc6321d53f7743f7629841d02c6e28e1a3ab3f83

Git commit 8e58d28ca0517aeeb43c99bd97ec9ba5ada11c95 by Alexey Rusakov on 04/09/2022 at 16:42..
CallEventBase -> CallEvent; pack up all call events

These are small enough to comfortably reside in a single translation
unit.
https://invent.kde.org/neon/forks/libquotient/-/commit/8e58d28ca0517aeeb43c99bd97ec9ba5ada11c95

Git commit 575534e7cca310c6d6195ab16d482bf9dfba755e by Alexey Rusakov on 04/09/2022 at 16:42..
Disallow direct events construction from JSON

Direct construction (using makeEvent() or explicitly constructing
an event) from JSON may create an event that has a type conflicting
with that stored in JSON. There's no such problem with loadEvent(),
even though it's considerably slower. Driven by the fact that almost
nowhere in the code direct construction is used on checked JSON
(one test is the only valid case), this commit moves all JSON-loading
constructors to the protected section, thereby disabling usage of
makeEvent() in JSON-loading capacity, and switches such cases across
the library to loadEvent().
https://invent.kde.org/neon/forks/libquotient/-/commit/575534e7cca310c6d6195ab16d482bf9dfba755e

Git commit bde38f86337d6f49b34b38016ab088d2f48ec371 by Alexey Rusakov on 04/09/2022 at 16:42..
concept EventClass

Constrain types to derive from Event (or the chosen class), where
applicable.
https://invent.kde.org/neon/forks/libquotient/-/commit/bde38f86337d6f49b34b38016ab088d2f48ec371

Git commit 7251d6856993a08dd8ec1d4965a310e4cf8e97d3 by Alexey Rusakov on 04/09/2022 at 16:42..
StateEventBase -> StateEvent

Now that StateEvent name is vacated, the naming for event core classes
can be completely unified: Event, RoomEvent, CallEvent, StateEvent.
https://invent.kde.org/neon/forks/libquotient/-/commit/7251d6856993a08dd8ec1d4965a310e4cf8e97d3

Git commit 715d9e4a858423e8bd9492e3a88d591670349bab by Alexey Rusakov on 04/09/2022 at 16:42..
Room::setTags(): skip full-blown TagEvent creation

TagEvent is only created to immediately extract content JSON from it;
at the same rate content JSON can be generated directly from content.
https://invent.kde.org/neon/forks/libquotient/-/commit/715d9e4a858423e8bd9492e3a88d591670349bab

Git commit bd2736bc9f8b6023ecbc21d0d831856703b853db by Alexey Rusakov on 04/09/2022 at 16:42..
SingleKeyValue: use reference for template parameter

I guess it was simply overlooked originally; in any case, currently
used compilers deal with the reference just as fine as with the pointer.
https://invent.kde.org/neon/forks/libquotient/-/commit/bd2736bc9f8b6023ecbc21d0d831856703b853db

Git commit 1e263a32fcbc44985e474a626393494a81f15e37 by GitHub (on behalf of Alexey Rusakov) on 05/09/2022 at 05:49..
Merge pull request #565 from quotient-im/kitsune/streamline-event-types-2

Streamline event types, part 2
https://invent.kde.org/neon/forks/libquotient/-/commit/1e263a32fcbc44985e474a626393494a81f15e37

Git commit 66127730592eadf9ee717a53a521ac2ec14f1051 by Alexey Rusakov on 05/09/2022 at 13:20..
sendToDevice: fix unintended slicing

Ironically, this slicing would not break anything as all the necessary
data are saved in the Event parent class; but the code is very fragile
and scary.
https://invent.kde.org/neon/forks/libquotient/-/commit/66127730592eadf9ee717a53a521ac2ec14f1051

Git commit 16350ce5c6fc020474c6980e3e72ab369e8b33f4 by Alexey Rusakov on 05/09/2022 at 14:51..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/16350ce5c6fc020474c6980e3e72ab369e8b33f4

Git commit ecf6b855b0fc8cbe16d34b67ae1dca7bd9b69948 by Tobias Fella on 06/09/2022 at 19:35..
Add autotest for key verification and fix several edge-cases
https://invent.kde.org/neon/forks/libquotient/-/commit/ecf6b855b0fc8cbe16d34b67ae1dca7bd9b69948

Git commit a3ab7dc4bc7cd538d922ea69d2dad158e7bc9770 by Alexey Rusakov on 09/09/2022 at 16:17..
README: add a troubleshooting case with mixed Qt 5/6
https://invent.kde.org/neon/forks/libquotient/-/commit/a3ab7dc4bc7cd538d922ea69d2dad158e7bc9770

Git commit d863324d07ffafc2afcd65ab1655f1d1d01d1abc by Alexey Rusakov on 09/09/2022 at 16:17..
makeImpl: add support for aggregate initialisation

Since C++17, parentheses only work when a constructor is there, while
braces allow both calling a constructor and aggregate initialisation.
https://invent.kde.org/neon/forks/libquotient/-/commit/d863324d07ffafc2afcd65ab1655f1d1d01d1abc

Git commit 06d2ddafd856af68f39aa701570443a033e24643 by Alexey Rusakov on 10/09/2022 at 07:05..
CMakeLists: adjust .cmake files install path on Windows

With CMAKE_INSTALL_LIBDIR set to ".", the place .cmake files land in
was not discoverable by find_package(), assuming a conventional
CMAKE_PREFIX_PATH.
https://invent.kde.org/neon/forks/libquotient/-/commit/06d2ddafd856af68f39aa701570443a033e24643

Git commit d890cc09dd6cd096423271ce47ca4ac86d2e9e41 by Alexey Rusakov on 10/09/2022 at 08:43..
CMakeLists, MSVC: require new preprocessor in public

The new MSVC preprocessor is needed to correctly deal with variadic
macros defined in .h files, so the respective compiler switch has to be
added when building depending projects too.
https://invent.kde.org/neon/forks/libquotient/-/commit/d890cc09dd6cd096423271ce47ca4ac86d2e9e41

Git commit 83746abdf677f573287be2c93d2ad12b1aa84b3f by GitHub (on behalf of Tobias Fella) on 10/09/2022 at 11:42..
Update lib/keyverificationsession.h

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/83746abdf677f573287be2c93d2ad12b1aa84b3f

Git commit fa34778cc377ab98a0b8f3944063e426c73a3941 by Tobias Fella on 10/09/2022 at 12:21..
Remove header for keyverificationtest
https://invent.kde.org/neon/forks/libquotient/-/commit/fa34778cc377ab98a0b8f3944063e426c73a3941

Git commit 20f01303b40df8b7710dfa560940a7c71c1e9c19 by Alexey Rusakov on 10/09/2022 at 18:38..
Adjust converters.h logic to support Qt 6.4

There's a bit convoluted stack of calls involved here, worth laying out.

C++ containers are loaded from JSON containers by calling fromJson<>
on each element of the JSON container, specialised by the element type
of the C++ container. If that element type is not itself an object
(e.g., QString), the respective specialisation of fromJson<> is supposed
to kick-in and override the default template that delegates the
conversion to JsonConverter (which in turn falls back to
JsonObjectConverter unless specialised for that type). Because template
functions cannot be partially specialised, that specialised overload
for, say, QString, is not complete: it accepts QJsonValue but anything
except QJsonValue will hit the generic overload instead. That makes the
whole fromJson<> machinery quite sensitive to the exact JSON type passed
to it; but as of Qt 5, the types actually presented to fromJson() were
limited to QJsonValue and QJsonDocument (okay, QJsonObject and
QJsonArray could also be there but the QJsonObject case is trivial
for JsonConverter and containers loaded from QJsonArray are all caught
with JsonArrayConverter).

Qt 6 started returning (const) QJsonValueRef from
`QJson*::const_iterator::operator*()` - meaning that whenever a simple
type (like, again, QString) is loaded within the bigger container,
the "wrong" fromJson() gets called. To fix this, JsonObjectUnpacker
gained a dedicated function to unpack QJsonValueRef. QJsonValueRef is
an old name existing since Qt 5.15 - no big pain. However, in Qt 6.4
QJsonValueConstRef is getting introduced for the same purpose. It's
possible to wrap the *Ref overloads in some #if/#else brackets but at
that point it becomes easier to just produce QJsonValue from whatever
QJson* iterators dereference to.
https://invent.kde.org/neon/forks/libquotient/-/commit/20f01303b40df8b7710dfa560940a7c71c1e9c19

Git commit 6abdd5358c9c5ed89cda5bc5e50a76af423b0634 by Alexey Rusakov on 11/09/2022 at 18:25..
KeyVerificationEvent; KeyVerificationSession::handleEvent()

Key verification events gain their own base type and
KeyVerificationSession gets a single point of entry for all kinds of
incoming events. This allows to drop a pile of `incoming*` signals in
Connection and a stack of options inside switchOnType in
processIfVerification(). KVS::handleEvent() also makes (some) allowed
state transitions a bit clearer.
https://invent.kde.org/neon/forks/libquotient/-/commit/6abdd5358c9c5ed89cda5bc5e50a76af423b0634

Git commit 79f995da07ca240c768281bf1d040eb94c07583e by Alexey Rusakov on 11/09/2022 at 20:01..
TestKeyVerification: Add a missing allowed state
https://invent.kde.org/neon/forks/libquotient/-/commit/79f995da07ca240c768281bf1d040eb94c07583e

Git commit d7030d88eee9a1ac285f00f3a252b63b9cd40a6c by Alexey Rusakov on 12/09/2022 at 06:27..
Fix a leak in Connection::saveAccessTokenToKeychain()
https://invent.kde.org/neon/forks/libquotient/-/commit/d7030d88eee9a1ac285f00f3a252b63b9cd40a6c

Git commit e003251fa57589fcdaa28b99157a845415a25370 by GitHub (on behalf of Alexey Rusakov) on 12/09/2022 at 08:01..
Merge #569: Fix a leak in Connection::saveAccessTokenToKeychain()
https://invent.kde.org/neon/forks/libquotient/-/commit/e003251fa57589fcdaa28b99157a845415a25370

Git commit f4009215b500dbae4a10d1a86bb059272e47d0cb by Alexey Rusakov on 12/09/2022 at 16:56..
Only trust verification keys if the user verified the SAS
https://invent.kde.org/neon/forks/libquotient/-/commit/f4009215b500dbae4a10d1a86bb059272e47d0cb

Git commit 0d0a91b4438d68c833f480f45017847829bf6088 by Alexey Rusakov on 12/09/2022 at 19:08..
NetworkAccessManager: QThreadStorage -> thread_local

It's more straightforward in usage and less prone to leaks
(QThreadStorage doesn't delete objects when on non-main thread).
https://invent.kde.org/neon/forks/libquotient/-/commit/0d0a91b4438d68c833f480f45017847829bf6088

Git commit 95d3f0607556e66666b3974486b061fc4372ede0 by GitHub (on behalf of Alexey Rusakov) on 12/09/2022 at 20:02..
Merge #568: Add autotest for key verification and fix several edge-cases
https://invent.kde.org/neon/forks/libquotient/-/commit/95d3f0607556e66666b3974486b061fc4372ede0

Git commit 51ebb9166df1dee7831d9ab25aaa8e70bd65aa16 by Alexey Rusakov on 14/09/2022 at 18:59..
CMakeLists: add flags more carefully for non-Windows

Previous logic wasn't quite accurate with detection of existing flags
in CMAKE_CXX_FLAGS - the new code doesn't add a flag if the negating
flag is already there. This required separate treatment of positive
and negative (-Wno-*) flags.
https://invent.kde.org/neon/forks/libquotient/-/commit/51ebb9166df1dee7831d9ab25aaa8e70bd65aa16

Git commit 7fea15b9942b69a03796b6b2b104a208c82c1806 by Alexey Rusakov on 14/09/2022 at 19:12..
Fix a CMake-breaking typo in the just commited code
https://invent.kde.org/neon/forks/libquotient/-/commit/7fea15b9942b69a03796b6b2b104a208c82c1806

Git commit eee0b71ebe044a25b8bbe896cb63746599ac0d78 by Alexey Rusakov on 17/09/2022 at 17:46..
room.*: fix doc-comments, use [[deprecated]]

Previously moc choked on [[attributes]]; deprecated signals, slots etc.
were documented as \deprecated instead. By Qt 5.15, that was fixed.
https://invent.kde.org/neon/forks/libquotient/-/commit/eee0b71ebe044a25b8bbe896cb63746599ac0d78

Git commit 82ca6e81ad5801d4ed2f9445ea15bde4d1344539 by Alexey Rusakov on 17/09/2022 at 19:21..
Fix building with GCC
https://invent.kde.org/neon/forks/libquotient/-/commit/82ca6e81ad5801d4ed2f9445ea15bde4d1344539

Git commit 747913f2549c1b228395192a73231b96c93f4f40 by Alexey Rusakov on 18/09/2022 at 08:04..
Update README on E2EE

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/747913f2549c1b228395192a73231b96c93f4f40

Git commit b1de80b4169d5f60f0f1f7fd20018ba6521c293e by Alexey Rusakov on 18/09/2022 at 11:05..
Cleanup NAM more carefully

This tries to fix getting stuck at exit since NAM has been switched
from QThreadStorage to thread_local
https://invent.kde.org/neon/forks/libquotient/-/commit/b1de80b4169d5f60f0f1f7fd20018ba6521c293e

Git commit 82e23011e0336a719fe3f2c003496d112bc5ca65 by Alexey Rusakov on 21/09/2022 at 13:34..
.clang-tidy: drop readability-qualified-auto

Too many suggestions to add, e.g., * in places where it may eventually
be a smart pointer.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/82e23011e0336a719fe3f2c003496d112bc5ca65

Git commit a0cc4eaf6af6f047e32713b2926f784fa4087a64 by Alexey Rusakov on 21/09/2022 at 13:34..
Bump required Olm version to 3.2.5

This is the earliest version shipping olm/error.h. Conversely, stock
libolm that comes with Ubuntu 20.04 (version 3.1.3) is no more enough
so CI completely switches to jammy now.
https://invent.kde.org/neon/forks/libquotient/-/commit/a0cc4eaf6af6f047e32713b2926f784fa4087a64

Git commit a923750c7a1efadaa66f24dc17010063776e6246 by Alexey Rusakov on 21/09/2022 at 13:34..
CI: only use Valgrind with GCC

As of the current GHA jammy image, Valgrind cannot cope with some
of Clang 14 output: https://bugs.kde.org/show_bug.cgi?id=452758

This is most likely a band-aid, before the work on switching from
Valgrind to ASan.
https://invent.kde.org/neon/forks/libquotient/-/commit/a923750c7a1efadaa66f24dc17010063776e6246

Git commit 94d1bb2c624ca9a689a5d7cdca8af6ef5e489150 by Tobias Fella on 23/09/2022 at 18:08..
Don't crash in MxcReply if the event is not a RoomMessageEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/94d1bb2c624ca9a689a5d7cdca8af6ef5e489150

Git commit 4cf39fa778e2d850586d37bfc3357a6bc5042227 by GitHub (on behalf of Alexey Rusakov) on 23/09/2022 at 19:39..
Merge pull request #570 from quotient-im/tobias/mxcreply_no_roommessageevent

Don't crash in MxcReply if the event is not a RoomMessageEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/4cf39fa778e2d850586d37bfc3357a6bc5042227

Git commit f161519740da12c2578d6ecf79a501e10c2debae by Tobias Fella on 24/09/2022 at 09:36..
Fix construction of EncryptedEvents

The parent constructor requires full json instead of content json now
https://invent.kde.org/neon/forks/libquotient/-/commit/f161519740da12c2578d6ecf79a501e10c2debae

Git commit a2b155b10197a4fca4db2af59c2171f82a0eac2b by Tobias Fella on 24/09/2022 at 10:15..
Fix verification

Contains two fixes:

- When receiving the mac, we can also be in WAITINGFORVERIFICATION state
- Ignore all KeyVerificationDone events; we don't do anything with them anyway and sometimes receive them after the session is destructed
https://invent.kde.org/neon/forks/libquotient/-/commit/a2b155b10197a4fca4db2af59c2171f82a0eac2b

Git commit 4146f33bda60d04db34fbd5614439b22b5d5837f by Tobias Fella on 24/09/2022 at 12:27..
Use basicJson()
https://invent.kde.org/neon/forks/libquotient/-/commit/4146f33bda60d04db34fbd5614439b22b5d5837f

Git commit 8594f075d3e2fdfb2e4d5c9340167df569f3b53e by GitHub (on behalf of Alexey Rusakov) on 24/09/2022 at 13:52..
Merge #572: Fix construction of EncryptedEvents
https://invent.kde.org/neon/forks/libquotient/-/commit/8594f075d3e2fdfb2e4d5c9340167df569f3b53e

Git commit 63d658e798c1ba29d080564db06a613a3d7d5df5 by GitHub (on behalf of Tobias Fella) on 24/09/2022 at 14:22..
Update lib/connection.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/63d658e798c1ba29d080564db06a613a3d7d5df5

Git commit 62f9e5b7d1227a85f80ae49abcb555e4fe4c52f0 by GitHub (on behalf of Alexey Rusakov) on 24/09/2022 at 16:22..
Merge #573: Fix verification
https://invent.kde.org/neon/forks/libquotient/-/commit/62f9e5b7d1227a85f80ae49abcb555e4fe4c52f0

Git commit 5904a61c59f0eef00aef07ef998658fd791ff139 by Alexey Rusakov on 25/09/2022 at 19:37..
QOlmUtility::ed25519Verify: just return bool

It's too easy to incorrectly test the previous return type.
https://invent.kde.org/neon/forks/libquotient/-/commit/5904a61c59f0eef00aef07ef998658fd791ff139

Git commit 363a7e40e8aa12cb780b076cca8db4f47b70f4fa by Alexey Rusakov on 26/09/2022 at 08:46..
Replace QOlmError with OlmErrorCode

QOlmError represents a subset of OlmErrorCode, and the associated
fromString() function uses undocumented strings produced inside Olm;
meanwhile OlmErrorCode is documented in its own header file. Each QOlm*
class now has lastErrorCode() next to lastError() (that, from now,
returns a textual representation straight from Olm, not QOlmError enum).

Also: including olm/error.h in e2ee/e2ee.h required some rearrangement
of the code to make sure non-E2EE configuration still builds.
https://invent.kde.org/neon/forks/libquotient/-/commit/363a7e40e8aa12cb780b076cca8db4f47b70f4fa

Git commit bcc05aa1d52cae2b6d8e70bb6cf04fa49904687a by Alexey Rusakov on 26/09/2022 at 08:46..
Cleanup across E2EE code

Notably:
- simplified unnecessarily verbose constructs;
- formally aligned (no re-numeration was necessary)
  QOlmMessage::Type with corresponding OLM_ constants;
- dropped QOlmSession::encryptMessageType() because it's very
  sensitive to the order of calling with QOlmSession::encrypt()
  (and encrypt() itself already calls it and returns the message
  type);
- simplify the return type of pickle() calls that can only fail due to
  an internal error;
- replace const QString& with QStringView or const QByteArray&
  where appropriate;
- use '\0' where it was meant to be instead of '0'.
https://invent.kde.org/neon/forks/libquotient/-/commit/bcc05aa1d52cae2b6d8e70bb6cf04fa49904687a

Git commit bc1ded73bedf593acda80b00eb7da32f688c4843 by Alexey Rusakov on 26/09/2022 at 08:46..
RandomBuffer

A convenient abstraction swallowing all the type casts and, more
importantly, cleanup on destruction (previous code only cleaned up
the buffer upon a successful call to Olm API but not upon an error).
https://invent.kde.org/neon/forks/libquotient/-/commit/bc1ded73bedf593acda80b00eb7da32f688c4843

Git commit 2ff045d8b381bfbd64100d083f81b61c5fe87b23 by Alexey Rusakov on 26/09/2022 at 08:46..
Wrap error reporting into facility macros

Facility macros to report Olm errors: QOLM_INTERNAL_ERROR[_X],
QOLM_FAIL_OR_LOG[_X]
https://invent.kde.org/neon/forks/libquotient/-/commit/2ff045d8b381bfbd64100d083f81b61c5fe87b23

Git commit d5c1afc536dde87f460ccadfcfd51444b5e9bb82 by Alexey Rusakov on 26/09/2022 at 08:46..
Trample Sonar warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/d5c1afc536dde87f460ccadfcfd51444b5e9bb82

Git commit 388c301222586583a0144f7229a564cf07b597d4 by Alexey Rusakov on 26/09/2022 at 08:46..
Remove no-op code
https://invent.kde.org/neon/forks/libquotient/-/commit/388c301222586583a0144f7229a564cf07b597d4

Git commit 72e14cb1bdff68dfe0fb61fff0defd6c50dff43c by Alexey Rusakov on 26/09/2022 at 08:46..
QOlmUtility::ed25519Verify: just return bool

It's too easy to incorrectly test the previous return type.

(cherry picked from commit 5904a61c59f0eef00aef07ef998658fd791ff139)
https://invent.kde.org/neon/forks/libquotient/-/commit/72e14cb1bdff68dfe0fb61fff0defd6c50dff43c

Git commit 15b840d82d4794358fbf1271ea76e446b47db7e5 by GitHub (on behalf of Alexey Rusakov) on 26/09/2022 at 11:52..
Merge branch 'dev' into kitsune/unify-olm-errors
https://invent.kde.org/neon/forks/libquotient/-/commit/15b840d82d4794358fbf1271ea76e446b47db7e5

Git commit 4c8dcbc308eb0f4900e416e698f5f30e71daaad8 by GitHub (on behalf of Alexey Rusakov) on 26/09/2022 at 13:20..
Merge #571: Unify reporting and handling of Olm errors
https://invent.kde.org/neon/forks/libquotient/-/commit/4c8dcbc308eb0f4900e416e698f5f30e71daaad8

Git commit 40b29069f55b551a67f4244c2b803b16e8287cd2 by Alexey Rusakov on 02/10/2022 at 18:21..
Relax Omittable::operator->/operator*

The imposed limitations made mutation of Omittables pretty much
impossible outside of rvalues. Honestly, it was pretty much the original
intention - and it doesn't look right, in retrospect.

(cherry picked from commit 7f886b34936f324662eb17afbb214d4800dcea03)
https://invent.kde.org/neon/forks/libquotient/-/commit/40b29069f55b551a67f4244c2b803b16e8287cd2

Git commit bcae903921b81f578b0717e7376a45f9cafa16ad by Alexey Rusakov on 03/10/2022 at 19:02..
Regenerate API files from spec v1.4
https://invent.kde.org/neon/forks/libquotient/-/commit/bcae903921b81f578b0717e7376a45f9cafa16ad

Git commit 6824a0ab5614c5497b220eb9e18e190cd57d5710 by Tobias Fella on 06/10/2022 at 10:27..
Properly export KeyVerificationKeyEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/6824a0ab5614c5497b220eb9e18e190cd57d5710

Git commit 56c2f2e2b809b9077393eb617828f33d144f5634 by GitHub (on behalf of Alexey Rusakov) on 06/10/2022 at 15:16..
Merge #575: Properly export KeyVerificationKeyEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/56c2f2e2b809b9077393eb617828f33d144f5634

Git commit 5a73637cbcda9378b1a5ebebca3398a709d6858d by Alexey Rusakov on 07/10/2022 at 06:12..
Update documentation for beta

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/5a73637cbcda9378b1a5ebebca3398a709d6858d

Git commit b2a6cb34bcf70a02fdecd98c43f59a0bf6560426 by Alexey Rusakov on 07/10/2022 at 06:12..
CMakeLists: fix reporting OpenSSL version/location
https://invent.kde.org/neon/forks/libquotient/-/commit/b2a6cb34bcf70a02fdecd98c43f59a0bf6560426

Git commit c7c9dacd3f1fcf0409bfa4c2e962d89c07e23281 by Alexey Rusakov on 07/10/2022 at 13:12..
gtad.yaml: drop qualifiedMaybeOmittableType

That partial is no more used anywhere.
https://invent.kde.org/neon/forks/libquotient/-/commit/c7c9dacd3f1fcf0409bfa4c2e962d89c07e23281

Git commit 1e194d3b94a35bb5d338e15d9569bc492abbb03e by Alexey Rusakov on 07/10/2022 at 13:12..
CMakeLists.txt: use QT_STRICT_ITERATORS
https://invent.kde.org/neon/forks/libquotient/-/commit/1e194d3b94a35bb5d338e15d9569bc492abbb03e

Git commit 91d041b7996e24b109d69a459883005cde7aa600 by Alexey Rusakov on 07/10/2022 at 13:27..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/91d041b7996e24b109d69a459883005cde7aa600

Git commit c6cff5b0b707851fbf4cc100605970d66d1b169f by Alexey Rusakov on 10/10/2022 at 11:55..
.clang-tidy: drop misc-no-recursion

It's overly sensitive, triggering even on a single level of recursion.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/c6cff5b0b707851fbf4cc100605970d66d1b169f

Git commit 8f3fde15be05e58b14fc112af7faee10dc8f4f00 by Alexey Rusakov on 10/10/2022 at 11:55..
More cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/8f3fde15be05e58b14fc112af7faee10dc8f4f00

Git commit 0e9b8fe6dd3fd8144baaa9dad86759aa440a0a4c by Alexey Rusakov on 12/10/2022 at 16:09..
Update action versions in ci.yml; hardwire x64 on Windows

No plans to use other architectures on Windows any time soon.
https://invent.kde.org/neon/forks/libquotient/-/commit/0e9b8fe6dd3fd8144baaa9dad86759aa440a0a4c

Git commit 6bbab834354cfd90a94b8f7aaa4a66208525ae5b by Tobias Fella on 12/10/2022 at 16:14..
Fix Key Verification and its test

- Add outgoing sessions to the list as well
- Verify that session wasn't cancelled
- Test session between different accounts in order to not mess up the database
- Make sure we have the key for the other party by being in an encrypted room
- Make it possible to verify keys of other users
- Capture QPointer by reference to correctly share the session
https://invent.kde.org/neon/forks/libquotient/-/commit/6bbab834354cfd90a94b8f7aaa4a66208525ae5b

Git commit d6074bbdf9330ed038bef13cdd89966988c43b2e by GitHub (on behalf of Tobias Fella) on 12/10/2022 at 17:00..
Update autotests/testkeyverification.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/d6074bbdf9330ed038bef13cdd89966988c43b2e

Git commit 33f232ff436b70f90530fdd5c14a6552d92ba39d by GitHub (on behalf of Tobias Fella) on 12/10/2022 at 17:00..
Update autotests/testkeyverification.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/33f232ff436b70f90530fdd5c14a6552d92ba39d

Git commit df07e46315e7d560b1c4c28a113563e465525206 by GitHub (on behalf of Tobias Fella) on 12/10/2022 at 17:00..
Update autotests/testkeyverification.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/df07e46315e7d560b1c4c28a113563e465525206

Git commit 1b373faf241b3bff98a0f9764c333ca6d3501719 by GitHub (on behalf of Tobias Fella) on 12/10/2022 at 17:00..
Update autotests/testkeyverification.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/1b373faf241b3bff98a0f9764c333ca6d3501719

Git commit 170b0dd9a44053442eda30d7c926559c5a1e12ca by GitHub (on behalf of Tobias Fella) on 12/10/2022 at 17:00..
Update autotests/testkeyverification.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/170b0dd9a44053442eda30d7c926559c5a1e12ca

Git commit eb13d2df64f4dbb1c715780776f2881a3203fcdd by Tobias Fella on 12/10/2022 at 17:05..
Revert irrelevant change and add comment
https://invent.kde.org/neon/forks/libquotient/-/commit/eb13d2df64f4dbb1c715780776f2881a3203fcdd

Git commit 806945425b1023d6aab09afa7b55eb8d3a97b442 by Tobias Fella on 13/10/2022 at 11:12..
Replace tests with more atomic unit tests and allow for more state transitions in the KeyVerificationSession

The old test was largely unmaintainable and is thus being replaced by actual unit tests

Since we currently don't have a way of getting the events sent by a connection in a test, we are somewhat limited in what we can test.
Add several TODOs for when this limitation is removed
https://invent.kde.org/neon/forks/libquotient/-/commit/806945425b1023d6aab09afa7b55eb8d3a97b442

Git commit 3da5ca0999bfc57dd2886b870fdedf562ee52bc2 by Tobias Fella on 13/10/2022 at 12:55..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/3da5ca0999bfc57dd2886b870fdedf562ee52bc2

Git commit 014f26adba135bde780c285e4ae02fb3fff2ee5f by Tobias Fella on 13/10/2022 at 14:11..
Fix
https://invent.kde.org/neon/forks/libquotient/-/commit/014f26adba135bde780c285e4ae02fb3fff2ee5f

Git commit 4bce4a341830dc5f07864e2e32baee65117d14d5 by GitHub (on behalf of Alexey Rusakov) on 13/10/2022 at 18:31..
Merge #577: Fix Key Verification and its test
https://invent.kde.org/neon/forks/libquotient/-/commit/4bce4a341830dc5f07864e2e32baee65117d14d5

Git commit c9f36d3a528364d21a20e0585997ed4ba2970999 by Alexey Rusakov on 16/10/2022 at 21:34..
Move replaced event getters to RoomMessageEvent

Closes #490.
https://invent.kde.org/neon/forks/libquotient/-/commit/c9f36d3a528364d21a20e0585997ed4ba2970999

Git commit ea3e017e421ef6f26f396e947ddf3b18dcc8821e by GitHub (on behalf of Alexey Rusakov) on 17/10/2022 at 11:23..
Merge pull request #578 from quotient-im/kitsune/move-replace-to-msg-event

Move replaced event getters to RoomMessageEvent
https://invent.kde.org/neon/forks/libquotient/-/commit/ea3e017e421ef6f26f396e947ddf3b18dcc8821e

Git commit a90410807b946c4e4e29b3e1e2c23d5c91c2b62f by Alexey Rusakov on 17/10/2022 at 16:56..
Fix buildability of stickerevent.h

Apparently the header file is unused because nobody reported that it
got broken quite a few commits ago.
https://invent.kde.org/neon/forks/libquotient/-/commit/a90410807b946c4e4e29b3e1e2c23d5c91c2b62f

Git commit 395396c51dfe35fb05623ff49345681703552b74 by Alexey Rusakov on 17/10/2022 at 20:18..
Tighten up ReactionEvent interface

ReactionEvent is only supposed to carry m.annotation relationships and
shouldn't be created with anything else.
https://invent.kde.org/neon/forks/libquotient/-/commit/395396c51dfe35fb05623ff49345681703552b74

Git commit cc78ed9e395ab9033597ada891852984ce484ee7 by GitHub (on behalf of Alexey Rusakov) on 18/10/2022 at 16:55..
Merge #579: Tighten up ReactionEvent interface
https://invent.kde.org/neon/forks/libquotient/-/commit/cc78ed9e395ab9033597ada891852984ce484ee7

Git commit 587daae64c7b7fdfda02f8a0a0ec47b01ba93886 by Alexey Rusakov on 20/10/2022 at 18:40..
QUO_*EVENT: validate CppType_ parameter

It's all too easy to leave copy-pasta behind when writing several
classes in a row, as experience shows.
https://invent.kde.org/neon/forks/libquotient/-/commit/587daae64c7b7fdfda02f8a0a0ec47b01ba93886

Git commit b44850d248616e25755df2591f546a554c8b43ac by Link Dupont on 21/10/2022 at 02:47..
Add UserIdRole to AccountRegistry

This enables controls to use a textual representation of the data, such
as ComboBoxes.
https://invent.kde.org/neon/forks/libquotient/-/commit/b44850d248616e25755df2591f546a554c8b43ac

Git commit 2f0fea7cc67483c38c6bcae4243ca29aabb816ea by GitHub (on behalf of Alexey Rusakov) on 21/10/2022 at 07:35..
Merge #580: Add UserIdRole to AccountRegistry
https://invent.kde.org/neon/forks/libquotient/-/commit/2f0fea7cc67483c38c6bcae4243ca29aabb816ea

Git commit 2e1cdffe57dea1da234214d6be64d6ab31b6403c by Alexey Rusakov on 21/10/2022 at 08:50..
DEFINE_EVENT_TYPEID: fix misplaced operands

Although it's deprecated, it's still supposed to work to maintain
compatibility with 0.6.
https://invent.kde.org/neon/forks/libquotient/-/commit/2e1cdffe57dea1da234214d6be64d6ab31b6403c

Git commit e0bd54025f3aaf357c7f2fe1bdfbdaa2866dddf2 by Alexey Rusakov on 21/10/2022 at 09:44..
Disallow implicit casts from QByteArray within the library

External code can still use them.

(cherry picked from commit ba2084a4c14d18cd1d4a0061a83315a9f14f0469)
https://invent.kde.org/neon/forks/libquotient/-/commit/e0bd54025f3aaf357c7f2fe1bdfbdaa2866dddf2

Git commit 848797ebe8f7804b938c6f37db8da1d257a512de by Alexey Rusakov on 22/10/2022 at 18:01..
is(): make sure QUO_*EVENT is in a public section
https://invent.kde.org/neon/forks/libquotient/-/commit/848797ebe8f7804b938c6f37db8da1d257a512de

Git commit da149557d5c4155fcee25ec86e07ba85d4c5f406 by Alexey Rusakov on 22/10/2022 at 19:32..
event.h: drop remnants of experimentation over EventMetaType

There used to be considered three alternatives to handle the event type
hierarchy; by now the way forward is chosen. This commit drops parts
that won't be used (e.g. referring to several base types in QUO_EVENT)
and tightens up the code where possible (constness etc.)
https://invent.kde.org/neon/forks/libquotient/-/commit/da149557d5c4155fcee25ec86e07ba85d4c5f406

Git commit e858331b1fbe7c2ee8f9308505aba2a61dfce327 by Alexey Rusakov on 22/10/2022 at 19:41..
CallEvent: matches() -> isValid()

EventMetaType uses isValid() to check if the JSON is generally good for
a given base event type; a past interim implementation used matches()
for the same purpose.
https://invent.kde.org/neon/forks/libquotient/-/commit/e858331b1fbe7c2ee8f9308505aba2a61dfce327

Git commit 674ad847c9a68033cdb28f3df0ece2a9c2104a5a by Alexey Rusakov on 23/10/2022 at 07:28..
...or rather just drop it

That former matches() thing used the previous 2-arg convention and
in fact doesn't speed up anything.
https://invent.kde.org/neon/forks/libquotient/-/commit/674ad847c9a68033cdb28f3df0ece2a9c2104a5a

Git commit b77d98248e06e89a8c415c0ad763e10d171ead3e by Tobias Fella on 27/10/2022 at 00:55..
Compare olm account unpickling result with OLM success

Instead of assuming that 0 means failure, which is wrong
https://invent.kde.org/neon/forks/libquotient/-/commit/b77d98248e06e89a8c415c0ad763e10d171ead3e

Git commit 22fe0c7c053f320f1dd2170e315e352060d7f3d9 by GitHub (on behalf of Alexey Rusakov) on 27/10/2022 at 08:34..
Merge #582: Compare olm account unpickling result with OLM success
https://invent.kde.org/neon/forks/libquotient/-/commit/22fe0c7c053f320f1dd2170e315e352060d7f3d9

Git commit c1af9831f7af29c81e80807519c651c727bf6a16 by Tobias Fella on 27/10/2022 at 15:42..
Create new olm session and send dummy event when unable to decrypt
https://invent.kde.org/neon/forks/libquotient/-/commit/c1af9831f7af29c81e80807519c651c727bf6a16

Git commit ca9133b85eadb4d3a985e76a919af339068f08f1 by GitHub (on behalf of Tobias Fella) on 27/10/2022 at 17:58..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/ca9133b85eadb4d3a985e76a919af339068f08f1

Git commit ba18bfcc8f830cfa88b9995e700bd43c08a1136f by GitHub (on behalf of Alexey Rusakov) on 28/10/2022 at 00:27..
Merge #583: Create new olm session and send dummy event when unable to decrypt
https://invent.kde.org/neon/forks/libquotient/-/commit/ba18bfcc8f830cfa88b9995e700bd43c08a1136f

Git commit 7ac31f5a6745e1d0bbdaea95826674a9f2ea6ae6 by Alexey Rusakov on 28/10/2022 at 01:21..
README: Add `database` to logging categories

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/7ac31f5a6745e1d0bbdaea95826674a9f2ea6ae6

Git commit 72e76655e6c2258155cae431f3e361001262c945 by Alexey Rusakov on 28/10/2022 at 01:21..
CS API: regenerate API files for patched Matrix v1.4

Notable change: instead of a freeform receipt object (unused at least
by Quotient) PostReceiptJob now accepts optional thread_id as the last
optional parameter.
https://invent.kde.org/neon/forks/libquotient/-/commit/72e76655e6c2258155cae431f3e361001262c945

Git commit 3ca26488a6d947a8e4f9f3001003e06f03fba235 by Alexey Rusakov on 29/10/2022 at 11:07..
QOlmAccount::createNewAccount -> setupNewAccount
https://invent.kde.org/neon/forks/libquotient/-/commit/3ca26488a6d947a8e4f9f3001003e06f03fba235

Git commit cc15be284f0ff43409b295d40256f4d7b7e46a4d by Alexey Rusakov on 29/10/2022 at 11:07..
Constify QOlmUtility::ed25519Verify

There's no reason it shouldn't be const.
https://invent.kde.org/neon/forks/libquotient/-/commit/cc15be284f0ff43409b295d40256f4d7b7e46a4d

Git commit b967a802ca8c7e4d1f753719ecb0be23ceba0116 by Alexey Rusakov on 29/10/2022 at 11:07..
CStructPtr and makeCStruct

A generic way to manage lifecycle of a C structure, in particular an
Olm structure - to be used in further commits.
https://invent.kde.org/neon/forks/libquotient/-/commit/b967a802ca8c7e4d1f753719ecb0be23ceba0116

Git commit def87fd61969563e388cb214b77c2b05cc387aba by Alexey Rusakov on 29/10/2022 at 11:07..
Use CStructPtr and RAII across QOlm* classes

Most of QOlm* classes are, essentially, wrappers around (a pointer to)
respective Olm* structures; there's no point in adding yet another level
of indirection by wrapping QOlm* objects into smart pointers over again.
This commit removes QOlm*Ptr aliases and converts usage of those aliases
into usage of their underlying QOlm* classes. Together with using
CStructPtr inside QOlm* this provides proper RAII semantics where
a loaded/created object is immediately ready to do its job (aside from
QOlmAccount that still needs an initialisation call - either to
setupNewAccount() or to unpickle() - to become workable. This will be
addressed in the next commit.
https://invent.kde.org/neon/forks/libquotient/-/commit/def87fd61969563e388cb214b77c2b05cc387aba

Git commit 9523e4c8c65aa557bc846d8361c1564ce374cb6b by Alexey Rusakov on 29/10/2022 at 11:07..
Fixup
https://invent.kde.org/neon/forks/libquotient/-/commit/9523e4c8c65aa557bc846d8361c1564ce374cb6b

Git commit dc76ea70930299310f14bfbcebb0c0bac4bcc794 by Alexey Rusakov on 29/10/2022 at 11:07..
Explicitly #include "logging.h" from database.cpp
https://invent.kde.org/neon/forks/libquotient/-/commit/dc76ea70930299310f14bfbcebb0c0bac4bcc794

Git commit 1ac9ccea8e9c792b1a7bb5b9b25d8d62a1523d09 by Alexey Rusakov on 29/10/2022 at 11:07..
Drop static factory methods in QOlmSession

Each of them needs QOlmAccount so it's quite natural to have them
as non-static methods of QOlmAccount, as long as QOlmAccount is a friend
class of QOlmSession. In fact, they already are there but used
to delegate the actual work to those static factories; and the callers
mainly already use those QOlmAccount methods.
https://invent.kde.org/neon/forks/libquotient/-/commit/1ac9ccea8e9c792b1a7bb5b9b25d8d62a1523d09

Git commit db964240a0afaed4e55bcc746aa703374ccac33d by GitHub (on behalf of Alexey Rusakov) on 29/10/2022 at 15:09..
Merge #581: Use RAII in QOlm* classes; other refactoring
https://invent.kde.org/neon/forks/libquotient/-/commit/db964240a0afaed4e55bcc746aa703374ccac33d

Git commit 77ffcbe5ebe5d604005a5dd067a2b17274e0d144 by Alexey Rusakov on 30/10/2022 at 02:20..
.clang-tidy: don't warn on missing noexcept

We're not using exceptions.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/77ffcbe5ebe5d604005a5dd067a2b17274e0d144

Git commit e5dbe9fbac606e3d93be632792bce4f3034ec542 by Alexey Rusakov on 30/10/2022 at 21:32..
Fix failing to forget a not found room

The outcome of `LeaveRoomJob` (positive or negative) is already checked
in the handler of `BaseJob::result` signal; attaching `abandon` to all
failure outcomes of leaving prevents it from doing its rightful job.
https://invent.kde.org/neon/forks/libquotient/-/commit/e5dbe9fbac606e3d93be632792bce4f3034ec542

Git commit 46408317fbbb7704359db67609a17cd9741ab99f by Alexey Rusakov on 31/10/2022 at 17:56..
Tighten conversions between Olm/std:: and Qt

bufferForOlm() produces an empty QByteArray of a given size but first
validates that the size is within what QByteArray can handle;
unsignedSize() is a simple wrapper to shut up undue compiler warnings
(but also to indicate what exactly is going on here, instead of
generic static_cast<>); and fillWithRandom is the common logic
factored out of the former getRandom and the current RandomBuffer
so that it could be used with other kinds of containers.
https://invent.kde.org/neon/forks/libquotient/-/commit/46408317fbbb7704359db67609a17cd9741ab99f

Git commit 6e430ef6bdc28c545c37b5277963d90c44160534 by Alexey Rusakov on 31/10/2022 at 17:56..
e2ee.h + qolmutils.* -> e2ee_common.*

qolmutils.* pair has been confusingly similar to qolmutility.*; on the
other hand, it's needed in quite a few places where e2ee.h used to be
needed so it made sense to merge the two and rename the pair to reflect
its meaning.
https://invent.kde.org/neon/forks/libquotient/-/commit/6e430ef6bdc28c545c37b5277963d90c44160534

Git commit 5e38b86e088b58cbeb74b63ce6f84f615da657ff by Tobias Fella on 10/11/2022 at 17:24..
Convert null json values to none
https://invent.kde.org/neon/forks/libquotient/-/commit/5e38b86e088b58cbeb74b63ce6f84f615da657ff

Git commit 248fa7705e15bb351d8932f6553521beb7a5b42e by GitHub (on behalf of Alexey Rusakov) on 11/11/2022 at 21:38..
Merge #586: Convert null json values to Quotient::none
https://invent.kde.org/neon/forks/libquotient/-/commit/248fa7705e15bb351d8932f6553521beb7a5b42e

Git commit 38a9b05ce0a98f77f5f2823f84ec1eec3f67746f by Tobias Fella on 13/11/2022 at 20:12..
Add QUOTIENT_API to SyncRoomData
https://invent.kde.org/neon/forks/libquotient/-/commit/38a9b05ce0a98f77f5f2823f84ec1eec3f67746f

Git commit 31a5bddb2349197fcce8897613330f1acbd91d45 by Tobias Fella on 13/11/2022 at 20:51..
Fix sending files on android
https://invent.kde.org/neon/forks/libquotient/-/commit/31a5bddb2349197fcce8897613330f1acbd91d45

Git commit c0616cb06f7076d52057e228136d569a3af29368 by GitHub (on behalf of Alexey Rusakov) on 14/11/2022 at 08:09..
Merge #585: Fix sending files on android
https://invent.kde.org/neon/forks/libquotient/-/commit/c0616cb06f7076d52057e228136d569a3af29368

Git commit d625bf6ad3877bf08a7d706c5ac83e73ecb69d80 by GitHub (on behalf of Alexey Rusakov) on 14/11/2022 at 15:08..
Merge #587: Add QUOTIENT_API to SyncRoomData
https://invent.kde.org/neon/forks/libquotient/-/commit/d625bf6ad3877bf08a7d706c5ac83e73ecb69d80

Git commit ce0fa66daff15de8c2c6dfc33853a3364ad4de93 by Alexey Rusakov on 18/11/2022 at 08:15..
FixedBuffer<> and PicklingKey

FixedBuffer uses OpenSSL to create a separate heap and store sensitive
material there instead of the common heap. It is not COW and cannot be
reallocated (not for now at least), to ensure that those sensitive
strings don't get copied to other places in the memory.

PicklingKey is a replacement for PicklingMode/Encrypted derived from
`FixedBuffer<char, 128>`.
https://invent.kde.org/neon/forks/libquotient/-/commit/ce0fa66daff15de8c2c6dfc33853a3364ad4de93

Git commit 9225ea85aa032a24ebbf02303d916a06b43f0aa1 by Alexey Rusakov on 18/11/2022 at 08:39..
Apply RAII to PicklingKey and store it in Database

Connection never uses the pickling key directly; and pickling/unpickling
operations always come in conjunction with a respective store/load
operation in Database. So it makes sense to only produce the pickling
key in Connection and then immediately pass it to Database, which is
tasked with pickling/unpickling QOlm* objects in a uniform way
(previously it only did unpickling to load arrays of things like
outbound Megolm sessions).

And since Connection doesn't own the pickling key anymore, it also makes
sense to apply RAII to PicklingKey instead of the two-phase
initialisation used so far.
https://invent.kde.org/neon/forks/libquotient/-/commit/9225ea85aa032a24ebbf02303d916a06b43f0aa1

Git commit 27494fb27f5668a7e4a176011281637cfebaf3dc by Tobias Fella on 18/11/2022 at 12:59..
Limit attempts of recovering from broken olm sessions

There are situations where this would result in an endless loop.
With this commit, we will only try once for each run of the client
https://invent.kde.org/neon/forks/libquotient/-/commit/27494fb27f5668a7e4a176011281637cfebaf3dc

Git commit 51d1a093d506a11aac046b299f7c9eccdff86593 by Alexey Rusakov on 18/11/2022 at 16:25..
Clean away log noise from redacted encrypted events
https://invent.kde.org/neon/forks/libquotient/-/commit/51d1a093d506a11aac046b299f7c9eccdff86593

Git commit 6c83d85f3c48e799d457a71c88032d602d5eb416 by Alexey Rusakov on 18/11/2022 at 19:06..
Use uint8_t as _the_ element type for FixedBuffer

A bit more experimentation brought up that FixedBuffer doesn't really
need to be that generic as to use different element types - its primary
purpose is maintaining a strictly managed block of bytes, after all.
https://invent.kde.org/neon/forks/libquotient/-/commit/6c83d85f3c48e799d457a71c88032d602d5eb416

Git commit dccaafd95acf63d18da7ccbb689d1e09dc610717 by GitHub (on behalf of Alexey Rusakov) on 19/11/2022 at 18:48..
Merge #589: Manage key and random material using OpenSSL facilities
https://invent.kde.org/neon/forks/libquotient/-/commit/dccaafd95acf63d18da7ccbb689d1e09dc610717

Git commit f6caf6dd98669885e59f93c36938752846b6a71f by Alexey Rusakov on 20/11/2022 at 10:53..
Cleanup a few Sonar and clang-tidy warnings

Most of this is about using unsignedSize() and byteArrayForOlm() where
size_t is, respectively, expected or used.
https://invent.kde.org/neon/forks/libquotient/-/commit/f6caf6dd98669885e59f93c36938752846b6a71f

Git commit 511cc0f5757972c0119e89c17ef91beddf3558ca by Alexey Rusakov on 20/11/2022 at 14:26..
Reduse BaseJob log spam

Closes #502.
https://invent.kde.org/neon/forks/libquotient/-/commit/511cc0f5757972c0119e89c17ef91beddf3558ca

Git commit 3a23c00bc89d040d7d0e88364740ee1b88b9aaf2 by Tobias Fella on 20/11/2022 at 14:28..
Use member variable instead of static variable
https://invent.kde.org/neon/forks/libquotient/-/commit/3a23c00bc89d040d7d0e88364740ee1b88b9aaf2

Git commit 219ca8dafa2194190cf8e5ef26451fefec9f93e4 by GitHub (on behalf of Alexey Rusakov) on 20/11/2022 at 16:25..
Merge branch 'dev' into tobias/limit-olm-sessions
https://invent.kde.org/neon/forks/libquotient/-/commit/219ca8dafa2194190cf8e5ef26451fefec9f93e4

Git commit 9ae5c0f34b9d3df021d032ec2b6f269a99a414a7 by GitHub (on behalf of Alexey Rusakov) on 20/11/2022 at 17:47..
Merge #590: Limit attempts of recovering from broken olm sessions
https://invent.kde.org/neon/forks/libquotient/-/commit/9ae5c0f34b9d3df021d032ec2b6f269a99a414a7

Git commit b37cb8a8c7fabd2c618e68e70018f7589e9fede4 by Alexey Rusakov on 20/11/2022 at 21:44..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/b37cb8a8c7fabd2c618e68e70018f7589e9fede4

Git commit d826af2fb8d096d962f5830ffd90aea50fe630fa by Alexey Rusakov on 21/11/2022 at 08:43..
CI: restrict concurrency across the board for now

Until Quotest can be run in parallel, the branch (or ref) the given job
runs on doesn't matter...
https://invent.kde.org/neon/forks/libquotient/-/commit/d826af2fb8d096d962f5830ffd90aea50fe630fa

Git commit 2fff7a8edbc288cf38d15c4929fede2923d936f6 by Alexey Rusakov on 21/11/2022 at 09:00..
Use Room::P::prevBatch to track if all history is loaded

...instead of a presence of RoomCreateEvent in the timeline.

Closes #508.
https://invent.kde.org/neon/forks/libquotient/-/commit/2fff7a8edbc288cf38d15c4929fede2923d936f6

Git commit c9d379184bceb84793e43a7f25d6861f75baedf4 by Alexey Rusakov on 21/11/2022 at 14:45..
Update CS API files
https://invent.kde.org/neon/forks/libquotient/-/commit/c9d379184bceb84793e43a7f25d6861f75baedf4

Git commit dccaf356ce798feeaf402486ec8f6a6f706df18c by GitHub (on behalf of Alexey Rusakov) on 21/11/2022 at 16:02..
Merge #593: Use Room::P::prevBatch to track if all history is loaded
https://invent.kde.org/neon/forks/libquotient/-/commit/dccaf356ce798feeaf402486ec8f6a6f706df18c

Git commit 5411de2b658ce4bb69ded36b78a02f4766d56218 by Alexey Rusakov on 21/11/2022 at 17:15..
FixedBuffer: make logs less revealing

No address dumps, in particular.
https://invent.kde.org/neon/forks/libquotient/-/commit/5411de2b658ce4bb69ded36b78a02f4766d56218

Git commit 4a4f371aad3554e63cc79721a333b18f7e4e7322 by Nicolas Fella on 22/11/2022 at 23:11..
Initialize emoji resource before using

This is needed when Quotient is built as a static lib
https://invent.kde.org/neon/forks/libquotient/-/commit/4a4f371aad3554e63cc79721a333b18f7e4e7322

Git commit 1ef9ac5140b733c61a3a2aa2b7c091b76a7f1e95 by Tobias Fella on 22/11/2022 at 23:37..
Also send encryption keys to invited users

As part of that, wait until any in-flight key queries are finished to make sure that we're not missing devices.
https://invent.kde.org/neon/forks/libquotient/-/commit/1ef9ac5140b733c61a3a2aa2b7c091b76a7f1e95

Git commit 073ddc8e37d323ad9b8d0a055eb7af9767750e02 by GitHub (on behalf of Alexey Rusakov) on 23/11/2022 at 18:29..
Merge pull request #594 from nicolasfella/initresource
https://invent.kde.org/neon/forks/libquotient/-/commit/073ddc8e37d323ad9b8d0a055eb7af9767750e02

Git commit 60455befb288f3be3e24b3a3f76488701ad047e1 by Tobias Fella on 23/11/2022 at 23:07..
Be consistent with inserting QByteArrays or QStrings into the database

Otherwise the queries will give unexpected results; in this case, breaking the check if a session is verified
https://invent.kde.org/neon/forks/libquotient/-/commit/60455befb288f3be3e24b3a3f76488701ad047e1

Git commit 5e5429b4078ffac650b6a6a0043b087430b0bf5b by Tobias Fella on 24/11/2022 at 22:33..
Change parameters to QByteArray
https://invent.kde.org/neon/forks/libquotient/-/commit/5e5429b4078ffac650b6a6a0043b087430b0bf5b

Git commit 65b2dde5c5339d068b071de6dd07fc4db250cc54 by GitHub (on behalf of Alexey Rusakov) on 25/11/2022 at 08:37..
Merge #596: Be consistent with inserting QByteArrays or QStrings into the database
https://invent.kde.org/neon/forks/libquotient/-/commit/65b2dde5c5339d068b071de6dd07fc4db250cc54

Git commit fff635747ff15f823503d4e4f04d739e687f6850 by Alexey Rusakov on 25/11/2022 at 10:18..
Database::setDevicesReceivedKey(): use the same index type as Olm
https://invent.kde.org/neon/forks/libquotient/-/commit/fff635747ff15f823503d4e4f04d739e687f6850

Git commit 9cea9332d33014b05228c4e8fce9b9c931904c6f by GitHub (on behalf of Tobias Fella) on 25/11/2022 at 15:47..
Update lib/connection.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/9cea9332d33014b05228c4e8fce9b9c931904c6f

Git commit 69664b543c946cb07d7c2b1ab11d58a1a78a4eb0 by GitHub (on behalf of Tobias Fella) on 25/11/2022 at 15:47..
Update lib/connection.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/69664b543c946cb07d7c2b1ab11d58a1a78a4eb0

Git commit 3efffd6b5c34b3079176bc68d68525b2e6628eae by GitHub (on behalf of Tobias Fella) on 25/11/2022 at 15:47..
Update lib/room.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/3efffd6b5c34b3079176bc68d68525b2e6628eae

Git commit 3e54388868d155aba94b92e062c8b38b2badf13f by Tobias Fella on 25/11/2022 at 15:57..
Refactor key querying
https://invent.kde.org/neon/forks/libquotient/-/commit/3e54388868d155aba94b92e062c8b38b2badf13f

Git commit ac4008a73b9f7c1a70b5324f11b4138ba52f4e20 by GitHub (on behalf of Alexey Rusakov) on 25/11/2022 at 19:07..
Merge #595: Also send encryption keys to invited users
https://invent.kde.org/neon/forks/libquotient/-/commit/ac4008a73b9f7c1a70b5324f11b4138ba52f4e20

Git commit e3b737a987c1a874e8145f877e5d2721bdcf1d93 by Alexey Rusakov on 25/11/2022 at 19:11..
Pass the whole session to Connection::sendSessionKeyToDevices()

The API is simpler, and those parameters shall not come from different
session objects anyway, right?
https://invent.kde.org/neon/forks/libquotient/-/commit/e3b737a987c1a874e8145f877e5d2721bdcf1d93

Git commit c73915d30dd432f504530f8e295c8ff96bbfa857 by Alexey Rusakov on 26/11/2022 at 21:40..
Connection: fix Sonar/Clang-Tidy warnings around recent code
https://invent.kde.org/neon/forks/libquotient/-/commit/c73915d30dd432f504530f8e295c8ff96bbfa857

Git commit 5364a9a269881bee5f453e7ebbb9d8963fad94e4 by Alexey Rusakov on 26/11/2022 at 21:42..
Connection: turn a few "slots" to Q_INVOKABLEs

Those functions were never intended to be called from connections.
https://invent.kde.org/neon/forks/libquotient/-/commit/5364a9a269881bee5f453e7ebbb9d8963fad94e4

Git commit c1dfa3c90709e1755a7027fdf9ab52993c5b82a7 by Alexey Rusakov on 26/11/2022 at 21:42..
Actually deprecate Connection::sendMessage()

The documentation warned about it for a long time.
https://invent.kde.org/neon/forks/libquotient/-/commit/c1dfa3c90709e1755a7027fdf9ab52993c5b82a7

Git commit bfe9a752c84788aca3a8763c91e25f71d58c0d32 by Alexey Rusakov on 27/11/2022 at 14:13..
Add an explanation to the previous commit's deprecation
https://invent.kde.org/neon/forks/libquotient/-/commit/bfe9a752c84788aca3a8763c91e25f71d58c0d32

Git commit 853d221914f40de7fb499903ca82416812932922 by Alexey Rusakov on 27/11/2022 at 19:49..
Clean up verification sessions upon expiry

The new Connection::Private::setupKeyVerificationSession() provides
common logic applied whenever a new key verification session is created.
Aside from adding the session to the internal registry and emitting
a signal, this function also ensures the removal of the session from
the registry as soon as it's deleted.

Closes #598.
https://invent.kde.org/neon/forks/libquotient/-/commit/853d221914f40de7fb499903ca82416812932922

Git commit 16668c4cb4703ac26fe3a58e471a522ad95e1547 by Alexey Rusakov on 27/11/2022 at 19:51..
Move isQueryingKeys() out of Q_SLOTS too

One more case of a non-slot.
https://invent.kde.org/neon/forks/libquotient/-/commit/16668c4cb4703ac26fe3a58e471a522ad95e1547

Git commit 3c64aeb4d25ea2015460b57fb06b1bda559455d5 by Alexey Rusakov on 28/11/2022 at 09:28..
Drop an extra blank line

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/3c64aeb4d25ea2015460b57fb06b1bda559455d5

Git commit b2c4d0d46b82be7b71994c5d03e5abae39904853 by Alexey Rusakov on 01/12/2022 at 13:56..
Update CS API files from newest matrix-spec
https://invent.kde.org/neon/forks/libquotient/-/commit/b2c4d0d46b82be7b71994c5d03e5abae39904853

Git commit 9dc87178043db73bd11a6f61dfb5a822fc679e30 by Alexey Rusakov on 05/12/2022 at 09:44..
Use std::to_address() for pointer de-fancying.
https://invent.kde.org/neon/forks/libquotient/-/commit/9dc87178043db73bd11a6f61dfb5a822fc679e30

Git commit 3ae04d02cc803c8e590844428d448a1c991cffcb by Alexey Rusakov on 06/12/2022 at 12:50..
Fix toJson(Omittable<>)

It seems to have never worked because addParam() does the unwrapping.
Direct usage would have broken the build.
https://invent.kde.org/neon/forks/libquotient/-/commit/3ae04d02cc803c8e590844428d448a1c991cffcb

Git commit e8ad26ba36ce4563b30767da82d94d802bcd4be9 by Alexey Rusakov on 06/12/2022 at 12:53..
syncjob.cpp: use addParam()
https://invent.kde.org/neon/forks/libquotient/-/commit/e8ad26ba36ce4563b30767da82d94d802bcd4be9

Git commit 290c5614ec46ca94eb2b6b460f56f5ad11fdda03 by Alexey Rusakov on 10/12/2022 at 09:56..
profileMinNsecs() -> constexpr ProfileMinNsecs
https://invent.kde.org/neon/forks/libquotient/-/commit/290c5614ec46ca94eb2b6b460f56f5ad11fdda03

Git commit 5fcbfbcb8c56a40977942893623d1ea1f626e351 by Alexey Rusakov on 10/12/2022 at 15:26..
Always qualify std::move()

A recent Clang added a warning on unqualified move() calls in -Wextra
and they seem to have a point.
https://invent.kde.org/neon/forks/libquotient/-/commit/5fcbfbcb8c56a40977942893623d1ea1f626e351

Git commit 41e7b4b02fb6aded8ee03488b6f06e9f2e523c3e by Alexey Rusakov on 10/12/2022 at 21:02..
room.cpp: remove excessive templating

It causes a not-quite-false-alarm of Sonar, previously masked by
unqualified move().
https://invent.kde.org/neon/forks/libquotient/-/commit/41e7b4b02fb6aded8ee03488b6f06e9f2e523c3e

Git commit 1e2f64e1e0eb52d9200c7045808a1983122eed8e by Alexey Rusakov on 11/12/2022 at 13:03..
...and add a missing std::move()
https://invent.kde.org/neon/forks/libquotient/-/commit/1e2f64e1e0eb52d9200c7045808a1983122eed8e

Git commit 0f81f7db11e436b22e1a9f91b7edd3e059a64381 by Alexey Rusakov on 11/12/2022 at 13:26..
Refresh documentation

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/0f81f7db11e436b22e1a9f91b7edd3e059a64381

Git commit 6fef8bc503a4630517596123efce0e5da0da77a4 by Alexey Rusakov on 11/12/2022 at 13:27..
Drop Room::Private::timelineBase()

This doesn't seem to have been used for quite some time, if ever.
https://invent.kde.org/neon/forks/libquotient/-/commit/6fef8bc503a4630517596123efce0e5da0da77a4

Git commit 2fc57042234ade121eeb8ae18ab99f8bf16ad0ce by Alexey Rusakov on 19/12/2022 at 15:44..
README.md: Add a forgotten logging category

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/2fc57042234ade121eeb8ae18ab99f8bf16ad0ce

Git commit 5eb8e665e1dc06f0073527a60372f175581af79f by Alexey Rusakov on 19/12/2022 at 15:47..
BaseJob: drop apiEndpoint()/setApiEndpoint()

The were deprecated in the header file but commented out and later down
the road removed completely in .cpp. Keeping those deprecated
declarations brings nothing but confusion - at a use attempt, one would
get a deprecation warning followed by a linking error.
https://invent.kde.org/neon/forks/libquotient/-/commit/5eb8e665e1dc06f0073527a60372f175581af79f

Git commit 64327f1de0475f03e065bf249be18d5312b0d6f9 by Alexey Rusakov on 20/12/2022 at 12:36..
Fix a few more unqualified move() cases
https://invent.kde.org/neon/forks/libquotient/-/commit/64327f1de0475f03e065bf249be18d5312b0d6f9

Git commit 302c4e786fc85e3d48221c7de625bd9cc2c0cb04 by Alexey Rusakov on 20/12/2022 at 12:41..
Drop Event::Type

It was barely used, event_type_t is no less readable and using it
(or auto) is less ambiguous than having two names for the same thing.
https://invent.kde.org/neon/forks/libquotient/-/commit/302c4e786fc85e3d48221c7de625bd9cc2c0cb04

Git commit a8f1dbb37937ab421478865188940da16074403c by Alexey Rusakov on 20/12/2022 at 12:42..
QUO_EVENT: Make static_assert() a bit clearer on what happened
https://invent.kde.org/neon/forks/libquotient/-/commit/a8f1dbb37937ab421478865188940da16074403c

Git commit b92f5533d86da72bd58571657d1cd76cb7f23262 by Alexey Rusakov on 20/12/2022 at 17:10..
.clang-format: pack headers like <QTest> with other Qt headers

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/b92f5533d86da72bd58571657d1cd76cb7f23262

Git commit f642c77953ca1b91f0c79ba578b4c7c139de4805 by Tobias Fella on 21/12/2022 at 15:37..
Fix compilation with e2ee on windows
https://invent.kde.org/neon/forks/libquotient/-/commit/f642c77953ca1b91f0c79ba578b4c7c139de4805

Git commit 71fdba440f51dbc2e19c268d8eaa18e98848680e by GitHub (on behalf of Alexey Rusakov) on 21/12/2022 at 17:32..
Merge #604: Fix compilation with e2ee on windows
https://invent.kde.org/neon/forks/libquotient/-/commit/71fdba440f51dbc2e19c268d8eaa18e98848680e

Git commit 42482869ca8cbecff5951f3021a834a4f3a113ed by Alexey Rusakov on 24/12/2022 at 19:16..
Refresh the list of fields exempt from redaction

As of v10 rooms (we don't distinguish between room versions yet; but
the updates since older room versions pertain to fields not used
to make any local decisions, anyway).
https://invent.kde.org/neon/forks/libquotient/-/commit/42482869ca8cbecff5951f3021a834a4f3a113ed

Git commit d40ce426a493638780929ac140b2bba6ade54e4d by Alexey Rusakov on 26/12/2022 at 19:04..
Install Ninja along with Qt

Thanks to aqt installer awesomeness and The Qt Project courtesy.
https://invent.kde.org/neon/forks/libquotient/-/commit/d40ce426a493638780929ac140b2bba6ade54e4d

Git commit 2d1e4088094b6fe765d2774839e9dbe550483ee7 by Alexey Rusakov on 26/12/2022 at 19:05..
CI: use Qt 6.4.1 instead of 6.3.1, LLVM by default
https://invent.kde.org/neon/forks/libquotient/-/commit/2d1e4088094b6fe765d2774839e9dbe550483ee7

Git commit 442f43b2e9f0f608cd0321e27e7710638733ed2c by Alexey Rusakov on 26/12/2022 at 19:08..
Use the latest patch version of given Qt
https://invent.kde.org/neon/forks/libquotient/-/commit/442f43b2e9f0f608cd0321e27e7710638733ed2c

Git commit bb8dcc304adb1130afff8c483940b2dfec38dfbb by Alexey Rusakov on 26/12/2022 at 21:50..
Try to build with E2EE on Windows
https://invent.kde.org/neon/forks/libquotient/-/commit/bb8dcc304adb1130afff8c483940b2dfec38dfbb

Git commit 11a5dea364472f052e2e5b0e02314213786fd2a8 by Alexey Rusakov on 27/12/2022 at 13:22..
Try to add E2EE to macOS

This completes E2EE CI coverage across all platforms.
https://invent.kde.org/neon/forks/libquotient/-/commit/11a5dea364472f052e2e5b0e02314213786fd2a8

Git commit bf29d2e12e6a8487714ebfec41fc9a2b525102cd by Alexey Rusakov on 27/12/2022 at 22:14..
Unify the job matrix as much as possible

...by picking the right default compiler depending on the platform.
https://invent.kde.org/neon/forks/libquotient/-/commit/bf29d2e12e6a8487714ebfec41fc9a2b525102cd

Git commit 51e435423dcbf4e50b7438b0f06e5f61c3b77739 by GitHub (on behalf of Alexey Rusakov) on 28/12/2022 at 07:54..
Merge #606: CI improvements
https://invent.kde.org/neon/forks/libquotient/-/commit/51e435423dcbf4e50b7438b0f06e5f61c3b77739

Git commit 225d7c5e8c42d59c078052a61b9dcd8ec4747e5e by Alexey Rusakov on 28/12/2022 at 20:07..
Add autotests target to streamline building just them
https://invent.kde.org/neon/forks/libquotient/-/commit/225d7c5e8c42d59c078052a61b9dcd8ec4747e5e

Git commit 6d574f350d62f8198f6ae3074afa193a5aceb106 by Alexey Rusakov on 29/12/2022 at 11:07..
Log if SSO port can't be listened to
https://invent.kde.org/neon/forks/libquotient/-/commit/6d574f350d62f8198f6ae3074afa193a5aceb106

Git commit abd09d3edda019323eff4c6540e5c8c48d805388 by Gary Wang on 29/12/2022 at 12:08..
Fix QTcpServer not working when proxy is applied
https://invent.kde.org/neon/forks/libquotient/-/commit/abd09d3edda019323eff4c6540e5c8c48d805388

Git commit d8d2ebc45735bca8019467cab470f8d444af1f70 by GitHub (on behalf of Alexey Rusakov) on 29/12/2022 at 13:47..
Merge #607: Fix QTcpServer not working when proxy is applied
https://invent.kde.org/neon/forks/libquotient/-/commit/d8d2ebc45735bca8019467cab470f8d444af1f70

Git commit 59a503d33b60467147695cb5e2bd77ef795508a4 by Alexey Rusakov on 31/12/2022 at 19:20..
Fix misleading size when logging secure deallocation
https://invent.kde.org/neon/forks/libquotient/-/commit/59a503d33b60467147695cb5e2bd77ef795508a4

Git commit faf25fdc5cbc561968384cae5cbf6fe432e2469a by Alexey Rusakov on 31/12/2022 at 20:55..
Streamline TestOlmAccount::claimKeys()
https://invent.kde.org/neon/forks/libquotient/-/commit/faf25fdc5cbc561968384cae5cbf6fe432e2469a

Git commit 98c27973d091f45d85f4d012ab1e749a39dd17a7 by Alexey Rusakov on 31/12/2022 at 23:27..
Soften the test
https://invent.kde.org/neon/forks/libquotient/-/commit/98c27973d091f45d85f4d012ab1e749a39dd17a7

Git commit 3c840b9605866ac64670c89ece97d1e3c2d2be9d by Tobias Fella on 04/01/2023 at 20:47..
Add include path for qtkeychain as PUBLIC
https://invent.kde.org/neon/forks/libquotient/-/commit/3c840b9605866ac64670c89ece97d1e3c2d2be9d

Git commit 3b02ab120689a57bd82b1cf9acef977d1905aa93 by GitHub (on behalf of Alexey Rusakov) on 05/01/2023 at 08:10..
Merge #611: Add include path for qtkeychain as PUBLIC
https://invent.kde.org/neon/forks/libquotient/-/commit/3b02ab120689a57bd82b1cf9acef977d1905aa93

Git commit b1b638e9a75b9ca8c6c222d8dd453419200f0b38 by Alexey Rusakov on 05/01/2023 at 14:21..
Make QtKeychain library dependency transitive too
https://invent.kde.org/neon/forks/libquotient/-/commit/b1b638e9a75b9ca8c6c222d8dd453419200f0b38

Git commit 94d7b7d3216d4df6dbfbd2d1dd95409e8da25d5f by Alexey Rusakov on 05/01/2023 at 14:54..
CMakeLists: Sum up configuration in one place

...bringing us pretty much back to the style used before 0.6 (and also
still used by Quaternion), only a bit lighter visually.
https://invent.kde.org/neon/forks/libquotient/-/commit/94d7b7d3216d4df6dbfbd2d1dd95409e8da25d5f

Git commit caab4f04da4f95d298a5222e277241d4aa1e645d by GitHub (on behalf of Alexey Rusakov) on 05/01/2023 at 20:27..
Merge #612: Fix QtKeychain dependency for certain
https://invent.kde.org/neon/forks/libquotient/-/commit/caab4f04da4f95d298a5222e277241d4aa1e645d

Git commit e29d70da5b9821ab3232985438f164b4f6adca3a by Hubert Chathi on 09/01/2023 at 15:47..
Update upstream source from tag 'upstream/0.7.0'

Update to upstream version '0.7.0'
with Debian dir 30dcb77a77433e4a54eab77c0b82ae925dead2d8
https://invent.kde.org/neon/forks/libquotient/-/commit/e29d70da5b9821ab3232985438f164b4f6adca3a

Git commit a2fdab355b7a06ebf91c1f8bddfc64ca07d42f72 by Hubert Chathi on 09/01/2023 at 15:47..
New upstream version 0.7.0
https://invent.kde.org/neon/forks/libquotient/-/commit/a2fdab355b7a06ebf91c1f8bddfc64ca07d42f72

Git commit 7802040428462bef66aae78be454e790e8b5be58 by Hubert Chathi on 09/01/2023 at 16:28..
don't track debian/files
https://invent.kde.org/neon/forks/libquotient/-/commit/7802040428462bef66aae78be454e790e8b5be58

Git commit 865ab86f31f901d472a2f1cc507a3dbb2b567245 by Hubert Chathi on 09/01/2023 at 16:28..
Debian release 0.7.0-1
https://invent.kde.org/neon/forks/libquotient/-/commit/865ab86f31f901d472a2f1cc507a3dbb2b567245

Git commit f38f5e7c44405cdc2c4f2c49f9982f459103bb60 by Alexey Rusakov on 09/01/2023 at 21:28..
0.7.1
https://invent.kde.org/neon/forks/libquotient/-/commit/f38f5e7c44405cdc2c4f2c49f9982f459103bb60

Git commit c8488e8376ecb35f9602c0554f70566b124197ef by Hubert Chathi on 09/01/2023 at 22:22..
enable e2ee support
https://invent.kde.org/neon/forks/libquotient/-/commit/c8488e8376ecb35f9602c0554f70566b124197ef

Git commit d317cdf0b07a1a7ac0180641aa166b98f9a8b3a4 by Hubert Chathi on 09/01/2023 at 22:32..
Update upstream source from tag 'upstream/0.7.1'

Update to upstream version '0.7.1'
with Debian dir 262b8a4756f71068c1ae178c92fe6b308d853a06
https://invent.kde.org/neon/forks/libquotient/-/commit/d317cdf0b07a1a7ac0180641aa166b98f9a8b3a4

Git commit 1573821759e8ce01dd32f9ed192b79912b10402d by Hubert Chathi on 09/01/2023 at 22:32..
New upstream version 0.7.1
https://invent.kde.org/neon/forks/libquotient/-/commit/1573821759e8ce01dd32f9ed192b79912b10402d

Git commit 102bddf08dcf3b9d3fbfed5fd78fed60c24f22b6 by Hubert Chathi on 09/01/2023 at 22:33..
Debian release 0.7.1-1
https://invent.kde.org/neon/forks/libquotient/-/commit/102bddf08dcf3b9d3fbfed5fd78fed60c24f22b6

Git commit 5211d8d5f836794993ff369fba978738f7a1fb59 by Hubert Chathi on 11/01/2023 at 14:28..
upload to experimental as per ftp-master request
https://invent.kde.org/neon/forks/libquotient/-/commit/5211d8d5f836794993ff369fba978738f7a1fb59

Git commit 5c8ac8af3e5b4bdf011312db1d747761cdfd60a7 by Alexey Rusakov on 18/01/2023 at 21:00..
connection.h: unify doc-comments style
https://invent.kde.org/neon/forks/libquotient/-/commit/5c8ac8af3e5b4bdf011312db1d747761cdfd60a7

Git commit e20f13f2e91b99ebbb30231bd724138e65dd7683 by Alexey Rusakov on 23/01/2023 at 19:10..
RoomMessageEvent: make msgTypes constexpr

It actually should be std::array, not std::vector; and now that
std::to_array() is available everywhere, the initialisation can be made
quite neat, too.
https://invent.kde.org/neon/forks/libquotient/-/commit/e20f13f2e91b99ebbb30231bd724138e65dd7683

Git commit eff1d242893c6c4c6d55b135c4faf677e6b8be87 by Volker Krause on 10/02/2023 at 19:30..
Unexport private classes

Nested classes by default inherit the visibility of their outer class,
so we need to explicitly set that back to hidden.
https://invent.kde.org/neon/forks/libquotient/-/commit/eff1d242893c6c4c6d55b135c4faf677e6b8be87

Git commit df8457fffc4c03f2e49243b9b0fca19c342a4d3f by Volker Krause on 11/02/2023 at 13:22..
Disable exception support where not needed

This reduces the library size of a size-optimized build by about 10%.
https://invent.kde.org/neon/forks/libquotient/-/commit/df8457fffc4c03f2e49243b9b0fca19c342a4d3f

Git commit c01aa520d6fb01581c4a7d1eba249821446a8e10 by GitHub (on behalf of Alexey Rusakov) on 11/02/2023 at 20:41..
Merge #617: Unexport private classes
https://invent.kde.org/neon/forks/libquotient/-/commit/c01aa520d6fb01581c4a7d1eba249821446a8e10

Git commit 857a482be2d76566bd81d49e04886270067aecae by GitHub (on behalf of Alexey Rusakov) on 12/02/2023 at 08:44..
Merge #619: Disable exception support where not needed
https://invent.kde.org/neon/forks/libquotient/-/commit/857a482be2d76566bd81d49e04886270067aecae

Git commit 4bb40044f472ff5c041790e420cd43b5d215e49a by Volker Krause on 13/02/2023 at 16:07..
Consistently mark QLatin1String constants as constexpr inline

constexpr alone ensures those are compile-time constructed, but without
the inline they are duplicated in each translation unit including the
corresponding header files (independent of usage).

In a size-optimized build that reduces the library size by almost 3%.
https://invent.kde.org/neon/forks/libquotient/-/commit/4bb40044f472ff5c041790e420cd43b5d215e49a

Git commit 50102c4b4078c4d43c9bc6157e893df5c8416a60 by GitHub (on behalf of Alexey Rusakov) on 13/02/2023 at 18:48..
Merge #621(vkrause): Consistently mark QLatin1String constants as constexpr inline
https://invent.kde.org/neon/forks/libquotient/-/commit/50102c4b4078c4d43c9bc6157e893df5c8416a60

Git commit 365758823e754a1d5e8b2ac6fdad9997c3b1a421 by Volker Krause on 14/02/2023 at 20:18..
Consistently use the QLatin1String key constants

Prepares for the eventual removal of the QString ones.

Deprecation attributes on the QString ones doesn't work unfortunately,
that triggers on every include of event.h (as that is technically a use
then, which is exactly the problem we want to fix by removing them).
This should work though when turning those into extern/exported
declarations.

Another possible approach could be to just make them aliases for the
QLatin1Strings. That wont break ABI as they are not part of the ABI at
this point. It is potentially an API change though, in case of those
keys being used in a place where a QLatin1String would not work. That
does seem somewhat unlikely though, given their primary use is with
QJson*.
https://invent.kde.org/neon/forks/libquotient/-/commit/365758823e754a1d5e8b2ac6fdad9997c3b1a421

Git commit 8f9aa3dbffaf98bbac2a3da0a975f866e4612501 by GitHub (on behalf of Alexey Rusakov) on 15/02/2023 at 13:18..
Merge #622(vkrause): Consistently use the QLatin1String key constants
https://invent.kde.org/neon/forks/libquotient/-/commit/8f9aa3dbffaf98bbac2a3da0a975f866e4612501

Git commit ef4411996bca374c6dbe33e41656bede97f7122a by Alexey Rusakov on 15/02/2023 at 13:38..
Log keychain errors as strings, not as codes
https://invent.kde.org/neon/forks/libquotient/-/commit/ef4411996bca374c6dbe33e41656bede97f7122a

Git commit 4ac3fd6bb3e7c4408817ab897c4eeced627ee0e9 by Alexey Rusakov on 15/02/2023 at 13:38..
Deduce std::pair types instead of using std::make_pair

Now that CTAD is in place, std::make_pair is not really needed.

(cherry picked from commit 85292f11e3ea0673bbf92e06a459a8deb6c7bb89)
https://invent.kde.org/neon/forks/libquotient/-/commit/4ac3fd6bb3e7c4408817ab897c4eeced627ee0e9

Git commit 6d03da5a342f92e08124b3183230b3193eda9923 by Alexey Rusakov on 15/02/2023 at 13:38..
AccountsRegistry: track loading accounts a bit more carefully

(cherry picked from commit 4aa14a71b895d49454dbaf1174df0ff1b453179a)
https://invent.kde.org/neon/forks/libquotient/-/commit/6d03da5a342f92e08124b3183230b3193eda9923

Git commit 0b979dda8152ec20890251839feb818e71e8571a by Volker Krause on 17/02/2023 at 16:08..
Distinguish between public and private link interface

This only propagates link dependencies to consumers that are actually
needed there. This also fixes Qt5 consumers needing to search for Qt
Multimedia themselves (at least when linking dynamically).

Also remove the unused OpenSSL::SSL dependency, only OpenSSL::Crypto
is used here.
https://invent.kde.org/neon/forks/libquotient/-/commit/0b979dda8152ec20890251839feb818e71e8571a

Git commit 6ffce03017f65f0e560601fa81df658c21e4063d by Tobias Fella on 17/02/2023 at 18:59..
Build with
    -DQT_NO_CAST_TO_ASCII
    -DQT_NO_CAST_FROM_ASCII
    -DQT_NO_URL_CAST_FROM_STRING
    -DQT_NO_CAST_FROM_BYTEARRAY
    -DQT_USE_QSTRINGBUILDER
    -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT
    -DQT_NO_FOREACH
https://invent.kde.org/neon/forks/libquotient/-/commit/6ffce03017f65f0e560601fa81df658c21e4063d

Git commit 8113f825bb21b779263790a97d94876d83f0739b by Tobias Fella on 17/02/2023 at 18:59..
Apply suggestions from code review

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/8113f825bb21b779263790a97d94876d83f0739b

Git commit a10ebf065b3714d92e9580c34c122b688f102bca by Tobias Fella on 17/02/2023 at 18:59..
Apply suggestions
https://invent.kde.org/neon/forks/libquotient/-/commit/a10ebf065b3714d92e9580c34c122b688f102bca

Git commit 84f5811c5001c60ea57ebbb231fb62a6f0b7864c by Tobias Fella on 17/02/2023 at 18:59..
Fix crash in quotest
https://invent.kde.org/neon/forks/libquotient/-/commit/84f5811c5001c60ea57ebbb231fb62a6f0b7864c

Git commit 214f38145df9c520c833837ed74e5bc813ab616f by Tobias Fella on 17/02/2023 at 18:59..
try fixing test
https://invent.kde.org/neon/forks/libquotient/-/commit/214f38145df9c520c833837ed74e5bc813ab616f

Git commit bf39669ae0439a570cbf0f66f8204c867d74f5e3 by Tobias Fella on 17/02/2023 at 18:59..
Try fixing tests
https://invent.kde.org/neon/forks/libquotient/-/commit/bf39669ae0439a570cbf0f66f8204c867d74f5e3

Git commit a3c63cbf47a06443d7697531629173d44c43bd09 by Tobias Fella on 17/02/2023 at 18:59..
:/
https://invent.kde.org/neon/forks/libquotient/-/commit/a3c63cbf47a06443d7697531629173d44c43bd09

Git commit 837573d8f6821b0d23d8393afb0a66081793afab by Tobias Fella on 17/02/2023 at 19:03..
?
https://invent.kde.org/neon/forks/libquotient/-/commit/837573d8f6821b0d23d8393afb0a66081793afab

Git commit 5f4618c41a80c61bc5391292727823d35e9bc882 by GitHub (on behalf of Alexey Rusakov) on 17/02/2023 at 20:05..
Merge #623(vkrause): Distinguish between public and private link interface
https://invent.kde.org/neon/forks/libquotient/-/commit/5f4618c41a80c61bc5391292727823d35e9bc882

Git commit e1f656a8638192cd042d9ece158bafbc92d69c37 by Tobias Fella on 17/02/2023 at 21:16..
Don't use QT_USE_STRINGBUILDER
https://invent.kde.org/neon/forks/libquotient/-/commit/e1f656a8638192cd042d9ece158bafbc92d69c37

Git commit a2c63bc31b117cf96dff48eaa84970b5266ecb15 by Volker Krause on 18/02/2023 at 15:06..
Propagate QtKeychain target properties to consumers automatically

When publicly linking against the QtKeychain target CMake will propagate
all its interface properties to consumers for us, including but not
limited to additional include search paths.
https://invent.kde.org/neon/forks/libquotient/-/commit/a2c63bc31b117cf96dff48eaa84970b5266ecb15

Git commit 1e47fbbf08b7220636f537b3a89797b1e2a648d2 by GitHub (on behalf of Alexey Rusakov) on 18/02/2023 at 17:33..
Merge #624(vkrause): Propagate QtKeychain target properties to consumers automatically
https://invent.kde.org/neon/forks/libquotient/-/commit/1e47fbbf08b7220636f537b3a89797b1e2a648d2

Git commit cd19307006550fa8f84e93e59aa5ae70fe292577 by GitHub (on behalf of Alexey Rusakov) on 24/02/2023 at 16:32..
Apply suggestions from code review
https://invent.kde.org/neon/forks/libquotient/-/commit/cd19307006550fa8f84e93e59aa5ae70fe292577

Git commit 969c5d1f3172ecd369bddd2d0fcff5c9ac1ae254 by GitHub (on behalf of Alexey Rusakov) on 24/02/2023 at 16:57..
Apply (more) suggestions from code review
https://invent.kde.org/neon/forks/libquotient/-/commit/969c5d1f3172ecd369bddd2d0fcff5c9ac1ae254

Git commit db16f8ae32413ef5014b98bd401b70e0180aa02e by GitHub (on behalf of Alexey Rusakov) on 24/02/2023 at 17:10..
Fix another suggestion FTBFS
https://invent.kde.org/neon/forks/libquotient/-/commit/db16f8ae32413ef5014b98bd401b70e0180aa02e

Git commit d3eaee22f7eaf16c28404a5270e6723f2d18f9c7 by GitHub (on behalf of Alexey Rusakov) on 24/02/2023 at 21:25..
Merge #620(tobias): Build without qt casts
https://invent.kde.org/neon/forks/libquotient/-/commit/d3eaee22f7eaf16c28404a5270e6723f2d18f9c7

Git commit f84b9440efd9498b5bc044890240f317bdee9f38 by Alexey Rusakov on 26/02/2023 at 13:21..
Refresh .clang-format; require ClangFormat 13

Allows to automatically add namespace ending comments now.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/f84b9440efd9498b5bc044890240f317bdee9f38

Git commit 8d0c257ba1e3b1d1fbed6169fe2ffb7cc0b0e445 by Alexey Rusakov on 26/02/2023 at 13:24..
Add CMakeUserPresets.json to .gitignore

For those who use those.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/8d0c257ba1e3b1d1fbed6169fe2ffb7cc0b0e445

Git commit cdf0f10633fe11f05b5196cba028b06f53a4cf36 by Alexey Rusakov on 26/02/2023 at 20:42..
Regenerate API with the latest GTAD snapshot
https://invent.kde.org/neon/forks/libquotient/-/commit/cdf0f10633fe11f05b5196cba028b06f53a4cf36

Git commit 02bbad418c2066694fcdbb2b0a94e77ff7cdf6de by Alexey Rusakov on 27/02/2023 at 10:04..
Bump to GTAD revision that actually works
https://invent.kde.org/neon/forks/libquotient/-/commit/02bbad418c2066694fcdbb2b0a94e77ff7cdf6de

Git commit 1aba2dfb430efdc70b43b180424e8d78557a3df5 by Alexey Rusakov on 27/02/2023 at 10:04..
Regenerate API once more, now based on Matrix 1.6
https://invent.kde.org/neon/forks/libquotient/-/commit/1aba2dfb430efdc70b43b180424e8d78557a3df5

Git commit 3a3b3e08d74879ac15480b248245649b314ed266 by Joshua Goins on 07/03/2023 at 22:35..
Add null checks for MxcReply to prevent crashing on bad request

When a server returns a bad request, it was still possible to call
methods on the null private object and cause a segfault.
https://invent.kde.org/neon/forks/libquotient/-/commit/3a3b3e08d74879ac15480b248245649b314ed266

Git commit 3c1c4f04b7756e276b033fb41399af727e824cec by GitHub (on behalf of Alexey Rusakov) on 08/03/2023 at 14:13..
Merge #628(redstrate): Add null checks for MxcReply to prevent crashing on bad request
https://invent.kde.org/neon/forks/libquotient/-/commit/3c1c4f04b7756e276b033fb41399af727e824cec

Git commit 58d8d2dea029bef3d2576f7cae57f3bdd65f7a82 by Joshua Goins on 11/03/2023 at 17:51..
Calculate and return the correct amount of bytesAvailable on MxcReply

Certain Qt image format plugins like WebP do a check on bytesAvailable
before reading further, but readData may be called beforehand and eat up
all available bytes. We now return the correct amount of available bytes
by using the parent bytesAvailable as well as the reply device's.
https://invent.kde.org/neon/forks/libquotient/-/commit/58d8d2dea029bef3d2576f7cae57f3bdd65f7a82

Git commit 772a8fa3e7e066e885a70cfd92f0deed9abd9e96 by GitHub (on behalf of Alexey Rusakov) on 11/03/2023 at 18:01..
Merge #627(redstrate): MxcReply: implement bytesAvailable
https://invent.kde.org/neon/forks/libquotient/-/commit/772a8fa3e7e066e885a70cfd92f0deed9abd9e96

Git commit 2d354f577d8768085b41e49e67258d84c9545ec7 by Tobias Fella on 11/03/2023 at 22:11..
Send megolm key when there is no new olm session

The existing logic is slightly broken: If there is no new olm session, we don't send a megolm session,
since we return early and the megolm session is only sent after the claim keys job returned.
https://invent.kde.org/neon/forks/libquotient/-/commit/2d354f577d8768085b41e49e67258d84c9545ec7

Git commit a86ddc2769b0375114f98140f81f3b5d00032ff4 by GitHub (on behalf of Alexey Rusakov) on 12/03/2023 at 07:01..
Brush up formattting
https://invent.kde.org/neon/forks/libquotient/-/commit/a86ddc2769b0375114f98140f81f3b5d00032ff4

Git commit 7a4ee96949c4327c5572e9e0fa9abb9b34c85c78 by GitHub (on behalf of Alexey Rusakov) on 12/03/2023 at 09:23..
Merge #629(tfella): Send megolm key when there is no new olm session
https://invent.kde.org/neon/forks/libquotient/-/commit/7a4ee96949c4327c5572e9e0fa9abb9b34c85c78

Git commit 4ae77805552db39a8301b19503ef0a78e7ca5b3d by Tobias Fella on 15/03/2023 at 00:07..
Fix processing multiple to-device events
https://invent.kde.org/neon/forks/libquotient/-/commit/4ae77805552db39a8301b19503ef0a78e7ca5b3d

Git commit 9fd3e290b1d8affcb09a9882c232831522be29b7 by GitHub (on behalf of Alexey Rusakov) on 15/03/2023 at 07:41..
Merge #631(tfella): Fix processing multiple to-device events
https://invent.kde.org/neon/forks/libquotient/-/commit/9fd3e290b1d8affcb09a9882c232831522be29b7

Git commit 40c23cb0c9df20a1339c2fb931f956cd9360a037 by Tobias Fella on 15/03/2023 at 17:56..
Refactor Connection::Private into a separate header
https://invent.kde.org/neon/forks/libquotient/-/commit/40c23cb0c9df20a1339c2fb931f956cd9360a037

Git commit e2d5c0d16aa4c4ee86aae608d62b9485420d01b5 by GitHub (on behalf of Alexey Rusakov) on 16/03/2023 at 09:24..
Merge #632(tfella): Refactor Connection::Private into a separate header
https://invent.kde.org/neon/forks/libquotient/-/commit/e2d5c0d16aa4c4ee86aae608d62b9485420d01b5

Git commit 413d22946177b121065d3ab74e1f16237e36dc69 by Tobias Fella on 16/03/2023 at 20:57..
Fix includes for connection_p.h
https://invent.kde.org/neon/forks/libquotient/-/commit/413d22946177b121065d3ab74e1f16237e36dc69

Git commit 92ca3668e6a3e7e305238742d9016f11d6489480 by Tobias Fella on 16/03/2023 at 22:05..
Add Doxyfile
https://invent.kde.org/neon/forks/libquotient/-/commit/92ca3668e6a3e7e305238742d9016f11d6489480

Git commit 422c7aa36dde44dcaf3464106c7ff46d6b00ae73 by GitHub (on behalf of Tobias Fella) on 17/03/2023 at 13:50..
Update lib/connection.h

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/422c7aa36dde44dcaf3464106c7ff46d6b00ae73

Git commit 942a9740a7971b62fe67bafca72e030090ab7a55 by Tobias Fella on 17/03/2023 at 14:02..
Don't build docs for .cpp files
https://invent.kde.org/neon/forks/libquotient/-/commit/942a9740a7971b62fe67bafca72e030090ab7a55

Git commit acf62469fc19c259a7ba89161e0acd17fc87d42d by Tobias Fella on 17/03/2023 at 14:46..
Hide connection_p.h and _impl
https://invent.kde.org/neon/forks/libquotient/-/commit/acf62469fc19c259a7ba89161e0acd17fc87d42d

Git commit dd69f2ccabb56d8ff57a4027ce06f52d08950746 by Tobias Fella on 17/03/2023 at 14:48..
Hide JsonConverter implementations
https://invent.kde.org/neon/forks/libquotient/-/commit/dd69f2ccabb56d8ff57a4027ce06f52d08950746

Git commit 58c7d2779afb97bb351c007be357e1dbce7e999b by Tobias Fella on 17/03/2023 at 23:12..
Add function to check if a device is verified from its device id and
add function to check if a device supports e2ee
https://invent.kde.org/neon/forks/libquotient/-/commit/58c7d2779afb97bb351c007be357e1dbce7e999b

Git commit f2d1c8daa9eb647f4ed03b106a7ae7632b1a73a1 by GitHub (on behalf of Alexey Rusakov) on 18/03/2023 at 09:11..
Merge #633(tfella): Fix includes for connection_p.h
https://invent.kde.org/neon/forks/libquotient/-/commit/f2d1c8daa9eb647f4ed03b106a7ae7632b1a73a1

Git commit 62cebf5d1a6cc22a863398aac5b44c5cc82b325b by Tobias Fella on 18/03/2023 at 18:55..
Apply suggestions and update gitignore
https://invent.kde.org/neon/forks/libquotient/-/commit/62cebf5d1a6cc22a863398aac5b44c5cc82b325b

Git commit 8023f591d294c75ebd754d91b921b1bc0c0211be by GitHub (on behalf of Tobias Fella) on 18/03/2023 at 18:56..
Update lib/connection.h

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/8023f591d294c75ebd754d91b921b1bc0c0211be

Git commit 2fd65876ba432ab9ec4e815cc69e65a2ab69ad00 by GitHub (on behalf of Alexey Rusakov) on 19/03/2023 at 12:12..
Merge #635(tfella): Add two utility functions
https://invent.kde.org/neon/forks/libquotient/-/commit/2fd65876ba432ab9ec4e815cc69e65a2ab69ad00

Git commit b30e202897b17cf439da5f8616aac23b2363e70d by Alexey Rusakov on 19/03/2023 at 18:00..
Connection: more setObjectName()s

So that Connection objects have names even before logging in.
https://invent.kde.org/neon/forks/libquotient/-/commit/b30e202897b17cf439da5f8616aac23b2363e70d

Git commit 98ce9a339db5cf130f40d727c70423c9a7427171 by Alexey Rusakov on 19/03/2023 at 18:11..
Connection::assumeIdentity(): get device id from GetTokenOwnerJob

...instead of using the one passed by the caller, which may or may not
be correct; the id encoded in the access token is by definition correct.
https://invent.kde.org/neon/forks/libquotient/-/commit/98ce9a339db5cf130f40d727c70423c9a7427171

Git commit cef7cbfc3a936e21de637eb46ebf3aa594aa8105 by Alexey Rusakov on 19/03/2023 at 18:37..
Make Connection::P::save/dropAccessToken() out of line

They are long enough and it's convenient to have them closer to
where they are called.
https://invent.kde.org/neon/forks/libquotient/-/commit/cef7cbfc3a936e21de637eb46ebf3aa594aa8105

Git commit 2c2c59d19adc485d7b8e738337caefe6d7523e77 by Alexey Rusakov on 19/03/2023 at 19:02..
Formatting, constification
https://invent.kde.org/neon/forks/libquotient/-/commit/2c2c59d19adc485d7b8e738337caefe6d7523e77

Git commit da993ab7f2281e32e18473a275947a8d05f45a72 by Alexey Rusakov on 19/03/2023 at 19:02..
Don't log each and every encrypted event

It is not scalable and litters logs with rather uninformative records.
https://invent.kde.org/neon/forks/libquotient/-/commit/da993ab7f2281e32e18473a275947a8d05f45a72

Git commit 14bd9aa08c98669b5dec0cacb99ccf85b08d8d4e by Alexey Rusakov on 19/03/2023 at 19:02..
AccountRegistry::get(): constify

There is no reason why get() should not be const.
https://invent.kde.org/neon/forks/libquotient/-/commit/14bd9aa08c98669b5dec0cacb99ccf85b08d8d4e

Git commit 09de298d67041e40ce9e797262418865d7998696 by Alexey Rusakov on 19/03/2023 at 19:02..
AccountRegistry: log addition and removal of accounts
https://invent.kde.org/neon/forks/libquotient/-/commit/09de298d67041e40ce9e797262418865d7998696

Git commit 44cfb799a5ab0f0f0eddf6aff43ea8895ff66d2b by Alexey Rusakov on 19/03/2023 at 19:02..
AccountRegistry::invokeLogin(): deprecate

There might be a better replacement for it; for now, the problems from
not addressing the corner cases well overweigh the convenience from
bootstrapping all the connections by a single call.
https://invent.kde.org/neon/forks/libquotient/-/commit/44cfb799a5ab0f0f0eddf6aff43ea8895ff66d2b

Git commit e8bcac93b19b746ec4b8d2d184203244ae3351a0 by Alexey Rusakov on 19/03/2023 at 19:02..
AccountRegistry::isLoggedIn(): check that the account is actually logged in

...not just exists in the registry.
https://invent.kde.org/neon/forks/libquotient/-/commit/e8bcac93b19b746ec4b8d2d184203244ae3351a0

Git commit b118158c2a68c470c518866bf0bdf29b19921092 by Alexey Rusakov on 19/03/2023 at 19:02..
AccountRegistry::add(): avoid adding two connections for the same user id
https://invent.kde.org/neon/forks/libquotient/-/commit/b118158c2a68c470c518866bf0bdf29b19921092

Git commit 84268cc851845cb4f452e5de4bfa829187538da5 by Alexey Rusakov on 20/03/2023 at 09:55..
Deprecate 3-arg Connection::assumeIdentity()

As suggested in code review.
https://invent.kde.org/neon/forks/libquotient/-/commit/84268cc851845cb4f452e5de4bfa829187538da5

Git commit 3780d0d15ced54b174bc6e473d09f494006ed9a9 by Alexey Rusakov on 20/03/2023 at 09:57..
Connection::sendSessionKeyToDevices: simplify nested traversal

Hope I haven't screwed up anything again.
https://invent.kde.org/neon/forks/libquotient/-/commit/3780d0d15ced54b174bc6e473d09f494006ed9a9

Git commit 3d00ce0917bbe3b956106ddd214cafdc1267f4ed by GitHub (on behalf of Alexey Rusakov) on 20/03/2023 at 16:10..
Merge #636(kitsune): Minor tweaks around Connection
https://invent.kde.org/neon/forks/libquotient/-/commit/3d00ce0917bbe3b956106ddd214cafdc1267f4ed

Git commit ce6fd8f8f30ff5838c01cfca41b337fab10cb5d0 by Alexey Rusakov on 25/03/2023 at 20:57..
Formatting cleanup

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/ce6fd8f8f30ff5838c01cfca41b337fab10cb5d0

Git commit 2bcdd0d23f239f42d5cc8e808e771736e8854bfd by Alexey Rusakov on 25/03/2023 at 20:58..
Fix a few Sonar/clang-tidy warnings

More const and explicit casts, mainly.
https://invent.kde.org/neon/forks/libquotient/-/commit/2bcdd0d23f239f42d5cc8e808e771736e8854bfd

Git commit 3036da38c2b68a0c9e98e561d7e97d8347ef4bd6 by Alexey Rusakov on 30/03/2023 at 12:51..
Connection::isIgnored(QString)

Ignored users are stored as ids, not User pointers internally; the
QString interface is lighter.
https://invent.kde.org/neon/forks/libquotient/-/commit/3036da38c2b68a0c9e98e561d7e97d8347ef4bd6

Git commit 386c43c77e644f55c20202e96169b28954d996c4 by Alexey Rusakov on 30/03/2023 at 12:58..
Room: drop events from ignored users

Normally the homeserver shouldn't even send those but there's a brief
period when the user has just been ignored in the client UI but
the homeserver hasn't learnt about that.
https://invent.kde.org/neon/forks/libquotient/-/commit/386c43c77e644f55c20202e96169b28954d996c4

Git commit bb08585bdb1d75c44713357d42866fef309f48dc by Alexey Rusakov on 30/03/2023 at 13:00..
Room::P::addRelation: ignore repeated relations

Also: factor out the non-template part of addRelation() to a separate
function.
https://invent.kde.org/neon/forks/libquotient/-/commit/bb08585bdb1d75c44713357d42866fef309f48dc

Git commit 57de0fd53eb9b316307ddc57b6e63f60456c7f50 by Alexey Rusakov on 31/03/2023 at 14:16..
Mark AccountRegistry instantiation in the logs

To support investigation of #861.
https://invent.kde.org/neon/forks/libquotient/-/commit/57de0fd53eb9b316307ddc57b6e63f60456c7f50

Git commit e4b2cca840b4eefbd79626766f1afe9d61a317b6 by Tobias Fella on 01/04/2023 at 12:14..
Add property for room account data
https://invent.kde.org/neon/forks/libquotient/-/commit/e4b2cca840b4eefbd79626766f1afe9d61a317b6

Git commit 82129f6c91c5db1671b022c03c4b5b6d2fe0fd2f by Alexey Rusakov on 01/04/2023 at 14:44..
Revert the previous commit

Instantiation occurs very early on and logging it doesn't help anything.
https://invent.kde.org/neon/forks/libquotient/-/commit/82129f6c91c5db1671b022c03c4b5b6d2fe0fd2f

Git commit 1e46f826d93dcd07e828ef01b9c4b1373e4bb5b1 by GitHub (on behalf of Tobias Fella) on 06/04/2023 at 14:17..
Update lib/room.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/1e46f826d93dcd07e828ef01b9c4b1373e4bb5b1

Git commit ece5f08d81d33478615d5f0e83c7bf3cde110cc9 by GitHub (on behalf of Tobias Fella) on 06/04/2023 at 14:17..
Update lib/room.h

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/ece5f08d81d33478615d5f0e83c7bf3cde110cc9

Git commit 5bb625ebc358367280f099e2e8b124fc6803863b by GitHub (on behalf of Alexey Rusakov) on 06/04/2023 at 16:13..
Merge #638(tfella): Add property for room account data
https://invent.kde.org/neon/forks/libquotient/-/commit/5bb625ebc358367280f099e2e8b124fc6803863b

Git commit 05a0b628a22c2066fb7e2c178d1b57d9272efdea by Tobias Fella on 07/04/2023 at 21:14..
Don't crash in AccountRegistry::get
https://invent.kde.org/neon/forks/libquotient/-/commit/05a0b628a22c2066fb7e2c178d1b57d9272efdea

Git commit bfe869bbe87e6af0a199450a3f9de283751f7729 by GitHub (on behalf of Alexey Rusakov) on 08/04/2023 at 08:59..
Merge #639(tfella): Don't crash in AccountRegistry::get
https://invent.kde.org/neon/forks/libquotient/-/commit/bfe869bbe87e6af0a199450a3f9de283751f7729

Git commit 4aae1fc350747e7938e0330eba2f08f17947aa8a by Alexey Rusakov on 16/04/2023 at 19:48..
converters.h: add std::array de/serialisation
https://invent.kde.org/neon/forks/libquotient/-/commit/4aae1fc350747e7938e0330eba2f08f17947aa8a

Git commit f575423c870a45796ad56b7396733fd2edb1e0cd by Alexey Rusakov on 16/04/2023 at 19:51..
KeyVerificationSession: use MSC3783 if available
https://invent.kde.org/neon/forks/libquotient/-/commit/f575423c870a45796ad56b7396733fd2edb1e0cd

Git commit 2b18f9c532b634af9630485f574763988d0a9033 by Tobias Fella on 16/04/2023 at 22:12..
Always query keys for this account after login

Fixes #641
https://invent.kde.org/neon/forks/libquotient/-/commit/2b18f9c532b634af9630485f574763988d0a9033

Git commit 61fb8cebca76d23fa5e13e6db31069f3159de00c by Alexey Rusakov on 17/04/2023 at 12:30..
Add a missing #include

Hopefully fixes building on Windows.
https://invent.kde.org/neon/forks/libquotient/-/commit/61fb8cebca76d23fa5e13e6db31069f3159de00c

Git commit 42959f666270c64fa5229efb0610159203636c2d by GitHub (on behalf of Alexey Rusakov) on 17/04/2023 at 12:59..
Merge #642(tobias): Always query keys for this account after login
https://invent.kde.org/neon/forks/libquotient/-/commit/42959f666270c64fa5229efb0610159203636c2d

Git commit 4b5c66841228fdf4a1bc1963c0ec48dbddff5ff4 by GitHub (on behalf of Alexey Rusakov) on 17/04/2023 at 16:49..
Merge #640(kitsune): Use the fixed MAC when possible (MSC3783)
https://invent.kde.org/neon/forks/libquotient/-/commit/4b5c66841228fdf4a1bc1963c0ec48dbddff5ff4

Git commit 67244f708dc2c3a22b270de5c69ef233173d478e by Alexey Rusakov on 17/04/2023 at 17:25..
KeyVerificationStartEvent::shortAuthenticationString(): Fix a typo

This accessor never picked the correct piece of JSON before.
https://invent.kde.org/neon/forks/libquotient/-/commit/67244f708dc2c3a22b270de5c69ef233173d478e

Git commit 2322b50f3be6a125636e62c43df700e977134cb0 by Alexey Rusakov on 21/04/2023 at 15:49..
Add inline where appropriate
https://invent.kde.org/neon/forks/libquotient/-/commit/2322b50f3be6a125636e62c43df700e977134cb0

Git commit 15a0e0b886df65bddbd28657dd16471b5b78eaea by Volker Krause on 23/04/2023 at 09:59..
Rename lib/ to Quotient/ to match the namespaced include prefix
https://invent.kde.org/neon/forks/libquotient/-/commit/15a0e0b886df65bddbd28657dd16471b5b78eaea

Git commit d839766eb88dcd1887856a5ce05bdcee166a2636 by Volker Krause on 23/04/2023 at 09:59..
Always install headers into the namespaced include path

The include search path propagated by CMake to consumers is adjusted
accordingly, so this remains source-compatible.
https://invent.kde.org/neon/forks/libquotient/-/commit/d839766eb88dcd1887856a5ce05bdcee166a2636

Git commit a8f25ff5a676b6c478d2919e67a9575c33037e64 by Volker Krause on 23/04/2023 at 09:59..
Use namespaced includes in generated code

For this to work transparently, add the include install location to the
search path as well.
https://invent.kde.org/neon/forks/libquotient/-/commit/a8f25ff5a676b6c478d2919e67a9575c33037e64

Git commit 82c2501349527c09f635763762fe6ba6b17802ed by Volker Krause on 23/04/2023 at 09:59..
Use namespaced includes in non-generated header files as well
https://invent.kde.org/neon/forks/libquotient/-/commit/82c2501349527c09f635763762fe6ba6b17802ed

Git commit 69aa81825cc34503555e870e14e7fa2f17463b18 by Volker Krause on 23/04/2023 at 09:59..
Allow consumers to enforce using namespaced includes

Setting QUOTIENT_FORCE_NAMESPACED_INCLUDES before the find_package
call will not add the namespace include dir to the search path.

This isn't really elegant, but allows both retaining full source
compatibility and helps consumers that have clashing include file
names.
https://invent.kde.org/neon/forks/libquotient/-/commit/69aa81825cc34503555e870e14e7fa2f17463b18

Git commit 7cd3440a39926b65771723def4b95d0f5a8c1693 by Volker Krause on 23/04/2023 at 10:16..
Make libQuotient itself buildable with namespaced includes
https://invent.kde.org/neon/forks/libquotient/-/commit/7cd3440a39926b65771723def4b95d0f5a8c1693

Git commit dd5ee7d6a9247ccb4376436c0104f4227527323f by Volker Krause on 23/04/2023 at 12:54..
Use namespaced includes in test code as well

This is necessary in order to also allow enforcing namespaced includes
in embedded/inline builds of libQuotient and is cleaner to do that way
then to manually mess with include search paths just for the tests.
https://invent.kde.org/neon/forks/libquotient/-/commit/dd5ee7d6a9247ccb4376436c0104f4227527323f

Git commit 11dfc44f0e769fac8a61f53885ea66d0538a5fe2 by Volker Krause on 23/04/2023 at 12:54..
Also honor QUOTIENT_FORCE_NAMESPACED_INCLUDES for inline/embedded builds
https://invent.kde.org/neon/forks/libquotient/-/commit/11dfc44f0e769fac8a61f53885ea66d0538a5fe2

Git commit 4055bc6510818a3128fad26f80942df3495bf89e by GitHub (on behalf of Alexey Rusakov) on 23/04/2023 at 15:47..
Merge #626(vkrause): Namespaced includes
https://invent.kde.org/neon/forks/libquotient/-/commit/4055bc6510818a3128fad26f80942df3495bf89e

Git commit ee73895d00cf2fd8569b41cc30cea371e660eb57 by Tobias Fella on 23/04/2023 at 17:26..
Fix sonar
https://invent.kde.org/neon/forks/libquotient/-/commit/ee73895d00cf2fd8569b41cc30cea371e660eb57

Git commit a6780ff6c641c5a0c7ef97768ddfcc2feb45d366 by GitHub (on behalf of Alexey Rusakov) on 23/04/2023 at 17:48..
Merge #645(tobias): Fix sonar
https://invent.kde.org/neon/forks/libquotient/-/commit/a6780ff6c641c5a0c7ef97768ddfcc2feb45d366

Git commit dec0f411cddf44514ac85dbb7c9d39d6f57fd717 by Volker Krause on 24/04/2023 at 11:06..
Make Qt5 and Qt6 versions of libQuotient co-installable

That means renaming the library target and the build system support files
to have a "Qt6" suffix in case of a Qt6 build. Include files remain
unchanged, those work with both versions.

This isn't pretty but should hopefully allow distributions to ship both
variants at the same time for now.
https://invent.kde.org/neon/forks/libquotient/-/commit/dec0f411cddf44514ac85dbb7c9d39d6f57fd717

Git commit cb13c4a89e40989ac1b4451d6137c140d1462f50 by Tobias Fella on 25/04/2023 at 13:25..
Change "user has no name" log from warning to debug

While technically a warning, it seems to happen quite a lot, causing a lot of mostly irrelevant warnings in the terminal
https://invent.kde.org/neon/forks/libquotient/-/commit/cb13c4a89e40989ac1b4451d6137c140d1462f50

Git commit 88e79a58fd21633ea272815657e789e11b173a54 by GitHub (on behalf of Alexey Rusakov) on 26/04/2023 at 08:37..
Merge #647(tobias): Change "user has no name" log from warning to debug
https://invent.kde.org/neon/forks/libquotient/-/commit/88e79a58fd21633ea272815657e789e11b173a54

Git commit d1a0f3ea3f08f043d8d4b29d50b096f513c93762 by Alexey Rusakov on 26/04/2023 at 09:45..
Update documentation

- The GTAD-related things are moved out from CONTRIBUTING.md
  to CODE_GENERATION.md
- API/ABI guarantees moved from CONTRIBUTING.md to README.md
- QUOTIENT_FORCE_NAMESPACED_INCLUDES documented
- Brush-ups overall

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/d1a0f3ea3f08f043d8d4b29d50b096f513c93762

Git commit d9d00d3a7424839b3d526d5edda43d591432e19b by Alexey Rusakov on 26/04/2023 at 09:52..
Clean up trailing whitespaces

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/d9d00d3a7424839b3d526d5edda43d591432e19b

Git commit 7d256c00898db3b2b0fa7081c65c882cb593d6e5 by Alexey Rusakov on 26/04/2023 at 13:41..
0.7.2
https://invent.kde.org/neon/forks/libquotient/-/commit/7d256c00898db3b2b0fa7081c65c882cb593d6e5

Git commit fc583cd00253bcfc4c86533c23998afbe542ebb0 by Tobias Fella on 27/04/2023 at 19:37..
Create static.yml
https://invent.kde.org/neon/forks/libquotient/-/commit/fc583cd00253bcfc4c86533c23998afbe542ebb0

Git commit 11200666d1e7f00b47585537f646e141b406bac0 by Tobias Fella on 27/04/2023 at 19:37..
Add style
https://invent.kde.org/neon/forks/libquotient/-/commit/11200666d1e7f00b47585537f646e141b406bac0

Git commit 558d8ee1c273d525523e05e3b5d520a1648f4f65 by Tobias Fella on 28/04/2023 at 10:21..
Don't specify bash as shell
https://invent.kde.org/neon/forks/libquotient/-/commit/558d8ee1c273d525523e05e3b5d520a1648f4f65

Git commit 41a6522ca9c67af2146b4f06e0ffd6d380766c20 by Tobias Fella on 28/04/2023 at 10:22..
Remove outdated comment
https://invent.kde.org/neon/forks/libquotient/-/commit/41a6522ca9c67af2146b4f06e0ffd6d380766c20

Git commit 038026b7ada444c5acad2d5cc626bf9fb63ceb42 by GitHub (on behalf of Alexey Rusakov) on 28/04/2023 at 11:30..
Merge #634(tobias): Add Doxyfile; publish docs
https://invent.kde.org/neon/forks/libquotient/-/commit/038026b7ada444c5acad2d5cc626bf9fb63ceb42

Git commit 07715340edd3b0e991c891b5e27be92d8adf9d9b by Tobias Fella on 28/04/2023 at 11:37..
Update path to source files
https://invent.kde.org/neon/forks/libquotient/-/commit/07715340edd3b0e991c891b5e27be92d8adf9d9b

Git commit 7be73d4a04dd860d8b0d33b020ebda616b4055f3 by Tobias Fella on 28/04/2023 at 12:01..
Install graphviz during docs generation
https://invent.kde.org/neon/forks/libquotient/-/commit/7be73d4a04dd860d8b0d33b020ebda616b4055f3

Git commit a09da96d438ff00e77d1cd989f14fefeaa21a27b by GitHub (on behalf of Alexey Rusakov) on 28/04/2023 at 12:09..
Merge #646(vkrause): Make Qt5 and Qt6 versions of libQuotient co-installable
https://invent.kde.org/neon/forks/libquotient/-/commit/a09da96d438ff00e77d1cd989f14fefeaa21a27b

Git commit e9c3d37995ea7bee5e989a679e0b5c6d0cdc660b by Alexey Rusakov on 28/04/2023 at 12:13..
Connection::assumeIdentity: emit networkError when facing one

Previously it was loginError() in all cases, leading to clients unable
to distinguish between an invalid token and a problem with homeserver
accessibility.

Closes #614.
https://invent.kde.org/neon/forks/libquotient/-/commit/e9c3d37995ea7bee5e989a679e0b5c6d0cdc660b

Git commit ecd669000808cf59ea9bb9e44edf5bdeb7a95dbd by Alexey Rusakov on 28/04/2023 at 12:16..
CMakeLists.txt: off to 0.8
https://invent.kde.org/neon/forks/libquotient/-/commit/ecd669000808cf59ea9bb9e44edf5bdeb7a95dbd

Git commit 1187b3174e6187bf2bd516da01e4991c3803909b by Volker Krause on 29/04/2023 at 10:29..
Actually mark global QString constants as deprecated

Technically this is an API change as their type changes from QString to
QLatin1String now, but given that QLatin1String can be used almost
everywhere a QString can be used (and those constants are for use with
the Qt JSON API anyway), this should be fine.

This is not an ABI change as those constants are not part of the ABI but
are copied into every translation unit regardless of their use there.
With that no longer happening now we also save ~12kB of binary size on a
size-optimized build of libQuotient.
https://invent.kde.org/neon/forks/libquotient/-/commit/1187b3174e6187bf2bd516da01e4991c3803909b

Git commit 5c719c432e65c377e08246a42dc8136aba2b6343 by Tobias Fella on 29/04/2023 at 18:37..
Improve alias remapping

- Don't print a warning if an alias is remapped from a room to its replacement room
- Don't remap aliases from the new room to the old room
https://invent.kde.org/neon/forks/libquotient/-/commit/5c719c432e65c377e08246a42dc8136aba2b6343

Git commit 8694601f519e9a5f3fe7cfa4acc2fea7e4892c49 by Volker Krause on 30/04/2023 at 09:46..
Deprecate the "L" constant variants rather than the regularly named ones

As per review feedback.
https://invent.kde.org/neon/forks/libquotient/-/commit/8694601f519e9a5f3fe7cfa4acc2fea7e4892c49

Git commit d917ce398e22de0b8cd2b97db3773838a1abe018 by Volker Krause on 30/04/2023 at 09:50..
Use non-deprecated event constants
https://invent.kde.org/neon/forks/libquotient/-/commit/d917ce398e22de0b8cd2b97db3773838a1abe018

Git commit 4fc53c1d8aef1b89a88098fdc3846f3e64165c4b by GitHub (on behalf of Alexey Rusakov) on 02/05/2023 at 16:23..
Merge #648(vkrause): Actually mark global QString constants as deprecated
https://invent.kde.org/neon/forks/libquotient/-/commit/4fc53c1d8aef1b89a88098fdc3846f3e64165c4b

Git commit 51da171ccbfbbf0f2179add3f584757d91282ced by GitHub (on behalf of Alexey Rusakov) on 02/05/2023 at 17:33..
Merge #649(tobias): Improve alias remapping
https://invent.kde.org/neon/forks/libquotient/-/commit/51da171ccbfbbf0f2179add3f584757d91282ced

Git commit 46fe25aa9daf78b0c36d0dbef6bed7c7174694e6 by Alexey Rusakov on 03/05/2023 at 12:23..
CREATE_CONNECTION -> createTestConnection()

Also, #include "testutils.h" doesn't cause 'using namespace Quotient'
anymore.
https://invent.kde.org/neon/forks/libquotient/-/commit/46fe25aa9daf78b0c36d0dbef6bed7c7174694e6

Git commit 14f31f4c75de1b9e858e04194c9169e3a4da7a9c by Alexey Rusakov on 03/05/2023 at 12:23..
Omittable: drop ensure(); minor polish

Omittable::ensure() has been unused for some time (and by the way,
its name was misleading, should have been something like tryEmplace()
instead).
https://invent.kde.org/neon/forks/libquotient/-/commit/14f31f4c75de1b9e858e04194c9169e3a4da7a9c

Git commit 5ce9c718689ee83f6a7504d08cacfa3f1123bf4b by Alexey Rusakov on 03/05/2023 at 12:23..
Minor log polishing
https://invent.kde.org/neon/forks/libquotient/-/commit/5ce9c718689ee83f6a7504d08cacfa3f1123bf4b

Git commit 99bed0a5930955f674d96fff5afb52f5b89815de by Alexey Rusakov on 03/05/2023 at 12:23..
Fix a sonar/clang-tidy warning

It complained about an implicit constructor that can be called with
a single argument, which in fact doesn't have to be that flexible.
https://invent.kde.org/neon/forks/libquotient/-/commit/99bed0a5930955f674d96fff5afb52f5b89815de

Git commit 9e1e4e345fb72c1b114893246f1203fc39672ab8 by Volker Krause on 05/05/2023 at 15:48..
Fix CMake configuration when using Qt6

This wasn't adjusted properly when implementing co-installability.
https://invent.kde.org/neon/forks/libquotient/-/commit/9e1e4e345fb72c1b114893246f1203fc39672ab8

Git commit da826f9dd26e7f10eacb9400b61d0f707f8d121b by GitHub (on behalf of Alexey Rusakov) on 05/05/2023 at 20:27..
Merge #650(vkrause): Fix CMake configuration when using Qt6
https://invent.kde.org/neon/forks/libquotient/-/commit/da826f9dd26e7f10eacb9400b61d0f707f8d121b

Git commit 7f6a61270f2c8cc2d5daf746fddb8e06cfadf007 by Justin Hibbits on 05/05/2023 at 23:17..
Fix Matrix URI parsing

Matrix URIs are encoded in standard URL encoding, with special
characters replaced with "%"hex ASCII.  Handle the ':' hex encoding so
internal links are properly handled.
https://invent.kde.org/neon/forks/libquotient/-/commit/7f6a61270f2c8cc2d5daf746fddb8e06cfadf007

Git commit 06c474ab3ecf7cde582f564aa1e0fb670b7099e3 by Alexey Rusakov on 06/05/2023 at 09:30..
RoomEvent: originalEvent is always EncryptedEvent

RoomEvent was used inside originalEvent to somewhat simplify
manipulations in places like Room::P::decryptIncomingEvents() - but
it only takes an extra eventCast<> call to get things right.

(cherry picked from commit 70ddffe6907407a48f068026604f2933a67f6ab7)
https://invent.kde.org/neon/forks/libquotient/-/commit/06c474ab3ecf7cde582f564aa1e0fb670b7099e3

Git commit 6b00b84b559ff678b549132b9ca71bfaad5f53c8 by Alexey Rusakov on 06/05/2023 at 19:30..
Connection::roomSucceeds(); fix a crash when updating some room aliases

The recently added code in Connection::updateRoomAliases() only checked
one step ahead/back and did not check if the room with a given id is
available locally, dereferencing a null pointer in some cases.
https://invent.kde.org/neon/forks/libquotient/-/commit/6b00b84b559ff678b549132b9ca71bfaad5f53c8

Git commit 755090694789cca648d739c00fd7f0b561bb9bd4 by Alexey Rusakov on 06/05/2023 at 19:34..
CI: add gnome-keyring on Linux

...to provide a backend for QtKeychain.
https://invent.kde.org/neon/forks/libquotient/-/commit/755090694789cca648d739c00fd7f0b561bb9bd4

Git commit e9e4214d926e4cc032e0ede5fb0a91e71804945c by Alexey Rusakov on 06/05/2023 at 23:43..
Make autotests/run-tests.sh more versatile

1. Add :z option to the first docker invocation, to allow usage
   in presence of SELinux
2. Make paths more robust and slightly easier to make them configurable
   in the future
3. Look for KEEP_SYNAPSE and KEEP_DATA_PATH variables and skip removing
   the Synapse container and the data directory respectively when these
   are defined. This is helpful for debugging (and also makes starting
   a permanent test Synapse much easier).
https://invent.kde.org/neon/forks/libquotient/-/commit/e9e4214d926e4cc032e0ede5fb0a91e71804945c

Git commit ab5206c5c66872abdd83bdc92f91ab7d313b098a by Alexey Rusakov on 06/05/2023 at 23:46..
TestOlmAccount: drop connection captures where not needed

Actually, they are even harmful, leading to std::shared_ptr initiating
the cleanup of the Connection object from a rather obscure place inside
the lambda cleanup, ending with what seems to be an attempt to interact
with already freed memory or something like that.
https://invent.kde.org/neon/forks/libquotient/-/commit/ab5206c5c66872abdd83bdc92f91ab7d313b098a

Git commit 25eb357fc7241e39464ed242dbe88ea63c7b21ba by Alexey Rusakov on 06/05/2023 at 23:47..
Database: constify what can/should be constified

Overall it's a rather thankless task as there's no reasonable way to
distinguish read-only queries from those that modify data ; but let's
start with at least something.
https://invent.kde.org/neon/forks/libquotient/-/commit/25eb357fc7241e39464ed242dbe88ea63c7b21ba

Git commit cdec0807770e9a32cf6300d31e38dabc3a768583 by Alexey Rusakov on 07/05/2023 at 19:44..
Constify Connection::roomSucceeds()
https://invent.kde.org/neon/forks/libquotient/-/commit/cdec0807770e9a32cf6300d31e38dabc3a768583

Git commit 2bcb0ad04018808356137a7fb9fe0ea218a65060 by Alexey Rusakov on 07/05/2023 at 19:45..
Drop non-const AccountRegistry::get()
https://invent.kde.org/neon/forks/libquotient/-/commit/2bcb0ad04018808356137a7fb9fe0ea218a65060

Git commit 19af390f24a5e69115ed4b9a6f423832f399d54c by Alexey Rusakov on 07/05/2023 at 22:13..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/19af390f24a5e69115ed4b9a6f423832f399d54c

Git commit 324b83bf621e4da50a3084e469dc41d0ce20aa07 by Alexey Rusakov on 07/05/2023 at 22:14..
Database::execute(QSqlQuery&) should not return the query

This leads to copying the original query, which looks fishy and is deprecated in Qt 6 now.
https://invent.kde.org/neon/forks/libquotient/-/commit/324b83bf621e4da50a3084e469dc41d0ce20aa07

Git commit 5644219d98eed7d01819df96cdea01f58ad1afb6 by Alexey Rusakov on 08/05/2023 at 01:46..
run-tests.sh: be dumb and assume autotests/run-tests.sh invocation

BASH_SOURCE, apparently, is not reliable enough to figure out
the script's own directory (in one case CI fails because it's
empty). So just assume that the script is always run from
the directory one level above autotests (which is the way it's
been called in CI for all this time).
https://invent.kde.org/neon/forks/libquotient/-/commit/5644219d98eed7d01819df96cdea01f58ad1afb6

Git commit 360b4963a36a96ef0f7d64c2d2c7024a9163ca20 by GitHub (on behalf of Alexey Rusakov) on 08/05/2023 at 09:10..
Merge #651(chmeeedalf): Fix Matrix URI parsing
https://invent.kde.org/neon/forks/libquotient/-/commit/360b4963a36a96ef0f7d64c2d2c7024a9163ca20

Git commit e5b6c1008dbe44ccef8c07130b13115f392964a3 by Alexey Rusakov on 09/05/2023 at 09:09..
Cleanup doc-comments

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/e5b6c1008dbe44ccef8c07130b13115f392964a3

Git commit 29f849b2c288ae6f98156bdce43f7d4a400a43c8 by Alexey Rusakov on 09/05/2023 at 09:09..
run-tests.sh -> setup-tests.sh + ctest

Move out ctest invocation from run-tests.sh and rename the script to
setup-tests.sh, respectively. Now you can separately setup test Synapse
and then re-run CTest tests however many times you like.
https://invent.kde.org/neon/forks/libquotient/-/commit/29f849b2c288ae6f98156bdce43f7d4a400a43c8

Git commit 023d79e5fefcf6413bfe012092f7e4e1392828f4 by Alexey Rusakov on 09/05/2023 at 09:09..
.gitignore: add autotests/synapse-data

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/023d79e5fefcf6413bfe012092f7e4e1392828f4

Git commit 65d86b7240bc836a82d726a19ee957b37bb06d50 by Alexey Rusakov on 09/05/2023 at 09:09..
More minor code cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/65d86b7240bc836a82d726a19ee957b37bb06d50

Git commit e2db08f4ab9053ea62ab4cafc7dcca20f1cc27bc by Alexey Rusakov on 09/05/2023 at 09:09..
Be explicit that onSyncSuccess consumes its data arg

To shut up Sonar, but also for visual clarity.
https://invent.kde.org/neon/forks/libquotient/-/commit/e2db08f4ab9053ea62ab4cafc7dcca20f1cc27bc

Git commit 46b7836ef53b5ac6fae43894f35be4dc8e93307e by Alexey Rusakov on 09/05/2023 at 09:58..
CI: fix tests invocation
https://invent.kde.org/neon/forks/libquotient/-/commit/46b7836ef53b5ac6fae43894f35be4dc8e93307e

Git commit 564773dcc36a9cc3e6a365c0ed45d552dd86d952 by Anna “CyberTailor” on 09/05/2023 at 19:02..
Fix E2EE build with LibreSSL
https://invent.kde.org/neon/forks/libquotient/-/commit/564773dcc36a9cc3e6a365c0ed45d552dd86d952

Git commit c016b17e0e5e9c167f4ad8c767a0c4023845c609 by GitHub (on behalf of Alexey Rusakov) on 10/05/2023 at 07:59..
Merge #654(CyberTailor): Fix E2EE build with LibreSSL
https://invent.kde.org/neon/forks/libquotient/-/commit/c016b17e0e5e9c167f4ad8c767a0c4023845c609

Git commit 389f3657e3425ad8217e5126f40a0978723bf74e by Alexey Rusakov on 11/05/2023 at 10:27..
BaseJob: Enable client-side QNetworkRequest adjustments

This may be useful for things like
https://github.com/matrix-org/matrix-spec-proposals/pull/3860.
https://invent.kde.org/neon/forks/libquotient/-/commit/389f3657e3425ad8217e5126f40a0978723bf74e

Git commit af0af0cdc97d70d12118ececc45923765cfcf1fc by Alexey Rusakov on 11/05/2023 at 10:28..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/af0af0cdc97d70d12118ececc45923765cfcf1fc

Git commit cac70eb70ec2f8feba780bd25e239a8a56a3e791 by Alexey Rusakov on 13/05/2023 at 08:09..
Fix building with E2EE disabled

Weird that this code even compiled without E2EE before.
https://invent.kde.org/neon/forks/libquotient/-/commit/cac70eb70ec2f8feba780bd25e239a8a56a3e791

Git commit fa06819faed41e3e43796dac8fa0486f54238686 by Alexey Rusakov on 13/05/2023 at 09:21..
.clang-tidy: ignore macros in cognitive complexity calculations
https://invent.kde.org/neon/forks/libquotient/-/commit/fa06819faed41e3e43796dac8fa0486f54238686

Git commit 9b59cf14edbe5f4828267f2fd4de224f0cfac715 by Alexey Rusakov on 13/05/2023 at 09:22..
Cover more E2EE things with #ifdefs
https://invent.kde.org/neon/forks/libquotient/-/commit/9b59cf14edbe5f4828267f2fd4de224f0cfac715

Git commit 485e8a684711c3c3d24b213824bcc26b52d25854 by Volker Krause on 13/05/2023 at 11:07..
Fix dependency finding in the CMake config file

We need to find all public link dependencies here when building a shared
library, but also all private link dependencies when building a static
library.
https://invent.kde.org/neon/forks/libquotient/-/commit/485e8a684711c3c3d24b213824bcc26b52d25854

Git commit 0628a3ca35cb9918922c854a385d40b3ce7b0cbf by Volker Krause on 13/05/2023 at 11:39..
Add missing include in qt_connection_util.h for Qt 6

QObject is used here, but so far this relied on the the corresponding
include happening indirectly. That's no longer the case with Qt 6.
https://invent.kde.org/neon/forks/libquotient/-/commit/0628a3ca35cb9918922c854a385d40b3ce7b0cbf

Git commit 50047c4423969a495f064073eb5cab3fc6166852 by GitHub (on behalf of Alexey Rusakov) on 13/05/2023 at 11:47..
Merge #657(vkrause): Add missing include in qt_connection_util.h for Qt 6
https://invent.kde.org/neon/forks/libquotient/-/commit/50047c4423969a495f064073eb5cab3fc6166852

Git commit 84dd85f3a95309b250bb506710f13e957c437d8d by GitHub (on behalf of Alexey Rusakov) on 13/05/2023 at 15:39..
Merge #656(vkrause): Fix dependency finding in the CMake config file
https://invent.kde.org/neon/forks/libquotient/-/commit/84dd85f3a95309b250bb506710f13e957c437d8d

Git commit 2b1f7a9e4b0123ae4359ea5ae10aa700e9c20c59 by Volker Krause on 14/05/2023 at 12:51..
Fix generating an invalid CMake config file with unset BUILD_SHARED_LIBS

PR #656 missed that case, resulting in an invalid if() expression if
BUILD_SHARED_LIBS in undefined rather than set to a boolean value.
Explicitly set it to false in that case, to avoid that problem.

Found by NeoChat's Flatpak CI build.
https://invent.kde.org/neon/forks/libquotient/-/commit/2b1f7a9e4b0123ae4359ea5ae10aa700e9c20c59

Git commit 65681351e3d02ce2d07a5cf414be54f484d8862f by GitHub (on behalf of Tobias Fella) on 14/05/2023 at 14:36..
Merge pull request #658 from vkrause/work/vkrause/fix-cmake-config-file-with-uninitialized-build-shared-libs

Fix generating an invalid CMake config file with unset BUILD_SHARED_LIBS
https://invent.kde.org/neon/forks/libquotient/-/commit/65681351e3d02ce2d07a5cf414be54f484d8862f

Git commit d85790df45bf3962c918ea4d845cdcd4f3e1c6b6 by Alexey Rusakov on 21/05/2023 at 15:18..
ConnectionEncryptionData and per-connection E2EE

connection.cpp has long become a very long read, and E2EE additions
made it even bigger. Those additions, meanwhile, can be rather easily
decoupled and put to a separate class.

On the other hand, it very soon became clear (#603) that a single
build-time switch for E2EE is not enough and there should be a runtime
switch, preferably - per-Connection. This enables the use case where
E2EE is built into the library but clients offer users to opt-in on some
experimental account(s) while keeping the current beta code out of
more sensitive ones, to protect them from accidental breakage.

Introducing such a switch becomes much easier if encryption pieces are
moved out to a separate sub-object - basically, this sub-object is only
created if E2EE is on, and it is technically impossible to call any
operations concerned with E2EE state on an account where it is turned
off.
https://invent.kde.org/neon/forks/libquotient/-/commit/d85790df45bf3962c918ea4d845cdcd4f3e1c6b6

Git commit 85e342285016c394585db0e9821c0a86c3f12d11 by Alexey Rusakov on 21/05/2023 at 15:18..
Room: check E2EE switches before trying to decrypt
https://invent.kde.org/neon/forks/libquotient/-/commit/85e342285016c394585db0e9821c0a86c3f12d11

Git commit 49701c212bb7f02b02545a06fd67fcddb5bc3ca5 by Alexey Rusakov on 21/05/2023 at 15:18..
Connection: skip a few more things when mocking

Don't try to load the user's profile and capabilities - they cannot be
taken on a mock Connection. Also, use a mock pickling key instead of
generating one and saving it to a keychain for nothing.
https://invent.kde.org/neon/forks/libquotient/-/commit/49701c212bb7f02b02545a06fd67fcddb5bc3ca5

Git commit f15e9a47882ec5b3e52d388e8eaccbe58754f856 by Alexey Rusakov on 21/05/2023 at 15:18..
Database doesn't need to be a QObject
https://invent.kde.org/neon/forks/libquotient/-/commit/f15e9a47882ec5b3e52d388e8eaccbe58754f856

Git commit cedd13215c6374de0b489d2528eaa4d713bae230 by Alexey Rusakov on 21/05/2023 at 17:20..
Connection::setEncryptionDefault()

This is a way for client authors to govern whether they want
to enable encryption in their Connection objects by default,
instead of calling Connection::enableEncryption() every time
a Connection object is created. This function is intended for
calling very early, in main.cpp or during initial setup of
a client application.

Eventually E2EE will be switched on by default but that's certainly
not for 0.8 (and not for 0.9 maybe even), and then this function
will not be needed anymore.
https://invent.kde.org/neon/forks/libquotient/-/commit/cedd13215c6374de0b489d2528eaa4d713bae230

Git commit bb8d1b7a2d7de0f447cd6940d64230954117ab5a by GitHub (on behalf of Alexey Rusakov) on 21/05/2023 at 20:16..
Merge #609(kitsune): Per-connection E2EE
https://invent.kde.org/neon/forks/libquotient/-/commit/bb8d1b7a2d7de0f447cd6940d64230954117ab5a

Git commit 3dfeef5b77075a1c83608c5ac5df19e1e4030c63 by Alexey Rusakov on 22/05/2023 at 10:54..
Make NAM::createRequest() thread-safe

The previous code did not take account that AccountRegistry, Connection,
Room are not thread-safe classes; while NAM::createRequest() can be used
by non-UI QML threads to obtain images. Adding a room while an image is
being requested like this can wreak havoc.

The new code replaces the usage of the full-blown library infrastructure
with two smaller entities guarded by thread-safe API: one QHash holding
a mapping from account ids to homeserver base URLs (managed by NAM and
updated from ConnectionData objects); and another holding a mapping from
room/event id pairs to an EncryptedFileMetadata structure needed
to decrypt encrypted attachments (available via free functions collected
under FileMetadataMap namespace. As a side-effect, MxcReply has a
simpler, less involving API for contruction, with all preparatory
lookups moved from it into NAM::createRequest().
https://invent.kde.org/neon/forks/libquotient/-/commit/3dfeef5b77075a1c83608c5ac5df19e1e4030c63

Git commit 8e634850955c5a994d14c93f91ab88843c8622cb by Alexey Rusakov on 23/05/2023 at 05:50..
Give ignored SSL errors the same treatment

And remove blanket ignoreSslErrors() from NAM API.
https://invent.kde.org/neon/forks/libquotient/-/commit/8e634850955c5a994d14c93f91ab88843c8622cb

Git commit 899819bcae7f2ae73df14881e1436a2f22e15475 by Alexey Rusakov on 23/05/2023 at 07:36..
Fix building w/GCC
https://invent.kde.org/neon/forks/libquotient/-/commit/899819bcae7f2ae73df14881e1436a2f22e15475

Git commit 83db5f87f1d8eb4d9b09e4fc12c7ae0c300562ef by Alexey Rusakov on 23/05/2023 at 09:55..
Don't need a NAM instance to call static functions
https://invent.kde.org/neon/forks/libquotient/-/commit/83db5f87f1d8eb4d9b09e4fc12c7ae0c300562ef

Git commit 3d3c93cbf556f32a4b5b0028158cf4492983b9db by GitHub (on behalf of Alexey Rusakov) on 23/05/2023 at 14:12..
Merge #659(kitsune): Make NAM::createRequest() thread-safe
https://invent.kde.org/neon/forks/libquotient/-/commit/3d3c93cbf556f32a4b5b0028158cf4492983b9db

Git commit 2f38d9b70f0117950a9b007912dcc114fa32582c by Alexey Rusakov on 23/05/2023 at 14:14..
Various cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/2f38d9b70f0117950a9b007912dcc114fa32582c

Git commit c2c9bf420eb4e31bb14a23f96eb2d77cff704800 by Alexey Rusakov on 23/05/2023 at 14:50..
Uncouple Connection from AccountRegistry again

`Accounts` is now initialised out-of-line because GCC cannot distinguish
between the definition and the use of an inline variable and complains
on each accountregistry.h inclusion.
https://invent.kde.org/neon/forks/libquotient/-/commit/c2c9bf420eb4e31bb14a23f96eb2d77cff704800

Git commit 89630dd9b96fb5f2274d8b42d345c5fcd87fb7ac by Alexey Rusakov on 23/05/2023 at 15:01..
Put private AccountRegistry parts into the .cpp file
https://invent.kde.org/neon/forks/libquotient/-/commit/89630dd9b96fb5f2274d8b42d345c5fcd87fb7ac

Git commit 3e02d6a6d5749703e4bd0e2662f21942b75c2c18 by Alexey Rusakov on 23/05/2023 at 17:24..
Drop unused #includes
https://invent.kde.org/neon/forks/libquotient/-/commit/3e02d6a6d5749703e4bd0e2662f21942b75c2c18

Git commit 256676842057b0ecf0e6ff09a17adc1298ecb401 by Alexey Rusakov on 23/05/2023 at 17:27..
Connection::sendSessionKeyToDevices(): consume isQueryingKeys() check

Just move the logic from room.cpp to connectionencryptiondata_p.cpp.
https://invent.kde.org/neon/forks/libquotient/-/commit/256676842057b0ecf0e6ff09a17adc1298ecb401

Git commit 37f1fe726428ecbe9d8b6b6abc94ebb02770c81b by Alexey Rusakov on 24/05/2023 at 06:10..
Add a now-missing #include...
https://invent.kde.org/neon/forks/libquotient/-/commit/37f1fe726428ecbe9d8b6b6abc94ebb02770c81b

Git commit 660d20d0c3169663116b249684118a4c2bf2c2e6 by Alexey Rusakov on 24/05/2023 at 19:19..
setup-tests.sh: drop ctest invocation; talk a bit more on exit

The ctest invocation has been a leftover from the
run-tests.sh->setup-tests.sh transformation. The additional
message aims to address a surprise like that of my own when
I forgot that I should set KEEP_SYNAPSE if I don't want the
container to self-destruct on shell exit (that's intentional,
for use in CI).
https://invent.kde.org/neon/forks/libquotient/-/commit/660d20d0c3169663116b249684118a4c2bf2c2e6

Git commit 71b9906235013520b46690fa359fd31e2d649292 by Alexey Rusakov on 25/05/2023 at 05:28..
CI: don't pass CTEST_ARGS to setup-tests.sh

It doesn't use them.
https://invent.kde.org/neon/forks/libquotient/-/commit/71b9906235013520b46690fa359fd31e2d649292

Git commit 6f3ab4e57f91a700cc02529e437266ebbab14309 by Alexey Rusakov on 27/05/2023 at 18:47..
CI: Direct debug logging on Windows to stderr
https://invent.kde.org/neon/forks/libquotient/-/commit/6f3ab4e57f91a700cc02529e437266ebbab14309

Git commit 7f4263e06260670dd9cb1fea2867b638f9780733 by Alexey Rusakov on 27/05/2023 at 18:51..
Only call FileMetadataMap::add() in encrypted rooms
https://invent.kde.org/neon/forks/libquotient/-/commit/7f4263e06260670dd9cb1fea2867b638f9780733

Git commit 26aa3679ae41ce884f5f423a580c5c1e57b7df37 by Alexey Rusakov on 27/05/2023 at 19:07..
Fix the logic around FileMetadataMap

When QHash::value() used in FMM::lookup() doesn't find an entry in
the map, it returns a default-constructed EncryptedFileMetadata object
(that is actually invalid), and lookup diligently wraps it in
an Omittable. When the code in MxcReply later checks that Omittable, it
always finds an object inside - and fails to decrypt the file because
that object is invalid. The fixed logic drops Omittable entirely and
officially checks that EncryptedFileMetadata is valid before even trying
to set up for decryption.
https://invent.kde.org/neon/forks/libquotient/-/commit/26aa3679ae41ce884f5f423a580c5c1e57b7df37

Git commit 44acb08aaa96dceeed20838a93691a1e86890786 by Alexey Rusakov on 28/05/2023 at 12:51..
Remove Room::reset*Count() functions

They were deprecated since 0.7 and now seem to break unread counts logic
implemented in 0.7 (see #588).
https://invent.kde.org/neon/forks/libquotient/-/commit/44acb08aaa96dceeed20838a93691a1e86890786

Git commit 6c91e35bed600ca6b061313146a34f411356c1b4 by GitHub (on behalf of Alexey Rusakov) on 29/05/2023 at 08:19..
Merge #661(kitsune): Remove Room::reset*Count() functions
https://invent.kde.org/neon/forks/libquotient/-/commit/6c91e35bed600ca6b061313146a34f411356c1b4

Git commit 4a9a68f491801d5f3731072e4f0695a7dff4096a by Alexey Rusakov on 29/05/2023 at 09:08..
Constify BaseJob::Private::prepareRequest()
https://invent.kde.org/neon/forks/libquotient/-/commit/4a9a68f491801d5f3731072e4f0695a7dff4096a

Git commit af33fdc4a8258ceec343cbe6bddd2eab4262ba36 by Alexey Rusakov on 29/05/2023 at 09:22..
converters.h: Make load() logic for containers somewhat clearer

There's that implied coercion to QJsonValue in it - it's now explicit.
https://invent.kde.org/neon/forks/libquotient/-/commit/af33fdc4a8258ceec343cbe6bddd2eab4262ba36

Git commit f7d14f62f3c703796d31a491ac9555c58ccd2adb by Alexey Rusakov on 29/05/2023 at 09:23..
Avoid excessive QByteArray/QString conversions

https://github.com/quotient-im/libQuotient/pull/620 revealed quite
a number of unnecessary conversions and suggested simpler changes to
either remove them or at least make them explicit. This commit
makes deeper changes in variable and parameter types, particularly
affecting the library API, from QString with QByteArray or vice versa
to further get rid of those conversions where possible.
https://invent.kde.org/neon/forks/libquotient/-/commit/f7d14f62f3c703796d31a491ac9555c58ccd2adb

Git commit 200519f517c64ae546823cb55215a3620535fe24 by Alexey Rusakov on 29/05/2023 at 09:23..
Code/formatting cleanup

NB: sessionDecryptMessage() in connection_p.h was a leftover from
pre-ConnectionEncryptionData times.
https://invent.kde.org/neon/forks/libquotient/-/commit/200519f517c64ae546823cb55215a3620535fe24

Git commit d345b8ad8de40aa5b4ed6133c221d42c81a85cdf by Alexey Rusakov on 29/05/2023 at 11:27..
CI: use the new Sonar Cloud for C/C++ GitHub action

Closes #602.
https://invent.kde.org/neon/forks/libquotient/-/commit/d345b8ad8de40aa5b4ed6133c221d42c81a85cdf

Git commit 0b568258359ffbea57e51972e60a107cdeac9b3f by GitHub (on behalf of Alexey Rusakov) on 29/05/2023 at 14:23..
Merge #660(kitsune): Reduce QByteArray/QString conversions further
https://invent.kde.org/neon/forks/libquotient/-/commit/0b568258359ffbea57e51972e60a107cdeac9b3f

Git commit ffd63c21bd2e0b9319da1f6df717bc26d7fbbec6 by Alexey Rusakov on 29/05/2023 at 18:36..
Shut up static analyzer around QUO_IMPLICIT
https://invent.kde.org/neon/forks/libquotient/-/commit/ffd63c21bd2e0b9319da1f6df717bc26d7fbbec6

Git commit 7491e799c611989ee063895045d48a8e1e569a8f by Alexey Rusakov on 29/05/2023 at 18:36..
Room::Changes: merge Name/Aliases into RoomNames + brush ups

They rarely are used separately from each other, and we can only
afford 16 distinct flags because of the QFlags limitation.
https://invent.kde.org/neon/forks/libquotient/-/commit/7491e799c611989ee063895045d48a8e1e569a8f

Git commit a110181f1fd872ff36fdeb99c9bf2eea60858fca by Alexey Rusakov on 29/05/2023 at 18:43..
CI: Fix Sonar build wrapper being no more called
https://invent.kde.org/neon/forks/libquotient/-/commit/a110181f1fd872ff36fdeb99c9bf2eea60858fca

Git commit ca1cac71c0c9ca25c00d44333aacae59beea3867 by Alexey Rusakov on 29/05/2023 at 18:59..
Fix a complete CI breakage after the previous commit
https://invent.kde.org/neon/forks/libquotient/-/commit/ca1cac71c0c9ca25c00d44333aacae59beea3867

Git commit 1f71556d18b29d37faaea6e4a0c190447bb2142a by Alexey Rusakov on 29/05/2023 at 20:06..
CI, Sonar: fix overquoting
https://invent.kde.org/neon/forks/libquotient/-/commit/1f71556d18b29d37faaea6e4a0c190447bb2142a

Git commit 8eb22b5287021d3caea0f828cab80fb6db5f970c by Alexey Rusakov on 31/05/2023 at 06:05..
Replace usage of a deprecated constant
https://invent.kde.org/neon/forks/libquotient/-/commit/8eb22b5287021d3caea0f828cab80fb6db5f970c

Git commit b9c7b1d1c1332ea2099a2f7029454e9391fc7e19 by Alexey Rusakov on 01/06/2023 at 18:52..
Add 'content' to the list of redaction-protected keys

Closes #664.
https://invent.kde.org/neon/forks/libquotient/-/commit/b9c7b1d1c1332ea2099a2f7029454e9391fc7e19

Git commit 0291cec84d126f6a62defe0fd3c5bdc675896582 by Alexey Rusakov on 01/06/2023 at 18:56..
Refactor the redaction code; implement MSC2176

MSC2176 slightly adjusts the redaction logic, preserving m.room.create
events entirely and adding a couple more protected content keys. The
rest is just making the code a tad more streamlined and clear.
https://invent.kde.org/neon/forks/libquotient/-/commit/0291cec84d126f6a62defe0fd3c5bdc675896582

Git commit bf593d6e9fb9c692f71520ae715f9cdb4757a208 by Alexey Rusakov on 03/06/2023 at 15:33..
Add and document Event::switchOnType()

Before introducing EventMetaType and the respective changes in how
is() works it was necessary to have switchOnType() as a free template
function so that the information on the base event type is not lost
and a fallback visitor could use its fields. Now the entire base event
type hierarchy can be tested with is() and switchOnType() can include,
e.g., overloads accepting StateEvent and RoomEvent one after another;
so it's possible to provide switchOnType() as a member function too.
The tiny difference between calling the member function from the free
one is that because `this` always has type Event now, you can
https://invent.kde.org/neon/forks/libquotient/-/commit/bf593d6e9fb9c692f71520ae715f9cdb4757a208

Git commit 4f1e7fdcb55f5169acd1ec4e1480aecfacc1446e by Alexey Rusakov on 03/06/2023 at 15:33..
Quotest: rework redaction test to try a member event

...instead of sending a message event just for that test. This makes
the whole test much simpler and shorter, and also tests the library
against #664 (and #665, for that matter).
https://invent.kde.org/neon/forks/libquotient/-/commit/4f1e7fdcb55f5169acd1ec4e1480aecfacc1446e

Git commit 6e8dcabaee50766339c95872788955daeaf67846 by Alexey Rusakov on 03/06/2023 at 20:57..
Split and fix Room::processStateEvent()

This method consists of roughly 3 parts: the preprocessing (that also
checks if further processing should proceed at all - controversially,
see below), the actual change of the event, and the update of internal
structures upon that change. One thing this commit does is splitting out
the first and the third part out, to at least somewhat simplify the
enourmous feed of code (the whole method was 200+ lines long, with
plenty of branching inside). Another thing is fixing the problem in
preprocessing; the fact that it's conditional and can therefore
prevent the actual replacement of the event comes at odds with its usage
from the event redaction logic - leading to #665. The condionality
was introduced to avoid breaking the internal structures with invalid
event content coming from the wire; but the case that leads to #665 has
nothing to do with internal structures protection, it was just an
optimisation on an event that is no-op from those internal structures
standpoint (no changes in display name/avatar). No-op for them doesn't
mean the event shouldn't be refreshed though, and to stay in sync with
the server it's actually better to insert the new event instead of
keeping the old one. The same problem exists in account data code but
we don't have redactions there (yet, at least) so it was kind of fine.
It will still be addressed in a separate commit, with the same
rationale, being better aligned with the homeserver.

Fixes #665.
https://invent.kde.org/neon/forks/libquotient/-/commit/6e8dcabaee50766339c95872788955daeaf67846

Git commit 52058ff312da49c134cbf4d6a8b0ba068b3a0865 by Alexey Rusakov on 04/06/2023 at 10:07..
API files: update to Matrix v1.7
https://invent.kde.org/neon/forks/libquotient/-/commit/52058ff312da49c134cbf4d6a8b0ba068b3a0865

Git commit 423f9ef43a3d0b5dd1602129c9fb1c4d1a5c2c78 by Alexey Rusakov on 04/06/2023 at 21:52..
API files: initialize fields in structures

Default values for fields, unlike parameters passed to constructors,
were completely missing before. This commit introduces initializers
to non-omittable fields, and uses fillFromJson() instead of fromJson()
to preserve those defaults when nothing is found in JSON instead.

GTAD 0.9 is needed to generate structures with required fields first,
optional after.
https://invent.kde.org/neon/forks/libquotient/-/commit/423f9ef43a3d0b5dd1602129c9fb1c4d1a5c2c78

Git commit e2d879dd78f5bd46dfb9b55439eba93388a32b15 by Alexey Rusakov on 04/06/2023 at 21:52..
Regenerate API files
https://invent.kde.org/neon/forks/libquotient/-/commit/e2d879dd78f5bd46dfb9b55439eba93388a32b15

Git commit 21096be3509459eb80076709c5e1fe4a4a879791 by Alexey Rusakov on 04/06/2023 at 21:55..
Fix a comment according to the code review

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/21096be3509459eb80076709c5e1fe4a4a879791

Git commit c509e6ded9b014207e4d98a8e9b1676de49cfd78 by Alexey Rusakov on 05/06/2023 at 09:09..
Drop "origin" from protected keys (MSC3989)

It's not landed yet but is at an advanced stage. And not used on
the client side, anyway.
https://invent.kde.org/neon/forks/libquotient/-/commit/c509e6ded9b014207e4d98a8e9b1676de49cfd78

Git commit ecd1a936cec0d4fbacbea6a0272b975dbb194b14 by GitHub (on behalf of Alexey Rusakov) on 05/06/2023 at 09:31..
Merge #666(kitsune): Fix and update redactions logic
https://invent.kde.org/neon/forks/libquotient/-/commit/ecd1a936cec0d4fbacbea6a0272b975dbb194b14

Git commit 21845a65cb2c35d8141c86e97c6b8d396c3fbec5 by Alexey Rusakov on 05/06/2023 at 09:36..
setup-tests.sh: clean up old DATA_PATH before reusing

The DATA_PATH contents from the previous run stand in the way and
the new Synapse setup fails with obscure error messages.
https://invent.kde.org/neon/forks/libquotient/-/commit/21845a65cb2c35d8141c86e97c6b8d396c3fbec5

Git commit 9e5117aa739517aacc310cf2d29b5ef1bd2387a8 by Alexey Rusakov on 05/06/2023 at 09:36..
Plug another static analysis warning
https://invent.kde.org/neon/forks/libquotient/-/commit/9e5117aa739517aacc310cf2d29b5ef1bd2387a8

Git commit 94604f823fcf85ffec6627685dc4341bae447551 by Alexey Rusakov on 05/06/2023 at 09:36..
Code formatting
https://invent.kde.org/neon/forks/libquotient/-/commit/94604f823fcf85ffec6627685dc4341bae447551

Git commit d375109a581e802f1bf605ea8734864990dab585 by Alexey Rusakov on 05/06/2023 at 09:36..
Deprecate Event::type()

There are too many ways to get various "types" from an event (TypeId,
type(), matrixType(), to name a few). Event::type() should not really
be used in client code: to check the event's actual type in JSON, it's
better to use Event::matrixType(); to match an event against a specific
TypeId, there are is() and switchOnType(); and in rare cases when you
actually need the event type as seen by the metatype system, explicitly
calling Event::metatype() (that Event::type() internally calls) conveys
the intent better.

This commit also fixes the sole case in the library code where type()
was (incorrectly) used.
https://invent.kde.org/neon/forks/libquotient/-/commit/d375109a581e802f1bf605ea8734864990dab585

Git commit 56b024f10ebfc7554517c6f53b37e1fd6211a92d by Alexey Rusakov on 05/06/2023 at 09:36..
RoomPowerLevelsEvent: better names for parameters
https://invent.kde.org/neon/forks/libquotient/-/commit/56b024f10ebfc7554517c6f53b37e1fd6211a92d

Git commit 49b24a02ce8f0df9a50147be57ad01fe29b81dac by GitHub (on behalf of Alexey Rusakov) on 06/06/2023 at 07:36..
Merge #667(kitsune): Event::type() deprecation + cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/49b24a02ce8f0df9a50147be57ad01fe29b81dac

Git commit ccec05bd2db9b649260badb97cf71e06c8392dc9 by Alexey Rusakov on 06/06/2023 at 14:56..
Remove appservice_ping.*

Looks like it's misplaced in the original matrix-spec repo.
https://invent.kde.org/neon/forks/libquotient/-/commit/ccec05bd2db9b649260badb97cf71e06c8392dc9

Git commit 896f250c2a50cf108bdbd6a1dedce09599c0bb91 by GitHub (on behalf of Alexey Rusakov) on 06/06/2023 at 17:13..
Merge #669(kitsune): Update to Matrix v1.7
https://invent.kde.org/neon/forks/libquotient/-/commit/896f250c2a50cf108bdbd6a1dedce09599c0bb91

Git commit 17a3e2b00d748ef7ec21f7abd0055ee755e2caf4 by Alexey Rusakov on 19/06/2023 at 18:54..
asKeyValueRange: support accepting rvalues

Since it is intended to be used with Qt containers which are
implicitly-shared, asKeyValueRange can copy-construct an internal
snapshot for cheap, for the sake of lifetime extension. However,
any changes on that copy would not propagate to the original container
rvalue. To avoid surprises, non-const begin/end adaptors are only
enabled with (non-const) lvalues.
https://invent.kde.org/neon/forks/libquotient/-/commit/17a3e2b00d748ef7ec21f7abd0055ee755e2caf4

Git commit 27ad32abbac3a6979f49d44bea57829aefca7eb4 by GitHub (on behalf of Alexey Rusakov) on 28/06/2023 at 11:55..
Merge #671(kitsune): asKeyValueRange: support accepting rvalues
https://invent.kde.org/neon/forks/libquotient/-/commit/27ad32abbac3a6979f49d44bea57829aefca7eb4

Git commit 8ab756c1d7ab3acbe220253ec97843976fc4bbe8 by Alexey Rusakov on 28/06/2023 at 14:51..
Put logging categories inside Quotient namespace

To avoid clashes with similarly named categories in client code.
https://invent.kde.org/neon/forks/libquotient/-/commit/8ab756c1d7ab3acbe220253ec97843976fc4bbe8

Git commit f20a37800026d0d4b776ecacde000f51794ce8c0 by Alexey Rusakov on 28/06/2023 at 14:51..
Make sure logging categories are used throughout
https://invent.kde.org/neon/forks/libquotient/-/commit/f20a37800026d0d4b776ecacde000f51794ce8c0

Git commit ad2bed165d742d794cfd73b3fe38c5887b8a6f7d by Alexey Rusakov on 28/06/2023 at 14:51..
clang-format: better #include order

It should have been updated together with Quaternion's .clang-format
in the past but only the Quaternion's one ended up in Git back then.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/ad2bed165d742d794cfd73b3fe38c5887b8a6f7d

Git commit 7258cf6bb0c25a8005fd2e09920a67984f3c04ab by Alexey Rusakov on 28/06/2023 at 14:51..
Split out logging categories definitions

The header logging.h mixed client-facing and library-internal things.
This commit puts library-internal things (which happened to be
definitions of logging categories and nothing else) into
logging_categories_p.h and client-facing things landed in util.h as
there not many of them (a couple of debug manipulators and operator<<
overloads).
https://invent.kde.org/neon/forks/libquotient/-/commit/7258cf6bb0c25a8005fd2e09920a67984f3c04ab

Git commit 84ceb8d27d970e115e9d4eb54634bb5e2cc32fb7 by Alexey Rusakov on 28/06/2023 at 14:51..
Update/extend documentation on logging categories

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/84ceb8d27d970e115e9d4eb54634bb5e2cc32fb7

Git commit 87d7042440404c0fc27a185f797be6665f4c2866 by Alexey Rusakov on 28/06/2023 at 21:25..
Fix Sonar warnings; cleanup comments
https://invent.kde.org/neon/forks/libquotient/-/commit/87d7042440404c0fc27a185f797be6665f4c2866

Git commit 35a755dfa12bbe6001e25b4c8274fddb94294164 by GitHub (on behalf of Alexey Rusakov) on 29/06/2023 at 06:16..
Merge #672(kitsune): Tighten up logging categories stuff
https://invent.kde.org/neon/forks/libquotient/-/commit/35a755dfa12bbe6001e25b4c8274fddb94294164

Git commit e0a10878640aa47c1b604fbfdd29fc674b8a458a by Alexey Rusakov on 29/06/2023 at 16:31..
Update documentation and Sonar properties for 0.8

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/e0a10878640aa47c1b604fbfdd29fc674b8a458a

Git commit 7e3f011dd31f9262159cd40d860636e54800ef9c by GitHub (on behalf of Alexey Rusakov) on 29/06/2023 at 16:39..
Merge #674(kitsune): Update documentation and Sonar properties for 0.8
https://invent.kde.org/neon/forks/libquotient/-/commit/7e3f011dd31f9262159cd40d860636e54800ef9c

Git commit 8fa07bbdc3a5e2ef84aa58684a573da23ad35d73 by Volker Krause on 30/06/2023 at 13:39..
Add connections in AccountRegistry::invokeLogin()

Connection was previously adding itself to the AccountRegistry singleton,
but that has been removed in c2c9bf420eb4e.
https://invent.kde.org/neon/forks/libquotient/-/commit/8fa07bbdc3a5e2ef84aa58684a573da23ad35d73

Git commit 94dc332cab76b8eec5fb76293542f774570fe285 by GitHub (on behalf of Alexey Rusakov) on 30/06/2023 at 16:29..
Merge #675(vkrause): Add connections in AccountRegistry::invokeLogin()
https://invent.kde.org/neon/forks/libquotient/-/commit/94dc332cab76b8eec5fb76293542f774570fe285

Git commit 59e7d2938eac3c2a355361aac851ba3bd2923ea6 by Alexey Rusakov on 03/07/2023 at 14:18..
Fix up RoomPinnedEvent -> RoomPinnedEventsEvent

Aside from the ambiguous class name, the previous code was referring to
the wrong event type and looked for the wrong key under content.
https://invent.kde.org/neon/forks/libquotient/-/commit/59e7d2938eac3c2a355361aac851ba3bd2923ea6

Git commit ec9e4153e90bc28d278532034c5a1ceacb96d430 by GitHub (on behalf of Alexey Rusakov) on 03/07/2023 at 17:35..
Merge #677(kitsune): Fix the pinned events event
https://invent.kde.org/neon/forks/libquotient/-/commit/ec9e4153e90bc28d278532034c5a1ceacb96d430

Git commit b9468591fb535500d491a69e5f6d21f2e35e1f13 by Alexey Rusakov on 03/07/2023 at 18:34..
One last documentation refresh

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/b9468591fb535500d491a69e5f6d21f2e35e1f13

Git commit 5b3907301864aa02a252b040f1afaf889ae1f1fa by GitHub (on behalf of Alexey Rusakov) on 03/07/2023 at 18:35..
Merge #679(kitsune): One last documentation refresh
https://invent.kde.org/neon/forks/libquotient/-/commit/5b3907301864aa02a252b040f1afaf889ae1f1fa

Git commit 43816e3f9f0eb39ff7a93897a35ec2f82fe59292 by Alexey Rusakov on 06/07/2023 at 14:33..
Use RoomPinnedEventsEvent instead of the old name
https://invent.kde.org/neon/forks/libquotient/-/commit/43816e3f9f0eb39ff7a93897a35ec2f82fe59292

Git commit 0e100764ef7cd807c4658a1517cdce68bf3f2b26 by GitHub (on behalf of Alexey Rusakov) on 07/07/2023 at 07:52..
Merge #680(kitsune): Use RoomPinnedEventsEvent instead of the old name
https://invent.kde.org/neon/forks/libquotient/-/commit/0e100764ef7cd807c4658a1517cdce68bf3f2b26

Git commit 485b9a37de3f32a2320c2a9feb0d271f633f51b2 by Tobias Fella on 17/07/2023 at 14:26..
Fix session verification

In cases where *we* send start, we never updated the common mac codes, causing the wrong algorithm to be selected
https://invent.kde.org/neon/forks/libquotient/-/commit/485b9a37de3f32a2320c2a9feb0d271f633f51b2

Git commit 035daedd6f1fd3a9b70eb29b17c6ef73834234df by GitHub (on behalf of Alexey Rusakov) on 18/07/2023 at 09:26..
Merge #682(tobias): Fix session verification
https://invent.kde.org/neon/forks/libquotient/-/commit/035daedd6f1fd3a9b70eb29b17c6ef73834234df

Git commit 8f29d15f424501e523079ae0894ecf779be3b8a4 by James Graham on 29/07/2023 at 18:06..
Make userIdsAtEvent const as it doesn't modify anything and I'd like to call it from a const NeoChatRoom*
https://invent.kde.org/neon/forks/libquotient/-/commit/8f29d15f424501e523079ae0894ecf779be3b8a4

Git commit d850d153ba4f0b34f280ec3cbec0efb2736d1ba4 by GitHub (on behalf of Alexey Rusakov) on 30/07/2023 at 09:12..
Merge #686(nvrWhere): Make userIdsAtEvent const
https://invent.kde.org/neon/forks/libquotient/-/commit/d850d153ba4f0b34f280ec3cbec0efb2736d1ba4

Git commit 1a73931d273ca6d1de99a59105923ba3c1699f46 by Carl Schwan on 05/08/2023 at 15:12..
Fix two small issue found by clazy

- QRegularExpression are expensive to create and should ideally be
  static so that they are created only once
- Potential detach found in a for loop with a QStringList
https://invent.kde.org/neon/forks/libquotient/-/commit/1a73931d273ca6d1de99a59105923ba3c1699f46

Git commit b6291294d42c41633a3b5bb3e68eac86acd29096 by Tobias Fella on 05/08/2023 at 17:04..
Add some logging to key verification event handling
https://invent.kde.org/neon/forks/libquotient/-/commit/b6291294d42c41633a3b5bb3e68eac86acd29096

Git commit 074fcb87a55968ab7b5f9c3c547ebc7b1a685a12 by GitHub (on behalf of Alexey Rusakov) on 06/08/2023 at 17:02..
Merge #690(tobias): Add some logging to key verification event handling
https://invent.kde.org/neon/forks/libquotient/-/commit/074fcb87a55968ab7b5f9c3c547ebc7b1a685a12

Git commit 22874c2e233cb0045a6dc5a49f6e8e3976a06524 by Alexey Rusakov on 08/08/2023 at 06:39..
csapi/: reformat with the current .clang-format

No semantic changes.
https://invent.kde.org/neon/forks/libquotient/-/commit/22874c2e233cb0045a6dc5a49f6e8e3976a06524

Git commit 772ff8d0fc63b70c19aa080fca49d86cc56fd897 by Alexey Rusakov on 08/08/2023 at 06:39..
CMakeLists + gtad.yaml: Enable key_backup.*

key_backup.yaml has a nasty repetition of the 'version' parameter within
a single API call, with the comment saying that if the version replica
in the request body is specified it should coincide with the version
provided in the request path. By default, GTAD would diligently pull
both replicas to the constructor argument list, producing incorrect
C++ code. The line added to gtad.yaml here eliminates the replica
in the request body (because '>' only applies to the request body -
GTAD documentation covers that, although not quite explicitly).
https://invent.kde.org/neon/forks/libquotient/-/commit/772ff8d0fc63b70c19aa080fca49d86cc56fd897

Git commit 25873cfed83d03b44c558b8a0bb1e23b8a61e4bf by Alexey Rusakov on 08/08/2023 at 06:39..
csapi/: generate key_backup.* and dependencies
https://invent.kde.org/neon/forks/libquotient/-/commit/25873cfed83d03b44c558b8a0bb1e23b8a61e4bf

Git commit 1172a7e01e0b1f2330e899a93ed779ddd8623c60 by GitHub (on behalf of Alexey Rusakov) on 08/08/2023 at 12:34..
Merge #693(kitsune): Enable key backup API
https://invent.kde.org/neon/forks/libquotient/-/commit/1172a7e01e0b1f2330e899a93ed779ddd8623c60

Git commit a8483e8982206d7d57715a6d22283d4b53d73999 by GitHub (on behalf of Alexey Rusakov) on 09/08/2023 at 15:02..
Merge #688(carl): Fix two small issue found by clazy
https://invent.kde.org/neon/forks/libquotient/-/commit/a8483e8982206d7d57715a6d22283d4b53d73999

Git commit 21d5d824b619e2c9549274b3ad7e8d3144654dd0 by Alexey Rusakov on 09/08/2023 at 16:39..
Drop an unused variable
https://invent.kde.org/neon/forks/libquotient/-/commit/21d5d824b619e2c9549274b3ad7e8d3144654dd0

Git commit 022cec22efd87a13f4b24dbc6ea3bf05758fcdbb by Alexey Rusakov on 09/08/2023 at 16:39..
ConnectionEncryptionData: clean up some logging

The previous log lines showed either inexistent (to-device event id) or
duplicate and also user-unfriendly (numeric error code, although QOlm*
classes already log each fault, with textual codes) data points.
https://invent.kde.org/neon/forks/libquotient/-/commit/022cec22efd87a13f4b24dbc6ea3bf05758fcdbb

Git commit 50b88dc081e37f5e72f97323605928bdec4123c2 by Alexey Rusakov on 09/08/2023 at 16:39..
Actually consume to-device events as we claim to
https://invent.kde.org/neon/forks/libquotient/-/commit/50b88dc081e37f5e72f97323605928bdec4123c2

Git commit 884ef183b56ce52f77cca8df97edaddc091d65f7 by Alexey Rusakov on 09/08/2023 at 16:39..
clang-tidy: skip rule of five on a sole destructor

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/884ef183b56ce52f77cca8df97edaddc091d65f7

Git commit 45783bfa261a3d5ea8036caa337b1317a7cde204 by Alexey Rusakov on 09/08/2023 at 16:39..
clang-format: be slightly less picky on excess characters

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/45783bfa261a3d5ea8036caa337b1317a7cde204

Git commit be6a02f5485ab76d40465909b70df69064ce99c2 by Alexey Rusakov on 09/08/2023 at 16:39..
Suppress bugprone-suspicious-include where appropriate

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/be6a02f5485ab76d40465909b70df69064ce99c2

Git commit 159923628bc18e36b19f54cf30bffa7e86a78858 by Alexey Rusakov on 09/08/2023 at 16:39..
Drop unused #include
https://invent.kde.org/neon/forks/libquotient/-/commit/159923628bc18e36b19f54cf30bffa7e86a78858

Git commit 93ac34f6bbb1ff52b8cd740ecdfe84a45ced013a by Alexey Rusakov on 09/08/2023 at 16:39..
util.cpp: more const and other tighten-ups
https://invent.kde.org/neon/forks/libquotient/-/commit/93ac34f6bbb1ff52b8cd740ecdfe84a45ced013a

Git commit 09c3d877fddea4a941c1b6fea8f3982b97b38346 by Alexey Rusakov on 09/08/2023 at 16:39..
Use RoomStateView::content() where practical

Although queryOr() is a more versatile and sometimes more optimal (even
if peculiar-looking) route to the same data, RoomStateView::content()
is arguably more readable where it can be used (i.e. when the respective
state event class has content() defined, and its content class can be
default-constructed).
https://invent.kde.org/neon/forks/libquotient/-/commit/09c3d877fddea4a941c1b6fea8f3982b97b38346

Git commit fead34a069d872fb4efdb4a8a9aaf3c9ef0cfb34 by Alexey Rusakov on 09/08/2023 at 16:39..
README: Document QT_MESSAGE_PATTERN usage for debugging

Copied from Quaternion's README.md.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/fead34a069d872fb4efdb4a8a9aaf3c9ef0cfb34

Git commit f60e19a2ff2046c420f87632c95d7a21af6518aa by Alexey Rusakov on 09/08/2023 at 16:39..
Simplify a return expression
https://invent.kde.org/neon/forks/libquotient/-/commit/f60e19a2ff2046c420f87632c95d7a21af6518aa

Git commit 4843edd42354af36e89a41439c5889c01e68ea59 by Alexey Rusakov on 09/08/2023 at 16:46..
room.cpp: compact some code as Sonar recommended
https://invent.kde.org/neon/forks/libquotient/-/commit/4843edd42354af36e89a41439c5889c01e68ea59

Git commit 2ae8d5def43ff1827bd8acbc3f079bbc74443c6a by GitHub (on behalf of Alexey Rusakov) on 09/08/2023 at 19:09..
Merge #694(kitsune): Cleanup/tweaks/docs/etc. across the board
https://invent.kde.org/neon/forks/libquotient/-/commit/2ae8d5def43ff1827bd8acbc3f079bbc74443c6a

Git commit afef4caaf13cd16a3f58962b158bcbf20510fe6a by James Graham on 11/08/2023 at 18:29..
Add UserInContext object which is designed to allow qml to get all the user's data in the context of a specific room.
https://invent.kde.org/neon/forks/libquotient/-/commit/afef4caaf13cd16a3f58962b158bcbf20510fe6a

Git commit c9851c88907043c7f88c25080ae1ef9fcc6a78e9 by James Graham on 12/08/2023 at 10:38..
Rename user in context to RoomMember and base upon a m.room.member event
https://invent.kde.org/neon/forks/libquotient/-/commit/c9851c88907043c7f88c25080ae1ef9fcc6a78e9

Git commit 20b8b5b595b75b681c9c32ae02f6fb7e584aee3a by James Graham on 12/08/2023 at 13:03..
Revert changes to User
https://invent.kde.org/neon/forks/libquotient/-/commit/20b8b5b595b75b681c9c32ae02f6fb7e584aee3a

Git commit d060974a370ce8559735040ee58b4c20ef92c676 by Alexey Rusakov on 13/08/2023 at 06:08..
CMakeLists: apply common properties to the entire source tree

Instead of setting visibility flags and (some) Qt feature macros
individually on Quotient target, this commit applies the same set of
flags to both the library and all tests for it. Ideally, visibility
flags would be propagated to the client code (using different visibility
while compiling the same header files can lead to surprises);
unfortunately, CMake doesn't seem to have a way to do that (build
properties can't be set to PUBLIC/PRIVATE/INTERFACE), so client code
has to replicate the same settings explicitly.
https://invent.kde.org/neon/forks/libquotient/-/commit/d060974a370ce8559735040ee58b4c20ef92c676

Git commit 0d1ca0d27118301bb1a6aa03aff48ed71b597224 by James Graham on 13/08/2023 at 09:54..
Infrastructure in Room to use RoomMember instead of User
https://invent.kde.org/neon/forks/libquotient/-/commit/0d1ca0d27118301bb1a6aa03aff48ed71b597224

Git commit 4cbe830b48cb432572e40dccfe16570e2302ae1c by GitHub (on behalf of Alexey Rusakov) on 13/08/2023 at 11:18..
Merge #696(kitsune): CMakeLists: apply common properties to the entire source tree
https://invent.kde.org/neon/forks/libquotient/-/commit/4cbe830b48cb432572e40dccfe16570e2302ae1c

Git commit 2b31a115f832315b9beff7c8d5466b7ceca80352 by James Graham on 13/08/2023 at 11:56..
Fix issues in RoomMember
https://invent.kde.org/neon/forks/libquotient/-/commit/2b31a115f832315b9beff7c8d5466b7ceca80352

Git commit e68daf062712acecb4ac825dadb36717a151e9ab by Alexey Rusakov on 14/08/2023 at 05:53..
linkifyUrl(): use _ls and single quotes in href's

Unlike double quotes, single quotes (aka apostrophes) don't need
escaping, and we'll need a lot of those in tests for linkifyUrls().
https://invent.kde.org/neon/forks/libquotient/-/commit/e68daf062712acecb4ac825dadb36717a151e9ab

Git commit 42b888e40f9ec8e24dae857f098120a421176513 by Alexey Rusakov on 15/08/2023 at 19:26..
utiltests: Add some tests for linkifyUrls()

Including one for #691 (it's broken now, just as the issue describes).
https://invent.kde.org/neon/forks/libquotient/-/commit/42b888e40f9ec8e24dae857f098120a421176513

Git commit 4f950d9e6b9ef86a13947a3d876d66963fc0bb5d by Alexey Rusakov on 15/08/2023 at 19:27..
Make mailto: URLs matching stricter

So that it doesn't hit when an email-like construct occurs inside a URL.
https://invent.kde.org/neon/forks/libquotient/-/commit/4f950d9e6b9ef86a13947a3d876d66963fc0bb5d

Git commit ba0b547cbc929568e2f77aee99d586aa5c17d208 by Alexey Rusakov on 16/08/2023 at 07:12..
Move all linkifier tests from quotest to utiltests

They should have been there from the very beginning, if quotest didn't
predate utiltests.
https://invent.kde.org/neon/forks/libquotient/-/commit/ba0b547cbc929568e2f77aee99d586aa5c17d208

Git commit f56a39b855880ce2ff9e355ec179240ae47e63f7 by GitHub (on behalf of Alexey Rusakov) on 16/08/2023 at 13:47..
Merge #698(kitsune): Make linkifyUrl() stricter on email addresses
https://invent.kde.org/neon/forks/libquotient/-/commit/f56a39b855880ce2ff9e355ec179240ae47e63f7

Git commit f72aef32abfdc299efe823a5bfcdb37e948a0b00 by Alexey Rusakov on 17/08/2023 at 11:37..
Refresh README.md

Most of the rework concerns Quotient_ENABLE_E2EE that is now on its
way out. README now takes it for granted that people _should_ set this
flag to ON.

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/f72aef32abfdc299efe823a5bfcdb37e948a0b00

Git commit 688b7ea24cadf7794f3d0733a01bb2181a36cd91 by Alexey Rusakov on 17/08/2023 at 11:37..
0.8.1
https://invent.kde.org/neon/forks/libquotient/-/commit/688b7ea24cadf7794f3d0733a01bb2181a36cd91

Git commit daf52ebae2d20c0543d5f1d72a16298ab75ac26d by James Graham on 18/08/2023 at 18:15..
Deprecate the unneeded bits of User and add updated functions to get the user's profile name
https://invent.kde.org/neon/forks/libquotient/-/commit/daf52ebae2d20c0543d5f1d72a16298ab75ac26d

Git commit f937c9051a9f6be24aae7fe7f75aadd205b52a31 by Alexey Rusakov on 18/08/2023 at 18:20..
0.8.1.1

Because 0.8.1 was shipped without changes made in this branch :(
https://invent.kde.org/neon/forks/libquotient/-/commit/f937c9051a9f6be24aae7fe7f75aadd205b52a31

Git commit 60e06f2f4306d1dccb64af2ce919961260926201 by James Graham on 18/08/2023 at 20:33..
Deprecate superceded functions and signals in Room
https://invent.kde.org/neon/forks/libquotient/-/commit/60e06f2f4306d1dccb64af2ce919961260926201

Git commit 79257a00055a5b1aba98e868027dd09cc9e5014c by GitHub (on behalf of Alexey Rusakov) on 19/08/2023 at 09:13..
Merge #699(kitsune): Release 0.8.1[.1]
https://invent.kde.org/neon/forks/libquotient/-/commit/79257a00055a5b1aba98e868027dd09cc9e5014c

Git commit 4dad27d290fd13eb0c7af6400ce0bac8aee1ac46 by James Graham on 19/08/2023 at 10:29..
Document User and RoomMember
https://invent.kde.org/neon/forks/libquotient/-/commit/4dad27d290fd13eb0c7af6400ce0bac8aee1ac46

Git commit 895afedddae63cec37914c318250cc817102ab39 by James Graham on 19/08/2023 at 13:17..
Add localMember and a function to get just joined members.
https://invent.kde.org/neon/forks/libquotient/-/commit/895afedddae63cec37914c318250cc817102ab39

Git commit 0f6241f10e52de57fab1f37e4793d4d7ac8dd295 by James Graham on 19/08/2023 at 14:28..
Document new room API
https://invent.kde.org/neon/forks/libquotient/-/commit/0f6241f10e52de57fab1f37e4793d4d7ac8dd295

Git commit 6bcd065a63f3d9afea6f8f79f793cf3730518b41 by James Graham on 22/08/2023 at 19:08..
Move to holding instances of RoomMember to avoid constantly re-allocating on the heap.
https://invent.kde.org/neon/forks/libquotient/-/commit/6bcd065a63f3d9afea6f8f79f793cf3730518b41

Git commit 0a47216257f95fe120c564a98d380f1df68c9f36 by James Graham on 23/08/2023 at 17:30..
UPdates based upon comments
https://invent.kde.org/neon/forks/libquotient/-/commit/0a47216257f95fe120c564a98d380f1df68c9f36

Git commit 40f0f58c7cc2e744640021c17886b24f34af24fe by James Graham on 23/08/2023 at 18:18..
Update documentation style
https://invent.kde.org/neon/forks/libquotient/-/commit/40f0f58c7cc2e744640021c17886b24f34af24fe

Git commit cba933768b20e17da4577dc2ab729dcb1bab6eb1 by James Graham on 23/08/2023 at 18:30..
Remove \brief from one liners
https://invent.kde.org/neon/forks/libquotient/-/commit/cba933768b20e17da4577dc2ab729dcb1bab6eb1

Git commit 14247aff705e019a1492cb3a71251c18e56a8161 by Tobias Fella on 24/08/2023 at 15:55..
Fix license statement
https://invent.kde.org/neon/forks/libquotient/-/commit/14247aff705e019a1492cb3a71251c18e56a8161

Git commit 16bde5d216d56941591b5ad0dc455a3c57e2dbca by Alexey Rusakov on 11/09/2023 at 06:04..
Revert constifying Room::userIdsAtEvent()

To avoid ABI breakage within 0.8.x. Fixes #702.
https://invent.kde.org/neon/forks/libquotient/-/commit/16bde5d216d56941591b5ad0dc455a3c57e2dbca

Git commit ece707efe677bd8e5aae0ae3c9852651daa2bb7d by Alexey Rusakov on 11/09/2023 at 17:23..
Have const and non-const signatures side by side

To satisfy Neochat that already ended up depending on the new (const)
signature.
https://invent.kde.org/neon/forks/libquotient/-/commit/ece707efe677bd8e5aae0ae3c9852651daa2bb7d

Git commit add4dda2fa92a57995f395f664436010b50c1c7f by GitHub (on behalf of Alexey Rusakov) on 12/09/2023 at 05:31..
Merge #706(kitsune): Fix ABI breakage in 0.8.1
https://invent.kde.org/neon/forks/libquotient/-/commit/add4dda2fa92a57995f395f664436010b50c1c7f

Git commit 89dfc6ea38c2dd20ce4647dafe3d581498f0df86 by Alexey Rusakov on 12/09/2023 at 06:01..
0.8.1.2
https://invent.kde.org/neon/forks/libquotient/-/commit/89dfc6ea38c2dd20ce4647dafe3d581498f0df86

Git commit a313422d05818d241fc7f86087d250b184b26324 by GitHub (on behalf of Alexey Rusakov) on 12/09/2023 at 09:42..
Merge #707(kitsune): Release 0.8.1.2
https://invent.kde.org/neon/forks/libquotient/-/commit/a313422d05818d241fc7f86087d250b184b26324

Git commit 7399003dd15450f53ee27a5453b98651f6f5bbcd by Tobias Fella on 10/10/2023 at 19:04..
Implement loading key backup from security phrase
https://invent.kde.org/neon/forks/libquotient/-/commit/7399003dd15450f53ee27a5453b98651f6f5bbcd

Git commit 8a4817a270baf4f79f38be0d826bcb6385ed5b97 by Tobias Fella on 10/10/2023 at 19:04..
Fix
https://invent.kde.org/neon/forks/libquotient/-/commit/8a4817a270baf4f79f38be0d826bcb6385ed5b97

Git commit 8222987c50b1ede4241a946b9c66a81a341a8205 by Tobias Fella on 10/10/2023 at 19:12..
Refactor
https://invent.kde.org/neon/forks/libquotient/-/commit/8222987c50b1ede4241a946b9c66a81a341a8205

Git commit 4b2f711ae0510ebd139682de8627042059c19c2f by Tobias Fella on 10/10/2023 at 19:12..
Refactor
https://invent.kde.org/neon/forks/libquotient/-/commit/4b2f711ae0510ebd139682de8627042059c19c2f

Git commit f4a6381c0d955decfaac15d9dfbda2d496215719 by Tobias Fella on 10/10/2023 at 19:12..
Fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/f4a6381c0d955decfaac15d9dfbda2d496215719

Git commit 0c639f770cd3e93963016ffc54c8ae7a9e327fe7 by Tobias Fella on 10/10/2023 at 19:12..
Implement getting key from other device
https://invent.kde.org/neon/forks/libquotient/-/commit/0c639f770cd3e93963016ffc54c8ae7a9e327fe7

Git commit 66ef50f3477e9fc0434bc639022a63fd5eb3342c by Tobias Fella on 10/10/2023 at 19:12..
Implement SSSS from security key
https://invent.kde.org/neon/forks/libquotient/-/commit/66ef50f3477e9fc0434bc639022a63fd5eb3342c

Git commit 9eb4468332c1159f54e73279ff121bbbfbd51b05 by Tobias Fella on 10/10/2023 at 19:12..
Cache cross-signing and megolm keys locally
https://invent.kde.org/neon/forks/libquotient/-/commit/9eb4468332c1159f54e73279ff121bbbfbd51b05

Git commit 8d17d8f9dad86c9c4c65fd12f35a13e795d31619 by Tobias Fella on 10/10/2023 at 19:12..
Create event type and fix
https://invent.kde.org/neon/forks/libquotient/-/commit/8d17d8f9dad86c9c4c65fd12f35a13e795d31619

Git commit 283bad0476e3637f1d746c98676b5372f16f0636 by Tobias Fella on 10/10/2023 at 19:12..
More fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/283bad0476e3637f1d746c98676b5372f16f0636

Git commit 196437161afc6a7c7388dd1b89025ffca5450e33 by Tobias Fella on 10/10/2023 at 19:12..
Ifdefs
https://invent.kde.org/neon/forks/libquotient/-/commit/196437161afc6a7c7388dd1b89025ffca5450e33

Git commit 1f125e8ec13c081fd80cf9dcc1a4b5f7b5b47c1f by Tobias Fella on 10/10/2023 at 19:12..
Remove custom job implementations
https://invent.kde.org/neon/forks/libquotient/-/commit/1f125e8ec13c081fd80cf9dcc1a4b5f7b5b47c1f

Git commit 1ae8f897d8da943b50a23dd0d57ed55b46c89912 by Tobias Fella on 13/10/2023 at 12:02..
Change "room has loaded all history" to qCDebug
https://invent.kde.org/neon/forks/libquotient/-/commit/1ae8f897d8da943b50a23dd0d57ed55b46c89912

Git commit 2fd99ef3ae87158e4e7094af6e2d5c9196bc343b by GitHub (on behalf of Alexey Rusakov) on 13/10/2023 at 13:57..
Merge #708(tobias): Change "room has loaded all history" to qCDebug
https://invent.kde.org/neon/forks/libquotient/-/commit/2fd99ef3ae87158e4e7094af6e2d5c9196bc343b

Git commit a59db080c86e72316e6e031a6c10edb75c06e296 by Alexey Rusakov on 23/10/2023 at 20:23..
CI: move over to OpenSSL 3; use apt to install deps on Linux
https://invent.kde.org/neon/forks/libquotient/-/commit/a59db080c86e72316e6e031a6c10edb75c06e296

Git commit 1289ef41e52376b5021b067a526447c369122686 by GitHub (on behalf of Alexey Rusakov) on 24/10/2023 at 06:56..
Merge #710(kitsune): CI: move over to OpenSSL 3; use apt to install deps on Linux
https://invent.kde.org/neon/forks/libquotient/-/commit/1289ef41e52376b5021b067a526447c369122686

Git commit 497c25016991d99f2b75c75ed81d1f9263dc128b by Alexey Rusakov on 24/10/2023 at 11:21..
Tweak Avatar::Private::get()

The logic remains mostly the same, except that:
1) nullptr callbacks are simply ignored, not even reported in Debug mode
2) The newly requested size has to exceed that of the existing image on
   both dimensions, not any of them. This allows to freely request sizes
   like 32x65535 and then 65535x64 without invalidating the cache.
3) After receiving the image from the network it is stored as is,
   without immediate scaling to whatever size the request has been
   initiated with - it is scaled to the requested size before returning
   the image anyway.
4) Most of request errors except NetworkError and Timeout (think 400,
   403, 404 etc.) invalidate the image source entirely now, avoiding
   repeated attempts to retrieve an image that is not retrievable.

The rest is mostly better names (_largestRequestedSize instead of
_requestedSize, Invalid instead of Banned, etc.), comments and code
readability improvements.
https://invent.kde.org/neon/forks/libquotient/-/commit/497c25016991d99f2b75c75ed81d1f9263dc128b

Git commit f1c82ca03a608e4f0f46f3669afb8bcc517451b4 by Tobias Fella on 24/10/2023 at 19:02..
Store etag
https://invent.kde.org/neon/forks/libquotient/-/commit/f1c82ca03a608e4f0f46f3669afb8bcc517451b4

Git commit 8ff7492060b9e5ef14471a1acb236c4016c39f4f by GitHub (on behalf of Tobias Fella) on 25/10/2023 at 16:40..
Merge branch 'dev' into tobias/ssss
https://invent.kde.org/neon/forks/libquotient/-/commit/8ff7492060b9e5ef14471a1acb236c4016c39f4f

Git commit 43fc5469908028a9a5f029eaa426a2b16bf3cc9d by Alexey Rusakov on 26/10/2023 at 05:22..
Drop unneeded testcryptoutils.h
https://invent.kde.org/neon/forks/libquotient/-/commit/43fc5469908028a9a5f029eaa426a2b16bf3cc9d

Git commit 2be1cbed466d9765f1ab60f6fc9a5a523cc2e5ab by Alexey Rusakov on 26/10/2023 at 05:22..
Brush up #includes
https://invent.kde.org/neon/forks/libquotient/-/commit/2be1cbed466d9765f1ab60f6fc9a5a523cc2e5ab

Git commit 3b91d26f83923453c57a2bed927e2f0fd591580b by Alexey Rusakov on 27/10/2023 at 13:26..
Room::addMegolmSessionFromBackup(): use more idiomatic C++

Using an iterator instead of repeated hashmap lookups is not only
slightly more efficient but also allows to make QOlmInboundSession
constructor private again.
https://invent.kde.org/neon/forks/libquotient/-/commit/3b91d26f83923453c57a2bed927e2f0fd591580b

Git commit dcaf59172a1e10f7227693a3170ab395412b49cc by Alexey Rusakov on 27/10/2023 at 13:29..
pbkdf2HmacSha512: default keyLength to 32

We don't use any other anywhere atm.
https://invent.kde.org/neon/forks/libquotient/-/commit/dcaf59172a1e10f7227693a3170ab395412b49cc

Git commit 5af4e78bb97966dc7d08817964836f45810aea9d by GitHub (on behalf of Alexey Rusakov) on 27/10/2023 at 14:25..
Merge #711(kitsune): Tweak Avatar::Private::get()
https://invent.kde.org/neon/forks/libquotient/-/commit/5af4e78bb97966dc7d08817964836f45810aea9d

Git commit fcfc9c1c7a7442ce2cc71d0c7b79c0eb9d7fe5b7 by Alexey Rusakov on 28/10/2023 at 18:39..
Clean up testcryptoutils.cpp

Mostly replacing the magic constant which is QByteArray of 32 zeroes
with a function that returns it.
https://invent.kde.org/neon/forks/libquotient/-/commit/fcfc9c1c7a7442ce2cc71d0c7b79c0eb9d7fe5b7

Git commit be05995427a751d6ddbbc906169adb4d4dedfe25 by Alexey Rusakov on 28/10/2023 at 18:42..
Connection::accountData(): allow to override the account data key

This will be used in a subsequent commit to retrieve an "event" (account
data are not quite full-fledged events but the JSON shape is the same)
whose key is dynamic even though the data type is the same.
https://invent.kde.org/neon/forks/libquotient/-/commit/be05995427a751d6ddbbc906169adb4d4dedfe25

Git commit 9f06d98105b4bf3f09740382850343fc6ec02d74 by Alexey Rusakov on 28/10/2023 at 18:46..
Clean up from code review of SSSSHandler
https://invent.kde.org/neon/forks/libquotient/-/commit/9f06d98105b4bf3f09740382850343fc6ec02d74

Git commit 1a86e018c6319c09d666af61949d51e625e4b603 by Tobias Fella on 29/10/2023 at 20:16..
Fix and add test
https://invent.kde.org/neon/forks/libquotient/-/commit/1a86e018c6319c09d666af61949d51e625e4b603

Git commit 0aebdcd5401d93df9107a8a6a2985b503bb85b69 by Alexey Rusakov on 30/10/2023 at 22:25..
CI: upgrade Sonar GitHub Action to v2

Avoiding Java 11 phase-out with it.
https://invent.kde.org/neon/forks/libquotient/-/commit/0aebdcd5401d93df9107a8a6a2985b503bb85b69

Git commit ffb87076ffb6384ec3d8117ccda3a1db9db59937 by Alexey Rusakov on 30/10/2023 at 23:21..
CI: Work around broken Clang+libstdc++ combination

To be removed once https://github.com/actions/runner-images/issues/8659
gets fixed.
https://invent.kde.org/neon/forks/libquotient/-/commit/ffb87076ffb6384ec3d8117ccda3a1db9db59937

Git commit 8c603adffb552e3007164eeb61a73b0e74d34207 by GitHub (on behalf of Alexey Rusakov) on 31/10/2023 at 08:13..
Merge #712(kitsune): More CI fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/8c603adffb552e3007164eeb61a73b0e74d34207

Git commit a37e737e58d8711cc5c35746c9209b6783491b10 by Alexey Rusakov on 01/11/2023 at 03:08..
ConnectionEncryptionData: make mock look more like a full-blown login

Generate a random pickling key even in case of a mock, and clear
the database at each test run.
https://invent.kde.org/neon/forks/libquotient/-/commit/a37e737e58d8711cc5c35746c9209b6783491b10

Git commit 196b18bde48fa99a3c7b8fc02a6532ce324e7c8c by Alexey Rusakov on 01/11/2023 at 23:44..
Merge remote-tracking branch 'origin/dev' into kitsune/ssss
https://invent.kde.org/neon/forks/libquotient/-/commit/196b18bde48fa99a3c7b8fc02a6532ce324e7c8c

Git commit 1e1799a47f33e48ff2891ad3a7ce209400f62fa3 by James Graham on 04/11/2023 at 18:16..
Pass RoomMember by value.
https://invent.kde.org/neon/forks/libquotient/-/commit/1e1799a47f33e48ff2891ad3a7ce209400f62fa3

Git commit a13b7d753d57a4aca8221ebcf3224a08c7a9ac45 by James Graham on 04/11/2023 at 19:32..
Add signaling for membership changes back
https://invent.kde.org/neon/forks/libquotient/-/commit/a13b7d753d57a4aca8221ebcf3224a08c7a9ac45

Git commit d5a2c8f181e197465a6aef8b57ebee0029a52129 by James Graham on 04/11/2023 at 20:26..
Send RoomMember objects in signals and add member sorter functions for RoomMember
https://invent.kde.org/neon/forks/libquotient/-/commit/d5a2c8f181e197465a6aef8b57ebee0029a52129

Git commit 10d1c9f84d7be8084512f66909796d1aca425452 by James Graham on 05/11/2023 at 14:09..
Add URI to RoomMember
https://invent.kde.org/neon/forks/libquotient/-/commit/10d1c9f84d7be8084512f66909796d1aca425452

Git commit cd53e2e56f49d25ef8e57d419884767eab4d7fdd by James Graham on 05/11/2023 at 14:11..
Add default constructor
https://invent.kde.org/neon/forks/libquotient/-/commit/cd53e2e56f49d25ef8e57d419884767eab4d7fdd

Git commit 28074363e5b0a784c001532ef4d098e9e80525c0 by James Graham on 05/11/2023 at 16:01..
check _room is not nullptr where required
https://invent.kde.org/neon/forks/libquotient/-/commit/28074363e5b0a784c001532ef4d098e9e80525c0

Git commit 63d8fca1a304d90e3ca0329cc12d5c13ba347858 by James Graham on 05/11/2023 at 16:13..
Return default value from member when id is empty
https://invent.kde.org/neon/forks/libquotient/-/commit/63d8fca1a304d90e3ca0329cc12d5c13ba347858

Git commit fd5d2bbe8c5bcfe33552c23df7e94e38ff01b580 by James Graham on 05/11/2023 at 16:38..
Fix equality of RoomMembers
https://invent.kde.org/neon/forks/libquotient/-/commit/fd5d2bbe8c5bcfe33552c23df7e94e38ff01b580

Git commit ae940a22b24604daa9d63d156fd12fb5cbcd38b9 by James Graham on 13/11/2023 at 17:03..
Further comment updates
https://invent.kde.org/neon/forks/libquotient/-/commit/ae940a22b24604daa9d63d156fd12fb5cbcd38b9

Git commit 98d85dbc3748e03f4b3706fecd65b971f75abede by James Graham on 13/11/2023 at 17:06..
Fix typo
https://invent.kde.org/neon/forks/libquotient/-/commit/98d85dbc3748e03f4b3706fecd65b971f75abede

Git commit ec398a498fc11762258c0f37f55d039016e67b4e by James Graham on 16/11/2023 at 19:44..
Move membersMap to QString and remove all uses of User* except for where needed to maintian API/ABI stability
https://invent.kde.org/neon/forks/libquotient/-/commit/ec398a498fc11762258c0f37f55d039016e67b4e

Git commit a32b9d27546a36e1e0e6a2cf95d8eb3349207f65 by James Graham on 17/11/2023 at 15:47..
Add disambiguatedname property
https://invent.kde.org/neon/forks/libquotient/-/commit/a32b9d27546a36e1e0e6a2cf95d8eb3349207f65

Git commit d9e746fe6349f9c0ce959312f18f5624cc5db93c by James Graham on 17/11/2023 at 15:49..
Don't reorder properties randomly
https://invent.kde.org/neon/forks/libquotient/-/commit/d9e746fe6349f9c0ce959312f18f5624cc5db93c

Git commit 5d9ed7a21f087b638e25f65e1ef42a12c1494f7c by James Graham on 17/11/2023 at 18:47..
Remove unneeded include
https://invent.kde.org/neon/forks/libquotient/-/commit/5d9ed7a21f087b638e25f65e1ef42a12c1494f7c

Git commit e9279fb092bacc6ff763ae3371a53af889cd7a55 by James Graham on 17/11/2023 at 18:56..
Remove unneeded qWarning
https://invent.kde.org/neon/forks/libquotient/-/commit/e9279fb092bacc6ff763ae3371a53af889cd7a55

Git commit bb2e881b4cc5f99aac3b16fc743e3a7e0010d02c by James Graham on 21/11/2023 at 17:36..
Further updates based on comments
https://invent.kde.org/neon/forks/libquotient/-/commit/bb2e881b4cc5f99aac3b16fc743e3a7e0010d02c

Git commit 537c801417402c0b9a329a1dec9d2221cb784a4f by James Graham on 21/11/2023 at 17:58..
Template getting Users from a list of usernames
https://invent.kde.org/neon/forks/libquotient/-/commit/537c801417402c0b9a329a1dec9d2221cb784a4f

Git commit 486ab2f56e4d0bd77c1d496c3379ca4376200443 by GitHub (on behalf of nvrWhere) on 21/11/2023 at 17:59..
Update Quotient/room.cpp

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/486ab2f56e4d0bd77c1d496c3379ca4376200443

Git commit 2a0a0c38bef02cc0883d23eea5b2c20050af9e0a by Tobias Fella on 21/11/2023 at 20:17..
Store master key
https://invent.kde.org/neon/forks/libquotient/-/commit/2a0a0c38bef02cc0883d23eea5b2c20050af9e0a

Git commit 425833648d8b8dea532877bad76b34b9e6c1d43b by Tobias Fella on 23/11/2023 at 22:00..
Improve error handling
https://invent.kde.org/neon/forks/libquotient/-/commit/425833648d8b8dea532877bad76b34b9e6c1d43b

Git commit 40f730cebefd287dbfd909506d432296afc6390c by Alexey Rusakov on 30/11/2023 at 16:50..
.clang-tidy: disable misc-include-cleaner

We don't use IWYU, and even then it provides dubious (even though
technically accurate) suggestions for Qt headers (like <qobjectdefs.h>
for `emit` macro and such).
https://invent.kde.org/neon/forks/libquotient/-/commit/40f730cebefd287dbfd909506d432296afc6390c

Git commit b48bb4889acba673d890c1394c70aad54ff1e311 by James Graham on 03/12/2023 at 10:37..
More review updates
https://invent.kde.org/neon/forks/libquotient/-/commit/b48bb4889acba673d890c1394c70aad54ff1e311

Git commit 7970eb90febbe3adea281ba48091f2f9bce76172 by James Graham on 03/12/2023 at 11:55..
Remove User from encryptionUpdate
https://invent.kde.org/neon/forks/libquotient/-/commit/7970eb90febbe3adea281ba48091f2f9bce76172

Git commit f24205e4a86ce083885562365d299943e5204f14 by James Graham on 03/12/2023 at 13:56..
Support RoomMember for direct chats
https://invent.kde.org/neon/forks/libquotient/-/commit/f24205e4a86ce083885562365d299943e5204f14

Git commit e747f475cefd0ccf3d5d41fa7ed27a2b5bee0d87 by James Graham on 09/12/2023 at 13:40..
Move avatar to being managed centrally by connection.
https://invent.kde.org/neon/forks/libquotient/-/commit/e747f475cefd0ccf3d5d41fa7ed27a2b5bee0d87

Git commit db7643ddfe4d2d4b760fa511f4347609a4ccd1ab by Alexey Rusakov on 13/12/2023 at 11:59..
CI: update the Clang toolchain workaround
https://invent.kde.org/neon/forks/libquotient/-/commit/db7643ddfe4d2d4b760fa511f4347609a4ccd1ab

Git commit 885cbc93373f0c8bf1459af626e42a7d8c7add7e by GitHub (on behalf of Alexey Rusakov) on 13/12/2023 at 16:29..
Merge #715(kitsune): A couple non code fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/885cbc93373f0c8bf1459af626e42a7d8c7add7e

Git commit b8f55b25a79c288cb5f2adf4569db414f333d26d by Alexey Rusakov on 13/12/2023 at 19:03..
Merge branch 'dev' into kitsune/ssss
https://invent.kde.org/neon/forks/libquotient/-/commit/b8f55b25a79c288cb5f2adf4569db414f333d26d

Git commit 8a845c591c98ffa605e5e9eb576a68e2e7374eb1 by Alexey Rusakov on 15/12/2023 at 07:46..
cryptoutils.*: Use SslExpected and QOlmExpected

Along with a bit of reformatting.
https://invent.kde.org/neon/forks/libquotient/-/commit/8a845c591c98ffa605e5e9eb576a68e2e7374eb1

Git commit ae888a946612be25efb6c223fde9724edb97d389 by Alexey Rusakov on 15/12/2023 at 11:47..
Fixup hkdfSha256()

1. Replace the magic number returned when outputLength is not 64, with
   an assertion; it's never supposed to be different from 64. Maybe
   we should even `std::terminate` here?
2. Swallow the repetitive code into a macro and clear the SSL context
   in that macro - previously the code leaked the context every time
   it finished with an error. (Those errors are usually unrecoverable
   but it's good to manage resources carefully anyway.)
https://invent.kde.org/neon/forks/libquotient/-/commit/ae888a946612be25efb6c223fde9724edb97d389

Git commit e9a91f3b662743dbdaa4902ad9a74191f155bc1e by Alexey Rusakov on 17/12/2023 at 11:37..
Fixup on fixup :-\

The CI tests didn't reveal the false-negative blunder in Q_ASSERT
because CI builds stuff in Release mode (which might or might not be
right but that's a matter for another PR), so it's replaced with
something more robust.
https://invent.kde.org/neon/forks/libquotient/-/commit/e9a91f3b662743dbdaa4902ad9a74191f155bc1e

Git commit 5da2f6d625c3d1548af13357c7ca358fa55d95df by Alexey Rusakov on 17/12/2023 at 17:27..
cryptoutils: don't expose OpenSSL dependency

It's meant to be private, even if some constants and types happen to be
used in our interface.
https://invent.kde.org/neon/forks/libquotient/-/commit/5da2f6d625c3d1548af13357c7ca358fa55d95df

Git commit 3c33dc8b665f144a56b2cc94261164c3e88743bc by Alexey Rusakov on 17/12/2023 at 17:27..
cryptoutils: ContextHolder; drop extra status variables

Using ContextHolder plugs quite a few memory leaks on error conditions
occurring in cryptoutils. Most of those conditions are grave but that
doesn't mean we should go lax on resource management.
https://invent.kde.org/neon/forks/libquotient/-/commit/3c33dc8b665f144a56b2cc94261164c3e88743bc

Git commit 6e38fe8ebca15a697a55e7f2416c03104845044d by Alexey Rusakov on 17/12/2023 at 22:07..
Replace RAND_bytes() with fillFromSecureRng(); FixedBuffer::operator[]

With this commit, fillFromSecureRng becomes a common way to fill up
a buffer with (truly, if possible) random data. QByteArray-friendly
overload can be made later if necessary.

Also: add operator[] to FixedBufferBase and FixedBuffer.
https://invent.kde.org/neon/forks/libquotient/-/commit/6e38fe8ebca15a697a55e7f2416c03104845044d

Git commit 7148dce6728e92591803773aa2fbc77a5fd2b9c8 by Alexey Rusakov on 18/12/2023 at 11:15..
cryptoutils: check sizes; constify where possible

checkedSize() makes sure that the passed 64-bit sizes can fit signed int
parameters commonly accepted throughout OpenSSL. When the size ends up
clamped, the crypto function that uses it will likely either fail (e.g.
in case of decryption) or act on the trimmed payload (encryption,
digests) but that will be the problem the caller will have to deal with.
https://invent.kde.org/neon/forks/libquotient/-/commit/7148dce6728e92591803773aa2fbc77a5fd2b9c8

Git commit e98971267bbe7b74568d6ea3b14f4954fdb51d1c by Alexey Rusakov on 18/12/2023 at 15:45..
More size checking; allow unsigned types in checkedSize()
https://invent.kde.org/neon/forks/libquotient/-/commit/e98971267bbe7b74568d6ea3b14f4954fdb51d1c

Git commit c562a3378165e5a23d771b143cf5ac135393b0b4 by Alexey Rusakov on 18/12/2023 at 15:45..
Bring static_cast<> back for the mask

Using small integer types inside the expression means integer promotion
rules start kicking in. In particular, and quite counterintuitively,
~(uint8_t{1}) has type int, not unsigned int. So instead, just do the
calculation with unsigned int and trim the result to uint8_t.

(thanks to Sonar for catching that)
https://invent.kde.org/neon/forks/libquotient/-/commit/c562a3378165e5a23d771b143cf5ac135393b0b4

Git commit abebca5d68bd9caabb8b7af0069ff35ead3a5570 by Alexey Rusakov on 18/12/2023 at 15:48..
Cleanup

Mostly upon Sonar warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/abebca5d68bd9caabb8b7af0069ff35ead3a5570

Git commit 90ffb4383f48d8d0f23138dd773d7a39089d326e by Kitsune Ral on 21/12/2023 at 16:27..
cryptoutils: more type safety with compile-time-sized spans

This commit introduces quite a bit stuff built around std::span to
make sure the data passed to OpenSSL and (eventually) to Olm use fewer
reinterpret_cast's, replacing them with easy to read and check calls
that, on top, work with compile-time-sized buffers and spans where
possible. At least some keys have moved to using secure memory along
the way - that still is far from being airtight on keeping sensitive
stuff in secure memory but already better than before.
https://invent.kde.org/neon/forks/libquotient/-/commit/90ffb4383f48d8d0f23138dd773d7a39089d326e

Git commit 1d027cec63a31f6c48010bcfc62650fb24d1c6db by Kitsune Ral on 22/12/2023 at 12:24..
base58decode: constexpr-initialise reverse_alphabet
https://invent.kde.org/neon/forks/libquotient/-/commit/1d027cec63a31f6c48010bcfc62650fb24d1c6db

Git commit 68e6494840d987e2fbd442c7c795852eacc950de by Kitsune Ral on 22/12/2023 at 12:24..
More cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/68e6494840d987e2fbd442c7c795852eacc950de

Git commit c670f562423987a97be85ce0e365dbe987fffc79 by Kitsune Ral on 22/12/2023 at 13:23..
Code review: AesKeySize -> Aes256KeySize
https://invent.kde.org/neon/forks/libquotient/-/commit/c670f562423987a97be85ce0e365dbe987fffc79

Git commit 0ede747b4a50dde795b9036d60e1b000b6ffdf5b by GitHub (on behalf of Alexey Rusakov) on 23/12/2023 at 13:40..
Update Quotient/e2ee/e2ee_common.h

Co-authored-by: Tobias Fella <9750016+TobiasFella at users.noreply.github.com>
https://invent.kde.org/neon/forks/libquotient/-/commit/0ede747b4a50dde795b9036d60e1b000b6ffdf5b

Git commit f7c09cb59a106557cfb16d657131f615fd5fef0b by Kitsune Ral on 23/12/2023 at 19:37..
Fixes upon code review

Also: CLAMP_SIZE now needs a semicolon, like a "normal" statement.
https://invent.kde.org/neon/forks/libquotient/-/commit/f7c09cb59a106557cfb16d657131f615fd5fef0b

Git commit 278c13936b8bcd8cf65e208524961e43a8627add by Kitsune Ral on 23/12/2023 at 20:37..
cryptoutils: replace remaining reinterpret_casts
https://invent.kde.org/neon/forks/libquotient/-/commit/278c13936b8bcd8cf65e208524961e43a8627add

Git commit 2a743723281c47fe1c95fd00d3e50290a371187f by Kitsune Ral on 24/12/2023 at 17:12..
More validations, comments, reformatting
https://invent.kde.org/neon/forks/libquotient/-/commit/2a743723281c47fe1c95fd00d3e50290a371187f

Git commit f10f528360c59aed3c4225502ca1a604f5dfe305 by GitHub (on behalf of Alexey Rusakov) on 25/12/2023 at 16:41..
Merge branch 'tobias/ssss' into kitsune/spans-all-over
https://invent.kde.org/neon/forks/libquotient/-/commit/f10f528360c59aed3c4225502ca1a604f5dfe305

Git commit 53a343f5f7d2b08a1d05c9e348825baf5f64afde by GitHub (on behalf of Alexey Rusakov) on 25/12/2023 at 16:41..
Merge pull request #716 from quotient-im/kitsune/spans-all-over

cryptoutils: more type safety with compile-time-sized spans
https://invent.kde.org/neon/forks/libquotient/-/commit/53a343f5f7d2b08a1d05c9e348825baf5f64afde

Git commit af87ad42f9d6caf5ff221623d9c73f92393f2a29 by Kitsune Ral on 26/12/2023 at 17:38..
Fix a regression in handling attachments

aesCtr256En/Decrypt used FixedBuffer for the target (encrypted and
decrypted, respectively) buffer. FixedBuffer uses secure memory, and
it is purposefully limited to 64k, because it's meant to be used for
secrets, not for payloads (for now at least). This commit reverts to
using normal QByteArray to store the result, using asWritableCBytes()
to get a span adapter that is more convenient to work with in OpenSSL.
https://invent.kde.org/neon/forks/libquotient/-/commit/af87ad42f9d6caf5ff221623d9c73f92393f2a29

Git commit ea95dad4eb714b32d403778c88ff8cc51db53da5 by Kitsune Ral on 07/01/2024 at 07:03..
Fix include paths

...to work with QUOTIENT_FORCE_NAMESPACED_INCLUDES
https://invent.kde.org/neon/forks/libquotient/-/commit/ea95dad4eb714b32d403778c88ff8cc51db53da5

Git commit 63ba51cb3a970f85674bf7dba03b1265277ea21b by Hubert Chathi on 26/01/2024 at 03:29..
Debian release 0.7.1-2
https://invent.kde.org/neon/forks/libquotient/-/commit/63ba51cb3a970f85674bf7dba03b1265277ea21b

Git commit 5486582d9e2086f58b4185fe46c8f9cde18a6305 by Hubert Chathi on 26/01/2024 at 03:32..
Update upstream source from tag 'upstream/0.8.1.2'

Update to upstream version '0.8.1.2'
with Debian dir 2ce567d96667d915bcf9e6cf511dec0dd0fac424
https://invent.kde.org/neon/forks/libquotient/-/commit/5486582d9e2086f58b4185fe46c8f9cde18a6305

Git commit 0c320ece2600d9599f16cdd17c81d3f25725260f by Hubert Chathi on 26/01/2024 at 03:32..
New upstream version 0.8.1.2
https://invent.kde.org/neon/forks/libquotient/-/commit/0c320ece2600d9599f16cdd17c81d3f25725260f

Git commit 027786f4435f1bc6219cb3ee73d2900d7c7ba465 by Kitsune Ral on 17/02/2024 at 19:24..
Go for clang-15 to work around GH's Clang SNAFU

See https://github.com/actions/runner-images/issues/8659
https://invent.kde.org/neon/forks/libquotient/-/commit/027786f4435f1bc6219cb3ee73d2900d7c7ba465

Git commit ed727b7e30eea9b0885037f1f4af0a45df986e7b by GitHub (on behalf of Alexey Rusakov) on 18/02/2024 at 08:42..
Merge #717(kitsune): GHA: Fix Clang pipelines by using Clang 15
https://invent.kde.org/neon/forks/libquotient/-/commit/ed727b7e30eea9b0885037f1f4af0a45df986e7b

Git commit aaf79b6a53338b590439528375fb955aa84c60b5 by Kitsune Ral on 18/02/2024 at 08:53..
Merge branch 'dev' into kitsune/ssss
https://invent.kde.org/neon/forks/libquotient/-/commit/aaf79b6a53338b590439528375fb955aa84c60b5

Git commit 5c3d3b5f5ac54cedc698e6d4e07e99511cdb1d96 by Kitsune Ral on 21/02/2024 at 07:01..
addParam: support QHash

After moving to OpenAPI 3 it became possible to describe passing whole
data structures in URL queries; this commit enables that feature in
generated code.
https://invent.kde.org/neon/forks/libquotient/-/commit/5c3d3b5f5ac54cedc698e6d4e07e99511cdb1d96

Git commit e4219aac7e3bf10e5471989bae0c666970786549 by Kitsune Ral on 21/02/2024 at 07:01..
Update gtad.yaml for OAS3-based API description
https://invent.kde.org/neon/forks/libquotient/-/commit/e4219aac7e3bf10e5471989bae0c666970786549

Git commit ffc0acf785125b7919e811cec96963f5b73c6da6 by Kitsune Ral on 21/02/2024 at 07:01..
Regenerate API files
https://invent.kde.org/neon/forks/libquotient/-/commit/ffc0acf785125b7919e811cec96963f5b73c6da6

Git commit 3a0922dad46135ad3b394de246d2309cc7e62caa by Kitsune Ral on 21/02/2024 at 07:01..
.clang-format: increase ColumnLimit to 100

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/3a0922dad46135ad3b394de246d2309cc7e62caa

Git commit c7fa91cf253be7f5a32489e0a74020a779ee6916 by Tobias Fella on 21/02/2024 at 17:22..
Add functions for (un)ignoring users by userid

Required to be able to (un)ignore users that neochat doesn't directly know about
https://invent.kde.org/neon/forks/libquotient/-/commit/c7fa91cf253be7f5a32489e0a74020a779ee6916

Git commit 8a4896ee4ffbb7a5cf809e0ddbf5a5496ecc7aad by Tobias Fella on 21/02/2024 at 19:37..
Deprecate user-based ignore functions
https://invent.kde.org/neon/forks/libquotient/-/commit/8a4896ee4ffbb7a5cf809e0ddbf5a5496ecc7aad

Git commit fd79b60901325d8c7fde16617a483d3b26aa4bbd by GitHub (on behalf of Alexey Rusakov) on 21/02/2024 at 20:02..
Merge #718(tobias): Add functions for (un)ignoring users by userid
https://invent.kde.org/neon/forks/libquotient/-/commit/fd79b60901325d8c7fde16617a483d3b26aa4bbd

Git commit e67e00423dfc22bece1c701b7c000da11c1b92db by Tobias Fella on 21/02/2024 at 20:23..
Add property for querying a connection's accountdata
https://invent.kde.org/neon/forks/libquotient/-/commit/e67e00423dfc22bece1c701b7c000da11c1b92db

Git commit f017b0232f3949f933ae4c2253cc12c7c7127c18 by GitHub (on behalf of Tobias Fella) on 21/02/2024 at 20:26..
Merge pull request #719 from quotient-im/tobias/list-account-data

Add property for querying a connection's accountdata
https://invent.kde.org/neon/forks/libquotient/-/commit/f017b0232f3949f933ae4c2253cc12c7c7127c18

Git commit de53fb658be030f3711f4291e1c71de2cb27fd3e by Kitsune Ral on 22/02/2024 at 21:11..
Use GTAD 0.10.2
https://invent.kde.org/neon/forks/libquotient/-/commit/de53fb658be030f3711f4291e1c71de2cb27fd3e

Git commit 68fb27aba468253a2d719920923b41e26bd4460a by Kitsune Ral on 22/02/2024 at 21:11..
*.mustache: unify comment style and drop unnecessary comments

That's additional cleanup on top of GTAD 0.10 that stopped generating
extra comments where they should never have been.
https://invent.kde.org/neon/forks/libquotient/-/commit/68fb27aba468253a2d719920923b41e26bd4460a

Git commit 9a873a4920657c6c70dda7f149ec9ffa06ee48e6 by Kitsune Ral on 22/02/2024 at 21:11..
Regenerate API files again
https://invent.kde.org/neon/forks/libquotient/-/commit/9a873a4920657c6c70dda7f149ec9ffa06ee48e6

Git commit a12496fecf205bb4c9a553029d48316cc4445edf by Kitsune Ral on 22/02/2024 at 21:11..
CI: use Qt 6.4 for GTAD
https://invent.kde.org/neon/forks/libquotient/-/commit/a12496fecf205bb4c9a553029d48316cc4445edf

Git commit 1b5bf3db1b158a4d4f0054e36127207ab66b364e by Kitsune Ral on 22/02/2024 at 21:11..
CI: move update-api to GCC

Not sure what is wrong with the toolchain this time but Clang (even 15)
could not tackle standard iterator header from libstdc++-13; so switch
to GCC 13 for now.
https://invent.kde.org/neon/forks/libquotient/-/commit/1b5bf3db1b158a4d4f0054e36127207ab66b364e

Git commit 3bd08558764b89142657711ff36aa6bccceab72d by Kitsune Ral on 22/02/2024 at 21:11..
Bye-bye Valgrind

Its results weren't checked for quite some time now, and it trips over
too new toolchains and CodeQL instrumentation code.

TODO: Introduce ASan.
https://invent.kde.org/neon/forks/libquotient/-/commit/3bd08558764b89142657711ff36aa6bccceab72d

Git commit f9a1a79e0b0b20121e57971346bd30cf616c48e5 by Tobias Fella on 01/03/2024 at 20:39..
Add types for account data events
https://invent.kde.org/neon/forks/libquotient/-/commit/f9a1a79e0b0b20121e57971346bd30cf616c48e5

Git commit ee319bcfc081fb3ee4503fa333033085c9abc39d by Tobias Fella on 02/03/2024 at 15:39..
Improve error handling
https://invent.kde.org/neon/forks/libquotient/-/commit/ee319bcfc081fb3ee4503fa333033085c9abc39d

Git commit e063aa7ce26be699734ec5e73f5276fdeb20799d by Kitsune Ral on 03/03/2024 at 18:00..
Fix Sonar analysis not being done; upgrade CodeQL actions
https://invent.kde.org/neon/forks/libquotient/-/commit/e063aa7ce26be699734ec5e73f5276fdeb20799d

Git commit d312400db7b9b2545055165f6434fa295ed34aa0 by GitHub (on behalf of Alexey Rusakov) on 03/03/2024 at 20:25..
Merge #720(kitsune): Move client-server API to Matrix 1.9
https://invent.kde.org/neon/forks/libquotient/-/commit/d312400db7b9b2545055165f6434fa295ed34aa0

Git commit 6cf12c854a05e60fd61933a67665861618d44b45 by GitHub (on behalf of Alexey Rusakov) on 05/03/2024 at 18:16..
Apply cleanup from code review

Co-authored-by: Tobias Fella <9750016+TobiasFella at users.noreply.github.com>
https://invent.kde.org/neon/forks/libquotient/-/commit/6cf12c854a05e60fd61933a67665861618d44b45

Git commit 8d1edd5cbfa7b0efda974c8565af0053386f5352 by GitHub (on behalf of Alexey Rusakov) on 05/03/2024 at 18:17..
Merge #695(nvrWhere): RoomMember API
https://invent.kde.org/neon/forks/libquotient/-/commit/8d1edd5cbfa7b0efda974c8565af0053386f5352

Git commit 1568186a7406d2a96f8afa98b4137bd10f9b7590 by Kitsune Ral on 06/03/2024 at 10:32..
Merge branch 'dev' into ssss
https://invent.kde.org/neon/forks/libquotient/-/commit/1568186a7406d2a96f8afa98b4137bd10f9b7590

Git commit c81af2e0041dd20b5f8c924f2da6742014212343 by Kitsune Ral on 08/03/2024 at 08:35..
Namespace SSSSHandler; other refactoring

1. Instead of templating decryptKey (which effectively emits the same
   function 4 times), just pass the event type as a parameter.
2. Similarly, just use event type strings instead of full-blown Event
   derivatives.
3. requestKeyFromDevices() is pretty much all about doing stuff in
   the Connection context, so move it there.
https://invent.kde.org/neon/forks/libquotient/-/commit/c81af2e0041dd20b5f8c924f2da6742014212343

Git commit 3d7720fa61dbb6ba6327e386d919295ae94f29f2 by James Graham on 10/03/2024 at 14:56..
Expose the htmlsafe properties of RoomMember
https://invent.kde.org/neon/forks/libquotient/-/commit/3d7720fa61dbb6ba6327e386d919295ae94f29f2

Git commit 2742596067a2bee2c62b877700e71a7c1f68698f by GitHub (on behalf of Alexey Rusakov) on 10/03/2024 at 15:01..
Merge #724(nvrWhere): Expose the htmlsafe properties of RoomMember
https://invent.kde.org/neon/forks/libquotient/-/commit/2742596067a2bee2c62b877700e71a7c1f68698f

Git commit a9b5580d29081389a8e53075f38fee4ad1c97fcb by James Graham on 10/03/2024 at 18:10..
Add missing function for roomMembersTyping
https://invent.kde.org/neon/forks/libquotient/-/commit/a9b5580d29081389a8e53075f38fee4ad1c97fcb

Git commit 3cd800b5280f44defd326df08513305db4ebc27f by GitHub (on behalf of Alexey Rusakov) on 10/03/2024 at 22:07..
Remove excess Q_INVOKABLE
https://invent.kde.org/neon/forks/libquotient/-/commit/3cd800b5280f44defd326df08513305db4ebc27f

Git commit 8883a4f06f8f727826a12cbc8c09490aa55c0827 by GitHub (on behalf of Alexey Rusakov) on 10/03/2024 at 22:08..
Merge #725(nvrWhere): Add missing function for roomMembersTyping
https://invent.kde.org/neon/forks/libquotient/-/commit/8883a4f06f8f727826a12cbc8c09490aa55c0827

Git commit 6c24ca0cca390010afab64fa297175e232203101 by Kitsune Ral on 11/03/2024 at 07:41..
Don't rely on Qt's symbol export macro on non-Windows

Fixes #692.
https://invent.kde.org/neon/forks/libquotient/-/commit/6c24ca0cca390010afab64fa297175e232203101

Git commit 35c9872ed4e745f7340195a73e19bccbe2c4c041 by GitHub (on behalf of Alexey Rusakov) on 11/03/2024 at 09:54..
Merge #726(KitsuneRal): Don't rely on Qt's symbol export macro on non-Windows
https://invent.kde.org/neon/forks/libquotient/-/commit/35c9872ed4e745f7340195a73e19bccbe2c4c041

Git commit 8dddb64dfeb630907b23494869e370efaaa68beb by Kitsune Ral on 13/03/2024 at 08:10..
calculateDefaultKey() -> unlockAndLoad() + more refactoring

1. The rename is because it does so much more than just default key
   calculation.
2. Speaking of the default key, it's now only retrieved once, not 5
   times.
3. The default key "event" type definition can be removed now that
   usage of it becomes one-time access of a single key.
https://invent.kde.org/neon/forks/libquotient/-/commit/8dddb64dfeb630907b23494869e370efaaa68beb

Git commit 2c1dff2a9999b9a70a1da9d22dac3a4fced15af3 by Tobias Fella on 13/03/2024 at 16:27..
Utf8 passphrase
https://invent.kde.org/neon/forks/libquotient/-/commit/2c1dff2a9999b9a70a1da9d22dac3a4fced15af3

Git commit 51c2ea830f55aeb35313fa0610cf415a6d8a582c by Kitsune Ral on 14/03/2024 at 16:16..
Refactor unlockAndLoad()

The method became rather large and with additional error checking would
get even larger - so now the initial preparations concerned with
default key and key description retrieval are put out to
UnlockData::prepare() - a static factory method returning the loaded
information that is used further in the process. That allows to put
the piece concerned with making the key out of the passphrase to
unlockSSSSWithPassphrase() (formerly not quite correctly named as
unlockSSSSFromPassword). More byte_views are introduced, to ensure
correct payload sizes as early (preferably at compile time) as possible.
https://invent.kde.org/neon/forks/libquotient/-/commit/51c2ea830f55aeb35313fa0610cf415a6d8a582c

Git commit 1c55da217b780d98c68aa1bcd218c14dde0581a3 by Kitsune Ral on 14/03/2024 at 18:55..
Use spans properly

Fixes building on macOS.
https://invent.kde.org/neon/forks/libquotient/-/commit/1c55da217b780d98c68aa1bcd218c14dde0581a3

Git commit bed56336ef438e944998e026cd7424b2a924989a by Kitsune Ral on 14/03/2024 at 21:31..
loadMegolmBackup(): use facilities the jobs provide

Also: fix failing to jump over the result-using code in case of failing
to decrypt the session.
https://invent.kde.org/neon/forks/libquotient/-/commit/bed56336ef438e944998e026cd7424b2a924989a

Git commit a6abe55a67a3ca3966e4d71241711eff5034eead by Kitsune Ral on 14/03/2024 at 22:24..
Cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/a6abe55a67a3ca3966e4d71241711eff5034eead

Git commit 613181215e8e5de3bd26a29babe4d84741b985c7 by Kitsune Ral on 15/03/2024 at 19:12..
Fix garbage in info parameter passed to hkdfSha256

Thanks to @tobias for spotting that.
https://invent.kde.org/neon/forks/libquotient/-/commit/613181215e8e5de3bd26a29babe4d84741b985c7

Git commit 58d3445882a5516506ad85aebbdac9b185287e5a by GitHub (on behalf of Alexey Rusakov) on 16/03/2024 at 07:45..
Merge #687(tobias): Implement loading old megolm keys from SSSS
https://invent.kde.org/neon/forks/libquotient/-/commit/58d3445882a5516506ad85aebbdac9b185287e5a

Git commit 475983b621d8792eb01ea25336e502e7450ea5f7 by Kitsune Ral on 16/03/2024 at 07:46..
Add description to [[deprecated]]

Also, put the attribute before Q_INVOKABLE to make moc less confused
when used inside Qt Creator.
https://invent.kde.org/neon/forks/libquotient/-/commit/475983b621d8792eb01ea25336e502e7450ea5f7

Git commit b6b80052e1b9f0ae230c747d83d72f105e939fa7 by Kitsune Ral on 16/03/2024 at 07:46..
SyncData: use $ref to say where room files are

The code so far assumed certain naming for room state cache files,
dumping a room id and QJsonObject::Null instead of a standard $ref
to another file. This is fixed now - while the old cache can still be
read, the next written state.json will contain a reference object where
null was before. The old code will read this new cache just as well,
constructing the file name and ignoring the reference.
https://invent.kde.org/neon/forks/libquotient/-/commit/b6b80052e1b9f0ae230c747d83d72f105e939fa7

Git commit 212f6a3dedcdec2ea227a6f76a76348a657488c2 by Kitsune Ral on 16/03/2024 at 07:49..
Indent hashes in preprocessor directives

It works better for manual indenting/unindenting of those lines.

Also: remove a couple of no more needed pre-Qt 5.15 constructs.
https://invent.kde.org/neon/forks/libquotient/-/commit/212f6a3dedcdec2ea227a6f76a76348a657488c2

Git commit c6933c1d53e6fb3457bc3292aef79b8f8d3dba25 by GitHub (on behalf of Alexey Rusakov) on 20/03/2024 at 20:48..
Merge #728(kitsune): Miscellaneous cleanup
https://invent.kde.org/neon/forks/libquotient/-/commit/c6933c1d53e6fb3457bc3292aef79b8f8d3dba25

Git commit 9b1bfc1d9132cdc7e7a69a0782f1cd5631149298 by James Graham on 02/04/2024 at 09:56..
Create an event for m.room.server_acl
https://invent.kde.org/neon/forks/libquotient/-/commit/9b1bfc1d9132cdc7e7a69a0782f1cd5631149298

Git commit b1c358be2e6e4cd6588d2db10903a19458c50d46 by James Graham on 02/04/2024 at 17:24..
Add the ability to both set whether connections will try to encrypt direct chats by default and change the setting for individual connections
https://invent.kde.org/neon/forks/libquotient/-/commit/b1c358be2e6e4cd6588d2db10903a19458c50d46

Git commit 304c0d4d2b374d59ea80d1e3701b4929d12313b7 by Kitsune Ral on 03/04/2024 at 19:22..
A small fix for b6b80052

See https://github.com/quotient-im/libQuotient/pull/728/commits/b6b80052e1b9f0ae230c747d83d72f105e939fa7#r1533551322
https://invent.kde.org/neon/forks/libquotient/-/commit/304c0d4d2b374d59ea80d1e3701b4929d12313b7

Git commit e5bc0d906bde0190d31a43ad273b010dc5a475bc by GitHub (on behalf of Alexey Rusakov) on 04/04/2024 at 07:01..
Merge #732(kitsune): A small fix for the previous PR
https://invent.kde.org/neon/forks/libquotient/-/commit/e5bc0d906bde0190d31a43ad273b010dc5a475bc

Git commit a4c6278c98facd27e5afb71b6c2b6aff18368cce by James Graham on 04/04/2024 at 09:54..
Updates based on comments
https://invent.kde.org/neon/forks/libquotient/-/commit/a4c6278c98facd27e5afb71b6c2b6aff18368cce

Git commit 524d6ecea3f0d70a9ede3547e6839a28db70c6aa by James Graham on 04/04/2024 at 10:10..
Comment updates
https://invent.kde.org/neon/forks/libquotient/-/commit/524d6ecea3f0d70a9ede3547e6839a28db70c6aa

Git commit 221faead333ffa4bcda9cf7b77d83bf2925dffa0 by GitHub (on behalf of Alexey Rusakov) on 06/04/2024 at 07:58..
Merge #729(nvrWhere): Create an event for m.room.server_acl
https://invent.kde.org/neon/forks/libquotient/-/commit/221faead333ffa4bcda9cf7b77d83bf2925dffa0

Git commit ae3106c6daf488beb520245469be596b72cc51e5 by GitHub (on behalf of Alexey Rusakov) on 06/04/2024 at 08:02..
Fixup
https://invent.kde.org/neon/forks/libquotient/-/commit/ae3106c6daf488beb520245469be596b72cc51e5

Git commit 4d48bc01e401b9464b53a8f754105dbad56618d2 by GitHub (on behalf of Alexey Rusakov) on 06/04/2024 at 08:04..
Merge #730(nvrWhere): Direct Chat Encryption Default
https://invent.kde.org/neon/forks/libquotient/-/commit/4d48bc01e401b9464b53a8f754105dbad56618d2

Git commit 181c8f2dbd0d1d8c9309f63b962ecca614d675b4 by Tobias Fella on 06/04/2024 at 15:59..
Fix some deprecation warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/181c8f2dbd0d1d8c9309f63b962ecca614d675b4

Git commit 6cba414cd0a326a512e4a72f7f0bf4ccbd95d389 by Kitsune Ral on 06/04/2024 at 17:12..
Remove Q_ASSERT on a failing pickling key

Effectively depending on external data, it did more harm than good.

Fixes #599.
https://invent.kde.org/neon/forks/libquotient/-/commit/6cba414cd0a326a512e4a72f7f0bf4ccbd95d389

Git commit 4a93e124974e25842f2fe44d66b67796d1ac6a82 by Kitsune Ral on 06/04/2024 at 17:12..
Emit a dedicated signal when all history loaded

Fixes #703.
https://invent.kde.org/neon/forks/libquotient/-/commit/4a93e124974e25842f2fe44d66b67796d1ac6a82

Git commit b636ce61bdd160d7e548acdb0e934cda893992ba by Kitsune Ral on 06/04/2024 at 17:18..
Fix building with Qt 5.15

Partially broken by #730 and not caught during the review; partially
broken in 4a93e124.
https://invent.kde.org/neon/forks/libquotient/-/commit/b636ce61bdd160d7e548acdb0e934cda893992ba

Git commit 9dc81ef2003d77f5e6b647de90f0b1ee90b1b452 by GitHub (on behalf of Tobias Fella) on 06/04/2024 at 17:21..
Update Quotient/util.h

Co-authored-by: Alexey Rusakov <Kitsune-Ral at users.sf.net>
https://invent.kde.org/neon/forks/libquotient/-/commit/9dc81ef2003d77f5e6b647de90f0b1ee90b1b452

Git commit b08cc9396673c2ff0e1dd8329597896e8db072f4 by GitHub (on behalf of Alexey Rusakov) on 06/04/2024 at 19:45..
Update Quotient/util.h again
https://invent.kde.org/neon/forks/libquotient/-/commit/b08cc9396673c2ff0e1dd8329597896e8db072f4

Git commit 9656b60a107b89599338d8c3182bb6deae581705 by GitHub (on behalf of Alexey Rusakov) on 07/04/2024 at 06:54..
Merge #734(kitsune): A couple fixes
https://invent.kde.org/neon/forks/libquotient/-/commit/9656b60a107b89599338d8c3182bb6deae581705

Git commit 70043cef4ef6d407722b3f589501ed354c045ad4 by GitHub (on behalf of Alexey Rusakov) on 07/04/2024 at 09:18..
Merge #735(tobias): Fix some deprecation warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/70043cef4ef6d407722b3f589501ed354c045ad4

Git commit 717af9cc26cea8a11eba968ee6f959d618ded199 by Kitsune Ral on 13/04/2024 at 20:35..
CI: Disable update-api mode

As for now, it cannot be used without breaking ABI compatibility
within 0.8.
https://invent.kde.org/neon/forks/libquotient/-/commit/717af9cc26cea8a11eba968ee6f959d618ded199

Git commit 73d236f35e3545e19e37b62b1b7887a591cd93cd by GitHub (on behalf of Alexey Rusakov) on 14/04/2024 at 09:36..
Merge #737(kitsune): CI: Disable update-api mode
https://invent.kde.org/neon/forks/libquotient/-/commit/73d236f35e3545e19e37b62b1b7887a591cd93cd

Git commit 5dfe09e3dd64afddb2e6dc58c4e7c6df6bb604c1 by Kitsune Ral on 14/04/2024 at 10:38..
Tackle deprecations and other warnings
https://invent.kde.org/neon/forks/libquotient/-/commit/5dfe09e3dd64afddb2e6dc58c4e7c6df6bb604c1

Git commit 3cdcbc9128b27dee081ee75b2b8e13e2b5b6b280 by Kitsune Ral on 14/04/2024 at 10:56..
Remove the 0xFFFD verbatim character from the comment

It's meant to indicate text decoding problems and things like Sonar
complain about it in the logs (rather legitimately, I'd say).
https://invent.kde.org/neon/forks/libquotient/-/commit/3cdcbc9128b27dee081ee75b2b8e13e2b5b6b280

Git commit eb584cf46094383b55c3913af6116540e46cb71c by Kitsune Ral on 14/04/2024 at 18:19..
quotest: work around sporadic sendFile failures

The commit adds very naive retries to quotest's DownloadRunner, while
the proper fix for #727 is in the works.
https://invent.kde.org/neon/forks/libquotient/-/commit/eb584cf46094383b55c3913af6116540e46cb71c

Git commit 27249eea2773d10c111299d6b85f0502f48340c0 by Kitsune Ral on 14/04/2024 at 18:24..
Make sure Quotest doesn't get stuck on exit

There was a wrong assumption that the message with the final report
will always get sent last. This is not true when 429's occur, as
the library may reorder sending events (related issue: #133). Moreover,
this actually was premature optimisation because the code checks for
messages reaching the homeserver anyway. Once these two lines are gone,
the code starts doing exactly what the comments next to it say, and
exits promptly after the last message reaches the homeserver.
https://invent.kde.org/neon/forks/libquotient/-/commit/27249eea2773d10c111299d6b85f0502f48340c0

Git commit d1f5bb1ddab5155979a3d861c29efa223ca319b4 by GitHub (on behalf of Alexey Rusakov) on 14/04/2024 at 20:32..
Merge #738(kitsune): Last fixes before 0.8.2
https://invent.kde.org/neon/forks/libquotient/-/commit/d1f5bb1ddab5155979a3d861c29efa223ca319b4

Git commit 375096494b955c5ef8b5086254c9ce21a5bece3f by Kitsune Ral on 15/04/2024 at 12:04..
Update documentation

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/375096494b955c5ef8b5086254c9ce21a5bece3f

Git commit ca5d0d8a8fe1f042d60d554f9cc5c331cffad7c3 by Kitsune Ral on 15/04/2024 at 12:05..
.clang-tidy: skip performance-avoid-endl

Benefits from replacing endl with \n are rather questionable, in fact:
https://www.modernescpp.com/index.php/c-core-guidelines-improved-performance-with-iostreams/

[skip ci]
https://invent.kde.org/neon/forks/libquotient/-/commit/ca5d0d8a8fe1f042d60d554f9cc5c331cffad7c3

Git commit b02ecef58e855626030b1294546f91459c73c1ac by Kitsune Ral on 15/04/2024 at 12:06..
0.8.2
https://invent.kde.org/neon/forks/libquotient/-/commit/b02ecef58e855626030b1294546f91459c73c1ac

Git commit b7d72fd40c19262b1ed89a063984df1ccb66d83b by GitHub (on behalf of Alexey Rusakov) on 15/04/2024 at 14:34..
Merge #739(kitsune): Release 0.8.2
https://invent.kde.org/neon/forks/libquotient/-/commit/b7d72fd40c19262b1ed89a063984df1ccb66d83b

Git commit 3a6a0799139dedc9e02e8bca6c635439dd24e994 by Hubert Chathi on 14/05/2024 at 02:00..
Debian release 0.8.1.2-1 (upload to experimental)
https://invent.kde.org/neon/forks/libquotient/-/commit/3a6a0799139dedc9e02e8bca6c635439dd24e994

Git commit aa7a58f0b855a4bf91a337cb6db5130e4493efa6 by Hubert Chathi on 14/05/2024 at 02:01..
Debian release 0.8.1.2-2
https://invent.kde.org/neon/forks/libquotient/-/commit/aa7a58f0b855a4bf91a337cb6db5130e4493efa6

Git commit 499015b1170146dd8122dd42290921b916217b6b by Hubert Chathi on 15/08/2024 at 16:45..
New upstream version 0.8.2
https://invent.kde.org/neon/forks/libquotient/-/commit/499015b1170146dd8122dd42290921b916217b6b

Git commit d40ae469e3f6428cbe3066de341b8638ba9a4423 by Hubert Chathi on 15/08/2024 at 16:45..
Update upstream source from tag 'upstream/0.8.2'

Update to upstream version '0.8.2'
with Debian dir cb1842a4cf696b6e1fbb575cb80fd716641a55cf
https://invent.kde.org/neon/forks/libquotient/-/commit/d40ae469e3f6428cbe3066de341b8638ba9a4423

Git commit c49f69b619a42ec31c74fd2c8f9c7e9d9d9b4ec0 by Hubert Chathi on 18/08/2024 at 02:49..
Debian release 0.8.2-1
https://invent.kde.org/neon/forks/libquotient/-/commit/c49f69b619a42ec31c74fd2c8f9c7e9d9d9b4ec0


More information about the Neon-commits mailing list