diff --git a/CHANGELOG.md b/CHANGELOG.md
index af8b9e5d..f20d747e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,183 @@
# Changelog
+## [0.9.0] -- Unreleased
+
+### Highlights
+
+- Somewhat stable end to end encryption
+ - Show the room verification status
+ - Configure Nheko to only send to verified users
+ - Store the encryption keys securely in the OS-provided secrets service.
+ - Support online keybackup as well as sharing historical session keys.
+- Crosssigning bootstrapping
+ - Crosssigning is used to simplify the verification process. In this release
+ Nheko can setup crosssigning on a new account without having to use a
+ different client.
+ - Nheko now also prompts you, if there are any unverified devices and asks you to verify them.
+- Room directory (Manu)
+ - Search for rooms on your server and other servers. (Prezu)
+ - If their topic interests you and it has the right amount of members, join
+ the room and the discussion!
+- Custom sticker packs
+ - Add a custom sticker picker, that allows you to send stickers from MSC2545.
+ - Support creating new sticker (and emote) packs.
+ - You can share packs in a room and enable them globally or just for that
+ room.
+- Token authenticated registration (Callum)
+ - Sign up with a token to servers, that have otherwise disabled registration.
+ - This was done as part of GSoC and makes it easier to run private servers for
+ your family and friends!
+
+### Features
+
+- Support email in registration (required on matrix.org for example)
+- Warn, if an @room would mention the whole room, because some people don't like that.
+- Support device removal as well as renaming. (Thulinma)
+- Show your devices without encryption support, when showing your profile.
+ (Thulinma)
+- Move to the next room with unread messages by pressing `Alt-A`. (Symphorien)
+- Support jdenticons as a placeholder for rooms or users without avatars.
+ (LorenDB)
+ - You will need to install https://github.com/Nheko-Reborn/qt-jdenticon
+- Properly sign macOS builds.
+- Support animated images like GIF and WebP.
+ - Optionally just play them on hover.
+- Support accepting knocks in the timeline.
+- Close a room when clicking it again. (LorenDB)
+- Close image overlay with escape.
+- Support .well-known discovery during registration.
+- Limited spaces support.
+ - No nice display of nested spaces.
+ - No previews of unjoined rooms.
+ - No way to edit a space.
+- Render room avatar changes in the timeline. (BShipman)
+- Support pulling out the sidebar to make it wider.
+- Allow editing pending messages instead of blocking until they are sent.
+ (balsoft)
+- Support mnemonics in the context menus. (AppAraat)
+- Support TOFU for encryption. (Trust on first use)
+- Right click -> copy address location.
+- Forward messages. (Jedi18)
+- Alt-F to forward messages.
+
+### Improvements
+
+- Tranlation updates:
+ - French by MayeulC, ISSOtm, Glandos, Carl Schwan
+ - Dutch by Thulinma, Bas van Rossem, Glael, Thijs
+ - Esperanto by Tirifto, Colin
+ - Estonian by Priit
+ - Indonesian by Linerly
+ - German by 123, Konstantin, fnetX, Mr. X, CryptKid
+ - Portuguese (Portugal) by Tnpod, Xenovox, Gabriel R
+ - Portuguese (Brazil) by Terry, zerowhy
+ - Finnish by sdrrespudro, Priit
+ - Polish by Prezu, AXD, stabor
+ - Malayalam by vachan-maker
+ - Italian by Daniele, Lorenzo
+ - Spanish by lluise
+ - Russian by kirillpt
+ - Various wording improvements throughout.
+- Verification status and identity keys should now update properly after login.
+- Clicking the user in a read receipt opens their profile. (LorenDB)
+- Invites should now work properly on mobile.
+- Use the modern notifications on macOS.
+- Decode blurhashes faster.
+- Port various dialogs to Qml. (LorenDB)
+- Improve paste support on Windows, when mimetype detection fails and pasting
+ SVGs (Thulinma)
+- --help and --version now work, even if Nheko is already running somewhere.
+- Update emoji support to version 14.
+- Properly navigate to linked to events. (Thulinma)
+- Lots of smaller bugfixes and refactorings. (LorenDB)
+- Scroll entire profile page and properly trim contents. (Thulinma)
+- Make it easy to switch between global and room specific profiles. (Thulinma)
+- Deduplicate messages sent by the server. (Thulinma)
+- Decrease the margin of blockquotes. (tastytea)
+- Alerts now work, if the homeserver does not implement the notifications
+ endpoint. (Thulinma)
+- Right click menu now works on replies.
+- Decrypt encrypted media only in memory.
+- Don't use CC-BY in the appstream license to not confuse Gnome Software.
+- Document how to sync the repo on Gentoo. (alfasi)
+- Support online key backup.
+- Improve FAQ. (harmathy)
+- Support Backtab/Shift-Tab for moving backwards in completer selections.
+- Clear cache to support the new features.
+- Improve the emoji completer (less jitter and fix places where it didn't open). (Thomaps Karpiniec)
+- Cleanup @room escape logic.
+- Improve performance of timeline rendering.
+- Add fallback for sent stickers, so that they show on iOS.
+- Load rooms somewhat lazily.
+- Properly scale avatars to DPI.
+- Round avatars once in the backend instead of on every render.
+- Request keys of all members, when opening a room the first time.
+- Timeout TCP connections, if heartbeat can't be heard.
+- Change secrets name. You might need to rerequest your secrets after upgrading!
+- Protect against replay attacks where megolm sessions are reused.
+- Add "request keys" button to undecryptable messages.
+- Remove superfluous permissions in Flatpak.
+- Properly set window parents on Wayland.
+- Properly show users and allow opening their profiles in the members and read
+ receipt dialogs. (LorenDB)
+- Use Qt5.15 Connections syntax in Qml.
+- Remove "respond to keyrequests option". We now reply to the right requests
+ automatically and securely.
+- Show confirmation prompt when leaving a room.
+- Add trailing newline to session export for gomuks compatibility.
+- Use a fancy Nheko logo as the loading indicator.
+- Improve how the invite dialog handles users. (LorenDB)
+- Store more data about megolm sessions.
+- Speed up database queries by caching transactions.
+- Use curl for network requests.
+ - This removes the boost dependency.
+ - Proxies now work using the usual curl variables.
+ - Fixes a myriad of crashes.
+ - Faster.
+ - Less CPU load.
+ - Less bandwidth usage.
+- Cleanup user color generation.
+- Show borders around tables.
+- Improve wording of a few menu entries. (absorber)
+- Highlight navigated to message.
+
+### Bugfixes
+
+- Redaction of edited messages should now actually show those messages as removed.
+- Bootstrap after registration should run properly now.
+- Getting logged out after registration should not happen anymore.
+- Removed edgecases where identity keys could get uploaded twice.
+- Fix the event loop when fetching secrets breaking random things like scrolling.
+- Don't crash when clearing an empty timeline.
+- Opening an invite in your browser or a matrix: URI should not crash Nheko anymore or do nothing.
+- When clicking on an item in the roomlist, you don't have to move your mouse anymore, before being able to click again.
+- Don't hide space childs when viewing that specific space and its children are hidden.
+- Only allow specific URI schemes to be followed automatically.
+- Properly hide day change indicator, when loading older messages.
+- Rotate session properly when 'verified only' is set.
+- Handle missing keys in key queries properly.
+- Properly show the window title for Qml dialogs on windows.
+- Don't show decryption errors in replies.
+- Don't crash when storing secrets.
+- Don't send megolm messages to ourselves, if possible.
+- Fix SSSS without a password.
+- Fix a few edge cases with OTK upload.
+- Cache more media properly (i.e. in the Goose Chooser).
+- Inline images in messages now load properly.
+- Don't show verification requests after startup.
+- Emoji picker now follows the theme.
+- Send less newlines in the reply fallback.
+- Fix tags going missing when joining spaces.
+- Handle inline images with single quotes. (Cadair)
+- Delay key requests until a room is opened.
+- Fix rooms not showing, when groups endpoint is missing.
+- Don't use deprecated parameters in /login.
+- Fix encoding issues when translating matrix.to to matrix: URIs.
+
+### Packaging changes
+
+- Removed the AppImage
+
## [0.8.2] -- 2021-04-23
### Highlights
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d033d00f..0c43721f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -388,7 +388,7 @@ if(USE_BUNDLED_MTXCLIENT)
FetchContent_Declare(
MatrixClient
GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git
- GIT_TAG fc5d01c775bde656b6d69954189522d138efe022
+ GIT_TAG bacb7e524ff0f38591b88b248d8d8409b7fd49a0
)
set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "")
set(BUILD_LIB_TESTS OFF CACHE INTERNAL "")
diff --git a/io.github.NhekoReborn.Nheko.yaml b/io.github.NhekoReborn.Nheko.yaml
index fdd22ea6..af010422 100644
--- a/io.github.NhekoReborn.Nheko.yaml
+++ b/io.github.NhekoReborn.Nheko.yaml
@@ -163,7 +163,7 @@ modules:
buildsystem: cmake-ninja
name: mtxclient
sources:
- - commit: fc5d01c775bde656b6d69954189522d138efe022
+ - commit: bacb7e524ff0f38591b88b248d8d8409b7fd49a0
type: git
url: https://github.com/Nheko-Reborn/mtxclient.git
- config-opts:
diff --git a/resources/qml/dialogs/LogoutDialog.qml b/resources/qml/dialogs/LogoutDialog.qml
index c571a89e..6098a289 100644
--- a/resources/qml/dialogs/LogoutDialog.qml
+++ b/resources/qml/dialogs/LogoutDialog.qml
@@ -2,18 +2,18 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import Qt.labs.platform 1.1
+import Qt.labs.platform 1.1 as P
import QtQuick 2.15
import QtQuick.Controls 2.15
import im.nheko 1.0
-MessageDialog {
+P.MessageDialog {
id: logoutRoot
title: qsTr("Log out")
text: CallManager.isOnCall ? qsTr("A call is in progress. Log out?") : qsTr("Are you sure you want to log out?")
modality: Qt.WindowModal
flags: Qt.Tool | Qt.WindowStaysOnTopHint | Qt.WindowCloseButtonHint | Qt.WindowTitleHint
- buttons: MessageDialog.Ok | MessageDialog.Cancel
+ buttons: P.MessageDialog.Ok | P.MessageDialog.Cancel
onAccepted: Nheko.logout()
}
diff --git a/resources/qml/dialogs/ReadReceipts.qml b/resources/qml/dialogs/ReadReceipts.qml
index 2e2b5486..f551bae9 100644
--- a/resources/qml/dialogs/ReadReceipts.qml
+++ b/resources/qml/dialogs/ReadReceipts.qml
@@ -81,6 +81,7 @@ ApplicationWindow {
userid: model.mxid
url: model.avatarUrl.replace("mxc://", "image://MxcImage/")
displayName: model.displayName
+ enabled: false
}
ColumnLayout {
diff --git a/src/Cache_p.h b/src/Cache_p.h
index a529bc37..b995eed1 100644
--- a/src/Cache_p.h
+++ b/src/Cache_p.h
@@ -29,6 +29,7 @@
#include "CacheCryptoStructs.h"
#include "CacheStructs.h"
+#include "Logging.h"
class Cache : public QObject
{
@@ -518,8 +519,12 @@ private:
while (cursor.get(typeStrV, data, first ? MDB_FIRST_DUP : MDB_NEXT_DUP)) {
first = false;
- if (eventsDb.get(txn, json::parse(data)["id"].get<std::string>(), value))
- events.push_back(json::parse(value).get<mtx::events::StateEvent<T>>());
+ try {
+ if (eventsDb.get(txn, json::parse(data)["id"].get<std::string>(), value))
+ events.push_back(json::parse(value).get<mtx::events::StateEvent<T>>());
+ } catch (std::exception &e) {
+ nhlog::db()->warn("Failed to parse state event: {}", e.what());
+ }
}
}
}
|