Files
BadNote/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png

3 lines
462 B
Plaintext
Raw Normal View History

Fix bugs across app + server, optimize UI/UX, add Gitea CI Bug fixes (Flutter): - Wrap multi-statement DB writes (insert/update/delete note, deleteDocument, deletePageData, OCR FTS merge, migrations) in transactions to prevent data loss on interruption and a read-modify-write FTS race. - Fix PdfDocument leaks on exception (try/finally dispose) and preserve image aspect ratio when stamping images onto PDF pages. - Guard file-picker against empty selection (was .single -> crash). - Fix eraser ConcurrentModificationError and unmodifiable-list crash on PDF pages; capture page synchronously on save to stop wrong-page data loss. - Fix Riverpod DB-not-ready races, broken pull-to-refresh, settings load race, and search N+1; transform stored annotations on PDF page rotation. - Normalize pen pressure for devices without a pressure range. - PPT: single source of truth for slide strokes so ink displays and exports. UI/UX: - Material 3 typography, theme-aware colors (dark-mode fixes), hover cursors and right-click/visible actions on desktop, keyboard shortcuts (undo/redo/ save/find), toolbar overflow handling, friendlier empty states, semantic OCR status badges, relative timestamps, 1-based page indicators, large-deck PPT navigation, and a scratchpad-scope label in split view. Server (optional backend): - Persist JWT secret (was per-process random), block path traversal in storage, fix CORS '*'+credentials, add OCR job ownership checks, last-writer-wins sync guard, constant-time login, and split out heavy OCR deps so the API/tests run without them. CI: Gitea workflows for format+analyze+test (Linux, system sqlite) and a Windows release build; pristine `flutter analyze`, all Flutter and server tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 03:18:00 +08:00
<EFBFBD>PNG

IHDR::<00>e<EFBFBD><00>PLTE<54><45><EFBFBD>T<EFBFBD><54>W<>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>h<EFBFBD><68>Y<><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><>r<EFBFBD><72>z<>N<>At<41><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73>u<EFBFBD><75><18><><19><><18><>x<>Dz1W<00>IDATH<54><48><EFBFBD><EFBFBD><0E>0<14><>z<EFBFBD>@<40><><EFBFBD><EFBFBD>@<11><><EFBFBD><EFBFBD>S<EFBFBD><53>D"<22><11><>?I<><49><EFBFBD><02><><EFBFBD>6e<36>N<EFBFBD><4E><02><>YŲA<C5B2><41><EFBFBD>r<EFBFBD><72>;<3B>X<EFBFBD>2XH!<21><><EFBFBD>B<EFBFBD>tҿ}<7D>q: )<29><>x<EFBFBD>p<EFBFBD>N%( <09><><EFBFBD>^6 <0A><><J<>&O<>XjY<>{g<><67><EFBFBD><15>;TC<54><43><EFBFBD><EFBFBD>;<15>U<EFBFBD>t<EFBFBD><74>e<EFBFBD>ǥ<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>]Vc<56><63><EFBFBD>O<EFBFBD>J<EFBFBD><4A><EFBFBD>u<EFBFBD>\<5C><>l<EFBFBD>Hu<48><<3C><>f<EFBFBD><66><6<>ҏu<D28F>i<EFBFBD><04>-<2D><>i<>.<05>l<EFBFBD>׋+<2B>b<12>l<EFBFBD><0E>,q<>Ȩ[<5B>E<>K|<7C> <20>5<13><>`y<><79> ]<5D>šIEND<4E>B`<60>