diff --git a/client/cook/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/cook/ui/CookModeScreen.kt b/client/cook/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/cook/ui/CookModeScreen.kt index f7b75421a..4296d66f5 100644 --- a/client/cook/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/cook/ui/CookModeScreen.kt +++ b/client/cook/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/cook/ui/CookModeScreen.kt @@ -135,6 +135,7 @@ import com.plusmobileapps.chefmate.ui.components.PlusTooltipPlacement import com.plusmobileapps.chefmate.ui.components.WindowSizeClass import com.plusmobileapps.chefmate.ui.text.parseListLine import com.plusmobileapps.chefmate.ui.text.toDisplayAnnotatedString +import com.plusmobileapps.chefmate.ui.text.withoutLineBreakTags import com.plusmobileapps.chefmate.ui.theme.ChefMateTheme import kotlinx.coroutines.launch import org.jetbrains.compose.resources.stringResource @@ -1107,4 +1108,9 @@ private fun CookModeBottomBar( } } -private fun splitLines(text: String): List = text.split("\n").filter { it.isNotBlank() } +/** + * Splits stored recipe text into displayable lines, dropping blanks and the stray `
` tags + * recipes edited by an older build may still carry (see [withoutLineBreakTags]). + */ +private fun splitLines(text: String): List = + text.withoutLineBreakTags().split("\n").filter { it.isNotBlank() } diff --git a/client/recipe/core/impl/src/commonMain/kotlin/com/plusmobileapps/chefmate/recipe/core/impl/addgrocery/AddRecipeToGroceryListViewModel.kt b/client/recipe/core/impl/src/commonMain/kotlin/com/plusmobileapps/chefmate/recipe/core/impl/addgrocery/AddRecipeToGroceryListViewModel.kt index c02c379dd..85d97fa52 100644 --- a/client/recipe/core/impl/src/commonMain/kotlin/com/plusmobileapps/chefmate/recipe/core/impl/addgrocery/AddRecipeToGroceryListViewModel.kt +++ b/client/recipe/core/impl/src/commonMain/kotlin/com/plusmobileapps/chefmate/recipe/core/impl/addgrocery/AddRecipeToGroceryListViewModel.kt @@ -14,6 +14,7 @@ import com.plusmobileapps.chefmate.recipe.data.IngredientScaler import com.plusmobileapps.chefmate.recipe.data.IngredientSection import com.plusmobileapps.chefmate.recipe.data.Recipe import com.plusmobileapps.chefmate.recipe.data.RecipeRepository +import com.plusmobileapps.chefmate.ui.text.withoutLineBreakTags import com.russhwolf.settings.Settings import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedFactory @@ -145,7 +146,7 @@ class AddRecipeToGroceryListViewModel( return@launch } val lines = - recipe.ingredients.split("\n").filter { + recipe.ingredients.withoutLineBreakTags().split("\n").filter { it.isNotBlank() && !IngredientSection.isHeader(it) } _state.update { it.copy(isLoading = false, recipe = recipe, ingredientLines = lines) } diff --git a/client/recipe/core/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/recipe/core/detail/RecipeDetailScreen.kt b/client/recipe/core/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/recipe/core/detail/RecipeDetailScreen.kt index 3ec8563d2..d5ea6c957 100644 --- a/client/recipe/core/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/recipe/core/detail/RecipeDetailScreen.kt +++ b/client/recipe/core/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/recipe/core/detail/RecipeDetailScreen.kt @@ -176,6 +176,7 @@ import com.plusmobileapps.chefmate.ui.text.ListLine import com.plusmobileapps.chefmate.ui.text.parseListLine import com.plusmobileapps.chefmate.ui.text.toDisplayAnnotatedString import com.plusmobileapps.chefmate.ui.text.toInlineMarkdownAnnotatedString +import com.plusmobileapps.chefmate.ui.text.withoutLineBreakTags import com.plusmobileapps.chefmate.ui.theme.ChefMateTheme import com.plusmobileapps.chefmate.util.rememberShareLauncher import kotlin.time.ExperimentalTime @@ -1282,7 +1283,12 @@ private fun DetailRow( } } -private fun splitLines(text: String): List = text.split("\n").filter { it.isNotBlank() } +/** + * Splits stored recipe text into displayable lines, dropping blanks and the stray `
` tags + * recipes edited by an older build may still carry (see [withoutLineBreakTags]). + */ +private fun splitLines(text: String): List = + text.withoutLineBreakTags().split("\n").filter { it.isNotBlank() } private fun formatRecipeAsText(recipe: Recipe): String = buildString { appendLine(recipe.title) diff --git a/client/ui/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/ui/components/PlusMarkdownEditor.kt b/client/ui/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/ui/components/PlusMarkdownEditor.kt index f52efeac3..f95caa189 100644 --- a/client/ui/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/ui/components/PlusMarkdownEditor.kt +++ b/client/ui/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/ui/components/PlusMarkdownEditor.kt @@ -83,6 +83,7 @@ import com.plusmobileapps.chefmate.ui.text.toDisplayAnnotatedString import com.plusmobileapps.chefmate.ui.text.toggleBulletList import com.plusmobileapps.chefmate.ui.text.toggleInlineMarker import com.plusmobileapps.chefmate.ui.text.toggleNumberedList +import com.plusmobileapps.chefmate.ui.text.withoutLineBreakTags import com.plusmobileapps.chefmate.ui.theme.ChefMateTheme import kotlinx.coroutines.launch import org.jetbrains.compose.resources.stringResource @@ -116,7 +117,8 @@ class PlusMarkdownEditorController { * [showListButtons] adds bulleted/numbered list buttons to the toolbar — meaningful for the * one-item-per-line ingredient and direction fields, omitted for free-form fields like description. * - * A drag handle in the bottom-end corner resizes the editor between [minHeight] and [maxHeight]. + * A drag handle below the field, aligned to the end, resizes the editor between [minHeight] and + * [maxHeight]. */ @Composable fun PlusMarkdownEditor( @@ -167,17 +169,34 @@ fun PlusMarkdownEditor( val latestOnValueChange by rememberUpdatedState(onValueChange) // Seed the initial content synchronously so it's present on the first frame (no empty flash). remember(richTextState) { richTextState.setMarkdown(value) } - LaunchedEffect(value) { + // The rich editor's markdown as the caller last saw it. Tracking it lets both halves of the + // sync below compare without re-serializing the whole document on every keystroke. + var richTextMarkdown by remember { mutableStateOf(value) } + + // Both effects run only while rich text is the active editor. In Markdown mode the raw field + // owns the value, and letting the hidden rich state write back would round-trip every keystroke + // through the library's parser — which turns a pair of trailing blank lines into a literal + // `
` that the user then cannot delete, because deleting it re-creates it. + LaunchedEffect(richTextMode, value) { + if (!richTextMode) return@LaunchedEffect // Load external markdown into the rich editor; the equality guard avoids resetting the - // caret - // while the user is typing (we just emitted this exact value). - if (richTextState.toMarkdown() != value) richTextState.setMarkdown(value) + // caret while the user is typing (we just emitted this exact value). + if (value != richTextMarkdown) { + richTextMarkdown = value + richTextState.setMarkdown(value) + } } - LaunchedEffect(richTextState) { + LaunchedEffect(richTextMode, richTextState) { + if (!richTextMode) return@LaunchedEffect snapshotFlow { richTextState.annotatedString } .collect { - val markdown = richTextState.toMarkdown() - if (markdown != latestValue) latestOnValueChange(markdown) + // Blank paragraphs serialize to `
`, which is meaningless in the plain + // one-item-per-line text the caller stores — normalize it back to a blank line. + val markdown = richTextState.toMarkdown().withoutLineBreakTags() + richTextMarkdown = markdown + // Compare against the normalized caller value so a recipe saved with a stray + // `
` by an older build isn't reported as an edit the moment it's opened. + if (markdown != latestValue.withoutLineBreakTags()) latestOnValueChange(markdown) } } @@ -279,9 +298,14 @@ fun PlusMarkdownEditor( } } } + } + + // The handle sits below the field rather than overlaying its bottom-end corner: on touch + // platforms an overlay swallows the drags that move the caret and selection handles, which + // land in exactly that corner on the last line. + Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.End) { ResizeHandle( label = label, - modifier = Modifier.align(Alignment.BottomEnd), onResizeBy = { deltaDp -> heightDp = (heightDp + deltaDp).coerceIn(minHeight.value, maxHeight.value) }, @@ -416,7 +440,7 @@ private fun MarkdownPreview(text: String, modifier: Modifier = Modifier) { modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()), verticalArrangement = Arrangement.spacedBy(ChefMateTheme.dimens.paddingExtraSmall), ) { - text.split("\n").forEach { line -> + text.withoutLineBreakTags().split("\n").forEach { line -> Text( text = parseListLine(line).toDisplayAnnotatedString(), style = MaterialTheme.typography.bodyLarge, @@ -428,7 +452,11 @@ private fun MarkdownPreview(text: String, modifier: Modifier = Modifier) { } @Composable -private fun ResizeHandle(label: String, modifier: Modifier, onResizeBy: (Float) -> Unit) { +private fun ResizeHandle( + label: String, + onResizeBy: (Float) -> Unit, + modifier: Modifier = Modifier, +) { Icon( imageVector = Icons.Default.DragHandle, contentDescription = stringResource(Res.string.markdown_editor_resize_handle_a11y, label), diff --git a/client/ui/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/ui/text/MarkdownFormatting.kt b/client/ui/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/ui/text/MarkdownFormatting.kt index de9c9fc5c..259622a49 100644 --- a/client/ui/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/ui/text/MarkdownFormatting.kt +++ b/client/ui/public/src/commonMain/kotlin/com/plusmobileapps/chefmate/ui/text/MarkdownFormatting.kt @@ -125,3 +125,26 @@ private fun TextFieldValue.toggleLinePrefix( selection = TextRange(lineStart, lineStart + rewritten.length), ) } + +/** The HTML tag the rich-text editor serializes a run of consecutive blank paragraphs to. */ +private const val LINE_BREAK_TAG = "
" + +/** + * Rewrites the standalone `
` lines the rich-text editor emits for consecutive blank paragraphs + * back into the plain blank lines they stand for. + * + * Recipe text is stored as plain, one-item-per-line markdown and rendered with the inline parser, + * which knows nothing about HTML — so a `
` that reaches storage shows up as a literal line of + * text on the detail and cook screens, and as a stray item when ingredients are added to a grocery + * list. The blank line it stands for survives the round trip through the rich editor unchanged, so + * dropping the tag is lossless. Lines without the tag are returned untouched. + */ +fun String.withoutLineBreakTags(): String = + if (!contains(LINE_BREAK_TAG)) { + this + } else { + split("\n").joinToString("\n") { line -> + if (!line.contains(LINE_BREAK_TAG)) line + else line.replace(LINE_BREAK_TAG, "").let { if (it.isBlank()) "" else it } + } + } diff --git a/client/ui/public/src/commonTest/kotlin/com/plusmobileapps/chefmate/ui/text/LineBreakTagsTest.kt b/client/ui/public/src/commonTest/kotlin/com/plusmobileapps/chefmate/ui/text/LineBreakTagsTest.kt new file mode 100644 index 000000000..be0aa040a --- /dev/null +++ b/client/ui/public/src/commonTest/kotlin/com/plusmobileapps/chefmate/ui/text/LineBreakTagsTest.kt @@ -0,0 +1,66 @@ +package com.plusmobileapps.chefmate.ui.text + +import com.mohamedrejeb.richeditor.model.RichTextState +import io.kotest.matchers.shouldBe +import kotlin.test.Test + +class LineBreakTagsTest { + + @Test + fun textWithoutTagsIsUnchanged() { + "1 cup flour\n2 eggs\n\n- pinch of salt".withoutLineBreakTags() shouldBe + "1 cup flour\n2 eggs\n\n- pinch of salt" + } + + @Test + fun standaloneTagBecomesBlankLine() { + "Step one\n\n
".withoutLineBreakTags() shouldBe "Step one\n\n" + } + + @Test + fun consecutiveTagsEachBecomeBlankLines() { + "Step one\n\n
\n
".withoutLineBreakTags() shouldBe "Step one\n\n\n" + } + + @Test + fun tagIsStrippedFromALineThatKeepsItsText() { + "Step one
".withoutLineBreakTags() shouldBe "Step one" + } + + /** + * The bug this normalization exists for: pressing enter twice at the end of a field left a + * literal `
` in the stored text that reappeared as fast as it was deleted. + */ + @Test + fun trailingBlankParagraphsDoNotSerializeToATag() { + val state = RichTextState() + state.setMarkdown("Step one\n\n") + + state.toMarkdown() shouldBe "Step one\n\n
" + state.toMarkdown().withoutLineBreakTags() shouldBe "Step one\n\n" + } + + /** + * The editor feeds the normalized markdown straight back into the rich editor when the value + * changes externally, so normalizing must be a fixed point — otherwise the two halves of the + * sync fight each other on every keystroke. + */ + @Test + fun normalizedMarkdownRoundTripsThroughTheRichEditor() { + listOf( + "", + "Step one", + "1 cup flour\n2 eggs", + "Step one\n\n", + "- a\n- b\n- c", + "1. a\n2. b", + "**bold** step\nplain step", + ) + .forEach { markdown -> + val state = RichTextState() + state.setMarkdown(markdown) + + state.toMarkdown().withoutLineBreakTags() shouldBe markdown + } + } +} diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeDarkScreenshot_a850d601_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeDarkScreenshot_a850d601_0.png index 4d142fa93..ac5cdeaac 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeDarkScreenshot_a850d601_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeDarkScreenshot_a850d601_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27c29f251a06f23a018c33a182cbf77de2cacc746faacb18513405c2fc1a169e -size 293730 +oid sha256:67b1e06232c3d838e3753686d43b35b9b92989ac0c95fa93335111e6a44f660a +size 293635 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeLightScreenshot_c017aa92_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeLightScreenshot_c017aa92_0.png index 848759cc2..ce50ca493 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeLightScreenshot_c017aa92_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeLightScreenshot_c017aa92_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:876be37173f7033fb8018490375578b8d7f09f6a18373ac6da9330d530c169ed -size 295796 +oid sha256:42667d40322832a197cef140dc0fb2f150185e831c5035910c97977f51a1895f +size 296204 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeMoreDetailsExpandedScreenshot_3c7a6d46_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeMoreDetailsExpandedScreenshot_3c7a6d46_0.png index 39339ef04..4640849ad 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeMoreDetailsExpandedScreenshot_3c7a6d46_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeMoreDetailsExpandedScreenshot_3c7a6d46_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0183af7a0d4ab7dcbf73504c1d467a2b90fd74fdca3c4b3fb3f81c53e2c4b73 -size 422300 +oid sha256:59f6a1c78000e9036c956bb90edfe8a99ee7203fd76089d50d8b2b3a86d18add +size 419650 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeWideDarkScreenshot_1e8b529f_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeWideDarkScreenshot_1e8b529f_0.png index 9380e42f7..602e61f80 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeWideDarkScreenshot_1e8b529f_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeWideDarkScreenshot_1e8b529f_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c42f5b599e8946e3e15640757bc41bbaee7dce38ef872c3307c54a6413448f0 -size 242012 +oid sha256:1ffc202a80c73b64d893febad522aa51cef929f291de8d5dce4dc12fd19b1b8b +size 247746 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeWideLightScreenshot_25537161_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeWideLightScreenshot_25537161_0.png index d41b6f4e8..20936e74b 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeWideLightScreenshot_25537161_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/EditRecipeScreenshotTestKt/EditRecipeWideLightScreenshot_25537161_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:031a11bae30f4f0c409d372466ccedf6a8a5703e3d57208cae35d7f18476a961 -size 244535 +oid sha256:864f96a8f6bfec04e6744b7105e65e1839aa7ab7c24634ae1f904982562a7190 +size 250098 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorListButtonsDarkScreenshot_a2bb6dcc_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorListButtonsDarkScreenshot_a2bb6dcc_0.png index c737cd942..775c48af1 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorListButtonsDarkScreenshot_a2bb6dcc_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorListButtonsDarkScreenshot_a2bb6dcc_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8b5f3d69f8d0ba7987f4fdeaf7553dafb29e1e8193ee0d5dd4dd3ac05011693 -size 54908 +oid sha256:bf9e0d8f751427918b274836da924c42a515db816fd6470bc51accf319231fc7 +size 55934 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorListButtonsLightScreenshot_e9d483d5_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorListButtonsLightScreenshot_e9d483d5_0.png index a9c2d4c09..72d5a075a 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorListButtonsLightScreenshot_e9d483d5_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorListButtonsLightScreenshot_e9d483d5_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a8299b3d6c1d9c0820cceeeef9a073e125f66ea00c60df991d4a6520c835a61 -size 54816 +oid sha256:4f5e63950334ab4a5b385cb5841edfb7dab3f8588159b10a670c6cf641c639e3 +size 55848 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorMarkdownDarkScreenshot_a2bb6dcc_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorMarkdownDarkScreenshot_a2bb6dcc_0.png index 5db5ff4ba..b7a09a7a3 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorMarkdownDarkScreenshot_a2bb6dcc_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorMarkdownDarkScreenshot_a2bb6dcc_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbd7b02a16cdd3a394bc7e4d2d9f3e1b18c2472134edabf07b521412c2171bce -size 47239 +oid sha256:4d38c785652fa42ce28dcc2d434c4a0066ece46045991df425a84d7411e363f8 +size 48255 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorMarkdownLightScreenshot_e9d483d5_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorMarkdownLightScreenshot_e9d483d5_0.png index 4a353c0a1..251fe76b5 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorMarkdownLightScreenshot_e9d483d5_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorMarkdownLightScreenshot_e9d483d5_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9113b60e197017e843424669949d871fc38776ac4af26f8117ca008ffcc7ca84 -size 47051 +oid sha256:cdc2c1fc5f144021f9fdad65d9c66c7c96c231ef83ba9039794f02c89d06522b +size 48076 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorRichTextDarkScreenshot_a2bb6dcc_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorRichTextDarkScreenshot_a2bb6dcc_0.png index b1ed08f60..7ecefc34d 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorRichTextDarkScreenshot_a2bb6dcc_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorRichTextDarkScreenshot_a2bb6dcc_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8b3eba1ce8f6091c0d9d0184d6d2c190c9a6415925dcb97f99d29fd16957534 -size 39448 +oid sha256:5966a8bbbbd9b9d49f817eec7ca21007990d7fc14c818b2989902ac766ddbfcd +size 40443 diff --git a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorRichTextLightScreenshot_e9d483d5_0.png b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorRichTextLightScreenshot_e9d483d5_0.png index d77df9e3b..e31833ac3 100644 --- a/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorRichTextLightScreenshot_e9d483d5_0.png +++ b/client/ui/screenshot-test/src/screenshotTestDebug/reference/com/plusmobileapps/chefmate/ui/screenshot/PlusMarkdownEditorScreenshotTestKt/PlusMarkdownEditorRichTextLightScreenshot_e9d483d5_0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c42b3f0e630b363e3c8500df575ecad231e0c0dcff71685a609f042f828332a -size 39312 +oid sha256:720b00825abaeaa899a4d75b7612748f82f1e23b4088bfe936c4bec664a41afe +size 40338