Compare commits

...

1200 Commits

Author SHA1 Message Date
Michael Genson
e4f38685b3 fix(deps): Bump various frontend deps (#6774) 2025-12-23 17:12:52 -06:00
Michael Genson
d02023e12c fix: Only fetch recipes with a household id (#6773) 2025-12-23 16:48:27 -06:00
Michael Genson
64d8786d8f fix: Improve recipe bulk deletion (#6772) 2025-12-23 12:31:53 -06:00
Michael Genson
0971d59fa6 fix: Can't remove organizer (#6771) 2025-12-23 11:32:14 -06:00
Hayden
9b799ca441 chore(l10n): New Crowdin updates (#6768) 2025-12-22 23:36:50 -06:00
Michael Genson
193b823688 feat: Replace number inputs with new v-number-input compontent (#6767) 2025-12-22 18:45:52 -06:00
Michael Genson
c64c2d25e7 fix: Add resiliency to LDAP admin filter (#6766) 2025-12-22 15:37:15 -06:00
onemustpersist
8b4111d68f fix: Imported API keys not working on a new server #6477 (#6496)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Michael Genson <genson.michael@gmail.com>
2025-12-22 12:08:44 -06:00
miah
9d601ea4b5 feat: Animate shopping list and increase touch target (#6569)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-22 11:55:25 -06:00
gitolicious
95e1bbce2b feat: persist selected dates in meal planner (#6512)
Co-authored-by: Michael Genson <genson.michael@gmail.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-22 11:10:23 -06:00
Aurelien
7b32508201 fix: the add_pagination_to_query now always returns the correct count (#6505)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-22 10:39:35 -06:00
Hayden
6ed85d72d7 chore(l10n): New Crowdin updates (#6765) 2025-12-22 15:59:19 +00:00
github-actions[bot]
cd2a522f25 chore(auto): Update pre-commit hooks (#6760)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-12-22 15:48:53 +00:00
Arsène Reymond
6bd6400aba fix: add loader for create backup button (#6763) 2025-12-22 09:38:44 -06:00
Michael Genson
8b92d6ee04 fix: Backup selection doesn't work sometimes (#6759) 2025-12-21 20:56:51 -06:00
Michael Genson
7cc2ed75e5 fix: Consistant Shopping List Recipe State (#6758) 2025-12-21 20:27:00 -06:00
renovate[bot]
cb7f46c0ad fix(deps): update dependency fastapi to v0.127.0 (#6756)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-21 13:52:34 -06:00
renovate[bot]
cb12aedf72 fix(deps): update dependency openai to v2.14.0 (#6745) 2025-12-21 12:48:06 -06:00
renovate[bot]
8c35a26ab0 chore(deps): update dependency mkdocs-material to v9.7.1 (#6741)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-21 18:05:50 +00:00
github-actions[bot]
b2d0f46dd2 chore(l10n): Crowdin locale sync (#6754)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-21 11:53:25 -06:00
Hayden
2c4b7bf611 chore(l10n): New Crowdin updates (#6748)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-21 11:52:47 -06:00
renovate[bot]
38e542bcd3 fix(deps): update dependency python-multipart to v0.0.21 (#6737)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-21 11:52:15 -06:00
renovate[bot]
e53452c19c fix(deps): update dependency uvicorn to v0.40.0 (#6757)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-21 11:35:48 -06:00
Hayden
13213476d8 docs: add --no-project flags to skip mealie installation (#6755) 2025-12-20 21:23:11 -06:00
Hayden
9925450173 docs: isolate docs dependencies to avoid python-ldap build (#6753) 2025-12-20 20:45:59 -06:00
Hayden
efb9dae681 docs: add GitHub Actions workflow for docs deployment (#6752) 2025-12-20 20:26:14 -06:00
renovate[bot]
cee93d2a87 fix(deps): update dependency fastapi to v0.126.0 (#6750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 16:06:03 -06:00
Arsène Reymond
0d4a8654c1 fix: PWA maskable android icons & enctype shared_target (#6731)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-19 05:06:27 +00:00
Hayden
95b1be07bb chore(l10n): New Crowdin updates (#6744)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-19 04:53:09 +00:00
mealie-commit-bot[bot]
a6fc98fc82 chore: bump version to v3.8.0 2025-12-19 01:37:16 +00:00
Michael Genson
6f03010f6c fix: Security Patches (#6743) 2025-12-18 22:54:16 +00:00
renovate[bot]
69397c91b8 fix(deps): update dependency openai to v2.13.0 (#6726)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-18 21:45:42 +00:00
Hayden
798792dcdc chore(l10n): New Crowdin updates (#6736)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-18 15:32:22 -06:00
renovate[bot]
cc32dd9fa6 chore(deps): update dependency ruff to v0.14.10 (#6742)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-18 15:32:00 -06:00
renovate[bot]
0c64eb29f9 fix(deps): update dependency fastapi to v0.125.0 (#6740)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 17:37:43 -06:00
renovate[bot]
8baa5cc315 chore(deps): update dependency pre-commit to v4.5.1 (#6734)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 00:07:49 +00:00
Hayden
6f3a5c6c8f chore(l10n): New Crowdin updates (#6733) 2025-12-16 17:42:13 +00:00
Hayden
778078590b chore(l10n): New Crowdin updates (#6729) 2025-12-15 22:54:37 -06:00
github-actions[bot]
53c82e5491 chore(auto): Update pre-commit hooks (#6724) 2025-12-15 18:16:59 +00:00
Hayden
fef114d97f chore(l10n): New Crowdin updates (#6725) 2025-12-15 08:55:48 -06:00
Hayden
e80cbfad7f chore(l10n): New Crowdin updates (#6722)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-14 23:31:48 -06:00
renovate[bot]
99527ce738 chore(deps): update dependency mypy to v1.19.1 (#6723)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 23:31:34 -06:00
Arsène Reymond
08ccced734 fix: localize text validators message (#6719) 2025-12-14 09:56:11 -06:00
github-actions[bot]
43c2c9552b chore(l10n): Crowdin locale sync (#6716)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-13 22:10:43 -06:00
Hayden
db5741c7ee chore(l10n): New Crowdin updates (#6710) 2025-12-13 22:10:23 -06:00
renovate[bot]
a1e394cf36 fix(deps): update dependency tzdata to v2025.3 (#6713) 2025-12-13 15:21:42 -06:00
Michael Genson
bdbef1ab9e fix: More lenient postgres override parsing (#6712) 2025-12-13 14:21:54 -06:00
Michael Genson
e5276f6c20 fix: Put tooltips behind app bar (#6711) 2025-12-13 10:56:18 -06:00
Michael Genson
20a6e71b31 feat: Optionally include URL when importing via HTML/JSON (#6709) 2025-12-12 23:20:26 -06:00
Michael Genson
24c111af7b chore: Miscellaneous cleanup (#6708) 2025-12-12 22:48:49 -06:00
davidschinkel
ab4559319e fix: Improved bulk deletion by reducing refreshs (#6634)
Co-authored-by: David Schinkel <david@zollsoft.de>
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2025-12-13 04:08:04 +00:00
Michael Genson
2f8625ac44 fix: Disable submit on enter when editing timeline events (#6707) 2025-12-12 21:56:36 -06:00
Hayden
dd146afa57 chore(l10n): New Crowdin updates (#6706) 2025-12-12 21:20:34 -06:00
renovate[bot]
91d15f671e fix(deps): update dependency authlib to v1.6.6 (#6700)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-13 01:54:41 +00:00
renovate[bot]
7008b13246 fix(deps): update dependency fastapi to v0.124.4 (#6702)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-12 19:43:35 -06:00
mealie-commit-bot[bot]
1a1798cd88 chore: bump version to v3.7.0 2025-12-13 01:21:07 +00:00
Michael Genson
64f47c1589 fix: Reprocess script UUID handling for postgres (#6705) 2025-12-12 19:18:52 -06:00
Michael Genson
326bb1eb8e feat: Reprocess image user script (#6704) 2025-12-12 18:30:49 -06:00
Hayden
80dc2ecfb7 chore(l10n): New Crowdin updates (#6701) 2025-12-12 13:53:06 +00:00
renovate[bot]
b72082663f chore(deps): update node.js to 20988bc (#6698) 2025-12-12 05:24:05 +00:00
renovate[bot]
f46ae423d3 chore(deps): update dependency ruff to v0.14.9 (#6699) 2025-12-11 23:13:36 -06:00
Hayden
05cdff8ae7 chore(l10n): New Crowdin updates (#6697) 2025-12-12 03:57:19 +01:00
Hayden
0facdf73be chore(l10n): New Crowdin updates (#6694) 2025-12-11 21:38:11 +00:00
renovate[bot]
cbad569134 fix(deps): update dependency openai to v2.11.0 (#6696)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 15:27:38 -06:00
Hayden
1063433aa9 chore(l10n): New Crowdin updates (#6693) 2025-12-10 19:47:30 -06:00
renovate[bot]
0ba22c81e7 fix(deps): update dependency fastapi to v0.124.2 (#6688) 2025-12-10 18:59:49 +00:00
renovate[bot]
0667177a2e fix(deps): update dependency recipe-scrapers to v15.11.0 (#6691) 2025-12-10 18:48:05 +00:00
Hayden
6fcf22869b chore(l10n): New Crowdin updates (#6689) 2025-12-10 12:37:02 -06:00
renovate[bot]
20b45e57e0 fix(deps): update dependency sqlalchemy to v2.0.45 (#6687)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-09 20:53:09 -06:00
Hayden
7a38a52158 chore(l10n): New Crowdin updates (#6686) 2025-12-09 19:45:24 -06:00
renovate[bot]
e27eca5571 chore(deps): update node.js to 9a2ed90 (#6684)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-09 12:53:03 -06:00
renovate[bot]
a90b2ccafd chore(deps): update dependency coverage to v7.13.0 (#6683)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-09 12:52:45 -06:00
Michael Genson
e0d8104643 feat: Suggest HTML importer on URL importer failure (#6685) 2025-12-09 11:05:34 -06:00
Hayden
53ee64828b chore(l10n): New Crowdin updates (#6678)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-09 10:27:21 -06:00
Arsène Reymond
6f7fba5ac1 feat: Add user QueryFilter and improve UI on mobile (#6235)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Michael Genson <genson.michael@gmail.com>
2025-12-09 09:49:12 -06:00
github-actions[bot]
89aed15905 chore(auto): Update pre-commit hooks (#6680)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-12-08 14:55:38 +00:00
renovate[bot]
aac48287a4 fix(deps): update dependency apprise to v1.9.6 (#6677)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-08 08:45:21 -06:00
Hayden
34daaa0476 chore(l10n): New Crowdin updates (#6675) 2025-12-07 09:43:47 -06:00
Henri Cook
af56a3e69d fix: improve password manager autofill compatibility on login page (#6662)
Co-authored-by: Henri Cook <henri.cook@linklaters.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-06 23:35:16 -06:00
github-actions[bot]
0908812b47 chore(l10n): Crowdin locale sync (#6672)
Co-authored-by: GitHub Action <action@github.com>
2025-12-06 22:58:22 -06:00
renovate[bot]
d910fbafe8 chore(deps): update dependency pytest to v9.0.2 (#6670) 2025-12-07 00:15:15 +00:00
renovate[bot]
c7692426d5 fix(deps): update dependency orjson to v3.11.5 (#6667) 2025-12-07 00:04:01 +00:00
renovate[bot]
b7a615add9 fix(deps): update dependency fastapi to v0.124.0 (#6664) 2025-12-06 17:52:57 -06:00
Hayden
3167e23b6b chore(l10n): New Crowdin updates (#6671) 2025-12-06 17:21:05 -06:00
Hayden
8b582f8682 feat: autofill default credentials on first login (#6666) 2025-12-06 17:47:33 +00:00
Hayden
05f648d7fb fix: clear cached store data on logout to prevent user data leakage (#6665) 2025-12-06 11:36:39 -06:00
Nathan Winspear
1f19133870 docs: add theming examples to backend configuration guide (#6443)
Co-authored-by: Michael Genson <genson.michael@gmail.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-05 19:35:33 -06:00
Hayden
98273da16e chore(l10n): New Crowdin updates (#6661)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-05 16:29:47 -06:00
miah
f857ca18da feat: Improve startup workflow UI (#6342)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-05 22:18:32 +00:00
renovate[bot]
22a0e6d608 fix(deps): update dependency fastapi to v0.123.10 (#6660)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 15:58:01 -06:00
Tempest
ed806b9fec feat: Improve Image Minification Logic and Efficiency (#5883)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Michael Genson <genson.michael@gmail.com>
2025-12-05 15:45:53 -06:00
Michael Genson
ae8b489f97 dev: Add copilot-instructions.md (#6659) 2025-12-05 13:00:45 -06:00
Noneangel
71732d4766 feat: frontend autocomplete is diacritics/ligatures insensitive (#6169)
Co-authored-by: Pierre <pierre@debian.zabi.ovh>
Co-authored-by: Michael Genson <genson.michael@gmail.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-05 12:44:37 -06:00
Cash Prokop-Weaver
6695314588 feat: Add snack, drink, and dessert (#6149)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Michael Genson <genson.michael@gmail.com>
2025-12-05 11:54:00 -06:00
Nico Hirsch
c115e6d83f feat: Put calendar directly in the date picker dialogs (#6110)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Michael Genson <genson.michael@gmail.com>
2025-12-05 10:05:47 -06:00
renovate[bot]
e3e970213c fix(deps): update dependency fastapi to v0.123.9 (#6657)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-04 23:29:52 -06:00
Hayden
7fe358e5e7 chore(l10n): New Crowdin updates (#6653) 2025-12-04 21:54:37 +00:00
renovate[bot]
c7f3334479 fix(deps): update dependency openai to v2.9.0 (#6656)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-04 15:43:47 -06:00
renovate[bot]
d4467f65fb fix(deps): update dependency fastapi to v0.123.8 (#6640)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-04 21:23:23 +00:00
renovate[bot]
27e61ec6b1 chore(deps): update dependency ruff to v0.14.8 (#6655)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-04 15:12:20 -06:00
Hayden
6c6dc8103d chore(l10n): New Crowdin updates (#6649) 2025-12-03 10:25:28 +01:00
Hayden
35963dad2e fix: change log rotation size from 10kb to 10mb (#6648) 2025-12-02 19:06:51 -06:00
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
renovate[bot]
54b8760d15 fix(deps): update dependency fastapi to v0.123.1 (#6638)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-02 05:00:40 +00:00
davidschinkel
187e0300a0 fix: Enabled newlines in timeline comment (#5905) (#6620)
Co-authored-by: David Schinkel <david@zollsoft.de>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-12-01 22:48:24 -06:00
github-actions[bot]
c398316b55 chore(auto): Update pre-commit hooks (#6632)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-12-02 04:46:26 +00:00
Hayden
eb093a755b chore(l10n): New Crowdin updates (#6637) 2025-12-02 04:35:15 +00:00
Hayden
2e982fad82 chore(l10n): New Crowdin updates (#6631) 2025-11-30 20:54:05 -06:00
renovate[bot]
f5570bf9b2 fix(deps): update dependency beautifulsoup4 to v4.14.3 (#6629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-30 10:46:27 -06:00
renovate[bot]
ddd7ee0696 fix(deps): update dependency fastapi to v0.123.0 (#6627)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-30 16:06:01 +00:00
Hayden
f1b5b999b9 chore(l10n): New Crowdin updates (#6628) 2025-11-30 15:55:01 +00:00
renovate[bot]
47892f84be chore(deps): update dependency pylint to v4.0.4 (#6626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-30 09:44:26 -06:00
github-actions[bot]
18002351b6 chore(l10n): Crowdin locale sync (#6625)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-30 03:13:02 +00:00
Hayden
9605c448e7 chore(l10n): New Crowdin updates (#6624) 2025-11-30 02:46:27 +00:00
renovate[bot]
9499c2942c fix(deps): update dependency pydantic-settings to v2.12.0 (#6617)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 23:40:05 +00:00
renovate[bot]
f04bd7b777 fix(deps): update dependency openai to v2.8.1 (#6616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 23:26:16 +00:00
renovate[bot]
710708ea68 fix(deps): update dependency fastapi to v0.122.0 (#6615)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 23:14:55 +00:00
Michael Genson
bb196da83b fix: Bump Pydantic to v2.12.5 (#6622) 2025-11-29 17:04:13 -06:00
renovate[bot]
d500fbf0b4 chore(deps): update dependency pre-commit to v4.5.0 (#6614)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 16:47:05 -06:00
renovate[bot]
ca94ca973c chore(deps): update dependency mypy to v1.19.0 (#6613) 2025-11-29 22:23:35 +00:00
renovate[bot]
454d1eff1c chore(deps): update dependency mkdocs-material to v9.7.0 (#6612) 2025-11-29 16:11:58 -06:00
renovate[bot]
280be88fc5 chore(deps): update dependency coverage to v7.12.0 (#6611) 2025-11-29 15:27:39 -06:00
renovate[bot]
e24c37957b fix(deps): update dependency rapidfuzz to v3.14.3 (#6610)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 20:59:37 +00:00
renovate[bot]
46b069ba71 fix(deps): update dependency alembic to v1.17.2 (#6608)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 14:48:10 -06:00
renovate[bot]
2caed5e192 chore(deps): update dependency pylint to v4.0.3 (#6605) 2025-11-29 13:16:27 -06:00
renovate[bot]
406f44e6a7 chore(deps): update dependency types-python-dateutil to v2.9.0.20251115 (#6607)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 18:07:56 +00:00
renovate[bot]
f6787f18ba chore(deps): update dependency ruff to v0.14.7 (#6606)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 17:56:01 +00:00
Michael Genson
1d64f428db chore: Fail frontend lint if there are warnings (#6619) 2025-11-29 11:33:17 -06:00
renovate[bot]
77906da9f1 fix(deps): update dependency recipe-scrapers to v15.10.0 (#6618)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 17:32:40 +00:00
renovate[bot]
35d470f5ea fix(deps): pin dependencies (#6604)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 17:04:14 +00:00
Hayden
d7cdcfa734 chore(l10n): New Crowdin updates (#6594) 2025-11-29 16:53:03 +00:00
Michael Genson
bfbdf76c2d chore: Update Renovate config to pin versions in pyproject.toml (#6603) 2025-11-29 10:42:01 -06:00
github-actions[bot]
7cc0fafbaa chore(auto): Update pre-commit hooks (#6558)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-11-29 16:23:16 +00:00
Simon Lam
5b65ceda93 fix: Asset type selector dropdown #6413; asset entry layout; asset download content disposition (#6595)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-29 10:13:26 -06:00
Michael Genson
07ecd88685 feat: Remove backend cookie and use frontend for auth (#6601) 2025-11-28 19:29:16 -06:00
gpotter@gmail.com
8f1ce1a1c3 fix: recipe recursion false positive (#6591)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Michael Genson <genson.michael@gmail.com>
2025-11-28 11:28:18 -06:00
cordlord
3146e99b03 fix: PWA follows OS screen rotation/lock settings (#6573) 2025-11-25 21:42:38 +00:00
Simon Lam
fe53cc28ba fix: Tool management bug #6447 - correct mismatch between event fired vs event handler (#6590)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-23 17:14:59 -06:00
github-actions[bot]
d85635997b chore(l10n): Crowdin locale sync (#6589)
Co-authored-by: GitHub Action <action@github.com>
2025-11-23 23:13:26 +00:00
Hayden
1ca29df52e chore(l10n): New Crowdin updates (#6565)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-11-23 02:59:59 +00:00
renovate[bot]
ee5de10ffb chore(deps): update node.js to aa648b3 (#6568)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-22 12:41:51 -06:00
Michael Genson
201ab4b8ac chore: lint (#6582) 2025-11-21 23:37:59 -06:00
miah
45af609161 dev: Allow dev server to be accessed on local network (#6581)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-21 23:19:37 -06:00
Michael Genson
c4a3068492 fix: Set maxAge on frontend auth cookie (#6576) 2025-11-20 15:18:27 -06:00
ithabi
6d4f573526 fix: Favorites page fails to load when sorted by random (#6517)
Co-authored-by: “a24ithay” <“abilan.ithayakumar@imt-atlantique.net”>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-20 15:04:49 +00:00
ithabi
3c14df453e fix : Can't edit extra long category name depending on resolution (#6536)
Co-authored-by: “a24ithay” <“abilan.ithayakumar@imt-atlantique.net”>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-20 14:54:23 +00:00
Hayden
9826f3483e chore(l10n): New Crowdin updates (#6563) 2025-11-18 09:30:53 +01:00
Hayden
caf0f5f441 chore(l10n): New Crowdin updates (#6561) 2025-11-17 14:36:42 -06:00
github-actions[bot]
b599de9c22 chore(l10n): Crowdin locale sync (#6553)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-11-17 12:15:00 +00:00
Hayden
fd7aa44c13 chore(l10n): New Crowdin updates (#6559) 2025-11-17 12:20:54 +01:00
Hayden
82b7bacdb7 chore(l10n): New Crowdin updates (#6557) 2025-11-16 20:32:32 +01:00
Hayden
84f86c2682 chore(l10n): New Crowdin updates (#6554) 2025-11-16 09:39:17 +01:00
Hayden
527edb1a92 chore(l10n): New Crowdin updates (#6552) 2025-11-15 19:22:47 +00:00
Hayden
6e11b92e74 chore(l10n): New Crowdin updates (#6548) 2025-11-15 10:12:28 +01:00
Hayden
3f5b25a30e chore(l10n): New Crowdin updates (#6547) 2025-11-14 18:41:48 +00:00
github-actions[bot]
662d06b5a8 docs(auto): Update image tag, for release v3.5.0 (#6542) 2025-11-14 18:22:32 +00:00
Hayden
9003d0f1d1 chore(l10n): New Crowdin updates (#6513)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-11-14 12:12:35 -06:00
Lory
1cf7e37ada fix: prevent URL encoding in postgres placeholder display (#6438) 2025-11-14 16:17:17 +00:00
Arsène Reymond
930c92365d fix: Improve recipe ingredient selection (#6518)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-14 10:05:54 -06:00
Aurelien
6f1fee5511 fix: Make Ingredients and Instructions independently scrollable in cook mode (#6358)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-14 09:45:36 -06:00
renovate[bot]
f5de126d86 chore(deps): update node.js to 42ce5b9 (#6539)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-13 05:15:20 +00:00
renovate[bot]
725dae41b1 chore(deps): update dependency pytest to v9 (#6525)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-12 23:04:56 -06:00
github-actions[bot]
39e919526a chore(auto): Update pre-commit hooks (#6528)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-12 17:19:19 +00:00
renovate[bot]
1978ad2c96 chore(deps): update node.js to e5bbac0 (#6507)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-12 11:04:49 -06:00
github-actions[bot]
23e8dc1941 chore(l10n): Crowdin locale sync (#6524) 2025-11-08 22:15:51 -06:00
Hayden
96b408a661 chore(l10n): New Crowdin updates (#6508) 2025-11-05 09:39:12 +01:00
Hayden
20a9a94770 chore(l10n): New Crowdin updates (#6506) 2025-11-04 21:30:09 +01:00
renovate[bot]
b280e2d1a0 chore(deps): update node.js to 55b6bbe (#6503)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 11:09:32 -06:00
Hayden
735162d042 chore(l10n): New Crowdin updates (#6502) 2025-11-04 09:03:03 -06:00
gpotter@gmail.com
60d9294861 feat: Add recipe as ingredient (#4800)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-03 23:57:57 -06:00
Michael Genson
ff42964537 fix: Brute parser fails if unit or food is empty (#6500) 2025-11-03 23:44:13 -06:00
Christian Hollinger
bb67d993a0 feat: Add DELETE /{slug}/image (#6259)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-03 19:41:54 -06:00
Michael Genson
7bb0f0801a fix: Stabilize shopping list queuing (#6498) 2025-11-03 18:38:33 -06:00
Hayden
3a4875a54f chore(l10n): New Crowdin updates (#6495) 2025-11-03 20:53:45 +00:00
Michael Genson
0371874670 fix: Refactor Recipe Zip File Flow (#6170) 2025-11-03 14:43:22 -06:00
Tom Strange
3d177566ed fix: Include contents of purpose field when parsing ingredients (#6494) 2025-11-03 18:09:00 +00:00
github-actions[bot]
14e87918fb chore(auto): Update pre-commit hooks (#6493)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-11-03 16:15:38 +00:00
Hayden
ac75b0254d chore(l10n): New Crowdin updates (#6492) 2025-11-03 09:12:57 +01:00
Michael Genson
7f2927600b chore: Update some frontend deps (#6490) 2025-11-02 22:42:19 -06:00
aliyyanWijaya
5e8c4a6cee fix: Update the random button flow (#6248)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-03 02:52:17 +00:00
Arsène Reymond
a460c32674 fix: Locale dates format (#6211)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-11-02 20:39:33 -06:00
Hayden
973cd5ab02 chore(l10n): New Crowdin updates (#6487) 2025-11-02 20:08:02 +01:00
Hayden
ac355c1071 chore(l10n): New Crowdin updates (#6486) 2025-11-02 01:07:56 -05:00
github-actions[bot]
3a617cd3c3 chore(l10n): Crowdin locale sync (#6485)
Co-authored-by: GitHub Action <action@github.com>
2025-11-01 23:05:26 -05:00
Hayden
3c874c2f85 chore(l10n): New Crowdin updates (#6478) 2025-11-01 20:11:17 +00:00
renovate[bot]
fb3be73163 chore(deps): update dependency types-python-slugify to v8 (#6480)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-01 20:00:36 +00:00
renovate[bot]
14b783852e fix(deps): update dependency tzdata to v2025 (#6481)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-01 19:49:51 +00:00
Michael Genson
75616d66b8 dev: Migrate to uv (#6470) 2025-11-01 14:36:40 -05:00
github-actions[bot]
01713b0416 docs(auto): Update image tag, for release v3.4.0 (#6471)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-10-31 19:29:05 +00:00
Hayden
123a8b99f8 chore(l10n): New Crowdin updates (#6469) 2025-10-31 19:15:33 +00:00
renovate[bot]
6732fcd696 chore(deps): update dependency fastapi to v0.120.3 (#6465)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 11:08:41 -05:00
Hayden
5fcbfbf361 chore(l10n): New Crowdin updates (#6464) 2025-10-31 01:06:46 +05:45
Hayden
1318998bc9 chore(l10n): New Crowdin updates (#6462) 2025-10-30 12:59:57 +05:45
renovate[bot]
0947212271 chore(deps): update dependency fastapi to v0.120.2 (#6457) 2025-10-29 14:39:33 +00:00
renovate[bot]
92ac5c6253 chore(deps): update node.js to v24 (#6451) 2025-10-29 09:27:00 -05:00
renovate[bot]
5f96f4b47f chore(deps): update dependency fastapi to v0.120.1 (#6450)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 08:49:32 -05:00
renovate[bot]
dbcd430425 chore(deps): update dependency alembic to v1.17.1 (#6456)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 04:52:13 +00:00
renovate[bot]
4c9164594b chore(deps): update dependency python-dotenv to v1.2.1 (#6442)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 23:39:37 -05:00
renovate[bot]
e5a13f8b43 chore(deps): update dependency ingredient-parser-nlp to v2.4.0 (#6448)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 01:34:43 +00:00
github-actions[bot]
726ad10c7e chore(auto): Update pre-commit hooks (#6445)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-10-29 01:22:51 +00:00
Hayden
df53310f2e chore(l10n): New Crowdin updates (#6455) 2025-10-28 22:12:48 +05:45
Hayden
82bf5c1bae chore(l10n): New Crowdin updates (#6446) 2025-10-28 10:32:51 +05:45
Hayden
c70a63f0ff chore(l10n): New Crowdin updates (#6444) 2025-10-27 12:16:52 +05:45
Hayden
14bfa6bcae chore(l10n): New Crowdin updates (#6441) 2025-10-26 09:52:59 -05:00
github-actions[bot]
adbafef157 chore(l10n): Crowdin locale sync (#6440)
Co-authored-by: GitHub Action <action@github.com>
2025-10-26 04:06:16 +00:00
Hayden
62d52f53e4 chore(l10n): New Crowdin updates (#6439) 2025-10-25 22:55:47 -05:00
Florian Fischer
4370319fec fix: Food seed only works for American English (#6204) (#6436)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-25 12:40:02 -05:00
Hayden
15908d190d chore(l10n): New Crowdin updates (#6435) 2025-10-25 10:07:21 -05:00
Hayden
fcb909e072 chore(l10n): New Crowdin updates (#6434) 2025-10-25 01:50:15 +00:00
Aurelien
8e532af4d9 fix: Heart and Ranking Stars overlap each other (#6359)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-24 17:35:07 -05:00
Richard vL
831cb6dd17 fix: Changed sorting icons (#6354)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-24 21:51:11 +00:00
Michael Genson
089bb24c0f fix: Make docs:gen consistent regardless of timestamp (again) (#6432) 2025-10-24 16:34:44 -05:00
Fernando Muñoz Paredes
107dfc34de fix: dash slug names (#5709)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-24 16:01:55 -05:00
renovate[bot]
144d4caea6 chore(deps): update dependency orjson to v3.11.4 (#6431)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 14:02:45 -05:00
renovate[bot]
b3db81b9a4 chore(deps): update dependency openai to v2.6.1 (#6429)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 18:29:53 +00:00
renovate[bot]
dc2bbdc494 fix(deps): update dependency fastapi to ^0.120.0 (#6426)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 13:17:47 -05:00
Hayden
8f17a08923 chore(l10n): New Crowdin updates (#6396) 2025-10-24 15:44:12 +00:00
renovate[bot]
f6209bff54 chore(deps): update node.js to 23c24e8 (#6424)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 15:31:16 +00:00
Michael Genson
33865285d1 fix: Use crossorigin: "use-credentials" with PWA manifest (#6430) 2025-10-24 10:20:04 -05:00
renovate[bot]
e226b9b1d5 fix(deps): update dependency vite to v7 [security] (#6412)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 14:55:04 +00:00
miah
201c63d1e4 feat: Improve shopping list label sections (#6345)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-24 09:43:55 -05:00
renovate[bot]
a242f567ad chore(deps): update dependency ruff to v0.14.2 (#6425)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-23 23:08:29 -05:00
renovate[bot]
67ead2e8a1 chore(deps): update node.js to a2a7dcc (#6422)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 13:54:33 +00:00
renovate[bot]
7b273b77e2 chore(deps): update node.js to 58644f2 (#6418)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 08:42:55 -05:00
renovate[bot]
b4cd095360 chore(deps): update dependency pylint to v4.0.2 (#6409)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 18:22:02 +00:00
renovate[bot]
a9bb27c782 chore(deps): update dependency fastapi to v0.119.1 (#6408)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 13:08:10 -05:00
renovate[bot]
9df1523911 fix(deps): update dependency uvicorn to ^0.38.0 (#6400)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 12:47:15 -05:00
renovate[bot]
0c8a1ae608 chore(deps): update dependency openai to v2.6.0 (#6398)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 17:26:57 +00:00
renovate[bot]
7d54404bf0 chore(deps): update dependency ruff to v0.14.1 (#6397)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 12:04:13 -05:00
github-actions[bot]
8bbe70d245 chore(auto): Update pre-commit hooks (#6407)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-10-21 16:16:07 +00:00
renovate[bot]
6c87f7fe33 chore(deps): update dependency pydantic to v2.12.3 (#6377)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 11:04:10 -05:00
miah
7e168eb75b feat: Support User-Level Default Activities (#5125) 2025-10-15 21:30:08 -05:00
Hayden
64d481b4fc chore(l10n): New Crowdin updates (#6395) 2025-10-15 21:08:22 +00:00
renovate[bot]
a9926557bc fix(deps): update dependency pillow to v12 (#6394)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 15:55:25 -05:00
renovate[bot]
2a908c0dd2 chore(deps): update dependency coverage to v7.11.0 (#6392) 2025-10-15 14:50:55 -05:00
renovate[bot]
c64a0dc769 chore(deps): update dependency mkdocs-material to v9.6.22 (#6391) 2025-10-15 10:46:58 -05:00
renovate[bot]
7ce9c35ef5 chore(deps): update dependency pylint to v4.0.1 (#6389) 2025-10-15 13:17:11 +00:00
Hayden
0acca2021d chore(l10n): New Crowdin updates (#6388) 2025-10-15 08:05:19 -05:00
Michael Genson
5de0b48aa9 fix: Upgrade Pydantic and remove manual Postgres URL parsing (#6385) 2025-10-14 15:52:50 -05:00
Hayden
ffe199c083 chore(l10n): New Crowdin updates (#6384) 2025-10-14 20:25:34 +00:00
Michael Genson
215a18be42 fix: Check x-forwarded-proto header when determining auth cookie samesite attribute (#6383) 2025-10-14 12:38:03 -05:00
github-actions[bot]
a1b065e5d1 chore(auto): Update pre-commit hooks (#6370)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-10-14 16:22:22 +00:00
Hayden
d660d89a1b chore(l10n): New Crowdin updates (#6381) 2025-10-14 10:22:03 -05:00
Hayden
ade1f797a9 chore(l10n): New Crowdin updates (#6376) 2025-10-13 19:45:53 +00:00
Ritoban Dutta
192872b9ec fix: Change 'Units' to 'Unit' in shopping list item editor (#6372) 2025-10-13 17:41:29 +00:00
renovate[bot]
25ebcb1a05 chore(deps): update dependency pylint to v4 (#6366)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-13 15:21:26 +00:00
Hayden
89d95ca5e1 chore(l10n): New Crowdin updates (#6371) 2025-10-13 10:09:53 -05:00
Hayden
b705652af3 chore(l10n): New Crowdin updates (#6367) 2025-10-12 14:28:54 -05:00
github-actions[bot]
b0c78de2da chore(l10n): Crowdin locale sync (#6364)
Co-authored-by: GitHub Action <action@github.com>
2025-10-12 04:15:09 +00:00
renovate[bot]
c4b1f9fd01 fix(deps): update dependency fastapi to ^0.119.0 (#6362)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-11 23:01:45 -05:00
renovate[bot]
2b0d8227f4 chore(deps): update dependency alembic to v1.17.0 (#6361)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-11 19:14:31 +00:00
Hayden
42517e9f8a chore(l10n): New Crowdin updates (#6357) 2025-10-11 14:01:21 -05:00
renovate[bot]
37c97c8aba chore(deps): update dependency python-ldap to v3.4.5 [security] (#6356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 22:52:36 -05:00
Hayden
64d36a2608 chore(l10n): New Crowdin updates (#6353) 2025-10-10 12:49:24 -05:00
renovate[bot]
563defe074 chore(deps): update dependency sqlalchemy to v2.0.44 (#6352)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 12:14:59 -05:00
renovate[bot]
f5ffb760d3 chore(deps): update dependency psycopg2-binary to v2.9.11 (#6351)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 16:34:05 +00:00
renovate[bot]
3118a0c0cf fix(deps): update dependency aiofiles to v25 (#6344)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 11:19:52 -05:00
renovate[bot]
444beb68f9 chore(deps): update dependency rich to v14.2.0 (#6341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 16:03:34 +00:00
renovate[bot]
49a97ebc0e chore(deps): update dependency fastapi to v0.118.3 (#6336)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 10:46:29 -05:00
renovate[bot]
6f682b742e chore(deps): update dependency pydantic to v2.12.0 (#6310)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 10:24:12 -05:00
Hayden
32d4d22bb8 chore(l10n): New Crowdin updates (#6347)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-10 05:33:04 +00:00
Dallin Miner
71d86489f4 feat: Add new migration for DVO Cook'n (#5085)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-10 00:22:51 -05:00
github-actions[bot]
a95eaf3d2e docs(auto): Update image tag, for release v3.3.2 (#6346)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-10-10 04:14:06 +00:00
renovate[bot]
414af989e7 chore(deps): update dependency openai to v2.3.0 (#6330)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 23:02:07 -05:00
Michael Genson
b7b191a5ee fix: Truncate Long Passwords (>72 bytes) (#6335) 2025-10-09 23:46:06 +00:00
Hayden
5620370ade chore(l10n): New Crowdin updates (#6320) 2025-10-09 16:30:31 +00:00
renovate[bot]
d333d47e34 chore(deps): update dependency ruff to ^0.14.0 (#6334)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 18:49:52 +00:00
Brian Choromanski
b34b1c9be3 feat: Added url to current version release (#6308) 2025-10-07 09:31:55 +00:00
Michael Genson
8c5010148d fix: Translate log-out string (#6332) 2025-10-06 17:14:51 -05:00
Michael Genson
a17b0e329e fix: No Redirect On Valid Token (#6327) 2025-10-06 13:02:25 -05:00
Arsène Reymond
8ab69a7d7a fix: Remove unused next-auth dependency (#6328) 2025-10-06 12:43:13 -05:00
github-actions[bot]
f4ecf74b91 chore(auto): Update pre-commit hooks (#6324)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-10-06 15:09:13 +00:00
renovate[bot]
ba9d816f64 chore(deps): update dependency pylint to v3.3.9 (#6321)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-06 09:57:17 -05:00
Michael Genson
6895b49543 fix: Re-write Nuxt auth backend and get rid of sidebase auth (#6322) 2025-10-05 20:43:38 -05:00
github-actions[bot]
fffe7b05e0 chore(l10n): Crowdin locale sync (#6318)
Co-authored-by: GitHub Action <action@github.com>
2025-10-05 02:56:21 +00:00
Hayden
1271e0e49b chore(l10n): New Crowdin updates (#6317) 2025-10-04 21:45:57 -05:00
Hayden
478054b724 chore(l10n): New Crowdin updates (#6313) 2025-10-04 11:30:21 -05:00
Hayden
57d259a7a3 chore(l10n): New Crowdin updates (#6309) 2025-10-04 21:34:09 +10:00
Hayden
a4a6d4dfb1 chore(l10n): New Crowdin updates (#6273) 2025-10-03 17:24:33 +00:00
github-actions[bot]
f7b4f79312 chore(l10n): Crowdin locale sync (#6268)
Co-authored-by: GitHub Action <action@github.com>
2025-10-03 17:03:14 +00:00
renovate[bot]
434d312f7c chore(deps): update dependency openai to v2.1.0 (#6302)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 11:50:06 -05:00
renovate[bot]
bda460b49e chore(deps): update dependency ruff to v0.13.3 (#6301)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 16:17:53 +00:00
renovate[bot]
d3e1c48655 chore(deps): update dependency authlib to v1.6.5 (#6299)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 11:05:13 -05:00
github-actions[bot]
b2a3430f2c docs(auto): Update image tag, for release v3.3.1 (#6300)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-10-02 18:26:51 +00:00
renovate[bot]
3d792d9333 chore(deps): update dependency openai to v2.0.1 (#6296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-02 17:22:38 +00:00
renovate[bot]
2e028d7e12 chore(deps): update node.js to 2bb201f (#6295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-02 12:11:00 -05:00
Brian Choromanski
c63932e8b3 fix: Updated pwa orientation to any (#6298) 2025-10-01 20:51:15 -05:00
renovate[bot]
3ba2227bc7 chore(deps): update dependency mkdocs-material to v9.6.21 (#6293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-01 04:45:41 +00:00
renovate[bot]
67af391c6b chore(deps): update dependency pillow-heif to v1.1.1 (#6291)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-30 23:33:14 -05:00
renovate[bot]
70ae0dac25 chore(deps): update node.js to d367fd3 (#6292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-01 03:19:44 +00:00
renovate[bot]
e15a9c3c9f chore(deps): update dependency apprise to v1.9.5 (#6290)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-30 22:07:31 -05:00
renovate[bot]
9d40d60b3b fix(deps): update dependency openai to v2 (#6294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-30 21:40:14 -05:00
renovate[bot]
e2760f7247 chore(deps): update dependency tzdata to v2025 (#6287) 2025-09-29 17:18:19 -05:00
Michael Genson
83bf21b947 fix: Restore recipe meta for non-logged-in users (#6286) 2025-09-29 10:33:18 -05:00
Michael Genson
d1824affff fix: Default to "0" qty when creating ingredients everywhere (#6285) 2025-09-29 10:19:37 -05:00
renovate[bot]
4827e1092f chore(deps): update dependency beautifulsoup4 to v4.14.2 (#6283)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:49:54 -05:00
github-actions[bot]
7db767b075 chore(auto): Update pre-commit hooks (#6282)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-09-29 14:36:01 +00:00
renovate[bot]
afdd0b15dc fix(deps): update dependency fastapi to ^0.118.0 (#6281)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:24:37 -05:00
Michael Genson
37c9166a77 docs: Update TOKEN_TIME docs to include max (#6279) 2025-09-28 22:05:15 -05:00
github-actions[bot]
ba0b9d4cd9 docs(auto): Update image tag, for release v3.3.0 (#6267)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-09-28 01:13:15 +00:00
renovate[bot]
9fd99a86b8 chore(deps): update dependency beautifulsoup4 to v4.14.0 (#6260)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-27 20:02:31 -05:00
Michael Genson
824603a578 fix: Stores Not Populating Sometimes (#6266) 2025-09-27 19:17:08 -05:00
Hayden
e3f120c680 chore(l10n): New Crowdin updates (#6264) 2025-09-27 16:23:01 -05:00
Michael Genson
d16a10440d chore: Add Stricter Frontend Formatting (#6262) 2025-09-27 13:57:53 -05:00
Michael Genson
ecdf7de386 chore: Upgrade Node and Nuxt (#6240) 2025-09-27 12:26:02 -05:00
Hayden
0e10ed8461 chore(l10n): New Crowdin updates (#6257) 2025-09-27 15:50:58 +02:00
Michael Genson
1684169e7b fix: Check for non-hid properties when injetcing SPA meta (#6256) 2025-09-26 16:07:13 -05:00
Hayden
3d9f2bef82 chore(l10n): New Crowdin updates (#6254) 2025-09-26 17:21:43 +00:00
Michael Genson
a722b05fb5 fix: Make Ingredient Parser Dialog Use Full Space (#6253) 2025-09-26 11:45:41 -05:00
Michael Genson
187e83eeb5 fix: Misc Issues with Ingredient Parser (#6250) 2025-09-26 11:25:15 -05:00
renovate[bot]
f3cc51190c fix(deps): update dependency bcrypt to v5 (#6246)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-26 15:05:42 +00:00
renovate[bot]
33aedd6904 chore(deps): update dependency pyyaml to v6.0.3 (#6245)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-26 09:52:20 -05:00
renovate[bot]
ea9a25a891 chore(deps): update dependency pydantic-settings to v2.11.0 (#6233)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-26 09:30:37 -05:00
Hayden
3a237258a1 chore(l10n): New Crowdin updates (#6241) 2025-09-26 06:00:25 +00:00
Michael Genson
d29de8e679 feat: Simplify Default Layout Logic and Add Household.name To Cookbooks API (#6243) 2025-09-25 18:01:10 -05:00
Michael Genson
79367872ac fix: Remove Double Cookie Refresh (#6242) 2025-09-25 14:55:07 -05:00
renovate[bot]
f058dec27b chore(deps): update dependency lxml to v6.0.2 (#6219)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 16:14:49 +00:00
renovate[bot]
c87acf54db chore(deps): update dependency coverage to v7.10.7 (#6216)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 16:02:08 +00:00
renovate[bot]
84c144e40f fix(deps): update dependency fastapi to ^0.117.0 (#6205)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 15:49:22 +00:00
renovate[bot]
474cf299cd fix(deps): update dependency uvicorn to ^0.37.0 (#6200)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 15:32:35 +00:00
renovate[bot]
1cababc5a5 chore(deps): update dependency ruff to v0.13.2 (#6239)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 15:14:28 +00:00
renovate[bot]
8705bcf195 chore(deps): update dependency openai to v1.109.1 (#6196)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 14:59:21 +00:00
Hayden
bdb511c1c8 chore(l10n): New Crowdin updates (#6237) 2025-09-25 09:44:03 -05:00
Carter
c9f3f65f36 fix: Remove constraint on unhashed password being 'LDAP' (#6236) 2025-09-24 23:32:28 -05:00
Hayden
3ec55f0e48 chore(l10n): New Crowdin updates (#6234) 2025-09-24 16:33:34 +00:00
Patrick Lehner (he/him)
7d43c7c7a2 docs: Improve formatting in 'Automating Backups with n8n' community guide (#6221)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-09-24 15:16:56 +00:00
Michael Genson
c710e9d3f5 fix: Enabled Using Mealie In iframe If Served Over HTTPS (#6128) 2025-09-24 09:58:17 -05:00
Hayden
0313e6b3b8 chore(l10n): New Crowdin updates (#6231) 2025-09-24 08:38:03 +02:00
Michael Genson
24b890136d fix: Workflow Issues with Deleting Ingredient In Parser (#6230) 2025-09-23 17:36:49 -05:00
Patrick Lehner (he/him)
4b67554b36 docs: Update navigation instructions for (admin) settings pages (#6220) 2025-09-23 22:14:19 +00:00
Michael Genson
679a42a7cc feat: Ingredient Parser Enhancements (#6228) 2025-09-23 17:03:35 -05:00
Hayden
4dfc32a314 chore(l10n): New Crowdin updates (#6225) 2025-09-23 21:06:34 +00:00
Michael Genson
96acc6fc4b fix: Remove explicit timeout from OpenAI image API Call (#6227) 2025-09-23 12:39:23 -05:00
Hayden
249c9e8f23 chore(l10n): New Crowdin updates (#6224) 2025-09-23 03:18:17 +00:00
Hayden
7413185300 chore(l10n): New Crowdin updates (#6218) 2025-09-22 15:35:33 +00:00
github-actions[bot]
6168ea0150 chore(auto): Update pre-commit hooks (#6222)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-09-22 15:21:36 +00:00
Patrick Lehner (he/him)
f7ba7862d4 docs: Fix formatting in some community guides (#6223) 2025-09-22 10:11:15 -05:00
Michael Genson
cec6d2c5ec fix: Actually Fix Token Time (#6215) 2025-09-21 19:51:19 -05:00
renovate[bot]
b27977fbdf chore(deps): update dependency mypy to v1.18.2 (#6193)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-21 16:14:29 +00:00
github-actions[bot]
2a60b330ac chore(l10n): Crowdin locale sync (#6206)
Co-authored-by: GitHub Action <action@github.com>
2025-09-21 16:03:16 +00:00
Hayden
72ec5bd13e chore(l10n): New Crowdin updates (#6213) 2025-09-21 10:53:10 -05:00
Hayden
bb45cbb0a2 chore(l10n): New Crowdin updates (#6176) 2025-09-21 05:12:32 +00:00
Michael Genson
c929a03b57 feat: Upgraded Ingredient Parsing Workflow (#6151) 2025-09-21 04:37:14 +00:00
Michael Genson
9e5a54477f docs: Add Info Regarding Theme Settings Config (#6198) 2025-09-20 12:58:59 -05:00
Arsène Reymond
078b4563b3 fix: multiple RecipeRating backend calls (#6194)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-09-20 15:27:17 +00:00
Michael Genson
a9090bc2bd feat: Manually calculate OpenAI Parsing Confidence (#6141) 2025-09-19 23:09:34 -05:00
renovate[bot]
cb8c1423c5 chore(deps): update dependency ruff to v0.13.1 (#6191)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 16:35:33 -05:00
Arsène Reymond
f6a1b5f4eb fix: ingredient linker and instructions titles (#6146)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-09-19 17:38:29 +00:00
Michael Genson
7623b72c4c fix: Print Button Does Nothing (#6178) 2025-09-18 12:48:36 -05:00
renovate[bot]
17d40e34df fix(deps): update dependency openai to v1.108.0 (#6185)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 22:14:45 -05:00
renovate[bot]
bade6968a3 fix(deps): update dependency authlib to v1.6.4 (#6182)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 14:50:42 -05:00
renovate[bot]
92a142125f fix(deps): update dependency fastapi to v0.116.2 (#6181)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 00:19:17 +00:00
renovate[bot]
d39c2a2874 chore(deps): update dependency mkdocs-material to v9.6.20 (#6179)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 00:07:10 +00:00
renovate[bot]
324de7fb10 chore(deps): update dependency pytest-asyncio to v1.2.0 (#6162)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 23:55:05 +00:00
renovate[bot]
c4544ea042 chore(deps): update dependency mypy to v1.18.1 (#6161)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 18:41:31 -05:00
renovate[bot]
a5dda74812 fix(deps): update dependency pydantic to v2.11.9 (#6159)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 23:15:24 +00:00
renovate[bot]
fd7e58e40c fix(deps): update dependency openai to v1.107.3 (#6147)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 23:01:40 +00:00
renovate[bot]
5e42841a7d chore(deps): update node.js to abcf9c9 (#6138)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 22:45:31 +00:00
github-actions[bot]
ae9306b8c2 chore(auto): Update pre-commit hooks (#6174)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-09-16 22:34:13 +00:00
renovate[bot]
7f0c5cbcc4 chore(deps): update dependency ruff to ^0.13.0 (#6148)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 17:23:32 -05:00
github-actions[bot]
a7d8bcc6ba docs(auto): Update image tag, for release v3.2.1 (#6172)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-09-15 19:45:07 +00:00
Hayden
b94ef78a12 chore(l10n): New Crowdin updates (#6145) 2025-09-15 04:19:55 +00:00
Michael Genson
db2c14093d fix: Explorer Page State Not Working On Hitting Back (#6171) 2025-09-14 22:28:17 -05:00
github-actions[bot]
9a0525c3a0 docs(auto): Update image tag, for release v3.2.0 (#6164)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-09-13 22:05:25 +00:00
renovate[bot]
a2e5826da0 fix(deps): update dependency ingredient-parser-nlp to v2.3.0 (#6163)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-13 16:54:11 -05:00
Michael Genson
d4f4ba0c8d fix: Ingredient Parser Drops Units Sometimes (#6150) 2025-09-13 15:49:08 -05:00
Michael Genson
8cd5835dd8 fix: Can't Edit Timeline Events (#6160) 2025-09-13 15:36:18 -05:00
renovate[bot]
7aa131b326 fix(deps): update dependency axios to v1.12.0 [security] (#6158)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-13 15:02:46 -05:00
Sören
af264bd288 fix: add breaks option to markdown rendering, to get old linebreak behaviour (#6156) 2025-09-13 17:29:23 +00:00
Hayden
72388e8bcf chore(l10n): New Crowdin updates (#6143) 2025-09-10 10:28:17 +02:00
Helge
c0afef46d6 docs: fix typo starting-dev-server.md (#6142) 2025-09-09 18:43:48 +00:00
Arsène Reymond
f90665cce9 feat: Improve first time setup ux (#6106) 2025-09-09 12:21:58 -05:00
renovate[bot]
942ac741cd fix(deps): update dependency next-auth to ~4.24.0 [security] (#6133)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 14:43:48 +00:00
Hayden
1d3a7e8d62 chore(l10n): New Crowdin updates (#6139) 2025-09-09 12:43:16 +00:00
renovate[bot]
5e85fc409e fix(deps): update dependency openai to v1.107.0 (#6129)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 08:35:08 +00:00
Michael Genson
2c20e96ede fix: Refactor and Optimize Explore Page Search (#6070)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-09-09 08:16:37 +00:00
renovate[bot]
608fc39747 chore(deps): update node.js to f3e50c7 (#6136)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 07:51:17 +00:00
renovate[bot]
ed2f40cd6a fix(deps): update dependency vite to v6.2.7 [security] (#6132)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-09-09 07:37:46 +00:00
Michael Genson
a080cdb432 chore: Update GitHub Configs (#6135) 2025-09-09 07:21:06 +00:00
renovate[bot]
83101e3ed5 fix(deps): update dependency rapidfuzz to v3.14.1 (#6137)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 03:31:57 +00:00
renovate[bot]
5d90997ace chore(config): migrate renovate config (#6134)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-08 20:56:09 -05:00
Kuchenpirat
c78c6cf926 dev: list availlable frontend updates on renovate dependency dashboard (#6130) 2025-09-08 21:19:24 +00:00
Michael Genson
e26191d116 fix: Upgrade Vuetify, fix Dev Dependencies, and fix Migration Tree View (#6127) 2025-09-08 22:49:28 +02:00
Xavier L.
3774f68393 feat: Add option to switch sqlite to WAL (#6050)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-09-08 11:23:37 -05:00
Nico Hirsch
c46c412bf5 fix: Don't open the sidebar drawer by default on medium screens (#6107) 2025-09-08 14:58:39 +00:00
github-actions[bot]
aa9e61a16f chore(auto): Update pre-commit hooks (#6125)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-09-08 10:24:15 +00:00
Michael Genson
b2f8d63f33 fix: Missing Locale Dates (#6116) 2025-09-08 09:47:37 +00:00
Hayden
72b47a1103 chore(l10n): New Crowdin updates (#6123) 2025-09-08 02:50:03 +00:00
renovate[bot]
29e150d547 chore(deps): update dependency mkdocs-material to v9.6.19 (#6121)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-07 21:39:06 -05:00
Zach Wolf
e9ae6d86a4 docs: link to GitHub Release Notes (#6122)
Co-authored-by: TheMerinoWolf <zwolf@zwolf-mbp-16-m4.localdomain>
2025-09-08 02:08:43 +00:00
Hayden
f799938373 chore(l10n): New Crowdin updates (#6113) 2025-09-07 19:02:20 +00:00
github-actions[bot]
e5fff4ec5c chore: automatic locale sync (#6117)
Co-authored-by: GitHub Action <action@github.com>
2025-09-07 18:51:21 +00:00
Carl
192e531c1f Docs: Fix install grammar (#6118)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-09-07 18:31:32 +00:00
Michael Genson
45e710ee72 fix: Context Menu Dialogs Not Working (#6108) 2025-09-05 17:41:43 +02:00
Hayden
be579ed664 chore(l10n): New Crowdin updates (#6105) 2025-09-04 22:37:57 -05:00
renovate[bot]
fe953896f8 fix(deps): update dependency openai to v1.106.1 (#6103)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 22:27:09 +00:00
renovate[bot]
decf7cb307 chore(deps): update dependency ruff to v0.12.12 (#6102)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 17:15:17 -05:00
Arsène Reymond
d396a8fdc2 fix: Cookboks page padding (#6097) 2025-09-04 19:59:54 +00:00
renovate[bot]
a3ef49f559 chore(deps): update dependency pytest to v8.4.2 (#6101)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 21:48:31 +02:00
Michael Genson
41e8458389 fix: Optimize Recipe Context Menu (#6071) 2025-09-04 16:19:47 +00:00
Hayden
18dc2fc6a8 chore(l10n): New Crowdin updates (#6100) 2025-09-04 18:08:58 +02:00
renovate[bot]
6355b3c8db fix(deps): update dependency openai to v1.106.0 (#6099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 17:17:40 +02:00
renovate[bot]
3ac8af138f fix(deps): update dependency openai to v1.105.0 (#6094)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 13:35:58 +02:00
renovate[bot]
2b3803fb2e chore(deps): update node.js to d22c0ce (#6096)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 08:17:06 +02:00
renovate[bot]
6a80e70486 chore(deps): update node.js to bfee10f (#6095)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-03 22:09:22 +00:00
Hayden
f1dc854770 chore(l10n): New Crowdin updates (#6093) 2025-09-03 15:18:24 +00:00
Kuchenpirat
581aa929bd feat: consolidate settings gui (#6043)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-09-03 15:07:06 +00:00
Michael Genson
461e51bd22 fix: Optimize Recipe Favorites/Ratings (#6075) 2025-09-03 16:56:38 +02:00
Patrick Lehner (he/him)
1cdf43c599 fix: Shopping list top buttons layout (margin and row wrapping) (#6091) 2025-09-03 09:26:25 +00:00
Arsène Reymond
6bfbc7ca0a fix: set touchless on AppSidebar (#6092) 2025-09-03 09:11:36 +00:00
Michael Genson
608dbaa4c1 fix: Incorrect Usage of $vuetify.display (#6066) 2025-09-03 08:36:42 +00:00
renovate[bot]
89c1e007cb fix(deps): update dependency openai to v1.104.2 (#6086)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-03 08:27:44 +02:00
Hayden
fb5db583d2 chore(l10n): New Crowdin updates (#6088) 2025-09-03 06:09:31 +00:00
Michael Genson
bef3045e65 fix: Make Frontend Respect TOKEN_TIME (#6089) 2025-09-03 05:56:54 +00:00
Michael Genson
ff958a5015 fix: Fix PWA (#6090) 2025-09-03 07:44:52 +02:00
Hayden
37789c342e chore(l10n): New Crowdin updates (#6080)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-09-02 16:46:31 +00:00
renovate[bot]
b6b8bea925 fix(deps): update dependency openai to v1.103.0 (#6083)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-02 18:33:01 +02:00
Patrick Lehner (he/him)
60834178ba docs: Fix list formatting on 'Features' docs page (#6082) 2025-09-02 10:16:36 -05:00
github-actions[bot]
0375a0bd5a chore(auto): Update pre-commit hooks (#6077)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-09-01 15:54:52 +00:00
Patrick Lehner (he/him)
3361f9a7c3 fix: Fix RecipeLastMade dialog date picker being off by a day (#6079) 2025-09-01 10:44:30 -05:00
Hayden
0883ef05ab chore(l10n): New Crowdin updates (#6076) 2025-08-31 22:13:27 -05:00
Hayden
c4eb020a66 chore(l10n): New Crowdin updates (#6073) 2025-08-31 11:25:57 -05:00
github-actions[bot]
600f407b4f chore: automatic locale sync (#6069)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-31 02:51:20 +00:00
Hayden
6f92a829d6 chore(l10n): New Crowdin updates (#6067) 2025-08-30 21:41:32 -05:00
Hayden
6b11ff5128 chore(l10n): New Crowdin updates (#6063) 2025-08-30 15:48:37 +00:00
renovate[bot]
29fdad1574 chore(deps): update dependency coverage to v7.10.6 (#6062)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-29 23:52:17 -05:00
Hayden
54b3df105c chore(l10n): New Crowdin updates (#6058) 2025-08-29 22:00:47 +00:00
Richard vL
9a3303b06c fix: re-ordering of cookbooks (#5975)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-29 21:50:09 +00:00
Andrew Brock
c17accd82b fix: import from Paprika not importing some images (#5911)
Co-authored-by: brokeh <git@brocky.net>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-29 21:39:37 +00:00
Felix Schneider
18f7e8d935 feat: group recipe ingredients by section titles (#5864)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-29 21:25:25 +00:00
Xavier L.
6d2936cab6 fix: Handle missing OIDC groups claim (#6054) 2025-08-29 21:07:00 +00:00
renovate[bot]
cc2e33a254 chore(deps): update dependency ruff to v0.12.11 (#6056)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-28 17:03:16 +00:00
renovate[bot]
eee6f8113c fix(deps): update dependency alembic to v1.16.5 (#6048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-28 09:42:40 +02:00
Hayden
bd10cb8cd8 chore(l10n): New Crowdin updates (#6049) 2025-08-28 07:24:34 +02:00
renovate[bot]
d03081c4e6 fix(deps): update dependency authlib to v1.6.3 (#6018)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 17:56:03 +00:00
renovate[bot]
64d865bf7e chore(deps): update dependency coverage to v7.10.5 (#6021)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 17:44:26 +00:00
renovate[bot]
27efda2772 fix(deps): update dependency rapidfuzz to v3.14.0 (#6044)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 19:33:05 +02:00
renovate[bot]
81986e63b8 fix(deps): update dependency beautifulsoup4 to v4.13.5 (#6026)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 17:46:07 +02:00
Michael Genson
42eef17cfb fix: Make String Cleaner More Robust (#6032) 2025-08-27 14:19:43 +00:00
renovate[bot]
1f724856b1 fix(deps): update dependency typing-extensions to v4.15.0 (#6035)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 16:06:53 +02:00
renovate[bot]
618ea06b7a fix(deps): update dependency orjson to v3.11.3 (#6041)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 14:52:29 +02:00
Hayden
ca2039ae35 chore(l10n): New Crowdin updates (#6034)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-27 10:47:56 +00:00
renovate[bot]
15ecab86d1 fix(deps): update dependency openai to v1.102.0 (#6042)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 12:36:20 +02:00
github-actions[bot]
aa164424d3 docs(auto): Update image tag, for release v3.1.2 (#6037)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-08-25 18:25:01 +00:00
renovate[bot]
99acb349bd fix(deps): update dependency lxml to v6.0.1 (#6011)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-25 13:14:05 -05:00
Michael Genson
894162a669 fix: Remove Frontend Timeout (#6033) 2025-08-25 12:28:43 -05:00
Michael Genson
347af7d417 fix: Can't add first shopping list item to shopping list (#6013) 2025-08-25 11:53:36 -05:00
Michael Genson
cac1699aeb fix: Light Mode Using Dark Mode Background Color (#6014) 2025-08-25 13:34:00 +00:00
Hayden
d577966bfb chore(l10n): New Crowdin updates (#6017)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-25 11:21:11 +00:00
github-actions[bot]
c663efde09 chore(auto): Update pre-commit hooks (#6029)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-25 07:31:11 +00:00
Michael Genson
9e568a1182 fix: Simplify AutoForm and fix select (#6022)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-25 07:19:46 +00:00
github-actions[bot]
fc38ef2ba9 chore: automatic locale sync (#6024) 2025-08-25 06:46:24 +00:00
Michael Genson
323a8100db fix: Remove Temperature from OpenAI Integration (#6023) 2025-08-25 08:36:15 +02:00
DrDonoso
01d3d5d325 fix: theme dark/light are swapped (#6001)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-22 18:27:57 +00:00
renovate[bot]
3f52c66f02 chore(deps): update dependency mkdocs-material to v9.6.18 (#6008)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-22 19:20:09 +02:00
Hayden
566f744220 chore(l10n): New Crowdin updates (#6009) 2025-08-22 17:33:12 +02:00
renovate[bot]
561b50ba45 chore(deps): update dependency ruff to v0.12.10 (#6004)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-22 11:21:46 +02:00
renovate[bot]
4228c9e753 fix(deps): update dependency openai to v1.101.0 (#6005)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-22 08:59:19 +02:00
Hayden
2a5c3f6457 chore(l10n): New Crowdin updates (#6006) 2025-08-22 08:30:41 +02:00
Hayden
389f8b4279 chore(l10n): New Crowdin updates (#5999) 2025-08-21 17:42:31 +02:00
Hayden
f2b71e981e chore(l10n): New Crowdin updates (#5995) 2025-08-20 08:05:17 +00:00
github-actions[bot]
ec7e3a5103 docs(auto): Update image tag, for release v3.1.1 (#5994)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-20 05:57:49 +00:00
eMerzh
6f0183cc4b feat: Allow env_nested config with __ (#5616) 2025-08-19 21:00:53 +00:00
renovate[bot]
12d38c89ea fix(deps): update dependency requests to v2.32.5 (#5987)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-19 12:38:30 -05:00
renovate[bot]
492c9a948d fix(deps): update dependency openai to v1.100.2 (#5993)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 19:23:24 +02:00
github-actions[bot]
a808c8a18b docs(auto): Update image tag, for release 3.1.0 (#5992)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-19 18:49:54 +02:00
Hayden
0c6483aefa chore(l10n): New Crowdin updates (#5991) 2025-08-19 18:21:45 +02:00
renovate[bot]
1568c33c37 fix(deps): update dependency openai to v1.100.1 (#5986)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 14:07:56 +02:00
Hayden
5d0cf8422b chore(l10n): New Crowdin updates (#5989) 2025-08-19 13:27:24 +02:00
tauhammerhead
d322abc1b4 fix: Update variable name in RecipeCard.vue to enable household ratings to appear on recipes (#5985)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-18 19:55:48 +02:00
Michael Genson
c34180632b fix: Missing Items On Admin Pages (#5984) 2025-08-18 19:21:29 +02:00
Hayden
c74f016f66 chore(l10n): New Crowdin updates (#5982) 2025-08-18 13:07:38 +00:00
Felix Schneider
e11ee47109 feat: save default recipe ordering in local storage (#5826)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-18 12:35:12 +00:00
github-actions[bot]
a044ca2779 chore(auto): Update pre-commit hooks (#5981)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-18 11:35:41 +00:00
Hayden
f584fa33f4 chore(l10n): New Crowdin updates (#5979) 2025-08-18 13:25:23 +02:00
Hayden
4f33c3a44f chore(l10n): New Crowdin updates (#5965) 2025-08-17 07:52:13 +00:00
github-actions[bot]
394c271294 chore: automatic locale sync (#5969)
Co-authored-by: GitHub Action <action@github.com>
2025-08-17 07:13:48 +00:00
renovate[bot]
cb3eb59501 chore(deps): update dependency coverage to v7.10.4 (#5967)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 09:02:55 +02:00
Mario Džoić
c41a4a52ed fix: error when trying to change recipe image (#5771)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-16 08:41:46 +00:00
Michael Genson
6cbc308d83 fix: Add Recipe From Another Household To Shopping List (#5892) 2025-08-16 08:05:50 +00:00
Hayden
db765b0693 chore(l10n): New Crowdin updates (#5964) 2025-08-16 09:55:13 +02:00
renovate[bot]
184262df17 chore(deps): update dependency mkdocs-material to v9.6.17 (#5962)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 19:10:34 +00:00
renovate[bot]
df10cf8211 fix(deps): update dependency ingredient-parser-nlp to v2.2.0 (#5963)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 18:58:47 +00:00
Hristo Kapanakov
c91d216fe9 feat: Allow using OIDC auth cache instead of session (#5746)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-15 09:43:29 +00:00
Michael Genson
1c23d855ae fix: Remove Recipes From Cookbook API (#5899) 2025-08-15 08:44:45 +00:00
Hayden
fd966e5843 chore(l10n): New Crowdin updates (#5958) 2025-08-15 00:01:31 +00:00
renovate[bot]
f9f1285cb3 chore(deps): update dependency ruff to v0.12.9 (#5956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 12:39:52 -05:00
renovate[bot]
dbf1202f69 chore(deps): update node.js to 572a90d (#5955)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 12:21:14 -05:00
renovate[bot]
b3f12ee7ac fix(deps): update dependency orjson to v3.11.2 (#5941)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 15:39:50 +00:00
renovate[bot]
556dc699c7 chore(deps): update node.js to 08535d6 (#5952)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 10:27:47 -05:00
Michael Genson
481ce92d84 fix: CONTAINS ALL doesn't contain all (#5900) 2025-08-14 12:21:40 +00:00
Michael Genson
1df26aeb99 fix: Add Hint Text To Apprise URL (#5895) 2025-08-14 12:10:44 +00:00
Hayden
5c4694c3d8 chore(l10n): New Crowdin updates (#5953) 2025-08-14 11:50:10 +00:00
Michael Genson
9b2b8091ac fix: Auto Form Select (#5919)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-14 11:24:21 +00:00
Michael Genson
ad60b4445b fix: User Registration Form Validation and Other Setup Wizard Things (#5920) 2025-08-14 07:26:24 +00:00
Hayden
040fb48807 chore(l10n): New Crowdin updates (#5943)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-14 05:44:38 +00:00
Michael Genson
f8ce5b3afb feat: Pin Docker Digest And Add to Renovate (#5949) 2025-08-14 05:33:46 +00:00
Michael Genson
31530a68e1 feat: Remove Not-Sort-By-Label and Refactor Shopping List Page (#5866)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-14 07:23:11 +02:00
Denis Danilov
51ca65e3c3 fix: change libldap-2.5 to libldap2 in docker (#5946) 2025-08-13 21:57:28 +00:00
renovate[bot]
19eae21b00 fix(deps): update dependency openai to v1.99.9 (#5939)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-13 16:20:42 +02:00
renovate[bot]
34e4480f08 fix(deps): update dependency tzdata to v2025 (#5942)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-12 18:11:02 +00:00
Hayden
ad875c8fd5 chore(l10n): New Crowdin updates (#5938) 2025-08-12 11:44:55 +02:00
renovate[bot]
6ec7baa2f1 fix(deps): update dependency openai to v1.99.8 (#5935)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-11 19:24:08 -05:00
Hayden
f39929a905 chore(l10n): New Crowdin updates (#5936) 2025-08-11 21:39:08 +00:00
Ross
4b69e5b33a feat: Button to select recipe cover image when creating recipe from multiple images (#5647)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
Co-authored-by: Kuchenpirat <jojow@gmx.net>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-11 21:17:28 +00:00
renovate[bot]
4c2b559e73 chore(deps): update dependency coverage to v7.10.3 (#5932)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-11 19:19:24 +00:00
renovate[bot]
178e038c79 fix(deps): update dependency sqlalchemy to v2.0.43 (#5934)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-11 19:07:20 +00:00
Skye Samuels
0b3fe2c8da fix: add confidence calculation for BruteForceParser (#5903)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-11 18:56:35 +00:00
renovate[bot]
d4e62c5ab6 fix(deps): update dependency openai to v1.99.7 (#5924)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-11 18:40:48 +00:00
Hayden
0f591fd273 chore(l10n): New Crowdin updates (#5926) 2025-08-11 18:30:08 +00:00
renovate[bot]
d271252ecc fix(deps): update dependency recipe-scrapers to v15.9.0 (#5925) 2025-08-11 13:18:48 -05:00
github-actions[bot]
4d211e236d chore: automatic locale sync (#5929) 2025-08-11 17:36:43 +00:00
github-actions[bot]
7926812136 chore(auto): Update pre-commit hooks (#5933)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-08-11 16:39:36 +00:00
Richard vL
f37d8e488f fix: Added copy icons to first-login message (#5716)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-11 16:27:10 +00:00
renovate[bot]
56df696546 chore(deps): update dependency pre-commit to v4.3.0 (#5928) 2025-08-10 01:54:37 +00:00
Craig Matear
d3436a5ca8 feat: Add label notifier (#5879)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-10 01:43:23 +00:00
renovate[bot]
9e46c57e78 chore(deps): update dependency pylint to v3.3.8 (#5923)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-09 16:17:43 +00:00
renovate[bot]
79b6be8550 chore(deps): update dependency freezegun to v1.5.5 (#5922)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-09 11:01:23 -05:00
Hayden
bd9e654de7 chore(l10n): New Crowdin updates (#5918)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-08 17:50:48 +00:00
renovate[bot]
f149bcc98f fix(deps): update dependency openai to v1.99.5 (#5917) 2025-08-08 17:15:06 +00:00
Hayden
0095cc7153 chore(l10n): New Crowdin updates (#5915) 2025-08-08 08:28:00 +02:00
renovate[bot]
f276ecd96e fix(deps): update dependency openai to v1.99.3 (#5914)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-07 21:58:57 +00:00
renovate[bot]
87bfdb633b chore(deps): update dependency ruff to v0.12.8 (#5913)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-07 16:47:05 -05:00
Hayden
e47f386643 chore(l10n): New Crowdin updates (#5912) 2025-08-07 21:30:31 +00:00
renovate[bot]
5c9fd22f11 chore(deps): update dependency coverage to v7.10.2 (#5887)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-07 17:18:44 +00:00
renovate[bot]
30ee276e52 fix(deps): update dependency pillow-heif to v1.1.0 (#5870)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-07 12:07:04 -05:00
Patrick Lehner (he/him)
50c8e9be79 feat: Move create-item button in shopping list to the top (#5687)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-08-07 15:47:21 +00:00
Hayden
c4fdcec85f chore(l10n): New Crowdin updates (#5908) 2025-08-07 08:49:42 +02:00
renovate[bot]
f7b32debbb fix(deps): update dependency openai to v1.99.1 (#5901)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-06 15:02:11 +00:00
Hayden
1f1cc10f21 chore(l10n): New Crowdin updates (#5904) 2025-08-06 16:50:43 +02:00
Will Ratner
2ae3427a59 fix: correct JPEG media type in get_image_url to prevent API errors (#5897)
Co-authored-by: Will Ratner <will@ratner.tech>
2025-08-05 16:12:42 +00:00
Hayden
357f843df5 chore(l10n): New Crowdin updates (#5896) 2025-08-05 09:04:54 +02:00
lucasfijen
3973fe99a1 docs: Fix broken postgres docker-compose example (#5894) 2025-08-04 14:21:42 -05:00
github-actions[bot]
8d51c14d24 chore(auto): Update pre-commit hooks (#5889)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-08-04 11:09:10 +00:00
Hayden
f2af8a0bc1 chore(l10n): New Crowdin updates (#5890) 2025-08-04 12:58:44 +02:00
Hayden
c130e8e92d chore(l10n): New Crowdin updates (#5884) 2025-08-03 22:50:17 +02:00
github-actions[bot]
ea099a743b chore: automatic locale sync (#5881)
Co-authored-by: GitHub Action <action@github.com>
2025-08-03 11:02:19 +00:00
Hayden
d21e685219 chore(l10n): New Crowdin updates (#5882) 2025-08-03 12:27:59 +02:00
renovate[bot]
04d0144369 fix(deps): update dependency apprise to v1.9.4 (#5878)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-02 20:02:48 +00:00
Hayden
8a8580e83c chore(l10n): New Crowdin updates (#5877) 2025-08-02 19:51:01 +00:00
Hayden
6b6c167153 chore(l10n): New Crowdin updates (#5869) 2025-08-02 07:37:58 +00:00
Hayden
e1c4a703a2 chore(l10n): New Crowdin updates (#5867) 2025-08-01 19:35:27 +00:00
Felix Schneider
591c96e52b chore: update references to GitHub repository (#5861) 2025-08-01 08:43:57 +00:00
Hayden
b157c7034f chore(l10n): New Crowdin updates (#5862) 2025-08-01 10:32:26 +02:00
Michael Genson
245ca5fe3b feat: Remove "Is Food" and "Disable Amounts" Flags (#5684)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-31 17:36:24 +02:00
Kuchenpirat
efc0d31724 fix: tags & tools edit confirm (#5860)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-07-31 15:06:59 +00:00
renovate[bot]
4b7f7b4b8a chore(deps): update dependency freezegun to v1.5.4 (#5853)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-31 16:07:14 +02:00
renovate[bot]
7aee575352 chore(deps): update dependency mypy to v1.17.1 (#5856)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-31 15:00:16 +02:00
Hayden
2ef5b0d389 chore(l10n): New Crowdin updates (#5855) 2025-07-31 08:55:26 +02:00
Hayden
387a12cf1a chore(l10n): New Crowdin updates (#5854) 2025-07-30 14:11:38 -05:00
Kuchenpirat
f26e74f0f2 chore: script setup #3 - recipe components (#5849) 2025-07-30 18:37:02 +00:00
renovate[bot]
f2b6512eb1 fix(deps): update dependency openai to v1.98.0 (#5852)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-30 19:29:44 +02:00
Hayden
93f3762016 chore(l10n): New Crowdin updates (#5847) 2025-07-30 09:41:00 +02:00
Kuchenpirat
620465f14c fix: script setup #2 and some fixes (#5845) 2025-07-30 00:05:26 +00:00
renovate[bot]
a132b83f1b chore(deps): update dependency ruff to v0.12.7 (#5843)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-29 22:58:02 +00:00
Mario Džoić
5f522b5324 fix: allow admin users to delete other household recipes (#5767)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-07-30 00:46:23 +02:00
renovate[bot]
bd0aed06ce chore(deps): update dependency ruff to v0.12.6 (#5840)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-30 00:12:47 +02:00
Michael Genson
f9f88fb8a4 fix: Nuxt 3 Ingredient Parsing Issues and Tooltip Positions (#5829)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-29 21:53:33 +00:00
Kuchenpirat
eefe613aaf fix: QueryFilter Hydration & script setup (#5839) 2025-07-29 21:43:13 +00:00
Michael Genson
d6d247f1f8 fix: Missing Yield Text (#5827) 2025-07-29 20:33:44 +00:00
Michael Genson
3b74ddd9ad fix: Delete Group From Admin Page (#5837) 2025-07-29 18:53:52 +00:00
Hayden
eec4eeb76a chore(l10n): New Crowdin updates (#5838) 2025-07-29 20:42:51 +02:00
renovate[bot]
73a9e470c3 fix(deps): update dependency sqlalchemy to v2.0.42 (#5836)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-29 12:53:53 -05:00
Sebastian Frysztak
b578d8d4f7 fix: remove v-lazy from RecipeCard (#5835) 2025-07-29 11:28:03 -05:00
Michael Genson
7a43546eeb fix: Data Management Headers (#5830) 2025-07-29 09:05:46 +00:00
Hayden
e7c310934d chore(l10n): New Crowdin updates (#5831) 2025-07-29 10:55:03 +02:00
Hayden
07d5928f18 chore(l10n): New Crowdin updates (#5828) 2025-07-28 20:17:45 +02:00
Michael Genson
fa5bc17ed8 fix: Manual Serving Edits (#5813) 2025-07-28 17:54:59 +02:00
Mario Džoić
f8cb80ed7f fix: make only checkbox reactive (#5739)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-28 13:09:00 +00:00
Felix Schneider
066cd13e13 fix: Reduce margin in RecipePageInstructions (#5783)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-28 12:44:09 +00:00
Michael Genson
a087760d53 fix: Optimize Recipe Timeline Requests (#5811) 2025-07-28 11:25:49 +00:00
Michael Genson
675ac9c32b fix: Make Sure Test Webhook Always Fires (#5816)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-28 08:12:30 +00:00
Michael Genson
d7191983bd fix: JSON Editor Breaks On Invalid JSON (#5814)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-28 07:50:50 +00:00
renovate[bot]
14b3fd524f chore(deps): update dependency coverage to v7.10.1 (#5821)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-28 09:39:32 +02:00
github-actions[bot]
38ed0d0532 chore: automatic locale sync (#5815)
Co-authored-by: GitHub Action <action@github.com>
2025-07-28 07:28:24 +00:00
github-actions[bot]
3b48f73b91 chore(auto): Update pre-commit hooks (#5825)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-28 07:17:03 +00:00
Hayden
ae7e7942e3 chore(l10n): New Crowdin updates (#5817) 2025-07-28 09:07:03 +02:00
Felix Schneider
ec1eddc06d fix: add confirm button to bulk delete of tags (#5785)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-27 03:04:41 +02:00
Hayden
2781771f6b chore(l10n): New Crowdin updates (#5809) 2025-07-26 17:22:36 +00:00
renovate[bot]
9b35a2f904 chore(deps): update dependency mkdocs-material to v9.6.16 (#5808)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 17:11:02 +00:00
renovate[bot]
a323350915 fix(deps): update dependency orjson to v3.11.1 (#5802)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 16:59:04 +00:00
renovate[bot]
9b94cfdd24 chore(deps): update dependency rich to v14.1.0 (#5800)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 11:46:15 -05:00
Hayden
2818ff56ee chore(l10n): New Crowdin updates (#5805) 2025-07-26 16:31:54 +00:00
renovate[bot]
d728df7d40 chore(deps): update dependency coverage to v7.10.0 (#5796)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 11:21:06 -05:00
Hayden
a531eb649e chore(l10n): New Crowdin updates (#5804) 2025-07-25 18:46:56 +02:00
Michael Genson
fb4aa2b713 fix: Better UX and Error Handling For Adding Timeline Events (#5798) 2025-07-25 12:18:10 +00:00
renovate[bot]
0df9d4b958 chore(deps): update dependency ruff to v0.12.5 (#5795)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 14:03:10 +02:00
Felix Schneider
99523c70ed fix: send the correct value for recipe scale and ensure the body is sent correctly (#5737) 2025-07-25 11:42:17 +00:00
Hayden
5c7a4fb861 chore(l10n): New Crowdin updates (#5794) 2025-07-25 12:22:29 +02:00
Hayden
436a24f8b2 chore(l10n): New Crowdin updates (#5792) 2025-07-24 09:34:34 +02:00
Hayden
93534de638 chore(l10n): New Crowdin updates (#5787) 2025-07-22 22:52:21 -05:00
renovate[bot]
f29a11d20e fix(deps): update dependency openai to v1.97.1 (#5781)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-22 14:47:52 +00:00
Hayden
880bd91f4a chore(l10n): New Crowdin updates (#5780) 2025-07-22 16:36:05 +02:00
Hayden
8e68782ff6 chore(l10n): New Crowdin updates (#5775) 2025-07-21 22:46:59 -05:00
Mario Džoić
c1e5937ff3 fix: cookbook random recipe selector (#5768) 2025-07-21 15:02:36 +00:00
Hayden
6d1e39f871 chore(l10n): New Crowdin updates (#5770) 2025-07-21 14:12:38 +00:00
github-actions[bot]
5b92e969dc docs(auto): Update image tag, for release v3.0.2 (#5769)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-21 14:02:45 +00:00
github-actions[bot]
992a74499d chore(auto): Update pre-commit hooks (#5765)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-21 15:52:31 +02:00
github-actions[bot]
4744e6371a chore: automatic locale sync (#5766)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-21 08:44:33 +00:00
Michael Genson
00a03559ff fix: RTL Settings Ignored (#5762) 2025-07-21 07:51:28 +00:00
Hayden
a1a45078fb chore(l10n): New Crowdin updates (#5764) 2025-07-21 09:39:25 +02:00
Felix Schneider
88d0b466ce fix: style of recipe actions to be compliant with design schema (#5736) 2025-07-20 18:05:56 +02:00
Kuchenpirat
e638df37d1 fix: multiple regressions on data management page (#5758) 2025-07-20 15:06:39 +00:00
renovate[bot]
44b180f5c0 fix(deps): update dependency authlib to v1.6.1 (#5757)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-20 09:49:20 -05:00
Hayden
3feb11d138 chore(l10n): New Crowdin updates (#5759) 2025-07-20 14:03:15 +00:00
github-actions[bot]
41633be864 chore: automatic locale sync (#5756)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-20 09:45:39 +00:00
Hayden
ce8fa2194b chore(l10n): New Crowdin updates (#5755) 2025-07-20 09:35:33 +00:00
Michael Genson
7d1c5ad14b fix: Patch XSS Vulnerability (#5754) 2025-07-19 20:45:33 -05:00
renovate[bot]
6274a3dd39 fix(deps): update dependency orjson to v3.11.0 (#5727)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-19 15:04:20 -05:00
renovate[bot]
a1e8e1aa20 chore(deps): update dependency pytest-asyncio to v1.1.0 (#5730)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-19 12:34:22 -05:00
renovate[bot]
b4aff0d8e9 fix(deps): update dependency openai to v1.97.0 (#5726)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-19 17:17:48 +00:00
renovate[bot]
e07df8fc43 chore(deps): update dependency mypy to v1.17.0 (#5718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-19 17:05:44 +00:00
renovate[bot]
9413e403b4 fix(deps): update dependency alembic to v1.16.4 (#5661)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-19 16:54:04 +00:00
renovate[bot]
6eab88d44c fix(deps): update dependency fastapi to ^0.116.0 (#5654)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-19 16:42:18 +00:00
renovate[bot]
754878eb63 chore(deps): update dependency coverage to v7.9.2 (#5622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-19 11:26:37 -05:00
Hayden
c65456c646 chore(l10n): New Crowdin updates (#5750) 2025-07-19 15:58:43 +02:00
Hayden
dd55d23a37 chore(l10n): New Crowdin updates (#5749) 2025-07-19 09:04:57 +02:00
Michael Genson
aafed68964 fix: Mealplan Regressions (#5748) 2025-07-18 22:24:59 +00:00
Jason Frank
108ac40b22 fix: Update admin_backups.py to handle API backup file uploads correctly. (#5715)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-07-18 22:14:33 +00:00
renovate[bot]
d2e9c04af1 chore(deps): update dependency ruff to v0.12.4 (#5743)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-18 16:58:10 -05:00
Mario Džoić
3a1f58037d fix: meal planner date range is correctly set (#5725)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-07-18 14:40:35 -05:00
Hayden
2731fb4a01 chore(l10n): New Crowdin updates (#5744) 2025-07-18 13:21:23 +00:00
Hayden
769db7202d chore(l10n): New Crowdin updates (#5728) 2025-07-18 11:06:11 +02:00
Hayden
644e871ec1 chore(l10n): New Crowdin updates (#5722) 2025-07-15 12:43:15 +02:00
Hayden
8987faa4f6 chore(l10n): New Crowdin updates (#5717) 2025-07-15 06:21:46 +02:00
Hayden
c237b33126 chore(l10n): New Crowdin updates (#5714) 2025-07-14 14:34:56 +02:00
github-actions[bot]
7098b67784 chore(auto): Update pre-commit hooks (#5713)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-07-14 09:10:51 +00:00
renovate[bot]
2d21d00651 fix(deps): update dependency openai to v1.95.1 (#5683)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 11:00:06 +02:00
Hayden
198d5e4e06 chore(l10n): New Crowdin updates (#5710) 2025-07-13 21:39:56 +00:00
github-actions[bot]
98fc333df3 docs(auto): Update image tag, for release v3.0.1 (#5708)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-13 15:04:56 +00:00
renovate[bot]
c0fb27f979 chore(deps): update dependency freezegun to v1.5.3 (#5702)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-13 16:54:11 +02:00
github-actions[bot]
9ec1599427 chore: automatic locale sync (#5705)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-13 14:36:47 +00:00
Kuchenpirat
9cfc54b1f5 fix: user & household creation (#5699) 2025-07-13 13:57:28 +00:00
Hayden
40d2ac9a6b chore(l10n): New Crowdin updates (#5706) 2025-07-13 12:05:51 +02:00
Hayden
44db525049 chore(l10n): New Crowdin updates (#5701) 2025-07-12 21:41:46 +00:00
Kuchenpirat
d737cb3e14 fix: set correct github tag in init py (#5693) 2025-07-12 08:54:14 -05:00
Hayden
1034d87a99 chore(l10n): New Crowdin updates (#5691) 2025-07-12 12:30:57 +02:00
Kuchenpirat
1243e6804c fix: crud table bulk actions (#5686) 2025-07-12 00:47:54 +00:00
Hayden
8b9e80358b chore(l10n): New Crowdin updates (#5682) 2025-07-11 21:18:48 +00:00
github-actions[bot]
2bae6e9d02 docs(auto): Update image tag, for release v3.0.0 (#5675)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-11 22:38:46 +02:00
renovate[bot]
6b98a7cd74 fix(deps): update dependency openai to v1.95.0 (#5671)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 19:22:03 +02:00
github-actions[bot]
e0238eb3a2 chore: automatic locale sync (#5674)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-11 18:04:36 +02:00
renovate[bot]
5adb7662c4 chore(deps): update dependency ruff to v0.12.3 (#5673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 17:26:37 +02:00
Hayden
4e6a7a09ff chore(l10n): New Crowdin updates (#5672) 2025-07-11 11:28:35 +02:00
renovate[bot]
719c7c9f6b fix(deps): update dependency openai to v1.94.0 (#5667)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 23:46:09 +02:00
Michael Genson
7331007f30 fix: Restore Servings To Print View (#5669) 2025-07-10 17:30:33 +00:00
Michael Genson
ea329a6b71 fix: Remove Padding On Print (#5668)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-10 17:12:41 +00:00
Michael Genson
e1a04ba673 fix: Recipe Timeline Not Filtering (#5666) 2025-07-10 16:57:20 +00:00
Michael Genson
63a4d4c801 fix: Preserve "Completed On" Date In Checked Shopping List Items (#5665) 2025-07-10 16:41:34 +00:00
Hayden
5cf3e2565a chore(l10n): New Crowdin updates (#5664) 2025-07-10 08:39:53 +00:00
renovate[bot]
9e1fe618ba fix(deps): update dependency openai to v1.93.3 (#5663)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 10:15:17 +02:00
renovate[bot]
691300e481 fix(deps): update dependency openai to v1.93.2 (#5660)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-09 12:55:56 +02:00
Michael Genson
939588f54c chore: Fix Dockerfile "AS" Case (#5662)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-08 22:31:06 +00:00
Arsène Reymond
2d8f491666 feat: Replace google-fonts module with nuxt/fonts (#5618)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-07-08 22:07:18 +00:00
Joey
50754ad012 fix: Remove redundant get_one call in patch_one method (#5619) 2025-07-08 21:56:59 +00:00
Kuchenpirat
04eca1b992 fix: nutrition info visuals (#5659) 2025-07-08 17:23:41 +00:00
Michael Genson
aad7dc1abd fix: Refactor Stores and Fix Missing Public Cookbooks (#5611)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-08 13:32:18 +00:00
renovate[bot]
2f19d31d1b fix(deps): update dependency openai to v1.93.1 (#5655)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-08 12:44:42 +02:00
Michael Genson
095b92c29a chore: Upgrade Pillow HEIF (#5657) 2025-07-08 12:08:04 +02:00
Hayden
49c704a4b1 chore(l10n): New Crowdin updates (#5656) 2025-07-07 22:50:44 +02:00
renovate[bot]
c15a4f786b fix(deps): update dependency typing-extensions to v4.14.1 (#5629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-07 17:56:10 +02:00
Hayden
6e33878e4f chore(l10n): New Crowdin updates (#5653) 2025-07-07 16:26:42 +02:00
github-actions[bot]
5ca004802d chore(auto): Update pre-commit hooks (#5652)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-07 07:58:08 +00:00
Arsène Reymond
68115cbf2f fix: AppButtonCopy errors in tooltip & console (#5612)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-07 09:32:34 +02:00
github-actions[bot]
2b4bc8a662 chore: automatic locale sync (#5642)
Co-authored-by: GitHub Action <action@github.com>
2025-07-06 22:08:03 +00:00
Hayden
fc801c9da4 chore(l10n): New Crowdin updates (#5643)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-07-06 21:57:36 +00:00
Kuchenpirat
f99b305dc3 fix: lint error from locale sync (#5644) 2025-07-06 16:20:43 -05:00
renovate[bot]
b0b3d7e5e5 fix(deps): update dependency tzdata to v2025 (#5624)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-06 00:51:49 +00:00
github-actions[bot]
eedd2204a6 chore: automatic locale sync (#5639)
Co-authored-by: GitHub Action <action@github.com>
2025-07-05 21:47:51 +00:00
Hayden
1ccc67774a chore(l10n): New Crowdin updates (#5641) 2025-07-05 16:35:15 -05:00
Hayden
6d98041ec8 chore(l10n): New Crowdin updates (#5640) 2025-07-05 09:12:51 +02:00
Hayden
c24cfb8096 chore(l10n): New Crowdin updates (#5632) 2025-07-05 01:59:52 +00:00
Kuchenpirat
ca41bc8d5c fix: 500 error on recipe share link (#5627) 2025-07-05 01:37:42 +00:00
Hayden
da3271f33f chore: remove unused jinja export option (#5631) 2025-07-05 00:45:56 +00:00
Hayden
50a986f331 fix: workflow branch target/base (#5637) 2025-07-04 19:34:44 -05:00
Hayden
f72ebed0dc fix: workflow permissions (#5636) 2025-07-04 19:19:25 -05:00
Hayden
0c534ad9d4 fix: load from env if available vs file (#5635) 2025-07-04 19:08:50 -05:00
Hayden
9cce0f65aa chore: automatic crowdin sync via gh actions (#5630) 2025-07-04 19:00:23 -05:00
Hayden
c9e22892a6 fix: truncate slugs when too long (#5633) 2025-07-04 15:43:53 -05:00
Cameronwyatt
e794c6b525 feat: Update food seeding logic to use new format, now with removed CrowdIn limits? (#5514)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2025-07-04 12:50:13 -05:00
renovate[bot]
abc37f258d chore(deps): update dependency ruff to v0.12.2 (#5625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-03 20:15:26 +00:00
renovate[bot]
c2fda0d85a fix(deps): update dependency uvicorn to ^0.35.0 (#5598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 12:53:22 -05:00
renovate[bot]
437a6ae526 fix(deps): update dependency tzdata to v2025 (#5534)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 04:41:17 +00:00
renovate[bot]
9f5de0bd5d fix(deps): update dependency lxml to v6 (#5585)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-01 22:17:52 -05:00
renovate[bot]
4bf963b14c fix(deps): update dependency fastapi to v0.115.14 (#5581)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-01 22:27:58 +00:00
renovate[bot]
7092d85a53 chore(deps): update dependency mkdocs-material to v9.6.15 (#5613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-01 17:15:53 -05:00
renovate[bot]
83fd320920 fix(deps): update dependency pillow to v11.3.0 [security] (#5615)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-01 16:52:54 -05:00
Kuchenpirat
28e2666c17 fix: remove unused deps (#5610) 2025-06-30 16:19:45 +00:00
Kuchenpirat
62c7e2d2fb fix: recipe timeline visuals (nuxt 3) (#5608) 2025-06-30 15:25:32 +00:00
Kuchenpirat
6540bfacfe fix: recipe page warnings (#5609) 2025-06-30 15:10:39 +00:00
Michael Genson
47eb1ebbb1 feat: Consolidate Admin User APIs (#5050)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-06-30 10:13:42 +00:00
github-actions[bot]
31f90c79c0 chore(auto): Update pre-commit hooks (#5605)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-06-30 07:19:52 +00:00
renovate[bot]
3b1edf67fc fix(deps): update dependency openai to v1.93.0 (#5591)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 09:09:35 +02:00
Joey
781bbecc7b fix: check for OPENAI_MODEL in OPENAI_FEATURE (#5603) 2025-06-29 15:38:34 -05:00
Kuchenpirat
15f06b5378 feat: new create from image visuals (#5595) 2025-06-29 13:17:49 -05:00
Ross
95fa0af28a feat: create recipe from multiple images (#5590)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
Co-authored-by: Kuchenpirat <jojow@gmx.net>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-06-28 20:11:12 +00:00
Arsène Reymond
084f99b0de fix: Nuxt3 upgrades UI fixes & improvements (#5589) 2025-06-28 15:59:58 +02:00
Joey
2fb5dac966 fix: typo in app_settings_constructor docstring (#5592)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-06-28 01:49:07 +00:00
renovate[bot]
51ec02bdb2 fix(deps): update dependency pydantic-settings to v2.10.1 (#5559) 2025-06-27 09:00:21 -05:00
Kuchenpirat
1a1fe0a442 fix: get recipe image by url (#5588) 2025-06-27 08:39:47 -05:00
renovate[bot]
b0b88d361f fix(deps): update dependency openai to v1.92.2 (#5584)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-27 09:07:58 +02:00
renovate[bot]
b4a9c472e5 chore(deps): update dependency ruff to v0.12.1 (#5587) 2025-06-26 23:26:30 -05:00
Kuchenpirat
bcc038091a docs: remove duplicate headline (#5558) 2025-06-26 20:21:59 +00:00
Kuchenpirat
9e0db03f8c fix: recipe image creation (#5579)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-06-26 20:12:27 +00:00
Kuchenpirat
af274bf476 fix: markdown list padding and replace nuxtjs/mdc (#5577) 2025-06-26 14:58:31 -05:00
github-actions[bot]
ca9d5677b8 chore(auto): Update pre-commit hooks (#5564)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-06-24 12:30:47 +00:00
renovate[bot]
07483a13ff fix(deps): update dependency python-dotenv to v1.1.1 (#5571)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-24 14:20:17 +02:00
renovate[bot]
d412271b0b fix(deps): update dependency openai to v1.91.0 (#5567)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-24 07:58:42 +00:00
Michael Genson
cea3ddc883 chore(deps): update dependency ruff to ^0.12.0 (#5568)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-06-24 09:46:49 +02:00
Michael Genson
c965d12bf1 fix: Cookbooks not rendering on sidebar (#5570) 2025-06-24 09:36:40 +02:00
Kuchenpirat
181aebf424 fix: register create group flow (#5565) 2025-06-23 09:20:50 -05:00
Kuchenpirat
b77ff9c341 fix: mealplanner day title card height & alignment (#5561) 2025-06-22 20:44:13 +00:00
Kuchenpirat
93cec24f26 fix: delete recipe instructions after nuxt 3 upgrade (#5560) 2025-06-22 15:34:25 -05:00
Kuchenpirat
a2a0ad1af0 fix: pwa share target (#5557) 2025-06-21 10:17:48 -05:00
renovate[bot]
969a3c9005 chore(deps): update dependency pytest to v8.4.1 (#5542)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-21 07:35:14 +00:00
renovate[bot]
a09601f051 fix(deps): update dependency openai to v1.90.0 (#5555)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-21 09:23:40 +02:00
Kuchenpirat
d6110f1a94 fix: passwort strength indicator (#5553) 2025-06-20 16:39:08 +00:00
Michael Genson
1562437b98 fix: Remove "Ingredients" From OpenAI Prompt For Instructions (#5546) 2025-06-20 16:28:46 +00:00
Kuchenpirat
e2eb754cf2 fix: pwa not being installable after nuxt 3 upgrade (#5552) 2025-06-20 11:04:45 -05:00
Kuchenpirat
3a4222c6c1 fix: shopping list button in one row (#5547) 2025-06-20 09:59:13 +00:00
Michael Genson
2673834a9f fix: Various Nuxt Upgrade Issues (#5545) 2025-06-20 19:42:12 +10:00
Hoa (Kyle) Trinh
c24d532608 feat: Migrate to Nuxt 3 framework (#5184)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-06-19 17:09:12 +00:00
renovate[bot]
89ab7fac25 fix(deps): update dependency alembic to v1.16.2 (#5535)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 20:09:25 +00:00
Felix Schneider
78b55c0b98 feat: add the selected recipe servings and yields in the content of the recipe post action (#5340)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-06-18 14:57:51 -05:00
Craig Matear
ac984a2d04 fix: #5511, list item state doesn't change when offline (#5512)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-06-17 18:41:35 +00:00
renovate[bot]
079cfe7fe0 fix(deps): update dependency openai to v1.88.0 (#5536)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-17 13:29:19 -05:00
renovate[bot]
4a9095fcbb chore(deps): update dependency coverage to v7.9.1 (#5523)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-17 13:11:55 -05:00
renovate[bot]
384bb7480f fix(deps): update dependency fastapi to v0.115.13 (#5538) 2025-06-17 10:46:27 -05:00
Sravan Kumar
69488bd6df fix: Fixing the OpenAPI Spec and the Call to delete a shared recipe. (#5537) 2025-06-17 14:05:17 +00:00
renovate[bot]
038fbd38ef fix(deps): update dependency pydantic to v2.11.7 (#5527)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-16 17:08:11 +00:00
renovate[bot]
1697d6299e chore(deps): update dependency mypy to v1.16.1 (#5533)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-16 11:57:07 -05:00
Ceri Loosley
b87edc823a fix: handle recipe-scraper returning a int causing clean_time to return None (#5522) 2025-06-12 17:34:24 +00:00
renovate[bot]
cacb197aa8 fix(deps): update dependency requests to v2.32.4 [security] (#5519)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-11 12:24:06 +00:00
renovate[bot]
5d58c93331 fix(deps): update dependency openai to v1.86.0 (#5520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-11 14:12:29 +02:00
renovate[bot]
104c9b36a5 fix(deps): update dependency openai to v1.85.0 (#5518)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 20:02:48 +00:00
github-actions[bot]
b68c96c348 chore(auto): Update pre-commit hooks (#5515)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-06-09 08:07:44 +00:00
renovate[bot]
b577cf5520 chore(deps): update dependency ruff to v0.11.13 (#5510)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 09:56:53 +02:00
Hayden
431638c1ed chore(l10n): New Crowdin updates (#5507) 2025-06-04 14:55:36 +02:00
renovate[bot]
a4871b65eb fix(deps): update dependency recipe-scrapers to v15.8.0 (#5506)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 20:48:20 -05:00
renovate[bot]
582974b265 fix(deps): update dependency openai to v1.84.0 (#5505) 2025-06-03 16:05:25 -05:00
renovate[bot]
22fdb32f61 fix(deps): update dependency openai to v1.83.0 (#5503)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-02 16:33:22 -05:00
renovate[bot]
649013a028 chore(deps): update dependency pytest to v8.4.0 (#5502)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-02 13:57:21 -05:00
Hayden
14de1410ae chore(l10n): New Crowdin updates (#5501) 2025-06-02 18:45:07 +00:00
Hayden
03bc87d3a8 chore(l10n): New Crowdin updates (#5500) 2025-06-02 17:39:42 +00:00
renovate[bot]
bb7885543e fix(deps): update dependency typing-extensions to v4.14.0 (#5499)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-02 15:12:55 +00:00
renovate[bot]
404a4cfa9d fix(deps): update dependency uvicorn to v0.34.3 (#5495)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-02 15:01:42 +00:00
github-actions[bot]
63a5c0076a chore(auto): Update pre-commit hooks (#5497)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-06-02 14:51:07 +00:00
Michael Genson
a4ea5ba10d chore: Relax Stalebot (#5498) 2025-06-02 09:41:06 -05:00
Hayden
fc6b239343 chore(l10n): New Crowdin updates (#5491) 2025-05-31 14:48:53 +02:00
renovate[bot]
9185cd8df1 fix(deps): update dependency openai to v1.82.1 (#5488)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-29 21:51:05 +00:00
renovate[bot]
f0a9d5333d chore(deps): update dependency mypy to v1.16.0 (#5487)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-05-29 16:39:38 -05:00
Hayden
7bb84d504a chore(l10n): New Crowdin updates (#5485) 2025-05-29 20:14:27 +00:00
renovate[bot]
dad2712fe9 chore(deps): update dependency ruff to v0.11.12 (#5486)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-29 20:03:13 +00:00
SurfBurger
8e7e3e21ed feat: remove unnecessary UI components if allowPasswordLogin is true (#5484) 2025-05-29 14:52:44 -05:00
Chris Danis
af3057951d feat: setting to hide password login (#4943)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-05-27 19:49:06 +00:00
github-actions[bot]
2f3ef738c4 chore(auto): Update pre-commit hooks (#5474)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-05-26 15:54:21 +00:00
renovate[bot]
44ee1440e2 chore(deps): update dependency pytest-asyncio to v1 (#5473)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-26 10:44:02 -05:00
Hayden
c4aaf1a8c3 chore(l10n): New Crowdin updates (#5471) 2025-05-24 16:42:12 +00:00
renovate[bot]
e093a93189 chore(deps): update dependency freezegun to v1.5.2 (#5472)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-24 11:31:46 -05:00
renovate[bot]
51c92a1e35 chore(deps): update dependency coverage to v7.8.2 (#5470)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-23 14:48:52 -05:00
renovate[bot]
84629c540e fix(deps): update dependency authlib to v1.6.0 (#5469)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-23 14:15:39 -05:00
renovate[bot]
28b3ba6506 fix(deps): update dependency pydantic to v2.11.5 (#5468)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-23 14:00:52 -05:00
renovate[bot]
a6ce140e60 fix(deps): update dependency openai to v1.82.0 (#5467) 2025-05-23 11:49:08 -05:00
renovate[bot]
4784672113 chore(deps): update dependency ruff to v0.11.11 (#5466)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-23 09:04:22 -05:00
renovate[bot]
9db31ca125 fix(deps): update dependency alembic to v1.16.1 (#5464)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-22 16:11:12 +00:00
renovate[bot]
972b588250 chore(deps): update dependency coverage to v7.8.1 (#5462)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-22 10:59:41 -05:00
Hayden
57ae31d231 chore(l10n): New Crowdin updates (#5458) 2025-05-22 09:57:33 +00:00
renovate[bot]
7398b2784a fix(deps): update dependency openai to v1.81.0 (#5463)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-22 11:47:19 +02:00
oddlama
c13c0868ae docs: document necessity of forwarded-allow-ips with OIDC behind reverse-proxy https (#5461) 2025-05-21 19:15:14 +00:00
renovate[bot]
a652830a26 fix(deps): update dependency ingredient-parser-nlp to v2.1.1 (#5455)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-19 16:56:03 +00:00
github-actions[bot]
1f34571820 chore(auto): Update pre-commit hooks (#5457)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-05-19 16:45:48 +00:00
renovate[bot]
4e16273f00 fix(deps): update dependency sqlalchemy to v2.0.41 (#5445)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-19 11:35:07 -05:00
renovate[bot]
d110f21d37 chore(deps): update dependency ruff to v0.11.10 (#5447)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-18 16:39:01 +00:00
renovate[bot]
6caa74254f fix(deps): update dependency openai to v1.79.0 (#5450)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-18 18:27:45 +02:00
Hayden
66bc4c25ec chore(l10n): New Crowdin updates (#5446) 2025-05-17 14:51:11 -05:00
github-actions[bot]
89bed4d675 chore(auto): Update pre-commit hooks (#5438)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-05-14 15:17:15 +00:00
renovate[bot]
25fbdd6523 fix(deps): update dependency openai to v1.78.1 (#5441)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-14 17:06:55 +02:00
renovate[bot]
7e64ce2767 chore(deps): update dependency mkdocs-material to v9.6.14 (#5442)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-13 16:26:42 -05:00
renovate[bot]
62dabe2c18 chore(deps): update dependency mkdocs-material to v9.6.13 (#5435)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 04:52:17 +00:00
renovate[bot]
3742c4e86c chore(deps): update dependency ruff to v0.11.9 (#5434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 23:40:55 -05:00
Hayden
98da2cadc6 chore(l10n): New Crowdin updates (#5428) 2025-05-11 04:09:08 +00:00
renovate[bot]
8360829f61 fix(deps): update dependency openai to v1.78.0 (#5429)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 22:57:38 -05:00
renovate[bot]
aec38e367b chore(deps): update dependency pylint to v3.3.7 (#5416)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 16:57:12 -05:00
renovate[bot]
6ad7009509 fix(deps): update dependency pydantic to v2.11.4 (#5405)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 19:36:45 +00:00
renovate[bot]
46505ba8a5 fix(deps): update dependency orjson to v3.10.18 (#5403)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 14:21:05 -05:00
renovate[bot]
4011d6e29b fix(deps): update dependency ingredient-parser-nlp to v2.1.0 (#5373)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-09 21:43:59 +00:00
renovate[bot]
7ee7b753d6 fix(deps): update dependency tzdata to v2025 (#5365)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-09 16:29:46 -05:00
Hayden
c77f41d08e chore(l10n): New Crowdin updates (#5424) 2025-05-06 21:24:31 +02:00
renovate[bot]
ab7fa150fe chore(deps): update dependency ruff to v0.11.8 (#5410)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-06 09:16:52 +02:00
renovate[bot]
22fa5d27e3 fix(deps): update dependency openai to v1.77.0 (#5404)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 19:15:58 +02:00
github-actions[bot]
5f05002c20 chore(auto): Update pre-commit hooks (#5418)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-05-05 15:38:43 +00:00
Hayden
0cd33de2f6 chore(l10n): New Crowdin updates (#5407)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-05-05 17:29:07 +02:00
renovate[bot]
e46d19edfe fix(deps): update dependency recipe-scrapers to v15.7.1 (#5412)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-02 14:17:53 -05:00
github-actions[bot]
18ff3c3c48 chore(auto): Update pre-commit hooks (#5398)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-04-28 07:51:15 +00:00
Hayden
da1c9a448e chore(l10n): New Crowdin updates (#5396) 2025-04-28 09:40:19 +02:00
Hayden
58e1f71711 chore(l10n): New Crowdin updates (#5394) 2025-04-27 16:42:30 +00:00
Hayden
918899d346 chore(l10n): New Crowdin updates (#5390) 2025-04-27 13:10:22 +02:00
renovate[bot]
7f57e1d9a2 chore(deps): update dependency ruff to v0.11.7 (#5388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 08:52:35 +02:00
renovate[bot]
df6dc6c8ac fix(deps): update dependency lxml to v5.4.0 (#5378)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 08:40:30 +02:00
renovate[bot]
840bd32ee3 fix(deps): update dependency pydantic-settings to v2.9.1 (#5366)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-24 19:31:45 +02:00
robertdanahome
da3d056d81 fix: Add missing group_id to RecipeTag and TagBase schemas (#5342)
Co-authored-by: Robert Dana <bob@yall.org>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-04-24 16:09:37 +00:00
renovate[bot]
b3ea48333c fix(deps): update dependency uvicorn to v0.34.2 (#5343)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-24 17:58:54 +02:00
renovate[bot]
f37b39aad2 fix(deps): update dependency openai to v1.76.0 (#5381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-24 15:37:22 +00:00
Hayden
d4c987e48a chore(l10n): New Crowdin updates (#5379) 2025-04-24 17:23:26 +02:00
Hayden
955e38ea0b chore(l10n): New Crowdin updates (#5374) 2025-04-21 21:07:23 +02:00
github-actions[bot]
7d87182b1a chore(auto): Update pre-commit hooks (#5372)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-04-21 07:26:22 +00:00
Hayden
5e80002297 chore(l10n): New Crowdin updates (#5370) 2025-04-21 09:16:51 +02:00
renovate[bot]
1364cd0d6b fix(deps): update dependency html2text to v2025 (#5347)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-19 21:16:29 +02:00
renovate[bot]
5d21af0e02 fix(deps): update dependency aniso8601 to v10.0.1 (#5368)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-19 20:12:04 +02:00
renovate[bot]
64afccb36c fix(deps): update dependency beautifulsoup4 to v4.13.4 (#5352)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-17 21:20:45 +00:00
renovate[bot]
5b0497e14e chore(deps): update dependency ruff to v0.11.6 (#5361)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-17 23:09:34 +02:00
renovate[bot]
5010bb5665 chore(deps): update dependency mkdocs-material to v9.6.12 (#5359)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-17 17:09:57 +00:00
Hayden
c7789da1ad chore(l10n): New Crowdin updates (#5360) 2025-04-17 18:59:26 +02:00
renovate[bot]
b853ce221d fix(deps): update dependency openai to v1.75.0 (#5357)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-16 22:13:41 +02:00
renovate[bot]
3522f81025 fix(deps): update dependency openai to v1.74.0 (#5346)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-14 20:15:28 -05:00
ant385525
a22c0c4787 docs: Add community docs for an iOS shortcut (attempt 2) (#5345) 2025-04-14 16:01:57 +00:00
renovate[bot]
4dfc5ead54 fix(deps): update dependency pillow to v11.2.1 (#5337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-14 10:12:17 -05:00
github-actions[bot]
c667bda427 chore(auto): Update pre-commit hooks (#5344)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-04-14 08:52:50 +00:00
renovate[bot]
188b129da4 fix(deps): update dependency typing-extensions to v4.13.2 (#5313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-14 10:42:32 +02:00
renovate[bot]
6845b51def chore(deps): update dependency ruff to v0.11.5 (#5333)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-12 21:00:07 +02:00
renovate[bot]
c8ec19e371 fix(deps): update dependency openai to v1.73.0 (#5335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-12 19:39:20 +02:00
renovate[bot]
c9002d2391 fix(deps): update dependency pydantic to v2.11.3 (#5325)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-10 16:47:31 +02:00
Hayden
0ba4cc4d4c chore(l10n): New Crowdin updates (#5310)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-04-10 13:40:47 +00:00
renovate[bot]
5baade58fb fix(deps): update dependency openai to v1.72.0 (#5328)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-10 15:30:36 +02:00
Kuchenpirat
e667fe8a5e fix: build pull request image only in mealie repo (#5327) 2025-04-09 07:58:49 +02:00
renovate[bot]
dc1ec4e69a fix(deps): update dependency openai to v1.71.0 (#5322)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-07 18:24:14 -05:00
github-actions[bot]
55af4082e7 chore(auto): Update pre-commit hooks (#5320)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-04-07 15:14:50 +00:00
renovate[bot]
8b059121d1 fix(deps): update dependency lxml to v5.3.2 (#5318)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-07 10:04:04 -05:00
renovate[bot]
5bf3ba0cc2 chore(deps): update dependency ruff to v0.11.4 (#5317)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-04 18:44:17 +00:00
renovate[bot]
d4a1c7f756 fix(deps): update dependency rapidfuzz to v3.13.0 (#5314)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-03 22:49:36 -05:00
renovate[bot]
a06046cf5d fix(deps): update dependency authlib to v1.5.2 (#5308)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-03 13:50:49 -05:00
renovate[bot]
f8c4112c39 fix(deps): update dependency openai to v1.70.0 (#5300)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-03 13:36:25 -05:00
renovate[bot]
e118d24261 fix(deps): update dependency pydantic to v2.11.2 (#5312)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-03 18:17:28 +00:00
renovate[bot]
8f3772ed01 chore(deps): update dependency ruff to v0.11.3 (#5311)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-03 13:04:00 -05:00
Hayden
007d249c20 chore(l10n): New Crowdin updates (#5301) 2025-04-01 13:46:57 +00:00
renovate[bot]
24be42ee88 chore(deps): update dependency mkdocs-material to v9.6.11 (#5304)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-01 08:35:20 -05:00
Hayden
0d605e20fc chore(l10n): New Crowdin updates (#5281) 2025-03-31 18:36:46 +00:00
renovate[bot]
cbfb649d96 chore(deps): update dependency coverage to v7.8.0 (#5297)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-31 01:21:49 +00:00
renovate[bot]
b1341b9102 fix(deps): update dependency apprise to v1.9.3 (#5295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-31 01:10:46 +00:00
renovate[bot]
6be67a1a98 chore(deps): update dependency rich to v14 (#5294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-31 00:59:29 +00:00
renovate[bot]
62d2dd1c0d chore(deps): update dependency mkdocs-material to v9.6.10 (#5293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 19:46:11 -05:00
renovate[bot]
5c890f3d0e fix(deps): update dependency alembic to v1.15.2 (#5289)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 22:00:49 +00:00
renovate[bot]
d071215f06 fix(deps): update dependency pydantic to v2.11.1 (#5285)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 16:49:16 -05:00
renovate[bot]
e5b2ef49b2 fix(deps): update dependency openai to v1.69.0 (#5284)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 16:31:47 -05:00
renovate[bot]
766968b97d fix(deps): update dependency sqlalchemy to v2.0.40 (#5283)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 20:45:01 +00:00
renovate[bot]
ec0e31f8ec fix(deps): update dependency typing-extensions to v4.13.0 (#5278)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 20:30:10 +00:00
renovate[bot]
c911a3190e fix(deps): update dependency python-dotenv to v1.1.0 (#5275)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 20:12:34 +00:00
renovate[bot]
c4baf50ae3 chore(deps): update dependency pytest-asyncio to ^0.26.0 (#5274)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 19:56:14 +00:00
renovate[bot]
30382b36cb fix(deps): update dependency orjson to v3.10.16 (#5270)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 19:35:10 +00:00
renovate[bot]
6b181c122f chore(deps): update dependency coverage to v7.7.1 (#5260)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 19:14:33 +00:00
renovate[bot]
54bb39af55 chore(deps): update dependency pylint to v3.3.6 (#5251)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-30 13:52:20 -05:00
Kuchenpirat
b994d27b0c dev: add pull request image build workflow (#5235) 2025-03-30 18:38:01 +00:00
Michael Genson
07cd98c125 fix: Pre-download NLTK during Docker build (#5290) 2025-03-30 09:22:58 +02:00
Hayden
1c6b35a53c chore(l10n): New Crowdin updates (#5262)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-03-26 13:56:10 +00:00
Kuchenpirat
7c05d58f26 fix: remove unmaintained ios shortcut (#5280) 2025-03-26 08:36:58 -05:00
github-actions[bot]
6ecba01eb6 chore(auto): Update pre-commit hooks (#5269)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-03-24 13:55:08 +00:00
renovate[bot]
a39f8cdb90 fix(deps): update dependency fastapi to v0.115.12 (#5268)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 08:44:05 -05:00
Kuchenpirat
18ebc3de5f fix: update admin scripts paths in docs (#5263) 2025-03-22 10:09:55 -05:00
renovate[bot]
ead4d4c95e chore(deps): update dependency ruff to v0.11.2 (#5258)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-21 15:39:27 +00:00
Hayden
6ae4e67c84 chore(l10n): New Crowdin updates (#5252) 2025-03-21 15:29:07 +00:00
renovate[bot]
e77247441c fix(deps): update dependency openai to v1.68.2 (#5259)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-21 16:18:19 +01:00
renovate[bot]
d55e48cbe0 chore(deps): update dependency ruff to v0.11.1 (#5253)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-21 12:22:58 +01:00
renovate[bot]
94170e3e6c fix(deps): update dependency openai to v1.68.0 (#5254)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-21 11:27:53 +01:00
Hayden
e0e619df5a chore(l10n): New Crowdin updates (#5250) 2025-03-20 13:41:31 +01:00
Hayden
8469aae7ab chore(l10n): New Crowdin updates (#5248) 2025-03-20 12:19:16 +01:00
renovate[bot]
94dd6eab81 fix(deps): update dependency openai to v1.67.0 (#5247)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 08:57:23 +01:00
Hayden
8c25bdb62d chore(l10n): New Crowdin updates (#5246) 2025-03-20 08:40:19 +01:00
Hayden
cbbc07cda9 chore(l10n): New Crowdin updates (#5245) 2025-03-19 17:38:30 +00:00
Hayden
6fc9ece191 chore(l10n): New Crowdin updates (#5243) 2025-03-19 17:21:21 +00:00
Kuchenpirat
cd6ccf099b fix: spelling of github (#5244) 2025-03-19 17:08:25 +00:00
renovate[bot]
4f7ee33f1b chore(deps): update dependency pre-commit to v4.2.0 (#5238)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 15:45:24 +00:00
github-actions[bot]
9bfee56bd5 docs(auto): Update image tag, for release v2.8.0 (#5236)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-03-19 15:34:57 +00:00
renovate[bot]
e5da33e38e chore(deps): update dependency coverage to v7.7.0 (#5227)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 08:40:53 -05:00
renovate[bot]
2748db781f fix(deps): update dependency pillow-heif to ^0.22.0 (#5219)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 13:27:44 +00:00
renovate[bot]
d9bbf8de30 fix(deps): update dependency sqlalchemy to v2.0.39 (#5204)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 13:15:24 +00:00
renovate[bot]
c29f651a36 fix(deps): update dependency openai to v1.66.5 (#5197)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 13:03:55 +00:00
renovate[bot]
5e217fc269 fix(deps): update dependency alembic to v1.15.1 (#5178)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 07:46:15 -05:00
Michael Genson
0f58ac5b47 fix: "NOT IN" doesn't apply filter properly (#5154) 2025-03-18 18:07:26 +00:00
Hayden
2deb9c276c chore(l10n): New Crowdin updates (#5185)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-03-18 16:46:08 +00:00
Michael Genson
f46760755d chore: Bump Ruff to 0.11.0 (#5233) 2025-03-18 15:52:30 +01:00
github-actions[bot]
eca2ba36c8 chore(auto): Update pre-commit hooks (#5229)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-03-17 13:14:37 +00:00
renovate[bot]
cdd8e3aca9 chore(deps): update dependency mkdocs-material to v9.6.9 (#5209)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 11:44:15 +00:00
Carter
d724f408cc feat: OIDC: Call userinfo if no claims found in id token (#5228)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-03-17 03:05:20 +00:00
Alexandre Boutoille
3b1a6280d6 fix: PostgreSQL capitalization (#5220) 2025-03-16 12:36:32 -05:00
Hayden
974d848ee2 fix: Revert "feat: Update seeding to use new foods list format - round 2" (#5208) 2025-03-12 23:27:18 -05:00
Cameronwyatt
72668e2881 feat: Update seeding to use new foods list format - round 2 (#5189) 2025-03-13 00:30:03 +00:00
Marco H
9e47ade475 docs: faq.md: fix paths to scripts (#5201) 2025-03-11 12:39:09 +00:00
Michael Genson
ad59e653da fix: Case Insensitive Query Filters (#5162) 2025-03-10 10:56:12 +00:00
github-actions[bot]
4ecfd8ec78 chore(auto): Update pre-commit hooks (#5200)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-03-10 09:23:57 +00:00
renovate[bot]
e254dda368 chore(deps): update dependency pylint to v3.3.5 (#5194)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-10 10:13:08 +01:00
Bryce Chidester
7de47004e9 docs: Re-add missing environment variable documentation (#5199) 2025-03-09 21:51:17 +00:00
renovate[bot]
28cc6b8d1e fix(deps): update dependency recipe-scrapers to v15.6.0 (#5198)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-09 15:08:14 -05:00
renovate[bot]
21278cd7fe chore(deps): update dependency ruff to v0.9.10 (#5188)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-07 12:01:47 -06:00
Michael Genson
9a469fe4fd fix: Filter out null chars from OpenAI response (#5187) 2025-03-07 17:34:32 +01:00
Hayden
98472ff471 chore(l10n): New Crowdin updates (#5179) 2025-03-06 18:13:33 +00:00
renovate[bot]
e2b5f4d08c fix(deps): update dependency openai to v1.65.4 (#5182)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-06 13:56:47 +00:00
renovate[bot]
232ad8410c fix(deps): update dependency jinja2 to v3.1.6 [security] (#5183)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-06 07:45:12 -06:00
renovate[bot]
c65bd14d74 fix(deps): update dependency openai to v1.65.3 (#5180)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-04 18:03:26 -06:00
Hayden
774b3123a2 chore(l10n): New Crowdin updates (#5176) 2025-03-04 12:18:39 +01:00
Hayden
40818722ab chore(l10n): New Crowdin updates (#5175) 2025-03-03 17:21:25 -06:00
Hayden
9cf40f89ea chore(l10n): New Crowdin updates (#5174) 2025-03-03 21:50:07 +01:00
Eric Hoffmann
a758406719 fix: Use recipe-parsers nutrients function for nutrition parsing (#5165) 2025-03-03 14:00:17 +00:00
github-actions[bot]
8b3ff9b099 chore(auto): Update pre-commit hooks (#5167)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-03-03 10:37:55 +00:00
renovate[bot]
c4b26fef8c chore(deps): update dependency mkdocs-material to v9.6.7 (#5163)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 10:26:53 +00:00
Hayden
ba8b94232a chore(l10n): New Crowdin updates (#5161) 2025-03-03 10:16:34 +00:00
Eric Hoffmann
5f766a8c3f dev: chown commandhistory to correct user during devcontainer creation (#5166) 2025-03-03 05:23:52 +00:00
renovate[bot]
46d28bd96b chore(deps): update dependency pytest to v8.3.5 (#5158)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-02 14:23:02 -06:00
renovate[bot]
d483da6c4c fix(deps): update dependency rapidfuzz to v3.12.2 (#5159)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-02 18:55:55 +00:00
Hayden
a6fd50b1ba chore(l10n): New Crowdin updates (#5149) 2025-03-02 12:47:57 +00:00
renovate[bot]
000ec9475a fix(deps): update dependency fastapi to v0.115.11 (#5150)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-01 22:56:41 +00:00
renovate[bot]
25adfe1a48 fix(deps): update dependency openai to v1.65.2 (#5147)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-01 16:45:44 -06:00
renovate[bot]
6381ac4c7f chore(deps): update dependency mkdocs-material to v9.6.6 (#5141)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-01 15:53:00 +00:00
renovate[bot]
c636a4f73e fix(deps): update dependency fastapi to v0.115.10 (#5139)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-01 09:42:24 -06:00
Hayden
38ab8aa48d chore(l10n): New Crowdin updates (#5145) 2025-03-01 16:30:09 +01:00
Hayden
17f64a5cfa chore(l10n): New Crowdin updates (#5142) 2025-03-01 13:59:55 +01:00
renovate[bot]
d11bdaf235 fix(deps): update dependency authlib to v1.5.1 (#5138)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 16:02:49 +00:00
Michael Genson
cfba2fff7e fix(deps): update dependency ingredient-parser-nlp to v2 (#5137) 2025-02-28 15:51:36 +00:00
Hayden
61ae6b3e32 chore(l10n): New Crowdin updates (#5135) 2025-02-28 15:31:54 +00:00
Michael Genson
9c4afb57b8 chore: Renovate Ignore Python Upgrades (#5134) 2025-02-28 14:40:44 +00:00
Michael Genson
b12aea8272 feat: Migrate from CRF++ to Ingredient Parser (a Python package) (#5061) 2025-02-28 15:17:28 +01:00
Hayden
ec1a9d78ac chore(l10n): New Crowdin updates (#5131) 2025-02-28 13:18:28 +00:00
renovate[bot]
8250e793b8 fix(deps): update dependency bcrypt to v4.3.0 (#5127)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 13:12:26 +01:00
github-actions[bot]
f3310ddba6 docs(auto): Update image tag, for release v2.7.1 (#5129)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-02-28 11:17:24 +00:00
renovate[bot]
d573a9ea5d chore(deps): update dependency ruff to v0.9.9 (#5130)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 12:07:53 +01:00
Michael Genson
d24a518bac fix: Remove br encoding from scraper (#5115)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-02-28 09:41:31 +00:00
renovate[bot]
46b821d832 fix(deps): update dependency fastapi to v0.115.9 (#5122)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 23:48:45 +00:00
renovate[bot]
637bb30e13 chore(deps): update dependency ruff to v0.9.8 (#5112)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 23:38:37 +00:00
renovate[bot]
b930ebfb20 fix(deps): update dependency openai to v1.65.1 (#5123)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 17:28:11 -06:00
github-actions[bot]
5e2c40731c docs(auto): Update image tag, for release v2.7.0 (#5111)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-02-27 16:33:35 +00:00
renovate[bot]
54ae810acc fix(deps): update dependency pydantic-settings to v2.8.1 (#5108)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 17:23:50 +01:00
Michael Genson
716c85cc3b fix: Bulk Add Recipes to Shopping List (#5054) 2025-02-27 13:58:40 +00:00
Kuchenpirat
3d1b76bcad fix: update recipe time row direction on small screens (#5107) 2025-02-27 07:48:29 -06:00
Hayden
4843a9a74a chore(l10n): New Crowdin updates (#5106) 2025-02-27 08:12:19 +01:00
Hayden
12aec943dc chore(l10n): New Crowdin updates (#5105) 2025-02-26 17:46:57 +00:00
Kuchenpirat
3b0d6050a2 feat: redesign recipe info card (#5026)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-02-26 16:07:12 +00:00
renovate[bot]
3fd3661206 fix(deps): update dependency authlib to v1.5.0 (#5103)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-25 07:54:59 -06:00
Michael Genson
df8dd3fe4a fix: Invalidate Expired Shared Links (#5065) 2025-02-25 13:01:32 +00:00
Chip
a2c6b3f69b docs: Add additional information and tips to Backup & Restore Usage Documentation Page & Shopping List (#4843)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-02-25 12:50:44 +00:00
renovate[bot]
c01593e918 fix(deps): update dependency beautifulsoup4 to v4.13.3 (#5090)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-25 12:59:22 +01:00
Michael Genson
48484e5b1a feat: Better Scraping/More User Agents (#5091) 2025-02-25 10:57:05 +00:00
Hayden
173e8792a6 chore(l10n): New Crowdin updates (#5102) 2025-02-25 11:46:37 +01:00
Hayden
28047d9b58 chore(l10n): New Crowdin updates (#5101) 2025-02-25 09:51:24 +01:00
Hayden
82393b0cd1 chore(l10n): New Crowdin updates (#5100) 2025-02-24 21:13:21 +00:00
Hayden
eea9a6ae16 chore(l10n): New Crowdin updates (#5099) 2025-02-24 17:08:51 +01:00
Hayden
ca05c25b61 chore(l10n): New Crowdin updates (#5098) 2025-02-24 14:42:03 +00:00
github-actions[bot]
af912ebefb chore(auto): Update pre-commit hooks (#5069)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-02-24 14:07:49 +00:00
renovate[bot]
e6b46b21d9 chore(deps): update dependency ruff to v0.9.7 (#5079)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 14:58:10 +01:00
miah
a41f8b31f1 feat: Improve Shopping List UI (#4608)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-02-24 08:41:04 +00:00
Michael Genson
6271b33b1b fix: Only run migration data fixes on migrations (#5038) 2025-02-24 08:29:12 +00:00
renovate[bot]
09234e3bf0 fix(deps): update dependency openai to v1.64.0 (#5092)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 08:06:07 +00:00
Hayden
9f467b702e chore(l10n): New Crowdin updates (#5093) 2025-02-24 08:55:36 +01:00
renovate[bot]
6c156e0e14 fix(deps): update dependency pydantic-settings to v2.8.0 (#5086)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-22 10:52:20 -06:00
renovate[bot]
10818ab0ba fix(deps): update dependency recipe-scrapers to v15.5.1 (#5089)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-22 16:22:27 +00:00
renovate[bot]
0778919134 fix(deps): update dependency recipe-scrapers to v15.5.0 (#5087)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-22 10:11:59 -06:00
Hayden
fb8746e7b8 chore(l10n): New Crowdin updates (#5080) 2025-02-20 20:44:12 +01:00
renovate[bot]
c82d08c0d9 chore(deps): update dependency mkdocs-material to v9.6.5 (#5078)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-19 21:18:47 -06:00
Hayden
be1dc69be6 chore(l10n): New Crowdin updates (#5073) 2025-02-19 22:35:43 +00:00
renovate[bot]
8ea932ef7c chore(deps): update dependency mkdocs-material to v9.6.4 (#5051)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-18 10:27:52 +00:00
renovate[bot]
70a6bc4769 fix(deps): update dependency lxml to v5.3.1 (#5048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-18 10:17:29 +00:00
renovate[bot]
c765401ac5 fix(deps): update dependency openai to v1.63.2 (#5070)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-18 21:06:59 +11:00
Michael Genson
3b12a62fc6 fix(deps): update dependency openai to v1.63.0 (#5067) 2025-02-16 21:24:59 +01:00
renovate[bot]
c351cf7bd5 chore(deps): update dependency coverage to v7.6.12 (#5042)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-16 13:45:03 -06:00
RMI78
aea5eb3419 feat: support _FILE suffix for docker secrets (again) (#4958)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-02-16 10:59:50 -06:00
Michael Genson
cb9008bb5c fix: shorten indexes to fix issues with index limits (#5045) 2025-02-11 15:54:32 +00:00
renovate[bot]
3534e445d8 chore(deps): update dependency ruff to v0.9.6 (#5049)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-11 09:44:49 -06:00
Michael Chisholm
c0ab7673ba dev: Create a Python package, build Docker images from it (#4551)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2025-02-11 09:28:40 -06:00
github-actions[bot]
abf73e08ec chore(auto): Update pre-commit hooks (#5047)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-02-10 13:29:35 +00:00
Hayden
c4df8f0611 chore(l10n): New Crowdin updates (#5046) 2025-02-10 11:06:55 +02:00
renovate[bot]
b28eefab77 fix(deps): update dependency sqlalchemy to v2.0.38 (#5030)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-08 08:11:00 -06:00
renovate[bot]
6f3a139efd chore(deps): update dependency ruff to v0.9.5 (#5029)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-08 11:17:13 +00:00
renovate[bot]
790f4a9b9a chore(deps): update dependency mkdocs-material to v9.6.3 (#5031)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-08 22:07:12 +11:00
Michael Genson
c7c87068bf chore: Remove Warnings (#5039) 2025-02-07 23:42:43 +01:00
renovate[bot]
f48dafd855 fix(deps): update dependency pydantic to v2.10.6 (#4940)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-07 13:51:27 -06:00
Hayden
273f628acd chore(l10n): New Crowdin updates (#5032) 2025-02-07 14:58:28 +01:00
github-actions[bot]
a8653ea904 docs(auto): Update image tag, for release v2.6.0 (#5022)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-02-06 08:38:46 +00:00
renovate[bot]
0093627adb fix(deps): update dependency beautifulsoup4 to v4.13.3 (#5009)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-06 09:29:10 +01:00
renovate[bot]
2d73c703cb fix(deps): update dependency openai to v1.61.1 (#5020)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-05 21:40:03 +00:00
Hayden
10315fe8f7 chore(l10n): New Crowdin updates (#5021)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-02-05 21:29:56 +00:00
renovate[bot]
1f7d5a57af chore(deps): update dependency mypy to v1.15.0 (#5017)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-05 14:21:39 +01:00
Hayden
6d22df7b95 chore(l10n): New Crowdin updates (#5018) 2025-02-05 11:16:20 +01:00
Hayden
f5ddcdf193 chore(l10n): New Crowdin updates (#5016) 2025-02-04 17:36:45 +01:00
renovate[bot]
36f6917308 chore(deps): update dependency mkdocs-material to v9.6.2 (#5011)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 18:34:00 +01:00
github-actions[bot]
53b5df92ae chore(auto): Update pre-commit hooks (#5008)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-02-03 11:31:16 +00:00
renovate[bot]
736352af5f chore(deps): update dependency mkdocs-material to v9.6.1 (#4992)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 12:21:36 +01:00
renovate[bot]
41940b8003 fix(deps): update dependency openai to v1.61.0 (#4995)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-01 09:15:42 +01:00
Hayden
641d24aa1e fix: revert "feat: Add new labels and foods for en-US language" (#4996) 2025-01-31 22:46:57 -06:00
Cameronwyatt
fb08a11ffe feat: Add new labels and foods for en-US language
Update all locale seeding files and seeding logic to parse the new format Only add new labels, units, and foods during seeding (checking against existing names)
2025-02-01 02:17:43 +00:00
renovate[bot]
ba26378abc fix(deps): update dependency rapidfuzz to v3.12.1 (#4990)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-30 19:27:58 -06:00
Hayden
2a4b0d3d8b chore(l10n): New Crowdin updates (#4991) 2025-01-30 18:52:37 -06:00
renovate[bot]
af4b3fa83d fix(deps): update dependency fastapi to v0.115.8 (#4989)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-30 17:40:55 -06:00
renovate[bot]
564012c53d fix(deps): update dependency authlib to v1.4.1 (#4971)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-30 22:55:14 +00:00
renovate[bot]
2316a3fef9 chore(deps): update dependency ruff to v0.9.4 (#4988)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-30 16:43:59 -06:00
PancakeZik
a52fda72d6 fix: Fixed LastMade recipes sorting order (#4980)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-01-30 10:33:58 +01:00
Michael Genson
cb05adeb48 fix: Remove API Tokens from User APIs (#4985) 2025-01-29 19:52:12 +00:00
Felix Schneider
f2eadd2908 fix: Ensure bring api docs are shown (PR 4920) (#4948)
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2025-01-29 12:10:18 -06:00
renovate[bot]
4229061377 chore(deps): update dependency pytest-asyncio to v0.25.3 (#4972)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-29 10:08:12 +01:00
renovate[bot]
970ed1da7b chore(deps): update dependency pylint to v3.3.4 (#4970)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-29 09:11:18 +01:00
Hayden
dd9d9b85c1 chore(l10n): New Crowdin updates (#4975) 2025-01-29 08:15:16 +01:00
Hayden
6001d679e7 chore(l10n): New Crowdin updates (#4968)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-28 07:41:25 +00:00
renovate[bot]
02cf53340b fix(deps): update dependency openai to v1.60.2 (#4967)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-28 08:31:55 +01:00
github-actions[bot]
95042f1d40 chore(auto): Update pre-commit hooks (#4965)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-27 08:01:18 +00:00
Michael Genson
34245687a5 feat: Add Servings/Yield to Recipe Actions (#4952)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-27 07:37:09 +00:00
Hayden
7e5c750231 chore(l10n): New Crowdin updates (#4953) 2025-01-27 08:19:45 +01:00
Cody
93c2df41c3 feat: Shopping list UI overhaul - three dot menu (#4415)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-26 14:04:40 +00:00
James Elliott
1e69577d12 docs: update oidcv2 authelia link (#4942)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-01-25 01:48:34 +00:00
renovate[bot]
cbafc28fa1 fix(deps): update dependency openai to v1.60.1 (#4941)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-24 22:59:56 +01:00
renovate[bot]
8622e19502 chore(deps): update dependency ruff to v0.9.3 (#4939)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-23 15:14:55 -06:00
Hayden
2fee1778ed chore(l10n): New Crowdin updates (#4938) 2025-01-23 21:42:22 +01:00
renovate[bot]
2284ecb226 fix(deps): update dependency fastapi to v0.115.7 (#4935)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-23 11:22:02 -06:00
github-actions[bot]
2716260473 docs(auto): Update image tag, for release v2.5.0 (#4933)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-22 21:00:40 +00:00
Hayden
0b89ab1a95 chore(l10n): New Crowdin updates (#4934) 2025-01-22 14:51:47 -06:00
renovate[bot]
d2ced50fcc fix(deps): update dependency openai to v1.60.0 (#4932)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 17:47:55 +01:00
Kuchenpirat
bf616f9db5 fix: prevent users from updating their own household privileges (#4928)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-01-22 16:06:41 +00:00
Kuchenpirat
8cd2da0abb fix: prevent recipe sharing from different group (#4929) 2025-01-22 09:51:29 -06:00
Hayden
c74ba0eca1 chore(l10n): New Crowdin updates (#4926) 2025-01-21 20:29:01 +00:00
Felix Schneider
17bed60399 docs: Add community guide for integrating the Mealie-Bring-API (#4920) 2025-01-21 16:44:01 +00:00
renovate[bot]
7a2f91eb32 chore(deps): update dependency pre-commit to v4.1.0 (#4922)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 10:53:32 +01:00
Chip
9b36d08948 docs: Add to FAQ: When / how to use Linked Ingredients (#4897)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-20 16:29:15 +00:00
renovate[bot]
5105c42abe fix(deps): update dependency openai to v1.59.9 (#4919)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-20 16:09:30 +00:00
github-actions[bot]
b040778c53 chore(auto): Update pre-commit hooks (#4917)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-01-20 15:58:29 +00:00
Michael Genson
0d96ec3858 fix: Show All Recipes in Cookbook Regardless of Sort (#4908)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-20 13:01:34 +00:00
renovate[bot]
c096605fc9 fix(deps): update dependency orjson to v3.10.15 (#4911)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-19 20:25:39 -06:00
renovate[bot]
96615b17c9 fix(deps): update dependency alembic to v1.14.1 (#4915)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-20 01:24:06 +00:00
renovate[bot]
689f31a4da fix(deps): update dependency openai to v1.59.8 (#4909)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-18 09:28:41 -06:00
renovate[bot]
f89e038769 chore(deps): update dependency mkdocs-material to v9.5.50 (#4910)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-18 00:17:13 -06:00
Hayden
c979df1372 chore(l10n): New Crowdin updates (#4906) 2025-01-16 16:57:52 +01:00
renovate[bot]
2b124e7951 chore(deps): update dependency ruff to v0.9.2 (#4905)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-16 09:12:13 -06:00
Borriborri
07bbda808f fix: PWA - Allow CORS and add UseCredentials to nuxt.config.js (#4902)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-01-15 21:20:29 +00:00
renovate[bot]
04eeaa5acf fix(deps): update dependency aniso8601 to v10 (#4874)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-15 15:10:44 -06:00
John Corser
6097ff2a34 feat: add delete option to three dots menu (#4842)
Co-authored-by: John Corser <xss@amazon.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-15 16:49:21 +00:00
Hayden
b5dfaf12f1 chore(l10n): New Crowdin updates (#4900) 2025-01-15 15:59:16 +00:00
Kuchenpirat
b8266db218 docs: remove titles from within individual FAQs (#4899) 2025-01-15 09:49:14 -06:00
renovate[bot]
67fe739b52 fix(deps): update dependency recipe-scrapers to v15.4.0 (#4898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-15 00:16:07 +00:00
gpotter@gmail.com
203218a3d5 fix: Refresh recipe section when clicking card tag chip (#4810)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-14 18:18:16 +01:00
Shlok Sheth
4b992afc67 fix: Recipe comments display a username/id rather than … (#4726)
Co-authored-by: Kuchenpirat <jojow@gmx.net>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-14 16:00:23 +00:00
Hayden
376c14be9a chore(l10n): New Crowdin updates (#4896) 2025-01-14 15:50:47 +00:00
Kuchenpirat
5e734548a2 docs: move faq into details / spoilers (#4891) 2025-01-14 09:40:51 -06:00
Nate Hamm
aed93ce1f4 fix: Preserve orientation when converting to .webp (#4803)
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2025-01-14 04:56:07 +00:00
renovate[bot]
d7f460be0f chore(deps): update dependency ruff to v0.9.1 (#4889)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 17:45:56 +01:00
Michael Genson
e9892aba89 feat: Move "on hand" and "last made" to household (#4616)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-13 17:19:49 +01:00
renovate[bot]
e565b919df fix(deps): update dependency openai to v1.59.7 (#4890)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 16:57:35 +01:00
renovate[bot]
2c2de1e95b chore(deps): update dependency ruff to ^0.9.0 (#4871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-13 15:43:55 +00:00
github-actions[bot]
ea0bec2336 chore(auto): Update pre-commit hooks (#4886)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-13 15:31:42 +00:00
Chip
7f99e2fc36 docs: Fix Spelling Errors on Nutritional Values (#4888) 2025-01-13 15:19:27 +00:00
Chip
2e13f33eb1 docs: Update FAQ to include Nutritional Values and enabling per recipe / household (#4887)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-13 14:39:42 +01:00
Hayden
dde93e78c9 chore(l10n): New Crowdin updates (#4882) 2025-01-12 17:49:18 +01:00
Hayden
e50299e7ce chore(l10n): New Crowdin updates (#4877) 2025-01-11 18:19:37 +01:00
renovate[bot]
2be4bd1f7c fix(deps): update dependency sqlalchemy to v2.0.37 (#4873)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 10:58:59 +00:00
renovate[bot]
398b41ed23 fix(deps): update dependency openai to v1.59.6 (#4872)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 21:48:47 +11:00
Hayden
25bd742903 chore(l10n): New Crowdin updates (#4875) 2025-01-10 23:07:46 +01:00
renovate[bot]
9918d36a1a chore(deps): update dependency pytest-asyncio to v0.25.2 (#4863)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-09 11:55:33 -06:00
renovate[bot]
357e45c264 fix(deps): update dependency pydantic to v2.10.5 (#4870)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-09 16:40:18 +00:00
renovate[bot]
bfa3a3e826 fix(deps): update dependency apprise to v1.9.2 (#4867)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-09 16:27:41 +00:00
Hayden
b45f54150b chore(l10n): New Crowdin updates (#4869) 2025-01-09 10:15:06 -06:00
renovate[bot]
b5e1debabc fix(deps): update dependency orjson to v3.10.14 (#4865)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-08 18:28:22 +00:00
renovate[bot]
406ff384c9 fix(deps): update dependency openai to v1.59.5 (#4864)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-08 12:16:04 -06:00
Hayden
a12e4fd5bb chore(l10n): New Crowdin updates (#4862) 2025-01-08 14:04:20 +00:00
renovate[bot]
d48d2c24af fix(deps): update dependency pydantic-settings to v2.7.1 (#4805)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-07 16:03:37 -06:00
Kuchenpirat
0f7c1d6a14 fix: remove kitchen timer (#4857) 2025-01-07 19:19:30 +00:00
Kuchenpirat
22f306a384 feat: add make_admin script (#4853) 2025-01-07 17:38:01 +00:00
Kuchenpirat
688d07a5c8 fix: remove edit scale icon when not scalable (#4849) 2025-01-07 17:26:36 +00:00
Kuchenpirat
d3c6106566 dev: remove PR type from PR description (#4847) 2025-01-07 11:16:12 -06:00
renovate[bot]
4d21900dff fix(deps): update dependency openai to v1.59.4 (#4855)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-07 17:08:56 +01:00
gpotter@gmail.com
795c2cf575 fix: Allow scraping calories as number (#4854)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2025-01-07 15:55:59 +00:00
Hayden
eafb7b9ffc chore(l10n): New Crowdin updates (#4852) 2025-01-07 13:48:27 +00:00
github-actions[bot]
d0508f7ca4 docs(auto): Update image tag, for release v2.4.2 (#4845)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-01-07 09:02:06 +00:00
renovate[bot]
f2e1289ab0 fix(deps): update dependency pillow to v11.1.0 (#4814)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-07 19:51:07 +11:00
github-actions[bot]
92ab103b3a chore(auto): Update pre-commit hooks (#4838)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-01-06 16:01:38 +00:00
Hayden
dec67f6ef9 chore(l10n): New Crowdin updates (#4840) 2025-01-06 16:13:32 +01:00
Kuchenpirat
932473d0ff fix: RecipeActionMenu location (#4835) 2025-01-06 03:04:38 +00:00
David Pearson
288bb65d67 fix: Autocomplete Accessibility on Login form (#4837) 2025-01-05 21:28:19 +00:00
renovate[bot]
cb1dbe34fa chore(deps): update dependency ruff to v0.8.6 (#4816)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-05 21:41:54 +01:00
renovate[bot]
4a14403274 chore(deps): update dependency pytest-asyncio to v0.25.1 (#4813)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-05 21:21:44 +01:00
Hayden
df04b23c88 chore(l10n): New Crowdin updates (#4831) 2025-01-05 20:20:47 +01:00
renovate[bot]
a6b413b431 fix(deps): update dependency openai to v1.59.3 (#4826)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-05 13:06:41 +01:00
Hayden
041d7d81fa chore(l10n): New Crowdin updates (#4827) 2025-01-04 15:11:20 +01:00
renovate[bot]
02197677b7 fix(deps): update dependency openai to v1.59.2 (#4823)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-03 20:59:35 +01:00
Hayden
0636816167 chore(l10n): New Crowdin updates (#4821) 2025-01-03 16:55:42 +01:00
Hayden
8b31257617 chore(l10n): New Crowdin updates (#4815) 2025-01-02 14:34:50 +01:00
Hayden
825914a4bd chore(l10n): New Crowdin updates (#4801) 2024-12-30 20:18:11 -06:00
renovate[bot]
fb5f13991a fix(deps): update dependency orjson to v3.10.13 (#4791)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-30 17:40:53 -06:00
VTerret
72b0f11b72 fix: 3892 missing parameter documentation (#4577)
Co-authored-by: vterret <vterret@wps.webhelp.com>
2024-12-30 23:18:58 +00:00
Nate Hamm
78ab232516 fix: SyntaxWarning for Escape Characters in String Literals (#4792) 2024-12-30 21:31:02 +00:00
Dan Webb
716c5c1d87 chore: Add OIDC debug logging (#4658)
Signed-off-by: Dan Webb <dan.webb@damacus.io>
2024-12-30 21:20:15 +00:00
renovate[bot]
5d33694bc6 chore(deps): update dependency mypy to v1.14.1 (#4797)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-30 12:16:09 -06:00
Hayden
23a85f51d2 chore(l10n): New Crowdin updates (#4787) 2024-12-28 16:17:34 +00:00
Hayden
43b4e4b028 chore(l10n): New Crowdin updates (#4784) 2024-12-27 17:29:26 +01:00
renovate[bot]
251544b2c5 chore(deps): update dependency coverage to v7.6.10 (#4781)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-26 15:53:57 -06:00
Hayden
c0b531030f chore(l10n): New Crowdin updates (#4774) 2024-12-25 05:04:31 +00:00
github-actions[bot]
f7b78783ec chore(auto): Update pre-commit hooks (#4769)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2024-12-24 05:13:54 +00:00
renovate[bot]
bca80dcc53 chore(deps): update dependency pylint to v3.3.3 (#4772)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-23 23:02:53 -06:00
Hayden
9e25e58378 chore(l10n): New Crowdin updates (#4764) 2024-12-22 17:39:41 +01:00
renovate[bot]
4c4e12a794 fix(deps): update dependency jinja2 to v3.1.5 (#4760)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-21 17:25:01 -06:00
Hayden
a3f0506ba3 chore(l10n): New Crowdin updates (#4759) 2024-12-21 16:34:18 +00:00
renovate[bot]
f46e730eb5 chore(deps): update dependency mypy to v1.14.0 (#4753)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-20 14:48:20 -06:00
Hayden
a2e54aaefc chore(l10n): New Crowdin updates (#4754) 2024-12-20 10:43:11 -06:00
renovate[bot]
2855171fda fix(deps): update dependency authlib to v1.4.0 (#4752)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-20 10:01:02 -06:00
Hayden
209e932482 chore(l10n): New Crowdin updates (#4751)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-12-19 17:48:30 +00:00
renovate[bot]
f31c8f4dac chore(deps): update dependency ruff to v0.8.4 (#4750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-19 10:52:04 -06:00
github-actions[bot]
999b19d148 docs(auto): Update image tag, for release v2.4.1 (#4746)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-12-18 21:29:01 +00:00
renovate[bot]
7d061d428f fix(deps): update dependency pydantic to v2.10.4 (#4747)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-18 15:17:50 -06:00
Hayden
2922782e5e chore(l10n): New Crowdin updates (#4743) 2024-12-18 16:28:40 +00:00
renovate[bot]
47a8383ae5 fix(deps): update dependency uvicorn to ^0.34.0 (#4727)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-18 05:01:29 +00:00
renovate[bot]
a543b89c38 fix(deps): update dependency apprise to v1.9.1 (#4740)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-18 04:48:39 +00:00
github-actions[bot]
702f8b47ac chore(auto): Update pre-commit hooks (#4732)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2024-12-17 22:37:10 -06:00
renovate[bot]
f8e4c7f5cd fix(deps): update dependency openai to v1.58.1 (#4738)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-17 21:15:07 -06:00
Michael Clark
8d325198e8 fix: Use configured server time when calling RepositoryMeals.get_today() method (#4734) 2024-12-17 20:33:35 +00:00
renovate[bot]
afd304f9e5 fix(deps): update dependency rapidfuzz to v3.11.0 (#4739)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-17 14:21:13 -06:00
renovate[bot]
59f4c51e6e fix(deps): update dependency python-multipart to ^0.0.20 (#4735)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-17 20:23:50 +11:00
renovate[bot]
613e4ef606 chore(deps): update dependency mkdocs-material to v9.5.49 (#4733)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-16 10:30:27 -06:00
github-actions[bot]
aceed2a11e docs(auto): Update image tag, for release v2.4.0 (#4722)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-12-14 22:14:46 +00:00
renovate[bot]
02682f8ad4 fix(deps): update dependency recipe-scrapers to v15.3.3 (#4725)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-14 23:04:23 +01:00
renovate[bot]
085d0ae877 fix(deps): update dependency uvicorn to ^0.33.0 (#4724)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-14 09:48:58 -06:00
boc-the-git
b3c0661f52 docs: Add October 2024 survey results (#4666)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-12-13 23:25:04 +00:00
renovate[bot]
2abae02388 fix(deps): update dependency openai to v1.57.4 (#4721)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-13 12:53:05 -06:00
renovate[bot]
e88779f9ec fix(deps): update dependency pydantic-settings to v2.7.0 (#4718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-13 15:34:20 +00:00
renovate[bot]
ba3a999ed6 chore(deps): update dependency pytest-asyncio to ^0.25.0 (#4716)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-13 09:21:38 -06:00
renovate[bot]
95aeb0ea05 chore(deps): update dependency ruff to v0.8.3 (#4712)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 20:51:01 +00:00
renovate[bot]
09cf3466e3 fix(deps): update dependency openai to v1.57.3 (#4713)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 14:38:35 -06:00
Michael Genson
cc37147a34 fix: Add Formatting for Markdown Tables (#4703)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-12-11 10:33:43 +01:00
renovate[bot]
285ccb408f fix(deps): update dependency openai to v1.57.2 (#4705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-11 09:58:49 +01:00
Kuchenpirat
945ffb34fe fix: code warnings (lint) (#4704) 2024-12-10 15:58:34 +00:00
Michael Genson
02a545dcb5 fix: Sort Food by Label on Data Management Page (#4631) 2024-12-10 14:10:07 +00:00
renovate[bot]
eecda1be4d fix(deps): update dependency openai to v1.57.1 (#4700)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-10 14:55:50 +01:00
renovate[bot]
65ab714c38 fix(deps): update dependency fastapi to v0.115.6 (#4677)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-09 11:43:18 -06:00
github-actions[bot]
1187a678ba chore(auto): Update pre-commit hooks (#4697)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2024-12-09 15:37:23 +00:00
renovate[bot]
1ec580342f chore(deps): update dependency coverage to v7.6.9 (#4688)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-09 09:25:58 -06:00
renovate[bot]
c8d3bd4495 chore(deps): update dependency mkdocs-material to v9.5.48 (#4696)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-08 15:42:08 -06:00
renovate[bot]
17d74c451e fix(deps): update dependency httpx to v0.28.1 (#4690)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-06 21:27:35 +01:00
renovate[bot]
61934537c9 fix(deps): update dependency openai to v1.57.0 (#4685)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 21:42:52 +01:00
renovate[bot]
c691418cfb chore(deps): update dependency ruff to v0.8.2 (#4683)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 15:54:38 +00:00
renovate[bot]
d74bcd8954 fix(deps): update dependency openai to v1.56.2 (#4679)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 13:25:07 +01:00
niteflyunicorns
d9a1db557c feat: Add 'No Shopping Lists Found' message (#4661)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2024-12-04 22:59:17 -06:00
Michael Genson
87504fbb05 feat: Upgrade to Python 3.12 (#4675)
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2024-12-04 22:31:26 -06:00
Hayden
0e6a40e210 fix: remove import button from recipe data view (#4680) 2024-12-04 14:41:02 -06:00
Michael Chisholm
a6cbf1308e feat: Move alembic config into mealie package for easier distribution (#4329) 2024-12-04 10:57:57 -06:00
Arshad Basha
f1e9615efd fix: Meal Plan Notes allow Submission Without Title/Note Text (#4615)
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2024-12-04 02:07:54 +00:00
renovate[bot]
497424528d fix(deps): update dependency pydantic to v2.10.3 (#4674)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-03 15:09:12 -06:00
renovate[bot]
da3e1b4c00 fix(deps): update dependency openai to v1.56.1 (#4673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-03 19:03:35 +01:00
Michael Genson
393a1e4c1a fix: Cocktail Builder Enhancements (#4672) 2024-12-03 18:47:05 +01:00
Michael Genson
4e0cf985bc feat: Recipe Finder (aka Cocktail Builder) (#4542) 2024-12-03 13:27:41 +00:00
renovate[bot]
d26e29d1c5 fix(deps): update dependency openai to v1.56.0 (#4662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-02 21:01:25 +01:00
github-actions[bot]
6ab45bbeff chore(auto): Update pre-commit hooks (#4657)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-12-02 16:22:35 +00:00
Michael Genson
a439428ab8 fix: Improve UX for new households/userrs (#4653)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-12-02 17:14:28 +01:00
renovate[bot]
60edaf4b16 fix(deps): update dependency recipe-scrapers to v15.3.2 (#4656)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-02 05:19:28 +00:00
renovate[bot]
a94bad19ff chore(deps): update dependency pylint to v3.3.2 (#4655)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-01 21:44:51 +00:00
Lukas Kühne
fa28fe51c8 docs: Update authelia link in oidc.md (#4654) 2024-12-01 21:33:23 +00:00
renovate[bot]
590bf9dbc5 chore(deps): update dependency pytest to v8.3.4 (#4652)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-01 12:05:54 -06:00
renovate[bot]
2945ea8f07 chore(deps): update dependency mkdocs-material to v9.5.47 (#4639)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-01 17:28:21 +00:00
renovate[bot]
f67f00ca53 fix(deps): update dependency python-multipart to ^0.0.19 (#4638)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-01 11:18:18 -06:00
renovate[bot]
2adbe5a196 fix(deps): update dependency pillow-heif to ^0.21.0 (#4625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-30 06:46:33 +00:00
renovate[bot]
f4d23b9e1c chore(deps): update dependency ruff to v0.8.1 (#4624)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-30 06:35:34 +00:00
renovate[bot]
f63196d570 fix(deps): update dependency python-multipart to ^0.0.18 (#4623)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-30 06:24:47 +00:00
renovate[bot]
48549893bc fix(deps): update dependency openai to v1.55.3 (#4622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-30 06:12:02 +00:00
renovate[bot]
3b3d8fc89d fix(deps): update dependency httpx to ^0.28.0 (#4621)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-30 06:01:00 +00:00
renovate[bot]
29f47d1722 fix(deps): update dependency orjson to v3.10.12 (#4601)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-30 05:46:53 +00:00
renovate[bot]
8821653dcb fix(deps): update dependency pydantic to v2.10.2 (#4588)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-29 23:34:53 -06:00
renovate[bot]
c0a4ae27b0 fix(deps): update dependency pyjwt to v2.10.1 (#4620)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-28 01:37:21 -06:00
renovate[bot]
12a90b6334 fix(deps): update dependency openai to v1.55.2 (#4618)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-27 23:07:04 +01:00
github-actions[bot]
79e712503c docs(auto): Update image tag, for release v2.3.0 (#4617)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2024-11-27 10:16:29 +00:00
renovate[bot]
d6de0d0b3d chore(deps): update dependency coverage to v7.6.8 (#4603)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-26 20:13:43 +01:00
Kenni Lund
dce6d86cbf docs: Update API path in home-assistant.md (#4614) 2024-11-26 18:00:17 +00:00
renovate[bot]
3539385429 fix(deps): update dependency uvicorn to v0.32.1 (#4586)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-26 12:25:04 +01:00
renovate[bot]
e97f1f805b fix(deps): update dependency openai to v1.55.1 (#4609)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-26 10:21:29 +01:00
renovate[bot]
83edff1c78 chore(deps): update dependency mkdocs-material to v9.5.46 (#4607)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-25 16:50:56 +01:00
Saireddy1369
efb72b1859 fix: Incorrect date format in Add to mealplan modal (#4605) 2024-11-25 15:38:50 +00:00
github-actions[bot]
5afa611ec3 chore(auto): Update pre-commit hooks (#4606)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2024-11-25 09:34:11 +00:00
Michael Genson
82cc9e11f7 dev: Fix json2ts codegen (#4590) 2024-11-25 09:25:35 +00:00
Michael Genson
3fc120236d chore(deps): Bump Ruff (#4602) 2024-11-24 14:56:39 +11:00
renovate[bot]
e32bae4575 fix(deps): update dependency openai to v1.55.0 (#4587)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-21 09:53:19 +01:00
Michael Genson
327da02fc8 feat: Structured Yields (#4489)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-11-20 08:46:27 -06:00
renovate[bot]
c8cd68b4f0 chore(deps): update dependency mkdocs-material to v9.5.45 (#4585)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-20 14:43:04 +01:00
renovate[bot]
f31b76e2ff fix(deps): update dependency bcrypt to v4.2.1 (#4583)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-20 14:05:14 +01:00
Jonas Graubner
426f91fb50 fix: Enable OIDC with Synology SSO Server (#4544) 2024-11-19 14:15:58 +00:00
renovate[bot]
f194a6d8c8 fix(deps): update dependency openai to v1.54.5 (#4580)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-19 14:16:42 +01:00
Dom
6e4f9a234b fix: 4497 (#4562)
Co-authored-by: Dominik <dominik.ziegenhagel@gmail.com>
2024-11-19 00:35:49 +00:00
github-actions[bot]
76eccdff8c chore(auto): Update pre-commit hooks (#4572)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2024-11-18 21:42:40 +01:00
renovate[bot]
a7330f11e6 fix(deps): update dependency pyjwt to v2.10.0 (#4567)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-18 14:23:58 -06:00
Brian Choromanski
d993ddf600 docs: Update docker compose examples (#4550) 2024-11-17 15:34:01 +00:00
Kuchenpirat
54f994defc fix: container name for account unlock and password reset (#4568) 2024-11-17 09:20:18 -06:00
Ryan William O'Hara
db4789099a fix: Update Firefox User-Agent string (#4546)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-11-17 15:10:11 +01:00
renovate[bot]
172698afce chore(deps): update dependency coverage to v7.6.7 (#4557)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-15 15:28:55 +00:00
renovate[bot]
8f9d602004 chore(deps): update dependency ruff to v0.7.4 (#4556)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-15 15:17:44 +00:00
renovate[bot]
d3b574ea84 chore(deps): update dependency coverage to v7.6.6 (#4555)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-15 09:06:57 -06:00
Michael Genson
4f5a0bf9f5 fix: Wakelock Toggle Broken (#4554) 2024-11-15 07:26:55 +01:00
renovate[bot]
d965ceaff6 chore(deps): update dependency coverage to v7.6.5 (#4552)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 11:29:19 -06:00
Michael Genson
bcd0fcc920 feat: Improve Recipe Imports with Cleaner (#4517) 2024-11-13 15:30:50 +00:00
renovate[bot]
085c489b05 fix(deps): update dependency openai to v1.54.4 (#4549)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 19:46:14 +00:00
renovate[bot]
af46a6ce33 fix(deps): update dependency fastapi to v0.115.5 (#4548)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 19:35:40 +00:00
Kuchenpirat
b1f81b4b95 fix: Cookmode hide additional ingredients if all ingredients are linked (#4539) 2024-11-12 15:12:41 +00:00
Arsène Reymond
622c1b11f5 feat: Groups/households custom invitations (#4252)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2024-11-12 03:30:08 +00:00
Lex
7ada42a791 feat: Add Ingredients to Recipe Query Filter options (#4534)
Co-authored-by: alexxxxxxxandria <github@lex.alexandria.best>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2024-11-11 17:20:29 +00:00
Brian Turek
ea4adfa335 fix: Add support for HTTPS in healthcheck (#4538) 2024-11-11 10:58:12 -06:00
github-actions[bot]
365d77e599 chore(auto): Update pre-commit hooks (#4535)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-11-11 12:40:55 +01:00
github-actions[bot]
0ef8c52c6a docs(auto): Update image tag, for release v2.2.0 (#4536)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-11-11 12:31:07 +01:00
Tarek Auf der Strasse
d419acd61e feat: Added a dedicated cookmode dialog that allows for individual scrolling (#4464) 2024-11-11 12:21:44 +01:00
1035 changed files with 746979 additions and 73208 deletions

View File

@@ -1,35 +1,21 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.224.2/containers/python-3/.devcontainer/base.Dockerfile
# [Choice] Python version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.10, 3.9, 3.8, 3.7, 3.6, 3-bullseye, 3.10-bullseye, 3.9-bullseye, 3.8-bullseye, 3.7-bullseye, 3.6-bullseye, 3-buster, 3.10-buster, 3.9-buster, 3.8-buster, 3.7-buster, 3.6-buster
ARG VARIANT="3.10-bullseye"
FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}
ARG VARIANT="3.12-bullseye"
FROM mcr.microsoft.com/devcontainers/python:${VARIANT}
# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
ARG NODE_VERSION="none"
RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
# install poetry - respects $POETRY_VERSION & $POETRY_HOME
RUN echo "export PROMPT_COMMAND='history -a'" >> /home/vscode/.bashrc \
&& echo "export HISTFILE=~/commandhistory/.bash_history" >> /home/vscode/.bashrc \
&& chown vscode:vscode -R /home/vscode/
RUN npm install -g @go-task/cli
RUN npm install -g json-schema-to-typescript
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=off \
PIP_DISABLE_PIP_VERSION_CHECK=on \
PIP_DEFAULT_TIMEOUT=100 \
POETRY_HOME="/opt/poetry" \
POETRY_VIRTUALENVS_IN_PROJECT=true
# prepend poetry and venv to path
ENV PATH="$POETRY_HOME/bin:$PATH"
RUN curl -sSL https://install.python-poetry.org | python3 -
# RUN poetry config virtualenvs.create false
# Install additional OS packages
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
curl \
@@ -39,5 +25,9 @@ RUN apt-get update \
libsasl2-dev libldap2-dev libssl-dev \
gnupg gnupg2 gnupg1
# create directory used for Docker Secrets
# Install uv
RUN pip install uv
ENV UV_LINK_MODE=copy
# Create directory for Docker Secrets
RUN mkdir -p /run/secrets

View File

@@ -9,9 +9,9 @@
// Update 'VARIANT' to pick a Python version: 3, 3.10, 3.9, 3.8, 3.7, 3.6
// Append -bullseye or -buster to pin to an OS version.
// Use -bullseye variants on local on arm64/Apple Silicon.
"VARIANT": "3.10-bullseye",
"VARIANT": "3.12-bullseye",
// Options
"NODE_VERSION": "16"
"NODE_VERSION": "22"
}
},
"mounts": [
@@ -23,7 +23,6 @@
"settings": {
"python.defaultInterpreterPath": "/usr/local/bin/python",
"python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8",
"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
"python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf",
"mypy.runUsingActiveInterpreter": true
},
@@ -31,10 +30,10 @@
"charliermarsh.ruff",
"dbaeumer.vscode-eslint",
"matangover.mypy",
"ms-python.black-formatter",
"ms-python.pylint",
"ms-python.python",
"ms-python.vscode-pylance",
"streetsidesoftware.code-spell-checker-cspell-bundled-dictionaries",
"Vue.volar"
]
}
@@ -42,18 +41,23 @@
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [
3000,
8000, // used by mkdocs
9000,
9091, // used by docker production
24678 // used by nuxt when hot-reloading using polling
],
// Use 'onCreateCommand' to run commands at the end of container creation.
// Use 'postCreateCommand' to run commands after the container is created.
"onCreateCommand": "sudo chown -R vscode:vscode /workspaces/mealie/frontend/node_modules && task setup",
"onCreateCommand": "sudo chown -R vscode:vscode /workspaces/mealie/frontend/node_modules /home/vscode/commandhistory && task setup --force",
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode",
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"dockerDashComposeVersion": "v2"
}
}
},
"appPort": [
"3000:3000",
"9000:9000"
]
}

View File

@@ -6,7 +6,7 @@
.idea
.vscode
__pycache__/
**/__pycache__/
*.py[cod]
*$py.class
*.so
@@ -25,10 +25,10 @@ venv
*/node_modules
*/dist
/dist/
*/data/db
*/mealie/test
*/mealie/.temp
model.crfmodel
/mealie/frontend/
crowdin.yml

240
.github/copilot-instructions.md vendored Normal file
View File

@@ -0,0 +1,240 @@
# Mealie Development Guide for AI Agents
## Project Overview
Mealie is a self-hosted recipe manager, meal planner, and shopping list application with a FastAPI backend (Python 3.12) and Nuxt 3 frontend (Vue 3 + TypeScript). It uses SQLAlchemy ORM with support for SQLite and PostgreSQL databases.
**Development vs Production:**
- **Development:** Frontend (port 3000) and backend (port 9000) run as separate processes
- **Production:** Frontend is statically generated and served via FastAPI's SPA module (`mealie/routes/spa/`) in a single container
## Architecture & Key Patterns
### Backend Architecture (mealie/)
**Repository-Service-Controller Pattern:**
- **Controllers** (`mealie/routes/**/controller_*.py`): Inherit from `BaseUserController` or `BaseAdminController`, handle HTTP concerns, delegate to services
- **Services** (`mealie/services/`): Business logic layer, inherit from `BaseService`, coordinate repos and external dependencies
- **Repositories** (`mealie/repos/`): Data access layer using SQLAlchemy, accessed via `AllRepositories` factory
- Get repos via dependency injection: `repos: AllRepositories = Depends(get_repositories)`
- All repos scoped to group/household context automatically
**Route Organization:**
- Routes in `mealie/routes/` organized by domain (auth, recipe, groups, households, admin)
- Use `APIRouter` with FastAPI dependency injection
- Apply `@router.get/post/put/delete` decorators with Pydantic response models
- Route controllers use `HttpRepo` mixin for common CRUD operations (see `mealie/routes/_base/mixins.py`)
**Schemas & Type Generation:**
- Pydantic schemas in `mealie/schema/` with strict separation: `*In`, `*Out`, `*Create`, `*Update` suffixes
- Auto-exported from submodules via `__init__.py` files (generated by `task dev:generate`)
- TypeScript types auto-generated from Pydantic schemas - **never manually edit** `frontend/lib/api/types/`
**Database & Sessions:**
- Session management via `Depends(generate_session)` in FastAPI routes
- Use `session_context()` context manager in services/scripts
- SQLAlchemy models in `mealie/db/models/`, migrations in `mealie/alembic/`
- Create migrations: `task py:migrate -- "description"`
### Frontend Architecture (frontend/)
**Component Organization (strict naming conventions):**
- **Domain Components** (`components/Domain/`): Feature-specific, prefix with domain (e.g., `AdminDashboard`)
- **Global Components** (`components/global/`): Reusable primitives, prefix with `Base` (e.g., `BaseButton`)
- **Layout Components** (`components/Layout/`): Layout-only, prefix with `App` if props or `The` if singleton
- **Page Components** (`components/` with page prefix): Last resort for breaking up complex pages
**API Client Pattern:**
- API clients in `frontend/lib/api/` extend `BaseAPI`, `BaseCRUDAPI`, or `BaseCRUDAPIReadOnly`
- Types imported from auto-generated `frontend/lib/api/types/` (DO NOT EDIT MANUALLY)
- Composables in `frontend/composables/` for shared state and API logic (e.g., `use-mealie-auth.ts`)
- Use `useAuthBackend()` for authentication state, `useMealieAuth()` for user management
**State Management:**
- Nuxt 3 composables for state (no Vuex)
- Auth state via `use-mealie-auth.ts` composable
- Prefer composables over global state stores
## Essential Commands (via Task/Taskfile.yml)
**Development workflow:**
```bash
task setup # Install all dependencies (Python + Node)
task dev:services # Start Postgres & Mailpit containers
task py # Start FastAPI backend (port 9000)
task ui # Start Nuxt frontend (port 3000)
task docs # Start MkDocs documentation server
```
**Code generation (REQUIRED after schema changes):**
```bash
task dev:generate # Generate TypeScript types, schema exports, test helpers
```
**Testing & Quality:**
```bash
task py:test # Run pytest (supports args: task py:test -- -k test_name)
task py:check # Format + lint + type-check + test (full validation)
task py:format # Ruff format
task py:lint # Ruff check
task py:mypy # Type checking
task ui:test # Vitest frontend tests
task ui:check # Frontend lint + test
```
**Database:**
```bash
task py:migrate -- "description" # Generate Alembic migration
task py:postgres # Run backend with PostgreSQL config
```
**Docker:**
```bash
task docker:prod # Build and run production Docker compose
```
## Critical Development Practices
### Python Backend
1. **Always use `uv` for Python commands** (not `python` or `pip`):
```bash
uv run python mealie/app.py
uv run pytest tests/
```
2. **Type hints are mandatory:** Use mypy-compatible annotations, handle Optional types explicitly
3. **Dependency injection pattern:**
```python
from fastapi import Depends
from mealie.repos.all_repositories import get_repositories, AllRepositories
def my_route(
repos: AllRepositories = Depends(get_repositories),
user: PrivateUser = Depends(get_current_user)
):
recipe = repos.recipes.get_one(recipe_id)
```
4. **Settings & Configuration:**
- Get settings: `settings = get_app_settings()` (cached singleton)
- Get directories: `dirs = get_app_dirs()`
- Never instantiate `AppSettings()` directly
5. **Testing:**
- Fixtures in `tests/fixtures/`
- Use `api_client` fixture for integration tests
- Follow existing patterns in `tests/integration_tests/` and `tests/unit_tests/`
### Frontend
1. **Run code generation after backend schema changes:** `task dev:generate`
2. **TypeScript strict mode:** All code must pass type checking
3. **Component naming:** Follow strict conventions (see Architecture section above)
4. **API calls pattern:**
```typescript
const api = useUserApi();
const recipe = await api.recipes.getOne(recipeId);
```
5. **Composables for shared logic:** Prefer composables in `composables/` over inline code duplication
6. **Translations:** Only modify `en-US` locale files when adding new translation strings - other locales are managed via Crowdin and **must never be modified** (PRs modifying non-English locales will be rejected)
### Cross-Cutting Concerns
1. **Code generation is source of truth:** After Pydantic schema changes, run `task dev:generate` to update:
- TypeScript types (`frontend/lib/api/types/`)
- Schema exports (`mealie/schema/*/__init__.py`)
- Test data paths and routes
2. **Multi-tenancy:** All data scoped to **groups** and **households**:
- Groups contain multiple households
- Households contain recipes, meal plans, shopping lists
- Repositories automatically filter by group/household context
3. **Pre-commit hooks:** Install via `task setup:py`, enforces Ruff formatting/linting
4. **Testing before PRs:** Run `task py:check` and `task ui:check` before submitting PRs
## Pull Request Best Practices
### Before Submitting a PR
1. **Draft PRs are optional:** Create a draft PR early if you want feedback while working, or open directly as ready when complete
2. **Verify code generation:** If you modified Pydantic schemas, ensure `task dev:generate` was run
3. **Follow Conventional Commits:** Title your PR according to the conventional commits format (see PR template)
4. **Add release notes:** Include user-facing changes in the PR description
### What to Review
**Architecture & Patterns:**
- Does the code follow the repository-service-controller pattern?
- Are controllers delegating business logic to services?
- Are services coordinating repositories, not accessing the database directly?
- Is dependency injection used properly (`Depends(get_repositories)`, `Depends(get_current_user)`)?
**Data Scoping:**
- Are repositories correctly scoped to group/household context?
- Do route handlers properly validate group/household ownership before operations?
- Are multi-tenant boundaries enforced (users can't access other groups' data)?
**Type Safety:**
- Are type hints present on all functions and methods?
- Are Pydantic schemas using correct suffixes (`*In`, `*Out`, `*Create`, `*Update`)?
- For frontend, does TypeScript code pass strict type checking?
**Generated Files:**
- Verify `frontend/lib/api/types/` files weren't manually edited (they're auto-generated)
- Check that `mealie/schema/*/__init__.py` exports match actual schema files (auto-generated)
- If schemas changed, confirm generated files were updated via `task dev:generate`
**Code Quality:**
- Is the code readable and well-organized?
- Are complex operations documented with clear comments?
- Do component names follow the strict naming conventions (Domain/Global/Layout/Page prefixes)?
- Are composables used for shared frontend logic instead of duplication?
**Translations:**
- Were only `en-US` locale files modified for new translation strings?
- Verify no other locale files (managed by Crowdin) were touched
**Database Changes:**
- Are Alembic migrations included for schema changes?
- Are migrations tested against both SQLite and PostgreSQL?
### Review Etiquette
- Be constructive and specific in feedback
- Suggest code examples when proposing changes
- Focus on architecture and logic - formatting/linting is handled by CI
- Use "Approve" when ready to merge, "Request Changes" for blocking issues, "Comment" for non-blocking suggestions
## Common Gotchas
- **Don't manually edit generated files:** `frontend/lib/api/types/`, schema `__init__.py` files
- **Repository context:** Repos are group/household-scoped - passing wrong IDs causes 404s
- **Session handling:** Don't create sessions manually, use dependency injection or `session_context()`
- **Schema changes require codegen:** After changing Pydantic models, run `task dev:generate`
- **Translation files:** Only modify `en-US` locale files - all other locales are managed by Crowdin
- **Dev containers:** This project uses VS Code dev containers - leverage the pre-configured environment
- **Task commands:** Use `task` commands instead of direct tool invocation for consistency
## Key Files to Reference
- `Taskfile.yml` - All development commands and workflows
- `mealie/routes/_base/base_controllers.py` - Controller base classes and patterns
- `mealie/repos/repository_factory.py` - Repository factory and available repos
- `frontend/lib/api/base/base-clients.ts` - API client base classes
- `tests/conftest.py` - Test fixtures and setup
- `dev/code-generation/main.py` - Code generation entry point
## Additional Resources
- [Documentation](https://docs.mealie.io/)
- [Contributors Guide](https://nightly.mealie.io/contributors/developers-guide/code-contributions/)
- [Discord](https://discord.gg/QuStdQGSGK)

View File

@@ -20,20 +20,6 @@
-->
## What type of PR is this?
_(REQUIRED)_
<!--
Delete any of the following that do not apply:
-->
- feature
- bug
- documentation
- cleanup
- dev (Internal development)
## What this PR does / why we need it:
_(REQUIRED)_

97
.github/workflows/build-package.yml vendored Normal file
View File

@@ -0,0 +1,97 @@
name: Build Package
on:
workflow_call:
inputs:
tag:
required: true
type: string
jobs:
build-frontend:
name: Build frontend
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎
uses: actions/checkout@v4
- name: Setup node env 🏗
uses: actions/setup-node@v4.0.0
with:
node-version: 22
check-latest: true
- name: Get yarn cache directory path 🛠
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: Cache node_modules 📦
uses: actions/cache@v4
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies 👨🏻‍💻
run: yarn
working-directory: "frontend"
- name: Run Build 🚚
run: yarn generate
working-directory: "frontend"
- name: Archive built frontend
uses: actions/upload-artifact@v4
with:
name: frontend-dist
path: frontend/dist
retention-days: 5
build-package:
name: Build Python package
needs: build-frontend
runs-on: ubuntu-latest
steps:
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Check out repository
uses: actions/checkout@v4
- name: Set up python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
run: pip install uv
- name: Retrieve built frontend
uses: actions/download-artifact@v4
with:
name: frontend-dist
path: mealie/frontend
- name: Override __init__.py
run: |
echo "__version__ = \"${{ inputs.tag }}\"" > ./mealie/__init__.py
- name: Build package and requirements.txt
env:
SKIP_PACKAGE_DEPS: true
run: |
task py:package
- name: Archive built package
uses: actions/upload-artifact@v4
with:
name: backend-dist
path: dist
retention-days: 5

50
.github/workflows/docs.yml vendored Normal file
View File

@@ -0,0 +1,50 @@
name: Deploy Documentation
on:
push:
branches: [mealie-next]
paths:
- 'docs/**'
- '.github/workflows/docs.yml'
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Install dependencies
run: uv sync --only-group docs --no-install-project
- name: Build docs
run: uv run --no-project mkdocs build -d site
working-directory: docs
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/site
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

View File

@@ -13,16 +13,23 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22
cache: 'yarn'
cache-dependency-path: ./tests/e2e/yarn.lock
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Retrieve Python package
uses: actions/download-artifact@v4
with:
name: backend-dist
path: dist
- name: Build Image
uses: docker/build-push-action@v5
with:
file: ./docker/Dockerfile
context: .
build-contexts: |
packages=dist
push: false
load: true
tags: mealie:e2e

112
.github/workflows/locale-sync.yml vendored Normal file
View File

@@ -0,0 +1,112 @@
name: Automatic Locale Sync
on:
schedule:
# Run every Sunday at 2 AM UTC
- cron: "0 2 * * 0"
workflow_dispatch:
# Allow manual triggering from the GitHub UI
permissions:
contents: write # To checkout, commit, and push changes
pull-requests: write # To create pull requests
jobs:
sync-locales:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
run: pip install uv
- name: Load cached venv
id: cached-python-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ runner.os }}-${{ hashFiles('**/uv.lock') }}
- name: Check venv cache
id: cache-validate
if: steps.cached-python-dependencies.outputs.cache-hit == 'true'
run: |
echo "import fastapi;print('venv good?')" > test.py && uv run python test.py && echo "cache-hit-success=true" >> $GITHUB_OUTPUT
rm test.py
continue-on-error: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install libsasl2-dev libldap2-dev libssl-dev
uv sync --group dev
if: steps.cached-python-dependencies.outputs.cache-hit != 'true'
- name: Run locale generation
run: |
cd dev/code-generation
uv run python main.py locales
env:
CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }}
- name: Check for changes
id: changes
run: |
if git diff --quiet; then
echo "has_changes=false" >> $GITHUB_OUTPUT
else
echo "has_changes=true" >> $GITHUB_OUTPUT
fi
- name: Commit and create PR
if: steps.changes.outputs.has_changes == 'true'
run: |
# Configure git
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
# Use the current branch as the base
BASE_BRANCH="${{ github.ref_name }}"
echo "Using base branch: $BASE_BRANCH"
# Create a new branch from the base branch
BRANCH_NAME="auto-locale-sync-$(date +%Y%m%d-%H%M%S)"
git checkout -b "$BRANCH_NAME"
# Add and commit changes
git add .
git commit -m "chore: crowdin locale sync"
# Push the branch
git push origin "$BRANCH_NAME"
sleep 2
# Create PR using GitHub CLI with explicit repository
gh pr create \
--repo "${{ github.repository }}" \
--title "chore(l10n): Crowdin locale sync" \
--base "$BASE_BRANCH" \
--head "$BRANCH_NAME" \
--label "l10n" \
--body "## Summary
Automatically generated locale updates from the weekly sync job.
## Changes
- Updated frontend locale files
- Generated from latest translation sources" \
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: No changes detected
if: steps.changes.outputs.has_changes == 'false'
run: echo "No locale changes detected, skipping PR creation"

View File

@@ -18,13 +18,19 @@ concurrency:
jobs:
backend-tests:
name: "Backend Server Tests"
uses: ./.github/workflows/partial-backend.yml
uses: ./.github/workflows/test-backend.yml
frontend-tests:
name: "Frontend and End-to-End Tests"
uses: ./.github/workflows/partial-frontend.yml
name: "Frontend Tests"
uses: ./.github/workflows/test-frontend.yml
build-release:
build-package:
name: Build Package
uses: ./.github/workflows/build-package.yml
with:
tag: nightly
publish:
permissions:
contents: read
packages: write
@@ -35,10 +41,11 @@ jobs:
id-token: write
name: Build Tagged Release
if: github.repository == 'mealie-recipes/mealie'
uses: ./.github/workflows/partial-builder.yml
uses: ./.github/workflows/publish.yml
needs:
- frontend-tests
- backend-tests
- build-package
with:
tag: nightly
secrets:
@@ -49,7 +56,7 @@ jobs:
name: Notify Discord
if: github.repository == 'mealie-recipes/mealie'
needs:
- build-release
- publish
runs-on: ubuntu-latest
steps:
- name: Discord notification

View File

@@ -35,18 +35,22 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Override __init__.py
run: |
echo "__version__ = \"${{ inputs.tag }}\"" > ./mealie/__init__.py
- uses: depot/setup-action@v1
- name: Retrieve Python package
uses: actions/download-artifact@v4
with:
name: backend-dist
path: dist
- name: Build and push Docker image, via Depot.dev
uses: depot/build-push-action@v1
with:
project: srzjb6mhzm
file: ./docker/Dockerfile
context: .
build-contexts: |
packages=dist
platforms: linux/amd64,linux/arm64
push: true
tags: |

View File

@@ -31,6 +31,7 @@ jobs:
deps
auto
l10n
config
# Configure that a scope must always be provided.
requireScope: false
# If the PR contains one of these newline-delimited labels, the

View File

@@ -16,20 +16,16 @@ jobs:
backend-tests:
name: "Backend Server Tests"
uses: ./.github/workflows/partial-backend.yml
uses: ./.github/workflows/test-backend.yml
frontend-tests:
name: "Frontend and End-to-End Tests"
uses: ./.github/workflows/partial-frontend.yml
name: "Frontend Tests"
uses: ./.github/workflows/test-frontend.yml
container-scanning:
name: "Trivy Container Scanning"
uses: ./.github/workflows/partial-trivy-container-scanning.yml
end-to-end:
name: "End-to-End Tests"
uses: ./.github/workflows/e2e.yml
code-ql:
name: "CodeQL"
uses: ./.github/workflows/codeql.yml
@@ -37,3 +33,33 @@ jobs:
actions: read
contents: read
security-events: write
build-package:
name: "Build Python package"
uses: ./.github/workflows/build-package.yml
with:
tag: e2e
end-to-end:
name: "End-to-End Tests"
needs: build-package
uses: ./.github/workflows/e2e.yml
publish-image:
name: "Publish PR Image"
if: contains(github.event.pull_request.labels.*.name, 'build-image') && github.repository == 'mealie-recipes/mealie'
permissions:
contents: read
packages: write
# The id-token write permission is needed to connect to Depot.dev
# as part of the partial-builder.yml action. It needs to be declared
# in the parent action, as noted here:
# https://github.com/orgs/community/discussions/76409#discussioncomment-8131390
id-token: write
needs: build-package
uses: ./.github/workflows/publish.yml
with:
tag: pr-${{ github.event.pull_request.number }}
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}

View File

@@ -5,15 +5,77 @@ on:
types: [published]
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:
name: "Backend Server Tests"
uses: ./.github/workflows/partial-backend.yml
uses: ./.github/workflows/test-backend.yml
needs:
- commit-version-bump
frontend-tests:
name: "Frontend and End-to-End Tests"
uses: ./.github/workflows/partial-frontend.yml
name: "Frontend Tests"
uses: ./.github/workflows/test-frontend.yml
needs:
- commit-version-bump
build-release:
build-package:
name: Build Package
uses: ./.github/workflows/build-package.yml
needs:
- commit-version-bump
with:
tag: ${{ github.event.release.tag_name }}
publish:
permissions:
contents: read
packages: write
@@ -23,10 +85,11 @@ jobs:
# https://github.com/orgs/community/discussions/76409#discussioncomment-8131390
id-token: write
name: Build Tagged Release
uses: ./.github/workflows/partial-builder.yml
uses: ./.github/workflows/publish.yml
needs:
- backend-tests
- frontend-tests
- build-package
with:
tag: ${{ github.event.release.tag_name }}
tags: |
@@ -36,10 +99,48 @@ jobs:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
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:
name: Notify Discord
needs:
- build-release
- publish
if: success()
runs-on: ubuntu-latest
steps:
- name: Discord notification
@@ -48,41 +149,3 @@ jobs:
uses: Ilshidur/action-discord@0.3.2
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 }}"
update-image-tags:
name: Update image tag in sample docker-compose files
needs:
- build-release
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/^\s*"version": "[^"]*"/"version": "${{ 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

@@ -18,7 +18,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.12"
- name: Set PY
shell: bash

View File

@@ -16,12 +16,13 @@ jobs:
with:
stale-issue-label: 'stale'
exempt-issue-labels: 'pinned,security,early-stages,bug: confirmed,feedback,task'
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
days-before-issue-stale: 30
days-before-issue-close: 5
stale-issue-message: 'This issue has been automatically marked as stale because it has been open 90 days with no activity.'
days-before-issue-stale: 90
# This stops an issue from ever getting closed automatically.
days-before-issue-close: -1
stale-pr-label: 'stale'
stale-pr-message: 'This PR is stale because it has been open 45 days with no activity.'
days-before-pr-stale: 45
stale-pr-message: 'This PR has been automatically marked as stale because it has been open 90 days with no activity.'
days-before-pr-stale: 90
# This stops a PR from ever getting closed automatically.
days-before-pr-close: -1
# If an issue/PR has a milestone, it's exempt from being marked as stale.

View File

@@ -1,4 +1,4 @@
name: Backend Test/Lint
name: Backend Lint and Test
on:
workflow_call:
@@ -47,26 +47,23 @@ jobs:
- name: Set up python
uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.12"
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
- name: Install uv
run: pip install uv
- name: Load cached venv
id: cached-poetry-dependencies
id: cached-python-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}
key: venv-${{ runner.os }}-${{ hashFiles('**/uv.lock') }}
- name: Check venv cache
id: cache-validate
if: steps.cached-poetry-dependencies.outputs.cache-hit == 'true'
if: steps.cached-python-dependencies.outputs.cache-hit == 'true'
run: |
echo "import fastapi;print('venv good?')" > test.py && poetry run python test.py && echo "cache-hit-success=true" >> $GITHUB_OUTPUT
echo "import fastapi;print('venv good?')" > test.py && uv run python test.py && echo "cache-hit-success=true" >> $GITHUB_OUTPUT
rm test.py
continue-on-error: true
@@ -74,13 +71,12 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install libsasl2-dev libldap2-dev libssl-dev
poetry install
poetry add "psycopg2-binary==2.9.9"
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' || steps.cache-validate.outputs.cache-hit-success != 'true'
uv sync --group dev --extra pgsql
if: steps.cached-python-dependencies.outputs.cache-hit != 'true' || steps.cache-validate.outputs.cache-hit-success != 'true'
- name: Formatting (Ruff)
run: |
poetry run ruff format . --check
uv run ruff format . --check
- name: Lint (Ruff)
run: |

View File

@@ -1,4 +1,4 @@
name: Frontend Build/Lin
name: Frontend Lint and Test
on:
workflow_call:
@@ -14,7 +14,7 @@ jobs:
- name: Setup node env 🏗
uses: actions/setup-node@v4.0.0
with:
node-version: 16
node-version: 22
check-latest: true
- name: Get yarn cache directory path 🛠
@@ -34,44 +34,14 @@ jobs:
run: yarn
working-directory: "frontend"
- name: Prepare nuxt 🚀
run: yarn nuxt prepare
working-directory: "frontend"
- name: Run linter 👀
run: yarn lint
run: yarn lint --max-warnings=0
working-directory: "frontend"
- name: Run tests 🧪
run: yarn test:ci
working-directory: "frontend"
build:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎
uses: actions/checkout@v4
- name: Setup node env 🏗
uses: actions/setup-node@v4.0.0
with:
node-version: 16
check-latest: true
- name: Get yarn cache directory path 🛠
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: Cache node_modules 📦
uses: actions/cache@v4
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies 👨🏻‍💻
run: yarn
working-directory: "frontend"
- name: Run Build 🚚
run: yarn build
working-directory: "frontend"

13
.gitignore vendored
View File

@@ -10,6 +10,9 @@ docs/site/
*temp/*
.secret
frontend/dist/
frontend/.output/*
frontend/.yarn/*
frontend/.yarnrc.yml
dev/code-generation/generated/*
dev/data/mealie.db-journal
@@ -17,6 +20,7 @@ dev/data/backups/*
dev/data/debug/*
dev/data/img/*
dev/data/migration/*
dev/data/templates/*
dev/data/users/*
dev/data/groups/*
@@ -52,7 +56,7 @@ pnpm-debug.log*
env/
build/
develop-eggs/
/dist/
downloads/
eggs/
.eggs/
@@ -66,6 +70,9 @@ wheels/
.installed.cfg
*.egg
# frontend copied into Python module for packaging purposes
/mealie/frontend/
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
@@ -154,12 +161,12 @@ dev/data/backups/dev_sample_data*.zip
dev/data/recipes/*
dev/scripts/output/app_routes.py
dev/scripts/output/javascriptAPI/*
mealie/services/scraper/ingredient_nlp/model.crfmodel
dev/code-generation/generated/openapi.json
dev/code-generation/generated/test_routes.py
mealie/services/parser_services/crfpp/model.crfmodel
lcov.info
dev/code-generation/openapi.json
.run/
.task/*
.dev.env
frontend/eslint.config.deprecated.js

View File

@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: v6.0.0
hooks:
- id: check-yaml
exclude: "mkdocs.yml"
@@ -12,7 +12,7 @@ repos:
exclude: ^tests/data/
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.7.2
rev: v0.14.10
hooks:
- id: ruff
- id: ruff-format

12
.vscode/settings.json vendored
View File

@@ -18,6 +18,7 @@
"source.organizeImports": "never"
},
"editor.formatOnSave": true,
"eslint.useFlatConfig": true,
"eslint.workingDirectories": [
"./frontend"
],
@@ -54,11 +55,18 @@
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"package.json": "package-lock.json, yarn.lock, .eslintrc.js, tsconfig.json, .prettierrc, .editorconfig",
"pyproject.toml": "poetry.lock, alembic.ini, .pylintrc",
"pyproject.toml": "uv.lock, alembic.ini, .pylintrc",
"netlify.toml": "runtime.txt",
"README.md": "LICENSE, SECURITY.md"
},
"[typescript]": {
"editor.formatOnSave": true
},
"[vue]": {
"editor.formatOnSave": false
"editor.formatOnSave": true
},
"[python]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "charliermarsh.ruff"
}
}

View File

@@ -28,7 +28,7 @@ tasks:
docs:gen:
desc: runs the API documentation generator
cmds:
- poetry run python dev/code-generation/gen_docs_api.py
- uv run python dev/code-generation/gen_docs_api.py
docs:
desc: runs the documentation server
@@ -36,45 +36,42 @@ tasks:
deps:
- docs:gen
cmds:
- poetry run python -m mkdocs serve
- uv run python -m mkdocs serve
setup:ui:
desc: setup frontend dependencies
dir: frontend
run: once
cmds:
- yarn install
sources:
- package.json
- yarn.lock
generates:
- node_modules/**
setup:py:
desc: setup python dependencies
run: once
cmds:
- poetry install --with main,dev,postgres
- poetry run pre-commit install
setup:model:
desc: setup nlp model
vars:
MODEL_URL: https://github.com/mealie-recipes/nlp-model/releases/download/v1.0.0/model.crfmodel
OUTPUT: ./mealie/services/parser_services/crfpp/model.crfmodel
- uv sync --extra pgsql --group dev
- uv run pre-commit install
sources:
# using pyproject.toml as the dependency since this should only ever need to run once
# during setup. There is perhaps a better way to do this.
- ./pyproject.toml
generates:
- ./mealie/services/parser_services/crfpp/model.crfmodel
cmds:
- curl -L0 {{ .MODEL_URL }} --output {{ .OUTPUT }}
- uv.lock
- pyproject.toml
- .pre-commit-config.yaml
setup:
desc: setup all dependencies
deps:
- setup:ui
- setup:py
- setup:model
dev:generate:
desc: run code generators
cmds:
- poetry run python dev/code-generation/main.py
- uv run python dev/code-generation/main.py {{ .CLI_ARGS }}
- task: docs:gen
- task: py:format
dev:services:
@@ -91,28 +88,30 @@ tasks:
- rm -r ./dev/data/recipes/
- rm -r ./dev/data/users/
- rm -f ./dev/data/mealie*.db
- rm -f ./dev/data/mealie*.db-shm
- rm -f ./dev/data/mealie*.db-wal
- rm -f ./dev/data/mealie.log
- rm -f ./dev/data/.secret
py:mypy:
desc: runs python type checking
cmds:
- poetry run mypy mealie
- uv run mypy mealie
py:test:
desc: runs python tests (support args after '--')
cmds:
- poetry run pytest {{ .CLI_ARGS }}
- uv run pytest {{ .CLI_ARGS }}
py:format:
desc: runs python code formatter
cmds:
- poetry run ruff format .
- uv run ruff format .
py:lint:
desc: runs python linter
cmds:
- poetry run ruff check mealie
- uv run ruff check mealie
py:check:
desc: runs all linters, type checkers, and formatters
@@ -125,16 +124,73 @@ tasks:
py:coverage:
desc: runs python coverage and generates html report
cmds:
- poetry run pytest
- poetry run coverage report -m
- poetry run coveragepy-lcov
- poetry run coverage html
- uv run pytest
- uv run coverage report -m
- uv run coveragepy-lcov
- uv run coverage html
- open htmlcov/index.html
py:package:copy-frontend:
desc: copy the frontend files into the Python package
internal: true
deps:
- ui:generate
cmds:
- rm -rf mealie/frontend
- cp -a frontend/dist mealie/frontend
sources:
- frontend/dist/**
generates:
- mealie/frontend/**
py:package:generate-requirements:
desc: Generate requirements file to pin all packages, effectively a "pip freeze" before installation begins
internal: true
cmds:
- uv export --no-editable --no-emit-project --extra pgsql --format requirements-txt --output-file dist/requirements.txt
# Include mealie in the requirements, hashing the package that was just built to ensure it's the one installed
- echo "mealie[pgsql]=={{.MEALIE_VERSION}} \\" >> dist/requirements.txt
- pip hash dist/mealie-{{.MEALIE_VERSION}}-py3-none-any.whl | tail -n1 | tr -d '\n' >> dist/requirements.txt
- echo " \\" >> dist/requirements.txt
- pip hash dist/mealie-{{.MEALIE_VERSION}}.tar.gz | tail -n1 >> dist/requirements.txt
vars:
MEALIE_VERSION:
sh: python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])"
sources:
- uv.lock
- pyproject.toml
- dist/mealie-*.whl
- dist/mealie-*.tar.gz
generates:
- dist/requirements.txt
py:package:deps-parallel:
desc: Run py:package dependencies in parallel
internal: true
deps:
- setup:py
- py:package:copy-frontend
py:package:deps:
desc: Dependencies of py:package, skippable by setting SKIP_PACKAGE_DEPS=true
internal: true
cmds:
- task: py:package:deps-parallel
status:
- '{{ .SKIP_PACKAGE_DEPS | default "false"}}'
py:package:
desc: builds Python packages (sdist and wheel) in top-level dist directory
deps:
- py:package:deps
cmds:
- uv build --out-dir dist
- task: py:package:generate-requirements
py:
desc: runs the backend server
cmds:
- poetry run python mealie/app.py
- uv run python mealie/app.py
py:postgres:
desc: runs the backend server configured for containerized postgres
@@ -146,12 +202,12 @@ tasks:
POSTGRES_PORT: 5432
POSTGRES_DB: mealie
cmds:
- poetry run python mealie/app.py
- uv run python mealie/app.py
py:migrate:
desc: generates a new database migration file e.g. task py:migrate -- "add new column"
cmds:
- poetry run alembic revision --autogenerate -m "{{ .CLI_ARGS }}"
- uv run alembic --config mealie/alembic/alembic.ini revision --autogenerate -m "{{ .CLI_ARGS }}"
- task: py:format
ui:build:
@@ -160,11 +216,19 @@ tasks:
cmds:
- yarn build
ui:generate:
desc: generates a static version of the frontend in frontend/dist
dir: frontend
deps:
- setup:ui
cmds:
- yarn generate
ui:lint:
desc: runs the frontend linter
dir: frontend
cmds:
- yarn lint
- yarn lint --max-warnings=0
ui:test:
desc: runs the frontend tests
@@ -182,7 +246,17 @@ tasks:
desc: runs the frontend server
dir: frontend
cmds:
- yarn run dev
- yarn run dev --no-fork
docker:build-from-package:
desc: Builds the Docker image from the existing Python package in dist/
deps:
- py:package
cmds:
- docker build --tag mealie:dev --file docker/Dockerfile --build-arg COMMIT={{.GIT_COMMIT}} --build-context packages=dist .
vars:
GIT_COMMIT:
sh: git rev-parse HEAD
docker:prod:
desc: builds and runs the production docker image locally

View File

@@ -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 = [

View File

@@ -1,7 +1,8 @@
import json
from datetime import UTC, datetime
from typing import Any
from fastapi import FastAPI
from freezegun import freeze_time
from mealie.app import app
from mealie.core.config import determine_data_dir
@@ -37,14 +38,43 @@ HTML_TEMPLATE = """<!-- Custom HTML site displayed as the Home chapter -->
"""
HTML_PATH = DATA_DIR.parent.parent.joinpath("docs/docs/overrides/api.html")
CONSTANT_DT = datetime(2025, 10, 24, 15, 53, 0, 0, tzinfo=UTC)
def normalize_timestamps(s: dict[str, Any]) -> dict[str, Any]:
field_format = s.get("format")
is_timestamp = field_format in ["date-time", "date", "time"]
has_default = s.get("default")
if not is_timestamp:
for k, v in s.items():
if isinstance(v, dict):
s[k] = normalize_timestamps(v)
elif isinstance(v, list):
s[k] = [normalize_timestamps(i) if isinstance(i, dict) else i for i in v]
return s
elif not has_default:
return s
if field_format == "date-time":
s["default"] = CONSTANT_DT.isoformat()
elif field_format == "date":
s["default"] = CONSTANT_DT.date().isoformat()
elif field_format == "time":
s["default"] = CONSTANT_DT.time().isoformat()
return s
def generate_api_docs(my_app: FastAPI):
openapi_schema = my_app.openapi()
openapi_schema = normalize_timestamps(openapi_schema)
with open(HTML_PATH, "w") as fd:
text = HTML_TEMPLATE.replace("MY_SPECIFIC_TEXT", json.dumps(my_app.openapi()))
text = HTML_TEMPLATE.replace("MY_SPECIFIC_TEXT", json.dumps(openapi_schema))
fd.write(text)
if __name__ == "__main__":
with freeze_time("2024-01-20T17:00:55Z"):
generate_api_docs(app)
generate_api_docs(app)

View File

@@ -1,3 +1,4 @@
import subprocess
from dataclasses import dataclass
from pathlib import Path
@@ -105,12 +106,16 @@ def main():
# Flatten list of lists
all_children = [item for sublist in all_children for item in sublist]
out_path = GENERATED / "__init__.py"
render_python_template(
TEMPLATE,
GENERATED / "__init__.py",
out_path,
{"children": all_children},
)
subprocess.run(["uv", "run", "ruff", "check", str(out_path), "--fix"])
subprocess.run(["uv", "run", "ruff", "format", str(out_path)])
if __name__ == "__main__":
main()

View File

@@ -1,5 +1,6 @@
import pathlib
import re
import subprocess
from dataclasses import dataclass, field
from utils import PROJECT_DIR, log, render_python_template
@@ -84,16 +85,23 @@ def find_modules(root: pathlib.Path) -> list[Modules]:
return modules
def main():
def main() -> None:
modules = find_modules(SCHEMA_PATH)
template_paths: list[pathlib.Path] = []
for module in modules:
log.debug(f"Module: {module.directory.name}")
for file in module.files:
log.debug(f" File: {file.import_path}")
log.debug(f" Classes: [{', '.join(file.classes)}]")
render_python_template(template, module.directory / "__init__.py", {"module": module})
template_path = module.directory / "__init__.py"
template_paths.append(template_path)
render_python_template(template, template_path, {"module": module})
path_args = (str(p) for p in template_paths)
subprocess.run(["uv", "run", "ruff", "check", *path_args, "--fix"])
subprocess.run(["uv", "run", "ruff", "format", *path_args])
if __name__ == "__main__":

View File

@@ -1,3 +1,4 @@
import os
import pathlib
from dataclasses import dataclass
from pathlib import Path
@@ -13,7 +14,7 @@ from mealie.schema._mealie import MealieModel
BASE = pathlib.Path(__file__).parent.parent.parent
API_KEY = dotenv.get_key(BASE / ".env", "CROWDIN_API_KEY")
API_KEY = dotenv.get_key(BASE / ".env", "CROWDIN_API_KEY") or os.environ.get("CROWDIN_API_KEY", "")
@dataclass
@@ -23,19 +24,22 @@ class LocaleData:
LOCALE_DATA: dict[str, LocaleData] = {
"en-US": LocaleData(name="American English"),
"en-GB": LocaleData(name="British English"),
"af-ZA": LocaleData(name="Afrikaans (Afrikaans)"),
"ar-SA": LocaleData(name="العربية (Arabic)", dir="rtl"),
"bg-BG": LocaleData(name="Български (Bulgarian)"),
"ca-ES": LocaleData(name="Català (Catalan)"),
"cs-CZ": LocaleData(name="Čeština (Czech)"),
"da-DK": LocaleData(name="Dansk (Danish)"),
"de-DE": LocaleData(name="Deutsch (German)"),
"el-GR": LocaleData(name="Ελληνικά (Greek)"),
"en-GB": LocaleData(name="British English"),
"en-US": LocaleData(name="American English"),
"es-ES": LocaleData(name="Español (Spanish)"),
"et-EE": LocaleData(name="Eesti (Estonian)"),
"fi-FI": LocaleData(name="Suomi (Finnish)"),
"fr-FR": LocaleData(name="Français (French)"),
"fr-BE": LocaleData(name="Belge (Belgian)"),
"fr-CA": LocaleData(name="Français canadien (Canadian French)"),
"fr-FR": LocaleData(name="Français (French)"),
"gl-ES": LocaleData(name="Galego (Galician)"),
"he-IL": LocaleData(name="עברית (Hebrew)", dir="rtl"),
"hr-HR": LocaleData(name="Hrvatski (Croatian)"),
@@ -53,6 +57,7 @@ LOCALE_DATA: dict[str, LocaleData] = {
"pt-PT": LocaleData(name="Português (Portuguese)"),
"ro-RO": LocaleData(name="Română (Romanian)"),
"ru-RU": LocaleData(name="Pусский (Russian)"),
"sk-SK": LocaleData(name="Slovenčina (Slovak)"),
"sl-SI": LocaleData(name="Slovenščina (Slovenian)"),
"sr-SP": LocaleData(name="српски (Serbian)"),
"sv-SE": LocaleData(name="Svenska (Swedish)"),
@@ -71,7 +76,7 @@ export const LOCALES = [{% for locale in locales %}
progress: {{ locale.progress }},
dir: "{{ locale.dir }}",
},{% endfor %}
]
];
"""
@@ -93,8 +98,8 @@ class CrowdinApi:
project_id = "451976"
api_key = API_KEY
def __init__(self, api_key: str):
api_key = api_key
def __init__(self, api_key: str | None):
self.api_key = api_key or API_KEY
@property
def headers(self) -> dict:
@@ -156,29 +161,51 @@ PROJECT_DIR = Path(__file__).parent.parent.parent
datetime_dir = PROJECT_DIR / "frontend" / "lang" / "dateTimeFormats"
locales_dir = PROJECT_DIR / "frontend" / "lang" / "messages"
nuxt_config = PROJECT_DIR / "frontend" / "nuxt.config.js"
nuxt_config = PROJECT_DIR / "frontend" / "nuxt.config.ts"
i18n_config = PROJECT_DIR / "frontend" / "i18n.config.ts"
reg_valid = PROJECT_DIR / "mealie" / "schema" / "_mealie" / "validators.py"
"""
This snippet walks the message and dat locales directories and generates the import information
for the nuxt.config.js file and automatically injects it into the nuxt.config.js file. Note that
for the nuxt.config.ts file and automatically injects it into the nuxt.config.ts file. Note that
the code generation ID is hardcoded into the script and required in the nuxt config.
"""
def inject_nuxt_values():
all_date_locales = [
f'"{match.stem}": require("./lang/dateTimeFormats/{match.name}"),' for match in datetime_dir.glob("*.json")
]
datetime_files = list(datetime_dir.glob("*.json"))
datetime_files.sort()
datetime_imports = []
datetime_object_entries = []
for match in datetime_files:
# Convert locale name to camelCase variable name (e.g., "en-US" -> "enUS")
var_name = match.stem.replace("-", "")
# Generate import statement
import_line = f'import * as {var_name} from "./lang/dateTimeFormats/{match.name}";'
datetime_imports.append(import_line)
# Generate object entry
object_entry = f' "{match.stem}": {var_name},'
datetime_object_entries.append(object_entry)
all_date_locales = datetime_imports + ["", "const datetimeFormats = {"] + datetime_object_entries + ["};"]
all_langs = []
for match in locales_dir.glob("*.json"):
lang_string = f'{{ code: "{match.stem}", file: "{match.name}" }},'
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()
log.debug(f"injecting locales into nuxt config -> {nuxt_config}")
inject_inline(nuxt_config, CodeKeys.nuxt_local_messages, all_langs)
inject_inline(nuxt_config, CodeKeys.nuxt_local_dates, all_date_locales)
inject_inline(i18n_config, CodeKeys.nuxt_local_dates, all_date_locales)
def inject_registration_validation_values():
@@ -195,7 +222,7 @@ def inject_registration_validation_values():
def generate_locales_ts_file():
api = CrowdinApi("")
api = CrowdinApi(None)
models = api.get_languages()
tmpl = Template(LOCALE_TEMPLATE)
rendered = tmpl.render(locales=models)

View File

@@ -1,3 +1,5 @@
import re
import subprocess
from pathlib import Path
from jinja2 import Template
@@ -7,8 +9,8 @@ from utils import log
# ============================================================
template = """// This Code is auto generated by gen_ts_types.py
{% for name in global %}import {{ name }} from "@/components/global/{{ name }}.vue";
{% endfor %}{% for name in layout %}import {{ name }} from "@/components/layout/{{ name }}.vue";
{% for name in global %}import type {{ name }} from "@/components/global/{{ name }}.vue";
{% endfor %}{% for name in layout %}import type {{ name }} from "@/components/layout/{{ name }}.vue";
{% endfor %}
declare module "vue" {
export interface GlobalComponents {
@@ -64,7 +66,112 @@ def generate_global_components_types() -> None:
# Pydantic To Typescript Generator
def generate_typescript_types() -> None:
def generate_typescript_types() -> None: # noqa: C901
def contains_number(s: str) -> bool:
return bool(re.search(r"\d", s))
def remove_numbers(s: str) -> str:
return re.sub(r"\d", "", s)
def extract_type_name(line: str) -> str:
# Looking for "export type EnumName = enumVal1 | enumVal2 | ..."
if not (line.startswith("export type") and "=" in line):
return ""
return line.split(" ")[2]
def extract_property_type_name(line: str) -> str:
# Looking for " fieldName: FieldType;" or " fieldName: FieldType & string;"
if not (line.startswith(" ") and ":" in line):
return ""
return line.split(":")[1].strip().split(";")[0]
def extract_interface_name(line: str) -> str:
# Looking for "export interface InterfaceName {"
if not (line.startswith("export interface") and "{" in line):
return ""
return line.split(" ")[2]
def is_comment_line(line: str) -> bool:
s = line.strip()
return s.startswith("/*") or s.startswith("*")
def clean_output_file(file: Path) -> None:
"""
json2ts generates duplicate types off of our enums and appends a number to the end of the type name.
Our Python code (hopefully) doesn't have any duplicate enum names, or types with numbers in them,
so we can safely remove the numbers.
To do this, we read the output line-by-line and replace any type names that contain numbers with
the same type name, but without the numbers.
Note: the issue arrises from the JSON package json2ts, not the Python package pydantic2ts,
otherwise we could just fix pydantic2ts.
"""
# First pass: build a map of type names to their numberless counterparts and lines to skip
replacement_map = {}
lines_to_skip = set()
wait_for_semicolon = False
wait_for_close_bracket = False
skip_comments = False
with open(file) as f:
for i, line in enumerate(f.readlines()):
if wait_for_semicolon:
if ";" in line:
wait_for_semicolon = False
lines_to_skip.add(i)
continue
if wait_for_close_bracket:
if "}" in line:
wait_for_close_bracket = False
lines_to_skip.add(i)
continue
if type_name := extract_type_name(line):
if not contains_number(type_name):
continue
replacement_map[type_name] = remove_numbers(type_name)
if ";" not in line:
wait_for_semicolon = True
lines_to_skip.add(i)
elif type_name := extract_interface_name(line):
if not contains_number(type_name):
continue
replacement_map[type_name] = remove_numbers(type_name)
if "}" not in line:
wait_for_close_bracket = True
lines_to_skip.add(i)
elif skip_comments and is_comment_line(line):
lines_to_skip.add(i)
# we've passed the opening comments and empty line at the header
elif not skip_comments and not line.strip():
skip_comments = True
# Second pass: rewrite or remove lines as needed.
# We have to do two passes here because definitions don't always appear in the same order as their usage.
lines = []
with open(file) as f:
for i, line in enumerate(f.readlines()):
if i in lines_to_skip:
continue
if type_name := extract_property_type_name(line):
if type_name in replacement_map:
line = line.replace(type_name, replacement_map[type_name])
lines.append(line)
with open(file, "w") as f:
f.writelines(lines)
def path_to_module(path: Path):
str_path: str = str(path)
@@ -83,6 +190,7 @@ def generate_typescript_types() -> None:
skipped_dirs: list[Path] = []
failed_modules: list[Path] = []
out_paths: list[Path] = []
for module in schema_path.iterdir():
if module.is_dir() and module.stem in ignore_dirs:
skipped_dirs.append(module)
@@ -98,9 +206,18 @@ def generate_typescript_types() -> None:
try:
path_as_module = path_to_module(module)
generate_typescript_defs(path_as_module, str(out_path), exclude=("MealieModel")) # type: ignore
except Exception as e:
clean_output_file(out_path)
out_paths.append(out_path)
except Exception:
failed_modules.append(module)
log.error(f"Module Error: {e}")
log.exception(f"Module Error: {module}")
# Run ESLint --fix on the files to clean up any formatting issues
subprocess.run(
["yarn", "lint", "--fix", *(str(path) for path in out_paths)],
check=True,
cwd=PROJECT_DIR / "frontend",
)
log.debug("\n📁 Skipped Directories:")
for skipped_dir in skipped_dirs:

View File

@@ -1,3 +1,4 @@
import argparse
from pathlib import Path
import gen_py_pytest_data_paths
@@ -11,15 +12,39 @@ CWD = Path(__file__).parent
def main():
items = [
(gen_py_schema_exports.main, "schema exports"),
(gen_ts_types.main, "frontend types"),
(gen_ts_locales.main, "locales"),
(gen_py_pytest_data_paths.main, "test data paths"),
(gen_py_pytest_routes.main, "pytest routes"),
]
parser = argparse.ArgumentParser(description="Run code generators")
parser.add_argument(
"generators",
nargs="*",
help="Specific generators to run (schema, types, locales, data-paths, routes). If none specified, all will run.", # noqa: E501 - long line
)
args = parser.parse_args()
for func, name in items:
# Define all available generators
all_generators = {
"schema": (gen_py_schema_exports.main, "schema exports"),
"types": (gen_ts_types.main, "frontend types"),
"locales": (gen_ts_locales.main, "locales"),
"data-paths": (gen_py_pytest_data_paths.main, "test data paths"),
"routes": (gen_py_pytest_routes.main, "pytest routes"),
}
# Determine which generators to run
if args.generators:
# Validate requested generators
invalid_generators = [g for g in args.generators if g not in all_generators]
if invalid_generators:
log.error(f"Invalid generator(s): {', '.join(invalid_generators)}")
log.info(f"Available generators: {', '.join(all_generators.keys())}")
return
generators_to_run = [(all_generators[g][0], all_generators[g][1]) for g in args.generators]
else:
# Run all generators (default behavior)
generators_to_run = list(all_generators.values())
# Run the selected generators
for func, name in generators_to_run:
log.info(f"Generating {name}...")
func()

View File

@@ -1,6 +1,4 @@
import logging
import re
import subprocess
from dataclasses import dataclass
from pathlib import Path
@@ -24,21 +22,16 @@ def render_python_template(template_file: Path | str, dest: Path, data: dict):
dest.write_text(text)
# lint/format file with Ruff
log.info(f"Formatting {dest}")
subprocess.run(["poetry", "run", "ruff", "check", str(dest), "--fix"])
subprocess.run(["poetry", "run", "ruff", "format", str(dest)])
@dataclass
class CodeSlicer:
start: int
end: int
indentation: str
indentation: str | None
text: list[str]
_next_line = None
_next_line: int | None = None
def purge_lines(self) -> None:
start = self.start + 1
@@ -47,15 +40,24 @@ class CodeSlicer:
def push_line(self, string: str) -> None:
self._next_line = self._next_line or self.start + 1
self.text.insert(self._next_line, self.indentation + string + "\n")
self.text.insert(self._next_line, (self.indentation or "") + string + "\n")
self._next_line += 1
def get_indentation_of_string(line: str, comment_char: str = "//|#") -> str:
return re.sub(rf"{comment_char}.*", "", line).removesuffix("\n")
def get_indentation_of_string(line: str) -> str:
# Extract everything before the comment
if "//" in line:
indentation = line.split("//")[0]
elif "#" in line:
indentation = line.split("#")[0]
else:
indentation = line
# Keep only the whitespace, remove any non-whitespace characters
return "".join(c for c in indentation if c.isspace())
def find_start_end(file_text: list[str], gen_id: str) -> tuple[int, int, str]:
def find_start_end(file_text: list[str], gen_id: str) -> tuple[int, int, str | None]:
start = None
end = None
indentation = None

View File

@@ -1,24 +0,0 @@
![Recipe Image](../../images/{{ recipe.slug }}/original.jpg)
# {{ recipe.name }}
{{ recipe.description }}
## Ingredients
{% for ingredient in recipe.recipeIngredient %}
- [ ] {{ ingredient }} {% endfor %}
## Instructions
{% for step in recipe.recipeInstructions %}
- [ ] {{ step.text }} {% endfor %}
{% for note in recipe.notes %}
**{{ note.title }}:** {{ note.text }}
{% endfor %}
---
Tags: {{ recipe.tags }}
Categories: {{ recipe.categories }}
Original URL: {{ recipe.orgURL }}

View File

@@ -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": [],

View File

@@ -0,0 +1,75 @@
import glob
import json
import pathlib
def get_seed_locale_names() -> set[str]:
"""Find all locales in the seed/resources/ folder
Returns:
A set of every file name where there's both a seed label and seed food file
"""
LABELS_PATH = "/workspaces/mealie/mealie/repos/seed/resources/labels/locales/"
FOODS_PATH = "/workspaces/mealie/mealie/repos/seed/resources/foods/locales/"
label_locales = glob.glob("*.json", root_dir=LABELS_PATH)
foods_locales = glob.glob("*.json", root_dir=FOODS_PATH)
# ensure that a locale has both a label and a food seed file
return set(label_locales).intersection(foods_locales)
def get_labels_from_file(locale: str) -> list[str]:
"""Query a locale to get all of the labels so that they can be added to the new foods seed format
Returns:
All of the labels found within the seed file for a given locale
"""
locale_path = pathlib.Path("/workspaces/mealie/mealie/repos/seed/resources/labels/locales/" + locale)
label_names = [label["name"] for label in json.loads(locale_path.read_text(encoding="utf-8"))]
return label_names
def transform_foods(locale: str):
"""
Convert the current food seed file for a locale into a new format which maps each food to a label
Existing format of foods seed file is a dictionary where each key is a food name and the values are a dictionary
of attributes such as name and plural_name
New format maps each food to a label. The top-level dictionary has each key as a label e.g. "Fruits".
Each label key as a value that is a dictionary with an element called "foods"
"Foods" is a dictionary of each food for that label, with a key of the english food name e.g. "baking-soda"
and a value of attributes, including the translated name of the item e.g. "bicarbonate of soda" for en-GB.
"""
locale_path = pathlib.Path("/workspaces/mealie/mealie/repos/seed/resources/foods/locales/" + locale)
with open(locale_path, encoding="utf-8") as infile:
data = json.load(infile)
first_value = next(iter(data.values()))
if isinstance(first_value, dict) and "foods" in first_value:
# Locale is already in the new format, skipping transformation
return
transformed_data = {"": {"foods": dict(data.items())}}
# Seeding for labels now pulls from the foods file and parses the labels from there (as top-level keys),
# thus we need to add all of the existing labels to the new food seed file and give them an empty foods dictionary
label_names = get_labels_from_file(locale)
for label in label_names:
transformed_data[label] = {"foods": {}}
with open(locale_path, "w", encoding="utf-8") as outfile:
json.dump(transformed_data, outfile, indent=4, ensure_ascii=False)
def main():
for locale in get_seed_locale_names():
transform_foods(locale)
if __name__ == "__main__":
main()

View File

@@ -1,8 +1,12 @@
FROM node:16 as builder
###############################################
# Frontend Build
###############################################
FROM node:24@sha256:20988bcdc6dc76690023eb2505dd273bdeefddcd0bde4bfd1efe4ebf8707f747 \
AS frontend-builder
WORKDIR /app
WORKDIR /frontend
COPY ./frontend .
COPY frontend .
RUN yarn install \
--prefer-offline \
@@ -17,7 +21,8 @@ RUN yarn generate
###############################################
# Base Image - Python
###############################################
FROM python:3.10-slim as python-base
FROM python:3.12-slim@sha256:2267adc248a477c1f1a852a07a5a224d42abe54c28aafa572efa157dfb001bba \
AS python-base
ENV MEALIE_HOME="/app"
@@ -26,14 +31,10 @@ ENV PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=off \
PIP_DISABLE_PIP_VERSION_CHECK=on \
PIP_DEFAULT_TIMEOUT=100 \
POETRY_HOME="/opt/poetry" \
POETRY_VIRTUALENVS_IN_PROJECT=true \
POETRY_NO_INTERACTION=1 \
PYSETUP_PATH="/opt/pysetup" \
VENV_PATH="/opt/pysetup/.venv"
VENV_PATH="/opt/mealie"
# prepend poetry and venv to path
ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH"
# prepend venv to path
ENV PATH="$VENV_PATH/bin:$PATH"
# create user account
RUN useradd -u 911 -U -d $MEALIE_HOME -s /bin/bash abc \
@@ -41,43 +42,75 @@ RUN useradd -u 911 -U -d $MEALIE_HOME -s /bin/bash abc \
&& mkdir $MEALIE_HOME
###############################################
# Builder Image
# Backend Package Build
###############################################
FROM python-base as builder-base
FROM python-base AS backend-builder
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
curl \
&& rm -rf /var/lib/apt/lists/*
RUN pip install uv
WORKDIR /mealie
# copy project files here to ensure they will be cached.
COPY uv.lock pyproject.toml ./
COPY mealie ./mealie
# Copy frontend to package it into the wheel
COPY --from=frontend-builder /frontend/dist ./mealie/frontend
# Build the source and binary package
RUN uv build --out-dir dist
# Create the requirements file, which is used to install the built package and
# its pinned dependencies later. mealie is included to ensure the built one is
# what's installed.
RUN uv export --no-editable --no-emit-project --extra pgsql --format requirements-txt --output-file dist/requirements.txt \
&& MEALIE_VERSION=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])") \
&& echo "mealie[pgsql]==${MEALIE_VERSION} \\" >> dist/requirements.txt \
&& pip hash dist/mealie-${MEALIE_VERSION}-py3-none-any.whl | tail -n1 | tr -d '\n' >> dist/requirements.txt \
&& echo " \\" >> dist/requirements.txt \
&& pip hash dist/mealie-${MEALIE_VERSION}.tar.gz | tail -n1 >> dist/requirements.txt
###############################################
# Package Container
# Only role is to hold the packages, or be overriden by a --build-context flag.
###############################################
FROM scratch AS packages
COPY --from=backend-builder /mealie/dist /
###############################################
# Python Virtual Environment Build
###############################################
# Install packages required to build the venv, in parallel to building the wheel
FROM python-base AS venv-builder-base
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
build-essential \
libpq-dev \
libwebp-dev \
# LDAP Dependencies
libsasl2-dev libldap2-dev libssl-dev \
gnupg gnupg2 gnupg1 \
&& rm -rf /var/lib/apt/lists/* \
&& pip install -U --no-cache-dir pip
&& rm -rf /var/lib/apt/lists/*
RUN python3 -m venv --upgrade-deps $VENV_PATH
# install poetry - respects $POETRY_VERSION & $POETRY_HOME
ENV POETRY_VERSION=1.3.1
RUN curl -sSL https://install.python-poetry.org | python3 -
# Install the wheel and all dependencies into the venv
FROM venv-builder-base AS venv-builder
# copy project requirement files here to ensure they will be cached.
WORKDIR $PYSETUP_PATH
COPY ./poetry.lock ./pyproject.toml ./
# Copy built package (wheel) and its dependency requirements
COPY --from=packages * /dist/
# install runtime deps - uses $POETRY_VIRTUALENVS_IN_PROJECT internally
RUN poetry install -E pgsql --only main
###############################################
# CRFPP Image
###############################################
FROM hkotel/crfpp as crfpp
RUN echo "crfpp-container"
# Install the wheel with exact versions of dependencies into the venv
RUN . $VENV_PATH/bin/activate \
&& pip install --require-hashes -r /dist/requirements.txt --find-links /dist
###############################################
# Production Image
###############################################
FROM python-base as production
FROM python-base AS production
LABEL org.opencontainers.image.source="https://github.com/mealie-recipes/mealie"
ENV PRODUCTION=true
ENV TESTING=false
@@ -90,49 +123,26 @@ RUN apt-get update \
gosu \
iproute2 \
libldap-common \
libldap-2.5 \
libldap2 \
&& rm -rf /var/lib/apt/lists/*
# create directory used for Docker Secrets
RUN mkdir -p /run/secrets
# copying poetry and venv into image
COPY --from=builder-base $POETRY_HOME $POETRY_HOME
COPY --from=builder-base $PYSETUP_PATH $PYSETUP_PATH
# Copy venv into image. It contains a fully-installed mealie backend and frontend.
COPY --from=venv-builder $VENV_PATH $VENV_PATH
ENV LD_LIBRARY_PATH=/usr/local/lib
COPY --from=crfpp /usr/local/lib/ /usr/local/lib
COPY --from=crfpp /usr/local/bin/crf_learn /usr/local/bin/crf_learn
COPY --from=crfpp /usr/local/bin/crf_test /usr/local/bin/crf_test
# copy backend
COPY ./mealie $MEALIE_HOME/mealie
COPY ./poetry.lock ./pyproject.toml $MEALIE_HOME/
# Alembic
COPY ./alembic $MEALIE_HOME/alembic
COPY ./alembic.ini $MEALIE_HOME/
# venv already has runtime deps installed we get a quicker install
WORKDIR $MEALIE_HOME
RUN . $VENV_PATH/bin/activate && poetry install -E pgsql --only main
WORKDIR /
# Grab CRF++ Model Release
RUN python $MEALIE_HOME/mealie/scripts/install_model.py
# install nltk data for the ingredient parser
ENV NLTK_DATA="/nltk_data/"
RUN mkdir -p $NLTK_DATA
RUN python -m nltk.downloader -d $NLTK_DATA averaged_perceptron_tagger_eng
VOLUME [ "$MEALIE_HOME/data/" ]
ENV APP_PORT=9000
EXPOSE ${APP_PORT}
HEALTHCHECK CMD python $MEALIE_HOME/mealie/scripts/healthcheck.py || exit 1
# ----------------------------------
# Copy Frontend
ENV STATIC_FILES=/spa/static
COPY --from=builder /app/dist ${STATIC_FILES}
HEALTHCHECK CMD python -m mealie.scripts.healthcheck || exit 1
ENV HOST 0.0.0.0

View File

@@ -32,13 +32,51 @@ init() {
cd /app
# Activate our virtual environment here
. /opt/pysetup/.venv/bin/activate
. /opt/mealie/bin/activate
}
load_secrets() {
# Each of these environment variables will support a `_FILE` suffix that allows
# for setting the environment variable through the Docker Compose secret
# pattern.
local -a secret_supported_vars=(
"POSTGRES_USER"
"POSTGRES_PASSWORD"
"POSTGRES_SERVER"
"POSTGRES_PORT"
"POSTGRES_DB"
"POSTGRES_URL_OVERRIDE"
"SMTP_HOST"
"SMTP_PORT"
"SMTP_USER"
"SMTP_PASSWORD"
"LDAP_SERVER_URL"
"LDAP_QUERY_PASSWORD"
"OIDC_CONFIGURATION_URL"
"OIDC_CLIENT_ID"
"OIDC_CLIENT_SECRET"
"OPENAI_BASE_URL"
"OPENAI_API_KEY"
)
# If any secrets are set, prefer them over base environment variables.
for var in "${secret_supported_vars[@]}"; do
file_var="${var}_FILE"
if [ -n "${!file_var}" ]; then
export "$var=$(<"${!file_var}")"
fi
done
}
change_user
init
load_secrets
# Start API
HOST_IP=`/sbin/ip route|awk '/default/ { print $3 }'`
exec python /app/mealie/main.py
exec mealie

View File

@@ -0,0 +1,40 @@
# Building Packages
Released packages are [built and published via GitHub actions](maintainers.md#drafting-releases).
## Python packages
To build Python packages locally for testing, use [`task`](starting-dev-server.md#without-dev-containers). After installing `task`, run `task py:package` to perform all the steps needed to build the package and a requirements file. To do it manually, run:
```sh
pushd frontend
yarnpkg install
yarnpkg generate
popd
rm -r mealie/frontend
cp -a frontend/dist mealie/frontend
uv build --out-dir dist
uv export --no-editable --no-emit-project --extra pgsql --format requirements-txt --output-file dist/requirements.txt
MEALIE_VERSION=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])")
echo "mealie[pgsql]==${MEALIE_VERSION} \\" >> dist/requirements.txt
pip hash dist/mealie-${MEALIE_VERSION}-py3-none-any.whl | tail -n1 | tr -d '\n' >> dist/requirements.txt
echo " \\" >> dist/requirements.txt
pip hash dist/mealie-${MEALIE_VERSION}.tar.gz | tail -n1 >> dist/requirements.txt
```
The Python package can be installed with all of its dependencies pinned to the versions tested by the developers with:
```sh
pip3 install -r dist/requirements.txt --find-links dist
```
To install with the latest but still compatible dependency versions, instead run `pip3 install dist/mealie-$VERSION-py3-none-any.whl` (where `$VERSION` is the version of mealie to install).
## Docker image
One way to build the Docker image is to run the following command in the project root directory:
```sh
docker build --tag mealie:dev --file docker/Dockerfile --build-arg COMMIT=$(git rev-parse HEAD) .
```
The Docker image can be built from the pre-built Python packages with the task command `task docker:build-from-package`. This is equivalent to:
```sh
docker build --tag mealie:dev --file docker/Dockerfile --build-arg COMMIT=$(git rev-parse HEAD) --build-context packages=dist .
```

View File

@@ -32,9 +32,9 @@ Make sure the VSCode Dev Containers extension is installed, then select "Dev Con
### Prerequisites
- [Python 3.10](https://www.python.org/downloads/)
- [Poetry](https://python-poetry.org/docs/#installation)
- [Node v16.x](https://nodejs.org/en/)
- [Python 3.12](https://www.python.org/downloads/)
- [uv](https://docs.astral.sh/uv/)
- [Node](https://nodejs.org/en/)
- [yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable)
- [task](https://taskfile.dev/#/installation)
@@ -45,7 +45,7 @@ Once the prerequisites are installed you can cd into the project base directory
=== "Linux / macOS"
```bash
# Naviate To The Root Directory
# Navigate To The Root Directory
cd /path/to/project
# Utilize the Taskfile to Install Dependencies

View File

@@ -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.

View File

@@ -1,30 +1,30 @@
!!! info
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
In a lot of ways, Home Assistant is why this project exists! Since Mealie has a robust API it makes it a great fit for interacting with Home Assistant and pulling information into your dashboard.
### Display Today's Meal in Lovelace
## Display Today's Meal in Lovelace
You can use the Mealie API to get access to meal plans in Home Assistant like in the image below.
![api-extras-gif](../../assets/img/home-assistant-card.png)
Steps:
## Steps:
#### 1. Get your API Token
### 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 (see [this page](https://docs.mealie.io/documentation/getting-started/api-usage/#getting-a-token) to learn how).
#### 2. Create Home Assistant Sensors
### 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:
- resource: "http://mealie:9000/api/groups/mealplans/today"
- resource: "http://mealie:9000/api/households/mealplans/today"
method: GET
headers:
Authorization: Bearer <<API_TOKEN>>
@@ -40,7 +40,7 @@ rest:
unique_id: mealie_todays_meal_id
```
#### 3. Create a Camera Entity
### 3. Create a Camera Entity
We will create a camera entity to display the image of today's meal in Lovelace.
@@ -52,7 +52,7 @@ In the still image url field put in:
Under the entity page for the new camera, rename it.
e.g. `camera.mealie_todays_meal_image`
#### 4. Create a Lovelace Card
### 4. Create a Lovelace Card
Create a picture entity card and set the entity to `mealie_todays_meal` and the camera entity to `camera.mealie_todays_meal_image` or set in the yaml directly.
@@ -76,4 +76,4 @@ card_mod:
```
!!! tip
Due to how Home Assistant works with images, I had to include the additional styling to get the images to not appear distorted. This requires an [additional installation](https://github.com/thomasloven/lovelace-card-mod) from HACS.
Due to how Home Assistant works with images, I had to include the additional styling to get the images to not appear distorted. This requires an [additional installation](https://github.com/thomasloven/lovelace-card-mod) from HACS.

View File

@@ -12,12 +12,10 @@ var url = document.URL.endsWith('/') ?
document.URL;
var mealie = "http://localhost:8080";
var group_slug = "home" // Change this to your group slug. You can obtain this from your URL after logging-in to Mealie
var use_keywords= "&use_keywords=1" // Optional - use keywords from recipe - update to "" if you don't want that
var edity = "&edit=1" // Optional - keep in edit mode - update to "" if you don't want that
if (mealie.slice(-1) === "/") {
mealie = mealie.slice(0, -1)
}
var dest = mealie + "/g/" + group_slug + "/r/create/url?recipe_import_url=" + url + use_keywords + edity;
var dest = mealie + "/g/" + group_slug + "/r/create/url?recipe_import_url=" + url;
window.open(dest, "_blank");
```

View File

@@ -0,0 +1,29 @@
!!! info
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
An easy way to add recipes to Mealie from an Apple device is via an Apple Shortcut. This is a short guide to install an configure a shortcut able to add recipes via a link or image(s).
!!! note
If adding via images make sure to enable [Mealie's OpenAI Integration](https://docs.mealie.io/documentation/getting-started/installation/open-ai/)
## Javascript can only be run via Shortcuts on the Safari browser on MacOS and iOS. If you do not use Safari you may skip this section
Some sites have begun blocking AI scraping bots, inadvertently blocking the recipe scraping library Mealie uses as well. To circumvent this, the shortcut uses javascript to capture the raw html loaded in the browser and sends that to mealie when possible.
**iOS**
Settings app -> apps -> Shortcuts -> Advanced -> Allow Running Scripts
**MacOS**
Shortcuts app -> Settings (CMD ,) -> Advanced -> Allow Running Scripts
## Initial Setup
An API key is needed to authenticate with mealie. To create an api key for a user, navigate to http://YOUR_MEALIE_URL/user/profile/api-tokens. Alternatively you can create a key via the mealie home page by clicking the user's profile pic in the top left -> Api Tokens
The shortcut can be installed via **[This link](https://www.icloud.com/shortcuts/52834724050b42aebe0f2efd8d067360)**. Upon install, replace "MEALIE_API_KEY" with the API key generated previously and "MEALIE_URI" with the full URL used to access your mealie instance e.g. "http://10.0.0.5:9000" or "https://mealie.domain.com".
## Using the Shortcut
Once installed, the shortcut will automatically appear as an option when sharing an image or webpage. It can also be useful to add the shortcut to the home screen of your device. If selected from the home screen or shortcuts app, a menu will appear with prompts to import via **taking photo(s)**, **selecting photo(s)**, **scanning a URL**, or **pasting a URL**.
!!! note
Despite the Mealie API being able to accept multiple recipe images for import it is currently impossible to send multiple files in 1 web request via Shortcuts. Instead, the shortcut combines the images into a singular, vertically-concatenated image to send to mealie. This can result in slightly less-accurate text recognition.

View File

@@ -1,82 +0,0 @@
# Using iOS Shortcuts with Mealie
!!! info
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
Don't know what an iOS shortcut is? Neither did I! Experienced iOS users may already be familiar with this utility but for the uninitiated, here is the official Apple explanation:
> A shortcut is a quick way to get one or more tasks done with your apps. The Shortcuts app lets you create your own shortcuts with multiple steps. For example, build a “Surf Time” shortcut that grabs the surf report, gives an ETA to the beach, and launches your surf music playlist.
Basically it is a visual scripting language that lets a user build an automation in a guided fashion. The automation can be [shared with anyone](https://www.icloud.com/shortcuts/94aa272af5ff4d2c8fe5e13a946f89a9) but if it is a user creation, you'll have to jump through a few hoops to make an untrusted automation work on your device.
## Setup Video
The following YouTube video walks through setting up the shortcut in 3 minutes for those who prefer following along visually.
<iframe width="560" height="315" src="https://www.youtube.com/embed/XZk6S1MVUrE?si=HGH07RbK-Ip_1qFz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
## Guide
### Prerequisites
Before setting up the shortcut, make sure you have the following information ready and easily accessable on your Apple device.
1. The URL of your Mealie instance
2. An API Key for your user
3. A Gemini API Key from [Google AI Studio](https://makersuite.google.com)
!!! note
A Gemini API Key is not required for importing URLs from Safari or your Camera, however you will not be able to take a photo of a recipe and import it without a Gemini key.
Google AI Studio is currently only available in [certain countries and languages](https://ai.google.dev/available_regions). Most notably it is not currently available in Europe.
### Setup
On the Apple device you wish to add the shortcut to, click on [this link](https://www.icloud.com/shortcuts/94aa272af5ff4d2c8fe5e13a946f89a9) to begin the setup of the shortcut.
![screenshot](../../assets/img/ios/setup.png)
Next, you need to replace `url` and `port` with the information for your Mealie instance.
If you have a domain that you use (e.g. `https://mealie.example.com`), put that here. If you just run local, then you need to put in your Mealie instance IP and the port you use (e.g. the default is `9925`).
![screenshot](../../assets/img/ios/url.png)
Next, you need to replace `MEALIE_API_KEY` with your API token.
![screenshot](../../assets/img/ios/api.png)
Finally, replace `GEMINI_API_KEY` with the one you got from [Google AI Studio](https://makersuite.google.com)
![screenshot](../../assets/img/ios/gemini.png)
You may wish to [add the shortcut to your home screen](https://support.apple.com/guide/shortcuts/add-a-shortcut-to-the-home-screen-apd735880972/ios) for easier access.
## Features
- Share a website from Safari with Mealie to import via URL.
- Share a recipe photo from photos to perform OCR and import a physical recipe.
- Trigger the shortcut and take a photo of a physical recipe to import.
- Trigger the shortcut to select a photo from your Photos app to import.
- Trigger the shortcut to take a picture of a URL (like on the bottom of a printed recipe) to import.
## Troubleshooting
Sometimes Gemini will not be able to parse a recipe, and you will get an error. Users have found success with a combination of the following:
1. #### Try Again
Sometimes Gemini returns the wrong information which causes the import to fail. Often, trying again will be successful.
2. #### Photo Quality
Make sure there is no large glare or shadow over the picture, and you have all the text in frame.
3. #### Edit the Photo
Users have found success by cropping the picture to just the recipe card, adding a "mono" filter, and cranking up the exposure before importing.
## History
User [brasilikum](https://github.com/brasilikum) opened an issue on the main repo about how they had created an [iOS shortcut](https://github.com/mealie-recipes/mealie/issues/103) for interested users.
This original method broke after the transition to version 1.X and an issue was raised on [Github](https://github.com/mealie-recipes/mealie/issues/2092) GitHub user [Zippyy](https://github.com/zippyy) has helped to create a working shortcut for version 1.X.
When OCR was removed from Mealie, GitHub user [hunterjm](https://github.com/zippyy) created a new shortcut that uses Apple's built-in OCR and Google Gemini to enhance and replace that functionality.

View File

@@ -1,71 +1,77 @@
# Automating Backups with n8n
!!! info
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
> [n8n](https://github.com/n8n-io/n8n) is a free and source-available fair-code licensed workflow automation tool. Alternative to Zapier or Make, allowing you to use a UI to create automated workflows.
[n8n](https://github.com/n8n-io/n8n) is a free and source-available fair-code licensed workflow automation tool. It's an alternative to tools like Zapier or Make, allowing you to use a UI to create automated workflows.
This example workflow:
1. Backups Mealie every morning via an API call
2. Deletes all but the last 7 backups
1. Creates a Mealie backup every morning via an API call
2. Keeps the last 7 backups, deleting older ones
> [!CAUTION]
> This only automates the backup function, this does not backup your data to anywhere except your local instance. Please make sure you are backing up your data to an external source.
!!! warning "Important"
This only automates the backup function, this does not backup your data to anywhere except your local instance. Please make sure you are backing up your data to an external source.
---
![screenshot](../../assets/img/n8n/n8n-mealie-backup.png)
# Setup
## Setup
## Deploying n8n
### Deploying n8n
Follow the relevant guide in the [n8n Documentation](https://docs.n8n.io/)
## Importing n8n workflow
### Importing n8n workflow
1. In n8n, add a new workflow
2. In the top right hit the 3 dot menu and select 'Import from URL...'
![screenshot](../../assets/img/n8n/n8n-workflow-import.png)
![screenshot](../../assets/img/n8n/n8n-workflow-import.png)
3. Paste `https://github.com/mealie-recipes/mealie/blob/mealie-next/docs/docs/assets/other/n8n/n8n-mealie-backup.json` and click Import
3. Paste `https://github.com/mealie-recipes/mealie/blob/mealie-next/docs/docs/assets/other/n8n/n8n-mealie-backup.json` and click 'Import'
4. Click through the nodes and update the URLs for your environment
## API Credentials
### API Credentials
#### Generate Mealie API Token
1. Head to https://mealie.example.com/user/profile/api-tokens
> If you dont see this screen make sure that "Show advanced features" is checked under https://mealie.example.com/user/profile/edit
2. Under token name, enter the name of the token i.e. 'n8n' and hit Generate
1. Head to `<YOUR MEALIE INSTANCE>/user/profile/api-tokens`
!!! tip
If you dont see this screen make sure that "Show advanced features" is checked under `<YOUR MEALIE INSTANCE>/user/profile/edit`
2. Under token name, enter the name of the token (for example, 'n8n') and hit 'Generate'
3. Copy and keep this API Token somewhere safe, this is like your password!
> You can use your normal user for this, but assuming you're an admin you could also choose to create a user named n8n and generate the API key against that user.
!!! tip
You can use your normal user for this, but assuming you're an admin you could also choose to create a user named n8n and generate the API key against that user.
#### Setup Credentials in n8n
> [n8n Docs](https://docs.n8n.io/credentials/add-edit-credentials/)
See also [n8n Docs](https://docs.n8n.io/credentials/add-edit-credentials/).
1. Create a new "Header Auth" Credential
![screenshot](../../assets/img/n8n/n8n-cred-app.png)
![screenshot](../../assets/img/n8n/n8n-cred-app.png)
2. In the connection screen set - Name as `Authorization` - Value as `Bearer {INSERT MEALIE API KEY}`
![screenshot](../../assets/img/n8n/n8n-cred-connection.png)
![screenshot](../../assets/img/n8n/n8n-cred-connection.png)
3. In the workflow you created, for the "Run Backup", "Get All backups", and "Delete Oldies" nodes, update:
- Authentication to `Generic Credential Type`
- Generic Auth Type to `Header Auth`
- Header Auth to `Mealie API` or whatever you named your credentials
![screenshot](../../assets/img/n8n/n8n-workflow-auth.png)
- Authentication to `Generic Credential Type`
- Generic Auth Type to `Header Auth`
- Header Auth to `Mealie API` or whatever you named your credentials
## Notification Node
![screenshot](../../assets/img/n8n/n8n-workflow-auth.png)
> Please use error notifications of some kind. It's very easy to set and forget an automation, then have the worst happen and lose data.
### Notification Node
!!! warning "Important"
Please use error notifications of some kind. It's very easy to set and forget an automation, then have the worst happen and lose data.
[ntfy](https://github.com/binwiederhier/ntfy) is a great open source, self-hostable tool for sending notifications.

View File

@@ -1,11 +1,10 @@
# Using SWAG as Reverse Proxy
!!! info
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
To make the setup of a Reverse Proxy much easier, Linuxserver.io developed [SWAG](https://github.com/linuxserver/docker-swag).
To make the setup of a Reverse Proxy much easier, Linuxserver.io developed [SWAG](https://github.com/linuxserver/docker-swag)
SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx web server and reverse proxy with PHP support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.
## Step 1: Get a domain

View File

@@ -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/)
@@ -52,6 +52,8 @@ Before you can start using OIDC Authentication, you must first configure a new c
Take the client id and your discovery URL and update your environment variables to include the required OIDC variables described in [Installation - Backend Configuration](../installation/backend-config.md#openid-connect-oidc).
You might also want to set ALLOW_PASSWORD_LOGIN to false, to hide the username+password inputs, if you want to allow logins only via OIDC.
### Groups
There are two (optional) [environment variables](../installation/backend-config.md#openid-connect-oidc) that can control which of the users in your IdP can log in to Mealie and what permissions they will have. Keep in mind that these groups **do not necessarily correspond to groups in Mealie**. The groups claim is configurable via the `OIDC_GROUPS_CLAIM` environment variable. The groups should be **defined in your IdP** and be returned in the configured claim value.

View File

@@ -5,7 +5,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/)
@@ -36,6 +36,10 @@ Before you can start using OIDC Authentication, you must first configure a new c
http://localhost:9091/login
https://mealie.example.com/login
If you are hosting Mealie behind a reverse proxy (nginx, Caddy, ...) to terminate TLS, make sure to start Mealie's Gunicorn server
with `--forwarded-allow-ips=<ip-of-proxy>`, otherwise the `X-Forwarded-*` headers will be ignored and the generated OIDC redirect
URI will use the wrong scheme (http instead of https). This will lead to authentication errors with strict OIDC providers.
3. Configure origins
If your identity provider enforces CORS on any endpoints, you will need to specify your Mealie URL as an Allowed Origin.

View File

@@ -1,164 +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.
<p style="font-size: 0.75rem; font-weight: 500;">Set up your Foods and Units</p>
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?
<p style="font-size: 0.75rem; font-weight: 500;">Set up Recipes to use Foods and Units</p>
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
<iframe width="560" height="315" src="https://www.youtube.com/embed/nAUwKeO93bY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
```
## 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-next bash
python /app/mealie/scripts/reset_locked_users.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-next 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 <HOST>
```
**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
<iframe width="560" height="315" src="https://www.youtube.com/embed/nAUwKeO93bY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
```
## 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 - Theming](./installation/backend-config.md#theming)
??? 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 /opt/mealie/lib64/python3.12/site-packages/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 /opt/mealie/lib64/python3.12/site-packages/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 /opt/mealie/lib64/python3.12/site-packages/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 <HOST>
```
??? 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.

View File

@@ -22,6 +22,7 @@ Mealie supports importing recipes from a few other sources besides websites. Cur
- Recipe Keeper
- Copy Me That
- My Recipe Box
- DVO Cook'n X3
You can access these options on your installation at the `/group/migrations` page on your installation. If you'd like to see another source added, feel free to request so on Github.
@@ -35,7 +36,7 @@ Mealie has a robust and flexible recipe organization system with a few different
#### Categories
Categories are the overarching organizer for recipes. You can assign as many categories as you'd like to a recipe, but we recommend that you try to limit the categories you assign to a recipe to one or two. This helps keep categories as focused as possible while still allowing you to find recipes that are related to each other. For example, you might assign a recipe to the category **Breakfast**, **Lunch**, **Dinner**, or **Side**.
Categories are the overarching organizer for recipes. You can assign as many categories as you'd like to a recipe, but we recommend that you try to limit the categories you assign to a recipe to one or two. This helps keep categories as focused as possible while still allowing you to find recipes that are related to each other. For example, you might assign a recipe to the category **Breakfast**, **Lunch**, **Dinner**, **Side**, or **Drinks**.
[Categories Demo](https://demo.mealie.io/g/home/recipes/categories){ .md-button .md-button--primary }
@@ -84,7 +85,31 @@ The meal planner has the concept of plan rules. These offer a flexible way to us
The shopping lists feature is a great way to keep track of what you need to buy for your next meal. You can add items directly to the shopping list or link a recipe and all of it's ingredients to track meals during the week.
Managing shopping lists can be done from the Sidebar > Shopping Lists.
Here you will be able to:
- See items already on the Shopping List
- See linked recipes with ingredients
- Toggling via the 'Pot' icon will show you the linked recipe, allowing you to click to access it.
- Check off an item
- Add / Change / Remove / Sort Items via the grid icon
- Be sure if you are modifying an ingredient to click the 'Save' icon.
- Add / Change / Remove / Sort Labels
- 'No Label' will always be on the top, others can be Reordered via the 'Reorder Labels' button
!!! tip
If you accidentally checked off an item, you can uncheck it by expanding 'items checked' and unchecking it. This will add it back to the Shopping List.
!!! tip
You can use Labels to categorize your ingredients. You may want to Label by Food Type (Frozen, Fresh, etc), by Store, Tool, Recipe, or more. Play around with this to see what works best for you.
!!! tip
You can toggle 'Food' on items so that if you add multiple of the same food / ingredient, Mealie will automatically combine them together. Do this by editing an item in the Shopping List and clicking the 'Apple' icon. If you then have recipes that contain "1 | cup | cheese" and "2 | cup | cheese" this would be combined to show "3 cups of cheese."
[See FAQ for more information](../getting-started/faq.md)
[Shopping List Demo](https://demo.mealie.io/shopping-lists){ .md-button .md-button--primary }
## Integrations
@@ -94,9 +119,10 @@ Mealie is designed to integrate with many different external services. There are
### Notifiers
Notifiers are event-driven notifications sent when specific actions are performed within Mealie. Some actions include:
- creating a recipe
- adding items to a shopping list
- creating a new mealplan
- Creating / Updating a recipe
- Adding items to a shopping list
- Creating a new mealplan
Notifiers use the [Apprise library](https://github.com/caronc/apprise/wiki), which integrates with a large number of notification services. In addition, certain custom notifiers send basic event data to the consumer (e.g. the `id` of the resource). These include:
@@ -139,6 +165,9 @@ Below is a list of all valid merge fields:
- ${id}
- ${slug}
- ${url}
- ${servings}
- ${yieldQuantity}
- ${yieldText}
To add, modify, or delete Recipe Actions, visit the Data Management page (more on that below).
@@ -172,6 +201,7 @@ Mealie lets you fully customize how you organize your users. You can use Groups
Groups are fully isolated instances of Mealie. Think of a goup as a completely separate, fully self-contained site. There is no data shared between groups. Each group has its own users, recipes, tags, categories, etc. A user logged-in to one group cannot make any changes to another.
Common use cases for groups include:
- Hosting multiple instances of Mealie for others who want to keep their data private and secure
- Creating completely isolated recipe pools
@@ -180,6 +210,7 @@ Common use cases for groups include:
Households are subdivisions within a single Group. Households maintain their own users and settings, while sharing their recipes with other households. Households also share organizers (tags, categories, etc.) with the entire group. Meal Plans, Shopping Lists, and Integrations are only accessible within a household.
Common use cases for households include:
- Sharing a common recipe pool amongst families
- Maintaining separate meal plans and shopping lists from other households
- Maintaining separate integrations and customizations from other households

View File

@@ -4,21 +4,22 @@
### General
| Variables | Default | Description |
| ----------------------------- | :-------------------: | -------------------------------------------------------------------------------------------------- |
| PUID | 911 | UserID permissions between host OS and container |
| PGID | 911 | GroupID permissions between host OS and container |
| DEFAULT_GROUP | Home | The default group for users |
| DEFAULT_HOUSEHOLD | Family | The default household for users in each group |
| BASE_URL | http://localhost:8080 | Used for Notifications |
| TOKEN_TIME | 48 | The time in hours that a login/auth token is valid |
| API_PORT | 9000 | The port exposed by backend API. **Do not change this if you're running in Docker** |
| API_DOCS | True | Turns on/off access to the API documentation locally |
| TZ | UTC | Must be set to get correct date/time on the server |
| ALLOW_SIGNUP<super>\*</super> | false | Allow user sign-up without token |
| LOG_CONFIG_OVERRIDE | | Override the config for logging with a custom path |
| LOG_LEVEL | info | Logging level (e.g. critical, error, warning, info, debug) |
| DAILY_SCHEDULE_TIME | 23:45 | The time of day to run daily server tasks, in HH:MM format. Use the server's local time, *not* UTC |
| Variables | Default | Description |
| ----------------------------- | :-------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| PUID | 911 | UserID permissions between host OS and container |
| PGID | 911 | GroupID permissions between host OS and container |
| DEFAULT_GROUP | Home | The default group for users |
| DEFAULT_HOUSEHOLD | Family | The default household for users in each group |
| BASE_URL | http://localhost:8080 | Used for Notifications |
| TOKEN_TIME | 48 | The time in hours that a login/auth token is valid. Must be <= 9600 (400 days, in hours). |
| API_PORT | 9000 | The port exposed by backend API. **Do not change this if you're running in Docker** |
| API_DOCS | True | Turns on/off access to the API documentation locally |
| TZ | UTC | Must be set to get correct date/time on the server |
| ALLOW_SIGNUP<super>\*</super> | false | Allow user sign-up without token |
| ALLOW_PASSWORD_LOGIN | true | Whether or not to display the username+password input fields. Keep set to true unless you use OIDC authentication |
| LOG_CONFIG_OVERRIDE | | Override the config for logging with a custom path |
| LOG_LEVEL | info | Logging level (e.g. critical, error, warning, info, debug) |
| DAILY_SCHEDULE_TIME | 23:45 | The time of day to run daily server tasks, in HH:MM format. Use the server's local time, *not* UTC |
<super>\*</super> Starting in v1.4.0 this was changed to default to `false` as part of a security review of the application.
@@ -31,27 +32,28 @@
### Database
| Variables | Default | Description |
| --------------------- | :------: | ----------------------------------------------------------------------- |
| DB_ENGINE | sqlite | Optional: 'sqlite', 'postgres' |
| POSTGRES_USER | mealie | Postgres database user |
| POSTGRES_PASSWORD | mealie | Postgres database password |
| POSTGRES_SERVER | postgres | Postgres database server address |
| POSTGRES_PORT | 5432 | Postgres database port |
| POSTGRES_DB | mealie | Postgres database name |
| POSTGRES_URL_OVERRIDE | None | Optional Postgres URL override to use instead of POSTGRES\_\* variables |
| Variables | Default | Description |
|---------------------------------------------------------|:--------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| DB_ENGINE | sqlite | Optional: 'sqlite', 'postgres' |
| SQLITE_MIGRATE_JOURNAL_WAL | False | If set to true, switches SQLite's journal mode to WAL, which allows for multiple concurrent accesses. This can be useful when you have a decent amount of concurrency or when using certain remote storage systems such as Ceph. |
| POSTGRES_USER<super>[&dagger;][secrets]</super> | mealie | Postgres database user |
| POSTGRES_PASSWORD<super>[&dagger;][secrets]</super> | mealie | Postgres database password |
| POSTGRES_SERVER<super>[&dagger;][secrets]</super> | postgres | Postgres database server address |
| POSTGRES_PORT<super>[&dagger;][secrets]</super> | 5432 | Postgres database port |
| POSTGRES_DB<super>[&dagger;][secrets]</super> | mealie | Postgres database name |
| POSTGRES_URL_OVERRIDE<super>[&dagger;][secrets]</super> | None | Optional Postgres URL override to use instead of POSTGRES\_\* variables |
### Email
| Variables | Default | Description |
| ------------------ | :-----: | ------------------------------------------------- |
| SMTP_HOST | None | Required For email |
| SMTP_PORT | 587 | Required For email |
| SMTP_FROM_NAME | Mealie | Required For email |
| SMTP_AUTH_STRATEGY | TLS | Required For email, Options: 'TLS', 'SSL', 'NONE' |
| SMTP_FROM_EMAIL | None | Required For email |
| SMTP_USER | None | Required if SMTP_AUTH_STRATEGY is 'TLS' or 'SSL' |
| SMTP_PASSWORD | None | Required if SMTP_AUTH_STRATEGY is 'TLS' or 'SSL' |
| Variables | Default | Description |
| ----------------------------------------------- | :-----: | ------------------------------------------------- |
| SMTP_HOST<super>[&dagger;][secrets]</super> | None | Required For email |
| SMTP_PORT<super>[&dagger;][secrets]</super> | 587 | Required For email |
| SMTP_FROM_NAME | Mealie | Required For email |
| SMTP_AUTH_STRATEGY | TLS | Required For email, Options: 'TLS', 'SSL', 'NONE' |
| SMTP_FROM_EMAIL | None | Required For email |
| SMTP_USER<super>[&dagger;][secrets]</super> | None | Required if SMTP_AUTH_STRATEGY is 'TLS' or 'SSL' |
| SMTP_PASSWORD<super>[&dagger;][secrets]</super> | None | Required if SMTP_AUTH_STRATEGY is 'TLS' or 'SSL' |
### Webworker
@@ -72,21 +74,21 @@ Use this only when mealie is run without a webserver or reverse proxy.
### LDAP
| Variables | Default | Description |
| -------------------- | :-----: | ----------------------------------------------------------------------------------------------------------------------------------- |
| LDAP_AUTH_ENABLED | False | Authenticate via an external LDAP server in addidion to built-in Mealie auth |
| LDAP_SERVER_URL | None | LDAP server URL (e.g. ldap://ldap.example.com) |
| LDAP_TLS_INSECURE | False | Do not verify server certificate when using secure LDAP |
| LDAP_TLS_CACERTFILE | None | File path to Certificate Authority used to verify server certificate (e.g. `/path/to/ca.crt`) |
| LDAP_ENABLE_STARTTLS | False | Optional. Use STARTTLS to connect to the server |
| LDAP_BASE_DN | None | Starting point when searching for users authentication (e.g. `CN=Users,DC=xx,DC=yy,DC=de`) |
| LDAP_QUERY_BIND | None | Optional bind user for LDAP search queries (e.g. `cn=admin,cn=users,dc=example,dc=com`). If `None` then anonymous bind will be used |
| LDAP_QUERY_PASSWORD | None | Optional password for the bind user used in LDAP_QUERY_BIND |
| LDAP_USER_FILTER | None | Optional LDAP filter to narrow down eligible users (e.g. `(memberOf=cn=mealie_user,dc=example,dc=com)`) |
| LDAP_ADMIN_FILTER | None | Optional LDAP filter, which tells Mealie the LDAP user is an admin (e.g. `(memberOf=cn=admins,dc=example,dc=com)`) |
| LDAP_ID_ATTRIBUTE | uid | The LDAP attribute that maps to the user's id |
| LDAP_NAME_ATTRIBUTE | name | The LDAP attribute that maps to the user's name |
| LDAP_MAIL_ATTRIBUTE | mail | The LDAP attribute that maps to the user's email |
| Variables | Default | Description |
| ----------------------------------------------------- | :-----: | ----------------------------------------------------------------------------------------------------------------------------------- |
| LDAP_AUTH_ENABLED | False | Authenticate via an external LDAP server in addidion to built-in Mealie auth |
| LDAP_SERVER_URL<super>[&dagger;][secrets]</super> | None | LDAP server URL (e.g. ldap://ldap.example.com) |
| LDAP_TLS_INSECURE | False | Do not verify server certificate when using secure LDAP |
| LDAP_TLS_CACERTFILE | None | File path to Certificate Authority used to verify server certificate (e.g. `/path/to/ca.crt`) |
| LDAP_ENABLE_STARTTLS | False | Optional. Use STARTTLS to connect to the server |
| LDAP_BASE_DN | None | Starting point when searching for users authentication (e.g. `CN=Users,DC=xx,DC=yy,DC=de`) |
| LDAP_QUERY_BIND | None | Optional bind user for LDAP search queries (e.g. `cn=admin,cn=users,dc=example,dc=com`). If `None` then anonymous bind will be used |
| LDAP_QUERY_PASSWORD<super>[&dagger;][secrets]</super> | None | Optional password for the bind user used in LDAP_QUERY_BIND |
| LDAP_USER_FILTER | None | Optional LDAP filter to narrow down eligible users (e.g. `(memberOf=cn=mealie_user,dc=example,dc=com)`) |
| LDAP_ADMIN_FILTER | None | Optional LDAP filter, which tells Mealie the LDAP user is an admin (e.g. `(memberOf=cn=admins,dc=example,dc=com)`) |
| LDAP_ID_ATTRIBUTE | uid | The LDAP attribute that maps to the user's id |
| LDAP_NAME_ATTRIBUTE | name | The LDAP attribute that maps to the user's name |
| LDAP_MAIL_ATTRIBUTE | mail | The LDAP attribute that maps to the user's email |
### OpenID Connect (OIDC)
@@ -94,22 +96,24 @@ Use this only when mealie is run without a webserver or reverse proxy.
For usage, see [Usage - OpenID Connect](../authentication/oidc-v2.md)
| Variables | Default | Description |
| ------------------------------------------------- | :-----: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| OIDC_AUTH_ENABLED | False | Enables authentication via OpenID Connect |
| OIDC_SIGNUP_ENABLED | True | Enables new users to be created when signing in for the first time with OIDC |
| OIDC_CONFIGURATION_URL | None | The URL to the OIDC configuration of your provider. This is usually something like https://auth.example.com/.well-known/openid-configuration |
| OIDC_CLIENT_ID | None | The client id of your configured client in your provider |
| OIDC_CLIENT_SECRET <br/> :octicons-tag-24: v2.0.0 | None | The client secret of your configured client in your provider |
| OIDC_USER_GROUP | None | If specified, only users belonging to this group will be able to successfully authenticate. For more information see [this page](../authentication/oidc-v2.md#groups) |
| OIDC_ADMIN_GROUP | None | If specified, users belonging to this group will be able to successfully authenticate *and* be made an admin. For more information see [this page](../authentication/oidc-v2.md#groups) |
| OIDC_AUTO_REDIRECT | False | If `True`, then the login page will be bypassed and you will be sent directly to your Identity Provider. You can still get to the login page by adding `?direct=1` to the login URL |
| OIDC_PROVIDER_NAME | OAuth | The provider name is shown in SSO login button. "Login with <OIDC_PROVIDER_NAME\>" |
| OIDC_REMEMBER_ME | False | Because redirects bypass the login screen, you cant extend your session by clicking the "Remember Me" checkbox. By setting this value to true, a session will be extended as if "Remember Me" was checked |
| OIDC_USER_CLAIM | email | This is the claim which Mealie will use to look up an existing user by (e.g. "email", "preferred_username") |
| OIDC_GROUPS_CLAIM | groups | Optional if not using `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP`. This is the claim Mealie will request from your IdP and will use to compare to `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP` to allow the user to log in to Mealie or is set as an admin. **Your IdP must be configured to grant this claim** |
| OIDC_SCOPES_OVERRIDE | None | Advanced configuration used to override the scopes requested from the IdP. **Most users won't need to change this**. At a minimum, 'openid profile email' are required. |
| OIDC_TLS_CACERTFILE | None | File path to Certificate Authority used to verify server certificate (e.g. `/path/to/ca.crt`) |
| Variables | Default | Description |
| ----------------------------------------------------------------------------------- | :-----: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| OIDC_AUTH_ENABLED | False | Enables authentication via OpenID Connect |
| OIDC_SIGNUP_ENABLED | True | Enables new users to be created when signing in for the first time with OIDC |
| OIDC_CONFIGURATION_URL<super>[&dagger;][secrets]</super> | None | The URL to the OIDC configuration of your provider. This is usually something like https://auth.example.com/.well-known/openid-configuration |
| OIDC_CLIENT_ID<super>[&dagger;][secrets]</super> | None | The client id of your configured client in your provider |
| OIDC_CLIENT_SECRET<super>[&dagger;][secrets]</super> <br/> :octicons-tag-24: v2.0.0 | None | The client secret of your configured client in your provider |
| OIDC_USER_GROUP | None | If specified, only users belonging to this group will be able to successfully authenticate, regardless of the `OIDC_ADMIN_GROUP`. For more information see [this page](../authentication/oidc.md#groups) |
| OIDC_ADMIN_GROUP | None | If specified, users belonging to this group will be made an admin. For more information see [this page](../authentication/oidc.md#groups) |
| OIDC_AUTO_REDIRECT | False | If `True`, then the login page will be bypassed an you will be sent directly to your Identity Provider. You can still get to the login page by adding `?direct=1` to the login URL |
| OIDC_PROVIDER_NAME | OAuth | The provider name is shown in SSO login button. "Login with <OIDC_PROVIDER_NAME\>" |
| OIDC_REMEMBER_ME | False | Because redirects bypass the login screen, you cant extend your session by clicking the "Remember Me" checkbox. By setting this value to true, a session will be extended as if "Remember Me" was checked |
| OIDC_SIGNING_ALGORITHM | RS256 | The algorithm used to sign the id token (examples: RS256, HS256) |
| OIDC_USER_CLAIM | email | This is the claim which Mealie will use to look up an existing user by (e.g. "email", "preferred_username") |
| OIDC_NAME_CLAIM | name | This is the claim which Mealie will use for the users Full Name |
| OIDC_GROUPS_CLAIM | groups | Optional if not using `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP`. This is the claim Mealie will request from your IdP and will use to compare to `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP` to allow the user to log in to Mealie or is set as an admin. **Your IdP must be configured to grant this claim** |
| OIDC_SCOPES_OVERRIDE | None | Advanced configuration used to override the scopes requested from the IdP. **Most users won't need to change this**. At a minimum, 'openid profile email' are required. |
| OIDC_TLS_CACERTFILE | None | File path to Certificate Authority used to verify server certificate (e.g. `/path/to/ca.crt`) |
### OpenAI
@@ -118,59 +122,193 @@ For usage, see [Usage - OpenID Connect](../authentication/oidc-v2.md)
Mealie supports various integrations using OpenAI. For more information, check out our [OpenAI documentation](./open-ai.md).
For custom mapping variables (e.g. OPENAI_CUSTOM_HEADERS) you should pass values as JSON encoded strings (e.g. `OPENAI_CUSTOM_PARAMS='{"k1": "v1", "k2": "v2"}'`)
| Variables | Default | Description |
| ---------------------------- | :-----: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| OPENAI_BASE_URL | None | The base URL for the OpenAI API. If you're not sure, leave this empty to use the standard OpenAI platform |
| OPENAI_API_KEY | None | Your OpenAI API Key. Enables OpenAI-related features |
| OPENAI_MODEL | gpt-4o | Which OpenAI model to use. If you're not sure, leave this empty |
| OPENAI_CUSTOM_HEADERS | None | Custom HTTP headers to add to all OpenAI requests. This should generally be left empty unless your custom service requires them |
| OPENAI_CUSTOM_PARAMS | None | Custom HTTP query params to add to all OpenAI requests. This should generally be left empty unless your custom service requires them |
| OPENAI_ENABLE_IMAGE_SERVICES | True | Whether to enable OpenAI image services, such as creating recipes via image. Leave this enabled unless your custom model doesn't support it, or you want to reduce costs |
| OPENAI_WORKERS | 2 | Number of OpenAI workers per request. Higher values may increase processing speed, but will incur additional API costs |
| OPENAI_SEND_DATABASE_DATA | True | Whether to send Mealie data to OpenAI to improve request accuracy. This will incur additional API costs |
| OPENAI_REQUEST_TIMEOUT | 60 | The number of seconds to wait for an OpenAI request to complete before cancelling the request. Leave this empty unless you're running into timeout issues on slower hardware |
| Variables | Default | Description |
| ------------------------------------------------- | :-----: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| OPENAI_BASE_URL<super>[&dagger;][secrets]</super> | None | The base URL for the OpenAI API. If you're not sure, leave this empty to use the standard OpenAI platform |
| OPENAI_API_KEY<super>[&dagger;][secrets]</super> | None | Your OpenAI API Key. Enables OpenAI-related features |
| OPENAI_MODEL | gpt-4o | Which OpenAI model to use. If you're not sure, leave this empty |
| OPENAI_CUSTOM_HEADERS | None | Custom HTTP headers to add to all OpenAI requests. This should generally be left empty unless your custom service requires them |
| OPENAI_CUSTOM_PARAMS | None | Custom HTTP query params to add to all OpenAI requests. This should generally be left empty unless your custom service requires them |
| OPENAI_ENABLE_IMAGE_SERVICES | True | Whether to enable OpenAI image services, such as creating recipes via image. Leave this enabled unless your custom model doesn't support it, or you want to reduce costs |
| OPENAI_WORKERS | 2 | Number of OpenAI workers per request. Higher values may increase processing speed, but will incur additional API costs |
| OPENAI_SEND_DATABASE_DATA | True | Whether to send Mealie data to OpenAI to improve request accuracy. This will incur additional API costs |
| OPENAI_REQUEST_TIMEOUT | 300 | The number of seconds to wait for an OpenAI request to complete before cancelling the request. Leave this empty unless you're running into timeout issues on slower hardware |
### Theming
Setting the following environmental variables will change the theme of the frontend. Note that the themes are the same for all users. This is a break-change when migration from v0.x.x -> 1.x.x.
| Variables | Default | Description |
| --------------------- | :-----: | --------------------------- |
| THEME_LIGHT_PRIMARY | #E58325 | Light Theme Config Variable |
| THEME_LIGHT_ACCENT | #007A99 | Light Theme Config Variable |
| THEME_LIGHT_SECONDARY | #973542 | Light Theme Config Variable |
| THEME_LIGHT_SUCCESS | #43A047 | Light Theme Config Variable |
| THEME_LIGHT_INFO | #1976D2 | Light Theme Config Variable |
| THEME_LIGHT_WARNING | #FF6D00 | Light Theme Config Variable |
| THEME_LIGHT_ERROR | #EF5350 | Light Theme Config Variable |
| THEME_DARK_PRIMARY | #E58325 | Dark Theme Config Variable |
| THEME_DARK_ACCENT | #007A99 | Dark Theme Config Variable |
| THEME_DARK_SECONDARY | #973542 | Dark Theme Config Variable |
| THEME_DARK_SUCCESS | #43A047 | Dark Theme Config Variable |
| THEME_DARK_INFO | #1976D2 | Dark Theme Config Variable |
| THEME_DARK_WARNING | #FF6D00 | Dark Theme Config Variable |
| THEME_DARK_ERROR | #EF5350 | Dark Theme Config Variable |
!!! info
If you're setting these variables but not seeing these changes persist, try removing the `#` character. Also, depending on which syntax you're using, double-check you're using quotes correctly.
If using YAML mapping syntax, be sure to include quotes around these values, otherwise they will be treated as comments in your YAML file:<br>`THEME_LIGHT_PRIMARY: '#E58325'` or `THEME_LIGHT_PRIMARY: 'E58325'`
If using YAML sequence syntax, don't include any quotes:<br>`THEME_LIGHT_PRIMARY=#E58325` or `THEME_LIGHT_PRIMARY=E58325`
| Variables | Default | Description |
| --------------------- | :-----: | ---------------------------------- |
| THEME_LIGHT_PRIMARY | #E58325 | Main brand color and headers |
| THEME_LIGHT_ACCENT | #007A99 | Buttons and interactive elements |
| THEME_LIGHT_SECONDARY | #973542 | Navigation and sidebar backgrounds |
| THEME_LIGHT_SUCCESS | #43A047 | Success messages and confirmations |
| THEME_LIGHT_INFO | #1976D2 | Information alerts and tooltips |
| THEME_LIGHT_WARNING | #FF6D00 | Warning notifications |
| THEME_LIGHT_ERROR | #EF5350 | Error messages and alerts |
| THEME_DARK_PRIMARY | #E58325 | Main brand color and headers |
| THEME_DARK_ACCENT | #007A99 | Buttons and interactive elements |
| THEME_DARK_SECONDARY | #973542 | Navigation and sidebar backgrounds |
| THEME_DARK_SUCCESS | #43A047 | Success messages and confirmations |
| THEME_DARK_INFO | #1976D2 | Information alerts and tooltips |
| THEME_DARK_WARNING | #FF6D00 | Warning notifications |
| THEME_DARK_ERROR | #EF5350 | Error messages and alerts |
#### Theming Examples
The examples below provide copy-ready Docker Compose environment configurations for three different color palettes. Copy and paste the desired theme into your `docker-compose.yml` file's environment section.
!!! info
These themes are functional and ready to use, but they are provided primarily as examples. The color palettes can be adjusted or refined to better suit your preferences.
=== "Blue Theme"
```yaml
environment:
# Light mode colors
THEME_LIGHT_PRIMARY: '#5E9BD1'
THEME_LIGHT_ACCENT: '#A3C9E8'
THEME_LIGHT_SECONDARY: '#4F89BA'
THEME_LIGHT_SUCCESS: '#4CAF50'
THEME_LIGHT_INFO: '#4A9ED8'
THEME_LIGHT_WARNING: '#EAC46B'
THEME_LIGHT_ERROR: '#E57373'
# Dark mode colors
THEME_DARK_PRIMARY: '#5A8FBF'
THEME_DARK_ACCENT: '#90B8D9'
THEME_DARK_SECONDARY: '#406D96'
THEME_DARK_SUCCESS: '#81C784'
THEME_DARK_INFO: '#78B2C0'
THEME_DARK_WARNING: '#EBC86E'
THEME_DARK_ERROR: '#E57373'
```
=== "Green Theme"
```yaml
environment:
# Light mode colors
THEME_LIGHT_PRIMARY: '#75A86C'
THEME_LIGHT_ACCENT: '#A8D0A6'
THEME_LIGHT_SECONDARY: '#638E5E'
THEME_LIGHT_SUCCESS: '#4CAF50'
THEME_LIGHT_INFO: '#4A9ED8'
THEME_LIGHT_WARNING: '#EAC46B'
THEME_LIGHT_ERROR: '#E57373'
# Dark mode colors
THEME_DARK_PRIMARY: '#739B7A'
THEME_DARK_ACCENT: '#9FBE9D'
THEME_DARK_SECONDARY: '#56775E'
THEME_DARK_SUCCESS: '#81C784'
THEME_DARK_INFO: '#78B2C0'
THEME_DARK_WARNING: '#EBC86E'
THEME_DARK_ERROR: '#E57373'
```
=== "Pink Theme"
```yaml
environment:
# Light mode colors
THEME_LIGHT_PRIMARY: '#D97C96'
THEME_LIGHT_ACCENT: '#E891A7'
THEME_LIGHT_SECONDARY: '#C86C88'
THEME_LIGHT_SUCCESS: '#4CAF50'
THEME_LIGHT_INFO: '#2196F3'
THEME_LIGHT_WARNING: '#FFC107'
THEME_LIGHT_ERROR: '#E57373'
# Dark mode colors
THEME_DARK_PRIMARY: '#C2185B'
THEME_DARK_ACCENT: '#FF80AB'
THEME_DARK_SECONDARY: '#AD1457'
THEME_DARK_SUCCESS: '#81C784'
THEME_DARK_INFO: '#64B5F6'
THEME_DARK_WARNING: '#FFD54F'
THEME_DARK_ERROR: '#E57373'
```
### Docker Secrets
Setting a credential can be done using secrets when running in a Docker container.
This can be used to avoid leaking passwords through compose files, environment variables, or command-line history.
For example, to configure the Postgres database password in Docker compose, create a file on the host that contains only the password, and expose that file to the Mealie service as a secret with the correct name.
Note that environment variables take priority over secrets, so any previously defined environment variables should be removed when migrating to secrets.
> <super>&dagger;</super> Starting in version `2.4.2`, any environment variable in the preceding lists with a dagger
> symbol next to them support the Docker Compose secrets pattern, below.
[Docker Compose secrets][docker-secrets] can be used to secure sensitive information regarding the Mealie implementation
by managing control of each secret independently from the single `.env` file. This is helpful for users that may need
different levels of access for various, sensitive environment variables, such as differentiating between hardening
operations (e.g., server endpoints and ports) and user access control (e.g., usernames, passwords, and API keys).
To convert any of these environment variables to a Docker Compose secret, append `_FILE` to the environment variable and
connect it with a Docker Compose secret, per the [Docker documentation][docker-secrets].
If both the base environment variable and the secret pattern of the environment variable are set, the secret will always
take precedence.
For example, a user that wishes to harden their operations by only giving some access to their database URL, but who
wish to place additional security around their user access control, may have a Docker Compose configuration similar to:
```yaml
services:
mealie:
...
environment:
...
POSTGRES_USER: postgres
secrets:
- POSTGRES_PASSWORD
# These secrets will be loaded by Docker into the `/run/secrets` folder within the container.
- postgres-host
- postgres-port
- postgres-db-name
- postgres-user
- postgres-password
environment:
DB_ENGINE: postgres
POSTGRES_SERVER: duplicate.entry.tld # This will be ignored, due to the secret defined, below.
POSTGRES_SERVER_FILE: /run/secrets/postgres-host
POSTGRES_PORT_FILE: /run/secrets/postgres-port
POSTGRES_DB_FILE: /run/secrets/postgres-db-name
POSTGRES_USER_FILE: /run/secrets/postgres-user
POSTGRES_PASSWORD_FILE: /run/secrets/postgres-password
# Each of these secrets are loaded via these local files. Different patterns are available. See the Docker Compose
# documentation for more information.
secrets:
POSTGRES_PASSWORD:
file: postgrespassword.txt
postgres-host:
file: ./secrets/postgres-host.txt
postgres-port:
file: ./secrets/postgres-port.txt
postgres-db-name:
file: ./secrets/sensitive/postgres-db-name.txt
postgres-user:
file: ./secrets/sensitive/postgres-user.txt
postgres-password:
file: ./secrets/sensitive/postgres-password.txt
```
In the example above, a directory organization and access pattern may look like the following:
```text
.
├── docker-compose.yml
└── secrets # Access restricted to anyone that can manage secrets
├── postgres-host.txt
├── postgres-port.txt
└── sensitive # Access further-restricted to anyone managing service accounts
├── postgres-db-name.txt
├── postgres-password.txt
└── postgres-user.txt
```
How you organize your secrets is ultimately up to you. At minimum, it's highly recommended to use secret patterns for
at least these sensitive environment variables when working within shared environments:
- `POSTGRES_PASSWORD`
- `SMTP_PASSWORD`
- `LDAP_QUERY_PASSWORD`
- `OPENAI_API_KEY`
[docker-secrets]: https://docs.docker.com/compose/use-secrets/
[secrets]: #docker-secrets
[unicorn_workers]: https://www.uvicorn.org/deployment/#built-in

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:
1. Take a backup just in case!
2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v2.1.0`
2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v3.8.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
@@ -60,7 +60,7 @@ The following steps were tested on a Ubuntu 20.04 server, but should work for mo
## Step 3: Customizing The `docker-compose.yaml` files.
After you've decided setup the files it's important to set a few ENV variables to ensure that you can use all the features of Mealie. I recommend that you verify and check that:
After you've decided how to set up your files, it's important to set a few ENV variables to ensure that you can use all the features of Mealie. Verify that:
- [x] You've configured the relevant ENV variables for your database selection in the `docker-compose.yaml` files.
- [x] You've configured the [SMTP server settings](./backend-config.md#email) (used for invitations, password resets, etc). You can setup a [google app password](https://support.google.com/accounts/answer/185833?hl=en) if you want to send email via gmail.
@@ -117,7 +117,7 @@ The latest tag provides the latest released image of Mealie.
---
**These tags no are long updated**
**These tags are no longer updated**
`mealie:frontend-v1.0.0beta-x` **and** `mealie:api-v1.0.0beta-x`

View File

@@ -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:v2.1.0 # (3)
image: ghcr.io/mealie-recipes/mealie:v3.8.0 # (3)
container_name: mealie
restart: always
ports:
@@ -24,8 +27,6 @@ services:
PUID: 1000
PGID: 1000
TZ: America/Anchorage
MAX_WORKERS: 1
WEB_CONCURRENCY: 1
BASE_URL: https://mealie.yourdomain.com
# Database Settings
DB_ENGINE: postgres
@@ -40,13 +41,15 @@ services:
postgres:
container_name: postgres
image: postgres:15
image: postgres:17
restart: always
volumes:
- mealie-pgdata:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: mealie
POSTGRES_USER: mealie
PGUSER: mealie
POSTGRES_DB: mealie
healthcheck:
test: ["CMD", "pg_isready"]
interval: 30s

View File

@@ -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.1.0 # (3)
image: ghcr.io/mealie-recipes/mealie:v3.8.0 # (3)
container_name: mealie
restart: always
ports:
@@ -28,8 +28,6 @@ services:
PUID: 1000
PGID: 1000
TZ: America/Anchorage
MAX_WORKERS: 1
WEB_CONCURRENCY: 1
BASE_URL: https://mealie.yourdomain.com
volumes:

View File

@@ -28,6 +28,7 @@ Mealie is a self hosted recipe manager and meal planner with a RestAPI backend a
- Copy Me That
- Paprika
- Tandoor Recipes
- DVO Cook'n X3
- Random Meal Plan generation
- Advanced rule configuration to fine tune random recipes

View File

@@ -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

View File

@@ -4,11 +4,28 @@
You MUST read the release notes prior to upgrading your container. Mealie has a robust backup and restore system for managing your data. Pre-v1.0.0 versions of Mealie use a different database structure, so if you are upgrading from pre-v1.0.0 to v1.0.0, you MUST backup your data and then re-import it. Even if you are already on v1.0.0, it is strongly recommended to backup all data before updating.
### Before Upgrading
- Read The Release Notes
- [Read The Release Notes](https://github.com/mealie-recipes/mealie/releases)
- Identify Breaking Changes
- Create a Backup and Download from the UI
- Upgrade
!!! info "Improved Image Processing"
Starting with :octicons-tag-24: v3.7.0, we updated our image processing algorithm to improve image quality and compression. New image processing can be up to 40%-50% smaller on disk while providing higher resolution thumbnails. To take advantage of these improvements on older recipes, you can run our image-processing script:
```shell
docker exec -it mealie bash
python /opt/mealie/lib64/python3.12/site-packages/mealie/scripts/reprocess_images.py
```
### Options
- `--workers N`: Number of worker threads (default: 2, safe for low-powered devices)
- `--force-all`: Reprocess all recipes regardless of current image state
### Example
```shell
python /opt/mealie/lib64/python3.12/site-packages/mealie/scripts/reprocess_images.py --workers 8
```
## Upgrading to Mealie v1 or later
If you are upgrading from pre-v1.0.0 to v1.0.0 or later (v2.0.0, etc.), make sure you read [Migrating to Mealie v1](./migrating-to-mealie-v1.md)!

View File

@@ -1,17 +1,24 @@
# Backups and Restoring
# Backups and Restores
Mealie provides an integrated mechanics for doing full installation backups of the database. Navigate to `/admin/backups` to
Mealie provides an integrated mechanic for doing full installation backups of the database.
Navigate to Settings > Admin Settings > Backups or manually by adding `/admin/backups` to your instance URL.
From this page, you will be able to:
- See a list of available backups
- Perform a backups
- Restore a backup
- Create a backup
- Upload a backup
- Delete a backup (Confirmation Required)
- Download a backup
- Perform a restore
!!! tip
If you're using Mealie with SQLite all your data is stored in the /app/data/ folder in the container. You can easily perform entire site backups by stopping the container, and backing up this folder with your chosen tool. This is the **best** way to backup your data.
## Restoring from a Backup
To restore from a backup it needs to be uploaded to your instance, this can be done through the web portal. On the lower left hand corner of the backups data table you'll see an upload button. Click this button and select the backup file you want to upload and it will be available to import shortly.
To restore from a backup it needs to be uploaded to your instance which can be done through the web portal. On the top left of the page you'll see an upload button. Click this button and select the backup file you want to upload and it will be available to import shortly. You can alternatively use one of the backups you see on the screen, if one exists.
Before importing it's critical that you understand the following:
@@ -19,6 +26,9 @@ Before importing it's critical that you understand the following:
- This action cannot be undone
- If this action is successful you will be logged out and you will need to log back in to complete the restore
!!! tip
If for some reason the restore does not succeed, you can review the logs of what the issue may be, download the backup .ZIP and edit the contents of database.json to potentially resolve the issue. For example, if you receive an error restoring 'shopping-list' you can edit out the contents of that list while allowing other sections to restore. If you would like any assistance on this, reach out over Discord.
!!! warning
Prior to beta-v5 using a mis-matched version of the database backup will result in an error that will prevent you from using the instance of Mealie requiring you to remove all data and reinstall. Post beta-v5 performing a mismatched restore will throw an error and alert the user of the issue.
@@ -29,7 +39,7 @@ Restoring the Database when using Postgres requires Mealie to be configured with
```sql
ALTER USER mealie WITH SUPERUSER;
# Run restore from Mealie
-- Run restore from Mealie
ALTER USER mealie WITH NOSUPERUSER;
```

View File

@@ -1,6 +1,7 @@
# Permissions and Public Access
Mealie provides various levels of user access and permissions. This includes:
- Authentication and registration ([LDAP](../authentication/ldap.md) and [OpenID Connect](../authentication/oidc.md) are both supported)
- Customizable user permissions
- Fine-tuned public access for non-users
@@ -8,12 +9,12 @@ Mealie provides various levels of user access and permissions. This includes:
## Customizable User Permissions
Each user can be configured to have varying levels of access. Some of these permissions include:
- Access to Administrator tools
- Access to inviting other users
- Access to manage their group and group data
Administrators can navigate to the Settings page and access the User Management page to configure these settings.
Administrators can configure these settings on the User Management page (navigate to Settings > Admin Settings > Users or append `/admin/manage/users` to your instance URL).
[User Management Demo](https://demo.mealie.io/admin/manage/users){ .md-button .md-button--primary }
@@ -22,8 +23,8 @@ Administrators can navigate to the Settings page and access the User Management
By default, groups and households are set to private, meaning only logged-in users may access the group/household. In order for a recipe to be viewable by public (not logged-in) users, three criteria must be met:
1. The group must not be private
2. The household must not be private, *and* the household setting for allowing users outside of your group to see your recipes must be enabled. These can be toggled on the Household Settings page
2. The recipe must be set to public. This can be toggled for each recipe individually, or in bulk using the Recipe Data Management page
2. The household must not be private, _and_ the household setting for allowing users outside of your group to see your recipes must be enabled. These can be toggled on the Household Management page (navigate to Settings > Admin Settings > Households or append `/admin/manage/households` to your instance URL)
3. The recipe must be set to public. This can be toggled for each recipe individually, or in bulk using the Recipe Data Management page
Additionally, if the group is not private, public users can view all public group data (public recipes, public cookbooks, etc.) from the home page ([e.g. the demo home page](https://demo.mealie.io/g/home)).

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

View File

@@ -0,0 +1,126 @@
# October 2024 Survey
It's been a while since a Mealie survey was done, and the community was much smaller back then. So much has changed in 2024, and we wanted to gauge the community's thoughts.
Our v2.0 release gave us a platform to ask people to take a few minutes to share their thoughts.
A massive thanks to everyone who took the time to fill out this survey. We had 525 respondents! We're overwhelmed with the support.
Also, thanks to ChristianB-F from our Discord community for putting the following images together, and to everyone who has taken the time to raise either an issue or pull request on our GitHub repository!
For each question, we've created a GitHub discussion and we invite you to share any interesting insights or thoughts you have from the survey results!
If you see a specific idea that resonates with you, please check if there's already a feature request, and if not, please raise one and add your perspective.
The questions (bar question 1) that are free text are on separate pages you'll need to click into, as there's just too much content to include on this page.
For the written response sections, we have removed some of the more indifferent responses (e.g., "N/A") to save you reading time. If you'd like to see all the raw responses, they're in [this GitHub commit](https://github.com/mealie-recipes/mealie/pull/4666/commits/1287bc1635d9c2560b10db3a92a0d6644bc81571).
## Structured Questions
### Mealie Version (pre-v2)
This question was free text input and it was mandatory.
The responses to this were so varied and not overly informative/indicative of anything, so we've decided not to publish them - both to save space and your time.
### Database Type
This question was a single select and it was optional.
Key insight: SQLite is the predominant database, but Postgres maintains an admirable share and must remain front of mind for any changes we make.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4640)
![Question 2](Question2.png)
### Time Using Mealie
How long have you been using Mealie? This question was a single select and it was mandatory.
Key insight: Most users have been using Mealie less than a year, with another 25% in the 1-2 year range. These users will have seen a lot of change in the product over that time.
Thanks to the long term users!
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4641)
![Question 3](Question3.png)
### Engagement with Mealie, the Project, and the Community
This question was multiple choice and it was optional.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4642)
![Question 4](Question4.png)
### Number of Active Users
This question was a single select and it was mandatory.
Key insight: ~85% of instances have 2 users or fewer. This is assumed to be a couple of adults living together.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4643)
![Question 5](Question5.png)
### Number of Active Groups
This question was a single select and it was mandatory.
Key insight: Similar to the above question, one group being the most common backs the theory of one "family" using the Mealie instance.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4644)
![Question 6](Question6.png)
### Using Mealie on Mobile
Do you access Mealie on a mobile? Using your browser or with it installed as an app (a Progressive Web App/PWA)? This question was a multiple select and it was mandatory.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4645)
![Question 7](Question7.png)
### Feature Usage
Please select all the features you actively/regularly use, or consider important. This question was a multiple select and it was optional.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4646)
![Question 8](Question8.png)
## Suggestions/Feedback
Some of you will spot feature suggestions that you know to already exist in Mealie. We'd love it if you could help us improve the documentation so more people can know about them! All pull requests are much appreciated. The [features](https://docs.mealie.io/documentation/getting-started/features/) page, or the [FAQ](https://docs.mealie.io/documentation/getting-started/faq/) could be appropriate places to add documentation.
### Shopping List Suggestions
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4647)
[Question 9](q9.md)
### Meal Planner Suggestions
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4648)
[Question 10](q10.md)
### Recipe Timeline Suggestions
Key insight: Looks like a lot of people would be fine with this not existing, or at least being hidden.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4649)
[Question 11](q11.md)
### Recipe Suggestions
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4650)
[Question 12](q12.md)
### Other Suggestions
There are so many kind words in this section in particular. Thanks so much, it means a lot to the whole team and all our contributors to see the impact Mealie has on people's lives!
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4651)
[Question 13](q13.md)

View File

@@ -0,0 +1,227 @@
[Back to the overview](overview.md)
# Question 10: Any suggestions for how to improve the Meal Planner?
> again mostly visual, I think it works well as is for my needs but the interface could use some improvements
> The ability to open a recipe in a new tab from Edit mode. You can do this in the View only mode, but when editing the meal plan, it would be nice to easily get to a recipe to see what ingredients there are. I am often checking recipes to see if I already have the ingredients in my cupboard, as part of making a plan for my weekly meal plan. Not being able to quickly see the recipe is a little annoying.
> If Not fixed jet, integrate Portions e.g. 200g sugger and 2egg for two people and 400g sugger and 4eggs for 4 people
> I live alone, so I almost always have leftovers from a meal. Would love for the meal planner to be able to see how many portions a recipe makes, and if its more than the number of people eating it automatically makes leftover meals for the next days. I know you can create notes manually currently, but that's a lot of work.
> Option for "friendly mode" when selecting a date, I.e. "next Tuesday" or "two Wednesday's from today"
> Add a label with the name of the user who added a meal to the planner in case of two or more users in the same household don't share the same dish.
> editing is a separate button/step. It would be nice if that would be more intuitive/user friendly
> - two week view, month view - drag & drop - mass add to shopping list
> It would be very helpful if the meal planner had an option that helps the user to find recipes with some of the similar ingredients, so that it's easier to use all of the groceries bought.
> Allow to set the same food every day of the week if needed
> Synchronize Meal Plan via ics calendar
> Add a button to automatically fill the whole week (or a predetermined number of days). (Wasn't that an option before?) Add the choice of having the full week (Monday to Sunday) stay in place until the new week. Now the meal planner changes to the current day and adds the chosen number of days to display, which always creates a new empty day.
> Improve import
> A better sliding window of plans. I've found looking back to previous weeks clunky. Most of the time, we only care about this upcoming week but once in a while we'll plan a couple weeks out. I know you can expand the view to be more than 7 days; however, beyond planning, I typically only care about a few days in advance once the plan has been set.
> We create meal plans for the next 7 days but are not fixed to what meals have to be made on which dates. It's more flexible in practice. The Meal Planner as-is is a bit in-flexible in this aspect. Being able to check-off meals as they have been made. As above, are meal plans have to be flexible so being able to mark meals as 'made' or done, makes it easier to see what is left for the rest of the week.
> So the meal planner I find it to be the weakest yet the most important point of Mealie. My main issue is that there are only 4 fixed meals. There are some diet plans that have some intermediate snacks and stuff like that, so the best thing would be to have free control on how many meals each day can have, and perhaps have some rules like "mondays have the standard 4 meals" and "tuesdays have these 4 snacks in middle of the meals" or "wednesdays have these customs meals", so I can set as many meals each day with its custom names on them. The logic would be that I have a "meals" database so I create the object like "morning snack" and then I can apply rules like having a fruit on my morning snack and a power bar on my "afternoon snack". - Also would be cool to have a randomizer for the whole week or month after proper rules were established that autofills the meals set for each day, so I can plan my groceries in advance and save a good amount of repetitive clicking. - In the case of each day's random meal, its strange that there is a button for 2 different meals, but dinner and side have their own buttons. They should have eiother their own button each, or be all toghether in one menu - The possibilty of marking special days like birthdays so these days wont autofill with the suggested randomizer, ignore the rules, and instead would require user input for planning these special meals
> So far it works. It could use some UX changes to improve the flow, certain sizing on mobile would be nice. I am using it with a couple of rules, and made a feature request about this already.
> Create an option to create singular list, that does not tie recipe to specific date. When I create a meal plan, my idea is to use it as a todo list, not deciding upfront what will be done on each day. Currently I am not using meal planner at all, because it really cumbersome for me.
> 1. have a check box so a week could be automatically selected. maybe use the week of the year, ie check box next to Week 47 that would select Sunday - Saturday 2. to be able to click and drag the recipes between the days of the week. so if i didn't want make it on Monday but Tuesday instead i can just drag the recipe cards to the new days. 3. having a Today button in the drop down calendar in case you plan a few weeks ahead
> Being able to go back to previous dates and batch edit the meal plan without having to set the dates after each single edit
> A wizard for creating a meal plan for a given period
> Easy integration of daily meal image into Home assistant. eg a HACS addon?
> More options to auto create e.g. based on ingredients such as pick recipes that total 500g minced beef or 2 meals that include pulled pork. Include macro tracking e.g. total planned calories and average calories
> I was very excited about a "Meal Planner" feature when I first saw it, but it was not what I was expecting. I wanted to be able to collect several recipes into a single "meal", e.g., a soup, a starter, a main, and a desert; or combine my home made steak sauce recipe with my grilled steak recipe for a more complete meal without having to duplicate recipes in multiple records. This would be particularly helpful for large holiday gatherings or dinner parties. Once collected, it could provide a master ingredients list and help with organizing the sequencing of the cooking.
> Ability to reorder meals without switching to edit mode. (Very minor)
> It could be here that you pick the number of people a recipe is for when you add it to a plan. Currently, to double a recipe we have to add it twice to the meal planner and list. Also, drag n drop doesn't work great when editing plans on a tablet (android).
> No I like the meal planner. Integration with the shopping list would be awesome. As in, add the ingredients from recipes on the planner to the shopping list.
> Allow a default view instead of "today forward. (For example, "x previous days" or "this week") Remove the modes and integrate editing with viewing Default to "today" (or "first blank dinner/etc slot") when adding entries.
> As per previous shopping list comments. Really appreciate and like the planner. It makes managing the week's meals and shopping so much easier!
> Add https://github.com/mealie-recipes/mealie/discussions/1761, it would make it easier for me to make many recipes of like tacos or pizzas with base seasoning mixes/dough mixes and individual recipe customizations on top.
> Please add more entry type/food type on planner. In Poland the main dish is at 1-4 P.M. It's called obiad but it's related to lunch. But because it's main meal, we usually have 2 dishes: soup (zupa) and the second dish (drugie danie). It would be great to have separate entry type for soups and the second dished. So in generally, please allow to define own entry types in planner (like in Tandoor Recipes).
> On the meal planner screen, I feel like there should be a button for immediately adding or randomizing a meal for any given day that is blank. Theres something about having to go into edit mode first when youre creating a meal plan on a blank day that seems unintuitive. To my brain “Edit” means to change something that exists, not to create from scratch. Not a big issue obviously but I notice it every time.
> It could be that Im missing something, but excluding meals from categories when using random selection. For example, let me disable adding foods labeled “Dessert” when randomizing.
> Same here. Make it removable via env.
> Mealie has done a great job. If you have to ask questions, I hope to support the<video>tag in the recipe steps instead of iframes, which will cause the video to play automatically.
> Would love a "feature flag"/env var to enable/disable the nightly "Meal Planner -> Recipe Timeline" job. I really like clicking the "I made this!" button when finishing cooking a recipe, and would rather do it that way. My timeline is full of duplicates/incorrect recipe history.
> Nicer UI, option to assign meal to user (e.g. different dinner for kid).
> track times recipe is accessed and suggest meal plans based on patterns
> Make it possible to plan a re-scaled version of a recipe. This would be very helpful when scaling a dish up for hosting. At the moment, you have to remember to scale up the servings each time you go to a recipe from the meal planner.
> I like the meal planner alot. I use it all the time. It was a great bug fix to allow external recipe links as hyperlinks that were clickable (nice to try things before adding to mealie)
> Random within a tag.
> When showing the days, it would be very helpful to have an option to have something like be able to set "default: show week" For me that would make it easier as I sometimes skip cooking one night and have to manually set it so I can see days earlier in the week.
> We repeat our meal plan to a default 3-week plan so it would be nice to be able to apply a 'template' to a timeframe and then make manual adjustments from there. This would be the killer feature for us!
> Using the randomizer is clunky. I don't know how it determines the difference between sides and dinners. It isn't clear how best to organize sides and dinners.
> It may already be an existing feature and I haven't found it it some kind of calendar integration would be nice. I'm going to be trying the home assistant integration soon, then I can stop asking my wife everyday what's for dinner
> sometimes there's too much repetition Or some meals are not proper for a dinner sometimes even adds desserts etc. may be me miss using it to be fair
> Again on v0.5.6 so I'm not sure where this is at with the latest updates.
> Setting the default days would be nice but not a major inconvenience at the moment.
> Ability to export a nice PDF to print out and put it on the kitchen door. Maybe make i iportable as a calendar in Android
> Have settings that allow it to be formatted as a week view on screens that are wide enough or at least adjust the number of columns that can be displayed.
> Allow the ability add any text so that I can add a one time meal that I don't have added to my recipes
> buttons to move displayed days forward/back by 7 days
> It is annoying having to switch between "Meal Planner" and "Edit" views, I would prefer a (+) button on the view to add items to that day for users that can edit the meal plan
> When I add several meals, I can lose track of which days I've added meals to, so if the calendar can highlight days with existing entries, that could be handy.
> It would be nice if you could add meals to a different span of time instead of days. We don't plan to the day but to the week so if we could plan for meals in a week that would be nice. Basically we know we want to eat burgers next week but we don't choose the day, and some day during the week we just look at what is available and decide on the day which of the plan meals we will have.
> Again coming from Meal Lime - I personally prefer a much simpler meal planner (this is my preference so I appreciate everyone is different). I would prefer a toggle "Simple meal planner" vs "Advanced meal planner" The advanced planner would be its current form. The simple meal planner would essentially remove a lot of features. - Plus icon on a day simply pulls up a view of your recipes (with pictures) to tap and select (this is how meal lime works) the popup box with date is not needed, I already click plus on a certain day, why would I then want to select the date again? its a lot easier and quicker to see your pictures than a big list of titles - Meal planner would ONLY account for dinner (again personal preference) the plus icon simply adds a dinner meal - thats it. - No Random button - No side button - No rules or automations etc. You can, in essence, very quickly tap + on a few days, select what you fancy from your recipe photos and hit go. Shopping list is auto populated and you are ready to go. To give you an idea of how I used to use Meal Lime - I was able to complete a meal plan in a couple of minutes as I walked in to the shop, it was that easy and painless. I know I keep going on about it - but I would LOVE for this to be a self hosted version of that app!
> allow a way to disable it via config - we don't use it.
> I often add meals to the planner but don't end up making them, it's just an idea of what we might have, but it adds them to the timeline when I haven't made them. I don't want that.
> Ability to rename the entry type. We use "Side" for our kids meals. I have renamed it in the Magic Mirror module but having it renamed in the app would be a nice QoL improvement. Other than that minor thing it works very well.
> We typically plan meals as a "queue", rather than specific days. It'd be nice to have a non-day-specific queue to add recipes to, in addition to specific days.
> The ability to manually move recipes to the bottom or top of the list for a given day. The option to separate meal planners for each meal. Have consistent style between the “Meal Planner” mode and “Edit” mode. Integrate the Meal Planner so it shows up on external calendars.
> Maybe adding in time divisions e.g. breakfast, lunch, dinner so if I have multiple items I can see them, any maybe make the view sortable (like view only dinner). Can we add side dishes or condiments? Maybe suggestions of meals that we might like based on what we eat, but with variety (you eat a lot of chicken, have you tried this chicken pasta recipe). Maybe notifications for meals just in case I forget.
> allow for multiple meals per day (i.e. breakfast, lunch, dinner)
> Perhaps allow notes on the recipe entries?
> is could be more compact on mobile view. also in current version the title got cut off. this is a problem with notes only entries. when using till understood the difference i was wondering that I could not tap (mobile view) on the notes only entry to view the full title. That was possible before, cause i was in editing mode. would make the meal planner better if a detail view for notes only entries would be available. also in mobile view: when i am in editing mode with an open note only entriy and hit the OS back-button I not only leave the editing mode of the entry but also the editing mode of the meal planner. this is anoying when planning the next week ahead with our spouse on the kitchen table. dates have to reajusted to see the next week again
> When using the random functions, have the ability to exclude recipes that have already been added to the plan.
> ask for how many people when planning
> Meal image in edit mode in Android browser only shows a small cropped part of the thumbnail. It is not really useful.
> None, really like the way it is now
> Default to include past meals from the week
> High Value: Default view to "This week" instead of "Today+7 days" - sometimes we have more leftovers than anticipated so we skip cooking a new meal, and the next night when I go in to 'find' what I was supposed to cook last night, I have to update the date range to see yesterday/earlier in the same week. Let me set the week start date in settings (drives me nuts that the week starts on Monday 😅) Assume that if someone is on the meal planner, it was made that day (so I don't have to click "I made this" each time). If desired, could be a toggle setting. Low Value: Ability to add "Leftovers" or a restaurant as the 'Meal' for a particular night. I know I could just create a recipe called (for example) "Leftovers" or "McDonalds" but it sure would be cool if they didn't clutter my recipe view and I could specify "Leftovers of "Recipe X" I'm sure this is possible via API, and maybe already do-able, but I would love to integrate Meal Planner into a Home Assistant dashboard to display what is the meal plan for the week to the rest of the family. If there's other dashboard platforms people use, or maybe a static dashboard within Mealie, providing better/more support would be cool.
> Meal plan based on goals, I.e. macros
> its fine as it is
> Keep/restore scroll position when going back from a recipe to a list. Multiple people i talked to don't use Meale due to this as it's such an annoyance.
> It would be nice if you could enter that leftovers from the previous days are planned for a certain day.
> A button which fills the shopping list using all recipes currently displayed in the planner. Buttons which quickly change the current week. A button which fills in the whole week with random recipes.
> Ah YES! The meal planner needs some love. So our intention when we began trying to use Mealie was to have some help organicing our meals automatically, so I would have our recipes, and have them properly tagged. Then I would set some rules for each meal, but then I have to go clicking each meal of each day to have it planned. It would be great to have some randomizer to automatically fill all the meals following the rules I've established, so I can have the whole month planned and I can set my shopping list and do the shopping for it. Also there are diets that include other meals over the day, like snacks (in spanish they are called "colacion") or a "merienda" which is like a lighter breakfast that you have around 4-5PM, some coffee and a toast or something like that. So it would be cool to have the ability to add or customize the available meals of the day, perhaps even set the time it should be eaten so the app can send a notification X time before it to start cooking. Im a really undisciplined person and need to have everything as structured as possible, so being able to have it all set in advance, and more granular and user friendly control for the wife approval factor (WAF) and even with reminder to get ready for each meal so I can finish what Im doing and make my time for cooking properly would be awesome and really help me to get my diet in order.
> Accidentally mentioned that in the shopping list one, whoops
> This would also be nice if it could integrate with iOS to automatically show in Reminders/Calendar.
> The new query filter builder probably solves one of my biggest issues. Filter by "last eaten" should be included. Another issue is that the rules are predefined but often, the user wants to build the filters just for the specific "event" and wants to see a selection of dishes to choose from. There is also no back button on the settings page. (Recipes could also be opened as a popup although this idea needs testing especially because of mobile.)
> Allow more powerful search queries to be built from the Meal Planner screen, such as those that are available from the Recipes screen. Let these queries be included in the recipe rules section, such as "OR" statements for tags instead of just "AND" statements.
> Hard to add recipe by name if you have many, we have ~100+ in each household
> A way to persist date preferences, eg I often want to look two days back and 14 days forward. Switching between edit mode and normal is confusing at first
> Meal planner rules. I want a mixture of protein during the week so i would like to be able to do the following: Only allow X* recipes with these () ingredient(s)/tag(s) per week/month/Y* days
> I believe it is not the best UX to have the fine list and than to swap to the edit view to start editing it. Especially if you plan on long term you have to select the date range and bla bla bla... Instead: one continuing list would be great where I can directly edit a day in time. Also a calendar view would be great. And last: I want in the future that the meal plan is defining itself using rules without any manual interaction. I plan to do this automation with N8N again but would be great to have this integrated.
> My wife said that her PWA logs her out too frequently. It would be great to somehow configure a long lived token method for authentication to securely eliminate the login. The meal planner works great otherwise!
> It is great already
> Good as is. Love it!
> The option of having the meal plan generated for a specific period. Preferably with the possibility to define which meals should be generated and how often a recipe should be repeated on the following days (because we often cook a dish for n days in advance (usually 2 days in a row)).
> The differentiation between the "Edit" mode and the "View" mode doesn't make much sense to me personally. Whenever I the "view" mode, I somehow expect that I would be able to drag&drop the meals from one day to another, without going into the "edit" mode.
> From an recipe, assign it to a day
> I would like breakfast/lunch/dinner breakdowns.
> I haven't used it much but can you can meals with other users?
> Able to subscribe via .ics for easy reference
> Some sort of learning algorithm (probably using the openAI integration) to look at recipes and automatically tag them. This would help when adding sides and mains!
> I would like a way to be able to check off meals. For example, I often plan out meals but have something come up and don't make them on a given day. It's then rather difficult to go back and see what recipes I had bought ingredients for. Perhaps, if unchecked, the meal automatically shifts to the next available day (dinner remains dinner, lunch as lunch, etc). Or, praise, there is a section to see skipped meals and quickly reassign to a new day.
> Have them (or anything, really) be accessible across households, if desired. I.e., my SO and I live in different cities, thus use different households for the majority of the time. However, when we stay at the others place (which then usually is for minimum a week at a time), it would be useful to be able to share things like meal planner, shopping lists etc for that time, without some workaroung (like an additional user or moving my or their user to the other household for the time).
> The meal planner works fine for entries that link to a recipe. For items that do not link to a recipe, there's no easy way to see the whole text as it's cut off after a couple chars in the mobile UI. The only way of reading the full text of the entry is by editing it. It would be much better if those items would be accessible right from the meal planner rather than having to dig into editing mode.
> I mostly plan for a whole month or more so I would like to have an custom range of days I can choose in the settings. Right now I set it to a month manually each time I open the planner. For editing it would be nice to have a button to move all upcoming meals for a day. Sometimes we skip lunch and then I have to move all upcoming meals by a day
> Meal Planner is not important to me. I use Mealie purely as recipe storage.
> Better integration with Home Assistant
> More intelligent recipe suggestions (e.g. based on recipes not made in a while, ingredients you are likely to have) to assist creating plans
> Add rules that recipes can only be repeated in x amount of time. But I mostly just add the meals myself and don't use the automatic selection, because my recipes are not properly tagged and categorized (I have it on my todo list).
> My wife is not using it, because we have lots of meals we don't have recipes for. It would be very helpful if we could plan a meal which does not exist as a recipe.
> Remember the default number of days. Option to set number of 'meals' in a day - mostly we just use dunner. Quick access to 'todays meals' from the homs screen
> Make it toggable. If the user does not use it, let him disable it.
> The only real suggestion is to maybe add time-ranges for the meals, like breakfast from 6-10 am, lunch 10 am - 2 pm, and dinner 4 pm- 8 pm. The only reason I say this is I use Home Assistant and the home assistant integration pulls the meals over as all-day events in the calendar and doesn't give a nice order for the day.
> This is a minor thing -- and I don't even know if I would use such a feature, if it existed: but if the meal-planner would allow for an easy (read only) export is an .ical calendar, I could add it to my usual calendar tools and have it available in the typical interfaces.
> Better random, ability to switch days easily. Or pause to push back a day
> Ability to plan a fish for two days at once.
> Add a "Feeling lucky" button. Random recipes for the whole week!
[Back to the overview](overview.md) or [On to Question 11](q11.md)

View File

@@ -0,0 +1,141 @@
[Back to the overview](overview.md)
# Question 11: Any suggestions for how to improve the Recipe Timeline?
> Generally not used. Maybe could prompt to add to timeline after a recipe has been open for x amount of time but probably not useful. I was surprised that timeline comments are different from recipe comments so maybe making that clearer would be helpful?
> For me the timeline itself isn't that interesting, but I would love to be able to use the data in other ways. For example, I want to know how many times I've made a recipe, which recipes do I make the most or the least, etc.
> Scaling ingrediants is my biggest ask overall ofr sure
> It's not accuraten
> Maybe a way to import instagram recipe's (usually in the description of the video)
> maybe adding a comment together with the picture
> I like the timeline as it is right now but the only change I would make is to be able to add a picture after I have marked a recipe as done. Currently, I can only add a picture at the moment I mark the recipe and not after in an edit. I would also like to be able to press the photos to enlarge them.
> Instead of just the profile picture. Also add the name of the user. If there's multiple people who didn't set a profile picture, it's hard to tell who created that timeline event. Example: Recipe creation
> I didn't know it existed
> Not really, but I use it often
> default to reverse chronological order
> Make it easier to rate dishes and add comments directly from timeline
> Add the person's name without having to hover over their non-existent or too small to tell who it is photo.
> Again, really cool feature. I wonder if comments from the time line should appear as recipe comments. As most of the time I suggest things to myself as a part of recording that I've cooked the meal. Also being able to search the time line would be really cool.
> Its fine how it is.
> Make the pictures in the timeline bigger so that I can show off to my friends what dishes I have made
> disable it option
> I honestly don't use it. Haven't found a work flow for it.
> I am not sure what the purpose of this is...
> It seems good so far :)
> I don't see much sense in it, feel free to drop it.
> An option to automatically mark recipes in the meal planner as completed - forgetting to do this on most recipes in the meal planner makes the timeline mostly useless.
> Reverse the order so newer things are first (or at least make an option).
> Allow editing the date made. If a meal is made the day before or after it appears in the meal planner then the timeline will be wrong but can't be easily fixed.
> I don't need or use it
> I generally don't care when I added a recipe, just when I last cooked a recipe.
> We don't use the feature.
> I do not use this feature.
> we don't really use it
> Nope I think its fine the way it is.
> Never used it
> Be able to filter for “meals made” or “recipes created”.
> I only use this passively, but interesting to have, no notes.
> no, i don't use it
> Whilst I do use it, I do not use it consistently enough to be able to validly comment
> I'm still getting used to the timeline. Currently it seems like recipes appear on the timeline when I haven't cooked them yet, but I think I'm still getting used to how it interacts with the meal planner. Not sure if there's an issue there or not.
> this a cool side feature for me. love it but functionality is completely sufficent
> Do not use
> Not exactly timeline, sorry, but how about including in a recipe page how many times a recipe has been cooked
> Assume recipes on the Meal Planner were made, so they automatically also appear on the timeline after the meal planner date passes. Better search and filtering options. For example, what did we have last Valentines day? What was that potato dish we made last month? Being able to easily search for that type of stuff would be amazing.
> I haven't found the option to remove the creation of a recipe from the timeline. This would be useful if I could filter them out
> i dont see a need for the timeline
> Maybe being able to update the date? I entered a wrong date and couldn't update it (or didn't find a way to do it!).
> Not really, its a simple function.
> My only irritation with the timeline is that it doesn't show the name of who added a recipe, it only shows a picture. I have 1 user that refuses to update it with his picture.
> Just upgraded to 2.0 and I love this! I wish there was a way to edit the metadata on the recipes to show when they were actually added, in stead of just all imported on the one day that I upgraded
> Improve presentation, scale things down, make things interactive, provide more information (when hovering or clicking), improve loading time. I do not have found a use case for this feature but it feels like something that has potential
> For me, the recipe timeline is more important than the comments. And yet, it is not visible unless I click on a button. It would be nice to have an option for the recipe timeline to be shown directly in the recipe page.
> Could it be auto populated based on meal plan? I always forget to click "I made this"
> Smaller list view option for mobile
> One entry uses up a lot of screen space. I would decrease the size of an entry drastically. Also the image within an entry card looks a bit like an afterthought. I would move the user icon somewhere to the right an let the image got from top to bottom and have no border to the left.
> its nice, but in the time you collect new recipes, xou have only the dates from the creating
> Multiple images per recipe.
> Never used it.
> Build a mini timeline into the recipe page to see "committ history" (but for meals made haha)
> Option to hide, it isn't a feature we use.
> never use
> Keeps adding recipe as if "made", when in fact I have not yet made them. Maybe because I have it in my meal plan, but sometimes my meal plan changes...
> I would like that recipe timeline events would also show directly (without having to click on it and navigate away) on the recipe page itself. I.e., it could be shown as a comment? That would be really nice
> We never used the timeline at all.
> A way I would use it more often maybe is when at the end of a recipe there would be another button to say "I made it". Sometimes I just forget, especially when it's on the phone :)
> Recipe Timeline is not important to me. I use Mealie purely as recipe storage.
> Better integration with Home Assistant
> Faster loading times - never use it because it tends to be really slow
> It is difficult to use if I don't stick to my meal plan, which happens regularly. It would be great if I could go backwards in the meal planner with a button like "-1 week". That way, I would get a better overview of what I had as meals. Before I started to use the mealie mealplanner for the HassIO Integration, I used miro with virtual post-its for 2 years. So I was able to just scroll up and see what was for dinner 5 weeks ago and get some inspiration.
> Different view options would be nice. The alternating left/right orientation of posts is not as nice as a simple linear feed style timeline IMO
> More compact flow options
> Add an on behalf of function when adding recipes to the timeline
[Back to the overview](overview.md) or [On to Question 12](q12.md)

View File

@@ -0,0 +1,283 @@
[Back to the overview](overview.md)
# Question 12: Any suggestions for how to improve the Recipes functionality?
> Some things are not intuitive to use when creating recipes. also the import of recipes is sometimes interesting. Generally it works well but its been a while I havent added a new recipe so idont remember any pain points I had other than the ingredients and organizing the sections of steps
> Add the option to make recipes private from other households.
> Generally quite happy with recipe search and display :)
> Editing the ingredients list when creating a recipe feels a little cumbersome and could use some UX love, but mostly I think it works well.
> Highlight the ingredient used in a step that when tapped or clicked on shows the amount to use for that specific step. For example, a recipe uses carrots twice, once in step one and again in step 2. Tapping"carrots" in step one shows a pop up that shows "1 cup" and tapping carrot in step two shows "1/3 cup"
> While cooking offer support, included timers, using AI to discuss/ask questions about current step, next step, etc.
> Scaling ingrediants
> I would love to have a shortcut / one step process to analyze recipes with OpenAI directly on import
> possibility to add more pictures. maybe also a picture per step
> I wish I could have multiple columns of ingredient units, for example, 30 grams or 0,5 dl powdered sugar, because if I share my recipes they may not use weight as a unit like me. If I then increase/decrease the amount of the recipe I would like both units to change.
> One of my user's is bad at including tags. Perhaps an option to remind users to categorize, tag, etc
> Ability to double, triple, etc the ingredient amounts
> I think it works pretty well. Our most used feature of Mealie.
> Lots of improvements were introduced in the last updates here, so I may only add: - The possibility of grouping steps. For example for some pasta recipe, have the steps for the dough in one group, and separately for the sauce, or perhaps have a "sauce" whole category and have the possibility to add a dropdown menu so I can chose which sauce I want to add to the recipe. I wouldnt go as far as making sauce recipes as an indepentand meal recipe because the meal planner would treat them as a meal and mess up with that, but have the option to "+add" a sauce recipe to a meal recipe, and therefore adding it own subset of steps and ingredients to the whole recipe. - Tools: this seems to be only another tagging function but it would be useful is there were a place where I can input the tools that I ALREADY have, and then if some recipe specifies a tool that I DONT have, it would be highlighted so I dont find myself with the issue when im already in the middle of cooking it. Perhaps even the option to add it to the shopping list
> I would love to be able to decrease a serving count. If a recipe does 8 serves, but I only want to do 4, unless I want to manually adjust the scale to 0.5, I can't use the +/- buttons to reduce serving count. Additionally, if I want to do 10 serves instead of 8, I can't use the +/- buttons, it goes up by multiples of the serving count. I understand this wouldn't be for everyone, so maybe allowing the option to change the behaviour?
> add button which can change recipe portions count (if i have recipe for 4 people i should be able to recalculate for 2 or 1)
> The auto import imports weirdly sometimes. Also, absolutely allow fractions (1/4) instead of only .25 as an example
> Maybe add video support, template for receipes type
> Anything that could be done to simply or automate parsing ingredient sizes so that multiples (2x, 3x the recipe size) could be done without so much effort.
> when creating a recipe via text input, don't add example ingredients and steps, always a pain to delete 1 cup of flower, etc.
> I'd like to have the possibility to add macros at the food level - and make recipes calculate the recipe macros from the food macros. Thanks.
> Import from pdf
> Importing, particularly parsing ingredients and setting amounts is a pain. I wish there was a way to at least set the relevant settings by default (as I usually want the ability to scale my recipes)
> I would love ingredients to be identifiable as logical entities in the body-text of the instructions so I can hover over them, and it will pop-up how much. E.g., in Chicken Marsala I remove the fried chicken from the pan and add butter before sautéing the mushrooms. I don't want to scroll back up to the top to see how much butter, that instruction step could be context-aware and able to show me how much butter to add. This could be achieved rudimentarily with a markdown like tag, or an 'insert intergradient' button that would give you a picker of the ingredients already entered in the edit interface. If users didn't want to use them, they could still type ingredients in plain-text as before. A more advanced implementation could looks for matching text and recommend 'smart ingredient' links for the user.
> Would like to be able to enter a recipe for 2 people, but then see ingredients for just 1 person, or 3 etc. Currently you are stuck at a minimum for 2 and multiples thereof.
> No, I love the app. Think it works great.
> On ipad, please dont make swiping all the way to the top refresh the page. Ive lost manual recipes while creating them.
> When clicking 'parse ingredients', it usually asks to save changes. That save doesn't include any actual changes from the recipe form. It would be nice to flow straight into 'parse ingredients' from the import instead of having to do at least 2 separate editing passes Include recipe as ingredient, with autocomplete and bidirectional referencing. ("Recipes that include this recipe:")
> Not sure how feasible it is, but it would be nice to have the option to turn off authentication for local deployments.
> Calculation of nutritive aspect of the recipes (like cholesterol, lipides, glucides) , based on the ingredient list. For example based on openfoodfacts.org or ciqual.anses.fr
> Ability to increase the servings and automatically multiplying quantities.
> I can't think of anything. It works really well and is a great way to manage our food.
> Improve visibility of ingredients linked to specific steps
> Ingredient categories. They would prob tie into https://github.com/mealie-recipes/mealie/discussions/1761 which would include ingredient sub-sections for sub-recipes, but they would be useful for recipes that have something like a cake and a sauce as well - especially when the cake and sauce both take sugar and it's easier to read when the amounts are split between sub-goals.
> Changing the serving size for fractions of the original is only possible by giving it a number and not the plus and minutes buttons. Typically over wants to decrement or increment by single servings.
> In ingredients list please add better support for non-english languages with more complicated grammar like Polish. We say: * 1 szklanka cukru / 1 cup of sugar * 2 szklanki cukru / 2 cups of sugar * 3 szklanki cukru / 3 cups of sugar * 4 szklanki cukru / 4 cups of sugar * 5 szklanek cukru / 5 cups of sugar * 6 szklanek cukru / 6 cups of sugar etc. * 1/2 szklanki cukru / 1/2 cup of sugar Antoher example: * 1 marchewka / 1 carrot * 2 marchewki / 2 carrots * 3 marchewki / 3 carrots * 4 marchewki / 4 carrots * 5 marchewek / 5 carrots * 6 marchewek / 6 carrots etc * 1/2 marchewki / 1/2 carrot So we have: * form for 1 * form for 2,3, 4 and fractions like 1/2 * form for 5 and more
> I often find that the brute parser is 10x better than the NLP ingredient parser, so Id love to be able to select it as my default and use it automatically on recipe import.
> Ingredient Calculation should work. X = Ingredient / Default Servings so you can calculate every number.
> more features to support baking. Like portion: small cake(16cm) regular cake (22cm)
> Option to create recipe from url with AI rather than scraper (in many cases, the structure for recipe is not followed by website).
> Being able to import from PDF, spreadsheet, etc from other recipe programs and/or wikis that are private
> It would be good to be able to parse by default, and also add common ingredient aliases. There are ingredients that are commonly described with multiple forms, e.g.: "ground pepper", "black pepper", "pepper" etc. and it gets tedious to have to keep on making the same sorts of replacements instead of just adding a few rules. Similarly, unit conversion would be brilliant. At a basic level, you could make it possible to define units that are automatically converted to other units (e.g. cups to ml). A big step up, but a tricky one, is converting between volume and weight measurements. This is appropriate when say using metric and measurements like "1 cup" of flour, which should become ~150g, not 250ml of flour. Conversion of units and weight/volume seems like an area where having some default values (or an importable source, like with ingredients) that can be added to would make sense. I did some work along these lines myself a while ago and found http://www.fao.org/docrep/017/ap815e/ap815e.pdf a useful resource.
> This is probably mealie's most refined section. I use it all the time. Haven't had any complaints about it in a while.
> I would love to have a text to speech option, so that it can read out tasks while I am busy cooking, it would be great to have a button that reads out one step at a time...and you can just click next or even better just say the word next....i have text set to large on my phone/tablet as my eyes are poor so I keep having to scroll down between steps....I am also a little OCD about touching my phone/tablet with dirty hands so I have to wash my hands between each step before i scroll down on the phone/tablet...sounds like a "me" problem I know.
> I feel everything works great. Sometimes the import is buggy but that's probably due to the site and not mealie
> Not sure if this is updated since I'm on v0.5.6 but being able to section ingredients is important - especially where you have duplicated ingredients (e.g. one for a sauce, one for the main course).
> I'd love to be able to universally enable ingredient amounts.
> - Allow private recipes to be shared with certain individuals or households (vs sharing a link)
> Actually really like this section and the main reason why I use Mealie.
> It would be great if there was some way to convert between metric and imperial units.
> Combining Recipes similar to Tandoor Recipes. Sometimes I have a base dough when baking which can be used with several different baking recipes. Combining and connecting them in recipes would be a nice feature so I do not have to switch back and forth between different recipe parts.
> Support for meals which include multiple recipes e.g. a roast dinner would include links to roast chicken, roast potatoes, braised cabbage and so on. Filtering of recipes should allow tags or categories to be excluded.
> Split ingredient and "amount of ingredient" to allow for eg. convert imported recipes in Imperial units to normal metric and to allow multiplying the recipe for smaller/larger portions.
> Adding and rearranging steps can be quite cumbersome when there are many steps, if there's some way to streamline inserting and rearranging steps, that could be handle.
> none, it's already great!
> I dont have any complaints about this - works fine for my needs. I dont use the OpenAI feature so might look in to this.
> Maybe a way to paste a block of text copy and pasted from a private facebook post, and it would (at least attempt) to parse ingredients and steps. Aside from that, it works pretty well as is.
> I was really excited when I saw that there was a new version, but there's really nothing of interest in it for me which is really disappointing. Out of all the improvements that could have been made, there's household sharing been done which seems pretty niche, surely most people like me just use it for their house. I would have loved to have seen conversion of imperial to metric automatically. I would like to be able to have my main screen show only the main meal recipes, not all the dessert recipes together, just some sort of better separation that you could use on your home screen for the food vs drinks and desserts etc. Coloured tags would be a bonus. An android app where you can press a button to keep the screen on while cooking would be welcome too. I forgot to add for the Meal Planner functionality in the previous screen... There's nothing that can be used for advanced meal prep, when you make 2 or 3 meals on a sunday for the week, you can't plan for that. Your options are only limited to breakfast, lunch and dinner.
> For recipe scaling, scale by multiples instead of by serving count when using the plus and minus buttons, including multiples less than one (1/2, 1/4, etc). Please include a reset button with the plus and minus (which would be the x1 multiplier I suppose). I am often making half a recipe and it would be nice to use the minus button to scale to 1/2, instead of opening the custom number input and calculating the serving size for half the recipe. Please do keep the custom scaling input though, that is very nice in some cases.
> Add images from the recipes that are inlined so they are part of the steps Replace functionality, allow a recipe that was imported to be updated from the URL. Ive sometimes deleted a recipe so I could add it back with better images and nutritional information and then the parser fails so I have to add it all back by hand.
> An android app would be so good. Using the browser is really annoying
> Nope. I love it the way it is :-)
> Link other recipes for base recipes or combine different stuff
> If it was possible to specify the quantities for, say, 1 person, and then in the planner specify how many people are eating and get the required ingredients in the shopping list - that could be very handy.
> Sub-recipe nesting would probably be my biggest point. Also, built-in timers would be convenient.
> Nope! Its great :)
> I end up with loads of stuff all mixed up, perhaps folders to help me sort it a bit? I think cookbooks might work in this way (just started using). Perhaps sort by number of people? I find the sort by ingredient filter doesnt really work would be amazing if this did.
> allow for half portions to be selected as well - many recipes are for 4-6 portions, so we have to manually scale them down to 1 or 2 portions before adding to mealie - having that done automatically would be great
> Unless I am misunderstanding usage ideas, I would like to see the cookbooks or silos to be possible to hide one group of recipes from another so the "recipe" for the soap I make does not go into the same silo and show up alongside my cok-au-vin
> automatic unit detection to adjust the size of protions
> more possible entries for nutritional values. adding note for amount food per entred nutritional values. OpenAI calculation for those. editing mode for uploaded or scaped pictures. we found that if pictures are in landscape mealie would rotate the picture in wrong (upright) position. no possibility to change beside adjusting the picture outside of mealie.
> Big ask but calorie & macro computation(s) related to the recipes.
> ADD UNRAID TO YOUR INSTALLATION GUIDES. Make official app on unraid community applications.
> When importing a recipe, it would be great if I could switch on ingredient counts and parse the ingredients right away before saving.
> some websites guard against recipe imports by detecting bots. would be nice to allow the importer to have some kinds of bot evasion options - changing the user-agent, pairing with something like flaresolverr, importing saved raw web pages, explicitly allowing specified local IP address (i see that's a security concern) to allow proxying, etc.
> Make it possible to remove recipes that you don't want anymore.
> A better method for PDF export. Currently the webp images result in large PDFs when exported (multiple MB when webp picture is less than 1MB).
> Give me a compact view!
> Have an option for a secondary measurment option which also scales when you increase the amount of servings. Like if the main option is "1 packet", then have the option to add "2 teaspoons" or "20 ml", etc.
> Works as intended for me
> Add support for Ingredients that change the plural based on the number so like 1 egg 2 eggs
> A cool feature would be to add reminders for some ingredients. Some recipes require X ingredient to soak in water 24 hours or another thing to be prepared well in advance. If the recipe is added in the meal planner, then it should send a notification based on what was configured in Settings that you should prepare that ingredient.
> Better initial parsing of ingredients, specifically automatic creation of unknown item and automatic breakdown of quantities. My partner doesn't like to take the time to clean up recipes so they're unable to take advantage of a lot of other functionality within Mealie as a result. If the recipe was imported via URL, option to save the original webpage as .html/PDF/similar to guard against link rot.
> Quick UI option to 2x,3x,1/2x, etc recipe ingredients
> Honestly love it as is. I go external to figure out the nutritional information for my recipes it would be nice to bring it into mealie https://www.verywellfit.com/recipe-nutrition-analyzer-4157076
> I love overall how recipes function and are laid out. The only thing that would be nice is if you were able to take a picture of a physical recipe and have the parser create the recipe, similar to the URL importer. I know that is a huge ask though and it is not a deal breaking by any means.
> A general tips or something like that would be useful to link, things related with food and cooking but that they are not recipes, for example: cooking temperatures of the meat, type of fat: pro and cons, cuts of meat and which ones are best for each case
> not really. it works great as it is
> Well, its not clear nor easy how to connect to OpenAI and take advantage of ChatGPT properly. I've managed to connect it but when trying to import recipes using it I fail to get it right. I've already tried to get ChatGPT on its free site to get me a recipe from a site which is not compatible with the scraper, and it was very successful to give me a script with Mealie format, although I had to create every ingredient first manually so it wasnt viable, but it would be great if it were possible to use GPT to scrape recipes websites and import them so we can then tweak them a bit if needed. An example is this page my wife loves but is not compatible so she always ends up complaining: https://www.paulinacocina.net/
> Add the option to enable ingredient amounts by default for all recipes
> I think I would just want to be able to share recipes across groups or copy a recipe to another group more easily.
> Print / Export functionality improvements: ### Print - Allow for padding changes or something like "force on one page" or "condense." The amount of whitespace is great for web but not needed and wasteful for print. - Allow change of header/Section formatting (center, left, size) - Allow for margin size changes "Leave space for notes on right" ### Export - I love the new Ingredients Copy function, would love something similar on the instructions side. That way I can easily paste it in a different document or email if needed. - Allow export as text only - basically the download as JSON version, but just the basics to be opened in notepad or word
> Support multiple languages for ingredients, let the user choose preferred names from aliases of foods/units, support abbreviations and aliases in manual ingredients input suggestions, parsing after importing without saving/refreshing the side has weird behavior, better local parsing (brute force add ingredient button does not correctly apply the same ingredient to other fields; local model? pdf/image parsing?), when exiting the editor indicate unsaved changes
> Improve bulk tagging functionality, e.g., let me search for recipes then tag everything that matches the search. Right now I have to scroll through all the recipes and bulk tag everything by hand.
> Hardness (discussed in discord and issue) that can be filtered by. Preamble "before you begin" step.
> Ability to get nutrition information on ingredients would be quite useful
> - Bulk import of recipes based on images. - A way to review all of the imported data before committing it to the database - Allow for multiple images when importing a single recipe.
> Remind me to use the feature that adds ingredients to steps because it's awesome but I always forget to set it up
> When I import a recipe, I want the option to automatically parse my ingredients and take me to the parse page.
> Editing - could we have a 'Save' button at the bottom as well, or better still, that sticks to the same position on-screen? I seem to be forever scrolling back to the top to save it, every time I make an edit. Printing - I sometimes print out a recipe to avoid using my device near the cooker(!) It would be good to have some control over the layout. For instance, the headings Step 1, Step 2, etc, needlessly take up space.
> What about a simplified WYSIWYG Editor for the step text? (My wife will never learn to use Mark down syntax..)
> NA, mealie is great. I appreciate the work done to help quickly build recipes snd ingredients from copying and pasting non structured recipes that cant be imported.
> In steps, make links to quantities or ingredients so I don't have to scroll up to the top again
> Serving scaling would be amazing
> Loving it, just keeps getting better
> That you can add x many ingredient fields.
> It would be great to have alternative ingredients. I like to use the 'ingredient amounts' and would like to be able to specify 'use *this oil* or *that fat* to fry'.
> Add photos to each step
> Overall, it seems to work well, Maybe a global setting for ingredient amounts?
> When editing a recipe I've not been able to find a way to remove the image, for example I imported a recipe from a URL and it added an image. I didn't want to use an image so I tried to remove it. I couldn't and needed to create a new recipe manually.
> Nutritional function improvements?
> not really. Easy to use!
> I could not find a way to add or remove units (like tsp, cups, etc.) so I've been stuck with a unit called "ts" when I made a typo when entering "tsp". Also have to have plural forms of units (cup/cups); maybe a place to manage units could have a checkbox to indicate "when quantity is equal or greater than 1, use plural form or add an s".
> When ingredients are not linked to steps having the ingredient list stick to the side when scrolling down the steps would help a lot.
> I use Mealie live while cooking, I hate the way it is scaling right now. I would love to have it just as multiplier and not with the "smart way" as it is right now
> I sure miss the native recipe OCR functionality. My main reason for using a recipe keeper was to digitize my cookbooks to make it easier to find recipes. The built-in OCR was a differentiator between Mealie and its competitors (and for whatever it's faults, it worked surprisingly well for me.) The AI implementation was both complicated to setup and didn't work (and I'm not interested in relying on a third-party service either.)
> Have the ingredient quantities enabled by default and supported by the importer
> I would love the required tools to work the same as ingredients. That is, have a counter (i.e., the recipe needs 1 oven, two pans, one small bowl and 3 large bowls) and especially, linking those to the steps. I love the "link ingredients to step" feature, because it allows me to really quickly see what I need for the current step without having to scroll (or touch the screen at all for that matter), but as of now, for the tools I still need to do that.
> Difficulty level (how difficult is it to cook)
> - Allow sorting (manually) of the linked ingredients of a recipe step. - Allow ticking (marking as done) of the linked ingredients of a recipe step. - Automatically save while creating a new recipe (to avoid losing progress). - Make it easier to rename/change existing ingredients in the DB. - Make it possible to clone an existing recipe. - Maybe it would make sense to have a linked recipe within a recipe. For example, a "cake base" that is used by several cakes. - Allow for multiple timers. This would be useful if several steps require a certain amount of time.
> Can't think of an improvement right now.
> Maybe making categories and tags more automatic? I am not sure if it's maybe too hard. But some recpies are called "Noodles with..." and I have a category "Noodles". Would be cool if something like that could be automatically parsed
> * Allow scaling ingredients to different servings ("4 serving(s)" appears clickable but does actually nothing). * Allow creating small variations of a base recipe without fully duplicating (e.g. "the recipe says this, but I usually do this instead"). Comments are too out-of-the-way to suffice. * Allow adding notes/conversions to specific ingredients (e.g. setting conversion rates of substitute ingredients: "1 clove of garlic is 0.25 teaspoons of powder", "the one onion the recipe calls for is about one cup of pre-chopped opnions" or just adding per-ingredient notes that are easier to access)
> I find the detailed ingredients somewhat awkward to use. (but thk you for all the work on mealy ❤️)
> Better integration with Home Assistant
> Link ingredients to steps. I think this is possible in tandoor and would be really great. But please keep also the main ingredient list, just links to the steps. It would probably be good to be able to link one ingredient to multiple steps, like e.g. salt or pepper.
> Could the recipe ingredient parser be built into the recipie editor - no need to navigate away to parse? Drah-and-drop recipe images? Perhaps allow a space to upload a photo of a meal 'as made'
> - ingredient scraper usually needs to be passed and manual adjusted. Not a big deal tho.
> Perfect
> Add an option to hide the 1-5 star ratings on recipes.
> Better UI/UX for parsing Ingredients, sharing Links with PWA imports instantly without the time to change the checkboxes, for parsed recipes allow to decrease the meal portions from 4 to 3 or 2 with plus and minus instead of doubling it or requiring to input something like 0.75 manually.
> Being able to reduce servings would be great. If a recipe is made for 4 servings, being able to see only 2 servings would be nice. I had another thought before, but cannot remember off the top of my head
> Two points that (to my knowledge) are also already discussed online would be 1. Timers linked to steps. 2. Recipes as ingredients or alternatives, with the option to add them to the Meal Planner / Shopping List with a single click.
> Fiddly part for me is to parse the ingredients and convert various units to grams. Not sure how it would work exactly but I think make use of llms. Eg a cup of flour = ?? grams
> Better UI flow
> I would like to see images treated as their own objects, instead of in-line. I always end up having to manually add styles to the img tag, otherwise the image takes too much space. Also would be nice to be able to disable images when printing the recipe.
> More support for sites with different formats. Or picture OCR
> No super happy with it
> Not really, it's great
[Back to the overview](overview.md) or [On to Question 13](q13.md)

View File

@@ -0,0 +1,391 @@
[Back to the overview](overview.md)
# Question 13: Any other suggestions or feedback you have for us?
> Great Project, We love it !
> It's an amazing software. thanks for making it. has helped me organize my family recipes and be able to more easily find and make family favourites.
> I love the concept of mealie, great work so far, excited to see how it develops in the future!
> Honestly, keep up the great work! I've been slowly getting my family to use it and has worked for a meal or two so far! Thank you for the dedication to this project!
> Thanks for the great app!
> Import recipe from "betty bossi": e.g. https://www.bettybossi.ch/de/Rezept/ShowRezept/BB_BBZA110115_0004A-40-de
> For inspiration have a look here, I think it has a lot of nice features and the integration with AI is everywhere https://cooked.wiki/
> I would love to see caching / storage in mobile browsers / PWA, so that recipes are available offline. The performance of mealie could be better. I currently only have 88 recipes, but the initial load of Mealie takes 10 seconds. This should load instantly.
> First and most important:Mealie is really great. Keep up the incredible work! For my storage I use Grocy. Mealie is of course much better redarding recepies, but in Grocy I like the possibilty to show recepies based on what I have in stock or where only few items are missing or what needs to be used. It would be great, if there would be an easy way to link recepies and shopping lists between Grocy and Mealie, but I know this is probably more an API thing...
> I think this is a great app, thank you!
> It would be useful if I could use categories/tags/tools/food to do advanced searches for example, I want the dessert category and egg as food but to exclude strawberry in the food search. In other words, I would like to be able to select and deselect things to make advanced searches.
> Maybe I've missed this option, but I would like to be able to "share" recipe (or even dump the database of recipe, without login/config/...) with other Mealie users on a different system
> We're still learning how to integrate Mealie into our kitchen. Thank you for including OIDC. Some desired features: - Tag deduplication, & merging - Tag parsing. Some recipes have 'Chicken' others have 'Chicken soup'. Two different tags when looking for things with Chicken - Recipe deduplication. A good task for AI perhaps
> I love Mealie!!!
> No specific feedback other than a big thanks for your hard work! Kudos to all of you
> I love the program and like its functionality. I'm glad there is now an option to make your mealie recipes accesable without special links or login requirements.
> It'd be great if the login requirement could be ignored for LAN connections so that users at home do not have to keep logging back in - but only if it's possible to maintain overall security.
> Not really, mostly Meal Planner and Shopping List recommendations. I would love to have some sort of syncing functions so I can integrate it with notes, shopping lists and calendars. Regarding sync, having the meal planner somehow synced with my calendar could be great for planning my day, specially as the recipes usually have some expected time for the preparation, so for example: If I expect to have Lunch everyday at 1PM, and the recipe for my monday takes 45m to make, I would have an event in my calendar called "MEALIE Lunch: Spaghetti w/ Filetto" starting 12.15PM with a 30m before notification so I get notified and have time to round up my ongoing workm, be ready to start cooking and check I dont have to buy fresh ingredient. I dont know the technicals behind it but if syncing to calendars is too complex, at least as an intermediate step, having the option to export an .ics with the whole month and then each user can have it imported in the calendar fo their chosing.
> Love mealie!! I probably don't use it enough though. One thing worth taking a look at (not sure how technically viable it is, but) the recipe import often fails, especially for recipes in hebrew (which is my native language). I still use it to save recipes but it kinda misses the point. Anyway, thank you so much, and keep up the good work :)
> Keep up the good work, mealie is a great tool
> I use this with Authentik so pretty glad to see OIDC made it in (though I haven't had a chance to update my instance in a while). Just to be clear, I'll *never* use any of the OpenAI integrations. GenAI is a negative value add and I don't want it anywhere near my instance.
> Mealie is fantastic so far, I've only just started using it in the past week. It would be great if it had the option to group ingredients into sections, e.g. for a recipe with multiple components. Also when it scraped a recipe from a website it was able to tell the difference between a heading and an instruction step. It might already be able to do this but I haven't quite explored all its capabilities and if so, I apologise! Thank you for making such a fab service self-hostable!
> I am may missed the section for the Shopping List and this may be an impossible ask. But would it be possible to combine ingredients to reduce waste. For example: if i had 2 recipes for that use a 1/4 cup of milk and another that used 1 cup of milk, the shopping list would say 1-1/4 milk as a total purchase. the Mealime app performs this function as a reference.
> Thank you for making Mealie.
> THANK YOU. Thank you for your work. Thank you for putting us back on a healthier meal plan. It honestly makes a pretty significant difference.
> It would be nice to be able to personalize the instance a little bit more. I host this instance for family and friends and to be fair they don't really care what's under the hood. So, changing the title, the banner that appears when a link is shared, etc would bring a lot of value
> At the moment you can only have the text next to the logo in the top-left corner say "Mealie". For me, it would be nice if you could change that text to be something else (e.g. frank's bistro).
> Keep up the great work!
> Mealie is the only tool I've found that allows me to meal plan efficiently. I eat healthier and save money
> Absolutely fantastic application. My family depends on it!
> Keep up the good work. Me and wife love it alot.
> I was using it daily to import recipes from url, plan weekly meals. The dinner image would show on a home assistant dashboard what was for dinner that night. This broke with a mealie update. Mealie is still working but not grabbing the dinner (unknown).
> continue the way you do ;)
> I love mealie :D Thank you for providing it and making it better and better!
> Keep up the great work thank you! Mealie is fantastic!
> Thanks for making and maintaining this! It's revolutionised how we eat.
> Have you considered making recipes publishable via activitypub? That could be very cool.
> The Households filter is a lifesaver. Maybe add a filter to find recipes owned by a user to make it more granular.
> I love this project and it has absolutely made my love significantly easier, thank you. The ability to import a cert/key file to enable SSL would be great, either via the UI or yaml would be fine. This is a very odd and specific request but when importing from something like HelloFresh many of their ingredients are in units, how they ship them. If there were some built in way for me to define one unit of ingredient X = 1.5 tsp or similar for it to auto switch that when parsing, that would be amazing.
> Love the product! Such great work. We use it non stop for meal planning and shopping. Thank you so much for all your hard work in making such an amazing bit of software.
> No. It's been very useful to me. I'd love to contribute. Not a programmer but I am an IT professional
> When importing recipes (especially in bulk), it would be nice if the system notified you if the URL you are trying to import is already in the DB instead of just importing it and marking it with a (1). Or have an option to just not import duplicate URLs.
> AI is not for food.
> 1 - Ability for the Admin user to rename or delete wrong "foods" or "units" items. (today the only way I found is to use swagger). 2 - Management of "of" in ingredient list. (like in "1 kg of oranges " vs "4 oranges")
> Thank you for all the great work. Really enjoy using, and we rely on Mealie for our food planning 😁🍲
> Recipe as an ingredient https://github.com/mealie-recipes/mealie/discussions/1761 my kings and queens and all royalty in between.
> Please add a fully guide how to install mealie. I got lost with the env variables and was only able to set Mealie up thanks to guy I found on youtube that provided a standard docker compose file that worked perfectly for me. Why don't you provide a standard docker compose that people can modify? Or at least a full guide? Apart from that I completely love Mealie! Imprting recipes is amazing. It won't work in a few cases (plain text) which is something that you could optimize.
> Formatting recipes to parse ingredients AND automatically connect ingredients to the steps could be done with LLM/OpenAI integration, that would save a lot of time.
> Hover effect for all recipes is useless. Most of the sites i import from have just bullshit in the first section. Would be nice to have some themes or disable stuff like this.
> i personally dont use any of the planning etc. also i use another app for my shopping list. mealie for me is just a plattform to share reciepies with familie and friends, all thoose recipies we have for years in our famaliy. so we all have a place with recipies we all know are working great. something like chefkoch and co are flooded with bad recipies and nobody wants them. so using mealie as a managaer for shopping list and week planning etc is nothing we use at all becouse this would mean that everything lives in mealie, something like bring or similiar is way better for just that use case and mealie is "just" a plattform for private recipies what would be a nice feature is some kind of centrialized database a private mealie CAN push to and this way making recipies others would like to share explorable.
> Love Mealie! Thanks for making, sharing, and maintaining a really cool open source project :)
> Integration with Bring would be very nice
> an app for android would be perfect
> Have the meal planner select meals for a time-span, e.g. a whole week/month (excluding weekends).
> abandoning the project for another one which is similar and unreleased was a huge fuck up. Reliability is more important than flashy flashy by miles.
> thanks for the great work
> Thanks !
> A way to import a nice recipie i have seen on social media (e.g. Instagram). And also save the iamge/ video of it. I know its a large task, but it would be great.
> You do great work!
> Keep going. Mealie is really looking good right now.
> FANTASTIC APP!
> A small issue I have is being logged out when using mealie as a pwa on android through the brave browser. Just a little annoying when it happens but it doesn't happen that often.
> My wife loves this and enjoys importing recipes from the web when she has time to find them, but most of our meals are an established part of a set we have been using for years. Importing from other systems or through some sort of OCR tech in an app to grab grandma's cookie recipe would be more useful than scouring all the cooking websites and importing something that may never make it to the table again. Maybe that is just us, but the kids and jobs make recipe searching a luxury. Without a good recipe base, the other features are less useful.
> Thanks a lot for your great work you're doing with Mealie. I use it to store my recipes and manage my family's shopping list and it's so much better that managing everything in paper folders.
> Some bits of the UI are a bit slow, for instance adding a new ingredient has a huge typing delay when showing hundreds of other ingredients (I tried to profile this in-browser, but the tab crashed). It would be good to prioritise snappiness over fanciness. It would also be quite good to split complex recipes into multiple stages.
> Integration with Grocy would be nice.
> I've had some ideas to contribute but haven't had the time unfortunately. 1. When cooking, the timer "floats" and follows as you scroll down. 2. Multiple timers. 3. Visual warning when timer goes off. (had my pc connected to bluetooth so didn't hear it go off..) 4. Add pre-set timer to recepie
> I am very happy with the features for mealie. It helps me budget and make nice food for my family
> Keep up the good work
> Love it. So far, all of the updates have been positive. While there are a ton of new features that we'll probably explore in the coming year, the core functionality is still spot on . 🤞 for the future :)
> None at this time. Thanks for your work!
> Thank you for everything. I would like to find ways to contribute more to the project and the community. Mealie is now also in use by my parents' household and two co-workers' households since I should it off. My only other recommendation would be to have a better set of default food labels/units/categories/measurements. Or perhaps localised sets of defaults.
> I understand it's probably not doable but some form of Grocy integration would be so amazing.
> I´m astonished by the work you´v done already. Since certain circumstances I´m not able to fund the project, but hope it will change soon. Coud it be possible to habe each recepie analysed by AI, if it is keto, low-carb, vegan, etc.? Or maybe automaic mealpans for a certain type of diet? So one wil not miss their macros.
> Most of my recipes were imported from AllRecipes.com. I used to have an account there where I saved recipes, but the website has lost features and gotten progressively slower over the years. Once I found Mealie I imported all my recipes and ditched my AllRecipes.com account. Mealie works better than AllRecipes.com ever did, even in its hey day. Just having the ability to search my own recipes again is wonderful! I don't use the advanced features much, mainly importing from URLs, tagging and categorizing, and occasionally commenting if I need to remember alterations or tips. Thank you so much for this great software!
> love you keep it up
> You guys are amazing! Thanks again for all of your hard work.
> I'm a new user but I love it already.
> Would be nice to have a "I'm cooking setting that stops eg. tablets from sleeping for "Total time" for this recipe or default of eg. 30 minutes
> I need to look to see if this can be done already, but an accountless option would be nice, don't need an account for home use only.
> Just an idea, it would be cool if I could set requirements for recipes. For example making it required that a category and tag is set. I have set up my instance to add things to cookbooks from these but some of my users forget to add them, therefore they don't appear in the cookbook. If it were required then they wouldn't be able to save the recipe until they did.
> please allow the ability to disable/hide extra functionality throughout, we don't use a lot of it so it's just clutter. We don't use shopping list, meal planner, nor the timeline. All we wanted was a simple recipe creation + storage app and mealie does do this very well. We do use 'cookbooks' to separate group recipes made by me, made by my wife, internet recipes, family, etc.
> Great project. Thank you!
> I think the recipes page is really good, and I love using it for my cooking, and it makes me cook a lot more now. The other things like shopping list and meal planner aren't useful for me in their current form unfortunately, but I hope to be able to use them in the future. I'd never use a shopping web app because of the page refresh in a browser, so that would have to be in an app before I'd consider using it while I was at the supermarket. I also have to spend too much time converting imperial to metric quantities in recipes that I've imported and that would be a massive time saving feature to have them auto convert if I set up the ingredient amounts.
> So far I love Mealie and I hope you guys keep up the great work. You have made a fantastic product.
> Much better and clearer handling of administrative task. Things like bulk adding or removing tags and labels to selected items.
> I love Mealie. It's one of my most essential self hosted services right next to DNS and a password manager.
> Converting to metric would be so good! Also, being able to set the primary language as British English would be good. Ie. Fiber --> Fibre etc.
> Keep up the awesome work on this project. I am trying to get more family members into using it. But I started them with an earlier (less functional and feature rich) version. So I am trying to draw them back in as it seems to work so much better these days.
> We are generally very happy with the app and it's functionality. We are using it self-hosted internally on a Raspberry Pi and it serves our needs very well.
> Please make URL importer and recipe/ingredient editing/adding more user friendly. Often when importing I find errors or need to manually edit a lot myself, which makes it very clunky and dissuades my family from using Mealie. Thank you for a wonderful system!
> Keep up the amazing work!
> Nope, just thanks, your app rocks and has completely changed how we prepare food. You have helped us to be healthier and more organised, thanks.
> I love love love mealie. Temporarily had to stop sponsoring through Github - but will definitely responsor in the future. I appreciated incorporating OIDC. Happy that we can still see recipes without being logged in (was afraid this would disappear going into v1 territory). I love cooking but choosing what to make gives me analysis paralysis. Having a shortlist of thing I love right there in Mealie is great. My girlfriend uses mealie as well. We don't live together so it is a surpsie to find new recipes in there from time to time.
> Nice application, I enjoy it a a lot. Thanks for your work :)
> Mealie is great and has helped massively improve my diet. Inspiring stuff. Keep up the good work.
> I'm having some trouble with the OpenAI image parsing feature. The error messages indicate OpenAI isn't returning JSON as expected? This isn't a critical feature to me, so I haven't followed up yet, but it'd certainly be handy if this worked better.
> Thank you very much for your effort. you make our family life much easier cause we know have a central place for receipt storage which we mutual agree on. thats makes it a lot easier to find receipts we already did. also all the loose paper collections are gone
> No. I wouldn't mind telemetry as long as it was opt in by default.
> Keep up the great work!
> - Allow specifying ingredients measurement in recipe builder via acronym (typing in tsp instead of teaspoon) -Cache/Save recipes in client so that reactions can still be accessed if server/Internet is down (I assume this probably needs a proper mobile app to implement)
> Thanks for your great work. Mealie was a live saver when my main recipe website suddenly went offline. It started as an archive and is now my family's recipe book.
> very nice!
> Mealie is great! Thanks for developing it and making it available for free. It has improved our organization.
> Thank you very much for developing Mealie! Me and my wife use it for everyday meal planning and find it very useful.
> You are doing great work! I am super happy with mealie!
> Good job!
> It would be great there was a better way to display the dashboard in HA than to use an iframe and also to not have to type the password every couple weeks
> On bulk imports, it would be great if you could parse out the pasted step numbers.
> Love the project, use it daily as a family!
> Nutrition information for Ingredients to automatically build up to recipes
> Please add a "no login" Option. In a private household with 1-2 people it's annoying to login every now and then... I would prefer to use Mealie without a login, at least I wish I could have the option to do so.
> It's an amazing application. It improved my marriage as there was always arguments as to what to eat, who cooks, what we need to buy. Everything is organized, it removed a LOT of stress from my life.
> Every time I log in I get the welcome to mealie lets get started. I always have to click I'm already setup, just bring me to the homepage. I find this kind of annoying. I am not sure why I would want to setup after I have already done so. Maybe I am missing something.
> Great work love the platform
> I just want to say I absolutely love Mealie and you've done an amazing job! I'm happy to support such a fantastic piece of FOSS software!
> Might be nice to have a settings option to disable features you dont care about to reduce UI clutter. Helpful for less technical household users who just want a simple digital/self-hosted recipe book.
> I get lots of recipes from websites that require signing in. The recent addition of importing through HTML will hopefully improve my workflow a bit. A browser extension to send the full HTML would be even nicer.
> It is perfect for my use case. We use it to plan for the upcoming week and we use the pool of recipes that I have imported as inspiration. We use planner comments for restaurant names in order to have a complete timeline.
> It's a great app and I use it a lot more than I thought I would. Thanks a lot for it!
> Mealie starts to bog down heavily when there are 1000+ recipes.
> Thanks for the great work!
> My wife and I love this software, we use it every day for our cooking and we are always adding new recipes into it. Keep up the fantastic work!
> This software solves a problem I never even realised I had - where to collect all those recipes from books, magazines, websites and scraps of paper all over the place - and it runs an absolute charm. Thank you!
> Thank you for the amazing work you are doing
> Please make the WPA work as the web page on iOS, because the icons get lost and replace by generic rectangle, it's not usable for checking in real time the shopping list.
> Include support for other databases like Oracle.
> thanks for the hard work
> Great software, thank you kindly!
> It's such a useful app, thanks for all the hard work!
> update mealie from application
> The app has been improving steadily and I'm aware that we are in no position to ask for anything, I do believe that there is a lot of margin to improve and make it much user friendly and not so "power user only". The most important things here for me are the meal planner which should be smart enough to plan my meals and just tell me what to eat based on what rules I established, the shopping list because if I dont have the items to cook, I end up derailing and eating some delivery or breaking my rules, and of course the smartest scrapper possible so its easy to import recipes we like. From a person who is in almost constant need of a controlled diet, I can tell that discipline can be hard to keep, and Mealie can be a really powerful tool to keep it, and Im thankful for that.
> Love the project, it's the only way I enjoy doing groceries and planning meals in advance opposed to ordering out
> I would like to be able to switch between groups more easily, if there was a button to select a group. Right now, as far as I'm aware, I have to change the URL to access the different groups. Though, I haven't used it recently because of this issue.
> i enjoy mealie as well as my family since the beginning of the project. Thx a lot for your time :)
> The search improvements are huge!! Love the additions there. - Would love to be able to search by source domain - with recipes added via url. (e.g. "Mary's Test Kitchen" would return every recipe from the domain https://www.marystestkitchen.com/) there could be a matching section in settings to make it easier to read like that, or the filter would just show marystestkitchen.com, either is fine - Why do the foods in the list appear to be random? Couldn't they pull from the ingredients in all the recipes?
> I moved to Mealie from Tandoor, and I like the look and feel of Mealie much better. I host Mealie in docker, and every time I update the docker it wipes my database. I have to back up before updating, and restore after updating every time, which is probably a good habbit to have, but it would be nice to not have to every time. I don't know if it is my docker compose, or the way Mealie works. It is not a huge deal, but it is kind of annoying. Other than that I really enjoy Mealie, and have come to depend on it. Thank you for creating Mealie and keep up the great work.
> oh my gawd PLEASE let me change the color of the header on the mobile safari app. it drives me crazy that it's always orange ::tears:: But- love the app overall :)
> Provide (more) ideas/concepts for tags and categories to the user, restructure profile page: the amount of different things that would be more accurately described as settings are confusing, allow combination of NOT IN and IN in search, save language setting per user. Forgot to mention for recipes: provide a toggle to merge ingredients to see the total amount of an ingredient needed for a recipe. Similar to how it is handled when adding to a shopping list but should also merge regardless of note. This is useful when using sections. Also with regard to internationalization: internationalize/standardize servings and time. Also when internationalizing categories, foods, units, tags etc., don't make it dependent on the UI language setting
> Can you make PWA shortcuts available on iOS? If not, please provide documentation explaining this limitation. I tried and tried to get it to work, but it appears to be an Android-only feature.
> Take care of yourselves!
> PLEASE keep working on Mealie, my family has come to pretty much rely on it daily! I would even be willing to pay for a license as long as the project stays strong!
> I love Mealie. Please keep up the great work!
> I only use it for the basics, but Mealie does its job really well.
> Please continue! Mealie is a great system, we love it!
> I added my wifes feedback under the meal planner question, she doesnt like that she needs to login to often. Also, theres a longstanding bug that I believe is a a WebKit bug on iOS that prevents the screen from sleep function working when mealie is running as a PWA. Not your fault, however if it was possible to find a workaround to that maybe, that would be great. Thanks! Mealie has changed our lives, I cannot thank you enough!
> Thank you for this amazing project.
> I've tried to import recipes from Podio with the API, but I got many error messages. The API accepted data that caused issues reading the data, so I had to dig into the database to correct the information. Validation on the API should be added.
> Love the service! Thank you for putting it together!!!
> Some custom editing options for uploaded images might be nice. I'm honestly just super happy that this app continues to get love and development.
> While I love Mealie in general (thanks for the awesome project, btw!), I fell that the responsiveness of the interface could still be improved a lot (haven't upgraded to v2 yet, but didn't see anything in this regard). Especially on mobile devices and slower/low-end computers, the interface doesn't feel snappy and I find myself often waiting for it to do things. It might be because I'm using Firefox, which might not be a major development target/platform though.
> Really great app, my wife and I love it. I self host a few services but after Home Assistant this is probably our second most frequently used service. We also use the Home Assistant integration for Mealie and have announcements of what is planned for dinner. We also use a mixture of Home Assistant native shopping lists for non supermarket stuff (like the hardware store) and Mealie shopping list for food and drugstore stuff.
> Thanks for this wonderful product. I created an article about this projects and I added some extra functionality to my Home Assistant dashboard for it. https://vdbrink.github.io/homeassistant/homeassistant_dashboard_mealie After I shared my article in multiple social medias I see a lot more people who use it now also. Afterwards there is now also the hacs home assistant module.
> Thank you for all that you do!
> GG for v2.0
> its nice, but we are currently in testing-modus
> For the user-specific rating, it would be really nice, if I could look up the rating for each person (maybe only as admin?)
> In the Group admin pages, there is a checkbox for "Private Group". There is also one for "Allow users outside of your group to see your recipes". Both of those are presented without any explanation of what they are, or how they are different. Adding some text explaining what the different options do would be useful.
> Y'all are awesome keep up the amazing work. I use Mealie as my modern recipe book and love it
> Overall a GREAT app and am very happy with it.
> Would love to import raw PDF (no AI) even if it was just viewable and not parsed or searchable just to keep my recipe hoard all in the same place
> Keep up the great work! I have been using Mealie 5-6 days a week consistently for over a year, it's been a great help, a wonderful tool. I never "disable ingredient amounts", so if you can find a way for import recipe to automatically match up the units and quantities by default, it would save me time and be amazing, because I love cook mode, being able to increase/decrease recipe servings, and ingredient linking.
> It would be awesome if the API docs got some TLC. There are several endpoints that have no description or are rather confusing on how they work.
> Thank you for the great work!
> After importing a new recipe via URL and making a few changes (like assigning categories/tags), it requires me to first save, then re-enter edit mode before I can safely use the ingredient parser. Please consider having the 'parse' button prompt to save changes rather than saying "you're gonna lose everything!"
> Just a great tool.
> mealie is fantastic
> Manual recipe building is needlessly complicated due to two limitations: Mealie doesn't have an option to start with a baseline "blank" recipe state and it doesn't properly pass bulk-added ingredients to the parser, In the first case, this means every time I create a new recipe I first have to delete the first ingredient and first sample step so I can bulk add my own. Guess how many times I forget to do that. In the second case, if ingredients are bulk added then you must first save the unfinished recipe and then go back to editing it to use the parser. This should definitely not be necessary.
> I have it running on a docker container on a Synology and I'm not sure how to upgrade. I'd love some dumbed down documentation for installing, migrating, and upgrading.
> I wish the recipe parser would automatically go to edit mode after importing a recipe
> Great work!
> I just love the tool. The UI and UX is great (well, some settings are obscurley hidden, but one can learn that) overall, I am really happy. Thank you all a bunch!
> Currently I am using 2 different instances of Mealie. This is because for my deployment I NEED a way to completely segregate 2 different groups. Users from group A must not be able to see anything in group B. Some users from group B should be able to see recipes in group A. The groups should be auto-assigned through OIDC auth. Currently there is no way to have this functionality, because groups can not be assigned automatically from OIDC and there is no functional way to have a single user as part of both groups. At least this is so AFAICT, I was not able to get this to work. (If you wish to chat about this to me, I am in the discord. user: Gecko)
> Usability should be the main focus. The system is often used by non-technical people and they get lost quickly. Keep things simple and clear.
> It would be great to support the installation in a subpath. It looks like Nuxt has support for this in v3 using app.baseURL / NUXT_APP_BASE_URL.
> We're rather happy with Mealie despite it being not perfect. A quick detour to Tandoor brought us back to Mealie after a single day as it's just not fur us apparently. While Todoist worked for us a long time as a Meal Planner and Shopping List, Meal Planning has moved completely to Mealie. Shopping Lists are not quite there but I'm confident they'll get there eventually. Thank you for listening to user feedback and your continued investment into Mealie, it makes a real difference :)
> Thank you! You have greatly improved my planning and dealing with meals. I have like 10 recipe books and used to never find anything, but now it is so easy and central. Otherwise my autistic ass loves statistics. If you want to include something like a Spotify wrapped like "You cooked 20kg of noodles this year" that be hilarious
> Thank you ❤️
> Better integration with Home Assistant
> It's never really been clear to me the purpose of a 'group'. Perhaps this can be better explained in the UI when you would use it. Especially now there's another grouping of users in households. One other thing is that the PWA on Android seems to be much slower and less responsive than on IOS. Otherwise, love mealie and it's up there with my most used self hosted apps
> I really enjoy using mealie as a recipe database and mealplanner. I integrated it in HassIO so that I get a message every morning with whats for lunch and dinner and a notification when I need to start preparing lunch so that it's ready at noon.
> Please make a Android app like Mealient but with full mealie options
> Thanks for a great product - it brought harmony to our household 💖
> I really appreciate the work. This has made cooking for holidays (especially) so much easier. I look forward to seeing what is happening in groups in v2.0.0. I wanted to share with my family outside of my house, but didn't want them to see meal planning or shopping lists.
> Generally, this tool is great -- and I very much belief that it actually does reduce the amount of food-waste with us planning better what to eat. Very definitely, it saves us time doing shopping: )
> keep up the great work! :-) i love mealie and it is an integral part of our household :-)
> Thank you for providing this software!
> Thanks for the awesome app! Some thoughts: - A nice feature to have would be a native app widget so I could show a recipe on my kitchen tablet's home screen. - Another one would be an option to increase the font size of recipes, again for use on tablet. Thanks again!
> I do not like how Cookbooks are managed. I shouldn't have to set a tag for a recipe to be in a cookbook, there should be a different way to assign a recipe to one or more cookbooks. Cookbooks should be organized and displayed as though you picked up a physical cookbook and were about to go through all the categories - as displayed on your screen. Cookbooks should also display the total number of recipes as well as the total recipes per category. Please consider extending the functionality of cookbooks, how the user interacts with them, and how recipes are assigned to cookbooks. Thank you for the consideration.
> Keep on the good work
> Love it. Only thing I wish it did or did better if it is available, is when I import a recipe it creates a separate list of just the ingredients outside of the standard one that includes how much. It's hard to quickly view what I need when grocery shopping.
> I enjoy using Mealie and appreciate all the contributors
> Keep on trucking Brothers
[Back to the overview](overview.md)

View File

@@ -0,0 +1,319 @@
[Back to the overview](overview.md)
# Question 9: Any suggestions for how to improve Shopping Lists?
> Take a look at OurGroceries, it is awesome. but i guess it works a bit differently, but its very quick to add
> Functionally it feels good in 1.x just some visual improvements would be nice. havent tried it out in 2.x yet
> I am on 1.12.0, running in a browser (no PWA since I don't have HTTPS set up for my homelab). On mobile, shopping lists feel like thet take up a lot of space for each item, with the item name and amount, description, buttons for editing, showing the recipe the ingredient belongs to, and drag symbol. When on mobile in the store doing the shopping I really only need a checkbox, amount, and ingredient name. Maybe simplify the list and add a button for an "advanced" or "edit" mode?
> Toggle showing or hiding notes imported from recipes.
> Sort the ingredients and add up the quantity
> Using AI to just describe the ingredients using natural language or upload a picture of the ingredients and then add them automatically to the shopping list
> Per-store ordering of aisles (so the list is in order of where I plan to route throughout the store)
> For me there's not much room for improvement, as I'm exporting the Shopping List into Home Assistants Shopping List. It does make sense for me, as Home Assistant offers me a local and privacy first voice assistant, that can add things to the Home Assistant Shopping List. Implementing such a feature would in my opinion not fit to Mealie. So I'd say, if you can improve the sync functionality for the shopping list in Mealie, it would be better than to try to "improve" to another voice assistant, this time for shopping lists andd recepies. Concentrate on what Mealie does really, really good: serving as a support app for all your food needs. But not for all the shopping needs.
> - add a pole to write down a shop name with option to group products by that name - automatically categorize product by their kind ex. cheese, brewery, etc., with option to group them together
> Make it look or feel more like Microsoft todo
> Ability to add shopping list items in a conveniant way via Alexa, Siri or other speech. Although it is somehow possible with tags, I like shopping list, where I can order categories in the same order they are in a shop (e.g. vegetables, meat, drinks, spices, etc) so I have my list in the order of the shop and i can easiely work from top to bottom of my list while shopping
> Maybe have some kind of household inventory in addition?
> I don't use the Mealie shopping list as the stores I buy at have their own digital shopping lists in their apps.
> Ingredient sterilization to make cleaner shopping lists
> To me fetching recepies via url and importing them is the reason to use mealie.
> I would like to see an option to set a custom label ordering per shopping list. Usecase: You have different supermarkets and for each a seperate shopping list. For the ordering of food could differ from store to store. Having the ability to re-order tags for a specific shopping list (market) would make handling this situation very convenient. A default order could be applied when creating new shopping lists
> Unfortunately I've yet to use it. But I really like the idea of having it available to me once I use mealie fully.
> I don't really use this feature (despite wanting to) as it is more convenient to share/sync a list with my partner on Google Keep
> I cant access my Mealie outside my lcoal network as its not exposed, so It would be cool to have some sharing function so I can send the list to my phone, to someone who is at the store or to some other app, perhaps some notes or Google Keeps app (It would be even better if could be synced with some of these apps). This is something that was on my mind but I recently saw that the copy function was added which is great!! I would recommend putting all the action buttons on top of the list so I dont have to scroll to the bottom in order to perform the actions as an UX thing. I would also look forward to have it integrated with HAOS as most mealie users are self-hosted users who try to run everything locally and integrate it as much as possible, perhaps have a card for it with a sync button and the possibilty to add items through some assistant or at least to read it out loud when requested.
> Unify measurements so there is no double ups of ingredients
> add nutritional data, very important
> I guess this would be more of a "units as a whole" thing, but I'd love to see a "Unit Conversion" thing as a whole. For example, in the shopping list, if Recipe A uses 500g Beef Mince, and another recipe uses 1kg of Beef Mince, the two would usually separate in to two Shopping List entries. It would be cool to see units combine where possible, like in the example above, the list would show either 1500g or 1.5kg Beef Mince
> connections to 3rd party app / grocy
> I'm still in the process of learning how best to use it, so not in a position to advise.
> Little icons for each item Favorites List of regularly shopped items clearer iconography while entering a new item
> 1. mass delete for Tags, i have over 300 tags and don't want to delete them all manually 2. look at this webpage (https://www.traeger.com/recipes/bbq-chicken-wings-3-wings) on the left hand side they have ingredient headings (with a different font size so it stands out) like Chicken Wing, Franks RedHot Sauce, etc. that way the ingredient list can be separated into groups. i currently add blank ingredient spaces to try and do this. 3. be able to click and drag recipe cards to cookbooks 4. be able to mass assign tags to recipe cards. for example if i had a BBQ tag and wanted to assign it to 10 recipe cards, it would be nice to do that instead of opening up each card and making the change
> Some lists are hidden by default, which is confusing I sync my lists with home assistant which is fantastic!
> I do my grocery shopping online, and my shop (Sainsbury's) has the option to paste my shopping list and do a search for each line. I would like an option to customise what the generated text from mealie looks like
> Ai to learn your preferred labels and then auto suggest a label for new ingredients.
> At the moment, I am not using it that much.
> Allow ingredients to be added to the shopping list directly from the recipe. This would save time for ad-hoc menus when you don't want to use the meal planner.
> Option to auto convert free text items to categorised via natural language parser Timeline/stats for previously bought items Prices especially if integrated with a supermarket price tracker Export for online shopping
> Create Pantry Section but this idea got no go-forward
> Continue to sort by labels but be able to hide them. Easier reordering on mobile.
> We'd like to be able to select the number of people a recipe is for when you add it to the list. Currently, most of our recipes are for 2 people so if we have guests we have to add the meal to the plan twice in order to get the correct amount of ingredients. Also, when you tick an item as done and it's attached to a recipe, that recipe information is lost if you untick it. This isn't great if you tick anything by accident, or need to check a ticked ingredient against a recipe.
> Combine like ingredients from two different recipes. Meaning if two recipes call for garlic there is just one shopping list item for garlic.
> I think the ingredients need to be added “correctly” from URL import instead of just a large string.
> I did really like the auto shopping list based on meal plan, but I understand the logic about selecting specific meals and ingredients from those recipes. Perhaps if you could press one button and refine a list from all the recipes in the current meal plan, that would be best of both. Also, the ability to re-order or sort shopping lists. Thank you.
> When adding recipes to the Shopping List, it will take about a minute to actually load the ingredients into the Shopping List section. However, the linked recipe will be visible at the bottom of the Shopping List page right away
> Export/Integraion to Home Assistant ToDoS (I use the as shopping list and don't have access to mealie from extern)
> The biggest think that I need is to be able to sync the shopping list between my account and my wife's account one thing that I love that is included in samsung food app is that it allows me to use the share button on a website to send the recipe to the app. I wish mealie had this same functionality
> It seems (I'm still a newbie) Shopping Lists aren't immediately shared, contrary to recipes, in a group. If that's correct, it's counterintuitive.
> 1. Please add more entry type/food type on planner. In Poland the main dish is at 1-4 P.M. It's called obiad but it's related to lunch. But because it's main meal, we usually have 2 dishes: soup (zupa) and the second dish (drugie danie). It would be great to have separate entry type for soups and the second dished. So in generally, please allow to define own entry types in planner (like in Tandoor Recipes). 2. In ingredients list please add better support for non-english languages with more complicated grammar like Polish. We say: * 1 szklanka cukru / 1 cup of sugar * 2 szklanki cukru / 2 cups of sugar * 3 szklanki cukru / 3 cups of sugar * 4 szklanki cukru / 4 cups of sugar * 5 szklanek cukru / 5 cups of sugar * 6 szklanek cukru / 6 cups of sugar etc. * 1/2 szklanki cukru / 1/2 cup of sugar Antoher example: * 1 marchewka / 1 carrot * 2 marchewki / 2 carrots * 3 marchewki / 3 carrots * 4 marchewki / 4 carrots * 5 marchewek / 5 carrots * 6 marchewek / 6 carrots etc * 1/2 marchewki / 1/2 carrot So we have: * form for 1 * form for 2,3, 4 and fractions like 1/2 * form for 5 and more
> I just submitted a survey, but forgot to mention this: dragging and dropping items to organize them within shopping lists is *extremely* clunky, especially if you use a trackpad or touchscreen. I often have to click on the box for moving the item at least 3 times before it actually lets me move it to where I want to. Then, its hard to get it to the right place if the list is long, because the screen doesnt scroll in the way youd want (it scrolls at a static rate but doesnt stop scrolling once its started unless the item is dropped, causing the entire process to repeat).
> I would love the ability to set a default order for how items with labels are ordered automatically when added. I organize my shopping lists by type (e.g., “Dinner List”) to make it easier when exporting items to the lists. But this means shopping for items can be tough, since I have to switch between lists. Being able to set it so that the “Vegetables” label automatically comes right before the “Grains” label would be amazing. I would also love a way to create or see a “parent” list that simply contains all of the unchecked items from all lists (as a stretch goal, it would be nice to be able to exclude lists) using the above ordering. Then I would no longer have to switch between lists.
> I would like to disable all this not realy usefull stuff via env.
> Mealie has done a great job. If you have to ask questions, I hope to support the<video>tag in the recipe steps instead of iframes, which will cause the video to play automatically.
> I think live sync'ing the checkboxes on a shopping list would be cool, we often grocery shop together, and with Mealie, it's challenging for us to "share" a shopping list/both use it at the same time (having to constantly refresh the page, checkboxes not syncing, etc.). I haven't updated to v2+ yet, so maybe this is different/improved with Households!
> Big Stretch... it would be awesome if there was a plugin architecture to support purchasing groceries from stores that have API's available i.e. Kroger in the US has a fully documented API to support the writing of a Kroger Shopping plugin to let you take everything that you need to shop for and one click "add it to my cart at Kroger" or even "buy these things and schedule them for delivery or pickup"
> Integration of "Bring" would be great. Bring is a german shopping list app: https://www.getbring.com/
> Introduce a "Pantry List" to keep track of spices, rice, flour and other non-perishables. Then add the option to subtract used amounts from Pantry List instead of having to cross them out from Shopping Lists generated from Meal Plans. Pantry List could also serve as foundation for a "Suggest a recipe" feature in meal planning, to suggest recipes based on items already contained on the Pantry List - e.g. Pantry: 3x cans of chopped tomatoes 500 g pasta Suggested recipes: Spaghetti Bolognese ...
> Maybe space it out a little more on Mobile. I sometimes tap the wrong ingredients as they are close together.
> Have the shopping be more instantly syncing. If I check off an item in the list. The app should reflect that a little quicker on my SOs phone. A second thing related to shopping is some way to keep track of expiring items like milk. Maybe have a place to enter the date of expiration in so when shopping you can easily see if you need to buy a new one. Also a small note about the new update 2.0. I don't really like the units in the shopping list now. I ignore them/remove them when adding to the shopping list from a recipe.
> android app
> It would be ideal if shopping lists would be accessible offline, i.e. without a connection to the Mealie server. Closing the PWA somtimes causes it to "un-load" the page and you aren't able to open it again offline. I understand that this is probably difficult to realize with just the PWA, so just keep up the great work you're doing with Mealie!
> Sorry, I haven't tested it in a few months. I tried early implementations, and ended up switching to AnyList. I will revisit and provide feedback in discord. Off the top of my head, the reason why I switched to anylist was: - A way to add to the list with voice assistant - Grouping of ingredients into shopping aisle sections.
> I have not been able to sort the items on the list. Firefox, android. When I move them, they move back after a couple of seconds.
> The ability to mark certain items that are not linked to a recipe in such a way that they can easily be added again later with a single click. For pantry staples that you buy every couple of weeks e.g flour, milk, cereals it would be nice to not have to type them again every time.
> Save ingredient labels when they are edited
> As I'm still on v0.5.6 I haven't tried out new features so I'm not sure where this is at. The best case scenario would be to use a meal plan to select recipes, then build and aggregate the shopping list based on all ingredients. Structured ingredients is required for this so the shopping list includes units of each ingredient.
> They are great! We have two lists: "This Week" and "Next Week". It works really well in PWA when in the grocery store.
> Automatically split ingredients into sections; produce, canned, frozen etc. (if this already exists it not well documented)
> An ability to add the shopping list items to another app (Apple Reminders, etc) would be nice
> Make an integration with Grocy so Mealie can see what you have/do not have and plan accordingly.
> Allow labels to have a custom order (so that I can order them in the order I shop in the supermarket)
> Unifying ingredients automatically and then apply nutrition calculation derrived from a standartised database.
> render list as text for copying from browsers which prevent clipboard interaction when serving over http option to copy as text without quantities
> I have no need for online shopping lists. I prefer it on paper as I use my phone to scan and pay goods in the supermarket.
> My version is a bit old, so maybe it has improved already, but an easy way to clear the list without having to delete and recreate a new list. Also, when adding items to the list, if there's only one list, just use it rather than having to select it.
> I've honestly not used it at all because I don't need to. Because of that I cannot make a suggestion. Sorry.
> Yes, it should be as close to Meal Lime as possible (the app). When you create a meal plan all recipes automatically by defualt add their ingredients to the shopping list. If you delete a recipe, it removes its ingredients from the list automatically. I suppose ideally this would be a toggle "Automatically sync shopping list with Meal Plan" or something...
> allow a way to disable it hiding the option - we don't use it.
> It's not as full features as grocy, which I use as my shopping app.
> Source recipes are currently tracked on shopping lists before items are checked (marked complete). I often would like to know which recipe my completed shopping list items belonged to. Keeping the source recipe list in a separate list of completed recipes on the shopping list would be handy.
> Quicker to add food instead of just notes
> I currently use grocy for shopping lists because I can categorise all products so when I'm shopping it's easy to go aisle by aisle. There's also an app as well and using mobile browser is annoying. It would be handy to have shopping list in the same app as my recipes, but unless you could match the functionality of grocy then I won't be using it in Mealie.
> Sync to Bring
> The ability to manually re-order the shopping lists.
> An integration with CalDAV so that the shopping list can sync with Apple Reminders.
> It's UI/UX, cannot provide details in text field
> Export as string so that you can paste into into a chat
> By merging similar items, I think this happens in some cases (perhaps if something is close and the app is not sure it could check?), maybe suggestions for items you use regularly. Group items by type (e.g. veggies, baking, tinned goods). Group items by when you need them (e.g. do I need this today or next week).
> Better grouping of ingredients added from recipes
> Have the option to combine/not combine items. if I have lets say two receipes each needing 1KG of chicken wings, having the option to show it as 2KG, or 1KG shown twice but grouped perhaps with recipe next to it so when shopping the chicken wings which are all in one spot, can be purchased at once rather than jumping around
> Grouping items by type of ingredient. I.E. Vegetables. Makes them easier to gather when in the shop.
> I'd like to be able to export/ merge the lists to other apps, such as Google Keep, so I can use the Mealie feature alongside Google Assistant.
> Integration of third party apps like bring. i think the shopping list is a really good feature, but there is almost always more to buy than groceries. so to us there happened two things (1) we wrote a written shopping list (default) (2) switched to bring app reason for bring: we use mealie hosted locally not accessable from the internet. beside avaiable vpn the mealie shopping list is to unconvient to reach
> The ability to parse and merge ingredients from recipes. So say if I add two recipes to a list that both need garlic. One says two cloves and the other says 4 cloves. I don't want two separate entries in the list. Personally I don't really want the amounts in there.
> None come to mind. Very handy as-implemented.
> integration with flipp for best prices.
> It would be cool to sync them with external services, like bring. I only Idee mealie for food related shopping but not for stuff like cleaning supplies. Using two apps while shopping is a bit cumbersome.
> Make it so you can organize the list by store section (in addition to category).
> Add price of ingredient, brand, store bought at
> My main use is there is no good cross platform way to shop with my girlfriend while being able to split up. Mealie fixes this, we make a list and split up knowing checked items will update instantly, no reloading the page. I wish common foods were already included in the system Maybe keep an ingredient history so when I add lemons I can see "5 lemons were added in the last week".
> When adding multiple recipes for the week, if they use the same ingredient, it would be nice if they combined.
> sectioned by ingredient type (dairy, fruit, veg, etc) - maybe this happened in v2?
> Sorting by ingredient name. There's recipes that require 1 carrot, another that requires 1 cup of carrots, it would be a lot easier to see what needs to be bought if all ingredients are grouped. Sure, for recipes we should have the same measuring unit, but it's not always easy when managing hundreds of recipes.
> Integration with Google Home for adding to list
> Better initial parsing of ingredients into discrete amounts/items (my partner never cleans up their recipes after importing, so they cannot take advantage of shopping list, scaling, etc.) Permission support to mark a list as shared between users or private. That way different users can add to the same shopping list if/when desired, but if cooking something as a surprise (birthday, etc.) they can add ingredients into a private list. To be clear, the biggest thing that can be done to improve shopping list is actually not to do with the lists themselves but with the ingredient parsing. If that can happen automatically and more reliably, both scaling and shopping lists benefit. Anything else is just an enhancement.
> I don't really use it and would not find it usefull unless it would link to the android shopping list app I use (called Shopping List)
> If there was an integration with Walmart+ Id use it forever
> Reordering of the items is not possible
> At one point we accidentally removed all entries from our shopping list just by clicking on the trash icon. A confirmation dialog here would be very helpful, to avoid this.
> Not really sure why but after some days the sessions logout in the phone using PWA although the checkbox remember me is marked when logging in
> Make it work similar to the app AnyList (https://apps.apple.com/us/app/anylist-grocery-shopping-list/id522167641) or better for spouse/family approval factor. :) Thanks for the good work
> Add a way to right click on a recipe ingredient and add to a shopping list.
> it would be nice if it could be deactivated if you don't use it (in the settings)
> The offline mode is not really working pre v2. I have not checked v2 yet though. To be honest, I never saw a good offline pwa yet. They always break apart after some time. I can imagine that an iOS / Android app will yield better results. In addition, we also use the apple watch app from our current shopping list app, that would also require an iOS app for mealie I think.
> First thing would be the possibility to export it to google keep or some notes app, because my instance is not exposed to the internet, so when Im actually going to the store, I cant access the list. Therefore it would be nice to have some sync function to have it synced to some external notes app or to at least have a share button so I can send the list to my wife when she is at the store. Its not even possible to select the text and copypaste it. No other change I can think of right now
> Adding recipes from the meal planner does always reliably add all the recipes as linked. Otherwise it'd be cool to have an option for the meal planner to automatically add 2 portions of all recipes
> If there was an app or easy way to integrate into iOS notes/reminders, that would work really well for me.
> Offer prompts to combine ingredients that are the same or are similar - like how contacts lists say "want to merge Sam Rockwell and Samuel Rockwell?" Prompt with "Want to add 1 onion with 1/2 cup onion, diced?" Then the result would be "1 onion and 1/2 cup onion, diced" in one line.
> Make it easier to quickly type multiple entries (using enter to save, have a more natural order of entry fields). In that context also, include abbreviations of units as search hint.
> Make shopping lists easier to navigate to on mobile PWA, such as allow the shopping list to be opened when the PWA is first launched, so that it opens automatically when I open mealie at the supermarket. Allow the user to move items from one shopping list to another. It looks like there is a "Transfer" function, but it does not work for me. Simplify the UI for adding items, or explain the concept of notes vs. foods better.
> Make a print dialog, which removes everything from the page except the pure shopping list.
> A fast way to open your default list
> When I add an ingredient that is a duplicate of an ingredient that has already been checked off, I want to remove it from the checked off list. Right now, duplicates are only removed if both entries are in the unchecked shopping list.
> merge same ingredient, different unit items into one line
> Try to connect similar ingredients
> I'm currently on it to obtain the shopping list via N8N in order to transfer it into Microsoft To Do App. Because the ToDo App is our central app to maintain all! shopping activities. Using Shopping List in Mealie would require to start swapping between two Apps/Lists. So, what to improve? Integration/Ingestion (automated) of Shopping Lists into other Services, e.g. Microsoft ToDo. 😉
> Recently I have been getting a "browser does not support copying to the clipboard" error. It seems to happen from all my browsers thought the main one I use is Falkon.
> It would be nice if it removed linked recipes once they passed from the meal plan. I love the copy button as text button which I use constantly.
> This is my favorite feature. I imagine it would be very difficult to pull off in the code. But would be amazing if it could detect small changes in how ingredients are listed and pulled from recipe imports and consolidate them into the same phrase. (ie.. "1 small egg and 1 egg") so that it could combine the same ingredients for multiple recipes into one line (2 eggs) into the shopping list. It would be less manual editing to create the list. But possibly an easier suggestion to implement would be to automatically uncheck general use spices. I imagine we usually already have those so there is no need to manually uncheck from shopping list on adding a recipe.
> When I make lists by hand I will often put the items in the order I go through the store, eg produce first. It would be nice if I could define a category sort order that would apply to all shopping lists by default.
> If no list exists then create one automatically when I add ingredients from a meal plan I just put together. It is really not a big deal at all, but will save me a click or two.
> Bull add feature similar to recipe ingredients
> I'm always irritated when I click on a list item (with the intention of editing it) and it is directly marked as done. Then I rediscover the edit button on the right again. For me personally the checkbox is the call to action button for the user journey of checking off an item. I would also like to click and hold to drag an item instead of needing to grab the handle on the right.
> dont use it till know, but maybe for the x-mas seasion for the backing
> I want to easily export into my ios reminders app
> I would like to be able to click on ingredients in a recipe, and say "Add to Shopping List" Right now, I believe it adds all of the ingredients, regardless of what's selected.
> Some persistence that tracks checked off boxes across sessions if that is not a thing
> Auto complete for checked off items to re-add without searching for it. Manual sorting of lists
> Native Apps Offline usage for Apps Automatic Sorting into Categories
> I don't use them enough right now. When adding items to a list, removing things in brackets , e.g., tbs garlic (cut) would be nice. WOuld be just tbs garlic. Or something nicer like that. And merging items in the list would be great too!
> all good
> Implement bring implementation (without mealie being exposed to the internet, see https://github.com/felixschndr/mealie-bring-api)
> A recently checked option that displays any items checked in the last 30 minutes or so. Would be very useful in store to help reduce fat fingering. The current checked item list can be used that way but it isn't as timely so not always the best.
> We use a google keep list for our shopping list because we can add items with our voice via google home. So either integrate it into keep or add it as a feature that google home can add directly to.
> Make it easier to organize list order. We try to order it by aisles and in the phone it can be difficult to reorder them
> Have them (or anything, really) be accessible across households, if desired. I.e., my SO and I live in different cities, thus use different households for the majority of the time. However, when we stay at the others place (which then usually is for minimum a week at a time), it would be useful to be able to share things like meal planner, shopping lists etc for that time, without some workaroung (like an additional user or moving my or their user to the other household for the time).
> Not sure how to do them right, but the experience is very off for some reason (or rather the sum of many). We're still doing our weekly shopping planning in Todoist that holds 3 broad categories (2 different shops and one for meat). - Adding recipes to a list is not something we'd do. We usually have half the ingredients (or more) at hand already and just need a couple. - Jumping between lists is clumsy. When we add items to the list, we jump between out "categories" (which are held in different lists. It's hard to think of anything that is bought at shop A while remembering the items that come from Shop B. Having a back button in the UI doesn't work well for this workflow, a list of tabs in the top to jump between lists easily would be much better for this. - The shopping list is very unforgiving to mistakes. Deleted an item? To bad, it's gone. Any change to a list or an item needs to be reversible.
> Maybe an integration with Bring or similar shopping list apps. I also buy things outside of recipes, that way I could combine them
> Shopping Lists are not important to me. I use Mealie purely as recipe storage.
> Better integration with Home Assistant
> Ability to have a default ordering of categories for new lists
> All of my recipes don't have ingredients parsed, so the shopping list is quite complicated to use. I write my shopping list manually in the nextcloud tasks app and use it with tasks.org on android. Also I recently started to use grocy to track my inventory, so I'm planning to write some script to combine the shopping lists and save it to the caldav server. Something with a simple drag'n'drop webinterface. I still like mealie for recipes way better than grocy :-)
> No, its great i think
> Make it quicket / faster to input ingredients overall - possible 'quick add', or add from home. Remember the default layouts and sorting of the list - label sort. Easy way to update labels on food from the shopping list - or link to unlabelled food
> - adding nutritional tracker
> Add Nice icons to catégories/foods Make it raster or an apk
> Feature: Copy paste ingredients for to do app
> Make them toggable. Not everyone uses them, and it's a UI element which could be removed if the user does not use it.
> Sync it with Bring/Alexa would be very cool (I dont use shopping lists because I prefer Bring)
> Yes, it would be great if it could combine the totals for all food items for all of the recipes added it to the shopping list. For example, if I add 2 recipes and the first needs 1 cup flour and the other needs 1/2 cup flour, it would be nice to have a single line of 1.5 cups flour. This would be especially helpful for planning Holiday meals. The second suggestion is less helpful, but being able to categorize the shopping list and then group the food items would also be nice (produce, dairy, meat, soups, etc.) to make it more efficient while shopping.
> Make it more like buymeapie it is easier to use, esp. when modifying the list on my phone while shopping.
> I only use it once a year at Thanksgiving when I'm making a lot of food. It seems fine.
> Integration with other shopping list providers like Bring! (https://www.getbring.com/en/home) or others.
[Back to the overview](overview.md) or [On to Question 10](q10.md)

View File

File diff suppressed because one or more lines are too long

View File

@@ -351,7 +351,7 @@
<!-- Custom narrow footer -->
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-social">
<a class="md-footer-social__link" href="https://github.com/hay-kot/mealie" rel="noopener" target="_blank"
<a class="md-footer-social__link" href="https://github.com/mealie-recipes/mealie" rel="noopener" target="_blank"
title="github.com">
<svg style="width: 32px; height: 32px" viewBox="0 0 480 512" xmlns="http://www.w3.org/2000/svg">
<path

View File

@@ -32,8 +32,8 @@ theme:
markdown_extensions:
- pymdownx.emoji:
emoji_index: !!python/name:materialx.emoji.twemoji
emoji_generator: !!python/name:materialx.emoji.to_svg
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
- def_list
- pymdownx.highlight
- pymdownx.superfences
@@ -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:
@@ -84,12 +85,13 @@ nav:
- OpenID Connect: "documentation/getting-started/authentication/oidc-v2.md"
- Community Guides:
- iOS Shortcuts: "documentation/community-guide/ios.md"
- Reverse Proxy (SWAG): "documentation/community-guide/swag.md"
- Home Assistant: "documentation/community-guide/home-assistant.md"
- Bring API without internet exposure: "documentation/community-guide/bring-api.md"
- Automating Backups with n8n: "documentation/community-guide/n8n-backup-automation.md"
- Bulk Url Import: "documentation/community-guide/bulk-url-import.md"
- Home Assistant: "documentation/community-guide/home-assistant.md"
- Import Bookmarklet: "documentation/community-guide/import-recipe-bookmarklet.md"
- Automate Backups with n8n: "documentation/community-guide/n8n-backup-automation.md"
- iOS Shortcut: "documentation/community-guide/ios-shortcut.md"
- Reverse Proxy (SWAG): "documentation/community-guide/swag.md"
- API Reference: "api/redoc.md"
@@ -97,6 +99,7 @@ nav:
- Non-Code: "contributors/non-coders.md"
- Translating: "contributors/translating.md"
- Developers Guide:
- Building Packages: "contributors/developers-guide/building-packages.md"
- Code Contributions: "contributors/developers-guide/code-contributions.md"
- Dev Getting Started: "contributors/developers-guide/starting-dev-server.md"
- Database Changes: "contributors/developers-guide/database-changes.md"
@@ -104,3 +107,7 @@ nav:
- Migration Guide: "contributors/developers-guide/migration-guide.md"
- Guides:
- Improving Ingredient Parser: "contributors/guides/ingredient-parser.md"
- News:
- Surveys:
- October 2024: "news/surveys/2024-october/overview.md"

View File

@@ -1,74 +0,0 @@
module.exports = {
root: true,
env: {
browser: true,
node: true,
},
parser: "vue-eslint-parser",
parserOptions: {
parser: "@typescript-eslint/parser",
requireConfigFile: false,
tsConfigRootDir: __dirname,
project: ["./tsconfig.json"],
extraFileExtensions: [".vue"],
},
extends: [
"@nuxtjs/eslint-config-typescript",
"plugin:nuxt/recommended",
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
// "plugin:prettier/recommended",
"prettier",
],
// Re-add once we use nuxt bridge
// See https://v3.nuxtjs.org/getting-started/bridge#update-nuxtconfig
ignorePatterns: ["nuxt.config.js", "lib/api/types/**/*.ts"],
plugins: ["prettier"],
// add your custom rules here
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
quotes: ["error", "double"],
"vue/component-name-in-template-casing": ["error", "PascalCase"],
camelcase: 0,
"vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline": "off",
"vue/no-mutating-props": "off",
"vue/no-v-text-v-html-on-component": "warn",
"vue/no-v-for-template-key-on-child": "off",
"vue/valid-v-slot": [
"error",
{
allowModifiers: true,
},
],
"@typescript-eslint/ban-ts-comment": [
"error",
{
"ts-ignore": "allow-with-description",
},
],
"no-restricted-imports": [
"error",
{ paths: ["@vue/reactivity", "@vue/runtime-dom", "@vue/composition-api", "vue-demi"] },
],
// TODO Gradually activate all rules
// Allow Promise in onMounted
"@typescript-eslint/no-misused-promises": [
"error",
{
checksVoidReturn: {
arguments: false,
},
},
],
"@typescript-eslint/no-unsafe-assignment": "off",
"@typescript-eslint/no-unsafe-member-access": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-unsafe-call": "off",
"@typescript-eslint/no-floating-promises": "off",
"@typescript-eslint/no-explicit-any": "off",
},
};

View File

Binary file not shown.

View File

@@ -1,378 +0,0 @@
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 100;
font-display: swap;
src: url('~assets/fonts/Roboto-100-cyrillic-ext1.woff2') format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 100;
font-display: swap;
src: url('~assets/fonts/Roboto-100-cyrillic2.woff2') format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 100;
font-display: swap;
src: url('~assets/fonts/Roboto-100-greek-ext3.woff2') format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 100;
font-display: swap;
src: url('~assets/fonts/Roboto-100-greek4.woff2') format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 100;
font-display: swap;
src: url('~assets/fonts/Roboto-100-vietnamese5.woff2') format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 100;
font-display: swap;
src: url('~assets/fonts/Roboto-100-latin-ext6.woff2') format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 100;
font-display: swap;
src: url('~assets/fonts/Roboto-100-latin7.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url('~assets/fonts/Roboto-300-cyrillic-ext8.woff2') format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url('~assets/fonts/Roboto-300-cyrillic9.woff2') format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url('~assets/fonts/Roboto-300-greek-ext10.woff2') format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url('~assets/fonts/Roboto-300-greek11.woff2') format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url('~assets/fonts/Roboto-300-vietnamese12.woff2') format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url('~assets/fonts/Roboto-300-latin-ext13.woff2') format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url('~assets/fonts/Roboto-300-latin14.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('~assets/fonts/Roboto-400-cyrillic-ext15.woff2') format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('~assets/fonts/Roboto-400-cyrillic16.woff2') format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('~assets/fonts/Roboto-400-greek-ext17.woff2') format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('~assets/fonts/Roboto-400-greek18.woff2') format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('~assets/fonts/Roboto-400-vietnamese19.woff2') format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('~assets/fonts/Roboto-400-latin-ext20.woff2') format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('~assets/fonts/Roboto-400-latin21.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url('~assets/fonts/Roboto-500-cyrillic-ext22.woff2') format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url('~assets/fonts/Roboto-500-cyrillic23.woff2') format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url('~assets/fonts/Roboto-500-greek-ext24.woff2') format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url('~assets/fonts/Roboto-500-greek25.woff2') format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url('~assets/fonts/Roboto-500-vietnamese26.woff2') format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url('~assets/fonts/Roboto-500-latin-ext27.woff2') format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url('~assets/fonts/Roboto-500-latin28.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('~assets/fonts/Roboto-700-cyrillic-ext29.woff2') format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('~assets/fonts/Roboto-700-cyrillic30.woff2') format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('~assets/fonts/Roboto-700-greek-ext31.woff2') format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('~assets/fonts/Roboto-700-greek32.woff2') format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('~assets/fonts/Roboto-700-vietnamese33.woff2') format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('~assets/fonts/Roboto-700-latin-ext34.woff2') format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('~assets/fonts/Roboto-700-latin35.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
font-display: swap;
src: url('~assets/fonts/Roboto-900-cyrillic-ext36.woff2') format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
font-display: swap;
src: url('~assets/fonts/Roboto-900-cyrillic37.woff2') format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
font-display: swap;
src: url('~assets/fonts/Roboto-900-greek-ext38.woff2') format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
font-display: swap;
src: url('~assets/fonts/Roboto-900-greek39.woff2') format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
font-display: swap;
src: url('~assets/fonts/Roboto-900-vietnamese40.woff2') format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
font-display: swap;
src: url('~assets/fonts/Roboto-900-latin-ext41.woff2') format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
font-display: swap;
src: url('~assets/fonts/Roboto-900-latin42.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

View File

@@ -1,50 +0,0 @@
.layout-enter-active,
.layout-leave-active {
transition: opacity 0.2s;
}
.layout-enter,
.layout-leave-active {
opacity: 0;
}
.narrow-container {
max-width: 800px !important;
}
.md-container {
max-width: 950px !important;
}
.theme--dark.v-application {
background-color: var(--v-background-base, #1e1e1e) !important;
}
.theme--dark.v-navigation-drawer {
background-color: var(--v-background-base, #1e1e1e) !important;
}
.theme--dark.v-card {
background-color: #1e1e1e !important;
}
.left-border {
border-left: 5px solid var(--v-primary-base) !important;
}
.left-warning-border {
border-left: 5px solid var(--v-warning-base) !important;
}
.handle {
cursor: grab;
}
.hidden {
visibility: hidden !important;
}
.v-card__text,
.v-card__title {
word-break: normal !important;
}

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More