--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: trixie security
X-Debbugs-Cc: [email protected]
Control: affects -1 + src:errands
User: [email protected]
Usertags: pu
ABOUT MY ROLE: I'm not a member of the GNOME Team and don't have uploading
rights for this package. In spite of that I've offered to prepare this upload
because I am closely involved with the issue. I assume the GNOME Team members
are busy but will sign off on the package when you give the go-ahead.
Errands is a new-ish task manager and to-do list application that was first
included in Trixie. It's not from the GNOME Project but is part of the GNOME
Circle ecosystem and is designed to work well there. This is the current
upstream release imported from unstable/testing as-is because its changes from
the current Trixie version are minimal. (This is because the upstream folks
have been busy working on a rewrite, switching from Python to C, and not had
any other showstoppers in this Python version.)
[ Reason ]
Back in August 2025 a person filed
https://github.com/mrvladus/Errands/issues/401 "Is there a reason TLS
certificate verification is disabled by default?" which accurately summarizes
the situation. CalDAV is a flavor of HTTP used to access calendar servers which
can also store non-event-related task lists and notes on the server. Typically
HTTP Basic authentication is used to access a CalDAV server using a username
and password. If the GNOME Online Accounts subsystem already has CalDAV account
credentials stored for a user, Errands can discover those automagically, or
else credentials can be given in Errands directly. HTTP Basic authentication
sends passwords "in the clear" from HTTP's point of view, relying solely on TLS
to maintain confidentiality of both credentials and user data.
Errands doesn't implement CalDAV itself but uses the third-party python3-caldav
library to do this. For reasons the author can't quite remember (as a debugging
aid with a test server?), Errands has been passing an 'ssl_verify_cert=False'
parameter into the python3-caldav routines to access these remote servers. This
means TLS certificates are always accepted as valid even without inspection, so
security of CalDAV is compromised here, and the user is not notified that
Errands continues to function without confidentiality protection. At my
request, the upstream author promptly released 46.2.10 with this
explicitly-passed parameter removed. Now python3-caldav is free to check the
certificate. Moritz from the Debian Security Team arranged for CVE-2025-71063
to be assigned to this issue but agreed in https://bugs.debian.org/1123738#37
that this isn't urgent and doesn't need a formal security upload ("no-DSA").
[ Impact ]
Confidentiality of task and calendar data for users is no longer protected by
TLS; any attacker that can tamper with the traffic between the client and the
server, or redirect a user to a malicious phony server (for example, by forging
DNS answers for a client on a non-trustworthy LAN), can see task and calendar
data. Unlike most groupware, the user base and use case that Errands serves
makes it probable that very personal information (such as "notes to self") will
be exchanged. As TLS is also relied upon to securely perform username and
password authentication via HTTP Basic, credential theft can also be a problem.
Those same credentials are often used to access assorted services of a webmail
provider.
Errands often runs in the background or starts when a user logs into a session,
in which case these risks are exposed without user interaction. Errands caters
to mobile devices especially, so roaming to a public wireless LAN can greatly
increase these hazards with "captive portal" technology.
[ Changes ]
Development of this Python version of Errands slowed a while ago to the most
important fixes. The current version in Trixie is 46.2.8 and I am proposing to
upload 46.2.10 from unstable/Forky as-is, because the circumstances are
favorable on this occasion. The difference between these revisions is totally
and completely described by these four changes:
• translation updates which make the vast majority (about 80%) of the code
difference
• removal of the ssl_verify_cert=False parameter in Errands, letting
python3-caldav use its sane default of performing TLS checks
• a fix for a toolbar widget issue that I am not familiar with but which works
okay applied
https://github.com/mrvladus/Errands/commit/529550d36e31a3a5619cf40c8938be8865eb0b8d
• changes to unused Flatpak-building metadata that does not concern Debian nor
the conventional build system, but which hints at using a newer (to them)
version of libadwaita which is satisfied in Trixie anyway
• typo corrections
[ Tests ]
I have manually tested that this version of Errands works without any
meaningful difference, except the appearance of the toolbar may be subtly
different to correspond to the change there. Errands authenticates to my CalDAV
server (provided by posteo.de) with no reconfiguration necessary. I have not
functionally verified that Errands now rejects CalDAV servers with bogus TLS
certificates, but with the removal of the ssl_verify_cert=False flag, this job
is handed off to the python3-caldav library which should require a TLS
certificate then. (The author's report that ssl_verify_cert=False did indeed
make Errands more permissive of what it would connect to, strongly suggests the
default is not so excessively permissive.)
Automatic tests would be nice, but as new development on this Python version of
Errands is mostly stopped, as-installed (autopkgtest-style) tests would most
likely be welcome upstream but should go to the C rewrite.
[ Risks ]
There is a chance that a server could be rejected with TLS validation performed
when it would appear to work prior, but this would most likely be a major
configuration. In particular the author of Errands doesn't recall why
validation was disabled originally but one can expect it was probably for use
in a testbed that hadn't exposed problems to other clients before. This is much
less likely if a user put their credentials in GNOME Online Accounts, as that
suite would've checked TLS correctly when the account was first set up.
This TLS validation has not been reported to be a problem for anyone and it's
unlikely to. Other GNOME applications (including the GNOME Circle ecosystem,
the Dino XMPP client in particular) prescribe in their human interface
guidelines that users shouldn't be asked difficult trust questions like what
browsers have been known for ("Continue to insecure site", etc.), and the lack
of an override would likely be considered a feature, not a bug. Of course trust
management via ca-certificates and friends is the right way to solve that issue
system-wide.
This TLS change is expected to go unnoticed even in the most esoteric setups; a
NEWS entry would not be appropriate.
The toolbar change is mainly aesthetic and part of making an adaptive user
interface to work on workstations and mobile devices alike, to add proper
spacing around the widgets. That code change looks trivial but I don't know
much about Python, GNOME, or libadwaita to really say. Nevertheless it is sound
and works correctly, almost surely the same or better than before.
[ Checklist ]
☑ *all* changes are documented in the d/changelog
☑ I reviewed all changes and I approve them
◦ This should be understood bearing in mind that I won't be uploading
this on my own but only after a GNOME team member gives the final say.
☑ attach debdiff against the package in (old)stable
◦ Changes to translation files matching '*.po' are omitted, as they
would otherwise be about 80% of the lines. Links to get the full source package
are below.
☑ the issue is verified as fixed in unstable
[ Other info ]
A totally complete debdiff is at
https://salsa.debian.org/gnome-team/errands/-/merge_requests/1.diff The
translations really are massive, but the debdiff with "--exclude '*.po'" is
attached. The Git history there includes all of the upstream commits; the Salsa
web interface may be helpful.
Source and binary packages signed by me are also at
https://johnscott.me/errands/ such as
https://johnscott.me/errands/errands_46.2.10-1~deb13u1.dsc
Thanks
diffstat for errands-46.2.8 errands-46.2.10
.gitignore | 2
README.md | 2
build-aux/python3-caldav.json | 75 +++++++++++-------------
build-aux/regenerate-translations.sh | 2
build-aux/requirements.txt | 27 ++++----
build-aux/run.sh | 51 ----------------
build-aux/update_python_deps.sh | 2
data/io.github.mrvladus.List.metainfo.xml.in.in | 11 +++
debian/changelog | 26 ++++++++
debian/control | 6 -
debian/gbp.conf | 2
debian/upstream/metadata | 1
debian/watch | 5 -
errands/lib/sync/providers/caldav.py | 5 -
errands/widgets/shared/task_toolbar/toolbar.py | 9 +-
io.github.mrvladus.List.Devel.json | 38 ++++++------
meson.build | 2
po/LINGUAS | 1
po/errands.pot | 16 -----
19 files changed, 125 insertions(+), 158 deletions(-)
diff -Nru --exclude '*.po' errands-46.2.8/build-aux/python3-caldav.json errands-46.2.10/build-aux/python3-caldav.json
--- errands-46.2.8/build-aux/python3-caldav.json 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/build-aux/python3-caldav.json 2025-12-22 06:40:17.000000000 -0500
@@ -2,93 +2,92 @@
"name": "python3-caldav",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --verbose --exists-action=i --no-index --ignore-installed --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} --no-build-isolation caldav certifi charset-normalizer icalendar idna lxml python-dateutil pytz recurring-ical-events requests six tzlocal urllib3 vobject x-wr-timezone"
+ "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} --no-build-isolation caldav certifi charset-normalizer click icalendar idna lxml python-dateutil recurring-ical-events requests six tzdata urllib3 x-wr-timezone"
],
"sources": [
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/77/86/c8fff55bd0ab9410cca9dbfa92e91ebcf3cc1a7266e33888364e7aaa1222/caldav-1.4.0-py3-none-any.whl",
- "sha256": "e75e84824092e33a9e03ac693de3d01133a3e044fd50a1c542c7f78d1aff0cb2"
+ "url": "https://files.pythonhosted.org/packages/c9/fd/dc7e9760ba647eb619267ece751d1a9220fd79743d3bbc654a61f9151182/caldav-2.0.1-py2.py3-none-any.whl",
+ "sha256": "86ef0e308ce75745e04805aaede76b3c182b91b5d1a6862ed53dcf48dc56538b"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/ba/06/a07f096c664aeb9f01624f858c3add0a4e913d6c96257acb4fce61e7de14/certifi-2024.2.2-py3-none-any.whl",
- "sha256": "dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"
+ "url": "https://files.pythonhosted.org/packages/e4/37/af0d2ef3967ac0d6113837b44a4f0bfe1328c2b9763bd5b1744520e5cfed/certifi-2025.10.5-py3-none-any.whl",
+ "sha256": "0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/99/b0/9c365f6d79a9f0f3c379ddb40a256a67aa69c59609608fe7feb6235896e1/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
- "sha256": "8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"
+ "url": "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
+ "sha256": "41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8",
+ "only-arches": ["aarch64"]
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
- "sha256": "90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"
+ "url": "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
+ "sha256": "416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f",
+ "only-arches": ["x86_64"]
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/fb/89/badc6427111cffabb6a462bf447cfff5e9e4c856527ddc030c11020b6cc5/icalendar-5.0.12-py3-none-any.whl",
- "sha256": "d873bb859df9c6d0e597b16d247436e0f83f7ac1b90a06429b8393fe8afeba40"
+ "url": "https://files.pythonhosted.org/packages/db/d3/9dcc0f5797f070ec8edf30fbadfb200e71d9db6b84d211e3b2085a7589a0/click-8.3.0-py3-none-any.whl",
+ "sha256": "9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/e5/3e/741d8c82801c347547f8a2a06aa57dbb1992be9e948df2ea0eda2c8b79e8/idna-3.7-py3-none-any.whl",
- "sha256": "82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"
+ "url": "https://files.pythonhosted.org/packages/6c/25/b5fc00e85d2dfaf5c806ac8b5f1de072fa11630c5b15b4ae5bbc228abd51/icalendar-6.3.1-py3-none-any.whl",
+ "sha256": "7ea1d1b212df685353f74cdc6ec9646bf42fa557d1746ea645ce8779fdfbecdd"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/d0/f1/3a0bd5064c764966e5d1dd0e75048960a7f38c833422ff5e10c8f4ad8363/lxml-5.2.1-cp312-cp312-manylinux_2_28_aarch64.whl",
- "sha256": "f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c"
+ "url": "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl",
+ "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/ac/9b/f97fac2e2bacbc91d1a15f24e3bdbb52e418591109393144a943bd502d2c/lxml-5.2.1-cp312-cp312-manylinux_2_28_x86_64.whl",
- "sha256": "f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08"
+ "url": "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
+ "sha256": "eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df",
+ "only-arches": ["aarch64"]
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl",
- "sha256": "a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
+ "url": "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl",
+ "sha256": "ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd",
+ "only-arches": ["x86_64"]
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/9c/3d/a121f284241f08268b21359bd425f7d4825cffc5ac5cd0e1b3d82ffd2b10/pytz-2024.1-py2.py3-none-any.whl",
- "sha256": "328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"
- },
- {
- "type": "file",
- "url": "https://files.pythonhosted.org/packages/8a/3c/c1e8d2fb47dfb091d2552ca8bee98aefa7593db3bc713a2d40826547f6ef/recurring_ical_events-2.2.1-py3-none-any.whl",
- "sha256": "9e8e0390e7cfe2e7425690e6b858eed635bf7560b44cb52260cd3466fec9cec5"
+ "url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl",
+ "sha256": "a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/70/8e/0e2d847013cb52cd35b38c009bb167a1a26b2ce6cd6965bf26b47bc0bf44/requests-2.31.0-py3-none-any.whl",
- "sha256": "58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"
+ "url": "https://files.pythonhosted.org/packages/36/25/88a4218cccae06ce6b15e41d2f263dd4a73e8e8cbe41537cd7784a17479b/recurring_ical_events-3.8.0-py3-none-any.whl",
+ "sha256": "cf958eb17c92d4dca5c621e44c2b3fffd4ba700dca0db66287c5dc11438f63ba"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl",
- "sha256": "8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
+ "url": "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl",
+ "sha256": "2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/97/3f/c4c51c55ff8487f2e6d0e618dba917e3c3ee2caae6cf0fbb59c9b1876f2e/tzlocal-5.2-py3-none-any.whl",
- "sha256": "49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"
+ "url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl",
+ "sha256": "4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/a2/73/a68704750a7679d0b6d3ad7aa8d4da8e14e151ae82e6fee774e6e0d05ec8/urllib3-2.2.1-py3-none-any.whl",
- "sha256": "450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"
+ "url": "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl",
+ "sha256": "1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/a2/f2/ea094c009f962bd2fda9851bd54cd32b20721c9228842df2eefc1122aa40/vobject-0.9.7-py2.py3-none-any.whl",
- "sha256": "67ebec81ee39fc60b7355ce077f850d5f13d99d08b110fa1abcfdbb516205e20"
+ "url": "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl",
+ "sha256": "e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"
},
{
"type": "file",
- "url": "https://files.pythonhosted.org/packages/9d/c6/53227e391c641b891e173b0454f137a21cb969dd58b5171e487e4da7e87e/x_wr_timezone-0.0.7-py3-none-any.whl",
- "sha256": "0b5e16f677c8f51ce41087a0b3d4f786c5fdcf78af4f8a75d4d960107dcb6d3a"
+ "url": "https://files.pythonhosted.org/packages/0f/b7/4bac35b4079b76c07d8faddf89467e9891b1610cfe8d03b0ebb5610e4423/x_wr_timezone-2.0.1-py3-none-any.whl",
+ "sha256": "e74a53b9f4f7def8138455c240e65e47c224778bce3c024fcd6da2cbe91ca038"
}
]
}
diff -Nru --exclude '*.po' errands-46.2.8/build-aux/regenerate-translations.sh errands-46.2.10/build-aux/regenerate-translations.sh
--- errands-46.2.8/build-aux/regenerate-translations.sh 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/build-aux/regenerate-translations.sh 2025-12-22 06:40:17.000000000 -0500
@@ -1,5 +1,5 @@
#!/usr/bin/bash
-flatpak run --filesystem=home org.gnome.Sdk//47 <<EOF
+flatpak run --filesystem=home org.gnome.Sdk//49 <<EOF
echo -e "\n\033[32;1m---------- UPDATING TRANSLATIONS ----------\033[0m\n"
meson setup _build
cd _build
diff -Nru --exclude '*.po' errands-46.2.8/build-aux/requirements.txt errands-46.2.10/build-aux/requirements.txt
--- errands-46.2.8/build-aux/requirements.txt 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/build-aux/requirements.txt 2025-12-22 06:40:17.000000000 -0500
@@ -1,15 +1,14 @@
-caldav==1.4.0
-certifi==2024.2.2
-charset-normalizer==3.3.2
-icalendar==5.0.12
-idna==3.7
-lxml==5.2.1
+caldav==2.0.1
+certifi==2025.10.5
+charset-normalizer==3.4.3
+click==8.3.0
+icalendar==6.3.1
+idna==3.10
+lxml==6.0.2
python-dateutil==2.9.0.post0
-pytz==2024.1
-recurring-ical-events==2.2.1
-requests==2.31.0
-six==1.16.0
-tzlocal==5.2
-urllib3==2.2.1
-vobject==0.9.7
-x-wr-timezone==0.0.7
+recurring-ical-events==3.8.0
+requests==2.32.5
+six==1.17.0
+tzdata==2025.2
+urllib3==2.5.0
+x-wr-timezone==2.0.1
diff -Nru --exclude '*.po' errands-46.2.8/build-aux/run.sh errands-46.2.10/build-aux/run.sh
--- errands-46.2.8/build-aux/run.sh 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/build-aux/run.sh 1969-12-31 19:00:00.000000000 -0500
@@ -1,51 +0,0 @@
-#!/usr/bin/bash
-
-SDK_VER=47
-APP_ID=io.github.mrvladus.List.Devel
-BIN_NAME=errands
-CWD=$(pwd)
-REPO_DIR=$CWD/.flatpak/repo
-FLATPAK_BUILDER_DIR=$CWD/.flatpak/flatpak-builder
-MANIFEST_JSON=$CWD/io.github.mrvladus.List.Devel.json
-
-
-build() {
- echo "====== INIT REPO ======"
- flatpak build-init $REPO_DIR $APP_ID org.gnome.Sdk org.gnome.Platform $SDK_VER
-
- echo "====== BUILD 1 ======"
- flatpak run org.flatpak.Builder --ccache --force-clean --disable-updates --build-only --state-dir=$FLATPAK_BUILDER_DIR --stop-at=$BIN_NAME $REPO_DIR $MANIFEST_JSON --disable-rofiles-fuse
-
- echo "====== BUILD 2 ======"
- flatpak build --share=network --filesystem=$CWD --filesystem=$REPO_DIR --env=PATH=$PATH:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/app/bin:/usr/bin --env=LD_LIBRARY_PATH=/app/lib --env=PKG_CONFIG_PATH=/app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig --filesystem=$CWD/_build $REPO_DIR meson --prefix /app _build -Dprofile=development
-}
-
-run() {
- echo "====== RUN 1 ======"
- flatpak build --share=network --filesystem=$CWD --filesystem=$REPO_DIR --env=PATH=$PATH:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/app/bin:/usr/bin --env=LD_LIBRARY_PATH=/app/lib --env=PKG_CONFIG_PATH=/app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig --filesystem=$CWD/_build $REPO_DIR ninja -C _build
-
- echo "====== RUN 2 ======"
- flatpak build --share=network --filesystem=$CWD --filesystem=$REPO_DIR --env=PATH=$PATH:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/app/bin:/usr/bin --env=LD_LIBRARY_PATH=/app/lib --env=PKG_CONFIG_PATH=/app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig --filesystem=$CWD/_build $REPO_DIR meson install -C _build
-
- echo "====== RUN 3 ======"
- flatpak build --with-appdir --allow=devel --bind-mount=/run/user/$UID/doc=/run/user/$UID/doc/by-app/$APP_ID --device=dri --socket=wayland --socket=fallback-x11 --share=ipc --share=network --talk-name=org.freedesktop.secrets --talk-name=org.gnome.OnlineAccounts --talk-name=org.freedesktop.portal.* --talk-name=org.a11y.Bus --bind-mount=/run/flatpak/at-spi-bus=/run/user/$UID/at-spi/bus --env=AT_SPI_BUS_ADDRESS=unix:path=/run/flatpak/at-spi-bus --env=DESKTOP_SESSION=$DESKTOP_SESSION --env=LANG=$LANG --env=WAYLAND_DISPLAY=wayland-0 --env=XDG_CURRENT_DESKTOP=$XDG_CURRENT_DESKTOP --env=XDG_SESSION_DESKTOP=$XDG_SESSION_DESKTOP --env=XDG_SESSION_TYPE=$XDG_SESSION_TYPE --bind-mount=/run/host/fonts=/usr/share/fonts --bind-mount=/run/host/fonts-cache=/usr/lib/fontconfig/cache --filesystem=$HOME/.local/share/fonts:ro --filesystem=$HOME/.cache/fontconfig:ro --bind-mount=/run/host/user-fonts-cache=$HOME/.cache/fontconfig --bind-mount=/run/host/font-dirs.xml=$HOME/.cache/font-dirs.xml $REPO_DIR $BIN_NAME
-}
-
-rebuild() {
- echo "====== RE-BUILDING ======"
- rm -rf .flatpak _build
- build
- run
-}
-
-# Check if the first argument is "rebuild"
-if [ "$1" = "rebuild" ]; then
- rebuild
-else
- if [ -d "$REPO_DIR" ]; then
- run
- else
- build
- run
- fi
-fi
diff -Nru --exclude '*.po' errands-46.2.8/build-aux/update_python_deps.sh errands-46.2.10/build-aux/update_python_deps.sh
--- errands-46.2.8/build-aux/update_python_deps.sh 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/build-aux/update_python_deps.sh 2025-12-22 06:40:17.000000000 -0500
@@ -1,3 +1,3 @@
#!/usr/bin/bash
-./req2flatpak.py --requirements-file requirements.txt --target-platforms '312-x86_64' '312-aarch64' > manifest.json
+./req2flatpak.py --requirements-file requirements.txt --target-platforms '313-x86_64' '313-aarch64' > python3-caldav.json
diff -Nru --exclude '*.po' errands-46.2.8/data/io.github.mrvladus.List.metainfo.xml.in.in errands-46.2.10/data/io.github.mrvladus.List.metainfo.xml.in.in
--- errands-46.2.8/data/io.github.mrvladus.List.metainfo.xml.in.in 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/data/io.github.mrvladus.List.metainfo.xml.in.in 2025-12-22 06:40:17.000000000 -0500
@@ -57,6 +57,17 @@
</requires>
<releases>
+ <release version="46.2.10" date="2025-12-22">
+ <description translate="no">
+ <p>Enable SSL certificate verification</p>
+ <p>Update translations</p>
+ </description>
+ </release>
+ <release version="46.2.9" date="2025-10-11">
+ <description translate="no">
+ <p>Update runtime to version 49</p>
+ </description>
+ </release>
<release version="46.2.8" date="2025-03-15">
<description translate="no">
<p>Fix autostart</p>
diff -Nru --exclude '*.po' errands-46.2.8/debian/changelog errands-46.2.10/debian/changelog
--- errands-46.2.8/debian/changelog 2025-03-21 00:01:57.000000000 -0400
+++ errands-46.2.10/debian/changelog 2026-01-14 16:55:19.000000000 -0500
@@ -1,3 +1,29 @@
+errands (46.2.10-1~deb13u1) trixie; urgency=medium
+
+ [ John Scott ]
+ * New upstream release for Debian Trixie
+ * Fixes the use of unverified TLS certificates when connecting to CalDAV servers
+ (CVE-2025-71063) (Closes: #1123738)
+
+ -- Debian GNOME Maintainers <[email protected]> Wed, 14 Jan 2026 21:55:19 +0000
+
+errands (46.2.10-1) unstable; urgency=medium
+
+ * Team upload
+ * New upstream release
+ * d/control: Bump S-V to 4.7.3; drop priority: optional
+
+ -- Matthias Geiger <[email protected]> Mon, 29 Dec 2025 13:38:38 +0100
+
+errands (46.2.9-1) unstable; urgency=medium
+
+ * New upstream release
+ * d/watch: Remove debian/watch because it is no longer necessary
+ * d/upstream/metadata: Add Archive: GitHub for uscan
+ * d/control: Fix Lintian report redundant-rules-requires-root-no-field
+
+ -- Leandro Cunha <[email protected]> Tue, 18 Nov 2025 22:51:47 -0300
+
errands (46.2.8-1) unstable; urgency=medium
* New upstream release
diff -Nru --exclude '*.po' errands-46.2.8/debian/control errands-46.2.10/debian/control
--- errands-46.2.8/debian/control 2025-03-21 00:01:57.000000000 -0400
+++ errands-46.2.10/debian/control 2026-01-05 13:21:49.000000000 -0500
@@ -1,6 +1,5 @@
Source: errands
Section: gnome
-Priority: optional
Maintainer: Debian GNOME Maintainers <[email protected]>
Uploaders: Jeremy BÃcha <[email protected]>, Leandro Cunha <[email protected]>
Build-Depends:
@@ -18,11 +17,10 @@
libxml2-utils,
meson,
python-gi-dev
-Standards-Version: 4.7.2
-Rules-Requires-Root: no
+Standards-Version: 4.7.3
Homepage: https://apps.gnome.org/List/
Vcs-Browser: https://salsa.debian.org/gnome-team/errands
-Vcs-Git: https://salsa.debian.org/gnome-team/errands.git
+Vcs-Git: https://salsa.debian.org/gnome-team/errands.git -b debian/trixie
Package: errands
Architecture: all
diff -Nru --exclude '*.po' errands-46.2.8/debian/gbp.conf errands-46.2.10/debian/gbp.conf
--- errands-46.2.8/debian/gbp.conf 2025-03-21 00:01:57.000000000 -0400
+++ errands-46.2.10/debian/gbp.conf 2026-01-05 13:19:27.000000000 -0500
@@ -1,6 +1,6 @@
[DEFAULT]
pristine-tar = True
-debian-branch = debian/latest
+debian-branch = debian/trixie
upstream-branch = upstream/latest
[buildpackage]
diff -Nru --exclude '*.po' errands-46.2.8/debian/upstream/metadata errands-46.2.10/debian/upstream/metadata
--- errands-46.2.8/debian/upstream/metadata 2025-03-21 00:01:57.000000000 -0400
+++ errands-46.2.10/debian/upstream/metadata 2026-01-05 13:14:43.000000000 -0500
@@ -1,4 +1,5 @@
---
+Archive: GitHub
Bug-Database: https://github.com/mrvladus/Errands/issues
Bug-Submit: https://github.com/mrvladus/Errands/issues/new
Repository-Browse: https://github.com/mrvladus/Errands
diff -Nru --exclude '*.po' errands-46.2.8/debian/watch errands-46.2.10/debian/watch
--- errands-46.2.8/debian/watch 2025-03-21 00:01:57.000000000 -0400
+++ errands-46.2.10/debian/watch 1969-12-31 19:00:00.000000000 -0500
@@ -1,5 +0,0 @@
-version=4
-opts="searchmode=plain,\
-filenamemangle=s%@ANY_VERSION@%$1.tar.gz%" \
-https://api.github.com/repos/mrvladus/@PACKAGE@/releases?per_page=50 \
-https://api.github.com/repos/[^/]+/[^/]+/tarball/@ANY_VERSION@
diff -Nru --exclude '*.po' errands-46.2.8/errands/lib/sync/providers/caldav.py errands-46.2.10/errands/lib/sync/providers/caldav.py
--- errands-46.2.8/errands/lib/sync/providers/caldav.py 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/errands/lib/sync/providers/caldav.py 2025-12-22 06:40:17.000000000 -0500
@@ -1,14 +1,14 @@
# Copyright 2023-2024 Vlad Krupinskii <[email protected]>
# SPDX-License-Identifier: MIT
-from copy import deepcopy
import datetime
import time
+from copy import deepcopy
from dataclasses import asdict, dataclass, field
from typing import Any
-import urllib3
import caldav
+import urllib3
from caldav import Calendar, DAVClient, Principal, Todo
from caldav.elements import dav, ical
@@ -86,7 +86,6 @@
url=self.url,
username=self.username,
password=self.password,
- ssl_verify_cert=False,
) as client:
try:
self.principal: Principal = client.principal()
diff -Nru --exclude '*.po' errands-46.2.8/errands/widgets/shared/task_toolbar/toolbar.py errands-46.2.10/errands/widgets/shared/task_toolbar/toolbar.py
--- errands-46.2.8/errands/widgets/shared/task_toolbar/toolbar.py 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/errands/widgets/shared/task_toolbar/toolbar.py 2025-12-22 06:40:17.000000000 -0500
@@ -23,18 +23,17 @@
from errands.widgets.task import Task
-class ErrandsTaskToolbar(Gtk.FlowBox):
+class ErrandsTaskToolbar(Adw.WrapBox):
def __init__(self, task: Task) -> None:
super().__init__()
self.task: Task = task
self.__build_ui()
def __build_ui(self) -> None:
- self.set_margin_bottom(2)
+ self.set_margin_bottom(6)
self.set_margin_start(9)
self.set_margin_end(9)
- self.set_max_children_per_line(2)
- self.set_selection_mode(Gtk.SelectionMode.NONE)
+ self.set_line_spacing(6)
# Date and Time button
self.date_time_btn: ErrandsButton = ErrandsButton(
@@ -259,7 +258,7 @@
elif priority == 9:
self.priority_btn.add_css_class("accent")
self.priority_btn.set_icon_name(
- f"errands-priority{'-set' if priority>0 else ''}-symbolic"
+ f"errands-priority{'-set' if priority > 0 else ''}-symbolic"
)
# Update attachments button css
diff -Nru --exclude '*.po' errands-46.2.8/.gitignore errands-46.2.10/.gitignore
--- errands-46.2.8/.gitignore 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/.gitignore 2025-12-22 06:40:17.000000000 -0500
@@ -7,3 +7,5 @@
.ruff_cache/
*.flatpak
.idea/
+pug
+build/
diff -Nru --exclude '*.po' errands-46.2.8/io.github.mrvladus.List.Devel.json errands-46.2.10/io.github.mrvladus.List.Devel.json
--- errands-46.2.8/io.github.mrvladus.List.Devel.json 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/io.github.mrvladus.List.Devel.json 2025-12-22 06:40:17.000000000 -0500
@@ -1,7 +1,7 @@
{
"id": "io.github.mrvladus.List.Devel",
"runtime": "org.gnome.Platform",
- "runtime-version": "47",
+ "runtime-version": "49",
"sdk": "org.gnome.Sdk",
"command": "errands",
"finish-args": [
@@ -28,6 +28,23 @@
],
"modules": [
{
+ "name": "libportal",
+ "buildsystem": "meson",
+ "config-opts": [
+ "-Dbackend-gtk4=enabled",
+ "-Dvapi=false",
+ "-Ddocs=false",
+ "-Dtests=false"
+ ],
+ "sources": [
+ {
+ "type": "git",
+ "url": "https://github.com/flatpak/libportal.git",
+ "tag": "0.9.1"
+ }
+ ]
+ },
+ {
"name": "gnome-online-accounts",
"buildsystem": "meson",
"config-opts": [
@@ -37,7 +54,6 @@
"-Dimap_smtp=false",
"-Dwebdav=false",
"-Dkerberos=false",
- "-Dwindows_live=false",
"-Dms_graph=false",
"-Dvapi=false"
],
@@ -49,23 +65,7 @@
}
]
},
- {
- "name": "libportal",
- "buildsystem": "meson",
- "config-opts": [
- "-Dbackend-gtk4=enabled",
- "-Dvapi=false",
- "-Ddocs=false",
- "-Dtests=false"
- ],
- "sources": [
- {
- "type": "git",
- "url": "https://github.com/flatpak/libportal.git",
- "tag": "0.7.1"
- }
- ]
- },
+
"build-aux/python3-caldav.json",
{
"name": "errands",
diff -Nru --exclude '*.po' errands-46.2.8/meson.build errands-46.2.10/meson.build
--- errands-46.2.8/meson.build 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/meson.build 2025-12-22 06:40:17.000000000 -0500
@@ -1,6 +1,6 @@
project(
'errands',
- version: '46.2.8',
+ version: '46.2.10',
meson_version: '>= 0.62.0',
)
diff -Nru --exclude '*.po' errands-46.2.8/po/errands.pot errands-46.2.10/po/errands.pot
--- errands-46.2.8/po/errands.pot 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/po/errands.pot 2025-12-22 06:40:17.000000000 -0500
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: errands\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-10-10 12:25+0300\n"
+"POT-Creation-Date: 2025-05-16 13:01+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
@@ -577,19 +577,7 @@
msgid "Task is Due"
msgstr ""
-#: errands/application.py:78
-msgid "Errands was updated"
-msgstr ""
-
-#: errands/application.py:79
-msgid "Restart is required"
-msgstr ""
-
-#: errands/application.py:82
-msgid "Restart"
-msgstr ""
-
-#: errands/application.py:111
+#: errands/application.py:41
msgid "Errands need to run in the background for notifications"
msgstr ""
diff -Nru --exclude '*.po' errands-46.2.8/po/LINGUAS errands-46.2.10/po/LINGUAS
--- errands-46.2.8/po/LINGUAS 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/po/LINGUAS 2025-12-22 06:40:17.000000000 -0500
@@ -14,6 +14,7 @@
hu
it
ja
+ko
nb
nl
oc
diff -Nru --exclude '*.po' errands-46.2.8/README.md errands-46.2.10/README.md
--- errands-46.2.8/README.md 2025-03-15 11:38:33.000000000 -0400
+++ errands-46.2.10/README.md 2025-12-22 06:40:17.000000000 -0500
@@ -35,7 +35,7 @@
<a href="https://flathub.org/apps/details/io.github.mrvladus.List"><img alt='Download on Flathub' src='https://flathub.org/api/badge?svg&locale=en'/></a>
-It's the **only** supported verion.
+It's the **only** supported version.
### Build flatpak using GNOME Builder
1. Install [GNOME Builder](https://flathub.org/apps/org.gnome.Builder).
signature.asc
Description: This is a digitally signed message part
--- End Message ---