Files
pangolin/client/pubspec.yaml
T
wangjia 837bf55f6a fix(client): 「今日剩余」不再冻结 —— 倒计时兜底启动 + 会话后静默刷新 /me(1.0.46+47)
免费版「今日剩余 xx 分钟」一直不变的两处原因:
1. 倒计时仅在经 _connect 连接时锁定 _freeRemainingSec;Android 常驻隧道/重启后自动
   同步到已在跑的隧道时不走 _connect → 倒计时不启,连接页只显示静态「今日剩余」。
   现于 _onKernelStatus.on 兜底:免费且未锁定则按当前额度补锁,保证显示会动的倒计时。
2. /me 仅登录时拉一次,会话消耗后不刷新 → 「今日剩余」停在登录值。现于断开/内核掉线
   后静默刷新 /me(新增 MeNotifier.silentRefresh,不进 AsyncLoading → 不闪整页 spinner)。
   markExhausted / watchAd 也改用 silentRefresh,避免额度变动时连接页闪 spinner。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 01:54:53 +08:00

90 lines
3.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: pangolin_vpn
description: 穿山甲 · Pangolin — 极简、稳定、跨平台网络加速客户端。
publish_to: "none"
version: 1.0.46+47
environment:
sdk: ^3.5.0
flutter: ">=3.24.0"
dependencies:
flutter:
sdk: flutter
flutter_svg: ^2.0.10 # 加载 assets/ 下的矢量 logo
country_flags: ^3.1.0 # 节点国旗(SVG,全平台含 Windows;按 region 码渲染)
lucide_icons: ^0.257.0 # Lucide 细线条图标
google_fonts: ^6.2.1 # 运行时加载 Sora / Manrope / Noto Sans SC / JetBrains Mono
flutter_riverpod: ^2.5.1 # 状态层(连接状态机 / 免费额度 / 节点选择 / 语言 / 主题)
http: ^1.2.1 # 控制面 HTTP 客户端(connect API
path_provider: ^2.1.3 # 获取应用支持目录(sing-box 配置路径)
flutter_secure_storage: ^9.2.2 # JWT token 安全存储 + 稳定 device_id 持久化
shared_preferences: ^2.5.5
package_info_plus: ^9.0.1
device_info_plus: ^11.2.0 # 设备名/平台(「我的设备」上报)
uuid: ^4.5.1 # 客户端生成稳定 device_id (UUID v4)
launch_at_startup: ^0.5.1
tray_manager: ^0.5.3
window_manager: ^0.5.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^4.0.0
flutter_launcher_icons: ^0.14.1
# ── App 图标生成(flutter_launcher_icons)──
# 源图 assets/app-icon-ios-1024.png = design 单源 assets/app-icon.svg 去掉圆角(rx=0,全幅
# 方形,iOS 自行加圆角)、qlmanage 渲染 1024 而来。改图标:重渲源图后跑
# `dart run flutter_launcher_icons`(自动铺 iPhone+iPad 全尺寸、去 alpha、重写 Contents.json)。
flutter_launcher_icons:
ios: true
remove_alpha_ios: true
image_path: "assets/app-icon-ios-1024.png"
# lucide_icons-0.257.0 defines LucideIconData extends IconData, which breaks
# when Flutter SDK marks IconData as final. Override with a local patched copy
# that replaces the subclass with direct IconData(...) const constructors.
dependency_overrides:
lucide_icons:
path: packages/lucide_icons_patched
flutter:
uses-material-design: true
# ── 资产(SVG logo)──
assets:
- assets/logo-mark.svg
- assets/logo-mark-white.svg
- assets/logo-wordmark.svg
- assets/app-icon.svg
- assets/tray_icon.png
- assets/tray_icon.ico # Windows 托盘专用(Win32 只认 .ico)
# ── 字体(本地打包,全平台离线)──
# 拉丁全量(Sora/Manrope/JetBrains Mono)+ Noto Sans SC 子集(GB2312 6763 字,单 Regular
# 权重;CJK 粗体由引擎合成)。子集由 tools/fonts/make-cjk-subset.sh 可复现生成。
# 生产经 PangolinFonts.useBundled=true 走这些 family;中文经 fontFamilyFallback 兜底。
fonts:
- family: Sora
fonts:
- asset: fonts/Sora-Regular.ttf
- asset: fonts/Sora-SemiBold.ttf
weight: 600
- asset: fonts/Sora-Bold.ttf
weight: 700
- family: Manrope
fonts:
- asset: fonts/Manrope-Regular.ttf
- asset: fonts/Manrope-Medium.ttf
weight: 500
- asset: fonts/Manrope-SemiBold.ttf
weight: 600
- asset: fonts/Manrope-Bold.ttf
weight: 700
- family: JetBrains Mono
fonts:
- asset: fonts/JetBrainsMono-Regular.ttf
- family: Noto Sans SC
fonts:
- asset: fonts/NotoSansSC-Regular-subset.otf