feat: Add Android application resources and assets.
All checks were successful
Build and Release / build-and-release (push) Successful in 12m21s

This commit is contained in:
Bryan1029384756
2026-02-20 11:11:54 -06:00
parent 3acd5ca697
commit 8b9df69931
71 changed files with 2898 additions and 1998 deletions

View File

@@ -76,62 +76,7 @@ jobs:
- name: Capacitor sync
run: |
npx cap add android
echo "sdk.dir=${ANDROID_SDK_ROOT}" > android/local.properties
# Patch AndroidManifest.xml to add required permissions
node -e "
const fs = require('fs');
const manifestPath = 'android/app/src/main/AndroidManifest.xml';
let manifest = fs.readFileSync(manifestPath, 'utf8');
const permissions = [
'<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />',
'<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" />',
'<uses-permission android:name=\"android.permission.CAMERA\" />',
'<uses-permission android:name=\"android.permission.BLUETOOTH\" android:maxSdkVersion=\"30\" />',
'<uses-permission android:name=\"android.permission.BLUETOOTH_CONNECT\" />',
'<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\" />'
];
const permBlock = permissions.join('\n ');
manifest = manifest.replace(
'</manifest>',
' ' + permBlock + '\n</manifest>'
);
fs.writeFileSync(manifestPath, manifest);
console.log('Patched AndroidManifest.xml with permissions');
"
# Append a merged android block with signingConfigs + buildTypes.release signing
# Gradle merges multiple android {} blocks, and within one block signingConfigs
# is evaluated before buildTypes, so the reference resolves correctly.
node -e "
const fs = require('fs');
const p = 'android/app/build.gradle';
let g = fs.readFileSync(p, 'utf8');
g += \`
android {
signingConfigs {
release {
storeFile file(System.getenv(\"ANDROID_KEYSTORE_FILE\") ?: \"/dev/null\")
storePassword System.getenv(\"ANDROID_KEYSTORE_PASSWORD\") ?: \"\"
keyAlias System.getenv(\"ANDROID_KEY_ALIAS\") ?: \"\"
keyPassword System.getenv(\"ANDROID_KEY_PASSWORD\") ?: \"\"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
\`;
fs.writeFileSync(p, g);
console.log('Patched build.gradle with signing config');
"
npx cap sync android
working-directory: apps/android

2
.gitignore vendored
View File

@@ -7,8 +7,6 @@ node_modules
apps/electron/dist-react
apps/electron/dist
apps/web/dist
apps/android/android
# Legacy
discord-html-copy

101
apps/android/android/.gitignore vendored Normal file
View File

@@ -0,0 +1,101 @@
# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore
# Built application files
*.apk
*.aar
*.ap_
*.aab
# Files for the ART/Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
out/
# Uncomment the following line in case you need and you don't have the release build type files in your app
# release/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml
# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore
# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
.cxx/
# Google Services (e.g. APIs or Firebase)
# google-services.json
# Freeline
freeline.py
freeline/
freeline_project_description.json
# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
# Version control
vcs.xml
# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/
# Android Profiling
*.hprof
# Cordova plugins for Capacitor
capacitor-cordova-android-plugins
# Copied web assets
app/src/main/assets/public
# Generated Config files
app/src/main/assets/capacitor.config.json
app/src/main/assets/capacitor.plugins.json
app/src/main/res/xml/config.xml

3
apps/android/android/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidProjectSystem">
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
</component>
</project>

6
apps/android/android/.idea/compiler.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="21" />
</component>
</project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetSelector">
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2026-02-13T20:38:29.717189400Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="LocalEmulator" identifier="path=C:\Users\bryan\.android\avd\Copy_of_Pixel_5_API_31.avd" />
</handle>
</Target>
</DropdownSelection>
<DialogSelection />
</SelectionState>
</selectionStates>
</component>
</project>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DeviceTable">
<option name="columnSorters">
<list>
<ColumnSorterState>
<option name="column" value="Name" />
<option name="order" value="ASCENDING" />
</ColumnSorterState>
</list>
</option>
</component>
</project>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>

9
apps/android/android/.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
<option value="com.intellij.execution.junit.PatternConfigurationProducer" />
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
</set>
</option>
</component>
</project>

2
apps/android/android/app/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/build/*
!/build/.npmkeep

View File

@@ -0,0 +1,69 @@
apply plugin: 'com.android.application'
android {
namespace "com.yourorg.discordclone"
compileSdk rootProject.ext.compileSdkVersion
defaultConfig {
applicationId "com.yourorg.discordclone"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 27
versionName "1.0.29"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
// Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61
ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~'
}
}
signingConfigs {
release {
def ksFile = System.getenv("ANDROID_KEYSTORE_FILE")
if (ksFile) {
storeFile file(ksFile)
storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD")
keyAlias System.getenv("ANDROID_KEY_ALIAS")
keyPassword System.getenv("ANDROID_KEY_PASSWORD")
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
def ksFile = System.getenv("ANDROID_KEYSTORE_FILE")
if (ksFile) {
signingConfig signingConfigs.release
}
}
}
}
repositories {
flatDir{
dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs'
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion"
implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion"
implementation project(':capacitor-android')
testImplementation "junit:junit:$junitVersion"
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
implementation project(':capacitor-cordova-android-plugins')
}
apply from: 'capacitor.build.gradle'
try {
def servicesJSON = file('google-services.json')
if (servicesJSON.text) {
apply plugin: 'com.google.gms.google-services'
}
} catch(Exception e) {
logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work")
}

View File

@@ -0,0 +1,19 @@
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
dependencies {
implementation project(':capacitor-app')
}
if (hasProperty('postBuildExtras')) {
postBuildExtras()
}

View File

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -0,0 +1,26 @@
package com.getcapacitor.myapp;
import static org.junit.Assert.*;
import android.content.Context;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.getcapacitor.app", appContext.getPackageName());
}
}

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:theme="@style/AppTheme.NoActionBarLaunch"
android:launchMode="singleTask"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".VoiceConnectionService"
android:exported="false"
android:foregroundServiceType="microphone" />
<receiver
android:name=".VoiceNotificationReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.yourorg.discordclone.VOICE_DISCONNECT" />
<action android:name="com.yourorg.discordclone.VOICE_TOGGLE_MUTE" />
<action android:name="com.yourorg.discordclone.VOICE_TOGGLE_DEAFEN" />
</intent-filter>
</receiver>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
</application>
<!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
</manifest>

View File

@@ -0,0 +1,99 @@
package com.yourorg.discordclone;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.net.Uri;
import androidx.core.content.FileProvider;
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
@CapacitorPlugin(name = "AppUpdater")
public class AppUpdaterPlugin extends Plugin {
@PluginMethod
public void getVersion(PluginCall call) {
try {
PackageInfo pInfo = getContext().getPackageManager()
.getPackageInfo(getContext().getPackageName(), 0);
JSObject ret = new JSObject();
ret.put("version", pInfo.versionName);
call.resolve(ret);
} catch (Exception e) {
call.reject("Failed to get version", e);
}
}
@PluginMethod
public void downloadAndInstall(PluginCall call) {
String url = call.getString("url");
if (url == null || url.isEmpty()) {
call.reject("URL is required");
return;
}
new Thread(() -> {
try {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setInstanceFollowRedirects(true);
conn.connect();
int totalSize = conn.getContentLength();
InputStream input = conn.getInputStream();
File apkFile = new File(getContext().getCacheDir(), "update.apk");
FileOutputStream output = new FileOutputStream(apkFile);
byte[] buffer = new byte[8192];
int bytesRead;
long downloaded = 0;
int lastPercent = -1;
while ((bytesRead = input.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
downloaded += bytesRead;
if (totalSize > 0) {
int percent = (int) (downloaded * 100 / totalSize);
if (percent != lastPercent) {
lastPercent = percent;
JSObject progress = new JSObject();
progress.put("percent", percent);
notifyListeners("downloadProgress", progress);
}
}
}
output.close();
input.close();
conn.disconnect();
Uri apkUri = FileProvider.getUriForFile(
getContext(),
getContext().getPackageName() + ".fileprovider",
apkFile
);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
getContext().startActivity(intent);
call.resolve();
} catch (Exception e) {
call.reject("Download failed: " + e.getMessage(), e);
}
}).start();
}
}

View File

@@ -0,0 +1,14 @@
package com.yourorg.discordclone;
import android.os.Bundle;
import com.getcapacitor.BridgeActivity;
public class MainActivity extends BridgeActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
registerPlugin(AppUpdaterPlugin.class);
registerPlugin(VoiceServicePlugin.class);
registerPlugin(SystemBarsPlugin.class);
super.onCreate(savedInstanceState);
}
}

View File

@@ -0,0 +1,57 @@
package com.yourorg.discordclone;
import android.graphics.Color;
import android.os.Build;
import android.view.View;
import android.view.Window;
import android.view.WindowInsetsController;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
@CapacitorPlugin(name = "SystemBars")
public class SystemBarsPlugin extends Plugin {
@PluginMethod
public void setColors(PluginCall call) {
String statusBarColor = call.getString("statusBarColor", "#000000");
String navigationBarColor = call.getString("navigationBarColor", "#000000");
Boolean isDarkContent = call.getBoolean("isDarkContent", false);
getActivity().runOnUiThread(() -> {
Window window = getActivity().getWindow();
window.setStatusBarColor(Color.parseColor(statusBarColor));
window.setNavigationBarColor(Color.parseColor(navigationBarColor));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
WindowInsetsController controller = window.getInsetsController();
if (controller != null) {
if (isDarkContent) {
controller.setSystemBarsAppearance(
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS | WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS,
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS | WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS
);
} else {
controller.setSystemBarsAppearance(
0,
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS | WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS
);
}
}
} else {
View decorView = window.getDecorView();
int flags = decorView.getSystemUiVisibility();
if (isDarkContent) {
flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
} else {
flags &= ~(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
}
decorView.setSystemUiVisibility(flags);
}
});
call.resolve();
}
}

View File

@@ -0,0 +1,181 @@
package com.yourorg.discordclone;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.Build;
import android.os.IBinder;
import android.os.PowerManager;
import androidx.core.app.NotificationCompat;
public class VoiceConnectionService extends Service {
public static final String ACTION_START = "com.yourorg.discordclone.VOICE_START";
public static final String ACTION_STOP = "com.yourorg.discordclone.VOICE_STOP";
public static final String ACTION_UPDATE = "com.yourorg.discordclone.VOICE_UPDATE";
public static final String EXTRA_CHANNEL_NAME = "channelName";
public static final String EXTRA_IS_MUTED = "isMuted";
public static final String EXTRA_IS_DEAFENED = "isDeafened";
private static final String CHANNEL_ID = "voice_call";
private static final int NOTIFICATION_ID = 1001;
private PowerManager.WakeLock wakeLock;
private String channelName = "Voice";
private boolean isMuted = false;
private boolean isDeafened = false;
@Override
public void onCreate() {
super.onCreate();
createNotificationChannel();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null) return START_STICKY;
String action = intent.getAction();
if (action == null) return START_STICKY;
switch (action) {
case ACTION_START:
channelName = intent.getStringExtra(EXTRA_CHANNEL_NAME);
if (channelName == null) channelName = "Voice";
isMuted = intent.getBooleanExtra(EXTRA_IS_MUTED, false);
isDeafened = intent.getBooleanExtra(EXTRA_IS_DEAFENED, false);
acquireWakeLock();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
startForeground(NOTIFICATION_ID, buildNotification(),
android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE);
} else {
startForeground(NOTIFICATION_ID, buildNotification());
}
break;
case ACTION_UPDATE:
if (intent.hasExtra(EXTRA_CHANNEL_NAME)) {
channelName = intent.getStringExtra(EXTRA_CHANNEL_NAME);
}
if (intent.hasExtra(EXTRA_IS_MUTED)) {
isMuted = intent.getBooleanExtra(EXTRA_IS_MUTED, false);
}
if (intent.hasExtra(EXTRA_IS_DEAFENED)) {
isDeafened = intent.getBooleanExtra(EXTRA_IS_DEAFENED, false);
}
NotificationManager nm = getSystemService(NotificationManager.class);
if (nm != null) {
nm.notify(NOTIFICATION_ID, buildNotification());
}
break;
case ACTION_STOP:
releaseWakeLock();
stopForeground(true);
stopSelf();
break;
}
return START_STICKY;
}
@Override
public void onDestroy() {
releaseWakeLock();
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
CHANNEL_ID,
"Voice Call",
NotificationManager.IMPORTANCE_LOW
);
channel.setDescription("Ongoing voice call notification");
channel.setShowBadge(false);
NotificationManager nm = getSystemService(NotificationManager.class);
if (nm != null) {
nm.createNotificationChannel(channel);
}
}
}
private Notification buildNotification() {
// Tap intent — bring app to foreground
Intent tapIntent = new Intent(this, MainActivity.class);
tapIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent tapPending = PendingIntent.getActivity(
this, 0, tapIntent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
);
// Disconnect action
PendingIntent disconnectPending = makeBroadcastPending(
VoiceNotificationReceiver.ACTION_DISCONNECT, 1);
// Mute action
PendingIntent mutePending = makeBroadcastPending(
VoiceNotificationReceiver.ACTION_TOGGLE_MUTE, 2);
// Deafen action
PendingIntent deafenPending = makeBroadcastPending(
VoiceNotificationReceiver.ACTION_TOGGLE_DEAFEN, 3);
String muteLabel = isMuted ? "Unmute" : "Mute";
String deafenLabel = isDeafened ? "Undeafen" : "Deafen";
return new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_voice_notification)
.setContentTitle("Voice Connected")
.setContentText(channelName)
.setOngoing(true)
.setSilent(true)
.setContentIntent(tapPending)
.addAction(0, "Disconnect", disconnectPending)
.addAction(0, muteLabel, mutePending)
.addAction(0, deafenLabel, deafenPending)
.setCategory(NotificationCompat.CATEGORY_CALL)
.setPriority(NotificationCompat.PRIORITY_LOW)
.build();
}
private PendingIntent makeBroadcastPending(String action, int requestCode) {
Intent intent = new Intent(this, VoiceNotificationReceiver.class);
intent.setAction(action);
return PendingIntent.getBroadcast(
this, requestCode, intent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
);
}
private void acquireWakeLock() {
if (wakeLock == null) {
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
if (pm != null) {
wakeLock = pm.newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK,
"discordclone:voicecall"
);
wakeLock.acquire();
}
}
}
private void releaseWakeLock() {
if (wakeLock != null && wakeLock.isHeld()) {
wakeLock.release();
wakeLock = null;
}
}
}

View File

@@ -0,0 +1,32 @@
package com.yourorg.discordclone;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class VoiceNotificationReceiver extends BroadcastReceiver {
public static final String ACTION_DISCONNECT = "com.yourorg.discordclone.VOICE_DISCONNECT";
public static final String ACTION_TOGGLE_MUTE = "com.yourorg.discordclone.VOICE_TOGGLE_MUTE";
public static final String ACTION_TOGGLE_DEAFEN = "com.yourorg.discordclone.VOICE_TOGGLE_DEAFEN";
@Override
public void onReceive(Context context, Intent intent) {
if (intent == null || intent.getAction() == null) return;
VoiceServicePlugin plugin = VoiceServicePlugin.getInstance();
if (plugin == null) return;
switch (intent.getAction()) {
case ACTION_DISCONNECT:
plugin.fireNotificationAction("disconnect");
break;
case ACTION_TOGGLE_MUTE:
plugin.fireNotificationAction("toggleMute");
break;
case ACTION_TOGGLE_DEAFEN:
plugin.fireNotificationAction("toggleDeafen");
break;
}
}
}

View File

@@ -0,0 +1,104 @@
package com.yourorg.discordclone;
import android.Manifest;
import android.content.Intent;
import android.os.Build;
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
import com.getcapacitor.annotation.Permission;
@CapacitorPlugin(
name = "VoiceService",
permissions = {
@Permission(
strings = { Manifest.permission.POST_NOTIFICATIONS },
alias = "notifications"
)
}
)
public class VoiceServicePlugin extends Plugin {
private static VoiceServicePlugin instance;
@Override
public void load() {
instance = this;
}
public static VoiceServicePlugin getInstance() {
return instance;
}
@PluginMethod
public void startService(PluginCall call) {
// Request POST_NOTIFICATIONS permission on Android 13+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestAllPermissions(call, "handleStartAfterPermission");
return;
}
doStartService(call);
}
@com.getcapacitor.annotation.PermissionCallback
private void handleStartAfterPermission(PluginCall call) {
doStartService(call);
}
private void doStartService(PluginCall call) {
String channelName = call.getString("channelName", "Voice");
boolean isMuted = call.getBoolean("isMuted", false);
boolean isDeafened = call.getBoolean("isDeafened", false);
Intent intent = new Intent(getContext(), VoiceConnectionService.class);
intent.setAction(VoiceConnectionService.ACTION_START);
intent.putExtra(VoiceConnectionService.EXTRA_CHANNEL_NAME, channelName);
intent.putExtra(VoiceConnectionService.EXTRA_IS_MUTED, isMuted);
intent.putExtra(VoiceConnectionService.EXTRA_IS_DEAFENED, isDeafened);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
getContext().startForegroundService(intent);
} else {
getContext().startService(intent);
}
call.resolve();
}
@PluginMethod
public void stopService(PluginCall call) {
Intent intent = new Intent(getContext(), VoiceConnectionService.class);
intent.setAction(VoiceConnectionService.ACTION_STOP);
getContext().startService(intent);
call.resolve();
}
@PluginMethod
public void updateNotification(PluginCall call) {
Intent intent = new Intent(getContext(), VoiceConnectionService.class);
intent.setAction(VoiceConnectionService.ACTION_UPDATE);
String channelName = call.getString("channelName");
if (channelName != null) {
intent.putExtra(VoiceConnectionService.EXTRA_CHANNEL_NAME, channelName);
}
if (call.hasOption("isMuted")) {
intent.putExtra(VoiceConnectionService.EXTRA_IS_MUTED, call.getBoolean("isMuted", false));
}
if (call.hasOption("isDeafened")) {
intent.putExtra(VoiceConnectionService.EXTRA_IS_DEAFENED, call.getBoolean("isDeafened", false));
}
getContext().startService(intent);
call.resolve();
}
public void fireNotificationAction(String action) {
JSObject data = new JSObject();
data.put("action", action);
notifyListeners("voiceNotificationAction", data);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,34 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportHeight="108"
android:viewportWidth="108">
<path
android:fillType="evenOdd"
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
android:strokeColor="#00000000"
android:strokeWidth="1">
<aapt:attr name="android:fillColor">
<gradient
android:endX="78.5885"
android:endY="90.9159"
android:startX="48.7653"
android:startY="61.0927"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
android:strokeColor="#00000000"
android:strokeWidth="1" />
</vector>

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportHeight="108"
android:viewportWidth="108">
<path
android:fillColor="#26A69A"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#FFFFFF">
<path
android:fillColor="#FFFFFF"
android:pathData="M12,1C7.03,1 3,5.03 3,10V17C3,18.66 4.34,20 6,20H9V12H5V10C5,6.13 8.13,3 12,3S19,6.13 19,10V12H15V20H18C19.66,20 21,18.66 21,17V10C21,5.03 16.97,1 12,1Z" />
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#FFFFFF</color>
</resources>

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="app_name">Discord Clone</string>
<string name="title_activity_main">Discord Clone</string>
<string name="package_name">com.yourorg.discordclone</string>
<string name="custom_url_scheme">com.yourorg.discordclone</string>
</resources>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:background">@null</item>
<item name="android:statusBarColor">#1e1f22</item>
<item name="android:navigationBarColor">#1e1f22</item>
<item name="android:windowLightStatusBar">false</item>
</style>
<style name="AppTheme.NoActionBarLaunch" parent="Theme.SplashScreen">
<item name="android:background">@drawable/splash</item>
</style>
</resources>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="." />
<cache-path name="my_cache_images" path="." />
</paths>

View File

@@ -0,0 +1,18 @@
package com.getcapacitor.myapp;
import static org.junit.Assert.*;
import org.junit.Test;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}

View File

@@ -0,0 +1,29 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.7.3'
classpath 'com.google.gms:google-services:4.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
apply from: "variables.gradle"
allprojects {
repositories {
google()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

View File

@@ -0,0 +1,6 @@
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
include ':capacitor-android'
project(':capacitor-android').projectDir = new File('../../../node_modules/@capacitor/android/capacitor')
include ':capacitor-app'
project(':capacitor-app').projectDir = new File('../../../node_modules/@capacitor/app/android')

View File

@@ -0,0 +1,22 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true

Binary file not shown.

View File

@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

248
apps/android/android/gradlew vendored Normal file
View File

@@ -0,0 +1,248 @@
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

92
apps/android/android/gradlew.bat vendored Normal file
View File

@@ -0,0 +1,92 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

View File

@@ -0,0 +1,5 @@
include ':app'
include ':capacitor-cordova-android-plugins'
project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/')
apply from: 'capacitor.settings.gradle'

View File

@@ -0,0 +1,16 @@
ext {
minSdkVersion = 22
compileSdkVersion = 34
targetSdkVersion = 34
androidxActivityVersion = '1.8.0'
androidxAppCompatVersion = '1.6.1'
androidxCoordinatorLayoutVersion = '1.2.0'
androidxCoreVersion = '1.12.0'
androidxFragmentVersion = '1.6.2'
coreSplashScreenVersion = '1.0.1'
androidxWebkitVersion = '1.9.0'
junitVersion = '4.13.2'
androidxJunitVersion = '1.1.5'
androidxEspressoCoreVersion = '3.5.1'
cordovaAndroidVersion = '10.1.1'
}

View File

@@ -1,602 +0,0 @@
2026-02-19T23:24:05.9188077Z e0b0e1a10f48(version:v0.2.13) received task 76 of job build-and-release, be triggered by event: push
2026-02-19T23:24:05.9191709Z workflow prepared
2026-02-19T23:24:05.9192508Z evaluating expression 'success()'
2026-02-19T23:24:05.9193279Z expression 'success()' evaluated to 'true'
2026-02-19T23:24:05.9193465Z 🚀 Start image=moyettes/eb
2026-02-19T23:24:05.9237860Z 🐳 docker pull image=moyettes/eb platform= username= forcePull=false
2026-02-19T23:24:05.9238013Z 🐳 docker pull moyettes/eb
2026-02-19T23:24:05.9244249Z Image exists? true
2026-02-19T23:24:05.9317969Z Cleaning up network for job build-and-release, and network name is: GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release-build-and-release-network
2026-02-19T23:24:06.7060080Z 🐳 docker create image=moyettes/eb platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release-build-and-release-network"
2026-02-19T23:24:06.7176022Z Custom container.Config from options ==> &{Hostname: Domainname: User: AttachStdin:false AttachStdout:true AttachStderr:true ExposedPorts:map[] Tty:false OpenStdin:false StdinOnce:false Env:[] Cmd:[] Healthcheck:<nil> ArgsEscaped:false Image: Volumes:map[] WorkingDir: Entrypoint:[] NetworkDisabled:false MacAddress: OnBuild:[] Labels:map[] StopSignal: StopTimeout:<nil> Shell:[]}
2026-02-19T23:24:06.7176403Z Merged container.Config ==> &{Hostname: Domainname: User: AttachStdin:false AttachStdout:true AttachStderr:true ExposedPorts:map[] Tty:false OpenStdin:false StdinOnce:false Env:[RUNNER_TOOL_CACHE=/opt/hostedtoolcache RUNNER_OS=Linux RUNNER_ARCH=X64 RUNNER_TEMP=/tmp LANG=C.UTF-8] Cmd:[] Healthcheck:<nil> ArgsEscaped:false Image:moyettes/eb Volumes:map[] WorkingDir:/workspace/Moyettes/DiscordClone Entrypoint:[/bin/sleep 10800] NetworkDisabled:false MacAddress: OnBuild:[] Labels:map[] StopSignal: StopTimeout:<nil> Shell:[]}
2026-02-19T23:24:06.7176744Z Custom container.HostConfig from options ==> &{Binds:[] ContainerIDFile: LogConfig:{Type: Config:map[]} NetworkMode:GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release-build-and-release-network PortBindings:map[] RestartPolicy:{Name:no MaximumRetryCount:0} AutoRemove:false VolumeDriver: VolumesFrom:[] ConsoleSize:[0 0] Annotations:map[] CapAdd:[] CapDrop:[] CgroupnsMode: DNS:[] DNSOptions:[] DNSSearch:[] ExtraHosts:[] GroupAdd:[] IpcMode: Cgroup: Links:[] OomScoreAdj:0 PidMode: Privileged:false PublishAllPorts:false ReadonlyRootfs:false SecurityOpt:[] StorageOpt:map[] Tmpfs:map[] UTSMode: UsernsMode: ShmSize:0 Sysctls:map[] Runtime: Isolation: Resources:{CPUShares:0 Memory:0 NanoCPUs:0 CgroupParent: BlkioWeight:0 BlkioWeightDevice:[] BlkioDeviceReadBps:[] BlkioDeviceWriteBps:[] BlkioDeviceReadIOps:[] BlkioDeviceWriteIOps:[] CPUPeriod:0 CPUQuota:0 CPURealtimePeriod:0 CPURealtimeRuntime:0 CpusetCpus: CpusetMems: Devices:[] DeviceCgroupRules:[] DeviceRequests:[] KernelMemory:0 KernelMemoryTCP:0 MemoryReservation:0 MemorySwap:0 MemorySwappiness:0xc00021e3c8 OomKillDisable:0xc00021e2c3 PidsLimit:0xc00021e428 Ulimits:[] CPUCount:0 CPUPercent:0 IOMaximumIOps:0 IOMaximumBandwidth:0} Mounts:[] MaskedPaths:[] ReadonlyPaths:[] Init:<nil>}
2026-02-19T23:24:06.7177114Z --network and --net in the options will be ignored.
2026-02-19T23:24:06.7177346Z Merged container.HostConfig ==> &{Binds:[/var/run/docker.sock:/var/run/docker.sock] ContainerIDFile: LogConfig:{Type: Config:map[]} NetworkMode:GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release-build-and-release-network PortBindings:map[] RestartPolicy:{Name:no MaximumRetryCount:0} AutoRemove:true VolumeDriver: VolumesFrom:[] ConsoleSize:[0 0] Annotations:map[] CapAdd:[] CapDrop:[] CgroupnsMode: DNS:[] DNSOptions:[] DNSSearch:[] ExtraHosts:[] GroupAdd:[] IpcMode: Cgroup: Links:[] OomScoreAdj:0 PidMode: Privileged:false PublishAllPorts:false ReadonlyRootfs:false SecurityOpt:[] StorageOpt:map[] Tmpfs:map[] UTSMode: UsernsMode: ShmSize:0 Sysctls:map[] Runtime: Isolation: Resources:{CPUShares:0 Memory:0 NanoCPUs:0 CgroupParent: BlkioWeight:0 BlkioWeightDevice:[] BlkioDeviceReadBps:[] BlkioDeviceWriteBps:[] BlkioDeviceReadIOps:[] BlkioDeviceWriteIOps:[] CPUPeriod:0 CPUQuota:0 CPURealtimePeriod:0 CPURealtimeRuntime:0 CpusetCpus: CpusetMems: Devices:[] DeviceCgroupRules:[] DeviceRequests:[] KernelMemory:0 KernelMemoryTCP:0 MemoryReservation:0 MemorySwap:0 MemorySwappiness:0xc00021e3c8 OomKillDisable:0xc00021e2c3 PidsLimit:0xc00021e428 Ulimits:[] CPUCount:0 CPUPercent:0 IOMaximumIOps:0 IOMaximumBandwidth:0} Mounts:[{Type:volume Source:GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release-env Target:/var/run/act ReadOnly:false Consistency: BindOptions:<nil> VolumeOptions:<nil> TmpfsOptions:<nil> ClusterOptions:<nil>} {Type:volume Source:GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release Target:/workspace/Moyettes/DiscordClone ReadOnly:false Consistency: BindOptions:<nil> VolumeOptions:<nil> TmpfsOptions:<nil> ClusterOptions:<nil>} {Type:volume Source:act-toolcache Target:/opt/hostedtoolcache ReadOnly:false Consistency: BindOptions:<nil> VolumeOptions:<nil> TmpfsOptions:<nil> ClusterOptions:<nil>}] MaskedPaths:[] ReadonlyPaths:[] Init:<nil>}
2026-02-19T23:24:08.2297350Z Created container name=GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release id=fb4d794ca0c0f950b0082779480dd6e139f2fc190f0d8ff5400e4acc32825725 from image moyettes/eb (platform: )
2026-02-19T23:24:08.2297909Z ENV ==> [RUNNER_TOOL_CACHE=/opt/hostedtoolcache RUNNER_OS=Linux RUNNER_ARCH=X64 RUNNER_TEMP=/tmp LANG=C.UTF-8]
2026-02-19T23:24:08.2298029Z 🐳 docker run image=moyettes/eb platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release-build-and-release-network"
2026-02-19T23:24:08.2298148Z Starting container: fb4d794ca0c0f950b0082779480dd6e139f2fc190f0d8ff5400e4acc32825725
2026-02-19T23:24:10.9876565Z Started container: fb4d794ca0c0f950b0082779480dd6e139f2fc190f0d8ff5400e4acc32825725
2026-02-19T23:24:11.0725002Z Writing entry to tarball workflow/event.json len:5040
2026-02-19T23:24:11.0725422Z Writing entry to tarball workflow/envs.txt len:0
2026-02-19T23:24:11.0725543Z Extracting content to '/var/run/act/'
2026-02-19T23:24:11.0803004Z ☁ git clone 'https://github.com/actions/checkout' # ref=v4
2026-02-19T23:24:11.0803223Z cloning https://github.com/actions/checkout to /root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab
2026-02-19T23:24:11.4066867Z Non-terminating error while running 'git clone': some refs were not updated
2026-02-19T23:24:11.4111346Z ☁ git clone 'https://github.com/actions/cache' # ref=v4
2026-02-19T23:24:11.4111597Z cloning https://github.com/actions/cache to /root/.cache/act/6b4e4eb40e21c1bd02cb00a273f4d79af7c42205c1390e4e65c594ecd7a3696e
2026-02-19T23:24:11.5867237Z Non-terminating error while running 'git clone': some refs were not updated
2026-02-19T23:24:11.5963227Z evaluating expression ''
2026-02-19T23:24:11.5963582Z expression '' evaluated to 'true'
2026-02-19T23:24:11.5963688Z ⭐ Run Main Checkout repository
2026-02-19T23:24:11.5963833Z Writing entry to tarball workflow/outputcmd.txt len:0
2026-02-19T23:24:11.5963986Z Writing entry to tarball workflow/statecmd.txt len:0
2026-02-19T23:24:11.5964081Z Writing entry to tarball workflow/pathcmd.txt len:0
2026-02-19T23:24:11.5964174Z Writing entry to tarball workflow/envs.txt len:0
2026-02-19T23:24:11.5964261Z Writing entry to tarball workflow/SUMMARY.md len:0
2026-02-19T23:24:11.5964359Z Extracting content to '/var/run/act'
2026-02-19T23:24:11.6005320Z expression '${{ github.repository }}' rewritten to 'format('{0}', github.repository)'
2026-02-19T23:24:11.6005524Z evaluating expression 'format('{0}', github.repository)'
2026-02-19T23:24:11.6005793Z expression 'format('{0}', github.repository)' evaluated to '%!t(string=Moyettes/DiscordClone)'
2026-02-19T23:24:11.6006138Z expression '${{ github.token }}' rewritten to 'format('{0}', github.token)'
2026-02-19T23:24:11.6006222Z evaluating expression 'format('{0}', github.token)'
2026-02-19T23:24:11.6006381Z expression 'format('{0}', github.token)' evaluated to '%!t(string=***)'
2026-02-19T23:24:11.6006615Z type=remote-action actionDir=/root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab actionPath= workdir=/workspace/Moyettes/DiscordClone actionCacheDir=/root/.cache/act actionName=c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab containerActionDir=/var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab
2026-02-19T23:24:11.6006765Z /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab
2026-02-19T23:24:11.6006916Z 🐳 docker cp src=/root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/ dst=/var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/
2026-02-19T23:24:11.6008002Z Writing tarball /tmp/act2362059074 from /root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/
2026-02-19T23:24:11.6008130Z Stripping prefix:/root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/ src:/root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/
2026-02-19T23:24:11.6358670Z Extracting content from '/tmp/act2362059074' to '/var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/'
2026-02-19T23:24:11.6774455Z executing remote job container: [node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]
2026-02-19T23:24:11.6774817Z 🐳 docker exec cmd=[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js] user= workdir=
2026-02-19T23:24:11.6774900Z Exec command '[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]'
2026-02-19T23:24:11.6775101Z Working directory '/workspace/Moyettes/DiscordClone'
2026-02-19T23:24:11.8398531Z ::add-matcher::/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/problem-matcher.json
2026-02-19T23:24:11.8398627Z ::add-matcher::/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/problem-matcher.json
2026-02-19T23:24:11.8400291Z Syncing repository: Moyettes/DiscordClone
2026-02-19T23:24:11.8401537Z ::group::Getting Git version info
2026-02-19T23:24:11.8401710Z Working directory is '/workspace/Moyettes/DiscordClone'
2026-02-19T23:24:11.8415705Z [command]/usr/bin/git version
2026-02-19T23:24:11.8444326Z git version 2.34.1
2026-02-19T23:24:11.8453546Z ::endgroup::
2026-02-19T23:24:11.8458519Z Copying '/root/.gitconfig' to '/tmp/0c1f2529-fbcc-4c5f-966e-c509befb67b3/.gitconfig'
2026-02-19T23:24:11.8461854Z Temporarily overriding HOME='/tmp/0c1f2529-fbcc-4c5f-966e-c509befb67b3' before making global git config changes
2026-02-19T23:24:11.8461924Z Adding repository directory to the temporary git global config as a safe directory
2026-02-19T23:24:11.8463709Z [command]/usr/bin/git config --global --add safe.directory /workspace/Moyettes/DiscordClone
2026-02-19T23:24:11.8482036Z Deleting the contents of '/workspace/Moyettes/DiscordClone'
2026-02-19T23:24:11.8483461Z ::group::Initializing the repository
2026-02-19T23:24:11.8484930Z [command]/usr/bin/git init /workspace/Moyettes/DiscordClone
2026-02-19T23:24:11.8505120Z hint: Using 'master' as the name for the initial branch. This default branch name
2026-02-19T23:24:11.8505325Z hint: is subject to change. To configure the initial branch name to use in all
2026-02-19T23:24:11.8505442Z hint: of your new repositories, which will suppress this warning, call:
2026-02-19T23:24:11.8505545Z hint:
2026-02-19T23:24:11.8505658Z hint: git config --global init.defaultBranch <name>
2026-02-19T23:24:11.8505737Z hint:
2026-02-19T23:24:11.8505820Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2026-02-19T23:24:11.8505899Z hint: 'development'. The just-created branch can be renamed via this command:
2026-02-19T23:24:11.8505983Z hint:
2026-02-19T23:24:11.8506062Z hint: git branch -m <name>
2026-02-19T23:24:11.8508155Z Initialized empty Git repository in /workspace/Moyettes/DiscordClone/.git/
2026-02-19T23:24:11.8516550Z [command]/usr/bin/git remote add origin http://192.168.125.15:4000/Moyettes/DiscordClone
2026-02-19T23:24:11.8535537Z ::endgroup::
2026-02-19T23:24:11.8535670Z ::group::Disabling automatic garbage collection
2026-02-19T23:24:11.8538858Z [command]/usr/bin/git config --local gc.auto 0
2026-02-19T23:24:11.8556217Z ::endgroup::
2026-02-19T23:24:11.8556321Z ::group::Setting up auth
2026-02-19T23:24:11.8561436Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-02-19T23:24:11.8579869Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-02-19T23:24:11.8910193Z [command]/usr/bin/git config --local --name-only --get-regexp http\.http\:\/\/192\.168\.125\.15\:4000\/\.extraheader
2026-02-19T23:24:11.8928045Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.http\:\/\/192\.168\.125\.15\:4000\/\.extraheader' && git config --local --unset-all 'http.http://192.168.125.15:4000/.extraheader' || :"
2026-02-19T23:24:11.9079295Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-02-19T23:24:11.9096896Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-02-19T23:24:11.9248317Z [command]/usr/bin/git config --local http.http://192.168.125.15:4000/.extraheader AUTHORIZATION: basic ***
2026-02-19T23:24:11.9269692Z ::endgroup::
2026-02-19T23:24:11.9269862Z ::group::Fetching the repository
2026-02-19T23:24:11.9275217Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +10fa3c71ac8f18b0a16b8731ad35bd5cff84e800:refs/remotes/origin/main
2026-02-19T23:24:14.4237389Z From http://192.168.125.15:4000/Moyettes/DiscordClone
2026-02-19T23:24:14.4237734Z * [new ref] 10fa3c71ac8f18b0a16b8731ad35bd5cff84e800 -> origin/main
2026-02-19T23:24:14.4250617Z ::endgroup::
2026-02-19T23:24:14.4250720Z ::group::Determining the checkout info
2026-02-19T23:24:14.4252376Z ::endgroup::
2026-02-19T23:24:14.4260146Z [command]/usr/bin/git sparse-checkout disable
2026-02-19T23:24:14.4282440Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-02-19T23:24:14.4299295Z ::group::Checking out the ref
2026-02-19T23:24:14.4301480Z [command]/usr/bin/git checkout --progress --force -B main refs/remotes/origin/main
2026-02-19T23:24:14.5326124Z Switched to a new branch 'main'
2026-02-19T23:24:14.5326529Z Branch 'main' set up to track remote branch 'main' from 'origin'.
2026-02-19T23:24:14.5331782Z ::endgroup::
2026-02-19T23:24:14.5358689Z [command]/usr/bin/git log -1 --format=%H
2026-02-19T23:24:14.5373357Z 10fa3c71ac8f18b0a16b8731ad35bd5cff84e800
2026-02-19T23:24:14.5382007Z ::remove-matcher owner=checkout-git::
2026-02-19T23:24:15.7443469Z (node:217) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-02-19T23:24:15.7443558Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-02-19T23:24:35.7674268Z ::warning::Failed to restore: getCacheEntry failed: Request timeout: /_apis/artifactcache/cache?keys=npm-electron-18e69dad087a354861f7a31cdbf5e394b4417d2861db13b931a51501b26a5307%252Cnpm-electron-&version=f2531268ab9c19c75ce7b3eb23cc11c7f69fd3cf796834d4881591e430a373ff
2026-02-19T23:24:35.7675618Z Cache not found for input keys: npm-electron-18e69dad087a354861f7a31cdbf5e394b4417d2861db13b931a51501b26a5307, npm-electron-
2026-02-19T23:24:36.7248788Z npm warn deprecated tar@6.2.1: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
2026-02-19T23:24:36.9687963Z npm warn deprecated npmlog@6.0.2: This package is no longer supported.
2026-02-19T23:24:37.1738113Z npm warn deprecated lodash.isequal@4.5.0: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
2026-02-19T23:24:37.2628099Z npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
2026-02-19T23:24:37.3378623Z npm warn deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
2026-02-19T23:24:37.3570525Z npm warn deprecated gauge@4.0.4: This package is no longer supported.
2026-02-19T23:24:37.6382629Z npm warn deprecated boolean@3.2.0: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
2026-02-19T23:24:37.6674483Z npm warn deprecated are-we-there-yet@3.0.1: This package is no longer supported.
2026-02-19T23:24:37.9710947Z npm warn deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
2026-02-19T23:24:38.5390699Z npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
2026-02-19T23:24:38.5482060Z npm warn deprecated glob@9.3.5: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
2026-02-19T23:24:38.6359696Z npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
2026-02-19T23:24:38.6488763Z npm warn deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
2026-02-19T23:24:38.6489818Z npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
2026-02-19T23:24:38.6633474Z npm warn deprecated glob@8.1.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
2026-02-19T23:24:38.6810448Z npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
2026-02-19T23:25:24.1987388Z
2026-02-19T23:25:24.1987849Z added 679 packages, and audited 685 packages in 48s
2026-02-19T23:25:24.1987926Z
2026-02-19T23:25:24.1988019Z 183 packages are looking for funding
2026-02-19T23:25:24.1988063Z run `npm fund` for details
2026-02-19T23:25:24.2223648Z
2026-02-19T23:25:24.2223853Z 30 vulnerabilities (5 moderate, 25 high)
2026-02-19T23:25:24.2223920Z
2026-02-19T23:25:24.2223966Z To address issues that do not require attention, run:
2026-02-19T23:25:24.2224035Z npm audit fix
2026-02-19T23:25:24.2224099Z
2026-02-19T23:25:24.2224135Z To address all issues (including breaking changes), run:
2026-02-19T23:25:24.2224216Z npm audit fix --force
2026-02-19T23:25:24.2224256Z
2026-02-19T23:25:24.2224326Z Run `npm audit` for details.
2026-02-19T23:25:24.2337238Z --- app-builder diagnostics ---
2026-02-19T23:25:24.2348355Z -rwxr-xr-x 1 root root 18116608 Feb 19 23:25 node_modules/app-builder-bin/linux/x64/app-builder
2026-02-19T23:25:24.2409995Z not a dynamic executable
2026-02-19T23:25:24.2437692Z 3.5.10
2026-02-19T23:25:24.2544089Z 3.5.10
2026-02-19T23:25:24.4526233Z
2026-02-19T23:25:24.4526701Z > @***/electron@1.0.26 build
2026-02-19T23:25:24.4526775Z > vite build
2026-02-19T23:25:24.4526821Z
2026-02-19T23:25:24.5642016Z vite v7.3.1 building client environment for production...
2026-02-19T23:25:24.6002319Z transforming...
2026-02-19T23:25:24.9810089Z [plugin vite:esbuild] ../../packages/shared/src/components/ScreenShareModal.jsx: Duplicate key "width" in object literal
2026-02-19T23:25:24.9810527Z 104 | }}
2026-02-19T23:25:24.9810630Z 105 | >
2026-02-19T23:25:24.9810707Z 106 | ...le={{ position: 'relative', width: '100%', height: '250px', width: '450px', borderRadius: '8px', overflow: 'hidden...
2026-02-19T23:25:24.9810805Z | ^
2026-02-19T23:25:24.9810903Z 107 | {/* Thumbnail/Placeholder */}
2026-02-19T23:25:24.9810980Z 108 | {item.thumbnail ? (
2026-02-19T23:25:24.9811053Z 
2026-02-19T23:25:24.9827227Z The glob option "as" has been deprecated in favour of "query". Please update `as: 'url'` to `query: '?url', import: 'default'`.
2026-02-19T23:25:26.9352560Z ✓ 4655 modules transformed.
2026-02-19T23:25:27.4907433Z rendering chunks...
2026-02-19T23:25:27.6019511Z computing gzip size...
2026-02-19T23:25:27.7469653Z dist-react/index.html  0.63 kB │ gzip: 0.38 kB
2026-02-19T23:25:27.7469978Z dist-react/assets/woman_teacher-CXwESYU3.svg  4.10 kB │ gzip: 1.60 kB
2026-02-19T23:25:27.7470097Z dist-react/assets/woman_teacher_tone2-DWJ6rjnf.svg  4.10 kB │ gzip: 1.60 kB
2026-02-19T23:25:27.7470177Z dist-react/assets/woman_teacher_tone3-BvnMOsM7.svg  4.10 kB │ gzip: 1.60 kB
2026-02-19T23:25:27.7470246Z dist-react/assets/woman_teacher_tone4-C9bkU449.svg  4.10 kB │ gzip: 1.60 kB
2026-02-19T23:25:27.7470305Z dist-react/assets/bubble_tea-Cy1d5egt.svg  4.10 kB │ gzip: 1.92 kB
2026-02-19T23:25:27.7471716Z dist-react/assets/flag_gq-B3TFx5qI.svg  4.11 kB │ gzip: 1.68 kB
2026-02-19T23:25:27.7471945Z dist-react/assets/person_in_lotus_position-9VFgclqE.svg  4.11 kB │ gzip: 1.73 kB
2026-02-19T23:25:27.7472057Z dist-react/assets/person_in_lotus_position_tone3-DUxbd8tQ.svg  4.11 kB │ gzip: 1.73 kB
2026-02-19T23:25:27.7472148Z dist-react/assets/person_in_lotus_position_tone2-Dzm_xqT2.svg  4.11 kB │ gzip: 1.73 kB
2026-02-19T23:25:27.7472233Z dist-react/assets/person_in_lotus_position_tone1-MK18jaNb.svg  4.11 kB │ gzip: 1.73 kB
2026-02-19T23:25:27.7472318Z dist-react/assets/person_in_lotus_position_tone5-CinKf4VL.svg  4.11 kB │ gzip: 1.72 kB
2026-02-19T23:25:27.7472424Z dist-react/assets/person_in_lotus_position_tone4-BtjpxNGo.svg  4.11 kB │ gzip: 1.72 kB
2026-02-19T23:25:27.7472512Z dist-react/assets/man_feeding_baby_tone5-DOWKsCGX.svg  4.11 kB │ gzip: 1.83 kB
2026-02-19T23:25:27.7472597Z dist-react/assets/man_feeding_baby-BLUtslbF.svg  4.13 kB │ gzip: 1.83 kB
2026-02-19T23:25:27.7472700Z dist-react/assets/man_feeding_baby_tone1-lg4dBAV2.svg  4.13 kB │ gzip: 1.83 kB
2026-02-19T23:25:27.7472785Z dist-react/assets/man_feeding_baby_tone2-BuF25R9x.svg  4.13 kB │ gzip: 1.83 kB
2026-02-19T23:25:27.7472880Z dist-react/assets/man_feeding_baby_tone3-DEYxzqY-.svg  4.13 kB │ gzip: 1.83 kB
2026-02-19T23:25:27.7472974Z dist-react/assets/man_feeding_baby_tone4-IRS8MZPe.svg  4.13 kB │ gzip: 1.83 kB
2026-02-19T23:25:27.7473056Z dist-react/assets/woman_zombie-Cn4gQ0af.svg  4.15 kB │ gzip: 1.73 kB
2026-02-19T23:25:27.7473167Z dist-react/assets/hiking_boot-CPXD60gE.svg  4.17 kB │ gzip: 1.76 kB
2026-02-19T23:25:27.7473258Z dist-react/assets/japanese_ogre-BsqNvmIl.svg  4.22 kB │ gzip: 1.85 kB
2026-02-19T23:25:27.7473347Z dist-react/assets/woman_police_officer_tone5-CuQMgf5h.svg  4.23 kB │ gzip: 1.72 kB
2026-02-19T23:25:27.7473440Z dist-react/assets/woman_police_officer-D6jKOTyC.svg  4.25 kB │ gzip: 1.73 kB
2026-02-19T23:25:27.7473529Z dist-react/assets/woman_police_officer_tone1-A8sdhmvt.svg  4.25 kB │ gzip: 1.73 kB
2026-02-19T23:25:27.7473612Z dist-react/assets/woman_police_officer_tone2-DaHNn5-D.svg  4.25 kB │ gzip: 1.73 kB
2026-02-19T23:25:27.7473707Z dist-react/assets/woman_police_officer_tone3-DXZ2OdUI.svg  4.25 kB │ gzip: 1.73 kB
2026-02-19T23:25:27.7473793Z dist-react/assets/woman_police_officer_tone4--Oe8w2XD.svg  4.25 kB │ gzip: 1.72 kB
2026-02-19T23:25:27.7473892Z dist-react/assets/ferris_wheel-DvW0t9g3.svg  4.25 kB │ gzip: 1.19 kB
2026-02-19T23:25:27.7473974Z dist-react/assets/man_teacher_tone5-Bk9uZHaS.svg  4.26 kB │ gzip: 1.75 kB
2026-02-19T23:25:27.7474065Z dist-react/assets/man_teacher-BRypTuYs.svg  4.27 kB │ gzip: 1.75 kB
2026-02-19T23:25:27.7474155Z dist-react/assets/man_teacher_tone1-jNO2AiRD.svg  4.27 kB │ gzip: 1.75 kB
2026-02-19T23:25:27.7474241Z dist-react/assets/man_teacher_tone2-rQoIFfFz.svg  4.27 kB │ gzip: 1.75 kB
2026-02-19T23:25:27.7474325Z dist-react/assets/man_teacher_tone3-BEE8k6p5.svg  4.27 kB │ gzip: 1.75 kB
2026-02-19T23:25:27.7474420Z dist-react/assets/man_teacher_tone4-C4j4RIq3.svg  4.27 kB │ gzip: 1.74 kB
2026-02-19T23:25:27.7474695Z dist-react/assets/sari-BSRA0_R3.svg  4.27 kB │ gzip: 1.77 kB
2026-02-19T23:25:27.7474787Z dist-react/assets/gloves-BcY_RgAR.svg  4.31 kB │ gzip: 1.62 kB
2026-02-19T23:25:27.7474868Z dist-react/assets/moon_cake-BQr_VKRq.svg  4.31 kB │ gzip: 1.94 kB
2026-02-19T23:25:27.7474950Z dist-react/assets/man_zombie-D5T1AZ12.svg  4.34 kB │ gzip: 1.78 kB
2026-02-19T23:25:27.7475028Z dist-react/assets/woman_surfing_tone1-Mj4OdRWf.svg  4.35 kB │ gzip: 1.94 kB
2026-02-19T23:25:27.7475127Z dist-react/assets/woman_surfing-22i7hQgf.svg  4.38 kB │ gzip: 1.95 kB
2026-02-19T23:25:27.7475217Z dist-react/assets/woman_surfing_tone3-D1NUtDA8.svg  4.38 kB │ gzip: 1.95 kB
2026-02-19T23:25:27.7475297Z dist-react/assets/woman_surfing_tone2-BcJfdMyX.svg  4.38 kB │ gzip: 1.95 kB
2026-02-19T23:25:27.7475378Z dist-react/assets/woman_surfing_tone4-ByYdFJZp.svg  4.38 kB │ gzip: 1.95 kB
2026-02-19T23:25:27.7475460Z dist-react/assets/woman_surfing_tone5-CrN9a9WS.svg  4.38 kB │ gzip: 1.95 kB
2026-02-19T23:25:27.7475545Z dist-react/assets/person_with_probing_cane-DRcmbgmz.svg  4.38 kB │ gzip: 1.91 kB
2026-02-19T23:25:27.7475629Z dist-react/assets/person_with_probing_cane_tone2-CY2wYkQb.svg  4.38 kB │ gzip: 1.91 kB
2026-02-19T23:25:27.7475716Z dist-react/assets/person_with_probing_cane_tone1-zKjrapc7.svg  4.38 kB │ gzip: 1.90 kB
2026-02-19T23:25:27.7475805Z dist-react/assets/person_with_probing_cane_tone3-CdJAKQXv.svg  4.38 kB │ gzip: 1.91 kB
2026-02-19T23:25:27.7475893Z dist-react/assets/person_with_probing_cane_tone4-DXYc5Dlc.svg  4.38 kB │ gzip: 1.91 kB
2026-02-19T23:25:27.7475988Z dist-react/assets/person_with_probing_cane_tone5-DFAMgo57.svg  4.38 kB │ gzip: 1.91 kB
2026-02-19T23:25:27.7476072Z dist-react/assets/skier-BTSq18N5.svg  4.39 kB │ gzip: 1.75 kB
2026-02-19T23:25:27.7476159Z dist-react/assets/woman_singer_tone5-Co-5wXNK.svg  4.40 kB │ gzip: 1.84 kB
2026-02-19T23:25:27.7476250Z dist-react/assets/woman_singer_tone1-DbW2lM_k.svg  4.42 kB │ gzip: 1.85 kB
2026-02-19T23:25:27.7476334Z dist-react/assets/man_with_probing_cane-BarJlRlV.svg  4.45 kB │ gzip: 1.94 kB
2026-02-19T23:25:27.7476417Z dist-react/assets/man_with_probing_cane_tone1-D50RTI5B.svg  4.45 kB │ gzip: 1.94 kB
2026-02-19T23:25:27.7476495Z dist-react/assets/man_with_probing_cane_tone2-CIeZuoUa.svg  4.45 kB │ gzip: 1.94 kB
2026-02-19T23:25:27.7476575Z dist-react/assets/man_with_probing_cane_tone3-GUZ14VpU.svg  4.45 kB │ gzip: 1.94 kB
2026-02-19T23:25:27.7476652Z dist-react/assets/man_with_probing_cane_tone5-BCpRNGU4.svg  4.45 kB │ gzip: 1.94 kB
2026-02-19T23:25:27.7476742Z dist-react/assets/man_with_probing_cane_tone4-Bd6iA8-d.svg  4.45 kB │ gzip: 1.94 kB
2026-02-19T23:25:27.7476822Z dist-react/assets/woman_singer-skPaDBsj.svg  4.45 kB │ gzip: 1.84 kB
2026-02-19T23:25:27.7476905Z dist-react/assets/woman_singer_tone2-Bc-xqa4S.svg  4.45 kB │ gzip: 1.85 kB
2026-02-19T23:25:27.7476984Z dist-react/assets/woman_singer_tone3-CNRJeino.svg  4.45 kB │ gzip: 1.85 kB
2026-02-19T23:25:27.7477068Z dist-react/assets/woman_singer_tone4-CEfcWjkD.svg  4.45 kB │ gzip: 1.84 kB
2026-02-19T23:25:27.7477167Z dist-react/assets/flag_sz-CsAySmAn.svg  4.46 kB │ gzip: 1.66 kB
2026-02-19T23:25:27.7477255Z dist-react/assets/snowman2-CeWFCRvE.svg  4.48 kB │ gzip: 1.15 kB
2026-02-19T23:25:27.7477348Z dist-react/assets/man_surfing-fqnQ3hm1.svg  4.49 kB │ gzip: 1.97 kB
2026-02-19T23:25:27.7477432Z dist-react/assets/man_surfing_tone1-BeC3CjNB.svg  4.49 kB │ gzip: 1.96 kB
2026-02-19T23:25:27.7477522Z dist-react/assets/man_surfing_tone2-CDUKGUjg.svg  4.49 kB │ gzip: 1.97 kB
2026-02-19T23:25:27.7477608Z dist-react/assets/man_surfing_tone4-PI8ASA2j.svg  4.49 kB │ gzip: 1.97 kB
2026-02-19T23:25:27.7477869Z dist-react/assets/man_surfing_tone3-Dt-HUBR5.svg  4.49 kB │ gzip: 1.97 kB
2026-02-19T23:25:27.7477964Z dist-react/assets/man_surfing_tone5-CyvTB2HT.svg  4.49 kB │ gzip: 1.97 kB
2026-02-19T23:25:27.7478049Z dist-react/assets/motorized_wheelchair-DYMoavTH.svg  4.50 kB │ gzip: 1.63 kB
2026-02-19T23:25:27.7478155Z dist-react/assets/woman_feeding_baby_tone5-B6CmkSrw.svg  4.54 kB │ gzip: 2.01 kB
2026-02-19T23:25:27.7478248Z dist-react/assets/flag_ht-nORDdDQL.svg  4.54 kB │ gzip: 1.88 kB
2026-02-19T23:25:27.7478335Z dist-react/assets/woman_feeding_baby-p-8aPRtV.svg  4.56 kB │ gzip: 2.01 kB
2026-02-19T23:25:27.7478423Z dist-react/assets/woman_feeding_baby_tone1-BezQI8D_.svg  4.56 kB │ gzip: 2.01 kB
2026-02-19T23:25:27.7478501Z dist-react/assets/woman_feeding_baby_tone2-CwnQLRQK.svg  4.56 kB │ gzip: 2.01 kB
2026-02-19T23:25:27.7478592Z dist-react/assets/woman_feeding_baby_tone4-DVay5Top.svg  4.56 kB │ gzip: 2.01 kB
2026-02-19T23:25:27.7478683Z dist-react/assets/woman_feeding_baby_tone3-DlgTa1f-.svg  4.56 kB │ gzip: 2.01 kB
2026-02-19T23:25:27.7478765Z dist-react/assets/flag_ad-CYOJPtjR.svg  4.59 kB │ gzip: 1.79 kB
2026-02-19T23:25:27.7478857Z dist-react/assets/woman_with_probing_cane_tone1-DuB7wHWP.svg  4.60 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7478950Z dist-react/assets/woman_with_probing_cane-DyJEphms.svg  4.60 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7479047Z dist-react/assets/woman_with_probing_cane_tone2-GEDDmrTN.svg  4.60 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7479132Z dist-react/assets/woman_with_probing_cane_tone3-CeM4gv4f.svg  4.60 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7479220Z dist-react/assets/woman_with_probing_cane_tone4-BaEnBpNy.svg  4.60 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7479310Z dist-react/assets/woman_with_probing_cane_tone5-DimRSWot.svg  4.60 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7479417Z dist-react/assets/person_surfing-DEOz-TJs.svg  4.62 kB │ gzip: 2.10 kB
2026-02-19T23:25:27.7479501Z dist-react/assets/person_surfing_tone1-B_kCGm1b.svg  4.62 kB │ gzip: 2.10 kB
2026-02-19T23:25:27.7479593Z dist-react/assets/person_surfing_tone3-C60a5Aj1.svg  4.62 kB │ gzip: 2.10 kB
2026-02-19T23:25:27.7479683Z dist-react/assets/person_surfing_tone5-CXXi5x8s.svg  4.62 kB │ gzip: 2.10 kB
2026-02-19T23:25:27.7480109Z dist-react/assets/person_surfing_tone2-D35jmuhN.svg  4.62 kB │ gzip: 2.11 kB
2026-02-19T23:25:27.7480203Z dist-react/assets/person_surfing_tone4-nIpCJUpE.svg  4.62 kB │ gzip: 2.10 kB
2026-02-19T23:25:27.7480280Z dist-react/assets/flag_tc-Dn_lC0KY.svg  4.72 kB │ gzip: 1.94 kB
2026-02-19T23:25:27.7480360Z dist-react/assets/person_golfing_tone1-DhUQwNf7.svg  4.72 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7480435Z dist-react/assets/person_golfing_tone2-BbPQ5nEE.svg  4.72 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7480517Z dist-react/assets/person_golfing-Mc5PuEC7.svg  4.72 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7480594Z dist-react/assets/person_golfing_tone4-DPEV2yNK.svg  4.72 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7480670Z dist-react/assets/person_golfing_tone5-Bgq3Ud_d.svg  4.72 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7480754Z dist-react/assets/person_golfing_tone3-CKRqu9yJ.svg  4.72 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7480836Z dist-react/assets/flag_ki-Ccc3Xi24.svg  4.77 kB │ gzip: 1.66 kB
2026-02-19T23:25:27.7480920Z dist-react/assets/flag_mo-PAf1BQIO.svg  4.77 kB │ gzip: 2.24 kB
2026-02-19T23:25:27.7481003Z dist-react/assets/flag_sh-CT89bJZi.svg  4.80 kB │ gzip: 1.67 kB
2026-02-19T23:25:27.7481090Z dist-react/assets/crab-D6qU1zIW.svg  4.87 kB │ gzip: 1.97 kB
2026-02-19T23:25:27.7481174Z dist-react/assets/couple-KSrP6fk0.svg  4.90 kB │ gzip: 2.04 kB
2026-02-19T23:25:27.7481262Z dist-react/assets/kiwi-BWXr7Vjo.svg  4.91 kB │ gzip: 2.27 kB
2026-02-19T23:25:27.7481355Z dist-react/assets/hedgehog-CMNxZzfp.svg  4.92 kB │ gzip: 1.82 kB
2026-02-19T23:25:27.7481435Z dist-react/assets/money_with_wings-BnGoAiwj.svg  4.95 kB │ gzip: 2.07 kB
2026-02-19T23:25:27.7481520Z dist-react/assets/flag_kg-D_P2G_Do.svg  4.98 kB │ gzip: 2.14 kB
2026-02-19T23:25:27.7481614Z dist-react/assets/maracas-kQiWhg0J.svg  4.99 kB │ gzip: 1.76 kB
2026-02-19T23:25:27.7481709Z dist-react/assets/x_ray-CWrdKTDm.svg  4.99 kB │ gzip: 2.37 kB
2026-02-19T23:25:27.7481795Z dist-react/assets/people_holding_hands-BRZihiu5.svg  5.03 kB │ gzip: 1.68 kB
2026-02-19T23:25:27.7481894Z dist-react/assets/butterfly-AxzpD-Pg.svg  5.04 kB │ gzip: 1.86 kB
2026-02-19T23:25:27.7481984Z dist-react/assets/flag_xk-D1vfCqOd.svg  5.08 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7482069Z dist-react/assets/flag_tm-_4vioey7.svg  5.13 kB │ gzip: 1.54 kB
2026-02-19T23:25:27.7482157Z dist-react/assets/two_men_holding_hands-BKJxHZb_.svg  5.15 kB │ gzip: 1.50 kB
2026-02-19T23:25:27.7482256Z dist-react/assets/seal-Djs0F0U5.svg  5.16 kB │ gzip: 2.18 kB
2026-02-19T23:25:27.7482345Z dist-react/assets/speak_no_evil-EoRZCJhS.svg  5.20 kB │ gzip: 2.27 kB
2026-02-19T23:25:27.7482432Z dist-react/assets/man_dancing-Dg-6O6t7.svg  5.22 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7482521Z dist-react/assets/man_dancing_tone1-XI7g5maV.svg  5.22 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7482612Z dist-react/assets/man_dancing_tone2-DBvANdsI.svg  5.22 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7482699Z dist-react/assets/man_dancing_tone3-BK7ka3J3.svg  5.22 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7482793Z dist-react/assets/man_dancing_tone4-D9FZRxV5.svg  5.22 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7482878Z dist-react/assets/man_dancing_tone5-CQh9niVO.svg  5.22 kB │ gzip: 2.00 kB
2026-02-19T23:25:27.7482966Z dist-react/assets/flag_pf-OA_PTTaZ.svg  5.22 kB │ gzip: 1.81 kB
2026-02-19T23:25:27.7483061Z dist-react/assets/pie-DZ6nmSau.svg  5.24 kB │ gzip: 1.98 kB
2026-02-19T23:25:27.7483154Z dist-react/assets/two_women_holding_hands-CnKtKnaZ.svg  5.29 kB │ gzip: 1.71 kB
2026-02-19T23:25:27.7483243Z dist-react/assets/brain-Czvux5Q4.svg  5.32 kB │ gzip: 2.48 kB
2026-02-19T23:25:27.7483331Z dist-react/assets/lacrosse-DK95k1kF.svg  5.33 kB │ gzip: 2.22 kB
2026-02-19T23:25:27.7483421Z dist-react/assets/see_no_evil-DnuksPIR.svg  5.42 kB │ gzip: 2.38 kB
2026-02-19T23:25:27.7483507Z dist-react/assets/flag_vi-vzZjsoBi.svg  5.43 kB │ gzip: 2.34 kB
2026-02-19T23:25:27.7483592Z dist-react/assets/dodo-CoZFlciJ.svg  5.44 kB │ gzip: 2.31 kB
2026-02-19T23:25:27.7483681Z dist-react/assets/flag_hk-CzNuCBPg.svg  5.46 kB │ gzip: 2.52 kB
2026-02-19T23:25:27.7483778Z dist-react/assets/spider_web-DPcv-q20.svg  5.50 kB │ gzip: 2.43 kB
2026-02-19T23:25:27.7483870Z dist-react/assets/flag_bl-BoaeaHPp.svg  5.58 kB │ gzip: 1.90 kB
2026-02-19T23:25:27.7483966Z dist-react/assets/flag_as-B43i20pO.svg  5.61 kB │ gzip: 2.39 kB
2026-02-19T23:25:27.7484054Z dist-react/assets/flag_gp-DW1UVBGw.svg  5.63 kB │ gzip: 2.05 kB
2026-02-19T23:25:27.7484137Z dist-react/assets/flag_ic-BrB5Xakj.svg  5.63 kB │ gzip: 2.24 kB
2026-02-19T23:25:27.7484234Z dist-react/assets/man_golfing-DhSLN6KQ.svg  5.64 kB │ gzip: 2.61 kB
2026-02-19T23:25:27.7484326Z dist-react/assets/man_golfing_tone1-DBE1f7b1.svg  5.64 kB │ gzip: 2.61 kB
2026-02-19T23:25:27.7484412Z dist-react/assets/man_golfing_tone2-CNmTGsfk.svg  5.64 kB │ gzip: 2.61 kB
2026-02-19T23:25:27.7484499Z dist-react/assets/man_golfing_tone3-vxj0o6sI.svg  5.64 kB │ gzip: 2.61 kB
2026-02-19T23:25:27.7484597Z dist-react/assets/man_golfing_tone4-CsGYmisz.svg  5.64 kB │ gzip: 2.61 kB
2026-02-19T23:25:27.7484689Z dist-react/assets/man_golfing_tone5-Cf_z4uyg.svg  5.64 kB │ gzip: 2.60 kB
2026-02-19T23:25:27.7484775Z dist-react/assets/flag_bm-CzSakp_Z.svg  5.67 kB │ gzip: 2.37 kB
2026-02-19T23:25:27.7484869Z dist-react/assets/map-BGXvLkiw.svg  5.68 kB │ gzip: 2.62 kB
2026-02-19T23:25:27.7484954Z dist-react/assets/people_wrestling-DjCLlDDS.svg  5.71 kB │ gzip: 2.48 kB
2026-02-19T23:25:27.7485040Z dist-react/assets/tamale-2biJGrAo.svg  5.74 kB │ gzip: 2.53 kB
2026-02-19T23:25:27.7485129Z dist-react/assets/men_wrestling-BNuLmHCV.svg  5.74 kB │ gzip: 2.47 kB
2026-02-19T23:25:27.7485214Z dist-react/assets/empty_nest-DGy7reBo.svg  5.79 kB │ gzip: 2.71 kB
2026-02-19T23:25:27.7485299Z dist-react/assets/worm-CxRJMG1n.svg  5.86 kB │ gzip: 2.77 kB
2026-02-19T23:25:27.7485398Z dist-react/assets/flag_bo-B7hNQ755.svg  5.91 kB │ gzip: 2.22 kB
2026-02-19T23:25:27.7485489Z dist-react/assets/face_in_clouds-DBzCKo8S.svg  5.94 kB │ gzip: 2.63 kB
2026-02-19T23:25:27.7485575Z dist-react/assets/women_wrestling-CARP3ZvF.svg  5.96 kB │ gzip: 2.59 kB
2026-02-19T23:25:27.7485660Z dist-react/assets/man_lifting_weights_tone5-cnCH-jDP.svg  6.00 kB │ gzip: 2.06 kB
2026-02-19T23:25:27.7485744Z dist-react/assets/man_lifting_weights-DkiBT0IO.svg  6.03 kB │ gzip: 2.07 kB
2026-02-19T23:25:27.7485839Z dist-react/assets/man_lifting_weights_tone1-DGilOf2d.svg  6.03 kB │ gzip: 2.06 kB
2026-02-19T23:25:27.7485932Z dist-react/assets/man_lifting_weights_tone2-CXUv2fBp.svg  6.03 kB │ gzip: 2.07 kB
2026-02-19T23:25:27.7486027Z dist-react/assets/man_lifting_weights_tone3-DhF3q93u.svg  6.03 kB │ gzip: 2.07 kB
2026-02-19T23:25:27.7486117Z dist-react/assets/man_lifting_weights_tone4-MLQqpJKZ.svg  6.03 kB │ gzip: 2.07 kB
2026-02-19T23:25:27.7486202Z dist-react/assets/flag_fj-B2-D6gPQ.svg  6.04 kB │ gzip: 2.64 kB
2026-02-19T23:25:27.7486287Z dist-react/assets/flag_pn-Bde7vecB.svg  6.05 kB │ gzip: 2.68 kB
2026-02-19T23:25:27.7486375Z dist-react/assets/flag_bt-COHVTZ6I.svg  6.06 kB │ gzip: 2.52 kB
2026-02-19T23:25:27.7486468Z dist-react/assets/person_doing_cartwheel_tone1-TBt_b-Oj.svg  6.07 kB │ gzip: 2.65 kB
2026-02-19T23:25:27.7486557Z dist-react/assets/person_doing_cartwheel-B6e7BEW_.svg  6.07 kB │ gzip: 2.65 kB
2026-02-19T23:25:27.7486649Z dist-react/assets/person_doing_cartwheel_tone3-BzmNF0vv.svg  6.07 kB │ gzip: 2.65 kB
2026-02-19T23:25:27.7486741Z dist-react/assets/person_doing_cartwheel_tone2-BR4ztGzg.svg  6.07 kB │ gzip: 2.65 kB
2026-02-19T23:25:27.7486826Z dist-react/assets/person_doing_cartwheel_tone5-BzNEt2oA.svg  6.07 kB │ gzip: 2.65 kB
2026-02-19T23:25:27.7486909Z dist-react/assets/person_doing_cartwheel_tone4-j074vq-9.svg  6.07 kB │ gzip: 2.65 kB
2026-02-19T23:25:27.7486994Z dist-react/assets/accordion-BPueGNgN.svg  6.07 kB │ gzip: 1.20 kB
2026-02-19T23:25:27.7487079Z dist-react/assets/lobster-Cfls8jg_.svg  6.07 kB │ gzip: 2.32 kB
2026-02-19T23:25:27.7487171Z dist-react/assets/volcano-Bh_Lqk9r.svg  6.14 kB │ gzip: 2.70 kB
2026-02-19T23:25:27.7487260Z dist-react/assets/man_cartwheeling-NFQt9ZB9.svg  6.17 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7487348Z dist-react/assets/man_cartwheeling_tone1-B3S_eUE1.svg  6.17 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7487439Z dist-react/assets/man_cartwheeling_tone2-CYBBI2iM.svg  6.17 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7487524Z dist-react/assets/man_cartwheeling_tone3-D2kqEChS.svg  6.17 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7487616Z dist-react/assets/man_cartwheeling_tone4-B96D58fZ.svg  6.17 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7487733Z dist-react/assets/man_cartwheeling_tone5-PFLWmq7Q.svg  6.17 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7487829Z dist-react/assets/flag_lb-DHr4ylgr.svg  6.19 kB │ gzip: 2.75 kB
2026-02-19T23:25:27.7487917Z dist-react/assets/man_playing_handball-C_yN7fGQ.svg  6.21 kB │ gzip: 2.62 kB
2026-02-19T23:25:27.7488010Z dist-react/assets/man_playing_handball_tone1-22QBgB92.svg  6.21 kB │ gzip: 2.62 kB
2026-02-19T23:25:27.7488098Z dist-react/assets/man_playing_handball_tone2-Bs8PtV12.svg  6.21 kB │ gzip: 2.62 kB
2026-02-19T23:25:27.7488182Z dist-react/assets/man_playing_handball_tone3-q-BDso_I.svg  6.21 kB │ gzip: 2.62 kB
2026-02-19T23:25:27.7488268Z dist-react/assets/man_playing_handball_tone5-DK-UJ5SH.svg  6.21 kB │ gzip: 2.62 kB
2026-02-19T23:25:27.7488357Z dist-react/assets/man_playing_handball_tone4-BUH96fLA.svg  6.21 kB │ gzip: 2.62 kB
2026-02-19T23:25:27.7488449Z dist-react/assets/flag_fk-1KKBtSFw.svg  6.22 kB │ gzip: 2.54 kB
2026-02-19T23:25:27.7488532Z dist-react/assets/flag_rs-CmpxaRIS.svg  6.23 kB │ gzip: 2.35 kB
2026-02-19T23:25:27.7488697Z dist-react/assets/cucumber-oVkPYVB9.svg  6.24 kB │ gzip: 2.01 kB
2026-02-19T23:25:27.7488813Z dist-react/assets/woman_lifting_weights_tone5-BJQrRdVE.svg  6.25 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7488910Z dist-react/assets/woman_lifting_weights-CsixMYFL.svg  6.28 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7489029Z dist-react/assets/woman_lifting_weights_tone2-P18Nfbuz.svg  6.28 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7489132Z dist-react/assets/woman_lifting_weights_tone3-C0gnGp49.svg  6.28 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7489243Z dist-react/assets/woman_lifting_weights_tone1-BpRsBk7z.svg  6.28 kB │ gzip: 2.15 kB
2026-02-19T23:25:27.7489332Z dist-react/assets/woman_lifting_weights_tone4-CQZmiYUl.svg  6.28 kB │ gzip: 2.16 kB
2026-02-19T23:25:27.7489424Z dist-react/assets/person_lifting_weights_tone5-DEciUSJH.svg  6.29 kB │ gzip: 2.20 kB
2026-02-19T23:25:27.7489514Z dist-react/assets/person_lifting_weights_tone1-CXfKAA0L.svg  6.30 kB │ gzip: 2.19 kB
2026-02-19T23:25:27.7489607Z dist-react/assets/person_lifting_weights_tone2-Dkw3-09P.svg  6.30 kB │ gzip: 2.20 kB
2026-02-19T23:25:27.7489700Z dist-react/assets/person_lifting_weights-Cn0dQ6qY.svg  6.30 kB │ gzip: 2.20 kB
2026-02-19T23:25:27.7489795Z dist-react/assets/person_lifting_weights_tone4-C62SuN24.svg  6.30 kB │ gzip: 2.20 kB
2026-02-19T23:25:27.7490347Z dist-react/assets/person_lifting_weights_tone3-3OqiHF7e.svg  6.30 kB │ gzip: 2.20 kB
2026-02-19T23:25:27.7490442Z dist-react/assets/women_with_bunny_ears_partying-CKr9TLic.svg  6.30 kB │ gzip: 1.68 kB
2026-02-19T23:25:27.7490537Z dist-react/assets/flag_sm-BYO1ASeM.svg  6.31 kB │ gzip: 2.30 kB
2026-02-19T23:25:27.7490637Z dist-react/assets/coat-Cbu3wnI6.svg  6.35 kB │ gzip: 2.52 kB
2026-02-19T23:25:27.7490729Z dist-react/assets/woman_cartwheeling-tGvm940R.svg  6.37 kB │ gzip: 2.78 kB
2026-02-19T23:25:27.7490830Z dist-react/assets/woman_cartwheeling_tone1-fJFXi2hD.svg  6.37 kB │ gzip: 2.78 kB
2026-02-19T23:25:27.7490923Z dist-react/assets/woman_cartwheeling_tone2-C5lE2K9g.svg  6.37 kB │ gzip: 2.77 kB
2026-02-19T23:25:27.7491038Z dist-react/assets/woman_cartwheeling_tone3-BourpL3A.svg  6.37 kB │ gzip: 2.77 kB
2026-02-19T23:25:27.7491128Z dist-react/assets/woman_cartwheeling_tone4-CjyM2w54.svg  6.37 kB │ gzip: 2.77 kB
2026-02-19T23:25:27.7491221Z dist-react/assets/woman_cartwheeling_tone5-D-eW47Ua.svg  6.37 kB │ gzip: 2.77 kB
2026-02-19T23:25:27.7491331Z dist-react/assets/man_running_tone1-BbRoQah0.svg  6.37 kB │ gzip: 2.89 kB
2026-02-19T23:25:27.7491423Z dist-react/assets/man_running-Bp7fZpx0.svg  6.37 kB │ gzip: 2.89 kB
2026-02-19T23:25:27.7491518Z dist-react/assets/man_running_tone2-gBe1A9EP.svg  6.37 kB │ gzip: 2.89 kB
2026-02-19T23:25:27.7491610Z dist-react/assets/man_running_tone3-DfAx9qZO.svg  6.37 kB │ gzip: 2.88 kB
2026-02-19T23:25:27.7491703Z dist-react/assets/man_running_tone4-CeeXJkX_.svg  6.37 kB │ gzip: 2.88 kB
2026-02-19T23:25:27.7491791Z dist-react/assets/man_running_tone5-Do-aIXEX.svg  6.37 kB │ gzip: 2.88 kB
2026-02-19T23:25:27.7491875Z dist-react/assets/woman_playing_handball-fiyPmBDz.svg  6.42 kB │ gzip: 2.73 kB
2026-02-19T23:25:27.7491965Z dist-react/assets/woman_playing_handball_tone1-B_P42W0r.svg  6.42 kB │ gzip: 2.73 kB
2026-02-19T23:25:27.7492054Z dist-react/assets/woman_playing_handball_tone2-BtTxnxhZ.svg  6.42 kB │ gzip: 2.73 kB
2026-02-19T23:25:27.7492149Z dist-react/assets/woman_playing_handball_tone3-C7TXAAWV.svg  6.42 kB │ gzip: 2.72 kB
2026-02-19T23:25:27.7492235Z dist-react/assets/woman_playing_handball_tone4-CtCwRGCv.svg  6.42 kB │ gzip: 2.73 kB
2026-02-19T23:25:27.7492327Z dist-react/assets/woman_playing_handball_tone5-CmZlugee.svg  6.42 kB │ gzip: 2.73 kB
2026-02-19T23:25:27.7492413Z dist-react/assets/microbe-DHWlm4x3.svg  6.48 kB │ gzip: 2.82 kB
2026-02-19T23:25:27.7492502Z dist-react/assets/horse_racing-Cd5KXigQ.svg  6.50 kB │ gzip: 2.87 kB
2026-02-19T23:25:27.7492591Z dist-react/assets/horse_racing_tone1-BPFu29EM.svg  6.50 kB │ gzip: 2.87 kB
2026-02-19T23:25:27.7492683Z dist-react/assets/horse_racing_tone2-kHM6lt0G.svg  6.50 kB │ gzip: 2.88 kB
2026-02-19T23:25:27.7492779Z dist-react/assets/horse_racing_tone3-1prjoMK9.svg  6.50 kB │ gzip: 2.88 kB
2026-02-19T23:25:27.7492868Z dist-react/assets/horse_racing_tone4-DZVx5-VD.svg  6.50 kB │ gzip: 2.87 kB
2026-02-19T23:25:27.7492968Z dist-react/assets/horse_racing_tone5-DoKtvypB.svg  6.50 kB │ gzip: 2.88 kB
2026-02-19T23:25:27.7493057Z dist-react/assets/person_in_manual_wheelchair-B2ofcHYu.svg  6.50 kB │ gzip: 2.57 kB
2026-02-19T23:25:27.7493153Z dist-react/assets/person_in_manual_wheelchair_tone1-BrR0l2XR.svg  6.50 kB │ gzip: 2.57 kB
2026-02-19T23:25:27.7493242Z dist-react/assets/person_in_manual_wheelchair_tone2-DmJ1Zffk.svg  6.50 kB │ gzip: 2.57 kB
2026-02-19T23:25:27.7493334Z dist-react/assets/person_in_manual_wheelchair_tone3-Bt_5AaRy.svg  6.50 kB │ gzip: 2.57 kB
2026-02-19T23:25:27.7493427Z dist-react/assets/person_in_manual_wheelchair_tone4-TZTDWyKD.svg  6.50 kB │ gzip: 2.57 kB
2026-02-19T23:25:27.7493513Z dist-react/assets/person_in_manual_wheelchair_tone5-DrOKlCDl.svg  6.50 kB │ gzip: 2.57 kB
2026-02-19T23:25:27.7493601Z dist-react/assets/burrito-B4L0kbwK.svg  6.52 kB │ gzip: 2.58 kB
2026-02-19T23:25:27.7493684Z dist-react/assets/person_running-DNDUEkxU.svg  6.52 kB │ gzip: 2.94 kB
2026-02-19T23:25:27.7493772Z dist-react/assets/person_running_tone1-B8sLRwke.svg  6.52 kB │ gzip: 2.94 kB
2026-02-19T23:25:27.7493861Z dist-react/assets/person_running_tone2-DNzEDUb0.svg  6.52 kB │ gzip: 2.94 kB
2026-02-19T23:25:27.7493945Z dist-react/assets/person_running_tone3-Dist2leS.svg  6.52 kB │ gzip: 2.94 kB
2026-02-19T23:25:27.7494029Z dist-react/assets/person_running_tone4-DVBWC3-p.svg  6.52 kB │ gzip: 2.94 kB
2026-02-19T23:25:27.7494112Z dist-react/assets/person_running_tone5-DEOJVy8u.svg  6.52 kB │ gzip: 2.93 kB
2026-02-19T23:25:27.7494200Z dist-react/assets/man_in_manual_wheelchair_tone1-Da2hybrT.svg  6.57 kB │ gzip: 2.62 kB
2026-02-19T23:25:27.7494289Z dist-react/assets/man_in_manual_wheelchair-cGfKOLRc.svg  6.60 kB │ gzip: 2.63 kB
2026-02-19T23:25:27.7494386Z dist-react/assets/man_in_manual_wheelchair_tone2-BPBmkRcs.svg  6.60 kB │ gzip: 2.63 kB
2026-02-19T23:25:27.7494474Z dist-react/assets/man_in_manual_wheelchair_tone3-H5kpv3q_.svg  6.60 kB │ gzip: 2.63 kB
2026-02-19T23:25:27.7494563Z dist-react/assets/man_in_manual_wheelchair_tone4-BvKWPBcq.svg  6.60 kB │ gzip: 2.63 kB
2026-02-19T23:25:27.7494655Z dist-react/assets/man_in_manual_wheelchair_tone5-YZQTD5Nr.svg  6.60 kB │ gzip: 2.63 kB
2026-02-19T23:25:27.7494910Z dist-react/assets/person_playing_handball-CH3hWpQR.svg  6.62 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7495051Z dist-react/assets/person_playing_handball_tone1-CbOONp_g.svg  6.62 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7495125Z dist-react/assets/person_playing_handball_tone2-jeC51_-P.svg  6.62 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7495198Z dist-react/assets/person_playing_handball_tone4-BsA09Avm.svg  6.62 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7495261Z dist-react/assets/person_playing_handball_tone3-BGgWTsuS.svg  6.62 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7495321Z dist-react/assets/person_playing_handball_tone5-D_rmeJiN.svg  6.62 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7495378Z dist-react/assets/men_with_bunny_ears_partying-DabknRQ1.svg  6.64 kB │ gzip: 1.78 kB
2026-02-19T23:25:27.7495439Z dist-react/assets/man_bouncing_ball-BCtAjpGP.svg  6.67 kB │ gzip: 3.04 kB
2026-02-19T23:25:27.7495501Z dist-react/assets/man_bouncing_ball_tone2-pU3f7Oqo.svg  6.67 kB │ gzip: 3.05 kB
2026-02-19T23:25:27.7495561Z dist-react/assets/man_bouncing_ball_tone1-BrCW39oq.svg  6.67 kB │ gzip: 3.05 kB
2026-02-19T23:25:27.7495624Z dist-react/assets/man_bouncing_ball_tone3-CMYhYDFZ.svg  6.67 kB │ gzip: 3.05 kB
2026-02-19T23:25:27.7495681Z dist-react/assets/man_bouncing_ball_tone4-BonEB_V5.svg  6.67 kB │ gzip: 3.05 kB
2026-02-19T23:25:27.7495737Z dist-react/assets/man_bouncing_ball_tone5-mVU7qtFm.svg  6.67 kB │ gzip: 3.05 kB
2026-02-19T23:25:27.7495798Z dist-react/assets/woman_running-_mwbLWM0.svg  6.74 kB │ gzip: 3.03 kB
2026-02-19T23:25:27.7495856Z dist-react/assets/woman_running_tone1-Dfqdg043.svg  6.74 kB │ gzip: 3.03 kB
2026-02-19T23:25:27.7495913Z dist-react/assets/woman_running_tone2-rXRqTMa0.svg  6.74 kB │ gzip: 3.03 kB
2026-02-19T23:25:27.7495972Z dist-react/assets/woman_running_tone3-BmRDPwCM.svg  6.74 kB │ gzip: 3.03 kB
2026-02-19T23:25:27.7496032Z dist-react/assets/woman_running_tone4-DmFzAsxD.svg  6.74 kB │ gzip: 3.03 kB
2026-02-19T23:25:27.7496094Z dist-react/assets/woman_running_tone5-C66GYSAh.svg  6.74 kB │ gzip: 3.03 kB
2026-02-19T23:25:27.7496149Z dist-react/assets/woman_in_manual_wheelchair_tone1-Ce9x88Rf.svg  6.75 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7496210Z dist-react/assets/woman_in_manual_wheelchair-Ba72kfnU.svg  6.75 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7496323Z dist-react/assets/woman_in_manual_wheelchair_tone2-CAKIPnJE.svg  6.75 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7496382Z dist-react/assets/woman_in_manual_wheelchair_tone4-BD3k04p2.svg  6.75 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7496440Z dist-react/assets/woman_in_manual_wheelchair_tone3-D4YsEoBp.svg  6.75 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7496498Z dist-react/assets/woman_in_manual_wheelchair_tone5-BmBeJ4-f.svg  6.75 kB │ gzip: 2.66 kB
2026-02-19T23:25:27.7496559Z dist-react/assets/person_in_motorized_wheelchair-DxhhvjYe.svg  6.80 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7496619Z dist-react/assets/person_in_motorized_wheelchair_tone1-Dcta4qUb.svg  6.80 kB │ gzip: 2.68 kB
2026-02-19T23:25:27.7496681Z dist-react/assets/person_in_motorized_wheelchair_tone2-C8UQYonN.svg  6.80 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7496739Z dist-react/assets/person_in_motorized_wheelchair_tone3-BRD_Obbg.svg  6.80 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7496798Z dist-react/assets/person_in_motorized_wheelchair_tone4-DLSO0rlF.svg  6.80 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7496854Z dist-react/assets/person_in_motorized_wheelchair_tone5-SnULyxgF.svg  6.80 kB │ gzip: 2.69 kB
2026-02-19T23:25:27.7496912Z dist-react/assets/person_bouncing_ball_tone2-9V5mlEG0.svg  6.82 kB │ gzip: 3.10 kB
2026-02-19T23:25:27.7496973Z dist-react/assets/person_bouncing_ball_tone3-DSpJYpZ1.svg  6.82 kB │ gzip: 3.10 kB
2026-02-19T23:25:27.7497030Z dist-react/assets/person_bouncing_ball-H1IsbPT2.svg  6.82 kB │ gzip: 3.10 kB
2026-02-19T23:25:27.7497085Z dist-react/assets/person_bouncing_ball_tone1-BIhBY2_P.svg  6.82 kB │ gzip: 3.10 kB
2026-02-19T23:25:27.7497142Z dist-react/assets/person_bouncing_ball_tone5-C9pS5gcg.svg  6.82 kB │ gzip: 3.10 kB
2026-02-19T23:25:27.7497201Z dist-react/assets/person_bouncing_ball_tone4-BycyNnMy.svg  6.82 kB │ gzip: 3.10 kB
2026-02-19T23:25:27.7497257Z dist-react/assets/man_in_motorized_wheelchair_tone1-B-J_H3TB.svg  6.85 kB │ gzip: 2.71 kB
2026-02-19T23:25:27.7497318Z dist-react/assets/flag_ms-BKjfidu-.svg  6.86 kB │ gzip: 3.00 kB
2026-02-19T23:25:27.7497385Z dist-react/assets/man_in_motorized_wheelchair-CiMQlH-Z.svg  6.87 kB │ gzip: 2.72 kB
2026-02-19T23:25:27.7497457Z dist-react/assets/man_in_motorized_wheelchair_tone2-DQy0C3Cx.svg  6.87 kB │ gzip: 2.72 kB
2026-02-19T23:25:27.7497534Z dist-react/assets/man_in_motorized_wheelchair_tone4-CoEn9n-F.svg  6.87 kB │ gzip: 2.72 kB
2026-02-19T23:25:27.7497615Z dist-react/assets/man_in_motorized_wheelchair_tone3-DuduwQoe.svg  6.87 kB │ gzip: 2.72 kB
2026-02-19T23:25:27.7497720Z dist-react/assets/man_in_motorized_wheelchair_tone5-CgvQDAuT.svg  6.87 kB │ gzip: 2.72 kB
2026-02-19T23:25:27.7497780Z dist-react/assets/flag_ky-E8sT-Yzf.svg  6.99 kB │ gzip: 2.92 kB
2026-02-19T23:25:27.7497836Z dist-react/assets/anatomical_heart-DbQDqK_8.svg  7.00 kB │ gzip: 3.14 kB
2026-02-19T23:25:27.7497893Z dist-react/assets/wales-ll0ySOk-.svg  7.01 kB │ gzip: 2.89 kB
2026-02-19T23:25:27.7497951Z dist-react/assets/woman_in_motorized_wheelchair_tone1-1BibIgKr.svg  7.03 kB │ gzip: 2.78 kB
2026-02-19T23:25:27.7498008Z dist-react/assets/woman_in_motorized_wheelchair-CIaEP3y5.svg  7.03 kB │ gzip: 2.79 kB
2026-02-19T23:25:27.7498070Z dist-react/assets/woman_in_motorized_wheelchair_tone2-uhLYilhF.svg  7.03 kB │ gzip: 2.79 kB
2026-02-19T23:25:27.7498129Z dist-react/assets/woman_in_motorized_wheelchair_tone3-B51r71l0.svg  7.03 kB │ gzip: 2.79 kB
2026-02-19T23:25:27.7498184Z dist-react/assets/woman_in_motorized_wheelchair_tone5-_fFN26h0.svg  7.03 kB │ gzip: 2.79 kB
2026-02-19T23:25:27.7498239Z dist-react/assets/woman_in_motorized_wheelchair_tone4-oIvpxZcp.svg  7.03 kB │ gzip: 2.79 kB
2026-02-19T23:25:27.7498294Z dist-react/assets/woman_bouncing_ball_tone1-I7gUQpbX.svg  7.09 kB │ gzip: 3.21 kB
2026-02-19T23:25:27.7498350Z dist-react/assets/woman_bouncing_ball-B4V8jGG-.svg  7.09 kB │ gzip: 3.20 kB
2026-02-19T23:25:27.7498459Z dist-react/assets/woman_bouncing_ball_tone2-BPyPsinZ.svg  7.09 kB │ gzip: 3.21 kB
2026-02-19T23:25:27.7498559Z dist-react/assets/woman_bouncing_ball_tone4-CtQI59zT.svg  7.09 kB │ gzip: 3.21 kB
2026-02-19T23:25:27.7498625Z dist-react/assets/woman_bouncing_ball_tone3-UqVs8gxM.svg  7.09 kB │ gzip: 3.21 kB
2026-02-19T23:25:27.7498681Z dist-react/assets/woman_bouncing_ball_tone5-BgHu12i2.svg  7.09 kB │ gzip: 3.21 kB
2026-02-19T23:25:27.7498760Z dist-react/assets/flag_va-BB2uDrB0.svg  7.21 kB │ gzip: 2.49 kB
2026-02-19T23:25:27.7498833Z dist-react/assets/mammoth-Diaisynz.svg  7.29 kB │ gzip: 3.06 kB
2026-02-19T23:25:27.7498895Z dist-react/assets/nest_with_eggs-C5ulh3Rz.svg  7.36 kB │ gzip: 3.39 kB
2026-02-19T23:25:27.7498982Z dist-react/assets/phoenix-QKXqSCuH.svg  7.57 kB │ gzip: 2.91 kB
2026-02-19T23:25:27.7499039Z dist-react/assets/flag_cy-JKjUtxO9.svg  7.60 kB │ gzip: 3.32 kB
2026-02-19T23:25:27.7499098Z dist-react/assets/people_with_bunny_ears_partying-BVR6SBwD.svg  7.63 kB │ gzip: 1.93 kB
2026-02-19T23:25:27.7499165Z dist-react/assets/flag_gu-CyZZwWUz.svg  7.68 kB │ gzip: 3.24 kB
2026-02-19T23:25:27.7499233Z dist-react/assets/mute-CFH4QcSE.mp3  7.74 kB
2026-02-19T23:25:27.7499293Z dist-react/assets/t_rex-BYG-fgI4.svg  8.00 kB │ gzip: 3.35 kB
2026-02-19T23:25:27.7499348Z dist-react/assets/flag_vg-DWuAWiyw.svg  8.21 kB │ gzip: 1.91 kB
2026-02-19T23:25:27.7499403Z dist-react/assets/flag_yt-BfOxXbO5.svg  8.42 kB │ gzip: 2.95 kB
2026-02-19T23:25:27.7499463Z dist-react/assets/piñata-CQK6iMPe.svg  8.47 kB │ gzip: 3.21 kB
2026-02-19T23:25:27.7499523Z dist-react/assets/mirror_ball-R_criUm_.svg  8.55 kB │ gzip: 3.31 kB
2026-02-19T23:25:27.7499578Z dist-react/assets/ping-LfakLpwb.mp3  8.58 kB
2026-02-19T23:25:27.7499646Z dist-react/assets/flag_gs-DhFNtBGF.svg  8.86 kB │ gzip: 3.67 kB
2026-02-19T23:25:27.7499706Z dist-react/assets/knot-CpRGiIMe.svg  8.92 kB │ gzip: 3.89 kB
2026-02-19T23:25:27.7499764Z dist-react/assets/flag_dg-DwJEN7pv.svg  9.06 kB │ gzip: 2.87 kB
2026-02-19T23:25:27.7499829Z dist-react/assets/flag_gt-CietPgvg.svg  9.11 kB │ gzip: 3.86 kB
2026-02-19T23:25:27.7499896Z dist-react/assets/flag_mx-g-aNhK9D.svg  9.66 kB │ gzip: 3.72 kB
2026-02-19T23:25:27.7499957Z dist-react/assets/flag_ta-Q6DTxsoW.svg  10.30 kB │ gzip: 4.05 kB
2026-02-19T23:25:27.7500014Z dist-react/assets/flag_je-CGBxZBdT.svg  10.35 kB │ gzip: 4.17 kB
2026-02-19T23:25:27.7500070Z dist-react/assets/unmute-BDrGNM7s.mp3  10.67 kB
2026-02-19T23:25:27.7500134Z dist-react/assets/flag_do-sBcfT32z.svg  11.37 kB │ gzip: 4.67 kB
2026-02-19T23:25:27.7500202Z dist-react/assets/deafen-BWE6ozKl.mp3  11.92 kB
2026-02-19T23:25:27.7500260Z dist-react/assets/flag_sa-B3EC8eCD.svg  12.29 kB │ gzip: 5.12 kB
2026-02-19T23:25:27.7500319Z dist-react/assets/flag_al-D439po3l.svg  12.43 kB │ gzip: 5.32 kB
2026-02-19T23:25:27.7500379Z dist-react/assets/undeafen-DHeUZCMd.mp3  13.59 kB
2026-02-19T23:25:27.7500436Z dist-react/assets/flag_bz-B34xZjVJ.svg  13.64 kB │ gzip: 5.44 kB
2026-02-19T23:25:27.7500493Z dist-react/assets/flag_pm-C-C2d-w4.svg  13.65 kB │ gzip: 3.80 kB
2026-02-19T23:25:27.7500549Z dist-react/assets/leave_call-DtItyZMg.mp3  14.43 kB
2026-02-19T23:25:27.7500604Z dist-react/assets/flag_nf-BjOIhoMF.svg  14.69 kB │ gzip: 5.98 kB
2026-02-19T23:25:27.7500659Z dist-react/assets/screenshare_start-B8JctOq8.mp3  16.13 kB
2026-02-19T23:25:27.7500714Z dist-react/assets/flag_ac-Dr8n8VBW.svg  16.66 kB │ gzip: 5.62 kB
2026-02-19T23:25:27.7500777Z dist-react/assets/screenshare_stop-DhppajDk.mp3  18.43 kB
2026-02-19T23:25:27.7500833Z dist-react/assets/potted_plant-BHg6K0D8.svg  21.00 kB │ gzip: 8.96 kB
2026-02-19T23:25:27.7500895Z dist-react/assets/flag_mp-Bs0Xr_ND.svg  24.06 kB │ gzip: 9.57 kB
2026-02-19T23:25:27.7500957Z dist-react/assets/flag_af-CN78RMpg.svg  24.13 kB │ gzip: 9.18 kB
2026-02-19T23:25:27.7501016Z dist-react/assets/flag_kz-D77IkgDL.svg  26.58 kB │ gzip: 9.02 kB
2026-02-19T23:25:27.7501073Z dist-react/assets/united_nations-BC9awctQ.svg  26.58 kB │ gzip: 10.32 kB
2026-02-19T23:25:27.7501131Z dist-react/assets/join_call-B65a9Ev2.mp3  30.54 kB
2026-02-19T23:25:27.7501191Z dist-react/assets/gg sans Regular-Bd8GJPVd.woff  39.09 kB
2026-02-19T23:25:27.7501246Z dist-react/assets/emojies_greyscale-CtRIvx0g.png  39.11 kB
2026-02-19T23:25:27.7501302Z dist-react/assets/gg sans Bold-BGlwbW8t.woff  40.13 kB
2026-02-19T23:25:27.7501358Z dist-react/assets/gg sans Medium-BMWm4JFW.woff  40.32 kB
2026-02-19T23:25:27.7501417Z dist-react/assets/gg sans Semibold-xAGa8zYH.woff  40.57 kB
2026-02-19T23:25:27.7501471Z dist-react/assets/emojies_colored-Cxo2u_zo.png  45.89 kB
2026-02-19T23:25:27.7501526Z dist-react/assets/screenshare_viewer_leave-BoDMhfvJ.mp3  67.54 kB
2026-02-19T23:25:27.7501585Z dist-react/assets/screenshare_viewer_join-BOPrADSV.mp3  67.54 kB
2026-02-19T23:25:27.7501639Z dist-react/assets/default_call_sound-DTYq-Lur.mp3  90.63 kB
2026-02-19T23:25:27.7501694Z dist-react/assets/sql-wasm-CbWyWKgW.wasm  659.73 kB │ gzip: 323.01 kB
2026-02-19T23:25:27.7501750Z dist-react/assets/index-DsNlNeYK.css  86.99 kB │ gzip: 15.20 kB
2026-02-19T23:25:27.7501808Z dist-react/assets/index-BUSMmiif.js 8,632.95 kB │ gzip: 1,604.89 kB
2026-02-19T23:25:27.7501873Z 
2026-02-19T23:25:27.7501912Z (!) Some chunks are larger than 1000 kB after minification. Consider:
2026-02-19T23:25:27.7501960Z - Using dynamic import() to code-split the application
2026-02-19T23:25:27.7502008Z - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
2026-02-19T23:25:27.7502065Z - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
2026-02-19T23:25:27.7502170Z ✓ built in 3.17s
2026-02-19T23:25:28.2782371Z • electron-builder version=25.1.8 os=6.12.54-Unraid
2026-02-19T23:25:28.2783179Z • artifacts will be published if draft release exists reason=CI detected
2026-02-19T23:25:28.2802250Z • loaded configuration file=package.json ("build" field)
2026-02-19T23:25:28.3557043Z • skipped dependencies rebuild reason=npmRebuild is set to false
2026-02-19T23:25:28.3557408Z • packaging platform=linux arch=x64 electron=33.4.11 appOutDir=dist/linux-unpacked
2026-02-19T23:25:28.5985634Z  • downloading url=https://github.com/electron/electron/releases/download/v33.4.11/electron-v33.4.11-linux-x64.zip size=106 MB parts=8
2026-02-19T23:25:29.7898219Z  • downloaded url=https://github.com/electron/electron/releases/download/v33.4.11/electron-v33.4.11-linux-x64.zip duration=1.429s
2026-02-19T23:25:32.1272701Z • building target=AppImage arch=x64 file=dist/Discord Clone-1.0.26.AppImage
2026-02-19T23:25:32.1273385Z • building target=flatpak arch=x64 file=dist/Discord Clone-1.0.26-x86_64.flatpak
2026-02-19T23:25:32.1336942Z • default Electron icon is used reason=application icon is not set
2026-02-19T23:25:32.3679656Z  • downloading url=https://github.com/electron-userland/electron-builder-binaries/releases/download/appimage-12.0.1/appimage-12.0.1.7z size=1.6 MB parts=1
2026-02-19T23:25:32.4745560Z  • downloaded url=https://github.com/electron-userland/electron-builder-binaries/releases/download/appimage-12.0.1/appimage-12.0.1.7z duration=334ms
2026-02-19T23:28:43.4374842Z  flatpak failed with status code 1 failedTask=build stackTrace=Error: flatpak failed with status code 1
2026-02-19T23:28:43.4375533Z at ChildProcess.<anonymous> (/workspace/Moyettes/DiscordClone/node_modules/@malept/flatpak-bundler/index.js:71:16)
2026-02-19T23:28:43.4375661Z at ChildProcess.emit (node:events:518:28)
2026-02-19T23:28:43.4375747Z at maybeClose (node:internal/child_process:1101:16)
2026-02-19T23:28:43.4375839Z at Socket.<anonymous> (node:internal/child_process:456:11)
2026-02-19T23:28:43.4375932Z at Socket.emit (node:events:518:28)
2026-02-19T23:28:43.4376007Z at Pipe.<anonymous> (node:net:351:12)
2026-02-19T23:28:43.4526740Z ❌ Failure - Main Build Electron app
2026-02-19T23:28:43.4555032Z exitcode '1': failure
2026-02-19T23:28:43.5419974Z expression 'npm-electron-${{ hashFiles('package-lock.json') }}' rewritten to 'format('npm-electron-{0}', hashFiles('package-lock.json'))'
2026-02-19T23:28:43.5420163Z evaluating expression 'format('npm-electron-{0}', hashFiles('package-lock.json'))'
2026-02-19T23:28:43.5420391Z Writing entry to tarball workflow/hashfiles/index.js len:168437
2026-02-19T23:28:43.5421841Z Extracting content to '/var/run/act'
2026-02-19T23:28:43.5432317Z 🐳 docker exec cmd=[node /var/run/act/workflow/hashfiles/index.js] user= workdir=
2026-02-19T23:28:43.5432588Z Exec command '[node /var/run/act/workflow/hashfiles/index.js]'
2026-02-19T23:28:43.5432724Z Working directory '/workspace/Moyettes/DiscordClone'
2026-02-19T23:28:43.6051801Z expression 'format('npm-electron-{0}', hashFiles('package-lock.json'))' evaluated to '%!t(string=npm-electron-19a73207f2ae6539eb9f669951ffdb026cc4c9e2400eaf2d378fa89175187b3d)'
2026-02-19T23:28:43.6087784Z evaluating expression 'success()'
2026-02-19T23:28:43.6088055Z expression 'success()' evaluated to 'false'
2026-02-19T23:28:43.6088147Z Skipping step 'Cache npm and Electron' due to 'success()'
2026-02-19T23:28:43.6183651Z evaluating expression 'always()'
2026-02-19T23:28:43.6183908Z expression 'always()' evaluated to 'true'
2026-02-19T23:28:43.6184006Z ⭐ Run Post Checkout repository
2026-02-19T23:28:43.6184146Z Writing entry to tarball workflow/outputcmd.txt len:0
2026-02-19T23:28:43.6184284Z Writing entry to tarball workflow/statecmd.txt len:0
2026-02-19T23:28:43.6184468Z Writing entry to tarball workflow/pathcmd.txt len:0
2026-02-19T23:28:43.6184563Z Writing entry to tarball workflow/envs.txt len:0
2026-02-19T23:28:43.6184645Z Writing entry to tarball workflow/SUMMARY.md len:0
2026-02-19T23:28:43.6184740Z Extracting content to '/var/run/act'
2026-02-19T23:28:43.6196711Z run post step for 'Checkout repository'
2026-02-19T23:28:43.6197028Z executing remote job container: [node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]
2026-02-19T23:28:43.6197136Z 🐳 docker exec cmd=[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js] user= workdir=
2026-02-19T23:28:43.6197217Z Exec command '[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]'
2026-02-19T23:28:43.6197377Z Working directory '/workspace/Moyettes/DiscordClone'
2026-02-19T23:28:43.7082988Z [command]/usr/bin/git version
2026-02-19T23:28:43.7105757Z git version 2.34.1
2026-02-19T23:28:43.7122986Z ***
2026-02-19T23:28:43.7129740Z Copying '/root/.gitconfig' to '/tmp/7679d98f-c453-42ce-9f55-00deb297c51e/.gitconfig'
2026-02-19T23:28:43.7135854Z Temporarily overriding HOME='/tmp/7679d98f-c453-42ce-9f55-00deb297c51e' before making global git config changes
2026-02-19T23:28:43.7136990Z Adding repository directory to the temporary git global config as a safe directory
2026-02-19T23:28:43.7140105Z [command]/usr/bin/git config --global --add safe.directory /workspace/Moyettes/DiscordClone
2026-02-19T23:28:43.7158032Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-02-19T23:28:43.7177939Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-02-19T23:28:43.7338867Z [command]/usr/bin/git config --local --name-only --get-regexp http\.http\:\/\/192\.168\.125\.15\:4000\/\.extraheader
2026-02-19T23:28:43.7350942Z http.http://192.168.125.15:4000/.extraheader
2026-02-19T23:28:43.7357850Z [command]/usr/bin/git config --local --unset-all http.http://192.168.125.15:4000/.extraheader
2026-02-19T23:28:43.7377153Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.http\:\/\/192\.168\.125\.15\:4000\/\.extraheader' && git config --local --unset-all 'http.http://192.168.125.15:4000/.extraheader' || :"
2026-02-19T23:28:43.7531356Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-02-19T23:28:43.7548849Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-02-19T23:28:43.7753653Z ✅ Success - Post Checkout repository
2026-02-19T23:28:43.7784607Z Cleaning up container for job build-and-release
2026-02-19T23:28:48.6334745Z Removed container: fb4d794ca0c0f950b0082779480dd6e139f2fc190f0d8ff5400e4acc32825725
2026-02-19T23:28:48.6354290Z 🐳 docker volume rm GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release
2026-02-19T23:28:55.3568016Z 🐳 docker volume rm GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release-env
2026-02-19T23:28:55.6720591Z Cleaning up network for job build-and-release, and network name is: GITEA-ACTIONS-TASK-76_WORKFLOW-Build-and-Release_JOB-build-and-release-build-and-release-network
2026-02-19T23:28:56.6968938Z 🏁 Job failed
2026-02-19T23:28:56.7009103Z Job 'build-and-release' failed

File diff suppressed because it is too large Load Diff