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

5.5 KiB
Raw Blame History

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.javaComposePilotActivity.kt 适配新的 URL 提供方式
  • 应用启动优化

    • MulticaApplication.java 添加配置预加载
    • 确保 ApiClient 创建前配置已就绪

记住登录状态功能 (Remember Me)

  • 持久化登录选项

    • AuthStore.java 新增 rememberLogin()setRememberLogin() 方法
    • 登录界面添加"记住登录状态"开关(默认开启)
    • 支持中英文:"记住登录状态" / "Remember me"
  • 自动登出机制

    • ComposePilotActivity 新增 onStop() 生命周期管理
    • 未勾选"记住登录"时,应用退出自动清空 token
    • 勾选时保持登录状态持久化

Changed

网络安全配置

  • HTTP 支持
    • app/build.gradle - 将 usesCleartextTrafficfalse 改为 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

新增依赖

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

  • 简单模式域名派生 URL
  • 高级模式手动配置 URL
  • 重置为默认服务器
  • 配置持久化(应用重启)
  • 登录页服务器配置入口
  • 设置页服务器配置入口
  • HTTP cleartext 流量支持
  • 记住登录状态 UI
  • 记住登录功能测试(需要编译安装)
  • 自动登出测试(需要编译安装)
  • 自定义服务器登录测试(需要自托管实例)

Notes

本次更新主要面向以下用户场景:

  1. 企业自托管部署 - 使用自有服务器运行 Multica
  2. 本地开发测试 - 连接本地开发环境进行调试
  3. 共享设备使用 - 支持不记住登录状态,保护隐私

所有功能均保持向后兼容,默认使用 Multica 公开服务器,普通用户无感知。