Files
toor 8ff7b879b9 refactor: 个人自用,移除登录与云同步全链路
站点只给本人用,云乐坊 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
2026-10-22 15:52:54 +08:00

63 lines
4.0 KiB
Markdown
Raw Permalink 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.
# 0004 只保留 Web,移除 Capacitor 原生壳
- 状态:部分被 0005 取代
- 日期:2026-10-21
- 关联:取代 [0003 原生 iOS App 与 monorepo 结构](./0003-native-ios-monorepo);云乐坊 SSO 部分被 [0005 个人自用,去掉登录与云同步](./0005-drop-login-and-sync) 取代
## 背景
- 仓库同时维护着三套东西: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.ylf` JSAPI),原生壳带来的能力
(状态栏配色、物理返回键、原生 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 保留。