├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── BUG.yml │ └── FEATURE.yml └── workflows │ ├── nightly.yml │ └── web.yml ├── .gitignore ├── .idea ├── .gitignore ├── .name ├── artifacts │ └── composeApp_jvm.xml ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── compiler.xml ├── deploymentTargetSelector.xml ├── gradle.xml ├── inspectionProfiles │ └── Project_Default.xml ├── kotlinc.xml ├── migrations.xml ├── misc.xml ├── runConfigurations.xml └── vcs.xml ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── build.gradle.kts ├── composeApp ├── .gitignore ├── build.gradle.kts ├── desktopAppIcons │ ├── LinuxIcon.png │ ├── MacosIcon.icns │ └── WindowsIcon.ico ├── proguard-rules.pro └── src │ ├── androidMain │ ├── AndroidManifest.xml │ ├── ic_debug_launcher-playstore.png │ ├── ic_nightly_launcher-playstore.png │ ├── kotlin │ │ └── de │ │ │ └── kitshn │ │ │ ├── AndroidApp.kt │ │ │ ├── App.android.kt │ │ │ ├── NewInstanceActivity.kt │ │ │ ├── PlatformDetails.android.kt │ │ │ ├── Utils.android.kt │ │ │ ├── actions │ │ │ ├── IntentHandler.kt │ │ │ └── handlers │ │ │ │ ├── AppLinkHandler.kt │ │ │ │ └── ShortcutHandler.kt │ │ │ ├── api │ │ │ └── tandoor │ │ │ │ └── model │ │ │ │ └── TandoorStep.android.kt │ │ │ ├── cache │ │ │ └── BaseCache.android.kt │ │ │ ├── crash │ │ │ ├── CrashReporting.android.kt │ │ │ └── acra │ │ │ │ ├── Acra.kt │ │ │ │ └── AcraCrashReportDialog.kt │ │ │ └── ui │ │ │ ├── component │ │ │ ├── input │ │ │ │ └── AlwaysDockedSearchBar.android.kt │ │ │ └── model │ │ │ │ └── recipe │ │ │ │ └── step │ │ │ │ └── RecipeStepMultimediaBox.android.kt │ │ │ ├── dialog │ │ │ ├── AdaptiveFullscreenDialog.android.kt │ │ │ └── ImmersiveFullscreenDialog.android.kt │ │ │ ├── modifier │ │ │ └── FullWidthAlertDialogPaddingModifier.android.kt │ │ │ ├── route │ │ │ ├── main │ │ │ │ └── Main.android.kt │ │ │ └── onboarding │ │ │ │ └── OnboardingSignInBrowser.android.kt │ │ │ ├── theme │ │ │ ├── Theme.android.kt │ │ │ └── custom │ │ │ │ └── AndroidDynamicColorScheme.android.kt │ │ │ └── view │ │ │ ├── recipe │ │ │ └── details │ │ │ │ └── RecipeDetails.android.kt │ │ │ └── settings │ │ │ ├── SettingsAbout.android.kt │ │ │ └── SettingsBehavior.android.kt │ └── res │ │ ├── drawable │ │ ├── bug_report_24px.xml │ │ ├── data_object_24px.xml │ │ ├── ic_books_foreground.xml │ │ ├── ic_debug_launcher_foreground.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_launcher_debug_foreground.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_launcher_nightly_foreground.xml │ │ ├── ic_logo.xml │ │ ├── ic_logo_animation.xml │ │ ├── ic_logo_ico.xml │ │ ├── ic_meal_plan_foreground.xml │ │ ├── ic_new_instance_foreground.xml │ │ ├── ic_nightly_launcher_foreground.xml │ │ ├── ic_shopping_foreground.xml │ │ └── ic_shopping_mode_foreground.xml │ │ ├── layout │ │ └── acra_crash_report_form.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_books.xml │ │ ├── ic_debug_launcher.xml │ │ ├── ic_debug_launcher_round.xml │ │ ├── ic_launcher.xml │ │ ├── ic_launcher_round.xml │ │ ├── ic_meal_plan.xml │ │ ├── ic_new_instance.xml │ │ ├── ic_nightly_launcher.xml │ │ ├── ic_nightly_launcher_round.xml │ │ ├── ic_shopping.xml │ │ └── ic_shopping_mode.xml │ │ ├── mipmap-hdpi │ │ ├── ic_books.webp │ │ ├── ic_debug_launcher.webp │ │ ├── ic_debug_launcher_round.webp │ │ ├── ic_launcher.png │ │ ├── ic_launcher_round.png │ │ ├── ic_meal_plan.webp │ │ ├── ic_new_instance.webp │ │ ├── ic_nightly_launcher.webp │ │ ├── ic_nightly_launcher_round.webp │ │ ├── ic_shopping.webp │ │ └── ic_shopping_mode.webp │ │ ├── mipmap-mdpi │ │ ├── ic_books.webp │ │ ├── ic_debug_launcher.webp │ │ ├── ic_debug_launcher_round.webp │ │ ├── ic_launcher.png │ │ ├── ic_launcher_round.png │ │ ├── ic_meal_plan.webp │ │ ├── ic_new_instance.webp │ │ ├── ic_nightly_launcher.webp │ │ ├── ic_nightly_launcher_round.webp │ │ ├── ic_shopping.webp │ │ └── ic_shopping_mode.webp │ │ ├── mipmap-xhdpi │ │ ├── ic_books.webp │ │ ├── ic_debug_launcher.webp │ │ ├── ic_debug_launcher_round.webp │ │ ├── ic_launcher.png │ │ ├── ic_launcher_round.png │ │ ├── ic_meal_plan.webp │ │ ├── ic_new_instance.webp │ │ ├── ic_nightly_launcher.webp │ │ ├── ic_nightly_launcher_round.webp │ │ ├── ic_shopping.webp │ │ └── ic_shopping_mode.webp │ │ ├── mipmap-xxhdpi │ │ ├── ic_books.webp │ │ ├── ic_debug_launcher.webp │ │ ├── ic_debug_launcher_round.webp │ │ ├── ic_launcher.png │ │ ├── ic_launcher_round.png │ │ ├── ic_meal_plan.webp │ │ ├── ic_new_instance.webp │ │ ├── ic_nightly_launcher.webp │ │ ├── ic_nightly_launcher_round.webp │ │ ├── ic_shopping.webp │ │ └── ic_shopping_mode.webp │ │ ├── mipmap-xxxhdpi │ │ ├── ic_books.webp │ │ ├── ic_debug_launcher.webp │ │ ├── ic_debug_launcher_round.webp │ │ ├── ic_launcher.png │ │ ├── ic_launcher_round.png │ │ ├── ic_meal_plan.webp │ │ ├── ic_new_instance.webp │ │ ├── ic_nightly_launcher.webp │ │ ├── ic_nightly_launcher_round.webp │ │ ├── ic_shopping.webp │ │ └── ic_shopping_mode.webp │ │ ├── resources.properties │ │ ├── values-cs │ │ └── strings.xml │ │ ├── values-de │ │ └── strings.xml │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-night-v31 │ │ └── themes.xml │ │ ├── values-pl │ │ └── strings.xml │ │ ├── values-pt-rBR │ │ └── strings.xml │ │ ├── values-sl │ │ └── strings.xml │ │ ├── values-ta │ │ └── strings.xml │ │ ├── values-tr │ │ └── strings.xml │ │ ├── values-uk │ │ └── strings.xml │ │ ├── values-v31 │ │ └── themes.xml │ │ ├── values │ │ ├── ic_debug_launcher_background.xml │ │ ├── ic_nightly_launcher_background.xml │ │ ├── strings.xml │ │ └── themes.xml │ │ └── xml │ │ ├── backup_rules.xml │ │ ├── data_extraction_rules.xml │ │ ├── network_security_config.xml │ │ └── shortcuts.xml │ ├── commonMain │ ├── composeResources │ │ ├── drawable │ │ │ ├── github_mark.xml │ │ │ ├── ic_format_h1.xml │ │ │ ├── ic_format_h2.xml │ │ │ ├── ic_format_h3.xml │ │ │ ├── ic_logo.xml │ │ │ ├── ic_logo_animation.xml │ │ │ ├── ic_logo_ico.xml │ │ │ └── ic_title.xml │ │ ├── files │ │ │ └── aboutlibraries.json │ │ ├── font │ │ │ ├── playfairdisplay_black.ttf │ │ │ ├── playfairdisplay_blackitalic.ttf │ │ │ ├── playfairdisplay_bold.ttf │ │ │ ├── playfairdisplay_bolditalic.ttf │ │ │ ├── playfairdisplay_extrabold.ttf │ │ │ ├── playfairdisplay_extrabolditalic.ttf │ │ │ ├── playfairdisplay_italic.ttf │ │ │ ├── playfairdisplay_medium.ttf │ │ │ ├── playfairdisplay_mediumitalic.ttf │ │ │ ├── playfairdisplay_regular.ttf │ │ │ ├── playfairdisplay_semibold.ttf │ │ │ └── playfairdisplay_semibolditalic.ttf │ │ ├── values-ca │ │ │ └── strings.xml │ │ ├── values-cs │ │ │ └── strings.xml │ │ ├── values-de │ │ │ └── strings.xml │ │ ├── values-es │ │ │ └── strings.xml │ │ ├── values-fr │ │ │ └── strings.xml │ │ ├── values-it │ │ │ └── strings.xml │ │ ├── values-nl │ │ │ └── strings.xml │ │ ├── values-pl │ │ │ └── strings.xml │ │ ├── values-pt-rBR │ │ │ └── strings.xml │ │ ├── values-ru │ │ │ └── strings.xml │ │ ├── values-sl │ │ │ └── strings.xml │ │ ├── values-ta │ │ │ └── strings.xml │ │ ├── values-tr │ │ │ └── strings.xml │ │ ├── values-uk │ │ │ └── strings.xml │ │ ├── values-zh-rCN │ │ │ └── strings.xml │ │ └── values │ │ │ └── strings.xml │ └── kotlin │ │ └── de │ │ └── kitshn │ │ ├── App.kt │ │ ├── Const.kt │ │ ├── FavoritesViewModel.kt │ │ ├── KitshnViewModel.kt │ │ ├── PlatformDetails.kt │ │ ├── Settings.kt │ │ ├── UiState.kt │ │ ├── Utils.kt │ │ ├── api │ │ ├── funding │ │ │ ├── FundingApiClient.kt │ │ │ ├── FundingCost.kt │ │ │ ├── FundingEvent.kt │ │ │ └── FundingStateResponse.kt │ │ └── tandoor │ │ │ ├── TandoorClient.kt │ │ │ ├── TandoorContainer.kt │ │ │ ├── TandoorMedia.kt │ │ │ ├── TandoorRequestState.kt │ │ │ ├── TandoorRequests.kt │ │ │ ├── model │ │ │ ├── TandoorFood.kt │ │ │ ├── TandoorIngredient.kt │ │ │ ├── TandoorKeyword.kt │ │ │ ├── TandoorMealPlan.kt │ │ │ ├── TandoorPagedResponse.kt │ │ │ ├── TandoorRecipeBook.kt │ │ │ ├── TandoorRecipeFilter.kt │ │ │ ├── TandoorSpace.kt │ │ │ ├── TandoorStep.kt │ │ │ ├── TandoorUnit.kt │ │ │ ├── TandoorUserPreference.kt │ │ │ ├── log │ │ │ │ └── TandoorCookLog.kt │ │ │ ├── recipe │ │ │ │ ├── TandoorRecipe.kt │ │ │ │ ├── TandoorRecipeFromSource.kt │ │ │ │ ├── TandoorRecipeOverview.kt │ │ │ │ ├── TandoorRecipeProperty.kt │ │ │ │ └── TandoorStepRecipeData.kt │ │ │ └── shopping │ │ │ │ ├── TandoorShopping.kt │ │ │ │ ├── TandoorSupermarket.kt │ │ │ │ └── TandoorSupermarketCategory.kt │ │ │ └── route │ │ │ ├── TandoorAIImportRoute.kt │ │ │ ├── TandoorBaseRoute.kt │ │ │ ├── TandoorCookLogRoute.kt │ │ │ ├── TandoorFoodRoute.kt │ │ │ ├── TandoorKeywordRoute.kt │ │ │ ├── TandoorMealPlanRoute.kt │ │ │ ├── TandoorMealTypeRoute.kt │ │ │ ├── TandoorRecipeBookRoute.kt │ │ │ ├── TandoorRecipeFromSourceRoute.kt │ │ │ ├── TandoorRecipeRoute.kt │ │ │ ├── TandoorServerSettingsRoute.kt │ │ │ ├── TandoorShoppingRoute.kt │ │ │ ├── TandoorSpaceRoute.kt │ │ │ ├── TandoorStepRoute.kt │ │ │ ├── TandoorSupermarketRoute.kt │ │ │ ├── TandoorUnitRoute.kt │ │ │ ├── TandoorUserPreferenceRoute.kt │ │ │ └── TandoorUserRoute.kt │ │ ├── cache │ │ ├── BaseCache.kt │ │ ├── FoodNameIdMapCache.kt │ │ ├── KeywordNameIdMapCache.kt │ │ ├── ShoppingListEntriesCache.kt │ │ └── ShoppingSupermarketCache.kt │ │ ├── crash │ │ └── CrashReporting.kt │ │ ├── homepage │ │ ├── builder │ │ │ ├── HomePageBuilder.kt │ │ │ ├── HomePageQueryParameters.kt │ │ │ └── HomePageSectionEnum.kt │ │ └── model │ │ │ ├── HomePage.kt │ │ │ └── HomePageSection.kt │ │ ├── model │ │ ├── SettingsItemModel.kt │ │ ├── form │ │ │ ├── KitshnForm.kt │ │ │ ├── KitshnFormSection.kt │ │ │ └── item │ │ │ │ ├── KitshnFormBaseItem.kt │ │ │ │ ├── KitshnFormCheckItem.kt │ │ │ │ ├── KitshnFormImageUploadItem.kt │ │ │ │ └── field │ │ │ │ ├── KitshnFormBaseFieldItem.kt │ │ │ │ ├── KitshnFormDateFieldItem.kt │ │ │ │ ├── KitshnFormDoubleFieldItem.kt │ │ │ │ ├── KitshnFormIntegerFieldItem.kt │ │ │ │ ├── KitshnFormMealTypeSearchFieldItem.kt │ │ │ │ ├── KitshnFormRecipeSearchFieldItem.kt │ │ │ │ ├── KitshnFormSelectUsersFieldItem.kt │ │ │ │ └── KitshnFormTextFieldItem.kt │ │ └── route │ │ │ └── ShoppingViewModel.kt │ │ ├── ui │ │ ├── IOSBackGestureHandler.kt │ │ ├── TandoorRequestErrorHandler.kt │ │ ├── component │ │ │ ├── ColorSchemePreviewCircle.kt │ │ │ ├── FundingBanner.kt │ │ │ ├── HorizontalDividerWithLabel.kt │ │ │ ├── LoadingGradientWrapper.kt │ │ │ ├── MarkdownRichTextWithTimerDetection.kt │ │ │ ├── alert │ │ │ │ ├── FullSizeAlertPane.kt │ │ │ │ └── LoadingErrorAlertPaneWrapper.kt │ │ │ ├── buttons │ │ │ │ ├── BackButton.kt │ │ │ │ ├── LoadingExtendedFloatingActionButton.kt │ │ │ │ └── WideActionChip.kt │ │ │ ├── editor │ │ │ │ ├── MarkdownEditor.kt │ │ │ │ └── MarkdownEditorRow.kt │ │ │ ├── home │ │ │ │ └── HomePageSectionView.kt │ │ │ ├── icons │ │ │ │ ├── IconWithState.kt │ │ │ │ ├── StarIcon.kt │ │ │ │ └── StarIconRow.kt │ │ │ ├── input │ │ │ │ ├── AlwaysDockedSearchBar.kt │ │ │ │ ├── DateField.kt │ │ │ │ ├── DoubleField.kt │ │ │ │ ├── FoodSearchField.kt │ │ │ │ ├── MealTypeSearchField.kt │ │ │ │ ├── NumberField.kt │ │ │ │ ├── SelectUsersField.kt │ │ │ │ ├── StarRatingSelectionInput.kt │ │ │ │ ├── UnitSearchField.kt │ │ │ │ ├── UserSearchField.kt │ │ │ │ └── recipe │ │ │ │ │ └── RecipeSearchField.kt │ │ │ ├── model │ │ │ │ ├── SectionStepIndicator.kt │ │ │ │ ├── SpaceSwitchIconButton.kt │ │ │ │ ├── ingredient │ │ │ │ │ ├── IngredientItem.kt │ │ │ │ │ └── IngredientsList.kt │ │ │ │ ├── mealplan │ │ │ │ │ ├── HorizontalMealPlanCard.kt │ │ │ │ │ ├── MealPlanDayCard.kt │ │ │ │ │ └── MealPlanDetailsCard.kt │ │ │ │ ├── recipe │ │ │ │ │ ├── HorizontalRecipeCard.kt │ │ │ │ │ ├── HorizontalRecipeCardLink.kt │ │ │ │ │ ├── RecipeCard.kt │ │ │ │ │ ├── RecipeCardInfoTag.kt │ │ │ │ │ ├── RecipeCardTimeTag.kt │ │ │ │ │ ├── RecipeInfoBlob.kt │ │ │ │ │ ├── RecipePropertiesCard.kt │ │ │ │ │ ├── button │ │ │ │ │ │ └── RecipeFavoriteButton.kt │ │ │ │ │ └── step │ │ │ │ │ │ ├── RecipeStepCard.kt │ │ │ │ │ │ ├── RecipeStepIndicator.kt │ │ │ │ │ │ ├── RecipeStepMultimediaBox.kt │ │ │ │ │ │ └── RecipeStepRecipeLink.kt │ │ │ │ ├── recipebook │ │ │ │ │ └── HorizontalRecipeBookCard.kt │ │ │ │ ├── servings │ │ │ │ │ └── ServingsSelector.kt │ │ │ │ └── shopping │ │ │ │ │ ├── ShoppingListEntryListItem.kt │ │ │ │ │ ├── ShoppingListGroupHeaderListItem.kt │ │ │ │ │ ├── recipeMealplan │ │ │ │ │ └── HorizontalRecipeMealPlanCard.kt │ │ │ │ │ └── shoppingMode │ │ │ │ │ ├── ShoppingModeListEntryListItem.kt │ │ │ │ │ └── ShoppingModeListGroupHeaderListItem.kt │ │ │ ├── onboarding │ │ │ │ ├── KitshnLogoAnimation.kt │ │ │ │ └── KitshnLogoAnimationWrapper.kt │ │ │ ├── search │ │ │ │ ├── AdditionalSearchSettingsChipRow.kt │ │ │ │ └── chips │ │ │ │ │ ├── FoodSearchSettingChip.kt │ │ │ │ │ ├── KeywordSearchSettingChip.kt │ │ │ │ │ ├── MinimumRatingSearchSettingChip.kt │ │ │ │ │ ├── NewSearchSettingChip.kt │ │ │ │ │ ├── RandomSearchSettingChip.kt │ │ │ │ │ └── SortingSearchSettingChip.kt │ │ │ ├── settings │ │ │ │ ├── SettingsListItem.kt │ │ │ │ └── SettingsSwitchListItem.kt │ │ │ ├── shopping │ │ │ │ ├── AdditionalShoppingSettingsChipRow.kt │ │ │ │ └── chips │ │ │ │ │ ├── GroupingSettingChip.kt │ │ │ │ │ └── SupermarketSettingChip.kt │ │ │ └── text │ │ │ │ └── DynamicGreetingTitle.kt │ │ ├── dialog │ │ │ ├── AboutLibraryBottomSheet.kt │ │ │ ├── AdaptiveFullscreenDialog.kt │ │ │ ├── ColorSchemeSelectionBottomSheet.kt │ │ │ ├── ImmersiveFullscreenDialog.kt │ │ │ ├── PhotoPickerDialog.kt │ │ │ ├── SpaceSwitchDialog.kt │ │ │ ├── TandoorRequestErrorDialog.kt │ │ │ ├── UseShareWrapperDialog.kt │ │ │ ├── common │ │ │ │ └── CommonDeletionDialog.kt │ │ │ ├── mealplan │ │ │ │ ├── MealPlanCreationAndEditDialog.kt │ │ │ │ └── MealPlanDetailsDialog.kt │ │ │ ├── peekaboo │ │ │ │ └── PhotoTakingDialog.kt │ │ │ ├── recipe │ │ │ │ ├── RecipeAddToShoppingDialog.kt │ │ │ │ ├── RecipeIngredientAllocationDialog.kt │ │ │ │ ├── RecipeLinkDialog.kt │ │ │ │ ├── creationandedit │ │ │ │ │ ├── DetailsPage.kt │ │ │ │ │ ├── KeywordsPage.kt │ │ │ │ │ ├── RecipeCreationAndEditDialog.kt │ │ │ │ │ └── StepsPage.kt │ │ │ │ ├── import │ │ │ │ │ ├── RecipeImportAIDialog.kt │ │ │ │ │ ├── RecipeImportCommon.kt │ │ │ │ │ ├── RecipeImportTypeSelectionBottomSheet.kt │ │ │ │ │ └── RecipeImportUrlDialog.kt │ │ │ │ └── step │ │ │ │ │ └── StepCreationAndEditDialog.kt │ │ │ ├── recipeBook │ │ │ │ ├── ManageRecipeInRecipeBooksDialog.kt │ │ │ │ └── RecipeBookCreationAndEditDialog.kt │ │ │ ├── select │ │ │ │ ├── SelectMultipleFoodsDialog.kt │ │ │ │ ├── SelectMultipleKeywordsDialog.kt │ │ │ │ ├── SelectMultipleUsersDialog.kt │ │ │ │ ├── SelectRecipeBookDialog.kt │ │ │ │ ├── SelectRecipeDialog.kt │ │ │ │ └── SelectSupermarketCategoryDialog.kt │ │ │ ├── servings │ │ │ │ └── ServingsChangeDialog.kt │ │ │ ├── shopping │ │ │ │ ├── ShoppingListEntriesClearDialog.kt │ │ │ │ ├── ShoppingListEntryCreationDialog.kt │ │ │ │ └── ShoppingListEntryDetailsBottomSheet.kt │ │ │ └── version │ │ │ │ ├── TandoorBetaInfoDialog.kt │ │ │ │ └── TandoorServerVersionCompatibilityDialog.kt │ │ ├── layout │ │ │ ├── KitshnListDetailPaneScaffold.kt │ │ │ ├── KitshnRecipeListRecipeDetailPaneScaffold.kt │ │ │ └── ResponsiveSideBySideLayout.kt │ │ ├── modifier │ │ │ ├── Autofill.kt │ │ │ ├── FullWidthAlertDialogPaddingModifier.kt │ │ │ └── LoadingPlaceholderModifier.kt │ │ ├── route │ │ │ ├── RouteParameters.kt │ │ │ ├── Routes.kt │ │ │ ├── alerts │ │ │ │ ├── InaccessibleInstance.kt │ │ │ │ └── OutdatedV1Instance.kt │ │ │ ├── main │ │ │ │ ├── Main.kt │ │ │ │ └── subroute │ │ │ │ │ ├── MainSubrouteNavigation.kt │ │ │ │ │ ├── MainSubroutes.kt │ │ │ │ │ ├── books │ │ │ │ │ ├── Books.kt │ │ │ │ │ ├── BooksListContent.kt │ │ │ │ │ └── BooksTopAppBar.kt │ │ │ │ │ ├── home │ │ │ │ │ ├── Home.kt │ │ │ │ │ ├── HomeDynamicLayout.kt │ │ │ │ │ ├── HomeMealPlanPromotionSection.kt │ │ │ │ │ └── HomeTraditionalLayout.kt │ │ │ │ │ ├── list │ │ │ │ │ └── List.kt │ │ │ │ │ ├── mealplan │ │ │ │ │ ├── Mealplan.kt │ │ │ │ │ ├── MealplanScaffoldContent.kt │ │ │ │ │ └── MealplanTopAppBar.kt │ │ │ │ │ ├── settings │ │ │ │ │ └── Settings.kt │ │ │ │ │ └── shopping │ │ │ │ │ └── Shopping.kt │ │ │ ├── navigation │ │ │ │ └── PrimaryNavigation.kt │ │ │ ├── onboarding │ │ │ │ ├── Onboarding.kt │ │ │ │ ├── OnboardingSignIn.kt │ │ │ │ ├── OnboardingSignInBrowser.kt │ │ │ │ └── OnboardingWelcome.kt │ │ │ ├── recipe │ │ │ │ ├── RecipePublic.kt │ │ │ │ ├── RecipeView.kt │ │ │ │ └── cook │ │ │ │ │ ├── RecipeCook.kt │ │ │ │ │ └── page │ │ │ │ │ ├── RecipeDone.kt │ │ │ │ │ └── RecipeStep.kt │ │ │ └── shopping │ │ │ │ └── ShoppingMode.kt │ │ ├── selectionMode │ │ │ ├── SelectionModeState.kt │ │ │ ├── component │ │ │ │ └── SelectionModeTopAppBar.kt │ │ │ ├── model │ │ │ │ └── RecipeSelectionMode.kt │ │ │ └── values │ │ │ │ ├── SelectionModeCardColors.kt │ │ │ │ └── SelectionModeListItemColors.kt │ │ ├── state │ │ │ ├── ErrorLoadingSuccessState.kt │ │ │ ├── ForeverLazyGridState.kt │ │ │ ├── ForeverLazyListState.kt │ │ │ ├── ForeverRememberIntState.kt │ │ │ ├── ForeverRememberListDetailPaneScaffoldNavigator.kt │ │ │ ├── ForeverRememberMutableStateList.kt │ │ │ ├── ForeverRememberNotSavable.kt │ │ │ ├── ForeverRememberPagerState.kt │ │ │ └── ForeverRememberScrollState.kt │ │ ├── theme │ │ │ ├── Color.kt │ │ │ ├── Theme.kt │ │ │ ├── Type.kt │ │ │ └── custom │ │ │ │ ├── AndroidDynamicColorScheme.kt │ │ │ │ ├── AvailableColorSchemes.kt │ │ │ │ ├── CupertinoColorScheme.kt │ │ │ │ └── DefaultColorScheme.kt │ │ └── view │ │ │ ├── ViewParameters.kt │ │ │ ├── books │ │ │ ├── BooksDetails.kt │ │ │ └── BooksDetailsTopAppBar.kt │ │ │ ├── home │ │ │ └── search │ │ │ │ ├── HomeSearch.kt │ │ │ │ ├── HomeSearchContent.kt │ │ │ │ └── HomeSearchState.kt │ │ │ ├── recipe │ │ │ └── details │ │ │ │ ├── RecipeDetails.kt │ │ │ │ └── RecipeDetailsDropdown.kt │ │ │ └── settings │ │ │ ├── SettingsAbout.kt │ │ │ ├── SettingsAppearance.kt │ │ │ ├── SettingsBehavior.kt │ │ │ ├── SettingsDebug.kt │ │ │ └── SettingsServer.kt │ │ └── version │ │ └── TandoorServerVersionCompatibility.kt │ ├── iosMain │ └── kotlin │ │ ├── de │ │ └── kitshn │ │ │ ├── PlatformDetails.ios.kt │ │ │ ├── Utils.ios.kt │ │ │ ├── actions │ │ │ └── handlers │ │ │ │ └── AppLinkHandler.kt │ │ │ ├── cache │ │ │ └── BaseCache.ios.kt │ │ │ ├── crash │ │ │ └── CrashReporting.ios.kt │ │ │ └── ui │ │ │ ├── component │ │ │ ├── input │ │ │ │ └── AlwaysDockedSearchBar.ios.kt │ │ │ └── model │ │ │ │ └── recipe │ │ │ │ └── step │ │ │ │ └── RecipeStepMultimediaBox.ios.kt │ │ │ ├── dialog │ │ │ ├── AdaptiveFullscreenDialog.ios.kt │ │ │ └── ImmersiveFullscreenDialog.ios.kt │ │ │ ├── modifier │ │ │ └── FullWidthAlertDialogPaddingModifier.ios.kt │ │ │ ├── route │ │ │ ├── main │ │ │ │ └── Main.ios.kt │ │ │ └── onboarding │ │ │ │ └── OnboardingSignInBrowser.ios.kt │ │ │ ├── theme │ │ │ ├── Theme.ios.kt │ │ │ └── custom │ │ │ │ └── AndroidDynamicColorScheme.ios.kt │ │ │ └── view │ │ │ ├── recipe │ │ │ └── details │ │ │ │ └── RecipeDetails.ios.kt │ │ │ └── settings │ │ │ ├── SettingsAbout.ios.kt │ │ │ └── SettingsBehavior.ios.kt │ │ └── main.kt │ ├── jvmMain │ └── kotlin │ │ ├── de │ │ └── kitshn │ │ │ ├── PlatformDetails.jvm.kt │ │ │ ├── Utils.jvm.kt │ │ │ ├── cache │ │ │ └── BaseCache.jvm.kt │ │ │ ├── crash │ │ │ └── CrashReporting.jvm.kt │ │ │ └── ui │ │ │ ├── component │ │ │ ├── input │ │ │ │ └── AlwaysDockedSearchBar.jvm.kt │ │ │ └── model │ │ │ │ └── recipe │ │ │ │ └── step │ │ │ │ └── RecipeStepMultimediaBox.jvm.kt │ │ │ ├── dialog │ │ │ ├── AdaptiveFullscreenDialog.jvm.kt │ │ │ ├── ImmersiveFullscreenDialog.jvm.kt │ │ │ └── peekaboo │ │ │ │ └── PhotoTakingDialog.jvm.kt │ │ │ ├── modifier │ │ │ └── FullWidthAlertDialogPaddingModifier.jvm.kt │ │ │ ├── route │ │ │ ├── main │ │ │ │ └── Main.jvm.kt │ │ │ └── onboarding │ │ │ │ └── OnboardingSignInBrowser.jvm.kt │ │ │ ├── theme │ │ │ ├── Theme.jvm.kt │ │ │ └── custom │ │ │ │ └── AndroidDynamicColorScheme.jvm.kt │ │ │ └── view │ │ │ ├── recipe │ │ │ └── details │ │ │ │ └── RecipeDetails.jvm.kt │ │ │ └── settings │ │ │ ├── SettingsAbout.jvm.kt │ │ │ └── SettingsBehavior.jvm.kt │ │ └── main.kt │ └── mobileMain │ └── kotlin │ └── de │ └── kitshn │ └── ui │ └── dialog │ └── peekaboo │ └── PhotoTakingDialog.mobile.kt ├── fastlane ├── Fastfile ├── Pluginfile ├── actions │ ├── change_version.rb │ ├── check_and_commit_release.rb │ ├── retrieve_version.rb │ ├── update_changelog.rb │ └── update_release_notes.rb └── metadata │ ├── android │ ├── de-DE │ │ ├── changelogs │ │ │ └── 100.txt │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── en-US │ │ ├── changelogs │ │ │ ├── 100.txt │ │ │ ├── 10000.txt │ │ │ ├── 101.txt │ │ │ ├── 102.txt │ │ │ ├── 103.txt │ │ │ ├── 104.txt │ │ │ ├── 105.txt │ │ │ ├── 106.txt │ │ │ ├── 107.txt │ │ │ ├── 108.txt │ │ │ ├── 109.txt │ │ │ ├── 110.txt │ │ │ ├── 1101.txt │ │ │ ├── 1102.txt │ │ │ ├── 1110.txt │ │ │ ├── 1120.txt │ │ │ ├── 1121.txt │ │ │ ├── 1130.txt │ │ │ ├── 1140.txt │ │ │ ├── 1150.txt │ │ │ ├── 1151.txt │ │ │ ├── 1152.txt │ │ │ ├── 1160.txt │ │ │ ├── 1170.txt │ │ │ ├── 1180.txt │ │ │ ├── 1190.txt │ │ │ ├── 1200.txt │ │ │ ├── 1210.txt │ │ │ ├── 1220.txt │ │ │ ├── 1230.txt │ │ │ ├── 1240.txt │ │ │ ├── 19001.txt │ │ │ ├── 19020.txt │ │ │ ├── 19030.txt │ │ │ ├── 19040.txt │ │ │ ├── 19050.txt │ │ │ ├── 19060.txt │ │ │ └── 19061.txt │ │ ├── full_description.txt │ │ ├── images │ │ │ ├── featureGraphic.png │ │ │ ├── icon.png │ │ │ ├── phoneScreenshots │ │ │ │ ├── 1_en-GB.png │ │ │ │ ├── 2_en-GB.png │ │ │ │ ├── 3_en-GB.png │ │ │ │ ├── 4_en-GB.png │ │ │ │ ├── 5_en-GB.png │ │ │ │ ├── 6_en-GB.png │ │ │ │ └── 7_en-GB.png │ │ │ ├── sevenInchScreenshots │ │ │ │ ├── 1_en-GB.png │ │ │ │ ├── 2_en-GB.png │ │ │ │ ├── 3_en-GB.png │ │ │ │ └── 4_en-GB.png │ │ │ └── tenInchScreenshots │ │ │ │ ├── 1_en-GB.png │ │ │ │ ├── 2_en-GB.png │ │ │ │ ├── 3_en-GB.png │ │ │ │ └── 4_en-GB.png │ │ ├── short_description.txt │ │ └── title.txt │ ├── es-ES │ │ ├── changelogs │ │ │ ├── 100.txt │ │ │ ├── 101.txt │ │ │ └── 102.txt │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── pl-PL │ │ ├── short_description.txt │ │ └── title.txt │ ├── sl │ │ ├── changelogs │ │ │ ├── 100.txt │ │ │ ├── 101.txt │ │ │ ├── 102.txt │ │ │ ├── 103.txt │ │ │ ├── 104.txt │ │ │ ├── 105.txt │ │ │ ├── 106.txt │ │ │ ├── 107.txt │ │ │ ├── 108.txt │ │ │ ├── 109.txt │ │ │ ├── 110.txt │ │ │ ├── 1101.txt │ │ │ ├── 1102.txt │ │ │ ├── 1110.txt │ │ │ ├── 1120.txt │ │ │ ├── 1121.txt │ │ │ ├── 1130.txt │ │ │ ├── 1140.txt │ │ │ ├── 1150.txt │ │ │ ├── 1151.txt │ │ │ ├── 1152.txt │ │ │ ├── 1160.txt │ │ │ ├── 1170.txt │ │ │ ├── 1180.txt │ │ │ ├── 1190.txt │ │ │ └── 1200.txt │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── ta-IN │ │ ├── changelogs │ │ │ ├── 100.txt │ │ │ ├── 101.txt │ │ │ ├── 102.txt │ │ │ ├── 103.txt │ │ │ ├── 104.txt │ │ │ ├── 105.txt │ │ │ ├── 106.txt │ │ │ ├── 107.txt │ │ │ ├── 108.txt │ │ │ ├── 109.txt │ │ │ ├── 110.txt │ │ │ ├── 1101.txt │ │ │ ├── 1102.txt │ │ │ ├── 1110.txt │ │ │ ├── 1120.txt │ │ │ ├── 1121.txt │ │ │ ├── 1130.txt │ │ │ ├── 1140.txt │ │ │ ├── 1150.txt │ │ │ ├── 1151.txt │ │ │ └── 1152.txt │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ └── uk │ │ ├── changelogs │ │ ├── 100.txt │ │ ├── 10000.txt │ │ ├── 101.txt │ │ ├── 102.txt │ │ ├── 103.txt │ │ ├── 104.txt │ │ ├── 105.txt │ │ ├── 106.txt │ │ ├── 107.txt │ │ ├── 108.txt │ │ ├── 109.txt │ │ ├── 110.txt │ │ ├── 1101.txt │ │ ├── 1102.txt │ │ ├── 1110.txt │ │ ├── 1120.txt │ │ ├── 1121.txt │ │ ├── 1130.txt │ │ ├── 1140.txt │ │ ├── 1150.txt │ │ ├── 1151.txt │ │ ├── 1152.txt │ │ ├── 1160.txt │ │ ├── 1170.txt │ │ ├── 1180.txt │ │ ├── 1190.txt │ │ ├── 1200.txt │ │ ├── 1210.txt │ │ ├── 1220.txt │ │ ├── 1230.txt │ │ ├── 1240.txt │ │ ├── 19001.txt │ │ ├── 19020.txt │ │ ├── 19030.txt │ │ └── 19040.txt │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── changelog.md │ └── en-US │ ├── description.txt │ ├── keywords.txt │ ├── name.txt │ ├── release_notes.txt │ └── subtitle.txt ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── images ├── badge_apple.png ├── badge_github.png ├── badge_google.png ├── btn_back.png ├── btn_dark_mode.png ├── btn_light_mode.png ├── screenshots_dark.md ├── screenshots_dark.png ├── screenshots_light.md ├── screenshots_light.png ├── screenshots_tablet_dark.png ├── screenshots_tablet_light.png ├── title.png ├── title_dark.png └── title_light.png ├── iosApp ├── import │ ├── ActionViewController.swift │ ├── Base.lproj │ │ └── MainInterface.storyboard │ ├── Info.plist │ └── Media.xcassets │ │ ├── AppIcon.appiconset │ │ ├── 1024_black.png │ │ ├── 1024_tinted.png │ │ ├── 1024_white.png │ │ └── Contents.json │ │ └── Contents.json ├── iosApp.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata └── iosApp │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ ├── 100.png │ │ ├── 1024.png │ │ ├── 114.png │ │ ├── 120.png │ │ ├── 128.png │ │ ├── 144.png │ │ ├── 152.png │ │ ├── 16.png │ │ ├── 167.png │ │ ├── 180.png │ │ ├── 20.png │ │ ├── 256.png │ │ ├── 29.png │ │ ├── 32.png │ │ ├── 40.png │ │ ├── 50.png │ │ ├── 512.png │ │ ├── 57.png │ │ ├── 58.png │ │ ├── 60.png │ │ ├── 64.png │ │ ├── 72.png │ │ ├── 76.png │ │ ├── 80.png │ │ ├── 87.png │ │ └── Contents.json │ └── Contents.json │ ├── Info.plist │ ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json │ ├── SubscriptionView.swift │ ├── com.apple.uikit.inputalternatives.plist │ ├── iosApp.entitlements │ └── iosApp.swift ├── kitshn.properties ├── settings.gradle.kts └── web ├── .gitignore ├── .vitepress ├── .gitignore ├── config.mts └── theme │ ├── custom.css │ └── index.ts ├── README.md ├── components ├── badge.vue └── screenshots.vue ├── contact.md ├── docs ├── build-and-config.md ├── features │ ├── embedding-videos-inside-steps.md │ ├── share-wrapping.md │ └── templating.md └── translate.md ├── download.md ├── funding.md ├── index.md ├── package-lock.json ├── package.json ├── public ├── android-icon-192x192.png ├── apple-icon-114x114.png ├── apple-icon-120x120.png ├── apple-icon-144x144.png ├── apple-icon-152x152.png ├── apple-icon-180x180.png ├── apple-icon-57x57.png ├── apple-icon-60x60.png ├── apple-icon-72x72.png ├── apple-icon-76x76.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-256x256.png ├── favicon-32x32.png ├── favicon-96x96.png ├── favicon.ico ├── images │ ├── badges │ │ ├── apple.png │ │ ├── fdroid.png │ │ ├── github.png │ │ ├── google_play.png │ │ ├── izzyondroid.png │ │ └── obtainium.png │ ├── docs │ │ └── features │ │ │ └── embedding-videos-inside-steps.png │ ├── logo.png │ └── screenshots │ │ ├── dark_phone_allocate_ingredients.png │ │ ├── dark_phone_cooking_mode.png │ │ ├── dark_phone_home.png │ │ ├── dark_phone_meal_plan.png │ │ ├── dark_phone_meal_plan_new.png │ │ ├── dark_phone_recipe.png │ │ ├── dark_phone_search.png │ │ ├── dark_phone_search_dialog.png │ │ ├── dark_tablet_allocate_ingredients.png │ │ ├── dark_tablet_cooking_mode.png │ │ ├── dark_tablet_home.png │ │ ├── dark_tablet_meal_plan.png │ │ ├── dark_tablet_meal_plan_new.png │ │ ├── dark_tablet_search.png │ │ ├── dark_tablet_search_dialog.png │ │ ├── light_phone_allocate_ingredients.png │ │ ├── light_phone_cooking_mode.png │ │ ├── light_phone_home.png │ │ ├── light_phone_meal_plan.png │ │ ├── light_phone_meal_plan_new.png │ │ ├── light_phone_recipe.png │ │ ├── light_phone_search.png │ │ ├── light_phone_search_dialog.png │ │ ├── light_tablet_allocate_ingredients.png │ │ ├── light_tablet_cooking_mode.png │ │ ├── light_tablet_home.png │ │ ├── light_tablet_meal_plan.png │ │ ├── light_tablet_meal_plan_new.png │ │ ├── light_tablet_search.png │ │ └── light_tablet_search_dialog.png ├── manifest.json ├── ms-icon-144x144.png ├── ms-icon-150x150.png ├── ms-icon-310x310.png └── ms-icon-70x70.png ├── screenshots.md └── translate.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: aimok04 2 | ko_fi: aimok04 3 | -------------------------------------------------------------------------------- /.github/workflows/web.yml: -------------------------------------------------------------------------------- 1 | name: Deploy kitshn.app 2 | on: 3 | push: 4 | paths: 5 | - 'web/**' 6 | workflow_dispatch: 7 | 8 | jobs: 9 | web: 10 | runs-on: ubuntu-latest 11 | permissions: 12 | contents: read 13 | deployments: write 14 | name: Deploy to Cloudflare Pages 15 | steps: 16 | - name: Checkout 17 | uses: actions/checkout@v4 18 | - name: Build 19 | working-directory: ./web 20 | run: npm install && npm run build 21 | - name: Publish 22 | uses: cloudflare/pages-action@v1 23 | with: 24 | apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} 25 | accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} 26 | projectName: kitshn-app 27 | directory: web/.vitepress/dist 28 | gitHubToken: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | .idea 17 | .kotlin 18 | build 19 | */build 20 | captures 21 | xcuserdata/ 22 | Pods/ 23 | *.jks 24 | *yarn.lock 25 | 26 | /composeApp/release 27 | /composeApp/debug 28 | /composeApp/nightly 29 | 30 | /fastlane/Appfile 31 | /fastlane/.env 32 | /fastlane/.env.default 33 | /fastlane/report.xml 34 | /fastlane/Preview.html 35 | /fastlane/out 36 | 37 | Package.resolved -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | kitshn -------------------------------------------------------------------------------- /.idea/artifacts/composeApp_jvm.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/composeApp/build/libs 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/deploymentTargetSelector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 16 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/kotlinc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/migrations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | 5 | plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') 6 | eval_gemfile(plugins_path) if File.exist?(plugins_path) 7 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.multiplatform).apply(false) 3 | alias(libs.plugins.compose.compiler).apply(false) 4 | alias(libs.plugins.compose).apply(false) 5 | alias(libs.plugins.android.application).apply(false) 6 | alias(libs.plugins.kotlinx.serialization).apply(false) 7 | alias(libs.plugins.buildConfig).apply(false) 8 | alias(libs.plugins.aboutlibraries) apply false 9 | } -------------------------------------------------------------------------------- /composeApp/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | 3 | # KCEF / compose webview 4 | /kcef-bundle -------------------------------------------------------------------------------- /composeApp/desktopAppIcons/LinuxIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/desktopAppIcons/LinuxIcon.png -------------------------------------------------------------------------------- /composeApp/desktopAppIcons/MacosIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/desktopAppIcons/MacosIcon.icns -------------------------------------------------------------------------------- /composeApp/desktopAppIcons/WindowsIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/desktopAppIcons/WindowsIcon.ico -------------------------------------------------------------------------------- /composeApp/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /composeApp/src/androidMain/ic_debug_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/ic_debug_launcher-playstore.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/ic_nightly_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/ic_nightly_launcher-playstore.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/AndroidApp.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn 2 | 3 | import android.app.Application 4 | import android.content.Context 5 | import de.kitshn.crash.acra.initKitshnAcra 6 | 7 | class AndroidApp : Application() { 8 | 9 | override fun attachBaseContext(base: Context?) { 10 | super.attachBaseContext(base) 11 | initKitshnAcra() 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/NewInstanceActivity.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn 2 | 3 | import android.content.Intent 4 | import androidx.activity.ComponentActivity 5 | 6 | class NewInstanceActivity : ComponentActivity() { 7 | override fun onResume() { 8 | startActivity( 9 | Intent(this, AppActivity::class.java) 10 | .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 11 | .addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK) 12 | ) 13 | 14 | finish() 15 | super.onResume() 16 | } 17 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/PlatformDetails.android.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn 2 | 3 | actual val platformDetails: PlatformDetails = PlatformDetails( 4 | platform = Platforms.ANDROID, 5 | packageName = BuildConfig.APPLICATION_ID, 6 | packageVersion = BuildConfig.VERSION_NAME, 7 | packageExtendedVersion = "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})", 8 | buildType = BuildConfig.BUILD_TYPE, 9 | debug = BuildConfig.DEBUG 10 | ) -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/actions/handlers/ShortcutHandler.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.actions.handlers 2 | 3 | import android.content.Intent 4 | import de.kitshn.KitshnViewModel 5 | 6 | fun KitshnViewModel.handleShortcut( 7 | intent: Intent 8 | ): Boolean { 9 | if(intent.action == Intent.ACTION_VIEW && (intent.dataString ?: "").startsWith("shortcut/")) { 10 | val routeId = intent.dataString!!.replaceFirst("shortcut/", "") 11 | 12 | if(listOf("mealplan", "shopping", "books").contains(routeId)) { 13 | mainSubNavHostController?.navigate(routeId) 14 | return true 15 | } else if(routeId == "shoppingMode") { 16 | navHostController?.navigate("shopping/shoppingMode") 17 | return true 18 | } 19 | } 20 | 21 | return false 22 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/cache/BaseCache.android.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.cache 2 | 3 | import android.content.Context 4 | import coil3.PlatformContext 5 | import com.russhwolf.settings.Settings 6 | import com.russhwolf.settings.SharedPreferencesSettings 7 | 8 | actual fun createCache(context: PlatformContext, id: String): Settings { 9 | val delegate = context.getSharedPreferences("CACHE_$id", Context.MODE_PRIVATE) 10 | return SharedPreferencesSettings(delegate) 11 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/crash/CrashReporting.android.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.crash 2 | 3 | import androidx.compose.runtime.Composable 4 | import org.acra.ACRA 5 | import org.acra.ktx.sendWithAcra 6 | 7 | @Composable 8 | actual fun crashReportHandler(): ((error: Throwable?) -> Unit)? = { 9 | if(it == null) { 10 | ACRA.errorReporter.handleException(null) 11 | } else { 12 | it.sendWithAcra() 13 | } 14 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/ui/component/input/AlwaysDockedSearchBar.android.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.component.input 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.platform.LocalConfiguration 5 | import androidx.compose.ui.unit.Dp 6 | import androidx.compose.ui.unit.dp 7 | 8 | @Composable 9 | internal actual fun getScreenHeight(): Dp { 10 | val configuration = LocalConfiguration.current 11 | return configuration.screenHeightDp.dp 12 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/ui/modifier/FullWidthAlertDialogPaddingModifier.android.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.modifier 2 | 3 | import android.os.Build 4 | import androidx.compose.foundation.layout.PaddingValues 5 | import androidx.compose.foundation.layout.WindowInsets 6 | import androidx.compose.foundation.layout.asPaddingValues 7 | import androidx.compose.foundation.layout.navigationBars 8 | import androidx.compose.runtime.Composable 9 | import androidx.compose.ui.unit.dp 10 | 11 | @Composable 12 | internal actual fun additionalPadding(): PaddingValues = PaddingValues( 13 | bottom = if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) { 14 | 24.dp + WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding() 15 | } else { 16 | 0.dp 17 | } 18 | ) -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/ui/route/main/Main.android.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.route.main 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.navigation.NavHostController 5 | import androidx.navigation.compose.rememberNavController 6 | 7 | @Composable 8 | actual fun rememberAlternateNavController(): NavHostController { 9 | return rememberNavController() 10 | } 11 | 12 | actual fun clearRememberAlternateNavController() {} -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/ui/route/onboarding/OnboardingSignInBrowser.android.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.route.onboarding 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | // needed for jvm implementation 6 | @Composable 7 | actual fun InitializeWebView( 8 | onInitialized: () -> Unit 9 | ) { 10 | onInitialized() 11 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/de/kitshn/ui/view/settings/SettingsBehavior.android.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.view.settings 2 | 3 | import androidx.compose.foundation.lazy.LazyListScope 4 | 5 | actual fun LazyListScope.prependItems() {} -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/drawable/ic_books_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_books.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_debug_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_debug_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_meal_plan.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_new_instance.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_nightly_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_nightly_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_shopping.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_shopping_mode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_books.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_debug_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_debug_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_debug_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_debug_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_meal_plan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_meal_plan.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_new_instance.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_new_instance.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_nightly_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_nightly_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_nightly_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_nightly_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_shopping.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_shopping.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_shopping_mode.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-hdpi/ic_shopping_mode.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_books.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_debug_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_debug_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_debug_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_debug_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_meal_plan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_meal_plan.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_new_instance.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_new_instance.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_nightly_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_nightly_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_nightly_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_nightly_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_shopping.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_shopping.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_shopping_mode.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-mdpi/ic_shopping_mode.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_books.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_debug_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_debug_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_debug_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_debug_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_meal_plan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_meal_plan.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_new_instance.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_new_instance.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_nightly_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_nightly_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_nightly_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_nightly_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_shopping.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_shopping.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_shopping_mode.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xhdpi/ic_shopping_mode.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_books.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_debug_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_debug_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_debug_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_debug_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_meal_plan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_meal_plan.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_new_instance.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_new_instance.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_nightly_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_nightly_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_nightly_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_nightly_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_shopping.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_shopping.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_shopping_mode.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_shopping_mode.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_books.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_books.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_debug_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_debug_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_debug_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_debug_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_meal_plan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_meal_plan.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_new_instance.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_new_instance.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_nightly_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_nightly_launcher.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_nightly_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_nightly_launcher_round.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_shopping.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_shopping.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_shopping_mode.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_shopping_mode.webp -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/resources.properties: -------------------------------------------------------------------------------- 1 | unqualifiedResLocale=en -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/values-night-v31/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/values-v31/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/values/ic_debug_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #452B00 4 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/values/ic_nightly_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #814C77 4 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 17 | 18 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/drawable/ic_format_h1.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/drawable/ic_title.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_black.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_blackitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_blackitalic.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_bold.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_bolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_bolditalic.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_extrabold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_extrabold.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_extrabolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_extrabolditalic.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_italic.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_medium.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_mediumitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_mediumitalic.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_regular.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_semibold.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/font/playfairdisplay_semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/composeApp/src/commonMain/composeResources/font/playfairdisplay_semibolditalic.ttf -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 如果您愿意,可以描述此错误是如何发生的。 4 | 不发送 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/Const.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn 2 | 3 | const val KITSHN_KEYWORD_FLAG_PREFIX = "kshn-" 4 | 5 | const val KITSHN_KEYWORD_FLAG__HIDE_INGREDIENT_ALLOCATION_ACTION_CHIP = 6 | "${KITSHN_KEYWORD_FLAG_PREFIX}haic" 7 | const val KITSHN_KEYWORD_FLAG__HIDE_INGREDIENT_ALLOCATION_ACTION_CHIP_DESC = 8 | "Flag to hide the ingredient allocation action chip" -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/PlatformDetails.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn 2 | 3 | enum class Platforms( 4 | val displayName: String 5 | ) { 6 | ANDROID("Android"), 7 | IOS("iOS"), 8 | JVM("Desktop") 9 | } 10 | 11 | class PlatformDetails( 12 | val platform: Platforms, 13 | val packageName: String, 14 | val packageVersion: String, 15 | val packageExtendedVersion: String, 16 | val buildType: String, 17 | val debug: Boolean 18 | ) 19 | 20 | expect val platformDetails: PlatformDetails -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/funding/FundingCost.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.funding 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class FundingCost( 7 | val type: String, 8 | val source: String, 9 | val label: String, 10 | val amount: Float, 11 | val currency: String 12 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/funding/FundingEvent.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.funding 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | class FundingEvent( 7 | val type: String, 8 | val percentage: Float, 9 | val goal: Double, 10 | val remainingSubscriptions: Int, 11 | val additionalContent: String?, 12 | val lastUpdate: Long 13 | ) { 14 | fun isBanner() = 15 | type == "banner" 16 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/funding/FundingStateResponse.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.funding 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class FundingStateResponse( 7 | val events: List, 8 | val costs: List 9 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/TandoorKeyword.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class TandoorKeyword( 7 | val id: Int, 8 | val name: String, 9 | val label: String = "", 10 | val description: String? = "", 11 | val numchild: Int = 0, 12 | val created_at: String, 13 | val updated_at: String, 14 | val full_name: String = "" 15 | ) 16 | 17 | @Serializable 18 | data class TandoorKeywordOverview( 19 | val id: Int, 20 | val label: String 21 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/TandoorPagedResponse.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class TandoorPagedResponse( 7 | val count: Int, 8 | val next: String?, 9 | val previous: String?, 10 | val timestamp: String, 11 | val results: List 12 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/TandoorRecipeFilter.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class TandoorRecipeFilter( 7 | val id: Int, 8 | val name: String 9 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/TandoorSpace.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class TandoorSpace( 7 | val id: Int, 8 | val name: String, 9 | val created_at: String, 10 | val message: String 11 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/TandoorUnit.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class TandoorUnit( 7 | val id: Int, 8 | val name: String, 9 | val plural_name: String? = null, 10 | val description: String? = null, 11 | val base_unit: String? = null, 12 | val open_data_slug: String? = null 13 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/TandoorUserPreference.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model 2 | 3 | import de.kitshn.api.tandoor.route.TandoorUser 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class TandoorUserPreference( 8 | val user: TandoorUser, 9 | val default_unit: String? = null, 10 | val plan_share: List 11 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/recipe/TandoorRecipeProperty.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model.recipe 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class TandoorRecipeProperty( 7 | val id: Long, 8 | val property_amount: Double = 0.0, 9 | val property_type: TandoorRecipePropertyType, 10 | ) 11 | 12 | @Serializable 13 | data class TandoorRecipePropertyType( 14 | val id: Long, 15 | val name: String, 16 | val unit: String? = "", 17 | val description: String? = "", 18 | val order: Long = 0L 19 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/recipe/TandoorStepRecipeData.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model.recipe 2 | 3 | import de.kitshn.api.tandoor.model.TandoorStep 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class TandoorStepRecipeData( 8 | val id: Int, 9 | val name: String, 10 | val steps: List 11 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/shopping/TandoorSupermarket.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model.shopping 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class TandoorSupermarket( 7 | val id: Int, 8 | val name: String, 9 | val description: String? = null, 10 | val category_to_supermarket: List = listOf() 11 | ) 12 | 13 | @Serializable 14 | data class TandoorSupermarketCategoryToSupermarket( 15 | val id: Int, 16 | val category: TandoorSupermarketCategory, 17 | val supermarket: Int, 18 | val order: Int = 0 19 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/model/shopping/TandoorSupermarketCategory.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.model.shopping 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class TandoorSupermarketCategory( 7 | val id: Int?, 8 | val name: String, 9 | val description: String? = null 10 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/route/TandoorBaseRoute.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.route 2 | 3 | import de.kitshn.api.tandoor.TandoorClient 4 | 5 | abstract class TandoorBaseRoute( 6 | open val client: TandoorClient 7 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/route/TandoorMealTypeRoute.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.route 2 | 3 | import de.kitshn.api.tandoor.TandoorClient 4 | import de.kitshn.api.tandoor.getObject 5 | import de.kitshn.api.tandoor.model.TandoorMealType 6 | import de.kitshn.api.tandoor.model.TandoorPagedResponse 7 | import de.kitshn.json 8 | 9 | class TandoorMealTypeRoute(client: TandoorClient) : TandoorBaseRoute(client) { 10 | 11 | suspend fun fetch(): List { 12 | val response = json.decodeFromString>( 13 | client.getObject("/meal-type/?page_size=100").toString() 14 | ) 15 | 16 | response.results.forEach { 17 | client.container.mealType[it.id] = it 18 | } 19 | 20 | return response.results 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/route/TandoorRecipeFromSourceRoute.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.route 2 | 3 | import de.kitshn.api.tandoor.TandoorClient 4 | import de.kitshn.api.tandoor.model.recipe.TandoorRecipeImportResponse 5 | import de.kitshn.api.tandoor.postObject 6 | import kotlinx.serialization.json.JsonPrimitive 7 | import kotlinx.serialization.json.buildJsonObject 8 | 9 | class TandoorRecipeFromSourceRoute(client: TandoorClient) : TandoorBaseRoute(client) { 10 | 11 | suspend fun fetch(url: String): TandoorRecipeImportResponse { 12 | val data = buildJsonObject { 13 | put("url", JsonPrimitive(url)) 14 | put("data", JsonPrimitive("")) 15 | } 16 | 17 | return TandoorRecipeImportResponse.parse( 18 | client, 19 | client.postObject("/recipe-from-source/", data).toString() 20 | ) 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/route/TandoorServerSettingsRoute.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.route 2 | 3 | import de.kitshn.api.tandoor.TandoorClient 4 | import de.kitshn.api.tandoor.getObject 5 | import de.kitshn.json 6 | import de.kitshn.saveBreadcrumb 7 | import kotlinx.serialization.Serializable 8 | 9 | @Serializable 10 | data class TandoorServerSettings( 11 | val enable_ai_import: Boolean = false, 12 | val version: String 13 | ) 14 | 15 | class TandoorServerSettingsRoute(client: TandoorClient) : TandoorBaseRoute(client) { 16 | 17 | suspend fun current(): TandoorServerSettings { 18 | val response = json.decodeFromString( 19 | client.getObject("/server-settings/current/").toString() 20 | ) 21 | 22 | saveBreadcrumb("serverVersion", response.version) 23 | 24 | client.container.serverSettings = response 25 | return response 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/route/TandoorStepRoute.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.route 2 | 3 | import de.kitshn.api.tandoor.TandoorClient 4 | import de.kitshn.api.tandoor.getObject 5 | import kotlinx.serialization.json.JsonObject 6 | 7 | class TandoorStepRoute(client: TandoorClient) : TandoorBaseRoute(client) { 8 | 9 | suspend fun getRaw( 10 | id: Int 11 | ): JsonObject { 12 | return client.getObject("/step/${id}/") 13 | } 14 | 15 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/api/tandoor/route/TandoorUserPreferenceRoute.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.api.tandoor.route 2 | 3 | import de.kitshn.api.tandoor.TandoorClient 4 | import de.kitshn.api.tandoor.getArray 5 | import de.kitshn.api.tandoor.model.TandoorUserPreference 6 | import de.kitshn.json 7 | 8 | class TandoorUserPreferenceRoute(client: TandoorClient) : TandoorBaseRoute(client) { 9 | 10 | suspend fun fetch(userId: Long? = null): TandoorUserPreference { 11 | val response = json.decodeFromString( 12 | client.getArray("/user-preference/${if(userId != null) "$userId/" else ""}")[0] 13 | .toString() 14 | ) 15 | 16 | return response 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/cache/BaseCache.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.cache 2 | 3 | import coil3.PlatformContext 4 | import com.russhwolf.settings.Settings 5 | import de.kitshn.api.tandoor.TandoorClient 6 | import kotlinx.datetime.Clock 7 | 8 | open class BaseCache( 9 | val id: String, 10 | platformContext: PlatformContext, 11 | val client: TandoorClient 12 | ) { 13 | 14 | val settings = createCache(platformContext, id) 15 | 16 | fun validUntil(time: Long) { 17 | settings.putLong("VALID_UNTIL", time) 18 | } 19 | 20 | fun isValid() = Clock.System.now().toEpochMilliseconds() < settings.getLong("VALID_UNTIL", 0L) 21 | 22 | } 23 | 24 | expect fun createCache(context: PlatformContext, id: String): Settings -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/cache/ShoppingSupermarketCache.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.cache 2 | 3 | import coil3.PlatformContext 4 | import de.kitshn.api.tandoor.TandoorClient 5 | import de.kitshn.api.tandoor.model.shopping.TandoorSupermarket 6 | import de.kitshn.json 7 | 8 | class ShoppingSupermarketCache( 9 | context: PlatformContext, 10 | client: TandoorClient 11 | ) : BaseCache("SHOPPING_SUPERMARKET", context, client) { 12 | 13 | fun update(supermarkets: List) { 14 | settings.putString("supermarkets", json.encodeToString(supermarkets)) 15 | } 16 | 17 | fun retrieve() = 18 | settings.getStringOrNull("supermarkets")?.let { 19 | json.decodeFromString>(it) 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/crash/CrashReporting.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.crash 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | expect fun crashReportHandler(): ((error: Throwable?) -> Unit)? -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/homepage/builder/HomePageQueryParameters.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.homepage.builder 2 | 3 | import de.kitshn.api.tandoor.route.TandoorRecipeQueryParametersSortOrder 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class HomePageQueryParameters( 8 | val query: String? = null, 9 | val new: Boolean? = null, 10 | val random: Boolean? = null, 11 | val keywords: List? = null, 12 | val foods: List? = null, 13 | val rating: Int? = null, 14 | val timescooked: Int? = null, 15 | var sortOrder: TandoorRecipeQueryParametersSortOrder? = null 16 | ) 17 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/homepage/model/HomePage.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.homepage.model 2 | 3 | import androidx.compose.runtime.mutableStateListOf 4 | import kotlinx.serialization.Serializable 5 | import kotlinx.serialization.Transient 6 | 7 | @Serializable 8 | class HomePage( 9 | val sections: MutableList, 10 | val validUntil: Long 11 | ) { 12 | @Transient 13 | val sectionsStateList = mutableStateListOf() 14 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/homepage/model/HomePageSection.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.homepage.model 2 | 3 | import de.kitshn.api.tandoor.route.TandoorRecipeQueryParameters 4 | import kotlinx.serialization.Serializable 5 | import kotlinx.serialization.Transient 6 | 7 | @Serializable 8 | class HomePageSection( 9 | val title: String, 10 | val queryParameters: List 11 | ) { 12 | 13 | @Transient 14 | val loading: Boolean = false 15 | 16 | @Transient 17 | val recipeIds = mutableListOf() 18 | 19 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/model/SettingsItemModel.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.model 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.graphics.vector.ImageVector 5 | 6 | open class SettingsBaseModel 7 | class SettingsDividerModel : SettingsBaseModel() 8 | 9 | data class SettingsItemModel( 10 | val id: String, 11 | val icon: ImageVector, 12 | val contentDescription: String, 13 | val label: String, 14 | val description: String, 15 | val content: @Composable (back: (() -> Unit)?) -> Unit 16 | ) : SettingsBaseModel() -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/model/form/KitshnFormSection.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.model.form 2 | 3 | import de.kitshn.model.form.item.KitshnFormBaseItem 4 | 5 | class KitshnFormSection( 6 | val items: List = listOf() 7 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/model/form/item/KitshnFormBaseItem.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.model.form.item 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.getValue 5 | import androidx.compose.runtime.mutableStateOf 6 | import androidx.compose.runtime.setValue 7 | import androidx.compose.ui.Modifier 8 | 9 | abstract class KitshnFormBaseItem { 10 | 11 | var generalError by mutableStateOf(null) 12 | 13 | @Composable 14 | open fun Render( 15 | modifier: Modifier 16 | ) { 17 | } 18 | 19 | open suspend fun submit(): Boolean { 20 | return true 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/model/form/item/field/KitshnFormBaseFieldItem.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.model.form.item.field 2 | 3 | import androidx.compose.runtime.Composable 4 | import de.kitshn.model.form.item.KitshnFormBaseItem 5 | 6 | abstract class KitshnFormBaseFieldItem( 7 | val label: @Composable () -> Unit, 8 | val placeholder: @Composable (() -> Unit)? = null, 9 | val leadingIcon: @Composable (() -> Unit)? = null, 10 | val trailingIcon: @Composable (() -> Unit)? = null, 11 | val prefix: @Composable (() -> Unit)? = null, 12 | val suffix: @Composable (() -> Unit)? = null, 13 | val optional: Boolean = false 14 | ) : KitshnFormBaseItem() -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/TandoorRequestErrorHandler.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui 2 | 3 | import androidx.compose.runtime.Composable 4 | import de.kitshn.api.tandoor.TandoorRequestState 5 | import de.kitshn.ui.dialog.TandoorRequestErrorDialog 6 | 7 | @Composable 8 | fun TandoorRequestErrorHandler( 9 | state: TandoorRequestState, 10 | onDismissDialog: () -> Unit = { } 11 | ) { 12 | TandoorRequestErrorDialog( 13 | state = state, 14 | onDismiss = onDismissDialog 15 | ) 16 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/component/editor/MarkdownEditor.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.component.editor 2 | 3 | import androidx.compose.foundation.layout.Column 4 | import androidx.compose.foundation.layout.fillMaxWidth 5 | import androidx.compose.runtime.Composable 6 | import androidx.compose.ui.Modifier 7 | import com.mohamedrejeb.richeditor.model.RichTextState 8 | import com.mohamedrejeb.richeditor.ui.material3.RichTextEditor 9 | 10 | @Composable 11 | fun MarkdownEditor( 12 | state: RichTextState 13 | ) { 14 | Column { 15 | RichTextEditor( 16 | state = state, 17 | modifier = Modifier.fillMaxWidth() 18 | ) 19 | 20 | MarkdownEditorRow( 21 | state = state 22 | ) 23 | } 24 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/component/icons/StarIconRow.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.component.icons 2 | 3 | import androidx.compose.foundation.layout.Row 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.ui.Modifier 6 | 7 | @Composable 8 | fun FiveStarIconRow( 9 | modifier: Modifier = Modifier, 10 | iconModifier: Modifier = Modifier, 11 | rating: Double 12 | ) { 13 | @Composable 14 | fun StarIconByValue( 15 | half: Double, 16 | full: Double 17 | ) { 18 | StarIcon(iconModifier, enabled = rating >= half, half = !(rating >= full)) 19 | } 20 | 21 | Row { 22 | repeat(5) { 23 | StarIconByValue( 24 | half = it + 0.5, 25 | full = it + 1.0 26 | ) 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/component/search/chips/NewSearchSettingChip.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.component.search.chips 2 | 3 | import androidx.compose.material3.FilterChip 4 | import androidx.compose.material3.Text 5 | import androidx.compose.runtime.Composable 6 | import de.kitshn.ui.component.search.AdditionalSearchSettingsChipRowState 7 | import kitshn.composeapp.generated.resources.Res 8 | import kitshn.composeapp.generated.resources.common_new 9 | import org.jetbrains.compose.resources.stringResource 10 | 11 | @Composable 12 | fun NewSearchSettingChip( 13 | state: AdditionalSearchSettingsChipRowState 14 | ) { 15 | FilterChip( 16 | selected = state.new, 17 | onClick = { 18 | state.new = !state.new 19 | state.update() 20 | }, 21 | label = { Text(stringResource(Res.string.common_new)) } 22 | ) 23 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/component/search/chips/RandomSearchSettingChip.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.component.search.chips 2 | 3 | import androidx.compose.material3.FilterChip 4 | import androidx.compose.material3.Text 5 | import androidx.compose.runtime.Composable 6 | import de.kitshn.ui.component.search.AdditionalSearchSettingsChipRowState 7 | import kitshn.composeapp.generated.resources.Res 8 | import kitshn.composeapp.generated.resources.common_random 9 | import org.jetbrains.compose.resources.stringResource 10 | 11 | @Composable 12 | fun RandomSearchSettingChip( 13 | state: AdditionalSearchSettingsChipRowState 14 | ) { 15 | FilterChip( 16 | selected = state.random, 17 | onClick = { 18 | state.random = !state.random 19 | state.update() 20 | }, 21 | label = { Text(stringResource(Res.string.common_random)) } 22 | ) 23 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/dialog/peekaboo/PhotoTakingDialog.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.dialog.peekaboo 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | fun PhotoTakingDialog( 7 | shown: Boolean, 8 | onSelect: (uri: ByteArray) -> Unit, 9 | onDismiss: () -> Unit 10 | ) { 11 | if(photoTakingDialogImpl( 12 | shown = shown, 13 | onSelect = onSelect, 14 | onDismiss = onDismiss 15 | ) 16 | ) return 17 | } 18 | 19 | @Composable 20 | expect fun photoTakingDialogImpl( 21 | shown: Boolean, 22 | onSelect: (uri: ByteArray) -> Unit, 23 | onDismiss: () -> Unit 24 | ): Boolean -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/route/RouteParameters.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.route 2 | 3 | import androidx.compose.foundation.layout.PaddingValues 4 | import androidx.navigation.NavBackStackEntry 5 | import de.kitshn.KitshnViewModel 6 | 7 | data class RouteParameters( 8 | val vm: KitshnViewModel, 9 | val bse: NavBackStackEntry, 10 | val onBack: (() -> Unit)? = null, 11 | val pv: PaddingValues = PaddingValues(), 12 | val goToMealPlanView: () -> Unit = {} 13 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/selectionMode/values/SelectionModeCardColors.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.selectionMode.values 2 | 3 | import androidx.compose.material3.CardColors 4 | import androidx.compose.material3.CardDefaults 5 | import androidx.compose.material3.MaterialTheme 6 | import androidx.compose.runtime.Composable 7 | 8 | @Composable 9 | fun CardDefaults.selectionModeCardColors( 10 | selected: Boolean, 11 | defaultCardColors: CardColors = cardColors(), 12 | selectionModeCardColors: CardColors = cardColors( 13 | containerColor = MaterialTheme.colorScheme.primaryContainer, 14 | contentColor = MaterialTheme.colorScheme.onPrimaryContainer 15 | ) 16 | ): CardColors { 17 | return if(selected) { 18 | selectionModeCardColors 19 | } else { 20 | defaultCardColors 21 | } 22 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/selectionMode/values/SelectionModeListItemColors.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.selectionMode.values 2 | 3 | import androidx.compose.material3.ListItemColors 4 | import androidx.compose.material3.ListItemDefaults 5 | import androidx.compose.material3.MaterialTheme 6 | import androidx.compose.runtime.Composable 7 | 8 | @Composable 9 | fun ListItemDefaults.selectionModeListItemColors( 10 | selected: Boolean, 11 | defaultColors: ListItemColors = colors(), 12 | selectionModeColors: ListItemColors = colors( 13 | containerColor = MaterialTheme.colorScheme.primaryContainer, 14 | headlineColor = MaterialTheme.colorScheme.onPrimaryContainer 15 | ) 16 | ): ListItemColors { 17 | return if(selected) { 18 | selectionModeColors 19 | } else { 20 | defaultColors 21 | } 22 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/theme/custom/AndroidDynamicColorScheme.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.theme.custom 2 | 3 | import androidx.compose.material3.ColorScheme 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.ui.graphics.Color 6 | 7 | expect fun isAndroidDynamicColorSchemeAvailable(): Boolean 8 | 9 | @Composable 10 | expect fun generateAndroidDynamicColorSchemePreview(): List 11 | 12 | @Composable 13 | expect fun generateAndroidDynamicColorScheme(dark: Boolean): ColorScheme? -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/de/kitshn/ui/view/ViewParameters.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.view 2 | 3 | import de.kitshn.KitshnViewModel 4 | 5 | class ViewParameters( 6 | val vm: KitshnViewModel, 7 | val back: (() -> Unit)? 8 | ) -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/PlatformDetails.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn 2 | 3 | import platform.Foundation.NSBundle 4 | import kotlin.experimental.ExperimentalNativeApi 5 | 6 | @OptIn(ExperimentalNativeApi::class) 7 | actual val platformDetails: PlatformDetails = PlatformDetails( 8 | platform = Platforms.IOS, 9 | packageName = NSBundle.mainBundle().bundleIdentifier ?: "unknown", 10 | packageVersion = NSBundle.mainBundle().infoDictionary?.get("CFBundleShortVersionString") 11 | ?.toString() ?: "unknown", 12 | packageExtendedVersion = "${ 13 | NSBundle.mainBundle().infoDictionary?.get("CFBundleShortVersionString") 14 | ?.toString() ?: "unknown" 15 | } (${ 16 | NSBundle.mainBundle().infoDictionary?.get("CFBundleVersion")?.toString() ?: "unknown" 17 | })", 18 | buildType = if(Platform.isDebugBinary) "DEBUG" else "RELEASE", 19 | debug = Platform.isDebugBinary 20 | ) -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/cache/BaseCache.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.cache 2 | 3 | import coil3.PlatformContext 4 | import com.russhwolf.settings.NSUserDefaultsSettings 5 | import com.russhwolf.settings.Settings 6 | 7 | actual fun createCache(context: PlatformContext, id: String): Settings { 8 | return NSUserDefaultsSettings.Factory().create(name = "CACHE_$id") 9 | } -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/crash/CrashReporting.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.crash 2 | 3 | import androidx.compose.runtime.Composable 4 | import co.touchlab.crashkios.bugsnag.BugsnagKotlin 5 | 6 | @Composable 7 | actual fun crashReportHandler(): ((error: Throwable?) -> Unit)? = { 8 | if(it == null) { 9 | BugsnagKotlin.sendHandledException(Exception("Throwable is null")) 10 | } else { 11 | BugsnagKotlin.sendHandledException(it) 12 | } 13 | } -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/ui/component/input/AlwaysDockedSearchBar.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.component.input 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.ExperimentalComposeUiApi 5 | import androidx.compose.ui.platform.LocalDensity 6 | import androidx.compose.ui.platform.LocalWindowInfo 7 | import androidx.compose.ui.unit.Dp 8 | 9 | @OptIn(ExperimentalComposeUiApi::class) 10 | @Composable 11 | internal actual fun getScreenHeight(): Dp { 12 | val density = LocalDensity.current 13 | val windowInfo = LocalWindowInfo.current 14 | return with(density) { 15 | windowInfo.containerSize.height.toDp() 16 | } 17 | } -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/ui/component/model/recipe/step/RecipeStepMultimediaBox.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.component.model.recipe.step 2 | 3 | import androidx.compose.runtime.Composable 4 | import de.kitshn.api.tandoor.model.TandoorStep 5 | 6 | @Composable 7 | actual fun isVideoSupported(): Boolean { 8 | return false 9 | } 10 | 11 | @Composable 12 | actual fun VideoDialog( 13 | onDismiss: () -> Unit, 14 | step: TandoorStep 15 | ) { 16 | } -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/ui/modifier/FullWidthAlertDialogPaddingModifier.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.modifier 2 | 3 | import androidx.compose.foundation.layout.PaddingValues 4 | import androidx.compose.runtime.Composable 5 | 6 | @Composable 7 | internal actual fun additionalPadding(): PaddingValues = PaddingValues() -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/ui/route/onboarding/OnboardingSignInBrowser.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.route.onboarding 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | // needed for jvm implementation 6 | @Composable 7 | actual fun InitializeWebView( 8 | onInitialized: () -> Unit 9 | ) { 10 | onInitialized() 11 | } -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/ui/theme/Theme.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.theme 2 | 3 | import androidx.compose.material3.ColorScheme 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.runtime.LaunchedEffect 6 | import platform.UIKit.UIApplication 7 | import platform.UIKit.UIStatusBarStyleDarkContent 8 | import platform.UIKit.UIStatusBarStyleLightContent 9 | import platform.UIKit.setStatusBarStyle 10 | 11 | @Composable 12 | internal actual fun SystemAppearance(isDark: Boolean) { 13 | LaunchedEffect(isDark) { 14 | UIApplication.sharedApplication.setStatusBarStyle( 15 | if(isDark) UIStatusBarStyleDarkContent else UIStatusBarStyleLightContent 16 | ) 17 | } 18 | } 19 | 20 | @Composable 21 | internal actual fun overrideColorScheme(darkTheme: Boolean, dynamicColor: Boolean): ColorScheme? { 22 | return null 23 | } 24 | 25 | actual fun isDynamicColorSupported() = false -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/ui/theme/custom/AndroidDynamicColorScheme.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.theme.custom 2 | 3 | import androidx.compose.material3.ColorScheme 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.ui.graphics.Color 6 | 7 | actual fun isAndroidDynamicColorSchemeAvailable(): Boolean = false 8 | 9 | @Composable 10 | actual fun generateAndroidDynamicColorSchemePreview(): List = listOf() 11 | 12 | @Composable 13 | actual fun generateAndroidDynamicColorScheme(dark: Boolean): ColorScheme? = null -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/de/kitshn/ui/view/recipe/details/RecipeDetails.ios.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.view.recipe.details 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | actual fun StatusBarBackground() { 7 | } -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/PlatformDetails.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn 2 | 3 | import kitshn.composeApp.BuildConfig 4 | 5 | actual val platformDetails: PlatformDetails = PlatformDetails( 6 | platform = Platforms.JVM, 7 | packageName = BuildConfig.PACKAGE_DESKTOP_NAME, 8 | packageVersion = BuildConfig.PACKAGE_VERSION_NAME + " / " + BuildConfig.PACKAGE_ALTERNATE_VERSION_NAME, 9 | packageExtendedVersion = "${BuildConfig.PACKAGE_VERSION_NAME} (${BuildConfig.PACKAGE_VERSION_CODE}) / ${BuildConfig.PACKAGE_ALTERNATE_VERSION_NAME} (${BuildConfig.PACKAGE_ALTERNATE_BUILD_VERSION_NAME})", 10 | buildType = "jvm", 11 | debug = false 12 | ) -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/cache/BaseCache.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.cache 2 | 3 | import coil3.PlatformContext 4 | import com.russhwolf.settings.PreferencesSettings 5 | import com.russhwolf.settings.Settings 6 | 7 | actual fun createCache(context: PlatformContext, id: String): Settings { 8 | return PreferencesSettings.Factory().create(name = "CACHE_$id") 9 | } -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/crash/CrashReporting.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.crash 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | actual fun crashReportHandler(): ((error: Throwable?) -> Unit)? = null -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/ui/component/input/AlwaysDockedSearchBar.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.component.input 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.ExperimentalComposeUiApi 5 | import androidx.compose.ui.platform.LocalDensity 6 | import androidx.compose.ui.platform.LocalWindowInfo 7 | import androidx.compose.ui.unit.Dp 8 | 9 | @OptIn(ExperimentalComposeUiApi::class) 10 | @Composable 11 | internal actual fun getScreenHeight(): Dp { 12 | val density = LocalDensity.current 13 | val windowInfo = LocalWindowInfo.current 14 | return with(density) { 15 | windowInfo.containerSize.height.toDp() 16 | } 17 | } -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/ui/component/model/recipe/step/RecipeStepMultimediaBox.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.component.model.recipe.step 2 | 3 | import androidx.compose.runtime.Composable 4 | import de.kitshn.api.tandoor.model.TandoorStep 5 | 6 | @Composable 7 | actual fun isVideoSupported(): Boolean { 8 | return false 9 | } 10 | 11 | @Composable 12 | actual fun VideoDialog( 13 | onDismiss: () -> Unit, 14 | step: TandoorStep 15 | ) { 16 | } -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/ui/dialog/peekaboo/PhotoTakingDialog.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.dialog.peekaboo 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | actual fun photoTakingDialogImpl( 7 | shown: Boolean, 8 | onSelect: (image: ByteArray) -> Unit, 9 | onDismiss: () -> Unit 10 | ): Boolean { 11 | return false 12 | } -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/ui/modifier/FullWidthAlertDialogPaddingModifier.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.modifier 2 | 3 | import androidx.compose.foundation.layout.PaddingValues 4 | import androidx.compose.runtime.Composable 5 | 6 | @Composable 7 | internal actual fun additionalPadding(): PaddingValues = PaddingValues() -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/ui/theme/Theme.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.theme 2 | 3 | import androidx.compose.material3.ColorScheme 4 | import androidx.compose.runtime.Composable 5 | 6 | @Composable 7 | internal actual fun SystemAppearance(isDark: Boolean) { 8 | } 9 | 10 | @Composable 11 | internal actual fun overrideColorScheme(darkTheme: Boolean, dynamicColor: Boolean): ColorScheme? { 12 | return null 13 | } 14 | 15 | actual fun isDynamicColorSupported() = false -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/ui/theme/custom/AndroidDynamicColorScheme.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.theme.custom 2 | 3 | import androidx.compose.material3.ColorScheme 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.ui.graphics.Color 6 | 7 | actual fun isAndroidDynamicColorSchemeAvailable(): Boolean = false 8 | 9 | @Composable 10 | actual fun generateAndroidDynamicColorSchemePreview(): List = listOf() 11 | 12 | @Composable 13 | actual fun generateAndroidDynamicColorScheme(dark: Boolean): ColorScheme? = null -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/ui/view/recipe/details/RecipeDetails.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.view.recipe.details 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | actual fun StatusBarBackground() { 7 | } -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/ui/view/settings/SettingsAbout.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.view.settings 2 | 3 | import androidx.compose.foundation.lazy.LazyListScope 4 | 5 | actual fun LazyListScope.platformSpecificItems() {} -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/de/kitshn/ui/view/settings/SettingsBehavior.jvm.kt: -------------------------------------------------------------------------------- 1 | package de.kitshn.ui.view.settings 2 | 3 | import androidx.compose.foundation.lazy.LazyListScope 4 | 5 | actual fun LazyListScope.prependItems() {} -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/main.kt: -------------------------------------------------------------------------------- 1 | import androidx.compose.desktop.ui.tooling.preview.Preview 2 | import androidx.compose.runtime.Composable 3 | import androidx.compose.runtime.DisposableEffect 4 | import androidx.compose.ui.unit.dp 5 | import androidx.compose.ui.window.Window 6 | import androidx.compose.ui.window.application 7 | import androidx.compose.ui.window.rememberWindowState 8 | import de.kitshn.App 9 | import dev.datlag.kcef.KCEF 10 | 11 | fun main() = application { 12 | Window( 13 | title = "kitshn", 14 | state = rememberWindowState(width = 800.dp, height = 600.dp), 15 | onCloseRequest = ::exitApplication, 16 | ) { 17 | App() 18 | } 19 | 20 | DisposableEffect(Unit) { 21 | onDispose { 22 | KCEF.disposeBlocking() 23 | } 24 | } 25 | } 26 | 27 | @Preview 28 | @Composable 29 | fun AppPreview() { 30 | App() 31 | } -------------------------------------------------------------------------------- /fastlane/Pluginfile: -------------------------------------------------------------------------------- 1 | # Autogenerated by fastlane 2 | # 3 | # Ensure this file is checked in to source control! 4 | 5 | gem 'fastlane-plugin-bugsnag' 6 | -------------------------------------------------------------------------------- /fastlane/actions/retrieve_version.rb: -------------------------------------------------------------------------------- 1 | module Fastlane 2 | module Actions 3 | class RetrieveVersionAction < Action 4 | def self.run(params) 5 | version = File.read("composeApp/build.gradle.kts").split("val kitshnVersionName = \"", 2)[1].split("\"")[0] 6 | UI.message("Found kitshn version: #{version}") 7 | return version 8 | end 9 | 10 | ##################################################### 11 | # @!group Documentation 12 | ##################################################### 13 | 14 | def self.description 15 | 'Retrieving current kitshn version from composeApp/build.gradle.kts' 16 | end 17 | 18 | def self.is_supported?(platform) 19 | true 20 | end 21 | end 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/changelogs/100.txt: -------------------------------------------------------------------------------- 1 | - Erster Release 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/short_description.txt: -------------------------------------------------------------------------------- 1 | Ein inoffizieller Client für die Tandoor Rezept-Management-Software. 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/title.txt: -------------------------------------------------------------------------------- 1 | kitshn (für Tandoor) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/100.txt: -------------------------------------------------------------------------------- 1 | - Initial release -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/10000.txt: -------------------------------------------------------------------------------- 1 | 1. Implemented support to select sharing users in meal plan creation/ edit dialog (#148). 2 | 2. Implemented support to select sharing users in recipe book creation/ edit dialog (#154). 3 | 3. Added check to prevent empty steps when importing recipes (#157). 4 | 4. Checked compatibility with Tandoor version 1.5.34. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/101.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): removed minifying 2 | - fix(mealplan): mealplanType color may now be undefined -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/102.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): removed kotlinCompilerExtensionVersion 2 | - fix(build.gradle): added dependenciesInfo -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/103.txt: -------------------------------------------------------------------------------- 1 | - feat(acra): switched to acra-http 2 | - feat(home): improved list performance 3 | - feat(requests): improved error dialog 4 | - fix(requests): fixed crashes 5 | - fix(vm): crash when unable to parse version 6 | - fix(build.gradle): added minifying back -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/104.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): added markdown support for step instructions (#1) 2 | - feat(recipes): added app links 3 | - feat(recipes): added share button 4 | - l10n(strings.xml): added Turkish (tr) (#3) (by @mikropsoft) 5 | - chore(libs): version bumps 6 | - multiple bug fixes and design improvements -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/105.txt: -------------------------------------------------------------------------------- 1 | - feat(onboarding): added API token sign in (#9) 2 | - feat(recipes): added auto timer links in instructions 3 | - feat(acra): added mail address field to AcraCrashReportDialog.kt 4 | - multiple bug fixes -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/106.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): added support for step image files (resolved #14) 2 | - feat(shopping): grouping shopping list entries by food (resolved #13) 3 | - feat(manifest): added support for self-signed certificates (resolved #11) 4 | - feat(app): added "new instance" shortcut 5 | - feat(recipes): added "add to shopping" item to dropdown menu 6 | - feat(recipes): added recipe book management dialog 7 | - feat(utils): improved human readable date labels 8 | - feat(recipes): improved horizontal layout for tablets in cook mode 9 | - chore(libs): version bumps 10 | - fix(recipes): migrated to different markdown library 11 | - fix(shopping): text fields are now single line 12 | - fix(onboarding): checking token/password prefix before autofill -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/107.txt: -------------------------------------------------------------------------------- 1 | - feat(ui): changed recipe and meal plan bottom sheets to dialogs 2 | - feat(ui): added animation to fullscreen dialog 3 | - feat(recipes): added ability to hide ingredient allocation action chip (#16) 4 | - feat(settings): added toggle to ignore unallocated ingredients (resolved #16) 5 | - chore(libs): version bumps 6 | - feat(manifest): changed app link host 7 | - feat(share): shortened share wrapper links 8 | - feat(about): added website 9 | - feat(about): changed contact mail 10 | - feat(acra): changed acra report url 11 | - feat(share): changed share wrapper url 12 | - fix(ui): status bar icon color in fullscreen dialog 13 | - fix(mealplan): hide keyboard after selecting meal type -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/108.txt: -------------------------------------------------------------------------------- 1 | Hotfix 2 | - fix(settings): resolved #17 (Crash when trying to share recipe) 3 | 4 | Changes for v1.0.0-alpha.8 5 | - feat(ui): changed recipe and meal plan bottom sheets to dialogs 6 | - feat(ui): added animation to fullscreen dialog 7 | - feat(recipes): added ability to hide ingredient allocation action chip (#16) 8 | - feat(settings): added toggle to ignore unallocated ingredients (resolved #16) 9 | - chore(libs): version bumps 10 | - feat(manifest): changed app link host 11 | - feat(share): shortened share wrapper links 12 | - feat(about): added website 13 | - feat(about): changed contact mail 14 | - feat(acra): changed acra report url 15 | - feat(share): changed share wrapper url 16 | - fix(ui): status bar icon color in fullscreen dialog 17 | - fix(mealplan): hide keyboard after selecting meal type -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/109.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): added support for step video files (resolved #15) 2 | - feat(recipes): keep screen on (#18) (by @FineFindus) 3 | - feat(ui): intercepting configuration changes 4 | - fix(strings.xml): corrected behavior description -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/110.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): added templating support for step instructions (#25) 2 | - feat(recipes): added properties card (#24) 3 | - feat(mealplan): improved ui for tablets/foldables 4 | - feat(dialog): improved adaptive fullscreen dialog size 5 | - feat(recipes): hiding FAB when reaching bottom for legibility 6 | - fix(recipes): prevent truncated ingredient text 7 | - fix(share): replaced hard coded url (resolved #22) 8 | - chore(libs): version bumps 9 | - multiple bug fixes -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1101.txt: -------------------------------------------------------------------------------- 1 | Hotfix 2 | - fix(dialog): ugly layout/animations in fullscreen dialog 3 | 4 | Changes for v1.0.0-alpha.10 5 | - feat(recipes): added templating support for step instructions (#25) 6 | - feat(recipes): added properties card (#24) 7 | - feat(mealplan): improved ui for tablets/foldables 8 | - feat(dialog): improved adaptive fullscreen dialog size 9 | - feat(recipes): hiding FAB when reaching bottom for legibility 10 | - fix(recipes): prevent truncated ingredient text 11 | - fix(share): replaced hard coded url (resolved #22) 12 | - chore(libs): version bumps 13 | - multiple bug fixes -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1102.txt: -------------------------------------------------------------------------------- 1 | Changes for v1.0.0-alpha.10.2 2 | - fix(properties): parsing issue (#25) 3 | 4 | Changes for v1.0.0-alpha.10.1 5 | - fix(dialog): ugly layout/animations in fullscreen dialog 6 | 7 | Changes for v1.0.0-alpha.10 8 | - feat(recipes): added templating support for step instructions (#25) 9 | - feat(recipes): added properties card (#24) 10 | - feat(mealplan): improved ui for tablets/foldables 11 | - feat(dialog): improved adaptive fullscreen dialog size 12 | - feat(recipes): hiding FAB when reaching bottom for legibility 13 | - fix(recipes): prevent truncated ingredient text 14 | - fix(share): replaced hard coded url (resolved #22) 15 | - chore(libs): version bumps 16 | - multiple bug fixes -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1110.txt: -------------------------------------------------------------------------------- 1 | - feat(behavior): added toggles for showing fractional values (#24) 2 | - feat(settings): added bug report button 3 | - feat(acra): added download button 4 | - chore(api): marked v1.5.20 as compatible -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1120.txt: -------------------------------------------------------------------------------- 1 | - feat(utils): set max decimal numbers to 2 (#24) 2 | - feat(home): improved dynamic home screen by caching foods and keywords 3 | - feat(home): added go-tos section 4 | - feat(home): added christmas section 5 | - feat(api): now retrieving version from openapi endpoint 6 | - fix(mealplan): respecting default mealplan share settings (resolved #19) 7 | - chore(api): marked v1.5.23 as compatible 8 | - chore(api): marked v1.5.21/22 as compatible -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1121.txt: -------------------------------------------------------------------------------- 1 | Hotfix 2 | - fix(recipes): issue with regex for template comments (resolved #27) 3 | 4 | Changes for v1.0.0-alpha.12 5 | - feat(utils): set max decimal numbers to 2 (#24) 6 | - feat(home): improved dynamic home screen by caching foods and keywords 7 | - feat(home): added go-tos section 8 | - feat(home): added christmas section 9 | - feat(api): now retrieving version from openapi endpoint 10 | - fix(mealplan): respecting default mealplan share settings (resolved #19) 11 | - chore(api): marked v1.5.23 as compatible 12 | - chore(api): marked v1.5.21/22 as compatible -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1130.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): added close functionality to list detail layout (resolved #28) 2 | - feat(ui): improved list detail pane size ratio 3 | - feat(various): added more TandoorRequestErrorHandlers 4 | - fix(import): added check to rule out double imports (resolved #29) 5 | - fix(home): issue with back gesture in search view 6 | - fix(recipes): several crash fixes and error handle improvements 7 | - fix(favorites): crash when retrieving favorites book 8 | - fix(recipes): crash when adding recipe to shopping list 9 | - fix(recipes): crash in RecipeCreationAndEditDialog 10 | - fix(api): added more information to TandoorRequestsError 11 | - chore(api): marked v1.5.24 as compatible -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1140.txt: -------------------------------------------------------------------------------- 1 | - feat(onboarding): added sign in via browser (resolved #30) 2 | - fix(recipes): blur overflow in recipe card info tag 3 | - fix(api): csrf issue when using Cookie log in (resolved #30) -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1150.txt: -------------------------------------------------------------------------------- 1 | kitshn was migrated to Kotlin/Compose Multiplatform. This enables compatibility with iOS. 2 | There might also be some differences/issues affecting the Android build. Feel free to report those on GitHub! :) 3 | 4 | - feat(commonMain): added experimental back gesture for iOS 5 | - feat(iosApp & composeApp): added Bugsnag crash reporting for iOS 6 | - fix(shopping): hiding items when "checked" set to true 7 | - fix(api): improved TandoorRequestsError message 8 | - chore(commonMain/api): marked v1.5.25/26 as compatible 9 | - l10n(Dutch): translated using Weblate 10 | - l10n(Russian): translated using Weblate 11 | - l10n(Ukrainian): translated using Weblate 12 | - kmpMigration -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1151.txt: -------------------------------------------------------------------------------- 1 | kitshn was migrated to Kotlin/Compose Multiplatform. This enables compatibility with iOS. 2 | There might also be some differences/issues affecting the Android build. Feel free to report those on GitHub! :) 3 | 4 | Hotfix 5 | - fix(build.gradle): set jvmToolchain to 17 for F-Droid build 6 | 7 | - feat(commonMain): added experimental back gesture for iOS 8 | - feat(iosApp & composeApp): added Bugsnag crash reporting for iOS 9 | - fix(shopping): hiding items when "checked" set to true 10 | - fix(api): improved TandoorRequestsError message 11 | - chore(commonMain/api): marked v1.5.25/26 as compatible 12 | - l10n(Dutch): translated using Weblate 13 | - l10n(Russian): translated using Weblate 14 | - l10n(Ukrainian): translated using Weblate 15 | - kmpMigration -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1152.txt: -------------------------------------------------------------------------------- 1 | kitshn was migrated to Kotlin/Compose Multiplatform. This enables compatibility with iOS. 2 | There might also be some differences/issues affecting the Android build. Feel free to report those on GitHub! :) 3 | 4 | Changes for v1.0.0-alpha.15.2 5 | - fix(build.gradle): disable CompileArtProfileTask for reproducibility 6 | 7 | Changes for v1.0.0-alpha.15.1 8 | - fix(build.gradle): set jvmToolchain to 17 for F-Droid build 9 | 10 | - feat(commonMain): added experimental back gesture for iOS 11 | - feat(iosApp & composeApp): added Bugsnag crash reporting for iOS 12 | - fix(shopping): hiding items when "checked" set to true 13 | - fix(api): improved TandoorRequestsError message 14 | - chore(commonMain/api): marked v1.5.25/26 as compatible 15 | - l10n(Dutch): translated using Weblate 16 | - l10n(Russian): translated using Weblate 17 | - l10n(Ukrainian): translated using Weblate 18 | - kmpMigration -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1170.txt: -------------------------------------------------------------------------------- 1 | Hey ✌️ 2 | This weeks release is focused around bringing some major features and improvements to the iOS platform. 3 | There are also some changes affecting all platforms: 4 | 5 | 1. 🇸🇮 Slovenian has been added on Weblate (by @vednolacni). 6 | 2. kitshn now uses a new markdown library which improves style. 7 | 3. Different pages with lazy loading have been improved. 8 | 4. Recipe books now also show recipes from filters (#67). 9 | 5. Some bug fixes and small improvements. 10 | 6. Checked compatibility with Tandoor versions 1.5.28/29/30. 11 | 12 | kitshn has hit 200 stars this month 🥳 13 | Thank you for your support :) -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1180.txt: -------------------------------------------------------------------------------- 1 | Hey ✌️ 2 | This weeks release adds two new languages and some minor changes: 3 | 4 | 1. 🇫🇷 French has been added on Weblate (by @KcivazB). 5 | 2. 🇪🇸 Spanish has been added on Weblate (by @1024mb). 6 | 3. Added an option to disable the dynamic recommendations on the home screen. 7 | 4. Added support for custom headers for authentication. 8 | 5. Added bug report button on onboarding page. 9 | 6. Fixed some layout and UI issues. 10 | 7. Checked compatibility with Tandoor version 1.5.31. 11 | 12 | The next release will focus around improving the shopping list page :) -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1190.txt: -------------------------------------------------------------------------------- 1 | Hey ✌️ 2 | This weeks release focuses on improving the shopping experience 🛍️ 🛒 3 | 4 | 1. Overhauled shopping list UI (#93). 5 | 2. Added shopping mode with bigger touch targets. 6 | 3. Added support for grouping by category, recipe and creator on shopping page (#92). 7 | 4. Added support for filtering by supermarket on shopping page (#93). 8 | 5. Implemented offline mode and caching for shopping list. 9 | 6. Added space switcher on home page by using web scraping (see #59). 10 | 7. Fixed common » Placement happened before lookahead « crash. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1210.txt: -------------------------------------------------------------------------------- 1 | 1. Add new » Add to shopping « dialog for individual selection of ingredients. 2 | 2. Add » Review items before adding to shopping « switch when creating new meal plan entry. 3 | 3. Add option to display tomorrow's meal plan entries on home. 4 | 4. kitshn now displays the step name in cooking mode. 5 | 5. Fix servings amount reset after opening cooking mode from meal plan entry. 6 | 6. Fix recipe book showing as empty when only containing filtered recipes. 7 | 9. Fix supermarket categories sorted wrong. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1220.txt: -------------------------------------------------------------------------------- 1 | 1. Improved size ratio on pages with list detail layouts. 2 | 2. Improved scrolling in shopping and shopping mode. 3 | 3. Improved error dialog and error handling. 4 | 4. Added placeholder icon to empty recipe books. 5 | 5. Fixed annoying error dialog when having empty recipe books. 6 | 6. Fixed » servings « label being in German when language is set to English. 7 | 7. Fixed crash when selecting a supermarket without assigned categories. 8 | 8. 🇹🇷 Turkish has been brought up to date (by @mikropsoft). -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1230.txt: -------------------------------------------------------------------------------- 1 | Hey ✌️ 2 | This week's release just contains minor improvements: 3 | 4 | 1. Added supermarket caching on shopping page for offline mode (#142). 5 | 2. Implemented fractional servings for recipes (#143). 6 | 3. Checked compatibility with Tandoor version 1.5.32. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1240.txt: -------------------------------------------------------------------------------- 1 | 1. 🇨🇿 Czech has been added on Weblate (by @hernikplays). 2 | 2. Implemented human readable date labels for iOS (already supported on Android). 3 | 3. Now defaulting to recipe's servings value when adding to meal plan (#147) (by @Monforton). 4 | 4. Now defaulting to recipe's servings value when selecting a recipe in meal plan creation/edit dialog. 5 | 5. Fixed error when trying to add recipe ingredients to shopping list. 6 | 6. Checked compatibility with Tandoor version 1.5.33. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/19001.txt: -------------------------------------------------------------------------------- 1 | BETA: This beta introduces compatibility with Tandoor v2. This version is not compatible with servers running Tandoor v1. 2 | 3 | 1. 🇮🇹 Italian has been added on Weblate (by @KindaArtsy). 4 | 2. Improved space switching due to new API. 5 | 3. Improved timer detection with support for hours. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/19020.txt: -------------------------------------------------------------------------------- 1 | BETA: This beta introduces compatibility with Tandoor v2. This version is not compatible with servers running Tandoor v1. 2 | 3 | 1. Implemented fractional servings for meal plans. 4 | 2. Added support to display hours in duration chips. 5 | 3. Implemented shortcuts for meal plan, shopping, shopping mode and books on Android. 6 | 4. Fixed ingredients appearing as duplicates when unchecking items in ingredient allocation dialog. 7 | 5. Dutch has been updated (by @jstrvr). 8 | 6. French has been updated (by @letroll). -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/19030.txt: -------------------------------------------------------------------------------- 1 | BETA: This beta introduces compatibility with Tandoor v2. This version is not compatible with servers running Tandoor v1. 2 | 3 | 1. Added support for AI import, a new feature of Tandoor v2. 4 | 2. Implemented button to clear shopping list from all or done entries. 5 | 3. Added recipe name to sharing text for easier identification. 6 | 4. Enabled users to disable the shopping mode enlargement. 7 | 5. Checked compatibility with Tandoor version 2.0.0-alpha-2. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/19040.txt: -------------------------------------------------------------------------------- 1 | BETA: This beta introduces compatibility with Tandoor v2. This version is not compatible with servers running Tandoor v1. 2 | 3 | 1. Fixed issue were meal plan entries were added to wrong dates. 4 | 2. Fixed issue with opening app links created on Tandoor v2 due to changed URL. 5 | 3. Improved legibility of shopping list clearing dialog. 6 | 4. Checked compatibility with Tandoor version 2.0.0-alpha-3. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/19050.txt: -------------------------------------------------------------------------------- 1 | BETA: This beta introduces compatibility with Tandoor v2. This version is not compatible with servers running Tandoor v1. 2 | 3 | 1. Implemented step editing and creation with markdown support. 4 | 2. 🇵🇱 Polish has been added on Weblate (thanks to @dhunter49). -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/19060.txt: -------------------------------------------------------------------------------- 1 | BETA: This beta introduces compatibility with Tandoor v2. This version is not compatible with servers running Tandoor v1. 2 | 3 | 1. Improved search dialog layout and actions. 4 | 2. Fixed issue where wrong meal plan entries where shown on home. 5 | 3. Fixed issue where some recipe data wasn't updated correctly. 6 | 4. 🇪🇸 Spanish has been brought up to date (by @1024mb). 7 | 5. 🇮🇹 Italian has been updated (by @KindaArtsy). 8 | 6. 🇫🇷 French has been updated (by @whayn). -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/19061.txt: -------------------------------------------------------------------------------- 1 | BETA: This beta introduces compatibility with Tandoor v2. This version is not compatible with servers running Tandoor v1. 2 | 3 | 1. Improved search dialog layout and actions. 4 | 2. Fixed issue where wrong meal plan entries where shown on home. 5 | 3. Fixed issue where some recipe data wasn't updated correctly. 6 | 4. 🇪🇸 Spanish has been brought up to date (by @1024mb). 7 | 5. 🇮🇹 Italian has been updated (by @KindaArtsy). 8 | 6. 🇫🇷 French has been updated (by @whayn). -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/7_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/phoneScreenshots/7_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/1_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/sevenInchScreenshots/1_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/2_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/sevenInchScreenshots/2_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/3_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/sevenInchScreenshots/3_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/4_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/sevenInchScreenshots/4_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/1_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/tenInchScreenshots/1_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/2_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/tenInchScreenshots/2_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/3_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/tenInchScreenshots/3_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/4_en-GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/fastlane/metadata/android/en-US/images/tenInchScreenshots/4_en-GB.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | An unofficial client for the self-hosted Tandoor recipe management software. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | kitshn (for Tandoor) -------------------------------------------------------------------------------- /fastlane/metadata/android/es-ES/changelogs/100.txt: -------------------------------------------------------------------------------- 1 | - Lanzamiento inicial 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es-ES/changelogs/101.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): eliminada la minificación 2 | - fix(mealplan): el color de mealplanType ahora puede ser no definido 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es-ES/changelogs/102.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): kotlinCompilerExtensionVersion removido 2 | - fix(build.gradle): dependenciesInfo agregado 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es-ES/short_description.txt: -------------------------------------------------------------------------------- 1 | Un cliente no oficial para el software de gestión de recetas Tandoor. 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es-ES/title.txt: -------------------------------------------------------------------------------- 1 | kitshn (para Tandoor) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl-PL/short_description.txt: -------------------------------------------------------------------------------- 1 | Nieoficjalny klient Tandoor do zarządzania przepisami (self-hosted). 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl-PL/title.txt: -------------------------------------------------------------------------------- 1 | kitshn (dla Tandoor) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/100.txt: -------------------------------------------------------------------------------- 1 | - Začetna izdaja 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/101.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): odstranjeno pomanjševanje 2 | - fix(mealplan): barva vrste mealplanType je zdaj morda nedefinirana 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/102.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): odstranjen kotlinCompilerExtensionVersion 2 | - fix(build.gradle): dodane informacije o odvisnostih 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/103.txt: -------------------------------------------------------------------------------- 1 | - feat(acra): preklop na acra-http 2 | - feat(home): izboljšana zmogljivost seznama 3 | - feat(requests): izboljšano pogovorno okno o napakah 4 | - fix(requests): popravljene zrušitve 5 | - fix(vm): zruši se, ko ni mogoče razčleniti različice 6 | - fix(build.gradle): dodano pomanjševanje nazaj 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/104.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): dodana podpora za označevanje za navodila po korakih (št. 1) 2 | - feat(recepti): dodane povezave do aplikacij 3 | - feat(recepti): dodan gumb za skupno rabo 4 | - l10n(strings.xml): dodan turški (tr) (#3) (avtor @mikropsoft) 5 | - chore(libs): izbokline različic 6 | - številni popravki napak in izboljšave oblikovanja 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/105.txt: -------------------------------------------------------------------------------- 1 | - feat(onboarding): dodan API token prijava (#9) 2 | - feat(recipes): dodane povezave za samodejni časovnik v navodilih 3 | - feat(acra): dodano polje poštnega naslova v AcraCrashReportDialog.kt 4 | - več popravkov napak 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/106.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): dodana podpora za slikovne datoteke korakov (razrešeno #14) 2 | - feat(shopping): združevanje vnosov na nakupovalni seznam glede na hrano (razrešeno #13) 3 | - feat(manifest): dodana podpora za samopodpisana potrdila (razrešeno #11) 4 | - feat(app): dodana bližnjica "nova instanca". 5 | - feat(recipes): v spustni meni dodan element "dodaj v nakupovanje". 6 | - feat(recipes): dodano pogovorno okno za upravljanje knjige receptov 7 | - feat(utils): izboljšane človeku berljive datumske oznake 8 | - feat(recipes): izboljšana horizontalna postavitev za tablice v načinu kuhanja 9 | - chore(libs): izbokline različic 10 | - popravek (recepti): preseljeno v drugo knjižnico markdown 11 | - popravek (nakupovanje): besedilna polja so zdaj enovrstična 12 | - popravek (onboarding): preverjanje predpone žetona/gesla pred samodejnim izpolnjevanjem 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/107.txt: -------------------------------------------------------------------------------- 1 | - feat(ui): spremenjeni spodnji listi receptov in načrtov obrokov v pogovorna okna 2 | - feat(ui): dodana animacija v celozaslonsko pogovorno okno 3 | - feat(recipes): dodana možnost skrivanja akcijskega čipa za dodelitev sestavin (#16) 4 | - feat(settings): dodan preklop za ignoriranje nedodeljenih sestavin (razrešeno #16) 5 | - chore(libs): izbokline različic 6 | - feat(manifest): spremenjen gostitelj povezave aplikacije 7 | - feat(share): skrajšane ovojne povezave deležev 8 | - feat(about): dodano spletno mesto 9 | - feat(about): spremenjena kontaktna pošta 10 | - feat(acra): spremenjen URL poročila acra 11 | - feat(share): spremenjen url ovojnice deljenja 12 | - fix(ui): barva ikone vrstice stanja v celozaslonskem pogovornem oknu 13 | - popravek (načrt obroka): skrij tipkovnico po izbiri vrste obroka 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/109.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): dodana podpora za korak video datoteke (razrešeno #15) 2 | - podvig(recepti): pusti zaslon vključen (#18) (avtor @FineFindus) 3 | - feat(ui): prestrezanje sprememb konfiguracije 4 | - fix(strings.xml): popravljen opis obnašanja 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/110.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): dodana podpora za predloge za navodila po korakih (#25) 2 | - feat(recipes): dodana kartica lastnosti (#24) 3 | - feat(mealplan): izboljšan uporabniški vmesnik za tablične računalnike/zložljive naprave 4 | - feat(dialog): izboljšana prilagodljiva velikost celozaslonskega pogovornega okna 5 | - feat(recipes): skrivanje FAB, ko dosežete dno za berljivost 6 | - fix(recipes): prepreči okrnjeno besedilo sestavin 7 | - fix(share): zamenjan trdo kodiran url (razrešeno #22) 8 | - chore(libs): izbokline različic 9 | - več popravkov napak 10 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1101.txt: -------------------------------------------------------------------------------- 1 | Hitri popravek 2 | - popravek (pogovorno okno): grda postavitev/animacije v celozaslonskem pogovornem oknu 3 | Spremembe za v1.0.0-alpha.10 4 | - feat(recipes): dodana podpora za predloge za navodila po korakih (#25) 5 | - feat(recipes): dodana kartica lastnosti (#24) 6 | - feat(mealplan): izboljšan uporabniški vmesnik za tablične računalnike/zložljive naprave 7 | - feat(dialog): izboljšana prilagodljiva velikost celozaslonskega pogovornega okna 8 | - feat(recipes): skrivanje FAB, ko dosežete dno za berljivost 9 | - fix(recipes): prepreči okrnjeno besedilo sestavin 10 | - fix(share): zamenjan trdo kodiran url (razrešeno #22) 11 | - chore(libs): izbokline različic 12 | - več popravkov napak 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1102.txt: -------------------------------------------------------------------------------- 1 | Spremembe za v1.0.0-alpha.10.2 2 | - popravek (lastnosti): težava z razčlenjevanjem (#25) 3 | Spremembe za v1.0.0-alpha.10.1 4 | - popravek (pogovorno okno): grda postavitev/animacije v celozaslonskem pogovornem oknu 5 | Spremembe za v1.0.0-alpha.10 6 | - feat(recipes): dodana podpora za predloge za navodila po korakih (#25) 7 | - feat(recipes): dodana kartica lastnosti (#24) 8 | - feat(mealplan): izboljšan uporabniški vmesnik za tablične računalnike/zložljive naprave 9 | - feat(dialog): izboljšana prilagodljiva velikost celozaslonskega pogovornega okna 10 | - feat(recipes): skrivanje FAB, ko dosežete dno za berljivost 11 | - fix(recipes): prepreči okrnjeno besedilo sestavin 12 | - fix(share): zamenjan trdo kodiran url (razrešeno #22) 13 | - chore(libs): izbokline različic 14 | - več popravkov napak 15 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1110.txt: -------------------------------------------------------------------------------- 1 | - feat(behavior): dodani preklopi za prikaz delnih vrednosti (#24) 2 | - feat(settings): dodan gumb za prijavo napak 3 | - feat(acra): dodan gumb za prenos 4 | - chore(api): označena v1.5.20 kot združljiva 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1120.txt: -------------------------------------------------------------------------------- 1 | - feat(utils): nastavite največje decimalno število na 2 (#24) 2 | - feat(home): izboljšan dinamični začetni zaslon s predpomnjenjem hrane in ključnih besed 3 | - feat(home): dodan razdelek Go-tos 4 | - feat(home): dodan božični del 5 | - feat(api): zdaj pridobiva različico iz končne točke openapi 6 | - popravek (načrt obrokov): upoštevanje privzetih nastavitev skupne rabe načrta obrokov (razrešeno št. 19) 7 | - chore(api): označena v1.5.23 kot združljiva 8 | - chore(api): označena v1.5.21/22 kot združljiva 9 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1121.txt: -------------------------------------------------------------------------------- 1 | Hitri popravek 2 | - popravek (recepti): težava z regularnim izrazom za komentarje predlog (razrešeno #27) 3 | Spremembe za v1.0.0-alpha.12 4 | - feat(utils): nastavite največje decimalno število na 2 (#24) 5 | - feat(home): izboljšan dinamični začetni zaslon s predpomnjenjem hrane in ključnih besed 6 | - feat(home): dodan razdelek Go-tos 7 | - feat(home): dodan božični del 8 | - feat(api): zdaj pridobiva različico iz končne točke openapi 9 | - popravek (načrt obrokov): upoštevanje privzetih nastavitev skupne rabe načrta obrokov (razrešeno št. 19) 10 | - chore(api): označena v1.5.23 kot združljiva 11 | - chore(api): označena v1.5.21/22 kot združljiva 12 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1130.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): dodana funkcija za zapiranje v postavitev podrobnosti seznama (razrešeno #28) 2 | - feat(ui): izboljšano razmerje velikosti podokna s podrobnostmi seznama 3 | - feat(various): dodanih več TandoorRequestErrorHandlerjev 4 | - popravek (uvoz): dodano preverjanje za izključitev dvojnega uvoza (razrešeno #29) 5 | - fix(home): težava s potezo nazaj v pogledu iskanja 6 | - popravek(recepti): več popravkov zrušitev in izboljšav obravnave napak 7 | - popravek (priljubljene): zrušitev pri pridobivanju priljubljene knjige 8 | - popravek (recepti): zrušitev pri dodajanju recepta na nakupovalni seznam 9 | - fix(recipes): zrušitev v RecipeCreationAndEditDialog 10 | - fix(api): dodanih več informacij TandoorRequestsError 11 | - chore(api): označena v1.5.24 kot združljiva 12 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1140.txt: -------------------------------------------------------------------------------- 1 | - feat(onboarding): dodana prijava prek brskalnika (razrešeno #30) 2 | - popravek (recepti): zameglitev prelivanja v informacijski oznaki kartice receptov 3 | - popravek (api): težava csrf pri prijavi s piškotki (razrešeno #30) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1150.txt: -------------------------------------------------------------------------------- 1 | kitshn je bil preseljen v Kotlin/Compose Multiplatform. To omogoča združljivost z iOS. 2 | Obstajajo lahko tudi nekatere razlike/težave, ki vplivajo na gradnjo Androida. Lahko jih prijavite na GitHub! :) 3 | - feat(commonMain): dodana eksperimentalna poteza nazaj za iOS 4 | - feat(iosApp & composeApp): dodano poročanje o zrušitvah Bugsnag za iOS 5 | - popravek (nakupovanje): skrivanje elementov, ko je "preverjeno" nastavljeno na true 6 | - popravek (api): izboljšano sporočilo o napaki TandoorRequestsError 7 | - chore(commonMain/api): označeno v1.5.25/26 kot združljivo 8 | - l10n (nizozemščina): prevedeno z uporabo Weblate 9 | - l10n (rusko): prevedeno z uporabo Weblate 10 | - l10n (ukrajinščina): prevedeno z uporabo Weblate 11 | - kmpMigracija 12 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1151.txt: -------------------------------------------------------------------------------- 1 | kitshn je bil preseljen v Kotlin/Compose Multiplatform. To omogoča združljivost z iOS. 2 | Obstajajo lahko tudi nekatere razlike/težave, ki vplivajo na gradnjo Androida. Lahko jih prijavite na GitHub! :) 3 | Hitri popravek 4 | - fix(build.gradle): nastavite jvmToolchain na 17 za F-Droid build 5 | - feat(commonMain): dodana eksperimentalna poteza nazaj za iOS 6 | - feat(iosApp & composeApp): dodano poročanje o zrušitvah Bugsnag za iOS 7 | - popravek (nakupovanje): skrivanje elementov, ko je "preverjeno" nastavljeno na true 8 | - popravek (api): izboljšano sporočilo o napaki TandoorRequestsError 9 | - chore(commonMain/api): označeno v1.5.25/26 kot združljivo 10 | - l10n (nizozemščina): prevedeno z uporabo Weblate 11 | - l10n (rusko): prevedeno z uporabo Weblate 12 | - l10n (ukrajinščina): prevedeno z uporabo Weblate 13 | - kmpMigracija 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1170.txt: -------------------------------------------------------------------------------- 1 | Živjo ✌️ 2 | 3 | Ta tedenska izdaja se osredotoča na uvedbo nekaterih glavnih funkcij in izboljšav na platformo iOS. 4 | Obstaja tudi nekaj sprememb, ki vplivajo na vse platforme: 5 | 6 | 1. 🇸🇮 Slovenščina je bila dodana na Weblate (avtor @vednolacni). 7 | 2. kitshn zdaj uporablja novo knjižnico markdown, ki izboljšuje slog. 8 | 3. Različne strani z odloženim nalaganjem so bile izboljšane. 9 | 4. Knjige receptov zdaj prikazujejo tudi recepte iz filtrov (#67). 10 | 5. Nekaj popravkov napak in majhnih izboljšav. 11 | 6. Preverjena združljivost z različicami Tandoor 1.5.28/29/30. 12 | 13 | kitshn je ta mesec dosegel 200 zvezdic 🥳 14 | Hvala za vašo podporo :) 15 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1180.txt: -------------------------------------------------------------------------------- 1 | Živjo ✌️ 2 | 3 | Ta tedenska izdaja dodaja dva nova jezika in nekaj manjših sprememb: 4 | 5 | 1. 🇫🇷 Francoščina je bila dodana na Weblate (avtor @KcivazB). 6 | 2. 🇪🇸 Španščina je bila dodana na Weblate (avtor @1024mb). 7 | 3. Dodana možnost za onemogočanje dinamičnih priporočil na začetnem zaslonu. 8 | 4. Dodana podpora za glave po meri za preverjanje pristnosti. 9 | 5. Dodan gumb za poročilo o napakah na strani za vkrcanje. 10 | 6. Odpravljene nekatere težave s postavitvijo in uporabniškim vmesnikom. 11 | 7. Preverjena združljivost z različico Tandoor 1.5.31. 12 | 13 | Naslednja izdaja se bo osredotočila na izboljšanje strani z nakupovalnim seznamom :) 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/changelogs/1190.txt: -------------------------------------------------------------------------------- 1 | Živjo ✌️ 2 | Ta tedenska izdaja se osredotoča na izboljšanje nakupovalne izkušnje 🛍️ 🛒 3 | 4 | 1. Prenovljen uporabniški vmesnik nakupovalnega seznama (št. 93). 5 | 2. Dodan nakupovalni način z večjimi cilji na dotik. 6 | 3. Dodana podpora za združevanje po kategoriji, receptu in ustvarjalcu na nakupovalni strani (št. 92). 7 | 4. Dodana podpora za filtriranje po supermarketu na nakupovalni strani (#93). 8 | 5. Implementiran način brez povezave in predpomnjenje za nakupovalni seznam. 9 | 6. Dodan preklopnik prostora na domači strani z uporabo spletnega strganja (glejte #59). 10 | 7. Odpravljena pogosta zrušitev »Umestitev se je zgodila pred pogledom vnaprej«. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/short_description.txt: -------------------------------------------------------------------------------- 1 | Neuradna aplikacija za upravljanje receptov Tandoor. 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sl/title.txt: -------------------------------------------------------------------------------- 1 | kitshn (za Tandoor) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/100.txt: -------------------------------------------------------------------------------- 1 | - ஆரம்ப வெளியீடு 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/101.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): removed minifying 2 | - fix(mealplan): mealplanType color சி-வைகாசி now be undefined 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/102.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): removed kotlinCompilerExtensionVersion 2 | - fix(build.gradle): added dependenciesInfo 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/103.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (ACRA): ACRA-HTTP க்கு மாறியது 2 | - சாதனை (வீடு): மேம்படுத்தப்பட்ட பட்டியல் செயல்திறன் 3 | - சாதனை (கோரிக்கைகள்): மேம்பட்ட பிழை உரையாடல் 4 | - சரி (கோரிக்கைகள்): நிலையான செயலிழப்புகள் 5 | - சரிசெய்யவும் (வி.எம்): பதிப்பை அலச முடியாமல் செயலிழப்பு 6 | - fix(build.gradle): added minifying பின் 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/104.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (சமையல்): படி வழிமுறைகளுக்கு மார்க் பேரூர் உதவி சேர்க்கப்பட்டது (#1) 2 | - சாதனை (சமையல் குறிப்புகள்): சேர்க்கப்பட்ட பயன்பாட்டு இணைப்புகள் 3 | - சாதனை (சமையல்): சேர்க்கப்பட்ட பங்கு பொத்தான் 4 | . 5 | - வேலை (லிப்ச்): பதிப்பு புடைப்புகள் 6 | - பல பிழை திருத்தங்கள் மற்றும் வடிவமைப்பு மேம்பாடுகள் 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/105.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (ஆன் போர்டிங்): பநிஇ கிள்ளாக்கு உள்நுழைவு சேர்க்கப்பட்டது (#9) 2 | - சாதனை (சமையல்): அறிவுறுத்தல்களில் ஆட்டோ நேரங்குறிகருவி இணைப்புகள் சேர்க்கப்பட்டன 3 | - feat(acra): added mail முகவரி புலம் பெறுநர் AcraCrashReportDialog.kt 4 | - பல பிழை திருத்தங்கள் 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/106.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (சமையல் குறிப்புகள்): படி படக் கோப்புகளுக்கான உதவி சேர்க்கப்பட்டது (தீர்க்கப்பட்டது #14) 2 | - சாதனை (சாப்பிங்): உணவு மூலம் சாப்பிங் பட்டியல் உள்ளீடுகளை தொகுத்தல் (தீர்க்கப்பட்டது #13) 3 | - சாதனை (மேனிஃபெச்ட்): தன்வய கையொப்பமிடப்பட்ட சான்றிதழ்களுக்கான உதவி (தீர்க்கப்பட்டது #11) 4 | - சாதனை (பயன்பாடு): "புதிய நிகழ்வு" குறுக்குவழி சேர்க்கப்பட்டது 5 | . 6 | - சாதனை (சமையல்): சேர்க்கை செய்முறை புத்தக மேலாண்மை உரையாடல் 7 | - சாதனை (பயன்பாடுகள்): மேம்பட்ட மனித படிக்கக்கூடிய தேதி லேபிள்கள் 8 | - சாதனை (சமையல்): சமையல் பயன்முறையில் டேப்லெட்களுக்கான மேம்பட்ட கிடைமட்ட தளவமைப்பு 9 | - வேலை (லிப்ச்): பதிப்பு புடைப்புகள் 10 | - சரி (சமையல்): வெவ்வேறு மார்க் பேரூர் நூலகத்திற்கு இடம்பெயர்ந்தது 11 | - சரி (சாப்பிங்): உரை புலங்கள் இப்போது ஒற்றை வரி 12 | - fix(onboarding): checking token/password prefix before autofill 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/107.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (UI): மாற்றப்பட்ட செய்முறை மற்றும் உணவுத் திட்டத்தின் கீழ் தாள்கள் உரையாடல்களுக்கு 2 | - சாதனை (UI): முழுத்திரை உரையாடலில் அனிமேசன் சேர்க்கப்பட்டது 3 | - சாதனை (சமையல்): மூலப்பொருள் ஒதுக்கீடு செயல் சிப்பை மறைக்கும் திறன் சேர்க்கப்பட்டது (#16) 4 | - சாதனை (அமைப்புகள்): ஒதுக்கப்படாத பொருட்களை புறக்கணிக்க மாற்று சேர்க்கை (தீர்க்கப்பட்டது #16) 5 | - வேலை (லிப்ச்): பதிப்பு புடைப்புகள் 6 | - சாதனை (மேனிஃபெச்ட்): மாற்றப்பட்ட பயன்பாட்டு இணைப்பு புரவலன் 7 | - சாதனை (பகிர்வு): சுருக்கப்பட்ட பங்கு ரேப்பர் இணைப்புகள் 8 | - சாதனை (பற்றி): சேர்க்கப்பட்ட வலைத்தளம் 9 | - சாதனை (பற்றி): மாற்றப்பட்ட தொடர்பு அஞ்சல் 10 | - சாதனை (ACRA): மாற்றப்பட்ட ACRA அறிக்கை முகவரி 11 | - சாதனை (பங்கு): மாற்றப்பட்ட பங்கு ரேப்பர் முகவரி 12 | - சரி (UI): முழுத்திரை உரையாடலில் நிலை பட்டி படவுரு நிறம் 13 | - சரிசெய்யவும் (மீல் பிளான்): உணவு வகையைத் தேர்ந்தெடுத்த பிறகு விசைப்பலகையை மறைக்கவும் 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/109.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (சமையல்): படி வீடியோ கோப்புகளுக்கான உதவி சேர்க்கப்பட்டது (தீர்க்கப்பட்டது #15) 2 | . 3 | - சாதனை (UI): உள்ளமைவு மாற்றங்களை இடைமறித்தல் 4 | - சரிசெய்யவும் (strings.xml): சரிசெய்யப்பட்ட நடத்தை விளக்கம் 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/110.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (சமையல்): படி வழிமுறைகளுக்கு வார்ப்புரு உதவி சேர்க்கப்பட்டது (#25) 2 | - சாதனை (சமையல்): சேர்க்கப்பட்ட பண்புகள் அட்டை (#24) 3 | - feat(mealplan): improved இடைமுகம் க்கு tablets/foldables 4 | - சாதனை (உரையாடல்): மேம்படுத்தப்பட்ட தகவமைப்பு முழுத்திரை உரையாடல் அளவு 5 | - சாதனை (சமையல்): தெளிவுக்கு கீழே வரும்போது ஃபேப் மறைத்தல் 6 | - சரிசெய்யவும் (சமையல்): துண்டிக்கப்பட்ட மூலப்பொருள் உரையைத் தடுக்கவும் 7 | - சரி (பங்கு): மாற்றப்பட்ட கடின குறியீட்டு முகவரி (தீர்க்கப்பட்டது #22) 8 | - வேலை (லிப்ச்): பதிப்பு புடைப்புகள் 9 | - பல பிழை திருத்தங்கள் 10 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/1101.txt: -------------------------------------------------------------------------------- 1 | ஆட்ஃபிக்ச் 2 | - சரிசெய்யவும் (உரையாடல்): முழுத்திரை உரையாடலில் அசிங்கமான தளவமைப்பு/அனிமேசன்கள் 3 | 4 | V1.0.0-ஆல்பா 10 க்கான மாற்றங்கள் 5 | - சாதனை (சமையல்): படி வழிமுறைகளுக்கு வார்ப்புரு உதவி சேர்க்கப்பட்டது (#25) 6 | - சாதனை (சமையல்): சேர்க்கப்பட்ட பண்புகள் அட்டை (#24) 7 | - சாதனை (மீல் பிளான்): டேப்லெட்டுகள்/மடிப்புகளுக்கு மேம்படுத்தப்பட்ட இடைமுகம் 8 | - சாதனை (உரையாடல்): மேம்படுத்தப்பட்ட தகவமைப்பு முழுத்திரை உரையாடல் அளவு 9 | - சாதனை (சமையல்): தெளிவுக்கு கீழே வரும்போது ஃபேப் மறைத்தல் 10 | - சரிசெய்யவும் (சமையல்): துண்டிக்கப்பட்ட மூலப்பொருள் உரையைத் தடுக்கவும் 11 | - சரி (பங்கு): மாற்றப்பட்ட கடின குறியீட்டு முகவரி (தீர்க்கப்பட்டது #22) 12 | - வேலை (லிப்ச்): பதிப்பு புடைப்புகள் 13 | - பல பிழை திருத்தங்கள் 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/1102.txt: -------------------------------------------------------------------------------- 1 | V1.0.0-ஆல்பா 10.2 க்கான மாற்றங்கள் 2 | - சரி (பண்புகள்): பாகுபடுத்தல் சிக்கல் (#25) 3 | 4 | V1.0.0-ஆல்பா 10.1 க்கான மாற்றங்கள் 5 | - சரிசெய்யவும் (உரையாடல்): முழுத்திரை உரையாடலில் அசிங்கமான தளவமைப்பு/அனிமேசன்கள் 6 | 7 | V1.0.0-ஆல்பா 10 க்கான மாற்றங்கள் 8 | - சாதனை (சமையல்): படி வழிமுறைகளுக்கு வார்ப்புரு உதவி சேர்க்கப்பட்டது (#25) 9 | - சாதனை (சமையல்): சேர்க்கப்பட்ட பண்புகள் அட்டை (#24) 10 | - feat(mealplan): improved இடைமுகம் க்கு tablets/foldables 11 | - சாதனை (உரையாடல்): மேம்படுத்தப்பட்ட தகவமைப்பு முழுத்திரை உரையாடல் அளவு 12 | - சாதனை (சமையல்): தெளிவுக்கு கீழே வரும்போது ஃபேப் மறைத்தல் 13 | - சரிசெய்யவும் (சமையல்): துண்டிக்கப்பட்ட மூலப்பொருள் உரையைத் தடுக்கவும் 14 | - சரி (பங்கு): மாற்றப்பட்ட கடினமான குறியிடப்பட்ட முகவரி (தீர்க்கப்பட்டது #22) 15 | - வேலை (லிப்ச்): பதிப்பு புடைப்புகள் 16 | - பல பிழை திருத்தங்கள் 17 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/1110.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (நடத்தை): பகுதியளவு மதிப்புகளைக் காண்பிப்பதற்கான மாற்றங்கள் சேர்க்கப்பட்டுள்ளன (#24) 2 | - சாதனை (அமைப்புகள்): பிழை அறிக்கை பொத்தானைச் சேர்க்கவும் 3 | - சாதனை (ACRA): பதிவிறக்க பொத்தான் சேர்க்கப்பட்டது 4 | - CHORE (API): V1.5.20 ஐ இணக்கமாக குறித்தது 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/1120.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (பயன்பாடுகள்): அதிகபட்ச தசம எண்களை 2 ஆக அமைக்கவும் (#24) 2 | . 3 | - சாதனை (வீடு): கோ-டோச் பிரிவு சேர்க்கப்பட்டது 4 | - சாதனை (வீடு): கிறிச்துமச் பிரிவு சேர்க்கப்பட்டது 5 | - feat(api): now retrieving version இருந்து openapi endpoint 6 | . 7 | - CHORE (API): V1.5.23 ஐ இணக்கமாக குறித்தது 8 | - வேலை (ஏபிஐ): குறிக்கப்பட்ட v1.5.21/22 இணக்கமாக 9 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/1121.txt: -------------------------------------------------------------------------------- 1 | ஆட்ஃபிக்ச் 2 | - சரி (சமையல்): வார்ப்புரு கருத்துகளுக்கான ரீசெக்சுடன் சிக்கல் (தீர்க்கப்பட்டது #27) 3 | 4 | V1.0.0-ஆல்பா 12 க்கான மாற்றங்கள் 5 | - சாதனை (பயன்பாடுகள்): அதிகபட்ச தசம எண்களை 2 ஆக அமைக்கவும் (#24) 6 | . 7 | - சாதனை (வீடு): கோ-டோச் பிரிவு சேர்க்கப்பட்டது 8 | - சாதனை (வீடு): கிறிச்துமச் பிரிவு சேர்க்கப்பட்டது 9 | - feat(api): now retrieving version இருந்து openapi endpoint 10 | . 11 | - CHORE (API): V1.5.23 ஐ இணக்கமாக குறித்தது 12 | - வேலை (ஏபிஐ): குறிக்கப்பட்ட v1.5.21/22 இணக்கமாக 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/1130.txt: -------------------------------------------------------------------------------- 1 | . 2 | - சாதனை (UI): மேம்படுத்தப்பட்ட பட்டியல் விவரம் பலக அளவு விகிதம் 3 | - feat(various): added more TandoorRequestErrorHandlers 4 | - சரி (இறக்குமதி): இரட்டை இறக்குமதியை நிராகரிக்க சோதனை சேர்க்கப்பட்டது (தீர்க்கப்பட்டது #29) 5 | - சரி (வீடு): தேடல் பார்வையில் பின் சைகையுடன் சிக்கல் 6 | - சரி (சமையல்): பல செயலிழப்பு திருத்தங்கள் மற்றும் பிழை கையாளுதல் மேம்பாடுகள் 7 | - சரி (பிடித்தவை): பிடித்தவை புத்தகத்தை மீட்டெடுக்கும் போது செயலிழப்பு 8 | - சரி (சமையல்): சாப்பிங் பட்டியலில் செய்முறையைச் சேர்க்கும்போது செயலிழப்பு 9 | - fix(recipes): crash in RecipeCreationAndEditDialog 10 | - சரி (ஏபிஐ): tandoorrequestserror இல் கூடுதல் தகவல்களைச் சேர்த்தது 11 | - வேலை (ஏபிஐ): V1.5.24 ஐ இணக்கமாக குறித்தது 12 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/1140.txt: -------------------------------------------------------------------------------- 1 | - சாதனை (ஆன் போர்டிங்): உலாவி வழியாக உள்நுழைவு (தீர்க்கப்பட்டது #30) 2 | - சரிசெய்யவும் (சமையல்): செய்முறை அட்டை செய்தி குறிச்சொல்லில் மங்கலான வழிதல் 3 | . 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/1150.txt: -------------------------------------------------------------------------------- 1 | கிட்லின்/இசையமைத்தல் மல்டிபிளாட்ஃபார்முக்கு கிட்லுக்கு குடிபெயர்ந்தார். இது ஐஇமு உடன் பொருந்தக்கூடிய தன்மையை செயல்படுத்துகிறது. 2 | ஆண்ட்ராய்டு கட்டமைப்பை பாதிக்கும் சில வேறுபாடுகள்/சிக்கல்களும் இருக்கலாம். கிதுபில் உள்ளவர்களைப் புகாரளிக்க தயங்க! :) 3 | 4 | - சாதனை (காமன் மைன்): ஐஇமு க்கான சோதனை பின் சைகை சேர்க்கப்பட்டது 5 | . 6 | - fix(shopping): hiding items when "checked" கணம் பெறுநர் true 7 | - fix(api): improved TandoorRequestsError message 8 | - chore(commonMain/api): marked v1.5.25/26 அச் compatible 9 | - L10N (டச்சு): வெப்லேட்டைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது 10 | - L10N (ரச்யன்): வெப்லேட்டைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது 11 | - L10N (உக்ரேனிய): வெப்லேட்டைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது 12 | - kmpmigration 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/changelogs/1151.txt: -------------------------------------------------------------------------------- 1 | கிட்லின்/இசையமைத்தல் மல்டிபிளாட்ஃபார்முக்கு கிட்லுக்கு குடிபெயர்ந்தார். இது ஐஇமு உடன் பொருந்தக்கூடிய தன்மையை செயல்படுத்துகிறது. 2 | ஆண்ட்ராய்டு கட்டமைப்பை பாதிக்கும் சில வேறுபாடுகள்/சிக்கல்களும் இருக்கலாம். கிதுபில் உள்ளவர்களைப் புகாரளிக்க தயங்க! :) 3 | 4 | ஆட்ஃபிக்ச் 5 | - fix(build.gradle): கணம் jvmToolchain பெறுநர் 17 க்கு F-Droid build 6 | 7 | - சாதனை (காமன் மைன்): ஐஇமு க்கான சோதனை பின் சைகை சேர்க்கப்பட்டது 8 | . 9 | - fix(shopping): hiding items when "checked" கணம் பெறுநர் true 10 | - fix(api): improved TandoorRequestsError message 11 | - chore(commonMain/api): marked v1.5.25/26 அச் compatible 12 | - L10N (டச்சு): வெப்லேட்டைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது 13 | - L10N (ரச்யன்): வெப்லேட்டைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது 14 | - L10N (உக்ரேனிய): வெப்லேட்டைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது 15 | - kmpmigration 16 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/short_description.txt: -------------------------------------------------------------------------------- 1 | இனோஃபிசியல் கிளையண்ட் தந்தூர் செய்முறை மேலாண்மைக்கான. 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ta-IN/title.txt: -------------------------------------------------------------------------------- 1 | சமையலறை (தந்தூருக்கு) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/100.txt: -------------------------------------------------------------------------------- 1 | - Початковий випуск 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/10000.txt: -------------------------------------------------------------------------------- 1 | 1. Реалізовано підтримку вибору користувачів спільного доступу у діалоговому вікні створення/редагування плану харчування (#148). 2 | 2. Реалізовано підтримку вибору користувачів спільного доступу у діалоговому вікні створення/редагування книги рецептів (#154). 3 | 3. Додано перевірку для запобігання порожніх кроків при імпорті рецептів (#157). 4 | 4. Перевірено сумісність з Tandoor версії 1.5.34. 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/101.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): видалено скорочення 2 | - fix(mealplan): колір mealplanType тепер може бути невизначеним 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/102.txt: -------------------------------------------------------------------------------- 1 | - fix(build.gradle): видалено kotlinCompilerExtensionVersion 2 | - fix(build.gradle): додано інформацію про залежності 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/103.txt: -------------------------------------------------------------------------------- 1 | - feat(acra): переключено на acra-http 2 | - feat(home): покращена продуктивність списку 3 | - feat(requests): покращено діалогове вікно помилок 4 | - fix(requests): виправлені збої 5 | - fix(vm): збій, коли неможливо розібрати версію 6 | - fix(build.gradle): додано скорочення 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/104.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): додана підтримка уцінки для покрокових інструкцій (#1) 2 | - feat(recipes): додано посилання на програми 3 | - feat(recipes): додано кнопку поділитися 4 | - l10n(strings.xml): додано турецьку (tr) (#3) (від @mikropsoft) 5 | - chore(libs): помилки версії 6 | - численні виправлення помилок і покращення дизайну 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/105.txt: -------------------------------------------------------------------------------- 1 | - feat(onboarding): додано маркер входу API (#9) 2 | - feat(recipes): додано посилання на автоматичний таймер в інструкціях 3 | - feat(acra): до AcraCrashReportDialog.kt додано поле електронної адреси 4 | - численні виправлення помилок 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/106.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): додано підтримку файлів зображень кроків (вирішено #14) 2 | - feat(shopping): групування записів списку покупок за їжею (вирішено #13) 3 | - feat(manifest): додано підтримку самопідписаних сертифікатів (вирішено #11) 4 | - feat(app): додано ярлик «новий екземпляр». 5 | - feat(recipes): до випадаючого меню додано пункт «додати в покупки». 6 | - feat(recipes): додано діалог керування книгою рецептів 7 | — feat(utils): покращено читабельні людиною позначки дати 8 | - feat(recipes): покращено горизонтальне розташування для планшетів у режимі приготування 9 | - chore(libs): помилки версії 10 | - fix(recipes): переміщено до іншої бібліотеки уцінки 11 | - fix(shopping): текстові поля тепер однорядкові 12 | - fix(onboarding): перевірка префіксу токена/паролю перед автозаповненням 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/107.txt: -------------------------------------------------------------------------------- 1 | - feat(ui): нижні аркуші рецептів і планів харчування змінено на діалоги 2 | - feat(ui): додано анімацію до повноекранного діалогу 3 | - feat(recipes): додана можливість приховувати чіп розподілу інгредієнтів (#16) 4 | - feat(settings): додано перемикач для ігнорування нерозподілених інгредієнтів (вирішено №16) 5 | - chore(libs): помилки версії 6 | - feat(маніфест): змінено хост посилання на додаток 7 | - feat(share): скорочені посилання-обгортки спільних ресурсів 8 | - feat(about): додано веб-сайт 9 | - feat(about): змінена контактна пошта 10 | - feat(acra): змінена URL-адреса звіту acra 11 | - feat(share): змінена URL-адреса обгортки спільного доступу 12 | - fix(ui): колір значка рядка стану в повноекранному діалоговому вікні 13 | - fix(mealplan): приховати клавіатуру після вибору типу їжі 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/109.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): додано підтримку покрокових відеофайлів (вирішено №15) 2 | - feat(recipes): тримати екран увімкненим (#18) (від @FineFindus) 3 | - feat(ui): перехоплення змін конфігурації 4 | - fix(strings.xml): виправлений опис поведінки 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/110.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): додано підтримку шаблонів для покрокових інструкцій (#25) 2 | - feat(recipes): додана картка властивостей (#24) 3 | - feat(mealplan): покращений інтерфейс для планшетів/розкладних пристроїв 4 | - feat(dialog): покращений розмір адаптивного повноекранного діалогу 5 | - feat(recipes): приховування FAB при досягненні дна для розбірливості 6 | - fix(recipes): запобігання скороченому тексту інгредієнтів 7 | - fix(share): замінено жорстко закодовану URL-адресу (вирішено #22) 8 | - chore(libs): помилки версії 9 | - численні виправлення помилок 10 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1101.txt: -------------------------------------------------------------------------------- 1 | Виправлення 2 | - виправлення (діалогове вікно): потворний макет/анімація в повноекранному діалоговому вікні 3 | 4 | Зміни для v1.0.0-alpha.10 5 | - feat(recipes): додано підтримку шаблонів для покрокових інструкцій (#25) 6 | - feat(recipes): додана картка властивостей (#24) 7 | - feat(mealplan): покращений інтерфейс для планшетів/розкладних пристроїв 8 | - feat(dialog): покращений розмір адаптивного повноекранного діалогу 9 | - feat(recipes): приховування FAB при досягненні дна для розбірливості 10 | - fix(recipes): запобігання скороченому тексту інгредієнтів 11 | - fix(share): замінено жорстко закодовану URL-адресу (вирішено #22) 12 | - chore(libs): помилки версії 13 | - численні виправлення помилок 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1102.txt: -------------------------------------------------------------------------------- 1 | Зміни для v1.0.0-alpha.10.2 2 | - fix(properties): проблема синтаксичного аналізу (#25) 3 | 4 | Зміни для v1.0.0-alpha.10.1 5 | - виправлення (діалогове вікно): потворний макет/анімація в повноекранному діалоговому вікні 6 | 7 | Зміни для v1.0.0-alpha.10 8 | - feat(recipes): додано підтримку шаблонів для покрокових інструкцій (#25) 9 | - feat(recipes): додана картка властивостей (#24) 10 | - feat(mealplan): покращений інтерфейс для планшетів/розкладних пристроїв 11 | - feat(dialog): покращений розмір адаптивного повноекранного діалогу 12 | - feat(recipes): приховування FAB при досягненні дна для розбірливості 13 | - fix(recipes): запобігання скороченому тексту інгредієнтів 14 | - fix(share): замінено жорстко закодовану URL-адресу (вирішено #22) 15 | - chore(libs): помилки версії 16 | - численні виправлення помилок 17 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1110.txt: -------------------------------------------------------------------------------- 1 | - feat(behavior): додано перемикачі для показу дробових значень (#24) 2 | - feat(settings): додана кнопка звіту про помилку 3 | - feat(acra): додана кнопка завантаження 4 | - chore(api): позначено v1.5.20 як сумісне 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1120.txt: -------------------------------------------------------------------------------- 1 | - feat(utils): встановити максимальне десяткове число до 2 (#24) 2 | - feat(home): покращено динамічний головний екран за рахунок кешування продуктів і ключових слів 3 | - feat(home): додано розділ переходів 4 | - feat(home): додано різдвяний розділ 5 | - feat(api): тепер отримання версії з кінцевої точки openapi 6 | - виправлення (план харчування): дотримання параметрів спільного використання плану харчування за замовчуванням (вирішено №19) 7 | - chore(api): позначено v1.5.23 як сумісне 8 | - chore(api): позначено v1.5.21/22 як сумісне 9 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1121.txt: -------------------------------------------------------------------------------- 1 | Виправлення 2 | - fix(recipes): проблема з регулярним виразом для коментарів шаблону (вирішено #27) 3 | 4 | Зміни для v1.0.0-alpha.12 5 | - feat(utils): встановити максимальне десяткове число до 2 (#24) 6 | - feat(home): покращено динамічний головний екран за рахунок кешування продуктів і ключових слів 7 | - feat(home): додано розділ переходів 8 | - feat(home): додано різдвяний розділ 9 | - feat(api): тепер отримання версії з кінцевої точки openapi 10 | - виправлення (план харчування): дотримання параметрів спільного використання плану харчування за замовчуванням (вирішено №19) 11 | - chore(api): позначено v1.5.23 як сумісне 12 | - chore(api): позначено v1.5.21/22 як сумісне 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1130.txt: -------------------------------------------------------------------------------- 1 | - feat(recipes): додано функцію закриття до детального макета списку (вирішено #28) 2 | — feat(ui): покращене співвідношення розмірів панелі деталей списку 3 | - feat(various): додано більше TandoorRequestErrorHandlers 4 | - fix(import): додано перевірку, щоб виключити подвійний імпорт (вирішено #29) 5 | - fix(home): проблема з жестом назад у вікні пошуку 6 | - fix(recipes): кілька виправлень збоїв і покращення обробки помилок 7 | - виправлення (вибране): збій під час отримання вибраної книги 8 | - fix(recipes): збій під час додавання рецепту до списку покупок 9 | - fix(recipes): збій у RecipeCreationAndEditDialog 10 | - fix(api): додано більше інформації до TandoorRequestsError 11 | - chore(api): позначено v1.5.24 як сумісне 12 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1140.txt: -------------------------------------------------------------------------------- 1 | - feat(onboarding): додано вхід через браузер (вирішено #30) 2 | - fix(recipes): переповнення розмиття в інформаційному тегу картки рецептів 3 | - виправлення (api): проблема csrf під час входу за допомогою файлів cookie (вирішено #30) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1150.txt: -------------------------------------------------------------------------------- 1 | kitshn перенесено на Kotlin/Compose Multiplatform. Це забезпечує сумісність з iOS. 2 | Також можуть бути деякі відмінності/проблеми, що впливають на збірку Android. Не соромтеся повідомляти про це на GitHub! :) 3 | 4 | - feat(commonMain): додано експериментальний жест назад для iOS 5 | - feat(iosApp & composeApp): додано звіт про збої Bugsnag для iOS 6 | - fix(shopping): приховування предметів, коли "перевірено" встановлено значення true 7 | - fix(api): покращено повідомлення про помилку TandoorRequestsError 8 | - chore(commonMain/api): позначено v1.5.25/26 як сумісне 9 | - l10n (голландська): перекладено за допомогою Weblate 10 | - l10n (російська): перекладено за допомогою Weblate 11 | - l10n(українська): переклад за допомогою Weblate 12 | - kmpМіграція 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1151.txt: -------------------------------------------------------------------------------- 1 | kitshn перенесено на Kotlin/Compose Multiplatform. Це забезпечує сумісність з iOS. 2 | Також можуть бути деякі відмінності/проблеми, що впливають на збірку Android. Не соромтеся повідомляти про це на GitHub! :) 3 | 4 | Виправлення 5 | - fix(build.gradle): встановіть jvmToolchain на 17 для збірки F-Droid 6 | 7 | - feat(commonMain): додано експериментальний жест назад для iOS 8 | - feat(iosApp & composeApp): додано звіт про збої Bugsnag для iOS 9 | - fix(shopping): приховування предметів, коли "перевірено" встановлено значення true 10 | - fix(api): покращено повідомлення про помилку TandoorRequestsError 11 | - chore(commonMain/api): позначено v1.5.25/26 як сумісне 12 | - l10n (голландська): перекладено за допомогою Weblate 13 | - l10n (російська): перекладено за допомогою Weblate 14 | - l10n(українська): переклад за допомогою Weblate 15 | - kmpМіграція 16 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1170.txt: -------------------------------------------------------------------------------- 1 | Привіт ✌️ 2 | Цей тижневий випуск зосереджений на внесенні деяких основних функцій і вдосконалень на платформу iOS. 3 | Також є деякі зміни, що стосуються всіх платформ: 4 | 5 | 1. 🇸🇮 Словенську мову додано на Weblate (від @vednolacni). 6 | 2. kitshn тепер використовує нову бібліотеку розмітки, яка покращує стиль. 7 | 3. Покращено різні сторінки з відкладеним завантаженням. 8 | 4. Книги рецептів тепер також показують рецепти з фільтрів (#67). 9 | 5. Деякі виправлення помилок і невеликі покращення. 10 | 6. Перевірена сумісність з Tandoor версій 1.5.28/29/30. 11 | 12 | Кітшн отримав 200 зірок цього місяця 🥳 13 | Дякуємо за вашу підтримку :) 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1180.txt: -------------------------------------------------------------------------------- 1 | Привіт ✌️ 2 | Цей тижневий випуск додає дві нові мови та деякі незначні зміни: 3 | 4 | 1. 🇫🇷 Французьку мову додано на Weblate (від @KcivazB). 5 | 2. 🇪🇸 Іспанську мову додано на Weblate (автор @1024mb). 6 | 3. Додано опцію відключення динамічних рекомендацій на головному екрані. 7 | 4. Додано підтримку користувацьких заголовків для автентифікації. 8 | 5. Додано кнопку звіту про помилку на сторінці реєстрації. 9 | 6. Виправлено деякі проблеми макета та інтерфейсу користувача. 10 | 7. Перевірено сумісність з Tandoor версії 1.5.31. 11 | 12 | Наступний випуск буде зосереджений на покращенні сторінки списку покупок :) 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1190.txt: -------------------------------------------------------------------------------- 1 | Привіт ✌️ 2 | Цей тижневий випуск зосереджений на покращенні досвіду покупок 🛍️ 🛒 3 | 4 | 1. Перероблений інтерфейс користувача списку покупок (#93). 5 | 2. Додано режим покупок із більшими торканнями. 6 | 3. Додано підтримку групування за категоріями, рецептами та творцями на сторінці покупок (#92). 7 | 4. Додано підтримку фільтрації за супермаркетом на сторінці покупок (#93). 8 | 5. Реалізовано автономний режим і кешування списку покупок. 9 | 6. Додано перемикач простору на домашній сторінці за допомогою веб-збирання (див. №59). 10 | 7. Виправлено звичайний » Розміщення відбулося до передозування » збій. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1210.txt: -------------------------------------------------------------------------------- 1 | 1. Додати нове діалогове вікно «Додати до покупки» для індивідуального вибору інгредієнтів. 2 | 2. Додати » Перегляньте продукти перед додаванням до покупок « перемикач під час створення нового запису плану харчування. 3 | 3. Додайте опцію для відображення записів плану харчування на завтра вдома. 4 | 4. kitshn тепер відображає назву кроку в режимі приготування. 5 | 5. Виправлено скидання кількості порцій після відкриття режиму приготування з запису плану харчування. 6 | 6. Виправлено книгу рецептів, яка відображається як порожня, якщо містить лише відфільтровані рецепти. 7 | 9. Виправте неправильне сортування категорій супермаркетів. 8 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1220.txt: -------------------------------------------------------------------------------- 1 | 1. Покращено співвідношення розмірів на сторінках з макетами деталей списку. 2 | 2. Покращена прокрутка в режимі покупок і покупок. 3 | 3. Покращено діалогове вікно помилок та обробка помилок. 4 | 4. Додано іконку-заповнювач до порожніх книг рецептів. 5 | 5. Виправлено дратівливе діалогове вікно помилки при порожніх книгах рецептів. 6 | 6. Виправлено помилку, коли напис "порції" відображався німецькою мовою, коли вибрано англійську. 7 | 7. Виправлено аварійне завершення роботи при виборі супермаркету без призначених категорій. 8 | 8. Оновлена турецька мова 🇹🇷 (автор @mikropsoft). 9 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1230.txt: -------------------------------------------------------------------------------- 1 | Привіт ✌️ 2 | Реліз цього тижня містить лише незначні покращення: 3 | 4 | 1. Додано кешування супермаркетів на сторінці покупок для офлайн-режиму (#142). 5 | 2. Реалізовано дробові порції для рецептів (#143). 6 | 3. Перевірено сумісність з Tandoor версії 1.5.32. 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/1240.txt: -------------------------------------------------------------------------------- 1 | 1. 🇨🇿 Чеська мова додана на Weblate (автор @hernikplays). 2 | 2. Реалізовано читабельні мітки дат для iOS (вже підтримуються на Android). 3 | 3. Тепер за замовчуванням використовується значення порцій рецепта при додаванні до плану харчування (#147) (автор @Monforton). 4 | 4. Тепер за замовчуванням використовується значення порцій рецепта під час вибору рецепта у діалоговому вікні створення/редагування плану харчування. 5 | 5. Виправлено помилку при спробі додати інгредієнти рецепта до списку покупок. 6 | 6. Перевірено сумісність з Tandoor версії 1.5.33. 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/19001.txt: -------------------------------------------------------------------------------- 1 | БЕТА: Ця бета-версія представляє сумісність з Tandoor v2. Ця версія не сумісна з серверами, на яких працює Tandoor v1. 2 | 3 | 1. 🇮🇹 На Weblate додано італійську мову (автор @KindaArtsy). 4 | 2. Покращено перемикання пробілів завдяки новому API. 5 | 3. Покращено визначення таймера з підтримкою годинника. 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/19020.txt: -------------------------------------------------------------------------------- 1 | БЕТА: Ця бета-версія представляє сумісність з Tandoor v2. Ця версія не сумісна з серверами, на яких працює Tandoor v1. 2 | 3 | 1. Реалізовано дробові порції для планів харчування. 4 | 2. Додано підтримку відображення годин у фішках тривалості. 5 | 3. Реалізовано ярлики для плану харчування, покупок, режиму покупок і книг на Android. 6 | 4. Виправлено появу дублікатів інгредієнтів при знятті позначки в діалоговому вікні розподілу інгредієнтів. 7 | 5. Оновлена голландська мова (автор @jstrvr). 8 | 6. Оновлено французьку мову (користувач @letroll). 9 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/19030.txt: -------------------------------------------------------------------------------- 1 | БЕТА: Ця бета-версія представляє сумісність з Tandoor v2. Ця версія не сумісна з серверами, на яких працює Tandoor v1. 2 | 3 | 1. Додано підтримку імпорту ШІ, нової функції Tandoor v2. 4 | 2. Реалізовано кнопку для очищення списку покупок від усіх або завершених записів. 5 | 3. Додано назву рецепта до тексту обміну для полегшення ідентифікації. 6 | 4. Дозволили користувачам вимкнути режим збільшення списку покупок. 7 | 5. Перевірено сумісність з Tandoor версії 2.0.0-alpha-2. 8 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/changelogs/19040.txt: -------------------------------------------------------------------------------- 1 | БЕТА: Ця бета-версія представляє сумісність з Tandoor v2. Ця версія не сумісна з серверами, на яких працює Tandoor v1. 2 | 3 | 1. Виправлено помилку, коли записи плану харчування додавалися на неправильні дати. 4 | 2. Виправлено проблему з відкриттям посилань на додатки, створені в Tandoor v2, через зміну URL-адреси. 5 | 3. Покращена читабельність діалогового вікна очищення списку покупок. 6 | 4. Перевірено сумісність з Tandoor версії 2.0.0-alpha-3. 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/short_description.txt: -------------------------------------------------------------------------------- 1 | Неофіційний клієнт для керування рецептами Tandoor. 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/title.txt: -------------------------------------------------------------------------------- 1 | кухня (для тандиру) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/en-US/description.txt: -------------------------------------------------------------------------------- 1 | An unofficial client for the self-hosted Tandoor recipe management software. Built with Jetpack Compose and Material You to deliver a modern, intuitive and responsive user experience. 2 | 3 | This is open source software. 4 | Learn more at https://github.com/aimok04/kitshn 5 | 6 | EULA: https://www.apple.com/legal/internet-services/itunes/dev/stdeula/ 7 | Icon made by Freepik from www.flaticon.com 8 | -------------------------------------------------------------------------------- /fastlane/metadata/en-US/keywords.txt: -------------------------------------------------------------------------------- 1 | recipes cooking tandoor foss recipe management 2 | -------------------------------------------------------------------------------- /fastlane/metadata/en-US/name.txt: -------------------------------------------------------------------------------- 1 | kitshn (for Tandoor) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/en-US/release_notes.txt: -------------------------------------------------------------------------------- 1 | BETA: This beta introduces compatibility with Tandoor v2. This version is not compatible with servers running Tandoor v1. 2 | 3 | 1. Improved search dialog layout and actions (#203). 4 | 2. Fixed issue where wrong meal plan entries where shown on home (#200). 5 | 3. Fixed issue where some recipe data wasn't updated correctly (#171). 6 | 4. Spanish has been brought up to date (by @1024mb). 7 | 5. Italian has been updated (by @KindaArtsy). 8 | 6. French has been updated (by @whayn). -------------------------------------------------------------------------------- /fastlane/metadata/en-US/subtitle.txt: -------------------------------------------------------------------------------- 1 | Client for Tandoor recipes 2 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | #Gradle 2 | org.gradle.jvmargs=-Xmx4G 3 | org.gradle.caching=true 4 | org.gradle.configuration-cache=true 5 | org.gradle.daemon=true 6 | org.gradle.parallel=true 7 | #Kotlin 8 | kotlin.code.style=official 9 | kotlin.daemon.jvmargs=-Xmx4G 10 | #Android 11 | android.useAndroidX=true 12 | android.nonTransitiveRClass=true 13 | #AboutLibraries 14 | aboutLibraries.exportPath=src/commonMain/composeResources/files 15 | #CrashKiOS 16 | kotlin.native.cacheKind.iosX64=none 17 | kotlin.native.cacheKind.iosSimulatorArm64=none 18 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Jun 15 23:17:30 CEST 2024 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /images/badge_apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/badge_apple.png -------------------------------------------------------------------------------- /images/badge_github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/badge_github.png -------------------------------------------------------------------------------- /images/badge_google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/badge_google.png -------------------------------------------------------------------------------- /images/btn_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/btn_back.png -------------------------------------------------------------------------------- /images/btn_dark_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/btn_dark_mode.png -------------------------------------------------------------------------------- /images/btn_light_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/btn_light_mode.png -------------------------------------------------------------------------------- /images/screenshots_dark.md: -------------------------------------------------------------------------------- 1 | [![Back to README.md](/images/btn_back.png)](/) 2 | ![Screenshots dark](/images/screenshots_dark.png) 3 | ![Screenshots tablet dark](/images/screenshots_tablet_dark.png) -------------------------------------------------------------------------------- /images/screenshots_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/screenshots_dark.png -------------------------------------------------------------------------------- /images/screenshots_light.md: -------------------------------------------------------------------------------- 1 | [![Back to README.md](/images/btn_back.png)](/) 2 | ![Screenshots light](/images/screenshots_light.png) 3 | ![Screenshots tablet light](/images/screenshots_tablet_light.png) -------------------------------------------------------------------------------- /images/screenshots_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/screenshots_light.png -------------------------------------------------------------------------------- /images/screenshots_tablet_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/screenshots_tablet_dark.png -------------------------------------------------------------------------------- /images/screenshots_tablet_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/screenshots_tablet_light.png -------------------------------------------------------------------------------- /images/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/title.png -------------------------------------------------------------------------------- /images/title_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/title_dark.png -------------------------------------------------------------------------------- /images/title_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/images/title_light.png -------------------------------------------------------------------------------- /iosApp/import/Media.xcassets/AppIcon.appiconset/1024_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/import/Media.xcassets/AppIcon.appiconset/1024_black.png -------------------------------------------------------------------------------- /iosApp/import/Media.xcassets/AppIcon.appiconset/1024_tinted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/import/Media.xcassets/AppIcon.appiconset/1024_tinted.png -------------------------------------------------------------------------------- /iosApp/import/Media.xcassets/AppIcon.appiconset/1024_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/import/Media.xcassets/AppIcon.appiconset/1024_white.png -------------------------------------------------------------------------------- /iosApp/import/Media.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "filename": "1024_black.png", 5 | "idiom": "universal", 6 | "platform": "ios", 7 | "size": "1024x1024" 8 | }, 9 | { 10 | "appearances": [ 11 | { 12 | "appearance": "luminosity", 13 | "value": "dark" 14 | } 15 | ], 16 | "filename": "1024_white.png", 17 | "idiom": "universal", 18 | "platform": "ios", 19 | "size": "1024x1024" 20 | }, 21 | { 22 | "appearances": [ 23 | { 24 | "appearance": "luminosity", 25 | "value": "tinted" 26 | } 27 | ], 28 | "filename": "1024_tinted.png", 29 | "idiom": "universal", 30 | "platform": "ios", 31 | "size": "1024x1024" 32 | } 33 | ], 34 | "info": { 35 | "author": "xcode", 36 | "version": 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /iosApp/import/Media.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "author": "xcode", 4 | "version": 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors": [ 3 | { 4 | "color": { 5 | "platform": "universal", 6 | "reference": "systemYellowColor" 7 | }, 8 | "idiom": "universal" 9 | } 10 | ], 11 | "info": { 12 | "author": "xcode", 13 | "version": 1 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/100.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/114.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/120.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/128.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/144.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/152.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/16.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/167.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/180.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/20.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/256.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/29.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/32.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/40.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/50.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/512.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/57.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/58.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/60.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/64.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/72.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/76.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/80.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/87.png -------------------------------------------------------------------------------- /iosApp/iosApp/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "author": "xcode", 4 | "version": 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /iosApp/iosApp/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CADisableMinimumFrameDurationOnPhone 6 | 7 | CFBundleURLTypes 8 | 9 | 10 | CFBundleTypeRole 11 | Viewer 12 | CFBundleURLName 13 | de.kitshn.appleios 14 | CFBundleURLSchemes 15 | 16 | kitshn 17 | 18 | 19 | 20 | ITSAppUsesNonExemptEncryption 21 | 22 | NSAppTransportSecurity 23 | 24 | NSAllowsArbitraryLoads 25 | 26 | 27 | bugsnag 28 | 29 | apiKey 30 | *REDACTED* 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "author": "xcode", 4 | "version": 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /iosApp/iosApp/com.apple.uikit.inputalternatives.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | defaultEnablement 6 | 7 | requiredOnboarding 8 | 9 | Arrow Swipe 10 | Scroll Drag 11 | Trackpad Capture 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /iosApp/iosApp/iosApp.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.associated-domains 6 | 7 | applinks:x.kitshn.app 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /kitshn.properties: -------------------------------------------------------------------------------- 1 | about.github=https://www.github.com/aimok04/kitshn 2 | about.github.new.issue=https://www.github.com/aimok04/kitshn/issues/new 3 | about.contact.website=https://kitshn.app 4 | about.contact.mailto=contact@kitshn.app 5 | about.apple.appstore=https://apps.apple.com/us/app/kitshn-for-tandoor/id6740168361 6 | # default kitshn crash receiver running on a cloudflare worker 7 | acra.http.uri=https://acra.kitshn.app/report/ 8 | acra.http.basic.auth.login=PDEogxtl3k4LMCnH 9 | acra.http.basic.auth.password=zmeLkKkJvsnwdrHA 10 | # default kitshn share wrapper 11 | share.wrapper.url=https://x.kitshn.app/# 12 | # funding api running on a cloudflare worker 13 | funding.api=https://funding-api.kitshn.app 14 | funding.kofi=https://ko-fi.com/aimok04 -------------------------------------------------------------------------------- /web/.vitepress/.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | *.tgz 3 | .DS_Store 4 | .idea 5 | .temp 6 | .vite_opt_cache 7 | .vscode 8 | dist 9 | cache 10 | temp 11 | examples-temp 12 | node_modules 13 | pnpm-global 14 | TODOs.md 15 | *.timestamp-*.mjs -------------------------------------------------------------------------------- /web/.vitepress/theme/index.ts: -------------------------------------------------------------------------------- 1 | import DefaultTheme from 'vitepress/theme' 2 | import './custom.css' 3 | 4 | export default DefaultTheme 5 | -------------------------------------------------------------------------------- /web/README.md: -------------------------------------------------------------------------------- 1 | Contains source of the website https://kitshn.app. -------------------------------------------------------------------------------- /web/components/badge.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /web/contact.md: -------------------------------------------------------------------------------- 1 | # Contact 2 | 3 | You can reach me here: 4 | - [contact@kitshn.app](mailto:contact@kitshn.app) 5 | - [Github (@aimok04)](https://github.com/aimok04) 6 | 7 | You can also open an [issue on Github](https://github.com/aimok04/kitshn/issues/new/choose) (public). 8 | This is especially recommended for bug reports and feature requests. -------------------------------------------------------------------------------- /web/docs/features/embedding-videos-inside-steps.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: kitshn supports playing videos associated with individual steps. 3 | --- 4 | 5 | 6 | 7 | # Embedding videos inside steps 8 | 9 | kitshn supports playing videos associated with individual steps. Due to restrictions within the Tandoor API, files need to include » **video** « in their respective names to be able to be detected by kitshn. 10 | 11 | ___ 12 | 13 | ### Examples of valid file names 14 | - video_step_one 15 | - step-two-video 16 | - recipe/video/step/one -------------------------------------------------------------------------------- /web/docs/features/templating.md: -------------------------------------------------------------------------------- 1 | # Templating 2 | 3 | kitshn (only) supports these three kinds of templating: 4 | 5 |
6 | 7 | - `{{ ingredients[xyz] }}` (e.g. *300g Potatoes*) 8 | - `{{ scale(xyz) }}` (Multiplies value *xyz* according to servings) 9 | - `{# nice comment #}` 10 | 11 |
12 | 13 | Learn more about templating in Tandoor [on here](https://docs.tandoor.dev/features/templating/). -------------------------------------------------------------------------------- /web/docs/translate.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: You can help translate kitshn on Weblate. 3 | --- 4 | 5 | # Translate 6 | 7 | This project is available on [Weblate](https://hosted.weblate.org/projects/kitshn/). All contributions are very welcome. Please don't hesitate to [contact](/contact) me if you have questions/ideas/suggestions on translating. 8 | 9 | These parts of kitshn are available to translate on **Weblate**: 10 | - [app](https://hosted.weblate.org/projects/kitshn/app/) 11 | - [F-Droid Metadata](https://hosted.weblate.org/projects/kitshn/metadata/) -------------------------------------------------------------------------------- /web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kitshn.app", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "dev": "vitepress dev", 7 | "build": "vitepress build", 8 | "preview": "vitepress preview" 9 | }, 10 | "author": "aimok04", 11 | "license": "GPL-3.0-or-later", 12 | "description": "Project website for kitshn, an unofficial Tandoor recipes client", 13 | "devDependencies": { 14 | "vitepress": "^1.3.4" 15 | } 16 | } -------------------------------------------------------------------------------- /web/public/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/android-icon-192x192.png -------------------------------------------------------------------------------- /web/public/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/apple-icon-114x114.png -------------------------------------------------------------------------------- /web/public/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/apple-icon-120x120.png -------------------------------------------------------------------------------- /web/public/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/apple-icon-144x144.png -------------------------------------------------------------------------------- /web/public/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/apple-icon-152x152.png -------------------------------------------------------------------------------- /web/public/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/apple-icon-180x180.png -------------------------------------------------------------------------------- /web/public/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/apple-icon-57x57.png -------------------------------------------------------------------------------- /web/public/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/apple-icon-60x60.png -------------------------------------------------------------------------------- /web/public/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/apple-icon-72x72.png -------------------------------------------------------------------------------- /web/public/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/apple-icon-76x76.png -------------------------------------------------------------------------------- /web/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /web/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/favicon-16x16.png -------------------------------------------------------------------------------- /web/public/favicon-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/favicon-256x256.png -------------------------------------------------------------------------------- /web/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/favicon-32x32.png -------------------------------------------------------------------------------- /web/public/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/favicon-96x96.png -------------------------------------------------------------------------------- /web/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/favicon.ico -------------------------------------------------------------------------------- /web/public/images/badges/apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/badges/apple.png -------------------------------------------------------------------------------- /web/public/images/badges/fdroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/badges/fdroid.png -------------------------------------------------------------------------------- /web/public/images/badges/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/badges/github.png -------------------------------------------------------------------------------- /web/public/images/badges/google_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/badges/google_play.png -------------------------------------------------------------------------------- /web/public/images/badges/izzyondroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/badges/izzyondroid.png -------------------------------------------------------------------------------- /web/public/images/badges/obtainium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/badges/obtainium.png -------------------------------------------------------------------------------- /web/public/images/docs/features/embedding-videos-inside-steps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/docs/features/embedding-videos-inside-steps.png -------------------------------------------------------------------------------- /web/public/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/logo.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_phone_allocate_ingredients.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_phone_allocate_ingredients.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_phone_cooking_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_phone_cooking_mode.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_phone_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_phone_home.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_phone_meal_plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_phone_meal_plan.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_phone_meal_plan_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_phone_meal_plan_new.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_phone_recipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_phone_recipe.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_phone_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_phone_search.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_phone_search_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_phone_search_dialog.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_tablet_allocate_ingredients.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_tablet_allocate_ingredients.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_tablet_cooking_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_tablet_cooking_mode.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_tablet_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_tablet_home.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_tablet_meal_plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_tablet_meal_plan.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_tablet_meal_plan_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_tablet_meal_plan_new.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_tablet_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_tablet_search.png -------------------------------------------------------------------------------- /web/public/images/screenshots/dark_tablet_search_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/dark_tablet_search_dialog.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_phone_allocate_ingredients.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_phone_allocate_ingredients.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_phone_cooking_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_phone_cooking_mode.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_phone_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_phone_home.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_phone_meal_plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_phone_meal_plan.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_phone_meal_plan_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_phone_meal_plan_new.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_phone_recipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_phone_recipe.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_phone_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_phone_search.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_phone_search_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_phone_search_dialog.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_tablet_allocate_ingredients.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_tablet_allocate_ingredients.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_tablet_cooking_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_tablet_cooking_mode.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_tablet_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_tablet_home.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_tablet_meal_plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_tablet_meal_plan.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_tablet_meal_plan_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_tablet_meal_plan_new.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_tablet_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_tablet_search.png -------------------------------------------------------------------------------- /web/public/images/screenshots/light_tablet_search_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/images/screenshots/light_tablet_search_dialog.png -------------------------------------------------------------------------------- /web/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kitshn.app", 3 | "icons": [ 4 | { 5 | "src": "\/android-icon-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": "0.75" 9 | }, 10 | { 11 | "src": "\/android-icon-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": "1.0" 15 | }, 16 | { 17 | "src": "\/android-icon-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": "1.5" 21 | }, 22 | { 23 | "src": "\/android-icon-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": "2.0" 27 | }, 28 | { 29 | "src": "\/android-icon-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": "3.0" 33 | }, 34 | { 35 | "src": "\/android-icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": "4.0" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /web/public/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/ms-icon-144x144.png -------------------------------------------------------------------------------- /web/public/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/ms-icon-150x150.png -------------------------------------------------------------------------------- /web/public/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/ms-icon-310x310.png -------------------------------------------------------------------------------- /web/public/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimok04/kitshn/a2fa06fc7bee1065c6d11230ebd1b0fe8d5fbf49/web/public/ms-icon-70x70.png -------------------------------------------------------------------------------- /web/translate.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: You can help translate kitshn on Weblate. 3 | head: 4 | - - meta 5 | - http-equiv: refresh 6 | content: 0 /docs/translate 7 | --- --------------------------------------------------------------------------------