Merge branch 'main' into thumbnail_duration

This commit is contained in:
laurenspriem
2024-05-31 15:30:33 +05:30
10 changed files with 55 additions and 39 deletions

View File

@@ -86,6 +86,9 @@
{
"title": "Discourse"
},
{
"title": "Doppler"
},
{
"title": "dus.net",
"slug": "dusnet"

View File

@@ -0,0 +1 @@
<svg fill="none" height="800" viewBox="0 0 800 800" width="800" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="0" cy="0" gradientTransform="matrix(-423.0004 -300.00003 172.7003 -243.50762 861 448)" gradientUnits="userSpaceOnUse" r="1"><stop offset="0" stop-color="#ea5926"/><stop offset="1" stop-color="#ea5a25" stop-opacity="0"/></radialGradient><radialGradient id="b" cx="0" cy="0" gradientTransform="matrix(-318.99928 -110.0022 110.0022 -318.99928 800 736)" gradientUnits="userSpaceOnUse" r="1"><stop offset="0" stop-color="#ea5a25"/><stop offset="1" stop-color="#ed5a21" stop-opacity="0"/></radialGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="505" x2="1.46826" y1="-305" y2="800.669"><stop offset="0" stop-color="#ff9efa"/><stop offset=".426562" stop-color="#ac50f7"/><stop offset=".646435" stop-color="#6b13f5"/></linearGradient><clipPath id="d"><path d="m0 0h500v500h-500z" transform="translate(150 150)"/></clipPath><rect fill="url(#c)" height="800" rx="400" width="800"/><rect fill="url(#a)" height="800" rx="400" width="800"/><rect fill="url(#b)" height="800" rx="400" width="800"/><g clip-path="url(#d)" fill="#fff"><path d="m467.396 151.3c-21.021-5.632-42.449 7.589-46.843 28.903l-19.94 96.716c-13.025 63.174-62.376 112.549-125.545 125.603l-94.873 19.607c-21.312 4.405-34.527 25.833-28.894 46.854 5.633 21.023 27.796 32.974 48.456 26.128l92.327-30.593c61.386-20.341 128.989-2.227 171.981 46.082l64.666 72.664c14.467 16.255 39.63 16.987 55.017 1.6 15.39-15.389 14.655-40.558-1.607-55.023l-73.135-65.056c-48.44-43.09-66.604-110.866-46.202-172.405l30.71-92.633c6.847-20.655-5.099-42.815-26.118-48.447z"/><path d="m216.103 272.283c-17.191-15.554-17.86-42.331-1.467-58.723 16.393-16.393 43.169-15.724 58.723 1.467l48.898 54.045c13.189 14.578 12.631 36.937-1.27 50.838s-36.261 14.46-50.839 1.271zm380.232 29.881c22.065-7.11 45.589 5.698 51.589 28.091s-7.967 45.248-30.632 50.122l-71.253 15.325c-19.22 4.133-38.305-7.53-43.393-26.52-5.088-18.989 5.608-38.632 24.32-44.662zm-217.826 315.811c-4.875 22.664-27.73 36.632-50.122 30.632-22.393-6-35.202-29.524-28.091-51.589l22.355-69.37c6.03-18.711 25.673-29.407 44.663-24.319 18.989 5.088 30.653 24.173 26.519 43.392z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -7,7 +7,7 @@
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Proteja seus códigos 2FA",
"onBoardingGetStarted": "Vamos Começar",
"onBoardingGetStarted": "Introdução",
"setupFirstAccount": "Configure sua primeira conta",
"importScanQrCode": "Escanear QR code",
"qrCode": "QR Code",
@@ -32,12 +32,12 @@
"counterBasedKeyType": "Baseado em um contador (HOTP)",
"saveAction": "Salvar",
"nextTotpTitle": "avançar",
"deleteCodeTitle": "Excluir código?",
"deleteCodeTitle": "Apagar código?",
"deleteCodeMessage": "Tem certeza de que deseja excluir este código? Esta ação é irreversível.",
"viewLogsAction": "Ver logs",
"sendLogsDescription": "Isto irá compartilhar seus logs para nos ajudar a depurar seu problema. Embora tomemos precauções para garantir que informações sensíveis não sejam enviadas, encorajamos você a ver esses logs antes de compartilhá-los.",
"preparingLogsTitle": "Preparando logs...",
"emailLogsTitle": "Logs por e-mail",
"emailLogsTitle": "Logs (e-mail)",
"emailLogsMessage": "Por favor, envie os logs para {email}",
"@emailLogsMessage": {
"placeholders": {
@@ -48,9 +48,9 @@
},
"copyEmailAction": "Copiar e-mail",
"exportLogsAction": "Exportar logs",
"reportABug": "Reportar um problema",
"reportABug": "Informar um problema",
"crashAndErrorReporting": "Reporte de erros e falhas",
"reportBug": "Reportar problema",
"reportBug": "Informar problema",
"emailUsMessage": "Por favor, envie um e-mail para {email}",
"@emailUsMessage": {
"placeholders": {
@@ -112,7 +112,7 @@
"email": "E-mail",
"support": "Suporte",
"general": "Geral",
"settings": "Configurações",
"settings": "Ajustes",
"copied": "Copiado",
"pleaseTryAgain": "Por favor, tente novamente",
"existingUser": "Usuário Existente",
@@ -139,7 +139,7 @@
"inFamilyPlanMessage": "Você está em um plano familiar!",
"swipeHint": "Deslize para a esquerda para editar ou remover os códigos",
"scan": "Escanear",
"scanACode": "Escanear um código",
"scanACode": "Escanear código",
"verify": "Verificar",
"verifyEmail": "Verificar e-mail",
"enterCodeHint": "Digite o código de 6 dígitos de\nseu aplicativo autenticador",
@@ -185,7 +185,7 @@
"lockScreenEnablePreSteps": "Para ativar o bloqueio de tela, por favor ative um método de autenticação nas configurações do sistema do seu dispositivo.",
"viewActiveSessions": "Ver sessões ativas",
"authToViewYourActiveSessions": "Por favor, autentique-se para ver as sessões ativas",
"searchHint": "Pesquisar...",
"searchHint": "Buscar...",
"search": "Pesquisar",
"sorryUnableToGenCode": "Desculpe, não foi possível gerar um código para {issuerName}",
"noResult": "Nenhum resultado",
@@ -242,7 +242,7 @@
"logInLabel": "Entrar",
"logout": "Sair",
"areYouSureYouWantToLogout": "Você tem certeza que deseja encerrar a sessão?",
"yesLogout": "Sim, encerrar sessão",
"yesLogout": "Sim, sair",
"exit": "Sair",
"verifyingRecoveryKey": "Verificando chave de recuperação...",
"recoveryKeyVerified": "Chave de recuperação verificada",
@@ -317,7 +317,7 @@
"thisWillLogYouOutOfTheFollowingDevice": "Isso fará com que você saia do seguinte dispositivo:",
"terminateSession": "Encerrar sessão?",
"terminate": "Encerrar",
"thisDevice": "Este dispositivo",
"thisDevice": "Esse dispositivo",
"toResetVerifyEmail": "Para redefinir a sua senha, por favor verifique o seu email primeiro.",
"thisEmailIsAlreadyInUse": "Este e-mail já está em uso",
"verificationFailedPleaseTryAgain": "Falha na verificação. Por favor, tente novamente",
@@ -339,7 +339,7 @@
"export": "Exportar",
"useOffline": "Usar sem backups",
"signInToBackup": "Entre para fazer backup de seus códigos",
"singIn": "Iniciar sessão",
"singIn": "Entrar",
"sigInBackupReminder": "Por favor, exporte seus códigos para garantir que você tenha um backup do qual você possa restaurar.",
"offlineModeWarning": "Você escolheu prosseguir sem backups. Por favor, faça backups manuais para ter certeza de que seus códigos estão seguros.",
"showLargeIcons": "Mostrar ícones grandes",
@@ -361,7 +361,7 @@
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Bem-sucedido",
"androidBiometricSuccess": "Êxito",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
@@ -433,7 +433,7 @@
"tag": "Etiqueta",
"create": "Criar",
"editTag": "Editar etiqueta",
"deleteTagTitle": "Excluir etiqueta?",
"deleteTagTitle": "Apagar etiqueta?",
"deleteTagMessage": "Tem certeza de que deseja excluir esta etiqueta? Essa ação é irreversível.",
"somethingWentWrongParsingCode": "Não foi possível analisar os códigos {x}.",
"updateNotAvailable": "Atualização não está disponível"

View File

@@ -936,7 +936,7 @@ class MessageLookup extends MessageLookupByLibrary {
"memoryCount": m33,
"merchandise": MessageLookupByLibrary.simpleMessage("Merchandise"),
"mlIndexingDescription": MessageLookupByLibrary.simpleMessage(
"Please note that ML indexing will result in a higher bandwidth and battery usage until all items are indexed."),
"Please note that machine learning will result in a higher bandwidth and battery usage until all items are indexed."),
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobile, Web, Desktop"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Moderate"),

View File

@@ -2876,10 +2876,10 @@ class S {
);
}
/// `Please note that ML indexing will result in a higher bandwidth and battery usage until all items are indexed.`
/// `Please note that machine learning will result in a higher bandwidth and battery usage until all items are indexed.`
String get mlIndexingDescription {
return Intl.message(
'Please note that ML indexing will result in a higher bandwidth and battery usage until all items are indexed.',
'Please note that machine learning will result in a higher bandwidth and battery usage until all items are indexed.',
name: 'mlIndexingDescription',
desc: '',
args: [],

View File

@@ -24,13 +24,13 @@
"deleteRequestSLAText": "Sua solicitação será processada em até 72 horas.",
"deleteEmailRequest": "Por favor, envie um e-mail para <warning>account-deletion@ente.io</warning> a partir do seu endereço de e-mail registrado.",
"entePhotosPerm": "Ente <i>precisa de permissão para</i> preservar suas fotos",
"ok": "Ok",
"ok": "OK",
"createAccount": "Criar uma conta",
"createNewAccount": "Criar nova conta",
"password": "Senha",
"confirmPassword": "Confirme sua senha",
"activeSessions": "Sessões ativas",
"oops": "Ops",
"oops": "Opa",
"somethingWentWrongPleaseTryAgain": "Algo deu errado. Por favor, tente outra vez",
"thisWillLogYouOutOfThisDevice": "Isso fará com que você saia deste dispositivo!",
"thisWillLogYouOutOfTheFollowingDevice": "Isso fará com que você saia do seguinte dispositivo:",
@@ -265,7 +265,7 @@
"somethingWentWrong": "Algo deu errado",
"sendInvite": "Enviar convite",
"shareTextRecommendUsingEnte": "Baixe o Ente para que possamos compartilhar facilmente fotos e vídeos de qualidade original\n\nhttps://ente.io",
"done": "Concluído",
"done": "Pronto",
"applyCodeTitle": "Aplicar código",
"enterCodeDescription": "Digite o código fornecido pelo seu amigo para reivindicar o armazenamento gratuito para vocês dois",
"apply": "Aplicar",
@@ -409,7 +409,7 @@
"manageDeviceStorage": "Gerenciar o armazenamento do dispositivo",
"machineLearning": "Aprendizagem de máquina",
"magicSearch": "Busca mágica",
"magicSearchDescription": "Por favor, note que isso resultará em uma largura de banda maior e uso de bateria até que todos os itens sejam indexados.",
"mlIndexingDescription": "Por favor, note que isso resultará em uma largura de banda maior e uso de bateria até que todos os itens sejam indexados.",
"loadingModel": "Fazendo download de modelos...",
"waitingForWifi": "Esperando por Wi-Fi...",
"status": "Estado",
@@ -948,7 +948,7 @@
"someOfTheFilesYouAreTryingToDeleteAre": "Alguns dos arquivos que você está tentando excluir só estão disponíveis no seu dispositivo e não podem ser recuperados se forem excluídos",
"theyWillBeDeletedFromAllAlbums": "Ele será excluído de todos os álbuns.",
"someItemsAreInBothEnteAndYourDevice": "Alguns itens estão tanto no Ente quanto no seu dispositivo.",
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved": "Os itens selecionados serão excluídos de todos os álbuns e movidos para o lixo.",
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved": "Os itens selecionados serão excluídos de todos os álbuns e movidos para a lixeira.",
"theseItemsWillBeDeletedFromYourDevice": "Estes itens serão excluídos do seu dispositivo.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
"error": "Erro",
@@ -1102,7 +1102,7 @@
"@iOSGoToSettingsDescription": {
"description": "Message advising the user to go to the settings and configure Biometrics for their device. It shows in a dialog on iOS side."
},
"iOSOkButton": "Aceitar",
"iOSOkButton": "Tudo bem",
"@iOSOkButton": {
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
},
@@ -1233,8 +1233,7 @@
"autoPair": "Pareamento automático",
"pairWithPin": "Parear com PIN",
"faceRecognition": "Reconhecimento facial",
"faceRecognitionIndexingDescription": "Por favor, note que isso resultará em uma largura de banda maior e uso de bateria até que todos os itens sejam indexados.",
"foundFaces": "Rostos encontrados",
"clusteringProgress": "Progresso de agrupamento",
"indexingIsPaused": "Indexing is paused, will automatically resume when device is ready"
"indexingIsPaused": "A indexação está pausada, será retomada automaticamente quando o dispositivo estiver pronto."
}

View File

@@ -409,7 +409,7 @@
"manageDeviceStorage": "管理设备存储",
"machineLearning": "机器学习",
"magicSearch": "魔法搜索",
"magicSearchDescription": "请注意,在所有项目完成索引之前,这将使用更高的带宽和电量。",
"mlIndexingDescription": "请注意,机器学习将使用更高的带宽和更多的电量,直到所有项目都被索引为止。",
"loadingModel": "正在下载模型...",
"waitingForWifi": "正在等待 WiFi...",
"status": "状态",
@@ -569,7 +569,7 @@
"freeTrialValidTill": "免费试用有效期至 {endDate}",
"validTill": "有效期至 {endDate}",
"addOnValidTill": "您的 {storageAmount} 插件有效期至 {endDate}",
"playStoreFreeTrialValidTill": "免费试用有效期至 {endDate}。\n您可以随后购买付费计划。",
"playStoreFreeTrialValidTill": "免费试用有效期至 {endDate}。\n在此之后您可以选择付费计划。",
"subWillBeCancelledOn": "您的订阅将于 {endDate} 取消",
"subscription": "订阅",
"paymentDetails": "付款明细",
@@ -987,7 +987,7 @@
"fileTypesAndNames": "文件类型和名称",
"location": "地理位置",
"moments": "瞬间",
"searchFaceEmptySection": "查找一个人的所有照片",
"searchFaceEmptySection": "待索引完成后,人物将显示在此处",
"searchDatesEmptySection": "按日期搜索,月份或年份",
"searchLocationEmptySection": "在照片的一定半径内拍摄的几组照片",
"searchPeopleEmptySection": "邀请他人,您将在此看到他们分享的所有照片",
@@ -1171,6 +1171,7 @@
}
},
"faces": "人脸",
"people": "人物",
"contents": "内容",
"addNew": "新建",
"@addNew": {
@@ -1196,14 +1197,14 @@
"verifyPasskey": "验证通行密钥",
"playOnTv": "在电视上播放相册",
"pair": "配对",
"autoPair": "自动配对",
"pairWithPin": "用 PIN 配对",
"deviceNotFound": "未发现设备",
"castInstruction": "在您要配对的设备上访问 cast.ente.io。\n输入下面的代码即可在电视上播放相册。",
"deviceCodeHint": "输入代码",
"joinDiscord": "加入 Discord",
"locations": "位置",
"descriptions": "描述",
"addAName": "添加一个名称",
"findPeopleByName": "按名称快速查找人物",
"addViewers": "{count, plural, zero {添加查看者} one {添加查看者} other {添加查看者}}",
"addCollaborators": "{count, plural, zero {添加协作者} one {添加协作者} other {添加协作者}}",
"longPressAnEmailToVerifyEndToEndEncryption": "长按电子邮件以验证端到端加密。",
@@ -1216,6 +1217,8 @@
"customEndpoint": "已连接至 {endpoint}",
"createCollaborativeLink": "创建协作链接",
"search": "搜索",
"enterPersonName": "输入人物名称",
"removePersonLabel": "移除人物标签",
"autoPairDesc": "自动配对仅适用于支持 Chromecast 的设备。",
"manualPairDesc": "用 PIN 码配对适用于您希望在其上查看相册的任何屏幕。",
"connectToDevice": "连接到设备",
@@ -1227,9 +1230,10 @@
"castIPMismatchTitle": "投放相册失败",
"castIPMismatchBody": "请确保您的设备与电视处于同一网络。",
"pairingComplete": "配对完成",
"faceRecognition": "Face recognition",
"faceRecognitionIndexingDescription": "Please note that this will result in a higher bandwidth and battery usage until all items are indexed.",
"foundFaces": "Found faces",
"clusteringProgress": "Clustering progress",
"indexingIsPaused": "Indexing is paused, will automatically resume when device is ready"
"autoPair": "自动配对",
"pairWithPin": "用 PIN 配对",
"faceRecognition": "人脸识别",
"foundFaces": "已找到的人脸",
"clusteringProgress": "聚类进展",
"indexingIsPaused": "索引已暂停。当设备准备就绪时,它将自动恢复。"
}

View File

@@ -91,7 +91,10 @@ class FaceMlService {
bool isInitialized = false;
late String client;
bool get showClusteringIsHappening => _showClusteringIsHappening;
bool debugIndexingDisabled = false;
bool _showClusteringIsHappening = false;
bool _mlControllerStatus = false;
bool _isIndexingOrClusteringRunning = false;
bool _shouldPauseIndexingAndClustering = false;
@@ -572,6 +575,8 @@ class FaceMlService {
await PersonService.instance.fetchRemoteClusterFeedback();
try {
_showClusteringIsHappening = true;
// Get a sense of the total number of faces in the database
final int totalFaces =
await FaceMLDataDB.instance.getTotalFaceCount(minFaceScore: minFaceScore);
@@ -605,7 +610,7 @@ class FaceMlService {
await FaceMLDataDB.instance.getAllClusterSummary();
if (clusterInBuckets) {
const int bucketSize = 20000;
const int bucketSize = 10000;
const int offsetIncrement = 7500;
int offset = 0;
int bucket = 1;
@@ -711,6 +716,7 @@ class FaceMlService {
} catch (e, s) {
_logger.severe("`clusterAllImages` failed", e, s);
} finally {
_showClusteringIsHappening = false;
_isIndexingOrClusteringRunning = false;
_shouldPauseIndexingAndClustering = false;
}
@@ -1027,7 +1033,6 @@ class FaceMlService {
s,
);
}
// TODO: This is returning null for Pragadees for all files, so something is wrong here!
}
if (file == null) {
_logger

View File

@@ -513,14 +513,18 @@ class FaceRecognitionStatusWidgetState extends State<FaceRecognitionStatusWidget
title: S.of(context).clusteringProgress,
),
trailingWidget: Text(
"${clusteringPercentage.toStringAsFixed(0)}%",
FaceMlService.instance.showClusteringIsHappening
? "currently running"
: "${clusteringPercentage.toStringAsFixed(0)}%",
style: Theme.of(context).textTheme.bodySmall,
),
singleBorderRadius: 8,
alignCaptionedTextToLeft: true,
isGestureDetectorDisabled: true,
key: ValueKey(
"clustering_progress_" + clusteringPercentage.toStringAsFixed(0),
FaceMlService.instance.showClusteringIsHappening
? "currently running"
: "clustering_progress_" + clusteringPercentage.toStringAsFixed(0),
),
),
],

View File

@@ -12,7 +12,7 @@ description: ente photos application
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 0.8.125+645
version: 0.8.126+646
publish_to: none
environment: