nativemind_vpn

VPN client widgets made by hand by Gleb Sosnin and Wishyut (VPNclient-app, 2025), carried over with their code as it was (see PROVENANCE.md), plus the VPN editions as data, country flags and app marks.

NmMainBtn(status: vpn.status, timeText: vpn.time, onToggle: vpn.toggle, gradient: edition.main);
NmServersList(servers: [for (final s in servers) s.toHandmadeMap(context, isActive: s.id == selected)], onServersLoaded: save);
final edition = NmVpnEditions.configs.current(); // --dart-define=NM_EDITION=net.vpnclient.orange

Use nmLightTheme / nmDarkTheme (Gleb Sosnin's color schemes) and add NmVpnL10n.delegate and NmNetwork.delegate to the app's localization delegates. Strings are Wishyut's JSON files (assets/lang/, en / ru / th / zh) read at run time by NmLocalizationService (nativemind_core); in widget tests load them first: setUpAll(() => NmVpnL10n.load(const Locale('en'))). License: NativeMindNONC (LICENSE).

Libraries

nativemind_vpn
VPN client widgets made by hand (Gleb Sosnin, Wishyut; VPNclient-app 2025), the VPN editions as data, country flags and app marks, and the earlier library widgets moved from nativemind_widgets/network.dart (the ones the handmade widgets replace are deprecated). Use it with nativemind_core (theme, NmConfigs).