Skip to content

Beta 0.44.0b3 - #3355

Merged
MichaIng merged 36 commits into
betafrom
dev
Jun 19, 2026
Merged

Beta 0.44.0b3#3355
MichaIng merged 36 commits into
betafrom
dev

Conversation

@MichaIng

@MichaIng MichaIng commented Jun 17, 2026

Copy link
Copy Markdown
Member

What's new

MichaIng and others added 20 commits May 23, 2026 17:52
This includes stable releases as well as pre-releases with bX suffix.

Signed-off-by: MichaIng <micha@dietpi.com>
Once we support Python 3.12+ only, we can use `filter='data'` , which refuses to extract any kind of link, normalizes paths, skips paths pointing outside of the target dir, skips owner/mode, and more more. The `isfile()` check, however prevents extraction of any unintended file types, and the name pattern matching is hereby hardened to really only allow leading `./` segments, and no other combination of these characters, and no `/` anywhere else in the filename. This is needed since `fnmatchcase()` wildcard `*` matches `/` as well.

Regarding tests: We do not test the actual restored file or tarball member contents, hence skip this entirely to avoid confusion or false implications. Create and check multiple files and tarball members with positional arguments in a single function call, instead of multiple calls, a list or dict. Move `assertIsNotNone(data)` from backup tests into the members assert function. The same for checking the restore result is not such a coding benefit, since its assert function does not currently take or need the JSON result. Instead, it is sufficient to check the expected result in a single separate test, and skip it entirely in all others, where it is about the restored files, not about the return value of the restore function. A test with `settings.ENABLE_REBOOT = True` => `{reboot: True}` could make sense though.

Signed-off-by: MichaIng <micha@dietpi.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
In the working schedule menu, only "from" and "to" for Monday were
translated, while Tuesday through Sunday still used hard-coded English
text.

Apply the existing gettext labels to every day so the schedule is
translated consistently across the full week.
Currently translated at 100.0% (391 of 391 strings)

Translated using Weblate (Danish)

Currently translated at 90.6% (156 of 172 strings)

Merge remote-tracking branch 'origin/dev' into dev

Merge remote-tracking branch 'origin/dev' into dev

Translated using Weblate (Dutch)

Currently translated at 100.0% (172 of 172 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (391 of 391 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marijn <168113859+Marijn0@users.noreply.github.com>
Co-authored-by: Tommy B.Nielsen <4060dk@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/da/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/nl/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/nl/
Translation: motioneye-project/motioneye : javascript texts
Translation: motioneye-project/motioneye : python texts
Password fields are pre-filled with ***** when unchanged, so the frontend can use that placeholder as the condition for whether to send a password value.
This avoids relying on keydown/change tracking, which can miss values entered by password managers, autofill, or context-menu paste.
motion streaming instances do not use surveillance user credentails anymore, but the settings expose separate credentials input fields for each camera.

Signed-off-by: MichaIng <micha@dietpi.com>
…update-from-hosted-weblate

Remove outdated part from authentication mode help text
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/
Translation: motioneye-project/motioneye : javascript texts
Translation: motioneye-project/motioneye : python texts
Translations update from Hosted Weblate
Signed-off-by: MichaIng <micha@dietpi.com>
Co-authored-by: strawberry-poodle <swe.study.anonymous.3215435325@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: strawberry-poodle <swe.study.anonymous.3215435325@gmail.com>
Signed-off-by: MichaIng <micha@dietpi.com>
Co-authored-by: strawberry-poodle <swe.study.anonymous.3215435325@gmail.com>
Signed-off-by: MichaIng <micha@dietpi.com>
Signed-off-by: MichaIng <micha@dietpi.com>
Co-authored-by: strawberry-poodle <swe.study.anonymous.3215435325@gmail.com>
The no-camera SVG placeholder was being squashed because the inline
`height="16"` attribute kept the height fixed while the CSS rule
`width: 30%` scaled the width freely.

Removed the inline `width="16"` and `height="16"` attributes. By only
declaring `width: 30%` in CSS, the aspect ratio is preserved
automatically.
This solves a low severity security vulnerability in tornado.

Also extend dependabot config to bump Python dependencies automatically.

* ci: upate_locales: sort files for frontend template

find does not return files in consistent order, hence sort them before adding them to xgettext args.

Signed-off-by: MichaIng <micha@dietpi.com>
Add a dedicated dialog and endpoint for updating camera connection
information. This lets admins edit netcam URLs and credentials, simple
MJPEG URLs, and remote motionEye URLs/secrets.
@MichaIng MichaIng added this to the v0.44.0 milestone Jun 17, 2026
github-actions Bot and others added 9 commits June 17, 2026 14:18
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Merge remote-tracking branch 'origin/dev' into dev

Merge remote-tracking branch 'origin/dev' into dev

Translated using Weblate (French)

Currently translated at 99.7% (390 of 391 strings)

Translated using Weblate (French)

Currently translated at 100.0% (172 of 172 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Merge remote-tracking branch 'origin/dev' into dev

Translated using Weblate (Danish)

Currently translated at 34.5% (135 of 391 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (172 of 172 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.4% (389 of 391 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.4% (171 of 172 strings)

Translated using Weblate (Spanish)

Currently translated at 99.4% (389 of 391 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (172 of 172 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Joaquim Fonseca <jjmf2300@gmail.com>
Co-authored-by: Manuel Garrido Fernández <mgarridof@gmail.com>
Co-authored-by: SimonHanel <simon@hanel.dk>
Co-authored-by: shdw <weblate@assez.biz>
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/da/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/es/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/fr/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/pt/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/da/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/es/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/fr/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/pt/
Translation: motioneye-project/motioneye : javascript texts
Translation: motioneye-project/motioneye : python texts
Dependabot requires a PEP 751 pyproject.lock to manage dependencies. But we intentioanlly do not lock them them, but add lower constraints only. We could add a lockfile to our container images, to allow reproducible builds, but not as part of our repo. Python dependencies are not embedded, hence for reproducable wheel builds, it is irrelevant.

Signed-off-by: MichaIng <micha@dietpi.com>
Translations update from Hosted Weblate
Signed-off-by: MichaIng <micha@dietpi.com>
Currently translated at 100.0% (394 of 394 strings)

Translated using Weblate (German)

Currently translated at 100.0% (175 of 175 strings)

Translated using Weblate (German)

Currently translated at 100.0% (394 of 394 strings)

Translated using Weblate (English)

Currently translated at 100.0% (175 of 175 strings)

Translated using Weblate (French)

Currently translated at 98.9% (390 of 394 strings)

Translated using Weblate (French)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (French)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (French)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (French)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Czech)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Czech)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Korean)

Currently translated at 92.8% (366 of 394 strings)

Translated using Weblate (Korean)

Currently translated at 92.8% (366 of 394 strings)

Translated using Weblate (Korean)

Currently translated at 92.8% (366 of 394 strings)

Translated using Weblate (Korean)

Currently translated at 92.8% (366 of 394 strings)

Translated using Weblate (Hindi)

Currently translated at 3.8% (15 of 394 strings)

Translated using Weblate (Hindi)

Currently translated at 3.8% (15 of 394 strings)

Translated using Weblate (Hindi)

Currently translated at 3.8% (15 of 394 strings)

Translated using Weblate (Hindi)

Currently translated at 3.8% (15 of 394 strings)

Translated using Weblate (Hindi)

Currently translated at 3.8% (15 of 394 strings)

Translated using Weblate (Nepali)

Currently translated at 5.8% (23 of 394 strings)

Translated using Weblate (Nepali)

Currently translated at 5.8% (23 of 394 strings)

Translated using Weblate (Malay)

Currently translated at 0.0% (0 of 175 strings)

Translated using Weblate (Malay)

Currently translated at 0.0% (0 of 175 strings)

Translated using Weblate (Romanian)

Currently translated at 94.9% (374 of 394 strings)

Translated using Weblate (Romanian)

Currently translated at 94.9% (374 of 394 strings)

Translated using Weblate (German)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (German)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Bengali)

Currently translated at 0.7% (3 of 394 strings)

Translated using Weblate (Bengali)

Currently translated at 0.7% (3 of 394 strings)

Translated using Weblate (Bengali)

Currently translated at 0.7% (3 of 394 strings)

Translated using Weblate (Greek)

Currently translated at 93.1% (367 of 394 strings)

Translated using Weblate (Greek)

Currently translated at 93.1% (367 of 394 strings)

Translated using Weblate (Greek)

Currently translated at 93.1% (367 of 394 strings)

Translated using Weblate (Greek)

Currently translated at 93.1% (367 of 394 strings)

Translated using Weblate (Punjabi)

Currently translated at 0.5% (2 of 394 strings)

Translated using Weblate (Punjabi)

Currently translated at 0.5% (2 of 394 strings)

Translated using Weblate (Punjabi)

Currently translated at 0.5% (2 of 394 strings)

Translated using Weblate (Portuguese)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Portuguese)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Portuguese)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Portuguese)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Portuguese)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Portuguese)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Portuguese)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Portuguese)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Russian)

Currently translated at 95.9% (378 of 394 strings)

Translated using Weblate (Russian)

Currently translated at 95.9% (378 of 394 strings)

Translated using Weblate (Russian)

Currently translated at 95.9% (378 of 394 strings)

Translated using Weblate (Russian)

Currently translated at 95.9% (378 of 394 strings)

Translated using Weblate (Russian)

Currently translated at 95.9% (378 of 394 strings)

Translated using Weblate (Hindi)

Currently translated at 7.4% (13 of 175 strings)

Translated using Weblate (Hindi)

Currently translated at 7.4% (13 of 175 strings)

Translated using Weblate (Hindi)

Currently translated at 7.4% (13 of 175 strings)

Translated using Weblate (Slovak)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Slovak)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Slovak)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Slovak)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Tamil)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Tamil)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Tamil)

Currently translated at 92.6% (365 of 394 strings)

Translated using Weblate (Tamil)

Currently translated at 92.6% (365 of 394 strings)

Translated using Weblate (Tamil)

Currently translated at 92.6% (365 of 394 strings)

Translated using Weblate (Punjabi)

Currently translated at 9.7% (17 of 175 strings)

Translated using Weblate (Punjabi)

Currently translated at 9.7% (17 of 175 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (394 of 394 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (394 of 394 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (394 of 394 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (394 of 394 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (394 of 394 strings)

Translated using Weblate (Portuguese)

Currently translated at 97.7% (171 of 175 strings)

Translated using Weblate (Portuguese)

Currently translated at 97.7% (171 of 175 strings)

Translated using Weblate (Portuguese)

Currently translated at 97.7% (171 of 175 strings)

Translated using Weblate (Portuguese)

Currently translated at 97.7% (171 of 175 strings)

Translated using Weblate (Portuguese)

Currently translated at 97.7% (171 of 175 strings)

Translated using Weblate (Danish)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Danish)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Danish)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Danish)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Danish)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Korean)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Korean)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Hungarian)

Currently translated at 42.2% (74 of 175 strings)

Translated using Weblate (Hungarian)

Currently translated at 42.2% (74 of 175 strings)

Translated using Weblate (Hungarian)

Currently translated at 42.2% (74 of 175 strings)

Translated using Weblate (Hungarian)

Currently translated at 42.2% (74 of 175 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.2% (387 of 394 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.2% (387 of 394 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.2% (387 of 394 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.2% (387 of 394 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.2% (387 of 394 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.2% (387 of 394 strings)

Translated using Weblate (Swedish)

Currently translated at 76.5% (134 of 175 strings)

Translated using Weblate (Swedish)

Currently translated at 76.5% (134 of 175 strings)

Translated using Weblate (Danish)

Currently translated at 34.2% (135 of 394 strings)

Translated using Weblate (Danish)

Currently translated at 34.2% (135 of 394 strings)

Translated using Weblate (Danish)

Currently translated at 34.2% (135 of 394 strings)

Translated using Weblate (Danish)

Currently translated at 34.2% (135 of 394 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (175 of 175 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (175 of 175 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (175 of 175 strings)

Translated using Weblate (Finnish)

Currently translated at 19.5% (77 of 394 strings)

Translated using Weblate (Finnish)

Currently translated at 19.5% (77 of 394 strings)

Translated using Weblate (Finnish)

Currently translated at 19.5% (77 of 394 strings)

Translated using Weblate (Czech)

Currently translated at 93.4% (368 of 394 strings)

Translated using Weblate (Czech)

Currently translated at 93.4% (368 of 394 strings)

Translated using Weblate (Czech)

Currently translated at 93.4% (368 of 394 strings)

Translated using Weblate (Czech)

Currently translated at 93.4% (368 of 394 strings)

Translated using Weblate (English)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (English)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (English)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Spanish)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Spanish)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Spanish)

Currently translated at 98.2% (172 of 175 strings)

Translated using Weblate (Turkish)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Turkish)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Turkish)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Turkish)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Ukrainian)

Currently translated at 93.1% (163 of 175 strings)

Translated using Weblate (Ukrainian)

Currently translated at 93.1% (163 of 175 strings)

Translated using Weblate (Ukrainian)

Currently translated at 93.1% (163 of 175 strings)

Translated using Weblate (Ukrainian)

Currently translated at 93.1% (163 of 175 strings)

Translated using Weblate (Slovak)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Slovak)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Italian)

Currently translated at 94.9% (374 of 394 strings)

Translated using Weblate (Italian)

Currently translated at 94.9% (374 of 394 strings)

Translated using Weblate (Italian)

Currently translated at 94.9% (374 of 394 strings)

Translated using Weblate (Italian)

Currently translated at 94.9% (374 of 394 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 93.1% (163 of 175 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 93.1% (163 of 175 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 93.1% (163 of 175 strings)

Translated using Weblate (Nepali)

Currently translated at 13.7% (24 of 175 strings)

Translated using Weblate (Nepali)

Currently translated at 13.7% (24 of 175 strings)

Translated using Weblate (English)

Currently translated at 99.2% (391 of 394 strings)

Translated using Weblate (English)

Currently translated at 99.2% (391 of 394 strings)

Translated using Weblate (English)

Currently translated at 99.2% (391 of 394 strings)

Translated using Weblate (English)

Currently translated at 99.2% (391 of 394 strings)

Translated using Weblate (Catalan)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Catalan)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Catalan)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Catalan)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 97.4% (384 of 394 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 97.4% (384 of 394 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 97.4% (384 of 394 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 97.4% (384 of 394 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 97.4% (384 of 394 strings)

Translated using Weblate (Turkish)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Turkish)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Turkish)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Japanese)

Currently translated at 3.4% (6 of 175 strings)

Translated using Weblate (Japanese)

Currently translated at 3.4% (6 of 175 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.5% (1 of 175 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.5% (1 of 175 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.5% (1 of 175 strings)

Translated using Weblate (French)

Currently translated at 98.9% (390 of 394 strings)

Translated using Weblate (French)

Currently translated at 98.9% (390 of 394 strings)

Translated using Weblate (French)

Currently translated at 98.9% (390 of 394 strings)

Translated using Weblate (French)

Currently translated at 98.9% (390 of 394 strings)

Translated using Weblate (French)

Currently translated at 98.9% (390 of 394 strings)

Translated using Weblate (Japanese)

Currently translated at 67.2% (265 of 394 strings)

Translated using Weblate (Japanese)

Currently translated at 67.2% (265 of 394 strings)

Translated using Weblate (Japanese)

Currently translated at 67.2% (265 of 394 strings)

Translated using Weblate (Japanese)

Currently translated at 67.2% (265 of 394 strings)

Translated using Weblate (Arabic)

Currently translated at 14.8% (26 of 175 strings)

Translated using Weblate (Arabic)

Currently translated at 14.8% (26 of 175 strings)

Translated using Weblate (German)

Currently translated at 99.2% (391 of 394 strings)

Translated using Weblate (German)

Currently translated at 99.2% (391 of 394 strings)

Translated using Weblate (German)

Currently translated at 99.2% (391 of 394 strings)

Translated using Weblate (German)

Currently translated at 99.2% (391 of 394 strings)

Translated using Weblate (Hungarian)

Currently translated at 22.3% (88 of 394 strings)

Translated using Weblate (Hungarian)

Currently translated at 22.3% (88 of 394 strings)

Translated using Weblate (Hungarian)

Currently translated at 22.3% (88 of 394 strings)

Translated using Weblate (Hungarian)

Currently translated at 22.3% (88 of 394 strings)

Translated using Weblate (Finnish)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Finnish)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Polish)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Polish)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Polish)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Arabic)

Currently translated at 0.5% (2 of 394 strings)

Translated using Weblate (Arabic)

Currently translated at 0.5% (2 of 394 strings)

Translated using Weblate (Arabic)

Currently translated at 0.5% (2 of 394 strings)

Translated using Weblate (Arabic)

Currently translated at 0.5% (2 of 394 strings)

Translated using Weblate (Russian)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Russian)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Malay)

Currently translated at 0.2% (1 of 394 strings)

Translated using Weblate (Malay)

Currently translated at 0.2% (1 of 394 strings)

Translated using Weblate (Malay)

Currently translated at 0.2% (1 of 394 strings)

Translated using Weblate (Polish)

Currently translated at 92.6% (365 of 394 strings)

Translated using Weblate (Polish)

Currently translated at 92.6% (365 of 394 strings)

Translated using Weblate (Polish)

Currently translated at 92.6% (365 of 394 strings)

Translated using Weblate (Polish)

Currently translated at 92.6% (365 of 394 strings)

Translated using Weblate (Spanish)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Spanish)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Spanish)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Spanish)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Spanish)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Spanish)

Currently translated at 98.7% (389 of 394 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 90.2% (158 of 175 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 90.2% (158 of 175 strings)

Translated using Weblate (Catalan)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Catalan)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Catalan)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Romanian)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Romanian)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.2% (1 of 394 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.2% (1 of 394 strings)

Translated using Weblate (Greek)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Greek)

Currently translated at 90.8% (159 of 175 strings)

Translated using Weblate (Bengali)

Currently translated at 0.0% (0 of 175 strings)

Translated using Weblate (Bengali)

Currently translated at 0.0% (0 of 175 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 95.1% (375 of 394 strings)

Translated using Weblate (Italian)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Italian)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Italian)

Currently translated at 91.4% (160 of 175 strings)

Translated using Weblate (Swedish)

Currently translated at 43.9% (173 of 394 strings)

Translated using Weblate (Swedish)

Currently translated at 43.9% (173 of 394 strings)

Translated using Weblate (Swedish)

Currently translated at 43.9% (173 of 394 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Arnau Llovet Vidal <arnaullv@gmail.com>
Co-authored-by: Burak <admin@homelab.gen.tr>
Co-authored-by: Dimitar Kalinov <dkalinoff@gmail.com>
Co-authored-by: Gabriel <bloxgabriel18@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Hosted Weblate user 148881 <kovacsgyugyu@gmail.com>
Co-authored-by: Isaki23 <isaquefonseca230706@gmail.com>
Co-authored-by: Joaquim Fonseca <jjmf2300@gmail.com>
Co-authored-by: Jorge Aguayo <jaguay@yahoo.com>
Co-authored-by: Jose Riha <jose1711@gmail.com>
Co-authored-by: LibreTranslate <noreply-mt-libretranslate@weblate.org>
Co-authored-by: Lorcan Lerouvillois <lorcan.lerouvillois@gmail.com>
Co-authored-by: Maksymilian Kłusek <123858.xyz@gmail.com>
Co-authored-by: Manuel Garrido Fernández <mgarridof@gmail.com>
Co-authored-by: Marijn <168113859+Marijn0@users.noreply.github.com>
Co-authored-by: MarkZ <daqinit@qq.com>
Co-authored-by: MichaIng <micha@dietpi.com>
Co-authored-by: Onur TORAMAN <onur@toraman.net>
Co-authored-by: Pablo Esteban Bondaz <pabloestebanbondaz@gmail.com>
Co-authored-by: Petr Šmejkal <pidler@pidler.cz>
Co-authored-by: Piotr Turek <piotr.turek@borpol.com.pl>
Co-authored-by: Robert Brutoczki <robibrutoczki@googlemail.com>
Co-authored-by: Saulo Barbosa Oliveira <neosoyo@gmail.com>
Co-authored-by: Siddharth S <siddharth.sadhana@proton.me>
Co-authored-by: SimonHanel <simon@hanel.dk>
Co-authored-by: Tbnilen <tbn@kse.dk>
Co-authored-by: Tommy B.Nielsen <4060dk@gmail.com>
Co-authored-by: User2068 <user603849745775@proton.me>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: Zhang Wei <Zhang@users.noreply.hosted.weblate.org>
Co-authored-by: Ziteng <765484893@qq.com>
Co-authored-by: albanobattistella <albano_battistella@hotmail.com>
Co-authored-by: qnotions <qnotions@gmail.com>
Co-authored-by: shdw <weblate@assez.biz>
Co-authored-by: vrcher <matt.yalta72@gmail.com>
Co-authored-by: Егор Ермаков <eg.ermakov2016@yandex.ru>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/ar/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/bg/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/bn/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/ca/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/cs/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/da/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/de/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/el/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/en/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/es/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/fi/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/fr/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/hi/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/hu/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/it/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/ja/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/ko/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/ms/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/ne/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/nl/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/pa/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/pl/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/pt/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/ro/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/ru/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/sk/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/sv/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/ta/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/tr/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/uk/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-javascript/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/ar/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/bg/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/bn/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/ca/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/cs/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/da/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/de/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/el/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/en/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/es/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/fi/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/fr/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/hi/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/hu/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/it/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/ja/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/ko/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/ms/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/ne/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/nl/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/pa/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/pl/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/pt/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/ro/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/ru/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/sk/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/sv/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/ta/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/tr/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/uk/
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/zh_Hans/
Translation: motioneye-project/motioneye : javascript texts
Translation: motioneye-project/motioneye : python texts
This solves a low severity security vulnerability in tornado.

Signed-off-by: MichaIng <micha@dietpi.com>
@MichaIng
MichaIng marked this pull request as ready for review June 18, 2026 19:56
@MichaIng
MichaIng requested review from Marijn0 and zagrim June 18, 2026 19:56
@MichaIng

MichaIng commented Jun 18, 2026

Copy link
Copy Markdown
Member Author

I do not aim to wait long with the stable 0.44.0 release. The intermediate beta is mainly to test the automatic PyPI releases, which should be triggered when we push the 0.44.0b3 pre-release tag.

In the meantime we have CVEs for all fixed security vulnerabilities, hence can publish them as well along with the stable release.

You may skip the language files for reviews. The diffs look larger than they are, due to sorted frontend POT file entries, and Weblate forced that sorting onto the PO files, and our workflow again onto the JSON 😄.
Could make actually sense to switch to ttag or so: https://ttag.js.org/
It seems to be able to translate based on the PO files directly, hence would not require the JSONs at all. One less step in our workflows, and 34 fewer file changes whenever we add/change translated strings in the JavaScript files.

@Marijn0

Marijn0 commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator
image

The button doesn’t seem to scale well with text of varying lengths across different languages. It’s not a deal-breaker, but it could be improved.

FYI: Something I noticed while going through the code recently: PrefsHandler allows unauthenticated users to read and write preferences, limited to preferences stored under anonymous.

def get_pref(self, key):
return prefs.get(self.current_user or 'anonymous', key)
def set_pref(self, key, value):
return prefs.set(self.current_user or 'anonymous', key, value)
AFAICS, there is no reason to allow this. It’s not a major issue, but it could be improved before the 0.44.0 release. (Perhaps something Copilot can handle 😅).

Going through the diff, it looks good AFAICS.

@MichaIng

Copy link
Copy Markdown
Member Author

The button doesn’t seem to scale well

They have a fixed width: https://github.com/motioneye-project/motioneye/blob/dev/motioneye/static/css/main.css#L381
Could be turned into a min-width, so those with longer text adjust. But there is no padding either:

{D3B037E9-9441-4B82-85BA-A7DA0FB7CC85}

Additionally, or alternatively, we could just add proper padding and remove the width:

{E85AA65A-298D-43C5-8089-0120240084E4}

Hmm, I think both is best:

{EAD2DBC0-03DF-496C-9BD9-0B9BA5CD0EB4} {6AE27A6E-9078-4163-9BC8-96C6EB33C14F}

7em = 8em - 1em passing


PrefsHandler allows unauthenticated users to read and save preferences

Hmm, I guess the reason was that previously, without a normal user password, embedded camera frames were supposed to show up without authentication? But they do not make use of any of the preferences ... although, the framerate dimmer/factor? ... nope, prefs are not loaded at all for the frame: https://github.com/motioneye-project/motioneye/blob/dev/motioneye/static/js/main.js#L5529-L5531
Also verified via browser dev tools. Let's remove that anonymous prefs load/safe.

This API is harmless, affects visual preferences only: camera frame alignment and sizes, as well as lowering the displayed camera resolution and framerate.

However, this matters only for the GUI after authentication, hence there is no point to allow using this API without authentication, messing with users' preferences.

For clarity, the functions to getting/setting prefs have been moved into the prefs handler script, and inlined, since they are used only at this single place.

Since I am lazy to create two PRs, this commit additionally allows the blue settings panel buttons to grow with long text. With some translations, they can be too small. The fixed width is turned into a minimal width with a padding. Buttons with short texts will have the same size, but buttons with longer text will grow with the text length.

* chore: apply strict typing and f-string usage

Signed-off-by: MichaIng <micha@dietpi.com>
@MichaIng

Copy link
Copy Markdown
Member Author

I accidentally raised the minimum Python version to 3.10 using type1 | type2 | ... syntax for typing, during 0.44.0 dev cycle. I thought some pre-commit test would prevent this, but it only has Python 3.7 as lower limit for syntax upgrades, no upper limit. Will switch to Union[type1, type2, ...] syntax tomorrow, and add a Python 3.7 job to our test matrix. Those are 3.10+ as well after the Ubuntu 20.04 runner was removed by GitHub.

We can raise the requirements to Python 3.8 or 3.9 IMO, with next release. But for 3.10 it is probably a bit early.

dependabot Bot and others added 4 commits June 19, 2026 14:43
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
by using Python 3.7 compatible typing. Also use f-strings where possible in touched files.

Add Python 3.9 to our test matrix, which is the oldest version able to build the project (due to setuptools >=77.0.3). Add ruff linter and formatter with Python 3.7 as target version, and all supported Python versions to black. Use the faster "black-pre-commit-mirror".

Also add Ubuntu 26.04 Resolute runners to test matrix where possible.

Signed-off-by: MichaIng <micha@dietpi.com>
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/motioneye-project/motioneye-python-texts/
Translation: motioneye-project/motioneye : python texts
Translations update from Hosted Weblate
@MichaIng
MichaIng merged commit 17b8e91 into beta Jun 19, 2026
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants