Skip to content
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
ec9b91c
feat: Introduce recovery phrase and rejoin study features with new on…
ibrahimozkn Nov 28, 2025
c4cada6
feat: Upgrade recovery phrase system to 128-bit IDs, updating encodin…
ibrahimozkn Dec 1, 2025
5f174dc
feat: implement account recovery and study rejoining functionality wi…
ibrahimozkn Dec 1, 2025
6c83fbf
feat: enhance rejoin study screen with a single recovery phrase input…
ibrahimozkn Dec 1, 2025
66c948d
refactor: Rename wordlist constants and export recovery utilities fro…
ibrahimozkn Dec 1, 2025
c3d1996
feat: Add QR code support for recovery phrase management, enabling sc…
ibrahimozkn Dec 2, 2025
6c6c3ee
refactor: Update `share_plus` API usage, simplify QR scanner camera s…
ibrahimozkn Dec 4, 2025
3845e60
refactor: Update import paths for recovery QR utilities and enhance U…
ibrahimozkn Dec 4, 2025
b3055fe
feat: Add localized strings for general settings, current study, part…
ibrahimozkn Dec 4, 2025
71f4a53
refactor: Improve formatting of button labels in recovery phrase widg…
ibrahimozkn Dec 4, 2025
5bf9504
feat: Update recovery phrase save hint for improved clarity in Englis…
ibrahimozkn Dec 4, 2025
48248a9
fix: Correctly instantiate RecoveryPhraseWidget with const for perfor…
ibrahimozkn Dec 4, 2025
b186390
feat: Implement secure account recovery with a dedicated recovery ID …
ibrahimozkn Dec 8, 2025
c2500de
Merge branch 'dev' into feat/rejoin-study
ibrahimozkn Dec 8, 2025
0b659b2
feat: Enhance recovery flow with validation, constants, and integrati…
ibrahimozkn Jan 29, 2026
a06484c
fix: Remove redundant rate limiting tests from recovery workflow
ibrahimozkn Jan 29, 2026
59cdf62
refactor: Optimize widget instantiation and clean up imports in recov…
ibrahimozkn Jan 29, 2026
26a02b1
fix: Remove integration_test dependency from dev_dependencies in pubs…
ibrahimozkn Jan 29, 2026
0ec8bbd
chore: Remove recovery_tests workflow file
ibrahimozkn Jan 29, 2026
09f536a
Merge remote-tracking branch 'origin/dev' into feat/rejoin-study
ibrahimozkn Jan 29, 2026
008871e
chore: Update package versions in pubspec.lock
ibrahimozkn Jan 29, 2026
825d688
fix: Update exception handling in rejoin study service and improve re…
ibrahimozkn Jan 29, 2026
d40816c
chore: Apply static analysis changes
ibrahimozkn Jan 29, 2026
98f42fd
Merge branch 'dev' into feat/rejoin-study
johannesvedder Feb 25, 2026
05cc1f9
Merge remote-tracking branch 'origin/dev' into feat/rejoin-study
johannesvedder Jul 6, 2026
caf6fb5
chore: Apply static analysis changes
johannesvedder Jul 6, 2026
a200813
Merge branch 'dev' into feat/rejoin-study
johannesvedder Jul 6, 2026
0fe7012
fix(app,core,db): address code review findings from dev merge
johannesvedder Jul 6, 2026
2da3f2a
fix(db): whitelist invite RPC fields and fix lint warnings
johannesvedder Jul 7, 2026
c7b7586
refactor(app): simplify onboarding layouts
johannesvedder Jul 9, 2026
ef11fb5
fix(app): improve account recovery flow
johannesvedder Jul 9, 2026
ee404e8
fix(app): rename recovery account route
johannesvedder Jul 9, 2026
fbfcc15
fix(app): rename rejoin account route to restore account and update r…
johannesvedder Jul 9, 2026
00cd41d
rename rejoin study screen/service to restore account
johannesvedder Jul 9, 2026
1194ee1
polish recovery phrase flow
johannesvedder Jul 9, 2026
b4a9704
chore: Apply static analysis changes
johannesvedder Jul 9, 2026
0fdf6f1
polish recovery phrase settings card
johannesvedder Jul 9, 2026
e783fbb
test(app): update recovery phrase expectations
johannesvedder Jul 9, 2026
f19fa36
fix(app): prevent recovery phrase cache leaks
johannesvedder Jul 9, 2026
eacd129
refactor(app): remove recovery phrase purpose messages from localizat…
johannesvedder Jul 9, 2026
180302a
Show error for stale participant credentials
johannesvedder Jul 9, 2026
43a84a8
Enable recovery phrase confirmation in debug
johannesvedder Jul 9, 2026
a51cd1e
Fix deferred deep link handling
johannesvedder Jul 10, 2026
ae4f37c
Cover invite deep link processing
johannesvedder Jul 10, 2026
0289fcf
Remove iOS clipboard deferred links
johannesvedder Jul 10, 2026
e61ae15
Update CocoaPods to version 1.17.0 and clean up Podfile.lock
johannesvedder Jul 10, 2026
e82ed9c
fix(app): show recovery phrase after dashboard opens
johannesvedder Jul 10, 2026
763de4f
fix(app): persist pending deep links
johannesvedder Jul 10, 2026
6281eab
fix(app): repair invite onboarding routing
johannesvedder Jul 10, 2026
8747f8c
fix(app): clarify active study invite switch
johannesvedder Jul 10, 2026
a189d77
fix(app): show dashboard tour after study starts
johannesvedder Jul 10, 2026
ab9e7df
fix(app): resolve dev merge conflicts
johannesvedder Jul 10, 2026
b9e0027
Merge branch 'dev' into feat/rejoin-study
johannesvedder Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 70 additions & 1 deletion app/lib/l10n/app_de.arb
Original file line number Diff line number Diff line change
Expand Up @@ -455,5 +455,74 @@
"preview_mode_description": "Sie befinden sich derzeit im Vorschau-Modus. Dies ermöglicht Ihnen:\n\n• Schneller Vorlauf durch Studientage mit der \"Nächster Tag\" Schaltfläche\n• Mehrfaches Abschließen von Aufgaben ohne Einschränkungen\n• Erleben des vollständigen Studienablaufs ohne Beeinflussung echter Daten\n\nWichtig: Ergebnisse und Daten aus dem Vorschau-Modus werden nicht gespeichert oder mit tatsächlichen Teilnehmerergebnissen aus laufenden Studien vermischt.",
"preview_mode_results_not_saved": "Ergebnisse werden zum Schutz der Studienintegrität nicht gespeichert.",
"ok": "OK",
"submit" : "Absenden"
"submit" : "Absenden",

"recovery_phrase_setup_title": "Wiederherstellungsphrase einrichten",
"recovery_phrase_header": "Deine geheime Wiederherstellungsphrase",
"copy_to_clipboard": "In die Zwischenablage kopieren",
"copied_to_clipboard": "In die Zwischenablage kopiert",
"recovery_phrase_purpose_header": "Du benötigst diese Phrase um:",
"recovery_phrase_purpose_1": "✓ Auf einem anderen Gerät fortzufahren",
"recovery_phrase_purpose_2": "✓ Deinen Fortschritt nach Neuinstallation wiederherzustellen",
"recovery_phrase_save_hint": "Speichere sie jetzt an einem sicheren Ort.",
"recovery_phrase_saved_confirmation": "Ich habe meine Wiederherstellungsphrase sicher gespeichert.",
"continue_to_study": "Weiter zur Studie",
"rejoin_study": "Studie wieder beitreten",
"enter_recovery_phrase": "Gib deine Wiederherstellungsphrase ein",
"required": "Erforderlich",
"invalid_recovery_phrase": "Ungültige Wiederherstellungsphrase. Bitte überprüfe deine Wörter.",
"recovery_successful": "Wiederherstellung erfolgreich! ID: {id}",
"@recovery_successful": {
"placeholders": {
"id": {
"type": "String"
}
}
},

"recovery_in_progress": "Konto wird wiederhergestellt...",
"recovery_failed": "Wiederherstellung fehlgeschlagen. Bitte überprüfe deine Wiederherstellungsphrase und versuche es erneut.",
"recovery_user_not_found": "Kein Konto mit dieser Wiederherstellungsphrase gefunden.",
"recovery_rate_limit": "Bitte warte einen Moment, bevor du es erneut versuchst.",
"recovery_network_error": "Netzwerkfehler. Bitte überprüfe deine Verbindung und versuche es erneut.",

"rejoin_study_description": "Gib deine 13-Wörter-Wiederherstellungsphrase ein, um deine Studie auf diesem Gerät fortzusetzen.",
"rejoin_study_help_title": "So verwendest du deine Wiederherstellungsphrase",
"rejoin_study_help_1": "Gib alle 13 Wörter deiner gespeicherten Wiederherstellungsphrase in der richtigen Reihenfolge ein",
"rejoin_study_help_2": "Wörter können eingefügt werden—sie füllen automatisch die Felder aus",
"rejoin_study_help_3": "Die Wiederherstellungsphrase unterscheidet nicht zwischen Groß- und Kleinschreibung",

"share_recovery": "Wiederherstellung teilen",
"share_as_text": "Als Text teilen",
"share_as_qr": "Als QR-Code teilen",
"download_recovery": "Wiederherstellung herunterladen",
"download_as_text": "Als Textdatei herunterladen",
"download_as_qr": "Als QR-Bild herunterladen",
"scan_qr_code": "QR-Code scannen",
"scan_qr_description": "Scanne einen QR-Code mit deiner Wiederherstellungsphrase",
"scanning_qr": "QR-Code wird gescannt",
"qr_scan_instruction": "Richte deine Kamera auf den QR-Code",
"invalid_qr_code": "Ungültiger QR-Code. Bitte scanne einen gültigen Wiederherstellungs-QR-Code.",
"qr_scan_error": "Fehler beim Scannen des QR-Codes. Bitte versuche es erneut.",
"recovery_security_warning": "Bewahre deine Wiederherstellungsphrase und den QR-Code sicher auf. Jeder mit Zugriff kann dein Konto wiederherstellen.",
"file_saved": "Datei erfolgreich gespeichert",
"file_save_error": "Fehler beim Speichern der Datei",
"share_btn": "Teilen",
"copy_btn": "Kopieren",
"download_btn": "Download",
"qr_code_btn": "QR-Code",
"general_section": "Allgemein",
"current_study_section": "Aktuelle Studie",
"participation_options_section": "Teilnahmeoptionen",
"download_as_qr_btn": "Als QR herunterladen",
"share_recovery_text_btn": "Wiederherstellungstext teilen",
"recovery_phrase_load_error": "Wiederherstellungsphrase konnte nicht geladen werden",
"share_error": "Fehler beim Teilen: {error}",
"@share_error": {
"placeholders": {
"error": {
"type": "String"
}
}
}
}
71 changes: 70 additions & 1 deletion app/lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -451,5 +451,74 @@
"preview_mode_description": "You are currently in preview mode. This allows you to:\n\n• Fast-forward through study days using the \"Next Day\" button\n• Complete tasks multiple times without restrictions\n• Experience the full study flow without affecting real data\n\nImportant: Results and data from preview mode are not stored or mixed with actual participant results from running studies.",
"preview_mode_results_not_saved": "Task completed in preview mode - results are not saved to protect study data integrity.",
"ok": "OK",
"submit" : "Submit"
"submit" : "Submit",

"recovery_phrase_setup_title": "Recovery Phrase Setup",
"recovery_phrase_header": "Your secret recovery phrase",
"copy_to_clipboard": "Copy to clipboard",
"copied_to_clipboard": "Copied to clipboard",
"recovery_phrase_purpose_header": "You'll need this phrase to:",
"recovery_phrase_purpose_1": "✓ Continue on a different phone",
"recovery_phrase_purpose_2": "✓ Restore your progress after reinstalling",
"recovery_phrase_save_hint": "Save it now in a safe place you won't lose.",
"recovery_phrase_saved_confirmation": "I saved my recovery phrase somewhere I can find it later.",
"continue_to_study": "Continue to study",
"rejoin_study": "Rejoin Study",
"enter_recovery_phrase": "Enter your recovery phrase",
"required": "Required",
"invalid_recovery_phrase": "Invalid recovery phrase. Please check your words.",
"recovery_successful": "Recovery successful! ID: {id}",
"@recovery_successful": {
"placeholders": {
"id": {
"type": "String"
}
}
},

"recovery_in_progress": "Recovering your account...",
"recovery_failed": "Recovery failed. Please check your recovery phrase and try again.",
"recovery_user_not_found": "No account found with this recovery phrase.",
"recovery_rate_limit": "Please wait a moment before trying again.",
"recovery_network_error": "Network error. Please check your connection and try again.",

"rejoin_study_description": "Enter your 13-word recovery phrase to continue your study on this device.",
"rejoin_study_help_title": "How to use your recovery phrase",
"rejoin_study_help_1": "Enter all 13 words from your saved recovery phrase in order",
"rejoin_study_help_2": "Words can be pasted—they'll automatically fill the fields",
"rejoin_study_help_3": "The recovery phrase is case-insensitive",

"share_recovery": "Share Recovery",
"share_as_text": "Share as Text",
"share_as_qr": "Share as QR Code",
"download_recovery": "Download Recovery",
"download_as_text": "Download as Text File",
"download_as_qr": "Download as QR Image",
"scan_qr_code": "Scan QR Code",
"scan_qr_description": "Scan a QR code containing your recovery phrase",
"scanning_qr": "Scanning QR Code",
"qr_scan_instruction": "Point your camera at the QR code",
"invalid_qr_code": "Invalid QR code. Please scan a valid recovery QR code.",
"qr_scan_error": "Error scanning QR code. Please try again.",
"recovery_security_warning": "Keep your recovery phrase and QR code safe. Anyone with access can recover your account.",
"file_saved": "File saved successfully",
"file_save_error": "Error saving file",
"share_btn": "Share",
"copy_btn": "Copy",
"download_btn": "Download",
"qr_code_btn": "QR Code",
"general_section": "General",
"current_study_section": "Current study",
"participation_options_section": "Participation options",
"download_as_qr_btn": "Download as QR",
"share_recovery_text_btn": "Share Recovery Text",
"recovery_phrase_load_error": "Failed to load recovery phrase",
"share_error": "Error sharing: {error}",
"@share_error": {
"placeholders": {
"error": {
"type": "String"
}
}
}
}
Loading