gajim merge requestshttps://dev.gajim.org/gajim/gajim/-/merge_requests2023-10-23T09:51:14Zhttps://dev.gajim.org/gajim/gajim/-/merge_requests/881feat: Add support for XEP-0461: Message Replies2023-10-23T09:51:14ZDaniel Brötzmannfeat: Add support for XEP-0461: Message RepliesImplementation of [XEP-0461: Message Replies](https://xmpp.org/extensions/xep-0461.html)
Currently compatible with Dino's and Movim's implementation (after https://github.com/movim/movim/pull/1128). It is planned to update XEP-0461 with...Implementation of [XEP-0461: Message Replies](https://xmpp.org/extensions/xep-0461.html)
Currently compatible with Dino's and Movim's implementation (after https://github.com/movim/movim/pull/1128). It is planned to update XEP-0461 with a properly specified fallback namespace, see https://github.com/xsf/xeps/pull/1188.
What needs to be fixed:
* [ ] Correcting a reply works once. After re-opening the chat, the corrected reply is gone (no text).
* [ ] If a replied-to message gets corrected by others, it's not reflected in the ReferredMessageWidget instantly
* [ ] Clicking [view message] in reply-mode only works if you previously focused the ConversationView.
Depends on gajim/python-nbxmpp!65
Closes #11075
![image](/uploads/a21f0d387ed20da39ee462d95284629f/image.png)https://dev.gajim.org/gajim/gajim/-/merge_requests/891Draft: feat: Add XEP-0444: Message Reactions2023-06-15T19:52:15ZDaniel BrötzmannDraft: feat: Add XEP-0444: Message ReactionsDraft of a [XEP-0444: Message Reactions](https://xmpp.org/extensions/xep-0444.html) implementation.
What has been done so far:
* [x] ReactionsBar widget, which displays reactions and lets you add or remove own reactions
What needs to...Draft of a [XEP-0444: Message Reactions](https://xmpp.org/extensions/xep-0444.html) implementation.
What has been done so far:
* [x] ReactionsBar widget, which displays reactions and lets you add or remove own reactions
What needs to be done:
* [ ] Database storage (data structure, ...)
* [ ] Handling of incoming reactions
* [ ] Handling for outgoing reactions
* [ ] Menu item for adding a reaction
* [ ] Determining support
_For demonstration purposes, a ReactionsBar is added to every message._
![9176bbbd-608e-4492-a288-6983a76c4f27](/uploads/94093fc10134b1c3f11b5d4598eff7fe/9176bbbd-608e-4492-a288-6983a76c4f27.png)https://dev.gajim.org/gajim/gajim/-/merge_requests/1023feat: Support for Message Displayed Synchronization2024-03-26T17:01:40ZNicocofeat: Support for Message Displayed SynchronizationThis depends on https://dev.gajim.org/gajim/python-nbxmpp/-/merge_requests/84
This uses the current implementation of read state in gajim, ie, it only works when receiving events for the latest message in a chat. This could be improved ...This depends on https://dev.gajim.org/gajim/python-nbxmpp/-/merge_requests/84
This uses the current implementation of read state in gajim, ie, it only works when receiving events for the latest message in a chat. This could be improved but is out of scope of this MR.
Fixes: https://dev.gajim.org/gajim/gajim/-/issues/11785https://dev.gajim.org/gajim/gajim/-/merge_requests/990fix: Preview: Enable GIF playback2024-01-01T23:43:17ZDaniel Brötzmannfix: Preview: Enable GIF playbackThis MR adds back GIF playback.This MR adds back GIF playback.https://dev.gajim.org/gajim/gajim/-/merge_requests/980WIP: feat: display markers for MUCs2024-02-02T08:44:05ZNicocoWIP: feat: display markers for MUCsUses the "read marker row" for MUCs.
Implements: https://dev.gajim.org/gajim/gajim/-/issues/11275
![Screenshot_20231002_181336](/uploads/31a5a4dcd43963413155e7799ba01b78/Screenshot_20231002_181336.png)
A limitation though, this is onl...Uses the "read marker row" for MUCs.
Implements: https://dev.gajim.org/gajim/gajim/-/issues/11275
![Screenshot_20231002_181336](/uploads/31a5a4dcd43963413155e7799ba01b78/Screenshot_20231002_181336.png)
A limitation though, this is only shown for the last message row. So, you only know who has read this latest message that was read by at least one person.https://dev.gajim.org/gajim/gajim/-/merge_requests/960feat: Chat: Restore chats with previous read state2024-03-19T11:05:01ZDaniel Brötzmannfeat: Chat: Restore chats with previous read stateSaves and restores a chat to its previous read state, so readers can start reading messages from where they left the chat unattended. A dotted line marks the read state. Read state is set to the last message as soon as a chat is marked a...Saves and restores a chat to its previous read state, so readers can start reading messages from where they left the chat unattended. A dotted line marks the read state. Read state is set to the last message as soon as a chat is marked as 'read', either bei scrolling all the way down or by actively marking it as 'read'.https://dev.gajim.org/gajim/gajim/-/merge_requests/1007Draft: feat: Support for message threads2024-02-21T22:19:06ZNicocoDraft: feat: Support for message threadsImplements: #11058 (and #11271)
This MR adds support for threads [like cheogram does](https://invidious.protokolla.fi/watch?v=apazJINa1UI).
A video of what it looks like:
![gajim-identicons-2024-02-14_14.45.08](/uploads/05e2c7ede693b5...Implements: #11058 (and #11271)
This MR adds support for threads [like cheogram does](https://invidious.protokolla.fi/watch?v=apazJINa1UI).
A video of what it looks like:
![gajim-identicons-2024-02-14_14.45.08](/uploads/05e2c7ede693b5116d9c041460133939/gajim-identicons-2024-02-14_14.45.08.mp4)
Check-list:
- [x] Convince @lovetox that this is a good idea
- [ ] Make threads collapsable
- [ ] Convince @lovetox that identicons are a good idea
- [ ] Add a hint next to the message input box to specify that we are going to post in a given thread (…the identicon?)
- [ ] Change the identicon generation algorithm so that it matches Cheogram's (see below)
- [ ] Remove empty date rows in conversation view
- [ ] Figure out how to get the size of the message row icons and un-hardcode the 10×10px size
The identicons generated from the thread ID are different than those from Cheogram ([implementation here](https://paste.sr.ht/~singpolyma/bf63cfa4726ef6114f04b12ffc467d510d56cffe))
![cheogram-identicons](/uploads/2908de8e61ba2e9e5ff48ba3cfd20027/cheogram-identicons.png)
<img src="/uploads/efd48a194627415495c39b76f5319ed6/cheogram-identicons.png" width="400">https://dev.gajim.org/gajim/gajim/-/merge_requests/995Draft: DTLS-SRTP support for Jingle2024-03-26T20:15:42ZIvan ShapovalovDraft: DTLS-SRTP support for JingleThis is an implementation of DTLS-SRTP negotiation in Jingle sessions using gstreamer+farstream RTP stack.
This is a draft PR including a substantial amount of general refactoring of Jingle code.
Depends on:
- https://gitlab.freedeskto...This is an implementation of DTLS-SRTP negotiation in Jingle sessions using gstreamer+farstream RTP stack.
This is a draft PR including a substantial amount of general refactoring of Jingle code.
Depends on:
- https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5951
- https://gitlab.freedesktop.org/farstream/farstream/-/merge_requests/8
A testing build lives at https://intelfx.name/flatpak/intelfx.flatpakrepo (org.gajim.gajim.Devel).https://dev.gajim.org/gajim/gajim/-/merge_requests/966New Database layout2024-03-25T21:59:34ZPhilipp Höristphilipp@hoerist.comNew Database layoutSee #11583See #11583https://dev.gajim.org/gajim/gajim/-/merge_requests/964Show emoji-only messages with a larger font2024-02-19T10:52:21ZMarcin MielniczukShow emoji-only messages with a larger fontThis still requires some simple packaging fixes (flatpak/debian), but I'll do them once the change passes the preliminary review.This still requires some simple packaging fixes (flatpak/debian), but I'll do them once the change passes the preliminary review.https://dev.gajim.org/gajim/gajim/-/merge_requests/951imprv: Add Quit dialog for setting window preference2024-02-17T10:59:51ZDaniel Brötzmannimprv: Add Quit dialog for setting window preferenceFixes #11481
![image](/uploads/227e0835565b4999b829885910035fb5/image.png)Fixes #11481
![image](/uploads/227e0835565b4999b829885910035fb5/image.png)https://dev.gajim.org/gajim/gajim/-/merge_requests/1027feat: Avatars in notifications for Linux for all desktop envs2024-03-28T05:56:03ZNicocofeat: Avatars in notifications for Linux for all desktop envsI use a [minimalist notification manager (dunst)](https://dunst-project.org/) and while it can display images, it does not work if the "icon" is a `Gdk.Pixbuf`, which I guess is GNOME-specific. Passing a `Gio.FileIcon` does work though a...I use a [minimalist notification manager (dunst)](https://dunst-project.org/) and while it can display images, it does not work if the "icon" is a `Gdk.Pixbuf`, which I guess is GNOME-specific. Passing a `Gio.FileIcon` does work though and that's what this commit does.
It requires writing the icon to disk, but it seems we can easily cache that using the hash of the `cairo.Surface` object, so I don't think the performance impact is going to be an issue.https://dev.gajim.org/gajim/gajim/-/merge_requests/1026feat: Hide/show main menu bar2024-03-28T05:40:21ZNicocofeat: Hide/show main menu barThis make the app main menu hideable with a keyboard shortcut, and a menu entry.
Menus are so old-school anyway!This make the app main menu hideable with a keyboard shortcut, and a menu entry.
Menus are so old-school anyway!https://dev.gajim.org/gajim/gajim/-/merge_requests/1025Calls2024-03-27T21:33:43ZwusspussCallsIntroduces audio and video calls functionality, including Windows support (not packaged for Windows yet, but run successfully inside a vm with video and on real hardware without video - probably just a packaging issue). For Linux there's...Introduces audio and video calls functionality, including Windows support (not packaged for Windows yet, but run successfully inside a vm with video and on real hardware without video - probably just a packaging issue). For Linux there's a build flatpak build sample under .Devel.yaml
There's a [pre-built flatpak](https://files.catbox.moe/jm1y7z.flatpak) for the curious
It's worth pointing out that the new [libdatachannel](https://github.com/paullouisageneau/libdatachannel) dependency replaces farstream and libnice. This branch doesn't remove farstream-related code and in general doesn't mess with anything other than calls. But even for file transfers (which iiuc are currently broken anyway), libdatachannel can later replace farstream - especially now that Conversations and Dino implement file transfers with \`urn:xmpp:jingle:transports:webrtc-datachannel:1\` - that's a perfect match for the future. Moreover, libdatachannel is actively maintained and cross platform (including Windows), unlike farstream.
The new AV-related code is covered by tests. Most of those are skipped by default: they try to display video and play audio in different ways via libdatachannel, which means they're not as quick and need a network connection. They can be run by setting `TEST_SOUNDS` environment variable. With them enabled, the whole test suite takes about a minute to run on my machine, makes noises and pops up windows.
For those interested in Windows: here are draft pkgbuilds for windows: [libdatachannel](https://github.com/wusspuss/libdatachannel-mingw-pkgbuild) and [bindings](https://github.com/wusspuss/libdatachannel-python-mingw-pkgbuild). I have successfully run audio and video calls on win11 in qemu (had to use [mesa](https://fdossena.com/?p=mesa%2Findex.frag) because of qemu), but a person from the chatroom told me they had trouble with `gtkglsink` on a windows host and got it to work using `gtksink`. I can't test it yet because I don't have a Windows host, but I suspect they just didn't install some gst-... package properly. We may want to just replace gtkglsink with gtksink.https://dev.gajim.org/gajim/gajim/-/merge_requests/1024imprv: Allow drag'n'dropping http URIs2024-03-26T20:22:59ZNicocoimprv: Allow drag'n'dropping http URIsThis commit makes it possible to drag'n'drop images (and other content types) from firefox (and probably other apps) to send them in a chat.
This does not trigger the file upload dialog but instead sends the URL in a `<oob>` tag (if it ...This commit makes it possible to drag'n'drop images (and other content types) from firefox (and probably other apps) to send them in a chat.
This does not trigger the file upload dialog but instead sends the URL in a `<oob>` tag (if it is not a link to a web page). This is a rather small change but I believe this is very nice UX/QoL change.https://dev.gajim.org/gajim/gajim/-/merge_requests/1022cq: Fix some typos2024-03-16T09:32:33ZAndrécq: Fix some typoshttps://dev.gajim.org/gajim/gajim/-/merge_requests/1021cq: Fix style issues revealed by ruff 0.3.22024-03-16T09:32:29ZAndrécq: Fix style issues revealed by ruff 0.3.2https://dev.gajim.org/gajim/gajim/-/merge_requests/1013Draft: Implement Send Voice Messages2024-03-03T21:43:43ZmesoniumDraft: Implement Send Voice MessagesVery much POC and WIP at this stage. Only tested and only works under Linux with PulseAudio right now.Very much POC and WIP at this stage. Only tested and only works under Linux with PulseAudio right now.https://dev.gajim.org/gajim/gajim/-/merge_requests/1012fix: Check for XEP-0184 delivery receipts before merging message rows2024-03-06T15:14:38ZNicocofix: Check for XEP-0184 delivery receipts before merging message rowsFixes: https://dev.gajim.org/gajim/gajim/-/issues/11632Fixes: https://dev.gajim.org/gajim/gajim/-/issues/11632https://dev.gajim.org/gajim/gajim/-/merge_requests/1011imprv: Display emoji-only messages with a larger font2024-03-10T21:57:02ZNicocoimprv: Display emoji-only messages with a larger fontThis should supersede https://dev.gajim.org/gajim/gajim/-/merge_requests/964
I rebased on top of master, and added the emoji dependency to the flatpak, windows and debian builds.This should supersede https://dev.gajim.org/gajim/gajim/-/merge_requests/964
I rebased on top of master, and added the emoji dependency to the flatpak, windows and debian builds.