diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 8696d87f2..d0138e7e4 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.8.6
+ rev: v0.9.2
hooks:
- id: ruff
- id: ruff-format
diff --git a/docs/docs/documentation/community-guide/bring-api.md b/docs/docs/documentation/community-guide/bring-api.md
new file mode 100644
index 000000000..41214bb0c
--- /dev/null
+++ b/docs/docs/documentation/community-guide/bring-api.md
@@ -0,0 +1,8 @@
+!!! info
+This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
+
+Mealie supports adding the ingredients of a recipe to your [Bring](https://www.getbring.com/) shopping list, as you can
+see [here](https://docs.mealie.io/documentation/getting-started/features/#recipe-actions).
+However, for this to work, your Mealie instance needs to be exposed to the open Internet so that the Bring servers can access its information. If you don't want your server to be publicly accessible for security reasons, you can use the [Mealie-Bring-API](https://github.com/felixschndr/mealie-bring-api) written by a community member. This integration is entirely local and does not require any service to be exposed to the Internet.
+
+This is a small web server that runs locally next to your Mealie instance, and instead of Bring pulling the data from you, it pushes the data to Bring. [Check out the project](https://github.com/felixschndr/mealie-bring-api) for more information and installation instructions.
diff --git a/docs/docs/documentation/getting-started/authentication/oidc-v2.md b/docs/docs/documentation/getting-started/authentication/oidc-v2.md
index 35f67369e..ee8c3ba9b 100644
--- a/docs/docs/documentation/getting-started/authentication/oidc-v2.md
+++ b/docs/docs/documentation/getting-started/authentication/oidc-v2.md
@@ -10,7 +10,7 @@
Mealie supports 3rd party authentication via [OpenID Connect (OIDC)](https://openid.net/connect/), an identity layer built on top of OAuth2. OIDC is supported by many Identity Providers (IdP), including:
- [Authentik](https://goauthentik.io/integrations/sources/oauth/#openid-connect)
-- [Authelia](https://www.authelia.com/configuration/identity-providers/open-id-connect/)
+- [Authelia](https://www.authelia.com/integration/openid-connect/mealie/)
- [Keycloak](https://www.keycloak.org/docs/latest/securing_apps/#_oidc)
- [Okta](https://www.okta.com/openid-connect/)
diff --git a/docs/docs/documentation/getting-started/faq.md b/docs/docs/documentation/getting-started/faq.md
index b07dc44ab..365663a62 100644
--- a/docs/docs/documentation/getting-started/faq.md
+++ b/docs/docs/documentation/getting-started/faq.md
@@ -1,174 +1,308 @@
+
# Frequently Asked Questions
-## How do I enable "smart" ingredient handling?
+## Features and Functionality
-You might have noticed that scaling up a recipe or making a shopping list doesn't by default handle the ingredients in a way you might expect. Depending on your settings, scaling up might yield things like `2 1 cup broth` instead of `2 cup broth`. And, making shopping lists from recipes that have shared ingredients can yield multiple lines of the same ingredient. **But**, Mealie has a mechanism to intelligently handle ingredients and make your day better. How?
-### Set up your Foods and Units
-Do the following just **once**. Doing this applies to your whole group, so be careful.
+??? question "How do I enable 'smart' ingredient handling?"
-1. Click on your name in the upper left corner to get to your settings
-2. In the bottom right, select `Manage Data`
-3. In the Management page, make sure that a little orange button says `Foods`
-4. If your Foods database is empty, click `Seed` and choose your language. You should end up with a list of foods. (Wait a bit for seeding to happen, and try not to seed more than once or you will have duplicates)
-5. Click the little orange `Foods` button and now choose `Units`.
-6. Click `Seed` and choose your language. You should end up with a list of units (e.g. `tablespoon`)
+ ### How do I enable "smart" ingredient handling?
-Initial seeding of Units is pretty complete, but there are many Foods in the world. You'll probably find that you need to add Foods to the database during parsing for the first several recipes. Once you have a well-populated Food database, there are API routes to parse ingredients automatically in bulk. But this is not a good idea without a very complete set of Foods.
+ You might have noticed that scaling up a recipe or making a shopping list doesn't by default handle the ingredients in a way you might expect. Depending on your settings, scaling up might yield things like `2 1 cup broth` instead of `2 cup broth`. And, making shopping lists from recipes that have shared ingredients can yield multiple lines of the same ingredient. **But**, Mealie has a mechanism to intelligently handle ingredients and make your day better. How?
-### Set up Recipes to use Foods and Units
-Do the following for each recipe you want to intelligently handle ingredients.
+
Set up your Foods and Units
+ Do the following just **once**. Doing this applies to your whole group, so be careful.
-1. Go to a recipe
-2. Click the Edit button/icon
-3. Click the Recipe Settings gear and deselect `Disable Ingredient Amounts`
-4. Save
-5. The ingredients should now look a little weird (`1 1 cup broth` and so on)
-6. Click the Edit button/icon again
-7. Scroll to the ingredients and you should see new fields for Amount, Unit, Food, and Note. The Note in particular will contain the original text of the Recipe.
-8. Click `Parse` and you will be taken to the ingredient parsing page.
-9. Choose your parser. The `Natural Language Parser` works very well, but you can also use the `Brute Parser`, or the `OpenAI Parser` if you've [enabled OpenAI support](./installation/backend-config.md#openai).
-10. Click `Parse All`, and your ingredients should be separated out into Units and Foods based on your seeding in Step 1 above.
-11. For ingredients where the Unit or Food was not found, you can click a button to accept an automatically suggested Food to add to the database. Or, manually enter the Unit/Food and hit `Enter` (or click `Create`) to add it to the database
-12. When done, click `Save All` and you will be taken back to the recipe. Now the Unit and Food fields of the recipe should be filled out.
+ 1. Click on your name in the upper left corner to get to your settings
+ 2. In the bottom right, select `Manage Data`
+ 3. In the Management page, make sure that a little orange button says `Foods`
+ 4. If your Foods database is empty, click `Seed` and choose your language. You should end up with a list of foods. (Wait a bit for seeding to happen, and try not to seed more than once or you will have duplicates)
+ 5. Click the little orange `Foods` button and now choose `Units`.
+ 6. Click `Seed` and choose your language. You should end up with a list of units (e.g. `tablespoon`)
-Scaling up this recipe or adding it to a Shopping List will now smartly take care of ingredient amounts and duplicate combinations.
+ Initial seeding of Units is pretty complete, but there are many Foods in the world. You'll probably find that you need to add Foods to the database during parsing for the first several recipes. Once you have a well-populated Food database, there are API routes to parse ingredients automatically in bulk. But this is not a good idea without a very complete set of Foods.
-## Is it safe to upgrade Mealie?
+
Set up Recipes to use Foods and Units
-Yes. If you are using the v1 branches (including beta), you can upgrade to the latest version of Mealie without performing a site Export/Restore. This process was required in previous versions of Mealie, however we've automated the database migration process to make it easier to upgrade. Note that if you were using the v0.5.x version, you CANNOT upgrade to the latest version automatically. You must follow the migration instructions in the documentation.
+ Do the following for each recipe you want to intelligently handle ingredients.
-- [Migration From v0.5.x](./migrating-to-mealie-v1.md)
+ 1. Go to a recipe
+ 2. Click the Edit button/icon
+ 3. Click the Recipe Settings gear and deselect `Disable Ingredient Amounts`
+ 4. Save
+ 5. The ingredients should now look a little weird (`1 1 cup broth` and so on)
+ 6. Click the Edit button/icon again
+ 7. Scroll to the ingredients and you should see new fields for Amount, Unit, Food, and Note. The Note in particular will contain the original text of the Recipe.
+ 8. Click `Parse` and you will be taken to the ingredient parsing page.
+ 9. Choose your parser. The `Natural Language Parser` works very well, but you can also use the `Brute Parser`, or the `OpenAI Parser` if you've [enabled OpenAI support](./installation/backend-config.md#openai).
+ 10. Click `Parse All`, and your ingredients should be separated out into Units and Foods based on your seeding in Step 1 above.
+ 11. For ingredients where the Unit or Food was not found, you can click a button to accept an automatically suggested Food to add to the database. Or, manually enter the Unit/Food and hit `Enter` (or click `Create`) to add it to the database
+ 12. When done, click `Save All` and you will be taken back to the recipe. Now the Unit and Food fields of the recipe should be filled out.
-## How can I change the theme?
-
-You can change the theme by settings the environment variables.
-
-- [Backend Config - Themeing](./installation/backend-config.md#themeing)
-
-## How can I change the login session timeout?
-
-Login session can be configured by setting the `TOKEN_TIME` variable on the backend container.
-
-- [Backend Config](./installation/backend-config.md)
-
-## Can I serve Mealie on a subpath?
-
-No. Due to limitations from the JavaScript Framework, Mealie doesn't support serving Mealie on a subpath.
-
-## Can I install Mealie without docker?
-
-Yes, you can install Mealie on your local machine. HOWEVER, it is recommended that you don't. Managing non-system versions of python, node, and npm is a pain. Moreover, updating and upgrading your system with this configuration is unsupported and will likely require manual interventions.
-
-## What is fuzzy search and how do I use it?
-Mealie can use fuzzy search, which is robust to minor typos. For example, searching for "brocolli" will still find your recipe for "broccoli soup". But fuzzy search is only functional on a Postgres database backend. To enable fuzzy search you will need to migrate to Postgres:
-
-1. Backup your database and download the .zip file (same as when [migrating](./migrating-to-mealie-v1.md))
-2. Set up a [Postgres](./installation/postgres.md) instance of Mealie
-3. Upload the backup .zip and click to apply it (as as migration)
-
-## How can I attach an image or video to a Recipe?
-
-Mealie's Recipe Steps and other fields support markdown syntax and therefore support images and videos. To attach an image to the recipe, you can upload it as an asset and use the provided copy button to generate the html image tag required to render the image. For videos, Mealie provides no way to host videos. You'll need to host your videos with another provider and embed them in your recipe. Generally, the video provider will provide a link to the video and the html tag required to render the video. For example, YouTube provides the following link that works inside a step. You can adjust the width and height attributes as necessary to ensure a fit.
-
-```html
-
-```
-
-## How can I unlock my account?
-
-If your account has been locked by bad password attempts, you can use an administrator account to unlock another account. Alternatively, you can unlock all accounts via a script within the container.
-
-```shell
-docker exec -it mealie bash
-
-python /app/mealie/scripts/reset_locked_users.py
-```
-
-## How can I reset admin privileges for my account?
-
-If you've lost admin privileges and no other admin can restore them, you can use the Command Line Interface (CLI) to grant admin access.
-
-```shell
-docker exec -it mealie bash
-
-python /app/mealie/scripts/make_admin.py
-```
-
-## How can I change my password?
-
-You can change your password by going to the user profile page and clicking the "Change Password" button. Alternatively you can use the following script to change your password via the CLI if you are locked out of your account.
-
-```shell
-docker exec -it mealie bash
-
-python /app/mealie/scripts/change_password.py
-```
-
-## I can't log in with external auth. How can I change my authentication method?
-
-Follow the [steps above](#how-can-i-change-my-password) for changing your password. You will be prompted if you would like to switch your authentication method back to local auth so you can log in again.
-
-## How do private groups, households, and recipes work?
-
-Managing private groups and recipes can be confusing. The following diagram and notes should help explain how they work to determine if a recipe can be shared publicly.
-
-- Private links that are generated from the recipe page using the `Share` button bypass all group and recipe permissions
-- Private groups block all access to recipes, including those that are public, except as noted above.
-- Private households, similar to private groups, block all access to recipes, except as noted above.
-- Households with "Allow users outside of your group to see your recipes" disabled block all access to recipes, except as noted above.
-- Private recipes block all access to the recipe from public links. This does not affect Private Links.
-
-```mermaid
-stateDiagram-v2
- r1: Request Access
- p1: Using Private Link?
- p2: Is Group Private?
- p3: Is Household Private?
- p4: Is Recipe Private?
- s1: Deny Access
- n1: Allow Access
+ Scaling up this recipe or adding it to a Shopping List will now smartly take care of ingredient amounts and duplicate combinations.
- r1 --> p1
- p1 --> p2: No
- p1 --> n1: Yes
+??? question "How do I enable Nutritional Values?"
- p2 --> s1: Yes
- p2 --> p3: No
+ ### How do I enable Nutritional Values?
- p3 --> s1: Yes
- p3 --> p4: No
+ Mealie can store Nutritional Information for Recipes. Please note that the values you enter are static for the recipe and no scaling is being done when changing Servings / Yield.
- p4 --> s1: Yes
- p4 --> n1: No
-```
+ Do the following to enable Nutritional Values on individual Recipes, or to modify your Household Recipe Preferences
-For more information on public access, check out the [Permissions and Public Access guide](./usage/permissions-and-public-access.md). For more information on groups vs. households, check out the [Groups and Households](./features.md#groups-and-households) section in the Features guide.
+ **Show Nutritional Values on a Single Recipe**
-## Can I use fail2ban with Mealie?
-Yes, Mealie is configured to properly forward external IP addresses into the `mealie.log` logfile. Note that due to restrictions in docker, IP address forwarding only works on Linux.
+ 1. Go to a recipe
+ 2. Click the Edit button/icon
+ 3. Click the Recipe Settings gear and select `Show Nutritional Values`
+ 4. Scroll down to manually fill out the Nutritional Values
+ 5. Save
-Your fail2ban usage should look like the following:
-```
-Use datepattern : %d-%b-%y %H:%M:%S : Day-MON-Year2 24hour:Minute:Second
-Use failregex line : ^ERROR:\s+Incorrect username or password from
-```
+ **Show Nutritional Values by default**
-## Why an API?
-An API allows integration into applications like [Home Assistant](https://www.home-assistant.io/) that can act as notification engines to provide custom notifications based on Meal Plan data to remind you to defrost the chicken, marinate the steak, or start the CrockPot. Additionally, you can access nearly any backend service via the API giving you total control to extend the application. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation.
+ 1. Click your username in the top left
+ 2. Click the 'Household Settings' button
+ 3. Under 'Household Recipe Preferences', click to select 'Show nutrition information'
+ 4. Click 'Update'
-## Why a database?
-Some users of static-site generator applications like ChowDown have expressed concerns about their data being stuck in a database. Considering this is a new project, it is a valid concern to be worried about your data. Mealie specifically addresses this concern by providing automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in control of how your data is represented** when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you.
-As to why we need a database?
+??? question "Why Link Ingredients to a Recipe Step?"
-- **Developer Experience:** Without a database, a lot of the work to maintain your data is taken on by the developer instead of a battle-tested platform for storing data.
-- **Multi User Support:** With a solid database as backend storage for your data, Mealie can better support multi-user sites and avoid read/write access errors when multiple actions are taken at the same time.
+ ### Why Link Ingredients to a Recipe Step?
-## Why is there no "Keep Screen Alive" button when I access a recipe?
-You've perhaps visited the Mealie Demo and noticed that it had a "Keep Screen Alive" button, but it doesn't show up in your own Mealie instance.
-There are typically two possible reasons for this:
-1. You're accessing your Mealie instance without using HTTPS. The Wake Lock API is only available if HTTPS is used. Read more here: https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API
-2. You're accessing your Mealie instance on a browser which doesn't support the API. You can test this here: https://vueuse.org/core/useWakeLock/#demo
+ Mealie allows you to link ingredients to specific steps in a recipe, ensuring you know exactly when to add each ingredient during the cooking process.
-Solving the above points will most likely resolve your issues. However, if you're still having problems, you are welcome to create an issue. Just remember to add that you've tried the above two options first in your description.
+ **Link Ingredients to Steps in a Recipe**
+
+ 1. Go to a recipe
+ 2. Click the Edit button/icon
+ 3. Scroll down to the step you want to link ingredients to
+ 4. Click the ellipsis button next to the step and click 'Link Ingredients'
+ 5. Check off the Ingredient(s) that you want to link to that step
+ 6. Optionally, click 'Next step' to continue linking remaining ingredients to steps, or click 'Save' to Finish
+ 7. Click 'Save' on the Recipe
+
+ You can optionally link the same ingredient to multiple steps, which is useful for prepping an ingredient in one step and using it in another.
+
+??? question "What is fuzzy search and how do I use it?"
+
+ ### What is fuzzy search and how do I use it?
+
+ Mealie can use fuzzy search, which is robust to minor typos. For example, searching for "brocolli" will still find your recipe for "broccoli soup". But fuzzy search is only functional on a Postgres database backend. To enable fuzzy search you will need to migrate to Postgres:
+
+ 1. Backup your database and download the .zip file (same as when [migrating](./migrating-to-mealie-v1.md))
+ 2. Set up a [Postgres](./installation/postgres.md) instance of Mealie
+ 3. Upload the backup .zip and click to apply it (as as migration)
+
+??? question "How can I attach an image or video to a Recipe?"
+
+ ### How can I attach an image or video to a Recipe?
+
+ Mealie's Recipe Steps and other fields support markdown syntax and therefore support images and videos. To attach an image to the recipe, you can upload it as an asset and use the provided copy button to generate the html image tag required to render the image. For videos, Mealie provides no way to host videos. You'll need to host your videos with another provider and embed them in your recipe. Generally, the video provider will provide a link to the video and the html tag required to render the video. For example, YouTube provides the following link that works inside a step. You can adjust the width and height attributes as necessary to ensure a fit.
+
+ ```html
+
+ ```
+
+## Customization and Configuration
+
+??? question "How can I change the theme?"
+
+ ### How can I change the theme?
+
+ You can change the theme by settings the environment variables.
+
+ - [Backend Config - Themeing](./installation/backend-config.md#themeing)
+
+
+??? question "How can I change the login session timeout?"
+
+ ### How can I change the login session timeout?
+
+ Login session can be configured by setting the `TOKEN_TIME` variable on the backend container.
+
+ - [Backend Config](./installation/backend-config.md)
+
+
+??? question "Can I serve Mealie on a subpath?"
+
+ ### Can I serve Mealie on a subpath?
+
+ No. Due to limitations from the JavaScript Framework, Mealie doesn't support serving Mealie on a subpath.
+
+
+??? question "Can I install Mealie without docker?"
+
+ ### Can I install Mealie without docker?
+
+ Yes, you can install Mealie on your local machine. HOWEVER, it is recommended that you don't. Managing non-system versions of python, node, and npm is a pain. Moreover, updating and upgrading your system with this configuration is unsupported and will likely require manual interventions.
+
+
+## Account Management
+
+??? question "How can I unlock my account?"
+
+ ### How can I unlock my account?
+
+ If your account has been locked by bad password attempts, you can use an administrator account to unlock another account. Alternatively, you can unlock all accounts via a script within the container.
+
+ ```shell
+ docker exec -it mealie bash
+
+ python /app/mealie/scripts/reset_locked_users.py
+ ```
+
+
+??? question "How can I reset admin privileges for my account?"
+
+ ### How can I reset admin privileges for my account?
+
+ If you've lost admin privileges and no other admin can restore them, you can use the Command Line Interface (CLI) to grant admin access.
+
+ ```shell
+ docker exec -it mealie bash
+
+ python /app/mealie/scripts/make_admin.py
+ ```
+
+
+??? question "How can I change my password?"
+
+ ### How can I change my password?
+
+ You can change your password by going to the user profile page and clicking the "Change Password" button. Alternatively you can use the following script to change your password via the CLI if you are locked out of your account.
+
+ ```shell
+ docker exec -it mealie bash
+
+ python /app/mealie/scripts/change_password.py
+ ```
+
+
+??? question "I can't log in with external auth. How can I change my authentication method?"
+
+ ### I can't log in with external auth. How can I change my authentication method?
+
+ Follow the [steps above](#how-can-i-change-my-password) for changing your password. You will be prompted if you would like to switch your authentication method back to local auth so you can log in again.
+
+
+## Collaboration and Privacy
+
+??? question "How do private groups, households, and recipes work?"
+
+ ### How do private groups, households, and recipes work?
+
+ Managing private groups and recipes can be confusing. The following diagram and notes should help explain how they work to determine if a recipe can be shared publicly.
+
+ - Private links that are generated from the recipe page using the `Share` button bypass all group and recipe permissions
+ - Private groups block all access to recipes, including those that are public, except as noted above.
+ - Private households, similar to private groups, block all access to recipes, except as noted above.
+ - Households with "Allow users outside of your group to see your recipes" disabled block all access to recipes, except as noted above.
+ - Private recipes block all access to the recipe from public links. This does not affect Private Links.
+
+ ```mermaid
+ stateDiagram-v2
+ r1: Request Access
+ p1: Using Private Link?
+ p2: Is Group Private?
+ p3: Is Household Private?
+ p4: Is Recipe Private?
+ s1: Deny Access
+ n1: Allow Access
+
+
+ r1 --> p1
+ p1 --> p2: No
+ p1 --> n1: Yes
+
+ p2 --> s1: Yes
+ p2 --> p3: No
+
+ p3 --> s1: Yes
+ p3 --> p4: No
+
+ p4 --> s1: Yes
+ p4 --> n1: No
+ ```
+
+ For more information on public access, check out the [Permissions and Public Access guide](./usage/permissions-and-public-access.md). For more information on groups vs. households, check out the [Groups and Households](./features.md#groups-and-households) section in the Features guide.
+
+
+## Security and Maintenance
+
+??? question "How can I use Mealie externally?"
+
+ ### How can I use Mealie externally
+
+ Exposing Mealie or any service to the internet can pose significant security risks. Before proceeding, carefully evaluate the potential impacts on your system. Due to the unique nature of each network, we cannot provide specific steps for your setup.
+
+ There is a community guide available for one way to potentially set this up, and you could reach out on Discord for further discussion on what may be best for your network.
+
+
+??? question "Can I use fail2ban with Mealie?"
+
+ ### Can I use fail2ban with Mealie?
+
+ Yes, Mealie is configured to properly forward external IP addresses into the `mealie.log` logfile. Note that due to restrictions in docker, IP address forwarding only works on Linux.
+
+ Your fail2ban usage should look like the following:
+ ```
+ Use datepattern : %d-%b-%y %H:%M:%S : Day-MON-Year2 24hour:Minute:Second
+ Use failregex line : ^ERROR:\s+Incorrect username or password from
+ ```
+
+
+??? question "Is it safe to upgrade Mealie?"
+
+ ### Is it safe to upgrade Mealie?
+
+ Yes. If you are using the v1 branches (including beta), you can upgrade to the latest version of Mealie without performing a site Export/Restore. This process was required in previous versions of Mealie, however we've automated the database migration process to make it easier to upgrade. Note that if you were using the v0.5.x version, you CANNOT upgrade to the latest version automatically. You must follow the migration instructions in the documentation.
+
+ - [Migration From v0.5.x](./migrating-to-mealie-v1.md)
+
+
+## Technical Considerations
+
+
+??? question "Why setup Email?"
+
+ ### Why setup Email?
+
+ Mealie uses email to send account invites and password resets. If you don't use these features, you don't need to set up email. There are also other methods to perform these actions that do not require the setup of Email.
+
+ Email settings can be adjusted via environment variables on the backend container:
+
+ - [Backend Config](./installation/backend-config.md)
+
+ Note that many email providers (e.g., Gmail, Outlook) are disabling SMTP Auth and requiring Modern Auth, which Mealie currently does not support. You may need to use an SMTP relay or third-party SMTP provider, such as SMTP2GO.
+
+??? question "Why an API?"
+
+ ### Why an API?
+
+ An API allows integration into applications like [Home Assistant](https://www.home-assistant.io/) that can act as notification engines to provide custom notifications based on Meal Plan data to remind you to defrost the chicken, marinate the steak, or start the CrockPot. Additionally, you can access nearly any backend service via the API giving you total control to extend the application. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation.
+
+
+??? question "Why a database?"
+
+ ### Why a database?
+
+ Some users of static-site generator applications like ChowDown have expressed concerns about their data being stuck in a database. Considering this is a new project, it is a valid concern to be worried about your data. Mealie specifically addresses this concern by providing automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in control of how your data is represented** when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you.
+
+ As to why we need a database?
+
+ - **Developer Experience:** Without a database, a lot of the work to maintain your data is taken on by the developer instead of a battle-tested platform for storing data.
+ - **Multi User Support:** With a solid database as backend storage for your data, Mealie can better support multi-user sites and avoid read/write access errors when multiple actions are taken at the same time.
+
+
+## Usability
+
+??? question "Why is there no 'Keep Screen Alive' button when I access a recipe?"
+
+ ### Why is there no "Keep Screen Alive" button when I access a recipe?
+
+ You've perhaps visited the Mealie Demo and noticed that it had a "Keep Screen Alive" button, but it doesn't show up in your own Mealie instance.
+ There are typically two possible reasons for this:
+ 1. You're accessing your Mealie instance without using HTTPS. The Wake Lock API is only available if HTTPS is used. Read more here: https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API
+ 2. You're accessing your Mealie instance on a browser which doesn't support the API. You can test this here: https://vueuse.org/core/useWakeLock/#demo
+
+ Solving the above points will most likely resolve your issues. However, if you're still having problems, you are welcome to create an issue. Just remember to add that you've tried the above two options first in your description.
diff --git a/docs/docs/documentation/getting-started/installation/installation-checklist.md b/docs/docs/documentation/getting-started/installation/installation-checklist.md
index 1cf2500f7..9cc4f12cb 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:v2.4.2`
+2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v2.5.0`
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 dac2231c4..9c2062440 100644
--- a/docs/docs/documentation/getting-started/installation/postgres.md
+++ b/docs/docs/documentation/getting-started/installation/postgres.md
@@ -7,7 +7,7 @@ PostgreSQL might be considered if you need to support many concurrent users. In
```yaml
services:
mealie:
- image: ghcr.io/mealie-recipes/mealie:v2.4.2 # (3)
+ image: ghcr.io/mealie-recipes/mealie:v2.5.0 # (3)
container_name: mealie
restart: always
ports:
diff --git a/docs/docs/documentation/getting-started/installation/sqlite.md b/docs/docs/documentation/getting-started/installation/sqlite.md
index 49d2dd6f9..d1a92c09b 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:v2.4.2 # (3)
+ image: ghcr.io/mealie-recipes/mealie:v2.5.0 # (3)
container_name: mealie
restart: always
ports:
diff --git a/docs/docs/overrides/api.html b/docs/docs/overrides/api.html
index 8c7f4880d..a6f596205 100644
--- a/docs/docs/overrides/api.html
+++ b/docs/docs/overrides/api.html
@@ -14,7 +14,7 @@
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
index 32adfd4ea..0351da02a 100644
--- a/docs/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -48,6 +48,7 @@ markdown_extensions:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
+ - pymdownx.details
extra_css:
- assets/stylesheets/custom.css
extra_javascript:
diff --git a/frontend/components/Domain/Cookbook/CookbookPage.vue b/frontend/components/Domain/Cookbook/CookbookPage.vue
index 5d771ad52..97964db3c 100644
--- a/frontend/components/Domain/Cookbook/CookbookPage.vue
+++ b/frontend/components/Domain/Cookbook/CookbookPage.vue
@@ -104,9 +104,12 @@
}
const response = await actions.updateOne(editTarget.value);
- // if name changed, redirect to new slug
if (response?.slug && book.value?.slug !== response?.slug) {
+ // if name changed, redirect to new slug
router.push(`/g/${route.value.params.groupSlug}/cookbooks/${response?.slug}`);
+ } else {
+ // otherwise reload the page, since the recipe criteria changed
+ router.go(0);
}
dialogStates.edit = false;
editTarget.value = null;
diff --git a/frontend/components/Domain/Recipe/RecipeActionMenu.vue b/frontend/components/Domain/Recipe/RecipeActionMenu.vue
index 6822d830b..6de10c9ee 100644
--- a/frontend/components/Domain/Recipe/RecipeActionMenu.vue
+++ b/frontend/components/Domain/Recipe/RecipeActionMenu.vue
@@ -47,7 +47,6 @@
:recipe-id="recipe.id"
:recipe-scale="recipeScale"
:use-items="{
- delete: false,
edit: false,
download: loggedIn,
duplicate: loggedIn,
@@ -57,6 +56,7 @@
printPreferences: true,
share: loggedIn,
recipeActions: true,
+ delete: loggedIn,
}"
class="ml-1"
@print="$emit('print')"
diff --git a/frontend/components/Domain/Recipe/RecipeCard.vue b/frontend/components/Domain/Recipe/RecipeCard.vue
index b6c627c60..b584c2ba3 100644
--- a/frontend/components/Domain/Recipe/RecipeCard.vue
+++ b/frontend/components/Domain/Recipe/RecipeCard.vue
@@ -7,7 +7,7 @@
:elevation="hover ? 12 : 2"
:to="recipeRoute"
:min-height="imageHeight + 75"
- @click="$emit('click')"
+ @click.self="$emit('click')"
>
-
+