Coder Social home page Coder Social logo

quasseldroid's Introduction

Organized list of my projects

Most of the repos that might be interesting. Not everything works or is finished.

  1. Games
  2. Game related
  3. Graphical utilities
  4. Command line utilities
  5. Machine Learning™-ish
  6. Desktop environment or whatever, stuff that makes my laptop work
  7. Multimedia-related
  8. Ancient stuff
  9. Graphics related
  10. Libraries
  11. Demoscene-ish
  12. Internet
  13. Chrome extensions
  14. KDE 1 and KDE 2
  15. Other
  16. Minor stuff

Games

  • freeaoe, age of empires II reimplementation
  • Schiffbruch, game I played when I was young. Cleaned up to build and run on Linux, translated most code from german.
  • tg18ai, planned to use it for holding the AI competition at TG18, but Windows doesn't work.
  • ghostly, compo case for the AI competition at TG17 ("inverse" Pacman™®).
  • Turn On Me, compo case for the AI competition at TG16
  • The Kartering, compo case for the AI competition at TG15, written with larsivsi while really sober.
  • dropdabass, compo case for the AI competition at TG14
  • droidbattles, programming game.
  • recrossable, crossword game with handwriting recognition and automatic crossword generation. Originally written for my reMarkable™® tablet.
  • progress-quest, c++/qt version of progress quest.
  • Awesome War Game, our first year object oriented programming project.
  • KTamaga, a Tamagotchi emulator. For KDE 1.
  • Amnesia: A Machine For Pigs, a survival horror game. Porting it to modern versions of stuff like angelscript.
  • falltergeist, opensource crossplatform Fallout 2™ game engine writen in C++ and SDL. Cleaning up.
  • kwest, interpreter for text adventures, half-way ported to Qt5
  • Goblin Camp Stone Soup, Dwarf Fortress clone, revisited. Cleaning it up.
  • Age of The Ring, some school project I found. Played around with it and fixed it up a bit.

Game related

  • Advanced Genie Editor, editor for the data files in age of empires etc. Uses genieutils, like freeaoe.
  • genieutils, used for freeaoe. Upstream thought I had changed too much, and after that I have done some heavy refactoring and cleanup. Upstream is semi-inactive.
  • BORG, automated bot launcher used for the AI competition at The Gathering (keeps tracks of scores and stuff, because I didn't want to do that manually on stage).
  • ghostlybot, simple test bot for testing the AI competition case at TG17. IIRC it uses Q-learning in some form.
  • borderlands3-save-editor, got stuck on some game-breaking bugs. I have finished the game now, so probbly won't update it any further.
  • masseffectandromeda-save-editor, very, very early WIP, doesn't work at all.
  • rengine, header(s)-only C++ scenegraph rendering graphical library thing. Used for tg18ai, so I had to add some stuff and fix some stuff.
  • OALWrapper, for Amnesia. Cleaning it up to fix build on Linux.

Graphical utilities

  • sphero-and-mousr-qt-controller, utility to control the robots my cat play with (mousr and sphero).
  • qt-scp-reader, an offline reader for the SCP wiki. Works with the data in the SCP mirrors below.
  • qbyteview, simple tool to visualize a binary (displays entropy with a fancy method I don't remember the name of).
  • epubreader, simple epub reader using qt.
  • sandsmark-screenshot, very simple screenshot utility, replacement for import png:- | xclip -selection clipboard -t image/png because xclip broke and it was easier to write this than trying to understand the xclip code.
  • homefilesharing, simple (encrypted, authenticated) sharing of files (because who the fuck wants to set up samba just to copy files with a GUI) and remote mouse control (because wtf why is Synergy so complicated).
  • paqerduty, tray application that notifies you when you're on call and an event happens.
  • martin-todo, five minute hack because there's no nice simple todo applications that aren't horribly overcomplicated or sucky.
  • martin-toldyouso, so I can keep track of every time I told people so.
  • slaq, slack sucks.
  • notifu, someone on IRC wanted a tool that loaded and displayed an URL in a popup for notifications.
  • turbo-button, simple tray application toggling between battery saving and performance CPU stuff.
  • qt-rfb-client, RFB/VNC client using Qt, ported to run on my reMarkable™.
  • pebble, breadboard layout web app. Test it at https://sandsmark.github.io/pebble/

Command line utilities

  • bincalc, simple command line calculator for easily working with bits, convert hex values to float, etc.. Useful when reverse engineering.
  • dmsdos, linux utilities to handle dos/win95 doublespace/drivespace/stacker.
  • yzis, vi implementation.
  • compouploader, automatically downloads results and entries from Unicorn (the competition org system), so they can be uploaded to scene.org.
  • dcd-extractor, a very simple tool to extract the Device Configuration Data from a uboot binary with an IMX header
  • github-mirror, a simple script to automatically mirror all your github repos
  • quasselpwdumper, dumps your quassel password from your config file. forgot my password at some point so I wrote this.
  • quassel-sqlite-merge, script to merge in an old quassel sqlite database into a postgresql database.
  • unfuckify, makes c++ code using auto readable, i. e. unfucks it. I think this is what the kids call "opinionated".
  • Vector-cmdline-tools, tools to work with the Anki Vector robot. Porting to Qt Bluetooth to make it work on Linux (and maybe Windows).
  • Steamless, SteamStub remover, command line version.

Machine Learning™-ish

  • jantu, artifical consciousness framework + Starcraft Broodwar™® = master thesis.
  • master thesis, latex source for my master thesis.
  • replicode, constructivist AI language and runtime
  • repliqode, GUI interface for replicode stuff.
  • replicodekateplugin, simple plugin for Kate to launch the replicode executive directly from it. also syntax highlighting for the replicode language.
  • Kaldi, a fork to train a norwegian speech recognition model.
  • link-grammar-norwegian, started on support for norwegian in link-grammar. too embarrassed of the actual link-grammar stuff to commit it.
  • ann, for some reason I started on implementing a library for neural nets at a hotel to fall asleep. counting sheeps didn't work.
  • decision-tree-learning, Implementation of decision-tree learning algorithms in C++ for the course TDT4171 Artificial Intelligence Methods.
  • forward-backward-inference, implementation of the forward-backward algorithm for the course TDT4171 Artificial Intelligence Methods.
  • poker-ai, a poker ai written for the course IT3105
  • caffe, fork of Caffe for some vapoursynth I think. Forked to fix compatibility with latest cudnn.
  • vision, pytorch vision module. Just fixing the libjpeg and libpng usage.
  • MLDemos, visualization tool for random ML algorithms.
  • narxsim, cleaned up some person's master thesis about NARX

Desktop environment or whatever, stuff that makes my laptop work

  • status, a thing for i3-bar. All the alternatives sucked.
  • sandsmark-notificationd, all other notification daemons suck.
  • dbus-screensaver-inhibit-dummy, dumb hack to keep steam from keeping my machine unlocked and awake forever.
  • sandsmark-integration, custom QPA for myself, based on frameworks-integration (now gone).
  • pastenotifier, pops up a tiny window when the clipboard changes. So you know what you paste before you paste the wrong thing in the wrong window.
  • polkit-dumb-agent, a polkit agent in 145 lines of code, because polkit is dumb and none of the other agents worked.
  • qiwd, GUI interface to iwd (because wpa_supplicant is old news).
  • Select Default Application, because I don't want notepad to be my default text editor, or Firefox to be my default image viewer.
  • discotiles, simple screensaver effect using QML.
  • reddit-notifier, a KDE plasmoid that shows reddit notifications from the RSS feed of notifications from your reddit account
  • kfilemon, a simple LD_PRELOADable library to hijack moves to avoid having to use inotify.
  • xdg-autostart-launcher, automatically launches all applications in the XDG autostart folders.
  • patoggler, simple thing to toggle mute in pulseaudio.

Multimedia-related

  • linux-vr-player-or-something, very simple VR video player using libmpv and openhmd. Because apparently everyone thought this was impossible to do or something?
  • pavucontrol-qt, major cleanup from upstream and a ton of bugfixes, cleanups and refactoring. Upstream didn't want my changes.
  • VapourSynth Editor, editor for vapoursynth scripts. Forked it because upstream seemed dead, and I wanted some features that probably wouldn't get merged in the first place (like full-fletched vim-mode).
  • sigp, simple audio visualizer thing for Samfundets Interne Grand Prix 2010.
  • vapoursynth-movit, Vapoursynth plugin exposing Movit. Written blindly (aka. plain vim without plugins, and without testing that it builds). Probably doesn't work.
  • qoniometer, audio visualizer. Because frequency analysis visualization is boring.
  • qpitch, instrument tuner.
  • guitar-effects, various realtime, low-latency guitar effects. Loopback thing using pulseaudio.
  • Butterflow, ported to opencv 4 and python 3.
  • vlc-chromecast-subtitles, VLC with the patches for proper subtitle support for Chromecast™®.
  • inputstream.adaptive, started refactoring so wvdecrypter could work without Kodi, ended up just trying to fix compatibility with newest version of Widevine.

Ancient stuff

  • spokify, unofficial spotify™® client. added support for scrobbling (to last.fm), visualizer, the magic starred playlist, and some other stuff I don't remember.
  • amarok-soundcloud, soundcloud support for amarok. I think it worked at some point.
  • vlc-kio, vlc plugin to use the KDE file io protocol thing framework. don't think I ever finished it.
  • simpleplayer, simple audio player for testing phonon from when I maintained phonon.
  • lastfmscraper, screen-scraping tool for dumping when you played stuff from last.fm
  • akode, start of a backend for Phonon using ffmpeg etc. directly.
  • vapor, desktop client for rawk the cloud web music server thing.
  • impd, custom MPD server implementation.

Graphics

Libraries

  • qhiveplot, an implementation of hive plots in qt, ended up using it in repliqode
  • libqsnap, old implementation of the old snapchat API, used for the jolla snapchat™® client Bluefish. Written while drunk on a plane.
  • winuname, BSD-licensed implementation of uname I wrote to replace something for something sometime. don't really remember much.
  • qt-rappor-client, modernized and cleaned up the reference C++ implementation of RAPPOR.
  • pcrio, PE file resource editor for genieutils/freeaoe.
  • QSsh, Qt-based library implementing the ssh and sftp protocols.
  • libqdlibface, library for doing face recognition. not really tested, but gave up trying to clean up libkface so started on this.
  • zstr, header-only C++ library wrapping zlib with iostreams, used for genieutils/freeaoe.
  • tacopie, C++ TCP Library. Upstream is dead.
  • qtcreator-breakpad, breakpad integration extracted from qtcreator.
  • taglib, taglib with matroska/ebml support.

Demoscene-ish

  • cubescubed, compofiller for the 4k competition at TG12.
  • oyarsa, writing a kernel woo. the solskogen branch contains an entry at solskogen.
  • invitro, 4k on Linux at solskogen at 2015 (2015 bytes).
  • smallhtml, collection of some of the smallhtml compocases I made for TG.
  • fuckdos, start on a demo of sorts with a trick I found out later wasn't as original as I thought.
  • textonacube, entry in the fast demo compo at TG10 (we actually won money for this).
  • legendary, a demo engine that never really got anywhere. but got used for a couple of projects and made some money.

Internet

  • wdotcrawl, wikidot crawler. Rewrote it to mirror the SCP wiki.
  • imagetracker, simple tracking pixel for emails written in like 2005.
  • nugatti, start of a gnutella implementation written in 2011-2012-ish. never really finished anything besides the most basic parts of the protocol. started because I wanted to figure out how the bootstrapping worked.
  • kubotu, the IRC bot in the #kubuntu IRC channel on freenode for a while.
  • rawk, cloud web music server thing. something like subsonic to have a web-based music player with your own music collection.
  • sophia, mg and I started working on a new-school BBS system using ssh while drunk.
  • quassel-proxy, a proxy between the quassel protocol and json from when I wanted a web-based quassel client.
  • quazzer, start of a fuzzer for the quassel protocol.
  • lolcats, displayed a random lolcat from my collection. don't judge me.
  • cloudsync, replacement for dropbox/ubuntu one/owncloud. don't think it ever worked properly.
  • quassel-web, started on a web interface for quassel. wanted to have quassel in the steam overlay, and for some reason this seemed like the easiest solution. never finished.
  • hjemmeside, one of my old homepages from when I started to learn django.
  • cbot, IRC bot for NTNU gangstaz.
  • DESMAN, distributed peer-to-peer decentralized blockchain service monitoring written for the student society in trondheim in 2008, never actually used. codename "lollercoaster".
  • notes, web-based note-taking app written in c++.

Chrome extensions

  • millenials-to-snake-people, Chromium extension that does what it says, with toggle button (because I don't want it on all sites).
  • Imagus, Chromium extension to show images on hover, github mirror with unminified code to compare with code in the official Chrome Store. Just because I don't trust stuff in the store.
  • chrome-extension-tick, two simple chrome extensions that just tick or untick every checkbox.
  • autochecker, google chrome extension to help automatically check the right boxes when filling out forms.
  • anti-anti-devtools, started out as a chromium extension to defeat the tricks people use to detect devtools. Ended up defeating fingerprinting (and crashing some fingerprint-library-backends).
  • bypass-paywalls-chrome, Bypass Paywalls web browser extension for Chrome and Firefox, with a fix for some crashing. But upstream doesn't seem to allow me to open a PR.
  • url-rewriter, rewrites URLs on the fly.
  • chrome-no-cohort, Disables the new google fingerprinting things.
  • archive.is-chrome-extension, open links via archive.is when you right click them.
  • browser-painter, draw on web pages.

KDE 1 and KDE 2

Also see https://invent.kde.org/historical for the basic stuff.

  • qt1, copy of Qt1 for usage with KDE1 (with some minor issued fixed, like scrollwheel support in some apps).
  • qt2, copy of Qt 2 ported to modern system, with some fixes.
  • KDE 2 kdelibs, KDE 2 version of kdelibs, fixed up to mostly build on a modern system.
  • kde1-kuickshow, KDE 1 version of Kuickshow. And ported away from imlib, because that API is horrible.
  • kde1-kshow, KDE 1 version of kshow. Because you always need more image viewers.
  • kvoicecontrol, tool that gives you voice control over your unix commands. For KDE 1.
  • kde1-amor, backport of Amusing Misuse of Resources for KDE 1 or something.
  • kde1-kpackage, KDE 1 version of KPackage with libalpm/pacman/archlinux backend/support.
  • kde1-kteatime, the original (pre-KDE 2 port) version of kteatime.
  • kcmlaptop, laptop support (mostly power management) for KDE1.
  • kdewizard, kdewizard for KDE1 (I missed Kandalf when running KDE1).
  • kde2-kdebase, KDE 2 version of kdebase, fixed up to mostly build on a modern system.
  • kde2-kio-sftp-kde3, backport of kio-sftp from KDE 3, wrapping the ssh executable. Doesn't work well, use the one below.
  • kde2-kio-sftp-kde4, backport of kio-sftp from KDE 4, using libssh.
  • kde2-kmorph, KDE 2 application to morph between two images. Ported and improved performance a bit, don't really know how it is supposed to be used.
  • KWoodhammer, All-in-one shell for all kinds of data encryption. KDE 1 version.

Other

  • SCP wiki dump, full mirror of the scp wiki with the entire history. ~20 million words, fun for training Machine Learning Things™
  • dotfiles, since everyone like to post these kind of things. And it makes it easy to keep the config in sync across machines.
  • sequrerender-child and sequrerender-host, testing out-of-process rendering with shared memory and seccomp and stuff.
  • libfisk, LD_PRELOAD hack to hide the fact that someone has been fisked. fisking is a long tradition at the Student Society in Trondheim where you do stuff like putting echo sleep 1 >> ~/.bashrc into people's .bashrc when they forget to lock their session.
  • bluefish, (old) snapchat client for the jolla. snapchat has drastically altered their API, so hasn't worked for a while (since I stopped using my jolla).
  • glog-squash, LD_PRELOAD hack to disable endless amount of spam to the console when launching glib applications.

Unusable old stuff

Probably not useful

  • spacetrader, start of a port of the space trader game for palmos. never got far.

Minor stuff

Things I have spent less than five minutes on.

Mostly things I didn't write with a couple of commits (e. g. because I wanted to test something and it didn't build or was missing something trivial.)

  • qmarkdowntextedit, proper standalone version. preserved my fork because upstream later reverted my changes that made it a useful standalone application.
  • sddm, started working on wayland support for sddm in 2013. never finished.
  • kgtk, ugly LD_PRELOAD hack to make GTK applications use Qt/KDE dialogs. Works sometimes.
  • krename, rename utility. ported to qt5.
  • esp-idf, fork to get the latest version with the necessary patches for ODROID-GO.
  • synkron, ported to Qt5.
  • klatexformula, ported to qt5.
  • kfontview-standalone, displays contents of font files.
  • kuiserver-standalone, standalone fork of kuiserver, so I don't need to pull in the entire plasma workspace just because I use a lot of KDE stuff.
  • kcm-lookandfeel-standalone, to avoid having to install the whole Plasma desktop.
  • kjackal, rootkit scanner. ported to newer kernels.
  • kde-cli-tools-standalone, to avoid having to install the whole Plasma desktop just for kcmshell.
  • qt-polkitagent, couldn't get any polkit crap to work. So had to fix the build of this to test it, but surprise, it didn't work.
  • signsrch, just a mirror, but with history.
  • clickteam-unpack, fixed compatibility with some installer (forgot which).
  • irstlm, had to fix this to get Kaldi to work Properly™.
  • opensift, upstream is dead. Now with modern opencv support.
  • konsolelauncher, testing quick and dirty hack to speed up launching of konsole.
  • opensift, Open-Source SIFT Library. Fixing opencv compatibility and stuff.
  • kdeconnect-minimal, kdeconnect without so many big required dependencies.
  • okular-backend-mupdf, PDF backend for Okular using MuPDF. Cleaning it up.
  • Ghidra, adding some hardening flags to Ghidra build.
  • ini-editor, I think this was to create a more generic config interface for the Xine backend for phonon.

lol

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

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

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

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.

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)

Crash

Hi,

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

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.

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 :)

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 ...

"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 :)

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.

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.

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)

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?

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.

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)

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.

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...

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.

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

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 :}}

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.

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

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?

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(?).

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.

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

Backlog requesting

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

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.

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.

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!

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.