* change ALLOW_SIGNUP to default to false
* add 1.4.0 tag for OIDC docs
* new notes on security inline with security/policy review
* safer transport for external requests
* fix linter errors
* docs: Tidy up wording/formatting
* fix request errors
* whoops
* fix implementation with std lib
* format
* Remove check on netloc_parts. It only includes URL after any @
---------
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
Co-authored-by: Brendan <b.oconnell14@gmail.com>
* allow expections when fetching content
* removed extra bracket on import text
* added more fault tolerance and limited concurrency
* fix entries not being saved to report
* disable clicking into in-proress import
* conditionally render expansion
* refactored recipe image paths/service
* added routes for updating/fetching timeline images
* make generate
* added event image upload and rendering
* switched update to patch to preserve timestamp
* added tests
* tweaked order of requests
* always reload events when opening the timeline
* re-arranged elements to make them look nicer
* delete files when timeline event is deleted
* 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>
* allow certain props to be updated on locked recipe
* pytest
* added "last_made" to hardcoded datetime fields
* refactored last made to its own route
* codegen/types
* updated pytest
* upgrade sqlalchemy to 2.0
* rewrite all db models to sqla 2.0 mapping api
* fix some importing and typing weirdness
* fix types of a lot of nullable columns
* remove get_ref methods
* fix issues found by tests
* rewrite all queries in repository_recipe to 2.0 style
* rewrite all repository queries to 2.0 api
* rewrite all remaining queries to 2.0 api
* remove now-unneeded __allow_unmapped__ flag
* remove and fix some unneeded cases of "# type: ignore"
* fix formatting
* bump black version
* run black
* can this please be the last one. okay. just. okay.
* fix repository errors
* remove return
* drop open API validator
---------
Co-authored-by: Sören Busch <fleshgolem@gmx.net>
* Scheduled tasks log to Debug, not Info
* Add LOG_LEVEL config to .env
* Update some other log levels and fix typos
* fix logger initializer
---------
Co-authored-by: Jakob Rubin <647846+Grygon@users.noreply.github.com>
* add httpx depedency for async http requests
* rework scraper strategies to download recipe html asynchronously
* rework recipe_data_service to download recipe images asynchronously
* fix recipe_parser test, so it can use async results
* fix bulk import so that it also works with async scraper
* fix broken recipe_parser tests
* Fix issues found by scanners
* Add additional checks for ingredient and instruction count in test_create_by_url
* Revert changes in test recipe_data
Since we are checking ingredients and instructions in test_create_url now, these would fail with the stored html of recipe data
* Add explicit type annotation in recipe_data_service.largest_content_len
* Fix typo in annotation
* added recipe_timeline_events table to db
* added schema and routes for recipe timeline events
* added missing mixin and fixed update schema
* added tests
* adjusted migration revision tree
* updated alembic revision test
* added initial timeline event for new recipes
* added additional tests
* added event bus support
* renamed event_dt to timestamp
* add timeline_events to ignore list
* run code-gen
* use new test routes implementation
* use doc string syntax
* moved event type enum from db to schema
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* docs: fix typos
* typos: fix typos found by `codespell` across the codebase
* docs: fix `macOS` spelling
* docs: fix `authentification` terminology
"Authentification" is not a thing.
* docs: fix `localhost` typo in example link
* typos: fix in-code typos
These are potentially higher risk, but no other mentions of these typos
show up in the codebase.
* Add pytesseract
* Add simple ocr endpoint
replace extension argument
* feat/ocr-editor gui
* fix frontend linting issues
* Add service unit tests
* Add split text modes & single ingredient/instruction editing
* make split mode really reactive
* Remove default step and ingredient
* make the linter haappy
* Accept only image uploads
* Add automatic recipe title suggestion
* Correct regex
* fix incorrect array.map method usage
* make the linter happy again
* Swap route to use asset name
* Rearange buttons
* fix test data
* feat: Allow making image the recipe image
* Add translation
* Make the linter happy
* Restrict function setPropertyValueByPath generic
* Restrict template literal type
* Add a more friendly icon to creation page
* update poetry lock file
* Correct sloppy ocr classes
* Make MyPy happy
* Rewrite safer tests
* Add tesseract to backend test CI container dependencies
* Make canvas element a component global
* Remove unwanted spaces in selected text
* Add way to know if recipe was created with ocr
* Access to ocr-editor for ocr recipes
* Update Alembic revision
* Make the frontend build
* Fix scrolling offset bug
* Allow creation of recipes with custom settings
* Fix rebasing mistakes
* Add format_tsv_output test
* Exclude the tests data directory only
* Enforce camelCase for frontend functions
* Remove import of unused component
* Fix type and class initialization
* Add multi-language support
* Highlight words in mount
* Fix image ratio bug
* Better ocr creation page
* Revert awkward feature to scroll in Selection mode
* Rebasing alembic migrations sux
* Remove obsolete getShared function
* Add function docstring
* Move down ocr creation option
* Make toolbar icons more generic
* Show help at the bottom of the page
* move ocr types to own file
* Use template ref for the canvas
* Use i18n.tc to get strings directly
* Correct naming mistake
* Move Ocr editor to own directory
* Create Ocr Editor parts
* Safeguard recipe properties access
* Add loading frontend animation due to longer request time
* minor cleanup chores
Co-authored-by: Miroito <alban.vachette@gmail.com>
* 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>
* 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
* 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
* 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>
* 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>