Philipp Hörist pushed to branch master at gajim / python-nbxmpp
Commits:
b364e0e2 by lovetox at 2022-07-27T09:55:26+02:00
chore: Update git-chglog config
- - - - -
e3f6f6dd by lovetox at 2022-07-27T09:56:26+02:00
chore: Add bump_version.py
- - - - -
8a17be56 by lovetox at 2022-07-27T10:18:58+02:00
chore: Format ChangeLog
- Use nbxmpp instead of python-nbxmpp
- Unify indentation
- - - - -
06c2be5a by lovetox at 2022-07-27T10:19:35+02:00
release: 3.1.1
- - - - -
6 changed files:
- .chglog/CHANGELOG.tpl.md
- .chglog/config.yml
- ChangeLog
- nbxmpp/__init__.py
- + scripts/bump_version.py
- setup.cfg
Changes:
=====================================
.chglog/CHANGELOG.tpl.md
=====================================
@@ -1,26 +1,11 @@
-{{ if .Versions -}}
-<a name="unreleased"></a>
-## [Unreleased]
-
-{{ if .Unreleased.CommitGroups -}}
-{{ range .Unreleased.CommitGroups -}}
-{{ .Title }}
-
-{{ range .Commits -}}
- * {{if .Refs}}{{range .Refs}}#{{.Ref}} {{end}}{{end}}{{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
-{{ end }}
-{{ end -}}
-{{ end -}}
-{{ end -}}
-
-
{{ range .Versions }}
-<a name="{{ .Tag.Name }}"></a>
-## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
+nbxmpp {{ .Tag.Name }} ({{ datetime "02 Jan 2006" .Tag.Date }})
+
{{ range .CommitGroups -}}
-{{ .Title }}
+{{ if .Title }} {{ .Title }}{{end}}
+
{{ range .Commits -}}
- * {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
+{{ if .Subject }} * {{ .Subject }}{{end}}{{if .Refs}} ({{range .Refs}}#{{.Ref}}{{end}}){{end}}
{{ end }}
{{ end -}}
@@ -32,13 +17,7 @@
{{ end }}
{{ end -}}
{{ end -}}
-{{ end -}}
-{{- if .Versions }}
-[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
-{{ range .Versions -}}
-{{ if .Tag.Previous -}}
-[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
-{{ end -}}
+{{break}}
+
{{ end -}}
-{{ end -}}
\ No newline at end of file
=====================================
.chglog/config.yml
=====================================
@@ -9,6 +9,7 @@ options:
Type:
- feat
- imprv
+ - change
- perf
- fix
commit_groups:
@@ -16,11 +17,13 @@ options:
title_order:
- feat
- imprv
+ - change
- perf
- fix
title_maps:
feat: New
imprv: Improvements
+ change: Change
perf: Performance
fix: Bug Fixes
header:
@@ -34,3 +37,6 @@ options:
refs:
actions:
- Fixes
+ notes:
+ keywords:
+ - NOTES
=====================================
ChangeLog
=====================================
@@ -1,266 +1,280 @@
-python-nbxmpp 3.1.0 (28 May 2022)
+nbxmpp 3.1.1 (27 Jul 2022)
- New
-
- * Examples: Allow to connect with different modes
-
- Bug Fixes
+ Improvements
+
+ * Add more datetime test cases
+
+ Performance
+
+ * Use cache when calling JID.new_as_bare()
+
+ Bug Fixes
+
+ * Allow handlers to connect to presence type available
+
+nbxmpp 3.1.0 (28 May 2022)
+
+ New
- * Client: Disconnect after stream restart in Login mode
+ * Examples: Allow to connect with different modes
-python-nbxmpp 3.0.2 (18 May 2022)
+ Bug Fixes
+
+ * Client: Disconnect after stream restart in Login mode
- Bug Fixes
+nbxmpp 3.0.2 (18 May 2022)
- * Roster: Raise exception if a full jid is found
- * AdHoc: Don’t raise on empty nodes
- * Roster: Don’t fail when no roster attribute is found
- * #126 Remove redundant wheel dependency
+ Bug Fixes
+
+ * Roster: Raise exception if a full jid is found
+ * AdHoc: Don’t raise on empty nodes
+ * Roster: Don’t fail when no roster attribute is found
+ * #126 Remove redundant wheel dependency
-python-nbxmpp 3.0.1 (09 May 2022)
+nbxmpp 3.0.1 (09 May 2022)
- Bugfix
+ Bugfix
- * Fix non-installable release
+ * Fix non-installable release
-python-nbxmpp 3.0.0 (09 May 2022)
+nbxmpp 3.0.0 (09 May 2022)
- New
+ New
- * Add Roster module
- * Add Last Activity module
- * Add EntityTime module
- * Bookmarks: Add extensions support
- * Add Message Moderation
- * Implement SCRAM-SHA-512
+ * Add Roster module
+ * Add Last Activity module
+ * Add EntityTime module
+ * Bookmarks: Add extensions support
+ * Add Message Moderation
+ * Implement SCRAM-SHA-512
- Bugfixes
+ Bugfixes
- * AdHoc: Improve XEP-0050 Compliance
- * Correctly handle RSM count request
- * Correction: Ignore messages where message id == replace id
- * Blocking: Don’t abort processing after parsing unblocks
- * Handle multiple stanza-id elements
+ * AdHoc: Improve XEP-0050 Compliance
+ * Correctly handle RSM count request
+ * Correction: Ignore messages where message id == replace id
+ * Blocking: Don’t abort processing after parsing unblocks
+ * Handle multiple stanza-id elements
- Others
+ Others
- * Many breaking changes to methods and structs
+ * Many breaking changes to methods and structs
-python-nbxmpp 2.0.6 (14 March 2022)
+nbxmpp 2.0.6 (14 March 2022)
- Bugfixes
+ Bugfixes
- * Don’t fail on invalid host meta file
+ * Don’t fail on invalid host meta file
-python-nbxmpp 2.0.5 (13 March 2022)
+nbxmpp 2.0.5 (13 March 2022)
- Bugfixes
+ Bugfixes
- * Fix bookmarks compat namespace
- * Resolve websocket uri only via https
+ * Fix bookmarks compat namespace
+ * Resolve websocket uri only via https
-python-nbxmpp 2.0.4 (09 October 2021)
+nbxmpp 2.0.4 (09 October 2021)
- Bugfixes
+ Bugfixes
- * Ignore messages with incorrect id
- * AdHoc: Make parsing AdHoc commands more compliant
+ * Ignore messages with incorrect id
+ * AdHoc: Make parsing AdHoc commands more compliant
-python-nbxmpp 2.0.3 (24 July 2021)
+nbxmpp 2.0.3 (24 July 2021)
- Bugfixes
+ Bugfixes
- * Correctly handle RSM count request
- * Improve XEP-0050 Compliance
- * GSSAPI: Catch OSError
+ * Correctly handle RSM count request
+ * Improve XEP-0050 Compliance
+ * GSSAPI: Catch OSError
-python-nbxmpp 2.0.2 (18 February 2021)
+nbxmpp 2.0.2 (18 February 2021)
- Bugfixes
+ Bugfixes
- * Add get_text() for Error Base class
- * Client: Remove GSSAPI from default mechanisms
- * Presence: Fix is_nickname_changed check
- * UserAvatar: Add default argument
+ * Add get_text() for Error Base class
+ * Client: Remove GSSAPI from default mechanisms
+ * Presence: Fix is_nickname_changed check
+ * UserAvatar: Add default argument
-python-nbxmpp 2.0.1 (07 February 2021)
+nbxmpp 2.0.1 (07 February 2021)
- New
+ New
- * Properties: is_from_us() Method
+ * Properties: is_from_us() Method
- Bugfixes
+ Bugfixes
- * Fix handling invalid websocket uris
+ * Fix handling invalid websocket uris
-python-nbxmpp 2.0.0 (29 December 2020)
+nbxmpp 2.0.0 (29 December 2020)
- New
+ New
- * New JID object
- * Add JID Escaping (XEP-0106) support
- * Add VCard4 (XEP-0292) support
- * Make module calls generator based
- * Add GSSAPI support (XEP-0233)
- * Simplify and harmonize module API
+ * New JID object
+ * Add JID Escaping (XEP-0106) support
+ * Add VCard4 (XEP-0292) support
+ * Make module calls generator based
+ * Add GSSAPI support (XEP-0233)
+ * Simplify and harmonize module API
-python-nbxmpp 1.0.2 (14 August 2020)
+nbxmpp 1.0.2 (14 August 2020)
- New
+ New
- * Client: Expose more information about the connection
- * Client: set_ignored_tls_errors() allow to pass None
- * Add method to disable stream management
+ * Client: Expose more information about the connection
+ * Client: set_ignored_tls_errors() allow to pass None
+ * Add method to disable stream management
- Bugfixes
+ Bugfixes
- * TCP: Set input/output closed on finalize()
- * TCP: Catch Runtime error
- * Perform UTS46 mapping on domain names
+ * TCP: Set input/output closed on finalize()
+ * TCP: Catch Runtime error
+ * Perform UTS46 mapping on domain names
-python-nbxmpp 1.0.1 (07 July 2020)
+nbxmpp 1.0.1 (07 July 2020)
- New
+ New
- * Add XEP-0377 support
- * MUC: Return message id when using inivite()
+ * Add XEP-0377 support
+ * MUC: Return message id when using inivite()
- Bugfixes
+ Bugfixes
- * OMEMO: Correctly parse prekey value
- * Client: Determine protocol and type correctly if a custom host is used
- * Smacks: Don't fail on saving error replies
+ * OMEMO: Correctly parse prekey value
+ * Client: Determine protocol and type correctly if a custom host is used
+ * Smacks: Don't fail on saving error replies
-python-nbxmpp 1.0.0 (18 June 2020)
+nbxmpp 1.0.0 (18 June 2020)
- * Library rewritten in most parts
- * Replace BOSH with Websocket
- * Add new example client
- * Many other improvements
+ * Library rewritten in most parts
+ * Replace BOSH with Websocket
+ * Add new example client
+ * Many other improvements
- Known Issues:
+ Known Issues:
- * Currently no Client Cert support
+ * Currently no Client Cert support
-python-nbxmpp 0.6.10 (19 February 2019)
+nbxmpp 0.6.10 (19 February 2019)
- * Add support for domain based name in features for GSSAPI
- * Fix usage of BOSH
- * Fix Jingle hash namespace
+ * Add support for domain based name in features for GSSAPI
+ * Fix usage of BOSH
+ * Fix Jingle hash namespace
-python-nbxmpp 0.6.9 (10 January 2019)
+nbxmpp 0.6.9 (10 January 2019)
- * Always bind after SM failed Fixes #64
- * Dont try and guess system language
+ * Always bind after SM failed Fixes #64
+ * Dont try and guess system language
-python-nbxmpp 0.6.8 (07 October 2018)
+nbxmpp 0.6.8 (07 October 2018)
- * Reset SM counter after receiving <enabled>
- * Issue event when SM resume fails
+ * Reset SM counter after receiving <enabled>
+ * Issue event when SM resume fails
-python-nbxmpp 0.6.7 (19 August 2018)
+nbxmpp 0.6.7 (19 August 2018)
- * Raise default TLS version to 1.2
- * Remove DIGEST-MD5 from the default auth mechs
- * Add STANZA RECEIVED Event (Some servers send more than one stanza in one packet)
- * Add alternative locations to load TLS certs from
+ * Raise default TLS version to 1.2
+ * Remove DIGEST-MD5 from the default auth mechs
+ * Add STANZA RECEIVED Event (Some servers send more than one stanza in one packet)
+ * Add alternative locations to load TLS certs from
-python-nbxmpp 0.6.6 (20 May 2018)
+nbxmpp 0.6.6 (20 May 2018)
- * Record all SSL errors instead of only the first
- * Pass arguments to plugin/plugout methods
- * Allow the Roster to be initalized without requesting it from the server
+ * Record all SSL errors instead of only the first
+ * Pass arguments to plugin/plugout methods
+ * Allow the Roster to be initalized without requesting it from the server
-python-nbxmpp 0.6.5 (30 April 2018)
+nbxmpp 0.6.5 (30 April 2018)
- * Fix BOSH usage (don't set ALPN)
- * Better handling of certificate files
+ * Fix BOSH usage (don't set ALPN)
+ * Better handling of certificate files
-python-nbxmpp 0.6.4 (17 March 2018)
+nbxmpp 0.6.4 (17 March 2018)
- * Fix SOCKS5 usage
+ * Fix SOCKS5 usage
-python-nbxmpp 0.6.3 (26 January 2018)
+nbxmpp 0.6.3 (26 January 2018)
- * Add ALPN and SNI support for when using DirectTLS
- * Bugfixes
+ * Add ALPN and SNI support for when using DirectTLS
+ * Bugfixes
-python-nbxmpp 0.6.2 (27 December 2017)
+nbxmpp 0.6.2 (27 December 2017)
- * Correctly load client certs
- * Warn on any error in the certificate chain
- * Fixed a traceback loop
+ * Correctly load client certs
+ * Warn on any error in the certificate chain
+ * Fixed a traceback loop
-python-nbxmpp 0.6.1 (29 November 2017)
+nbxmpp 0.6.1 (29 November 2017)
- * Add new getStanzaIDAttrs method
- * Fix BOSH connexion
- * stop using PyOpenSSL for random generator
+ * Add new getStanzaIDAttrs method
+ * Fix BOSH connexion
+ * stop using PyOpenSSL for random generator
-python-nbxmpp 0.6.0 (25 September 2017)
+nbxmpp 0.6.0 (25 September 2017)
- * Add new getOriginID/SetOriginID method for Messages
- * Add new getJid() method for Protocol
- * getTagAttr() accepts now a namespace argument
- * Add new `protocol` argument for getTag()
- * Add new XEP Namespaces
+ * Add new getOriginID/SetOriginID method for Messages
+ * Add new getJid() method for Protocol
+ * getTagAttr() accepts now a namespace argument
+ * Add new `protocol` argument for getTag()
+ * Add new XEP Namespaces
-python-nbxmpp 0.5.6 (03 June 2017)
+nbxmpp 0.5.6 (03 June 2017)
* Support XEP-0198 Version 1.5.2
* Add new XEP Namespaces
-python-nbxmpp 0.5.5 (30 January 2017)
+nbxmpp 0.5.5 (30 January 2017)
* Some cleanup
* Add some namespaces
-python-nbxmpp 0.5.4 (04 September 2016)
+nbxmpp 0.5.4 (04 September 2016)
* Fix SCRAM authentication
* Fix BOSH connection with UTF-8 messages
* Fix smacks implementation
* Use uuid in stanza ids
-python-nbxmpp 0.5.3 (13 July 2015)
+nbxmpp 0.5.3 (13 July 2015)
* Fix receiving long utf8 strings under py3
* Fix issue with pyopenssl 0.15.1
* Fix decoding issues
-python-nbxmpp 0.5.2 (27 December 2014)
+nbxmpp 0.5.2 (27 December 2014)
* Fix BOSH HTTP requests
* Fix handling of binary SASL data for mechanism GSSAPI
* Update MAM namespace
-python-nbxmpp 0.5.1 (04 October 2014)
+nbxmpp 0.5.1 (04 October 2014)
* Fix printing network errors in a non-utf-8 console
-python-nbxmpp 0.5 (02 July 2014)
+nbxmpp 0.5 (02 July 2014)
* support both python2 and python3
* Fix storing server certificate when there is no error
-python-nbxmpp 0.4 (15 March 2014)
+nbxmpp 0.4 (15 March 2014)
* Ability to configure TLS protocol version
* Add support for SCRAM-SHA-1-PLUS
* Security improvements
-python-nbxmpp 0.3 (23 December 2013)
+nbxmpp 0.3 (23 December 2013)
* Improve security level
* Ability to configure cipher list
* Store only depth 0 SSL certificate
-python-nbxmpp 0.2 (26 July 2013)
+nbxmpp 0.2 (26 July 2013)
* Add some namespace
* do TLS handshake without blocking
* store all SSL errors instead of only last one
-python-nbxmpp 0.1 (05 August 2012)
+nbxmpp 0.1 (05 August 2012)
* Initial release
=====================================
nbxmpp/__init__.py
=====================================
@@ -4,4 +4,4 @@ from .protocol import *
gi.require_version('Soup', '2.4')
-__version__: str = '3.1.0'
+__version__: str = '3.1.1'
=====================================
scripts/bump_version.py
=====================================
@@ -0,0 +1,67 @@
+#!/usr/bin/env python3
+
+import re
+import argparse
+from pathlib import Path
+import subprocess
+
+REPO_DIR = Path(__file__).resolve().parent.parent
+
+
+INIT = REPO_DIR / 'nbxmpp' / '__init__.py'
+CFG = REPO_DIR / 'setup.cfg'
+CHANGELOG = REPO_DIR / 'ChangeLog'
+
+VERSION_RX = r'\d+\.\d+\.\d+'
+
+
+def get_current_version() -> str:
+ content = INIT.read_text(encoding='utf8')
+ match = re.search(VERSION_RX, content)
+ if match is None:
+ exit('Unable to find current version')
+ return match[0]
+
+
+def bump_version(current_version: str, new_version: str) -> None:
+ content = INIT.read_text(encoding='utf8')
+ content = content.replace(current_version, new_version, 1)
+ INIT.write_text(content, encoding='utf8')
+
+ content = CFG.read_text(encoding='utf8')
+ content = content.replace(current_version, new_version, 1)
+ CFG.write_text(content, encoding='utf8')
+
+
+def make_changelog(new_version: str) -> None:
+
+ cmd = [
+ 'git-chglog',
+ '--next-tag',
+ new_version
+ ]
+
+ result = subprocess.run(cmd,
+ cwd=REPO_DIR,
+ text=True,
+ check=True,
+ capture_output=True)
+
+ changes = result.stdout
+ changes = changes.removeprefix('\n')
+
+ current_changelog = CHANGELOG.read_text()
+
+ with CHANGELOG.open('w') as f:
+ f.write(changes + current_changelog)
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(description='Bump Version')
+ parser.add_argument('version', help='The new version, e.g. 1.5.0')
+ args = parser.parse_args()
+
+ current_version = get_current_version()
+
+ bump_version(current_version, args.version)
+ make_changelog(args.version)
=====================================
setup.cfg
=====================================
@@ -1,6 +1,6 @@
[metadata]
name = nbxmpp
-version = 3.1.0
+version = 3.1.1
description = XMPP Library
author = Yann Leboulanger, Philipp Hoerist
author_email = gajim-devel(a)gajim.org
View it on GitLab: https://dev.gajim.org/gajim/python-nbxmpp/-/compare/c113f08ce75bfe1d068759c…
--
View it on GitLab: https://dev.gajim.org/gajim/python-nbxmpp/-/compare/c113f08ce75bfe1d068759c…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
b7bc50d4 by lovetox at 2022-07-27T09:18:04+02:00
chore: Update ChangeLog
- Remove duplicated entries from last release
- - - - -
1 changed file:
- ChangeLog
Changes:
=====================================
ChangeLog
=====================================
@@ -4,8 +4,6 @@ Gajim 1.4.7 (24 Jul 2022)
* Startup: Show hint in console if Gajim is already running (#11039)
* Preview: Add setting to disable file preview (#10991)
- * Roster: Display show value in tooltip (#11010)
- * ChatActionProcessor: Improve detection of emoji shortcode start
Performance
@@ -20,17 +18,6 @@ Gajim 1.4.7 (24 Jul 2022)
* Preview: Allow manual download for all mime types (#11044)
* GroupchatInfo: Don’t set subject when loading from disco info (#11040)
* Preview: Hide download hint if we sent the file (#11036)
- * Flatpak: Fix display of tray icon using libappindicator (#10869)
- * Remote: Console scripts need a method as entry point (#11034)
- * CodeWidget: Don’t default to python for highlighting (#11012)
- * ContactInfo: Preserve groups when changing contact name (#11028)
- * CodeWidget: Don't highlight matching brackets (#11026)
- * StatusIcon: Don’t lose new message icon on state change (#11013)
- * GtkStatusIcon: Always show when Gajim has not toplevel focus
- * GroupChatNickCompletion: Only process Tab press
- * Notifications: Change Gdk window hints on Windows (#11008)
- * MessageRow: Align name label correctly
- * StatusIcon: Fix logic error on activate
Gajim 1.4.6 (07 Jul 2022)
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/b7bc50d4d6d96f9ff2cbd454bb06c684…
--
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/b7bc50d4d6d96f9ff2cbd454bb06c684…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / python-nbxmpp
Commits:
c113f08c by lovetox at 2022-07-26T14:56:05+02:00
fix: Allow handlers to connect to presence type available
- - - - -
1 changed file:
- nbxmpp/dispatcher.py
Changes:
=====================================
nbxmpp/dispatcher.py
=====================================
@@ -421,10 +421,13 @@ class StanzaDispatcher(Observable):
return
typ = stanza.getType()
- if name == 'message' and not typ:
- typ = 'normal'
- elif not typ:
- typ = ''
+ if not typ:
+ if name == 'message':
+ typ = 'normal'
+ elif name == 'presence':
+ typ = 'available'
+ else:
+ typ = ''
stanza.props = stanza.getProperties()
self._log.debug('type: %s, properties: %s', typ, stanza.props)
View it on GitLab: https://dev.gajim.org/gajim/python-nbxmpp/-/commit/c113f08ce75bfe1d068759c8…
--
View it on GitLab: https://dev.gajim.org/gajim/python-nbxmpp/-/commit/c113f08ce75bfe1d068759c8…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
54c10fd2 by lovetox at 2022-07-25T18:32:48+02:00
refactor: Make sure we create valid contacts
- - - - -
c25510a8 by lovetox at 2022-07-25T18:39:44+02:00
fix: ChatControl: Don’t assume messages always have a resource
Fixes: #11042
- - - - -
2 changed files:
- gajim/common/modules/contacts.py
- gajim/gtk/controls/chat.py
Changes:
=====================================
gajim/common/modules/contacts.py
=====================================
@@ -282,6 +282,11 @@ def supports_video(self) -> bool:
return False
def add_resource(self, resource: str) -> ResourceContact:
+ assert resource is not None
+ # Check if resource is not None because not the whole
+ # codebase is type checked and it creates hard to track
+ # problems if we create a ResourceContact without resource
+
jid = self._jid.new_with(resource=resource)
assert isinstance(self._log, LogAdapter)
contact = ResourceContact(self._log, jid, self._account)
@@ -562,6 +567,11 @@ def is_groupchat(self) -> bool:
return True
def add_resource(self, resource: str) -> GroupchatParticipant:
+ assert resource is not None
+ # Check if resource is not None because not the whole
+ # codebase is type checked and it creates hard to track
+ # problems if we create a GroupchatParticipant without resource
+
jid = self._jid.new_with(resource=resource)
assert isinstance(self._log, LogAdapter)
contact = GroupchatParticipant(self._log, jid, self._account)
=====================================
gajim/gtk/controls/chat.py
=====================================
@@ -376,8 +376,12 @@ def _on_message_received(self, event: events.MessageReceived) -> None:
if event.properties.is_sent_carbon:
kind = 'outgoing'
- resource_contact = self.contact.get_resource(event.resource)
- self.xml.phone_image.set_visible(resource_contact.is_phone)
+ visible = False
+ if event.resource is not None:
+ resource_contact = self.contact.get_resource(event.resource)
+ visible = resource_contact.is_phone
+
+ self.xml.phone_image.set_visible(visible)
self.add_message(event.msgtxt,
kind,
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/37c5aefc2f66f8add380c8c2a8816aa…
--
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/37c5aefc2f66f8add380c8c2a8816aa…
You're receiving this email because of your account on dev.gajim.org.