Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
6d80a28
feat: MasterDnsVPN sidecar (DNS-tunnel client) with full editor
hawkff Jun 16, 2026
e40b538
fix: use existing ic_action_dns drawable for resolvers pref
hawkff Jun 16, 2026
33523bd
fix: address review on MasterDnsVPN sidecar
hawkff Jun 16, 2026
22b10d5
ci: wire MasterDnsVPN sidecar into build workflows; collision-safe te…
hawkff Jun 16, 2026
fbf4a88
ci: fix MasterDnsVPN ref env name (MDV_REF -> MDVPN_REF)
hawkff Jun 16, 2026
ed5e20b
ci: upload debug APKs as artifacts from the CI workflow
hawkff Jun 16, 2026
9c0ba5b
fix: protect safety-critical keys from advancedJson override
hawkff Jun 16, 2026
e495487
feat: add masterdns:// share link + QR import for MasterDnsVPN
hawkff Jun 16, 2026
0cbd838
fix: avoid infinite recursion in sing-box option serializer
hawkff Jun 17, 2026
467d298
fix: reliably start the MasterDnsVPN sidecar under VpnService
hawkff Jun 17, 2026
31f3a0c
fix: address review feedback on serializer and MasterDnsVPN config
hawkff Jun 17, 2026
c1950ec
fix: bump Room schema to v9 with auto-migration for masterDnsVpnBean
hawkff Jun 17, 2026
32d0266
fix: drop AutoMigration(8,9) and let destructive fallback handle it
hawkff Jun 17, 2026
e40bd18
ci: pin actions/cache + MasterDnsVPN source to immutable refs; valida…
hawkff Jun 18, 2026
f4a1835
ci: bump MasterDnsVPN sidecar pin to d481d72 (context-propagation fix)
hawkff Jun 18, 2026
06d00f8
Merge remote-tracking branch 'origin/main' into feature/hy2-gecko-native
hawkff Jun 18, 2026
f702e80
ci: scope release.yml contents:write to the publish job
hawkff Jun 18, 2026
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
14 changes: 9 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:
env:
MIERU_VERSION: v3.34.0
HYSTERIA_VERSION: v2.9.2
MDVPN_REF: android-vpnservice-protect-hook
Comment thread
coderabbitai[bot] marked this conversation as resolved.
permissions:
contents: read
jobs:
Expand Down Expand Up @@ -44,14 +45,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v5
- name: Sidecars Status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/lib/masterdnsvpn.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
- name: Sidecars Cache
id: cache
uses: actions/cache@v5
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
with:
path: |
app/executableSo
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-sidecars
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-${{ env.MDVPN_REF }}-sidecars
- name: Install Golang
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/setup-go@v6
Expand All @@ -63,6 +64,9 @@ jobs:
- name: Hysteria2 Download
if: steps.cache.outputs.cache-hit != 'true'
run: ./run lib hysteria2
- name: MasterDnsVPN Build
if: steps.cache.outputs.cache-hit != 'true'
run: ./run lib masterdnsvpn
build:
name: Build OSS APK
runs-on: ubuntu-latest
Expand All @@ -83,18 +87,18 @@ jobs:
app/libs/libcore.aar
key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }}
- name: Sidecars Status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/lib/masterdnsvpn.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
- name: Sidecars Cache
id: sidecars-cache
uses: actions/cache@v5
with:
path: |
app/executableSo
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-sidecars
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-${{ env.MDVPN_REF }}-sidecars
- name: Verify Sidecar Artifacts
run: |
for abi in arm64-v8a armeabi-v7a x86 x86_64; do
for so in libmieru.so libhysteria2.so; do
for so in libmieru.so libhysteria2.so libmasterdnsvpn.so; do
if [ ! -f "app/executableSo/$abi/$so" ]; then
echo "Error: missing app/executableSo/$abi/$so (sidecar cache miss)" >&2
exit 1
Expand Down
24 changes: 14 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:
env:
MIERU_VERSION: v3.34.0
HYSTERIA_VERSION: v2.9.2
MDVPN_REF: android-vpnservice-protect-hook
permissions:
contents: read
jobs:
Expand Down Expand Up @@ -49,14 +50,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v5
- name: Sidecars Status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/lib/masterdnsvpn.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
- name: Sidecars Cache
id: cache
uses: actions/cache@v5
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
with:
path: |
app/executableSo
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-sidecars-ci
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-${{ env.MDVPN_REF }}-sidecars-ci
- name: Install Golang
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/setup-go@v6
Expand All @@ -68,6 +69,9 @@ jobs:
- name: Hysteria2 Download
if: steps.cache.outputs.cache-hit != 'true'
run: ./run lib hysteria2
- name: MasterDnsVPN Build
if: steps.cache.outputs.cache-hit != 'true'
run: ./run lib masterdnsvpn
build:
name: Build OSS APK
runs-on: ubuntu-latest
Expand All @@ -93,18 +97,18 @@ jobs:
app/libs/libcore.aar
key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }}-ci
- name: Sidecars Status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/lib/masterdnsvpn.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
- name: Sidecars Cache
id: sidecars-cache
uses: actions/cache@v5
with:
path: |
app/executableSo
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-sidecars-ci
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-${{ env.MDVPN_REF }}-sidecars-ci
- name: Verify Sidecar Artifacts
run: |
for abi in arm64-v8a armeabi-v7a x86 x86_64; do
for so in libmieru.so libhysteria2.so; do
for so in libmieru.so libhysteria2.so libmasterdnsvpn.so; do
if [ ! -f "app/executableSo/$abi/$so" ]; then
echo "Error: missing app/executableSo/$abi/$so (sidecar cache miss)" >&2
exit 1
Expand All @@ -128,8 +132,8 @@ jobs:
APK=$(find app/build/outputs/apk -name '*arm64-v8a*.apk')
APK=$(dirname $APK)
echo "APK=$APK" >> $GITHUB_ENV
# - name: Upload Artifacts
# uses: actions/upload-artifact@v5
# with:
# name: APKs
# path: ${{ env.APK }}
- name: Upload Artifacts
uses: actions/upload-artifact@v5
with:
name: NekoBox-debug-apks
path: ${{ env.APK }}
14 changes: 9 additions & 5 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
env:
MIERU_VERSION: v3.34.0
HYSTERIA_VERSION: v2.9.2
MDVPN_REF: android-vpnservice-protect-hook
permissions:
contents: read
jobs:
Expand Down Expand Up @@ -40,14 +41,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v5
- name: Sidecars Status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/lib/masterdnsvpn.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
- name: Sidecars Cache
id: cache
uses: actions/cache@v5
with:
path: |
app/executableSo
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-sidecars
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-${{ env.MDVPN_REF }}-sidecars
- name: Install Golang
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/setup-go@v6
Expand All @@ -59,6 +60,9 @@ jobs:
- name: Hysteria2 Download
if: steps.cache.outputs.cache-hit != 'true'
run: ./run lib hysteria2
- name: MasterDnsVPN Build
if: steps.cache.outputs.cache-hit != 'true'
run: ./run lib masterdnsvpn
build:
name: Build OSS APK
runs-on: ubuntu-latest
Expand All @@ -79,18 +83,18 @@ jobs:
app/libs/libcore.aar
key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }}
- name: Sidecars Status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/lib/masterdnsvpn.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
- name: Sidecars Cache
id: sidecars-cache
uses: actions/cache@v5
with:
path: |
app/executableSo
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-sidecars
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-${{ env.MDVPN_REF }}-sidecars
- name: Verify Sidecar Artifacts
run: |
for abi in arm64-v8a armeabi-v7a x86 x86_64; do
for so in libmieru.so libhysteria2.so; do
for so in libmieru.so libhysteria2.so libmasterdnsvpn.so; do
if [ ! -f "app/executableSo/$abi/$so" ]; then
echo "Error: missing app/executableSo/$abi/$so (sidecar cache miss)" >&2
exit 1
Expand Down
14 changes: 9 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ on:
env:
MIERU_VERSION: v3.34.0
HYSTERIA_VERSION: v2.9.2
MDVPN_REF: android-vpnservice-protect-hook
permissions:
contents: write
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
jobs:
Expand Down Expand Up @@ -46,14 +47,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v5
- name: Sidecars Status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/lib/masterdnsvpn.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
- name: Sidecars Cache
id: cache
uses: actions/cache@v5
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
with:
path: |
app/executableSo
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-sidecars
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-${{ env.MDVPN_REF }}-sidecars
- name: Install Golang
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/setup-go@v6
Expand All @@ -65,6 +66,9 @@ jobs:
- name: Hysteria2 Download
if: steps.cache.outputs.cache-hit != 'true'
run: ./run lib hysteria2
- name: MasterDnsVPN Build
if: steps.cache.outputs.cache-hit != 'true'
run: ./run lib masterdnsvpn
build:
name: Build OSS APK
runs-on: ubuntu-latest
Expand All @@ -85,18 +89,18 @@ jobs:
app/libs/libcore.aar
key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }}
- name: Sidecars Status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
run: cat buildScript/lib/mieru.sh buildScript/lib/hysteria2.sh buildScript/lib/masterdnsvpn.sh buildScript/init/env.sh buildScript/init/env_ndk.sh | sha1sum > sidecars_status
- name: Sidecars Cache
id: sidecars-cache
uses: actions/cache@v5
with:
path: |
app/executableSo
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-sidecars
key: ${{ hashFiles('.github/workflows/*', 'sidecars_status') }}-${{ env.MIERU_VERSION }}-${{ env.HYSTERIA_VERSION }}-${{ env.MDVPN_REF }}-sidecars
- name: Verify Sidecar Artifacts
run: |
for abi in arm64-v8a armeabi-v7a x86 x86_64; do
for so in libmieru.so libhysteria2.so; do
for so in libmieru.so libhysteria2.so libmasterdnsvpn.so; do
if [ ! -f "app/executableSo/$abi/$so" ]; then
echo "Error: missing app/executableSo/$abi/$so (sidecar cache miss)" >&2
exit 1
Expand Down
Loading
Loading