diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 22b2b28b7..695ac4710 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ jobs: name: Build Package uses: ./.github/workflows/build-package.yml with: - tag: release + tag: ${{ github.event.release.tag_name }} publish: permissions: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2dd7dc5cc..e5979b41b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,7 @@ repos: exclude: ^tests/data/ - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.12.2 + rev: v0.12.7 hooks: - id: ruff - id: ruff-format diff --git a/cliff.toml b/cliff.toml index c43520a59..fa5644fe3 100644 --- a/cliff.toml +++ b/cliff.toml @@ -35,7 +35,7 @@ conventional_commits = true filter_unconventional = true # regex for preprocessing the commit messages commit_preprocessors = [ - { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/hay-kot/mealie/issues/${2}))"}, + { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/mealie-recipes/mealie/issues/${2}))"}, ] # regex for parsing and grouping commits commit_parsers = [ diff --git a/dev/code-generation/gen_ts_locales.py b/dev/code-generation/gen_ts_locales.py index 7e16ab59f..e16554592 100644 --- a/dev/code-generation/gen_ts_locales.py +++ b/dev/code-generation/gen_ts_locales.py @@ -179,9 +179,15 @@ def inject_nuxt_values(): all_langs = [] for match in locales_dir.glob("*.json"): - lang_string = f'{{ code: "{match.stem}", file: "{match.name.replace(".json", ".ts")}" }},' + match_data = LOCALE_DATA.get(match.stem) + match_dir = match_data.dir if match_data else "ltr" + + lang_string = f'{{ code: "{match.stem}", file: "{match.name.replace(".json", ".ts")}", dir: "{match_dir}" }},' all_langs.append(lang_string) + all_langs.sort() + all_date_locales.sort() + log.debug(f"injecting locales into nuxt config -> {nuxt_config}") inject_inline(nuxt_config, CodeKeys.nuxt_local_messages, all_langs) inject_inline(i18n_config, CodeKeys.nuxt_local_dates, all_date_locales) diff --git a/dev/scripts/all_recipes_stress_test.py b/dev/scripts/all_recipes_stress_test.py index 0ce27cb13..ffdded3a0 100644 --- a/dev/scripts/all_recipes_stress_test.py +++ b/dev/scripts/all_recipes_stress_test.py @@ -44,7 +44,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "1 cup unsalted butter, cut into cubes", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "ea3b6702-9532-4fbc-a40b-f99917831c26", @@ -54,7 +53,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "1 cup light brown sugar", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "c5bbfefb-1e23-4ffd-af88-c0363a0fae82", @@ -64,7 +62,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "1/2 cup granulated white sugar", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "034f481b-c426-4a17-b983-5aea9be4974b", @@ -74,7 +71,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "2 large eggs", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "37c1f796-3bdb-4856-859f-dbec90bc27e4", @@ -84,7 +80,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "2 tsp vanilla extract", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "85561ace-f249-401d-834c-e600a2f6280e", @@ -94,7 +89,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "1/2 cup creamy peanut butter", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "ac91bda0-e8a8-491a-976a-ae4e72418cfd", @@ -104,7 +98,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "1 tsp cornstarch", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "4d1256b3-115e-4475-83cd-464fbc304cb0", @@ -114,7 +107,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "1 tsp baking soda", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "64627441-39f9-4ee3-8494-bafe36451d12", @@ -124,7 +116,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "1/2 tsp salt", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "7ae212d0-3cd1-44b0-899e-ec5bd91fd384", @@ -134,7 +125,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "1 cup cake flour", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "06967994-8548-4952-a8cc-16e8db228ebd", @@ -144,7 +134,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "2 cups all-purpose flour", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "bdb33b23-c767-4465-acf8-3b8e79eb5691", @@ -154,7 +143,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "2 cups peanut butter chips", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "12ba0af8-affd-4fb2-9cca-6f1b3e8d3aef", @@ -164,7 +152,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "note": "1½ cups Reese's Pieces candies", "unit": None, "food": None, - "disableAmount": True, "quantity": 1, "originalText": None, "referenceId": "4bdc0598-a3eb-41ee-8af0-4da9348fbfe2", @@ -221,7 +208,6 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic "showAssets": False, "landscapeView": False, "disableComments": False, - "disableAmount": True, "locked": False, }, "assets": [], diff --git a/docs/docs/documentation/community-guide/home-assistant.md b/docs/docs/documentation/community-guide/home-assistant.md index d11db6a8d..e3a1c4dd0 100644 --- a/docs/docs/documentation/community-guide/home-assistant.md +++ b/docs/docs/documentation/community-guide/home-assistant.md @@ -13,14 +13,14 @@ Steps: #### 1. Get your API Token -Create an API token from Mealie's User Settings page (https://hay-kot.github.io/mealie/documentation/users-groups/user-settings/#api-key-generation) +Create an API token from Mealie's User Settings page (https://docs.mealie.io/documentation/getting-started/api-usage/#getting-a-token) #### 2. Create Home Assistant Sensors Create REST sensors in home assistant to get the details of today's meal. We will create sensors to get the name and ID of the first meal in today's meal plan (note that this may not be what is wanted if there is more than one meal planned for the day). We need the ID as well as the name to be able to retrieve the image for the meal. -Make sure the url and port (`http://mealie:9000` ) matches your installation's address and _API_ port. +Make sure the url and port (`http://mealie:9000`) matches your installation's address and _API_ port. ```yaml rest: diff --git a/docs/docs/documentation/getting-started/installation/installation-checklist.md b/docs/docs/documentation/getting-started/installation/installation-checklist.md index 4499293c8..9bae44c00 100644 --- a/docs/docs/documentation/getting-started/installation/installation-checklist.md +++ b/docs/docs/documentation/getting-started/installation/installation-checklist.md @@ -31,7 +31,7 @@ To deploy mealie on your local network, it is highly recommended to use Docker t We've gone through a few versions of Mealie v1 deployment targets. We have settled on a single container deployment, and we've begun publishing the nightly container on github containers. If you're looking to move from the old nightly (split containers _or_ the omni image) to the new nightly, there are a few things you need to do: 1. Take a backup just in case! -2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v3.0.0` +2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v3.0.2` 3. Take the external port from the frontend container and set that as the port mapped to port `9000` on the new container. The frontend is now served on port 9000 from the new container, so it will need to be mapped for you to have access. 4. Restart the container diff --git a/docs/docs/documentation/getting-started/installation/postgres.md b/docs/docs/documentation/getting-started/installation/postgres.md index 40277a00b..9d8d94853 100644 --- a/docs/docs/documentation/getting-started/installation/postgres.md +++ b/docs/docs/documentation/getting-started/installation/postgres.md @@ -1,5 +1,8 @@ # Installing with PostgreSQL +!!! Warning + When upgrading postgresql major versions, manual steps are required [Postgres#37](https://github.com/docker-library/postgres/issues/37). + PostgreSQL might be considered if you need to support many concurrent users. In addition, some features are only enabled on PostgreSQL, such as fuzzy search. **For Environment Variable Configuration, see** [Backend Configuration](./backend-config.md) @@ -7,7 +10,7 @@ PostgreSQL might be considered if you need to support many concurrent users. In ```yaml services: mealie: - image: ghcr.io/mealie-recipes/mealie:v3.0.0 # (3) + image: ghcr.io/mealie-recipes/mealie:v3.0.2 # (3) container_name: mealie restart: always ports: @@ -38,7 +41,7 @@ services: postgres: container_name: postgres - image: postgres:15 + image: postgres:17 restart: always volumes: - mealie-pgdata:/var/lib/postgresql/data @@ -46,6 +49,7 @@ services: POSTGRES_PASSWORD: mealie POSTGRES_USER: mealie PGUSER: mealie + POSTGRES_DB: mealie healthcheck: test: ["CMD", "pg_isready"] interval: 30s diff --git a/docs/docs/documentation/getting-started/installation/sqlite.md b/docs/docs/documentation/getting-started/installation/sqlite.md index d5962a43e..38e436176 100644 --- a/docs/docs/documentation/getting-started/installation/sqlite.md +++ b/docs/docs/documentation/getting-started/installation/sqlite.md @@ -11,7 +11,7 @@ SQLite is a popular, open source, self-contained, zero-configuration database th ```yaml services: mealie: - image: ghcr.io/mealie-recipes/mealie:v3.0.0 # (3) + image: ghcr.io/mealie-recipes/mealie:v3.0.2 # (3) container_name: mealie restart: always ports: diff --git a/docs/docs/documentation/getting-started/roadmap.md b/docs/docs/documentation/getting-started/roadmap.md index fd4b66876..9cc71fcf4 100644 --- a/docs/docs/documentation/getting-started/roadmap.md +++ b/docs/docs/documentation/getting-started/roadmap.md @@ -2,6 +2,3 @@ ## Feature Requests [Please request new features on Github](https://github.com/mealie-recipes/mealie/discussions/new?category=feature-request) - -## Progress -See the [Github Projects page](https://github.com/users/hay-kot/projects/2) to see what is currently being worked on diff --git a/docs/docs/overrides/api.html b/docs/docs/overrides/api.html index cc74f1312..64a6e5cf4 100644 --- a/docs/docs/overrides/api.html +++ b/docs/docs/overrides/api.html @@ -14,7 +14,7 @@
diff --git a/docs/docs/overrides/home.html b/docs/docs/overrides/home.html index 8112b3153..b5439d0fd 100644 --- a/docs/docs/overrides/home.html +++ b/docs/docs/overrides/home.html @@ -351,7 +351,7 @@ - diff --git a/frontend/components/Domain/Household/GroupHouseholdSelector.vue b/frontend/components/Domain/Household/GroupHouseholdSelector.vue deleted file mode 100644 index a73e10681..000000000 --- a/frontend/components/Domain/Household/GroupHouseholdSelector.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/frontend/components/Domain/Household/GroupMealPlanDayContextMenu.vue b/frontend/components/Domain/Household/GroupMealPlanDayContextMenu.vue index 54e548edb..4ca78ccbd 100644 --- a/frontend/components/Domain/Household/GroupMealPlanDayContextMenu.vue +++ b/frontend/components/Domain/Household/GroupMealPlanDayContextMenu.vue @@ -18,7 +18,7 @@ :open-on-hover="mdAndUp" content-class="d-print-none" > - - diff --git a/frontend/components/Domain/Household/GroupWebhookEditor.vue b/frontend/components/Domain/Household/GroupWebhookEditor.vue index 99588e147..131e93c77 100644 --- a/frontend/components/Domain/Household/GroupWebhookEditor.vue +++ b/frontend/components/Domain/Household/GroupWebhookEditor.vue @@ -16,11 +16,11 @@ :label="$t('settings.webhooks.webhook-url')" variant="underlined" /> - @@ -50,52 +50,43 @@ - diff --git a/frontend/components/Domain/Household/HouseholdPreferencesEditor.vue b/frontend/components/Domain/Household/HouseholdPreferencesEditor.vue index ea1df3670..31fe28f0e 100644 --- a/frontend/components/Domain/Household/HouseholdPreferencesEditor.vue +++ b/frontend/components/Domain/Household/HouseholdPreferencesEditor.vue @@ -41,106 +41,76 @@ - diff --git a/frontend/components/Domain/Recipe/RecipeCardImage.vue b/frontend/components/Domain/Recipe/RecipeCardImage.vue index b7bda2922..e2e8d9069 100644 --- a/frontend/components/Domain/Recipe/RecipeCardImage.vue +++ b/frontend/components/Domain/Recipe/RecipeCardImage.vue @@ -28,84 +28,60 @@ - diff --git a/frontend/components/Domain/Recipe/RecipeCardSection.vue b/frontend/components/Domain/Recipe/RecipeCardSection.vue index 10a29ec4f..712789675 100644 --- a/frontend/components/Domain/Recipe/RecipeCardSection.vue +++ b/frontend/components/Domain/Recipe/RecipeCardSection.vue @@ -36,11 +36,11 @@ offset-y start > - - diff --git a/frontend/components/Domain/Recipe/RecipeOrganizerSelector.vue b/frontend/components/Domain/Recipe/RecipeOrganizerSelector.vue index 26ec7413a..6706eb582 100644 --- a/frontend/components/Domain/Recipe/RecipeOrganizerSelector.vue +++ b/frontend/components/Domain/Recipe/RecipeOrganizerSelector.vue @@ -3,7 +3,7 @@ v-model="selected" v-bind="inputAttrs" v-model:search="searchInput" - :items="storeItem" + :items="items" :label="label" chips closable-chips @@ -46,180 +46,138 @@ - diff --git a/frontend/components/Domain/Recipe/RecipeSettingsSwitches.vue b/frontend/components/Domain/Recipe/RecipeSettingsSwitches.vue index 8bfd49852..a2dc3f55a 100644 --- a/frontend/components/Domain/Recipe/RecipeSettingsSwitches.vue +++ b/frontend/components/Domain/Recipe/RecipeSettingsSwitches.vue @@ -31,7 +31,6 @@ const labels: Record = { showAssets: i18n.t("asset.show-assets"), landscapeView: i18n.t("recipe.landscape-view-coming-soon"), disableComments: i18n.t("recipe.disable-comments"), - disableAmount: i18n.t("recipe.disable-amount"), locked: i18n.t("recipe.locked"), }; diff --git a/frontend/components/Domain/Recipe/RecipeSuggestion.vue b/frontend/components/Domain/Recipe/RecipeSuggestion.vue index abf4f6b82..25e044ccb 100644 --- a/frontend/components/Domain/Recipe/RecipeSuggestion.vue +++ b/frontend/components/Domain/Recipe/RecipeSuggestion.vue @@ -14,9 +14,7 @@
- - {{ organizer.icon }} - + {{ $t("recipe-finder.missing") }}: @@ -41,7 +39,7 @@ - diff --git a/frontend/components/Domain/Recipe/RecipeTimeCard.vue b/frontend/components/Domain/Recipe/RecipeTimeCard.vue index 4d087bfbc..f5abbe4ce 100644 --- a/frontend/components/Domain/Recipe/RecipeTimeCard.vue +++ b/frontend/components/Domain/Recipe/RecipeTimeCard.vue @@ -1,4 +1,4 @@ -