Code Monkey home page Code Monkey logo

quaternion's People

Contributors

a-andreyev avatar aaronraimist avatar alxlg avatar andir avatar ara4n avatar circumspect avatar ddanilov avatar elvisangelaccio avatar fxrh avatar ilya-fedin avatar kitsuneral avatar krkk avatar krombel avatar lokalise-bot avatar maralorn avatar marcdeop avatar miocho avatar mymindstorm avatar nicolasfella avatar piotrzakrzewski avatar probonopd avatar redsky17 avatar rpallai avatar rushsteve1 avatar sbts avatar sdicke avatar shsorbom avatar shunf4 avatar thomersch avatar tobiasfella 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

quaternion's Issues

KChatEdit clears the entry before any attempt to check/send the message

The issue is two-fold:

  • End-user experience: we already have a check for a lone / in the beginning of the message. Since KChatEdit clears the entry before emitting inputChanged signal (which is incorrect, to my mind), the end-user sees a status message and an already cleared line. Yes he/she can push Up and get his input but that's just not right, the line should be there until actually submitted to the server.
  • Developer experience: I'm trying to adapt ChatRoomWidget::sendLine() to rich text messages. What I need for that is access to the original representation (not only HTML or only plain text) so that I could navigate through the underlying QTextDocument and convert/validate it. Once rich-text input becomes possible, I really don't want to mess with HTML tags in that place. But there's no clean way to do it: the history remembers only HTML /or/ plaintext representation, and filling in a QTextDocument back from history is plain stupid.

What I think would be right is to keep the entry intact until the end of ChatRoomWidget::sendLine() and once we're done with it, call some kind of KChatEdit::save() to push the line to the room history.

Quaternion raises itself on notification

When the user gets highlighted (notified, whatever), Quaternion raises itself above all other windows and steals focus from whatever the user was doing. This is quite annoying, and a regular notification is the only thing that should be shown.

Happens on both Xubuntu and Arch (so OS independent really) using Xfwm (from the Xfce4 DE).

Kick messages aren't displayed properly

When a user is kicked, instead of saying he/she is kicked, Quaternion says they left the room. While this is true, it would be nicer to show they're kicked.

screenshot_2016-09-19_12-16-10

The top is what Quaternion shows, the bottom what Vector shows.

Room sorting, tagging and filtering

Currently the room list seems like a mess, this is probably mostly because it doesn't sort or filters the rooms.

For example every room with a voice chat active shows up as a new room. This in itself is fine (for now), but once the call is ended, the room should clear itself. If I leave the room manually, it shows up as Empty room (!idhere:matrix.org).

Also, Vector has just (yesterday actually, 2016-08-30) implemented a new room category for 1-on-1 chats. This could also be added to Quaternion to make them stand out. The rooms should be named to the other user you're chatting with. While you're at it, favorite and low priority rooms would be nice as well.

No way to mark a freshly joined room as read

Quaternion assumes absent read marker for a freshly joined room. Even if you scroll to the very beginning (which is really not always what the user means to do), the read marker won't appear - Quaternion always expects it to come from the server in such cases.
What at the very least should be done is a "Mark all as read" context menu entry on the roomlist. Further on, some intelligence on freshly joined rooms should be provided (maybe mark everything submitted so far as read by default...)

Register user

This will need quite a bit of work, especially the fallback mechanism (it needs some sort of browser integration).

Quaternion crashes on exit at least on Windows 7

The crash is consistent but not 100% reproducible. It comes from the Qt cleanup code executed from ChatRoomWidget. Namely, one of ChatRoomWidget children (it seems unpredictable which one) tries to cleanup itself, calls QWidget::window() in the process and crashes when dereferencing its (nullptr) result.

[Settings] Crash with multiple instances of Quaternion

  1. Start the first instance, login, check "keep logged in"
  2. Start the second instance, log out
  3. After a few seconds, the first instance crashes.

Last lines of output:

Job "SyncJob-9" status 103 : "Host requires authentication"

Thread 1 "quaternion" received signal SIGSEGV, Segmentation fault.
QScopedPointer >::operator-> (this=0x10) at /usr/include/qt/QtCore/qscopedpointer.h:118
118             Q_ASSERT(d);

Backtrace:

#0  QScopedPointer >::operator-> (this=0x10) at /usr/include/qt/QtCore/qscopedpointer.h:118
#1  0x0000000000470ee1 in QMatrixClient::BaseJob::finishJob (this=0x0, emitResult=false) at /home/felix/Development/qmatrixclient/lib/jobs/basejob.cpp:166
#2  0x0000000000471527 in QMatrixClient::BaseJob::abandon (this=0x0) at /home/felix/Development/qmatrixclient/lib/jobs/basejob.cpp:221
#3  0x00000000004564e4 in QMatrixClient::Connection::disconnectFromServer (this=0x8063b0) at /home/felix/Development/qmatrixclient/lib/connection.cpp:150
#4  0x0000000000442f00 in MainWindow::setConnection (this=0x7fffffffdcd0, newConnection=0x0) at /home/felix/Development/qmatrixclient/client/mainwindow.cpp:103
#5  0x00000000004434cf in MainWindow::loggedOut (this=0x7fffffffdcd0) at /home/felix/Development/qmatrixclient/client/mainwindow.cpp:183
#6  0x00000000004449da in QtPrivate::FunctorCall, QtPrivate::List<>, void, void (MainWindow::*)()>::call(void (MainWindow::*)(), MainWindow*, void**) (f=(void (MainWindow::*)(MainWindow * const)) 0x443490 , o=0x7fffffffdcd0, arg=0x7fffffffcfd0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:507
#7  0x0000000000444950 in QtPrivate::FunctionPointer::call, void>(void (MainWindow::*)(), MainWindow*, void**) (f=(void (MainWindow::*)(MainWindow * const)) 0x443490 , o=0x7fffffffdcd0, arg=0x7fffffffcfd0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:526
#8  0x0000000000444886 in QtPrivate::QSlotObject, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x25367c0, r=0x7fffffffdcd0, a=0x7fffffffcfd0, ret=0x0) at /usr/include/qt/QtCore/qobject_impl.h:149
#9  0x00007ffff5ad785e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#10 0x0000000000479bc4 in QMatrixClient::Connection::loginError (this=0x8063b0, _t1=...) at /home/felix/Development/qmatrixclient/build/lib/moc_connection.cpp:389
#11 0x0000000000459258 in QMatrixClient::Connection::sync(int)::$_6::operator()() const (this=0x2ec7e20) at /home/felix/Development/qmatrixclient/lib/connection.cpp:181
#12 0x00000000004591d9 in QtPrivate::FunctorCall, QtPrivate::List<>, void, QMatrixClient::Connection::sync(int)::$_6>::call(QMatrixClient::Connection::sync(int)::$_6&, void**) (f=..., arg=0x7fffffffd210) at /usr/include/qt/QtCore/qobjectdefs_impl.h:501
#13 0x00000000004591b1 in QtPrivate::Functor::call, void>(QMatrixClient::Connection::sync(int)::$_6&, void*, void**) (f=..., arg=0x7fffffffd210) at /usr/include/qt/QtCore/qobjectdefs_impl.h:558
#14 0x000000000045914d in QtPrivate::QFunctorSlotObject, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x2ec7e10, r=0x25d97a0, a=0x7fffffffd210, ret=0x0) at /usr/include/qt/QtCore/qobject_impl.h:198
#15 0x00007ffff5ad785e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#16 0x000000000047a2df in QMatrixClient::BaseJob::failure (this=0x25d97a0, _t1=0x25d97a0) at /home/felix/Development/qmatrixclient/build/lib/moc_basejob.cpp:235
#17 0x0000000000471148 in QMatrixClient::BaseJob::finishJob (this=0x25d97a0, emitResult=true) at /home/felix/Development/qmatrixclient/lib/jobs/basejob.cpp:182
#18 0x0000000000470cd4 in QMatrixClient::BaseJob::gotReply (this=0x25d97a0) at /home/felix/Development/qmatrixclient/lib/jobs/basejob.cpp:129
#19 0x0000000000472b8a in QtPrivate::FunctorCall, QtPrivate::List<>, void, void (QMatrixClient::BaseJob::*)()>::call(void (QMatrixClient::BaseJob::*)(), QMatrixClient::BaseJob*, void**) (f=(void (QMatrixClient::BaseJob::*)(QMatrixClient::BaseJob * const)) 0x470b30 , o=0x25d97a0, arg=0x7fffffffd5a0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:507
#20 0x0000000000472b00 in QtPrivate::FunctionPointer::call, void>(void (QMatrixClient::BaseJob::*)(), QMatrixClient::BaseJob*, void**) (f=(void (QMatrixClient::BaseJob::*)(QMatrixClient::BaseJob * const)) 0x470b30 , o=0x25d97a0, arg=0x7fffffffd5a0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:526
#21 0x0000000000472a36 in QtPrivate::QSlotObject, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x2ec14f0, r=0x25d97a0, a=0x7fffffffd5a0, ret=0x0) at /usr/include/qt/QtCore/qobject_impl.h:149
#22 0x00007ffff5ad785e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#23 0x00007ffff5f7ee97 in ?? () from /usr/lib/libQt5Network.so.5
#24 0x00007ffff6015b59 in ?? () from /usr/lib/libQt5Network.so.5
#25 0x00007ffff5ad8349 in QObject::event(QEvent*) () from /usr/lib/libQt5Core.so.5
#26 0x00007ffff76d4e3c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#27 0x00007ffff76dc5b1 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#28 0x00007ffff5aabc80 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#29 0x00007ffff5aae3fd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQt5Core.so.5
#30 0x00007ffff5b00173 in ?? () from /usr/lib/libQt5Core.so.5
#31 0x00007ffff2829e67 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#32 0x00007ffff282a0d0 in ?? () from /usr/lib/libglib-2.0.so.0
#33 0x00007ffff282a17c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#34 0x00007ffff5b0057f in QEventDispatcherGlib::processEvents(QFlags) () from /usr/lib/libQt5Core.so.5
#35 0x00007ffff5aaa0da in QEventLoop::exec(QFlags) () from /usr/lib/libQt5Core.so.5
#36 0x00007ffff5ab25cc in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#37 0x000000000045310e in main (argc=1, argv=0x7fffffffdee8) at /home/felix/Development/qmatrixclient/client/main.cpp:52

Only mark messages as read after user interaction

Currently, Quaternion marks all the incoming messages as read in the selected room. We have no idea, though, whether the user has read those messages (i.e., the user could have left his PC running while being away). Some action (like a mouse move event) should be required to mark messages as read.

No reloading is triggered, when top of log is reached.

When scrolling upwards, more history get’s pulled in. But I can scroll so fast upwards, that I reach the upper end of log where no reload get’s triggered. I actually have to bounce the view against the top again and again everytime I want to pull more history.

No rule to make target 'install'

Hey,

tried compiling following the documentation.
Compiling was successful, but make install does not work:

make: *** No rule to make target 'install'. Stop.

I am in the build directory when issuing the command.
The resulting binary works well, but the documentation states that make install should work. It's a bit confusing.

Greetings.

Homeserver input on login screen should assume http/https

Entering matrix.somehost.com should work, because matrix homeservers always use http transports. Instead I get a vague "Unknown error".

Job "PasswordLogin" created
Job "PasswordLogin" status 100 : "Unknown error"
deconstructing connection object for ""
Job "PasswordLogin" destroyed

Last window size should be remembered

Currently, everytime you launch the client, it's window size is reset to whatever is the default. It would be preferable to "remember" the old window size, and set it back to that on the next launch.

Opening direct image url's inline

Currently, images that are send as a file directly through Matrix are shown inline as intended. However direct links (such as imgur links) only show up as text. It would be nice if those were shown inline as well.

Remember input line status per room

It’s very annoying, if you are typing get a highlight somewhere else, wan’t to quick reply, and then return to your previous discussion.

Timeline with images doesn't keep to the bottom

When a timeline with images is opened, images take time to load. When they actually load and expand in the timeline, the part below an image is displaced further down, which is not an expected behaviour at least when a user is standing on the newest (bottommost message).

This is one of consequences of having a beginning of the model on the top, rather than on the bottom. Unfortunately, reversing the model and the chat ListView (with verticalLayout property) corrupts positioning of section labels (the labels appear below instead of above). Asking the Qt mailling list for help didn't help; seems that the only reasonable option left is to replace section labels with a home-baked solution for grouping by date (somewhat similar to the hack that I've made for the scrollbar).

Auto-complete names by pressing tab

Just like the Vector client. Basically currently pressing tab moves focus out of the chat line, but it should probably auto-complete the nickname you're typing instead.

Login times out

After building the latest version my login details fail and the login times out

On start up I get Job "PasswordLogin" status 103 : "Error transferring https://matrix.org/_matrix/client/r0/login - server replied: Forbidden" and a pop up asking for my details again.

After re entering my details I get

Job "PasswordLogin" created
Job "SyncJob-15" destroyed
Job "SyncJob-16" created
Job "PasswordLogin" destroyed
Job "SyncJob-16" status 102 : "The job has timed out"
Job "SyncJob-16" finishes without ready network reply
"The job has timed out"

Before todays commits login worked fine.

CPU usage jumps while mouse is moving over window

After the room list has loaded, clicking on a room and moving the mouse around the window causes Job "PostReceiptJob" created to be output rapidly which also causes the cpu usage of Quaternion to jump.

Tested on Ubuntu 16.10

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.