Compare commits

...

5 Commits

Author SHA1 Message Date
mealie-commit-bot[bot]
acd0c2cb3e chore: bump version to v3.6.1 2025-12-02 23:08:41 +00:00
Michael Genson
28d00f7dd5 fix: Bump version before building release (#6647) 2025-12-02 16:51:46 -06:00
Michael Genson
fdd3d4b37a fix: Remove Auth Refresh (#6646) 2025-12-02 15:55:01 -06:00
Hayden
b09a85dfab chore(l10n): New Crowdin updates (#6643) 2025-12-02 10:39:36 -06:00
github-actions[bot]
b6ceece901 docs(auto): Update image tag, for release v3.6.0 (#6639) 2025-12-01 23:35:45 -06:00
11 changed files with 245 additions and 213 deletions

View File

@@ -5,17 +5,73 @@ on:
types: [published] types: [published]
jobs: jobs:
commit-version-bump:
name: Commit version bump to repository
runs-on: ubuntu-latest
permissions:
contents: write
outputs:
commit-sha: ${{ steps.commit.outputs.commit-sha }}
steps:
- name: Generate GitHub App Token
id: app-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.COMMIT_BOT_APP_ID }}
private-key: ${{ secrets.COMMIT_BOT_APP_PRIVATE_KEY }}
- name: Checkout 🛎
uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token }}
- name: Extract Version From Tag Name
run: echo "VERSION_NUM=$(echo ${{ github.event.release.tag_name }} | sed 's/^v//')" >> $GITHUB_ENV
- name: Configure Git
run: |
git config user.name "mealie-commit-bot[bot]"
git config user.email "mealie-commit-bot[bot]@users.noreply.github.com"
- name: Update all version strings
run: |
sed -i 's/^version = "[^"]*"/version = "${{ env.VERSION_NUM }}"/' pyproject.toml
sed -i '/^name = "mealie"$/,/^version = / s/^version = "[^"]*"/version = "${{ env.VERSION_NUM }}"/' uv.lock
sed -i 's/\("version": "\)[^"]*"/\1${{ env.VERSION_NUM }}"/' frontend/package.json
sed -i 's/:v[0-9]*\.[0-9]*\.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/installation-checklist.md
sed -i 's/:v[0-9]*\.[0-9]*\.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/sqlite.md
sed -i 's/:v[0-9]*\.[0-9]*\.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/postgres.md
- name: Commit and push changes
id: commit
run: |
git add pyproject.toml frontend/package.json uv.lock docs/
git commit -m "chore: bump version to ${{ github.event.release.tag_name }}"
git push origin HEAD:${{ github.event.repository.default_branch }}
echo "commit-sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
- name: Move release tag to new commit
run: |
git tag -f ${{ github.event.release.tag_name }}
git push -f origin ${{ github.event.release.tag_name }}
backend-tests: backend-tests:
name: "Backend Server Tests" name: "Backend Server Tests"
uses: ./.github/workflows/test-backend.yml uses: ./.github/workflows/test-backend.yml
needs:
- commit-version-bump
frontend-tests: frontend-tests:
name: "Frontend Tests" name: "Frontend Tests"
uses: ./.github/workflows/test-frontend.yml uses: ./.github/workflows/test-frontend.yml
needs:
- commit-version-bump
build-package: build-package:
name: Build Package name: Build Package
uses: ./.github/workflows/build-package.yml uses: ./.github/workflows/build-package.yml
needs:
- commit-version-bump
with: with:
tag: ${{ github.event.release.tag_name }} tag: ${{ github.event.release.tag_name }}
@@ -43,10 +99,48 @@ jobs:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
rollback-on-failure:
name: Rollback version commit if deployment fails
needs:
- commit-version-bump
- publish
if: always() && needs.publish.result == 'failure'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Generate GitHub App Token
id: app-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.COMMIT_BOT_APP_ID }}
private-key: ${{ secrets.COMMIT_BOT_APP_PRIVATE_KEY }}
- name: Checkout 🛎
uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token }}
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "mealie-commit-bot[bot]"
git config user.email "mealie-commit-bot[bot]@users.noreply.github.com"
- name: Delete release tag
run: |
git push --delete origin ${{ github.event.release.tag_name }}
- name: Revert version bump commit
run: |
git revert --no-edit ${{ needs.commit-version-bump.outputs.commit-sha }}
git push origin HEAD:${{ github.event.repository.default_branch }}
notify-discord: notify-discord:
name: Notify Discord name: Notify Discord
needs: needs:
- publish - publish
if: success()
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Discord notification - name: Discord notification
@@ -55,41 +149,3 @@ jobs:
uses: Ilshidur/action-discord@0.3.2 uses: Ilshidur/action-discord@0.3.2
with: with:
args: "🚀 Version {{ EVENT_PAYLOAD.release.tag_name }} of Mealie has been released. See the release notes https://github.com/mealie-recipes/mealie/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}" args: "🚀 Version {{ EVENT_PAYLOAD.release.tag_name }} of Mealie has been released. See the release notes https://github.com/mealie-recipes/mealie/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}"
update-image-tags:
name: Update image tag in sample docker-compose files
needs:
- publish
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout 🛎
uses: actions/checkout@v4
- name: Extract Version From Tag Name
run: echo "VERSION_NUM=$(echo ${{ github.event.release.tag_name }} | sed 's/^v//')" >> $GITHUB_ENV
- name: Modify version strings
run: |
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/installation-checklist.md
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/sqlite.md
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/postgres.md
sed -i 's/^version = "[^"]*"/version = "${{ env.VERSION_NUM }}"/' pyproject.toml
sed -i 's/\("version": "\)[^"]*"/\1${{ env.VERSION_NUM }}"/' frontend/package.json
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
# This doesn't currently work for us because it creates the PR but the workflows don't run.
# TODO: Provide a personal access token as a parameter here, that solves that problem.
# https://github.com/peter-evans/create-pull-request
with:
commit-message: "Update image tag, for release ${{ github.event.release.tag_name }}"
branch: "docs/newrelease-update-version-${{ github.event.release.tag_name }}"
labels: |
documentation
delete-branch: true
base: mealie-next
title: "docs(auto): Update image tag, for release ${{ github.event.release.tag_name }}"
body: "Auto-generated by `.github/workflows/release.yml`, on publish of release ${{ github.event.release.tag_name }}"

View File

@@ -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: 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! 1. Take a backup just in case!
2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v3.5.0` 2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v3.6.1`
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. 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 4. Restart the container

View File

@@ -10,7 +10,7 @@ PostgreSQL might be considered if you need to support many concurrent users. In
```yaml ```yaml
services: services:
mealie: mealie:
image: ghcr.io/mealie-recipes/mealie:v3.5.0 # (3) image: ghcr.io/mealie-recipes/mealie:v3.6.1 # (3)
container_name: mealie container_name: mealie
restart: always restart: always
ports: ports:

View File

@@ -11,7 +11,7 @@ SQLite is a popular, open source, self-contained, zero-configuration database th
```yaml ```yaml
services: services:
mealie: mealie:
image: ghcr.io/mealie-recipes/mealie:v3.5.0 # (3) image: ghcr.io/mealie-recipes/mealie:v3.6.1 # (3)
container_name: mealie container_name: mealie
restart: always restart: always
ports: ports:

View File

@@ -120,30 +120,6 @@ export const useAuthBackend = function (): AuthState {
} }
} }
// Auto-refresh user data periodically when authenticated
if (import.meta.client) {
let refreshInterval: NodeJS.Timeout | null = null;
watch(() => authStatus.value, (status) => {
if (status === "authenticated") {
refreshInterval = setInterval(() => {
if (tokenCookie.value) {
getSession().catch(() => {
// Ignore errors in background refresh
});
}
}, 5 * 60 * 1000); // 5 minutes
}
else {
// Clear interval when not authenticated
if (refreshInterval) {
clearInterval(refreshInterval);
refreshInterval = null;
}
}
}, { immediate: true });
}
return { return {
data: computed(() => authUser.value), data: computed(() => authUser.value),
status: computed(() => authStatus.value), status: computed(() => authStatus.value),

View File

@@ -1,5 +1,5 @@
import { ref, watch, computed } from "vue"; import { ref, watch, computed } from "vue";
import { useAuthBackend } from "~/composables/useAuthBackend"; import { useAuthBackend } from "~/composables/use-auth-backend";
import type { UserOut } from "~/lib/api/types/user"; import type { UserOut } from "~/lib/api/types/user";
export const useMealieAuth = function () { export const useMealieAuth = function () {

View File

@@ -565,7 +565,7 @@
"choose-unit": "Einheit wählen", "choose-unit": "Einheit wählen",
"press-enter-to-create": "Zum Erstellen Eingabetaste drücken", "press-enter-to-create": "Zum Erstellen Eingabetaste drücken",
"choose-food": "Lebensmittel wählen", "choose-food": "Lebensmittel wählen",
"choose-recipe": "Choose Recipe", "choose-recipe": "Rezept wählen",
"notes": "Notizen", "notes": "Notizen",
"toggle-section": "Überschrift ein-/ausblenden", "toggle-section": "Überschrift ein-/ausblenden",
"see-original-text": "Originaltext anzeigen", "see-original-text": "Originaltext anzeigen",
@@ -736,7 +736,7 @@
"advanced": "Erweitert", "advanced": "Erweitert",
"auto-search": "Automatische Suche", "auto-search": "Automatische Suche",
"no-results": "Keine Ergebnisse gefunden", "no-results": "Keine Ergebnisse gefunden",
"type-to-search": "Type to search..." "type-to-search": "Suchbegriff eingeben..."
}, },
"settings": { "settings": {
"add-a-new-theme": "Neues Thema hinzufügen", "add-a-new-theme": "Neues Thema hinzufügen",

View File

@@ -1,6 +1,6 @@
{ {
"name": "mealie", "name": "mealie",
"version": "3.5.0", "version": "3.6.1",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "nuxt dev", "dev": "nuxt dev",

View File

@@ -132,7 +132,7 @@
"baby green": { "baby green": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "Młody liść", "name": "młody liść",
"plural_name": "młode liście" "plural_name": "młode liście"
}, },
"pumpkin": { "pumpkin": {
@@ -298,7 +298,7 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "papryka serrano", "name": "papryka serrano",
"plural_name": "serrano" "plural_name": "papryki serrano"
}, },
"cayenne pepper": { "cayenne pepper": {
"aliases": [], "aliases": [],
@@ -364,7 +364,7 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "hash brown", "name": "hash brown",
"plural_name": "hash browns" "plural_name": "hash browny"
}, },
"napa cabbage": { "napa cabbage": {
"aliases": [ "aliases": [
@@ -383,8 +383,8 @@
"water chestnut": { "water chestnut": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "water chestnut", "name": "ponikło słodkie",
"plural_name": "water chestnuts" "plural_name": "ponikła słodkie"
}, },
"turnip": { "turnip": {
"aliases": [], "aliases": [],
@@ -401,8 +401,8 @@
"bok choy": { "bok choy": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "bok choy", "name": "pak choi",
"plural_name": "bok choy" "plural_name": "pak choi"
}, },
"okra": { "okra": {
"aliases": [], "aliases": [],
@@ -413,8 +413,8 @@
"acorn squash": { "acorn squash": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "acorn squash", "name": "dynia żołędziowa",
"plural_name": "acorn squashes" "plural_name": "dynie żołędziowe"
}, },
"corn cob": { "corn cob": {
"aliases": [], "aliases": [],
@@ -425,8 +425,8 @@
"radicchio": { "radicchio": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "cykoria sałatowa\n", "name": "cykoria sałatowa",
"plural_name": "cykorie sałatowe\n" "plural_name": "cykorie sałatowe"
}, },
"pearl onion": { "pearl onion": {
"aliases": [], "aliases": [],
@@ -484,17 +484,17 @@
}, },
"corn husk": { "corn husk": {
"aliases": [ "aliases": [
"maize" "kukurydza"
], ],
"description": "", "description": "",
"name": "corn husk", "name": "łuska kukurydzy",
"plural_name": "corn husks" "plural_name": "łuski kukurydzy"
}, },
"collard green": { "collard green": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "collard green", "name": "kapusta pastewna",
"plural_name": "collard greens" "plural_name": "kapusty pastewne"
}, },
"french-fried onion": { "french-fried onion": {
"aliases": [], "aliases": [],
@@ -613,8 +613,8 @@
"pea shoot": { "pea shoot": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "pea shoot", "name": "pęd grochu",
"plural_name": "pea shoots" "plural_name": "pędy grochu"
}, },
"alfalfa": { "alfalfa": {
"aliases": [], "aliases": [],
@@ -815,8 +815,8 @@
"tamarind": { "tamarind": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "Tamaryndowiec", "name": "tamaryndowiec",
"plural_name": "Tamaryndowce" "plural_name": "tamaryndowce"
}, },
"nectarine": { "nectarine": {
"aliases": [], "aliases": [],
@@ -851,8 +851,8 @@
"dried fruit": { "dried fruit": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "Suszony owoc", "name": "suszony owoc",
"plural_name": "Suszone owoce" "plural_name": "suszone owoce"
}, },
"clementine": { "clementine": {
"aliases": [], "aliases": [],
@@ -863,8 +863,8 @@
"persimmon": { "persimmon": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "persimmon", "name": "persymona",
"plural_name": "persimmons" "plural_name": "persymony"
}, },
"melon": { "melon": {
"aliases": [], "aliases": [],
@@ -881,14 +881,14 @@
"dried mango": { "dried mango": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "Suszone mango", "name": "suszone mango",
"plural_name": "Suszone mango" "plural_name": "suszone mango"
}, },
"dried apple": { "dried apple": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "Suszone jabłko", "name": "suszone jabłko",
"plural_name": "Suszone jabłka" "plural_name": "suszone jabłka"
}, },
"quince": { "quince": {
"aliases": [], "aliases": [],
@@ -1007,8 +1007,8 @@
"apple chip": { "apple chip": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "apple chip", "name": "chips jabłkowy",
"plural_name": "apple chips" "plural_name": "chipsy jabłkowe"
}, },
"mixed peel": { "mixed peel": {
"aliases": [], "aliases": [],
@@ -1103,8 +1103,8 @@
"ice-apple": { "ice-apple": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "ice-apple", "name": "lodowe jabłko",
"plural_name": "ice-apples" "plural_name": "lodowe jabłka"
}, },
"longan": { "longan": {
"aliases": [], "aliases": [],
@@ -1121,7 +1121,7 @@
"bitter orange": { "bitter orange": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "gorzki pomarańcz", "name": "gorzka pomarańcza",
"plural_name": "gorzkie pomarańcze" "plural_name": "gorzkie pomarańcze"
}, },
"feijoa": { "feijoa": {
@@ -1251,14 +1251,14 @@
"portobello mushroom": { "portobello mushroom": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "portobello mushroom", "name": "pieczarka portobello",
"plural_name": "portobello mushrooms" "plural_name": "pieczarki portobello"
}, },
"wild mushroom": { "wild mushroom": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "wild mushroom", "name": "grzyb leśny",
"plural_name": "wild mushrooms" "plural_name": "grzyby leśne"
}, },
"porcini": { "porcini": {
"aliases": [], "aliases": [],
@@ -1751,8 +1751,8 @@
"pistachio": { "pistachio": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "pistachio", "name": "pistacja",
"plural_name": "pistachios" "plural_name": "pistacje"
}, },
"peanut": { "peanut": {
"aliases": [], "aliases": [],
@@ -1763,14 +1763,14 @@
"chia": { "chia": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "chia", "name": "nasiono chia",
"plural_name": "chias" "plural_name": "nasiona chia"
}, },
"flax": { "flax": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "flax", "name": "nasiono lnu",
"plural_name": "flaxes" "plural_name": "nasiona lnu"
}, },
"slivered almond": { "slivered almond": {
"aliases": [], "aliases": [],
@@ -2070,7 +2070,7 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "ser kozi", "name": "ser kozi",
"plural_name": "sery kazie" "plural_name": "sery kozie"
}, },
"fresh mozzarella": { "fresh mozzarella": {
"aliases": [], "aliases": [],
@@ -3321,13 +3321,13 @@
"vegan sausage": { "vegan sausage": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "Wegańska kiełbasa", "name": "wegańska kiełbasa",
"plural_name": "vegan sausages" "plural_name": "vegan sausages"
}, },
"coconut whipped cream": { "coconut whipped cream": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "Kokosowa bita śmietana", "name": "kokosowa bita śmietana",
"plural_name": "coconut whipped creams" "plural_name": "coconut whipped creams"
}, },
"smoked tofu": { "smoked tofu": {
@@ -5181,8 +5181,8 @@
"dried anchovy": { "dried anchovy": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "Suszona anszua", "name": "suszona anszua",
"plural_name": "Suszone anszua" "plural_name": "suszone anszua"
}, },
"arctic char": { "arctic char": {
"aliases": [], "aliases": [],
@@ -12520,8 +12520,8 @@
"canned carrot": { "canned carrot": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "canned carrot", "name": "marchew konserwowa",
"plural_name": "canned carrots" "plural_name": "marchewki konserwowe"
}, },
"banana pepper ring": { "banana pepper ring": {
"aliases": [], "aliases": [],
@@ -12604,8 +12604,8 @@
"canned peas and carrot": { "canned peas and carrot": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "canned peas and carrot", "name": "marchew i groszek konserwowe",
"plural_name": "canned peas and carrots" "plural_name": "marchew i groszek konserwowe"
}, },
"corn relish": { "corn relish": {
"aliases": [], "aliases": [],
@@ -15101,14 +15101,14 @@
"orange juice": { "orange juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "orange juice", "name": "sok pomarańczowy",
"plural_name": "orange juices" "plural_name": "soki pomarańczowe"
}, },
"coffee": { "coffee": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "coffee", "name": "kawa",
"plural_name": "coffees" "plural_name": "kawy"
}, },
"club soda": { "club soda": {
"aliases": [], "aliases": [],
@@ -15120,7 +15120,7 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "espresso", "name": "espresso",
"plural_name": "espressos" "plural_name": "espresso"
}, },
"pineapple juice": { "pineapple juice": {
"aliases": [], "aliases": [],
@@ -15132,13 +15132,13 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "apple juice", "name": "apple juice",
"plural_name": "apple juices" "plural_name": "sok jabłkowy"
}, },
"tea": { "tea": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "tea", "name": "herbata",
"plural_name": "teas" "plural_name": "herbaty"
}, },
"cranberry juice": { "cranberry juice": {
"aliases": [], "aliases": [],
@@ -15149,14 +15149,14 @@
"tomato juice": { "tomato juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "tomato juice", "name": "sok pomidorowy",
"plural_name": "tomato juices" "plural_name": "soki pomidorowe"
}, },
"coconut water": { "coconut water": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "coconut water", "name": "woda kokosowa",
"plural_name": "coconut waters" "plural_name": "woda kokosowa"
}, },
"pomegranate juice": { "pomegranate juice": {
"aliases": [], "aliases": [],
@@ -15173,14 +15173,14 @@
"lemonade": { "lemonade": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "lemonade", "name": "lemoniada",
"plural_name": "lemonades" "plural_name": "lemoniady"
}, },
"coke": { "coke": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "coke", "name": "cola",
"plural_name": "cokes" "plural_name": "cole"
}, },
"eggnog": { "eggnog": {
"aliases": [], "aliases": [],
@@ -15227,8 +15227,8 @@
"green tea": { "green tea": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "green tea", "name": "herbata zielona",
"plural_name": "green teas" "plural_name": "herbaty zielone"
}, },
"lemonade concentrate": { "lemonade concentrate": {
"aliases": [], "aliases": [],
@@ -15245,14 +15245,14 @@
"root beer": { "root beer": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "root beer", "name": "piwo korzenne",
"plural_name": "root beers" "plural_name": "piwa korzenne"
}, },
"drinking chocolate": { "drinking chocolate": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "drinking chocolate", "name": "czekolada pitna",
"plural_name": "drinking chocolates" "plural_name": "czekolady pitne"
}, },
"tonic water": { "tonic water": {
"aliases": [], "aliases": [],
@@ -15269,8 +15269,8 @@
"mango juice": { "mango juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "mango juice", "name": "sok z mango",
"plural_name": "mango juices" "plural_name": "soki z mango"
}, },
"sour mix": { "sour mix": {
"aliases": [], "aliases": [],
@@ -15281,20 +15281,20 @@
"hibiscu": { "hibiscu": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "hibiscu", "name": "hibiskus",
"plural_name": "hibiscus" "plural_name": "hibiskusy"
}, },
"tea leaf": { "tea leaf": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "tea leaf", "name": "liść herbaty",
"plural_name": "tea leaves" "plural_name": "liście herbaty"
}, },
"grape juice": { "grape juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "grape juice", "name": "sok winogronowy",
"plural_name": "grape juices" "plural_name": "soki winogronowe"
}, },
"cherry juice": { "cherry juice": {
"aliases": [], "aliases": [],
@@ -15305,8 +15305,8 @@
"carrot juice": { "carrot juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "carrot juice", "name": "sok z marchwi",
"plural_name": "carrot juices" "plural_name": "soki z marchwi"
}, },
"limeade concentrate": { "limeade concentrate": {
"aliases": [], "aliases": [],
@@ -15318,19 +15318,19 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "dr pepper", "name": "dr pepper",
"plural_name": "dr peppers" "plural_name": "dr pepper"
}, },
"white grape juice": { "white grape juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "white grape juice", "name": "sok z białych winogron",
"plural_name": "white grape juices" "plural_name": "soki z białych winogron"
}, },
"watermelon juice": { "watermelon juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "watermelon juice", "name": "sok arbuzowy",
"plural_name": "watermelon juices" "plural_name": "soki arbuzowe"
}, },
"tangerine juice": { "tangerine juice": {
"aliases": [], "aliases": [],
@@ -15341,8 +15341,8 @@
"fruit juice": { "fruit juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "fruit juice", "name": "sok owocowy",
"plural_name": "fruit juices" "plural_name": "soki owocowe"
}, },
"passion-fruit juice": { "passion-fruit juice": {
"aliases": [], "aliases": [],
@@ -15353,14 +15353,14 @@
"iced tea": { "iced tea": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "iced tea", "name": "herbata mrożona",
"plural_name": "iced teas" "plural_name": "herbaty mrożone"
}, },
"kombucha": { "kombucha": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "kombucha", "name": "kombucha",
"plural_name": "kombuchas" "plural_name": "kombuche"
}, },
"apricot juice": { "apricot juice": {
"aliases": [], "aliases": [],
@@ -15371,8 +15371,8 @@
"beet juice": { "beet juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "beet juice", "name": "sok z buraków",
"plural_name": "beet juices" "plural_name": "soki z buraków"
}, },
"peach juice": { "peach juice": {
"aliases": [], "aliases": [],
@@ -15401,8 +15401,8 @@
"energy drink": { "energy drink": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "energy drink", "name": "napój energetyzujący",
"plural_name": "energy drinks" "plural_name": "napoje energetyzujące"
}, },
"chamomile tea": { "chamomile tea": {
"aliases": [], "aliases": [],
@@ -15449,8 +15449,8 @@
"rooibos tea": { "rooibos tea": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "rooibos tea", "name": "herbata rooibos",
"plural_name": "rooibos teas" "plural_name": "herbaty rooibos"
}, },
"lime soda": { "lime soda": {
"aliases": [], "aliases": [],
@@ -15485,8 +15485,8 @@
"strawberry juice": { "strawberry juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "strawberry juice", "name": "sok truskawkowy",
"plural_name": "strawberry juices" "plural_name": "soki truskawkowe"
}, },
"iced coffee concentrate": { "iced coffee concentrate": {
"aliases": [], "aliases": [],
@@ -15503,8 +15503,8 @@
"beetroot juice": { "beetroot juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "beetroot juice", "name": "sok z buraka",
"plural_name": "beetroot juices" "plural_name": "soki z buraka"
}, },
"blueberry juice": { "blueberry juice": {
"aliases": [], "aliases": [],
@@ -15545,8 +15545,8 @@
"white tea": { "white tea": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "white tea", "name": "herbata biała",
"plural_name": "white teas" "plural_name": "herbaty białe"
}, },
"juice blend": { "juice blend": {
"aliases": [], "aliases": [],
@@ -15605,14 +15605,14 @@
"herbal tea": { "herbal tea": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "herbal tea", "name": "herbata ziołowa",
"plural_name": "herbal teas" "plural_name": "herbaty ziołowe"
}, },
"banana juice": { "banana juice": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "banana juice", "name": "sok bananowy",
"plural_name": "banana juices" "plural_name": "soki bananowe"
}, },
"lychee juice": { "lychee juice": {
"aliases": [], "aliases": [],
@@ -15635,8 +15635,8 @@
"decaf coffee": { "decaf coffee": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "decaf coffee", "name": "kawa bezkofeinowa",
"plural_name": "decaf coffees" "plural_name": "kawy bezkofeinowe"
}, },
"pumpkin spice coffee": { "pumpkin spice coffee": {
"aliases": [], "aliases": [],
@@ -15648,7 +15648,7 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "pepsi", "name": "pepsi",
"plural_name": "pepsis" "plural_name": "pepsi"
}, },
"cherry soda": { "cherry soda": {
"aliases": [], "aliases": [],
@@ -15807,8 +15807,8 @@
"essence": { "essence": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "essence", "name": "esencja",
"plural_name": "essences" "plural_name": "esencje"
}, },
"maca powder": { "maca powder": {
"aliases": [], "aliases": [],
@@ -15820,13 +15820,13 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "spirulina", "name": "spirulina",
"plural_name": "spirulinas" "plural_name": "spiruliny"
}, },
"coffee extract": { "coffee extract": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "coffee extract", "name": "ekstrakt z kawy",
"plural_name": "coffee extracts" "plural_name": "ekstrakty z kawy"
}, },
"brewer's yeast": { "brewer's yeast": {
"aliases": [], "aliases": [],
@@ -15837,8 +15837,8 @@
"strawberry extract": { "strawberry extract": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "strawberry extract", "name": "ekstrakt z truskawek",
"plural_name": "strawberry extracts" "plural_name": "ekstrakty z truskawek"
}, },
"butter extract": { "butter extract": {
"aliases": [], "aliases": [],
@@ -15957,8 +15957,8 @@
"hazelnut extract": { "hazelnut extract": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "hazelnut extract", "name": "ekstrakt z orzechów laskowych",
"plural_name": "hazelnut extracts" "plural_name": "ekstrakty z orzechów laskowych"
}, },
"freeze-dried strawberry powder": { "freeze-dried strawberry powder": {
"aliases": [], "aliases": [],
@@ -15975,8 +15975,8 @@
"cherry extract": { "cherry extract": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "cherry extract", "name": "ekstrakt z wiśni",
"plural_name": "cherry extracts" "plural_name": "ekstrakty z wiśni"
}, },
"butterscotch flavor": { "butterscotch flavor": {
"aliases": [], "aliases": [],
@@ -15993,8 +15993,8 @@
"pineapple extract": { "pineapple extract": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "pineapple extract", "name": "ekstrakt z ananasa",
"plural_name": "pineapple extracts" "plural_name": "ekstrakty z ananasa"
}, },
"lemon juice concentrate": { "lemon juice concentrate": {
"aliases": [], "aliases": [],
@@ -16011,8 +16011,8 @@
"cinnamon extract": { "cinnamon extract": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "cinnamon extract", "name": "ekstrakt z cynamonu",
"plural_name": "cinnamon extracts" "plural_name": "ekstrakty z cynamonu"
}, },
"cannabis milk": { "cannabis milk": {
"aliases": [], "aliases": [],
@@ -16060,7 +16060,7 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "ashwagandha", "name": "ashwagandha",
"plural_name": "ashwagandhas" "plural_name": "ashwagandhy"
}, },
"casein": { "casein": {
"aliases": [], "aliases": [],
@@ -16071,8 +16071,8 @@
"cbd oil": { "cbd oil": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "cbd oil", "name": "olejek cbd",
"plural_name": "cbd oils" "plural_name": "olejki cbd"
}, },
"chlorella": { "chlorella": {
"aliases": [], "aliases": [],
@@ -16119,8 +16119,8 @@
"vitamin e": { "vitamin e": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "vitamin e", "name": "witamina E",
"plural_name": "vitamin es" "plural_name": "witaminy E"
}, },
"wine yeast": { "wine yeast": {
"aliases": [], "aliases": [],
@@ -16155,8 +16155,8 @@
"vitamin d": { "vitamin d": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "vitamin d", "name": "witamina D",
"plural_name": "vitamin ds" "plural_name": "witaminy D"
}, },
"calcium lactate": { "calcium lactate": {
"aliases": [], "aliases": [],
@@ -16191,20 +16191,20 @@
"magnesium": { "magnesium": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "magnesium", "name": "magnez",
"plural_name": "magnesiums" "plural_name": "magnez"
}, },
"creatine": { "creatine": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "creatine", "name": "kreatyna",
"plural_name": "creatines" "plural_name": "kreatyna"
}, },
"daily vitamin": { "daily vitamin": {
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "daily vitamin", "name": "codzienna witamina",
"plural_name": "daily vitamins" "plural_name": "codzienne witaminy"
}, },
"moringa powder": { "moringa powder": {
"aliases": [], "aliases": [],
@@ -16234,7 +16234,7 @@
"aliases": [], "aliases": [],
"description": "", "description": "",
"name": "thc", "name": "thc",
"plural_name": "thcs" "plural_name": "thc"
}, },
"berry powder": { "berry powder": {
"aliases": [], "aliases": [],

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "mealie" name = "mealie"
version = "3.5.0" version = "3.6.1"
description = "A Recipe Manager" description = "A Recipe Manager"
authors = [{ name = "Hayden", email = "hay-kot@pm.me" }] authors = [{ name = "Hayden", email = "hay-kot@pm.me" }]
license = "AGPL-3.0-only" license = "AGPL-3.0-only"

2
uv.lock generated
View File

@@ -811,7 +811,7 @@ wheels = [
[[package]] [[package]]
name = "mealie" name = "mealie"
version = "3.5.0" version = "3.6.1"
source = { editable = "." } source = { editable = "." }
dependencies = [ dependencies = [
{ name = "aiofiles" }, { name = "aiofiles" },