Skip to content

Release v1.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Aug 20:37

FloatyAnswer v1.7.0

更新内容

新增

  • 三窗口悬浮窗架构:将原来的单窗口拆分为 A(悬浮按钮)、B(快捷按键)、C(答案卡片)、D(答案详情)四个独立窗口,各自独立管理布局和触摸事件
  • Constants:提取 STEALTH_ALPHA、VISIBLE_ALPHA、HIDDEN_ALPHA 命名常量,替换硬编码魔术数字
  • WindowAContent / WindowBContent / WindowCContent / WindowDContent 四个独立 Composable
  • 设置页新增"长按触发时长"滑块(300ms~3000ms),用户可自定义悬浮按钮长按时间
  • 进入答题模式按钮增加模型检测:未配置语言模型时按钮灰显"请先配置模型"

修复

  • 隐身模式下通知内容不再暴露:仅显示应用名称,隐藏详细内容文本
  • 隐身模式读取统一走 AppConfig.isStealthModeEnabled(),消除直接 MMKV 访问的重复路径
  • Window D 在答案未就绪时就出现:imageCallbacks.onResultshowAnswer 在数据填充前设置
  • Window C 高度冗余空白:初始高度从 200dp 改为 60dp,匹配紧凑卡片标题栏大小
  • 关闭答案后窗口残留阻塞触摸:snapshotFlow 新增销毁逻辑,showAnswer=false 时自动移除 Window C/D
  • 长按中途松手误触发扫描:Bouncy 按压逻辑与动画时长对齐,移除 200ms 硬编码承诺窗口
  • 悬浮卡片透明度未同步到 Window D:新增 cardAlpha 参数传递
  • Error/Success 状态悬浮球徽标(✓/✗)移除
  • removeWindowC() 不再连带销毁 Window D,两者生命周期解耦
  • Window D 定位改为相对 Window A(而非 Window C),C 隐藏时 D 也能正确定位
  • 悬浮窗答案卡片与主按钮 16dp 缝隙贴合:卡片定位反向补偿按钮在窗口内的居中透明边距(pillEdgeMargin),视觉缝隙降为 0

变更

  • FloatingWindowManager 完全重写为多窗口管理:新增 attachA/B/C/D、detachA/B/C/D、各窗口独立 updateLayoutA/B/C/D
  • FloatingWindowService 大幅重构以支持多窗口协调与位置同步
  • FloatingWindowViewModel 移除废弃的单窗口方法(updateWindowPosition、updateWindowHeight、getCurrentWindowHeightPx、setCurrentWindowHeightPx、updateFloatingWindowHeight)
  • RecordingResultCard 重构
  • FloatingComponents:新增 cardWidthDp(360.dp)作为 Window C/D 固定宽度
  • Window C/D 生命周期分离:C 仅用于状态消息,D 仅用于答案内容,互不干扰
  • Window D 高度固定为 Window C 的 400%,支持内部垂直滚动(封顶 560dp)
  • 长按触发逻辑改为严格对齐动画完成进度,移除独立的点击承诺窗口
  • HomePage 模型检测改用 ProviderStorage.getEnabledProvidersFromUserConfigs() 检查是否选中了具体模型
  • FloatingWindowManagerTest 新增 669 行多窗口操作测试覆盖

移除

  • PaginatedAnswerRegressionTest(三窗口架构后废弃)
  • ServiceContext 中废弃的单窗口接口方法
  • 悬浮按钮 Success/Error 状态徽标(✓/✗)