From d08b209d07558779c98a4558464b4479db181db5 Mon Sep 17 00:00:00 2001
From: Spikatrix <12792882+Spikatrix@users.noreply.github.com>
Date: Mon, 2 Feb 2026 12:32:16 +0530
Subject: [PATCH 1/7] Split pipeline into separate build and publish jobs
---
.github/workflows/build.yml | 40 ++++++++++++++++
.github/workflows/publish-dev-release.yml | 57 -----------------------
.github/workflows/publish.yml | 55 ++++++++++++++++++++++
3 files changed, 95 insertions(+), 57 deletions(-)
create mode 100644 .github/workflows/build.yml
delete mode 100644 .github/workflows/publish-dev-release.yml
create mode 100644 .github/workflows/publish.yml
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..899a8db
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,40 @@
+name: Build
+
+on:
+ push:
+ branches: ["master"]
+ pull_request:
+ branches: ["master"]
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up JDK 8
+ uses: actions/setup-java@v4
+ with:
+ java-version: 8
+ distribution: 'zulu'
+
+ - name: Set up Android SDK
+ uses: android-actions/setup-android@v3
+ with:
+ cmdline-tools-version: 8512546
+ log-accepted-android-sdk-licenses: false
+
+ - name: Make gradlew executable
+ run: chmod +x gradlew
+
+ - name: Build APK
+ run: ./gradlew assembleFdroidDebug
+
+ - name: Upload APK artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: app-fdroid-debug
+ path: app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk
+ retention-days: 1
diff --git a/.github/workflows/publish-dev-release.yml b/.github/workflows/publish-dev-release.yml
deleted file mode 100644
index a75a358..0000000
--- a/.github/workflows/publish-dev-release.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-name: Publish development release
-
-on:
- push:
- branches:
- - master
- workflow_dispatch:
-
-jobs:
- release_development_build:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout master branch
- uses: actions/checkout@v4
-
- - name: Set up JDK 8
- uses: actions/setup-java@v4
- with:
- java-version: 8
- distribution: 'zulu'
-
- - name: Set up Android SDK
- uses: android-actions/setup-android@v3
- with:
- cmdline-tools-version: 8512546
- log-accepted-android-sdk-licenses: false
-
- - name: Make gradlew executable
- run: chmod +x gradlew
-
- - name: Build APK
- run: ./gradlew assembleFdroidDebug
-
- - name: Set environment variables
- run: |
- SHA_SHORT=$(git rev-parse --short HEAD)
- echo "APK_PATH=app/build/outputs/apk/fdroid/debug" >> $GITHUB_ENV
- echo "APK_NAME=LRC.Editor.Dev.Debug.$SHA_SHORT" >> $GITHUB_ENV
-
- - name: Rename APK
- run: mv $APK_PATH/app-fdroid-debug.apk $APK_PATH/$APK_NAME.apk
-
- - name: Cleanup v-dev tag and release
- run: gh release delete v-dev --cleanup-tag --yes || true
- env:
- GH_TOKEN: ${{ github.token }}
-
- - name: Upload APK release
- run: |
- gh release create v-dev $APK_PATH/$APK_NAME.apk \
- --title "LRC Editor Developer Build" \
- --notes "Unreleased developer build (\`fdroid\` build variant) with the latest updates" \
- --target ${{ github.sha }} \
- --prerelease
- env:
- GH_TOKEN: ${{ github.token }}
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
new file mode 100644
index 0000000..b28378e
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,55 @@
+name: Publish
+
+on:
+ workflow_run:
+ workflows: ["Build"]
+ types:
+ - completed
+ #branches:
+ # - master
+
+permissions:
+ contents: write
+ actions: read
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ if: "${{ github.event.workflow_run.conclusion == 'success' }}"
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ ref: "${{ github.event.workflow_run.head_sha }}"
+
+ - name: Download APK artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: app-fdroid-debug
+ path: apk_output
+ run-id: "${{ github.event.workflow_run.id }}"
+ github-token: "${{ github.token }}"
+
+ - name: Set environment variables
+ run: |
+ SHA_SHORT=$(git rev-parse --short HEAD)
+ echo "APK_NAME=LRC.Editor.Dev.Debug.$SHA_SHORT.apk" >> $GITHUB_ENV
+
+ - name: Rename APK
+ run: mv apk_output/app-fdroid-debug.apk apk_output/$APK_NAME
+
+ #- name: Cleanup v-dev tag and release
+ # run: gh release delete v-dev --cleanup-tag --yes || true
+ # env:
+ # GH_TOKEN: "${{ github.token }}"
+
+ #- name: Upload APK release
+ # run: |
+ # gh release create v-dev apk_output/$APK_NAME \
+ # --title "LRC Editor Developer Build" \
+ # --notes "Unreleased developer build (\`fdroid\` build variant) with the latest updates" \
+ # --target "${{ github.event.workflow_run.head_sha }}" \
+ # --prerelease
+ # env:
+ # GH_TOKEN: "${{ github.token }}"
+
From 0a250eda5dca394c8db3199d0fc4a7a0e90949f3 Mon Sep 17 00:00:00 2001
From: Spikatrix <12792882+Spikatrix@users.noreply.github.com>
Date: Mon, 2 Feb 2026 12:35:15 +0530
Subject: [PATCH 2/7] Test trigger
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 899a8db..8dcae47 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -2,7 +2,7 @@ name: Build
on:
push:
- branches: ["master"]
+ branches: ["master", "leading-space"]
pull_request:
branches: ["master"]
workflow_dispatch:
From 08df0b54f23c97e6396d5bebba56fbff368c87d2 Mon Sep 17 00:00:00 2001
From: Spikatrix <12792882+Spikatrix@users.noreply.github.com>
Date: Tue, 3 Feb 2026 11:48:23 +0530
Subject: [PATCH 3/7] Add the ability for a leading space before lyrics
---
.../main/java/com/cg/lrceditor/Constants.java | 1 +
.../com/cg/lrceditor/FinalizeActivity.java | 11 +++++--
.../com/cg/lrceditor/SettingsActivity.java | 25 ++++++++++++--
app/src/main/res/layout/activity_settings.xml | 33 +++++++++++++++++++
app/src/main/res/values-de/strings.xml | 4 ++-
app/src/main/res/values-es/strings.xml | 4 ++-
app/src/main/res/values-fr/strings.xml | 4 ++-
app/src/main/res/values-in/strings.xml | 4 ++-
app/src/main/res/values-pl/strings.xml | 4 ++-
app/src/main/res/values-pt-rBR/strings.xml | 4 ++-
app/src/main/res/values-zh-rCN/strings.xml | 4 ++-
app/src/main/res/values-zh-rTW/strings.xml | 4 ++-
app/src/main/res/values/strings.xml | 4 ++-
13 files changed, 92 insertions(+), 14 deletions(-)
diff --git a/app/src/main/java/com/cg/lrceditor/Constants.java b/app/src/main/java/com/cg/lrceditor/Constants.java
index 1d4d829..213b3ce 100644
--- a/app/src/main/java/com/cg/lrceditor/Constants.java
+++ b/app/src/main/java/com/cg/lrceditor/Constants.java
@@ -16,6 +16,7 @@ class Constants {
static final String SAVE_LOCATION_PREFERENCE = "saveLocation";
static final String TIMESTAMP_STEP_AMOUNT_PREFERENCE = "timestamp_step_amount";
static final String THREE_DIGIT_MILLISECONDS_PREFERENCE = "three_digit_milliseconds";
+ static final String LYRIC_LEADING_SPACE_PREFERENCE = "lyric_leading_space";
static final String THEME_PREFERENCE = "current_theme";
static final String PURCHASED_PREFERENCE = "lrceditor_purchased";
}
diff --git a/app/src/main/java/com/cg/lrceditor/FinalizeActivity.java b/app/src/main/java/com/cg/lrceditor/FinalizeActivity.java
index b738c84..33ca651 100644
--- a/app/src/main/java/com/cg/lrceditor/FinalizeActivity.java
+++ b/app/src/main/java/com/cg/lrceditor/FinalizeActivity.java
@@ -71,6 +71,7 @@ public class FinalizeActivity extends AppCompatActivity {
private boolean overwriteFailed = false;
private boolean threadIsExecuting = false;
private boolean useThreeDigitMilliseconds = false;
+ private boolean useLyricLeadingSpace = false;
@SuppressLint("ClickableViewAccessibility")
@Override
@@ -111,6 +112,7 @@ protected void onCreate(Bundle savedInstanceState) {
});
useThreeDigitMilliseconds = preferences.getBoolean(Constants.THREE_DIGIT_MILLISECONDS_PREFERENCE, false);
+ useLyricLeadingSpace = preferences.getBoolean(Constants.LYRIC_LEADING_SPACE_PREFERENCE, false);
Toolbar toolbar = findViewById(R.id.toolbar);
if (isDarkTheme) {
@@ -296,7 +298,7 @@ private void writeLyrics(final String filePath, final String fileName) {
file = file.createFile("application/*", fileName);
OutputStream out = getContentResolver().openOutputStream(file.getUri());
- InputStream in = new ByteArrayInputStream(lyricsToString(useThreeDigitMilliseconds).getBytes(StandardCharsets.UTF_8));
+ InputStream in = new ByteArrayInputStream(lyricsToString(useThreeDigitMilliseconds, useLyricLeadingSpace).getBytes(StandardCharsets.UTF_8));
byte[] buffer = new byte[1024];
int read;
@@ -327,7 +329,7 @@ public void setAsLRCFileName(View view) {
((EditText) dialogView.findViewById(R.id.dialog_edittext)).setText(lrcFileName);
}
- private String lyricsToString(boolean useThreeDigitMilliseconds) {
+ private String lyricsToString(boolean useThreeDigitMilliseconds, boolean useLyricLeadingSpace) {
StringBuilder sb = new StringBuilder();
String str;
@@ -360,7 +362,10 @@ private String lyricsToString(boolean useThreeDigitMilliseconds) {
// Some players might skip empty lyric lines (I'm looking at you Huawei music player)
// Hence we replace empty lyric lines with a space
lyric = " ";
+ } else if (useLyricLeadingSpace) {
+ lyric = " " + lyric
}
+
if (useThreeDigitMilliseconds) {
sb.append("[").append(timestamp.toStringWithThreeDigitMilliseconds(Locale.ENGLISH)).append("]").append(lyric).append("\n");
} else {
@@ -468,7 +473,7 @@ public boolean isExternalStorageWritable() {
public void copyLrc(View view) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
- ClipData clip = ClipData.newPlainText("Generated LRC data", lyricsToString(useThreeDigitMilliseconds));
+ ClipData clip = ClipData.newPlainText("Generated LRC data", lyricsToString(useThreeDigitMilliseconds, useLyricLeadingSpace));
if (clipboard != null) {
clipboard.setPrimaryClip(clip);
} else {
diff --git a/app/src/main/java/com/cg/lrceditor/SettingsActivity.java b/app/src/main/java/com/cg/lrceditor/SettingsActivity.java
index d6616b7..5477e72 100644
--- a/app/src/main/java/com/cg/lrceditor/SettingsActivity.java
+++ b/app/src/main/java/com/cg/lrceditor/SettingsActivity.java
@@ -29,6 +29,7 @@ public class SettingsActivity extends AppCompatActivity {
private TextView readLocation;
private TextView timestampStep;
private Switch threeDigitMillisecondsSwitch;
+ private Switch lyricLeadingSpaceSwitch;
private RadioButton light, dark, darker;
@@ -78,6 +79,14 @@ protected void onCreate(Bundle savedInstanceState) {
editor.apply();
});
+ lyricLeadingSpaceSwitch = findViewById(R.id.lyric_leading_space_switch);
+ lyricLeadingSpaceSwitch.setChecked(preferences.getBoolean(Constants.LYRIC_LEADING_SPACE_PREFERENCE, false));
+ lyricLeadingSpaceSwitch.setOnCheckedChangeListener((compoundButton, checked) -> {
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putBoolean(Constants.LYRIC_LEADING_SPACE_PREFERENCE, checked);
+ editor.apply();
+ });
+
RadioGroup themeGroup = findViewById(R.id.theme_group);
light = findViewById(R.id.radioButtonLight);
dark = findViewById(R.id.radioButtonDark);
@@ -212,7 +221,7 @@ public void adjustTimestampStep(View v) {
public void showTimestampStepHelp(View view) {
new AlertDialog.Builder(this)
.setMessage(R.string.timestamp_step_help)
- .setNeutralButton(getString(R.string.ok), null)
+ .setNegativeButton(getString(R.string.ok), null)
.create()
.show();
}
@@ -224,7 +233,19 @@ public void toggleThreeDigitMillisecondSwitch(View view) {
public void showThreeDigitMillisecondsHelp(View view) {
new AlertDialog.Builder(this)
.setMessage(R.string.three_digit_milliseconds_help)
- .setNeutralButton(getString(R.string.ok), null)
+ .setNegativeButton(getString(R.string.ok), null)
+ .create()
+ .show();
+ }
+
+ public void toggleLyricLeadingSpaceSwitch(View view) {
+ lyricLeadingSpaceSwitch.toggle();
+ }
+
+ public void showLyricLeadingSpaceHelp(View view) {
+ new AlertDialog.Builder(this)
+ .setMessage(R.string.lyric_leading_space_help)
+ .setNegativeButton(getString(R.string.ok), null)
.create()
.show();
}
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 4ae584a..1413710 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -178,6 +178,39 @@
+
+
+
+
+
+
+
+
+
+
Fehler: Speicher nicht verfügbar/überlastet
Musiktitel auswählenFehlgeschlagen\nKeine LRC-Dateien gefunden
- Das Speichern mit dreistelligen Millisekunden kann für Anwendungen nützlich sein, die LRC-Dateien mit dreistelligen Millisekunden-Zeitstempeln anstelle von zweistelligen Millisekunden-Zeitstempeln erwarten
+ Dies ist nützlich für Anwendungen, die LRC-Dateien mit dreistelligen Millisekunden-Zeitstempeln anstelle von zweistelligen erwarten. Im Zweifelsfall sollten Sie diese Option deaktiviert lassen.Zeitstempel mit dreistelligen Millisekunden speichern
+ Dies ist nützlich für Anwendungen, die ein Leerzeichen zwischen dem Zeitstempel und dem Liedtext erwarten. Im Zweifelsfall sollten Sie diese Option deaktiviert lassen.
+ Songtexte mit einem vorangestellten Leerzeichen speichernSchrittlänge des ZeitstempelsZeitstempel werden im Editor um diese Millisekunden angepasst. Beachten Sie, dass im Editor nur die beiden wichtigsten Stellen der Millisekunden angezeigt werdenEin unerwarteter Fehler trat beim Versuch, den Titel zu verwenden, auf
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 8a84f0e..8c7430e 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -145,8 +145,10 @@
Eror: Almancimiento indisponible/ocupadoToca para seleccionar una canciónFallo\nNo se encontraron letras
- Guardar el archivo con precision de tres decimales (milisegundos). Puede sér útil en aplicaciones con expectativa de tiempo en milisegundos (3 decimales) en vez de centisegundos (2 decimales).
+ Esto es útil para aplicaciones que esperan archivos LRC con marcas de tiempo en milisegundos de tres dígitos en lugar de dos. Si no está seguro, manténgalo desactivado.Guardar con milisegundos (3 decimales)
+ Esto es útil para aplicaciones que esperan un espacio entre la marca de tiempo y la letra. Si no está seguro, manténgalo desactivado.
+ Guardar la letra con un espacio al principioTamaño del paso de tiempoAjuste del tamaño del paso de tiempo del editor, en milisegundos. Notar que el editor solo indica en centisegundos aunque el ajuste esté en milisegundos.Eror configurando el título
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 96ca7a6..30b194f 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -145,8 +145,10 @@
Erreur : Stockage indisponible/occupéTap pour sélectionner une musiqueEchec\nPas de fichier de parole trouvé
- Enregistrer le fichier avec une précision à 3 chiffres des millisecondes sera utile pour les application qui s\'attendent des fichiers LRC avec des millisecondes en 3 caractères plutôt que 2.
+ Cette option est utile pour les applications qui attendent des fichiers LRC avec des horodatages en millisecondes à trois chiffres plutôt qu'à deux. En cas de doute, laissez cette option désactivée.Enregistrer avec des millisecondes en 3 caractères
+ Cette option est utile pour les applications qui nécessitent un espace entre l'horodatage et les paroles. En cas de doute, laissez-la désactivée.
+ Enregistrer les paroles avec un espace au débutPas des marqueurs temporelsPrécision des millisecondes du marqueur temporel. Les millisecondes auront autant de chiffres significatifs que le nombre précisé ici. A noter que le volet éditeur n\'affiche que les deux premiers chiffres des millisecondes.Une erreur s\'est produite pendant le changement de titre
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index 13e2d0d..ed83afc 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -145,8 +145,10 @@
Kesalahan: Penyimpanan tidak tersedia/sibukKetuk di sini untuk memilih laguMeleset\nTak ditemukan berkas lirik
- Meyimpan dengan milidetik tiga angka mungkin akan berguna bagi aplikasi yang menganggap berkas LRC dengan cap waktu milidetik tiga angka daripada cap waktu dengan milidetik dua angka saja
+ Ini berguna untuk aplikasi yang mengharapkan file LRC dengan stempel waktu milidetik tiga digit, bukan dua digit. Jika tidak yakin, biarkan pengaturan ini tetap nonaktif.Simpan dengan milidetik tiga angka
+ Ini berguna untuk aplikasi yang mengharapkan adanya spasi antara stempel waktu dan lirik. Jika tidak yakin, biarkan pengaturan ini tetap nonaktif.
+ Simpan lirik dengan spasi di awalJumlah langkah cap waktuStempel waktu akan disesuaikan dengan jumlah milidetik ini di editor. Perhatikan bahwa hanya dua digit paling signifikan dari milidetik yang ditampilkan di editorTerjadi kesalahan yang ketika mencoba menyetel judul!
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 664ab30..51cf979 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -146,8 +146,10 @@
Błąd: pamięć niedostępna/zajętaStuknij tutaj, aby wybrać utwór"Tego brakuje\nNie znaleziono plików Lyric"
- Zapisywanie znaczników czasowych z trzycyfrowymi milisekundami może być przydatne w aplikacjach które oczekują pliku LRC z trzycyfrowymi znacznikami milisekund, a nie dwucyfrowymi znacznikami milisekund
+ Ta opcja jest przydatna w aplikacjach, które oczekują plików LRC z trzycyfrowymi znacznikami czasu w milisekundach, a nie dwucyfrowymi. W razie wątpliwości, lepiej pozostawić ją wyłączoną.Zapisz znaczniki z trzycyfrowymi milisekundami
+ Ta opcja jest przydatna w aplikacjach, które wymagają spacji między znacznikiem czasu a tekstem piosenki. W razie wątpliwości, lepiej pozostawić ją wyłączoną.
+ Zapisz tekst piosenki z wiodącą spacjąKwota kroku znacznika czasuZnaczniki czasu zostaną skorygowane o tę liczbę milisekund w edytorze. Zwróć uwagę, że w edytorze wyświetlane są tylko dwie najbardziej znaczące cyfry milisekundWystąpił nieoczekiwany błąd podczas próby ustawienia tytułu
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index f51df09..f248aa3 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -145,8 +145,10 @@
Erro: Armazenamento indisponível ou cheioToque aqui para selecionar uma músicaFalta algo aqui...\nNenhum arquivo de letra encontrado
- Salvar com milissegundos de três dígitos pode ser útil para aplicativos que esperam arquivos LRC com timestamps de três dígitos em milissegundos em vez de timestamps de dois dígitos em milissegundos
+ Esta opção é útil para aplicativos que esperam arquivos LRC com carimbos de data/hora em milissegundos com três dígitos, em vez de dois. Em caso de dúvida, mantenha-a desativada.Salvar com três dígitos em milissegundos
+ Isso é útil para aplicativos que esperam um espaço entre o carimbo de data/hora e a letra da música. Em caso de dúvida, mantenha esta opção desativada.
+ Salvar letras com um espaço inicialValor da etapa do registro de data e horaOs carimbos de data e hora serão ajustados por essa quantidade de milissegundos no editor. Observe que apenas os dois dígitos mais significativos dos milissegundos são mostrados no editorOcorreu um erro inesperado ao tentar definir o título
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 5c236a4..74bddf7 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -145,8 +145,10 @@
错误:装置存储设备不可用或繁忙点击此处选择歌曲真的没想到\n找不到歌词文件
- 以三位数毫秒保存功能,对于需要三位数毫秒而并非二位数毫秒的 LRC 文件的应用程序可能有用
+ 此功能适用于需要使用三位毫秒时间戳(而非两位时间戳)的 LRC 文件格式的应用程序。如果您不确定,请保持此功能关闭。以三位数毫秒保存
+ 这对于需要在时间戳和歌词之间留有空格的应用程序很有用。如果不确定,请保持此功能关闭。
+ 保存歌词时在开头添加一个空格歌词时间戳步进时间歌词时间戳于编辑器以毫秒(ms)来调整。请注意,编辑器中只显示毫秒的最高两位有效数字。设置标题时发生不可预料的错误
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index fb2dd4c..b7a7cc2 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -145,8 +145,10 @@
錯誤:裝置存儲設備不可用或繁忙點擊此處以選擇歌曲真的沒想到\n找不到歌詞檔
- 以三位數毫秒儲存功能,對於需要三位數毫秒而並非二位數毫秒的LRC文件的應用程序或會有用
+ 這對於需要使用三位數毫秒時間戳而不是兩位數毫秒時間戳的 LRC 檔案的應用程式非常有用。如果不確定,請將其關閉。以三位數毫秒儲存
+ 這對於需要在時間戳和歌詞之間留有空格的應用程式很有用。如果不確定,請將其關閉。
+ 儲存歌詞時,請以空格分隔時間標記步數時間標記於編輯器以毫秒 (ms) 來調整。請注意編輯器中僅顯示毫秒中最高且有效的二位數。設定標題時發生未預期的錯誤
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b95f35d..d954dea 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -145,8 +145,10 @@
Error: Storage unavailable/busyTap here to select a songThat\'s-a-miss\nNo lyric files found
- Saving with three digit milliseconds might be useful for applications that expect LRC files with three digit millisecond timestamps rather than two digit millisecond timestamps
+ This is useful for applications that expect LRC files with three digit millisecond timestamps rather than two digit ones. If unsure, keep it turned off.Save with three digit milliseconds
+ This is useful for applications that expect a space between the timestamp and the lyric. If unsure, keep it turned off.
+ Save lyrics with a leading spaceTimestamp step amountTimestamps will be adjusted by this amount of milliseconds in the editor. Note that only the two most significant digits of the milliseconds are shown in the editorAn unexpected error occurred trying to set the title
From 6486755ad68c0b5958972767eb9bb64f475e935f Mon Sep 17 00:00:00 2001
From: Spikatrix <12792882+Spikatrix@users.noreply.github.com>
Date: Tue, 3 Feb 2026 11:52:15 +0530
Subject: [PATCH 4/7] fix build
---
app/src/main/res/values-fr/strings.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 30b194f..cbd8ac5 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -145,9 +145,9 @@
Erreur : Stockage indisponible/occupéTap pour sélectionner une musiqueEchec\nPas de fichier de parole trouvé
- Cette option est utile pour les applications qui attendent des fichiers LRC avec des horodatages en millisecondes à trois chiffres plutôt qu'à deux. En cas de doute, laissez cette option désactivée.
+ Cette option est utile pour les applications qui attendent des fichiers LRC avec des horodatages en millisecondes à trois chiffres plutôt qu\'à deux. En cas de doute, laissez cette option désactivée.Enregistrer avec des millisecondes en 3 caractères
- Cette option est utile pour les applications qui nécessitent un espace entre l'horodatage et les paroles. En cas de doute, laissez-la désactivée.
+ Cette option est utile pour les applications qui nécessitent un espace entre l\'horodatage et les paroles. En cas de doute, laissez-la désactivée.Enregistrer les paroles avec un espace au débutPas des marqueurs temporelsPrécision des millisecondes du marqueur temporel. Les millisecondes auront autant de chiffres significatifs que le nombre précisé ici. A noter que le volet éditeur n\'affiche que les deux premiers chiffres des millisecondes.
From d004926657ad752fed14e7d724194db73dc86e9a Mon Sep 17 00:00:00 2001
From: Spikatrix <12792882+Spikatrix@users.noreply.github.com>
Date: Tue, 3 Feb 2026 11:55:10 +0530
Subject: [PATCH 5/7] fix semicolon
---
app/src/main/java/com/cg/lrceditor/FinalizeActivity.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/main/java/com/cg/lrceditor/FinalizeActivity.java b/app/src/main/java/com/cg/lrceditor/FinalizeActivity.java
index 33ca651..127e718 100644
--- a/app/src/main/java/com/cg/lrceditor/FinalizeActivity.java
+++ b/app/src/main/java/com/cg/lrceditor/FinalizeActivity.java
@@ -363,7 +363,7 @@ private String lyricsToString(boolean useThreeDigitMilliseconds, boolean useLyri
// Hence we replace empty lyric lines with a space
lyric = " ";
} else if (useLyricLeadingSpace) {
- lyric = " " + lyric
+ lyric = " " + lyric;
}
if (useThreeDigitMilliseconds) {
From de26b43bc0e818715a657bedd85cd384aee7fbd9 Mon Sep 17 00:00:00 2001
From: Spikatrix <12792882+Spikatrix@users.noreply.github.com>
Date: Tue, 3 Feb 2026 12:23:07 +0530
Subject: [PATCH 6/7] make pipelines ready for merge
---
.github/workflows/build.yml | 6 +++---
.github/workflows/publish.yml | 34 +++++++++++++++++-----------------
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8dcae47..fde3c67 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -2,14 +2,14 @@ name: Build
on:
push:
- branches: ["master", "leading-space"]
+ branches: ["master"]
pull_request:
branches: ["master"]
workflow_dispatch:
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
@@ -37,4 +37,4 @@ jobs:
with:
name: app-fdroid-debug
path: app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk
- retention-days: 1
+ retention-days: 7
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index b28378e..1c4804c 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -5,8 +5,8 @@ on:
workflows: ["Build"]
types:
- completed
- #branches:
- # - master
+ branches:
+ - master
permissions:
contents: write
@@ -14,7 +14,7 @@ permissions:
jobs:
publish:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-24.04
if: "${{ github.event.workflow_run.conclusion == 'success' }}"
steps:
- name: Checkout repository
@@ -38,18 +38,18 @@ jobs:
- name: Rename APK
run: mv apk_output/app-fdroid-debug.apk apk_output/$APK_NAME
- #- name: Cleanup v-dev tag and release
- # run: gh release delete v-dev --cleanup-tag --yes || true
- # env:
- # GH_TOKEN: "${{ github.token }}"
-
- #- name: Upload APK release
- # run: |
- # gh release create v-dev apk_output/$APK_NAME \
- # --title "LRC Editor Developer Build" \
- # --notes "Unreleased developer build (\`fdroid\` build variant) with the latest updates" \
- # --target "${{ github.event.workflow_run.head_sha }}" \
- # --prerelease
- # env:
- # GH_TOKEN: "${{ github.token }}"
+ - name: Cleanup v-dev tag and release
+ run: gh release delete v-dev --cleanup-tag --yes || true
+ env:
+ GH_TOKEN: "${{ github.token }}"
+
+ - name: Upload APK release
+ run: |
+ gh release create v-dev apk_output/$APK_NAME \
+ --title "LRC Editor Developer Build" \
+ --notes "Unreleased developer build (\`fdroid\` build variant) with the latest updates" \
+ --target "${{ github.event.workflow_run.head_sha }}" \
+ --prerelease
+ env:
+ GH_TOKEN: "${{ github.token }}"
From 66902c574aa8dc991cd38bedc83eb09921388222 Mon Sep 17 00:00:00 2001
From: Spikatrix <12792882+Spikatrix@users.noreply.github.com>
Date: Tue, 3 Feb 2026 14:04:58 +0530
Subject: [PATCH 7/7] include commit sha in the artifact name
---
.github/workflows/build.yml | 18 ++++++++++++++++--
.github/workflows/publish.yml | 18 ++++++++++--------
2 files changed, 26 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index fde3c67..5e6922b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -32,9 +32,23 @@ jobs:
- name: Build APK
run: ./gradlew assembleFdroidDebug
+ - name: Rename APK
+ id: rename
+ run: |
+ if [ "${{ github.event_name }}" == "pull_request" ]; then
+ SHA_FULL="${{ github.event.pull_request.head.sha }}"
+ else
+ SHA_FULL="${{ github.sha }}"
+ fi
+ SHA_SHORT="${SHA_FULL:0:7}"
+
+ APK_NAME="app-fdroid-debug-$SHA_SHORT.apk"
+ mv app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk "app/build/outputs/apk/fdroid/debug/$APK_NAME"
+ echo "apk_name=$APK_NAME" >> $GITHUB_OUTPUT
+
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
- name: app-fdroid-debug
- path: app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk
+ name: ${{ steps.rename.outputs.apk_name }}
+ path: app/build/outputs/apk/fdroid/debug/${{ steps.rename.outputs.apk_name }}
retention-days: 7
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 1c4804c..6cc7911 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -22,21 +22,23 @@ jobs:
with:
ref: "${{ github.event.workflow_run.head_sha }}"
+ - name: Set environment variables
+ run: |
+ SHA_FULL="${{ github.event.workflow_run.head_sha }}"
+ SHA_SHORT="${SHA_FULL:0:7}"
+ echo "BUILD_ARTIFACT_NAME=app-fdroid-debug-$SHA_SHORT.apk" >> $GITHUB_ENV
+ echo "APK_NAME=LRC.Editor.Dev.Debug.$SHA_SHORT.apk" >> $GITHUB_ENV
+
- name: Download APK artifact
uses: actions/download-artifact@v4
with:
- name: app-fdroid-debug
+ name: ${{ env.BUILD_ARTIFACT_NAME }}
path: apk_output
run-id: "${{ github.event.workflow_run.id }}"
github-token: "${{ github.token }}"
- - name: Set environment variables
- run: |
- SHA_SHORT=$(git rev-parse --short HEAD)
- echo "APK_NAME=LRC.Editor.Dev.Debug.$SHA_SHORT.apk" >> $GITHUB_ENV
-
- name: Rename APK
- run: mv apk_output/app-fdroid-debug.apk apk_output/$APK_NAME
+ run: mv apk_output/${{ env.BUILD_ARTIFACT_NAME }} apk_output/${{ env.APK_NAME }}
- name: Cleanup v-dev tag and release
run: gh release delete v-dev --cleanup-tag --yes || true
@@ -45,7 +47,7 @@ jobs:
- name: Upload APK release
run: |
- gh release create v-dev apk_output/$APK_NAME \
+ gh release create v-dev apk_output/${{ env.APK_NAME }} \
--title "LRC Editor Developer Build" \
--notes "Unreleased developer build (\`fdroid\` build variant) with the latest updates" \
--target "${{ github.event.workflow_run.head_sha }}" \