Skip to content

Pre-release: signal-creation wizard (Bulgarian translation review + verification gaps) #69

Description

@BurningAXE

Pre-release checklist for the signal-creation wizard (feature/signal-wizard, merged into dev).

The create-signal flow was refactored from a single cramped overlay into an eight-step wizard. Code is verified and merged; the items below are what still needs a human before this ships to users.


1. Bulgarian translation review — required before release

26 new bg keys were written by Claude, not by a native speaker. They are grammatical but unreviewed, and they are the entire user-facing voice of the new flow. Everything is in lib/l10n/app_bg.arb (app_en.arb is the reference).

The two worth checking first:

  • newSignalHintUrgency — "Червената тревога известява всички доброволци наблизо, така че я пазете за истински спешни случаи." This is the guardrail on Red Alert, the one field that pushes to every nearby subscriber. If the wording is weak, Red gets overused and stops meaning anything.
  • newSignalPinPlaced — "Щифтът е поставен". Щифт is the literal mechanical "pin"; the map sense may read oddly. Shown on the review screen next to the coordinates.

Full list to review:

Group Keys
Navigation next, back, skip, change
Step counter newSignalStepCounter
Step titles newSignalStep{Location,Photo,Details,Animal,Type,Urgency,Help,Review}
Step questions newSignalQuestion{Location,Photo,Details,Animal,Type,Urgency,Help,Review}
Step hints newSignalHint{Location,Photo,Details,Urgency,Review,Help}
Review / discard newSignalAddPhoto, newSignalNoPhoto, newSignalNotProvided, newSignalPinPlaced, newSignalDiscard{Title,Message,Confirm,Keep}
Validation pleaseSelectLocation

Both ARB files are in sync at 403 keys. A duplicate removePhoto key was removed while in there.

Verified on device: the full flow was walked in bg-BG on the Galaxy Tab A8 — every step, the review screen and the discard dialog rendered in Bulgarian with no English fallthrough.


2. The bug this fixes for Bulgarian users

The old form's category dropdown rendered the raw English Signal.signalTypes constants instead of Signal.getLocalizedSignalTypes, so Bulgarian reporters picked their category out of an English list ("Unneutered animals", "Blood donation"). The wizard uses the localized list. Confirmed on device — the step now reads "Спешен случай / Изгубено или намерено / Кръводаряване / Бездомно / Некастрирани животни / Диви животни / Друго".


3. Integration test has never been executed

integration_test/signal_submission_test.dart was rewritten to drive the wizard by stable Semantics identifiers instead of positional finders. It compiles and is analyzer-clean, but it has not been run — it needs a device plus integration_test/test_credentials.json.

Context: the previous version could not have been passing either. It located fields by find.byType(TextField).at(1) and never answered urgency, animal type or help tags, all of which became required with the tags work.

It also now forces test mode on before app.main(). Neither it nor the tests beside it ever did, so a run wrote to the live signals collection and fanned the test signal out to nearby volunteers. map_interaction_test.dart and notification_test.dart still have that problem and should get the same guard.


4. Device verification already done

Device Result
Galaxy Tab A8 (Android 14) Full flow, submit, photo upload, bg-BG pass
Galaxy J6+ (Android 10, 720×1480) Full flow, small-screen layout, 3-tag cap
iPad 6th gen (iPadOS 17.7.11) Full flow via WebDriverAgent, profile build
iPhone 17 simulator Launch, map render, anonymous sign-in gate

Checked on each: per-step Next gating; auto-advance on Animal and Urgency but not on the pre-filled Category or the multi-select tags step; Back preserving answers without re-triggering auto-advance; Red Alert confirmation, including that declining leaves urgency unset; review → change location → map → back to review with the pin updated; discard prompt only on a dirty draft.

Four Firestore docs were verified in signals_test — correct geohash (precision 9) matching the confirmed pin, helpNeededTags order preserved, and one photo submission with a real Storage URL in photoUrls.

Not covered: the camera capture path on iOS. The simulator has no camera, and the iPad run used gallery/skip. The equivalent gallery → Storage upload path is verified on Android.


5. Housekeeping

  • Four test signals remain in signals_test from the device runs — safe to leave, or delete.
  • The iPad needs Help a Paw reinstalled from the App Store. Automated verification required a profile build, which uses bundle id com.helpapaw.helpapaw and replaced the store app.
  • new_signal_form.dart is deleted, deliberately. It was restored once in 91d94d8 as "deleted by mistake"; it is the 476-line overlay the wizard replaces, nothing has referenced it since map_page switched to the location bar, and left in place it no longer compiles against submitSignal's current signature.
  • Stale note to remove from CLAUDE.md: the recorded desktop_webview_auth SIGSEGV at plugin registration did not reproduce — the app launched cleanly on both the simulator and the iPad. The go-ios-tunnel ↔ CoreDevice conflict beside it is real, but it only blocks debug builds; a profile build sidesteps it and is fully automatable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions