GithubHelp home page GithubHelp logo

quasseldroid's Introduction

QuasselDroid Legacy

This is the repository for the legacy version of Quasseldroid. This version is not maintained anymore. Please open all new issues on the rewrite at https://git.kuschku.de/justJanne/QuasselDroid-ng/

Quassel is a distributed, decentralized IRC client, written using C++ and Qt. QuasselDroid is a pure-java client for the Quassel core, allowing you to connect to your Quassel core using your Android (TM) phone.

Screenshot of the main chat window in modern dark Screenshot of the main chat window in classical light

Build Requirements

It requires a recent Android SDK , and the new build system.

It uses the following extra projects (though all support libraries are included for your convenience):

Building

Building is done using gradle. Run "gradlew tasks" to see possible build tasks. Some useful tasks are assemble and installDebug

Things to Note

We finally do support encryption and compression, but the service and the fragments need to be redone properly. Also the UI should get a complete makeover, preferably at the same time as reworking it to use Material Design.

Authors

(in chronological order of appearance)

  • Frederik M. J. Vestre (freqmod)
    (Initial qdatastream deserialization attempts)
  • Martin "Java Sucks" Sandsmark (sandsmark)
    (Protocol implementation, (de)serializers, project (de)moralizer)
  • Magnus Fjell (magnuf)
    (GUI, Android stuff)
  • Ken Børge Viktil (Kenji)
    (GUI, Android stuff)
  • Janne Koschinski (justJanne)
    (GUI, Android stuff, magic-(de)serializers)

Homepage: http://github.com/sandsmark/QuasselDroid
Beta Builds: https://plus.google.com/communities/104094956084217666662

quasseldroid's People

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

quasseldroid's Issues

Doesn't remember last screen

When switching to another app and then returning to QuasselDroid by any means including notification entry, the chats list is displayed instead of last used chat/screen. This is annoying if you're watching conversation in one chat and each time you switch to QuasselDroid, you have to select it instead of just seeing what happend till last time you looked.

Creating new streams for each message we send

// See how much data we're going to send
//TODO sandsmark: there must be a better way to to this then create new streams each time....
ByteArrayOutputStream baos = new ByteArrayOutputStream();
QDataOutputStream bos = new QDataOutputStream(baos);

QMetaTypeRegistry.serialize(QMetaType.Type.QVariant, bos, data);

There must be a better way to do this then to create new streams each time we want to send a Qvariant, just to measure the size, to the core. Tried to use the same stream each time but then nothing works.

Query names aren't updated

When another user private messages the core, a query is not opened - and when the nick of an existing query is changed, the query name isn't updated on the client, potentially resulting in a duplicate query.
Coupled with the inability to manage (i.e. open/close/rename/merge) queries from the client, this is rather annoying.

P.S. it's possible to open a query with the status window, which renders the server unusable (no /whois or server notices) - perhaps that window should be restricted?

Exception during SSL connection

Trying to connect with SSL enabled results in the following:

E/AndroidRuntime(13415): FATAL EXCEPTION: Thread-10
E/AndroidRuntime(13415): java.lang.RuntimeException: com.iskrembilen.quasseldroid.io.CustomTrustManager$NewCertificateException
E/AndroidRuntime(13415): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:674)
E/AndroidRuntime(13415): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
E/AndroidRuntime(13415): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:474)
E/AndroidRuntime(13415): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328)
E/AndroidRuntime(13415): at com.iskrembilen.quasseldroid.io.CoreConnection.connect(CoreConnection.java:341)
E/AndroidRuntime(13415): at com.iskrembilen.quasseldroid.io.CoreConnection$ReadThread.run(CoreConnection.java:597)
E/AndroidRuntime(13415): Caused by: com.iskrembilen.quasseldroid.io.CustomTrustManager$NewCertificateException
E/AndroidRuntime(13415): at com.iskrembilen.quasseldroid.io.CustomTrustManager.checkServerTrusted(CustomTrustManager.java:89)
E/AndroidRuntime(13415): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:664)
E/AndroidRuntime(13415): ... 5 more

My Java knowledge is a bit rusty, and I know even less about OpenSSL, but I think the problem may be this: CustomTrustManager.checkServerTrusted is throwing a NewCertificateException, but OpenSSL isn't expecting anything other than CertificateException. I guess CoreConnection tries to catch it later, but since it was wrapped in a RuntimeException, the catch block doesn't fire(?).

Scrolling with dynamic backlog

When getting backlog the backend list changes, so all indexes change. Need to do something to make the list not scroll when adding stuff above the current loction in the list. Not so easy

Crash when login on Xoom, Android 3.0

I am trying to connect to my core and it crash as soon as I press login on my android 3.0 Zoom tablet. It works on my Nexus One phone perfectly tho

Crash

Hi,

I just updated to the new version, and it crashes direct after connecting.
Please help!

Permanent notification icon

QuasselDroid shows the connection status in notification area. But if I clear the notification area, Quassel icon dissapears, and I don't know what is the actual connection state until it (dis)connects again.

Skype, for example, remains in notification area, even if I clear it...

Delete core behaves in an unexpected way

When one chooses the Menu -> Manage cores menu, one could reasonably expect Edit core and Delete core to behave the same way, either to ask for the core or assume the selected one. Now Edit core asks for the core to be edited and Delete core deletes the selected one.

Minor detail, but something to make it userfriendlier. (I just lost part of my configurations because of this)

Connecting core too slow?

I have a core running craploads of IRC buffers. Looks like QuasselDroid (emulator) fails to get all the init data from the core, even after hard trying:

03-14 23:38:38.910: INFO/CoreConnection(411): Package reviced, reseting countdown
03-14 23:38:38.910: ERROR/CoreConnService(411): Getting message buffer already have
03-14 23:38:38.920: WARN/System.err(411): Slow parsing (2ms)!: Request type: Sync Class name:BacklogManager
03-14 23:38:38.950: INFO/System.out(411): Slow core is slow: 31ms
03-14 23:38:38.950: INFO/CoreConnection(411): Package reviced, reseting countdown
03-14 23:38:38.960: ERROR/CoreConnService(411): Getting message buffer already have
03-14 23:38:38.970: WARN/System.err(411): Slow parsing (10ms)!: Request type: Sync Class name:BacklogManager
03-14 23:38:39.010: INFO/System.out(411): Slow core is slow: 28ms
03-14 23:38:39.010: INFO/CoreConnection(411): Package reviced, reseting countdown
03-14 23:38:39.020: ERROR/CoreConnService(411): Getting message buffer already have
03-14 23:38:39.020: WARN/System.err(411): Slow parsing (6ms)!: Request type: Sync Class name:BacklogManager
03-14 23:38:39.060: INFO/System.out(411): Slow core is slow: 36ms
03-14 23:38:39.060: INFO/CoreConnection(411): Package reviced, reseting countdown
03-14 23:38:39.060: ERROR/CoreConnService(411): Getting message buffer already have
03-14 23:38:39.070: WARN/System.err(411): Slow parsing (5ms)!: Request type: Sync Class name:BacklogManager
03-14 23:38:39.100: INFO/System.out(411): Slow core is slow: 32ms
03-14 23:38:39.110: INFO/CoreConnection(411): Package reviced, reseting countdown
03-14 23:38:39.120: ERROR/CoreConnService(411): Getting message buffer already have
03-14 23:38:39.120: WARN/System.err(411): Slow parsing (5ms)!: Request type: Sync Class name:BacklogManager
03-14 23:38:39.160: INFO/System.out(411): Slow core is slow: 35ms
03-14 23:38:39.160: INFO/CoreConnection(411): Package reviced, reseting countdown
03-14 23:38:39.170: ERROR/CoreConnService(411): Getting message buffer already have
03-14 23:38:39.170: WARN/System.err(411): Slow parsing (5ms)!: Request type: Sync Class name:BacklogManager
03-14 23:38:40.140: DEBUG/dalvikvm(411): GC freed 9135 objects / 477720 bytes in 74ms
03-14 23:38:41.880: DEBUG/dalvikvm(411): GC freed 7266 objects / 398368 bytes in 113ms
03-14 23:38:43.880: DEBUG/dalvikvm(411): GC freed 7238 objects / 397864 bytes in 137ms
03-14 23:38:45.640: DEBUG/dalvikvm(411): GC freed 7226 objects / 397704 bytes in 84ms
03-14 23:38:47.170: DEBUG/dalvikvm(411): GC freed 7243 objects / 397904 bytes in 82ms
03-14 23:38:48.790: DEBUG/dalvikvm(411): GC freed 7257 objects / 398144 bytes in 84ms
03-14 23:38:50.450: DEBUG/dalvikvm(411): GC freed 7253 objects / 398368 bytes in 87ms
03-14 23:38:52.101: DEBUG/dalvikvm(411): GC freed 7729 objects / 424576 bytes in 93ms
03-14 23:38:54.610: DEBUG/dalvikvm(411): GC freed 8371 objects / 458512 bytes in 138ms
03-14 23:38:56.750: DEBUG/dalvikvm(411): GC freed 9028 objects / 494912 bytes in 104ms
03-14 23:38:59.160: DEBUG/dalvikvm(411): GC freed 9825 objects / 537120 bytes in 116ms
03-14 23:39:01.440: DEBUG/dalvikvm(411): GC freed 10463 objects / 576432 bytes in 151ms
03-14 23:39:03.760: DEBUG/dalvikvm(411): GC freed 11389 objects / 624912 bytes in 126ms
03-14 23:39:06.630: DEBUG/dalvikvm(411): GC freed 12270 objects / 675016 bytes in 123ms
03-14 23:39:09.170: INFO/CoreConnection(411): Timer finished, disconnection from core
03-14 23:39:09.190: WARN/System.err(411): IO error!
03-14 23:39:09.190: WARN/System.err(411): java.net.SocketException: Bad socket
03-14 23:39:09.200: WARN/System.err(411):     at org.apache.harmony.luni.platform.OSNetworkSystem.receiveStreamImpl(Native Method)
03-14 23:39:09.250: WARN/System.err(411):     at org.apache.harmony.luni.platform.OSNetworkSystem.receiveStream(OSNetworkSystem.java:478)
03-14 23:39:09.250: WARN/System.err(411):     at org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:565)
03-14 23:39:09.250: WARN/System.err(411):     at org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:87)
03-14 23:39:09.250: WARN/System.err(411):     at java.io.DataInputStream.readToBuff(DataInputStream.java:157)
03-14 23:39:09.250: WARN/System.err(411):     at java.io.DataInputStream.readInt(DataInputStream.java:285)
03-14 23:39:09.250: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QInteger.unserialize(QInteger.java:24)
03-14 23:39:09.260: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QInteger.unserialize(QInteger.java:1)
03-14 23:39:09.270: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:180)
03-14 23:39:09.270: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:1)
03-14 23:39:09.282: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QMap.unserialize(QMap.java:48)
03-14 23:39:09.320: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QMap.unserialize(QMap.java:1)
03-14 23:39:09.330: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:180)
03-14 23:39:09.330: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:1)
03-14 23:39:09.330: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QMap.unserialize(QMap.java:48)
03-14 23:39:09.330: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QMap.unserialize(QMap.java:1)
03-14 23:39:09.330: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:180)
03-14 23:39:09.340: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:1)
03-14 23:39:09.351: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QMap.unserialize(QMap.java:48)
03-14 23:39:09.351: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QMap.unserialize(QMap.java:1)
03-14 23:39:09.360: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:180)
03-14 23:39:09.390: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:1)
03-14 23:39:09.410: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QMap.unserialize(QMap.java:48)
03-14 23:39:09.410: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QMap.unserialize(QMap.java:1)
03-14 23:39:09.420: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:180)
03-14 23:39:09.430: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:1)
03-14 23:39:09.440: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QList.unserialize(QList.java:36)
03-14 23:39:09.440: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.serializers.QList.unserialize(QList.java:1)
03-14 23:39:09.440: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:180)
03-14 23:39:09.460: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QVariant$QVariantSerializer.unserialize(QVariant.java:1)
03-14 23:39:09.470: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QMetaTypeRegistry.unserialize(QMetaTypeRegistry.java:172)
03-14 23:39:09.470: WARN/System.err(411):     at com.lekebilen.quasseldroid.qtcomm.QMetaTypeRegistry.unserialize(QMetaTypeRegistry.java:175)
03-14 23:39:09.480: WARN/System.err(411):     at com.lekebilen.quasseldroid.CoreConnection.readQVariantList(CoreConnection.java:805)
03-14 23:39:09.500: WARN/System.err(411):     at com.lekebilen.quasseldroid.CoreConnection.access$2(CoreConnection.java:803)
03-14 23:39:09.500: WARN/System.err(411):     at com.lekebilen.quasseldroid.CoreConnection$ReadThread.run(CoreConnection.java:463)

I assume it tries to load backbuffers and finally gives up after timeoutting?

Color parsing

the string
DEBUGSHIT1(18545): String: �libuv: �03Ben Noordhuis �07master * r�765b6a2 �10/ src/uv-unix.c �: uv-unix: bug fix, increment check_init counter. - http://bit.ly/oWyUKs | newString �libuv: Ben Noordhuis master * r�765b6a2 �10/ src/uv-unix.c �: uv-unix: bug fix, increment check_init counter. - http://bit.ly/oWyUKs | start 45 | end 48

does not parse correctly with colors on the phone. fix plx

(edit issue, and copy string and paste it in a channel to test)

Add support for C2DM and transparent connections

Keeping a socket and service around all the time drains the battery and shouldn't really be necessary. It would be nice to add C2DM support for getting notifications from the server (Quassel support for C2DM would be required, of course) and to add a system to automatically connect to the server only when the app is visible.

Parse out and make URLs clickable

In the main Quassel client (and every other IRC client I've ever used), strings that match a URI pattern are hyperlinked so you can open them with a click. We should do this too.

Nullpointer on orientation change with dialog open

Steps to reproduce:

  • open ChatActivity
  • press menu button
  • select "Hide events"
  • rotate screen

in onCreateDialog when the activity reloads, it looks like adapter.buffer is accessed but buffer is not filled yet.

nick changing bugs

Your nick is oldnick. When you write /nick newnick , you get a notification: "newnick is now known as newnick"
And then someone says "newnick" you won't get highlight, but if somebody says "oldnick" you get a highlight and a notification for your old nick.

Network state

Need to make some network state object that can notify different parts of the app when we are state change, like connecting, disconnected etc. This is the fix for the login problem if you write wrong passord/username

CoreConService doesn't stops when exiting

It seems that the CoreConService still remains active in background after exiting QuasselDroid, and synchronizes in background with the core until QuasselDroid is force stopped.

It can generate a huge traffic in mobile networks :}}

"Back" button from buffer-list returns to login screen, even when connected

If, on the buffer list activity, you press the phone's "back" button, you're returned to the login screen, even though you're already connected. Similarly, if you launch the app from the launcher or homescreen (instead of the notification bar) when it's already connected, you're presented with just the login screen instead of the buffer list.

I fixed this in my fork, but I think I messed up somewhere along the line, so any pull request I try to make seems to have github asking you to pull in 36 of my commits, which is just crazy (some are probably useful features, but I'm not satisfied that many are stable enough to be pulled into the main project just yet...).

Anyway, my fix is here: aziraphale@9dd257e

Very simple fix to a very annoying bug :)

Missing license information.

Whats the license of quasseldroid? It would be nice, if you could provide a COPYING file (or something similar) with it in the source.

Make theming available

I would ideally like theming via the qss files used for normal quassel (so I can drop my dark theme in), however, I can write another theme if needed/another scheme is provided.

Non-clean disconnect/exit

Issue:

Based on the version currently available on Google Play (https://play.google.com/store/apps/details?id=com.iskrembilen.quasseldroid), upon disconnect, Quassel remains in the notification bar as disconnected.

This is useful if the user wants to continue using and has experienced an unintended disconnect, but not useful if somebody has invoked the disconnect themselves. When navigating away from the Quassel intent(s), the notification of being disconnected remains in the notification bar; it's a little irritating and also makes me concerned about whether a wake-lock is still locked.

To get round the problem, I currently have to force stop the Quassel app.

Desired result:

No disconnection notification altogether, OR

A disconnection notification when a disconnection has been experienced outside of user invocation. Such a notification should be able to be cleared and not remain resident along with the process.

A menu option to exit the Quassel app would also be nice.

Computer names in local network do not work (for core)

When trying to connect to a core in the local network, one has to use the IP (instead of just the computer's name like in the PC Quassel).

Definately not a big issue, but the names are a lot userfriendlier than IPs.

Highlighting/notifying on punctuation rather than nick

I've just uninstalled a rather old brot build and now have the beta from the marketplace, on my HTC Desire/HTC 2.2

The old version highlighted (turned orange) correctly, I.e. anything with my nick in the text.

However now my nick is no longer triggering this, and instead anything and everything with any form of punctuation in it is turning orange instead. This is also making the nice new red notification icon get quite busy!

Timestamp format

To be more readable, add a leading zero for hours/mins/secs smaller then 10..
Eg:

Now: 16:9:7 ...
To be: 16:09:07 ...

Never ending list of color parsing Bugs

Some stacktraces from bugs in v0.4.5:

java.lang.StringIndexOutOfBoundsException
at com.iskrembilen.quasseldroid.service.CoreConnService.parseColorCodes(CoreConnService.java:626)
at com.iskrembilen.quasseldroid.service.CoreConnService$IncomingHandler.handleMessage(CoreConnService.java:295)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3837)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)

java.lang.StringIndexOutOfBoundsException
at com.iskrembilen.quasseldroid.service.CoreConnService.parseColorCodes(CoreConnService.java:622)
at com.iskrembilen.quasseldroid.service.CoreConnService$IncomingHandler.handleMessage(CoreConnService.java:320)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4196)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)

java.lang.IndexOutOfBoundsException: replace (80 ... 81) ends beyond length 80
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1062)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:283)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:278)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:441)
at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:227)
at com.iskrembilen.quasseldroid.service.CoreConnService.parseStyleCodes(CoreConnService.java:576)
at com.iskrembilen.quasseldroid.service.CoreConnService$IncomingHandler.handleMessage(CoreConnService.java:296)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3652)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
at dalvik.system.NativeStart.main(Native Method)

java.lang.IndexOutOfBoundsException: replace (93 ... 94) ends beyond length 93
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:967)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:274)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:218)
at com.iskrembilen.quasseldroid.service.CoreConnService.parseStyleCodes(CoreConnService.java:576)
at com.iskrembilen.quasseldroid.service.CoreConnService$IncomingHandler.handleMessage(CoreConnService.java:296)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)

Colour Parsing Ignores "Reset" Code (and other formatting bugs)

The mIRC colour parsing currently ignores the "reset" code (^O / ASCII decimal 15 / hex 0x0F), so formatting proceeds until the end of the message instead of resetting to the default format, and the "reset" character is displayed as an "invalid glyph" type "box" instead of being stripped out.


A related issue is that the style formatting doesn't work properly when there are multiple of the same type of formatting in a single message and "reset" codes are used to turn off those styles.

For example, (using [B] and [O] in place of the mIRC control codes for bold and reset):
[B]foo[O] bar [B]baz[O] qux

will be displayed as:
foo[] bar baz[] qux

instead of the expected:
foo bar baz qux


And finally, using two identical control characters next to each other (e.g. "F[B][B]oo") - which is a trick that I use with an IRC bot to prevent it highlighting people in certain circumstances - seems to result in the message being given that format until the line wraps. Compare these two screenshots of this same message:
[B]Bold[O] Normal [B]B[B][B]old[O]: A whole bunch of normal text. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

being displayed with the phone in different orientations:
Imgur

Backlog requesting

We request backlog every time you open the activity, should only request at start of application and then continuously update the buffers

Crash on connect since 0.5.0

I have the latest 0.5.3 from the market installed, I'm getting a crash (force close) instantly after connecting every time. I've attached a logcat below, hopefully it will point out what the problem is. This logcat is from an Acer Iconia Tab A500 with Android 3.1, however I get a crash at exactly the same point on my T-Mobile G2 with Android 2.3. I see 'thread exiting with uncaught exception' however I don't see the exception itself in the log? I got this from the alogcat app, let me know if there's anything I can do to give more useful info. Thanks.

I/PowerManagerService(  132): WakeLock: *vibrator*(PARTIAL_WAKE_LOCK             ) is acquired by pid(132), uid(1000)
I/PowerManagerService(  132): WakeLock: *vibrator*(PARTIAL_WAKE_LOCK             ) is released by pid(132), uid(1000)
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is acquired by pid(132), uid(1000)
V/alogcat ( 9200): save instance
V/alogcat ( 9200): paused
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is released by pid(132), uid(1000)
D/alogcat ( 9200): stopping ...
D/alogcat ( 9200): stopped
D/FutureDial( 9183): Server Interval from file:43200000
D/FutureDial( 9183): Server Interval after change:43200000
W/FutureDial( 9183): Schedule checkin
D/FutureDial( 9183): server check in interval: 43200000
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is acquired by pid(132), uid(1000)
I/LoginActivity( 9221): Create
D/dalvikvm( 9221): GC_FOR_ALLOC freed 36K, 5% free 6321K/6595K, paused 27ms
I/dalvikvm-heap( 9221): Grow heap (frag case) to 6.755MB for 513744-byte allocation
D/dalvikvm( 9221): GC_CONCURRENT freed 0K, 5% free 6822K/7111K, paused 2ms+2ms
I/LoginActivity( 9221): Binding Service
V/TLINE   ( 9221): new: android.text.TextLine@40861f98
I/LoginActivity( 9221): BINDING ON SERVICE DONE
V/TLINE   ( 9221): new: android.text.TextLine@408769a8
I/ActivityManager(  132): Displayed com.iskrembilen.quasseldroid/.gui.LoginActivity: +834ms
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is released by pid(132), uid(1000)
I/PowerManagerService(  132): WakeLock: KEEP_SCREEN_ON_FLAG(SCREEN_BRIGHT_WAKE_LOCK       ) is released by pid(132), uid(1000)
D/dalvikvm( 9221): GC_CONCURRENT freed 126K, 4% free 7090K/7367K, paused 1ms+2ms
I/CoreConnService( 9221): Connecting to core: davr.org:4242 with username davr
I/System.out( 9221): CORE INFO:
I/System.out( 9221): 0.6.3
W/System.err( 9221): SSL DISABLED!
D/dalvikvm( 9221): GC_CONCURRENT freed 391K, 7% free 7259K/7751K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 403K, 8% free 7273K/7879K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 456K, 9% free 7282K/7943K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 434K, 9% free 7280K/7943K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 418K, 9% free 7284K/7943K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 405K, 9% free 7263K/7943K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 404K, 9% free 7292K/7943K, paused 1ms+0ms
D/dalvikvm( 9221): GC_CONCURRENT freed 393K, 9% free 7284K/7943K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 388K, 9% free 7298K/7943K, paused 2ms+0ms
D/dalvikvm( 9221): GC_FOR_ALLOC freed 396K, 9% free 7275K/7943K, paused 11ms
D/dalvikvm( 9221): GC_CONCURRENT freed 369K, 9% free 7290K/7943K, paused 1ms+1ms
D/dalvikvm( 9221): GC_FOR_ALLOC freed 386K, 9% free 7278K/7943K, paused 11ms
D/dalvikvm( 9221): GC_CONCURRENT freed 386K, 9% free 7281K/7943K, paused 1ms+1ms
I/System.out( 9221): {CoreFeatures=3, Identities=( Identity{quitReason=., identityId=IdentityId1, partReason=., autoAwayReason=Not here. No, really. not here!, nicks=/StringList [ [davr] ]/, autoAwayEnabled=true, autoAwayTime=10, detachAwayEnabled=false, autoAwayReasonEnabled=false, detachAwayReason=, awayReason=away, detachAwayReasonEnabled=true, ident=davr, awayReasonEnabled=true, identityName=Default Identity, realName=davr, kickReason=o.o, awayNick=, awayNickEnabled=true},  ), BufferInfos=( BufferInfo#quassel1[ChannelBuffer], BufferInfo2[StatusBuffer], BufferInfo3[StatusBuffer], BufferInfo4[StatusBuffer], BufferInfosausage.tx.us.blitzed.org6[QueryBuffer], BufferInfo#guaranteedvps8[ChannelBuffer], BufferInfo#erlang9[ChannelBuffer], BufferInfo#hwdev10[ChannelBuffer], BufferInfo#pdroms11[ChannelBuffer], BufferInfo#avr12[ChannelBuffer], BufferInfo#cyanogenmod-offtopic13[ChannelBuffer], BufferInfo#leafblowers14[ChannelBuffer], BufferInfo#noisebridge15[ChannelBuffer], BufferInfo#sparkfun16[ChannelBuffer], BufferInfo#cyanogenmod17[ChannelBuffer], BufferInfo#sparkfun-discuss21[ChannelBuffer], BufferInfo#git25[ChannelBuffer], BufferInfo27[StatusBuffer], BufferInfoGlobal28[QueryBuffer], BufferInfo#babarshouse29[ChannelBuffer], BufferInfoWinterMute38[QueryBuffer], BufferInfoChanServ39[QueryBuffer], BufferInfo#drunkencoders40[ChannelBuffer], BufferInfoKraln107[QueryBuffer], BufferInfocookies.on.ca.blitzed.org114[QueryBuffer], BufferInfoirc.choopa.ca115[QueryBuffer], BufferInfofarmer.freenode.net151[QueryBuffer], BufferInfokornbluth.freenode.net153[QueryBuffer], BufferInfo#kmymoney159[ChannelBuffer], BufferInfoChanServ160[QueryBuffer], BufferInfoNickServ161[QueryBuffer], BufferInfoo.o162[QueryBuffer], BufferInfoBigRedPimp165[QueryBuffer], BufferInfo#wiidev168[ChannelBuffer], BufferInfobarjavel.freenode.net169[QueryBuffer], BufferInfo#mjerlang171[ChannelBuffer], BufferInfoNickServ173[QueryBuffer], BufferInfoMartinp23174[QueryBuffer], BufferInfocard.freenode.net175[QueryBuffer], BufferInfo#edev176[ChannelBuffer], BufferInfo#Didj177[ChannelBuffer], BufferInfo#learnsql178[ChannelBuffer], BufferInfoMachinShin_AFK179[QueryBuffer], BufferInfoirc.wh.verio.net182[QueryBuffer], BufferInfo#eastbayhackers188[ChannelBuffer], BufferInfoLexisDad189[QueryBuffer], BufferInfoballard2190[QueryBuffer], BufferInfoLaQuatal191[QueryBuffer], BufferInfo#acemonstertoys192[ChannelBuffer], BufferInfoSSilver2k2|Work193[QueryBuffer], BufferInfodavr`194[QueryBuffer], BufferInfo#apacheant196[ChannelBuffer], BufferInfoturkshead197[QueryBuffer], BufferInfo#gnucash198[ChannelBuffer], BufferInfo199[StatusBuffer], BufferInfo#gnucash200[ChannelBuffer], BufferInfoleks201[QueryBuffer], BufferInfodr_jesus202[QueryBuffer], BufferInfo#irp205[ChannelBuffer], BufferInfoDesktopMa207[QueryBuffer], BufferInfoemp-rameen208[QueryBuffer], BufferInfoaestetix209[QueryBuffer], BufferInfoEvilShiny210[QueryBuffer], BufferInfo#lightspark216[ChannelBuffer], BufferInfo217[StatusBuffer], BufferInfo&bitlbee218[ChannelBuffer], BufferInfoNickServ219[QueryBuffer], BufferInfo220[StatusBuffer], BufferInfo#bitlbee221[ChannelBuffer], BufferInfoMichaelBautista224[QueryBuffer], BufferInfoaardvark226[QueryBuffer], BufferInfoaolsystemmsg227[QueryBuffer], BufferInfo231[StatusBuffer], BufferInfo-psyBNC232[QueryBuffer], BufferInfo#guaranteedvps233[ChannelBuffer], BufferInfo#erlang234[ChannelBuffer], BufferInfo#e'#hwdev235[ChannelBuffer], BufferInfo#e'#pdroms236[ChannelBuffer], BufferInfo#f'#sparkfun237[ChannelBuffer], BufferInfo#f'#noisebridge238[ChannelBuffer], BufferInfo#f'#leafblowers239[ChannelBuffer], BufferInfo#f'#avr240[ChannelBuffer], BufferInfo#f'#Cyanogenmod241[ChannelBuffer], BufferInfo#f'#acemonstertoys242[ChannelBuffer], BufferInfof'DrShiny245[QueryBuffer], BufferInfo#f'#necessarymotto246[ChannelBuffer], BufferInfo#f'#git249[ChannelBuffer], BufferInfoGuest824250[QueryBuffer], BufferInfoKelvin253[QueryBuffer], BufferInfowb254[QueryBuffer], BufferInfoPhilRorex_255[QueryBuffer], BufferInfof'robbiet480|iph-1258[QueryBuffer], BufferInfof'dr_jesus259[QueryBuffer], BufferInfo&offline26
D/dalvikvm( 9221): GC_CONCURRENT freed 241K, 7% free 7443K/7943K, paused 1ms+2ms
D/dalvikvm( 9221): GC_CONCURRENT freed 373K, 7% free 7498K/8007K, paused 1ms+2ms
D/dalvikvm( 9221): GC_CONCURRENT freed 408K, 7% free 7525K/8071K, paused 1ms+2ms
D/dalvikvm( 9221): GC_CONCURRENT freed 521K, 8% free 7433K/8071K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 503K, 9% free 7357K/8071K, paused 1ms+2ms
I/CoreConnection( 9221): Connected!
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is acquired by pid(132), uid(1000)
I/BufferActivity( 9221): BINDING
I/BufferActivity( 9221): BINDING ON SERVICE DONE
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is released by pid(132), uid(1000)
D/dalvikvm( 9221): GC_CONCURRENT freed 343K, 8% free 7430K/8071K, paused 2ms+2ms
I/ActivityManager(  132): Displayed com.iskrembilen.quasseldroid/.gui.BufferActivity: +381ms
I/LoginActivity( 9221): Unbinding service
D/dalvikvm( 9221): GC_CONCURRENT freed 73K, 3% free 7854K/8071K, paused 3ms+2ms
I/CoreConnection( 9221): Started parsing network Freenode
I/CoreConnection( 9221): Sending network Freenode to service
W/CoreConnection( 9221): Network parsed, took: 587
I/CoreConnection( 9221): Started parsing network EFnet
I/CoreConnection( 9221): Sending network EFnet to service
W/CoreConnection( 9221): Network parsed, took: 728
D/dalvikvm( 9221): GC_CONCURRENT freed 886K, 13% free 7435K/8455K, paused 1ms+2ms
I/CoreConnection( 9221): Started parsing network Blitz
I/CoreConnection( 9221): Sending network Blitz to service
W/CoreConnection( 9221): Network parsed, took: 811
I/CoreConnection( 9221): Started parsing network psigenix
I/CoreConnection( 9221): Sending network psigenix to service
W/CoreConnection( 9221): Network parsed, took: 816
I/CoreConnection( 9221): Started parsing network Gnome
I/CoreConnection( 9221): Sending network Gnome to service
W/CoreConnection( 9221): Network parsed, took: 822
D/dalvikvm( 9221): GC_CONCURRENT freed 193K, 10% free 7659K/8455K, paused 1ms+1ms
I/CoreConnection( 9221): Started parsing network IM
I/CoreConnection( 9221): Sending network IM to service
W/CoreConnection( 9221): Network parsed, took: 1073
I/CoreConnection( 9221): Started parsing network OFTC
I/CoreConnection( 9221): Sending network OFTC to service
W/CoreConnection( 9221): Network parsed, took: 1079
I/CoreConnection( 9221): Started parsing network bnc
I/CoreConnection( 9221): Sending network bnc to service
W/CoreConnection( 9221): Network parsed, took: 1084
I/CoreConnection( 9221): Started parsing network Esper
I/CoreConnection( 9221): Sending network Esper to service
W/CoreConnection( 9221): Network parsed, took: 1088
E/CoreConnService( 9221): Getting set last seen message on unknown buffer: 4
D/dalvikvm( 9221): GC_CONCURRENT freed 502K, 11% free 7577K/8455K, paused 1ms+1ms
E/CoreConnService( 9221): Getting set marker line message on unknown buffer: 4
E/CoreConnection( 9221): TempList, dont't have buffer: 257
E/CoreConnection( 9221): TempList, dont't have buffer: 273
E/CoreConnection( 9221): TempList, dont't have buffer: 275
E/CoreConnection( 9221): TempList, dont't have buffer: 19
E/CoreConnection( 9221): TempList, dont't have buffer: 20
E/CoreConnection( 9221): TempList, dont't have buffer: 22
E/CoreConnection( 9221): TempList, dont't have buffer: 23
E/CoreConnection( 9221): TempList, dont't have buffer: 291
E/CoreConnection( 9221): TempList, dont't have buffer: 292
E/CoreConnection( 9221): TempList, dont't have buffer: 35
E/CoreConnection( 9221): TempList, dont't have buffer: 37
E/CoreConnection( 9221): TempList, dont't have buffer: 302
E/CoreConnection( 9221): TempList, dont't have buffer: 303
E/CoreConnection( 9221): TempList, dont't have buffer: 320
E/CoreConnection( 9221): TempList, dont't have buffer: 324
E/CoreConnection( 9221): TempList, dont't have buffer: 331
E/CoreConnection( 9221): TempList, dont't have buffer: 79
E/CoreConnection( 9221): TempList, dont't have buffer: 80
E/CoreConnection( 9221): TempList, dont't have buffer: 81
E/CoreConnection( 9221): TempList, dont't have buffer: 82
E/CoreConnection( 9221): TempList, dont't have buffer: 83
E/CoreConnection( 9221): TempList, dont't have buffer: 84
E/CoreConnection( 9221): TempList, dont't have buffer: 85
E/CoreConnection( 9221): TempList, dont't have buffer: 86
E/CoreConnection( 9221): TempList, dont't have buffer: 87
E/CoreConnection( 9221): TempList, dont't have buffer: 88
E/CoreConnection( 9221): TempList, dont't have buffer: 89
E/CoreConnection( 9221): TempList, dont't have buffer: 90
E/CoreConnection( 9221): TempList, dont't have buffer: 91
E/CoreConnection( 9221): TempList, dont't have buffer: 92
E/CoreConnection( 9221): TempList, dont't have buffer: 93
E/CoreConnection( 9221): TempList, dont't have buffer: 94
E/CoreConnection( 9221): TempList, dont't have buffer: 95
E/CoreConnection( 9221): TempList, dont't have buffer: 96
E/CoreConnection( 9221): TempList, dont't have buffer: 97
E/CoreConnection( 9221): TempList, dont't have buffer: 98
E/CoreConnection( 9221): TempList, dont't have buffer: 99
E/CoreConnection( 9221): TempList, dont't have buffer: 100
E/CoreConnection( 9221): TempList, dont't have buffer: 101
E/CoreConnection( 9221): TempList, dont't have buffer: 102
E/CoreConnection( 9221): TempList, dont't have buffer: 103
E/CoreConnection( 9221): TempList, dont't have buffer: 104
E/CoreConnection( 9221): TempList, dont't have buffer: 105
E/CoreConnection( 9221): TempList, dont't have buffer: 106
E/CoreConnection( 9221): TempList, dont't have buffer: 141
E/CoreConnection( 9221): TempList, dont't have buffer: 152
E/CoreConnection( 9221): TempList, dont't have buffer: 154
E/CoreConnection( 9221): TempList, dont't have buffer: 158
E/CoreConnection( 9221): TempList, dont't have buffer: 172
E/CoreConnection( 9221): TempList, dont't have buffer: 180
E/CoreConnection( 9221): TempList, dont't have buffer: 181
E/CoreConnection( 9221): TempList, dont't have buffer: 183
E/CoreConnection( 9221): TempList, dont't have buffer: 184
E/CoreConnection( 9221): TempList, dont't have buffer: 206
E/CoreConnection( 9221): TempList, dont't have buffer: 230
E/CoreConnection( 9221): TempList, dont't have buffer: 244
E/CoreConnection( 9221): TempList, dont't have buffer: 247
E/CoreConnection( 9221): TempList, dont't have buffer: 41
E/CoreConnection( 9221): TempList, dont't have buffer: 42
E/CoreConnection( 9221): TempList, dont't have buffer: 264
E/CoreConnection( 9221): TempList, dont't have buffer: 31
W/System.err( 9221): got buffer info for non-existant buffer id: 318
W/System.err( 9221): got buffer info for non-existant buffer id: 325
W/System.err( 9221): got buffer info for non-existant buffer id: 338
W/System.err( 9221): got buffer info for non-existant buffer id: 353
W/System.err( 9221): got buffer info for non-existant buffer id: 404
W/System.err( 9221): got buffer info for non-existant buffer id: 287
W/System.err( 9221): got buffer info for non-existant buffer id: 294
W/System.err( 9221): got buffer info for non-existant buffer id: 293
W/System.err( 9221): got buffer info for non-existant buffer id: 314
W/System.err( 9221): got buffer info for non-existant buffer id: 290
W/System.err( 9221): got buffer info for non-existant buffer id: 356
W/System.err( 9221): got buffer info for non-existant buffer id: 357
W/System.err( 9221): got buffer info for non-existant buffer id: 317
W/System.err( 9221): got buffer info for non-existant buffer id: 342
W/System.err( 9221): got buffer info for non-existant buffer id: 419
W/System.err( 9221): got buffer info for non-existant buffer id: 345
W/System.err( 9221): got buffer info for non-existant buffer id: 310
W/System.err( 9221): got buffer info for non-existant buffer id: 301
W/System.err( 9221): got buffer info for non-existant buffer id: 339
W/System.err( 9221): got buffer info for non-existant buffer id: 300
W/System.err( 9221): got buffer info for non-existant buffer id: 327
W/System.err( 9221): got buffer info for non-existant buffer id: 261
W/System.err( 9221): got buffer info for non-existant buffer id: 392
W/System.err( 9221): got buffer info for non-existant buffer id: 400
W/System.err( 9221): got buffer info for non-existant buffer id: 415
W/System.err( 9221): got buffer info for non-existant buffer id: 421
W/System.err( 9221): got buffer info for non-existant buffer id: 422
W/System.err( 9221): got buffer info for non-existant buffer id: 395
W/System.err( 9221): got buffer info for non-existant buffer id: 223
W/System.err( 9221): got buffer info for non-existant buffer id: 384
W/System.err( 9221): got buffer info for non-existant buffer id: 371
W/System.err( 9221): got buffer info for non-existant buffer id: 308
W/System.err( 9221): got buffer info for non-existant buffer id: 374
W/System.err( 9221): got buffer info for non-existant buffer id: 375
W/System.err( 9221): got buffer info for non-existant buffer id: 377
W/System.err( 9221): got buffer info for non-existant buffer id: 295
W/System.err( 9221): got buffer info for non-existant buffer id: 252
W/System.err( 9221): got buffer info for non-existant buffer id: 225
W/System.err( 9221): got buffer info for non-existant buffer id: 426
W/System.err( 9221): got buffer info for non-existant buffer id: 296
W/System.err( 9221): got buffer info for non-existant buffer id: 337
W/System.err( 9221): got buffer info for non-existant buffer id: 355
W/System.err( 9221): got buffer info for non-existant buffer id: 354
W/System.err( 9221): got buffer info for non-existant buffer id: 316
W/System.err( 9221): got buffer info for non-existant buffer id: 334
W/System.err( 9221): got buffer info for non-existant buffer id: 279
W/System.err( 9221): got buffer info for non-existant buffer id: 363
W/System.err( 9221): got buffer info for non-existant buffer id: 323
W/System.err( 9221): got buffer info for non-existant buffer id: 248
W/System.err( 9221): got buffer info for non-existant buffer id: 373
W/System.err( 9221): got buffer info for non-existant buffer id: 403
W/System.err( 9221): got buffer info for non-existant buffer id: 229
W/System.err( 9221): got buffer info for non-existant buffer id: 367
W/System.err( 9221): got buffer info for non-existant buffer id: 372
W/System.err( 9221): got buffer info for non-existant buffer id: 410
D/Buffer  ( 9221): Order psigenix : 0
D/Buffer  ( 9221): Order Freenode : 1
D/Buffer  ( 9221): Order EFnet : 2
D/AndroidRuntime( 9221): Shutting down VM
W/dalvikvm( 9221): threadid=1: thread exiting with uncaught exception (group=0x4016e760)
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is acquired by pid(132), uid(1000)
D/dalvikvm( 9221): GC_CONCURRENT freed 397K, 11% free 7609K/8455K, paused 1ms+5ms
V/TLINE   (  132): new: android.text.TextLine@41e47180
D/dalvikvm( 9221): GC_CONCURRENT freed 154K, 8% free 7847K/8455K, paused 1ms+2ms
D/dalvikvm( 9221): GC_CONCURRENT freed 180K, 4% free 8162K/8455K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 208K, 4% free 8492K/8839K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 260K, 5% free 8908K/9287K, paused 1ms+1ms
D/dalvikvm( 9221): GC_CONCURRENT freed 310K, 5% free 9408K/9863K, paused 2ms+2ms
I/Process ( 9221): Sending signal. PID: 9221 SIG: 9
E/InputDispatcher(  132): channel '41e15718 com.iskrembilen.quasseldroid/com.iskrembilen.quasseldroid.gui.BufferActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
E/InputDispatcher(  132): channel '41e15718 com.iskrembilen.quasseldroid/com.iskrembilen.quasseldroid.gui.BufferActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is released by pid(132), uid(1000)
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is acquired by pid(132), uid(1000)
D/alogcat ( 9200): stopping ...
D/alogcat ( 9200): canceling periodic saves
D/alogcat ( 9200): starting ...
V/alogcat ( 9200): started
V/alogcat ( 9200): resumed
D/dalvikvm( 9200): GC_CONCURRENT freed 338K, 7% free 7320K/7815K, paused 1ms+2ms
I/PowerManagerService(  132): WakeLock: KEEP_SCREEN_ON_FLAG(SCREEN_BRIGHT_WAKE_LOCK       ) is acquired by pid(132), uid(1000)
I/PowerManagerService(  132): WakeLock: ActivityManager-Launch(PARTIAL_WAKE_LOCK             ) is released by pid(132), uid(1000)
I/PowerManagerService(  132): WakeLock: *vibrator*(PARTIAL_WAKE_LOCK             ) is acquired by pid(132), uid(1000)
I/PowerManagerService(  132): WakeLock: *vibrator*(PARTIAL_WAKE_LOCK             ) is released by pid(132), uid(1000)
I/PowerManagerService(  132): WakeLock: AlarmManager(PARTIAL_WAKE_LOCK             ) is acquired by pid(132), uid(1000)
I/PowerManagerService(  132): WakeLock: AlarmManager(PARTIAL_WAKE_LOCK             ) is released by pid(132), uid(1000)
I/RealTimeChat(  792): Sending ping to bunch

Different log-in data for different cores

In my cores-list there are two cores, but switching between them always requires me to remove the log-in data from the one core and replace it with the one for the other core, and switching back to the first core again requires me to enter the username and password for the first core again~

It would be great if the username and password are stored together with the core so that it automatically switches them when i choose another core :)

Crashes while connecting

QuasselDroid 0.5.9 (and few versions before) crashes here on my phone most of the time while connecting. Sometimes it works but I cannot say what's different then.

I tried several things like disabling SSL, disabling colors, etc. and nothing stopped it from crashing.

I submitted several crash reports, last one tagged with my nickname ("mittwinter on github").

If I can be of any other help in this issue, please let me know.

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.