Files
BadNote/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png

4 lines
450 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>PLTE<54><45><EFBFBD>T<EFBFBD><54>)<29><>W<>W<EFBFBD><57>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \<5C>`<60><>/<2F><>O<><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ^<5E><><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<>=f<><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD>%<25><><EFBFBD><EFBFBD><EFBFBD>'<27><>&<26><>g<EFBFBD><67>\<5C><>
W<EFBFBD>K}Bv<00>IDATH<54><48><EFBFBD><EFBFBD><0E>0@<40>Z<16>R6ApAw<><77><EFBFBD><EFBFBD>B<><42><EFBFBD> } D<>#<23>I<EFBFBD>)%SS<53><53>9,<2C>Yo&3<><33><EFBFBD>8kA룬۲<EBA3AC><DBB2><EFBFBD>5<EFBFBD><35>5,<1B><><12>ՙ<EFBFBD>m<><6D><EFBFBD><08>w<EFBFBD>o0Y<30><59><19> <06>[<5B>8<EFBFBD><38>;<3B><>SZWZ<57>%<25>x<EFBFBD><78>JZ<4A>8<EFBFBD><38>8g^<5E>@<><E98C9B>)<29>4Ԓ몴U[F<>ԑ<EFBFBD>DRW<52><57><EFBFBD>RG.<2E>t<12>ё<EFBFBD><D191>uv]<5D>g<EFBFBD>iT<><54><EFBFBD>[<5B>[<5B>FxA<78><41><EFBFBD><EFBFBD>5<EFBFBD>F<><46><EFBFBD>o/<2F><>ha<68><61>[<5B>><3E> <09><>FUZb<5A><16>6<EFBFBD>ؙ<EFBFBD>L<>P<EFBFBD>?<3F><>c)<29>gd<67><64><EFBFBD><13><10><><03><>IEND<4E>B`<60>