Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,14 @@ jobs:
distribution: zulu
java-version: 25
- uses: gradle/actions/setup-gradle@v6
- run: ./gradlew app:assembleRelease --no-daemon
- run: ./gradlew androidApp:assembleRelease --no-daemon
- name: Delete release if exist then create release
if: github.repository_owner == 'Goooler' && github.event_name == 'push'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release delete nightly --cleanup-tag -y || true
gh release create nightly "./app/build/outputs/apk/release/"*.apk --prerelease --generate-notes
gh release create nightly "./androidApp/build/outputs/apk/release/"*.apk --prerelease --generate-notes

# Status check that is required in branch protection rules.
final-status:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ jobs:
- uses: gradle/actions/setup-gradle@v6
- name: Build
run: |
./gradlew app:assembleRelease --no-daemon
./gradlew androidApp:assembleRelease --no-daemon
- name: Create release
if: github.repository_owner == 'Goooler'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create ${{ github.ref_name }} "./app/build/outputs/apk/release/"*.apk --generate-notes
gh release create ${{ github.ref_name }} "./androidApp/build/outputs/apk/release/"*.apk --generate-notes
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ gradle-app.setting
.idea

# Ignore builtin geofiles
app/src/main/assets
androidApp/src/main/assets

# clion cmake build
cmake-build-*
Expand Down
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ app → ui/*
./gradlew spotlessApply

# Build a debug APK (required before every commit)
./gradlew app:assembleDebug
./gradlew androidApp:assembleDebug

# Build a release APK (don't have to run this in general developments)
./gradlew app:assembleRelease
./gradlew androidApp:assembleRelease

# Run all checks
./gradlew check
Expand Down Expand Up @@ -177,7 +177,7 @@ GitHub Actions runs on every push to `trunk` and on every pull request:
|----------------|---------------------------------|-----------------------------------------------------------|
| `check-style` | `./gradlew spotlessCheck` | Fails if formatting issues exist |
| `lint` | `./gradlew lintDebug` | Runs Android lint checks for the debug variant |
| `build` | `./gradlew app:assembleRelease` | Full release build including Go cross-compilation |
| `build` | `./gradlew androidApp:assembleRelease` | Full release build including Go cross-compilation |
| `final-status` | — | Required branch-protection status combining all CI checks |

A nightly pre-release is published automatically on pushes to `trunk`.
Expand All @@ -187,7 +187,7 @@ A nightly pre-release is published automatically on pushes to `trunk`.
- Branch from `trunk`.
- Keep changes focused and small.
- Include a clear description of what changed and why.
- Run `./gradlew spotlessApply` and `./gradlew app:assembleDebug` locally
- Run `./gradlew spotlessApply` and `./gradlew androidApp:assembleDebug` locally
before opening a PR.
- Link related issues when applicable.
- Update docs when behavior or developer workflow changes.
7 changes: 7 additions & 0 deletions app/build.gradle.kts → androidApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.jb.compose)
alias(libs.plugins.download)
}

android {
namespace = "com.github.kr328.clash.app"
defaultConfig {
applicationId = "io.github.goooler.tabby"
targetSdk = 36
Expand Down Expand Up @@ -85,6 +87,11 @@ dependencies {
implementation(libs.androidx.core)
implementation(libs.androidx.activity.compose)

implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.util)
implementation(libs.androidx.navigation3.runtime)
implementation(libs.androidx.navigation3.ui)

implementation(libs.koin.android)
}

Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,12 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewModelScope
import androidx.navigation3.runtime.NavKey
import androidx.navigation3.runtime.entryProvider
import com.github.kr328.clash.common.R as CommonR
import com.github.kr328.clash.common.constants.Intents
import com.github.kr328.clash.common.model.DarkMode
import com.github.kr328.clash.common.util.mainIntent
import com.github.kr328.clash.common.util.uuid
import com.github.kr328.clash.crash.CrashRoute
import com.github.kr328.clash.crash.crashEntries
import com.github.kr328.clash.glue.model.DarkMode
import com.github.kr328.clash.glue.remote.Remote
import com.github.kr328.clash.glue.store.UiStore
import com.github.kr328.clash.glue.util.startClashService
Expand Down Expand Up @@ -176,7 +175,7 @@ class MainActivity : ComponentActivity() {
private fun startClash() {
val vpnRequest = startClashService()
if (vpnRequest != null) {
toast(CommonR.string.unable_to_start_vpn)
toast(R.string.unable_to_start_vpn)
return
}
toast(R.string.external_control_started)
Expand Down Expand Up @@ -269,8 +268,7 @@ class MainActivity : ComponentActivity() {
"file" -> Profile.Type.File
else -> Profile.Type.Url
}
val name =
uri.getQueryParameter("name") ?: application.getString(CommonR.string.new_profile)
val name = uri.getQueryParameter("name") ?: application.getString(R.string.new_profile)
create(type, name).also { patch(it, name, url, 0) }
}
backStack.addIfNotLast(ProfilesRoute.Profiles(openPropertyUuid = uuid))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
<resources>

<string name="external_control_activity">外部制御</string>
<string name="external_control_already_started">Tabby サービスはすでに実行中です</string>
<string name="external_control_already_stopped">Tabby サービスはすでに停止しています</string>
<string name="external_control_started">Tabby サービスが開始されました</string>
<string name="external_control_stopped">Tabby サービスが停止されました</string>
<string name="new_profile">新しいプロファイル</string>
<string name="receive_broadcasts_of_tabby">Tabby サービスのブロードキャストを受信</string>
<string name="receive_tabby_broadcasts">Tabby ブロードキャストを受信</string>
<string name="shortcut_start_long">Tabby サービスを開始</string>
<string name="shortcut_start_short">Tabby を開始</string>
<string name="shortcut_stop_long">Tabby サービスを停止</string>
<string name="shortcut_stop_short">Tabby を停止</string>
<string name="shortcut_toggle_long">Tabby サービスのオン/オフを切り替え</string>
<string name="shortcut_toggle_short">Tabby を切り替え</string>
</resources>
<string name="unable_to_start_vpn">VPNコンポーネントを起動できませんでした</string>
</resources>
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
<resources>

<string name="external_control_activity">외부 제어</string>
<string name="external_control_already_started">Tabby 서비스가 이미 실행 중입니다</string>
<string name="external_control_already_stopped">Tabby 서비스가 이미 중지되어 있습니다</string>
<string name="external_control_started">Tabby 서비스가 시작되었습니다</string>
<string name="external_control_stopped">Tabby 서비스가 중지되었습니다</string>
<string name="new_profile">새 구성</string>
<string name="receive_broadcasts_of_tabby">Tabby 서비스 브로드캐스트 수신</string>
<string name="receive_tabby_broadcasts">Tabby 브로드캐스트 수신</string>
<string name="shortcut_start_long">Tabby 서비스 시작</string>
<string name="shortcut_start_short">Tabby 시작</string>
<string name="shortcut_stop_long">Tabby 서비스 중지</string>
<string name="shortcut_stop_short">Tabby 중지</string>
<string name="shortcut_toggle_long">Tabby 서비스 켜기/끄기</string>
<string name="shortcut_toggle_short">Tabby 켜기/끄기</string>
</resources>
<string name="unable_to_start_vpn">VPN 구성 요소를 시작할 수 없습니다.</string>
</resources>
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
<resources>

<string name="external_control_activity">Внешнее управление</string>
<string name="external_control_already_started">Сервис Tabby уже запущен</string>
<string name="external_control_already_stopped">Сервис Tabby уже остановлен</string>
<string name="external_control_started">Сервис Tabby запущен</string>
<string name="external_control_stopped">Сервис Tabby остановлен</string>
<string name="new_profile">Новый профиль</string>
<string name="receive_broadcasts_of_tabby">Получать уведомления от сервисов Tabby</string>
<string name="receive_tabby_broadcasts">Получать уведомления Tabby</string>
<string name="shortcut_start_long">Запустить сервис Tabby</string>
<string name="shortcut_start_short">Запустить Tabby</string>
<string name="shortcut_stop_long">Остановить сервис Tabby</string>
<string name="shortcut_stop_short">Остановить Tabby</string>
<string name="shortcut_toggle_long">Переключить сервис Tabby (вкл/выкл)</string>
<string name="shortcut_toggle_short">Переключить Tabby</string>
<string name="unable_to_start_vpn">Не удалось запустить компонент VPN</string>
</resources>
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
<resources>

<string name="external_control_activity">Điều khiển bên ngoài</string>
<string name="external_control_already_started">Dịch vụ Tabby đang chạy</string>
<string name="external_control_already_stopped">Dịch vụ Tabby đã dừng rồi</string>
<string name="external_control_started">Dịch vụ Tabby đã bắt đầu</string>
<string name="external_control_stopped">Dịch vụ Tabby đã dừng</string>
<string name="new_profile">Cấu hình mới</string>
<string name="receive_broadcasts_of_tabby">Nhận thông báo của dịch vụ Tabby</string>
<string name="receive_tabby_broadcasts">Nhận thông báo Tabby</string>
<string name="shortcut_start_long">Bắt đầu dịch vụ Tabby</string>
<string name="shortcut_start_short">Bắt đầu Tabby</string>
<string name="shortcut_stop_long">Dừng dịch vụ Tabby</string>
<string name="shortcut_stop_short">Dừng Tabby</string>
<string name="shortcut_toggle_long">Bật/Tắt dịch vụ Tabby</string>
<string name="shortcut_toggle_short">Bật/Tắt Tabby</string>
<string name="unable_to_start_vpn">Không thể khởi động thành phần VPN</string>
</resources>
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
<resources>

<string name="external_control_activity">外部控制</string>
<string name="external_control_already_started">Tabby 服務正在運行中</string>
<string name="external_control_already_stopped">Tabby 服務已處於停止狀態</string>
<string name="external_control_started">Tabby 服務已啓動</string>
<string name="external_control_stopped">Tabby 服務已停止</string>
<string name="new_profile">新配置</string>
<string name="receive_broadcasts_of_tabby">接收 Tabby 服務的廣播</string>
<string name="receive_tabby_broadcasts">接收 Tabby 廣播</string>
<string name="shortcut_start_long">啓動 Tabby 服務</string>
<string name="shortcut_start_short">啓動 Tabby</string>
<string name="shortcut_stop_long">停止 Tabby 服務</string>
<string name="shortcut_stop_short">停止 Tabby</string>
<string name="shortcut_toggle_long">切換 Tabby 服務啟停</string>
<string name="shortcut_toggle_short">切換 Tabby</string>
</resources>
<string name="unable_to_start_vpn">無法啓動 VPN 組件</string>
</resources>
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
<resources>

<string name="external_control_activity">外部控制</string>
<string name="external_control_already_started">Tabby 服務正在運行中</string>
<string name="external_control_already_stopped">Tabby 服務已處於停止狀態</string>
<string name="external_control_started">Tabby 服務已啟動</string>
<string name="external_control_stopped">Tabby 服務已停止</string>
<string name="new_profile">新設定檔</string>
<string name="receive_broadcasts_of_tabby">接收 Tabby 服務的廣播</string>
<string name="receive_tabby_broadcasts">接收 Tabby 廣播</string>
<string name="shortcut_start_long">啟動 Tabby 服務</string>
<string name="shortcut_start_short">啟動 Tabby</string>
<string name="shortcut_stop_long">停止 Tabby 服務</string>
<string name="shortcut_stop_short">停止 Tabby</string>
<string name="shortcut_toggle_long">切換 Tabby 服務啟停</string>
<string name="shortcut_toggle_short">切換 Tabby</string>
</resources>
<string name="unable_to_start_vpn">無法啟動 VPN 元件</string>
</resources>
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
<resources>

<string name="external_control_activity">外部控制</string>
<string name="external_control_already_started">Tabby 服务正在运行中</string>
<string name="external_control_already_stopped">Tabby 服务已处于停止状态</string>
<string name="external_control_started">Tabby 服务已启动</string>
<string name="external_control_stopped">Tabby 服务已停止</string>
<string name="new_profile">新配置</string>
<string name="receive_broadcasts_of_tabby">接收 Tabby 服务的广播</string>
<string name="receive_tabby_broadcasts">接收 Tabby 广播</string>
<string name="shortcut_start_long">启动 Tabby 服务</string>
<string name="shortcut_start_short">启动 Tabby</string>
<string name="shortcut_stop_long">停止 Tabby 服务</string>
<string name="shortcut_stop_short">停止 Tabby</string>
<string name="shortcut_toggle_long">切换 Tabby 服务启停</string>
<string name="shortcut_toggle_short">切换 Tabby</string>
</resources>
<string name="unable_to_start_vpn">无法启动 VPN 组件</string>
</resources>
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
<resources>

<string name="external_control_activity">External Control</string>
<string name="external_control_already_started">Tabby service is already running</string>
<string name="external_control_already_stopped">Tabby service is already stopped</string>
<string name="external_control_started">Tabby service started</string>
<string name="external_control_stopped">Tabby service stopped</string>
<string name="new_profile">New Profile</string>
<string name="receive_broadcasts_of_tabby">Receive broadcasts of Tabby services</string>
<string name="receive_tabby_broadcasts">Receive Tabby Broadcasts</string>
<string name="shortcut_start_long">Start Tabby service</string>
<string name="shortcut_start_short">Start Tabby</string>
<string name="shortcut_stop_long">Stop Tabby service</string>
<string name="shortcut_stop_short">Stop Tabby</string>
<string name="shortcut_toggle_long">Toggle Tabby service on/off</string>
<string name="shortcut_toggle_short">Toggle Tabby</string>
<string name="unable_to_start_vpn">Unable to start VPN component</string>
</resources>
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en" />
<locale android:name="ja-JP" />
Expand Down
Loading