101b31e0734114aa7d7335577042cec7bdb49306
上一版为防水合不一致加了 !mounted 中性首帧,反而制造了额外一段:一次 Cmd+R 走 裸 spinner(mounted=false)→ 应用外壳(乐观)→ 内容区(overview),三段重绘 = 用户看到的"刷新两次(先主显示区、后整页)"。 改:去掉 mounted gate;引导期(!ready)一律渲染 appShell(spinner)——外壳骨架 (顶栏/导航就位、内容区加载态)。因 render 期不读 localStorage/hasRefresh,SSR 与 客户端首帧一致、无水合不一致,静态 HTML 首帧即外壳。引导完成后只把内容区从 spinner 换成真实视图,顶栏/导航原地不动 → 刷新只有内容区一次替换,不再整页重绘。 代价:未登录用户刷新 /user/ 会先见外壳骨架再落登录页(极短、且随即要登录), 可接受;已登录用户(刷新的绝大多数场景)全程外壳稳定、无闪。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pangolin
面向中国大陆用户的终端 VPN(科学上网)项目。
- 设计方案:
docs/技术方案.md - 实施计划:
plan/ - 部署(Phase 0,容器化 + CI/CD):
deploy/
Phase 0 现状
数据面两条线,容器化、经 Gitea Actions 自动部署到节点,与现网服务隔离:
- Xray VLESS + REALITY(主线,经宿主 nginx SNI 分流)
- sing-box Hysteria2(晚高峰加速线,UDP 443)
部署细节见 deploy/README.md。
Description
Releases
22
client 1.1.1
Latest
Languages
Go
36%
Dart
21.3%
JavaScript
13%
HTML
12.8%
Shell
4.4%
Other
12.3%