Compare commits

...

8 Commits

Author SHA1 Message Date
M M Arif
0cbce9d291 3.5.1 release (#872)
3.5.1 release

Co-authored-by: M M Arif <mmarif@swatian.com>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/872
Co-Authored-By: M M Arif <mmarif@noreply.codeberg.org>
Co-Committed-By: M M Arif <mmarif@noreply.codeberg.org>
2021-04-01 08:22:02 +02:00
M M Arif
16d11f591b Translation updates (#870)
Tr updates

Co-authored-by: M M Arif <mmarif@swatian.com>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/870
Co-Authored-By: M M Arif <mmarif@noreply.codeberg.org>
Co-Committed-By: M M Arif <mmarif@noreply.codeberg.org>
2021-04-01 07:59:02 +02:00
opyale
6572a6d334 [Backport] Launch Toasts on UI thread. (#869)
[Backport] Launch Toasts on UI thread.

Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/869
Reviewed-by: M M Arif <mmarif@noreply.codeberg.org>
Co-Authored-By: opyale <opyale@noreply.codeberg.org>
Co-Committed-By: opyale <opyale@noreply.codeberg.org>
2021-03-31 19:42:15 +02:00
opyale
756ee398ff [Backport] Fixing crash on ProfileFragment (#867)
[Backport] Fixing crash on ProfileFragment

Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/867
Reviewed-by: M M Arif <mmarif@noreply.codeberg.org>
Co-Authored-By: opyale <opyale@noreply.codeberg.org>
Co-Committed-By: opyale <opyale@noreply.codeberg.org>
2021-03-31 19:20:05 +02:00
M M Arif
7c7db79af5 [Backport] Fix lock icon for repos (#866)
Fix lock icon for repos

Fix layout

Co-authored-by: M M Arif <mmarif@swatian.com>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/866
Reviewed-by: opyale <opyale@noreply.codeberg.org>
Co-Authored-By: M M Arif <mmarif@noreply.codeberg.org>
Co-Committed-By: M M Arif <mmarif@noreply.codeberg.org>
2021-03-31 19:09:42 +02:00
opyale
3c8ed2042a [Backport] Fall back to plain text if syntax highlighting fails. (#858)
[Backport] Fall back to plain text if syntax highlighting fails.

Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/858
Reviewed-by: M M Arif <mmarif@noreply.codeberg.org>
Co-Authored-By: opyale <opyale@noreply.codeberg.org>
Co-Committed-By: opyale <opyale@noreply.codeberg.org>
2021-03-30 17:18:33 +02:00
M M Arif
f43b92186c Fix ACRA and workmanager errors (#855)
Move acra

Fix ACRA and workmanager errors

Co-authored-by: M M Arif <mmarif@swatian.com>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/855
Reviewed-by: opyale <opyale@noreply.codeberg.org>
Co-Authored-By: M M Arif <mmarif@noreply.codeberg.org>
Co-Committed-By: M M Arif <mmarif@noreply.codeberg.org>
2021-03-30 16:31:23 +02:00
M M Arif
b3c4ae9e18 Release 3.5.0 2021-03-22 00:36:05 +05:00
23 changed files with 133 additions and 76 deletions

View File

@ -6,8 +6,8 @@ android {
applicationId "org.mian.gitnex"
minSdkVersion 21
targetSdkVersion 30
versionCode 346
versionName "3.5.0-dev"
versionCode 351
versionName "3.5.1"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

View File

@ -3,10 +3,20 @@ package org.mian.gitnex.activities;
import android.content.Context;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import org.acra.ACRA;
import org.acra.BuildConfig;
import org.acra.ReportField;
import org.acra.annotation.AcraCore;
import org.acra.annotation.AcraNotification;
import org.acra.config.CoreConfigurationBuilder;
import org.acra.config.LimiterConfigurationBuilder;
import org.acra.config.MailSenderConfigurationBuilder;
import org.acra.data.StringFormat;
import org.mian.gitnex.R;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.TimeHelper;
import org.mian.gitnex.helpers.TinyDB;
import org.mian.gitnex.notifications.Notifications;
/**
* Author M M Arif
@ -77,6 +87,8 @@ public abstract class BaseActivity extends AppCompatActivity {
}
AppUtil.setAppLocale(getResources(), tinyDB.getString("locale"));
Notifications.startWorker(appCtx);
}
}

View File

@ -106,23 +106,23 @@ public class FileDiffActivity extends BaseActivity {
break;
case 401:
AlertDialogs.authorizationTokenRevokedDialog(ctx,
runOnUiThread(() -> AlertDialogs.authorizationTokenRevokedDialog(ctx,
getString(R.string.alertDialogTokenRevokedTitle),
getString(R.string.alertDialogTokenRevokedMessage),
getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
getString(R.string.alertDialogTokenRevokedCopyPositiveButton)));
break;
case 403:
Toasty.error(ctx, ctx.getString(R.string.authorizeError));
runOnUiThread(() -> Toasty.error(ctx, ctx.getString(R.string.authorizeError)));
break;
case 404:
Toasty.warning(ctx, ctx.getString(R.string.apiNotFound));
runOnUiThread(() -> Toasty.warning(ctx, ctx.getString(R.string.apiNotFound)));
break;
default:
Toasty.error(ctx, getString(R.string.labelGeneralError));
runOnUiThread(() -> Toasty.error(ctx, getString(R.string.labelGeneralError)));
}
} catch(IOException ignored) {}

View File

@ -240,23 +240,23 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
switch(response.code()) {
case 401:
AlertDialogs.authorizationTokenRevokedDialog(ctx,
runOnUiThread(() -> AlertDialogs.authorizationTokenRevokedDialog(ctx,
getResources().getString(R.string.alertDialogTokenRevokedTitle),
getResources().getString(R.string.alertDialogTokenRevokedMessage),
getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton)));
break;
case 403:
Toasty.error(ctx, ctx.getString(R.string.authorizeError));
runOnUiThread(() -> Toasty.error(ctx, ctx.getString(R.string.authorizeError)));
break;
case 404:
Toasty.warning(ctx, ctx.getString(R.string.apiNotFound));
runOnUiThread(() -> Toasty.warning(ctx, ctx.getString(R.string.apiNotFound)));
break;
default:
Toasty.error(ctx, getString(R.string.labelGeneralError));
runOnUiThread(() -> Toasty.error(ctx, getString(R.string.labelGeneralError)));
}
}

View File

@ -322,7 +322,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
@Override
public void onSuccess() {
int textColor = new ColorInverter().getImageViewContrastColor(userAvatar);
int textColor = new ColorInverter().getImageViewContrastColor(userAvatarBackground);
userFullName.setTextColor(textColor);
userEmail.setTextColor(textColor);

View File

@ -292,7 +292,7 @@ public class MyReposListAdapter extends RecyclerView.Adapter<MyReposListAdapter.
}
holder.repoFullName.setText(currentItem.getFullName());
if(currentItem.getPrivateFlag()) {
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock);
holder.repoPrivatePublic.setVisibility(View.VISIBLE);
holder.repoType.setText(R.string.strPrivate);
}
else {

View File

@ -293,7 +293,7 @@ public class ReposListAdapter extends RecyclerView.Adapter<ReposListAdapter.Repo
}
holder.fullName.setText(currentItem.getFullName());
if(currentItem.getPrivateFlag()) {
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock);
holder.repoPrivatePublic.setVisibility(View.VISIBLE);
holder.repoType.setText(R.string.strPrivate);
}
else {

View File

@ -293,7 +293,7 @@ public class RepositoriesByOrgAdapter extends RecyclerView.Adapter<RepositoriesB
}
holder.fullName.setText(currentItem.getFullName());
if(currentItem.getPrivateFlag()) {
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock);
holder.repoPrivatePublic.setVisibility(View.VISIBLE);
holder.repoType.setText(R.string.strPrivate);
}
else {

View File

@ -296,7 +296,7 @@ public class StarredReposListAdapter extends RecyclerView.Adapter<StarredReposLi
}
holder.fullName.setText(currentItem.getFullName());
if(currentItem.getPrivateFlag()) {
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock);
holder.repoPrivatePublic.setVisibility(View.VISIBLE);
holder.repoType.setText(R.string.strPrivate);
}
else {

View File

@ -71,21 +71,26 @@ public class MainApplication extends Application {
}
Notifications.createChannels(appCtx);
}
protected void attachBaseContext(Context context) {
super.attachBaseContext(context);
tinyDB = TinyDB.getInstance(context);
if(tinyDB.getBoolean("crashReportingEnabled")) {
CoreConfigurationBuilder ACRABuilder = new CoreConfigurationBuilder(this);
ACRABuilder.setBuildConfigClass(BuildConfig.class).setReportFormat(StringFormat.KEY_VALUE_LIST);
ACRABuilder.getPluginConfigurationBuilder(MailSenderConfigurationBuilder.class).setReportAsFile(true).setMailTo(getResources().getString(R.string.appEmail)).setSubject(getResources().getString(R.string.crashReportEmailSubject, AppUtil.getAppBuildNo(getApplicationContext()))).setEnabled(true);
ACRABuilder.getPluginConfigurationBuilder(MailSenderConfigurationBuilder.class).setReportAsFile(true).setMailTo(getResources().getString(R.string.appEmail))
.setSubject(getResources().getString(R.string.crashReportEmailSubject, AppUtil.getAppBuildNo(context))).setEnabled(true);
ACRABuilder.getPluginConfigurationBuilder(LimiterConfigurationBuilder.class).setEnabled(true);
ACRA.init(this, ACRABuilder);
}
Notifications.createChannels(appCtx);
Notifications.startWorker(appCtx);
}
private void setDefaults() {

View File

@ -97,7 +97,7 @@ public class ProfileFragment extends Fragment {
@Override
public void onSuccess() {
int invertedColor = new ColorInverter().getImageViewContrastColor(userAvatar);
int invertedColor = new ColorInverter().getImageViewContrastColor(userAvatarBackground);
userFullName.setTextColor(invertedColor);
divider.setBackgroundColor(invertedColor);

View File

@ -93,22 +93,30 @@ public class SyntaxHighlightedArea extends LinearLayout {
}
public void setContent(@NonNull String source, @NonNull String extension) {
if(source.length() > 0) {
if(source.length() > 0) {
linesView.setLineCount(AppUtil.getLineCount(source));
MainGrammarLocator mainGrammarLocator = MainGrammarLocator.getInstance();
Prism4jSyntaxHighlight prism4jSyntaxHighlight = Prism4jSyntaxHighlight.create(new Prism4j(mainGrammarLocator), prism4jTheme, MainGrammarLocator.DEFAULT_FALLBACK_LANGUAGE);
try {
CharSequence highlightedSource = prism4jSyntaxHighlight.highlight(mainGrammarLocator.fromExtension(extension), source);
MainGrammarLocator mainGrammarLocator = MainGrammarLocator.getInstance();
Prism4j prism4j = new Prism4j(mainGrammarLocator);
if(highlightedSource.charAt(highlightedSource.length() - 1) == '\n') {
// Removes a line break which is probably added by Prism4j but not actually present in the source.
// This line should be altered in case this gets fixed.
sourceView.setText(highlightedSource.subSequence(0, highlightedSource.length() - 1));
}
else {
sourceView.setText(highlightedSource);
CharSequence highlightedSource = Prism4jSyntaxHighlight.create(prism4j, prism4jTheme, MainGrammarLocator.DEFAULT_FALLBACK_LANGUAGE)
.highlight(mainGrammarLocator.fromExtension(extension), source);
if(highlightedSource.charAt(highlightedSource.length() - 1) == '\n') {
// Removes a line break which is probably added by Prism4j but not actually present in the source.
// This line should be altered in case this gets fixed.
sourceView.setText(highlightedSource.subSequence(0, highlightedSource.length() - 1));
}
else {
sourceView.setText(highlightedSource);
}
} catch(Throwable ignored) {
// Fall back to plaintext if something fails
sourceView.setText(source);
}
}
}

View File

@ -37,8 +37,8 @@
<string name="pageTitleNewFile">Nuovo File</string>
<string name="pageTitleExplore">Esplora</string>
<string name="pageTitleAdministration">Amministrazione Gitea</string>
<string name="pageTitleUserAccounts">Manage Accounts</string>
<string name="pageTitleNewPullRequest">New Pull Request</string>
<string name="pageTitleUserAccounts">Gestione Account</string>
<string name="pageTitleNewPullRequest">Nuova Pull Request</string>
<!-- page titles -->
<string name="repoName">Demo repo</string>
<string name="repoFullName">Repo con ORG</string>
@ -64,10 +64,10 @@
<string name="navigationDrawerOpen">Apri panello Navigazione</string>
<string name="navigationDrawerClose">Chiudi panello Navigazione</string>
<string name="logo">Accedi a Gitea</string>
<string name="protocol">Protocol</string>
<string name="protocol">Protocollo</string>
<string name="urlInfoTooltip">1- Scegli il protocollo corretto(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
<string name="malformedUrl">Impossibile connettersi all\'host. Controlla l\'URL o la porta per eventuali errori</string>
<string name="protocolError">Non si consiglia di utilizzare il protocollo HTTP a meno che non si stia testando sulla rete locale</string>
<string name="malformedJson">Malformed JSON was received. Server response was not successful</string>
<string name="emptyFieldURL">Istanza
URL è richiesto</string>
@ -107,8 +107,8 @@ URL è richiesto</string>
<string name="tabTextFiles">File</string>
<string name="tabTextMl">Milestones</string>
<string name="tabTextReleases">Rilasci</string>
<string name="tabTextBranches">Branches</string>
<string name="tabTextLabels">Labels</string>
<string name="tabTextBranches">Rami</string>
<string name="tabTextLabels">Etichette</string>
<string name="tabTextCollaborators">Collaboratori</string>
<string name="tabPullRequests">Pull Requests</string>
<string name="noDataIssueTab">Nessun problema trovato</string>
@ -209,13 +209,13 @@ URL è richiesto</string>
<string name="draftsHintText">Bozze dei commenti</string>
<string name="settingsEnableCommentsDeletionText">Abilita Eliminazione Bozze</string>
<string name="settingsEnableCommentsDeletionHintText">Elimina la bozza del commento quando viene pubblicato</string>
<string name="settingsGeneralHeader">General</string>
<string name="settingsGeneralHeader">Generale</string>
<string name="generalHintText">Home screen, default link handler</string>
<string name="generalDeepLinkDefaultScreen">Default Link Handler</string>
<string name="generalDeepLinkDefaultScreenHintText">Choose what screen should be loaded if the app cannot handle external links. It will redirect you automatically.</string>
<string name="generalDeepLinkSelectedText">N/A</string>
<string name="linkSelectorDialogTitle">Select Default Link Handler Screen</string>
<string name="settingsBiometricHeader">Biometric Support</string>
<string name="settingsBiometricHeader">Sblocco biometrico</string>
<!-- settings -->
<string name="noMoreData">Nessun altro dato disponibile</string>
<string name="createLabel">Nuovo label</string>
@ -287,7 +287,7 @@ autorizzazione</string>
<string name="editCommentUpdatedText">Commento aggiornato</string>
<string name="issueCommentShare">Condividi Commento</string>
<string name="deleteCommentSuccess">Commento eliminato con successo</string>
<string name="copyCommentText">Copy Comment</string>
<string name="copyCommentText">Copia commento</string>
<!-- issue comments -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Aggiungi/Rimuovi collaboratore</string>
@ -305,7 +305,7 @@ autorizzazione</string>
<string name="profileEmailButton">Salva</string>
<string name="profileEmailTitle">Indirizzo Email</string>
<string name="emailAddedText">New email added successfully</string>
<string name="emailErrorEmpty">Email address is empty</string>
<string name="emailErrorEmpty">L\'indirizzo email è vuoto</string>
<string name="emailErrorInvalid">Indirizzo email non valido</string>
<string name="emailErrorInUse">Indirizzo email già in uso</string>
<string name="emailTypeText">Primario</string>
@ -331,8 +331,8 @@ autorizzazione</string>
<string name="userRoleAdmin">Amministratore</string>
<string name="adminCron">Cron Tasks</string>
<string name="adminCronScheduleHeader">Schedule</string>
<string name="adminCronNextRunHeader">Next Run</string>
<string name="adminCronLastRunHeader">Last Run</string>
<string name="adminCronNextRunHeader">Prossima esecuzione</string>
<string name="adminCronLastRunHeader">Ultima esecuzione</string>
<string name="adminCronExecutionHeader">Executions</string>
<string name="adminCronTaskSuccessMsg">Task %1$s is initiated successfully</string>
<!-- admin -->
@ -429,7 +429,7 @@ autorizzazione</string>
<string name="isOpen">Apri</string>
<string name="isClosed">Chiuso</string>
<string name="genericServerResponseError">Al momento non possiamo raggiungere il server, controlla lo stato del tuo server e riprova</string>
<string name="genericCopyUrl">Copy URL</string>
<string name="genericCopyUrl">Copia l\'URL</string>
<!-- generic copy -->
<string name="exploreTextBoxHint">Esplora i repository</string>
<string name="starRepository">Repository star</string>
@ -479,9 +479,9 @@ autorizzazione</string>
<string name="waitLoadingDownloadFile">Attendere che il file venga caricato in memoria</string>
<string name="downloadFileSaved">File salvato con successo</string>
<string name="excludeFilesInFileViewer">This file type/size is not supported in file viewer. You can download it from the menu.</string>
<string name="deleteFile">Delete This File</string>
<string name="deleteFile">Elimina questo file</string>
<string name="editFile">Edit This File</string>
<string name="deleteFileText">Delete %1$s</string>
<string name="deleteFileText">Elimina %1$s</string>
<string name="deleteFileMessage">File is set for deletion by branch %1$s</string>
<string name="editFileText">Edit %1$s</string>
<string name="editFileMessage">File is modified by branch %1$s</string>
@ -555,21 +555,21 @@ autorizzazione</string>
<string name="pinNotification">Fissa Notifica</string>
<string name="markedNotificationsAsRead">Successfully marked all notifications as read</string>
<string name="notificationsHintText">Polling delay, light, vibration</string>
<string name="enableNotificationsHeaderText">Enable Notifications</string>
<string name="enableNotificationsHeaderText">Abilita le notifiche</string>
<string name="enableLightsHeaderText">Enable Light</string>
<string name="enableVibrationHeaderText">Enable Vibration</string>
<string name="chooseColorSelectorHeader">Choose Color</string>
<string name="newMessages">New messages</string>
<string name="enableVibrationHeaderText">Abilita la vibrazione</string>
<string name="chooseColorSelectorHeader">Scegli il colore</string>
<string name="newMessages">Nuovi messaggi</string>
<string name="youHaveGotNewNotifications">You\'ve got %d new notifications.</string>
<string name="mainNotificationChannelName">Notifications</string>
<string name="mainNotificationChannelName">Notifiche</string>
<string name="mainNotificationChannelDescription">This is the main notification channel of GitNex.</string>
<string name="isRead">Letto</string>
<string name="isUnread">Non letto</string>
<string name="repoSettingsTitle">Repository Settings</string>
<string name="repoSettingsEditProperties">Edit Properties</string>
<string name="repoSettingsDelete">Delete Repository</string>
<string name="repoSettingsTitle">Impostazioni del repository</string>
<string name="repoSettingsEditProperties">Modifica le proprietà</string>
<string name="repoSettingsDelete">Elimina repository</string>
<string name="repoSettingsDeleteHint">Be careful, this operation CANNOT be undone!</string>
<string name="repoPropertiesTemplate">Set as Template</string>
<string name="repoPropertiesTemplate">Usa come modello</string>
<string name="repoPropertiesEnableIssues">Enable Issues</string>
<string name="repoPropertiesExternalIssuesUrl">External Issue Tracker Url</string>
<string name="repoPropertiesEnableWiki">Enable Wiki</string>
@ -613,8 +613,8 @@ autorizzazione</string>
<string name="codeBlockWhiteOnBlack">White on Black</string>
<string name="codeBlockGreyOnBlack">Grey on Black</string>
<string name="codeBlockWhiteOnGrey">White on Grey</string>
<string name="codeBlockDarkOnWhite">Dark on White</string>
<string name="biometricAuthTitle">Biometric Authentication</string>
<string name="codeBlockDarkOnWhite">Nero su bianco</string>
<string name="biometricAuthTitle">Autenticazione biometrica</string>
<string name="biometricAuthSubTitle">Unlock using your biometric credentials</string>
<string name="biometricNotSupported">No biometric features available on this device</string>
<string name="biometricNotAvailable">Biometric features are currently unavailable</string>

View File

@ -476,7 +476,7 @@
<string name="downloadFile">下载此文件</string>
<string name="waitLoadingDownloadFile">请等待文件加载到内存</string>
<string name="downloadFileSaved">文件保存成功</string>
<string name="excludeFilesInFileViewer">This file type/size is not supported in file viewer. You can download it from the menu.</string>
<string name="excludeFilesInFileViewer">文件查看器不支持此文件类型/大小。你可以从菜单下载。</string>
<string name="deleteFile">删除此文件</string>
<string name="editFile">编辑此文件</string>
<string name="deleteFileText">删除 %1$s</string>
@ -527,7 +527,7 @@
<string name="draftSaved">草稿已自动保存。</string>
<string name="appearanceHintText">主题、字体、徽章</string>
<string name="fileViewerHintText">PDF 模式,源代码主题</string>
<string name="securityHintText">Biometric authentication, SSL certificates, cache</string>
<string name="securityHintText">生物特征认证、SSL证书、缓存</string>
<string name="languagesHintText">语言</string>
<string name="reportsHintText">崩溃报告</string>
<string name="rateAppHintText">如果你喜欢GitNex你可以给它点赞</string>
@ -559,8 +559,8 @@
<string name="chooseColorSelectorHeader">选择颜色</string>
<string name="newMessages">新消息</string>
<string name="youHaveGotNewNotifications">您有%d条新通知</string>
<string name="mainNotificationChannelName">Notifications</string>
<string name="mainNotificationChannelDescription">This is the main notification channel of GitNex.</string>
<string name="mainNotificationChannelName">通知</string>
<string name="mainNotificationChannelDescription">这是 GitNex 的主通知通道。</string>
<string name="isRead">已读</string>
<string name="isUnread">未读</string>
<string name="repoSettingsTitle">存储库设置</string>
@ -619,12 +619,12 @@
<string name="enrollBiometric">从手机设置中注册生物识别</string>
<string name="copyLoginIdToClipBoard">登录 ID \'%s\' 已复制到剪贴板</string>
<!-- file viewer activity -->
<string name="fileViewerNotificationTitleStarted">Download in progress</string>
<string name="fileViewerNotificationDescriptionStarted">Downloading %s</string>
<string name="fileViewerNotificationTitleFinished">Download successful</string>
<string name="fileViewerNotificationDescriptionFinished">Downloaded %s</string>
<string name="fileViewerNotificationTitleFailed">Download failed</string>
<string name="fileViewerNotificationDescriptionFailed">Couldn\'t download %s</string>
<string name="fileViewerNotificationChannelName">Download manager</string>
<string name="fileViewerNotificationChannelDescription">Indicates the progress of ongoing downloads</string>
<string name="fileViewerNotificationTitleStarted">正在下载</string>
<string name="fileViewerNotificationDescriptionStarted">正在下载 %s</string>
<string name="fileViewerNotificationTitleFinished">下载成功</string>
<string name="fileViewerNotificationDescriptionFinished">已下载 %s</string>
<string name="fileViewerNotificationTitleFailed">下载失败</string>
<string name="fileViewerNotificationDescriptionFailed">无法下载 %s</string>
<string name="fileViewerNotificationChannelName">下载管理器</string>
<string name="fileViewerNotificationChannelDescription">显示当前下载的进度</string>
</resources>

View File

@ -1,8 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog>
<release version="3.5.0-dev" versioncode="346">
<change>Under development</change>
<release version="3.5.1" versioncode="351">
<change>Update: Translation updates</change>
<change>Bugfix: Fix crash on profile view</change>
<change>Bugfix: Fix empty tags in file viewer (temporary fix, upstream issue)</change>
<change>Bugfix: Fix sending logs on crash</change>
<change>Bugfix: Fix workmanager errors</change>
<change>Bugfix: Fix private repo icon</change>
<change>Bugfix: Fix launch toast messages on UI thread</change>
</release>
</changelog>

View File

@ -0,0 +1,13 @@
3.5.0
New: Render emoji in issue/pr titles, commit message and markdown files
New: Cron tasks (Admin only)
New: Biometric support to unlock the app
New: Switch to saved instance when coming from email/links
New: Copy user login id to clipboard
New: Progress notification for downloading files
New: Rewrite file viewer in native code to move away from traditional js to load files faster
Release Notes: https://codeberg.org/gitnex/GitNex/releases
Release Blog: https://gitnex.codeberg.page/posts/350.html

View File

@ -0,0 +1,13 @@
3.5.1
Update: Translation updates
Bugfix: Fix crash on profile view
Bugfix: Fix empty tags in file viewer (temporary fix, upstream issue)
Bugfix: Fix sending logs on crash
Bugfix: Fix workmanager errors
Bugfix: Fix private repo icon
Bugfix: Fix launch toast messages on UI thread
Release Notes: https://codeberg.org/gitnex/GitNex/releases
Release Blog: https://gitnex.codeberg.page/posts/350.html

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 129 KiB