communi / communi-sailfish Goto Github PK
View Code? Open in Web Editor NEWThe first and foremost IRC client for Sailfish OS
License: BSD 3-Clause "New" or "Revised" License
The first and foremost IRC client for Sailfish OS
License: BSD 3-Clause "New" or "Revised" License
The repository now lives at http://github.com/communi/libcommuni.
<Morpog_Jolla> if you use pulley menu and someone writes it closes the pulley
Add ability to autocomplete available nick names on a channel. As a bonus, let's do it in a way that the user names are sorted by last activity time, ie. if multiple nicknames are matching, the one that spoke the most recently will be suggested first.
We should provide indication for old messages that the user has already read.
The current idea (changing color to grey) might be a good direction, but it's not "there yet". Let's think of something better.
Save & restore not only connections but also buffers, but only for non-bouncer connections. Perhaps wait a sec or two after getting connected and restore buffers only if nothing happened?
Needs to indicate that the key is mandatory in this case.
Let's implement a better welcome screen for the app. The welcome screen would serve the following purpose:
Of course, these should also be reachable from the chat page, but as a start it'd be nice to have them on the welcome page.
The text input is disabled while not fully connected. If a nick is reserved while connecting (and the nick dialog is swiped away) there's no way to enter a new nick.
Not critical, but ideally "freenode" and "irc.freenode.net" wouldn't both exist in the list:
http://www.youtube.com/watch?v=VJs3599Nj20 (4:40)
I noticed that if the first connection is disabled in WelcomeDialog, the corresponding empty server buffer will be also presented after accepting the dialog. It would be better to present something from the first enabled connection. I added BufferProxyModel::model(IrcConnection*) so in QML we can use BufferModel.model(connection).get(0) to get the first buffer from a specific connection.
Text size/color will be correct, and it will scroll when using the pulley.
ListItem::remorseAction()
https://sailfishos.org/sailfish-silica/qml-sailfishsilica-listitem.html#remorseAction-method
Depending on the ambience color, the contrast of Theme.highlightColor might not be ideal. Theme.primaryColor would be a better choice.
Ampersand etc. are causing problems. "textFormat: Text.RichText" for the Label delegate might fix it.
Somewhat related to #33, it would be nice for the client to recognize common quit messages and reformat the notices accordingly, eg.:
x has quit (Ping timeout: NNN seconds) -> x has timed out (NNNs)
x has quit (Read error: Connection reset by peer) -> x disconnected unexpectedly
x has quit (Remote host closed the connection) -> x has disconnected
Don't know about others, but those 3 would make most quit notices less noisy and fit them in a single line. Filtering out client adverts in quit and part messages would be kinda nice, but presumably controversial.
A dialog is needed for changing the nick, and entering a new nick when the initially chosen nick is reserved.
It's a bit inconvenient to remove & add a new channel in order to fix a typo. Could we make the existing channel names editable. Just click to start editing?
When you have multiple connections to the same hostname, trying to join a channel using the dialog for it will result in the first connection joining to the channel (even when you were on the second one).
Test case:
Expected result:
New connection will join the channel so there'll be two buffers
Actual result:
New connection doesn't join the channel but the UI will switch to the already joined channel.
[14:53:05] <Aard> ugh, the notification handling needs to be reworked a bit :)
[15:00:57] <jpnurmi> suggestions welcome :)
[15:01:38] <jpnurmi> is it annoying or insufficient?
[15:24:48] <Aard> jpnurmi: after opening my phone this morning I had my notification view swamped with notifications
[15:28:11] <jpnurmi> oh right, it should use the same notification item if possible
[18:01:04] <Morpog_Jolla> sidepanel pulley handles shouldn't be white, as the scroll decorator is white too. how about secondary color?
Set IrcConnection::reconnectDelay (the default value is 0 = disabled)
Instead of relying on socket timeouts (that can take very long), we should try to get internet connectivity status change notifications from the system. I'm sure SailfishOS provides something similar to org.freedesktop.NetworkManager.
We added Qt.application.active here to get highlight info banners even for the current buffer when the application is inactive.
Binding {
target: storage
property: "active"
value: Qt.application.active && page.status === PageStatus.Active
}
The undesired side-effect is that the highlight of "new/unseen" messages gets messed up when the application activity changes.
=> use ZncManager from src/shared.
When a nick name is reserved or a channel requires a password, a dialog is popped up. Those dialogs could be more descriptive and explain that another nick name is required because it was taken, or that a channel couldn't be joined because it needs a password.
The password only changes to dots once the user is done editing it.
We need to figure out how to package the app in such a way that will get it through to harbour.
Currently every nickname has the same color, which makes the channel harder to read.
What's not clear is what colors to use - because not every color might be visible on every ambience.
Visualize connection errors somehow. Perhaps a message and/or turn the connection item red?
[15:12:45] <jpnurmi> Venemo: can we please simplify the connect dialog?
[15:13:03] <jpnurmi> imo there's way too much stuff
[15:14:40] <jpnurmi> it takes quite long to glance through and grok all that
[15:18:44] <jpnurmi> compare to the settings app. all the pages are simple
[15:19:02] <jpnurmi> except the developer mode page, which we don't want to imitate :P
[15:22:05] <Venemo> jpnurmi: yes, I can do that
[15:28:26] <jpnurmi> maybe we could take the channels out completely
[15:29:04] <jpnurmi> how about showing a dialog after getting connected when there are no channels being restored?
[15:29:24] <jpnurmi> modify the existing channel dialog so that user can enter multiple channels instead of just one
[15:30:09] <jpnurmi> that would also make ConnectDialog more suitable for editing a connection
[15:30:52] <jpnurmi> we can even show the dialog meanwhile connecting, for a newly entered connection
[15:31:28] <jpnurmi> it would nicely reduce the waiting time
[15:35:18] <Venemo> okay, I'm convinced
[15:35:29] <Venemo> please create a ticket on github about it
We should log the activity in every buffer; with the following considerations:
Multiple connections to the same network can get confusing. To implement this, just set IrcConnection::displayName and it will automatically reflect in the UI and is also saved & restored. The only thing missing is an input field somewhere.
Currently it's not obvious that a long press will give a context menu, because there's no pressed effect. I think a normal list item pressed effect (ListItem::highlighted I suppose) would give a nice hint for the user.
[17:54:04] <Venemo_j> jpnurmi: hm, something about this new patch is quite fishy. it says I have 1224487 unread highlights
Utilizing the settings application currently requires installing a JSON description file to /usr/share/jolla-settings/entries, which is not allowed by Harbour. We could distribute a settings-enabled version on the openrepos, though.
A prototype: https://github.com/jpnurmi/communi-sailfish/commit/cdd18455136604cd782e17a0138e8705d5bbe1aa
Settings:
[16:54:17] <Venemo> jpnurmi: new bug I found: if you swipe away from the app while it's connecting and you receive MOTD while the app is in the background, the red glow will never turn back to non-red
The retweet icon should be replaced with something more intuitive. If there's nothing more suitable in the theme icons, can we ask a designer to draw something? Or alternatively it could be a plain unicode character: http://www.fileformat.info/info/unicode/char/21e5/index.htm
The cover page needs to be implemented. Not sure what kind of actions if any we could put there.
It would be nice if the TextFields in BufferPage and ConnectingDialog looked the same. Both are similarly located below a ListView, so they could use the same visuals.
We should not restore empty buffers for a disabled connection, until the user changes his mind and decides to connect.
[18:06:23] <Morpog_Jolla> for long conversations, there should be some top/bottom jump arrows, like in cargo dock app
[18:07:00] <Morpog_Jolla> that way you could get rid of top/bottom in pulleys
....
[18:18:20] <Morpog_Jolla> icon-l-down and up or icon-m-down and up, depends which size fits better
[12:42:01] <Venemo_j> jpnurmi, one slight thing is that it's too easy to accidentally open a panel after closing the other
[12:44:43] <jpnurmi> Venemo_j: ok, we can probably tweak that
[12:45:03] <jpnurmi> by dragging or flicking btw?
[13:10:32] <Venemo_j> well, I'm not sure what the difference is
[13:11:05] <Venemo_j> i just close the channel switcher and if I'm not careful enough the userlist appears
[13:12:12] <Venemo_j> also, I'd expect a single tap on the channel text to close the panels too
[13:12:56] <Venemo_j> also, the gesture should be disabled when done on top of the textfield
[13:15:53] <Venemo_j> IMO closing a panel and opening the other should be two separate gestures
[13:24:20] <jpnurmi> yep, i'll see what i can do to improve it
[13:29:03] <Venemo_j> also, please set a drag threshold or something
Instead of having a page for channels and a separate page for the chat, I suggest the following:
Here's an initial list of quick options that I suggest adding to a bottom pulley menu.
This way, all the relevant things that a user would do in an IRC client would be there on a single page.
Enabling landscape support:
Page::allowedOrientations: Orientation.Portrait | Orientation.Landscape
Not yet supported by the Silica components?
A very prominent feedback I used to receive for the IRC Chatter app was that users disliked the way of setting the initially joined channels. So instead of having to type them separated with commas, I'm adding a UI with a list view to set them.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.