* extended query filter to accept nested tables
* decoupled timeline api from recipe slug
* modified frontend to use simplified events api
* fixed nested loop index ghosting
* updated existing tests
* gave mypy a snack
* added tests for nested queries
* fixed "last made" render error
* decoupled recipe timeline from dialog
* removed unused props
* tweaked recipe get_all to accept ids
* created group global timeline
added new timeline page to sidebar
reformatted the recipe timeline
added vertical option to recipe card mobile
* extracted timeline item into its own component
* fixed apploader centering
* added paginated scrolling to recipe timeline
* added sort direction config
fixed infinite scroll on dialog
fixed hasMore var not resetting during instantiation
* added sort direction to user preferences
* updated API docs with new query filter feature
* better error tracing
* fix for recipe not found response
* simplified recipe crud route for slug/id
added test for fetching by slug/id
* made query filter UUID validation clearer
* moved timeline menu option below shopping lists
---------
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* added backend for shopping list label config
* updated codegen
* refactored shopping list ops to service
removed unique contraint
removed label settings from main route/schema
added new route for label settings
* codegen
* made sure label settings output in position order
* implemented submenu for label order drag and drop
* removed redundant label and tweaked formatting
* added view by label to user preferences
* made items draggable within each label section
* moved reorder labels to its own button
* made dialog scrollable
* fixed broken model
* refactored labels to use a service
moved shopping list label logic to service
modified label seeder to use service
* added tests
* fix for first label missing the tag icon
* fixed wrong mapped type
* added statement to create existing relationships
* fix restore test, maybe
* changed default sort direction for certain attrs
* added workaround for filtering out null datetimes
* filtered out null-valued results for certain sorts
* removed unecessary parse
* used minyear instead of 1900
* 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>