From ddc44442223948e71b738882d7d24be96e3f2c13 Mon Sep 17 00:00:00 2001 From: Amani Date: Sun, 9 Aug 2026 15:47:54 -0500 Subject: [PATCH 1/3] fix(editor): reveal new text boxes above the keyboard --- app/note/[id].tsx | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/app/note/[id].tsx b/app/note/[id].tsx index 080a1a4..2a8f891 100644 --- a/app/note/[id].tsx +++ b/app/note/[id].tsx @@ -10,6 +10,8 @@ import { Alert, BackHandler, Keyboard, + KeyboardAvoidingView, + Platform, StyleSheet, View, useWindowDimensions, @@ -529,8 +531,19 @@ export default function NoteScreen() { ...state, textBoxes: [...state.textBoxes, box], })); + const needsTrailingBlankPage = pageIndex >= enginePages.length - 1; + const ensureTrailingBlankPage = needsTrailingBlankPage + ? canvasRef.current?.addPage({ force: true, scroll: false }) + : Promise.resolve(); + void ensureTrailingBlankPage?.finally(() => { + // Wait for the keyboard and its layout resize before positioning the + // active line. This preserves the user's current page position. + setTimeout(() => { + canvasRef.current?.revealPagePosition(pageIndex, box.y, true); + }, 250); + }); }, - [mutateOverlay], + [enginePages.length, mutateOverlay], ); const handleUpdateTextBox = useCallback( @@ -752,7 +765,10 @@ export default function NoteScreen() { onExport={() => void handleExport()} /> - + - + Date: Sun, 9 Aug 2026 15:48:17 -0500 Subject: [PATCH 2/3] fix(editor): allow scrolling in multiline text boxes --- src/components/editor/TextBoxOverlay.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/editor/TextBoxOverlay.tsx b/src/components/editor/TextBoxOverlay.tsx index 17632cf..9e78ee9 100644 --- a/src/components/editor/TextBoxOverlay.tsx +++ b/src/components/editor/TextBoxOverlay.tsx @@ -358,7 +358,9 @@ export function TextBoxOverlay({ value={localContent} onChangeText={handleContentChange} multiline - scrollEnabled={false} + // Keep the insertion point reachable when the text is longer + // than the box, particularly while the software keyboard is up. + scrollEnabled style={[ styles.input, { From 93dec24e2f7535098e7d2292870bb266d9af209d Mon Sep 17 00:00:00 2001 From: Amani Date: Sun, 9 Aug 2026 15:48:42 -0500 Subject: [PATCH 3/3] fix(editor): give new text boxes a usable default height --- src/components/editor/OverlayLayer.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/editor/OverlayLayer.tsx b/src/components/editor/OverlayLayer.tsx index 9b8a4e6..0ecc8e5 100644 --- a/src/components/editor/OverlayLayer.tsx +++ b/src/components/editor/OverlayLayer.tsx @@ -102,7 +102,9 @@ export function OverlayLayer({ x: Math.max(0, coord.x - 6), y: Math.max(0, coord.y - 12), width: 240, - height: 36, + // Give a new note enough room for several lines before its internal + // editor needs to scroll. + height: 120, content: '', color: activeColor, fontSize: 18,