diff --git a/mobile/src/SceneActionsContext.tsx b/mobile/src/SceneActionsContext.tsx
index e92f95f..3336d93 100644
--- a/mobile/src/SceneActionsContext.tsx
+++ b/mobile/src/SceneActionsContext.tsx
@@ -49,17 +49,17 @@ export function SceneActionsProvider({ children }: { children: React.ReactNode }
const hide = React.useCallback(
(scene: SceneOut) => {
- Alert.alert('Ukryć scenę?', scene.title, [
- { text: 'Anuluj', style: 'cancel' },
+ Alert.alert('Hide scene?', scene.title, [
+ { text: 'Cancel', style: 'cancel' },
{
- text: 'Ukryj',
+ text: 'Hide',
style: 'destructive',
onPress: async () => {
try {
await client.hideScene(scene.id);
invalidate();
} catch (e: any) {
- Alert.alert('Nie udało się ukryć', e?.message || 'unknown error');
+ Alert.alert('Failed to hide', e?.message || 'unknown error');
}
},
},
@@ -71,10 +71,10 @@ export function SceneActionsProvider({ children }: { children: React.ReactNode }
const openActions = React.useCallback(
(scene: SceneOut) => {
if (pendingDuplicate) return; // w trakcie wyboru duplikatu — ignoruj
- Alert.alert(scene.title, 'Akcje sceny', [
- { text: 'Ukryj scenę', style: 'destructive', onPress: () => hide(scene) },
- { text: 'Oznacz jako duplikat', onPress: () => setPending(scene) },
- { text: 'Anuluj', style: 'cancel' },
+ Alert.alert(scene.title, 'Scene actions', [
+ { text: 'Hide scene', style: 'destructive', onPress: () => hide(scene) },
+ { text: 'Mark as duplicate', onPress: () => setPending(scene) },
+ { text: 'Cancel', style: 'cancel' },
]);
},
[pendingDuplicate, hide],
@@ -88,19 +88,19 @@ export function SceneActionsProvider({ children }: { children: React.ReactNode }
return;
}
Alert.alert(
- 'Scalić duplikat?',
- `„${dup.title}"\n\nscalić w\n\n„${target.title}"`,
+ 'Merge duplicate?',
+ `"${dup.title}"\n\nmerge into\n\n"${target.title}"`,
[
- { text: 'Anuluj', style: 'cancel', onPress: () => setPending(null) },
+ { text: 'Cancel', style: 'cancel', onPress: () => setPending(null) },
{
- text: 'Scal',
+ text: 'Merge',
onPress: async () => {
try {
// keep = wybrany oryginał (target), drop = długo-naciśnięty duplikat (dup)
await client.mergeDuplicateScene(target.id, dup.id);
invalidate();
} catch (e: any) {
- Alert.alert('Scalanie nie powiodło się', e?.message || 'unknown error');
+ Alert.alert('Merge failed', e?.message || 'unknown error');
} finally {
setPending(null);
}
@@ -132,10 +132,10 @@ export function SceneActionsProvider({ children }: { children: React.ReactNode }
- Wybierz oryginał — dotknij scenę, w którą scalić „{pendingDuplicate.title}"
+ Pick the original — tap the scene to merge "{pendingDuplicate.title}" into
- Anuluj
+ Cancel
diff --git a/mobile/src/components/Thumb.tsx b/mobile/src/components/Thumb.tsx
index 8422ac3..1b1f097 100644
--- a/mobile/src/components/Thumb.tsx
+++ b/mobile/src/components/Thumb.tsx
@@ -55,7 +55,9 @@ export function Thumb({ url, style, contentFit = 'cover', emptyGlyph = '🎬' }:
{status === 'error' && (
- ⚠
+ {/* Błąd ładowania (np. wygasła sxyprn/trafficdeposit miniaturka, 404) →
+ czysty placeholder jak 'empty', nie alarmowe ⚠ (bug 2026-06-10). */}
+ {emptyGlyph}
)}