
桌面应用【免费下载链接】BongoCat BongoCat — A cross-platform interactive desktop pet that brings fun to your desktop!项目地址https://gitcode.com/gh_mirrors/bong/BongoCat点击查看免费下载导读docs/migration/legacy-behavior-inventory.md是 BongoCat 从旧版 Tauri Vue/Ant Design 架构迁移到新版 Rust GPUI 原生架构时的一份行为迁移基线它逐条盘点旧版产品能力把「Windows/macOS 首发必须具备」的行为冻结为P0 首发把历史缺陷与旧技术细节列为不迁移反例并用冻结的基线 commit 与修订记录约束实现期范围。读完本文你将掌握 BongoCat 迁移行为的完整功能矩阵主窗口、键盘/鼠标/手柄输入、Live2D、模型、快捷键、托盘、更新等 48 项、P0 与不迁移的判定规则以及每条行为对应的源码证据、待确认事项与已闭合决策ADR的引用链可直接用于理解当前仓库各模块的能力边界与验收口径。这份清单是什么冻结的功能范围与优先级契约清单是一份静态考古产物它固定的是基线 commit44f44bc时的旧版行为事实记录日期 2026-08-28而不是持续跟随旧分支代码演进的动态文档。文档开篇明确三条规则P0 首发Windows/macOS 首发必须具备可以修复旧缺陷但产品能力不能静默消失。不迁移只作为行为对照或反例不进入 BongoCat 产品实现。优先级描述的是产品能力不承诺复制旧实现。列为P0 首发的行为仍须通过 fixture、平台 contract 或实机验收后才能宣称兼容。这意味着「P0」只回答「旧版有这个能力、新版必须保留」而「新版怎么实现」由 ADR、技术设计technical-design.md与配置契约另行约束。文档同时规定历史源码后续变化不自动改变本矩阵任何范围变化必须显式评审并更新本文件——这正是它作为迁移期「防静默扩缩范围」基准的机制价值。功能矩阵总览48 项行为的三级归类清单以一张领域×行为×优先级×源码结论×待确认的五列矩阵承载全部盘点按领域覆盖主窗口、窗口状态、主窗口菜单、键盘、鼠标、手柄、Live2D、模型、快捷键、行为快捷键、托盘、系统、权限、设置、更新、外观、错误、诊断、配置与平台。当前统计为P0 首发 40 项 / 不迁移 8 项合计 482026-09-28 修订后不再保留P1 首发后一档图例与统计表同步收敛。主窗口与窗口状态P0 全部行为优先级源码结论待确认透明、无边框、默认跳过任务栏P0 首发主窗口配置为透明、无装饰、无阴影并默认跳过任务栏原生 alpha、任务栏与阴影显示/隐藏、置顶、穿透P0 首发配置、快捷键和菜单可直接控制双平台层级、焦点和恢复左键拖动P0 首发主窗口按下后调用窗口拖动穿透开启时的临时操作入口10%-500% 缩放和 10%-100% 透明度P0 首发设置页和右键拖动可修改不再在托盘/右键菜单重复放置数值项逻辑尺寸、Retina/DPI 和手势圆角P0 首发旧版通过内容裁剪百分比实现抗锯齿边缘与多层重叠hover 延迟隐藏P0 首发光标进入后隐藏内容并临时穿透离开后恢复实机淡出观感与穿透时序保持在屏幕内P0 首发移动/缩放后按光标所在显示器边界 clamp显示器移除和负坐标 fallback恢复主窗口与设置窗口的位置和尺寸P0 首发旧版保存两个窗口的物理 x/y/width/height稳定显示器 id 与 DPI 变化矩阵备注了两处由P1 首发后上调为P0 首发的能力2026-09-16 修订主窗口圆角与hover 延迟隐藏。二者上调的原因一致——维护者要求新版同步支持旧版已有的配置项因此overlay.corner_radius_percent、overlay.hide_on_pointer_hover、overlay.hide_on_pointer_hover_delay_seconds三个字段直接进入当前 v1 schema、默认值、fixture 与实现见 contract.md 的 Initial Version Boundary 与窗口圆角段落。同时待确认项随之改写圆角旧版通过内容裁剪百分比实现新版沿用片元着色器按窗口宽高百分比裁剪的路径不再引入原生窗口形状 API待确认项由「原生窗口边缘与背景资源一致性」改为「抗锯齿边缘与多层重叠」。hover 隐藏旧版是 DOMopacity加setIgnoreCursorEvents新版把隐藏实现为窗口 alpha 淡出加临时穿透待确认项由「多显示器边界与丢失离开事件」改为「实机淡出观感与穿透时序」。2026-09-24 修订补充了一个关键实现事实基线44f44bc的src/pages/main/index.vue把window.opacity / 100施加到包含背景、Live2D canvas 和按键图的根容器而不是分别修改每个 Live2D drawable。因此 BongoCat 将窗口 presentation opacity 定义为最终 surface 的一次性 alpha平台实现细节仍需实机 readback 验证。对应配置侧opacity_percent/corner_radius_percent/hide_on_pointer_hover等在应用层经 settings_commands.rs 写入配置、并由 config_projection.rs 投影到设置快照形成「设置页 → typed command → v1 配置」的完整链路。窗口状态方面window-state.json使用独立的schema_version: 1只保存可恢复的 settings 与 overlay 窗口布局settings_window为空时在鼠标所在显示器居中按800x600打开overlay_window为空时以350px作为100%默认逻辑宽度、高度按模型 Canvas 宽高比自适应恢复前会再次检查窗口与当前显示器是否相交显示器移除或完全离屏时回退居中默认布局。而旧版保存的是物理 x/y/width/height跨 DPI/显示器恢复需要新规范见下「配置不迁移」新版改用逻辑坐标window-state 契约 即为这一迁移的产物。主窗口菜单托盘与右键共用一棵菜单树旧版行为打开设置、模型窗口显隐/穿透/置顶/鼠标移入隐藏、可用的检查更新和退出托盘与模型窗口右键共用同一套菜单。矩阵结论两个入口复用同一 popup 根和模型窗口分组。该行为在 ADR-0068 中被固定为「一棵 popup 根、一个 owner」bongocat-platform::SystemMenu是唯一的托盘/菜单 owner持有TrayIcon、一个muda::Menu根、一个模型窗口Submenu与强类型SystemMenuAction事件队列。菜单结构为设置 ──────── 模型窗口 ├─ □ 隐藏模型窗口 ├─ □ 鼠标穿透 ├─ □ 始终置顶 └─ □ 鼠标悬停时隐藏 ──────── 检查更新仅在更新能力可用时创建 ──────── 退出 BongoCat2026-09-25 修订说明源码、版本、重启以及重复的缩放/透明度选项从原生菜单移除分别由 About、设置页和右键拖动承担两个入口展示相同的项目、状态和 action菜单项状态由 settings snapshot 驱动显隐是 runtime 会话状态不写入config.json。唯一实现替换点是 system_menu_native.rs 与 overlay 的HasWindowHandle实现。键盘键位图、降级规则与「不迁移」的长按兜底行为优先级源码结论按键图片按 left/right key 目录分手P0 首发同一手只保留最后一个 pressed key多键同手产品语义待确认不支持的 F 键降级为 Fn左右修饰键降级为通用键P0 首发key.replace(/F(\d)/, Fn)Fn.png是 F1–F24 的共享回退图不是 Fn 键ADR-0049已闭合macOS 左下角地球键Fn 键P0 首发旧版名Functionrdev的Key::Functionkeycode 63可达但无已知模型提供该图已闭合产品名GlobeFunction作末位别名ADR-0049CapsLock 短暂触发P0 首发已恢复固定 100ms 自动释放已闭合ADR-0004每次 KeyDown 创建 3 秒自动释放 timer不迁移Windows 旧兜底会破坏长按且不能证明真实释放由 KeyUp、reconcile、Reset 替代键盘领域的核心迁移原则在 ADR-0049 与 ADR-0041 / ADR-0042 中被反复钉住Fn是「F 编号通配符」而非 Fn 键旧版pre-refactor:src/composables/useDevice.ts:105-110只有key.replace(/F(\d)/, Fn)这一处产出对「模型没逐键画图」的F数字生效两个预置键盘模型出厂的Fn.png就是这张共享回退图。地球键在旧版叫Functionkeycode 63rdev的 macOS 表与Fn只差两个字符而意思不同因此 BongoCat 把产品名定为GlobeUSB HID usage0xff03Function只作末位别名以兼容已安装旧包Fn.png不改名、不迁移。键位词表是与模型作者的契约不是「预置模型当前画了哪些图」的清单ADR-0041 补齐了标点、导航、PrintScreen、小键盘等全部缺失 usage 的精确名0x2dMinus …0x67KpEqual并恢复出厂即存在却因缺命名 arm 永远画不出来的Delete.png0x4c。键位图存在才触发按键动作ADR-0042bongocat-live2d-render新增KeyImageInventoryread(root)扫描resources/left-keys与resources/right-keys不解码任何图片can_draw(side, hid_usage)按key_name_candidates的候选顺序回答「这个键在这一手能不能画出来」bongocat-app::input_bindings_for_model把静态 hand 表与模型键位图取交集写入InputBindings缺图的键既不动爪子CatParamLeftHandDown/RightHandDown也不产生按键图层。CapsLock 是锁存键ADR-0004macOS 平台实测只投递「锁存翻转」事件而完全不投递物理松开因此按产品既定的「短暂触发」语义在固定100 ms后由 adapter 合成释放边沿该时长是按键行为本身不是超时配置、不进 schema、不得推广到任何其它键。新版输入状态由「低延迟按下/释放事件 系统状态校正 生命周期 Reset」三类信号共同维护Windows 以 Raw Input 为主路径并用GetAsyncKeyState校正macOS 用 CGEventTap 并用CGEventSourceKeyState校正因此旧版「每次 KeyDown 创建 3 秒自动释放 timer」的兜底被明确列为不迁移——它破坏长按语义且不能证明真实释放。鼠标参数映射与平滑「非 Left 全部当作 Right」不迁移行为优先级源码结论左右按钮驱动专用模型参数P0 首发左键映射 Left旧版把其他所有按钮映射为 Right中键和侧键独立语义待确认非 Left 按钮全部当作 Right不迁移会把中键和侧键错误映射为右键新协议显式枚举或忽略当前显示器归一化坐标驱动角度和眼球参数P0 首发X/Y 映射 parameter rangeZ 使用 X/Y 乘积混合 DPI、负坐标与边界待确认位置指数平滑、忽略鼠标和水平镜像P0 首发60 FPS 基准 decay 为 0.75距离 0.5 时收敛确定性 tick 与 mirror fixture 待确认鼠标按钮映射的「不迁移」项与旧版输入协议缺陷直接相关旧版把所有非 Left 按钮统一映射为 Right中键、侧键语义错误新版输入协议显式枚举或忽略。指针平滑在 runtime 侧由CursorSmoother实现worker/input.rs中smoother.set_target(sample, now)后advance(now)推进、normalized()产出归一化游标worker/mod.rs 在 worker 初始化时创建平滑器矩阵记录的「60 FPS 基准 decay 为 0.75、距离 0.5 时收敛」正是CursorSmoother的默认参数事实crates/bongocat-runtime/src/tests/input.rs有runtime_smooths_cursor_with_the_injected_monotonic_clock用例验证确定性行为。手柄按钮/D-pad/trigger 与双摇杆参数行为优先级源码结论按钮、D-pad 和 trigger 驱动左右按键图片P0 首发gamepad 模式启停独立监听dead-zone、断开复位和重连待确认双摇杆显示、按下和 XY 参数P0 首发使用CatParamStick*系列参数多手柄选择与 profile 差异待确认CatParamStick*系列参数在 parameter.rs 中逐一映射CatParamStickLeftDown、CatParamStickRightDown、CatParamStickShowLeftHand、CatParamStickShowRightHand、CatParamStickLX/LY/RX/RY对应双摇杆的按下、显示与 XY 参数语义。手柄连接模型自动切换model.gamepad_auto_switch默认关闭在 ADR-0071 中设计为「谁观察、谁决定、谁写入」的完整通路产品 frame source 观察 runtime 的connected_gamepad_count的「0 ↔ 0」跨帧跳变发送GamepadConnectionChanged不携带状态处理时重读 runtimesettings service worker 作为唯一决定者复用Application::select_model两阶段提交「上次使用」是会话内事实而非配置字段。Live2D加载、motion、expression 与参数更新行为优先级源码结论model3、moc、texture 和 cdi 加载P0 首发旧版选择目录中的第一个 model3新版多入口必须拒绝并诊断motion group/index、normal priority 与 lock groupP0 首发motion 可预览并绑定快捷键priority、并发和停止语义待确认expression 按 index 切换P0 首发expression 绑定使用 model id index稳定资源 id 与模型切换待确认physics、pose、fade、EyeBlink 和 parameter 更新P0 首发预置模型不含 physics/pose自定义模型会包含 physics授权真实样本和 Framework 依据待确认motion sound 和最大 FPSP0 首发默认音效开、60 FPS音频后端、无声资源与不可见降频待确认注意矩阵对旧版「motion sound 默认开」的观察在配置契约中已被刻意收窄model.play_motion_audio默认false新装或新建配置一律静音只有用户显式打开开关后 motion 音效才会预解码并发布Play见 contract.md 的model.play_motion_audio段落它明确引用本清单作为「旧版默认音效开」的证据来源。这正是「P0 保证能力不静默消失、但允许修复旧缺陷/改变默认值」的典型例证。最大 FPS 语义的迁移对照见 bongo-cat-mver-frame-rate-semantics.mdoverlay.maximum_fps接受15..240决定 runtime 周期求值、GPUI 产品 frame source 与独立 overlay run loop 的下一帧间隔按帧截止时间计算隐藏时统一降到 100 ms。模型预置/导入/输入模式判定/删除保护行为优先级源码结论standard、keyboard、gamepad 三个预置和自定义模型P0 首发启动时重建预置项并保留自定义项用户模型 schema、稳定 id 与模式来源待确认目录选择、拖放、多选导入并复制到当前环境数据根P0 首发旧版直接复制选择目录安全 preflight、取消和冲突待确认普通包按left-keys/right-keys键图判定输入模式P0 首发旧版East判 gamepad、否则 right-keys 判 keyboardModelStore staging 判定、失败拒绝并持久化input_mode删除、切换、预置保护和在文件管理器显示P0 首发预置不可删除自定义模型可删除prepare/commit 与删除事务待确认删除失败后仍从模型列表移除不迁移finally无条件更新列表可能制造磁盘/配置不一致失败必须保留原模型普通包输入模式判定是矩阵中经历了「不迁移 → P0 首发」升级的条目2026-09-25 修订ModelStore 在 staging 提交前按left-keys/right-keys与手柄专用键名判定无法判定直接拒绝导入不再静默产生无模式记录判定结果作为input_mode持久化到model.imported_models闭合集合standard/keyboard/gamepad模型卡片显示的模式来自强类型配置/构建事实Mver 转换记录所选 section、预置记录由稳定 preset id 派生。矩阵末尾的模式补充2026-09-25特别声明该 Badge 是展示元数据不代表本阶段已改变 runtime 输入绑定。删除语义上「删除失败仍从列表移除」被列为不迁移反例——新版必须保证失败保留原模型删除走 prepare/commit 与删除事务。快捷键与行为快捷键自动分配、门禁与作用域行为优先级源码结论显示猫、打开设置、镜像、穿透和置顶P0 首发只在 Pressed 执行修改时旧版先解绑旧值冲突检测和事务回滚待确认motion/expression 自动分配和用户编辑组合键P0 首发模型加载后按 primary Shift/Alt 与数字/字母分层自动分配旧版无开关已闭合稳定行为 id 与冲突策略ADR-0041/0042分层与容量见 contract.md行为快捷键是本清单修订最密集的领域经历了三次关键变更2026-09-19 上调 P0维护者要求新版保留旧版「模型加载后即为每个 motion 和 expression 自动分配组合键」的行为否则快捷键页面在用户录制之前整页为空属于产品能力静默消失。自动分配的分层、顺序与容量与旧版一致有意差异是已占用的组合键跳过而非重用旧版按位置索引用户改过一项后可能把已被占用的组合键再发一次而配置会因重复组合键整份失效以及应用级 command 绑定同样计入占用。开关shortcuts.model_behaviors_enabled仍默认false分配照常写入配置并在页面上可见可改但不在用户开启前进入平台匹配表。2026-09-21 占用范围收窄到「同一模型 应用级 command」切换模型后应只有当前模型的快捷键生效且每个模型都从Cmd1macOS/Ctrl1重新编号。冲突判定按作用域进行命令内唯一、同一模型内唯一、模型绑定不得与命令冲突跨模型允许复用组合键平台表只编译当前模型的绑定切换模型时立即重建该表。2026-09-21 门禁跟随分组模型行为快捷键开关从「交互」页搬到快捷键页面的「模型行为快捷键」分组第一行并改名「启用模型行为快捷键」应用级快捷键新增自己的门禁「启用窗口快捷键」shortcuts.commands_enabled默认true见 ADR-0052。两个开关都是正向字段直出无取反、只带标题不带描述门禁只把对应的一半排除在平台匹配表之外不清空、不改写绑定。自动分配的完整契约在 contract.md 中给出primary在 macOS 是Command、其它平台是Control分层顺序为[primary]、[primary, Shift]、[primary, Alt]、[primary, Shift, Alt]每层先走数字1234567890再走字母QWERTYUIOPASDFGHJKLZXCVBNM共4 × (10 26) 144个名额——该容量在源码中即BEHAVIOR_SHORTCUT_CAPACITYshortcuts/config.rs行为 id 沿用motion:{group}:{index}与expression:{name}超过 144 个的行为保持未绑定。分配是幂等的已有绑定的行为永不重写模型每次激活可安全重复执行。门禁的唯一实现点是ShortcutConfig::active_bindings「此刻生效的绑定」的唯一投影模型侧的活动模型过滤也在同一处字段级默认值在 config.rs 中为commands_enabled: true/model_behaviors_enabled: false且Default是手写实现以避免派生默认值把全新配置判成「窗口快捷键已关闭」。托盘、系统、权限与设置行为优先级源码结论可隐藏的托盘/菜单栏图标与动态状态菜单P0 首发菜单按设置、模型窗口、检查更新和退出分组图标隐藏后的可恢复入口待确认任务栏图标与托盘/菜单栏图标分别显示或隐藏P0 首发设置页分别保存 taskbar/tray visibility双入口均隐藏时的恢复路径待确认登录启动、单实例、正常重启/退出和结构化日志P0 首发旧版由 Tauri 插件提供原生失败状态和 shutdown 待确认Windows 管理员状态提示P0 首发非管理员时提示退出但旧版没有原地提权默认不提权及高权限应用输入差异待确认macOS Input Monitoring 状态、请求和再次引导P0 首发旧版只处理 Input Monitoring没有 Accessibility 流程拒绝、撤销、重启和 TCC 差异待确认设置页关闭时隐藏、可从托盘/快捷键/单实例唤回P0 首发CloseRequested 被拦截并隐藏GPUI 窗口重建与焦点待确认首次启动依次初始化配置、模型、窗口恢复和系统 localeP0 首发UI 等待窗口恢复完成后显示部分失败时的 degraded 页面待确认原样复刻旧 Vue/Ant Design 页面结构和视觉不迁移旧布局只作为功能入口证据GPUI 使用新 design system托盘与任务栏图标在配置契约中由system.show_taskbar_iconWindows 模型窗口任务栏按钮可见性默认false模型窗口是无标题栏WS_POPUP任务栏按钮没有对应窗口可操作因此默认不额外占用与system.show_status_iconWindows 托盘或 macOS 菜单栏状态图标分别控制macOS 另有system.show_dock_icon程序坞图标唯一来源默认false进程以NSApplicationActivationPolicyAccessory运行。显隐是平台能力而非持久化第二份布尔值修改时先通过有界主线程 bridge 应用平台显隐成功后才按 expected revision 原子提交配置平台失败不提交、配置失败恢复旧平台可见性。更新、外观、错误与诊断行为优先级源码结论自动/手动检查、进度、稍后安装和安装后重启P0 首发自动检查周期为 24 小时HTTPS、签名、channel 和回滚待确认HTTP endpoint、嵌入请求凭据和旧 updater payload不迁移旧配置允许不安全传输且前端带固定 access key新协议只允许 HTTPS 与签名system/light/dark 与五种既有语言P0 首发首次语言从系统 locale 获取不支持时回退英文GPUI 字体、输入法和布局待确认模型、更新、文件和快捷键失败具有用户可见反馈P0 首发旧版多为未分类字符串 toast/dialog稳定 error code、重试和详情待确认复制脱敏 app/platform 信息、打开日志目录和反馈链接P0 首发About 页已有复制、日志和外部链接入口脱敏诊断包的内容与隐私边界待确认旧 updater 的「HTTP endpoint 前端嵌入固定请求凭据」是不迁移反例BongoCat 的更新协议只允许 HTTPS 与签名相关信任模型见 ADR-0021、ADR-0022、ADR-0025、ADR-0034。自动检查周期为 24 小时对应配置updates.check_interval_hours默认24接受1..8760check_automatically默认false。诊断项在 2026-09-28 由P1 首发后上调为P0 首发脱敏诊断包导出与 About 页入口均已实现隐私边界由 ADR-0016 的诊断导出契约固定。导出经ExportDiagnostics强类型 command 生成 format version 1 JSON 到当前环境的logs/diagnostics.json只包含 runtime/input/configuration 的稳定 code、匿名计数、模型来源计数和 revision模型 ID、路径、原始按键或事件流、原始配置、时间戳和动态 I/O 文本永远不进入导出。语言方面appearance.language是严格的七值枚举system、zh-CN、zh-TW、en-US、ar-SA、vi-VN、pt-BRsystem每次启动读取平台首选 locale 并按 primary subtag 归类RFC 4647 fallback未知值由 v1 解析入口直接拒绝不提供 alias、迁移或 fallback——旧版「不支持时回退英文」在新版被更精确的 locale 归类规则替代。配置与平台不迁移边界行为优先级源码结论读取、探测、导入或 alias 旧 Tauri/Pinia 配置不迁移仅保留只读考古 fixtureconfiguration schema 从 v1 开始原样恢复旧物理像素坐标和旧模型 id不迁移旧状态不具备稳定显示器 id且 BongoCat 不导入旧配置新状态使用逻辑坐标和自有 idLinux 窗口、输入、托盘、安装包和旧条件分支不迁移Linux 只属于首发后单独能力评估不进入 Windows/macOS 首发范围配置领域的不迁移边界与 ADR-0008、ADR-0067 一致初始版本是全新的完整配置直接定义为schema_version: 1不实现 migration、字段 alias、旧数据转换或历史版本判断解析入口只接受完整 v1 并明确拒绝其他版本且不改写原文件。旧配置仅保留为只读考古 fixture。Linux 不进入首发范围与 ADR-0006 的「首发后单独能力评估」决策一致。主要源码证据与修订机制清单的主要源码证据指向远端pre-refactor-tauri分支的对应实现窗口、菜单、输入、手柄、模型、设置、系统集成和发布配置并强调两点这些路径固定的是基线 commit 中的静态事实历史源码后续变化不自动改变矩阵任何范围变化必须显式评审并更新本文件。对应地清单内嵌了大量修订记录本身就是一部迁移决策日志2026-09-16圆角、hover 隐藏上调 P0、2026-09-19行为快捷键上调 P0、统计表对齐真实行数、2026-09-21占用范围收窄、门禁跟随分组、2026-09-24presentation opacity 定义、2026-09-25模式判定闭环、菜单树复用、2026-09-28诊断项上调 P0、移除 P1 档。其中 2026-09-19 的修订记录还揭示了统计表本身的一次纠错此前表里的P0 34 / P1 4与矩阵实际内容不符且早于改动就存在不迁移一列始终是对的——说明该表本来就是逐行计数而非另一套口径本次对优先级的净影响只有一行。范围统计40 / 8 的闭环口径优先级数量解释P0 首发40构成 Windows/macOS 可发布产品闭环不迁移8历史实现缺陷、旧技术细节或明确排除的平台能力统计用于防止实现期静默扩缩范围拆分或合并矩阵行时必须同步更新。8 个不迁移项完整清单为Windows KeyDown 3 秒自动释放 timer、非 Left 鼠标按钮全部当作 Right、模型删除失败仍从列表移除、原样复刻旧 Vue/Ant Design 页面、旧 updater 的 HTTP endpoint 与嵌入凭据、读取/导入旧 Tauri/Pinia 配置、恢复旧物理坐标与旧模型 id、Linux 平台能力。已确认的行为风险新实现不得复制的八个反例清单末尾以「已确认的行为风险」形式总结了八条必须由新实现规避的旧版问题它们与矩阵的「不迁移」行互为印证Windows KeyDown 后通过 timer 自动释放不能证明真实按键状态长按语义受 delay 影响——由 KeyUp、reconcile、Reset 替代ADR-0004。pressed key 图片按「手目录」互斥不是任意多键叠加fixture 必须保留该产品语义或明确修改。模型删除在文件删除失败时仍会从列表移除新实现不得复制该错误行为失败必须保留原模型。模型 mode 通过 right-keys 内容推断属于启发式协议需要显式验证与诊断——现由 ModelStore staging 判定替代。当前窗口状态保存物理坐标跨 DPI/显示器恢复需要新规范——新版使用逻辑坐标与window-state.json。当前更新、模型和输入错误多以字符串传播新 runtime 需要稳定 error code。旧 updater 允许 HTTP endpoint 并把固定请求凭据放在前端源码BongoCat 不得复制新协议只允许 HTTPS 与签名。旧设置页面、Tauri plugin API 和 Pinia 字段名不是兼容面只保留为功能入口证据。结语清单如何约束新版实现legacy-behavior-inventory.md在 BongoCat 迁移工程中扮演的角色可以概括为三句话它是「旧版必须保留哪些能力」的唯一仲裁者P0 40 项构成双平台可发布闭环它是「旧版哪些缺陷不得复制」的反例库8 项不迁移与 8 条行为风险互为印证它是「范围变更必须显式评审」的修订日志每条修订记录都注明日期、原因与对矩阵行的影响。对阅读源码的开发者而言这张矩阵提供了从产品能力到实现证据的导航行为快捷键的自动分配契约与容量contract.md 与 shortcuts/config.rs、地球键/Fn 语义ADR-0049 与 macos.rs、键位图即动作门禁ADR-0042 与KeyImageInventory、双摇杆参数parameter.rs、菜单树复用ADR-0068、诊断导出ADR-0016每一处都能沿矩阵的「源码结论」列继续下钻到 crate 实现与测试。赞分享桌面应用【免费下载链接】BongoCat BongoCat — A cross-platform interactive desktop pet that brings fun to your desktop!项目地址https://gitcode.com/gh_mirrors/bong/BongoCat点击查看免费下载相关推荐Unsloth Studio 多账户隔离集成门禁测试全解析从路由矩阵、旧库迁移到热路径性能门禁Unsloth Studio 多账户隔离集成门禁测试全解析从路由矩阵、旧库迁移到热路径性能门禁 本指南聚焦 Unsloth Studio 后端为「多账户mu人工智能大模型微调LoRA模型优化模型量化强化学习Omi AI可穿戴项链三步搭起自己的第二大脑Omi AI可穿戴项链三步搭起自己的第二大脑 开会两小时回座位就忘了定了哪几条。课堂重点、散步时的灵感一晃神就没了。开源项目 Omi 就是冲着这件事来的人工智能AI 应用语音移动开发后端桌面应用智能硬件MCP 服务Erlang/OTP 24 已移除功能清单与迁移指南removed_24 深度解读Erlang/OTP 24 已移除功能清单与迁移指南removed_24 深度解读 本篇指南围绕 system/doc/general_info/remov编程语言语言运行时标准库编译器并发编程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考