Skip to content
This repository was archived by the owner on Jun 4, 2026. It is now read-only.

Commit 5ff7c93

Browse files
committed
Release v0.9.7.6: Improve avatar interoperability (vCard) and fix AppImage audio plugins
1 parent 23cd07e commit 5ff7c93

5 files changed

Lines changed: 29 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ All notable changes to DinoX will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.9.7.6] - 2026-01-11
9+
10+
### Fixed
11+
- **Interoperability**: When setting a user avatar, it is now published to both PEP (XEP-0084, OMEMO-encrypted capable) and vCard-temp (XEP-0054, legacy compatibility). This fixes avatar visibility issues in clients like Conversations.
12+
813
## [0.9.7.5] - 2026-01-10
914

1015
### Fixed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
RELEASE 0.9.7.5
1+
RELEASE 0.9.7.6

libdino/src/service/avatar_manager.vala

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ public class AvatarManager : StreamInteractionModule, Object {
197197
return get_avatar_hash(account, jid) != null;
198198
}
199199

200-
public void publish(Account account, File file) {
200+
public async void publish(Account account, File file) {
201201
debug("Publish avatar from %s", file.get_uri());
202202
FileInputStream file_stream = null;
203203
try {
@@ -218,8 +218,27 @@ public class AvatarManager : StreamInteractionModule, Object {
218218
pixbuf.save_to_buffer(out buffer, "png");
219219
XmppStream stream = stream_interactor.get_stream(account);
220220
if (stream != null) {
221+
// 1. Publish via PEP (XEP-0084)
221222
Xmpp.Xep.UserAvatars.publish_png(stream, buffer, pixbuf.width, pixbuf.height);
222223
debug("Publishing %u png bytes via user-avatars.", buffer.length);
224+
225+
// 2. Publish via vCard-temp (XEP-0054) for compatibility (Conversations etc.)
226+
try {
227+
var vcard = yield Xmpp.Xep.VCard.fetch_vcard(stream);
228+
if (vcard == null) vcard = new Xmpp.Xep.VCard.VCardInfo();
229+
230+
vcard.photo = new Bytes(buffer);
231+
vcard.photo_type = "image/png";
232+
233+
yield Xmpp.Xep.VCard.publish_vcard(stream, vcard);
234+
debug("Published avatar to vCard-temp (XEP-0054).");
235+
236+
// Update local cache immediately
237+
string sha1 = Checksum.compute_for_data(ChecksumType.SHA1, buffer);
238+
set_avatar_hash(account, account.bare_jid, sha1, Source.VCARD);
239+
} catch (Error e) {
240+
warning("Failed to publish vCard-temp avatar: %s", e.message);
241+
}
223242
} else {
224243
warning("No stream when trying to publish.");
225244
}

main/src/view_model/preferences_dialog.vala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public class Dino.Ui.ViewModel.PreferencesDialog : Object {
6767
}
6868

6969
public void set_avatar_file(Account account, File file) {
70-
stream_interactor.get_module(AvatarManager.IDENTITY).publish(account, file);
70+
stream_interactor.get_module(AvatarManager.IDENTITY).publish.begin(account, file);
7171
}
7272

7373
public void remove_avatar(Account account) {

scripts/build-appimage.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,8 @@ copy_dependencies() {
288288
libgstinterleave.so \
289289
libgstlevel.so \
290290
libgstisomp4.so \
291-
libgstvoaacenc.so
291+
libgstvoaacenc.so \
292+
libgstaudiofx.so
292293
do
293294
find "$GST_PLUGIN_DIR" -name "$plugin" -exec cp {} "$APPDIR/usr/lib/gstreamer-1.0/" \; 2>/dev/null || true
294295
done

0 commit comments

Comments
 (0)