Git Product home page Git Product logo

nheko-reborn / nheko Goto Github PK

View Code? Open in Web Editor NEW
1.8K 37.0 194.0 27.36 MB

Desktop client for Matrix using Qt and C++20.

Home Page: https://nheko-reborn.github.io/

License: GNU General Public License v3.0

C++ 77.20% Shell 0.54% Ruby 0.01% PowerShell 0.03% CMake 1.69% Makefile 0.05% Qt Script 0.10% QML 18.51% Python 1.46% Objective-C++ 0.33% Objective-C 0.02% Batchfile 0.08%
matrix linux macos windows desktop hacktoberfest

nheko's Introduction

nheko

#nheko-reborn:matrix.org Build Status

The motivation behind the project is to provide a native desktop app for Matrix that feels more like a mainstream chat app (Element, Telegram etc) and less like an IRC client.

Installation Quicklinks

Stable

Stable Version Download on Flathub Packaging status

For other options and details see the Installation section.

Unstable

Nightlies Download Nightly Flatpak Windows Nightly Automatic Updates

Translations

Translation status

Help us with translations so as many people as possible will be able to use nheko!

Note regarding End-to-End encryption

The current implementation is mostly stable, but it was never audited. If you rely on it for security, we can't make any guarantees.

Features

Most of the features you would expect from a chat application are missing right now but we are getting close to a more feature complete client. Specifically there is support for:

  • E2E encryption.
  • VoIP calls (voice & video).
  • User registration.
  • Creating, joining & leaving rooms.
  • Sending & receiving invites.
  • Sending & receiving files and emoji (inline widgets for images, audio and file messages).
  • Replies with text, images and other media (and actually render them as inline widgets).
  • Typing notifications.
  • Username auto-completion.
  • Message & mention notifications.
  • Redacting messages.
  • Read receipts.
  • Basic communities support.
  • Room switcher (ctrl-K).
  • Light, Dark & System themes.
  • Creating separate profiles (command line only, use -p name).
  • D-Bus API to allow integration with third-party plugins (does not support Windows or macOS).

Installation

Releases

Releases for Linux (AppImage), macOS (disk image) & Windows (x64 installer) can be found in the GitHub releases.

Repositories

Packaging status

Arch Linux

sudo pacman -Syu nheko

The development version is available in the AUR:

yay -S nheko-git # Or your favorite way of installing AUR packages

Nheko requires a secret server to run, so you'll need to install and configure a service such as KDE Wallet or GNOME Keyring if not provided by your desktop environment.

Debian (10 and above) / Ubuntu (18.04 and above)

sudo apt install nheko

Fedora

sudo dnf install nheko

Gentoo Linux

sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge -a nheko

If you are using Gnome Keyring or KeepassXC as your secrets daemon, ensure that the keyring useflag is enabled on dev-libs/qtkeychain.

Mageia (9 and above)

sudo urpmi nheko

Nix(os)

nix-env -iA nixpkgs.nheko
# or
nix-shell -p nheko --run nheko

Alpine Linux (and postmarketOS)

Make sure you have the testing repositories from edge enabled. Note that this is not needed on postmarketOS.

sudo apk add nheko

openSUSE

Note: these instructions have only been tested on Tumbleweed.

First, install nheko:

sudo zypper addrepo https://download.opensuse.org/repositories/network:messaging:matrix/openSUSE_Tumbleweed/network:messaging:matrix.repo
sudo zypper ref
sudo zypper in nheko

If you want to add jdenticon support:

sudo zypper install qt-jdenticon

Flatpak

flatpak install flathub io.github.NhekoReborn.Nheko

Guix

guix install nheko

Steam Deck

Install nheko via the Discover app in Desktop Mode (this installs the flatpak). To also make it work in Game Mode you'll have create a wrapper script that starts kwalletd and then nheko. You can create /home/deck/nheko.sh with the following content and then add this script as a "Non-Steam Game" to Steam.

#!/bin/sh
kwalletd5&
flatpak run --env=XDG_CURRENT_DESKTOP=KDE --env=KDE_SESSION_VERSION=5 --branch=stable --arch=x86_64 --command=io.github.NhekoReborn.Nheko --file-forwarding io.github.NhekoReborn.Nheko @@u @@

macOS (10.14 and above)

with homebrew:

brew install --cask nheko

Windows

with Chocolatey:

choco install nheko-reborn

D-Bus plugins

nheko does not provide binaries for any D-Bus plugins. However, we do provide the following list of known plugins:

FAQ


Q: Why don't videos run for me on Windows?

A: You're probably missing the required video codecs, download K-Lite Codec Pack.


Q: What commands are supported by nheko?

A: See https://github.com/Nheko-Reborn/nheko/wiki/Commands


Q: Does nheko support end-to-end encryption (EE2E)?

A: Yes, see feature list


Q: Can I test a bleeding edge development version?

A: Checkout nightly builds https://matrix-static.neko.dev/room/!TshDrgpBNBDmfDeEGN:neko.dev/


Q: How do I add stickers and custom emojis?

A: Stickers and custom emojis are organized in image packs. There is one user image pack that only your account has access to and there are room image packs that are accessible by everyone in the room they are defined in. You can activate a room image pack globally to use it in any room.

To manage image packs in nheko, go to the room settings and enter the Sticker & Emote Settings. You will see the Private pack (your user image pack) and can edit it there. The Shortcode is a unique identifier you use to select the image with and the Body is the alternate text that is displayed on clients that don't support images (like the alt tag in HTML images).

If you have the necessary permissions you can create new room packs with the button at the bottom of the image pack list. They are the same as the user pack but you can create as many as you want and everyone in the room can use them. It might be a good idea to create an extra room just for your image packs to make sharing easier.


Q: I can't see some image types!

A: Nheko uses Qt's image plugins to render images. You might need to install additional packages to display some image types like webp. Usually those packages are called qt5-image-formats-plugins, qt5-imageformats or similar. KDE has similar plugins, that can extend the supported image types even more.


Build Requirements

  • Qt5 (5.15 or greater). Required for overlapping hover handlers in Qml.
  • CMake 3.15 or greater. (Lower version may work, but may break boost linking)
  • mtxclient
  • coeurl
  • LMDB
  • lmdb++ (0.9.14 too old)
  • cmark 0.29 or greater.
  • libolm
  • spdlog (1.8.1 too old)
  • GStreamer 1.18.0 or greater (optional, needed for VoIP support. Pass -DVOIP=OFF to disable.).
    • Installing the gstreamer core library plus gst-plugins-base, gst-plugins-good & gst-plugins-bad is often sufficient. The qmlgl plugin though is often packaged separately. The actual plugin requirements are as follows:
    • Voice call support: dtls, opus, rtpmanager, srtp, webrtc
    • Video call support (optional): compositor, opengl, qmlgl, rtp, vpx
    • libnice
  • XCB, XCB-EWMH: For screensharing support on X11 and setting window roles. Can be disabled with -DSCREENSHARE_X11=OFF.
  • qtkeychain (You need at least version 0.12 for proper Gnome Keychain support. The bundled version requires libsecret, unless you pass -DLIBSECRET_SUPPORT=OFF.)
  • KDSingleApplication (1.0 or greater with Qt6 support)
  • A compiler that supports C++ 20:
    • Clang 16 (Only clazy 16 is tested in CI)
    • GCC 11 (tested on Gitlab CI)
    • MSVC 19.13 (tested on AppVeyor)

Nheko can use bundled version for most of those libraries automatically, if the versions in your distro are too old. To use them, you can enable the hunter integration by passing -DHUNTER_ENABLED=ON. It is probably wise to link those dependencies statically by passing -DBUILD_SHARED_LIBS=OFF You can select which bundled dependencies you want to use by passing various -DUSE_BUNDLED_* flags. By default all dependencies are bundled if you enable hunter. (The exception to that is OpenSSL, which is always disabled by default.) If you experience build issues and you are trying to link mtxclient library without hunter, make sure the library version(commit) as mentioned in the CMakeList.txt is used. Sometimes we have to make breaking changes in mtxclient and for that period the master branch of both repos may not be compatible.

The bundle flags are currently:

  • USE_BUNDLED_SPDLOG
  • USE_BUNDLED_OLM
  • USE_BUNDLED_GTEST
  • USE_BUNDLED_CMARK
  • USE_BUNDLED_JSON
  • USE_BUNDLED_OPENSSL
  • USE_BUNDLED_MTXCLIENT
  • USE_BUNDLED_LMDB
  • USE_BUNDLED_LMDBXX
  • USE_BUNDLED_COEURL
  • USE_BUNDLED_LIBCURL
  • USE_BUNDLED_LIBEVENT
  • USE_BUNDLED_KDSINGLEAPPLICATION

A note on bundled OpenSSL: You need to explicitly enable it and it will not be using your system certificate directory by default, if you enable it. You need to override that at runtime with the SSL_CERT_FILE variable. On Windows it will still be using your system certificates though, since it loads them from the system store instead of the OpenSSL directory.

Linux (Appimage)

If you don't want to install any external dependencies, you can generate an AppImage locally using docker. It is not that well maintained though...

make docker-app-image

Arch Linux

sudo pacman -S qt5-base \
    qt5-tools \
    qt5-multimedia \
    qt5-svg \
    cmake \
    gcc \
    fontconfig \
    lmdb \
    cmark \
    boost \
    qtkeychain-qt5

Debian 13 [Testing/Sid] (Nheko QT6 Version)

As of February 2024, Nheko from git master requires QT 6.5 whereas Trixie has 6.4.2, so you must enable Debian's Experimental Repository to install newer QT6. This may not be necessary in the future and the -t experimental can be removed for the second set of build requirements.

# Install build requirements
sudo apt install -y cmake asciidoc-base libevent-dev libspdlog-dev libre2-dev liblmdb++-dev libcurl4-openssl-dev libssl-dev libolm-dev libcmark-dev nlohmann-json3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev libkdsingleapplication-qt6-dev
sudo apt install -y -t experimental qt6-base-dev qt6-tools-dev qt6-svg-dev qt6-multimedia-dev qt6-declarative-dev qtkeychain-qt6-dev qt6-base-private-dev qt6-declarative-private-dev
# Clone nheko repository from github
sudo apt install -y git
git clone https://github.com/Nheko-Reborn/nheko && cd nheko
# Build
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DUSE_BUNDLED_COEURL=1 -DUSE_BUNDLED_MTXCLIENT=1 -DUSE_BUNDLED_LMDBXX=1
cmake --build build

Debian 11-12 / Ubuntu 22.04 (Nheko QT5 11.3 Release Version)

Build requirements + qml modules needed at runtime (you may not need all of them, but the following seem to work according to reports):

sudo apt install --no-install-recommends g++ cmake make zlib1g-dev libssl-dev libolm-dev liblmdb-dev libcmark-dev nlohmann-json3-dev libspdlog-dev libevent-dev libcurl4-openssl-dev libre2-dev libxcb-ewmh-dev asciidoc-base \
qt{base,declarative,tools,multimedia,quickcontrols2-}5-dev libqt5svg5-dev qt5keychain-dev qml-module-qt{gstreamer,multimedia,quick-extras,-labs-settings,-labs-platform,graphicaleffects,quick-controls2,quick-particles2} \
libgstreamer1.0-dev libgstreamer-plugins-{base,bad}1.0-dev qtgstreamer-plugins-qt5 libnice-dev ninja-build

lmdb++-dev is too old so bundled lmdbxx must be used.
libspdlog-dev in debian bullseye is too old (without backporting) so requires using hunter to use bundled spdlog.
Suggested flags for debian bullseye: -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=OFF
Suggested flags for debian bookworm: -DUSE_BUNDLED_COEURL=1 -DUSE_BUNDLED_MTXCLIENT=1 -DUSE_BUNDLED_LMDBXX=1

Fedora

sudo dnf builddep nheko # note that some newer packages might not be captured by that

Gentoo Linux

sudo emerge -a ">=dev-qt/qtgui-5.15.0" media-libs/fontconfig dev-libs/qtkeychain

Guix

guix environment nheko

macOS (Xcode 10.2 or later)

brew update
brew install qt5 lmdb cmake llvm spdlog boost cmark libolm qtkeychain

Windows

  1. Install Visual Studio 2022's "Desktop Development" and "Linux Development with C++" (for the CMake integration) workloads.

  2. Download the latest Qt for windows installer and install it somewhere. Make sure to install the MSVC 2022 64-bit toolset for at least Qt 5.15.

  3. If you don't have openssl installed, you will need to install perl to build it (i.e. Strawberry Perl).

Building

We can now build nheko:

cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build

To use bundled dependencies you can use hunter, i.e.:

cmake -S. -Bbuild -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=OFF
cmake --build build --config Release

Adapt the USE_BUNDLED_* as needed.

If the build fails with the following error

Could not find a package configuration file provided by "Qt5Widgets" with
any of the following names:

Qt5WidgetsConfig.cmake
qt5widgets-config.cmake

You might need to pass -DCMAKE_PREFIX_PATH to cmake to point it at your qt5 install.

e.g on macOS

cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)
cmake --build build

The nheko binary will be located in the build directory.

Windows

After installing all dependencies, you need to edit the CMakeSettings.json to be able to load and compile nheko within Visual Studio.

You need to fill out the paths for the Qt5_DIR. The Qt5 dir should point to the lib\cmake\Qt5 dir.

Examples for the paths are:

  • C:\\Qt\\5.15.1\\msvc2017_64\\lib\\cmake\\Qt5

You should also enable hunter by setting HUNTER_ENABLED to ON and BUILD_SHARED_LIBS to OFF.

Now right click into the root nheko source directory and choose Open in Visual Studio. You can choose the build type Release and Debug in the top toolbar. After a successful CMake generation you can select the nheko.exe as the run target. Now choose Build all in the CMake menu or press F7 to compile the executable.

To be able to run the application the last step is to install the needed Qt dependencies next to the nheko binary.

Start the "Qt x.xx.x 64-bit for Desktop (MSVC 2017)" command promt and run windeployqt.

cd <path-to-nheko>\build-vc\Release\Release
windeployqt nheko.exe

The final binary will be located inside build-vc\Release\Release for the Release build and build-vc\Debug\Debug for the Debug build.

Also copy the respective cmark.dll to the binary dir from build/cmark-build/src/Release (or Debug).

Contributing

See CONTRIBUTING.

Using the D-Bus API

Currently, there is no documentation for the D-Bus API, so if you'd like to make use of it, come ask for support in #nheko:nheko.im.

Screens

Here are some screen shots to get a feel for the UI, but things will probably change.

nheko start nheko login nheko chat nheko settings nheko mobile

Third party

nheko's People

Contributors

adasauce avatar alch-emi avatar bubu avatar chethan2k1 avatar decodetalkers avatar deepbluev7 avatar govynnus avatar jedi18 avatar kamathmanu avatar kirillpt avatar lcsten avatar lordmzte avatar lorendb avatar lurkki14 avatar maltee1 avatar mayeulc avatar mtrnord avatar mujx avatar nepnep21 avatar pupper68k avatar q234rty avatar redsky17 avatar shocklateboy92 avatar tastytea avatar thedrawingcoder-gamer avatar thulinma avatar trilene avatar weblate avatar xvitaly avatar zhymabekroman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nheko's Issues

Linkify room aliases

In Riot, clicking on a room alias like #dotnet:half-shot.uk allows you to join the room

Building dependencies fails

When building with dependencies mtxclient fails to build.

System:

  • Nheko version: 6ab12b2 and a671bd6
  • Installation method: local build
  • Operating System: Debian Stretch
  • Qt version: 5.7.1
  • C++ compiler: GCC 6.3
  • Desktop Environment: KDE Plasma 5.8.6

Actual behavior

Running the commands from the readme:

cmake -Hdeps -B.deps
cmake --build .deps

The second command fails with

/.../nheko/.deps/build/mtxclient/lib/crypto/client.cpp: In function ‘std::__cxx11::string mtx::crypto::base642bin(const string&)’:
/.../nheko/.deps/build/mtxclient/lib/crypto/client.cpp:611:42: error: ‘sodium_base64_VARIANT_ORIGINAL’ was not declared in this scope
                                          sodium_base64_VARIANT_ORIGINAL);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/.../nheko/.deps/build/mtxclient/lib/crypto/client.cpp:611:72: error: ‘sodium_base642bin’ was not declared in this scope
                                          sodium_base64_VARIANT_ORIGINAL);
                                                                        ^
/.../nheko/.deps/build/mtxclient/lib/crypto/client.cpp: In function ‘std::__cxx11::string mtx::crypto::bin2base64(const string&)’:
/.../nheko/.deps/build/mtxclient/lib/crypto/client.cpp:626:63: error: ‘sodium_base64_VARIANT_ORIGINAL’ was not declared in this scope
           create_buffer(sodium_base64_encoded_len(bin.size(), sodium_base64_VARIANT_ORIGINAL));
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/.../nheko/.deps/build/mtxclient/lib/crypto/client.cpp:626:93: error: ‘sodium_base64_encoded_len’ was not declared in this scope
           create_buffer(sodium_base64_encoded_len(bin.size(), sodium_base64_VARIANT_ORIGINAL));
                                                                                             ^
/.../nheko/.deps/build/mtxclient/lib/crypto/client.cpp:632:57: error: ‘sodium_bin2base64’ was not declared in this scope
                           sodium_base64_VARIANT_ORIGINAL);
                                                         ^
CMakeFiles/matrix_client.dir/build.make:110: recipe for target 'CMakeFiles/matrix_client.dir/lib/crypto/client.cpp.o' failed

Expected behavior

Nheko and all its dependencies compile.

Steps to reproduce

git clone https://github.com/Nheko-Reborn/nheko.git && cd nheko && cmake -Hdeps -B.deps && cmake --build .deps 

Logs

https://pastebin.com/ZxNHS1Uq

Screenshot on the README page is missing

This is just a notice to let you know that the image you used for the screenshot on the README.md file is missing so there isn't a screenshot available at the moment for prospective users.

Thumbnail information is missing

nheko doesn't generate a thumbnail when sending an image message.
This seems to be a problem on riot where the image is not displayed in the timeline.

This is the JSON content of such a message:

    "content": {
        "body": "test.png",
        "info": {
            "h": <height>,
            "mimetype": "image/png",
            "size": <size>,
            "thumbnail_info": {
                "h": 0,
                "mimetype": "",
                "size": 0,
                "w": 0
            },
            "thumbnail_url": "",
            "w": <width>
        },
        "msgtype": "m.image",
        "url": "mxc://example.com/<hash>"
    },

Since mtxclient has a get_thumbnail function I think the issue is simply nheko not using it when sending a message. I haven't figured out how to fix this yet. Maybe someone else can.

Message searching [feature]

Message searching would be really great. I think lack of search is the one thing that causes me to still have to open up Riot frequently, which is a real bummer.

Generate Avatars for Users Similarly to GitHub

Rather than taking the first letter of the display name and using that to create a simple avatar for users that don't have one, do something like what GitHub does instead. Each avatar is unique for the entire username rather than just defaulting to the first letter of their display name.

General UI Improvements

These should get broken out into their own issues at some point. Just keeping a running log of the things I encounter.

Notifications

Notifications aren't cleared when room is read

Expected behavior is that notifications will be removed by the notification manager when the messages in question are actually read. Currently, they stick around. Even worse, they stick around after nheko has been closed.

Notifications missing user avatar and other display issues

Notifications currently have a large empty section where the user avatar should be. Additionally, the formatting of the text itself does not do a good job of differentiating between the author and message contents themselves.

Style

Link Text Not Controlled by QSS styles

Currently, link text is hard-coded in the Utils.cpp class. This prevents it from being tweaked in the stylesheets and also means that adding a new style sheet will result in unexpected behavior (should additional themes ever be implemented). This should be moved to the stylesheet and code updated to read from the stylesheet.

General Style Issues

Spacing is off in places, font isn't taken fully advantage of to differentiate different sections of the UI. Some things feel cramped. Other things aren't quite centered. This covers basic tweaking of various things.

Exception when running on MacOS

System:

  • Nheko version: 0.6.3
  • Installation method: dmg
  • Operating System: macos

Actual behavior

After running for more than an hour, I see a segfault:

Logs

Process:               nheko [13088]
Path:                  /Applications/Nheko.app/Contents/MacOS/./nheko
Identifier:            com.github.mujx.nheko
Version:               0.6.3 (0.6.3)
Code Type:             X86-64 (Native)
Parent Process:        bash [12119]
Responsible:           nheko [13088]
User ID:               501

Date/Time:             2019-02-11 15:23:22.254 +0000
OS Version:            Mac OS X 10.14 (18A391)
Report Version:        12
Anonymous UUID:        E9E65648-ABB3-1C16-990C-021560FE24F3

Sleep/Wake UUID:       6AC43F4B-54CA-4943-A159-A8F7A5BE33AD

Time Awake Since Boot: 3100000 seconds
Time Since Wake:       21000 seconds

System Integrity Protection: enabled

Crashed Thread:        4

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       EXC_I386_GPFLT
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [13088]

Thread 0:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff5e50dc2a mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff5e50e174 mach_msg + 60
2   com.apple.SkyLight            	0x00007fff572a4d30 CGSWindowSynchronizeBacking + 174
3   com.apple.SkyLight            	0x00007fff5733a2b5 SLSDeviceLock + 39
4   com.apple.AppKit              	0x00007fff2eaa6cc8 lock_device + 64
5   com.apple.AppKit              	0x00007fff2e9cf9ff __NSCGSWindowBackingStoreMark__block_invoke + 1097
6   com.apple.AppKit              	0x00007fff2e9ce739 NSCGSTransactionRunPreCommitActionsForOrder_ + 269
7   com.apple.AppKit              	0x00007fff2e9ce619 NSCGSTransactionRunPreCommitActions_ + 31
8   com.apple.AppKit              	0x00007fff2e9ce5ee __39+[_NSCGSTransaction currentTransaction]_block_invoke + 34
9   com.apple.QuartzCore          	0x00007fff3c2c11d3 CA::Transaction::run_commit_handlers(CATransactionPhase) + 49
10  com.apple.QuartzCore          	0x00007fff3c2c1aa5 CA::Context::commit_transaction(CA::Transaction*) + 1949
11  com.apple.QuartzCore          	0x00007fff3c2c0d20 CA::Transaction::commit() + 576
12  com.apple.QuartzCore          	0x00007fff3c2c0a2c CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 66
13  com.apple.CoreFoundation      	0x00007fff3139e95d __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
14  com.apple.CoreFoundation      	0x00007fff3139e892 __CFRunLoopDoObservers + 452
15  com.apple.CoreFoundation      	0x00007fff3133fd20 CFRunLoopRunSpecific + 523
16  com.apple.HIToolbox           	0x00007fff305d9895 RunCurrentEventLoopInMode + 293
17  com.apple.HIToolbox           	0x00007fff305d95cb ReceiveNextEventCommon + 618
18  com.apple.HIToolbox           	0x00007fff305d9348 _BlockUntilNextEventMatchingListInModeWithFilter + 64
19  com.apple.AppKit              	0x00007fff2e89695b _DPSNextEvent + 997
20  com.apple.AppKit              	0x00007fff2e8956fa -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1362
21  com.apple.AppKit              	0x00007fff2e88f75d -[NSApplication run] + 699
22  libqcocoa.dylib               	0x0000000115610c7d 0x1155e4000 + 183421
23  org.qt-project.QtCore         	0x0000000110f4e35e QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 398
24  org.qt-project.QtCore         	0x0000000110f52ee1 QCoreApplication::exec() + 369
25  com.github.mujx.nheko         	0x000000010f43ca14 main + 3092
26  libdyld.dylib                 	0x00007fff5e3d5085 start + 1

Thread 1:
0   libsystem_kernel.dylib        	0x00007fff5e510872 __psynch_mutexwait + 10
1   libsystem_pthread.dylib       	0x00007fff5e5c7da0 _pthread_mutex_firstfit_lock_wait + 96
2   libsystem_pthread.dylib       	0x00007fff5e5c54c7 _pthread_mutex_firstfit_lock_slow + 226
3   libc++.1.dylib                	0x00007fff5baa7b29 std::__1::mutex::lock() + 9
4   com.github.mujx.nheko         	0x000000010f3efc7c 0x10f28e000 + 1449084
5   com.github.mujx.nheko         	0x000000010f3eeb35 0x10f28e000 + 1444661
6   com.github.mujx.nheko         	0x000000010f358902 0x10f28e000 + 829698
7   com.github.mujx.nheko         	0x000000010f37e7aa 0x10f28e000 + 985002
8   com.github.mujx.nheko         	0x000000010f49da1c 0x10f28e000 + 2161180
9   com.github.mujx.nheko         	0x000000010f49a8a7 0x10f28e000 + 2148519
10  com.github.mujx.nheko         	0x000000010f49a5a4 0x10f28e000 + 2147748
11  com.github.mujx.nheko         	0x000000010f4d8cad mtx::http::Session::on_request_complete() + 93
12  com.github.mujx.nheko         	0x000000010f508582 0x10f28e000 + 2598274
13  com.github.mujx.nheko         	0x000000010f509712 0x10f28e000 + 2602770
14  com.github.mujx.nheko         	0x000000010f50e19b 0x10f28e000 + 2621851
15  com.github.mujx.nheko         	0x000000010f50dd71 boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::asio::ssl::detail::io_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp>, boost::asio::ssl::detail::read_op<boost::asio::mutable_buffer>, boost::beast::http::detail::read_some_op<boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >, boost::beast::basic_flat_buffer<std::__1::allocator<char> >, false, boost::beast::http::parser<false, boost::beast::http::basic_string_body<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<char> >, boost::beast::http::detail::read_op<boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >, boost::beast::basic_flat_buffer<std::__1::allocator<char> >, false, boost::beast::http::parser<false, boost::beast::http::basic_string_body<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<char> >, boost::beast::http::detail::parser_is_done, std::__1::__bind<void (mtx::http::Session::*)(boost::system::error_code const&, unsigned long), std::__1::shared_ptr<mtx::http::Session>, std::__1::placeholders::__ph<1> const&, std::__1::placeholders::__ph<2> const&> > > > >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) + 465
16  com.github.mujx.nheko         	0x000000010f469bd4 0x10f28e000 + 1948628
17  com.github.mujx.nheko         	0x000000010f46970a 0x10f28e000 + 1947402
18  com.github.mujx.nheko         	0x000000010f469565 0x10f28e000 + 1946981
19  libboost_thread-mt.dylib      	0x000000010fd4a26c 0x10fd47000 + 12908
20  libsystem_pthread.dylib       	0x00007fff5e5c733d _pthread_body + 126
21  libsystem_pthread.dylib       	0x00007fff5e5ca2a7 _pthread_start + 70
22  libsystem_pthread.dylib       	0x00007fff5e5c6425 thread_start + 13

Thread 2:
0   libsystem_kernel.dylib        	0x00007fff5e5111b2 __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff5e5ca5cb _pthread_cond_wait + 724
2   com.github.mujx.nheko         	0x000000010f469a6a 0x10f28e000 + 1948266
3   com.github.mujx.nheko         	0x000000010f46970a 0x10f28e000 + 1947402
4   com.github.mujx.nheko         	0x000000010f469565 0x10f28e000 + 1946981
5   libboost_thread-mt.dylib      	0x000000010fd4a26c 0x10fd47000 + 12908
6   libsystem_pthread.dylib       	0x00007fff5e5c733d _pthread_body + 126
7   libsystem_pthread.dylib       	0x00007fff5e5ca2a7 _pthread_start + 70
8   libsystem_pthread.dylib       	0x00007fff5e5c6425 thread_start + 13

Thread 3:
0   libsystem_kernel.dylib        	0x00007fff5e511aa6 __write_nocancel + 10
1   libsystem_c.dylib             	0x00007fff5e463920 _swrite + 87
2   libsystem_c.dylib             	0x00007fff5e45c4e3 __sflush + 87
3   libsystem_c.dylib             	0x00007fff5e45ec0f __sfvwrite + 798
4   libsystem_c.dylib             	0x00007fff5e45eeed fwrite + 136
5   com.github.mujx.nheko         	0x000000010f3f7a46 0x10f28e000 + 1481286
6   com.github.mujx.nheko         	0x000000010f3eeb35 0x10f28e000 + 1444661
7   com.github.mujx.nheko         	0x000000010f358902 0x10f28e000 + 829698
8   com.github.mujx.nheko         	0x000000010f37e7aa 0x10f28e000 + 985002
9   com.github.mujx.nheko         	0x000000010f49da1c 0x10f28e000 + 2161180
10  com.github.mujx.nheko         	0x000000010f49a8a7 0x10f28e000 + 2148519
11  com.github.mujx.nheko         	0x000000010f49a5a4 0x10f28e000 + 2147748
12  com.github.mujx.nheko         	0x000000010f4d8cad mtx::http::Session::on_request_complete() + 93
13  com.github.mujx.nheko         	0x000000010f508582 0x10f28e000 + 2598274
14  com.github.mujx.nheko         	0x000000010f509712 0x10f28e000 + 2602770
15  com.github.mujx.nheko         	0x000000010f50e19b 0x10f28e000 + 2621851
16  com.github.mujx.nheko         	0x000000010f50dd71 boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::asio::ssl::detail::io_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp>, boost::asio::ssl::detail::read_op<boost::asio::mutable_buffer>, boost::beast::http::detail::read_some_op<boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >, boost::beast::basic_flat_buffer<std::__1::allocator<char> >, false, boost::beast::http::parser<false, boost::beast::http::basic_string_body<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<char> >, boost::beast::http::detail::read_op<boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >, boost::beast::basic_flat_buffer<std::__1::allocator<char> >, false, boost::beast::http::parser<false, boost::beast::http::basic_string_body<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<char> >, boost::beast::http::detail::parser_is_done, std::__1::__bind<void (mtx::http::Session::*)(boost::system::error_code const&, unsigned long), std::__1::shared_ptr<mtx::http::Session>, std::__1::placeholders::__ph<1> const&, std::__1::placeholders::__ph<2> const&> > > > >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) + 465
17  com.github.mujx.nheko         	0x000000010f469bd4 0x10f28e000 + 1948628
18  com.github.mujx.nheko         	0x000000010f46970a 0x10f28e000 + 1947402
19  com.github.mujx.nheko         	0x000000010f469565 0x10f28e000 + 1946981
20  libboost_thread-mt.dylib      	0x000000010fd4a26c 0x10fd47000 + 12908
21  libsystem_pthread.dylib       	0x00007fff5e5c733d _pthread_body + 126
22  libsystem_pthread.dylib       	0x00007fff5e5ca2a7 _pthread_start + 70
23  libsystem_pthread.dylib       	0x00007fff5e5c6425 thread_start + 13

Thread 4 Crashed:
0   libssl.1.0.0.dylib            	0x000000010ff2e2ac 0x10ff1b000 + 78508
1   libssl.1.0.0.dylib            	0x000000010ff2e1ff ssl3_setup_read_buffer + 114
2   libssl.1.0.0.dylib            	0x000000010ff2c42b ssl3_read_bytes + 73
3   libssl.1.0.0.dylib            	0x000000010ff2990e 0x10ff1b000 + 59662
4   com.github.mujx.nheko         	0x000000010f4e1343 0x10f28e000 + 2437955
5   com.github.mujx.nheko         	0x000000010f50d467 0x10f28e000 + 2618471
6   com.github.mujx.nheko         	0x000000010f50e19b 0x10f28e000 + 2621851
7   com.github.mujx.nheko         	0x000000010f50dd71 boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::asio::ssl::detail::io_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp>, boost::asio::ssl::detail::read_op<boost::asio::mutable_buffer>, boost::beast::http::detail::read_some_op<boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >, boost::beast::basic_flat_buffer<std::__1::allocator<char> >, false, boost::beast::http::parser<false, boost::beast::http::basic_string_body<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<char> >, boost::beast::http::detail::read_op<boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >, boost::beast::basic_flat_buffer<std::__1::allocator<char> >, false, boost::beast::http::parser<false, boost::beast::http::basic_string_body<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<char> >, boost::beast::http::detail::parser_is_done, std::__1::__bind<void (mtx::http::Session::*)(boost::system::error_code const&, unsigned long), std::__1::shared_ptr<mtx::http::Session>, std::__1::placeholders::__ph<1> const&, std::__1::placeholders::__ph<2> const&> > > > >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) + 465
8   com.github.mujx.nheko         	0x000000010f469bd4 0x10f28e000 + 1948628
9   com.github.mujx.nheko         	0x000000010f46970a 0x10f28e000 + 1947402
10  com.github.mujx.nheko         	0x000000010f469565 0x10f28e000 + 1946981
11  libboost_thread-mt.dylib      	0x000000010fd4a26c 0x10fd47000 + 12908
12  libsystem_pthread.dylib       	0x00007fff5e5c733d _pthread_body + 126
13  libsystem_pthread.dylib       	0x00007fff5e5ca2a7 _pthread_start + 70
14  libsystem_pthread.dylib       	0x00007fff5e5c6425 thread_start + 13

nheko seems to choke on replies

System:

  • Nheko version: 0.6.3
  • Installation method: AppImage
  • Operating System: Arch Linux
  • Desktop Environment: Gnome Shell (3.30.2)

Actual behavior

Here's what nheko logs when stumbling upon a reply:

error while parsing xml "Expected ';', but got '='." "<html><blockquote><a href=\"https://matrix.to/#/!FyQrGcOoVamcLcvdob:matrix.org/$15487838774263HIAkp:amorgan.xyz?via=matrix.org&via=disroot.org&via=saces.de\">In reply to</a> * <a href=\"https://matrix.to/#/@andrewm:amorgan.xyz\">@andrewm:amorgan.xyz</a><br></br>bumps to 1.10</blockquote>should just bump to 1.11 and switch to modules :3</html>"

Not sure whether it chokes on every reply it encounters, but every occurrence of this error is about a reply. It doesn't prevent the reply itself to show up in nheko's UI.

Expected behavior

No error in logs.

Cannot invite users to new room

  • Nheko version: 0.6.3 Darwin
  • Installation method: Built from sources
  • Operating System: Mac OS X 10.13.6

Actual behavior

No notification shown for the invited user.

Expected behavior

User should receive a notification.

Steps to reproduce

Create room, invite a user from the same domain.

NOTE: User invited to direct chat correctly receives the invitation.

At registration screen, reCAPTCHA is always tried even if not in registration flows

If the Homeserver returns a 401 with the following body for POST /_matrix/client/r0/register:

{
  "session": "704e6a8b-d10a-4b64-92a3-d2b76e5005c1",
  "flows": [
    {
      "stages": [
        "m.login.password"
      ]
    }
  ]
}

then the client will prompt for reCAPTCHA, even tho it's not provided by the Homeserver.

Following discussing in the Matrix room, it seems like m.login/password is simply not supported. Context is here.

Implement Proper Replies

There's currently no way in nheko to reply to a specific message (like in Riot, for instance). Users should have the ability (perhaps via right-clicking on a message) to quote or reply to that specific message

One time key error message can cause the nheko login screen to become very wide

TDLR: I think there should be a forced text wrapping width for error messages on the login screen.

Long version:
If a startup error shown in nheko's login screen happens to be quite long, it will cause the width of window to expand far beyond the width of the monitor. In my case, nheko was showing a message concerning being unable to upload one time keys. The message looked like this but all on one line. I have redacted portions of it with R and r, but have tried to maintain same text length:

Failed to setup encryption keys. Server response: One time key signed_curve25519:AAAAAQ already exists. Old key: {"key":"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR","signatures":{"RRRRRRRRRRRRRRRRRRRRR":{"ed25519:rrrrrrrrrr":"rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr"}}}; new key: {'key': 'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr', 'signatures': {'rrrrrrrrrrrrrrrrrrrrr': {'ed25519:rrrrrrrrrr': 'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr'}}} 400

In terms of how I was able to reproduce this message in the first place, I believe it may have happened because, with a previous version of nheko, I attempted but failed to login in (due to the sync loop issue #19). I more recently tried a new version to see if that problem is fixed, and this is when i encountered this issue.

Perhaps, with the older version of nheko that had the sync issue, it got part way through the login process such that certain aspects of the key management were finished, but some other parts of it were unfinished, resulting in this error the next time I started nheko.

At registration screen, silent failure if a URL is used for Home Server value

If a URL is used for "Home Server" on the register page, nothing happens in the GUI upon clicking "Register".

The console shows the following:

[net] [warning] failed to register: status_code (-1472400592)

If the hostname without https:// or http:// is used instead, it works. It would be good if the textfield label was clearer on the expect value, or handle URL protocol scheme gracefully.

missing translation strings

the following strings seem to be missing in the translation files in resources/langs/:
in the room creation dialog, the labels of the drop-down menus for "Room Visibility" and "Room Preset" as well as the "Cancel" and "Create room" buttons are missing.

btw:
the capitalization of "Create room" - shouldn't that read "Create Room", in line with the rest of the strings there?
and shouldn't there be colons after "Topic", "Direct Chat", "Room Preset", etc.?

libolm.so.2: cannot open shared object file

System:

  • Nheko version: Latest in AUR
  • Installation method: AUR
  • Operating System: Arch

When trying to open nheko, I get the following error:

/usr/bin/nheko: error while loading shared libraries: libolm.so.2: cannot open shared object file: No such file or directory

Libolm got updated recently:

Name            : libolm
Version         : 3.0.0-1

Suggestion: don't share message inputs between chat pages

Wouldn't it be better to clean up text in text input after switch to other channel? Makes no logic to implicitly share textbox contents between different rooms.
This, or even saving state per room, would be better, wouldn't it?
Thinking about this in context of replies implementation, AFAIK you can't reply with referenced message into another channel, so this should be prevented in UI. Doing so at least for plain messages would be a good start.

Unable to compile, having json.hpp

The first part went smoothly

https://paste.debian.net/1067980/

The second part is where it gives out ... the last lines are -

-- Build files have been written to: /home/shirish/games/nheko-reborn/.deps/build/mtxclient
[ 95%] Performing build step for 'MatrixClient'
Scanning dependencies of target matrix_client
[  2%] Building CXX object CMakeFiles/matrix_client.dir/lib/http/client.cpp.o
In file included from /home/shirish/games/nheko-reborn/.deps/build/mtxclient/lib/http/client.cpp:5:
/home/shirish/games/nheko-reborn/.deps/build/mtxclient/include/mtxclient/http/client.hpp:15:10: fatal error: json.hpp: No such file or directory
 #include <json.hpp>
          ^~~~~~~~~~
compilation terminated.
make[5]: *** [CMakeFiles/matrix_client.dir/build.make:63: CMakeFiles/matrix_client.dir/lib/http/client.cpp.o] Error 1
make[4]: *** [CMakeFiles/Makefile2:73: CMakeFiles/matrix_client.dir/all] Error 2
make[3]: *** [Makefile:130: all] Error 2
make[2]: *** [CMakeFiles/MatrixClient.dir/build.make:114: MatrixClient-prefix/src/MatrixClient-stamp/MatrixClient-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/MatrixClient.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

nheko-reborn-cmake-build-deps.txt

New chat is not accessible when it is initiated by other user

System:

  • Nheko version: 0.6.3-0c53a87 | Linux
  • Installation method: build
  • Operating System: Arch
  • Qt version: 5.12.1
  • C++ compiler: gcc 8.2.1
  • Desktop Environment: KDE

Actual behavior

New chat entry appears in left sidebar, although it's not clickable and this remains even after reboot.

Expected behavior

New chats should be accessible at any circumstances.

Steps to reproduce

Two instances of matrix clients, riot (R), nheko(N).

R user invites N to 1:1 chat.

Emoji widget lacks visual feedback for user

It would be nice to see background for hovered emoji, as well as provide some feedback when it is actually inserted into text (e.g. blink animation in background).
Currently emoji widget looks dull enough.

Memory leak when switching between chats.

System:

  • Nheko 0.6.1
  • Installation method: Main repository
  • Operating System: Debian Testing
  • Desktop Environment: Gnome Shell (Wayland)

Actual behavior

Switching between chats constantly eats memory.

Expected behavior

Not eating memory.

Steps to reproduce

Switch between two chats for a while.

Handle matrix.to room(event) links

In TextLabel::handleLinkActivation we currently special case matrix.to URLs, so we can open the user profile. This should be extended to handle room links, so clicking on In reply to would navigate to that message instead of opening in a browser.

Specification of matrix.to links.

Room links can be either a link to a room or a link to a specific event (which comes after the / after the room id).

So we would first have to check, if we already joined the room. If not, we should probably allow joining the room if joining is possible without an invitation. If we have already joined (or we can peek?), we should show the room.

Additionally, if the link contains an event and we can see that event in the room, we should scroll the view to that specific event and maybe highlight it.

The hard part of this is probably handling unjoined rooms and scrolling to the correct position. I think scrolling is the important part, as it makes seeing the context of a reply much easier.

Formatted messages are displayed literally

Copied from mujx/nheko#457

Actual behavior
Formatted message is displayed literally.

Expected behavior
Formatting applied with the markup hidden.

Steps to reproduce
Send message with the following content:

Test list:

  1. One
  2. Two

What is displayed is this:

Test list:
<ol>
<li>One</li>
<li>Two</li>
></ol>

Nheko doesn't open in antergos (qt5ct issues?)

System:

  • Nheko version: I have the nheko version from aur.
  • Installation method: AUR
  • Operating System: Antergos
  • Desktop Environment: i3wm

Ever since I made some updates, nheko stopped working. Here is the output of "nheko:":

nheko
qt5ct: using qt5ct plugin

(nheko:16326): Gtk-WARNING **: 14:36:45.686: Unable to locate theme engine in module_path: "adwaita",

(nheko:16326): Gtk-WARNING **: 14:36:45.688: Unable to locate theme engine in module_path: "adwaita",
qt5ct: D-Bus system tray: no
qt5ct: custom style sheet is disabled
[1]    16326 abort (core dumped)  nheko

SSL-related crash in some cases

Windows client crashes if user named with non latin symbols

From @nihirash on October 8, 2018 19:45

System:

  • Nheko version: nheko-v0.6.2
  • Installation method: official installer
  • System: Win 10

Actual behavior

Crashes on start

Expected behavior

Runs correctly

Steps to reproduce

Just use username with non latin symbols. For example "Обычный пользователь"

Logs

Doesn't created. Crashed on trying to create file.

Copied from original issue: mujx/nheko#459

Why does nheko-reborn download boost 1.68 when readme says 1.66 or greater

In Debian, boost-defaults are 1.67 for buster as e.g.

$ apt-cache policy libboost-dev
libboost-dev:
  Installed: 1.67.0.1
  Candidate: 1.67.0.1
  Version table:
 *** 1.67.0.1 990
        990 http://cdn-fastly.deb.debian.org/debian buster/main amd64 Packages
        500 http://cdn-fastly.deb.debian.org/debian unstable/main amd64 Packages
        100 /var/lib/dpkg/status

But when I tried with building nheko-reborn it downloaded 1.68, I have no clue why. Please either update your instructions to say 1.68 is needed or don't download the new version if it's happy with 1.67.

$ cmake --build .deps
Scanning dependencies of target Boost
[  2%] Creating directories for 'Boost'
[  4%] Performing download step (download, verify and extract) for 'Boost'
-- Downloading...
   dst='/home/shirish/games/nheko-reborn/.deps/build/downloads/boost/boost_1_68_0.tar.bz2'
   timeout='none'
-- Using src='https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.bz2'
-- [download 0% complete]
-- [download 1% complete]
-- [download 2% complete]
-- [download 3% complete]
-- [download 4% complete]
-- [download 5% complete]
-- [download 6% complete]
-- [download 7% complete]
-- [download 8% complete]
-- [download 9% complete]
-- [download 10% complete]
-- [download 11% complete]
-- [download 12% complete]
-- [download 13% complete]
-- [download 14% complete]
-- [download 15% complete]
-- [download 16% complete]
-- [download 17% complete]
-- [download 18% complete]
-- [download 19% complete]
-- [download 20% complete]
-- [download 21% complete]
-- [download 22% complete]
-- [download 23% complete]
-- [download 24% complete]
-- [download 25% complete]
-- [download 26% complete]
-- [download 27% complete]
-- [download 28% complete]
-- [download 29% complete]
-- [download 30% complete]
-- [download 31% complete]
-- [download 32% complete]
-- [download 33% complete]
-- [download 34% complete]
-- [download 35% complete]
-- [download 36% complete]
-- [download 37% complete]
-- [download 38% complete]
-- [download 39% complete]
-- [download 40% complete]
-- [download 41% complete]
-- [download 42% complete]
-- [download 43% complete]
-- [download 44% complete]
-- [download 45% complete]
-- [download 46% complete]
-- [download 47% complete]
-- [download 48% complete]
-- [download 49% complete]
-- [download 50% complete]
-- [download 51% complete]
-- [download 52% complete]
-- [download 53% complete]
-- [download 54% complete]
-- [download 55% complete]
-- [download 56% complete]
-- [download 57% complete]
-- [download 58% complete]
-- [download 59% complete]
-- [download 60% complete]
-- [download 61% complete]
-- [download 62% complete]
-- [download 63% complete]
-- [download 64% complete]
-- [download 65% complete]
-- [download 66% complete]
-- [download 67% complete]
-- [download 68% complete]
-- [download 69% complete]
-- [download 70% complete]
-- [download 71% complete]
-- [download 72% complete]
-- [download 73% complete]
-- [download 74% complete]
-- [download 75% complete]
-- [download 76% complete]
-- [download 77% complete]
-- [download 78% complete]
-- [download 79% complete]
-- [download 80% complete]
-- [download 81% complete]
-- [download 82% complete]
-- [download 83% complete]
-- [download 84% complete]
-- [download 85% complete]
-- [download 86% complete]
-- [download 87% complete]
-- [download 88% complete]
-- [download 89% complete]
-- [download 90% complete]
-- [download 91% complete]
-- [download 92% complete]
-- [download 93% complete]
-- [download 94% complete]
-- [download 95% complete]
-- [download 96% complete]
-- [download 97% complete]
-- [download 98% complete]
-- [download 99% complete]
-- [download 100% complete]
-- verifying file...
       file='/home/shirish/games/nheko-reborn/.deps/build/downloads/boost/boost_1_68_0.tar.bz2'
-- Downloading... done
-- extracting...
     src='/home/shirish/games/nheko-reborn/.deps/build/downloads/boost/boost_1_68_0.tar.bz2'
     dst='/home/shirish/games/nheko-reborn/.deps/build/boost'
-- extracting... [tar xfz]
-- extracting... [analysis]
-- extracting... [rename]
-- extracting... [clean up]
-- extracting... done

[  6%] No patch step for 'Boost'
[  8%] No update step for 'Boost'
[ 10%] Performing configure step for 'Boost'
Building Boost.Build engine with toolset gcc... tools/build/src/engine/bin.linuxx86_64/b2
Unicode/ICU support for Boost.Regex?... /usr
Generating Boost.Build configuration in project-config.jam...

Bootstrapping is done. To build, run:

    ./b2
    
To adjust configuration, edit 'project-config.jam'.
Further information:

   - Command line help:
     ./b2 --help
     
   - Getting started guide: 
     http://www.boost.org/more/getting_started/unix-variants.html
     
   - Boost.Build documentation:
     http://www.boost.org/build/doc/html/index.html

[ 12%] Performing build step for 'Boost'
Performing configuration checks

    - default address-model    : 64-bit
    - default architecture     : x86

Building the Boost C++ Libraries.


    - symlinks supported       : yes
    - zlib                     : yes
    - bzip2                    : no
    - lzma                     : no
    - has_icu builds           : yes
    - lockfree boost::atomic_flag : yes

Component configuration:

    - atomic                   : building
    - chrono                   : building
    - container                : not building
    - context                  : not building
    - contract                 : not building
    - coroutine                : not building
    - date_time                : building
    - exception                : not building
    - fiber                    : not building
    - filesystem               : not building
    - graph                    : not building
    - graph_parallel           : not building
    - iostreams                : building
    - locale                   : not building
    - log                      : not building
    - math                     : not building
    - mpi                      : not building
    - program_options          : not building
    - python                   : not building
    - random                   : building
    - regex                    : building
    - serialization            : not building
    - signals                  : not building
    - stacktrace               : not building
    - system                   : building
    - test                     : not building
    - thread                   : building
    - timer                    : not building
    - type_erasure             : not building
    - wave                     : not building

The Boost C++ Libraries were successfully built!

The following directory should be added to compiler include paths:

    /home/shirish/games/nheko-reborn/.deps/build/boost

The following directory should be added to linker library paths:

    /home/shirish/games/nheko-reborn/.deps/build/boost/stage/lib

[ 14%] Performing install step for 'Boost'
Performing configuration checks

    - default address-model    : 64-bit (cached)
    - default architecture     : x86 (cached)
    - symlinks supported       : yes (cached)
    - zlib                     : yes
    - bzip2                    : no
    - lzma                     : no
    - has_icu builds           : yes
    - lockfree boost::atomic_flag : yes
    - zlib                     : yes
    - bzip2                    : no
    - lzma                     : no

Component configuration:

    - atomic                   : building
    - chrono                   : building
    - container                : not building
    - context                  : not building
    - contract                 : not building
    - coroutine                : not building
    - date_time                : building
    - exception                : not building
    - fiber                    : not building
    - filesystem               : not building
    - graph                    : not building
    - graph_parallel           : not building
    - iostreams                : building
    - locale                   : not building
    - log                      : not building
    - math                     : not building
    - mpi                      : not building
    - program_options          : not building
    - python                   : not building
    - random                   : building
    - regex                    : building
    - serialization            : not building
    - signals                  : not building
    - stacktrace               : not building
    - system                   : building
    - test                     : not building
    - thread                   : building
    - timer                    : not building
    - type_erasure             : not building
    - wave                     : not building

[ 16%] Completed 'Boost'

Publish nheko on flathub

It would be awesome if nheko was published on flathub. It is the only proper matrix client that supports E2EE, everyone should be able to easily use it.

Close chat when pressing esc. Start nheko with closed chat.

Sometimes I want to keep nheko's window open without marking anything as read. It would be nice if nheko did not open any chat at startup (or category change) and closed any open one when pressing esc (like when pressing the "home" button on riot desktop/web it got deleted :( ).

edit: the home button was removed from riot (now element), but you can get a similar effect by pressing the communities button. telegram desktop does this well (press esc)

File upload - size limited

  • Nheko version: 0.6.3 Darwin
  • Installation method: DMG from Github and local build (same error)
  • Operating System: Mac OS X 10.13.6
  • Qt version: I don't know
  • C++ compiler: I don't know

I use my own installation of Synapse (domain bimp.fr).
Using Nheko I cannot upload files larger than 1MB approximately ("Failed to upload image. Please try again").
There is no problem to upload files even larger than this using Riot (the same server, the same room, the same account).
Nothing in logs (how can I increase the debug level?)
I think that it is a problem of timeout too short, but I cannot find a place where i can increase it.
I can build Nheko from sources using provided CMake files and instructions from GitHub, so I can do more tests, but I cannot debug (no working IDE for Qt/C++).

Add Per-Room Notification Preferences

Allow users to specify which rooms they receive notifications for, and which situations they get notifications in. For example, only notify when the user is mentioned, or notify when the text contains some matching text, etc.

Message input background is overriding border of text area when typing multiline text

System:

  • Nheko version: 0.6.3-0c53a87 | Linux
  • Installation method: build
  • Operating System: Arch
  • Qt version: 5.12.1
  • C++ compiler: gcc 8.2.1
  • Desktop Environment: KDE

Actual behavior

Message input background is overriding border of text area when typing multiline text

Expected behavior

Border line should always be visible

Steps to reproduce

Type 3+ lines message
buggedtextinput

Memory Corruption

Nheko or mtxclient suffers for memory corruption issues that manifest as display artifacts in text messages. May also cause crashes.

Initial Sync loop

[2019-02-11 10:43:16.041] [db] [error] failed to save state after initial sync: mdb_dbi_open: MDB_DBS_FULL: Environment maxdbs limit reached
[2019-02-11 10:43:16.041] [net] [info] trying initial sync

Initial Sync loop

[2019-02-11 10:43:16.041] [db] [error] failed to save state after initial sync: mdb_dbi_open: MDB_DBS_FULL: Environment maxdbs limit reached
[2019-02-11 10:43:16.041] [net] [info] trying initial sync

proxy setup

please enable configuring a SOCKS proxy so nheko's connections can be proxied through Tor using a local Tor daemon.

Community Support

It would be nice if nheko supported the community feature, aka groups whenever possible.

Make available in Homebrew?

It would be convenient if Nheko Reborn were available on macOS through Homebrew as well as MacPorts. Right now only the old Nheko client is available as a Homebrew cask.

If you want to do this, to qualify for inclusion in Homebrew core, your GitHub repo needs to be the root of its own fork tree, instead of a fork of mujx/nheko. Since the upstream mujx/nheko project is defunct, and changes to this repo are never going to make it back there, that seems like the "Right Thing" to do, anyway. To do this, you need to contact GitHub support and ask them to make your repo a "canonical" repo that is no longer a fork of mujx/nheko.

In the meantime, to show how this would work, I've created a nheko-reborn cask in my apjanke/personal custom tap. To use it:

brew tap apjanke/personal
brew cask install nheko-reborn

System:

  • Installation method: Homebrew
  • Operating System: macOS

flatpak EOL info

System:

  • Nheko version: 0.6.2
  • Installation method: flatpak
  • Operating System: ubuntu
  • Desktop Environment: plasma

Actual behavior

$ flatpak install flathub io.github.mujx.Nheko produces the following info right at the end:

Info: io.github.mujx.Nheko is end-of-life, with reason: This application is no longer maintained.
Changes complete.

The app does still run fine.
Although admittedly I also don't really know what causes an EOL info like that.

Expected behavior

Not have it say the app is EOL. Or not advertise flatpak as a viable installation option. Or make sure the flatpak gets updated on release (I am guessing that would possibly be why it says its EOL?).

Steps to reproduce

flatpak install flathub io.github.mujx.Nheko

Logs

$ flatpak install flathub io.github.mujx.Nheko

Looking for matches…

io.github.mujx.Nheko permissions:
    ipc       network       pulseaudio            wayland
    x11       dri           file access [1]       dbus access [2]

    [1] home, xdg-config/kdeglobals:ro, xdg-run/dconf, ~/.config/dconf:ro
    [2] com.canonical.AppMenu.Registrar, com.canonical.AppMenu.Registrar.*,
        org.freedesktop.Notifications, org.kde.StatusNotifierWatcher


        ID                                         Arch   Branch Op Remote  Download
 1. [✓] org.freedesktop.Platform.GL.nvidia-390-116 x86_64 1.4    u  flathub 47,1 MB / 47,6 MB
 2. [✓] org.freedesktop.Platform.GL.nvidia-390-77  x86_64 1.4    u  flathub 47,3 MB / 47,8 MB
 3. [✓] io.github.mujx.Nheko                       x86_64 stable i  flathub  3,0 MB / 3,0 MB

Info: io.github.mujx.Nheko is end-of-life, with reason: This application is no longer maintained.
Changes complete.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.