Fix what the first Android run found
All checks were successful
CI / check (push) Successful in 6m44s
CI / deploy (push) Successful in 59s

The flow ran on a Pixel 9a and its emulator (2026-10-02); what it found:

- The composer stayed on the card just written after "New flashcard", and
  on the original after "Duplicate": leaving a card changed the state
  before the new one was in it, so the screen took the new card for gone.
  It now waits for the card it asked for.
- Bottom sheets reached under the status bar with the keyboard open
  (useSafeArea).
- The field being written stayed behind the keyboard: the editor scrolls
  only within itself, so the card face now keeps it in view when it opens
  and when the keyboard rises, as a text field does.
- A tap on read-only rich text put a caret in it and opened the keyboard on
  phones, and in the composer never opened the field. RichContentView is
  display only now: no selection, taps go to what surrounds it, a sound's
  button still plays (decided 2026-10-02).
- The card types broke their names on a phone; they are choice chips that
  wrap (decided 2026-10-02).
- The week overview marked days before the person's first activity as
  missed; they show nothing now. An import starts the activity too, without
  counting as studying (decided 2026-10-02).
- A composer preview cut short gave no sign of it; it fades out over its
  last 32 dp, only when cut short (decided 2026-10-02).
- "Isn't on this device yet" showed for any image or sound that failed;
  a file that is here but can't be decoded now says so, and offers no retry.
- The signed-in account card was narrower than the anonymous one.
- The composer's title said "Create flashcards" also when opened on a
  stored card; it says "Edit flashcards in …" then (decided 2026-10-02).
- The Anki fixtures carry a valid PNG and a silent MP3, so they also serve
  to try the import by hand (decided 2026-10-02); regenerated with Anki
  26.9.3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-02 19:52:39 +02:00
commit 079179d2ed
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -970,6 +970,18 @@ abstract class AppLocalizations {
/// **'Create flashcards for \"{title}\"'**
String composerTitleFor(String title);
/// No description provided for @composerEditTitle.
///
/// In en, this message translates to:
/// **'Edit flashcards'**
String get composerEditTitle;
/// No description provided for @composerEditTitleFor.
///
/// In en, this message translates to:
/// **'Edit flashcards in \"{title}\"'**
String composerEditTitleFor(String title);
/// No description provided for @composerSaving.
///
/// In en, this message translates to:
@ -2032,6 +2044,12 @@ abstract class AppLocalizations {
/// **'This image isn\'t on this device yet. It shows once it\'s uploaded and you\'re online.'**
String get fileImageUnavailable;
/// No description provided for @fileImageUnreadable.
///
/// In en, this message translates to:
/// **'This image can\'t be shown. Its file may be damaged, or in a format this device can\'t read.'**
String get fileImageUnreadable;
/// No description provided for @fileFromElsewhere.
///
/// In en, this message translates to:
@ -2056,6 +2074,12 @@ abstract class AppLocalizations {
/// **'This sound isn\'t on this device yet. It plays once it\'s uploaded and you\'re online.'**
String get fileSoundUnavailable;
/// No description provided for @fileSoundUnplayable.
///
/// In en, this message translates to:
/// **'This sound can\'t be played. Its file may be damaged, or in a format this device can\'t play.'**
String get fileSoundUnplayable;
/// No description provided for @ankiImportMenu.
///
/// In en, this message translates to: