Files
park0er-multi-casual-android/CHANGELOG.md
T
klinsmaya bbcb2f9ec0 Add custom server config and remember-me login.
Allow runtime API/Web/WebSocket URLs via DataStore, plus a remember-login
toggle that clears tokens when the app stops if it is off.
2026-09-15 00:46:18 +08:00

161 lines
5.5 KiB
Markdown
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.
# Changelog
## [Unreleased] - 2026-06-11
### Added
#### 自定义服务器配置功能 (Custom Server Configuration)
- **服务器配置管理**
- 新增 `ServerConfigManager.kt` - 使用 DataStore 持久化存储服务器配置
- 新增 `ServerConfigHolder.kt` - 全局单例提供运行时配置访问
- 支持配置自定义 API、Web、WebSocket 服务器地址
- 支持从单个域名自动派生三个 URL(简单模式)
- 支持手动配置每个 URL(高级模式)
- 重置为默认 Multica 公开服务器功能
- **用户界面**
- 登录页面添加"自定义服务器"入口
- 设置页面添加"开发者选项 → 自定义服务器"入口
- Cupertino 风格的服务器配置页面
- 实时配置验证和错误提示
- 中英文双语支持
- **依赖注入改造**
- `ApiClient.java` 新增 `UrlProvider` 接口
- 支持运行时动态切换服务器地址
- `MainActivity.java``ComposePilotActivity.kt` 适配新的 URL 提供方式
- **应用启动优化**
- `MulticaApplication.java` 添加配置预加载
- 确保 ApiClient 创建前配置已就绪
#### 记住登录状态功能 (Remember Me)
- **持久化登录选项**
- `AuthStore.java` 新增 `rememberLogin()``setRememberLogin()` 方法
- 登录界面添加"记住登录状态"开关(默认开启)
- 支持中英文:"记住登录状态" / "Remember me"
- **自动登出机制**
- `ComposePilotActivity` 新增 `onStop()` 生命周期管理
- 未勾选"记住登录"时,应用退出自动清空 token
- 勾选时保持登录状态持久化
### Changed
#### 网络安全配置
- **HTTP 支持**
- `app/build.gradle` - 将 `usesCleartextTraffic``false` 改为 `true`
- 支持自托管场景使用 HTTP 协议(包括本地测试)
- 允许连接到非 HTTPS 的自定义服务器
#### 登录流程优化
- 保存配置时会自动清空旧 token,要求重新登录(安全考虑)
- 重置服务器配置时同样清空 token
### Technical Details
#### 新增文件
```
app/src/main/java/ai/multica/app/
├── ServerConfigManager.kt # 服务器配置管理(DataStore
└── ServerConfigHolder.kt # 全局配置单例
```
#### 修改文件
```
app/build.gradle # DataStore 依赖 + cleartext 流量配置
app/src/main/AndroidManifest.xml # usesCleartextTraffic 占位符
app/src/main/java/ai/multica/app/
├── ApiClient.java # UrlProvider 接口 + 动态 URL
├── AuthStore.java # rememberLogin 存储
├── MainActivity.java # ApiClient 构造注入 UrlProvider
├── MulticaApplication.java # 配置预加载
└── ComposePilotActivity.kt # 服务器配置 UI + 记住登录 UI + onStop
```
#### 新增依赖
```gradle
implementation "androidx.datastore:datastore-preferences:1.0.0"
```
#### 代码统计
- 新增代码:约 450 行
- 修改代码:约 80 行
- 新增文件:2 个
- 修改文件:7 个
### Security Considerations
1. **服务器切换安全**
- 切换服务器时强制清空 token,防止 token 泄露到错误服务器
- 配置保存后要求用户重新登录验证
2. **HTTP 流量警告**
- 允许 cleartext HTTP 是为了支持自托管和本地测试
- 生产环境建议使用 HTTPS
3. **登录状态管理**
- 默认"记住登录"开启,保持用户体验
- 提供选项关闭,支持共享设备场景
### User Experience
#### 自定义服务器工作流
1. 登录页或设置页点击"自定义服务器"
2. 简单模式:输入域名(如 `example.com`)自动派生三个 URL
3. 高级模式:手动配置每个 URL(支持非标准端口)
4. 保存后自动跳转登录页
5. 使用自定义服务器账号登录
#### 记住登录工作流
1. 登录时勾选/取消"记住登录状态"
2. 勾选:关闭应用后保持登录
3. 不勾选:关闭应用后自动登出
### Known Issues & Limitations
1. **构建环境**
- Gradle wrapper 在某些 macOS 环境下可能遇到权限问题
- 建议使用 Android Studio 进行构建
2. **服务器兼容性**
- 假设自托管服务完全兼容 Multica API
- 未实现 API 版本检测和兼容性验证
3. **连通性测试**
- 保存配置时仅做 URL 格式验证
- 不验证服务器可访问性(运行时连接失败才报错)
### Future Improvements (TODO)
- [ ] 添加服务器连通性测试(保存前验证)
- [ ] 使用 CompositionLocal 替代全局单例 `ServerConfigHolder`
- [ ] 实现 API 版本检测和兼容性提示
- [ ] 配置导入导出功能(便于团队共享)
- [ ] 多环境预设配置模板
### Testing Checklist
- [x] 简单模式域名派生 URL
- [x] 高级模式手动配置 URL
- [x] 重置为默认服务器
- [x] 配置持久化(应用重启)
- [x] 登录页服务器配置入口
- [x] 设置页服务器配置入口
- [x] HTTP cleartext 流量支持
- [x] 记住登录状态 UI
- [ ] 记住登录功能测试(需要编译安装)
- [ ] 自动登出测试(需要编译安装)
- [ ] 自定义服务器登录测试(需要自托管实例)
---
## Notes
本次更新主要面向以下用户场景:
1. **企业自托管部署** - 使用自有服务器运行 Multica
2. **本地开发测试** - 连接本地开发环境进行调试
3. **共享设备使用** - 支持不记住登录状态,保护隐私
所有功能均保持向后兼容,默认使用 Multica 公开服务器,普通用户无感知。