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
This report summarizes scanner evidence for mealie-recipes/mealie, a Python project with 13,505 GitHub stars. SynthScan examined 346,442 lines of code across 1529 source files, recording 2198 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 7.9 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1359 finding(s).
Are imports declared and package/API names verified? 500 finding(s).
Are wrappers, guards, and repeated structures necessary? 1549 finding(s).
Which changes need focused human review? 2198 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2198 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/app/composables/use-recipe-explorer-search.ts | 53 | function createRecipeExplorerSearchState(groupSlug: ComputedRef<string>): RecipeExplorerSearchState { | CODE |
| LOW | frontend/app/composables/use-recipe-explorer-search.ts | 473 | export function clearRecipeExplorerSearchState(groupSlug: string) { | CODE |
| LOW | frontend/app/composables/use-announcements.ts | 60 | function updateUnreadAnnouncements(lastReadKey: string) { | CODE |
| LOW | frontend/app/composables/use-group-recipe-actions.ts | 42 | async function refreshGroupRecipeActions() { | CODE |
| LOW | frontend/app/composables/use-users/preferences.ts | 86 | export function useUserMealPlanPreferences(): Ref<UserMealPlanPreferences> { | CODE |
| LOW | frontend/app/composables/use-users/preferences.ts | 135 | export function useUserActivityPreferences(): Ref<UserActivityPreferences> { | CODE |
| LOW | frontend/app/composables/use-users/preferences.ts | 147 | export function useUserSearchQuerySession(): Ref<UserSearchQuery> { | CODE |
| LOW | frontend/app/composables/use-users/preferences.ts | 159 | export function useShoppingListPreferences(): Ref<UserShoppingListPreferences> { | CODE |
| LOW | frontend/app/composables/use-users/preferences.ts | 214 | export function useRecipeFinderPreferences(): Ref<UserRecipeFinderPreferences> { | CODE |
| LOW | frontend/app/composables/use-users/preferences.ts | 234 | export function useRecipeCreatePreferences(): Ref<UserRecipeCreatePreferences> { | CODE |
| LOW | frontend/app/composables/use-users/preferences.ts | 251 | export function useUserExperiencePreferences(): Ref<UserExperiencePreferences> { | CODE |
| LOW | …nd/app/composables/use-users/user-registration-form.ts | 13 | export function resetUserRegistrationForm() { | CODE |
| LOW | …pp/composables/recipes/use-parse-ingredients-dialog.ts | 17 | export function useParseIngredientsDialog( | CODE |
| LOW | …pp/composables/recipes/use-ingredient-substitutions.ts | 26 | export function useIngredientSubstitutions(ingredient: () => RecipeIngredient) { | CODE |
| LOW | …pp/composables/recipes/use-ingredient-substitutions.ts | 40 | export function ingredientSubstitutionSummary(ingredient: RecipeIngredient, usePluralFood = false): string { | CODE |
| LOW | frontend/app/composables/api/static-routes.ts | 30 | function recipeTimelineEventSmallImage(recipeId: string, timelineEventId: string) { | CODE |
| LOW | frontend/app/composables/api/static-routes.ts | 34 | function recipeTimelineEventTinyImage(recipeId: string, timelineEventId: string) { | CODE |
| LOW | …ables/recipe-page/use-extract-ingredient-references.ts | 11 | function removeTrailingPunctuation(word: string): string { | CODE |
| LOW | …ables/recipe-page/use-extract-ingredient-references.ts | 16 | function removeStartingPunctuation(word: string): string { | CODE |
| LOW | …ables/recipe-page/use-extract-ingredient-references.ts | 37 | export function useExtractIngredientReferences() { | CODE |
| LOW | …ables/recipe-page/use-extract-ingredient-references.ts | 40 | function extractIngredientReferences(recipeIngredients: RecipeIngredient[], activeRefs: string[], text: string): Set<s | CODE |
| LOW | …/shopping-list-page/use-add-to-shopping-list-dialog.ts | 4 | export function useAddToShoppingListDialog() { | CODE |
| LOW | …mposables/shopping-list-page/use-shopping-list-page.ts | 103 | function updateIndexUncheckedByLabel(labelName: string, labeledUncheckedItems: ShoppingListItemOut[]) { | CODE |
| LOW | …mposables/shopping-list-page/use-shopping-list-page.ts | 166 | function toggleReorderLabelsDialog() { | CODE |
| LOW | …es/shopping-list-page/use-shopping-list-item-editor.ts | 5 | export function useShoppingListItemEditor(listItem: ModelRef<ShoppingListItemOut, string, ShoppingListItemOut, ShoppingL | CODE |
| LOW | …page/sub-composables/use-shopping-list-item-actions.ts | 23 | export function useShoppingListItemActions(shoppingListId: string) { | CODE |
| LOW | …list-page/sub-composables/use-shopping-list-sorting.ts | 30 | function groupAndSortListItemsByFood(shoppingList: ShoppingListOut) { | CODE |
| LOW | …ng-list-page/sub-composables/use-shopping-list-crud.ts | 227 | function toggleReorderLabelsDialog(reorderLabelsDialog: Ref<boolean>) { | CODE |
| LOW | …list-page/sub-composables/use-shopping-list-recipes.ts | 31 | async function removeRecipeReferenceToList(recipeId: string) { | CODE |
| LOW | …onents/Domain/Recipe/RecipeDialogAddToShoppingList.vue | 309 | async function consolidateRecipesIntoSections(recipes: RecipeWithScale[]) { | CODE |
| LOW | …onents/Domain/Recipe/RecipeDialogAddToShoppingList.vue | 411 | async function openShoppingListIngredientDialog(list: ShoppingListSummary) { | CODE |
| LOW | …nd/app/components/Domain/Recipe/RecipeDialogSearch.vue | 110 | function scrollSelectedRecipeIntoView() { | CODE |
| LOW | …/RecipePage/RecipePageParts/RecipePageInstructions.vue | 718 | function saveAndOpenNextDialogLinks() { | CODE |
| LOW | frontend/app/lib/recipe/recipe-finder.ts | 1 | export function normalizeMissingItemLimit(value: number | null | undefined): number { | CODE |
| LOW | frontend/app/pages/index.vue | 22 | async function redirectPublicUserToDefaultGroup() { | CODE |
| LOW | frontend/app/pages/group/data/foods.vue | 527 | async function applyReverseSubstitutions(foodId: string) { | CODE |
| LOW | tests/multitenant_tests/test_multitenant_cases.py | 23 | def test_multitenant_cases_get_all( | CODE |
| LOW | tests/multitenant_tests/test_multitenant_cases.py | 60 | def test_multitenant_cases_same_named_resources( | CODE |
| LOW | tests/unit_tests/test_recipe_image_backfill.py | 12 | def test_image_on_disk_finds_every_id_spelling(tmp_path: Path) -> None: | CODE |
| LOW | tests/unit_tests/test_recipe_image_backfill.py | 31 | def test_image_on_disk_is_false_without_a_file(tmp_path: Path) -> None: | CODE |
| LOW | tests/unit_tests/test_security.py | 126 | def test_create_access_token_defaults_to_token_time(): | CODE |
| LOW | tests/unit_tests/test_security.py | 138 | def test_create_access_token_honors_an_explicit_lifetime(): | CODE |
| LOW | tests/unit_tests/test_security.py | 147 | def test_every_token_is_stamped_with_issuer_and_issued_at(): | CODE |
| LOW | tests/unit_tests/test_security.py | 165 | def test_validate_file_token_rejects_a_token_without_a_file_claim(): | CODE |
| LOW | tests/unit_tests/test_security.py | 180 | async def test_download_file_security_restrictions(): | CODE |
| LOW | tests/unit_tests/test_security.py | 253 | def test_ldap_user_creation_invalid_group_or_household( | CODE |
| LOW | tests/unit_tests/test_security.py | 290 | def test_ldap_user_creation_fail(monkeypatch: MonkeyPatch): | CODE |
| LOW | tests/unit_tests/test_security.py | 308 | def test_ldap_user_creation_non_admin(monkeypatch: MonkeyPatch): | CODE |
| LOW | tests/unit_tests/test_security.py | 331 | def test_ldap_user_creation_admin(monkeypatch: MonkeyPatch): | CODE |
| LOW | tests/unit_tests/test_security.py | 366 | def test_user_login_ldap_auth_method(monkeypatch: MonkeyPatch, ldap_user: PrivateUser): | CODE |
| LOW | tests/unit_tests/test_security.py | 422 | def test_ldap_rejects_empty_password(monkeypatch: MonkeyPatch): | CODE |
| LOW | tests/unit_tests/test_security.py | 441 | def test_ldap_escapes_username_in_search_filter(monkeypatch: MonkeyPatch): | CODE |
| LOW⚡ | tests/unit_tests/test_oidc_native_client.py | 27 | def test_no_native_id_uses_web_client(monkeypatch: MonkeyPatch): | CODE |
| LOW⚡ | tests/unit_tests/test_oidc_native_client.py | 35 | def test_native_id_confidential_keeps_secret(monkeypatch: MonkeyPatch): | CODE |
| LOW⚡ | tests/unit_tests/test_oidc_native_client.py | 43 | def test_native_id_public_drops_secret(monkeypatch: MonkeyPatch): | CODE |
| LOW⚡ | tests/unit_tests/test_oidc_native_client.py | 52 | def test_public_without_native_id_warns_and_stays_confidential(monkeypatch: MonkeyPatch, caplog: LogCaptureFixture): | CODE |
| LOW⚡ | tests/unit_tests/test_oidc_native_client.py | 62 | def test_empty_native_id_falls_back_to_web_client(monkeypatch: MonkeyPatch): | CODE |
| LOW⚡ | tests/unit_tests/test_oidc_native_client.py | 69 | def test_public_native_client_leaves_web_client_unaffected(monkeypatch: MonkeyPatch): | CODE |
| LOW | …s/unit_tests/test_structured_recipe_times_migration.py | 83 | def test_parse_seconds_leaves_text_alone(value: str | None) -> None: | CODE |
| LOW | …s/unit_tests/test_structured_recipe_times_migration.py | 87 | def test_ambiguous_unit_words_are_dropped(tmp_path: Path) -> None: | CODE |
| 1144 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker/docker-compose.yml | 19 | # ===================================== | COMMENT |
| MEDIUM | docker/docker-compose.yml | 26 | # ===================================== | COMMENT |
| MEDIUM | docker/setup_nltk_data.sh | 2 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | docker/setup_nltk_data.sh | 14 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | …_tests/core/security/providers/test_openid_provider.py | 346 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …_tests/core/security/providers/test_openid_provider.py | 348 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …/unit_tests/services_tests/test_recipe_data_service.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …/unit_tests/services_tests/test_recipe_data_service.py | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …/unit_tests/services_tests/test_recipe_data_service.py | 147 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …/unit_tests/services_tests/test_recipe_data_service.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 241 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 243 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 421 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 423 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 463 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_fetch.py | 465 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit_tests/pkgs/safehttp/test_fetch.py | 10 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit_tests/pkgs/safehttp/test_fetch.py | 12 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit_tests/pkgs/safehttp/test_fetch.py | 319 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit_tests/pkgs/safehttp/test_fetch.py | 321 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_transport.py | 214 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/pkgs/safehttp/test_transport.py | 216 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …it_tests/repository_tests/test_query_filter_builder.py | 86 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …it_tests/repository_tests/test_query_filter_builder.py | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …it_tests/repository_tests/test_query_filter_builder.py | 116 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …it_tests/repository_tests/test_query_filter_builder.py | 118 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tegration_tests/admin_tests/test_admin_ai_providers.py | 12 | # ======================================================================= | COMMENT |
| MEDIUM | …tegration_tests/admin_tests/test_admin_ai_providers.py | 28 | # ======================================================================= | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 272 | # ========================================== | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 274 | # ========================================== | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 370 | # ========================================== | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 372 | # ========================================== | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 477 | # ========================================== | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 479 | # ========================================== | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 583 | # ========================================== | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 585 | # ========================================== | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 731 | # ========================================== | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 733 | # ========================================== | COMMENT |
| MEDIUM | …tion_tests/user_group_tests/test_group_ai_providers.py | 38 | # ========================================== | COMMENT |
| MEDIUM | …tion_tests/user_group_tests/test_group_ai_providers.py | 40 | # ========================================== | COMMENT |
| MEDIUM | …tion_tests/user_group_tests/test_group_ai_providers.py | 167 | # ========================================== | COMMENT |
| MEDIUM | …tion_tests/user_group_tests/test_group_ai_providers.py | 169 | # ========================================== | COMMENT |
| MEDIUM | …ests/category_tag_tool_tests/test_organizers_common.py | 10 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 63 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 65 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 97 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 99 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 120 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 122 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 221 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 223 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 242 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 244 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …tests/category_tag_tool_tests/test_organizers_merge.py | 267 | # --------------------------------------------------------------------------- | COMMENT |
| 68 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 51 | CODE | |
| LOW | tests/utils/__init__.py | 1 | CODE | |
| LOW | tests/utils/__init__.py | 2 | CODE | |
| LOW | tests/utils/__init__.py | 3 | CODE | |
| LOW | tests/utils/__init__.py | 4 | CODE | |
| LOW | tests/utils/__init__.py | 5 | CODE | |
| LOW | tests/utils/routes/__init__.py | 1 | CODE | |
| LOW | tests/utils/routes/__init__.py | 2 | CODE | |
| LOW | tests/utils/routes/__init__.py | 3 | CODE | |
| LOW | tests/utils/routes/__init__.py | 4 | CODE | |
| LOW | tests/utils/routes/__init__.py | 5 | CODE | |
| LOW | tests/utils/routes/__init__.py | 6 | CODE | |
| LOW | dev/code-generation/unit_systems.py | 14 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 1 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 2 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 2 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 2 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 2 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 2 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 2 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 3 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 3 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 3 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 3 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 3 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 4 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 4 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 4 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 4 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 4 | CODE | |
| LOW | dev/code-generation/utils/__init__.py | 4 | CODE | |
| LOW | mealie/repos/__init__.py | 1 | CODE | |
| LOW | mealie/repos/repository_recipes.py | 1 | CODE | |
| LOW | mealie/core/settings/__init__.py | 1 | CODE | |
| LOW | mealie/core/settings/__init__.py | 2 | CODE | |
| LOW | mealie/core/security/security.py | 13 | CODE | |
| LOW | mealie/core/security/security.py | 13 | CODE | |
| LOW | mealie/core/security/__init__.py | 1 | CODE | |
| LOW | mealie/core/security/providers/openid_provider.py | 1 | CODE | |
| LOW | mealie/core/dependencies/__init__.py | 1 | CODE | |
| LOW | mealie/lang/__init__.py | 1 | CODE | |
| LOW | mealie/schema/_mealie/__init__.py | 2 | CODE | |
| LOW | mealie/schema/_mealie/__init__.py | 2 | CODE | |
| LOW | mealie/schema/_mealie/__init__.py | 2 | CODE | |
| LOW | mealie/schema/_mealie/__init__.py | 2 | CODE | |
| LOW | mealie/schema/_mealie/__init__.py | 3 | CODE | |
| LOW | mealie/schema/_mealie/__init__.py | 3 | CODE | |
| LOW | mealie/schema/_mealie/__init__.py | 3 | CODE | |
| LOW | mealie/schema/_mealie/mealie_model.py | 1 | CODE | |
| LOW | mealie/schema/response/__init__.py | 2 | CODE | |
| LOW | mealie/schema/response/__init__.py | 2 | CODE | |
| LOW | mealie/schema/response/__init__.py | 2 | CODE | |
| LOW | mealie/schema/response/__init__.py | 2 | CODE | |
| LOW | mealie/schema/response/__init__.py | 2 | CODE | |
| LOW | mealie/schema/response/__init__.py | 2 | CODE | |
| LOW | mealie/schema/response/__init__.py | 10 | CODE | |
| LOW | mealie/schema/response/__init__.py | 11 | CODE | |
| LOW | mealie/schema/response/__init__.py | 11 | CODE | |
| LOW | mealie/schema/response/__init__.py | 11 | CODE | |
| LOW | mealie/schema/response/__init__.py | 11 | CODE | |
| 424 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit_tests/services_tests/test_openai_service.py | 246 | except Exception as e: | CODE |
| MEDIUM | tests/unit_tests/services_tests/test_openai_service.py | 243 | def _fake_ping(self, provider, message, images=None): | CODE |
| LOW | …tests/services_tests/backup_v2_tests/test_backup_v2.py | 274 | except Exception as e: | CODE |
| LOW | …gration_tests/user_recipe_tests/test_recipe_ratings.py | 38 | except Exception: | CODE |
| LOW | …tests/recipe_migration_tests/test_recipe_migrations.py | 253 | except Exception: | CODE |
| LOW | …ests/user_household_tests/test_group_mealplan_rules.py | 25 | except Exception: | CODE |
| LOW | …ion_tests/user_household_tests/test_group_cookbooks.py | 55 | except Exception: | CODE |
| LOW | dev/code-generation/unit_systems.py | 156 | except Exception as e: | CODE |
| LOW | dev/code-generation/gen_ts_types.py | 223 | except Exception: | STRING |
| LOW | dev/code-generation/gen_ts_types.py | 235 | except Exception: | STRING |
| LOW | dev/code-generation/utils/anonymize_backups.py | 48 | except Exception as e: | CODE |
| MEDIUM | dev/code-generation/utils/anonymize_backups.py | 31 | def clean_value(value): | CODE |
| LOW | dev/code-generation/utils/open_api_parser.py | 112 | except Exception: | CODE |
| MEDIUM⚡ | dev/scripts/all_recipes_stress_test.py | 235 | console.print(f"Error: {r.status_code}") | CODE |
| MEDIUM⚡ | dev/scripts/all_recipes_stress_test.py | 242 | console.print(f"Error: {recipe_json.status_code}") | CODE |
| MEDIUM⚡ | dev/scripts/all_recipes_stress_test.py | 251 | console.print(f"Error: {r.status_code}") | CODE |
| LOW | mealie/repos/repository_factory.py | 127 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_factory.py | 164 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_factory.py | 201 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_factory.py | 247 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_foods.py | 148 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_generic.py | 185 | except Exception: | CODE |
| LOW | mealie/repos/repository_generic.py | 203 | except Exception: | CODE |
| LOW | mealie/repos/repository_generic.py | 271 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_generic.py | 289 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_generic.py | 351 | except Exception as e: | CODE |
| LOW | mealie/repos/_recipe_suggestions.py | 375 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_recipes.py | 113 | except Exception: | CODE |
| LOW | mealie/repos/repository_recipes.py | 121 | except Exception: | CODE |
| LOW | mealie/repos/repository_recipes.py | 144 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_recipes.py | 352 | except Exception as e: | CODE |
| LOW | mealie/repos/repository_units.py | 134 | except Exception as e: | CODE |
| LOW | mealie/repos/seed/seeders.py | 64 | except Exception as e: | CODE |
| LOW | mealie/repos/seed/seeders.py | 97 | except Exception as e: | CODE |
| LOW | mealie/repos/seed/seeders.py | 144 | except Exception: | CODE |
| LOW | mealie/repos/seed/seeders.py | 149 | except Exception as e: | CODE |
| LOW | mealie/core/release_checker.py | 30 | except Exception: | CODE |
| LOW | mealie/core/security/providers/openid_provider.py | 135 | except Exception as e: | CODE |
| LOW | mealie/core/security/providers/openid_provider.py | 295 | except Exception as e: | CODE |
| LOW | mealie/core/dependencies/dependencies.py | 57 | except Exception: | CODE |
| LOW | mealie/core/dependencies/dependencies.py | 62 | except Exception: | CODE |
| LOW | mealie/core/dependencies/dependencies.py | 98 | except Exception: | CODE |
| LOW | mealie/schema/cookbook/cookbook.py | 57 | except Exception as e: | CODE |
| LOW | mealie/schema/cookbook/cookbook.py | 89 | except Exception: | CODE |
| LOW | mealie/schema/meal_plan/plan_rules.py | 60 | except Exception as e: | CODE |
| LOW | mealie/schema/meal_plan/plan_rules.py | 88 | except Exception: | CODE |
| LOW | mealie/schema/household/group_shopping_list.py | 92 | except Exception: | CODE |
| LOW | mealie/schema/openai/_base.py | 39 | except Exception: | CODE |
| LOW | mealie/pkgs/img/minify.py | 215 | except Exception as e: | CODE |
| LOW | mealie/pkgs/safehttp/flaresolverr.py | 46 | except Exception: | CODE |
| LOW | mealie/pkgs/safehttp/flaresolverr.py | 56 | except Exception: | CODE |
| LOW | mealie/pkgs/i18n/json_provider.py | 45 | except Exception: | CODE |
| LOW | mealie/scripts/reprocess_images.py | 48 | except Exception: | CODE |
| LOW | mealie/scripts/reprocess_images.py | 54 | except Exception: | CODE |
| LOW | mealie/scripts/reprocess_images.py | 91 | except Exception: | CODE |
| LOW | mealie/scripts/reprocess_images.py | 117 | except Exception: | CODE |
| LOW | mealie/scripts/reprocess_images.py | 127 | except Exception: | CODE |
| LOW | mealie/db/init_db.py | 76 | except Exception: | CODE |
| LOW | mealie/db/init_db.py | 84 | except Exception: | CODE |
| LOW | mealie/db/models/_model_utils/auto_init.py | 71 | except Exception: | CODE |
| 89 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit_tests/core/test_security.py | 35 | # Create a very long password which bcrypt doesn't support | COMMENT |
| MEDIUM | …services_tests/ingredient_parser/test_openai_parser.py | 128 | # Create a mock raw response which matches the OpenAI chat response format | COMMENT |
| MEDIUM | …/unit_tests/repository_tests/test_recipe_repository.py | 953 | # Create a recipe with one note | COMMENT |
| MEDIUM⚡ | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 1673 | # Create a sub-recipe ONLY in group 2 | COMMENT |
| MEDIUM⚡ | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 1683 | # Create a parent recipe in group 1 | COMMENT |
| MEDIUM⚡ | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 1717 | # Create a food | COMMENT |
| MEDIUM⚡ | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 1725 | # Create a recipe_a | COMMENT |
| MEDIUM⚡ | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 2350 | # Create a recipe name that's extremely long like the one in the GitHub issue | COMMENT |
| MEDIUM⚡ | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 2353 | # Create the recipe | COMMENT |
| MEDIUM | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 1493 | # Create a spice mix recipe | COMMENT |
| MEDIUM | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 1505 | # Create a main recipe that uses the spice mix twice | COMMENT |
| MEDIUM | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 1608 | # Create a recipe with the same slug in both groups | COMMENT |
| MEDIUM | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 1633 | # Create a parent recipe in group 1 | COMMENT |
| MEDIUM | …ion_tests/public_explorer_tests/test_public_recipes.py | 290 | # Create a public and private recipe with a known tag | COMMENT |
| MEDIUM | …ion_tests/public_explorer_tests/test_public_recipes.py | 324 | # Create a recipe in another household with the same known tag | COMMENT |
| MEDIUM | …ion_tests/public_explorer_tests/test_public_recipes.py | 345 | # Create a public cookbook with tag | COMMENT |
| MEDIUM | …n_tests/public_explorer_tests/test_public_cookbooks.py | 148 | # Create a public and private recipe with a known tag | COMMENT |
| MEDIUM | …n_tests/public_explorer_tests/test_public_cookbooks.py | 182 | # Create a public and private recipe with a known tag in another household | COMMENT |
| MEDIUM | …n_tests/public_explorer_tests/test_public_cookbooks.py | 210 | # Create a public cookbook with tag | COMMENT |
| MEDIUM | …n_tests/public_explorer_tests/test_public_cookbooks.py | 239 | # Create a public recipe with a known tag | COMMENT |
| MEDIUM | …n_tests/public_explorer_tests/test_public_cookbooks.py | 268 | # Create a public recipe with a known tag on a private household | COMMENT |
| MEDIUM | …n_tests/public_explorer_tests/test_public_cookbooks.py | 291 | # Create a public cookbook with tag | COMMENT |
| MEDIUM | …tegration_tests/admin_tests/test_admin_user_actions.py | 72 | # Create a new user | COMMENT |
| MEDIUM | …tegration_tests/admin_tests/test_admin_ai_providers.py | 114 | # Create a brand new group the admin doesn't belong to | COMMENT |
| MEDIUM⚡ | …tion_tests/user_group_tests/test_group_ai_providers.py | 384 | # Create a provider so there's something to GET (using repos directly to bypass permission check) | COMMENT |
| MEDIUM | …tion_tests/user_group_tests/test_group_ai_providers.py | 57 | # Create a provider first | COMMENT |
| MEDIUM | …tion_tests/user_group_tests/test_group_ai_providers.py | 772 | # Create a user in the new group with can_manage=True | COMMENT |
| MEDIUM | …tion_tests/user_household_tests/test_group_webhooks.py | 106 | # Create a webhook and post it | COMMENT |
| MEDIUM | .github/workflows/locale-sync.yml | 91 | # Create a new branch from the base branch | COMMENT |
| MEDIUM | dev/code-generation/gen_py_schema_exports.py | 8 | template = """# This file is auto-generated by gen_schema_exports.py | CODE |
| MEDIUM | mealie/schema/_mealie/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/response/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/group/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/recipe/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/admin/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/labels/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/user/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/cookbook/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/meal_plan/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/household/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/openai/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/analytics/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/schema/reports/__init__.py | 1 | # This file is auto-generated by gen_schema_exports.py | COMMENT |
| MEDIUM | mealie/services/backups_v2/backup_v2.py | 37 | # Create a backup of the SQLite database | COMMENT |
| MEDIUM | mealie/services/openai/openai.py | 414 | # Create a transcription from the audio | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ion_tests/user_recipe_tests/test_recipe_bulk_action.py | 35 | except sqlalchemy.exc.NoResultFound: | CODE |
| HIGH | …gration_tests/user_recipe_tests/test_recipe_ratings.py | 38 | except Exception: | CODE |
| HIGH | …on_tests/user_recipe_tests/test_recipe_share_tokens.py | 27 | except sqlalchemy.exc.NoResultFound: | CODE |
| HIGH | …ests/user_household_tests/test_group_mealplan_rules.py | 25 | except Exception: | CODE |
| HIGH | …ion_tests/user_household_tests/test_group_cookbooks.py | 55 | except Exception: | CODE |
| HIGH | mealie/repos/repository_group.py | 63 | except ValueError: | CODE |
| HIGH | mealie/repos/repository_household.py | 85 | except ValueError: | CODE |
| HIGH | mealie/scripts/reprocess_images.py | 89 | except UnidentifiedImageError: | CODE |
| HIGH | mealie/db/models/_model_utils/datetime.py | 47 | except Exception: | CODE |
| HIGH | …3-16.15.07_2298bb460ffd_added_user_to_shopping_list.py | 44 | except orm.exc.NoResultFound: | CODE |
| HIGH | …3-16.15.07_2298bb460ffd_added_user_to_shopping_list.py | 52 | except orm.exc.NoResultFound: | CODE |
| HIGH | mealie/routes/recipe/timeline_events.py | 123 | except FileNotFoundError: | CODE |
| HIGH | mealie/routes/users/ratings.py | 28 | except ValueError: | CODE |
| HIGH | mealie/routes/_base/mixins.py | 26 | except ImportError: | CODE |
| HIGH | …/services/parser_services/parser_utils/string_utils.py | 117 | except ZeroDivisionError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/multitenant_tests/test_multitenant_cases.py | 23 | CODE | |
| LOW | tests/multitenant_tests/test_multitenant_cases.py | 60 | CODE | |
| LOW | …tests/services_tests/backup_v2_tests/test_backup_v2.py | 175 | CODE | |
| LOW | …tests/services_tests/backup_v2_tests/test_backup_v2.py | 227 | CODE | |
| LOW | tests/integration_tests/test_repository_factory.py | 76 | CODE | |
| LOW | …ration_tests/user_tests/test_user_password_services.py | 15 | CODE | |
| LOW | …ration_tests/user_tests/test_user_password_services.py | 63 | CODE | |
| LOW | …tests/recipe_migration_tests/test_recipe_migrations.py | 242 | CODE | |
| LOW | …ests/user_household_tests/test_group_shopping_lists.py | 249 | CODE | |
| LOW | …ests/user_household_tests/test_group_shopping_lists.py | 830 | CODE | |
| LOW | …ests/user_household_tests/test_group_shopping_lists.py | 912 | CODE | |
| LOW | tests/utils/helpers.py | 9 | CODE | |
| LOW | dev/code-generation/gen_py_pytest_routes.py | 27 | CODE | |
| LOW | dev/code-generation/gen_ts_types.py | 88 | CODE | |
| LOW | dev/code-generation/gen_ts_types.py | 120 | CODE | |
| LOW | dev/code-generation/utils/open_api_parser.py | 76 | CODE | |
| LOW | dev/code-generation/utils/open_api_parser.py | 103 | CODE | |
| LOW | dev/code-generation/utils/open_api_parser.py | 117 | CODE | |
| LOW | mealie/repos/repository_recipes.py | 242 | CODE | |
| LOW | mealie/repos/repository_units.py | 18 | CODE | |
| LOW | mealie/core/logger/config.py | 38 | CODE | |
| LOW | mealie/core/dependencies/dependencies.py | 35 | CODE | |
| LOW | mealie/pkgs/img/minify.py | 170 | CODE | |
| LOW | mealie/pkgs/i18n/json_provider.py | 17 | CODE | |
| LOW | mealie/pkgs/i18n/json_provider.py | 33 | CODE | |
| LOW | mealie/pkgs/stats/fs_stats.py | 8 | CODE | |
| LOW | mealie/scripts/reprocess_images.py | 132 | CODE | |
| LOW | mealie/db/fixes/fix_migration_data.py | 136 | CODE | |
| LOW | mealie/db/models/_model_utils/auto_init.py | 83 | CODE | |
| LOW | mealie/db/models/_model_utils/auto_init.py | 111 | CODE | |
| LOW | mealie/db/models/_model_utils/auto_init.py | 119 | CODE | |
| LOW | mealie/db/models/_model_utils/auto_init.py | 121 | CODE | |
| LOW | ….59.01_a39c7f1826e3_add_unit_standardization_fields.py | 42 | CODE | |
| LOW | …-09-15.31.00_7cf3054cbbcc_remove_instructions_index.py | 103 | CODE | |
| LOW | …ons/2024-07-12-16.16.29_feecc8ffb956_add_households.py | 44 | CODE | |
| LOW | mealie/routes/recipe/recipe_crud_routes.py | 140 | CODE | |
| LOW | mealie/routes/admin/admin_maintenance.py | 16 | CODE | |
| LOW | mealie/routes/admin/admin_maintenance.py | 38 | CODE | |
| LOW | mealie/routes/_base/controller.py | 168 | CODE | |
| LOW | mealie/services/backups_v2/alchemy_exporter.py | 111 | CODE | |
| LOW | mealie/services/backups_v2/alchemy_exporter.py | 202 | CODE | |
| LOW | mealie/services/backups_v2/alchemy_exporter.py | 262 | CODE | |
| LOW | mealie/services/backups_v2/backup_v2.py | 44 | CODE | |
| LOW | mealie/services/parser_services/_base.py | 60 | CODE | |
| LOW | mealie/services/parser_services/_base.py | 78 | CODE | |
| LOW | mealie/services/parser_services/brute/process.py | 133 | CODE | |
| LOW | mealie/services/recipe/recipe_data_service.py | 161 | CODE | |
| LOW | …eduler/tasks/delete_old_checked_shopping_list_items.py | 54 | CODE | |
| LOW | mealie/services/query_filter/keywords.py | 12 | CODE | |
| LOW | mealie/services/query_filter/builder.py | 195 | CODE | |
| LOW | mealie/services/query_filter/builder.py | 235 | CODE | |
| LOW | mealie/services/query_filter/builder.py | 255 | CODE | |
| LOW | mealie/services/query_filter/builder.py | 393 | CODE | |
| LOW | mealie/services/query_filter/builder.py | 447 | CODE | |
| LOW | mealie/services/query_filter/builder.py | 511 | CODE | |
| LOW | mealie/services/query_filter/builder.py | 551 | CODE | |
| LOW | mealie/services/query_filter/builder.py | 638 | CODE | |
| LOW | mealie/services/query_filter/builder.py | 675 | CODE | |
| LOW | mealie/services/openai/transcription.py | 58 | CODE | |
| LOW | mealie/services/openai/openai.py | 286 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ntegration_tests/user_recipe_tests/test_recipe_crud.py | 45 | from tests.utils.helpers import parse_sse_events | CODE |
| CRITICAL | …ts/user_recipe_tests/test_recipe_create_from_openai.py | 20 | from tests.utils.helpers import parse_sse_events | CODE |
| CRITICAL | …_tests/user_recipe_tests/test_recipe_create_from_ai.py | 33 | from tests.utils.helpers import parse_sse_events | CODE |
| CRITICAL | mealie/schema/recipe/recipe.py | 17 | from mealie.core.exceptions import SlugError | CODE |
| CRITICAL | …e/services/recipe/import_workflow/recipe_conversion.py | 3 | from mealie.core.exceptions import SlugError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …tests/category_tag_tool_tests/test_organizers_merge.py | 43 | def _set_recipe_tags(api_client: TestClient, user: TestUser, slug: str, tags: list[dict]) -> None: | CODE |
| LOW | …tests/category_tag_tool_tests/test_organizers_merge.py | 52 | def _set_recipe_categories(api_client: TestClient, user: TestUser, slug: str, categories: list[dict]) -> None: | CODE |
| LOW⚡ | …category_tag_tool_tests/test_organizers_tools_merge.py | 32 | def _set_recipe_tools(api_client: TestClient, user: TestUser, slug: str, tools: list[dict]) -> None: | CODE |
| LOW | …category_tag_tool_tests/test_organizers_foods_merge.py | 30 | def _set_recipe_foods(api_client: TestClient, user: TestUser, slug: str, foods: list[dict]) -> None: | CODE |
| LOW | …ests/user_household_tests/test_organize_permissions.py | 23 | def set_can_organize(user: TestUser, value: bool) -> None: | CODE |
| LOW | dev/code-generation/gen_py_schema_exports.py | 12 | __all__ = [ | CODE |
| LOW | dev/code-generation/utils/__init__.py | 6 | __all__ = [ | CODE |
| LOW | mealie/repos/__init__.py | 3 | __all__ = [ | CODE |
| LOW | mealie/core/security/security.py | 16 | __all__ = [ | CODE |
| LOW | mealie/core/security/providers/openid_provider.py | 263 | def _update_profile_image_from_claim(self, user_id: UUID4, claims: UserInfo) -> None: | CODE |
| LOW | mealie/lang/providers.py | 25 | def set_locale_context(translator: Translator, locale_config: LocaleConfig) -> None: | CODE |
| LOW | mealie/schema/_mealie/__init__.py | 5 | __all__ = [ | CODE |
| LOW | mealie/schema/response/__init__.py | 22 | __all__ = [ | CODE |
| LOW⚡ | mealie/schema/response/pagination.py | 60 | def _set_next(self, route: str, query_params: dict[str, Any]) -> None: | CODE |
| LOW⚡ | mealie/schema/response/pagination.py | 69 | def _set_prev(self, route: str, query_params: dict[str, Any]) -> None: | CODE |
| LOW⚡ | mealie/schema/response/pagination.py | 78 | def set_pagination_guides(self, route: str, query_params: dict[str, Any] | None) -> None: | CODE |
| LOW | mealie/schema/group/__init__.py | 20 | __all__ = [ | CODE |
| LOW | mealie/schema/recipe/__init__.py | 105 | __all__ = [ | CODE |
| LOW | mealie/schema/admin/__init__.py | 10 | __all__ = [ | CODE |
| LOW | mealie/schema/labels/__init__.py | 12 | __all__ = [ | CODE |
| LOW | mealie/schema/user/__init__.py | 48 | __all__ = [ | CODE |
| LOW | mealie/schema/cookbook/__init__.py | 4 | __all__ = [ | CODE |
| LOW | mealie/schema/meal_plan/__init__.py | 14 | __all__ = [ | CODE |
| LOW | mealie/schema/household/__init__.py | 72 | __all__ = [ | CODE |
| LOW | mealie/schema/openai/__init__.py | 14 | __all__ = [ | CODE |
| LOW | mealie/schema/analytics/__init__.py | 4 | __all__ = [ | CODE |
| LOW | mealie/schema/reports/__init__.py | 12 | __all__ = [ | CODE |
| LOW | mealie/pkgs/safehttp/__init__.py | 18 | __all__ = [ | CODE |
| LOW | mealie/db/models/recipe/ingredient.py | 278 | def _set_substitutions(self, session: Session, group_id: GUID, substitutions: list[dict] | None) -> None: | CODE |
| LOW | mealie/db/models/recipe/ingredient.py | 552 | def _set_substitutions(self, session: Session, group_id: GUID | None, substitutions: list[dict] | None) -> None: | CODE |
| LOW | mealie/db/models/household/__init__.py | 19 | __all__ = [ | CODE |
| LOW | …-18.44.53_c7427796f7b6_more_aggresive_normalization.py | 22 | def _update_table(session: orm.Session, table: str, columns: list[str], source_columns: list[str]) -> None: | CODE |
| LOW | …-18.44.53_c7427796f7b6_more_aggresive_normalization.py | 37 | def update_normalization() -> None: | CODE |
| LOW | mealie/routes/_base/controller.py | 195 | def _update_cbv_route_endpoint_signature(cls: type[Any], route: Route | WebSocketRoute) -> None: | CODE |
| LOW⚡ | mealie/services/scraper/scraped_extras.py | 26 | def set_tags(self, tags: list[str]) -> None: | CODE |
| LOW⚡ | mealie/services/scraper/scraped_extras.py | 29 | def set_categories(self, categories: list[str]) -> None: | CODE |
| LOW⚡ | mealie/services/scraper/scraped_extras.py | 32 | def set_tools(self, tools: list[str]) -> None: | CODE |
| LOW | mealie/services/parser_services/brute/__init__.py | 3 | __all__ = [ | CODE |
| LOW | mealie/services/parser_services/openai/__init__.py | 3 | __all__ = [ | CODE |
| LOW | mealie/services/recipe/recipe_bulk_service.py | 62 | def set_settings(self, recipes: list[str], settings: RecipeSettings) -> None: | CODE |
| LOW | mealie/services/recipe/import_workflow/__init__.py | 11 | __all__ = [ | CODE |
| LOW | …alie/services/recipe/import_workflow/steps/__init__.py | 6 | __all__ = [ | CODE |
| LOW | …/services/recipe/import_workflow/compilers/__init__.py | 15 | __all__ = [ | CODE |
| LOW | mealie/services/scheduler/tasks/__init__.py | 10 | __all__ = [ | CODE |
| LOW | mealie/services/group_services/labels_service.py | 17 | def _update_shopping_list_label_references(self, new_labels: list[MultiPurposeLabelOut]) -> None: | CODE |
| LOW | mealie/services/email/__init__.py | 3 | __all__ = [ | CODE |
| LOW | mealie/services/openai/__init__.py | 3 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …ocumentation/getting-started/migrating-to-mealie-v1.md | 38 | ## Step 1: Setting Up The New Application | COMMENT |
| LOW⚡ | …ocumentation/getting-started/migrating-to-mealie-v1.md | 42 | ## Step 2: Exporting Your Data from Pre-v1 | COMMENT |
| LOW⚡ | …ocumentation/getting-started/migrating-to-mealie-v1.md | 49 | ## Step 3: Using the Migration Tool | COMMENT |
| LOW⚡ | …ocumentation/getting-started/migrating-to-mealie-v1.md | 59 | ## Step 4: Reviewing New Features | COMMENT |
| LOW | …getting-started/installation/installation-checklist.md | 40 | ## Step 1: Deployment Type | COMMENT |
| LOW⚡ | …getting-started/installation/installation-checklist.md | 51 | ## Step 2: Setting up your files. | COMMENT |
| LOW⚡ | …getting-started/installation/installation-checklist.md | 61 | ## Step 3: Customizing The `docker-compose.yaml` files. | COMMENT |
| LOW⚡ | …getting-started/installation/installation-checklist.md | 70 | ## Step 4: Startup | COMMENT |
| LOW | …getting-started/installation/installation-checklist.md | 90 | ## Step 5: Validate Installation | COMMENT |
| LOW | …getting-started/installation/installation-checklist.md | 94 | ## Step 6: Backup | COMMENT |
| LOW | docs/docs/documentation/community-guide/swag.md | 10 | ## Step 1: Get a domain | COMMENT |
| LOW | docs/docs/documentation/community-guide/swag.md | 14 | ## Step 2: Set-up SWAG | COMMENT |
| LOW | docs/docs/documentation/community-guide/swag.md | 52 | ## Step 3: Change the config files | COMMENT |
| LOW | docs/docs/documentation/community-guide/swag.md | 83 | ## Step 4: Port-forward port 443 | COMMENT |
| LOW | docs/docs/documentation/community-guide/swag.md | 87 | ## Step 5: Restart SWAG | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mealie/core/settings/settings.py | 67 | Custom serializer for sensitive settings. If the setting is None, then will serialize as null, otherwise, | STRING |
| HIGH | mealie/schema/recipe/recipe_ingredient.py | 69 | # sometimes the frontend will give us an empty string instead of null, so we convert it to None, | COMMENT |
| HIGH | mealie/routes/auth/auth.py | 179 | # request.client should never be null, except sometimes during testing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/setup_nltk_data.sh | 1 | #!/bin/bash | COMMENT |
| LOW | …-list-page/sub-composables/use-shopping-list-search.ts | 41 | // A food-backed item can still carry a note ("ripe ones"), which the | COMMENT |
| LOW | frontend/app/assets/variables.scss | 1 | // Ref: https://github.com/nuxt-community/vuetify-module#customvariables | COMMENT |
| LOW | tests/e2e/playwright.config.ts | 61 | // { | COMMENT |
| LOW | .github/workflows/codeql.yml | 1 | # For most projects, this workflow file will not need changing; you simply need | COMMENT |
| LOW | .github/workflows/stale.yml | 21 | # This stops an issue from ever getting closed automatically. | COMMENT |
| LOW | dev/code-generation/unit_systems.py | 41 | #: these. All this does is name the two dimensions we display and fix the scale of the emitted | COMMENT |
| LOW | dev/code-generation/unit_systems.py | 61 | COMMENT | |
| LOW | mealie/alembic/alembic.ini | 21 | # leave blank for localtime | COMMENT |
| LOW | mealie/alembic/alembic.ini | 41 | # version_locations = %(here)s/bar:%(here)s/bat:alembic/versions | COMMENT |
| LOW | mealie/alembic/alembic.ini | 61 | # on newly generated revision scripts. See the documentation for further | COMMENT |
| LOW | mealie/services/scraper/cleaner.py | 201 | return default or [] | COMMENT |
| LOW | mealie/services/scraper/cleaner.py | 241 | case [{"text": str()}, *_]: | COMMENT |
| LOW | mealie/services/scraper/cleaner.py | 261 | # | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ests/category_tag_tool_tests/test_organizers_common.py | 256 | # Check if Organizer is returned with 10 RecipeSummary | COMMENT |
| LOW | .github/workflows/auto-merge-l10n.yml | 57 | # Check if file matches any allowed path | COMMENT |
| LOW | mealie/services/scraper/scraper_strategies.py | 404 | # Check if we can actually download something to transcribe | COMMENT |
| LOW | mealie/services/scraper/scraped_extras.py | 50 | # Check if tag exists | COMMENT |
| LOW | mealie/services/scraper/scraped_extras.py | 77 | # Check if category exists | COMMENT |
| LOW | mealie/services/scraper/scraped_extras.py | 104 | # Check if tool exists | COMMENT |
| LOW | mealie/services/parser_services/brute/process.py | 111 | # Check if the matching opening bracket is in the same token | COMMENT |
| LOW⚡ | mealie/services/recipe/recipe_service.py | 576 | # Check if this recipe is already in the current path (cycle detected) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/app/pages/register/index.test.ts | 35 | email: ref("user@example.com"), | CODE |
| LOW⚡ | …unit_tests/core/security/auth_cache/test_auth_cache.py | 193 | "email": "user@example.com", | CODE |
| LOW | …unit_tests/core/security/auth_cache/test_auth_cache.py | 206 | assert retrieved["userinfo"]["email"] == "user@example.com" | CODE |
| LOW | …ore/security/auth_cache/test_auth_cache_integration.py | 130 | "name": "John Doe", | CODE |
| LOW | tests/unit_tests/repository_tests/test_pagination.py | 1691 | "placeholder", | CODE |
| LOW | …tegration_tests/admin_tests/test_admin_user_actions.py | 130 | "email": "user@example.com", | CODE |
| LOW | …s-with-scallion-brown-butter-and-snow-peas-recipe.html | 1 | <!DOCTYPE html><html lang="en-US"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>Nu | CODE |
| LOW⚡ | tests/data/html/detroit-style-pepperoni-pizza.html | 924 | </p><ul class="ReviewListMeta-gTSwIE jdKQPB"><li class="BaseWrap-sc-TURhJ BaseText-fFzBQt ReviewListMetaItem-iuExFx eTiI | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/data/html/detroit-style-pepperoni-pizza.html | 924 | </p><ul class="ReviewListMeta-gTSwIE jdKQPB"><li class="BaseWrap-sc-TURhJ BaseText-fFzBQt ReviewListMetaItem-iuExFx eTiI | CODE |
| MEDIUM | mealie/routes/_base/controller.py | 157 | # In order to use a "" as a router and utilize the prefix in the original router | COMMENT |
| LOW | mealie/services/parser_services/ingredient_parser.py | 249 | # For now, just add them as a note ("and amt_1, and amt_2, and ...") | COMMENT |
| LOW | mealie/services/query_filter/builder.py | 632 | # this component does not have any keywords or operators, so we just add it as-is | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …services_tests/ingredient_parser/test_openai_parser.py | 49 | CODE | |
| LOW | mealie/middleware/locale_context.py | 22 | CODE | |
| LOW | mealie/repos/repository_recipes.py | 294 | CODE | |
| LOW | mealie/repos/repository_recipes.py | 387 | CODE | |
| LOW | mealie/db/models/recipe/nutrition.py | 36 | CODE | |
| LOW | mealie/db/models/recipe/recipe.py | 195 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mealie/schema/recipe/recipe.py | 43 | Generate a slug from a recipe name, truncating to a reasonable length. Args: name: The recipe name to creat | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/RecipePage/RecipePageParts/RecipePageInstructions.vue | 984 | return; // TODO: Handle error | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mealie/pkgs/safehttp/transport.py | 198 | def handle_request(self, request: httpx.Request) -> httpx.Response: | CODE |