Repository navigation
Rebrand to Yukinine VPN with Material Design 3 theme - #1
Open
yukinine-dev wants to merge 14 commits into
Open
yukinine-dev wants to merge 14 commits into
yukinine-dev wants to merge 14 commits into
Conversation
Switches the published app ID to the Yukinine VPN brand while leaving the Kotlin source namespace (com.v2ray.ang) intact so the existing import graph keeps compiling.
Light scheme seeded from a deep indigo primary (#4A55A2) with a lavender secondary; dark scheme mirrored. Adds discrete surface container tones (low/medium/high/highest) so MD3 components stop flattening to a single surface color, plus status_connected/connecting/disconnected swatches for VPN state UI.
Applies the wallpaper-derived palette to every activity on devices that support it; pre-12 devices fall back to the static Yukinine palette.
Hoists enableEdgeToEdge() into BaseActivity.onCreate so every activity (including those routed through HelperBaseActivity) opts in once, and switches the theme to transparent system bars with the navigation bar contrast scrim disabled — the edge-to-edge API now controls bar appearance based on day/night mode.
Adds the core-splashscreen dependency, a Theme.YukinineVPN.Splash that draws a stylized 'Y' on the primaryContainer color, points MainActivity's launcher theme at it in the manifest, and calls installSplashScreen() before super in MainActivity.onCreate so the splash hands off cleanly to the app theme.
Replaces the white v2rayNG bitmap foreground with a vector 'Y' on a deep-indigo (#4A55A2) background and wires up a monochrome layer for themed icons. The legacy ic_launcher_foreground.png densities are left in place as a fallback for Android 7 (API 24-25), which doesn't render adaptive-icon XML.
Replaces the floating connect FAB with a filled MaterialCardView at the top of the main screen. The card hosts a 160dp circular MaterialButton whose tint swaps between primaryContainer (idle) and tertiaryContainer (active), plus a titleLarge status label and a bodyMedium subtitle that surfaces the currently selected server's remarks. The whole card is tappable as a fallback target. The connectivity test footer is kept underneath for ping checks.
Replaces the overflow-style 'Add' submenu with a Material 3 bottom sheet. The sheet surfaces the four primary import paths (QR, clipboard, file, subscription refresh) as filled rounded rows backed by secondaryContainer icon tiles, and exposes the per-protocol manual entry options as a chip group below. The MainActivity onOptionsItemSelected loses the parallel case ladder and just opens the sheet for the consolidated entry point.
Wraps the domain-strategy row in a filled MaterialCardView, adds a second card hosting a MaterialButtonToggleGroup that exposes each predefined ruleset (China Whitelist/Blacklist, Global, Iran, Russia) as a quick toggle. Tapping a toggle confirms via dialog before delegating to the existing SettingsManager.resetRoutingRulesetsFromPresets path so the underlying rule serialization is unchanged.
Decode-keystore and release signing steps now require APP_KEYSTORE_BASE64 to be set. When it isn't (fork PR builds, fresh clones), the workflow builds an unsigned debug APK and uploads it as yukinine-vpn-debug instead, so CI can verify that branch changes still compile without committing keystore material to the fork.
GitHub Actions disallows the secrets context inside step-level if expressions, so feature-branch builds were failing workflow validation. Switches the gate to github.ref == refs/heads/master (or workflow_dispatch) — non-master pushes fall through to assembleDebug + a yukinine-vpn-debug artifact.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR rebrand the application from v2rayNG to Yukinine VPN and implements a comprehensive Material Design 3 color system with dynamic theming support.
Key Changes
Branding & Identity
com.v2ray.angtocom.yukinine.vpnMaterial Design 3 Theme System
Dynamic Theming
Splash Screen
Visual Assets
Code Updates
enableEdgeToEdge()call in BaseActivity for proper edge-to-edge renderinginstallSplashScreen()in MainActivityDynamicColors.applyToActivitiesIfAvailable()in AngApplication for system theme supporthttps://claude.ai/code/session_01HDin65wpqy2HFicF8QZnrj