nativemind_vpn 1.2.1
nativemind_vpn: ^1.2.1 copied to clipboard
VPN client widgets made by hand: Gleb Sosnin's connect button, stat tiles, location card, server and app lists, search sheet and tab bar, Wishyut's settings widgets, the VPN editions (Pink / Orange / [...]
1.2.1 #
- Docs: README (install, handmade authors and roles, links), migration guide, PROVENANCE.
- pubspec:
repositoryfield so README links resolve on pub.dev.
1.2.0 #
Follow-up of task 4.1 (SDD flows/sdd-widgets-handmade): what VPNclient-app had to build around the handmade widgets
moves into them. Additive — every new parameter is optional and its default is the 1.1.0 behaviour; the authors' code
changes only inside marked >>> generated blocks.
NmNavBar(Gleb Sosnin), Figma «Tabbar» 78:402 / «Tabbar-Mini» 902:10897 of Alexander Kuptsov:gradient— the active icon is filled with the edition's gradient, and Speed / Settings get an active state too (the author drew active icons for Apps, Servers and Home only, in Blue); the mini bar draws them at the Figma size (32 px Speed, 34 × 32 Settings);slots— 1–3 of the author's tabs (0 Apps … 4 Settings) as Figma «Tabbar-Mini»: 44-px slots 104 px apart, centred, 14 px from the top of the 58-px bar over the 34-px home bar;initialIndex/onItemTappedcount positions in it;labels(Semantics: button, selected),itemKeys(tap targets),badges(unread count:NmBadgeof nativemind_core on the slot's top-right corner, Figma «Settings-Push» 829:20931).
NmServerListItem,NmAppListItem,NmLocationWidget: a long name ellipsizes on one line instead of overflowing the row (short names lay out as before).NmSearchDialog: «Поиск», «Готово», «Отмена», «Недавно искали», «Ничего не найдено» come from Wishyut's strings (NmVpnL10n:search,done,cancel,recently_searched,nothing_found); Russian stays theruvalue. 1.1.0 showed Russian in every language.NmSettingInfoCard.version— the value of the «Version» row (default'v 1.0', the author's fixed text); a long row value (host, link, id) ellipsizes instead of overflowing (goldenslists_settings_*: sub-pixel text shift only).
1.1.0 #
Strings of the handmade widgets from Wishyut's JSON files (SDD flows/sdd-widgets-handmade, task 2.12). Additive; the 1.0.0 API stays.
assets/lang/{en,ru,th,zh}.json: Wishyut's string files (VPNclient-app, 2025; 38 keys, byte-identical), read at run time byNmLocalizationService(Wishyut; innativemind_core1.1.0 — the minimum core is now ^1.1.0).NmVpnL10nis a typed wrapper over them: a getter per key (38; the 11 of 1.0.0 keep their names),operator [],keys,languages,NmVpnL10n.delegate(loads the locale's file; any locale, English file when missing) andNmVpnL10n.load(locale)(for widget tests:setUpAll(() => NmVpnL10n.load(const Locale('en')))). Before a file is loaded the getters read Wishyut's English.- The handmade widgets now show his texts: status labels upper-case as in Figma («CONNECTED», «ПОДКЛЮЧЕН»), «Your Location», «Auto Select», «All Applications»; Wishyut's settings widgets read the real service (1.0.0: an English-only stand-in), so ru / th / zh work.
NmNetwork.delegatealso loads Wishyut's strings, so an app set up for 1.0.0 (only this delegate) keeps working; addNmVpnL10n.delegatenext to it.- Deprecated (removed in 2.0): the
NmNetworkL10ngetters Wishyut's keys replace —stateDisconnected,stateConnecting,stateConnected,stateDisconnecting,stateReconnecting,yourLocation,autoSelect,fastest,selectedServer,allServers,allApps(use theNmVpnL10ngetters of the same meaning). The otherNmNetworkstrings (ping, subscriptions, split tunnelling) stay for the 0.x network widgets. NmServerLocation.labelreadsNmVpnL10n.auto_selectfor the automatic choice.- Dependencies:
nativemind_core^1.1.0; nonativemind_translations/nativemind_copilot(noflutter_llamain any VPN edition, GOST included).
1.0.0 #
First release (SDD flows/sdd-widgets-handmade, Phase 2, tasks 2.1–2.11).
- Handmade widgets of Gleb Sosnin (VPNclient-app, 2025):
NmMainBtn,NmStatBar,NmLocationWidget,NmServersList/NmServerListItem,NmAppsList/NmAppListItem,NmSearchDialog,NmNavBar,NmConnectionStatus, tokensnmLightTheme/nmDarkTheme/nmMainGradient,NmVpnCustomIcons, tab icons, dimensions. - Handmade widgets of Wishyut:
NmActionButton,NmResetSettingsDialog,NmSettingInfoCard,NmSupportServiceCard,NmSnackbarUtils,NmUrlLauncherUtils,NmCustomString. - Data and callbacks from the app (no Provider / SharedPreferences /
dart:ioinside): see PROVENANCE.md; Map rows from the models viatoHandmadeMap(). - Dark theme completed (NativeMind DS: background #0F1419); values that differed from Figma replaced (figma-fix blocks).
- Editions as data:
NmVpnEditions.configs(NmConfigsof nativemind_core) — Pink, Orange, Green, Blue (Figma), Red, Blue-GOST (VPNclient-app palettes). - Moved from
nativemind_widgets/network.dart:NmCountryFlag,NmPingBadge,NmServerSubscriptionCard,NmAddSubscriptionCard, models,NmNetworkstrings, flag and app SVGs (NmVpnSvgIcons,NmVpnSvgIcon). - Deprecated (removed in 2.0):
NmConnectButton→NmMainBtn,NmConnectionStats→NmStatBar,NmCurrentLocationCard→NmLocationWidget,NmServerLocationList/Tile→NmServersList/NmServerListItem,NmSplitTunnelAppList→NmAppsList. - Breaking vs
nativemind_widgets/network.dart:nmAppIcon(name)is nownmTunnelAppIcon(name);NmSvgIcons.flags*/apps*areNmVpnSvgIcons.*(draw them withNmVpnSvgIconorNmCountryFlag).