ricinapp / ricin Goto Github PK
View Code? Open in Web Editor NEWA dead simple, privacy oriented, instant messaging client! https://ricin.im
License: GNU General Public License v3.0
A dead simple, privacy oriented, instant messaging client! https://ricin.im
License: GNU General Public License v3.0
In order to improve privacy of the users it would be a nice idea (from my opinion) to have an integrated voice transformer and a video "pixeler" in Ricin. These 2 tools could be native or plugins and should be configurable. Transforming the user voice would improve a lot it's privacy.
What i call video "pixeler" is the ability to detect faces and "pixel-blur" them (using OpenCV ?). This would be a nice feature to protect user privacy in video groupchats (if available a time).
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
When adding a friend from Ricin, it does not show up in the friend list.
Hey guys, wouldn't it be cool/nice to have a way to enable 2-FA on Ricin? I think it would permit to add an extra layer of security to the app.
The question is the following:
How to do 2-FA on an already encrypted profile, since the key is generated for ~30 seconds (using Authy, Google Auth, any FIDO U2F compatible app or even via YubiKeys) ? The cool fact with 2-FA is that you doesn't need to have an internet access on your phone to get the security key.
So please discuss this in order to find a way of doing a such feature. It would be super cool :)
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
I think we should rewrite most of Ricin's code to follow these simple rules.
A class constructor method must suit the following conventions:
[GtkTemplate (ui = "/path/to/layout.ui")]
class MyClass {
// GTK members first.
[GtkChild] Gtk.Button button_something;
// Public members.
public int some_int = 0;
// Private members.
private string baz = "";
public MyObject (string foo, int bar = 0) {
// Class variables assignements (only).
this.baz = @"$foo:$bar";
// Init methods calls.
this.init_window ();
this.init_widgets ();
this.init_signals ();
this.init_whatever ();
}
private void init_window () { /* Init the windows stuff here */ }
private void init_widgets () { /* Init the widgets stuffs here */ }
private void init_signals () { /* Init the signals here */ }
private void init_whatever () { /* Init whatever u want */ }
~MyObject () { /* Destructor at the end of the file */ }
}
We should categorize files in the src/
folder. This would permit to have a more organized code, being more modulable.
See the example:
src/
-| widgets/
-| MessageListRow.vala
-| FriendListRow.vala
-| GroupListRow.vala
-| InlineFileMessageListRow.vala
-| Ricin.vala
-| MainWindow.vala
-| Utils.vala
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Try running utox + qtox, and quitting one. The fact that the user is offline is shown instantly. We must be doing something wrong.
It think that we should provide a plugin (or an app feature) to let the user setting a PGP key making it (the user) able to encrypt messages using PGP/GPG before sending them to the Tox handle.
If well implemented it would really good → even if Tox does eventually have a backdoor or some bug that breaks its security this PGP support will make sure it's still safe.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The user should have a view where they are able to edit the information to their profile. In this view we should have:
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
This is an issue by @SlugFiller from the qTox issues manager but i found it interesting and I think it would be nice to add it in Ricin:
@SlugFiller commented on 13 Oct 2015, 16:08 GMT+2:
After the profile information of a contact is loaded, the list is updated with the name and (size-reduced) picture, instead of the ID. If you set an Alias (which is necessary to prevent people playing around with names), the name they set for themselves is no longer visible, as pointed out in #1195.
From my experience with certain other programs, I was expecting to be able to right click the contact, and pick "view profile", to see more details, such as the contact's ID, their current name (Not the alias I set), a zoomed-in version of their profile picture, etc. But no such option is present.
As an added bonus, it would be nice if there was a small textbox where I can add notes about a person. It's helpful in instances where you add more people than you are likely to remember in a month or two. This is a common occurrence to me, which I usually solve by going over our chat history, but sometimes I just want to add a little note specifying who this person is, and why I've added them.
Ricin should provide a way to use (basic) Markdown to format messages. This is not really hard to do but the real issue is for client compatibility. I guess this shouldn't be a major issue since markdown was reflexed to be readable, even in plaintext.
(Pseudo-) Markdown "balises" we could provide:
**bold** text
: Permit to bold a message's part._italic_ text
: Permit to italicize a message's part.~~striked~~ text
: Permit to --underlined-- text
: Permit to underline a message's part.Ricin (with Markdown lite support):
µTox (with no Markdown support):
Also, see the qTox issue about that: qTox/qTox#2497
It was an issue opened on Tox-STS repo: Tox-Archive/Tox-STS#74
And @subliun opened a new issue: Tox/Tox-Client-Standard#19
When greentexting and putting a link (url) in the message, the message fails to send and this error is returned:
Gtk-WARNING **: Failed to set text '<b>gmscs:</b> <span color="#2ecc71">>testing <a href="http://a.uguu.se/irqxtp_9.png</span>">http://a.uguu.se/irqxtp_9.png</span></a>' from markup due to error parsing markup: Error on line 1 char 139: Element 'span' was closed, but the currently open element is 'a'
When greentexting links we should favour the link's format, so in ">https://github.com/" making the ">" green but the "https://github.com/" still blue and underlined.
ProfileChooser size isn't fixed. It should be.
Note for myself: This can be accomplished by creating a new Widget and using Pango for text rendering. The hard part with Pango is to make the text selectionnable without issues. Or maybe it should be possible to extend a GtkLabel to do the job. Or even a GtkTextView (iirc the name)
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
✏️
Please keep adding as stuff appears.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
</bountysource-plugin
this is from chatform merge
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
A user should be able to copy friends ToxID. To achieve this I think it would be nice to use the custom_packets
"method" provided by ToxCore.
Example:
friend_request_toxid
packet to Bob ;Yes
his client send a friend_response_toxid
containing it's ToxID ;No
his client send a friend_response_toxid
containing null
or false
.friend_response_toxid
and can:
Extra: It should be possible to auto-accept friend_request_toxid
but this should be disabled by default.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
It could be nice if Ricin could remind the user that a friend is not came back online during more than X time, and to ask if the user want to delete this friend.
Of course, this should be an opt-in/opt-out option (opt-in by default) that could be configurable (time before reminder).
This can be easily accomplished by comparing the last_seen date of each friend with the current date.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
I was thinking about restructuring the whole wrapper, currently it's all in one file. Maybe should we have a folder/repo wrapper
that would handle the Tox API (friends, files, avatars, messages, audio, video, groups, dns, etc)
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
it's too messy, just split it up into a few separate functions
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Have a few Gtk-CRITICAL messages:
(Ricin:3423): Gtk-CRITICAL **: gtk_label_set_text: assertion 'GTK_IS_LABEL (label)' failed
(Ricin:3423): Gtk-CRITICAL **: gtk_combo_box_text_insert: assertion 'GTK_IS_COMBO_BOX_TEXT (combo_box)' failed
(Ricin:3423): Gtk-CRITICAL **: gtk_combo_box_text_insert: assertion 'GTK_IS_COMBO_BOX_TEXT (combo_box)' failed
(Ricin:3423): Gtk-CRITICAL **: gtk_combo_box_set_active_id: assertion 'GTK_IS_COMBO_BOX (combo_box)' failed
(Ricin:3423): Gtk-CRITICAL **: gtk_combo_box_text_insert: assertion 'GTK_IS_COMBO_BOX_TEXT (combo_box)' failed
(Ricin:3423): Gtk-CRITICAL **: gtk_combo_box_text_insert: assertion 'GTK_IS_COMBO_BOX_TEXT (combo_box)' failed
(Ricin:3423): Gtk-CRITICAL **: gtk_combo_box_text_insert: assertion 'GTK_IS_COMBO_BOX_TEXT (combo_box)' failed
(Ricin:3423): Gtk-CRITICAL **: gtk_combo_box_set_active_id: assertion 'GTK_IS_COMBO_BOX (combo_box)' failed
So, it would be nice to have a way to get/set settings in Ricin, I think using a database would be over-head for this. I searched a way to do it properly and had an idea that was also proposed at irungentoo/toxcore#1487.
An user should be able to switch to another computer only by saving it's profile file and then download Ricin and import this profile file. The issue here is that if the user only copy it's profile, he'll loose the settings from the first computer.
A .txz
, sort of tar.gz
-like. It would contains the following files:
- example.txz
|- example.tox // This is the user .tox file.
|- settings.json // Here we would store settings as json.
|- aliases.json // The friend's profiles.
|- Any other standardized datafile...
All of what the client should do is to extract the file in memory and get the file at the inside, then update them and rezip the file.
Ricin must provide a button to export the user .tox
file to a conventional format. It just need to extract the user profile from the .txz
archive to the extract path.
Hello,
Sky where are you :( ?
This tells us if a message has been received
** (Ricin:16757): DEBUG: Wrapper.vala:334: friend 12, file 65536: file_recv
**
ERROR:/home/skyzohkey/Dev/Vala/ValaTox/Ricin/src/Util.vala:26:util_arr2str: assertion failed: (result.validate ())
File name that caused the crash: Capture d'écran 2016-02-20 à 18.57.59.png
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
When you resize at the minimum possible, then resize at a normal size, the PanedContainer shows only 1 child, (contact list or chatview), you then have to pull from left/right to get the contact_list/chatview back.
remove usages of
gtk_list_box_bind_model
gtk_entry_grab_focus_without_selecting
https://wiki.gnome.org/HowDoI/GNotification
We will use this when we have a .desktop file (probably when we switch to meson)
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
It will hold all the errordomain
s and conversion functions from toxcore
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Hello Key, i cannot log in into groupchat (not Ricin fault, at any client), and I came here, and see last commit was 20 days ago. Why? (and don't you have an idea why i couldn't log in?)
And I wanna try Ricin on Windows, but i can't find built version. Does it exists?
It should not be possible to send files to offline contacts. The button is not greyed out and the text "Sending file *** " still shows up.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
This is an issue I can't fix (don't know what is the problem ^^).
Try to focus the 2 entries a the top-left and try to edit them by typing text, it wont work.
Anyway you can right click → select all → delete → copy a string → paste → press enter. And it works, so how to fix this, looks weird and i wasn't able to fix. :x
This is the error to fix in order to have Travis working:
Ricin@exe/MainWindow.c:126:2: error: unknown type name ‘GListStore’
MainWindow.c:756:4: error: unknown type name ‘GListStore’
MainWindow.c:787:2: error: unknown type name ‘GListStore’
/home/travis/build/RicinApp/Ricin/src/MainWindow.vala:61:37: error: ‘GListModel’ undeclared (first use in this function)
var friend = (this.friends.get_object (fr.position) as Tox.Friend);
/home/travis/build/RicinApp/Ricin/src/MainWindow.vala:61:48: error: expected expression before ‘)’ token
var friend = (this.friends.get_object (fr.position) as Tox.Friend);
MainWindow.c:1201:4: error: unknown type name ‘GListStore’
MainWindow.c:1205:4: error: unknown type name ‘GListStore’
/home/travis/build/RicinApp/Ricin/src/MainWindow.vala:186:40: error: ‘GListModel’ undeclared (first use in this function)
friend.position = friends.get_n_items ();
/home/travis/build/RicinApp/Ricin/src/MainWindow.vala:186:51: error: expected expression before ‘)’ token
friend.position = friends.get_n_items ();
MainWindow.c:1411:3: error: unknown type name ‘GListStore’
MainWindow.c:1415:3: error: unknown type name ‘GListStore’
/home/travis/build/RicinApp/Ricin/src/MainWindow.vala:203:39: error: ‘GListModel’ undeclared (first use in this function)
friend.position = friends.get_n_items ();
/home/travis/build/RicinApp/Ricin/src/MainWindow.vala:203:50: error: expected expression before ‘)’ token
friend.position = friends.get_n_items ();
MainWindow.c:1601:2: error: unknown type name ‘GListStore’
/home/travis/build/RicinApp/Ricin/src/MainWindow.vala:125:37: error: ‘GListModel’ undeclared (first use in this function)
this.friendlist.bind_model (this.friends, fr => new FriendListRow (fr as Tox.Friend));
/home/travis/build/RicinApp/Ricin/src/MainWindow.vala:125:48: error: expected expression before ‘)’ token
this.friendlist.bind_model (this.friends, fr => new FriendListRow (fr as Tox.Friend));
MainWindow.c:1935:5: error: unknown type name ‘GListStore’
MainWindow.c:1939:5: error: unknown type name ‘GListStore’
/home/travis/build/RicinApp/Ricin/src/MainWindow.vala:135:53: error: expected expression before ‘)’ token
friend.position = friends.get_n_items ();
MainWindow.c: In function ‘ricin_main_window_instance_init’:
MainWindow.c:3723:2: error: unknown type name ‘GListStore’
Possible cause: #19
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.