Code Monkey home page Code Monkey logo

weechat-android's Introduction

Weechat-Android relay client

This is a WeeChat relay client for Android.

This application is not a standalone an IRC client. It connects to WeeChat that has to be running on a remote machine. If you are looking for a standalone IRC client for Android, you will need to look elsewhere.

Get it on F-Droid Get it on Google Play

Follow our Quickstart guide to get up and running, and don't forget to read the FAQ!

Bug reports and contributing

Report any bugs or feature requests here on GitHub. You can also find us on #weechat-android on irc.libera.chat. When reporting an issue, make sure to include build ID that you can find in Settings → About (looks something like “v0.13-123-g1234567”).

If you want to contribute, check out our Getting started with the code guide. It also includes instructions for building from command line. Pull requests are welcome—but please check with us on IRC before starting a substantial rewrite!

Changelog

v1.9
  • Drag and drop files on buffers to share
  • Volume keys can now navigate input history
  • Fixed strange behavior resulting from handling WeeChat pointers as signed numbers
  • Fixed importing of PKCS #8 Ed25519 keys
  • Target Android API 34, ask for notification & exact alarm permissions where applicable
  • A few minor bug fixes and improvements
v1.8.1
  • Fixed an issue with ED25519 keys during upgrade
  • Update Android Gradle Plugin to fix build on F-Droid
  • Rework ping logic to comply with Google Play requirements
v1.8
  • Render the latest emoji on older systems
  • Certificate dialog now shows trusted chain if available
  • Fixed not being able to connect to servers that require SNI
  • Fixed cleartext web traffic not going through
  • Fixed wrong message shown in case of TLS error
  • Fixed a crash if an URL with the ellipsis character is encountered
  • Fixed a very rare inconsistent Bubble behavior
v1.7.1
  • Fixed an issue of disappearing bubbles
v1.7
  • Removed storage access permission on Android 9+
  • Added launcher and direct share shortcuts
  • Added support for Bubbles on Android 11
v1.6
  • Added search functionality
  • Added a floating “go to bottom” button
  • Added a connectivity indicator
  • Copy dialog can now select text and copy several messages at once
  • Interface is no longer locked up while disconnected
  • Chat lines are no longer thrown away when not synchronizing
  • Chat scroll position is now remembered on rotation
  • App is now drawn behind system bars on supported devices
  • Added new chat line change animations
  • Local tab completer is no longer used when completing command-like text
  • A lot of internal changes and bug fixes
v1.5.1
  • Fixed a crash when the password has never been set
  • Fixed a crash when using Modern handshake on Android 7-
v1.5
  • Added support for the handshake relay command
  • Improved the way URLs are recognized
  • Black background is no longer shown when switching buffers
  • Fixed a couple of rare crashes
v1.4.2
  • Fixed freeform window mode
  • Fixed a few rare crashes
v1.4.1
  • Fixed a few bugs
v1.4
  • Implemented command and channel name completion
  • Updated icons to have wireframe look
v1.3.1
  • Fixed F-Droid builds
v1.3
  • Allow uploading files via user-supplied HTTP POST services
  • Added file picker/take photo button
  • App can be a share target for files as well as text
  • App can receive media through keyboard
  • Parts of the app are using Kotlin now!
  • Toast background is colored to signify success or failure
v1.2
  • Let users interactively accept or reject SSH host keys
  • Accept private SSH keys in PKCS #8 format
v1.1
  • Added a new certificate dialog that displays the full certificate chain
  • Implemented SSL certificate pinning
  • Support for client SSL certificates
  • Added support for Ed25519 keys thanks to sshlib
  • When possible, RSA, EC, DSA keys are stored inside security hardware
v1.0
  • Added media preview
  • Raised minimum Android version to Lollipop (5.0, API level 21)
  • Added German translation
  • Improved support for notify levels
v0.14
  • Added an optional light theme
  • Removed some and added some color schemes, including an AMOLED theme
  • Support for coloring UI elements through color schemes
  • Ability to tweak the 256 color palette through color schemes
  • A new adaptive icon
  • Modernized some UI elements: rounded corners, lowercase buttons, etc
  • Using vector assets almost everywhere
  • Reworked a major part of the networking code—should be more stable now
  • Use a different WebSocket library: nv-websocket-client
  • Made the order of open buffers consistent with the buffer list
  • Added a filter to the share dialog
  • Activity is now no longer destroyed when pressing the back button
  • Added an option to use a system gesture exclusion zone on Android Q
  • Added Russian translation
  • Fixed the way the application detects software keyboard
  • Fixed some of the notification glitches and inconsistencies
  • Now using LeakCanary to detect memory leaks
  • Library updates and stability fixes
v0.13
  • Bundled notifications with instant reply on Android 7+
  • A menu switch that instantly turns filtering on or off
  • Use RecyclerView that comes with some animations
  • Buffer title is now at the top of buffer lines
  • Ask user for permission to read external storage
  • Library updates and stability fixes
v0.12
  • Service to run only while connecting/connected; quit button removed
  • “Fetch more” button
  • SSH library update; require known hosts; store known hosts and key inside app
  • Significant refactoring of connectivity; stunnel removed
  • Better logging and error handling
v0.11 - November 2015
  • Material design
  • Ping mechanism
  • Color schemes
  • Read marker line
  • Ability to resend lines
  • Font preference
  • More notification options
  • Weechat → relay synchronization every 5 minutes
  • Validation of settings
  • Better url detection
  • A bunch of stability fixes
v0.10 - Skipped/unreleased
v0.9-rc1 - Oct 25th, 2014
  • Too much to list, lots and lots and lots of fixes, UI tweaks, and changes
  • Special thanks to @oakkitten and @mhoran for their help and contributions
v0.08-dev
  • SSL Support
  • Swiping to change buffers
  • SSH Keyfile support
  • Lots of other small things
v0.07 - June 13th, 2012
  • Tab completion for nicks(tab key or search button)
  • Automatic reconnection
  • Stunnel support (see: Stunnel Guide)
  • Text size preference
  • Massive performance tweak/bandwidth reduction
  • Other bug fixes
v0.06 - May 13th, 2012
  • Rewrite rendering of chat messages(improved performance)
  • Added about screen
  • Made links in messages clickable
  • Fixed bug with irc colors in topics
  • Password now hidden in preferences
  • Added preference for prefix alignment
  • Keyboard behaves nicer in chats
v0.05-dev - May 11th, 2012
  • Complete rewrite of the frontend
  • Support Notifications
  • Background service
  • Message filters
  • UTF-8 Support(Fixes #1)
v.0.04 - Skipped/unreleased
v0.03
  • Preferences for Colors/Timestamp
  • Highlight support for messages
  • Misc bugfixes
v0.02
  • Colors!
  • A few bugfixes
v0.01
  • Initial Release

weechat-android's People

Contributors

andir avatar ashkitten avatar charafau avatar chisight avatar epitron avatar flashcode avatar harkin avatar jdhore avatar jspricke avatar lamperi avatar lithium avatar lrvick avatar luk1337 avatar marcellmars avatar mhoran avatar mickael9 avatar minus7 avatar ncfavier avatar nomis avatar norrs avatar oakkitten avatar omahn avatar pierrezurek avatar pomepuyn avatar pvl1 avatar torhve avatar ubergeek42 avatar w2ak avatar weechatter avatar zopieux avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

weechat-android's Issues

handle _upgrade server messages

New weechat(as of 5/17/2012) sends a signal when it upgrades. The client must resync as all pointers change during an upgrade.

Easiest fix on this end is to just force a reconnect.

SSH Tunnel: local port cannot be bount

I used weechat-android for some weeks with ssh tunnel for some weeks (Its totally awesome!). Then i tried the latest dev version from github, and ssh stopped to work, so i downgraded to the stable version, but the problem remains. Whenever i try to connect i get this message:

Error: PortforwardingL: local port 127.0.0.1:22231 cannot be bound.

The strange thing is, i use port 9001. I tried to remove the app and reinstall, reboot the device, tested other settings (using plain connection and connectbot to make port forwarding works), other ports, restarted weechat, everything i could come up with.

It just wont work anymore.

Change the notification icon on highlights

Because weechat-android displays a permanent notification icon (presumably to avoid getting killed in case of OOM), it's not possible to just look at the notification bar to determine if a highlight has occurred or not.

I'm suggesting changing the icon when an actual notification occurred. Maybe an overlaid exclamation mark or envelop or something along those lines.

Command support

Specifically /clear would be nice to clear the droid app, without sending it to weechat.

Filterable buffer list

When having a lot of buffers open, it can be tedious to find the one you are looking for. A simple input bar that does incremental filtering of the list would be of huge help.

font size

it'd be nice to able to set the font size (as for different screen resolutions

Crash on nick completion

Sometimes the app crashes with 2 letter nick completion. Investigate what might be the cause of this.

It would also be cool if there was a preference to add a colon and a space after completion, since that's typically what you intend to do.

Auto Reconnecting

It'd be nice to have an option to keep reconnection every n seconds or at least multiple times

SSH Tunnel Support

See if it is possible to integrate SSH tunneling for connecting(To keep from having to open additional ports).

Tab complete nicks

Nick completion with tab would be cool. Can use hackers keyboard since it has an actual tab key. For other devices, maybe do android style completion? Not sure.

Incorrect / Bad Color Choice

I notice that when I check "use colors in chat" that a lot of the colors are.. grey. Dark grey, darker grey, etc. It makes it really hard to read. I am fine with mine being light grey / white, but when one girl who shows up as orange in weechat-curses shows up as the same white/grey that I do.. it's unexpected and weird. Some other users display in their same color as weechat-curses, but others get all messed up. If I can figure out how to attach a picture, I'll show ya what I mean.

Force Close bug

Hey, i set up 0.7 client correctly, but when i join some of my channels, the app crashes. somes others are working. It also crashes with 0.8-dev from todays date.

a logcat of the crash can be found here: http://paste.org/55889

I am running cyanogenmod 10 / android 4.1.2 build from source.

Crash when connecting without network enabled on device

If network is not enabled on device (wifi off), when I try to connect, the application crashes.

OS: Android 2.2
Reproductible: always.

Steps:

  1. turn wifi off (and all other data connections)
  2. run weechat, setup relay host/port/passord
  3. connect
    => crash

Don't constantly fetch nicklist updates

It should only really fetch the nicklist when you have a buffer open, not while just viewing the buffer list.

This bug should also cover reducing network usage in all cases, so if just sitting at the buffer list nothing should really be happening.

Example of badness:
http://imgur.com/ZFXhqAb

Better connection/disconnection handling

Sometimes when using the app weechat shows the relay client as disconnected, but the app doesn't notice. Maybe have the app periodically "ping" weechat(every 5 minutes?) and reconnect if it can't get a response(probably bad for battery life). Or just have better handling for the connection stuff.

Sometimes app losing connection causes weechat to hang(badly for multiple minutes)

Custom timestamp format

Would be nice if the timestamp format could be chosen(so we could hide the seconds display; or simply format it according to our tastes)

SSH Key Support

Support using a key instead of a password when connecting with ssh.

A key would be much better on a mobile device, since it can be revoked easily if the device were lost. Passwords are a bit harder to deal with.

Buffer sorting

Options to sort bufferlist more like hotlist, or actually make a hotlist. I want my buffers with highlight and messages first.
If not that, make a hotlist-button (alt-a).

Colors in topic titles

It's currently on stripping foreground colors, not background colors...see the iset buffer for an example of something that's broken.

Display values in list of settings

In list of settings, it would be nice to display values below options, for options with text value: host, port, password (for password, display only stars).
So that we can see current value without clicking on the down arrow on the right to edit option.

Merged buffer support

At the very least for the status/server buffers. A few possibilities:

  • An item representing the merged buffers, that when clicked shows the individual buffers. In this mode the lines wouldn't be merged together.
  • A psuedo buffer that collects lines for all buffers, but tags them accordingly. I think this might actually be the way to go(merge according to buffer number).

I like the second method best, and creating a psuedobuffer for the merged contents seems relatively simple.

Clickable links in chat

User suggested on irc making links in chat be clickable. Should be as simple as adding a property to the textview and letting android do the work.

excessive communication

The current version subscribes to _nicklist notifications(I think for all buffers). This causes excessive communication, and may be the reason battery life suffers now since it can't ever sleep(If you have busy channels/etc, the nicklists will always be changing).

Additionally, large channels send the entire nicklist, which may be problematic due to the size.

NullPointerException when using /wc

When trying to close a buffer, that's what I get:

D/c*.u*.W*.WeechatActivi*(22475): onBufferSelected() buffer:irc.rizon.pokAlexisDJ
D/c*.u*.W*.f*.BufferFrag*(22475): Bufferfragment onserviceconnected
W/dalvikvm(22475): threadid=15: thread exiting with uncaught exception (group=0x414a8300)
E/AndroidRuntime(22475): FATAL EXCEPTION: Thread-610
E/AndroidRuntime(22475): java.lang.NullPointerException
E/AndroidRuntime(22475):    at com.ubergeek42.WeechatAndroid.fragments.BufferFragment.onBufferClosed(BufferFragment.java:234)
E/AndroidRuntime(22475):    at com.ubergeek42.weechat.Buffer.destroy(Buffer.java:264)
E/AndroidRuntime(22475):    at com.ubergeek42.weechat.relay.messagehandler.BufferManager.handleMessage(BufferManager.java:202)
E/AndroidRuntime(22475):    at com.ubergeek42.weechat.relay.RelayConnection.handleMessage(RelayConnection.java:567)
E/AndroidRuntime(22475):    at com.ubergeek42.weechat.relay.RelayConnection.access$1600(RelayConnection.java:56)
E/AndroidRuntime(22475):    at com.ubergeek42.weechat.relay.RelayConnection$5.run(RelayConnection.java:507)
E/AndroidRuntime(22475):    at java.lang.Thread.run(Thread.java:856)
W/ActivityManager( 2082):   Force finishing activity com.ubergeek42.WeechatAndroid/.WeechatActivity

Client: v0.07-139-gf2d12c2 2012-07-29 20:27 (that's a bit odd, I downloaded http://repository-ubergeek42.forge.cloudbees.com/release/weechat-f2d12c2.apk and on the top it says v0.08-dev) running on Android 4.1.1 (Cyanogenmod 10-20120825-EXPERIMENTAL-i9100-BEANPEELER)

Server: weechat 0.3.9-dev (compiled today) on Archlinux

Connecting via an SSH tunnel.

If I can do anything else to help you tracking this down, let me know.

Suggested features

I was hoping it would be possible to add an align option similar to "weechat.look.prefix_align". As is, it seems to be right justified. I prefer no justification of prefixes.

Was also wondering if it would be possible to include a tab complete nickname feature. Not sure if this would even be possible.

Not sure if this is necessary, but maybe for the relay password option have the password hidden.

Also, I like to keep my status buffers merged into one. Would be nice to have option to merge status buffers with core in the ap.

Thank you for this great ap!

Own messages add to unread count

Sending a message(through the actual weechat interface) counts as an unread message on the android app, and shows the status for a channel in yellow with a number equal to how many lines I wrote. This shouldn't happen, as I don't usually care that I wrote something was added to a channel when I'm on the android app.

Weechat SSL relay

I'm having issues getting the Weechat SSL relay working. When I set up weechat and weechat-android, I get the following messages in weechat:

16:33  weechat     | relay: new client on port 9001:
                   | 4/ssl.weechat/216.220.101.98
16:33  weechat =!= | relay: reading data on socket for client
                   | 4/ssl.weechat/216.220.101.98: error -9 A TLS packet with
                   | unexpected length was received.
16:33  weechat     | relay: disconnected from client
                   | 4/ssl.weechat/216.220.101.98   

I get a notice to accept the certificate on my device, which I do, however I then get this message, and am prompted to accept the certificate again.

I also noticed that weechat-android crashes when attempting to connect to an invalid host. I noticed this when switching from the SSH relay to SSL relay and not changing the host.

D/WeechatActivity(29693): onError:failed to connect to localhost/127.0.0.1 (port 9001): connect failed: ECONNREFUSED (Connection refused)
W/dalvikvm(29693): threadid=17: thread exiting with uncaught exception (group=0x413fa300)
E/AndroidRuntime(29693): FATAL EXCEPTION: Thread-2869
E/AndroidRuntime(29693): java.lang.ClassCastException: java.net.ConnectException cannot be cast to javax.net.ssl.SSLException
E/AndroidRuntime(29693):    at com.ubergeek42.WeechatAndroid.WeechatActivity.onError(WeechatActivity.java:206)
E/AndroidRuntime(29693):    at com.ubergeek42.WeechatAndroid.service.RelayService.onError(RelayService.java:431)
E/AndroidRuntime(29693):    at com.ubergeek42.weechat.relay.RelayConnection$3.run(RelayConnection.java:341)
E/AndroidRuntime(29693):    at java.lang.Thread.run(Thread.java:856)
W/ActivityManager(  307):   Force finishing activity com.ubergeek42.WeechatAndroid/.WeechatActivity

unread count for highlights is wrong

 R1cochet | ubergeek42: about the lastline count. working great, except for highlights. if the last line read in a channel in the android client is a highlight, and you back out to  
          | the buffers list, the highlight shows as an unread line.

This is because the HotlistHandler has _buffer_line_added hooked, which probably occurs after the onLineAdded() call in the Chatview activity that resets the highlight.
Fix is maybe for the HostlistHandler to detect if you have the activity in focus?(maybe add a "currentbufferinfoucus" variable or similar)

Allow copying of links in chat

Possibly tap and hold to copy links in a message or some other method to copy them.

Requested by Zucca in #weechat.

Zucca      | ubergeek42: Have you implemented copy link -function in weechat-android?
ubergeek42 | Zucca: what do you mean by that? links are clickable in the client, but you cant "copy" them easily
ubergeek42 | Zucca: feel free to submit a request for that on the github issues page though
Zucca      | Yeah. Copying youtube links is a bit hard.
Zucca      | Since Android opens them in yt player.
Zucca      | I tried tap and hold. It felt natural. I'll dend feature request tomorrow. If only I can remember. ;-)

Tab complete broken with soft keyboards

Some soft keyboards don't send keyevents for the tab key(Swype for example). This means I have no way to detect that tab was pressed, and no way to complete it.

No elegant workarounds seem to exist either.

Filing this as an issue so I remember the problem if it comes up again.

Don't close socket when WeeChat is upgrading

I noticed that socket is closed when WeeChat is upgrading (with /upgrade), I think this is not needed.
In QWeeChat, I do that:

  • on signal "_upgrade", I desync from WeeChat: command "desync"
  • on signal "_upgrade_ended", I resync with WeeChat: same commands as sent on startup (except "init" which is not needed), ie: listbuffers, listlines, nicklist, sync.

License

Probably a good idea to add some kind of a license to this project.

Suggestions:

Apache2 License
BSD
GPL

Wizard on first run/Tips

Add a simple wizard on first run to get the basic settings configured and offer a few tips.

Add tips that popup at various times(indicating tab completion/filtering/etc)

Custom notification options

It'd be nice if I could select my own notification ringtone and volume to be used when notifications are enabled. Also a setting for the notification led would be cool too.

Tracking bugs in the fragment_wip branch

This exists only to track known issues with the fragment_wip branch. Add a comment for any new issues/or comment if they've been fixed.

Current List:

  • If you receive a notification, even after clicking on it, clicking the ongoing notification takes you back to the same buffer(e.g. if you get highlighted in #weechat, click the notification and then leave, but come back to weechat through the notification bar, you will be taken back to #weechat, instead of the buffer list). - fixed as of 7/26/2012
  • The Hotlist dialog has a grey background on my phone, and the text color is white, which makes it impossible to read.
  • Counts for unread/highlights sometimes show negative.
  • the back button doesn't get you to the buffer list from inside a buffer. This is a regression.
    • re-implemented for now, but not sure this will be the final behavior.
  • when I quit without disconnecting, I get a crash notice. Disconnecting before quitting works fine.
    • was a bug with 3.0+. Fixed in latest
  • sometimes the ActionBar shows the last active channel instead of Weechat when returning to the buffer list.

Bring back quick toggles

In the chat view, bring back menu->toggle timestamps, and menu->toggle filters. Its annoying to go into the menu to change them.

I'd even consider adding a button near the top for each to toggle these two, as I find it quite common to be toggling them on/off.

Maybe a preference for "show quick toggles" so people who don't want them can maximize the space.

Add Tab-complete for commands

Specifically for /query and other "default" or basic commands, a tab-complete for "/?" where ? is a letter would be nice.

Performance Improvements

  1. Performance in a chatview is quite poor. This could likely be improved by switching to a listview instead of the tableview, as then only the visible items need to be rendered.
  2. Less object creation/more object reuse. I can probably get away with a single Data object in RelayConnection. Data can also be switched to use the java.nio.bytebuffer for some things, which may improve performance as well.
  3. Maybe write custom textview that renders text in color based on the weechat color codes, rather than converting it to html and using the spannable stuff. This should save a lot of silly computations.

UI refresh for ICS devices

First off, weechat-android is totally awesome. However, the UI feels very clunky on ICS devices. Employment of an action bar, elimination of menu actions, and use of new UI elements would make this client rock.

I've left a few comments elsewhere, but in testing out weechat-android I also gave AndChat a shot, connected to irssi-proxy. I'm not actually a weechat convert yet, but if the UI of weechat-android comes anywhere close to AndChat, I'll jump ship in a heartbeat.

nick list

adding the nick list as an option would be nice (useful on big screens f.e. tablets)

Buffer list scroll status

The buffer list should remember its scrolled position when you go in and out of buffers. It's very painful to navigate right now if you have many buffers.

Buffer switch on swipe

I would like to be able to switch buffers by doing a left/right swipe on the screen instead of backing out to the buffers list window.

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.