Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
51 changes: 24 additions & 27 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 28 additions & 4 deletions src/screens/PasswordScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -113,17 +113,35 @@ function PasswordRow({ item, onEdit, onDelete }: { item: PasswordEntry; onEdit:
{item.username ? <Text style={s.username}>{item.username}</Text> : null}
<View style={s.pwRow}>
<Text style={s.pw}>{revealed ? item.password : '••••••••'}</Text>
<TouchableOpacity onPress={() => setRevealed(r => !r)} style={s.eyeBtn}>
<TouchableOpacity
onPress={() => setRevealed(r => !r)}
style={s.eyeBtn}
accessible={true}
accessibilityRole="button"
accessibilityLabel={revealed ? "Hide password" : "Show password"}
>
Comment on lines +116 to +122
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new accessibilityLabel strings are hardcoded in English ("Show/Hide password"). This screen already uses useLanguage().t(...) and the app defaults to Italian, so screen readers will announce mixed-language UI. Please source these labels from the i18n translations (add dedicated keys if needed) and use t(...) here so they match the selected language.

Copilot uses AI. Check for mistakes.
<MaterialIcons name={revealed ? 'visibility-off' : 'visibility'} size={16} color={colors.textSub} />
</TouchableOpacity>
</View>
{item.notes ? <Text style={s.notes}>{item.notes}</Text> : null}
</View>
<View style={s.actions}>
<TouchableOpacity style={s.editBtn} onPress={onEdit}>
<TouchableOpacity
style={s.editBtn}
onPress={onEdit}
accessible={true}
accessibilityRole="button"
accessibilityLabel="Edit password"
>
<MaterialIcons name="edit" size={17} color={colors.primary} />
</TouchableOpacity>
<TouchableOpacity style={s.delBtn} onPress={onDelete}>
<TouchableOpacity
style={s.delBtn}
onPress={onDelete}
accessible={true}
accessibilityRole="button"
accessibilityLabel="Delete password"
>
Comment on lines +129 to +144
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

accessibilityLabel is hardcoded as "Edit password" / "Delete password". Besides not being localized, these buttons act on an entry (name/username/notes), not only the password field. Consider using translated strings (via t(...)) and wording like "Edit entry" / "Delete entry" (or include the entry name to disambiguate when navigating by buttons).

Copilot uses AI. Check for mistakes.
<MaterialIcons name="delete-outline" size={17} color="#EF4444" />
</TouchableOpacity>
</View>
Expand Down Expand Up @@ -327,7 +345,13 @@ export default function PasswordScreen() {
secureTextEntry={!showPw}
autoCapitalize="none"
/>
<TouchableOpacity onPress={() => setShowPw(p => !p)} style={s.eyeModal}>
<TouchableOpacity
onPress={() => setShowPw(p => !p)}
style={s.eyeModal}
accessible={true}
accessibilityRole="button"
accessibilityLabel={showPw ? "Hide password" : "Show password"}
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The modal eye icon accessibilityLabel is hardcoded in English ("Show/Hide password"), which will be announced even when the app language is Italian. Please use i18n (t(...)) for these labels (add translation keys if necessary) so screen reader output matches the selected language.

Suggested change
accessibilityLabel={showPw ? "Hide password" : "Show password"}
accessibilityLabel={showPw ? t('hidePassword') : t('showPassword')}

Copilot uses AI. Check for mistakes.
>
<MaterialIcons name={showPw ? 'visibility-off' : 'visibility'} size={20} color={colors.textSub} />
</TouchableOpacity>
</View>
Expand Down
Loading