From 50c8e9be7944645b2c241478503eed8ab224d7c7 Mon Sep 17 00:00:00 2001
From: "Patrick Lehner (he/him)" <1099818+lehnerpat@users.noreply.github.com>
Date: Fri, 8 Aug 2025 00:47:21 +0900
Subject: [PATCH 01/13] feat: Move create-item button in shopping list to the
top (#5687)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
---
frontend/pages/shopping-lists/[id].vue | 47 +++++++++++++-------------
1 file changed, 24 insertions(+), 23 deletions(-)
diff --git a/frontend/pages/shopping-lists/[id].vue b/frontend/pages/shopping-lists/[id].vue
index f7031f8e8..e32f068d3 100644
--- a/frontend/pages/shopping-lists/[id].vue
+++ b/frontend/pages/shopping-lists/[id].vue
@@ -136,6 +136,30 @@
v-if="!edit"
class="py-2"
>
+
+
+
+
+
+
+ {{ $t('general.add') }}
+
+
+
+
-
-
-
-
-
-
- {{ $t('general.add') }}
-
-
-
Date: Thu, 7 Aug 2025 12:07:04 -0500
Subject: [PATCH 02/13] fix(deps): update dependency pillow-heif to v1.1.0
(#5870)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
poetry.lock | 101 ++++++++++++++++++++++++++++------------------------
1 file changed, 54 insertions(+), 47 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 93bff2487..4d3d06711 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -2144,58 +2144,65 @@ xmp = ["defusedxml"]
[[package]]
name = "pillow-heif"
-version = "1.0.0"
+version = "1.1.0"
description = "Python interface for libheif library"
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
- {file = "pillow_heif-1.0.0-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:5c1896b96c4b219846435ab859723853a8c42758ad4300d3ed8427b91496762d"},
- {file = "pillow_heif-1.0.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:7e5ab47004e5c8f891229b051daacb1a90c16cb547a4849825f8be7321145fe3"},
- {file = "pillow_heif-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba94f702f1c5203d98c625567af0a01d87bc7e69c3a451262d4fb76af25d827"},
- {file = "pillow_heif-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:661fb336e509294b892f1310282829359eaa7f628317e4cd1a42b1c056cb9f2f"},
- {file = "pillow_heif-1.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5ce8ad2dc09c6100b27ea69ad681941b694878cb307b7058f1a5127b55ff0af9"},
- {file = "pillow_heif-1.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98962fdc791e093749a8393aa02eeaa12593ca08f5064798572bb0553f302f81"},
- {file = "pillow_heif-1.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:c4258cfca6edf34cb6f804fec9c8494eb6fe8f9029d7dea9fbd46e5648c127a8"},
- {file = "pillow_heif-1.0.0-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:812bb192e98a1eb0f037cddccd6c95930e3b6ff00951c67f4623c2ab085d8938"},
- {file = "pillow_heif-1.0.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0beb5a4d8ebdcc4bfd35c911cf0b2537ef1a6a145f4cf8a5468b1531fea9e89c"},
- {file = "pillow_heif-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:560b7d6d265dc256ced56c9758de0efe927125d3132cc49e88328116d163823b"},
- {file = "pillow_heif-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60ce73485154c7334d884f77cd4120b91b3daef4abdfd91970ebddcde955a9bb"},
- {file = "pillow_heif-1.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:97ea05e4e71f70ec05ebea6a185e0fb3aaf31f081f452e3061f3aa237f52165a"},
- {file = "pillow_heif-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a9cd71162046488e6f98507436cd8e7f85202a858adfce7b296b461eeb1e5b06"},
- {file = "pillow_heif-1.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:ffd8307e9fc4ad3cd998ffdf18eb15c1a1ccafffb5ac4d6a213368e4af7a4b39"},
- {file = "pillow_heif-1.0.0-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:4217447e61df85d847718ecf4054d4292b691eee74fa565f0b650da1dc357f34"},
- {file = "pillow_heif-1.0.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:425b1aac012fc59fc703cdce05ac125ffa2970ec9839bb8d763d8645eb59308c"},
- {file = "pillow_heif-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ec85dfc7db7b34944e7a4c885a7d72fb470d532bb696c490445954a50db7241"},
- {file = "pillow_heif-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71fa395744c53a3b4ceb2fbf29b63e556c64591038472600af9e368940f930c0"},
- {file = "pillow_heif-1.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9691125b30d352b2817a544d3155f6a5911378d08901ee4b71ba3e4305fa32a0"},
- {file = "pillow_heif-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ca0e829e6c6986a3acc33efb9e762439b84f0ecc8e583204f04ad8001b192bf"},
- {file = "pillow_heif-1.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:0f0b8546fe98f0938cb6afd1127f2b7a855f4a657e31dcebedaee97ba5662da9"},
- {file = "pillow_heif-1.0.0-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:6a7b14de333709ef9fdd4de57bda3103eb3178b6ed267f9e60bfd64bfb7c5c41"},
- {file = "pillow_heif-1.0.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:07fba7ffbcc7841cc4e5a3bd781628ef6a2359c633d28fcd14ad490b09060bb3"},
- {file = "pillow_heif-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0ab4c56637c2b332e15383a14ee1b493fbbc5dbc756a0b372b7c23df1ed281a"},
- {file = "pillow_heif-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:809e4fd18bf1f683788d71449ae0ed7522e16c4a892a040ec64cf97377e6efd5"},
- {file = "pillow_heif-1.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6d928a5e9f1cfa9e300695329bf9db08e01bcb14b14c4e6a48d6c032bf9dfa1c"},
- {file = "pillow_heif-1.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f02906fd84688138bcbdbbd75fbef77356043bc6199516a152cc66811d1b7198"},
- {file = "pillow_heif-1.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:864a01279069fcd1d99ac0c8ad3263c478438eb9adaa084a2f3d2278049b308f"},
- {file = "pillow_heif-1.0.0-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:e4dd88b416199484aeebd467452293d4c29ab33a6e263eac735f5318b1713ab6"},
- {file = "pillow_heif-1.0.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:6132ce820142c4a79510347dd3f0bf7410ed6e8780202821fb95540bfc8d7484"},
- {file = "pillow_heif-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc76e1c27e80e8799ff476a2a768d65eef7d35db804d2386f8f50c8be47ab4e7"},
- {file = "pillow_heif-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:061ee478b84899c8491e3370a5f5722952ce6644a64f07c7c82df00cad9324ab"},
- {file = "pillow_heif-1.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2aa751d305fec59ff6ee86d23309bd06be0166e0b8cb9e1beb3d7498f309ccbf"},
- {file = "pillow_heif-1.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e541afa24d19030d0f6582374ed3dd9edefe022bc23ae4dfd0f3c09ab7b839d4"},
- {file = "pillow_heif-1.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:1b169dd41eed440eb26325d6daa85ede96ca02666966d898e5dcd045dd6ab37b"},
- {file = "pillow_heif-1.0.0-pp310-pypy310_pp73-macosx_13_0_x86_64.whl", hash = "sha256:c63517df8df208e9f7d54a6160201e9eb437d39e658c5267037213710c071631"},
- {file = "pillow_heif-1.0.0-pp310-pypy310_pp73-macosx_14_0_arm64.whl", hash = "sha256:97b96897c92f1fcc99ee8b76a1f82fe48b61d03af0b4ce2b3913f49c2c0a74f1"},
- {file = "pillow_heif-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9b71197918a02b6e56ff2f087573de77da3057152ad29677f7625345e151b85"},
- {file = "pillow_heif-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83355656529029e048ed872d9d8ccae07f4f77625629041207d47b7573d26fbf"},
- {file = "pillow_heif-1.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:431cf83fc16f6760995da83563379233fb32b355309d08c4afabb53fdded5417"},
- {file = "pillow_heif-1.0.0-pp311-pypy311_pp73-macosx_13_0_x86_64.whl", hash = "sha256:6df834a4fe4f5cb0c2641996f323ac0354a2c1133aee494e649848bbeb093bbb"},
- {file = "pillow_heif-1.0.0-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:f9c17066adc84820d465ce51ce0e8448e1074886ff765b6c07b81802eba0a0dd"},
- {file = "pillow_heif-1.0.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10eb674f94f8a7f449c2a0b32530fa34bd6c78a6717be8a0068e591c73b6fb"},
- {file = "pillow_heif-1.0.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62c6db1706367d6cf7fb04ad6074ab88f3863dde73cc14feeddb7c6a396d0c88"},
- {file = "pillow_heif-1.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2c6486b9026d776e0dea264db3aa2f9aa6304aa1335f9a96f9b32aca1ce16cbc"},
- {file = "pillow_heif-1.0.0.tar.gz", hash = "sha256:0df7a1fb29bd55bc77fd286195eeb02604e356a5da3d5e8786129b91263b99e2"},
+ {file = "pillow_heif-1.1.0-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:166837c243518a930d37f9cbe9e1851f63d1b3cabd4a71496acfdab33eae198b"},
+ {file = "pillow_heif-1.1.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:2b4c599f9276619eaf19e436d519da7f92b31ccec1d4cfd9d728395841e35009"},
+ {file = "pillow_heif-1.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cb4134a05025449f8cc48b6b97c75fc5e81ecdb41b70da4fce08cc8e1b89bcae"},
+ {file = "pillow_heif-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a4ca1590c6d1a7cc5f01bd897aa5781a8ba07eb1a524fa849a34011f4fdb8229"},
+ {file = "pillow_heif-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:785019774e176c5dea62bcc1578527a02b6a290ac625d4be1bf68aeef789f6e4"},
+ {file = "pillow_heif-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:645eade826e470035c458715f9251682909ee939ca22e801dc690aa8722c25b6"},
+ {file = "pillow_heif-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:8e66f1611a3f06392e638dd519c8013ead3b850cfabad5aecd7d9919173ff840"},
+ {file = "pillow_heif-1.1.0-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:fdc65d6e97469f385790c685e957ab4082d94e141781aa5c535406a60457d16c"},
+ {file = "pillow_heif-1.1.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:af2fca989f32a74f862f62622ba16359681b13ca2906be503f7cc5913337f337"},
+ {file = "pillow_heif-1.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5dd83590482f2b4c0f8ba2f750b2e23fc6c6700c786faaa07a9d8cc989a861f5"},
+ {file = "pillow_heif-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3506f9ed4533f9cd567a3b12c0c3077de0702868fc19cb38ff84ff92540a75d"},
+ {file = "pillow_heif-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5ebab03c583c0ff2518d21438c5acd188e04f605edd792810795857c51d00e89"},
+ {file = "pillow_heif-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2234cbc0c9c1e1daaba3306d8c7b7ed73fbddac3b2d5e978d403f9d21df3a4fb"},
+ {file = "pillow_heif-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:e0b7003cc91b1b939e6306aa8af97249d1d59c91b829f6c24e35b0c1f7e50614"},
+ {file = "pillow_heif-1.1.0-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:8f1de65e770bc3f1b8f33b49f4ead8fb03970ad5cb42a804c95e9c47aa7f4208"},
+ {file = "pillow_heif-1.1.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:06e44f0285ab0272083f11dd8deb43ab4da1b89992a7e891612c7f37ff46e08f"},
+ {file = "pillow_heif-1.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecafb8f476e2d99aff900fe3fd62df37c1372714bf426166be23c9e9c9857612"},
+ {file = "pillow_heif-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d2ac086bcca2753f24096acac187d80327f26e34eeaeeaa48e280a167a83ca79"},
+ {file = "pillow_heif-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e6eee59abe4efd867a733c73bd624a9c704286df1c97b6d01d2e3370bd43f07"},
+ {file = "pillow_heif-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2af9f05d9bed937f03707e9965d8d214b1facb6cf7ebf9430b79b978fe058c62"},
+ {file = "pillow_heif-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:15cbd385cc02908f841d48295304e15390a3e79e26d3b6dad7b7a7007a874eaa"},
+ {file = "pillow_heif-1.1.0-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:f262bed5978797fa2c22615be821c6fd767a786bd72396a38d07583adde1e37e"},
+ {file = "pillow_heif-1.1.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c9d37ed097d28c4970461f244d8c2156d0f710f9eee00a36b29142fb6a050fc2"},
+ {file = "pillow_heif-1.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:66f6d04a1f8483a8820d8b1dcb893bfb8103e320dd72d762ec687e92bb92a69b"},
+ {file = "pillow_heif-1.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9923700a3031ca27d2d68e99b09217e6d9360fd45bbe6975cd5b5e48e422cf71"},
+ {file = "pillow_heif-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f4be665888167c481b63fe5a5b62cda2f81c575f54bade9eb1b004137542f76a"},
+ {file = "pillow_heif-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ef1f4ab291e37dbbe22d8ccf1e2dde1a6561b43a4eed1d992fe795d4b62c1258"},
+ {file = "pillow_heif-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:0e3f34354ac8b4be505a25f705be907997e6a1172d21667f7a1d1ff8e3b9d10d"},
+ {file = "pillow_heif-1.1.0-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:c47f12a30a86c43f714353d0fb8478dc4da7915d678642e0b6cf6f0fd53d711e"},
+ {file = "pillow_heif-1.1.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:3cc4a7a808b659f657c5144aeec8152d261d8f3c4a859eba66ef31dab26982d2"},
+ {file = "pillow_heif-1.1.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f3b0df4a03f9c7f150d801f3644961df5af0739503d6fc5d3e0aeb540d16c3d"},
+ {file = "pillow_heif-1.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44fcd3a171337788bf672882484725f124143d2f290cfdbf029c22c113a15c79"},
+ {file = "pillow_heif-1.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f07f28e99ae74dffca936e24d8881f3e7e572233cf1f7bc16fe42fb08a795be"},
+ {file = "pillow_heif-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7a6de39cfba4037479aa5deb65a6bb0b27da0a11b95f740202f03b578ee8932f"},
+ {file = "pillow_heif-1.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:514c856230995dc2f918fb12d83906885d42829e911868e23035e2d916c4c7c5"},
+ {file = "pillow_heif-1.1.0-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:cc72e6311d236e44f0faca82f91e15ad62bc5b028bae79e41e247fcfa1b32c75"},
+ {file = "pillow_heif-1.1.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:5425019c7920f5c9a63eb0344487ade8d30449742e13bc176bb723a3dcd0fb5a"},
+ {file = "pillow_heif-1.1.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc4bfd35a0faa784b9caf772a7dd745ce23117174bcb65f8a46e926c57962780"},
+ {file = "pillow_heif-1.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:16afdfe07593780d2589a0e2884c86ef670509493d069db7b4ea931463742d72"},
+ {file = "pillow_heif-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4365157c0540d7f63f639c384c675d7d341ea0f8034a4452bde4a03894748e97"},
+ {file = "pillow_heif-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:21d451e6f8d0573e080339c9c5fd23cfa41f3d190475d52339304113b4f8c7b3"},
+ {file = "pillow_heif-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:ee8f8ce845d0bdbc4bf5a6c8906a3b765ca68138f62b0776ece35be8779b675a"},
+ {file = "pillow_heif-1.1.0-pp310-pypy310_pp73-macosx_13_0_x86_64.whl", hash = "sha256:03bd9f78e51f49f93e3d4f2e9f13f14ad5bf9464c260df3c7254b375f1edbf56"},
+ {file = "pillow_heif-1.1.0-pp310-pypy310_pp73-macosx_14_0_arm64.whl", hash = "sha256:b5cb6c448475bdbe9f25b505b949cde4fbafc85fbd9f1b787113b940da1a503c"},
+ {file = "pillow_heif-1.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a68219cd5f75944aaa1692216baf1c233d12037970b127a083885d084526e6b9"},
+ {file = "pillow_heif-1.1.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b9cbad23bbf76b23d70b2e973b3e9ae9b30a750a98dc8b0f6b05393cce417571"},
+ {file = "pillow_heif-1.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:aed1f9ce8c495370875d082134408a29a10091b23c6476c382e440453c16c104"},
+ {file = "pillow_heif-1.1.0-pp311-pypy311_pp73-macosx_13_0_x86_64.whl", hash = "sha256:0b921622f897bc5491bbc577304355740b16a15df29e67db664ca21a272d0c8f"},
+ {file = "pillow_heif-1.1.0-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:8e7641593fd2c495c1cf357d8820a97ac44dced0fefd387854a2332086ec61f1"},
+ {file = "pillow_heif-1.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:30bff3762d6d1ae592f611828451fcf6093df4d646bbefc8969930233110d67c"},
+ {file = "pillow_heif-1.1.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7498acca23f05c7ecc50feda5cf5d08405f30af316d2bad2be6f96ef319d0bd9"},
+ {file = "pillow_heif-1.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51ea5a49f5b1b83723cb85507df69c32d6e09c0bc17381368469206b1190f25"},
+ {file = "pillow_heif-1.1.0.tar.gz", hash = "sha256:6c0c5f81a780185bbddc56e0d5537c53aa6cb5fb6018f5a60534a47c53f5455d"},
]
[package.dependencies]
From 5c9fd22f11941152e976d81c0a7329df796cb423 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 7 Aug 2025 17:18:44 +0000
Subject: [PATCH 03/13] chore(deps): update dependency coverage to v7.10.2
(#5887)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
poetry.lock | 178 ++++++++++++++++++++++++++--------------------------
1 file changed, 89 insertions(+), 89 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 4d3d06711..c9ffa3c66 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -483,100 +483,100 @@ markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\""}
[[package]]
name = "coverage"
-version = "7.10.1"
+version = "7.10.2"
description = "Code coverage measurement for Python"
optional = false
python-versions = ">=3.9"
groups = ["dev"]
files = [
- {file = "coverage-7.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1c86eb388bbd609d15560e7cc0eb936c102b6f43f31cf3e58b4fd9afe28e1372"},
- {file = "coverage-7.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6b4ba0f488c1bdb6bd9ba81da50715a372119785458831c73428a8566253b86b"},
- {file = "coverage-7.10.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:083442ecf97d434f0cb3b3e3676584443182653da08b42e965326ba12d6b5f2a"},
- {file = "coverage-7.10.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c1a40c486041006b135759f59189385da7c66d239bad897c994e18fd1d0c128f"},
- {file = "coverage-7.10.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3beb76e20b28046989300c4ea81bf690df84ee98ade4dc0bbbf774a28eb98440"},
- {file = "coverage-7.10.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bc265a7945e8d08da28999ad02b544963f813a00f3ed0a7a0ce4165fd77629f8"},
- {file = "coverage-7.10.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:47c91f32ba4ac46f1e224a7ebf3f98b4b24335bad16137737fe71a5961a0665c"},
- {file = "coverage-7.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1a108dd78ed185020f66f131c60078f3fae3f61646c28c8bb4edd3fa121fc7fc"},
- {file = "coverage-7.10.1-cp310-cp310-win32.whl", hash = "sha256:7092cc82382e634075cc0255b0b69cb7cada7c1f249070ace6a95cb0f13548ef"},
- {file = "coverage-7.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:ac0c5bba938879c2fc0bc6c1b47311b5ad1212a9dcb8b40fe2c8110239b7faed"},
- {file = "coverage-7.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b45e2f9d5b0b5c1977cb4feb5f594be60eb121106f8900348e29331f553a726f"},
- {file = "coverage-7.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a7a4d74cb0f5e3334f9aa26af7016ddb94fb4bfa11b4a573d8e98ecba8c34f1"},
- {file = "coverage-7.10.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d4b0aab55ad60ead26159ff12b538c85fbab731a5e3411c642b46c3525863437"},
- {file = "coverage-7.10.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:dcc93488c9ebd229be6ee1f0d9aad90da97b33ad7e2912f5495804d78a3cd6b7"},
- {file = "coverage-7.10.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa309df995d020f3438407081b51ff527171cca6772b33cf8f85344b8b4b8770"},
- {file = "coverage-7.10.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cfb8b9d8855c8608f9747602a48ab525b1d320ecf0113994f6df23160af68262"},
- {file = "coverage-7.10.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:320d86da829b012982b414c7cdda65f5d358d63f764e0e4e54b33097646f39a3"},
- {file = "coverage-7.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dc60ddd483c556590da1d9482a4518292eec36dd0e1e8496966759a1f282bcd0"},
- {file = "coverage-7.10.1-cp311-cp311-win32.whl", hash = "sha256:4fcfe294f95b44e4754da5b58be750396f2b1caca8f9a0e78588e3ef85f8b8be"},
- {file = "coverage-7.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:efa23166da3fe2915f8ab452dde40319ac84dc357f635737174a08dbd912980c"},
- {file = "coverage-7.10.1-cp311-cp311-win_arm64.whl", hash = "sha256:d12b15a8c3759e2bb580ffa423ae54be4f184cf23beffcbd641f4fe6e1584293"},
- {file = "coverage-7.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b7dc7f0a75a7eaa4584e5843c873c561b12602439d2351ee28c7478186c4da4"},
- {file = "coverage-7.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:607f82389f0ecafc565813aa201a5cade04f897603750028dd660fb01797265e"},
- {file = "coverage-7.10.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f7da31a1ba31f1c1d4d5044b7c5813878adae1f3af8f4052d679cc493c7328f4"},
- {file = "coverage-7.10.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:51fe93f3fe4f5d8483d51072fddc65e717a175490804e1942c975a68e04bf97a"},
- {file = "coverage-7.10.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3e59d00830da411a1feef6ac828b90bbf74c9b6a8e87b8ca37964925bba76dbe"},
- {file = "coverage-7.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:924563481c27941229cb4e16eefacc35da28563e80791b3ddc5597b062a5c386"},
- {file = "coverage-7.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ca79146ee421b259f8131f153102220b84d1a5e6fb9c8aed13b3badfd1796de6"},
- {file = "coverage-7.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b225a06d227f23f386fdc0eab471506d9e644be699424814acc7d114595495f"},
- {file = "coverage-7.10.1-cp312-cp312-win32.whl", hash = "sha256:5ba9a8770effec5baaaab1567be916c87d8eea0c9ad11253722d86874d885eca"},
- {file = "coverage-7.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:9eb245a8d8dd0ad73b4062135a251ec55086fbc2c42e0eb9725a9b553fba18a3"},
- {file = "coverage-7.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:7718060dd4434cc719803a5e526838a5d66e4efa5dc46d2b25c21965a9c6fcc4"},
- {file = "coverage-7.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebb08d0867c5a25dffa4823377292a0ffd7aaafb218b5d4e2e106378b1061e39"},
- {file = "coverage-7.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f32a95a83c2e17422f67af922a89422cd24c6fa94041f083dd0bb4f6057d0bc7"},
- {file = "coverage-7.10.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c4c746d11c8aba4b9f58ca8bfc6fbfd0da4efe7960ae5540d1a1b13655ee8892"},
- {file = "coverage-7.10.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7f39edd52c23e5c7ed94e0e4bf088928029edf86ef10b95413e5ea670c5e92d7"},
- {file = "coverage-7.10.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab6e19b684981d0cd968906e293d5628e89faacb27977c92f3600b201926b994"},
- {file = "coverage-7.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5121d8cf0eacb16133501455d216bb5f99899ae2f52d394fe45d59229e6611d0"},
- {file = "coverage-7.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df1c742ca6f46a6f6cbcaef9ac694dc2cb1260d30a6a2f5c68c5f5bcfee1cfd7"},
- {file = "coverage-7.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40f9a38676f9c073bf4b9194707aa1eb97dca0e22cc3766d83879d72500132c7"},
- {file = "coverage-7.10.1-cp313-cp313-win32.whl", hash = "sha256:2348631f049e884839553b9974f0821d39241c6ffb01a418efce434f7eba0fe7"},
- {file = "coverage-7.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:4072b31361b0d6d23f750c524f694e1a417c1220a30d3ef02741eed28520c48e"},
- {file = "coverage-7.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:3e31dfb8271937cab9425f19259b1b1d1f556790e98eb266009e7a61d337b6d4"},
- {file = "coverage-7.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1c4f679c6b573a5257af6012f167a45be4c749c9925fd44d5178fd641ad8bf72"},
- {file = "coverage-7.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:871ebe8143da284bd77b84a9136200bd638be253618765d21a1fce71006d94af"},
- {file = "coverage-7.10.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:998c4751dabf7d29b30594af416e4bf5091f11f92a8d88eb1512c7ba136d1ed7"},
- {file = "coverage-7.10.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:780f750a25e7749d0af6b3631759c2c14f45de209f3faaa2398312d1c7a22759"},
- {file = "coverage-7.10.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:590bdba9445df4763bdbebc928d8182f094c1f3947a8dc0fc82ef014dbdd8324"},
- {file = "coverage-7.10.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b2df80cb6a2af86d300e70acb82e9b79dab2c1e6971e44b78dbfc1a1e736b53"},
- {file = "coverage-7.10.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d6a558c2725bfb6337bf57c1cd366c13798bfd3bfc9e3dd1f4a6f6fc95a4605f"},
- {file = "coverage-7.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e6150d167f32f2a54690e572e0a4c90296fb000a18e9b26ab81a6489e24e78dd"},
- {file = "coverage-7.10.1-cp313-cp313t-win32.whl", hash = "sha256:d946a0c067aa88be4a593aad1236493313bafaa27e2a2080bfe88db827972f3c"},
- {file = "coverage-7.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e37c72eaccdd5ed1130c67a92ad38f5b2af66eeff7b0abe29534225db2ef7b18"},
- {file = "coverage-7.10.1-cp313-cp313t-win_arm64.whl", hash = "sha256:89ec0ffc215c590c732918c95cd02b55c7d0f569d76b90bb1a5e78aa340618e4"},
- {file = "coverage-7.10.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:166d89c57e877e93d8827dac32cedae6b0277ca684c6511497311249f35a280c"},
- {file = "coverage-7.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bed4a2341b33cd1a7d9ffc47df4a78ee61d3416d43b4adc9e18b7d266650b83e"},
- {file = "coverage-7.10.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddca1e4f5f4c67980533df01430184c19b5359900e080248bbf4ed6789584d8b"},
- {file = "coverage-7.10.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:37b69226001d8b7de7126cad7366b0778d36777e4d788c66991455ba817c5b41"},
- {file = "coverage-7.10.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2f22102197bcb1722691296f9e589f02b616f874e54a209284dd7b9294b0b7f"},
- {file = "coverage-7.10.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e0c768b0f9ac5839dac5cf88992a4bb459e488ee8a1f8489af4cb33b1af00f1"},
- {file = "coverage-7.10.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:991196702d5e0b120a8fef2664e1b9c333a81d36d5f6bcf6b225c0cf8b0451a2"},
- {file = "coverage-7.10.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae8e59e5f4fd85d6ad34c2bb9d74037b5b11be072b8b7e9986beb11f957573d4"},
- {file = "coverage-7.10.1-cp314-cp314-win32.whl", hash = "sha256:042125c89cf74a074984002e165d61fe0e31c7bd40ebb4bbebf07939b5924613"},
- {file = "coverage-7.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:a22c3bfe09f7a530e2c94c87ff7af867259c91bef87ed2089cd69b783af7b84e"},
- {file = "coverage-7.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:ee6be07af68d9c4fca4027c70cea0c31a0f1bc9cb464ff3c84a1f916bf82e652"},
- {file = "coverage-7.10.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d24fb3c0c8ff0d517c5ca5de7cf3994a4cd559cde0315201511dbfa7ab528894"},
- {file = "coverage-7.10.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1217a54cfd79be20512a67ca81c7da3f2163f51bbfd188aab91054df012154f5"},
- {file = "coverage-7.10.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:51f30da7a52c009667e02f125737229d7d8044ad84b79db454308033a7808ab2"},
- {file = "coverage-7.10.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ed3718c757c82d920f1c94089066225ca2ad7f00bb904cb72b1c39ebdd906ccb"},
- {file = "coverage-7.10.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc452481e124a819ced0c25412ea2e144269ef2f2534b862d9f6a9dae4bda17b"},
- {file = "coverage-7.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9d6f494c307e5cb9b1e052ec1a471060f1dea092c8116e642e7a23e79d9388ea"},
- {file = "coverage-7.10.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fc0e46d86905ddd16b85991f1f4919028092b4e511689bbdaff0876bd8aab3dd"},
- {file = "coverage-7.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80b9ccd82e30038b61fc9a692a8dc4801504689651b281ed9109f10cc9fe8b4d"},
- {file = "coverage-7.10.1-cp314-cp314t-win32.whl", hash = "sha256:e58991a2b213417285ec866d3cd32db17a6a88061a985dbb7e8e8f13af429c47"},
- {file = "coverage-7.10.1-cp314-cp314t-win_amd64.whl", hash = "sha256:e88dd71e4ecbc49d9d57d064117462c43f40a21a1383507811cf834a4a620651"},
- {file = "coverage-7.10.1-cp314-cp314t-win_arm64.whl", hash = "sha256:1aadfb06a30c62c2eb82322171fe1f7c288c80ca4156d46af0ca039052814bab"},
- {file = "coverage-7.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:57b6e8789cbefdef0667e4a94f8ffa40f9402cee5fc3b8e4274c894737890145"},
- {file = "coverage-7.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:85b22a9cce00cb03156334da67eb86e29f22b5e93876d0dd6a98646bb8a74e53"},
- {file = "coverage-7.10.1-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:97b6983a2f9c76d345ca395e843a049390b39652984e4a3b45b2442fa733992d"},
- {file = "coverage-7.10.1-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ddf2a63b91399a1c2f88f40bc1705d5a7777e31c7e9eb27c602280f477b582ba"},
- {file = "coverage-7.10.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:47ab6dbbc31a14c5486420c2c1077fcae692097f673cf5be9ddbec8cdaa4cdbc"},
- {file = "coverage-7.10.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:21eb7d8b45d3700e7c2936a736f732794c47615a20f739f4133d5230a6512a88"},
- {file = "coverage-7.10.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:283005bb4d98ae33e45f2861cd2cde6a21878661c9ad49697f6951b358a0379b"},
- {file = "coverage-7.10.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fefe31d61d02a8b2c419700b1fade9784a43d726de26495f243b663cd9fe1513"},
- {file = "coverage-7.10.1-cp39-cp39-win32.whl", hash = "sha256:e8ab8e4c7ec7f8a55ac05b5b715a051d74eac62511c6d96d5bb79aaafa3b04cf"},
- {file = "coverage-7.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:c36baa0ecde742784aa76c2b816466d3ea888d5297fda0edbac1bf48fa94688a"},
- {file = "coverage-7.10.1-py3-none-any.whl", hash = "sha256:fa2a258aa6bf188eb9a8948f7102a83da7c430a0dce918dbd8b60ef8fcb772d7"},
- {file = "coverage-7.10.1.tar.gz", hash = "sha256:ae2b4856f29ddfe827106794f3589949a57da6f0d38ab01e24ec35107979ba57"},
+ {file = "coverage-7.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:79f0283ab5e6499fd5fe382ca3d62afa40fb50ff227676a3125d18af70eabf65"},
+ {file = "coverage-7.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4545e906f595ee8ab8e03e21be20d899bfc06647925bc5b224ad7e8c40e08b8"},
+ {file = "coverage-7.10.2-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ae385e1d58fbc6a9b1c315e5510ac52281e271478b45f92ca9b5ad42cf39643f"},
+ {file = "coverage-7.10.2-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6f0cbe5f7dd19f3a32bac2251b95d51c3b89621ac88a2648096ce40f9a5aa1e7"},
+ {file = "coverage-7.10.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fd17f427f041f6b116dc90b4049c6f3e1230524407d00daa2d8c7915037b5947"},
+ {file = "coverage-7.10.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7f10ca4cde7b466405cce0a0e9971a13eb22e57a5ecc8b5f93a81090cc9c7eb9"},
+ {file = "coverage-7.10.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3b990df23dd51dccce26d18fb09fd85a77ebe46368f387b0ffba7a74e470b31b"},
+ {file = "coverage-7.10.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc3902584d25c7eef57fb38f440aa849a26a3a9f761a029a72b69acfca4e31f8"},
+ {file = "coverage-7.10.2-cp310-cp310-win32.whl", hash = "sha256:9dd37e9ac00d5eb72f38ed93e3cdf2280b1dbda3bb9b48c6941805f265ad8d87"},
+ {file = "coverage-7.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:99d16f15cb5baf0729354c5bd3080ae53847a4072b9ba1e10957522fb290417f"},
+ {file = "coverage-7.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c3b210d79925a476dfc8d74c7d53224888421edebf3a611f3adae923e212b27"},
+ {file = "coverage-7.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf67d1787cd317c3f8b2e4c6ed1ae93497be7e30605a0d32237ac37a37a8a322"},
+ {file = "coverage-7.10.2-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:069b779d03d458602bc0e27189876e7d8bdf6b24ac0f12900de22dd2154e6ad7"},
+ {file = "coverage-7.10.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4c2de4cb80b9990e71c62c2d3e9f3ec71b804b1f9ca4784ec7e74127e0f42468"},
+ {file = "coverage-7.10.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:75bf7ab2374a7eb107602f1e07310cda164016cd60968abf817b7a0b5703e288"},
+ {file = "coverage-7.10.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3f37516458ec1550815134937f73d6d15b434059cd10f64678a2068f65c62406"},
+ {file = "coverage-7.10.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:de3c6271c482c250d3303fb5c6bdb8ca025fff20a67245e1425df04dc990ece9"},
+ {file = "coverage-7.10.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:98a838101321ac3089c9bb1d4bfa967e8afed58021fda72d7880dc1997f20ae1"},
+ {file = "coverage-7.10.2-cp311-cp311-win32.whl", hash = "sha256:f2a79145a531a0e42df32d37be5af069b4a914845b6f686590739b786f2f7bce"},
+ {file = "coverage-7.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:e4f5f1320f8ee0d7cfa421ceb257bef9d39fd614dd3ddcfcacd284d4824ed2c2"},
+ {file = "coverage-7.10.2-cp311-cp311-win_arm64.whl", hash = "sha256:d8f2d83118f25328552c728b8e91babf93217db259ca5c2cd4dd4220b8926293"},
+ {file = "coverage-7.10.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:890ad3a26da9ec7bf69255b9371800e2a8da9bc223ae5d86daeb940b42247c83"},
+ {file = "coverage-7.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38fd1ccfca7838c031d7a7874d4353e2f1b98eb5d2a80a2fe5732d542ae25e9c"},
+ {file = "coverage-7.10.2-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:76c1ffaaf4f6f0f6e8e9ca06f24bb6454a7a5d4ced97a1bc466f0d6baf4bd518"},
+ {file = "coverage-7.10.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:86da8a3a84b79ead5c7d0e960c34f580bc3b231bb546627773a3f53c532c2f21"},
+ {file = "coverage-7.10.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99cef9731c8a39801830a604cc53c93c9e57ea8b44953d26589499eded9576e0"},
+ {file = "coverage-7.10.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ea58b112f2966a8b91eb13f5d3b1f8bb43c180d624cd3283fb33b1cedcc2dd75"},
+ {file = "coverage-7.10.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:20f405188d28da9522b7232e51154e1b884fc18d0b3a10f382d54784715bbe01"},
+ {file = "coverage-7.10.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:64586ce42bbe0da4d9f76f97235c545d1abb9b25985a8791857690f96e23dc3b"},
+ {file = "coverage-7.10.2-cp312-cp312-win32.whl", hash = "sha256:bc2e69b795d97ee6d126e7e22e78a509438b46be6ff44f4dccbb5230f550d340"},
+ {file = "coverage-7.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:adda2268b8cf0d11f160fad3743b4dfe9813cd6ecf02c1d6397eceaa5b45b388"},
+ {file = "coverage-7.10.2-cp312-cp312-win_arm64.whl", hash = "sha256:164429decd0d6b39a0582eaa30c67bf482612c0330572343042d0ed9e7f15c20"},
+ {file = "coverage-7.10.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:aca7b5645afa688de6d4f8e89d30c577f62956fefb1bad021490d63173874186"},
+ {file = "coverage-7.10.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:96e5921342574a14303dfdb73de0019e1ac041c863743c8fe1aa6c2b4a257226"},
+ {file = "coverage-7.10.2-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:11333094c1bff621aa811b67ed794865cbcaa99984dedea4bd9cf780ad64ecba"},
+ {file = "coverage-7.10.2-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6eb586fa7d2aee8d65d5ae1dd71414020b2f447435c57ee8de8abea0a77d5074"},
+ {file = "coverage-7.10.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d358f259d8019d4ef25d8c5b78aca4c7af25e28bd4231312911c22a0e824a57"},
+ {file = "coverage-7.10.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5250bda76e30382e0a2dcd68d961afcab92c3a7613606e6269855c6979a1b0bb"},
+ {file = "coverage-7.10.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a91e027d66eff214d88d9afbe528e21c9ef1ecdf4956c46e366c50f3094696d0"},
+ {file = "coverage-7.10.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:228946da741558904e2c03ce870ba5efd9cd6e48cbc004d9a27abee08100a15a"},
+ {file = "coverage-7.10.2-cp313-cp313-win32.whl", hash = "sha256:95e23987b52d02e7c413bf2d6dc6288bd5721beb518052109a13bfdc62c8033b"},
+ {file = "coverage-7.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:f35481d42c6d146d48ec92d4e239c23f97b53a3f1fbd2302e7c64336f28641fe"},
+ {file = "coverage-7.10.2-cp313-cp313-win_arm64.whl", hash = "sha256:65b451949cb789c346f9f9002441fc934d8ccedcc9ec09daabc2139ad13853f7"},
+ {file = "coverage-7.10.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e8415918856a3e7d57a4e0ad94651b761317de459eb74d34cc1bb51aad80f07e"},
+ {file = "coverage-7.10.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f287a25a8ca53901c613498e4a40885b19361a2fe8fbfdbb7f8ef2cad2a23f03"},
+ {file = "coverage-7.10.2-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:75cc1a3f8c88c69bf16a871dab1fe5a7303fdb1e9f285f204b60f1ee539b8fc0"},
+ {file = "coverage-7.10.2-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ca07fa78cc9d26bc8c4740de1abd3489cf9c47cc06d9a8ab3d552ff5101af4c0"},
+ {file = "coverage-7.10.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c2e117e64c26300032755d4520cd769f2623cde1a1d1c3515b05a3b8add0ade1"},
+ {file = "coverage-7.10.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:daaf98009977f577b71f8800208f4d40d4dcf5c2db53d4d822787cdc198d76e1"},
+ {file = "coverage-7.10.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:ea8d8fe546c528535c761ba424410bbeb36ba8a0f24be653e94b70c93fd8a8ca"},
+ {file = "coverage-7.10.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fe024d40ac31eb8d5aae70215b41dafa264676caa4404ae155f77d2fa95c37bb"},
+ {file = "coverage-7.10.2-cp313-cp313t-win32.whl", hash = "sha256:8f34b09f68bdadec122ffad312154eda965ade433559cc1eadd96cca3de5c824"},
+ {file = "coverage-7.10.2-cp313-cp313t-win_amd64.whl", hash = "sha256:71d40b3ac0f26fa9ffa6ee16219a714fed5c6ec197cdcd2018904ab5e75bcfa3"},
+ {file = "coverage-7.10.2-cp313-cp313t-win_arm64.whl", hash = "sha256:abb57fdd38bf6f7dcc66b38dafb7af7c5fdc31ac6029ce373a6f7f5331d6f60f"},
+ {file = "coverage-7.10.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a3e853cc04987c85ec410905667eed4bf08b1d84d80dfab2684bb250ac8da4f6"},
+ {file = "coverage-7.10.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0100b19f230df72c90fdb36db59d3f39232391e8d89616a7de30f677da4f532b"},
+ {file = "coverage-7.10.2-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9c1cd71483ea78331bdfadb8dcec4f4edfb73c7002c1206d8e0af6797853f5be"},
+ {file = "coverage-7.10.2-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9f75dbf4899e29a37d74f48342f29279391668ef625fdac6d2f67363518056a1"},
+ {file = "coverage-7.10.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a7df481e7508de1c38b9b8043da48d94931aefa3e32b47dd20277e4978ed5b95"},
+ {file = "coverage-7.10.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:835f39e618099325e7612b3406f57af30ab0a0af350490eff6421e2e5f608e46"},
+ {file = "coverage-7.10.2-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:12e52b5aa00aa720097d6947d2eb9e404e7c1101ad775f9661ba165ed0a28303"},
+ {file = "coverage-7.10.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:718044729bf1fe3e9eb9f31b52e44ddae07e434ec050c8c628bf5adc56fe4bdd"},
+ {file = "coverage-7.10.2-cp314-cp314-win32.whl", hash = "sha256:f256173b48cc68486299d510a3e729a96e62c889703807482dbf56946befb5c8"},
+ {file = "coverage-7.10.2-cp314-cp314-win_amd64.whl", hash = "sha256:2e980e4179f33d9b65ac4acb86c9c0dde904098853f27f289766657ed16e07b3"},
+ {file = "coverage-7.10.2-cp314-cp314-win_arm64.whl", hash = "sha256:14fb5b6641ab5b3c4161572579f0f2ea8834f9d3af2f7dd8fbaecd58ef9175cc"},
+ {file = "coverage-7.10.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:e96649ac34a3d0e6491e82a2af71098e43be2874b619547c3282fc11d3840a4b"},
+ {file = "coverage-7.10.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1a2e934e9da26341d342d30bfe91422bbfdb3f1f069ec87f19b2909d10d8dcc4"},
+ {file = "coverage-7.10.2-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:651015dcd5fd9b5a51ca79ece60d353cacc5beaf304db750407b29c89f72fe2b"},
+ {file = "coverage-7.10.2-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:81bf6a32212f9f66da03d63ecb9cd9bd48e662050a937db7199dbf47d19831de"},
+ {file = "coverage-7.10.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d800705f6951f75a905ea6feb03fff8f3ea3468b81e7563373ddc29aa3e5d1ca"},
+ {file = "coverage-7.10.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:248b5394718e10d067354448dc406d651709c6765669679311170da18e0e9af8"},
+ {file = "coverage-7.10.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:5c61675a922b569137cf943770d7ad3edd0202d992ce53ac328c5ff68213ccf4"},
+ {file = "coverage-7.10.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:52d708b5fd65589461381fa442d9905f5903d76c086c6a4108e8e9efdca7a7ed"},
+ {file = "coverage-7.10.2-cp314-cp314t-win32.whl", hash = "sha256:916369b3b914186b2c5e5ad2f7264b02cff5df96cdd7cdad65dccd39aa5fd9f0"},
+ {file = "coverage-7.10.2-cp314-cp314t-win_amd64.whl", hash = "sha256:5b9d538e8e04916a5df63052d698b30c74eb0174f2ca9cd942c981f274a18eaf"},
+ {file = "coverage-7.10.2-cp314-cp314t-win_arm64.whl", hash = "sha256:04c74f9ef1f925456a9fd23a7eef1103126186d0500ef9a0acb0bd2514bdc7cc"},
+ {file = "coverage-7.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:765b13b164685a2f8b2abef867ad07aebedc0e090c757958a186f64e39d63dbd"},
+ {file = "coverage-7.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a219b70100500d0c7fd3ebb824a3302efb6b1a122baa9d4eb3f43df8f0b3d899"},
+ {file = "coverage-7.10.2-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e33e79a219105aa315439ee051bd50b6caa705dc4164a5aba6932c8ac3ce2d98"},
+ {file = "coverage-7.10.2-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bc3945b7bad33957a9eca16e9e5eae4b17cb03173ef594fdaad228f4fc7da53b"},
+ {file = "coverage-7.10.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9bdff88e858ee608a924acfad32a180d2bf6e13e059d6a7174abbae075f30436"},
+ {file = "coverage-7.10.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44329cbed24966c0b49acb386352c9722219af1f0c80db7f218af7793d251902"},
+ {file = "coverage-7.10.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:be127f292496d0fbe20d8025f73221b36117b3587f890346e80a13b310712982"},
+ {file = "coverage-7.10.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6c031da749a05f7a01447dd7f47beedb498edd293e31e1878c0d52db18787df0"},
+ {file = "coverage-7.10.2-cp39-cp39-win32.whl", hash = "sha256:22aca3e691c7709c5999ccf48b7a8ff5cf5a8bd6fe9b36efbd4993f5a36b2fcf"},
+ {file = "coverage-7.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:c7195444b932356055a8e287fa910bf9753a84a1bc33aeb3770e8fca521e032e"},
+ {file = "coverage-7.10.2-py3-none-any.whl", hash = "sha256:95db3750dd2e6e93d99fa2498f3a1580581e49c494bddccc6f85c5c21604921f"},
+ {file = "coverage-7.10.2.tar.gz", hash = "sha256:5d6e6d84e6dd31a8ded64759626627247d676a23c1b892e1326f7c55c8d61055"},
]
[package.extras]
From e47f386643819ed584e16a68e652d23ce0530248 Mon Sep 17 00:00:00 2001
From: Hayden <64056131+hay-kot@users.noreply.github.com>
Date: Thu, 7 Aug 2025 16:30:31 -0500
Subject: [PATCH 04/13] chore(l10n): New Crowdin updates (#5912)
---
frontend/lang/messages/gl-ES.json | 16 ++++++++--------
.../seed/resources/foods/locales/gl-ES.json | 12 ++++++------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/frontend/lang/messages/gl-ES.json b/frontend/lang/messages/gl-ES.json
index 2804a5ca2..0ff8a2cd7 100644
--- a/frontend/lang/messages/gl-ES.json
+++ b/frontend/lang/messages/gl-ES.json
@@ -472,7 +472,7 @@
"comment": "Comentario",
"comments": "Comentarios",
"delete-confirmation": "Estás seguro de que queres eliminar esta receita?",
- "admin-delete-confirmation": "You're about to delete a recipe that isn't yours using admin permissions. Are you sure?",
+ "admin-delete-confirmation": "Estás a piques de eliminar unha receita que non é tua usando permisos de administrador. Tes certeza?",
"delete-recipe": "Eliminar Receita",
"description": "Descrición",
"disable-amount": "Desactivar as Cantidades de Ingredientes",
@@ -580,14 +580,14 @@
"made-this": "Eu fixen isto",
"how-did-it-turn-out": "Que tal ficou?",
"user-made-this": "{user} fixo isto",
- "added-to-timeline": "Added to timeline",
- "failed-to-add-to-timeline": "Failed to add to timeline",
- "failed-to-update-recipe": "Failed to update recipe",
- "added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
+ "added-to-timeline": "Adicionado ao histórico",
+ "failed-to-add-to-timeline": "Falla ao adicionar ao histórico",
+ "failed-to-update-recipe": "Falla ao atualizar a receita",
+ "added-to-timeline-but-failed-to-add-image": "Adicionado ao histórico, mas non foi posíbel adicionar a imaxe",
"api-extras-description": "Os extras de receitas son unha característica clave da API de Mealie. Permítenche crear pares de clave/valor JSON personalizados dentro dunha receita, para facer referencia desde aplicacións de terceiros. Podes usar estas teclas para proporcionar información, por exemplo, para activar automatizacións ou mensaxes personalizadas para transmitir ao dispositivo que desexes.",
"message-key": "Chave de Mensaxen",
"parse": "Interpretar",
- "ingredients-not-parsed-description": "It looks like your ingredients aren't parsed yet. Click the \"{parse}\" button below to parse your ingredients into structured foods.",
+ "ingredients-not-parsed-description": "Parece que os teus ingredientes ainda non foron procesados. Clique no boton \"{parse}\" abaixo para converte-los en alimentos estruturados.",
"attach-images-hint": "Anexe imaxens arrastrando e soltandoas no editor",
"drop-image": "Arrastrar imaxen",
"enable-ingredient-amounts-to-use-this-feature": "Ative cantidades de ingredientes para usar esta funcionalidade",
@@ -664,8 +664,8 @@
"no-unit": "Sen unidades",
"missing-unit": "Crear a unidade que falta: {unit}",
"missing-food": "Crear a comida que falta: {food}",
- "this-unit-could-not-be-parsed-automatically": "This unit could not be parsed automatically",
- "this-food-could-not-be-parsed-automatically": "This food could not be parsed automatically",
+ "this-unit-could-not-be-parsed-automatically": "Non foi posível procesar automaticamente esta unidade",
+ "this-food-could-not-be-parsed-automatically": "Non foi posíbel procesar automaticamente este alimento",
"no-food": "Sen Comida"
},
"reset-servings-count": "Reiniciar Contador de Porcións",
diff --git a/mealie/repos/seed/resources/foods/locales/gl-ES.json b/mealie/repos/seed/resources/foods/locales/gl-ES.json
index 73a442b49..7394bc40f 100644
--- a/mealie/repos/seed/resources/foods/locales/gl-ES.json
+++ b/mealie/repos/seed/resources/foods/locales/gl-ES.json
@@ -168,8 +168,8 @@
"arugula": {
"aliases": [],
"description": "",
- "name": "arugula",
- "plural_name": "arugulas"
+ "name": "rúcula",
+ "plural_name": "rúculas"
},
"leek": {
"aliases": [],
@@ -2879,8 +2879,8 @@
"duck egg": {
"aliases": [],
"description": "",
- "name": "duck egg",
- "plural_name": "duck eggs"
+ "name": "ovo de pato",
+ "plural_name": "ovos de pato"
},
"salted egg": {
"aliases": [],
@@ -2903,8 +2903,8 @@
"raw milk": {
"aliases": [],
"description": "",
- "name": "raw milk",
- "plural_name": "raw milks"
+ "name": "leite cru",
+ "plural_name": "leites crus"
},
"lime curd": {
"aliases": [],
From 87bfdb633b98728296dabd287d243dc17aa75dc6 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 7 Aug 2025 16:47:05 -0500
Subject: [PATCH 05/13] chore(deps): update dependency ruff to v0.12.8 (#5913)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
poetry.lock | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index c9ffa3c66..5db22d3ea 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -3287,30 +3287,30 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
[[package]]
name = "ruff"
-version = "0.12.7"
+version = "0.12.8"
description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false
python-versions = ">=3.7"
groups = ["dev"]
files = [
- {file = "ruff-0.12.7-py3-none-linux_armv6l.whl", hash = "sha256:76e4f31529899b8c434c3c1dede98c4483b89590e15fb49f2d46183801565303"},
- {file = "ruff-0.12.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:789b7a03e72507c54fb3ba6209e4bb36517b90f1a3569ea17084e3fd295500fb"},
- {file = "ruff-0.12.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2e1c2a3b8626339bb6369116e7030a4cf194ea48f49b64bb505732a7fce4f4e3"},
- {file = "ruff-0.12.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32dec41817623d388e645612ec70d5757a6d9c035f3744a52c7b195a57e03860"},
- {file = "ruff-0.12.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47ef751f722053a5df5fa48d412dbb54d41ab9b17875c6840a58ec63ff0c247c"},
- {file = "ruff-0.12.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a828a5fc25a3efd3e1ff7b241fd392686c9386f20e5ac90aa9234a5faa12c423"},
- {file = "ruff-0.12.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5726f59b171111fa6a69d82aef48f00b56598b03a22f0f4170664ff4d8298efb"},
- {file = "ruff-0.12.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74e6f5c04c4dd4aba223f4fe6e7104f79e0eebf7d307e4f9b18c18362124bccd"},
- {file = "ruff-0.12.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d0bfe4e77fba61bf2ccadf8cf005d6133e3ce08793bbe870dd1c734f2699a3e"},
- {file = "ruff-0.12.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06bfb01e1623bf7f59ea749a841da56f8f653d641bfd046edee32ede7ff6c606"},
- {file = "ruff-0.12.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e41df94a957d50083fd09b916d6e89e497246698c3f3d5c681c8b3e7b9bb4ac8"},
- {file = "ruff-0.12.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4000623300563c709458d0ce170c3d0d788c23a058912f28bbadc6f905d67afa"},
- {file = "ruff-0.12.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:69ffe0e5f9b2cf2b8e289a3f8945b402a1b19eff24ec389f45f23c42a3dd6fb5"},
- {file = "ruff-0.12.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a07a5c8ffa2611a52732bdc67bf88e243abd84fe2d7f6daef3826b59abbfeda4"},
- {file = "ruff-0.12.7-py3-none-win32.whl", hash = "sha256:c928f1b2ec59fb77dfdf70e0419408898b63998789cc98197e15f560b9e77f77"},
- {file = "ruff-0.12.7-py3-none-win_amd64.whl", hash = "sha256:9c18f3d707ee9edf89da76131956aba1270c6348bfee8f6c647de841eac7194f"},
- {file = "ruff-0.12.7-py3-none-win_arm64.whl", hash = "sha256:dfce05101dbd11833a0776716d5d1578641b7fddb537fe7fa956ab85d1769b69"},
- {file = "ruff-0.12.7.tar.gz", hash = "sha256:1fc3193f238bc2d7968772c82831a4ff69252f673be371fb49663f0068b7ec71"},
+ {file = "ruff-0.12.8-py3-none-linux_armv6l.whl", hash = "sha256:63cb5a5e933fc913e5823a0dfdc3c99add73f52d139d6cd5cc8639d0e0465513"},
+ {file = "ruff-0.12.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9a9bbe28f9f551accf84a24c366c1aa8774d6748438b47174f8e8565ab9dedbc"},
+ {file = "ruff-0.12.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2fae54e752a3150f7ee0e09bce2e133caf10ce9d971510a9b925392dc98d2fec"},
+ {file = "ruff-0.12.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0acbcf01206df963d9331b5838fb31f3b44fa979ee7fa368b9b9057d89f4a53"},
+ {file = "ruff-0.12.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae3e7504666ad4c62f9ac8eedb52a93f9ebdeb34742b8b71cd3cccd24912719f"},
+ {file = "ruff-0.12.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb82efb5d35d07497813a1c5647867390a7d83304562607f3579602fa3d7d46f"},
+ {file = "ruff-0.12.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:dbea798fc0065ad0b84a2947b0aff4233f0cb30f226f00a2c5850ca4393de609"},
+ {file = "ruff-0.12.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49ebcaccc2bdad86fd51b7864e3d808aad404aab8df33d469b6e65584656263a"},
+ {file = "ruff-0.12.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ac9c570634b98c71c88cb17badd90f13fc076a472ba6ef1d113d8ed3df109fb"},
+ {file = "ruff-0.12.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:560e0cd641e45591a3e42cb50ef61ce07162b9c233786663fdce2d8557d99818"},
+ {file = "ruff-0.12.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:71c83121512e7743fba5a8848c261dcc454cafb3ef2934a43f1b7a4eb5a447ea"},
+ {file = "ruff-0.12.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:de4429ef2ba091ecddedd300f4c3f24bca875d3d8b23340728c3cb0da81072c3"},
+ {file = "ruff-0.12.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a2cab5f60d5b65b50fba39a8950c8746df1627d54ba1197f970763917184b161"},
+ {file = "ruff-0.12.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:45c32487e14f60b88aad6be9fd5da5093dbefb0e3e1224131cb1d441d7cb7d46"},
+ {file = "ruff-0.12.8-py3-none-win32.whl", hash = "sha256:daf3475060a617fd5bc80638aeaf2f5937f10af3ec44464e280a9d2218e720d3"},
+ {file = "ruff-0.12.8-py3-none-win_amd64.whl", hash = "sha256:7209531f1a1fcfbe8e46bcd7ab30e2f43604d8ba1c49029bb420b103d0b5f76e"},
+ {file = "ruff-0.12.8-py3-none-win_arm64.whl", hash = "sha256:c90e1a334683ce41b0e7a04f41790c429bf5073b62c1ae701c9dc5b3d14f0749"},
+ {file = "ruff-0.12.8.tar.gz", hash = "sha256:4cb3a45525176e1009b2b64126acf5f9444ea59066262791febf55e40493a033"},
]
[[package]]
From f276ecd96e9a6f44f3237f753b71741f8066a2e0 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 7 Aug 2025 21:58:57 +0000
Subject: [PATCH 06/13] fix(deps): update dependency openai to v1.99.3 (#5914)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
poetry.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 5db22d3ea..520144e5c 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1849,14 +1849,14 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"]
[[package]]
name = "openai"
-version = "1.99.1"
+version = "1.99.3"
description = "The official Python library for the openai API"
optional = false
python-versions = ">=3.8"
groups = ["main"]
files = [
- {file = "openai-1.99.1-py3-none-any.whl", hash = "sha256:8eeccc69e0ece1357b51ca0d9fb21324afee09b20c3e5b547d02445ca18a4e03"},
- {file = "openai-1.99.1.tar.gz", hash = "sha256:2c9d8e498c298f51bb94bcac724257a3a6cac6139ccdfc1186c6708f7a93120f"},
+ {file = "openai-1.99.3-py3-none-any.whl", hash = "sha256:c786a03f6cddadb5ee42c6d749aa4f6134fe14fdd7d69a667e5e7ce7fd29a719"},
+ {file = "openai-1.99.3.tar.gz", hash = "sha256:1a0e2910e4545d828c14218f2ac3276827c94a043f5353e43b9413b38b497897"},
]
[package.dependencies]
From 0095cc7153e9130fb9a177924a04c9eeedfbd86f Mon Sep 17 00:00:00 2001
From: Hayden <64056131+hay-kot@users.noreply.github.com>
Date: Fri, 8 Aug 2025 01:28:00 -0500
Subject: [PATCH 07/13] chore(l10n): New Crowdin updates (#5915)
---
frontend/lang/messages/pt-BR.json | 132 +++++++-------
mealie/lang/messages/pt-BR.json | 2 +-
.../seed/resources/foods/locales/pt-BR.json | 166 +++++++++---------
3 files changed, 150 insertions(+), 150 deletions(-)
diff --git a/frontend/lang/messages/pt-BR.json b/frontend/lang/messages/pt-BR.json
index 01ee2d0e4..520dc781e 100644
--- a/frontend/lang/messages/pt-BR.json
+++ b/frontend/lang/messages/pt-BR.json
@@ -253,7 +253,7 @@
"default-recipe-preferences": "Preferências padrões de receita",
"group-preferences": "Preferências de Grupo",
"private-group": "Grupo Privado",
- "private-group-description": "Setting your group to private will disable all public view options. This overrides any individual public view settings",
+ "private-group-description": "Configurar seu grupo para privado irá desabilitar as opções de visualização pública. Isso substitui qualquer configuração pública individual.",
"enable-public-access": "Ativar Acesso Público",
"enable-public-access-description": "Tornar receitas do grupo públicas por padrão, e permitir a sua visualização por visitantes não logados",
"allow-users-outside-of-your-group-to-see-your-recipes": "Permitir que usuários fora do seu grupo vejam suas receitas",
@@ -276,30 +276,30 @@
"admin-group-management": "Gerenciamento de Grupos Administrativos",
"admin-group-management-text": "As alterações a este grupo serão refletidas imediatamente.",
"group-id-value": "ID do grupo: {0}",
- "total-households": "Total Households",
- "you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
+ "total-households": "Total de Familiares",
+ "you-must-select-a-group-before-selecting-a-household": "Você deve selecionar um grupo antes de selecionar uma família"
},
"household": {
"household": "Casa",
"households": "Casas",
- "user-household": "User Household",
- "create-household": "Create Household",
- "household-name": "Household Name",
- "household-group": "Household Group",
- "household-management": "Household Management",
- "manage-households": "Manage Households",
- "admin-household-management": "Admin Household Management",
- "admin-household-management-text": "Changes to this household will be reflected immediately.",
- "household-id-value": "Household Id: {0}",
- "private-household": "Private Household",
- "private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings",
- "lock-recipe-edits-from-other-households": "Lock recipe edits from other households",
- "lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household",
- "household-recipe-preferences": "Household Recipe Preferences",
- "default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.",
- "allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes",
- "allow-users-outside-of-your-household-to-see-your-recipes-description": "When enabled you can use a public share link to share specific recipes without authorizing the user. When disabled, you can only share recipes with users who are in your household or with a pre-generated private link",
- "household-preferences": "Household Preferences"
+ "user-household": "Família do Usuário",
+ "create-household": "Criar Família",
+ "household-name": "Nome da Família",
+ "household-group": "Grupo Familiar",
+ "household-management": "Gerenciamento Familiar",
+ "manage-households": "Gerenciar Família",
+ "admin-household-management": "Administrador de Gerenciamento Familiar",
+ "admin-household-management-text": "Mudanças a esta família serão aplicadas imediatamente.",
+ "household-id-value": "Id Familiar: {0}",
+ "private-household": "Família Privada",
+ "private-household-description": "Configurar sua família como privado desativará todas as opções de visualização pública. Isso substitui as configurações de visualização pública individual",
+ "lock-recipe-edits-from-other-households": "Bloquear edições de receitas de outras famílias",
+ "lock-recipe-edits-from-other-households-description": "Quando ativado apenas os usuários da sua família podem editar receitas criadas por sua família",
+ "household-recipe-preferences": "Preferências de Receita da Família",
+ "default-recipe-preferences-description": "Estas são as configurações padrão quando uma nova receita é criada em sua família. Elas podem ser alteradas para receitas individuais no menu de configurações de receitas.",
+ "allow-users-outside-of-your-household-to-see-your-recipes": "Permitir que os usuários fora de sua família vejam suas receitas",
+ "allow-users-outside-of-your-household-to-see-your-recipes-description": "Quando ativado, você pode usar um link de compartilhamento público para compartilhar receitas específicas sem autorizar o usuário. Quando desativado, você só pode compartilhar receitas com usuários que estão na sua família ou com um link privado pré-gerado",
+ "household-preferences": "Preferências Familiares"
},
"meal-plan": {
"create-a-new-meal-plan": "Criar um novo plano de refeições",
@@ -321,10 +321,10 @@
"mealplan-settings": "Configurações de Plano de Refeições",
"mealplan-update-failed": "Falha ao atualizar Plano de Refeições",
"mealplan-updated": "Plano de Refeições atualizado",
- "mealplan-households-description": "If no household is selected, recipes can be added from any household",
- "any-category": "Any Category",
- "any-tag": "Any Tag",
- "any-household": "Any Household",
+ "mealplan-households-description": "Se nenhuma família for selecionada, as receitas podem ser adicionadas por qualquer família",
+ "any-category": "Qualquer Categoria",
+ "any-tag": "Qualquer Etiqueta",
+ "any-household": "Qualquer Família",
"no-meal-plan-defined-yet": "Nenhum Plano de Refeições definido ainda",
"no-meal-planned-for-today": "Nenhuma refeição planejada para hoje",
"numberOfDays-hint": "Número de dias ao carregar a página",
@@ -357,7 +357,7 @@
"for-type-meal-types": "para {0} tipos de refeição",
"meal-plan-rules": "Regras de Plano de Refeições",
"new-rule": "Nova Regra",
- "meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.",
+ "meal-plan-rules-description": "Você pode criar regras para selecionar receitas automaticamente para seus Planos de Refeição. Essas regras são usadas pelo servidor para determinar o conjunto aleatório de receitas a serem selecionadas ao criar os planos de refeição. Observe que se as regras tiverem as mesmas restrições de dia/tipo, os filtros de regras serão mesclados. Na prática, não é necessário criar regras duplicadas, mas é possível fazê-lo.",
"new-rule-description": "Ao criar uma nova regra para um Plano de Refeições, você pode restringir a regra a ser aplicada a um dia específico da semana e/ou a um tipo específico de refeição. Para aplicar uma regra a todos os dias ou a todos os tipos de refeições, você pode definir a regra para \"Qualquer\", que será aplicada a todos os valores possíveis para o dia e/ou o tipo de refeição.",
"recipe-rules": "Regras das receitas",
"applies-to-all-days": "Aplica-se diariamente",
@@ -432,7 +432,7 @@
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Cole os dados da sua receita. Cada linha será tratado como um item em uma lista",
"recipe-markup-specification": "Especificação da Receita",
"recipe-url": "URL da Receita",
- "recipe-html-or-json": "Recipe HTML or JSON",
+ "recipe-html-or-json": "HMTL ou JSON da Receita",
"upload-a-recipe": "Enviar uma Receita",
"upload-individual-zip-file": "Enviar um arquivo .zip individual exportado a partir de outra instância do Mealie.",
"url-form-hint": "Copie e cole um link do seu site de receita favorito",
@@ -472,7 +472,7 @@
"comment": "Comentário",
"comments": "Comentários",
"delete-confirmation": "Você tem certeza que deseja apagar esta receita?",
- "admin-delete-confirmation": "You're about to delete a recipe that isn't yours using admin permissions. Are you sure?",
+ "admin-delete-confirmation": "Você está prestes a excluir uma receita que não é sua usando permissões de administrador. Tem certeza?",
"delete-recipe": "Excluir Receita",
"description": "Descrição",
"disable-amount": "Desativa Quantidade de Ingredientes",
@@ -527,7 +527,7 @@
"sugar-content": "Açúcares",
"title": "Título",
"total-time": "Tempo Total",
- "trans-fat-content": "Trans-fat",
+ "trans-fat-content": "Gordura trans",
"unable-to-delete-recipe": "Não foi possível apagar a receita",
"unsaturated-fat-content": "Gorduras não saturadas",
"no-recipe": "Nenhuma Receita",
@@ -548,8 +548,8 @@
"failed-to-add-recipe-to-mealplan": "Falha ao adicionar a receita ao plano de refeições",
"failed-to-add-to-list": "Falha ao adicionar à lista",
"yield": "Rendimento",
- "yields-amount-with-text": "Yields {amount} {text}",
- "yield-text": "Yield Text",
+ "yields-amount-with-text": "Produtos {amount}{text}",
+ "yield-text": "Texto do Produto",
"quantity": "Quantidade",
"choose-unit": "Escolher unidades",
"press-enter-to-create": "Pressione Enter para criar",
@@ -580,14 +580,14 @@
"made-this": "Eu Fiz Isso",
"how-did-it-turn-out": "Como que ficou?",
"user-made-this": "{user} fez isso",
- "added-to-timeline": "Added to timeline",
- "failed-to-add-to-timeline": "Failed to add to timeline",
- "failed-to-update-recipe": "Failed to update recipe",
- "added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
+ "added-to-timeline": "Adicionado à linha do tempo",
+ "failed-to-add-to-timeline": "Falha ao adicionar à linha do tempo",
+ "failed-to-update-recipe": "Falha ao atualizar receita",
+ "added-to-timeline-but-failed-to-add-image": "Adicionado à linha do tempo, mas não foi possível adicionar imagem",
"api-extras-description": "Extras de receitas são atributos-chave da API do Mealie. Assim, você pode criar pares chave/valor JSON personalizados dentro de uma receita, referenciando aplicações de terceiros. Você pode usar as chaves para fornecer informações, como por ex. ativar automações ou mensagens que serão enviadas a seus dispositivos.",
"message-key": "Chave de mensagem",
"parse": "Analisar",
- "ingredients-not-parsed-description": "It looks like your ingredients aren't parsed yet. Click the \"{parse}\" button below to parse your ingredients into structured foods.",
+ "ingredients-not-parsed-description": "Parece que seus ingredientes ainda não foram analisados. Clique no botão \"{parse}\" abaixo para analisar seus ingredientes em alimentos estruturados.",
"attach-images-hint": "Anexe imagens arrastando e soltando-as no editor",
"drop-image": "Arrastar imagem",
"enable-ingredient-amounts-to-use-this-feature": "Ative quantidades de ingredientes para usar esta funcionalidade",
@@ -604,7 +604,7 @@
"import-with-zip": "Importar a partir de .zip",
"create-recipe-from-an-image": "Create Recipe from an Image",
"create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.",
- "crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.",
+ "crop-and-rotate-the-image": "Corte e gire a imagem para que apenas o texto esteja visível e esteja na posição correta.",
"create-from-images": "Criar a partir de imagens",
"should-translate-description": "Traduza a receita para o meu idioma",
"please-wait-image-procesing": "Por favor aguarde, a imagem está sendo processada. Isto pode levar algum tempo.",
@@ -618,13 +618,13 @@
"scrape-recipe-have-a-lot-of-recipes": "Tem muitas receitas a extrair de uma vez?",
"scrape-recipe-suggest-bulk-importer": "Tente o importador em massa",
"scrape-recipe-have-raw-html-or-json-data": "Tem dados HTML ou JSON brutos?",
- "scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly",
+ "scrape-recipe-you-can-import-from-raw-data-directly": "Você pode importar diretamente de dados brutos",
"import-original-keywords-as-tags": "Importar palavras-chave originais como marcadores",
"stay-in-edit-mode": "Permanecer no modo de edição",
"import-from-zip": "Importar do .zip",
"import-from-zip-description": "Importar uma única receita exportada de outra instância Mealie.",
- "import-from-html-or-json": "Import from HTML or JSON",
- "import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.",
+ "import-from-html-or-json": "Importar de HTML ou JSON",
+ "import-from-html-or-json-description": "Importe uma única receita de HTML ou JSON. Isso é útil se você tiver uma receita de um site que a Mealie não consegue extrair normalmente, ou de alguma outra fonte externa.",
"json-import-format-description-colon": "Para importar via JSON, ele deve estar em formato válido:",
"json-editor": "Editor de JSON",
"zip-files-must-have-been-exported-from-mealie": "Os arquivos .zip devem ter sido exportados do Mealie",
@@ -643,9 +643,9 @@
"recipe-debugger-use-openai-description": "Usar OpenAI para analisar os resultados ao invés de depender da biblioteca de extração. Criando uma receita via URL, isso é feito automaticamente se essa biblioteca, mas você pode testar manualmente aqui.",
"debug": "Depurar",
"tree-view": "Visualização em árvore",
- "recipe-servings": "Recipe Servings",
+ "recipe-servings": "Porções da Receita",
"recipe-yield": "Rendimento da Receita",
- "recipe-yield-text": "Recipe Yield Text",
+ "recipe-yield-text": "Texto de Produção da Receita",
"unit": "Unidade",
"upload-image": "Enviar imagem",
"screen-awake": "Manter a tela ligada",
@@ -664,15 +664,15 @@
"no-unit": "Sem unidades",
"missing-unit": "Criar unidade ausente: {unit}",
"missing-food": "Criar comida ausente: {food}",
- "this-unit-could-not-be-parsed-automatically": "This unit could not be parsed automatically",
- "this-food-could-not-be-parsed-automatically": "This food could not be parsed automatically",
+ "this-unit-could-not-be-parsed-automatically": "Esta unidade não pôde ser analisada automaticamente",
+ "this-food-could-not-be-parsed-automatically": "Este alimento não pôde ser analisado automaticamente",
"no-food": "Sem Comida"
},
- "reset-servings-count": "Reset Servings Count",
+ "reset-servings-count": "Redefinir Contagem de Porções",
"not-linked-ingredients": "Ingredientes adicionais",
- "upload-another-image": "Upload another image",
- "upload-images": "Upload images",
- "upload-more-images": "Upload more images"
+ "upload-another-image": "Carregar outra imagem",
+ "upload-images": "Carregar imagens",
+ "upload-more-images": "Carregar mais imagens"
},
"recipe-finder": {
"recipe-finder": "Localizador de Receitas",
@@ -681,15 +681,15 @@
"no-ingredients-selected": "Nenhum ingrediente selecionado",
"missing": "Ausente",
"no-recipes-found": "Nenhuma receita encontrada",
- "no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
- "include-ingredients-on-hand": "Include Ingredients On Hand",
+ "no-recipes-found-description": "Tente adicionar mais ingredientes à sua busca ou ajuste seus filtros",
+ "include-ingredients-on-hand": "Incluir Ingredientes Manualmente",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Ferramentas Selecionadas",
"other-filters": "Outros Filtros",
- "ready-to-make": "Ready to Make",
- "almost-ready-to-make": "Almost Ready to Make"
+ "ready-to-make": "Pronto Para Fazer",
+ "almost-ready-to-make": "Quase Pronto Para Fazer"
},
"search": {
"advanced-search": "Pesquisa avançada",
@@ -1040,7 +1040,7 @@
"administrator": "Administrador",
"user-can-invite-other-to-group": "O usuário pode convidar outros para o grupo",
"user-can-manage-group": "Usuário pode gerenciar o grupo",
- "user-can-manage-household": "User can manage household",
+ "user-can-manage-household": "O usuário pode gerenciar a família",
"user-can-organize-group-data": "Usuário pode organizar dados do grupo",
"enable-advanced-features": "Ativar recursos avançados",
"it-looks-like-this-is-your-first-time-logging-in": "Parece que este é seu primeiro login.",
@@ -1300,8 +1300,8 @@
"debug-openai-services-description": "Use esta página para depurar serviços OpenAI. Você pode testar a sua conexão OpenAI e ver os resultados aqui. Se você tiver os serviços de imagem ativados, você também pode fornecer uma imagem.",
"run-test": "Executar teste",
"test-results": "Resultados do teste",
- "group-delete-note": "Groups with users or households cannot be deleted",
- "household-delete-note": "Households with users cannot be deleted"
+ "group-delete-note": "Grupos com usuários ou famílias não podem ser excluídos",
+ "household-delete-note": "Famílias com usuários não podem ser excluídas"
},
"profile": {
"welcome-user": "👋 Bem-vindo(a), {0}!",
@@ -1313,8 +1313,8 @@
"account-summary-description": "Aqui está um resumo das informações do seu grupo.",
"group-statistics": "Estatísticas do Grupo",
"group-statistics-description": "Suas Estatísticas em Grupo fornecem algumas informações sobre como você está usando o Mealie.",
- "household-statistics": "Household Statistics",
- "household-statistics-description": "Your Household Statistics provide some insight how you're using Mealie.",
+ "household-statistics": "Estatísticas da Família",
+ "household-statistics-description": "Suas Estatísticas da Família fornecem algumas dicas de como você está usando o Mealie.",
"storage-capacity": "Capacidade de armazenamento",
"storage-capacity-description": "Sua capacidade de armazenamento é um cálculo das imagens e arquivos que você carregou.",
"personal": "Pessoal",
@@ -1324,13 +1324,13 @@
"api-tokens-description": "Gerencie seus Tokens de API para acessar de aplicações externas.",
"group-description": "Esses itens são compartilhados dentro do seu grupo. Ao editar um deles vai mudá-lo para todo o grupo!",
"group-settings": "Configurações do Grupo",
- "group-settings-description": "Manage your common group settings, like privacy settings.",
- "household-description": "These items are shared within your household. Editing one of them will change it for the whole household!",
- "household-settings": "Household Settings",
- "household-settings-description": "Manage your household settings, like mealplan and privacy settings.",
+ "group-settings-description": "Gerencie suas configurações comuns de grupo, como configurações de privacidade.",
+ "household-description": "Esses itens são compartilhados dentro de sua família. Editar um deles irá alterá-lo para toda a família!",
+ "household-settings": "Configurações da Família",
+ "household-settings-description": "Gerencie suas configurações familiares, como planos de refeição e configurações de privacidade.",
"cookbooks-description": "Gerencie uma coleção de categorias de receita e gere páginas para elas.",
"members": "Membros",
- "members-description": "See who's in your household and manage their permissions.",
+ "members-description": "Ver quem está na sua família e gerenciar suas permissões.",
"webhooks-description": "Setup webhooks that trigger on days that you have have mealplan scheduled.",
"notifiers": "Notificadores",
"notifiers-description": "Configure e-mails e notificações push que desencadeiam eventos específicos.",
@@ -1355,9 +1355,9 @@
},
"cookbook": {
"cookbooks": "Livros de Receita",
- "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
- "hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
- "hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
+ "description": "Livros de receitas são outra maneira de criar sessões cruzadas de receitas, organizadores e outros filtros. Criar um livro de receitas adicionará um acesso à barra lateral e todas as receitas com filtros selecionados serão exibidos no livro de receitas.",
+ "hide-cookbooks-from-other-households": "Ocultar Livros de Receitas de Outras Famílias",
+ "hide-cookbooks-from-other-households-description": "Quando ativo, apenas livros de receitas da sua família aparecerão na barra lateral",
"public-cookbook": "Livro de Receitas público",
"public-cookbook-description": "Cookbooks públicos podem ser compartilhados com usuários que não sejam não-mealiee serão exibidos na sua página de grupos.",
"filter-options": "Opções de filtro",
@@ -1367,7 +1367,7 @@
"require-all-tools": "Exigir todas as ferramentas",
"cookbook-name": "Nome do Livro de Receitas",
"cookbook-with-name": "Livro de Receitas {0}",
- "household-cookbook-name": "{0} Cookbook {1}",
+ "household-cookbook-name": "{0} Livro de Receitas {1}",
"create-a-cookbook": "Criar um Livro de Receitas",
"cookbook": "Livro de Receitas"
},
diff --git a/mealie/lang/messages/pt-BR.json b/mealie/lang/messages/pt-BR.json
index 5f894bd89..6796cb855 100644
--- a/mealie/lang/messages/pt-BR.json
+++ b/mealie/lang/messages/pt-BR.json
@@ -10,7 +10,7 @@
"step-text": "Passos das receitas, assim como outros campos na página da receita, suportam sintaxe \"markdown\".\n\n**Adicione um link**\n\n[Meu Link](https://demo.mealie.io)\n"
},
"servings-text": {
- "makes": "Makes",
+ "makes": "Produz",
"serves": "Porções",
"serving": "Porção",
"servings": "Porções",
diff --git a/mealie/repos/seed/resources/foods/locales/pt-BR.json b/mealie/repos/seed/resources/foods/locales/pt-BR.json
index 1e9902aac..ee9663942 100644
--- a/mealie/repos/seed/resources/foods/locales/pt-BR.json
+++ b/mealie/repos/seed/resources/foods/locales/pt-BR.json
@@ -5,7 +5,7 @@
"aliases": [],
"description": "",
"name": "alho",
- "plural_name": "garlics"
+ "plural_name": "alhos"
},
"onion": {
"aliases": [],
@@ -29,7 +29,7 @@
"aliases": [],
"description": "",
"name": "cebolinha",
- "plural_name": "scallions"
+ "plural_name": "cebolinhas"
},
"zucchini": {
"aliases": [],
@@ -52,20 +52,20 @@
"yellow onion": {
"aliases": [],
"description": "",
- "name": "yellow onion",
- "plural_name": "yellow onions"
+ "name": "cebola",
+ "plural_name": "cebolas"
},
"celery": {
"aliases": [],
"description": "",
"name": "salsão",
- "plural_name": "celeries"
+ "plural_name": "aipos"
},
"jalapeno": {
"aliases": [],
"description": "",
- "name": "jalapeno",
- "plural_name": "jalapenoes"
+ "name": "pimenta-jalapenho",
+ "plural_name": "pimentas-jalapenho"
},
"avocado": {
"aliases": [],
@@ -76,8 +76,8 @@
"shallot": {
"aliases": [],
"description": "",
- "name": "shallot",
- "plural_name": "shallots"
+ "name": "chalota",
+ "plural_name": "chalotas"
},
"cherry tomato": {
"aliases": [],
@@ -95,27 +95,27 @@
"aliases": [],
"description": "",
"name": "espinafre",
- "plural_name": "spinaches"
+ "plural_name": "espinafres"
},
"sweet corn": {
"aliases": [],
"description": "",
- "name": "sweet corn",
- "plural_name": "sweet corns"
+ "name": "milho doce",
+ "plural_name": "milhos-doce"
},
"chile pepper": {
"aliases": [
- "capsicum"
+ "pimentão"
],
"description": "",
- "name": "chile pepper",
- "plural_name": "chile peppers"
+ "name": "pimenta malagueta",
+ "plural_name": "pimentas-malagueta"
},
"sweet potato": {
"aliases": [],
"description": "",
"name": "batata-doce",
- "plural_name": "sweet potatoes"
+ "plural_name": "batatas-doce"
},
"broccoli": {
"aliases": [],
@@ -126,14 +126,14 @@
"heart of palm": {
"aliases": [],
"description": "",
- "name": "heart of palm",
- "plural_name": "heart of palms"
+ "name": "palmito",
+ "plural_name": "palmitos"
},
"baby green": {
"aliases": [],
"description": "",
- "name": "baby green",
- "plural_name": "baby greens"
+ "name": "mini verdura",
+ "plural_name": "mini verduras"
},
"pumpkin": {
"aliases": [],
@@ -145,7 +145,7 @@
"aliases": [],
"description": "",
"name": "couve-flor",
- "plural_name": "cauliflowers"
+ "plural_name": "couves-flores"
},
"cabbage": {
"aliases": [],
@@ -156,26 +156,26 @@
"asparagu": {
"aliases": [],
"description": "",
- "name": "asparagu",
- "plural_name": "asparagus"
+ "name": "aspargo",
+ "plural_name": "aspargos"
},
"kale": {
"aliases": [],
"description": "",
"name": "couve",
- "plural_name": "kales"
+ "plural_name": "couves"
},
"arugula": {
"aliases": [],
"description": "",
- "name": "arugula",
- "plural_name": "arugulas"
+ "name": "rúcula",
+ "plural_name": "rúculas"
},
"leek": {
"aliases": [],
"description": "",
"name": "alho-poró",
- "plural_name": "leeks"
+ "plural_name": "alho-poró"
},
"eggplant": {
"aliases": [],
@@ -187,19 +187,19 @@
"aliases": [],
"description": "",
"name": "alface",
- "plural_name": "lettuces"
+ "plural_name": "alfaces"
},
"butternut squash": {
"aliases": [],
"description": "",
- "name": "butternut squash",
- "plural_name": "butternut squashes"
+ "name": "abóbora",
+ "plural_name": "abóboras"
},
"romaine": {
"aliases": [],
"description": "",
- "name": "romaine",
- "plural_name": "romaines"
+ "name": "alface-romana",
+ "plural_name": "alfaces-romanas"
},
"beetroot": {
"aliases": [],
@@ -211,168 +211,168 @@
"aliases": [],
"description": "",
"name": "couve-de-bruxelas",
- "plural_name": "brussels sprouts"
+ "plural_name": "couve-de-bruxelas"
},
"fennel": {
"aliases": [],
"description": "",
"name": "fennel",
- "plural_name": "fennels"
+ "plural_name": "erva-doce"
},
"sun dried tomato": {
"aliases": [],
"description": "",
- "name": "sun dried tomato",
- "plural_name": "sun dried tomatoes"
+ "name": "tomate seco",
+ "plural_name": "tomates secos"
},
"radish": {
"aliases": [],
"description": "",
"name": "rabanete",
- "plural_name": "radishes"
+ "plural_name": "rabanetes"
},
"red cabbage": {
"aliases": [],
"description": "",
- "name": "red cabbage",
- "plural_name": "red cabbages"
+ "name": "repolho roxo",
+ "plural_name": "repolhos roxos"
},
"artichoke": {
"aliases": [],
"description": "",
- "name": "artichoke",
- "plural_name": "artichokes"
+ "name": "alcachofra",
+ "plural_name": "alcachofras"
},
"new potato": {
"aliases": [],
"description": "",
- "name": "new potato",
- "plural_name": "new potatoes"
+ "name": "batata-bolinha",
+ "plural_name": "batatas-bolinha"
},
"summer squash": {
"aliases": [
- "courgette",
- "gem squash"
+ "abobrinha",
+ "abobrinha italiana"
],
"description": "",
- "name": "summer squash",
- "plural_name": "summer squashes"
+ "name": "abobrinha amarela",
+ "plural_name": "abrobrinhas amarelas"
},
"mixed green": {
"aliases": [],
"description": "",
- "name": "mixed green",
- "plural_name": "mixed greens"
+ "name": "mix de verdura",
+ "plural_name": "mixes de verduras"
},
"parsnip": {
"aliases": [],
"description": "",
- "name": "parsnip",
- "plural_name": "parsnips"
+ "name": "cherovia",
+ "plural_name": "cherovias"
},
"baby carrot": {
"aliases": [],
"description": "",
"name": "minicenoura",
- "plural_name": "baby carrots"
+ "plural_name": "mini cenouras"
},
"mixed vegetable": {
"aliases": [],
"description": "",
- "name": "mixed vegetable",
- "plural_name": "mixed vegetables"
+ "name": "mix de vegetal",
+ "plural_name": "mix de vegetais"
},
"poblano pepper": {
"aliases": [],
"description": "",
- "name": "poblano pepper",
- "plural_name": "poblano peppers"
+ "name": "pimenta poblano",
+ "plural_name": "pimentas poblano"
},
"sweet pepper": {
"aliases": [],
"description": "",
- "name": "sweet pepper",
- "plural_name": "sweet peppers"
+ "name": "pimentão doce",
+ "plural_name": "pimentões doces"
},
"serrano pepper": {
"aliases": [],
"description": "",
- "name": "serrano pepper",
- "plural_name": "serrano peppers"
+ "name": "pimenta serrano",
+ "plural_name": "pimentas serrano"
},
"cayenne pepper": {
"aliases": [],
"description": "",
- "name": "cayenne pepper",
- "plural_name": "cayenne peppers"
+ "name": "pimenta caiena",
+ "plural_name": "pimentas-de-caiena"
},
"green tomato": {
"aliases": [],
"description": "",
"name": "tomate verde",
- "plural_name": "green tomatoes"
+ "plural_name": "tomates verdes"
},
"watercress": {
"aliases": [],
"description": "",
- "name": "watercress",
- "plural_name": "watercress"
+ "name": "agrião",
+ "plural_name": "agriões"
},
"iceberg": {
"aliases": [],
"description": "",
- "name": "iceberg",
- "plural_name": "icebergs"
+ "name": "alface crespa",
+ "plural_name": "alfaces-crespas"
},
"mashed potato": {
"aliases": [],
"description": "",
- "name": "mashed potato",
- "plural_name": "mashed potatoes"
+ "name": "purê de batata",
+ "plural_name": "purês de batata"
},
"horseradish": {
"aliases": [],
"description": "",
- "name": "horseradish",
- "plural_name": "horseradishes"
+ "name": "raiz-forte",
+ "plural_name": "raízes-fortes"
},
"chard": {
"aliases": [],
"description": "",
"name": "acelga",
- "plural_name": "chards"
+ "plural_name": "acelga"
},
"pimiento": {
"aliases": [],
"description": "",
- "name": "pimiento",
- "plural_name": "pimientoes"
+ "name": "pimentão vermelho",
+ "plural_name": "pimentões vermelhos"
},
"spaghetti squash": {
"aliases": [],
"description": "",
- "name": "spaghetti squash",
- "plural_name": "spaghetti squashes"
+ "name": "abóbora-espaguete",
+ "plural_name": "abóboras-espaguete"
},
"butter lettuce": {
"aliases": [],
"description": "",
- "name": "butter lettuce",
- "plural_name": "butter lettuces"
+ "name": "alface manteiga",
+ "plural_name": "alfaces manteigas"
},
"hash brown": {
"aliases": [],
"description": "",
- "name": "hash brown",
- "plural_name": "hash browns"
+ "name": "batata rosti",
+ "plural_name": "batatas rosti"
},
"napa cabbage": {
"aliases": [
- "chinese leaves"
+ "repolho chinês"
],
"description": "",
- "name": "napa cabbage",
- "plural_name": "napa cabbages"
+ "name": "repolho napa",
+ "plural_name": "repolhos napa"
},
"celeriac": {
"aliases": [],
From f149bcc98f5a96f825a1160fc3115b9a3536a6dd Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 8 Aug 2025 17:15:06 +0000
Subject: [PATCH 08/13] fix(deps): update dependency openai to v1.99.5 (#5917)
---
poetry.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 520144e5c..a6d120e02 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1849,14 +1849,14 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"]
[[package]]
name = "openai"
-version = "1.99.3"
+version = "1.99.5"
description = "The official Python library for the openai API"
optional = false
python-versions = ">=3.8"
groups = ["main"]
files = [
- {file = "openai-1.99.3-py3-none-any.whl", hash = "sha256:c786a03f6cddadb5ee42c6d749aa4f6134fe14fdd7d69a667e5e7ce7fd29a719"},
- {file = "openai-1.99.3.tar.gz", hash = "sha256:1a0e2910e4545d828c14218f2ac3276827c94a043f5353e43b9413b38b497897"},
+ {file = "openai-1.99.5-py3-none-any.whl", hash = "sha256:4e870f9501b7c36132e2be13313ce3c4d6915a837e7a299c483aab6a6d4412e9"},
+ {file = "openai-1.99.5.tar.gz", hash = "sha256:aa97ac3326cac7949c5e4ac0274c454c1d19c939760107ae0d3948fc26a924ca"},
]
[package.dependencies]
From bd9e654de7c5b82063c199e024ee8ed923fc4c4c Mon Sep 17 00:00:00 2001
From: Hayden <64056131+hay-kot@users.noreply.github.com>
Date: Fri, 8 Aug 2025 12:50:48 -0500
Subject: [PATCH 09/13] chore(l10n): New Crowdin updates (#5918)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
---
.../seed/resources/foods/locales/gl-ES.json | 114 ++++-----
.../seed/resources/foods/locales/sv-SE.json | 226 +++++++++---------
2 files changed, 170 insertions(+), 170 deletions(-)
diff --git a/mealie/repos/seed/resources/foods/locales/gl-ES.json b/mealie/repos/seed/resources/foods/locales/gl-ES.json
index 7394bc40f..056939606 100644
--- a/mealie/repos/seed/resources/foods/locales/gl-ES.json
+++ b/mealie/repos/seed/resources/foods/locales/gl-ES.json
@@ -192,14 +192,14 @@
"butternut squash": {
"aliases": [],
"description": "",
- "name": "butternut squash",
- "plural_name": "butternut squashes"
+ "name": "cabaza",
+ "plural_name": "cabazas"
},
"romaine": {
"aliases": [],
"description": "",
- "name": "romaine",
- "plural_name": "romaines"
+ "name": "leituga-romana",
+ "plural_name": "leitugas-romanas"
},
"beetroot": {
"aliases": [],
@@ -222,8 +222,8 @@
"sun dried tomato": {
"aliases": [],
"description": "",
- "name": "sun dried tomato",
- "plural_name": "sun dried tomatoes"
+ "name": "tomate seco",
+ "plural_name": "tomates secos"
},
"radish": {
"aliases": [],
@@ -251,7 +251,7 @@
},
"summer squash": {
"aliases": [
- "courgette",
+ "cabaciña",
"gem squash"
],
"description": "",
@@ -274,7 +274,7 @@
"aliases": [],
"description": "",
"name": "baby carrot",
- "plural_name": "baby carrots"
+ "plural_name": "mini cenouras"
},
"mixed vegetable": {
"aliases": [],
@@ -303,8 +303,8 @@
"cayenne pepper": {
"aliases": [],
"description": "",
- "name": "cayenne pepper",
- "plural_name": "cayenne peppers"
+ "name": "pimenta caiena",
+ "plural_name": "pimentas de caiena"
},
"green tomato": {
"aliases": [],
@@ -327,8 +327,8 @@
"mashed potato": {
"aliases": [],
"description": "",
- "name": "mashed potato",
- "plural_name": "mashed potatoes"
+ "name": "puré de pataca",
+ "plural_name": "purés de pataca"
},
"horseradish": {
"aliases": [],
@@ -368,11 +368,11 @@
},
"napa cabbage": {
"aliases": [
- "chinese leaves"
+ "repolo chinés"
],
"description": "",
- "name": "napa cabbage",
- "plural_name": "napa cabbages"
+ "name": "repolo napa",
+ "plural_name": "repolos napa"
},
"celeriac": {
"aliases": [],
@@ -628,15 +628,15 @@
"foods": {
"tomato": {
"aliases": [],
- "description": "Yes they are a fruit",
+ "description": "Si, son froitas",
"name": "tomate",
"plural_name": "tomates"
},
"lemon": {
"aliases": [],
"description": "",
- "name": "lemon",
- "plural_name": "lemons"
+ "name": "limón",
+ "plural_name": "limóns"
},
"lime": {
"aliases": [],
@@ -671,8 +671,8 @@
"pineapple": {
"aliases": [],
"description": "",
- "name": "pineapple",
- "plural_name": "pineapples"
+ "name": "ananás",
+ "plural_name": "ananás"
},
"mango": {
"aliases": [],
@@ -683,8 +683,8 @@
"peach": {
"aliases": [],
"description": "",
- "name": "peach",
- "plural_name": "peaches"
+ "name": "pexego",
+ "plural_name": "pexegos"
},
"date": {
"aliases": [],
@@ -1781,8 +1781,8 @@
"pumpkin seed": {
"aliases": [],
"description": "",
- "name": "pumpkin seed",
- "plural_name": "pumpkin seeds"
+ "name": "semente de cabaza",
+ "plural_name": "sementes de cabaza"
},
"hazelnut": {
"aliases": [],
@@ -2009,7 +2009,7 @@
"cheddars"
],
"description": "",
- "name": "cheddar cheese",
+ "name": "queixo cheddar",
"plural_name": "cheddar cheeses"
},
"cream cheese": {
@@ -2531,8 +2531,8 @@
"requeijão": {
"aliases": [],
"description": "",
- "name": "requeijão",
- "plural_name": "requeijãoes"
+ "name": "requeixo",
+ "plural_name": "requeixos"
},
"vacherin": {
"aliases": [],
@@ -2687,8 +2687,8 @@
"condensed milk": {
"aliases": [],
"description": "",
- "name": "condensed milk",
- "plural_name": "condensed milks"
+ "name": "leite condensado",
+ "plural_name": "leites condensados"
},
"half and half": {
"aliases": [],
@@ -2849,8 +2849,8 @@
"goat milk": {
"aliases": [],
"description": "",
- "name": "goat milk",
- "plural_name": "goat milks"
+ "name": "leite de cabra",
+ "plural_name": "leites de cabra"
},
"cheese curd": {
"aliases": [],
@@ -2975,8 +2975,8 @@
"goat butter": {
"aliases": [],
"description": "",
- "name": "goat butter",
- "plural_name": "goat butter"
+ "name": "manteiga de leite de cabra",
+ "plural_name": "manteigas de leite de cabra"
},
"century egg": {
"aliases": [],
@@ -3141,8 +3141,8 @@
"almond milk": {
"aliases": [],
"description": "",
- "name": "almond milk",
- "plural_name": "almond milks"
+ "name": "leite de améndoa",
+ "plural_name": "leites de améndoa"
},
"almond butter": {
"aliases": [],
@@ -3165,7 +3165,7 @@
"vegan butter": {
"aliases": [],
"description": "",
- "name": "vegan butter",
+ "name": "manteiga vegana",
"plural_name": "vegan butter"
},
"non-dairy milk": {
@@ -3219,8 +3219,8 @@
"vegan cheese": {
"aliases": [],
"description": "",
- "name": "vegan cheese",
- "plural_name": "vegan cheeses"
+ "name": "queixo vegano",
+ "plural_name": "queixos veganos"
},
"cashew butter": {
"aliases": [],
@@ -3267,8 +3267,8 @@
"oat milk": {
"aliases": [],
"description": "",
- "name": "oat milk",
- "plural_name": "oat milks"
+ "name": "leite de avea",
+ "plural_name": "leites de avea"
},
"nut butter": {
"aliases": [],
@@ -3280,7 +3280,7 @@
"aliases": [],
"description": "",
"name": "leite de arroz",
- "plural_name": "rice milks"
+ "plural_name": "leites de arroz"
},
"vegan sour cream": {
"aliases": [],
@@ -3823,8 +3823,8 @@
"chorizo": {
"aliases": [],
"description": "",
- "name": "chorizo",
- "plural_name": "chorizoes"
+ "name": "chourizo",
+ "plural_name": "chourizos"
},
"pancetta": {
"aliases": [],
@@ -3883,8 +3883,8 @@
"salami": {
"aliases": [],
"description": "",
- "name": "salami",
- "plural_name": "salamis"
+ "name": "salame",
+ "plural_name": "salames"
},
"brisket": {
"aliases": [],
@@ -5079,8 +5079,8 @@
"carp": {
"aliases": [],
"description": "",
- "name": "carp",
- "plural_name": "carp"
+ "name": "carpa",
+ "plural_name": "carpas"
},
"cuttlefish": {
"aliases": [],
@@ -5515,8 +5515,8 @@
"crab": {
"aliases": [],
"description": "",
- "name": "crab",
- "plural_name": "crabs"
+ "name": "caranguexo",
+ "plural_name": "caranguexos"
},
"scallop": {
"aliases": [],
@@ -5813,8 +5813,8 @@
"cinnamon": {
"aliases": [],
"description": "",
- "name": "cinnamon",
- "plural_name": "cinnamons"
+ "name": "canela",
+ "plural_name": "canelas"
},
"parsley": {
"aliases": [],
@@ -5855,8 +5855,8 @@
"garlic powder": {
"aliases": [],
"description": "",
- "name": "garlic powder",
- "plural_name": "garlic powders"
+ "name": "allo en pó",
+ "plural_name": "allos en pó"
},
"oregano": {
"aliases": [],
@@ -5921,8 +5921,8 @@
"onion powder": {
"aliases": [],
"description": "",
- "name": "onion powder",
- "plural_name": "onion powders"
+ "name": "cebola en pó",
+ "plural_name": "cebolas en pó"
},
"ginger powder": {
"aliases": [],
@@ -15107,8 +15107,8 @@
"coffee": {
"aliases": [],
"description": "",
- "name": "coffee",
- "plural_name": "coffees"
+ "name": "café",
+ "plural_name": "cafés"
},
"club soda": {
"aliases": [],
diff --git a/mealie/repos/seed/resources/foods/locales/sv-SE.json b/mealie/repos/seed/resources/foods/locales/sv-SE.json
index a6e3c58b5..dc3af3ad6 100644
--- a/mealie/repos/seed/resources/foods/locales/sv-SE.json
+++ b/mealie/repos/seed/resources/foods/locales/sv-SE.json
@@ -1853,8 +1853,8 @@
"onion seed": {
"aliases": [],
"description": "",
- "name": "onion seed",
- "plural_name": "onion seeds"
+ "name": "lökfrö",
+ "plural_name": "lökfrön"
},
"watermelon seed": {
"aliases": [],
@@ -1913,8 +1913,8 @@
"jackfruit seed": {
"aliases": [],
"description": "",
- "name": "jackfruit seed",
- "plural_name": "jackfruit seeds"
+ "name": "jackfruktfrö",
+ "plural_name": "jackfruktfrön"
},
"honey-roasted almond": {
"aliases": [],
@@ -1932,7 +1932,7 @@
"aliases": [],
"description": "",
"name": "chironji",
- "plural_name": "chironjis"
+ "plural_name": "chironjin"
},
"honey-roasted pecan": {
"aliases": [],
@@ -1943,8 +1943,8 @@
"tigernut": {
"aliases": [],
"description": "",
- "name": "tigernut",
- "plural_name": "tigernuts"
+ "name": "jordmandel",
+ "plural_name": "jordmandlar"
},
"sunflower sprout": {
"aliases": [],
@@ -1967,26 +1967,26 @@
"ginkgo nut": {
"aliases": [],
"description": "",
- "name": "ginkgo nut",
- "plural_name": "ginkgo nuts"
+ "name": "ginkonöt",
+ "plural_name": "ginkonötter"
},
"keto trail mix": {
"aliases": [],
"description": "",
- "name": "keto trail mix",
- "plural_name": "keto trail mixes"
+ "name": "keto trail-mix",
+ "plural_name": "keto trail-mixer"
},
"wattleseed": {
"aliases": [],
"description": "",
- "name": "wattleseed",
- "plural_name": "wattleseeds"
+ "name": "akaciafrö",
+ "plural_name": "akaciafrön"
},
"barùka": {
"aliases": [],
"description": "",
"name": "barùka",
- "plural_name": "barùkas"
+ "plural_name": "barùkan"
},
"indian almond": {
"aliases": [],
@@ -2147,8 +2147,8 @@
"fontina": {
"aliases": [],
"description": "",
- "name": "fontina",
- "plural_name": "fontinas"
+ "name": "fortina-ost",
+ "plural_name": "fortina-ostar"
},
"queso fresco": {
"aliases": [],
@@ -2171,8 +2171,8 @@
"cotija": {
"aliases": [],
"description": "",
- "name": "cotija",
- "plural_name": "cotijas"
+ "name": "cotijamajs",
+ "plural_name": "cotijamajs"
},
"asiago": {
"aliases": [],
@@ -2213,14 +2213,14 @@
"neufchatel": {
"aliases": [],
"description": "",
- "name": "neufchatel",
- "plural_name": "neufchatels"
+ "name": "neufchatelost",
+ "plural_name": "neufchatelsostar"
},
"herb cream cheese": {
"aliases": [],
"description": "",
- "name": "herb cream cheese",
- "plural_name": "herb cream cheeses"
+ "name": "örtfärskost",
+ "plural_name": "örtfärskostar"
},
"burrata": {
"aliases": [],
@@ -2303,14 +2303,14 @@
"oaxaca": {
"aliases": [],
"description": "",
- "name": "oaxaca",
- "plural_name": "oaxacas"
+ "name": "oaxaca-ost",
+ "plural_name": "oaxaca-ostar"
},
"labneh": {
"aliases": [],
"description": "",
- "name": "labneh",
- "plural_name": "labnehs"
+ "name": "labneh-ost",
+ "plural_name": "labnehs-ostar"
},
"edam": {
"aliases": [],
@@ -2339,44 +2339,44 @@
"asadero": {
"aliases": [],
"description": "",
- "name": "asadero",
- "plural_name": "asaderoes"
+ "name": "asadero-ost",
+ "plural_name": "asadero-ostar"
},
"marble cheese": {
"aliases": [],
"description": "",
- "name": "marble cheese",
- "plural_name": "marble cheeses"
+ "name": "marmorost",
+ "plural_name": "marmorostar"
},
"leicester": {
"aliases": [],
"description": "",
- "name": "leicester",
- "plural_name": "leicesters"
+ "name": "leicesterost",
+ "plural_name": "leicesterostar"
},
"kefalotyri": {
"aliases": [],
"description": "",
- "name": "kefalotyri",
- "plural_name": "kefalotyris"
+ "name": "kefalotyriost",
+ "plural_name": "kefalotyriostar"
},
"mizithra": {
"aliases": [],
"description": "",
- "name": "mizithra",
- "plural_name": "mizithras"
+ "name": "mizithra-ost",
+ "plural_name": "mizithras-ostar"
},
"lancashire": {
"aliases": [],
"description": "",
- "name": "lancashire",
- "plural_name": "lancashires"
+ "name": "lancashire-ost",
+ "plural_name": "lancashire-ostar"
},
"kasseri": {
"aliases": [],
"description": "",
- "name": "kasseri",
- "plural_name": "kasseris"
+ "name": "kasseriost",
+ "plural_name": "kasseriostar"
},
"babybel": {
"aliases": [],
@@ -2387,8 +2387,8 @@
"panela cheese": {
"aliases": [],
"description": "",
- "name": "panela cheese",
- "plural_name": "panela cheeses"
+ "name": "panelaost",
+ "plural_name": "panelaostar"
},
"longhorn": {
"aliases": [],
@@ -2399,8 +2399,8 @@
"seasoned feta cheese": {
"aliases": [],
"description": "",
- "name": "seasoned feta cheese",
- "plural_name": "seasoned feta cheeses"
+ "name": "kryddad fetaost",
+ "plural_name": "kryddade fetaostar"
},
"comté": {
"aliases": [],
@@ -2411,8 +2411,8 @@
"graviera": {
"aliases": [],
"description": "",
- "name": "graviera",
- "plural_name": "gravieras"
+ "name": "gravieraost",
+ "plural_name": "gravieraostar"
},
"wensleydale": {
"aliases": [],
@@ -2430,55 +2430,55 @@
"aliases": [],
"description": "",
"name": "cambozola",
- "plural_name": "cambozolas"
+ "plural_name": "cambozolaost"
},
"cheshire cheese": {
"aliases": [],
"description": "",
- "name": "cheshire cheese",
- "plural_name": "cheshire cheeses"
+ "name": "cheshire-ost",
+ "plural_name": "cheshire-ostar"
},
"anthotyro": {
"aliases": [],
"description": "",
- "name": "anthotyro",
- "plural_name": "anthotyros"
+ "name": "antotyro-ost",
+ "plural_name": "anthotyro-ostar"
},
"chenna": {
"aliases": [],
"description": "",
- "name": "chenna",
- "plural_name": "chennas"
+ "name": "chenna-ost",
+ "plural_name": "chennas-ostar"
},
"hard goat cheese": {
"aliases": [],
"description": "",
- "name": "hard goat cheese",
- "plural_name": "hard goat cheeses"
+ "name": "hård getost",
+ "plural_name": "hårda getostar"
},
"kashkaval": {
"aliases": [],
"description": "",
"name": "kashkaval",
- "plural_name": "kashkavals"
+ "plural_name": "kashkavaler"
},
"sheep cheese": {
"aliases": [],
"description": "",
- "name": "sheep cheese",
+ "name": "fårost",
"plural_name": "fårost"
},
"amul cheese": {
"aliases": [],
"description": "",
- "name": "amul cheese",
- "plural_name": "amul cheeses"
+ "name": "amul-ost",
+ "plural_name": "amul-ostar"
},
"reblochon": {
"aliases": [],
"description": "",
"name": "reblochon",
- "plural_name": "reblochons"
+ "plural_name": "reblochoner"
},
"robiola": {
"aliases": [],
@@ -2501,20 +2501,20 @@
"farmer's cheese": {
"aliases": [],
"description": "",
- "name": "farmer's cheese",
- "plural_name": "farmer's cheeses"
+ "name": "bondost",
+ "plural_name": "bondostar"
},
"manouri": {
"aliases": [],
"description": "",
- "name": "manouri",
- "plural_name": "manouris"
+ "name": "manouri-ost",
+ "plural_name": "manouri-ostar"
},
"mimolette": {
"aliases": [],
"description": "",
"name": "mimolette",
- "plural_name": "mimolettes"
+ "plural_name": "mimoletter"
},
"queso quesadilla": {
"aliases": [],
@@ -2525,7 +2525,7 @@
"caciocavallo": {
"aliases": [],
"description": "",
- "name": "caciocavallo",
+ "name": "",
"plural_name": "caciocavalloes"
},
"requeijão": {
@@ -2598,7 +2598,7 @@
"aliases": [],
"description": "",
"name": "petit-suisse",
- "plural_name": "petit-suisses"
+ "plural_name": "petit-suisser"
},
"sbrinz": {
"aliases": [],
@@ -2970,13 +2970,13 @@
"aliases": [],
"description": "",
"name": "strawberry cream cheese",
- "plural_name": "strawberry cream cheeses"
+ "plural_name": "jordgubbsfärskost"
},
"goat butter": {
"aliases": [],
"description": "",
- "name": "goat butter",
- "plural_name": "goat butter"
+ "name": "getsmör\n",
+ "plural_name": "getsmör"
},
"century egg": {
"aliases": [],
@@ -2987,14 +2987,14 @@
"orange curd": {
"aliases": [],
"description": "",
- "name": "orange curd",
- "plural_name": "orange curds"
+ "name": "apelsincurd",
+ "plural_name": "apelsincurd"
},
"goat yogurt": {
"aliases": [],
"description": "",
- "name": "goat yogurt",
- "plural_name": "goat yogurts"
+ "name": "getyoghurt",
+ "plural_name": "getyoghurter"
},
"dahi": {
"aliases": [],
@@ -3011,8 +3011,8 @@
"bulgarian yogurt": {
"aliases": [],
"description": "",
- "name": "bulgarian yogurt",
- "plural_name": "bulgarian yogurts"
+ "name": "bulgarisk yoghurt",
+ "plural_name": "bulgariska yoghurter"
},
"tvorog": {
"aliases": [],
@@ -3023,26 +3023,26 @@
"chocolate milk powder": {
"aliases": [],
"description": "",
- "name": "chocolate milk powder",
- "plural_name": "chocolate milk powders"
+ "name": "chokladmjölkpulver",
+ "plural_name": "chokladmjölkpulver"
},
"liquid rennet": {
"aliases": [],
"description": "",
- "name": "liquid rennet",
- "plural_name": "liquid rennets"
+ "name": "flytande löpe",
+ "plural_name": "flytande löpe"
},
"sheep’s milk yoghurt": {
"aliases": [],
"description": "",
- "name": "sheep’s milk yoghurt",
- "plural_name": "sheep’s milk yoghurts"
+ "name": "fårmjölksyoghurt",
+ "plural_name": "fårmjölksyoghurt"
},
"strawberry milk": {
"aliases": [],
"description": "",
- "name": "strawberry milk",
- "plural_name": "strawberry milks"
+ "name": "jordgubbsmjölk",
+ "plural_name": "jordgubbsmjölk"
},
"ayran": {
"aliases": [],
@@ -3059,8 +3059,8 @@
"yogurt drink": {
"aliases": [],
"description": "",
- "name": "yogurt drink",
- "plural_name": "yogurt drinks"
+ "name": "yoghurtdryck",
+ "plural_name": "yoghurtdrycker"
},
"passion-fruit curd": {
"aliases": [],
@@ -3071,20 +3071,20 @@
"pickled egg": {
"aliases": [],
"description": "",
- "name": "pickled egg",
- "plural_name": "pickled eggs"
+ "name": "inlagt ägg",
+ "plural_name": "inlagda ägg"
},
"sheep milk": {
"aliases": [],
"description": "",
"name": "sheep milk",
- "plural_name": "sheep milks"
+ "plural_name": "fårmjölk"
},
"starter culture": {
"aliases": [],
"description": "",
- "name": "starter culture",
- "plural_name": "starter cultures"
+ "name": "startkultur",
+ "plural_name": "startkulturer"
},
"kashk": {
"aliases": [],
@@ -3096,13 +3096,13 @@
"aliases": [],
"description": "",
"name": "strutsägg",
- "plural_name": "ostrich eggs"
+ "plural_name": "strutsägg"
},
"vanilla milk": {
"aliases": [],
"description": "",
- "name": "vanilla milk",
- "plural_name": "vanilla milks"
+ "name": "vaniljmjölk",
+ "plural_name": "vaniljmjölk"
},
"yoplait whip": {
"aliases": [],
@@ -3113,14 +3113,14 @@
"buffalo milk": {
"aliases": [],
"description": "",
- "name": "buffalo milk",
- "plural_name": "buffalo milks"
+ "name": "buffelmjölk",
+ "plural_name": "buffelmjölk"
},
"goat kefir": {
"aliases": [],
"description": "",
- "name": "goat kefir",
- "plural_name": "goat kefirs"
+ "name": "getkefir",
+ "plural_name": "getkefir"
},
"lebneh": {
"aliases": [],
@@ -3165,26 +3165,26 @@
"vegan butter": {
"aliases": [],
"description": "",
- "name": "vegan butter",
- "plural_name": "vegan butter"
+ "name": "veganskt smör",
+ "plural_name": "veganskt smör"
},
"non-dairy milk": {
"aliases": [],
"description": "",
- "name": "non-dairy milk",
- "plural_name": "non-dairy milks"
+ "name": "mjölkfri mjölk",
+ "plural_name": "mjölkfri mjölk"
},
"soy milk": {
"aliases": [],
"description": "",
"name": "sojamjölk",
- "plural_name": "soy milks"
+ "plural_name": "sojamjölk"
},
"extra firm tofu": {
"aliases": [],
"description": "",
- "name": "extra firm tofu",
- "plural_name": "extra firm tofus"
+ "name": "extra fast tofu",
+ "plural_name": "extra fast tofu"
},
"silken tofu": {
"aliases": [],
@@ -3207,26 +3207,26 @@
"egg replacer": {
"aliases": [],
"description": "",
- "name": "egg replacer",
- "plural_name": "egg replacers"
+ "name": "äggersättning",
+ "plural_name": "äggersättare"
},
"vegan mayonnaise": {
"aliases": [],
"description": "",
- "name": "vegan mayonnaise",
- "plural_name": "vegan mayonnaises"
+ "name": "vegansk majonnäs",
+ "plural_name": "veganskt majonnäs"
},
"vegan cheese": {
"aliases": [],
"description": "",
- "name": "vegan cheese",
- "plural_name": "vegan cheeses"
+ "name": "veganost",
+ "plural_name": "veganska ostar"
},
"cashew butter": {
"aliases": [],
"description": "",
- "name": "cashew butter",
- "plural_name": "cashew butter"
+ "name": "cashewsmör",
+ "plural_name": "cashewsmör"
},
"tempeh": {
"aliases": [],
From 79b6be85509126131e4061e5cc30d744d19e7966 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 9 Aug 2025 11:01:23 -0500
Subject: [PATCH 10/13] chore(deps): update dependency freezegun to v1.5.5
(#5922)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
poetry.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index a6d120e02..ede4a5c66 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -785,14 +785,14 @@ test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"]
[[package]]
name = "freezegun"
-version = "1.5.4"
+version = "1.5.5"
description = "Let your Python tests travel through time"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
- {file = "freezegun-1.5.4-py3-none-any.whl", hash = "sha256:8bdd75c9d790f53d5a173d273064ccd7900984b36635be552befeedb0cd47b20"},
- {file = "freezegun-1.5.4.tar.gz", hash = "sha256:798b9372fdd4d907f33e8b6a58bc64e682d9ffa8d494ce60f780197ee81faed1"},
+ {file = "freezegun-1.5.5-py3-none-any.whl", hash = "sha256:cd557f4a75cf074e84bc374249b9dd491eaeacd61376b9eb3c423282211619d2"},
+ {file = "freezegun-1.5.5.tar.gz", hash = "sha256:ac7742a6cc6c25a2c35e9292dfd554b897b517d2dec26891a2e8debf205cb94a"},
]
[package.dependencies]
From 9e46c57e7809cd0e3ea9c47820240b7191dbc578 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 9 Aug 2025 16:17:43 +0000
Subject: [PATCH 11/13] chore(deps): update dependency pylint to v3.3.8 (#5923)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
poetry.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index ede4a5c66..54fb70731 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -2637,14 +2637,14 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"]
[[package]]
name = "pylint"
-version = "3.3.7"
+version = "3.3.8"
description = "python code static checker"
optional = false
python-versions = ">=3.9.0"
groups = ["dev"]
files = [
- {file = "pylint-3.3.7-py3-none-any.whl", hash = "sha256:43860aafefce92fca4cf6b61fe199cdc5ae54ea28f9bf4cd49de267b5195803d"},
- {file = "pylint-3.3.7.tar.gz", hash = "sha256:2b11de8bde49f9c5059452e0c310c079c746a0a8eeaa789e5aa966ecc23e4559"},
+ {file = "pylint-3.3.8-py3-none-any.whl", hash = "sha256:7ef94aa692a600e82fabdd17102b73fc226758218c97473c7ad67bd4cb905d83"},
+ {file = "pylint-3.3.8.tar.gz", hash = "sha256:26698de19941363037e2937d3db9ed94fb3303fdadf7d98847875345a8bb6b05"},
]
[package.dependencies]
From d3436a5ca8dae8d4e434b09cdd7cd1636e5f0603 Mon Sep 17 00:00:00 2001
From: Craig Matear
Date: Sun, 10 Aug 2025 02:43:23 +0100
Subject: [PATCH 12/13] feat: Add label notifier (#5879)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
---
frontend/lang/messages/en-US.json | 3 +-
frontend/lib/api/types/admin.ts | 5 +-
frontend/lib/api/types/analytics.ts | 1 -
frontend/lib/api/types/cookbook.ts | 5 +-
frontend/lib/api/types/group.ts | 1 -
frontend/lib/api/types/household.ts | 14 ++-
frontend/lib/api/types/labels.ts | 1 -
frontend/lib/api/types/meal-plan.ts | 9 +-
frontend/lib/api/types/recipe.ts | 15 ++-
frontend/lib/api/types/reports.ts | 1 -
frontend/lib/api/types/response.ts | 1 -
frontend/lib/api/types/user.ts | 3 +-
frontend/pages/household/notifiers.vue | 18 ++++
frontend/types/components.d.ts | 2 +-
...b583aac2d_add_label_notifier_crud_bools.py | 48 ++++++++++
mealie/db/models/household/events.py | 4 +
mealie/routes/groups/controller_labels.py | 36 +++++++-
mealie/schema/_mealie/__init__.py | 6 +-
mealie/schema/admin/__init__.py | 36 ++++----
mealie/schema/group/__init__.py | 6 +-
mealie/schema/household/__init__.py | 86 ++++++++---------
mealie/schema/household/group_events.py | 4 +
mealie/schema/meal_plan/__init__.py | 6 +-
mealie/schema/recipe/__init__.py | 92 +++++++++----------
mealie/schema/response/__init__.py | 4 +-
mealie/schema/user/__init__.py | 12 +--
.../services/event_bus_service/event_types.py | 10 ++
.../test_group_notifications.py | 3 +
tests/utils/api_routes/__init__.py | 2 -
29 files changed, 281 insertions(+), 153 deletions(-)
create mode 100644 mealie/alembic/versions/2025-08-09-19.32.37_e6bb583aac2d_add_label_notifier_crud_bools.py
diff --git a/frontend/lang/messages/en-US.json b/frontend/lang/messages/en-US.json
index 15623ce09..53ef08f83 100644
--- a/frontend/lang/messages/en-US.json
+++ b/frontend/lang/messages/en-US.json
@@ -79,7 +79,8 @@
"tag-events": "Tag Events",
"category-events": "Category Events",
"when-a-new-user-joins-your-group": "When a new user joins your group",
- "recipe-events": "Recipe Events"
+ "recipe-events": "Recipe Events",
+ "label-events": "Label Events"
},
"general": {
"add": "Add",
diff --git a/frontend/lib/api/types/admin.ts b/frontend/lib/api/types/admin.ts
index 95b431bc9..6f2022f6e 100644
--- a/frontend/lib/api/types/admin.ts
+++ b/frontend/lib/api/types/admin.ts
@@ -1,5 +1,4 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
@@ -117,6 +116,7 @@ export interface CustomPageBase {
export interface RecipeCategoryResponse {
name: string;
id: string;
+ groupId?: string | null;
slug: string;
recipes?: RecipeSummary[];
}
@@ -149,18 +149,21 @@ export interface RecipeSummary {
}
export interface RecipeCategory {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
[k: string]: unknown;
}
export interface RecipeTag {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
[k: string]: unknown;
}
export interface RecipeTool {
id: string;
+ groupId?: string | null;
name: string;
slug: string;
householdsWithTool?: string[];
diff --git a/frontend/lib/api/types/analytics.ts b/frontend/lib/api/types/analytics.ts
index 43cb23663..5bdc7fbcd 100644
--- a/frontend/lib/api/types/analytics.ts
+++ b/frontend/lib/api/types/analytics.ts
@@ -1,5 +1,4 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
diff --git a/frontend/lib/api/types/cookbook.ts b/frontend/lib/api/types/cookbook.ts
index 2daf20aaa..a35e5cd5f 100644
--- a/frontend/lib/api/types/cookbook.ts
+++ b/frontend/lib/api/types/cookbook.ts
@@ -1,5 +1,4 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
@@ -39,7 +38,6 @@ export interface QueryFilterJSONPart {
attributeName?: string | null;
relationalOperator?: RelationalKeyword | RelationalOperator | null;
value?: string | string[] | null;
- [k: string]: unknown;
}
export interface RecipeCookBook {
name: string;
@@ -83,18 +81,21 @@ export interface RecipeSummary {
}
export interface RecipeCategory {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
[k: string]: unknown;
}
export interface RecipeTag {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
[k: string]: unknown;
}
export interface RecipeTool {
id: string;
+ groupId?: string | null;
name: string;
slug: string;
householdsWithTool?: string[];
diff --git a/frontend/lib/api/types/group.ts b/frontend/lib/api/types/group.ts
index 1f72c09c5..8ebf2c96c 100644
--- a/frontend/lib/api/types/group.ts
+++ b/frontend/lib/api/types/group.ts
@@ -1,5 +1,4 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
diff --git a/frontend/lib/api/types/household.ts b/frontend/lib/api/types/household.ts
index b01fe7245..f3400dea4 100644
--- a/frontend/lib/api/types/household.ts
+++ b/frontend/lib/api/types/household.ts
@@ -1,5 +1,4 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
@@ -70,6 +69,9 @@ export interface GroupEventNotifierOptions {
categoryCreated?: boolean;
categoryUpdated?: boolean;
categoryDeleted?: boolean;
+ labelCreated?: boolean;
+ labelUpdated?: boolean;
+ labelDeleted?: boolean;
}
export interface GroupEventNotifierOptionsOut {
testMessage?: boolean;
@@ -94,6 +96,9 @@ export interface GroupEventNotifierOptionsOut {
categoryCreated?: boolean;
categoryUpdated?: boolean;
categoryDeleted?: boolean;
+ labelCreated?: boolean;
+ labelUpdated?: boolean;
+ labelDeleted?: boolean;
id: string;
}
export interface GroupEventNotifierOptionsSave {
@@ -119,6 +124,9 @@ export interface GroupEventNotifierOptionsSave {
categoryCreated?: boolean;
categoryUpdated?: boolean;
categoryDeleted?: boolean;
+ labelCreated?: boolean;
+ labelUpdated?: boolean;
+ labelDeleted?: boolean;
notifierId: string;
}
export interface GroupEventNotifierOut {
@@ -166,6 +174,7 @@ export interface GroupRecipeActionOut {
export interface GroupRecipeActionPayload {
action: GroupRecipeActionOut;
content: unknown;
+ recipeScale: number;
}
export interface HouseholdCreate {
groupId?: string | null;
@@ -587,18 +596,21 @@ export interface RecipeSummary {
}
export interface RecipeCategory {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
[k: string]: unknown;
}
export interface RecipeTag {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
[k: string]: unknown;
}
export interface RecipeTool {
id: string;
+ groupId?: string | null;
name: string;
slug: string;
householdsWithTool?: string[];
diff --git a/frontend/lib/api/types/labels.ts b/frontend/lib/api/types/labels.ts
index 9d44342cc..ee9335bb2 100644
--- a/frontend/lib/api/types/labels.ts
+++ b/frontend/lib/api/types/labels.ts
@@ -1,5 +1,4 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
diff --git a/frontend/lib/api/types/meal-plan.ts b/frontend/lib/api/types/meal-plan.ts
index aa28e6349..85f03de97 100644
--- a/frontend/lib/api/types/meal-plan.ts
+++ b/frontend/lib/api/types/meal-plan.ts
@@ -1,12 +1,9 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
*/
-import type { HouseholdSummary } from "./household";
-
export type PlanEntryType = "breakfast" | "lunch" | "dinner" | "side";
export type PlanRulesDay = "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday" | "unset";
export type PlanRulesType = "breakfast" | "lunch" | "dinner" | "side" | "unset";
@@ -44,9 +41,6 @@ export interface PlanRulesOut {
householdId: string;
id: string;
queryFilter?: QueryFilterJSON;
- categories?: RecipeCategory[];
- tags?: RecipeTag[];
- households?: HouseholdSummary[];
}
export interface QueryFilterJSON {
parts?: QueryFilterJSONPart[];
@@ -108,18 +102,21 @@ export interface RecipeSummary {
}
export interface RecipeCategory {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
[k: string]: unknown;
}
export interface RecipeTag {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
[k: string]: unknown;
}
export interface RecipeTool {
id: string;
+ groupId?: string | null;
name: string;
slug: string;
householdsWithTool?: string[];
diff --git a/frontend/lib/api/types/recipe.ts b/frontend/lib/api/types/recipe.ts
index 29e4f98bd..7b34ac8a3 100644
--- a/frontend/lib/api/types/recipe.ts
+++ b/frontend/lib/api/types/recipe.ts
@@ -19,6 +19,7 @@ export interface AssignCategories {
export interface CategoryBase {
name: string;
id: string;
+ groupId?: string | null;
slug: string;
}
export interface AssignSettings {
@@ -40,6 +41,7 @@ export interface AssignTags {
export interface TagBase {
name: string;
id: string;
+ groupId?: string | null;
slug: string;
}
export interface CategoryIn {
@@ -48,8 +50,8 @@ export interface CategoryIn {
export interface CategoryOut {
name: string;
id: string;
- slug: string;
groupId: string;
+ slug: string;
}
export interface CategorySave {
name: string;
@@ -97,11 +99,13 @@ export interface CreateRecipeBulk {
}
export interface RecipeCategory {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
}
export interface RecipeTag {
id?: string | null;
+ groupId?: string | null;
name: string;
slug: string;
}
@@ -223,7 +227,7 @@ export interface Recipe {
groupId?: string;
name?: string | null;
slug?: string;
- image?: string;
+ image?: unknown;
recipeServings?: number;
recipeYieldQuantity?: number;
recipeYield?: string | null;
@@ -255,6 +259,7 @@ export interface Recipe {
}
export interface RecipeTool {
id: string;
+ groupId?: string | null;
name: string;
slug: string;
householdsWithTool?: string[];
@@ -293,6 +298,7 @@ export interface UserBase {
export interface RecipeCategoryResponse {
name: string;
id: string;
+ groupId?: string | null;
slug: string;
recipes?: RecipeSummary[];
}
@@ -399,6 +405,7 @@ export interface RecipeSuggestionResponseItem {
export interface RecipeTagResponse {
name: string;
id: string;
+ groupId?: string | null;
slug: string;
recipes?: RecipeSummary[];
}
@@ -447,12 +454,14 @@ export interface RecipeToolOut {
name: string;
householdsWithTool?: string[];
id: string;
+ groupId: string;
slug: string;
}
export interface RecipeToolResponse {
name: string;
householdsWithTool?: string[];
id: string;
+ groupId: string;
slug: string;
recipes?: RecipeSummary[];
}
@@ -507,7 +516,7 @@ export interface ScrapeRecipeTest {
url: string;
useOpenAI?: boolean;
}
-export interface SlugResponse { }
+export interface SlugResponse {}
export interface TagIn {
name: string;
}
diff --git a/frontend/lib/api/types/reports.ts b/frontend/lib/api/types/reports.ts
index e06788a0f..428c39f40 100644
--- a/frontend/lib/api/types/reports.ts
+++ b/frontend/lib/api/types/reports.ts
@@ -1,5 +1,4 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
diff --git a/frontend/lib/api/types/response.ts b/frontend/lib/api/types/response.ts
index d77f44084..9fa568846 100644
--- a/frontend/lib/api/types/response.ts
+++ b/frontend/lib/api/types/response.ts
@@ -1,5 +1,4 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
diff --git a/frontend/lib/api/types/user.ts b/frontend/lib/api/types/user.ts
index 58ef25f6a..a5818778b 100644
--- a/frontend/lib/api/types/user.ts
+++ b/frontend/lib/api/types/user.ts
@@ -1,5 +1,4 @@
/* tslint:disable */
-
/**
/* This file was automatically generated from pydantic models by running pydantic2ts.
/* Do not modify it by hand - just update the pydantic models and then re-run the script
@@ -63,6 +62,7 @@ export interface GroupInDB {
export interface CategoryBase {
name: string;
id: string;
+ groupId?: string | null;
slug: string;
}
export interface ReadWebhook {
@@ -197,7 +197,6 @@ export interface UserBase {
canManage?: boolean;
canManageHousehold?: boolean;
canOrganize?: boolean;
- advancedOptions?: boolean;
}
export interface UserIn {
id?: string | null;
diff --git a/frontend/pages/household/notifiers.vue b/frontend/pages/household/notifiers.vue
index de00aaa72..b836eb20f 100644
--- a/frontend/pages/household/notifiers.vue
+++ b/frontend/pages/household/notifiers.vue
@@ -368,6 +368,24 @@ export default defineNuxtComponent({
},
],
},
+ {
+ id: 8,
+ text: i18n.t("events.label-events"),
+ options: [
+ {
+ text: i18n.t("general.create") as string,
+ key: "labelCreated",
+ },
+ {
+ text: i18n.t("general.update") as string,
+ key: "labelUpdated",
+ },
+ {
+ text: i18n.t("general.delete") as string,
+ key: "labelDeleted",
+ },
+ ],
+ },
];
return {
diff --git a/frontend/types/components.d.ts b/frontend/types/components.d.ts
index d074283ee..9d0364a59 100644
--- a/frontend/types/components.d.ts
+++ b/frontend/types/components.d.ts
@@ -81,4 +81,4 @@ declare module "vue" {
}
}
-export {};
+export { };
diff --git a/mealie/alembic/versions/2025-08-09-19.32.37_e6bb583aac2d_add_label_notifier_crud_bools.py b/mealie/alembic/versions/2025-08-09-19.32.37_e6bb583aac2d_add_label_notifier_crud_bools.py
new file mode 100644
index 000000000..9b3c5d504
--- /dev/null
+++ b/mealie/alembic/versions/2025-08-09-19.32.37_e6bb583aac2d_add_label_notifier_crud_bools.py
@@ -0,0 +1,48 @@
+"""'Add label notifier CRUD bools'
+
+Revision ID: e6bb583aac2d
+Revises: d7b3ce6fa31a
+Create Date: 2025-08-09 19:32:37.285172
+
+"""
+
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = "e6bb583aac2d"
+down_revision: str | None = "d7b3ce6fa31a"
+branch_labels: str | tuple[str, ...] | None = None
+depends_on: str | tuple[str, ...] | None = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table("group_events_notifier_options", schema=None) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "label_created", sa.Boolean(), nullable=False, default=False, server_default=sa.sql.expression.false()
+ )
+ )
+ batch_op.add_column(
+ sa.Column(
+ "label_updated", sa.Boolean(), nullable=False, default=False, server_default=sa.sql.expression.false()
+ )
+ )
+ batch_op.add_column(
+ sa.Column(
+ "label_deleted", sa.Boolean(), nullable=False, default=False, server_default=sa.sql.expression.false()
+ )
+ )
+
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table("group_events_notifier_options", schema=None) as batch_op:
+ batch_op.drop_column("label_deleted")
+ batch_op.drop_column("label_updated")
+ batch_op.drop_column("label_created")
+
+ # ### end Alembic commands ###
diff --git a/mealie/db/models/household/events.py b/mealie/db/models/household/events.py
index 6be4f9931..9c850d40e 100644
--- a/mealie/db/models/household/events.py
+++ b/mealie/db/models/household/events.py
@@ -46,6 +46,10 @@ class GroupEventNotifierOptionsModel(SqlAlchemyBase, BaseMixins):
category_updated: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
category_deleted: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
+ label_created: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
+ label_updated: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
+ label_deleted: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
+
@auto_init()
def __init__(self, **_) -> None:
pass
diff --git a/mealie/routes/groups/controller_labels.py b/mealie/routes/groups/controller_labels.py
index fb008ef03..4a156eb94 100644
--- a/mealie/routes/groups/controller_labels.py
+++ b/mealie/routes/groups/controller_labels.py
@@ -3,7 +3,7 @@ from functools import cached_property
from fastapi import APIRouter, Depends
from pydantic import UUID4
-from mealie.routes._base.base_controllers import BaseUserController
+from mealie.routes._base.base_controllers import BaseCrudController
from mealie.routes._base.controller import controller
from mealie.routes._base.mixins import HttpRepo
from mealie.routes._base.routers import MealieCrudRoute
@@ -15,13 +15,14 @@ from mealie.schema.labels import (
)
from mealie.schema.labels.multi_purpose_label import MultiPurposeLabelPagination
from mealie.schema.response.pagination import PaginationQuery
+from mealie.services.event_bus_service.event_types import EventLabelData, EventOperation, EventTypes
from mealie.services.group_services.labels_service import MultiPurposeLabelService
router = APIRouter(prefix="/groups/labels", tags=["Groups: Multi Purpose Labels"], route_class=MealieCrudRoute)
@controller(router)
-class MultiPurposeLabelsController(BaseUserController):
+class MultiPurposeLabelsController(BaseCrudController):
@cached_property
def service(self):
return MultiPurposeLabelService(self.repos)
@@ -53,7 +54,15 @@ class MultiPurposeLabelsController(BaseUserController):
@router.post("", response_model=MultiPurposeLabelOut)
def create_one(self, data: MultiPurposeLabelCreate):
- return self.service.create_one(data)
+ new_label = self.service.create_one(data)
+ self.publish_event(
+ event_type=EventTypes.label_created,
+ document_data=EventLabelData(operation=EventOperation.create, label_id=new_label.id),
+ group_id=new_label.group_id,
+ household_id=None,
+ message=self.t("notifications.generic-created", name=new_label.name),
+ )
+ return new_label
@router.get("/{item_id}", response_model=MultiPurposeLabelOut)
def get_one(self, item_id: UUID4):
@@ -61,8 +70,25 @@ class MultiPurposeLabelsController(BaseUserController):
@router.put("/{item_id}", response_model=MultiPurposeLabelOut)
def update_one(self, item_id: UUID4, data: MultiPurposeLabelUpdate):
- return self.mixins.update_one(data, item_id)
+ label = self.mixins.update_one(data, item_id)
+ self.publish_event(
+ event_type=EventTypes.label_updated,
+ document_data=EventLabelData(operation=EventOperation.update, label_id=label.id),
+ group_id=label.group_id,
+ household_id=None,
+ message=self.t("notifications.generic-updated", name=label.name),
+ )
+ return label
@router.delete("/{item_id}", response_model=MultiPurposeLabelOut)
def delete_one(self, item_id: UUID4):
- return self.mixins.delete_one(item_id) # type: ignore
+ label = self.mixins.delete_one(item_id)
+ if label:
+ self.publish_event(
+ event_type=EventTypes.label_deleted,
+ document_data=EventLabelData(operation=EventOperation.delete, label_id=label.id),
+ group_id=label.group_id,
+ household_id=None,
+ message=self.t("notifications.generic-deleted", name=label.name),
+ )
+ return label
diff --git a/mealie/schema/_mealie/__init__.py b/mealie/schema/_mealie/__init__.py
index 628e17908..7441e747a 100644
--- a/mealie/schema/_mealie/__init__.py
+++ b/mealie/schema/_mealie/__init__.py
@@ -3,11 +3,11 @@ from .datetime_parse import DateError, DateTimeError, DurationError, TimeError
from .mealie_model import HasUUID, MealieModel, SearchType
__all__ = [
+ "HasUUID",
+ "MealieModel",
+ "SearchType",
"DateError",
"DateTimeError",
"DurationError",
"TimeError",
- "HasUUID",
- "MealieModel",
- "SearchType",
]
diff --git a/mealie/schema/admin/__init__.py b/mealie/schema/admin/__init__.py
index 367e94739..92edafd25 100644
--- a/mealie/schema/admin/__init__.py
+++ b/mealie/schema/admin/__init__.py
@@ -18,28 +18,10 @@ from .restore import (
from .settings import CustomPageBase, CustomPageOut
__all__ = [
- "MaintenanceLogs",
- "MaintenanceStorageDetails",
- "MaintenanceSummary",
"ChowdownURL",
"MigrationFile",
"MigrationImport",
"Migrations",
- "CustomPageBase",
- "CustomPageOut",
- "CommentImport",
- "CustomPageImport",
- "GroupImport",
- "ImportBase",
- "NotificationImport",
- "RecipeImport",
- "SettingsImport",
- "UserImport",
- "AllBackups",
- "BackupFile",
- "BackupOptions",
- "CreateBackup",
- "ImportJob",
"AdminAboutInfo",
"AppInfo",
"AppStartupInfo",
@@ -49,5 +31,23 @@ __all__ = [
"EmailReady",
"EmailSuccess",
"EmailTest",
+ "CustomPageBase",
+ "CustomPageOut",
+ "AllBackups",
+ "BackupFile",
+ "BackupOptions",
+ "CreateBackup",
+ "ImportJob",
+ "MaintenanceLogs",
+ "MaintenanceStorageDetails",
+ "MaintenanceSummary",
"DebugResponse",
+ "CommentImport",
+ "CustomPageImport",
+ "GroupImport",
+ "ImportBase",
+ "NotificationImport",
+ "RecipeImport",
+ "SettingsImport",
+ "UserImport",
]
diff --git a/mealie/schema/group/__init__.py b/mealie/schema/group/__init__.py
index a731b4432..3e0fb46fb 100644
--- a/mealie/schema/group/__init__.py
+++ b/mealie/schema/group/__init__.py
@@ -7,13 +7,13 @@ from .group_seeder import SeederConfig
from .group_statistics import GroupStorage
__all__ = [
+ "GroupAdminUpdate",
+ "GroupStorage",
"GroupDataExport",
+ "SeederConfig",
"CreateGroupPreferences",
"ReadGroupPreferences",
"UpdateGroupPreferences",
- "GroupStorage",
"DataMigrationCreate",
"SupportedMigrations",
- "SeederConfig",
- "GroupAdminUpdate",
]
diff --git a/mealie/schema/household/__init__.py b/mealie/schema/household/__init__.py
index 1fcc7bb25..f0e2f88d9 100644
--- a/mealie/schema/household/__init__.py
+++ b/mealie/schema/household/__init__.py
@@ -70,49 +70,6 @@ from .invite_token import CreateInviteToken, EmailInitationResponse, EmailInvita
from .webhook import CreateWebhook, ReadWebhook, SaveWebhook, WebhookPagination, WebhookType
__all__ = [
- "GroupEventNotifierCreate",
- "GroupEventNotifierOptions",
- "GroupEventNotifierOptionsOut",
- "GroupEventNotifierOptionsSave",
- "GroupEventNotifierOut",
- "GroupEventNotifierPrivate",
- "GroupEventNotifierSave",
- "GroupEventNotifierUpdate",
- "GroupEventPagination",
- "CreateGroupRecipeAction",
- "GroupRecipeActionOut",
- "GroupRecipeActionPagination",
- "GroupRecipeActionPayload",
- "GroupRecipeActionType",
- "SaveGroupRecipeAction",
- "CreateWebhook",
- "ReadWebhook",
- "SaveWebhook",
- "WebhookPagination",
- "WebhookType",
- "CreateHouseholdPreferences",
- "ReadHouseholdPreferences",
- "SaveHouseholdPreferences",
- "UpdateHouseholdPreferences",
- "HouseholdCreate",
- "HouseholdInDB",
- "HouseholdPagination",
- "HouseholdRecipeBase",
- "HouseholdRecipeCreate",
- "HouseholdRecipeOut",
- "HouseholdRecipeSummary",
- "HouseholdRecipeUpdate",
- "HouseholdSave",
- "HouseholdSummary",
- "HouseholdUserSummary",
- "UpdateHousehold",
- "UpdateHouseholdAdmin",
- "HouseholdStatistics",
- "CreateInviteToken",
- "EmailInitationResponse",
- "EmailInvitation",
- "ReadInviteToken",
- "SaveInviteToken",
"ShoppingListAddRecipeParams",
"ShoppingListAddRecipeParamsBulk",
"ShoppingListCreate",
@@ -136,5 +93,48 @@ __all__ = [
"ShoppingListSave",
"ShoppingListSummary",
"ShoppingListUpdate",
+ "GroupEventNotifierCreate",
+ "GroupEventNotifierOptions",
+ "GroupEventNotifierOptionsOut",
+ "GroupEventNotifierOptionsSave",
+ "GroupEventNotifierOut",
+ "GroupEventNotifierPrivate",
+ "GroupEventNotifierSave",
+ "GroupEventNotifierUpdate",
+ "GroupEventPagination",
+ "CreateGroupRecipeAction",
+ "GroupRecipeActionOut",
+ "GroupRecipeActionPagination",
+ "GroupRecipeActionPayload",
+ "GroupRecipeActionType",
+ "SaveGroupRecipeAction",
+ "CreateHouseholdPreferences",
+ "ReadHouseholdPreferences",
+ "SaveHouseholdPreferences",
+ "UpdateHouseholdPreferences",
"SetPermissions",
+ "CreateInviteToken",
+ "EmailInitationResponse",
+ "EmailInvitation",
+ "ReadInviteToken",
+ "SaveInviteToken",
+ "HouseholdStatistics",
+ "CreateWebhook",
+ "ReadWebhook",
+ "SaveWebhook",
+ "WebhookPagination",
+ "WebhookType",
+ "HouseholdCreate",
+ "HouseholdInDB",
+ "HouseholdPagination",
+ "HouseholdRecipeBase",
+ "HouseholdRecipeCreate",
+ "HouseholdRecipeOut",
+ "HouseholdRecipeSummary",
+ "HouseholdRecipeUpdate",
+ "HouseholdSave",
+ "HouseholdSummary",
+ "HouseholdUserSummary",
+ "UpdateHousehold",
+ "UpdateHouseholdAdmin",
]
diff --git a/mealie/schema/household/group_events.py b/mealie/schema/household/group_events.py
index 3554e1b9f..7ab964f76 100644
--- a/mealie/schema/household/group_events.py
+++ b/mealie/schema/household/group_events.py
@@ -47,6 +47,10 @@ class GroupEventNotifierOptions(MealieModel):
category_updated: bool = False
category_deleted: bool = False
+ label_created: bool = False
+ label_updated: bool = False
+ label_deleted: bool = False
+
class GroupEventNotifierOptionsSave(GroupEventNotifierOptions):
notifier_id: UUID4
diff --git a/mealie/schema/meal_plan/__init__.py b/mealie/schema/meal_plan/__init__.py
index 639c61ee6..5f3b9b033 100644
--- a/mealie/schema/meal_plan/__init__.py
+++ b/mealie/schema/meal_plan/__init__.py
@@ -12,9 +12,6 @@ from .plan_rules import PlanRulesCreate, PlanRulesDay, PlanRulesOut, PlanRulesPa
from .shopping_list import ListItem, ShoppingListIn, ShoppingListOut
__all__ = [
- "ListItem",
- "ShoppingListIn",
- "ShoppingListOut",
"CreatePlanEntry",
"CreateRandomEntry",
"PlanEntryPagination",
@@ -22,6 +19,9 @@ __all__ = [
"ReadPlanEntry",
"SavePlanEntry",
"UpdatePlanEntry",
+ "ListItem",
+ "ShoppingListIn",
+ "ShoppingListOut",
"PlanRulesCreate",
"PlanRulesDay",
"PlanRulesOut",
diff --git a/mealie/schema/recipe/__init__.py b/mealie/schema/recipe/__init__.py
index 2304c8a5e..d105db300 100644
--- a/mealie/schema/recipe/__init__.py
+++ b/mealie/schema/recipe/__init__.py
@@ -89,35 +89,6 @@ from .recipe_tool import RecipeToolCreate, RecipeToolOut, RecipeToolResponse, Re
from .request_helpers import RecipeDuplicate, RecipeSlug, RecipeZipTokenResponse, SlugResponse, UpdateImageResponse
__all__ = [
- "IngredientReferences",
- "RecipeStep",
- "RecipeNote",
- "CategoryBase",
- "CategoryIn",
- "CategoryOut",
- "CategorySave",
- "RecipeCategoryResponse",
- "RecipeTagResponse",
- "TagBase",
- "TagIn",
- "TagOut",
- "TagSave",
- "RecipeAsset",
- "RecipeTimelineEventCreate",
- "RecipeTimelineEventIn",
- "RecipeTimelineEventOut",
- "RecipeTimelineEventPagination",
- "RecipeTimelineEventUpdate",
- "TimelineEventImage",
- "TimelineEventType",
- "RecipeSuggestionQuery",
- "RecipeSuggestionResponse",
- "RecipeSuggestionResponseItem",
- "Nutrition",
- "RecipeShareToken",
- "RecipeShareTokenCreate",
- "RecipeShareTokenSave",
- "RecipeShareTokenSummary",
"CreateIngredientFood",
"CreateIngredientFoodAlias",
"CreateIngredientUnit",
@@ -140,13 +111,27 @@ __all__ = [
"SaveIngredientFood",
"SaveIngredientUnit",
"UnitFoodBase",
+ "RecipeTimelineEventCreate",
+ "RecipeTimelineEventIn",
+ "RecipeTimelineEventOut",
+ "RecipeTimelineEventPagination",
+ "RecipeTimelineEventUpdate",
+ "TimelineEventImage",
+ "TimelineEventType",
+ "Nutrition",
+ "AssignCategories",
+ "AssignSettings",
+ "AssignTags",
+ "DeleteRecipes",
+ "ExportBase",
+ "ExportRecipes",
+ "ExportTypes",
"RecipeCommentCreate",
"RecipeCommentOut",
"RecipeCommentPagination",
"RecipeCommentSave",
"RecipeCommentUpdate",
"UserBase",
- "RecipeSettings",
"CreateRecipe",
"CreateRecipeBulk",
"CreateRecipeByUrlBulk",
@@ -160,25 +145,40 @@ __all__ = [
"RecipeTagPagination",
"RecipeTool",
"RecipeToolPagination",
- "ScrapeRecipe",
- "ScrapeRecipeBase",
- "ScrapeRecipeData",
- "ScrapeRecipeTest",
- "AssignCategories",
- "AssignSettings",
- "AssignTags",
- "DeleteRecipes",
- "ExportBase",
- "ExportRecipes",
- "ExportTypes",
- "RecipeToolCreate",
- "RecipeToolOut",
- "RecipeToolResponse",
- "RecipeToolSave",
- "RecipeImageTypes",
+ "IngredientReferences",
+ "RecipeStep",
+ "RecipeNote",
+ "RecipeSuggestionQuery",
+ "RecipeSuggestionResponse",
+ "RecipeSuggestionResponseItem",
+ "RecipeSettings",
+ "RecipeShareToken",
+ "RecipeShareTokenCreate",
+ "RecipeShareTokenSave",
+ "RecipeShareTokenSummary",
+ "RecipeAsset",
"RecipeDuplicate",
"RecipeSlug",
"RecipeZipTokenResponse",
"SlugResponse",
"UpdateImageResponse",
+ "RecipeToolCreate",
+ "RecipeToolOut",
+ "RecipeToolResponse",
+ "RecipeToolSave",
+ "CategoryBase",
+ "CategoryIn",
+ "CategoryOut",
+ "CategorySave",
+ "RecipeCategoryResponse",
+ "RecipeTagResponse",
+ "TagBase",
+ "TagIn",
+ "TagOut",
+ "TagSave",
+ "ScrapeRecipe",
+ "ScrapeRecipeBase",
+ "ScrapeRecipeData",
+ "ScrapeRecipeTest",
+ "RecipeImageTypes",
]
diff --git a/mealie/schema/response/__init__.py b/mealie/schema/response/__init__.py
index c513794c5..fad4f840f 100644
--- a/mealie/schema/response/__init__.py
+++ b/mealie/schema/response/__init__.py
@@ -28,14 +28,14 @@ __all__ = [
"QueryFilterJSONPart",
"RelationalKeyword",
"RelationalOperator",
- "ValidationResponse",
+ "SearchFilter",
"OrderByNullPosition",
"OrderDirection",
"PaginationBase",
"PaginationQuery",
"RecipeSearchQuery",
"RequestQuery",
- "SearchFilter",
+ "ValidationResponse",
"ErrorResponse",
"FileTokenResponse",
"SuccessResponse",
diff --git a/mealie/schema/user/__init__.py b/mealie/schema/user/__init__.py
index 76db2ec95..65e7e00a6 100644
--- a/mealie/schema/user/__init__.py
+++ b/mealie/schema/user/__init__.py
@@ -38,12 +38,6 @@ from .user_passwords import (
)
__all__ = [
- "ForgotPassword",
- "PasswordResetToken",
- "PrivatePasswordResetToken",
- "ResetPassword",
- "SavePasswordResetToken",
- "ValidateResetToken",
"CredentialsRequest",
"CredentialsRequestForm",
"Token",
@@ -75,4 +69,10 @@ __all__ = [
"UserRatings",
"UserSummary",
"UserSummaryPagination",
+ "ForgotPassword",
+ "PasswordResetToken",
+ "PrivatePasswordResetToken",
+ "ResetPassword",
+ "SavePasswordResetToken",
+ "ValidateResetToken",
]
diff --git a/mealie/services/event_bus_service/event_types.py b/mealie/services/event_bus_service/event_types.py
index 6e3e54b05..b14bdd9af 100644
--- a/mealie/services/event_bus_service/event_types.py
+++ b/mealie/services/event_bus_service/event_types.py
@@ -53,6 +53,10 @@ class EventTypes(Enum):
category_updated = auto()
category_deleted = auto()
+ label_created = auto()
+ label_updated = auto()
+ label_deleted = auto()
+
class EventDocumentType(Enum):
generic = "generic"
@@ -68,6 +72,7 @@ class EventDocumentType(Enum):
recipe_bulk_report = "recipe_bulk_report"
recipe_timeline_event = "recipe_timeline_event"
tag = "tag"
+ label = "label"
class EventOperation(Enum):
@@ -106,6 +111,11 @@ class EventCategoryData(EventDocumentDataBase):
category_id: UUID4
+class EventLabelData(EventDocumentDataBase):
+ document_type: EventDocumentType = EventDocumentType.label
+ label_id: UUID4
+
+
class EventCookbookData(EventDocumentDataBase):
document_type: EventDocumentType = EventDocumentType.cookbook
cookbook_id: UUID4
diff --git a/tests/integration_tests/user_household_tests/test_group_notifications.py b/tests/integration_tests/user_household_tests/test_group_notifications.py
index fa0cba5b7..3bd2c0c1a 100644
--- a/tests/integration_tests/user_household_tests/test_group_notifications.py
+++ b/tests/integration_tests/user_household_tests/test_group_notifications.py
@@ -38,6 +38,9 @@ def preferences_generator():
category_created=random_bool(),
category_updated=random_bool(),
category_deleted=random_bool(),
+ label_created=random_bool(),
+ label_updated=random_bool(),
+ label_deleted=random_bool(),
).model_dump(by_alias=True)
diff --git a/tests/utils/api_routes/__init__.py b/tests/utils/api_routes/__init__.py
index 02aee25c9..cd4c51f4a 100644
--- a/tests/utils/api_routes/__init__.py
+++ b/tests/utils/api_routes/__init__.py
@@ -173,8 +173,6 @@ units = "/api/units"
"""`/api/units`"""
units_merge = "/api/units/merge"
"""`/api/units/merge`"""
-users = "/api/users"
-"""`/api/users`"""
users_api_tokens = "/api/users/api-tokens"
"""`/api/users/api-tokens`"""
users_forgot_password = "/api/users/forgot-password"
From 56df6965462756334cc78244334808db5ba78454 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 10 Aug 2025 01:54:37 +0000
Subject: [PATCH 13/13] chore(deps): update dependency pre-commit to v4.3.0
(#5928)
---
poetry.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 54fb70731..769f20b7f 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -2279,14 +2279,14 @@ testing = ["pytest", "pytest-benchmark"]
[[package]]
name = "pre-commit"
-version = "4.2.0"
+version = "4.3.0"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
optional = false
python-versions = ">=3.9"
groups = ["dev"]
files = [
- {file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd"},
- {file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146"},
+ {file = "pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8"},
+ {file = "pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16"},
]
[package.dependencies]