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
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,11 @@ function InstanceRow({
</Text>
<View className="flex-row flex-wrap items-center gap-x-3 gap-y-1">
<Text variant="muted" numberOfLines={1}>
{instance.organizationName ?? t('common.personal')}
{instance.organizationName ??
t(
// i18n-dup-ok: 'common.personal' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.personal'
)}
</Text>
<StatusBadge status={instance.status} />
</View>
Expand Down Expand Up @@ -100,7 +104,10 @@ export default function InstancePickerScreen() {
{showList && loadedInstances.length === 0 ? (
<EmptyState
icon={Server}
title={t('common.noKiloclawInstances')}
title={t(
// i18n-dup-ok: 'common.noKiloclawInstances' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.noKiloclawInstances'
)}
description={t('chat.instancePicker.noInstancesDescription')}
action={
<Button
Expand Down
5 changes: 4 additions & 1 deletion apps/mobile/src/app/(app)/(tabs)/(1_kiloclaw)/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ export default function KiloClawTab() {
return (
<View className="flex-1 bg-background">
<ScreenHeader
title={t('common.kiloclaw')}
title={t(
// i18n-dup-ok: 'common.kiloclaw' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.kiloclaw'
)}
size="large"
showBackButton={false}
className="px-[22px]"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ export default function FocusAreasRoute() {
const { t } = useTranslation();
const areaLabels = {
security: 'codeReviewer.focusArea.security',
performance: 'common.performance',
performance:
// i18n-dup-ok: 'common.performance' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.performance',
bugs: 'codeReviewer.focusArea.bugs',
style: 'codeReviewer.focusArea.style',
testing: 'codeReviewer.focusArea.testing',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,19 @@ export default function GateThresholdRoute() {
const save = useSaveReviewConfig(scope, platform);
const { t } = useTranslation();
const labels = {
off: t('common.off'),
all: t('common.all'),
off: t(
// i18n-dup-ok: 'common.off' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.off'
),
all: t(
// i18n-dup-ok: 'common.all' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.all'
),
warning: t('codeReviewer.gateThreshold.warning'),
critical: t('common.critical'),
critical: t(
// i18n-dup-ok: 'common.critical' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.critical'
),
} as const;
const descriptions = {
off: t('codeReviewer.gate.off'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,10 @@ export default function ReposRoute() {
<QueryError
variant="server"
placement={fullBodyState ? 'center' : 'top'}
title={t('common.couldNotLoadRepositories')}
title={t(
// i18n-dup-ok: 'common.couldNotLoadRepositories' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.couldNotLoadRepositories'
)}
onRetry={refetchRepos}
isRetrying={reposFetching}
/>
Expand Down Expand Up @@ -191,7 +194,12 @@ export default function ReposRoute() {

return (
<View className="flex-1 bg-background">
<ScreenHeader title={t('common.repositories')} />
<ScreenHeader
title={t(
// i18n-dup-ok: 'common.repositories' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.repositories'
)}
/>
{fullBodyState ? (
repoState
) : (
Expand All @@ -203,8 +211,14 @@ export default function ReposRoute() {
key={option}
label={
option === 'all'
? t('common.allRepositories')
: t('common.selectedRepositories')
? t(
// i18n-dup-ok: 'common.allRepositories' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.allRepositories'
)
: t(
// i18n-dup-ok: 'common.selectedRepositories' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.selectedRepositories'
)
}
selected={mode === option}
disabled={configDisabled}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ export default function ReviewStyleRoute() {
const { t } = useTranslation();
const labels = {
strict: t('codeReviewer.reviewStyle.strict'),
balanced: t('common.balanced'),
balanced: t(
// i18n-dup-ok: 'common.balanced' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.balanced'
),
lenient: t('codeReviewer.reviewStyle.lenient'),
roast: t('codeReviewer.reviewStyle.roast'),
} as const;
Expand Down
15 changes: 12 additions & 3 deletions apps/mobile/src/app/(app)/(tabs)/_layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,10 @@ export default function TabsLayout() {
<Tabs.Screen
name="(2_agents)"
options={{
title: t('common.agents'),
title: t(
// i18n-dup-ok: 'common.agents' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.agents'
),
tabBarBadge: needsInputBadge,
tabBarAccessibilityLabel: tabAccessibilityLabel(
needsInputBadge
Expand All @@ -219,7 +222,10 @@ export default function TabsLayout() {
name="(4_chat)"
options={{
href: showQuickChatTab ? undefined : null,
title: t('common.chat'),
title: t(
// i18n-dup-ok: 'common.chat' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.chat'
),
tabBarAccessibilityLabel: tabAccessibilityLabel(
t('common.chat'),
tabBarPosition('chat', tabFlags) ?? 3,
Expand All @@ -239,7 +245,10 @@ export default function TabsLayout() {
<Tabs.Screen
name="(3_profile)"
options={{
title: t('common.profile'),
title: t(
// i18n-dup-ok: 'common.profile' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.profile'
),
tabBarAccessibilityLabel: tabAccessibilityLabel(
t('common.profile'),
tabCount,
Expand Down
10 changes: 8 additions & 2 deletions apps/mobile/src/app/(app)/agent-chat/[session-id].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -178,11 +178,17 @@ export default function SessionDetailScreen() {
? 'neutral'
: 'server';
if (notFound) {
title = t('common.notFound');
title = t(
// i18n-dup-ok: 'common.notFound' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.notFound'
);
message = t('queryError.notFoundDescription');
variant = 'not-found';
} else if (unauthorized) {
title = t('common.accessDenied');
title = t(
// i18n-dup-ok: 'common.accessDenied' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.accessDenied'
);
message = t('queryError.permissionDescription');
variant = 'permission';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,18 @@ export function useNewSessionDiscardGuard({
: 'agentChat.newSession.discardDraftMessage'
),
[
{ text: i18n.t('common.keepEditing'), style: 'cancel' },
{
text: i18n.t('common.discard'),
text: i18n.t(
// i18n-dup-ok: 'common.keepEditing' — sole key; securityAgent.settingsSave.keepEditing was removed here
'common.keepEditing'
),
style: 'cancel',
},
{
text: i18n.t(
// i18n-dup-ok: 'common.discard' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.discard'
),
style: 'destructive',
onPress: () => {
void (async () => {
Expand Down
12 changes: 10 additions & 2 deletions apps/mobile/src/app/(app)/kiloclaw/[instance-id]/billing.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ import { useTRPC } from '@/lib/trpc';
import { cn } from '@/lib/utils';

const SUBSCRIPTION_PLAN_KEYS = {
commit: 'kiloclaw.billing.commit',
commit:
// i18n-dup-ok: 'kiloclaw.billing.commit' — prReview.overview.commit is a plural count suffix, not a plan name
'kiloclaw.billing.commit',
standard: 'kiloclaw.billing.planName.standard',
} satisfies Record<string, string>;

Expand Down Expand Up @@ -164,7 +166,13 @@ function PlanDetails({
<View>
<DetailRow label={t('kiloclaw.billing.plan')} value={t('kiloclaw.billing.freeTrial')} />
<View className="h-px bg-border" />
<DetailRow label={t('common.remaining')} value={daysText} />
<DetailRow
label={t(
// i18n-dup-ok: 'common.remaining' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.remaining'
)}
value={daysText}
/>
<View className="h-px bg-border" />
<DetailRow
label={t('kiloclaw.billing.ends')}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,12 @@ export default function GoogleScreen() {
isConnected ? 'text-good' : 'text-muted-foreground'
)}
>
{isConnected ? t('common.connected') : t('common.notConnected')}
{isConnected
? t(
// i18n-dup-ok: 'common.connected' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.connected'
)
: t('common.notConnected')}
</Text>
</View>
</View>
Expand Down Expand Up @@ -219,7 +224,14 @@ export default function GoogleScreen() {
onPress={handleToggleGmail}
disabled={mutations.setGmailNotifications.isPending}
>
<Text>{gmailEnabled ? t('common.enabled') : t('common.disabled')}</Text>
<Text>
{gmailEnabled
? t('common.enabled')
: t(
// i18n-dup-ok: 'common.disabled' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.disabled'
)}
</Text>
</Button>
</View>
</View>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,25 @@ export default function ModelListScreen() {
const sections = [
...(preferred.length > 0
? [
{ type: 'header' as const, title: t('common.recommended') },
{
type: 'header' as const,
title: t(
// i18n-dup-ok: 'common.recommended' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.recommended'
),
},
...preferred.map(m => ({ type: 'model' as const, model: m })),
]
: []),
...(rest.length > 0
? [
{ type: 'header' as const, title: t('common.allModels') },
{
type: 'header' as const,
title: t(
// i18n-dup-ok: 'common.allModels' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.allModels'
),
},
...rest.map(m => ({ type: 'model' as const, model: m })),
]
: []),
Expand All @@ -168,7 +180,10 @@ export default function ModelListScreen() {
<TextInput
ref={searchInputRef}
className="rounded-lg bg-secondary px-4 py-3 text-sm text-foreground"
placeholder={t('common.searchModels')}
placeholder={t(
// i18n-dup-ok: 'common.searchModels' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.searchModels'
)}
placeholderTextColor={colors.mutedForeground}
autoCapitalize="none"
autoCorrect={false}
Expand All @@ -185,7 +200,10 @@ export default function ModelListScreen() {
)}
{isError && (
<QueryError
message={t('common.couldNotLoadModels')}
message={t(
// i18n-dup-ok: 'common.couldNotLoadModels' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.couldNotLoadModels'
)}
onRetry={() => {
void refetch();
void configQuery.refetch();
Expand All @@ -197,7 +215,14 @@ export default function ModelListScreen() {
(sections.length === 0 ? (
<EmptyState
icon={Search}
title={searchFilter ? t('kiloclaw.modelList.noMatches') : t('common.noModelsAvailable')}
title={
searchFilter
? t('kiloclaw.modelList.noMatches')
: t(
// i18n-dup-ok: 'common.noModelsAvailable' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.noModelsAvailable'
)
}
description={
searchFilter
? t('kiloclaw.modelList.noResultsFor', { query: searchFilter })
Expand All @@ -206,7 +231,12 @@ export default function ModelListScreen() {
action={
searchFilter ? (
<Button variant="outline" size="sm" onPress={handleClearSearch}>
<Text>{t('common.clearSearch')}</Text>
<Text>
{t(
// i18n-dup-ok: 'common.clearSearch' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.clearSearch'
)}
</Text>
</Button>
) : undefined
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,15 @@ export default function ModelSettingsScreen() {
const { t } = useTranslation();

if (instanceContext.status === 'error' || instanceContext.status === 'not_found') {
return <InstanceContextBoundary title={t('common.model')} context={instanceContext} />;
return (
<InstanceContextBoundary
title={t(
// i18n-dup-ok: 'common.model' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.model'
)}
context={instanceContext}
/>
);
}

return (
Expand Down
5 changes: 4 additions & 1 deletion apps/mobile/src/app/_layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -860,7 +860,10 @@ function RootLayoutNav({
primaryLabel={t('common.retry')}
primaryAccessibilityLabel={t('bootstrap.retryLoadingAccount')}
onPrimaryPress={refetchUserId}
secondaryLabel={t('common.signOut')}
secondaryLabel={t(
// i18n-dup-ok: 'common.signOut' — sole key; profile.signOut was removed here
'common.signOut'
)}
secondaryAccessibilityLabel={t('common.signOut')}
onSecondaryPress={() => {
void signOut();
Expand Down
5 changes: 4 additions & 1 deletion apps/mobile/src/components/agents/attachment-picker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,10 @@ async function pickAgentCameraImage(): Promise<AgentAttachmentCandidate[]> {
const permission = await ImagePicker.requestCameraPermissionsAsync();
if (!permission.granted) {
showPermissionSettingsAlert({
title: i18n.t('common.cameraAccessDisabled'),
title: i18n.t(
// i18n-dup-ok: 'common.cameraAccessDisabled' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.cameraAccessDisabled'
),
message: i18n.t('chat.attachmentPicker.cameraAccessMessage'),
});
return [];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,10 @@ export function ChatComposerInputRow({
disabled={!canSend}
hitSlop={CONTROL_HIT_SLOP}
accessibilityRole="button"
accessibilityLabel={t('common.sendMessage')}
accessibilityLabel={t(
// i18n-dup-ok: 'common.sendMessage' — sole key for this copy; the base-catalog twin this scan cites was removed by the catalog consolidation
'common.sendMessage'
)}
accessibilityState={{ disabled: !canSend, busy: isSending }}
style={{ height: CONTROL_HIT_TARGET, width: CONTROL_HIT_TARGET }}
className={`items-center justify-center rounded-full active:opacity-70 ${
Expand Down
Loading