站点只给本人用,云乐坊 SSO 授权、收藏/历史云同步、获客归因和账号切换记账都没有收益,却被登录状态检查和同步失败提示持续打扰。 - 删除 useYunlefunAuth / yunlefunAuth / yunlefunSsoConfig / yunlefunAuth 适配器、useUserDataSync / userDataSync / userData 适配器、三个 client 插件与 /auth/callback 回调页 - 抽出 adapters/cloudbase.ts,让「反馈一下」和匿名筛选信号不再依赖登录态;cook-feedback 云函数保留 - 删除 cook-user-data 云函数与 cook_user_data 权限规则,移除 @yunlefun/sso 依赖 - 「我的」页删掉登录按钮、账号卡、四个统计格和退出登录;「关于」页删掉项目作者、致谢名单和上游宣传链接 - 本地收藏/历史与导出导入保留,删除同步专用的 lastUid 记账 取舍见 docs/decisions/0005-drop-login-and-sync.md
4.0 KiB
4.0 KiB
0004 只保留 Web,移除 Capacitor 原生壳
- 状态:部分被 0005 取代
- 日期:2026-10-21
- 关联:取代 0003 原生 iOS App 与 monorepo 结构;云乐坊 SSO 部分被 0005 个人自用,去掉登录与云同步 取代
背景
- 仓库同时维护着三套东西:Nuxt Web 应用、Capacitor 的 iOS 壳、Capacitor 的 Android 壳。
- Capacitor 依赖比想象中深:登录走原生浏览器 + 原生回调 URL,暗色模式改原生状态栏,Android 有物理返回键处理,
SSO 事务存在
Preferences里。为此多出了nativeSso.ts、createNativeYunlefunAuthorizationAdapter、resolveYunlefunSsoConfig的platform分支,以及 6 个只为原生分支存在的测试文件。 - 0003 决定用 SwiftUI 原生版替换 Capacitor 版,把 iOS 当作要上架收费的主力。但 SwiftUI 工程
(
apps/ios)至今没有开工,Capacitor 壳反而成了长期负担:每次升级@capacitor/*都要在 Web 侧 重新验证原生分支,而这些分支在浏览器里根本走不到。 - 实际使用中,Web 版已经同时服务普通浏览器和云乐坊容器(
window.ylfJSAPI),原生壳带来的能力 (状态栏配色、物理返回键、原生 SSO 回跳)都有 Web 侧的等价实现。
方案对比
| 问题 | 方案 | 取舍 |
|---|---|---|
| 原生壳去留 | 保留 Capacitor iOS + Android | 两条壳都要跟 @capacitor/* 版本走;Web 侧原生分支长期没人跑 |
| 只删 Android,保留 iOS | iOS 壳仍在,Capacitor 依赖无法卸掉,清理不彻底 | |
| 全部移除,只保留 Web | 失去上架 App 与原生 SSO;换来单一代码路径和持续可维护的 Web |
决定
删除
android/、ios/两个 Capacitor 原生壳工程。capacitor.config.ts、根ionic.config.json。scripts/android/、scripts/ios.sh。- 根与
apps/web的package.json里全部@capacitor/*依赖,以及dev:android、build:android、dev:ios、ios、android、open:ios、open:android、sync等脚本。
Web 侧去 Capacitor 化
composables/dark.ts:只改meta[name="theme-color"],不再设置原生状态栏。pages/tabs.vue:移除 Android 物理返回键处理(浏览器自带返回,无需拦截)。adapters/yunlefunAuth.ts:删掉原生授权适配器和基于Preferences的事务存储,只保留 Web 授权适配器。utils/nativeSso.ts:整体删除。它的产物只是原生 SSO 的 PKCE 事务与回调解析,Web 端走@yunlefun/sso的顶层重定向,不需要。utils/yunlefunAuth.ts/utils/yunlefunSsoConfig.ts:控制器和配置解析去掉platform分支, 只保留 Web 一种形态。nuxt.config.ts:去掉yunlefunSsoNativeClientId/yunlefunSsoNativeRedirectUri。
保留
@nuxtjs/ionic与 Ionic UI:Ionic 是 Web UI 框架,与 Capacitor 无关。utils/yunleHost.ts与云乐坊容器(window.ylf)集成:这是 Web 被嵌入第三方 App 容器时的适配层, 和 Capacitor 无关。- PWA 安装、Service Worker、离线能力:都是 Web 能力。
影响
- 不再有 iOS / Android 安装包。若之后要上架,需要另起仓库做原生工程,而不是把 Capacitor 壳捡回来。
- 云乐坊 SSO 在 Web 上继续可用:容器内走宿主授权面板,容器外走顶层重定向回到
https://cook.yunyoujun.cn/auth/callback。PKCE 与 HTTPS 回跳地址的约束不变。 docs/dev/ios-roadmap.md与docs/decisions/0003-native-ios-monorepo.md随之作废。@nuxtjs/ionic自身仍会传递依赖@capacitor/cli/@capacitor/core(构建期使用,运行时不会调用),pnpm-workspace.yaml里对应的 override 保留。