diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..61f82b06
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,47 @@
+name: CI
+
+on:
+ push:
+ pull_request:
+
+concurrency:
+ group: ci-${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ timeout-minutes: 45
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
+ with:
+ distribution: temurin
+ java-version: 21
+
+ - name: Set up Android SDK
+ uses: android-actions/setup-android@v3
+ with:
+ packages: >
+ tools
+ platform-tools
+ platforms;android-36
+ build-tools;36.0.0
+
+ - name: Set up Gradle
+ uses: gradle/actions/setup-gradle@v4
+
+ - name: Build Android + desktop + unit tests
+ run: |
+ chmod +x ./gradlew
+ ./gradlew --no-daemon --stacktrace \
+ :core:compileKotlinJvm \
+ :core:jvmTest \
+ :components:compileKotlinJvm \
+ :desktop:compileKotlin \
+ :app:assembleDebug
diff --git a/.gitignore b/.gitignore
index c2edbf4f..ee1b2912 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,13 +8,18 @@
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
+build/
/build
/captures
.externalNativeBuild
.cxx
local.properties
+.kotlin/
# Signing (never commit secrets or keystores)
keystore.properties
*.jks
*.keystore
+.aider*
+
+hs_err_pid*.log
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
index 26d33521..55529824 100644
--- a/.idea/.gitignore
+++ b/.idea/.gitignore
@@ -1,3 +1,5 @@
# Default ignored files
/shelf/
/workspace.xml
+/discord.xml
+/planningMode.xml
\ No newline at end of file
diff --git a/.idea/artifacts/components.xml b/.idea/artifacts/components.xml
new file mode 100644
index 00000000..1da95811
--- /dev/null
+++ b/.idea/artifacts/components.xml
@@ -0,0 +1,8 @@
+
+
+ $PROJECT_DIR$/components/build/libs
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/artifacts/components_jvm.xml b/.idea/artifacts/components_jvm.xml
new file mode 100644
index 00000000..e9b6a24c
--- /dev/null
+++ b/.idea/artifacts/components_jvm.xml
@@ -0,0 +1,8 @@
+
+
+ $PROJECT_DIR$/components/build/libs
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/artifacts/core.xml b/.idea/artifacts/core.xml
new file mode 100644
index 00000000..c3439a25
--- /dev/null
+++ b/.idea/artifacts/core.xml
@@ -0,0 +1,8 @@
+
+
+ $PROJECT_DIR$/core/build/libs
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/artifacts/core_jvm.xml b/.idea/artifacts/core_jvm.xml
new file mode 100644
index 00000000..c006f3c8
--- /dev/null
+++ b/.idea/artifacts/core_jvm.xml
@@ -0,0 +1,8 @@
+
+
+ $PROJECT_DIR$/core/build/libs
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/artifacts/mediasession_jvm.xml b/.idea/artifacts/mediasession_jvm.xml
new file mode 100644
index 00000000..779652f2
--- /dev/null
+++ b/.idea/artifacts/mediasession_jvm.xml
@@ -0,0 +1,8 @@
+
+
+ $PROJECT_DIR$/mediasession/build/libs
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index bcf4711e..b589d56e 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 02c4aa5e..e3ada731 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -10,6 +10,10 @@
+
+
+
+
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index bd7dede3..157f4bf3 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -25,6 +25,12 @@
+
+
+
+
+
+
@@ -46,6 +52,5 @@
-
\ No newline at end of file
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
new file mode 100644
index 00000000..2e4da65a
--- /dev/null
+++ b/.idea/kotlinc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 29a5cc0c..ca6c843f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/.idea/runConfigurations/YuriPlayer__buildFfmpeg_.xml b/.idea/runConfigurations/Build_ffmpeg.xml
similarity index 91%
rename from .idea/runConfigurations/YuriPlayer__buildFfmpeg_.xml
rename to .idea/runConfigurations/Build_ffmpeg.xml
index 3203d0b0..217d185c 100644
--- a/.idea/runConfigurations/YuriPlayer__buildFfmpeg_.xml
+++ b/.idea/runConfigurations/Build_ffmpeg.xml
@@ -1,5 +1,5 @@
-
+