* initial public explorer API endpoint
* public API endpoint
* cleanup recipe page
* wip: init explorer page
* use public URLs for shared recipes
* refactor private share tokens to use shared page
* refactored event dispatching
added EventDocumentType and EventOperation to Event
added event listeners to bulk recipe changes
overhauled shopping list item events to be more useful
modified shopping list item repo to return more information
* added internal documentation for event types
* renamed message_types.py to event_types.py
* added unique event id and fixed instantiation
* generalized event listeners and publishers
moved apprise publisher to new apprise event listener
fixed duplicate message bug with apprise publisher
* added JWT field for user-specified integration id
* removed obselete test notification route
* tuned up existing notification tests
* added dependency to get integration_id from jwt
* added base crud controller to facilitate events
* simplified event publishing
* temporarily fixed test notification
* fix typing on auth context
* extract user password strength meter
* fix broken useToggle method
* extend form to accept arguments for validators
* enforce password length on update
* fix user password change form
* add data-types required for login security
* implement user lockout checking at login
* cleanup legacy patterns
* expose passwords in test_user
* test user lockout after bad attempts
* test user service
* bump alembic version
* save increment to database
* add locked_at to datetime transformer on import
* do proper test cleanup
* implement scheduled task
* spelling
* document env variables
* implement context manager for session
* use context manager
* implement reset script
* cleanup generator
* run generator
* implement API endpoint for resetting locked users
* add button to reset all locked users
* add info when account is locked
* use ignore instead of expect-error
* Moves dependencies directly to controllers
* Reduces use of @cached_property - (I have a suspicion that this is a factor in memory usage)
* reduce duplicate ways to access the same property on a controller.
* fixed incorrect response model
* added category and tag filters
* moved categories and tags params to route and
changed to query array param
* type fixes
* added category and tag tests
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
* 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)
* Added API params to order by different properties
* fix for incorrect var name
* removed invalid default order_by
* implemented fallback for invalid user input
* 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>
refactored signup flow for entire registration process. Utilized seed data option for optional seeding of Foods, Units, and Labels. Localized registration page.
* 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>
* 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
* 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
* 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