Hey ✌️
I finally decided to release kitshn v2 🥳.
While it still isn't perfect yet, the stable release is quite outdated now, because it isn't even compatible with the new Tandoor versions.
These are the highlights of kitshn v2:
- Compatibility with Tandoor v2 (#95):
- The app is of course compatible with Tandoor v2 and also includes some new features like AI import or activity.
- Overhauled design using Material 3 Expressive (#204):
- The app contains some fresh new components and design concepts.
- It will make more use of haptic feedback.
- New features and improved usability:
- The app features a new Social Media Import function which can import posts from Instagram and TikTok.
- The app supports detecting timer ranges.
- The app supports creating timers on iOS (#115).
- ...
- A lot of bug fixes and minor improvements:
- New releases will now provide experimental
.flatpakbinaries. - ...
- New releases will now provide experimental
Commits
- fix(commonMain/api): increased timeout values for multipart requests to 60s (#301)
- fix(commonMain/import): improved fetching post content for instagram posts (resolved #302)
- fix(commonMain/books): issue when recipe book has more than 50 books (resolved #297)
- fix(commonMain/import): allow interaction with webview in RecipeImportSocialMediaDialog.kt (resolved #278)
- fix(commonMain/import): improved animation in RecipeImportSocialMediaDialog.kt (#278)
- fix(commonMain/utils): disable "day_after_tomorrow" and "day_before_yesterday" labels in english
- fix(commonMain/import): replace servings value with 1 if null (#295)
- chore(libs): version bumps
- feat(commonMain/import): replace servingsText when smaller than 6 characters (resolved #296)
- feat(commonMain/dialog): added "ignore" button to version compatibility dialog (#293)
- feat(commonMain/recipes): don't show merged ingredient list when recipe has only one step (resolved #294)
- feat(flatpak): added new flatpak directory with metadata
- feat(build.gradle): added appImage to targetFormats (for non Mac devices)
- fix(flatpak): added .java/.userPrefs as persistent folder
- fix(flatpak): changed socket to x11
- chore(libs): version bumps
- chore(libs): version bumps
- chore(gradle): bump compileSdk and targetSdk to 36
- github(workflows): added "Build flatpak on new version tag" workflow
- github(workflows): added "Build flatpak manually" workflow
- feat(commonMain/recipes): highlight IngredientItem when food has recipe value and open recipe link dialog on click (resolved #284)
- fix(commonMain/settings): close app when signing out
- Revert "fix(commonMain/mealplan): disabled date picker temporarily for iOS because it depends on kotlinx.datetime.Clock (#282)"
- chore(libs): version bumps (resolved #282)
- chore(commonMain/api): marked v2.3.3 as compatible
- chore(commonMain/api): marked v2.3.0 - v2.3.2 as compatible
- feat(commonMain/utils): improved formatDecimalToFraction with more accurate fraction matching (resolved #281)
- fix(commonMain/import): don't proceed with autoFetch when there is no default ai provider in social media import
- fix(commonMain/mealplan): disabled date picker temporarily for iOS because it depends on kotlinx.datetime.Clock (#282)
- feat(commonMain/import): improved image fetching when importing TikTok with social media import
- feat(commonMain/import): improved image fetching for instagram in social media import
- fix(libs): downgraded agp for compatibility with F-Droid
- fix(commonMain/api): increased timeout values for multipart requests to prevent timeouts for long requests (e.g. /ai-import/)
- fix(commonMain/import): added social media import url as sourceUrl when creating recipe
- fix(gradle): problem with compiling for android
- fix(commonMain/import): don't fetch imageURL if blank (resolved #266)
- fix(commonMain/import): wait until content is loaded in social media import (resolved #276)
- fix(commonMain/import): added error handler to fetchAiRequestState in RecipeImportSocialMediaDialog.kt (resolved #275)
- fix(commonMain/import): improved detection of iOS platform in social media import
- fix(commonMain/import): added error when recipe description is no longer than three characters in RecipeImportSocialMediaDialog.kt
- fix(libs): downgrade adaptive and compose material3 to fix paste issue on iOS (resolved #273)
- fix(mobileMain/ui): compiling error in ChoosePhotoBottomSheet.mobile.kt
- chore(libs): version bumps and downgrade compose
- fix(commonMain/home): replaced ExpandedDockedSearchbar with ExpandedFullScreenSearchbar again but its hidden when searchBarState != expanded (resolved #289)
- fix(commonMain/ui): replaced every KeyboardType.Number with KeyboardType.Decimal
- feat(commonMain/shopping): improved ShoppingListEntryCreationDialog for larger screens
- fix(commonMain/home): replaced ExpandedFullScreenSearchBar with ExpandedDockedSearchbar as a quickfix (#289)
- fix(commonMain/home): search toolbar color on large screen devices
- feat(README.md): added kitshn beta invite links to installation section
- feat(commonMain/import): added AI provider selector and adapted to AI related API changes
- feat(commonMain/ui): removed peekaboo and implemented ChoosePhotoBottomSheet for every photo upload situation
- feat(commonMain/recipes): implemented timer ranges regex and bottom sheet (resolved #169)
- feat(web/funding): update to funding api v2
- feat(README.md): add kitshn.app screenshots page link to impressions
- feat(README.md): improve impressions layout
- feat(README.md): update impressions to kitshn v2
- feat(web/screenshots): update screenshots to kitshn v2
- feat(fastlane): added Android take_screenshots lane and take_android_screenshots actions
- feat(commonMain & androidTest): added automatic screenshot creation for Android
- feat(README.md): update features
- feat(README.md): removed roadmap
- fix(commonMain): replaced kotlinx.datetime.Clock with kotlin.time.Clock and updated kotlinx-datetime
- fix(images): added testflight badge
- fix(commonMain/strings.xml): added search_providers string
- fix(commonMain/import): replaced search_categories with search_providers string in SelectAIProviderDialog.kt
- fix(commonMain/import): added SelectAIProviderDialog to RecipeImportAIDialog.kt
- fix(fastlane): increased sleep in take_android_screenshots.rb to ensure system ui demo mode being enabled
- fix(fastlane): changed Android take_screenshots lane to copy screenshots to web
- fix(fastlane): added missing screenshots
- fix(commonMain/books): also show placeholder icon when all recipes have no images
- fix(commonMain/mealplan): changed sorting order of mealplans to meal type time value (resolved #268)
- fix(commonMain/books): wrapped listAllEntries with TandoorRequestState to prevent exception
- fix(commonMain/books): filter recipes were not cleared/ updated when selecting different book (resolved #256)
- fix(commonMain/recipes): issue where ingredient amount template wasn't scaling (resolved #264)
- chore(fastlane): ran android take_screenshots
- chore(fastlane): ran android take_screenshots
- chore(libs): version bumps
- chore(fastlane): ran android take_screenshots
- chore(composeApp/composeResources): update aboutlibraries.json
- chore(commonMain/api): marked v2.0.3 - v2.2.7 as compatible
- l10n(German): translated using Weblate
- l10n(Ukrainian): translated using Weblate
- l10n(German): translated using Weblate
- l10n(Czech): translated using Weblate
- l10n(Catalan): translated using Weblate
- l10n(Czech): translated using Weblate
- l10n(Dutch): translated using Weblate
- feat(commonMain/shopping): show individual entries in ShoppingListEntryDetailsBottomSheet and added button to open it in shopping mode (resolved #249)
- feat(commonMain/shopping): added amount edit dialog to shopping list entries (resolved #232)
- feat(commonMain/recipes): added ingredients.amount, ingredients.unit, ingredients.food, and ingredients.note templates (resolved #250)
- feat(commonMain/home): added sorting option to HomeTraditionalLayout (resolved #251)
- feat(commonMain/recipes): improved details view when viewing shared recipes
- feat(commonMain/import): adapted RecipeFromSource model and fetch functions to v2 api
- feat(commonMain/import): improved social media import script
- feat(web/docs): update templating.md
- fix(commonMain/ui): added .imePadding in AdaptiveFullscreenDialog to make text fields accessible when focused (resolved #247)
- fix(commonMain/recipes): issue with parsing shared recipe link (resolved #253)
- fix(commonMain/mealplan): update details dialog when editing entry (resolved #246)
- fix(commonMain/import): save social media url as source url when importing (resolved #248)
- fix(commonMain/ui): layout issues when AdaptiveFullscreenDialog is fullscreen
- fix(commonMain/ui): removed window insets from AdaptiveFullscreenDialog when not fullscreen and enlarged click to dismiss area (resolved #252)
- chore(commonMain/api): marked v2.0.2 as compatible
- l10n(Ukrainian): translated using Weblate
- feat(commonMain/import): implemented new social media import with support for TikTok and Instagram (resolved #219)
- feat(*Main): added support for creating timers on iOS (resolved #115)
- feat(commonMain/recipes): display created by and created at data in RecipeDetails.kt
- feat(commonMain/home): implemented compact home screen design (resolved #239)
- feat(commonMain/onboarding): added iOS local network permission info hint (resolved #240)
- feat(commonMain): added SelectionContainers to multiple Text components (resolved #225)
- feat(commonMain/components): improved HorizontalRecipeCardLink design
- feat(commonMain/mealplan): added floating toolbar layout to MealPlanDetailsDialog (resolved #242)
- feat(commonMain/components): added min height to RecipeStepMultimediaBox (resolved #233)
- fix(commonMain/utils): removed annoying pager state haptics
- fix(commonMain/onboarding): removed PasswordVisualTransformation to allow paste on iOS (resolved #227)
- fix(commonMain/shopping): serialization issue with entries associated to meal plans with empty recipe field (resolved #244)
- fix(commonMain/import): adapted social media import script to iOS
- fix(commonMain/import): issue with social media import script on Android
- fix(commonMain/ui): changed containerColor of HorizontalRecipeLinkCard in SelectRecipeDialog.kt
- fix(commonMain/recipes): search view not opening correctly when clicking keyword chip
- fix(commonMain/mealplan): text overlapping in MealPlanDetailsCard (resolved #245)
- fix(commonMain/home): set new parameter to true in extended list query in HomeTraditionalLayout
- fix(commonMain/shopping): apply floatingToolbarVerticalNestedScroll after initial load (#235) (#230)
- fix(commonMain/home): changed floating toolbar to be horizontal (#234) (resolved #230)
- fix(commonMain/shopping): ignore casing when sorting shopping list items alphabetically (#236) (resolved #237)
- fix(commonMain/recipes): layout issue with long step title in RecipeStepCard.kt (resolved #223)
- chore(libs): updated library definitions
- chore(libs): version bumps
- chore(commonMain/api): marked v2.0.0/1 as compatible and removed alpha and beta versions
- l10n(Catalan): translated using Weblate
- l10n(Dutch): translated using Weblate
- l10n(French): translated using Weblate
- l10n(Russian): translated using Weblate
- l10n(Ukrainian): translated using Weblate
- l10n(Spanish): translated using Weblate
- feat(commonMain/import): added auto ingredient sorting to RecipeImportCommon.kt (resolved #186)
- feat(commonMain/recipes): added bottom sheet for adding comment to cook log in RouteRecipeCookPageDone
- feat(commonMain/recipes): added "Activity" card and bottom sheet dialog which display cook logs like the web app does (resolved #194)
- feat(commonMain/recipes): merge ingredients with shared unit, food and notes in RecipeDetails.kt (resolved #217)
- feat(commonMain): updated funding banner to api v2
- fix(commonMain/import): added position parameters to SettingsSwitchListItems in RecipeImportCommon.kt
- fix(commonMain/recipes): bug where ingredient amount gets multiplied in RecipeDetails view
- fix(commonMain/recipes): crash when recipe has no cook logs in RecipeActivityPreviewCard.kt
- chore(commonMain/api): marked v2.0.0-beta-2/3/4/5 as compatible
- Revert "fix(commonMain/shopping): disabled auto focus of food input field in ShoppingListEntryCreationDialog (#141)" (resolved #141)
- l10n(Chinese (Simplified Han script)): added translation using Weblate
- l10n(Ukrainian): translated using Weblate
- l10n(French): translated using Weblate
- l10n(Tamil): translated using Weblate
- l10n(Hindi (Latin script)): added translation using Weblate
- l10n(Portuguese (Brazil)): translated using Weblate
- l10n(Russian): translated using Weblate
- l10n(Russian): added translation using Weblate
- feat(iosApp): added app icon with liquid glass effect
- feat(commonMain/ui): replaced outdated progress indicators (Material3Expressive) (#204)
- feat(commonMain/ui): added haptic feedback to many actions and components (Material3Expressive) (#204)
- feat(commonMain/recipes): moved dropdown menu actions into HorizontalFloatingToolbar (Material3Expressive) (#204)
- feat(commonMain/recipes): adapted image roundness to screen rounding on Android (Material3Expressive) (#204)
- feat(commonMain/ui): added haptic feedback to selectors (meal plan and servings) (Material3Expressive) (#204)
- feat(commonMain/mealplan): added animation to date range chip in tool bar (Material3Expressive) (#204)
- feat(commonMain/ui): replaced some outlined text fields and cards (Material3Expressive) (#204)
- feat(commonMain/onboarding): replaced Autofill modifier with .semantics contentType
- feat(commonMain/ui): misc changes (Material3Expressive) (#204)
- feat(commonMain/ui): added loading indicator to list route (Material3Expressive) (#204)
- feat(commonMain/ui): redesign IngredientsList and IngredientItem (Material3Expressive) (#204)
- feat(commonMain/ui): redesign recipe views and routes (Material3Expressive) (#204)
- feat(commonMain/ui): redesign onboarding routes (Material3Expressive) (#204)
- feat(commonMain/ui): redesign settings views (Material3Expressive) (#204)
- feat(commonMain/ui): redesign AdaptiveFullscreenDialog (Material3Expressive) (#204)
- feat(commonMain/ui): redesign book views (Material3Expressive) (#204)
- feat(commonMain/ui): redesign shopping view and shopping mode route (Material3Expressive) (#204)
- feat(commonMain/ui): redesign meal plan view (Material3Expressive) (#204)
- feat(commonMain/ui): redesign home view and search (Material3Expressive) (#204)
- feat(commonMain/ui): add new components and classes (Material3Expressive) (#204)
- feat(commonMain/ui): adapt back button design (Material3Expressive) (#204)
- feat(commonMain/mealplan): use "default" meal type by default when creating new meal plan entry (resolved #211)
- fix(libs): reverted some version bumps
- fix(iosApp): updated import in SubscriptionView.swift
- fix(commonMain/main): set default sub route navigation animation to fade
- fix(iosMain/main.kt): disable default back gesture
- fix(commonMain/recipes): removed empty nav back stack read call
- fix(commonMain/mealplan): error when trying to move meal plan entry with associated recipe
- fix(commonMain): adapted to new back stack entry arguments api (Material3Expressive) (#204)
- fix(commonMain/ui): adapted funding banner (Material3Expressive) (#204)
- fix(commonMain/ui): show animation of TandoorBetaInfoDialog
- fix(composeApp): adapt to jetbrains compose alpha (#204)
- chore(libs): version bumps
- chore(commonMain/api): marked v2.0.0-alpha-5/6/7 and v2.0.0-beta-1 as compatible
- chore(libs): version bumps (Material3Expressive) (#204)
- feat(androidMain/AndroidManifest.xml): added android:enableOnBackInvokedCallback="true" to AppActivity
- feat(commonMain/api): update recipeOverview map when retrieving recipe model from server (resolved #171)
- feat(commonMain/search): improved buttons and cursor position when reopening dialog (resolved #203)
- feat(web/vitepress): changed website description
- feat(web): merged kitshn.app into main repo
- feat(README.md): update alerts
- feat(README.md): added certificate fingerprints (resolved #202)
- fix(commonMain/search): crash on Android due to using rememberSaveable with TextFieldValue
- fix(commonMain/home): issue where wrong meal plan entries were shown in promotion section (resolved #200)
- chore(gradle): update gradle/agp
- chore(libs): version bumps
- chore(commonMain/api): marked v2.0.0-alpha-4 as compatible
- chore(web): update dependencies
- github(workflows): added "Deploy kitshn.app" workflow
- l10n(Ukrainian): translated using Weblate
- l10n(Spanish): translated using Weblate
- l10n(French): translated using Weblate
- l10n(Polish): translated using Weblate
- l10n(Dutch): translated using Weblate
- l10n(Catalan): translated using Weblate
- l10n(Catalan): added translation using Weblate
- l10n(Polish): translated using Weblate
- l10n(Polish): fix short_description.txt being too long
- feat(androidMain/AndroidManifest.xml): added android:enableOnBackInvokedCallback="true" to AppActivity
- feat(commonMain/api): update recipeOverview map when retrieving recipe model from server (resolved #171)
- feat(commonMain/search): improved buttons and cursor position when reopening dialog (resolved #203)
- feat(web/vitepress): changed website description
- feat(web): merged kitshn.app into main repo
- feat(README.md): update alerts
- feat(README.md): added certificate fingerprints (resolved #202)
- fix(commonMain/search): crash on Android due to using rememberSaveable with TextFieldValue
- fix(commonMain/home): issue where wrong meal plan entries were shown in promotion section (resolved #200)
- chore(gradle): update gradle/agp
- chore(libs): version bumps
- chore(commonMain/api): marked v2.0.0-alpha-4 as compatible
- chore(web): update dependencies
- github(workflows): added "Deploy kitshn.app" workflow
- l10n(Ukrainian): translated using Weblate
- l10n(Spanish): translated using Weblate
- l10n(French): translated using Weblate
- l10n(Polish): translated using Weblate
- l10n(Dutch): translated using Weblate
- l10n(Catalan): translated using Weblate
- l10n(Catalan): added translation using Weblate
- l10n(Polish): translated using Weblate
- l10n(Polish): fix short_description.txt being too long
- feat(commonMain/recipes): implemented step editing and creation with markdown support (resolved #177)
- feat(build.gradle): removed F-Droid checkupdates fix (fdroid/fdroiddata#3531 on gitlab.com)
- feat(fastlane): added prepare_release and commit_release for easier and faster changelog and release creation
- fix(commonMain/recipes): fetch steps before creating new step to avoid discarding changes in StepCreationAndEditDialog
- fix(commonMain/recipes): moved save/create button into TopAppBar in StepCreationAndEditDialog for usability
- l10n(Russian): translated using Weblate
- l10n(German): translated using Weblate
- l10n(Ukrainian): translated using Weblate
- l10n(Polish): translated using Weblate
- l10n(Polish): added translation using Weblate
- feat(iosApp): added camera usage description in project.pbxproj
- fix(commonMain/shopping): increased entries clear dialog width (resolved #188)
- fix(androidMain/AndroidManifest.xml): removed unnecessary peekaboo READ_MEDIA_IMAGES permission
- fix(commonMain/api): changed date values to include time in UTC time zone (resolved #191)
- fix(commonMain): issue with converting the value of datePickerState to LocalDate (resolved #191)
- fix(androidMain, iosMain): parsing issue with new v2 recipe url in AppLinkHandler (resolved #189)
- chore(commonMain/api): marked v2.0.0-alpha-3 as compatible
- feat(build.gradle): added new "mobileMain" source set to unify peekaboo for androidMain and iosMain
- feat(androidMain/ui): added disableAnimation parameter to AdaptiveFullscreenDialog
- feat(commonMain/shopping): added "enlarge shopping mode" setting (resolved #181)
- feat(commonMain/shopping): implemented clear shopping list dialog (#95)
- feat(commonMain/ui): replaced peekaboo with FileKit in PhotoPickerDialog
- feat(commonMain/import): implemented support for import using AI
- feat(mobileMain/ui): added photo taking dialog using peekaboo library
- feat(commonMain/recipes): added recipe name to sharing text (resolved #185)
- fix(build.gradle): issue with applying default hierarchy template
- fix(commonMain/shopping): don't purge checked items from cache
- fix(commonMain/shopping): issue with deleting shopping list entries (resolved #184)
- chore(commonMain/api): marked v2.0.0-alpha-2 as compatible
- l10n(Ukrainian): translated using Weblate
- l10n(German): translated using Weblate
- l10n(Czech): added translation using Weblate
- l10n(Portuguese (Brazil)): added translation using Weblate
- feat(commonMain/mealplan): implemented fractional servings (resolved #168)
- feat(commonMain/recipes): added unified formatDuration method and support for displaying hours (resolved #173)
- feat(androidMain/shortcuts): added meal plan, shopping, shopping mode and books shortcuts (resolved #164)
- feat(androidMain/shortcuts): modernized icon of new instance shortcut
- feat(androidMain/acra): modernized icons in AcraCrashReportDialog
- feat(commonMain/navigation): replaced "default" icons and added inactive/active icons
- feat(commonMain/api): added server version breadcrumb
- fix(commonMain/recipes): keep food cell in ingredients table bigger (resolved #166)
- fix(commonMain/recipes): duplicate ingredients when unchecking item in RecipeIngredientAllocationDialog (resolved #174)
- fix(commonMain/strings.xml): removed unused error string
- fix(commonMain/ui): removed isSupported check in SpaceSwitchIconButton
- l10n(French): translated using Weblate
- l10n(Dutch): translated using Weblate
- l10n(Ukrainian): translated using Weblate
- l10n(German): translated using Weblate
- feat(commonMain): improved space switcher with new Tandoor v2 space api
- feat(commonMain): improved timer detection to support hours and multiple languages (resolved #167)
- feat(commonMain): added Ko-Fi link in Settings for android and jvm
- feat(fastlane): added beta deploy lanes for GitHub, Google Play and TestFlight
- feat(commonMain/main): added info dialog for the kitshn beta
- feat(commonMain/onboarding): added Tandoor v1 instance error to OnboardingSignIn
- feat(commonMain): implemented serverSettings api and outdated Tandoor v1 alert
- feat(commonMain/vm): added favorites.init and connectivityCheck to signIn function
- feat(commonMain): adapted importing to Tandoor v2
- feat(commonMain): adapted supermarket and supermarket category to Tandoor v2
- feat(commonMain/api): adapted recipe overview model to Tandoor v2
- feat(commonMain): adapted shopping meal plan data / recipe data to Tandoor v2
- feat(commonMain): adapted recipe model to Tandoor v2
- feat(commonMain/api): adapted mealplan and meal type to Tandoor v2
- feat(commonMain): adapted books to Tandoor v2
- feat(commonMain/shopping): adapted ViewModel to Tandoor v2
- feat(commonMain): adapted shopping to Tandoor v2
- feat(commonMain/shopping): adapted user and user preference api to Tandoor v2
- feat(commonMain/onboarding): unified signIn method for OnboardingSignIn(Browser)
- fix(commonMain/onboarding): remove mention of alpha in OnboardingWelcome
- fix(commonMain/dialog): width issue when opening SpaceSwitchDialog
- fix(commonMain/dialog): crash when creating duplicate keyword in SelectMultipleKeywordsDialog
- fix(commonMain/mealplan): increase fetch date range to cover issue with timestamps
- fix(commonMain/onboarding): NullPointerException in OnboardingSignIn
- fix(commonMain/api): removed unused fun in TandoorUserRoute
- fix(commonMain/shopping): remove all entries in update()
- fix(commonMain): FocusRequester is not initialized issue
- l10n(Italian): translated using Weblate
- l10n(Italian): added translation using Weblate
- l10n(Ukrainian): translated using Weblate
- l10n(German): translated using Weblate