Harden iOS app with audit fixes, UI consistency, and sheet race condition fixes

Applies verified fixes from deep audit (concurrency, performance, security,
accessibility), standardizes CRUD form buttons to Add/Save pattern, removes
.drawingGroup() that broke search bar TextFields, and converts vulnerable
.sheet(isPresented:) + if-let patterns to safe presentation to prevent
blank white modals.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-03-06 09:59:56 -06:00
parent 61ab95d108
commit 9c574c4343
76 changed files with 824 additions and 971 deletions
+67 -6
View File
@@ -107,10 +107,6 @@
},
"$" : {
},
"$%@" : {
"comment" : "A label displaying the cost of a task. The argument is the cost of the task.",
"isCommentAutoGenerated" : true
},
"000000" : {
"comment" : "A placeholder text for a 6-digit code field.",
@@ -316,8 +312,8 @@
"comment" : "An alert message displayed when the user taps the \"Archive\" button on a task. It confirms that the user intends to archive the task and provides a hint that the task can be restored later.",
"isCommentAutoGenerated" : true
},
"Are you sure you want to cancel this task? This action cannot be undone." : {
"comment" : "An alert message displayed when a user taps the \"Cancel Task\" button in the task details view. It confirms that the user intends to cancel the task and warns them that the action cannot be undone.",
"Are you sure you want to cancel this task? You can undo this later." : {
"comment" : "An alert message displayed when a user taps the \"Cancel Task\" button in a task list. It confirms that the user intends to cancel the task and provides a way to undo the action.",
"isCommentAutoGenerated" : true
},
"Are you sure you want to remove %@ from this residence?" : {
@@ -4298,6 +4294,71 @@
"comment" : "A description of how long the verification code is valid for.",
"isCommentAutoGenerated" : true
},
"common_add" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Hinzufügen"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Add"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Agregar"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ajouter"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Aggiungi"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "追加"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "추가"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Toevoegen"
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Adicionar"
}
},
"zh" : {
"stringUnit" : {
"state" : "translated",
"value" : "添加"
}
}
}
},
"common_back" : {
"extractionState" : "manual",
"localizations" : {