During the Cloverleaf RISC OS project we will produce several software to support RISC OS. The first piece of software will be the instant messenger ChatCube to connect RISC OS users. But ChatCube will function also as client for other open source Messenger like Telegram or for messengers that provide an API to integrate from other plattforms.

!ChatCube

Functions implemented in Version 1.07

  • 1-to-1 Chat
  • Public RISCOS Support group chat
  • Group chat implemented
  • Send images and files
  • Profile image or avatar
  • Screenshot function with different options
  • Stickers
  • Taskbar notification about new messages
  • Telegram messenger client integrated
  • Delete and unsend message
  • Save file
  • Reconnecting when internet connection lost

Known bugs

  • Automatic memory resizing not implemented

Future extentions

  • Sound notifications
  • Location function that displays users nearby
  • Integrate Jabber messenger
  • Integrate Facebook messenger
  • Voice call
  • Video call
  • Android app of ChatCube
  • iPhone app of ChatCube

Credits to for helping with testing and programming advice

  • Raik Fischer
  • Anton Reiser
  • Micheal Grundlitz
  • David Feugey
  • Rob Heaton
  • David Higton

Security implementations

Communication between our server and ChatCube client are encrypted by HTTPS.
Clients authourized by login/password and get auth SHA token which used in next requests for authentication.

Telegram client implementation

Right now we use official Telegram library (TDLib https://core.telegram.org/tdlib) on the server side.
It encrypts communication between our server and Telegram servers.
The “secure chats” is still not implemented, I think it can be implemented but it will be terminated on our server.

The Telegram messages are not stored in our MySQL db.
Telegram client uses own SQLITE db to store various account data. That Telegram db file encrypted on the file system. The encryption key for Telegram db is generated based on the hardcoded string and account phone number.
The Telegram db files stored in SHA hashed directories. SHA directory names stored in our MySQL db. It is impossible to say which db belongs to which member by looking on file system.

To compile Telegram client needs c++ compiler support latest standards. Gcc 4.7 does not supported.

 

Version updates

1.07
Fixed problem with possible hangs when no Internet connection. It is caused by CURL hostname resolving as it is still blocking.
Implemented save and cache resolved addresses to avoid DNS resolving.

1.06
Fixed duplicate messages when sent to Telegram

1.05
Fixed problem with network connection (caused by changings at Cloudflare)!
Display error message when directory dragged into chat instead of ignoring. Chat can send only files.

1.04
Fixed download function
Fixed progress bar indication when downloading text files
Fixed progress bar for uploads

1.03
Fixed Screenshoot function.
Fixed error when directory dragged on chat. As we can’t attach directories then it will ignored instead of error.
Implemented show progress bar for long running operations in addition to hourglass percent show.
Implemented “forward message” function. It works by middle-button click on the message and select “Forward” from menu. Message can be forwarded to multiple recipients. The files and photos can be forwarded also.
Implemented support of two-factor (password protected) Telegram authorization.
Implemented unregister (unbind) Telegram account from ChatCube account. Button “Unregister Telegram account” located in the “Settings”.

1.02
Change place where to write cache and downloaded files. Now write to <Choices$Write>.ChatCube First start of this version may take significant time because needs to load avatars and stickers into new directory.
Implemented show chat window on new message if chat window was hidden. This option configured in the Settings.

1.01
Fixed problem with caching error responses in files download. Now if you select to download the file it will always loaded from server.
Fixed problem with UTF8 in the profile fields in the Edit Settings dialog.
Decreased connection timeout from 30 to 5 seconds. Hope it helps with faster reconnection and resubmit timed out request.

1.00
Fixed some errors at first Telegram account registration.
Fixed “Telegram Client not started” error sometimes happens at start
Fixed logout and next login under different account (events was come to previous account).
If Telegram account is not added yet then not allow to edit its data in the Edit Settings but offer to add Telegram account.
Fixed “Add messenger -> Telegram” menu item
0.99

Reconnection when internet connection is lost

Bug fixed for new registration

0.98

Handling for uploading profile photo or avatar reorganised

Bug fixed about displaying new message notification

0.97

Discovered WIMP polls bug of TBX library

Added editing of Telegram profile

0.96

Implemented “unsend” and “delete” message

0.95

Integrated TELEGRAM messenger client

Improved screenshot options with drag a rectangle to limit screesnhot to part of the display

New window redraw library on base of TBX library that is faster and use less memory

0.81

Added task bar notification of unread messages in chats

improved edit pages for profile

reduced Wimpslot to 28 MB so it runs on RPCEmu

0.80

Fixed problems with downloads

0.79
loading if chat history optimized
faster switching to other chats

0.78
remove background for stickers in the chat
fix segfault crash on sending messages
show hourglass at initial data loading

0.77
fix filenames when sending files
show big profile photo when click to avatar
fix bug with saving files

0.76
add icons for some popular file types
allow download attachments of all types
fix resize chat list bug on maximizing window
save login info to !Boot.Choices folder

0.75
add stickers
remove phone field from reset password form
fix segfault crash on opening attached images

0.71
fix displaying unread messages count
change cursor on hover clickable objects
show date in messages history
add possibility to receive and show broadcast alerts from server
minor bug fixes

0.7
fix displaying of groupchats
fixes for chatlist displaying when new messages received
window layout was changed
add mouse scroll support

0.61
small improvements and bug fixes

0.6
Add UTF-8 support.
Handle network connection problems.
Edit profile feature.

0.0.2
Add possibility to change the profile picture or select from predefined avatars