* added create dialogs to food and unit pages
* minor css tweaks
* properly reset create form
* added placeholder name attribute for type checking
* removed unnecessary value assignment
* type fixes
* corrected comment
* add autofocus and use ref<VForm> for form refs
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* added new sort icons
* added dynamic sort icons
* implemented local storage for sorting
and mobile card view
* fixed bug with local storage booleans
* added type hints
* bum vue use to use merge defaults
* use reactive localstorage
* add $vuetify type
* sort returns
* fix type error
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* fixed typo
* merged "all recipes" pagination into recipe card
created custom sort card for all recipes
refactored backend calls for all recipes to sort/paginate
* frontend lint fixes
* restored recipes reference
* replaced "this" with reference
* fix linting errors
* re-order context menu
* add todo
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* created query filter classes
* extended pagination to include query filtering
* added filtering tests
* type improvements
* move type help to dev depedency
* minor type and perf fixes
* breakup test cases
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (Danish)
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* New translations en-US.json (Greek)
* New translations en-US.json (Greek)
* New translations en-US.json (Dutch)
* New translations en-US.json (Czech)
* New translations en-US.json (Czech)
* New translations en-US.json (Czech)
rewrite get_all routes to use a pagination pattern to allow for better implementations of search, filter, and sorting on the frontend or by any client without fetching all the data. Additionally we added a CI check for running the Nuxt built to confirm that no TS errors were present. Finally, I had to remove the header support for the Shopping lists as the browser caching based off last_updated header was not allowing it to read recent updates due to how we're handling the updated_at property in the database with nested fields. This will have to be looked at in the future to reimplement. I'm unsure how many other routes have a similar issue.
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* fixed type error
* exposed created/updated timestamps to shopping list schema
* added custom route to mix in "last-modified" header when available in CRUD routes
* mixed in MealieCrudRoute to APIRouters
* added HEAD route for shopping lists/list-items
* replaced default serializer with FastAPI's
* added staticmethod decorators to avoid mypy error
* exposed created and updated timestamps to schema
* changed default sort from date_added to created_at
* explicitely sort recent recipes by created_at
* removed static method and replaced w/ type: ignore
* New translations en-US.json (Polish)
* New translations en-US.json (Polish)
* New translations en-US.json (Polish)
* New translations en-US.json (Polish)
* fix type errors on event bus
* webhooks fields required for new implementation
* db migration
* wip: webhook query + tests and stub function
* ignore type checker error
* type and method cleanup
* datetime and time utc validator
* update testing code for utc scheduled time
* fix file cmp function call
* update version_number
* add support for translating "time" objects when restoring backup
* bump recipe-scrapers
* use specific import syntax
* generate frontend types
* utilize names exports
* use utc times
* add task to scheduler
* implement new scheduler functionality
* stub for type annotation
* implement meal-plan data getter
* add experimental banner
* Fixed incorrect generic deleted notification text
* Added custom "event_source" header for json notifs
* Added internal reference data to event notifs
* Added event listeners to shopping list items
* Fixed type issues
* moved JSON event source k:v pairs to message body
* added hook for all supported custom endpoints
fixed bug that excluded non-custom notification types
* created event_source class to replace loosely-typed dict
* fixed silent error when dispatching a null task
* moved url updates to static function
* added unit tests for event_source url manipulation
* removed array from event bus (it's unsupported)
* grouped ingredients and instructions into sections
* added missing import
* divided ingredient sections and instruction sections into their own containers
* tweaked css to prevent sections from getting split between pages
* replaced horizontal rule with a text underline
* removed leftover CSS
* implement computer properties as reducers
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* Added API params to order by different properties
* fix for incorrect var name
* removed invalid default order_by
* implemented fallback for invalid user input
* increased float rounding precision for crf parser
* limited fractions to a max denominator of 32 to prevent weirdly specific values
* add test cases for 1/8 and 1/32
* add rounding to avoid more digits than necessary
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* fixed bug where ingredient titles were lost after parsing
* added fallback in case of strange behavior during parsing
* removed unnecessary linebreak
* Added custom scaling option
* Allow custom scaling with no yield set
* Made edit-scale translated
* fixed merge conflict
* Refactored scale editor to use menu
* replaced vslot with #
* linter issues
* fixed linter issues
* fixed one more linter issue
* format files + minor UI changes
* remove console.log
* move buttons into component and setup v-model
* drop servings text
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* add drag and drop support for recipe steps
* fix recipe assets dialog state
* add attr support for markdown editor
* add persistent hint for recipe text editor
* Delay server response whenever username is non existing
* utilize hasher to achieve constant timing
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* add 'use-abbreviation' db column
* type generation
* add view and edit elements
* check for use_abbreviation to display
* fix: alembic version check
* test: add use_abbreviation prop tests
* New translations en-US.json (French)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (German)
* Changes Settings to use new SMTP_AUTH_STRATEGY variable in place of SMTP_TLS with transition support
#1187
* Wires up default email client to use ssl or tls authentication if enabled in settings
* Updates the docs
* Update template file
* remove SMTP_TLS and use staticmethod for validate
* consolidate test cases with params
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
refactored signup flow for entire registration process. Utilized seed data option for optional seeding of Foods, Units, and Labels. Localized registration page.
* New translations en-US.json (Danish)
* New translations en-US.json (Danish)
* New translations en-US.json (Danish)
* New translations en-US.json (Danish)
* New translations en-US.json (Danish)
* New translations en-US.json (Danish)
Change edit_uri to be able to edit the nightly docs
remove demo_url since not needed
Changes to be committed:
modified: ios.md
modified: ../../../mkdocs.yml
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* New translations en-US.json (Italian)
* feat: import original keywords as tags
* remove cached env
* Update frontend api types
* fix: Issues with previous tag scraping implementation
* Update category handling in backend
* Update backend tests to include group_id
* Correct type check
* Update create-url interface
* Improve tag cleaner list support
* remove builtin name shadowing
* update type annotations
* test include tags scraper
* implement scaper context for optional data
* readd cache venv
* use continue instead of break
* remove test callback
Co-authored-by: Miroito <alban.vachette@gmail.com>
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Greek)
* New translations en-US.json (Greek)
* New translations en-US.json (Greek)
* New translations en-US.json (Swedish)
* New translations en-US.json (Danish)
* New translations en-US.json (Swedish)
* New translations en-US.json (Swedish)
* New translations en-US.json (Swedish)
* New translations en-US.json (Danish)
* New translations en-US.json (Danish)
* New translations en-US.json (Danish)
* New translations en-US.json (Hungarian)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (German)
* use locale to set language header
* rewrite i18n provider and drop dependency
* rename file
* rename CrudMixin to HttpRepo
* refactor: code-cleanup
* add crowdin source
* remove unused translations
* grab translations from dev branch
* add translation support for foods, units, and labels
* remove rich import
* add direction prop for icon position
* add support for require_all properties on cookbook
* update type annotations
* add and - or filter support
* update cookbook API
* generate types
* implement editor for additional options
* update version number
* feat: add api endpoints for volume check
* feat: add docker icon
* add size prop
* feat: add frontend UI for checking docker-volume
* update caddy to server validation file
* add more extensive documentation around setup req
* fix: wrong type on user id #1123
* spelling
* refactor: cleanup excessive function calls
* add utility type to hide Advanced items
* add default text
* fix#1115 and minor refactorings
* generate types
* hotfix: add validator to catch null vlaues
* migration: add public, tags, and tools
* generate frontend types
* add help icon
* start replacement for tool-tag-category selector
* add help icon utility
* use generator types
* add support for cookbook features
* add UI elements for cookbook features
* fix tests
* fix type error
* resolve file not found error and add constants
* add group stats and storage functionality
* generate new types
* add statistics and storage cap graphs
* fix: add loadFood query param #1103
* refactor to flex view
* fix disable button
* add backend env for restricting registration
* update state management
* add allow_signup to app info
* move allow_signup to backend only
* cleanup docker-compose
* potential darkmode fix
* fix missing variable
* add banner on login page
* use random bools for tests
* fix initial state bug
* fix state reset
* Added validators for users and recipes
provide a simple get api, allowing to test for existence of
- user by username
- recipe by slug
- group by name (not tested yet)
* updated formatting
* Use group_id+slug for recipes, use ValidationRespone
* Fixed Flake8 errors and warnings
* add missing field for TestUser init
* fix food seeder to use value instead of keys
* fix all recipe names being slugified
* add helper path utilities
* add fix script for database to rename foods
* add safe calling for fixes
* toggle hide recipe sections
* disable parser if food or units is defined
* make inputs clearable
* remove console.logs
* fix linter error
* fix linter errors
* test-case for #1011
* revert regressions for #1011
* update cache key on new image
* lint
* fix#1012
* typing
* random_recipe fixture
* remove delete button when no listeners are present
* spacing
* update copy to match settings value
* fix type issues for #999
* fix regression #995
* remove error from frontend and log error #996
* cleanup darkmode on login page
* keep primary color bg
* Set up alembic migration usage
* Fix import order, add isort as alembic hook
* Only run migrations if needed
* Include date as part of migration file name for better sorting
* Skip initial migrations if tables already exist
This eases the transition from a pre-alembic state
* Fix deprecation warning in alembic revision
* Add alembic test stubs
* update to GUIDs
* fix cookbook id relationships
* update webhook keys
* cleanup naming and attribute orders
* remove old database tables
* fix meal-plan images
* remove dashbaord and events api
* use recipe-id instead of id
* cleanup documentation assets
* cleanup docs for v1 beta-release
* add depends_on for docker-compose
* use docker volumes for examples
* move caddy to frontend container
* update naming
* refactor tests to use shared structure
* shorten names
* add tools test case
* refactor to support multi-tenant
* set group_id on creation
* initial refactor for multitenant tags/cats
* spelling
* additional test case for same valued resources
* fix recipe update tests
* apply indexes to foreign keys
* fix performance regressions
* handle unknown exception
* utility decorator for function debugging
* migrate recipe_id to UUID
* GUID for recipes
* remove unused import
* move image functions into package
* move utilities to packages dir
* update import
* linter
* image image and asset routes
* update assets and images to use UUIDs
* fix migration base
* image asset test coverage
* use ids for categories and tag crud functions
* refactor recipe organizer test suite to reduce duplication
* add uuid serlization utility
* organizer base router
* slug routes testing and fixes
* fix postgres error
* adopt UUIDs
* move tags, categories, and tools under "organizers" umbrella
* update composite label
* generate ts types
* fix import error
* update frontend types
* fix type errors
* fix postgres errors
* fix#978
* add null check for title validation
* add note in docs on multi-tenancy
* cleanup oversized buttons
* add get all by category function to reciep repos
* fix shopping-list can_merge logic
* use randomized data for testing
* add random getter to repository for meal-planner
* add stub route for random meals
* cleanup global namespace
* add rules database type
* fix type
* add plan rules schema
* test plan rules methods
* add mealplan rules controller
* add new repository
* update frontend types
* formatting
* fix regression
* update autogenerated types
* add api class for mealplan rules
* add tests and fix bugs
* fix data returns
* proof of concept rules editor
* add tag support
* remove old group categories
* add tag support
* implement random by rules api
* change snack to sides
* remove incorrect typing
* split repo for custom methods
* fix query and use and_ clause
* use repo function
* remove old test
* update changelog
* generate types
* use generated types
* ui updates
* init button link for common styles
* add links
* setup label views
* add delete confirmation
* reset when not saved
* link label to foods and auto set when adding to shopping list
* generate types
* use inheritence to manage exception handling
* fix schema generation and add test for open_api generation
* add header to api docs
* move list consilidation to service
* split list and list items controller
* shopping list/list item tests - PARTIAL
* enable recipe add/remove in shopping lists
* generate types
* linting
* init global utility components
* update types and add list item api
* fix import cycle and database error
* add container and border classes
* new recipe list component
* fix tests
* breakout item editor
* refactor item editor
* update bulk actions
* update input / color contrast
* type generation
* refactor controller dependencies
* include food/unit editor
* remove console.logs
* fix and update type generation
* fix incorrect type for column
* fix postgres error
* fix delete by variable
* auto remove refs
* fix typo
* Fix or comment several ts-ignores
* Fix typing related to BaseOverflowButton
* Remove unused functionality of useCookbooks, fix usage bug
* Fix more typing, add some comments
* Only allow ts-ignore if it has a comment
* fix group page
* setup group notification for backend
* update type generators
* script to auto-generate schema exports
* setup frontend CRUD interface
* remove old notifications UI
* drop old events api
* add test functionality
* update naming for fields
* add event dispatcher functionality
* bump to python 3.10
* bump python version
* purge old event code
* use-async apprise
* set mealie logo as image
* unify styles for buttons rows
* add links to banners
* Activate more linting rules from eslint and typescript
* Properly add VForm as type information
* Fix usage of native types
* Fix more linting issues
* Rename vuetify types file, add VTooltip
* Fix some more typing problems
* Use composition API for more components
* Convert RecipeRating
* Convert RecipeNutrition
* Convert more components to composition API
* Fix globals plugin for type checking
* Add missing icon types
* Fix vuetify types in Nuxt context
* Use composition API for RecipeActionMenu
* Convert error.vue to composition API
* Convert RecipeContextMenu to composition API
* Use more composition API and type checking in recipe/create
* Convert AppButtonUpload to composition API
* Fix some type checking in RecipeContextMenu
* Remove unused components BaseAutoForm and BaseColorPicker
* Convert RecipeCategoryTagDialog to composition API
* Convert RecipeCardSection to composition API
* Convert RecipeCategoryTagSelector to composition API
* Properly import vuetify type definitions
* Convert BaseButton to composition API
* Convert AutoForm to composition API
* Remove unused requests API file
* Remove static routes from recipe API
* Fix more type errors
* Convert AppHeader to composition API, fixing some search bar focus problems
* Convert RecipeDialogSearch to composition API
* Update API types from pydantic models, handle undefined values
* Improve more typing problems
* Add types to other plugins
* Properly type the CRUD API access
* Fix typing of static image routes
* Fix more typing stuff
* Fix some more typing problems
* Turn off more rules
The problem was that on smaller screens or when resizing, v-navigation-drawer would change its value on its own, but these changes were not propagated to AppSidebar.
I also added a few missing type definitions for SidebarLinks.
* add default assets for user profile
* add recipe avatar
* change user_id to UUID
* add profile image upload
* setup image cache keys
* cleanup tests and add image tests
* purge user data on delete
* new user repository tests
* add user_id validator for int -> UUID conversion
* delete depreciated route
* force set content type
* refactor tests to use temp directory
* validate parent exists before createing
* set user_id to correct type
* update instruction id
* reset primary key on migration
* feat: ✨ support for lockable recipes
* feat(backend): ✨ check user can update before updating recipe
* test(backend): ✅ add recipe lock tests
* feat(frontend): ✨ disabled lock action when not owner
* test(backend): ✅ test non-owner can't lock recipe
* hide quantity on zero value
* fix(backend): 🐛 temp/partial fix for recipes with same name. WIP
* simplify context menu
* move computed to comp-api
* feat: ✨ create share tokens for recipes for sharing recieps to non-users
* feat: ✨ shareable recipe links with og tags
* feat(backend): 🌐 make foods/ingredients translatable
* feat(backend): ✨ add remember me support for login - 14 days
* feat(frontend): 💄 add persistent darkmode for user sessions
* capture #859
* feat(frontend): 💄 add basic open-graph data for site links
* docs: 📝 general documentation + add FAQ page
* fix(frontend): 🐛 readd missing upload button to backups.
* feat(backend): ✨ add support for backup sizes to be displayed on frontend
* feat(backend): ✨ add backend for administrator CRUD of users
* add admin support for user
* refactor(frontend): ♻️ rewrite admin CRUD interface for admins
* fix build errors
Co-authored-by: hay-kot <hay-kot@pm.me>
* feat(frontend): ✨ add back support for assets
* feat(backend): ✨ add back support for assets
* feat(frontend): ✨ add support for recipe tools
* feat(backend): ✨ add support for recipe tools
* feat(frontend): ✨ add onHand support for recipe toosl
* feat(backend): ✨ add onHand support for backend
* refactor(frontend): ♻️ move items to recipe folder and break apart types
* feat(frontend): ✨ add support for recipe comments
* feat(backend): ✨ Add support for recipe comments
* fix(backend): 💥 disable comments import
* fix(frontend): 🐛 fix rendering issue with titles when moving steps
* add tools to changelog
* fix type errors
Co-authored-by: hay-kot <hay-kot@pm.me>
* cleanup console.logs
* default to panels open
* feat(frontend): ✨ add ingredient on enter
* feat(frontend): ✨ automatically trigger parser on navigation
* feat(frontend): ✨ prompt user before leaving when in editor
* add deep copy utility
* improve flow of parser
* add tooltip and match disable with disableAmount
* force admin users to have advanced access
Co-authored-by: hay-kot <hay-kot@pm.me>
* move api clients and rename
* organize recipes composables
* rewrite useRecipeContext
* refactor(frontend): ♻️ abstract common ingredient functionality.
* feat(frontend): ✨ add scale, and back to recipe button + hide ingredients if none
* update regex to mach 11. instead of just 1.
* minor UX improvements
Co-authored-by: Hayden K <hay-kot@pm.me>
* make entry for NLP model `setup-model`
* add comments
* feat(frontend): ✨ Rewrite context menu in TS and add 'add to mealplan' options
* add note to changelog
Co-authored-by: Hayden K <hay-kot@pm.me>
* feat(frontend): ✨ split paragraph by 1. 1) or 1: regex matches
* feat(frontend): ✨ Update frontend to support ingredient To step refs
* feat(backend): ✨ Update backend to support ingredient to step refs
* fix title editor
* move about info to site-settings
* update change-log
Co-authored-by: Hayden K <hay-kot@pm.me>
* fix(backend): 🐛 Fix favorite assignment on backend
* fix(frontend): 🐛 fix printer button on recipe page
* style(frontend): 🚸 add user feadback on copy of recipe link
* fix(frontend): 🐛 Fix enableLandscape incorrect bindings to remove duplicate values
* feat(frontend): ✨ add ingredient copy button for markdown list -[ ] format
* feat(frontend): ✨ add remove prefix button to bulk entry
* fix(frontend): 🐛 disable random button when no recipes are present
* fix(frontend): ✨ fix .zip download error
* fix(frontend): 🚸 close image dialog on upload/get
* fix(frontend): 🐛 fix assignment on creation for categories and tags
* feat(frontend): ✨ Open editor on creation / fix edit button on main screen
* fix(frontend): 🐛 fix false negative regex match for urls on creationg page
* feat(frontend): 🚸 provide better user feadback when recipe exists
* feat(frontend): ✨ lock bulk importer on submit
* remove zip from navigation
* fix(frontend): ✨ rerender recipes on delete
Co-authored-by: Hayden K <hay-kot@pm.me>
* fix(frontend): 🐛 fix section titles carrying over on deleted items
Added a UUID generator to generate unique id's and prevent list changes from causing proper virtual dom re-renders.
* lazy load json editor
* fix ingredient rendering error
* move text to input
* update settings styling
* improve mobile view
Co-authored-by: Hayden <hay-kot@pm.me>
* unify look and feel + button validators
* Fixes#741
* add github script to mealei-next
* feat(frontend): 💄 improve user-flow for creating ingredients and units in editor
Creating a unit/food in the recipe editor will not automatically assign that to the auto-complete element on the ingredient. It also no longer needs a dialog and will show at the bottom of the menu at all times.
* fix whitespace issue with slot
* add security check to properties
* fix event refresh on delete
* remove depreciated page
* improve API token flow
* hide recipe data if not advanced user
* misc adds
Co-authored-by: Hayden <hay-kot@pm.me>
* fix UI column width
* words
* update parser to support diff strats
* add new model url
* make button more visible
* fix nutrition error
* feat(backend): ✨ add 'brute' strategy for parsing ingredients
* satisfy linter
* update UI for creation page
* feat(backend): ✨ log 422 errors in detail when not in PRODUCTION
* add strategy selector
Co-authored-by: Hayden <hay-kot@pm.me>
* add universal toast plugin
* add server side locales
* integrate CRF++ into CI/CD Pipeline
* docs(docs): 📝 add recipe parser docs
* feat(backend): ✨ Continued work on ingredient parsers
* add new model dest
* feat(frontend): ✨ New ingredient parser page
* formatting
Co-authored-by: Hayden <hay-kot@pm.me>
* count responses
* perf(backend): ⚡ remove validation on recipe summary response
use the construct() method from pydantic to reduce get time as well as optimize the SQL query for recipes
* update UI to support new categories/tags
* fix(backend): 🐛 restrict recipes by group
Co-authored-by: Hayden <hay-kot@pm.me>
* chore(backend): 🎨 add isort path to vscode settings
* style(frontend): 💄 remove fab and add general create button
* feat(backend): 🚧 stub out new exporter service
* comment out stub tests
Co-authored-by: Hayden <hay-kot@pm.me>
* refactor(backend): ♻️ cleanup duplicate code in http services
* refactor(backend): ♻️ refactor database away from singleton design
removed the database single and instead injected the session into a new Database class that is created during each request life-cycle. Now sessions no longer need to be passed into each method on the database
All tests pass, but there are likely some hidden breaking changes that were not discovered.
* fix venv
* disable venv cache
* fix install script
* bump poetry version
* postgres fixes
* revert install
* fix db initialization for postgres
* add postgres to docker
* refactor(backend): ♻️ cleanup unused and duplicate code in http services
* refactor(backend): remove sessions from arguments
* refactor(backend): ♻️ convert units and ingredients to use http service class
* test(backend): ✅ add unit and food tests
* lint
* update tags
* re-enable cache
* fix missing fraction in db
* fix lint
Co-authored-by: hay-kot <hay-kot@pm.me>
* feat(backend): ✨ new meal-planner feature
* feat(frontend): ✨ new meal plan feature
* refactor(backend): ♻️ refactor base services classes and add mixins for crud
* feat(frontend): ✨ add UI/API for mealplanner
* feat(backend): ✨ add get_today and get_slice options for mealplanner
* test(backend): ✅ add and update group mealplanner tests
* fix(backend): 🐛 Fix recipe_id column type for PG
Co-authored-by: hay-kot <hay-kot@pm.me>
* refactor(frontend): ♻️ major rewrite/improvement of use-profile pages
* refactor(frontend): ♻️ split webhooks into their own page
Co-authored-by: hay-kot <hay-kot@pm.me>
* test-commit
* Remove PR Name Checker
* refactor(backend): ♻️ split unrelated routes into clearer router paths
Add an /app and /admin router base paths to split previously grouped public/admin data into different paths. Part of a longer migration to move 'admin' operations under the admin path.
* refactor(backend): ♻️ rename imports
* refactor(frontend): ♻️ refactor frontend API and Pages to refelect new API design
Co-authored-by: hay-kot <hay-kot@pm.me>
* refactor(backend): ♻️ Refactor base class to be abstract and create a router factory method
* feat(frontend): ✨ add group edit
* refactor(backend): ✨ add group edit support
Co-authored-by: hay-kot <hay-kot@pm.me>
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Danish)
* New translations en-US.json (Italian)
* New translations en-US.json (English, United Kingdom)
* New translations en-US.json (English, United Kingdom)
* New translations en-US.json (English, United Kingdom)
* New translations en-US.json (English, United Kingdom)
* Add support for en-GB
Allows for British date format (native in vue-i18n)
+ potential spelling adaptations
* Rename default English locale to American English
* add ingredient sections to UI
* update changelog
* move recipe favorite to action bar
* fix button position on meal-planner
Co-authored-by: hay-kot <hay-kot@pm.me>
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (Polish)
* New translations en-US.json (Polish)
* New translations en-US.json (Danish)
* New translations en-US.json (Danish)
* New translations en-US.json (German)
* New translations en-US.json (German)
* Localize recipe import popup
* Add Italian language
* Use named formatting
* Remove unused strings
* Use dedicated strings for the sidebar
This will allow for shorter texts, so the text is not truncated,
without impacting other uses
* Fix missing string
* Localize "loading recipes"
* Remove unmaintained languages
Remove support for Danish, Portuguese and Chinese Traditional,
since their current translation state is <20%
* Enhance security and safety around user update API
- Prevent a regular user from promoting themself to admin
- Prevent an admin from demoting themself
- Refactor token fixture to admin + regular user tokens
* Restrict user CRUD API to admins
* Secure admin API routes
* Refactor APIrouter into Admin/UserAPIRouter
* Secure theme routes
* Make 'all recipes' routes public
* Secure favorite routes
* Remove redundant checks
* Fix public routes mistakenly flagged user routes
* Make webhooks changeable only by admin
* Allow users to create categories and tags
* Address lint issues
* remove duplicate keys
* show context menu when not logged in
* remove console.log
* hide menu when printing
* add response to event
* add type definitions
* show context menu always
* add image name enums
* upload/download single recipe
* cleanup menu views+ localization
Co-authored-by: hay-kot <hay-kot@pm.me>
* dump deps
* add job for new groups on interval
* change sort icon
* fix cart icon
* bump version
* changelog
* early return if no comments
* remove comment
Co-authored-by: hay-kot <hay-kot@pm.me>
* New translations en-US.json (French)
* New translations en-US.json (Dutch)
* New translations en-US.json (Swedish)
* New translations en-US.json (Spanish)
* Add Web Share api to ContextMenu.vue. Copy to clipboard is the fallback
* Add Web Share api to ContextMenu.vue. Copy to clipboard is the fallback
* Add translation
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (Dutch)
* New translations en-US.json (French)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (Swedish)
* New translations en-US.json (German)
* New translations en-US.json (Spanish)
* New translations en-US.json (Spanish)
* New translations en-US.json (Catalan)
* Fix asset link
* remove unused var
* fix no meal-plan returned
* cleanup redundant code
* Fix dates off in UI
* quick set dark/light mode
* user image fixes
Co-authored-by: hay-kot <hay-kot@pm.me>
* fix favorite color issue
* db and models for comments
* rename files
* initial UI for comments
* fix format
* import / export
* fixes#428
* format
Co-authored-by: hay-kot <hay-kot@pm.me>
* lazy load cards
* shopping list recipe search bug
* admin layout fluid
* site loader
* username support
* mobile tabs
* set username at signup
* update user tests
* patch bug on shopping list
* public mealplan links
* support link (I'm a monster)
* icon only on mobile
* padding
Co-authored-by: hay-kot <hay-kot@pm.me>
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (Spanish)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* additional server events
* sort 'recent recipes' by updated
* remove duplicate code
* fixes#396
* set color
* consolidate tag/category pages
* set colors
* list unorganized recipes
* cleanup old code
* remove flash message, switch to global snackbar
* cancel to close
* cleanup
Co-authored-by: hay-kot <hay-kot@pm.me>
* Translate sidebar
* Do not force 12-hour format worldwide
Vue-i18n knows which locales prefer 12-hour format over 24-hour format
* Translate new tiles in profile page
* Translate new tiles in dashboard
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (French)
* New translations en-US.json (German)
* format with black
* black format
* flake8
* remove bar exceptions
* remove test for depreciated route
* recipe settings editr
* add sqlite
Co-authored-by: hay-kot <hay-kot@pm.me>
* New translations en-US.json (German)
* New translations en-US.json (French)
* New translations en-US.json (Dutch)
* New translations en-US.json (Polish)
* New translations en-US.json (Dutch)
* Translate missing items on About page
* Localize import summary dialog
* Make site menu translation reactive
* Localize import options
* Include semi colon in string
* Move API texts to frontend + better status codes
* Provide feedback to user when no meal is planned
* Fix API tests after latest rework
* Add warning for API changes in changelog
* Refactor API texts handling
* Refactor API texts handling #2
* Better API feedback
* Rearrange strings hierarchy
* Add messages upon recipe updated
* Fix 'recipe effected' typo
* Remove snackbar usage in backend
* Translate toolbox
* Provide feedback for tags CRUD
* Fix messed up merge
* Translate sign-up form
* Better feedback for sign-up CRUD
* Refactor log-in API texts handling
* No error message when user is not authenticated
* Remove unimportant console log
* formatting
* snake case all recipes entries
* set foreign key to int
* run scheduler at startup and not import
* set SQLite file path before imports
Co-authored-by: hay-kot <hay-kot@pm.me>
* New translations en-US.json (Polish)
* New translations en-US.json (Polish)
* New translations en-US.json (Polish)
* New translations en-US.json (German)
* update tag route
* search.and
* offset for mobile
* relative imports
* get settings
* new page
* category/tag CRUD
* bulk assign frontend
* Bulk assign
* debounce search
* remove dev data
* recipe store refactor
* fix mobile view
* fix failing tests
* commit test data
Co-authored-by: hay-kot <hay-kot@pm.me>
* Dummy Commit
* consolidate sidebar and app bar
* fix image error
* consolidate sidebar
* new icon for user menu
* fixes#329
* fix double click on mobile
* swap to computed properties
* fix open/close bug
* rewrite search for mobile
* fix ingredient checkbox
* cleanup console.logs
* set default lang + bump version
* draft changelog
* reword
* update env variables
Co-authored-by: hay-kot <hay-kot@pm.me>
* Translate about page
* Sort messages by keys
* Remove unused strings
* Localize date in meal planner
* Fix quick week not starting on Monday for UTC+x
* New translations en-US.json (French)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (French)
* New translations en-US.json (German)
* New translations en-US.json (German)
* Localize more dates and texts
* Adapt source language to 4-letter code for VS code
* Make page titles more reactive to language change
* Translate missing text + fix missed refactoring
* Fix missed page titles refactoring
* Translate nutrition view
* Translate Image upload vue
* Fix default text being defined twice in upload btn
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* Fix language in date picker
Vuetify allows custom-named locales,
but the date-picker really only works with BCP 47 language tag
* Save lang at proper time + Update Vuetify lang on the fly
* Make first day of the week customizable
New settings section 'Locale settings'
New setting 'First day of week'
New date picker reusable UI that uses the new setting
Meal planner now uses this new date picker
* Clean up unused code in settings page
* Fix First day of week mapping
* Replace missing v-date-picker with custom card DatePicker
* Mention first day of the week feature in change log
* Fix portuguese localization files
* Use 4-letter code for locales ID
* Update Crowdin configuration file
* Make vuetify locales match with new VueI18n standard
* Fix old locale ID default setting
* Hide project hierarchy from Crowdin
* add dateTimeFormats to Crowdin
* rename 'ENV' to 'PRODUCTION' and default to true
* set env PRODUCTION
* refactor file download process
* add last_recipe.json and log downloads
* changelog + version bump
* set env on workflows
* bump version
Co-authored-by: hay-kot <hay-kot@pm.me>
* Fix docker dev db persistence
* Make run.sh the only startup script for prod + dev
Credits to @hay-kot for run.sh script logic
* Restore dev backend initialization in non-docker setup
* Make run.sh POSIX-friendly
* Allow dev backend to auto-reload in Docker
* fix dialog placement
* markdown support in ingredients
* fix line render issue
* fix tag rendering bug
* change ingredients to text area
* no slug error
* add tag pages
* remove console.logs
Co-authored-by: hay-kot <hay-kot@pm.me>
description:"submit a bug report for the current release"
body:
- type:checkboxes
id:checks
attributes:
label:First Check
description:Please confirm and check all the following options.
options:
- label:This is not a feature request
required:true
- label:I added a very descriptive title to this issue.
required:true
- label:I used the GitHub search to find a similar issue and didn't find it.
required:true
- label:I searched the Mealie documentation, with the integrated search.
required:true
- label:I already read the docs and didn't find an answer.
required:true
- label:I have checked for existing issues that have been resolved in v1-beta
required:true
- type:textarea
id:description
attributes:
label:What is the issue you are experiencing?
placeholder:A clear and concise description of what the bug is.
validations:
required:true
- type:dropdown
id:os
attributes:
label:Deployment
description:What Deployment system are you using?
multiple:true
options:
- Docker (Linux)
- Docker (Windows)
- Docker (Synology)
- Unraid
- Other
validations:
required:true
- type:textarea
id:os-details
attributes:
label:Deployment Details
description:You can add more details about your operating system here, in particular if you chose "Other". If you are experiencing issues with deployment, please provide your docker-compose or docker commands
<!-- Add any other context about the problem here. If applicable, please include why you think the bug is occurring and/or troubleshooting you have already performed. -->
description:Please confirm and check all the following options.
options:
- label:This is not a feature request
required:true
- label:I added a very descriptive title to this issue.
required:true
- label:I used the GitHub search to find a similar issue and didn't find it.
required:true
- label:I searched the Mealie documentation, with the integrated search.
required:true
- label:I already read the docs and didn't find an answer.
required:true
- type:textarea
id:description
attributes:
label:What is the issue you are experiencing?
placeholder:A clear and concise description of what the bug is.
validations:
required:true
- type:dropdown
id:os
attributes:
label:Deployment
description:What Deployment system are you using?
multiple:true
options:
- Docker (Linux)
- Docker (Windows)
- Docker (Synology)
- Unraid
- Other
validations:
required:true
- type:textarea
id:os-details
attributes:
label:Deployment Details
description:You can add more details about your operating system here, in particular if you chose "Other". If you are experiencing issues with deployment, please provide your docker-compose or docker commands
description:"CONTRIBUTORS ONLY: Submit a Task that needs to be completed"
title:"[v1.0.0b] [Task] - TASK DESCRIPTION"
labels:
- task
- v1
body:
- type:markdown
attributes:
value:|
Thanks for your interest in Mealie! 🚀
This is a place for Mealie contributors to find tasks that need to get done around the repository. Tasks are different than issues as they are generally related to providing a new feature or improve an existing feature. They are _generally_ not related to an issue.
**DO NOT** create a task unless
- You are a contributors who has prior approval via discord/discussions
- You have otherwise been given approval to post the tasks
Otherwise, your post will be closed/deleted.
**Interested in Taking This?**
If you're interested in completing this tasks and it hasn't already been taken, comment below and to let others know you're working on it. As you work through the task, I ask that you submit a draft pull request as soon as possible, and tag this issue so we can all collaborate as best as possible.
- type:textarea
id:problem
attributes:
label:What is the problem this task addresses?
placeholder:A clear and concise description of what the problem this task will address.
validations:
required:true
- type:textarea
id:solution
attributes:
label:Proposed/Possible Solution(s)?
placeholder:Provide as much context around the idea as possible with potential files and roadblocks that may come up
args:'🚀 Version {{ EVENT_PAYLOAD.release.tag_name }} of Mealie has been released. See the release notes https://github.com/hay-kot/mealie/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}'
[![Product Name Screen Shot][product-screenshot]](https://example.com)
[![Product Name Screen Shot][product-screenshot]](https://docs.mealie.io)
# About The Project
Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and Mealie will automatically import the relevant data or add a family recipe with the UI editor. Mealie also provides an API for interactions from 3rd party applications.
Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and Mealie will automatically import the relevant data or add a family recipe with the UI editor. Mealie also provides an API for interactions from 3rd party applications.
[Remember to join the Discord](https://discord.gg/R6QDyJgbD2)!
## Key Features
- 🔍 Fuzzy search
- 🏷️ Tag recipes with categories or tags to flexible sorting
- 🕸 Import recipes from around the web by URL
- 📱 Beautiful Mobile Views
- 📆 Create Meal Plans
- 🛒 Generate shopping lists
- 🐳 Easy setup with Docker
- 🎨 Customize your interface with color themes layouts
- 💾 Export all your data in any format with Jinja2 Templates, with easy data restoration from the user interface.
- 🌍 localized in many languages
-➕ Plus tons more!
- Flexible API
- Custom key/value pairs for recipes
- Webhook support
- Interactive API Documentation thanks to [FastAPI](https://fastapi.tiangolo.com/) and [Swagger](https://petstore.swagger.io/)
- Raw JSON Recipe Editor
- Migration from other platforms
- Chowdown
- Nextcloud Cookbook
- Random meal plan generation
## FAQ
### 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 of Meal Plan data to remind you to defrost the chicken, marinade 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.
### 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 provided automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in controls 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.
-[Remember to join the Discord](https://discord.gg/QuStdQGSGK)!
- [Documentation](https://nightly.mealie.io)
<!-- CONTRIBUTING -->
## Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. Especially test. Literally any tests. See the [Contributors Guide](https://hay-kot.github.io/mealie/contributors/developers-guide/code-contributions/) for help getting started.
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. If you're going to be working on the code-base you'll want to use the nightly documentation to ensure you get the latest information.
If you are not a coder, you can still contribute financially. financial contributions help me prioritize working on this project over others and helps me know that there is a real demand for project development.
- See the [Contributors Guide](https://nightly.mealie.io/contributors/developers-guide/code-contributions/) for help getting started.
- We use [VSCode Dev Containers](https://code.visualstudio.com/docs/remote/containers) to make it easy for contributors to get started!
If you are not a coder, you can still contribute financially. financial contributions help me prioritize working on this project over others and helps me know that there is a real demand for project development.
<a href="https://www.buymeacoffee.com/haykot" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-green.png" alt="Buy Me A Coffee" style="height: 30px !important;width: 107px !important;" ></a>
@@ -100,9 +62,16 @@ If you are not a coder, you can still contribute financially. financial contribu
Distributed under the MIT License. See `LICENSE` for more information.
Huge thanks to all the sponsors of this project on [Github Sponsors](https://github.com/sponsors/hay-kot) and Buy Me a Coffee. Without you this project would surely not be possible.
Thanks to Linode for providing Hosting for the Demo, Beta, and Documentation sites! Another big thanks to JetBrains for providing their IDEs for development.
Since this software is still considered beta/WIP support is always only given for the latest version. Security patches are only available for the latest version and not back-ported to older versions.
## Reporting a Vulnerability
For general security vulnerabilities you're welcome to open a GitHub issues or contribute a fix. If you feel the vulnerability should not be disclosed you can open a generic issue on GitHub and email to the details to [ob92oy0sl@mozmail.com](mailto:ob92oy0sl@mozmail.com) which is monitored by the maintainer.
Currently Mealie doesn't support creating a long-live token. You can however get a token from the API. This example was pulled from the automatic API documentation provided by Mealie.
On your local installation you can access interactive API documentation that provides `curl` examples and expected results. This allows you to easily test and interact with your API to identify places to include your own functionality. You can visit the documentation at `http://mealie.yourdomain.com/docs or see the example at the [Demo Site](https://mealie-demo.hay-kot.dev/docs)
### Recipe Extras
Recipes extras are a key feature of the Mealie API. They allow you to create custom json key/value pairs within a recipe to reference from 3rd part applications. You can use these keys to contain information to trigger automation or custom messages to relay to your desired device.
For example you could add `{"message": "Remember to thaw the chicken"}` to a recipe and use the webhooks built into mealie to send that message payload to a destination to be processed.
User groups, or "family" groups are a collection of users that are associated together. Users belonging to groups will have access to their associated mealplans and associated pages. This is currently the only feature of groups.
<pathd="M 63.22 68.4 C 63.82 68.4 64.58 67.93 64.58 67.14 C 64.58 66.64 64.03 65.99 63.22 65.99 C 62.34 65.99 61.86 66.7 61.86 67.14 C 61.86 67.83 62.49 68.4 63.22 68.4 Z M 66.39 67.22 C 66.39 68.69 64.91 70 63.27 70 C 61.44 70 60.07 68.65 60.07 67.25 L 60.07 50.06 C 58.43 49.33 56.45 47.65 56.45 44.65 C 56.55 42.25 58.13 40.43 60.07 39.51 L 60.07 44.39 L 63.22 45.99 L 66.39 44.39 L 66.39 39.5 C 68.29 40.34 70 42.32 70 44.78 C 69.95 47.1 68.53 49.03 66.39 50.06 Z M 49.19 69.99 C 48.73 69.99 48.32 69.65 48.32 69.19 L 48.32 57.17 C 48.32 56.81 48.7 56.39 49.17 56.39 L 50.12 56.39 L 50.13 45.21 L 49.77 42.55 L 49.77 38.79 L 52.29 38.79 L 52.3 42.55 L 51.94 45.21 L 51.94 56.39 L 52.85 56.39 C 53.37 56.39 53.74 56.68 53.74 57.21 L 53.74 69.22 C 53.74 69.68 53.33 69.99 52.88 69.99 Z M 27.78 36.63 C 20.5 36.63 14 31.25 14 22.98 C 14 16.57 19.5 10 27.52 10 C 35.36 10 41.1 16.36 41.1 23.29 C 41.1 31.31 34.33 36.63 27.78 36.63 Z M 0 63.51 C 0.63 57.61 1.47 49.54 3.07 45.46 C 3.81 43.61 4.88 42.28 6.61 41.17 C 7.73 40.43 11.72 38.48 12.45 38.16 C 13.73 37.57 15.05 37.26 16.18 38.16 C 22.94 43.46 32.3 43.3 39.15 38.18 C 39.94 37.46 41.21 37.65 42.04 37.94 C 42.97 38.26 45.37 39.46 46.96 40.29 L 46.96 42.69 L 47.32 45.36 L 47.32 54.39 C 46.31 54.92 45.52 55.93 45.52 57.17 L 45.51 63.51 Z"fill="#e58325"stroke="#d79b00"stroke-miterlimit="10"pointer-events="all"/>
Mealie admins are super users that have access to all user data (excluding passwords). Perform administrative tasks like adding users, resetting user passwords, backing up the database, migrating data, and managing site settings. Administrators can also access restricted recipes that are marked hidden or uneditable by the user.
A single user created by an Admin that has basic privlages to edit their profile, create and edit recipes they own. Edit recipes that are not hidden and are marked editable.
The basic relationship and ownership is diagramed below. In short users are owners of recipes and groups are the owners of meal-plans. By default all users will be added to the "default" group. If a recipe is added through a migration or through a backup where no user exists ownership will be set to the default Admin.
<pathd="M 39 611 L 39 690 Q 39 700 49 700 L 130.76 700"fill="none"stroke="#e58325"stroke-width="2"stroke-miterlimit="10"pointer-events="none"/>
<pathd="M 136.76 700 L 128.76 704 L 130.76 700 L 128.76 696 Z"fill="#e58325"stroke="#e58325"stroke-width="2"stroke-miterlimit="10"pointer-events="none"/>
<pathd="M 174 588 L 234 588 Q 244 588 244 578 L 244 550 Q 244 540 254 540 L 391.76 540"fill="none"stroke="#e58325"stroke-width="2"stroke-miterlimit="10"pointer-events="none"/>
<pathd="M 397.76 540 L 389.76 544 L 391.76 540 L 389.76 536 Z"fill="#e58325"stroke="#e58325"stroke-width="2"stroke-miterlimit="10"pointer-events="none"/>
<pathd="M 419 591 L 419 690 Q 419 700 429 700 L 480 700 Q 490 700 490.88 700 L 491.76 700"fill="none"stroke="#e58325"stroke-width="2"stroke-miterlimit="10"pointer-events="none"/>
<pathd="M 497.76 700 L 489.76 704 L 491.76 700 L 489.76 696 Z"fill="#e58325"stroke="#e58325"stroke-width="2"stroke-miterlimit="10"pointer-events="none"/>
Database version has been bumped from v0.4.x -> v0.5.0. You will need to export and import your data. Moving forward, we will be using database migrations (BETA) to do this automatically. Note that you still must backup your data. If you don't, it's entirely possible something may go wrong and you could lose your data on upgrade.
#### Image Directory
the /data/img directory has been depreciated. All images are now stored in the /recipes/{slug}/image directory. Images should be migrated automatically, but you may experience issues related to this change.
#### API Usage
If you have been using the API directly, many of the routes and status codes have changed. You may experience issues with directly consuming the API.
#### Arm/v7 Support
Mealie will no longer build in CI/CD due to a issue with the rust compiler on 32 bit devices. You can reference [this issue on the matrix-org/synapse](https://github.com/matrix-org/synapse/issues/9403) Github page that are facing a similar issue. You may still be able to build the docker image you-self.
!!! warning "Potential Data Loss"
With this release comes a major rework of how files are stored on disk and where things belong. Migration of files should be done automatically. We have tested extensively with many different backups and user bases and have found that no one experienced data-loss. HOWEVER, with all the major changes that have occurred, it is vital that to prevent any data-loss you must create a backup and store that backup outside of your mealie instance. If you do not do this, you may lose your data.
## Bug Fixes
- Fixed #25 - Allow changing rating without going into edit
- Fixed #475 - trim whitespace on login
- Fixes #435 - Better Email Regex
- Fixed #428 - Meal Planner now works on iOS devices
- Fixed #419 - Typos
- Fixed #418 - You can now "export" shopping lists
- Fixed #356 - Shopping List items are now grouped
- Fixed #329 - Fixed profile image not loading
- Fixed #461 - Proper JSON serialization on webhooks
- Fixed #332 - Language settings are saved for one browser
- Fixes #281 - Slow Handling of Large Sets of Recipes
- Significant improvement in supported sites with the new [Recipe Scraper Library](https://github.com/hhursev/recipe-scrapers)
- UI Debugging now available at `/recipes/debugger`
- Better error messages on failure
- ⚠️ last_recipe.json is now depreciated
- Beta Support for Postgres! 🎉 See the getting started page for details
- Recipe Features
- New button bar for editors with improved accessibility and performance
- Step Sections now supported
- Recipe Assets
- Add Asset image to recipe step
- Additional View Settings.
- Better print support
- New Toolbox Page!
- Bulk assign categories and tags by keyword search
- Title case all Categories or Tags with 1 click
- Create/Rename/Delete Operations for Tags/Categories
- Remove Unused Categories or Tags with 1 click
- Recipe Cards now have a menu button for quick actions!
- Edit
- Delete
- Integrated Share with supported OS/Browsers
- Print
- New Profile Dashboard!
- Edit Your Profile
- Create/Edit Themes
- View other users in your Group
- See what's for dinner
- Manage Long Live API Tokens (New)
- New Admin Dashboard! 🎉
- Now you can get some insight on your application with application statics and events.
- See uncategorized/untagged recipes and organize them!
- Backup/Restore right from your dashboard
- See server side events. Now you can know who deleted your favorite recipe!
- New Event Notifications through the Apprise Library
- Get notified when specific server side events occur
### Meal Planner
- Multiple Recipes per day
- Supports meals without recipes (Enter title and description)
- Generate share-link from created meal-planners
- Shopping lists can be directly generated from the meal plan
### General
- User can now favorite recipes
- New 'Dark' Color Theme Packaged with Mealie
- Updated Recipe Card Sections Toolbar
- New Sort Options (They work this time!)
- Alphabetical
- Rating
- Created Date
- Updated Date
- Shuffle (Random Sort)
- New 'Random' Recipe button on recipe sections. Random recipes are selected from the filtered results below. For example, on the "Cakes" category page, you will only get recipes in the "Cakes" category.
- Rating can be updated without entering the editor - Closes #25
- Updated recipe editor styles and moved notes to below the steps.
- Redesigned search bar
- 'Dinner this week' shows a warning when no meal is planned yet
- 'Dinner today' shows a warning when no meal is planned yet
- More localization
- Start date for Week is now selectable
- Languages are now managed through Crowdin
- Application Bar was Rewritten
- Sidebar can now be toggled everywhere.
- New and improved mobile friendly bottom bar
- Improved styling for search bar in desktop
- Improved search layout on mobile
- Profile image now shown on all sidebars
- Switched from Flash Messages to Snackbar (Removed dependency)
### Performance
- Images are now served up by the Caddy increase performance and offloading some loads from the API server
- Requesting all recipes from the server has been rewritten to refresh less often and manage client side data better.
- All images are now converted to .webp for better compression
### Behind the Scenes
- The database layer has been added for future recipe scaling.
- Black and Flake8 now run as CI/CD checks
- New debian based docker image
- Unified Sidebar Components
- Refactor UI components to fit Vue best practices (WIP)
- The API returns more consistent status codes
- The API returns error code instead of error text when appropriate
- ⚠️ May cause side-effects if you were directly consuming the API
- Fixed #617 - Section behavior when adding a step
- Fixed #615 - Recipe Settings are not available when creating new recipe
- Fixed #625 - API of today's image returns strange characters
- Fixed [#590](https://github.com/hay-kot/mealie/issues/590) - Duplicate Events when using Gunicorn Workers
## Features and Improvements
### General
- Recipe Instructions now collapse when checked
- Default recipe settings can be set through ENV variables
- Recipe Ingredient lists can now container ingredient sections.
- You can now download and upload individual recipes
### Localization
Huge thanks to [@sephrat](https://github.com/sephrat) for all his work on the project. He's very consistent in his contributions to the project and nearly every release has had some of his code in it! Here's some highlights from this release
- [#1140](https://github.com/hay-kot/mealie/issues/1140) - Error in processing the quantity of ingredients #1140 - UI Now prevents entering not-allowed characters in quantity field
- UI now allows no value to be set in addition to a zero (0) value.
- [#1237](https://github.com/hay-kot/mealie/issues/1237) - UI: Saving a 0 quantity ingredient displays 0 until the page is refreshed #1237 - UI Now properly reacts to changes in the quantity field.
- Consolidated Frontend Types thanks to [@PFischbeck](https://github.com/Fischbeck)
- Added support for SSL/No Auth Email [@nkringle](https://github.com/nkringle)
- [Implement several notifications for server actions ](https://github.com/hay-kot/mealie/pull/1234)[@miroito](https://github.com/Miroito)
- Fix display issue for shared recipe rendering on server [@PFischbeck](https://github.com/Fischbeck)
## v1.0.0b - 2022-05-09
- Change MIT license to AGPLv3
## v1.0.0b - 2022-05-08
- Rewrote the registration flow for new users.
- Added support for seed data at anytime through the user interface.
- Improved security for sanitizing HTML inputs for user input.
- Added support for importing keywords as tags during scraping - [@miroito](https://github.com/Miroito)
- Changed default recipe settings to "disable_amount=True" for new groups.
- Add support for merging food, and units.
- Allow tags, category, and tool creation - [@miroito](https://github.com/Miroito)
- Added additional and more comprehensive filter options for cookbooks
- Fixed bookmarklets error
## v1.0.0b - 2022-03-29
- Mealie now stores the original text from parsed ingredients, with the ability to peak at the original text from a recipe. [@miroito](https://github.com/Miroito)
- Added some management / utility functions for administrators to manage data and cleanup artifacts from the file system.
- Fix clear url action in recipe creation [#1101](https://github.com/hay-kot/mealie/pull/1101) [@miroito](https://github.com/Miroito)
- Add group statistics calculations and data storage measurements
- No hard limits are currently imposed on groups - though this may be implemented in the future.
## v1.0.0b - 2022-03-25
- Mealie now packages the last git commit as the build ID
- Admin section now has a "Maintenance" page where you can check some health metrics like data directory size, logs file size, and if there are some non compliant directories or images. You can also perform clean-up operations to resolve some of these issues.
- Dropped 2 dependencies and moved to using our own base model within the project
- Removed lots of dead backup code
- Recipe names will now be auto-incremented when a conflict is found. So if you're adding a recipe named "Tomato Soup" and that recipe name already exists in your database one will be created with the name "Tomato Soup (1)". Currently this is done in a loop until a suitable name is found, however it will error out after 10 attempts so it's best to find a more descriptive name for your recipe.
- Fixed broken PWA where it wouldn't render any content
- Added database connection retry loop to ensure that the database is available prior to starting
- Reorganized group routes to be more consistent with the rest of the application
## v1.0.0b Beta Release!
!!! error "Breaking Changes"
As you may have guessed, this release comes with some breaking changes. If you are/were consuming the API you will need to validate all endpoints as nearly all of them have changed.
To import your data into Mealie v1 from the most recent previous release, you'll need to export and import your data using the built in method. **Note that only your recipes will be usable in the migration**.
### ✨ What's New (What isn't?!?!)
#### 🥳 General
- Mealie will by default only be accessible to users. Future plans are to create spaces for non-users to access a specific group.
- Mealie has gone through a big redesign and has tried to standardize it's look a feel a bit more across the board.
- User/Group settings are now completely separated from the Administration page.
- All settings and configurations pages now have some sort of self-documenting help text. Additional text or descriptions are welcome from PRs
- New experimental banner for the site to give users a sense of what features are still "in development" and provide a link to a github issue that provides additional context.
- Groups now offer full multi-tenant support so you can all groups have their own set of data.
##### ⚙️ Site Settings Page
- Site Settings has been completely revamped. All site-wide settings at defined on the server as ENV variables. The site settings page now only shows you the non-secret values for reference. It also has some helpers to let you know if something isn't configured correctly.
- Server Side Bare URL will let you know if the BASE_URL env variable has been set
- Secure Site let's you know if you're serving via HTTPS or accessing by localhost. accessing without a secure site will render some of the features unusable.
- Email Configuration Status will let you know if all the email settings have been provided and offer a way to send test emails.
#### 👨👩👧👦 Users and Groups
- All members of a group can generate invitation tokens for other users to join their group
- Users now a have "Advanced" setting to enable/disable features like Webhooks and API tokens. This will also apply to future features that are deemed as advanced.
- "Pages" have been dropped in favor of Cookbooks which are now group specific so each group can have it's own set of cookbooks
- Default recipe settings can now be set by the group instead of environmental variables.
- Password reset via email
- Invitation to group by email
- Manage group member permissions
#### 📦 Data Migrations
- Migrations have been moved from the Admin Page to a Group Migration page. Migrations from applications (or previous versions of Mealie) can now be imported into Mealie via the Group Migration pages where all recipes will be imported into the group.
- **Supported Migrations**
- Mealie Pre v1.0.0
- Nextcloud Recipes
- Chowdown
#### 🛒 Shopping Lists
- Shopping Lists has been completely revamped to be more flexible and user friendly.
- Add recipe ingredients to a shopping list
- Manually add item/ingredient to shopping list
- Copy as markdown or plain text
- Sort by food/item Labels
- Checked items are now hidden
- Uncheck all Items
- Delete all checked items
#### 📢 Apprise Integration
- Server based Apprise notifications have been deprecated. An effort has been made to improve logging overall in the application and make it easier to monitor/debug through the logs.
- The Apprise integration has been updated to the latest version and is now used asynchronously.
- Notifiers now support a wider variety of events.
- Notifiers can now be managed by-group instead of by the server.
#### 🗓 Meal Plans
- Meal plans have been completely redesigned to use a calendar approach so you'll be able to see what meals you have planned in a more traditional view
- Drag and Drop meals between days
- Add Recipes or Notes to a specific day
- New context menu action for recipes to add a recipe to a specific day on the meal-plan
- New rule based meal plan generator/selector. You can now create rules to restrict the addition of recipes for specific days or meal types (breakfast, lunch, dinner, side). You can also create rules that match against "all" days or "all" meal types to create global rules based around tags and categories. This gives you the most flexibility in creating meal plans.
#### 🥙 Recipes
##### 🔍 Search
- Search now includes the ability to fuzzy search ingredients
- Search now includes an additional filter for "Foods" which will filter (Include/Exclude) matches based on your selection.
##### 🍴 Recipe General
- Recipe Pages now implement a screen lock on supported devices to keep the screen from going to sleep.
- Recipes are now only viewable by group members
- Recipes can be shared with share links
- Shared recipes can now render previews for the recipe on sites like Twitter, Facebook, and Discord.
- Recipes now have a `tools` attribute that contains a list of required tools/equipment for the recipe. Tools can be set with a state to determine if you have that tool or not. If it's marked as on hand it will show checked by default.
- Recipe Extras now only show when advanced mode is toggled on
- You can now import multiple URLs at a time pre-tagged using the bulk importer. This task runs in the background so no need to wait for it to finish.
- Foods/Units for Ingredients are now supported (toggle inside your recipe settings)
- Common Food and Units come pre-packaged with Mealie
- Landscape and Portrait views are now available
- Users with the advanced flag turned on will now be able to manage recipe data in bulk and perform the following actions:
- Set Categories
- Set Tags
- Delete Recipes
- Export Recipes
- Recipes now have a `/cook` page for a simple view of the recipe where you can click through each step of a recipe and it's associated ingredients.
- The Bulk Importer has received many additional upgrades.
- Trim Whitespace: automatically removes leading and trailing whitespace
- Trim Prefix: Removes the first character of each line. Useful for when you paste in a list of ingredients or instructions that have 1. or 2. in front of them.
- Split By Numbered Line: Attempts to split a paragraph into multiple lines based on the patterns matching '1.', '1:' or '1)'.
##### 🍞 Recipe Ingredients
- Recipe ingredients can now be scaled when the food/unit is defined
- Recipe ingredients can now be copied as markdown lists
- example `- [ ] 1 cup of flour`
- You can now use Natural Language Processing (NLP) to process ingredients and attempt to parse them into amounts, units, and foods. There is an additional "Brute Force" processor that can be used as pattern matching parser to try and determine ingredients. **Note** if you are processing a Non-English language you will have terrible results with the NLP and will likely need to use the Bruce Force processor.
##### 📜 Recipe Instructions
- Can now be merged with the above step automatically through the action menu
- Recipe Ingredients can be linked directly to recipe instructions for improved display
- There is an option in the linking dialog to automatically link ingredients. This works by using a key-word matching algorithm to find the ingredients. It's not perfect so you'll need to verify the links after use, additionally you will find that it doesn't work for non-english languages.
- Recipe Instructions now have a preview tab to show the rendered markdown before saving.
#### ⚠️ Other things to know...
- Themes have been deprecated for specific users. You can still set specific themes for your site through ENV variables. This approach should yield much better results for performance and some weirdness users have experienced.
- If you've experienced slowness in the past, you may notice a significant improvement in the "All Recipes" and "Search" pages, or wherever large payloads of recipes are being displayed. This is due to not validating responses from the database, as such if you are consuming these API's you may get extra values that are unexpected.
#### 👨💻 Backend/Development Goodies
- Codebase is significantly more organized both Frontend and Backend
- We've moved to Nuxt for SSR and Typescript for better type safety and less bugs 🎉
- Backend now using a Class based architecture to maximize code reuse
- Tons of performance improvements across the board
- Significant work was done by [@PFischbeck](https://github.com/PFischbeck) to improve type safety on the frontend server and fix many type related errors/bugs!
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.