Git Product home page Git Product logo

nheko's Issues

Confirm logout

Right now, you press the "Power" icon and you are logged out immediately. There should be a popup (or similar) asking you if you really want to do this.

Only show unread notifications count in system tray as an option

I personally don't really care if I miss hundreds of messages which aren't directed to me, but I do care if I miss mentions and keywords. I'd like to have an option to have the tray icon only show the unread notification count, instead of just all unread messages.

Improve login UX

Currently the username field requires the input to start with a @ but most people are not used to typing the whole matrix id to login and that creates some confusion.

One possible solution would be to validate the input while the user is typing (without the automatic regex validator) and then add any missing @ behind the scenes.

For example both of the following inputs should be valid:

  • user:matrix.org
  • @user:matrix.org

Cannot login to my HS

The spinner stays active for ever.
The following message is in the terminal:

qt.network.ssl: Error receiving trust for a CA certificate
qt.network.ssl: Error receiving trust for a CA certificate
qt.network.ssl: Error receiving trust for a CA certificate
qt.network.ssl: Error receiving trust for a CA certificate
qt.network.ssl: Error receiving trust for a CA certificate
qt.network.ssl: Error receiving trust for a CA certificate
qt.network.ssl: Error receiving trust for a CA certificate
qt.network.ssl: Error receiving trust for a CA certificate
qt.network.ssl: Error receiving trust for a CA certificate
qt.network.ssl: Error receiving trust for a CA certificate
"Connection refused"
Profile: Response is not a JSON object

Login with riot to my HS is working fine.

Windows Build fails to find needed dll because it builds in Debug mode

The current windows build done by appveyor makes a debug build and therefor misses these required files:

  • Qt5Cored.dll
  • Qt5Guid.dll
  • Qt5Networkd.dll
  • Qt5Svgd.dll
  • Qt5Widgetsd.dll

A easy fix is to build a release version and use that as it than uses the correct and present dll files.

According to StackOverflow adding --config Release to the - cmake --build build line in the appveyor.yml file and changing the copy command to the release output folder would generate a correct release file and fix the dll loading bugs.

If wanted I add a PR (after nsis stuff is added or if wanted even in that PR) (Reason: don't want to mess that PR up :P)

Auto-complete by pressing tab

An auto-complete feature for display names would be nice. Start typing the first few letters of a display name, press tab to "scroll" through a list of nicks (or possibly even rooms known to the user) that apply to those letters, then either continue typing or press return to "select" the nickname and fill it in the chatbox.

No image support

Any form of image support (inline or at least a link to the image) would be nice, as right now it doesn't show any indication that an image has been sent whatsoever. A link at first would be fine, inline images could come later.

This would probably make the client usable for me.

Don't show the unread message count if the new messages are sent by the user itself

Currently, the unread message counter is shown when any new events/messages appear in a room, no matter who sends them. However, this even happens if those messages are only sent by the user itself, just on a different device.
So say I've read all messages in a room on nheko, and then send a single message on Riot to that same room. nheko will show the unread message count as 1. Obviously this is incorrect.

Formatting usernames

Usernames right now look a bit... confusing...

screenshot_2017-04-25_09-57-45
screenshot_2017-04-25_09-58-32

The display name should be shown instead.

Allow Ctrl+Q to quit

A convenience shortcut which every program ever seems to support. Use Ctrl+Q to quit the program

Regular segfault/libc failed assert

I installed nheko yesterday using the provided gentoo ebuild. The client appeared nearly unusable, crash very quickly after startup with messages like:

fish: “nheko” terminated by signal SIGSEGV (Address boundary error)

or

nheko: malloc.c:3720: _int_malloc: Assertion `(unsigned long) (size) >= (unsigned long) (nb)' failed.
fish: “nheko” terminated by signal SIGABRT (Abort

I don't know much more, but I can try to provide help debugging this on my computer.

Re-order room based on activity

As Telegram does, and Riot to an extend, it would be nice to have the room list re-order itself based on activity. So if a room gets a new message, it gets send to the top of the list.

Look up the actual address of a user's HS when logging in

Currently the domain part of the mxid is used verbatim. This breaks when the server's client API is at a different domain from the mxid or a port other than 443.

Implementing this looks relatively straightforward using QDnsLookup. I'll try to submit a PR for this in the next couple of days, unless someone beats me to it.

crashes on opening

I'm getting segfault after I signed in. I'm on arch linux

Reading symbols from nheko...done.
(gdb) r
Starting program: /run/media/aj/Buffer/git-clones/nheko/build/nheko 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffeb83f700 (LWP 7778)]
[New Thread 0x7fffe05a4700 (LWP 7779)]
[New Thread 0x7fffdfda3700 (LWP 7780)]

** (nheko:7774): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-kJG2SRP7Va: Connection refused
[New Thread 0x7fffdf16c700 (LWP 7781)]
[New Thread 0x7fffddb8b700 (LWP 7782)]
[New Thread 0x7fffcde23700 (LWP 7783)]
[New Thread 0x7fffcd622700 (LWP 7784)]
ASSERT: "!isEmpty()" in file /usr/include/qt/QtCore/qmap.h, line 401

Thread 1 "nheko" received signal SIGABRT, Aborted.
0x00007ffff57bba10 in raise () from /usr/lib/libc.so.6
(gdb) bt
#0  0x00007ffff57bba10 in raise () at /usr/lib/libc.so.6
#1  0x00007ffff57bd13a in abort () at /usr/lib/libc.so.6
#2  0x00007ffff6471e21 in  () at /usr/lib/libQt5Core.so.5
#3  0x00007ffff646d3de in  () at /usr/lib/libQt5Core.so.5
#4  0x000000000046f850 in QMap<QString, RoomInfoListItem*>::first() (this=0x11d5c18) at /usr/include/qt/QtCore/qmap.h:401
#5  0x000000000046e188 in RoomList::setInitialRooms(Rooms const&) (this=0x11d5be0, rooms=...) at /run/media/aj/Buffer/git-clones/nheko/src/RoomList.cc:135
#6  0x000000000043c294 in ChatPage::initialSyncCompleted(SyncResponse const&) (this=0x116c470, response=...)
    at /run/media/aj/Buffer/git-clones/nheko/src/ChatPage.cc:176
#7  0x0000000000485b0b in ChatPage::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x116c470, _c=QMetaObject::InvokeMetaMethod, _id=6, _a=0x7fffffffd310)
    at /run/media/aj/Buffer/git-clones/nheko/build/include/moc_ChatPage.cpp:132
#8  0x00007ffff6691d49 in QMetaObject::activate(QObject*, int, int, void**) ()
    at /usr/lib/libQt5Core.so.5
#9  0x0000000000487dd5 in MatrixClient::initialSyncCompleted(SyncResponse const&) (this=0xabbd30, _t1=...)
    at /run/media/aj/Buffer/git-clones/nheko/build/include/moc_MatrixClient.cpp:359
#10 0x00000000004670de in MatrixClient::onInitialSyncResponse(QNetworkReply*) (this=0xabbd30, reply=0xe45c60)
---Type <return> to continue, or q <return> to quit---
   xClient.cc:196
#11 0x0000000000468007 in MatrixClient::onResponse(QNetworkReply*) (this=0xabbd30, reply=0xe45c60) at /run/media/aj/Buffer/git-clones/nheko/src/MatrixClient.cc:330
#12 0x000000000048746c in MatrixClient::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0xabbd30, _c=QMetaObject::InvokeMetaMethod, _id=17, _a=0x7fffffffd730) at /run/media/aj/Buffer/git-clones/nheko/build/include/moc_MatrixClient.cpp:171
#13 0x00007ffff6691d49 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5
#14 0x00007ffff7258d12 in QNetworkAccessManager::finished(QNetworkReply*) () at /usr/lib/libQt5Network.so.5
#15 0x00007ffff7259824 in  () at /usr/lib/libQt5Network.so.5
#16 0x00007ffff725ce81 in  () at /usr/lib/libQt5Network.so.5
#17 0x00007ffff6691d49 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5
#18 0x00007ffff727c577 in  () at /usr/lib/libQt5Network.so.5
#19 0x00007ffff7328469 in  () at /usr/lib/libQt5Network.so.5
#20 0x00007ffff6692ba9 in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5
#21 0x00007ffff76d334c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#22 0x00007ffff76dab61 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#23 0x00007ffff6666440 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#24 0x00007ffff6668bcd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5
#25 0x00007ffff66bac43 in  () at /usr/lib/libQt5Core.so.5
#26 0x00007ffff33b45a7 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#27 0x00007ffff33b4810 in  () at /usr/lib/libglib-2.0.so.0
#28 0x00007ffff33b48bc in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#29 0x00007ffff66bb04f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#30 0x00007ffff666489a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#31 0x00007ffff666cde4 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#32 0x000000000047a743 in main(int, char**) (argc=1, argv=0x7fffffffe228) at /run/media/aj/Buffer/git-clones/nheko/src/main.cc:63

Extract hardcoded colors into a Theme/Palette

This would be the first and most important step to make nheko themeable. include/ui/Theme.h could be a starting point for anyone wishing to try this.

As a starting point it would be nice to have:

  • Light Theme
  • Dark Theme
  • System colors Theme

Multi-account support

Probably a long-term feature. It be nice to be able to use 2 or more accounts at the same time. Maybe a tab switch somewhere? Not sure on what to do with the UX.

Page scrolls to the bottom after loading history

What happens:

  • I join a channel with a few hundred unread messages
  • I scroll up one page
  • It seems like the next page gets loaded from the server
  • When the page finished loading, the scrollbar is at the bottom again
  • I need to scroll up 2 pages now to load the third history page
  • And so on.

What I expected:

  • That it does not scroll down after loading one page
  • Even better, if all history got loaded by default (maybe with a changeable limit in the settings, with a default of one week or so)

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.