Merge remote-tracking branch 'nheko-im/master' into video_player_enhancements

This commit is contained in:
Joseph Donofry 2021-11-09 18:34:40 -05:00
commit c68c8de74f
No known key found for this signature in database
GPG key ID: E8A1D78EF044B0CB
6 changed files with 191 additions and 7 deletions

View file

@ -1,5 +1,183 @@
# Changelog # 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 ## [0.8.2] -- 2021-04-23
### Highlights ### Highlights

View file

@ -388,7 +388,7 @@ if(USE_BUNDLED_MTXCLIENT)
FetchContent_Declare( FetchContent_Declare(
MatrixClient MatrixClient
GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git 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_EXAMPLES OFF CACHE INTERNAL "")
set(BUILD_LIB_TESTS OFF CACHE INTERNAL "") set(BUILD_LIB_TESTS OFF CACHE INTERNAL "")

View file

@ -163,7 +163,7 @@ modules:
buildsystem: cmake-ninja buildsystem: cmake-ninja
name: mtxclient name: mtxclient
sources: sources:
- commit: fc5d01c775bde656b6d69954189522d138efe022 - commit: bacb7e524ff0f38591b88b248d8d8409b7fd49a0
type: git type: git
url: https://github.com/Nheko-Reborn/mtxclient.git url: https://github.com/Nheko-Reborn/mtxclient.git
- config-opts: - config-opts:

View file

@ -2,18 +2,18 @@
// //
// SPDX-License-Identifier: GPL-3.0-or-later // 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 2.15
import QtQuick.Controls 2.15 import QtQuick.Controls 2.15
import im.nheko 1.0 import im.nheko 1.0
MessageDialog { P.MessageDialog {
id: logoutRoot id: logoutRoot
title: qsTr("Log out") title: qsTr("Log out")
text: CallManager.isOnCall ? qsTr("A call is in progress. Log out?") : qsTr("Are you sure you want to 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 modality: Qt.WindowModal
flags: Qt.Tool | Qt.WindowStaysOnTopHint | Qt.WindowCloseButtonHint | Qt.WindowTitleHint flags: Qt.Tool | Qt.WindowStaysOnTopHint | Qt.WindowCloseButtonHint | Qt.WindowTitleHint
buttons: MessageDialog.Ok | MessageDialog.Cancel buttons: P.MessageDialog.Ok | P.MessageDialog.Cancel
onAccepted: Nheko.logout() onAccepted: Nheko.logout()
} }

View file

@ -81,6 +81,7 @@ ApplicationWindow {
userid: model.mxid userid: model.mxid
url: model.avatarUrl.replace("mxc://", "image://MxcImage/") url: model.avatarUrl.replace("mxc://", "image://MxcImage/")
displayName: model.displayName displayName: model.displayName
enabled: false
} }
ColumnLayout { ColumnLayout {

View file

@ -29,6 +29,7 @@
#include "CacheCryptoStructs.h" #include "CacheCryptoStructs.h"
#include "CacheStructs.h" #include "CacheStructs.h"
#include "Logging.h"
class Cache : public QObject class Cache : public QObject
{ {
@ -518,8 +519,12 @@ private:
while (cursor.get(typeStrV, data, first ? MDB_FIRST_DUP : MDB_NEXT_DUP)) { while (cursor.get(typeStrV, data, first ? MDB_FIRST_DUP : MDB_NEXT_DUP)) {
first = false; first = false;
try {
if (eventsDb.get(txn, json::parse(data)["id"].get<std::string>(), value)) if (eventsDb.get(txn, json::parse(data)["id"].get<std::string>(), value))
events.push_back(json::parse(value).get<mtx::events::StateEvent<T>>()); 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());
}
} }
} }
} }