黎猫工具箱 0.7.9 — 组件加载与释放约定 Tanuki Toolbox 0.7.9 — Component lifecycle 0.7.8:一键重启的原生后台程序仅在 1 秒长按完成后按需创建,先验证当前实例与启动入口,再关闭并通过保护入口重开。移除重复 PowerShell/WMI 探测及固定等待;仅在已开始的单次事务中短暂读取回执。原生句柄、文件锁和互斥量随事务退出释放,无常驻进程、自动重试或关闭组件预热。已接受的关闭/重开事务不随组件停用而取消。 0.7.8: The native restart worker starts only after a one-second hold. It validates the current instance and reopen entry, closes DSH, then delegates protected startup. No repeated PowerShell/WMI probes, resident watcher or automatic retry. Receipt polling exists only during a submitted transaction; native handles, file locks and mutexes are released on exit. Accepted transactions finish independently of component disposal. 0.7.6:闪电改为单次点击保存速度偏好,不再挂载菜单、定位/滚动/外部关闭/菜单键盘监听。保留挂载控件所需的现有轻量事件流,无新增请求扫描或轮询。能力获取、失效处理、任务快照与停用清理规则不变。 0.7.6: Direct speed toggling removes the popup and its layout/outside/keyboard listeners. Existing scoped event streams and cleanup remain; no new scanning or polling. 0.7.5:中枢速度模块仅在设置优化及模型子项开启时动态加载;冷启动关闭不读能力缓存、不修饰适配器。目录只在明确刷新、获取模型或查看当前模型速度时读取,无后台扫描/轮询。客户端事件流仅在速度控件挂载时连接,最后一个视图释放即中止,Host 取消没有消费者的目录请求。隐藏设置停止设置能力读请求;关闭组件恢复原生适配器实例方法和模型插槽,移除连接、订阅及缓存状态。已开始的原生生成保留其单次不可变请求选项,流式字节不缓存/复制,只解析有界 SSE 元数据;停用后停止提示收集。能力/偏好文件有大小与条数限制,不包含密钥。 0.7.5: Gateway speed is lazy under Settings Enhancements → Models. Catalogs are read on explicit access, never polled. UI event streams, capability requests and adapter/slot decorations are disposed with their owners. Already accepted native generations retain request-local snapshots; SSE observation buffers only bounded metadata and stops on disposal. Persisted capabilities/preferences are bounded and contain no credentials. 0.7.4:模型排序的指针捕获、位置/取消监听和全局抓取光标标记只存在于手柄按下到松手/取消期间;边缘滚动仅在实际拖动且可滚动时申请动画帧。松手只写入有变化的最终顺序。结束、取消、失焦、隐藏或卸载立即清理捕获、监听、光标标记和动画帧,不增加空闲扫描或后台定时器。 0.7.4: Pointer capture, drag listeners and the grabbing-cursor marker exist only during handle interaction. Edge-scroll frames run only while dragging and scrollable. Only a changed final order saves. Completion, cancellation, blur, hiding and unmount release all transient resources; no idle scans or background timers. 0.7.3:模型设置只在实际拖动期间订阅取消与失焦事件;拖动预览不发送保存请求,松手后才保存最终顺序。结束、取消、隐藏、失焦或组件卸载时释放预览和监听,无新增轮询。 0.7.3: Model drag previews use cancellation listeners only during a drag. Ordering saves only on drop; completion, cancellation, hiding, blur and unmount release transient state/listeners. No new polling. 0.7.2:默认设置窗口只在首次打开后保留 React 页面和滚动状态,隐藏不再卸载当前页面;此项是用户明确要求的状态保留,不代表关闭了工具箱或组件。隐藏窗口 inert 且没有活动焦点层,模型页取消自己的只读请求、短暂刷新和订阅,不做后台模型调用。模型 UI 仍由设置优化开关按需加载。宿主默认模型策略只持有少量禁用与排序数据,并复用已有目录失效事件。设置壳和模型页只修饰现有注册项的组件,保留原生拥有的子槽和授权渲染面;停用还原原组件及操作函数,不重复声明原生子槽。对已提交的用户保存事务允许安全完成;弹窗关闭释放密钥草稿,不读取已存密钥。不强制即时释放引擎代码缓存。 0.7.2: The Settings shell keeps only an already-opened page mounted, as explicitly requested. Hidden Settings releases its modal focus layer; Models cancels its own read requests and subscriptions. Model UI remains optional and lazy. Default policy stores small ordering/disable metadata and reuses native catalog invalidation. Scoped component decorations preserve native child-slot ownership and are restored on disposal. Accepted writes finish safely; closed dialogs release key drafts without reading stored credentials. 0.7.0:默认系统更新入口仅订阅桌面桥接现有状态并读取一次快照,不新增更新检查计时器;DSH 版本仅在打开设置标题时读取。设置优化组件关闭时不加载功能代码;“模型”子项关闭时卸载其独立子模块。模型页面打开后才读取原生服务行和未过滤的模型元数据、绑定页面范围的订阅与观察器,页面关闭或子项停用均取消请求、清除订阅并还原原生标题属性。服务禁用使用默认模型策略的一个小型集合;关闭设置优化保留已保存限制,默认管理页可恢复服务,不执行后台模型探测。 0.7.0: The default updater reuses the desktop bridge's status snapshot/subscription without another update-check timer; the DSH version is read only when Settings opens. Settings Enhancements and its Models subfeature load on demand. Opening Models creates scoped metadata requests and UI subscriptions; closing or disabling removes them. Saved provider restrictions use the existing default policy and can be reversed even with the optional component disabled. 用户可见行为 - DSH 冷启动时,只按开关加载已启用组件的功能代码。插件中心、起始页、消息中心的浏览器代码分文件;启动保护和消息中心的 Host 功能也在各自组件启动时才导入。 - 本体保留很小的开关管理层、设置入口和经过连接授权的资源与基础设置路由。本体没有周期性的业务轮询;只在初次连接、插件变化、重连或窗口恢复前台时读取开关。 - 组件关闭时取消信息读取、清除定时器、移除监听与样式,并释放其列表、消息队列和页面状态。再次开启会重新读取当前状态。 - 插件中心只在启用时读取插件信息、市场地址与可用更新;后台常规检查降低到每五分钟,窗口可见时进行。手动刷新及插件变化仍会触发刷新。 - 消息中心只在启用时监听任务/插件变化和读取消息;插件清单采用事件触发及有限的过渡状态重试,移除原来的每三秒清单轮询。关闭后不收集消息。 - 工具箱详情、启动保护详情按打开页面加载。推荐 GitHub 信息只在展开推荐区时读取,收起后取消并释放结果;专用网络连接在该次读取结束时关闭。 - 关闭启动保护需要先完成一次快捷方式还原。已开始的快捷方式写入先完成,再按最终开关状态还原;重复启停的写入串行,避免彼此覆盖。正常退出或热更新不会误还原。 - 已提交给 DSH/市场的安装与更新由宿主继续完成,关闭界面仅停止等待和刷新;不会强杀安装进程,避免留下半安装状态。 - 本次更新后完整退出并重新打开 DSH,才能清除旧版常驻代码并体现冷启动按需加载。 内存边界 “不加载关闭组件”指不预加载它的功能代码和资源、不启动业务任务。DSH 仍需读取名称、开关、描述等清单;本体和少量设置入口也需存在。 本次运行已经启用过的 Host 模块可能留在 Node 的模块缓存中;浏览器也可能保留已编译代码,回收时间由引擎决定。关闭时释放可释放状态和活动资源,但不强制垃圾回收、不承诺即时 0 字节。重新启动后,仍关闭的组件不会主动加载这些功能模块。 0.5.2/0.5.3曾运行隔离回归或浏览器夹具;0.5.4新增功能仅做静态检查及必要构建,不沿用历史测试结果宣称本版功能已验收。没有性能基准,也不代表已登录GUI端到端、实际重启或跨平台系统通知已验证。 自定义名称 插件中心启用时才加载名称保存服务;进入已安装页面才读取名称,编辑完成才写入。关闭组件清理请求和名称内存;已保存的文件保留。 提示音 消息中心默认提示音由本地Web Audio合成,默认音量50;已有保存音量保留,恢复默认同时重置音频和音量。设置页仅在用户主动调节后试听,关闭设置释放独立试听资源。通知音不因重绘重复播放,自动播放受限时不补播过期提示。组件关闭释放上下文、请求、缓存与解锁监听。 图标侧边栏 图标侧边栏及重启路由仅随 sidebar 组件开启加载。工作区保留原生 React 挂载,不复制会话树;关闭时卸载自有 portal、恢复布局属性并清理观察器、请求、监听与设置入口。重启圆环仅在长按或回退时运行动画帧,停用取消。重启工具在明确长按 1 秒后才启动,由独立原生程序识别当前实例,先关闭 DSH,再经保护入口在后台准备重开;已接受的外部事务不因组件停用而中断,不自动重试。未完成任务和安装可能被中断,请等待其完成后使用。无需宿主扩展。 后续开发规则 1. client.template.js 仅负责开关与按需加载,不静态引用组件业务函数、重图片、CSS 或组件字典。 2. 浏览器实现放 client-src/<组件>.template.js,由 work/build-tanuki.cjs 输出 client-chunks/。index.js 的资源白名单与核心开关映射同时添加入口。 3. Host 组件入口保持轻量,在 apply 内动态导入实际运行文件。不得把组件扫描器、监听器挂回工具箱本体。 4. 所有监听、计时器、DOM、订阅、请求控制器归属组件上下文;dispose 时立即标记失效、停止新任务并清理资源。 5. 每次异步等待后检查存活状态;停用时取消只读请求。对已提交的安装/文件事务等待安全结束,不强制中断。 6. 新组件不得引入关闭状态的心跳、预热、隐藏 WebView 或后台模型调用。设置界面的显式访问可以加载设置所需的小模块,但不能因此启动关闭的功能。 7. 全局消息继续使用 NOTIFICATIONS.txt 中的消息中心接口;关闭消息中心时不缓存待发消息。 8. 本体、组件清单、独立包和本机安装保持同一版本;一键安装包仅在用户明确要求导出时同步。 English Disabled features are not eagerly loaded on a fresh DSH start. Each enabled feature owns its listeners, timers, requests, styles and runtime state. Disabling cancels read-only work and releases those resources; enabling creates a fresh runtime. Settings and recommendations load only when explicitly opened. Shortcut restoration is a one-time shutdown operation; already accepted package installations finish safely in the host. Small manifest/configuration metadata remains necessary. Modules used earlier in the same process may remain in the JavaScript engines' code caches until restart; immediate zero-byte memory use is not promised. Historical regression and browser-fixture checks do not validate new 0.5.4 behavior. This release uses static checks/build only; live GUI, cross-platform notification delivery, destructive restart and performance benchmarks remain unverified. 全局气泡与系统通知 气泡是消息中心的可选按需子功能,不增加新的独立组件。关闭全局气泡时卸载子功能;关闭消息中心时同时释放状态订阅、DOM覆盖层、观察器及通知资源。快捷侧栏和插件中心关闭不影响原生入口适配,但不启动已关闭插件中心的更新扫描。设置中的明确音频试听和通知授权是用户主动操作,不启动关闭的消息中心。 系统通知仅在当前页面失焦且平台已授权时尝试发送,不使用不存在的桌面桥接、不注册后台推送服务;不承诺iOS普通网页关闭后的推送。 统一基础设置 本体只保留轻量设置入口和授权设置接口;UI按打开加载。音量和音频原子保存到当前profile,关闭设置取消读取/解码。消息中心仅启用时读取音频配置与素材,变更及恢复窗口焦点时刷新;停用中止读取、暂停音频、回收Blob URL与AudioContext,不补播受自动播放限制的消息。 0.5.18 快捷侧栏补充:自动化入口仅订阅原生 main 注册表并选择 schedules 页面,不导入自动化组件。工作区收起使用本地偏好和既有布局,不轮询;仅创建自有按钮 portal,不移动原生添加按钮,停用移除节点及订阅。 0.5.19:展开工作区按钮挂载到原生对话头部前置区域,复用侧栏现有 DOM 观察器定位;关闭侧栏组件时删除挂载节点,图标栏不再渲染展开按钮。 0.5.20:展开工作区按钮改为挂载在对话列的绝对定位侧边标签,不参与标题栏排版。复用现有 DOM 观察器;移除挂载节点后,CSS :has 定位规则自动失效,不遗留原生元素内联样式。 0.5.21:展开与收起控件共用 28px 高度,展开位置通过共用的 40px 工作区标题高度计算;仅样式与箭头图标调整,无额外监听、测量或后台工作。 0.5.22:工作区与展开箭头使用 CSS 过渡;保持控件挂载以支持中途反向切换,无动画定时器或新观察器。仅原生工作区槽在收起时 inert,停用或挂载点替换后还原原值;清理新增宽度参数。系统减少动态效果设置将收放过渡设为 0ms。 0.5.25:第三方图标读取服务仅随插件中心组件启用注册;管理页请求已安装包的本地图标,离开管理页或停用取消读取。复用既有 DOM 观察器处理图标挂载,无新轮询、网络查图或对第三方代码的导入执行。移除补全层后原生图标恢复;已用 Node 模块的引擎缓存边界不变。 0.5.26:工作区分割线仅随侧栏加载。拖动时使用单一动画帧合并写入,松开才写本地宽度;取消或停用移除帧、指针捕获和临时监听。隐藏工作区不允许拖动,缩小窗口只限制展示、不覆盖用户保存值。 0.5.31:快捷侧栏显示菜单只在打开时挂载分组与排序交互;手柄拖动仅保存松开时的最终顺序,不在移动过程中写入存储。边缘滚动只在拖动且仍可滚动时申请动画帧;关闭、失焦、隐藏、取消或停用立即取消帧并释放指针捕获。顺序与可见性分别存储,冷启动关闭侧栏时不读取或加载排序逻辑,无新增轮询。保留同一组有键的侧栏节点,移动三个点入口不重新挂载菜单。 0.6.0 对话框优化:父组件仅读取两个持久化开关,并在设置变更、恢复连接或窗口获得焦点时重新同步,不轮询。时间统计和模型选择作为独立脚本,仅在各自开启后读取;关闭中止待加载请求并释放对应子上下文,模型控件停用恢复原始 model slot。计时器只在当前回合运行中存在;模型列表/参数复用 DSH 已有目录和 Codex Subscription 偏好,不复制账号状态或另建模型扫描。设置页访问不启动关闭的子功能。已经提交的模型/偏好事务由宿主完成,卸载后不追加新的写操作或更新失效 UI。已用模块仍受引擎缓存限制,不承诺即时零内存。 0.6.3:本体以固定 Loader ID tanuki-toolbox-core 声明,避免 profile 设置重新组合时因匿名 ID 改变而卸载整个客户端。固定身份不保留已停用组件,不阻止正常关闭、卸载或代码热更新;本体内部行只做界面隐藏。无保活层、额外轮询或被关闭组件的预载。 0.6.9:灵动岛点击导航复用已挂载原生页面与设置 store。设置卡片定位只在点击后创建临时 DOM 观察器,命中、5 秒到期、下一次点击或组件停用即清理。任务跳转交给原生工作区;停用后异步完成不再删除通知或更新 UI。不新增全局轮询,不为跳转预加载关闭组件。 0.6.10:对话框优化新增 fileMenu 子开关,文件右键菜单脚本仅在开启时加载。通过原生文件卡片动作槽添加隐藏标记,在卡片挂载时注册本地右键/键盘事件,无 DOM 扫描或轮询。弹出菜单只在右键时存在,临时外部关闭监听随菜单卸载移除。另存为仅响应明确点击后读取元数据和分段字节;关闭或停用中止请求并回滚未完成的文件写入,已提交的安全关闭仍由浏览器完成。不支持保存选择器时按需创建下载 Blob,限制 128MiB,完成后最长 60 秒回收 URL,停用立即回收。复制、打开与预览不预读文件。关闭子功能清理监听、样式、菜单、下载资源和操作状态;不承诺引擎立即回收已编译代码。 0.6.11:日夜配色修正仅使用 CSS 主题变量及原生控件的局部样式覆盖,无主题变化观察器、定时器或新增运行代码。消息气泡与灵动岛固定配色保持原样,组件按需加载和清理边界不变。 0.6.12:系统通知桌面唤起接口只随消息中心注册,关闭即注销;点击才导入进程启动工具并发出一次同安装位置的 DSH 单实例唤起请求,不读取组件开关、不创建新后端、不绕过启动保护创建新实例,不扫描快捷方式或进程。禁用取消尚在等待的浏览器请求与定位观察器;已经提交的短暂唤起进程允许安全完成。定位仅在点击后进行,原生列表/自动化定位观察器最多 5 秒,插件中心自身定位最多 8 秒,停用清理。标题展开按钮仅改变设置视图,不加载关闭组件业务代码。主题变化使用 CSS 变量,无新增主题监听或轮询。 0.6.13:主页 Host 模块仅随 home 组件启用动态导入,统计路由访问时才读取历史;客户端仅在选中主页时请求。取消时释放原生会话观察句柄,最多两项读取并定期让出事件循环;宿主 45 秒汇总缓存仅含计数、日期、最近六项标题与 ID,无完整事件和正文,关闭清空。原生 sessionQuery 的准备缓存由宿主自行管理,工具箱不擅自清空或承诺即时释放引擎内存。离开页面、隐藏或停用取消统计与额度请求、清理焦点/可见性监听和跨日计时器。主页不订阅全量历史事件、不定时读额度、不加载关闭的其他组件;实时任务状态只订阅已存在的原生快照。 0.6.15:自启动操作模块只在明确打开设置并请求该项或显式关闭启动保护需清理时读取;仅点击开启时调用系统快捷方式工具,未启用不运行任务、轮询或创建额外后台进程。已接受的快捷方式事务串行安全完成,禁用清理等候已开始事务,正常退出/热更新不清理已启用入口。关闭设置取消尚未提交请求。技能入口仅读取已存在设置注册表并订阅变化,不导入第三方插件业务代码、轮询安装目录或发网络请求;快捷栏关闭释放订阅。 0.6.17:模型屏蔽按用户要求属于工具箱默认功能,不属于组件。Host 启动仅一次读取当前 profile 的小型模型开关集合,使用集合查询过滤模型目录、在请求准备、llm/stream 和最终适配器派发前拒绝屏蔽的精确 provider/model;无模型后台扫描、磁盘轮询或额外模型生成请求。只修饰当前 LLM 服务实例,卸载时恢复自身仍拥有的方法和监听,不改写 DSH 文件、适配器或全局默认模型。模型管理 UI 仅在原生设置 → 模型的 footer 被打开后加载;关闭设置取消读取、监听、临时定时器及未提交保存。提交保存使用原子文件事务,失败保留旧开关。目录失效沿用原生 llm/adapters-updated 推送,不重组或重载插件。提供方模型元数据只在设置页显式访问时读取,最多三项并行,页面离开后停止追加读取;原生不支持中止的单次元数据读取允许自然结束,不保留后台重试。已经派发的流不强杀;已关闭的其他组件仍不加载。中英设置与主题使用原生语言和颜色变量。本版仅必要构建、语法检查及本机交付,未运行功能测试。 0.6.18:按要求增加默认模型状态客户端,独立脚本由本体加载,不归属组件、不预载其他关闭的组件。启动、重连、模型目录变化和恢复前台时读取小型开关,不定时轮询或读取提供方全量模型。设置页保存后同步本窗口状态。只对已挂载输入框借用的原生目录快照增加当前禁用模型占位,并共享同一目录的引用计数;切换后自动移除,仅保留一个当前模型的显示元数据,不复制历史。输入拦截使用 DSH 的 conversation.blocks 注册表,保留草稿和其他插件的阻止原因,卸载时仅释放自身拥有的阻止状态。客户端方法修饰和局部灰色样式随最后一个引用释放,模型开关订阅、请求及短暂去抖在工具箱卸载时清理;宿主派发拦截继续保留。未运行功能测试。 0.6.20:消息中心新增 inApp 子开关,仅控制灵动岛 UI;关闭时清空其可见队列并停止为其追加消息,不停止仍开启的系统通知、气泡和提示音,不在重开时补播旧消息。消息中心父组件关闭仍清理全部通知运行资源。设置卡片在组件关闭后自动折叠,通过 disabled fieldset 禁止细分选项写入;允许重新展开只读查看,不初始化关闭组件的业务。语言适配只随本体或相应懒加载界面注册小型字典和原生语言订阅;中文族映射中文,其余英文,不修改宿主语言偏好,不预加载关闭的组件。增加新语言包时只补充已加载命名空间的对应字典;卸载释放语言订阅及其注册。构建静态核对中英文键和插值变量,不启动运行时功能测试。 0.6.21:通知分类通过既有气泡快照事件同步,不新增请求、扫描或定时器。气泡模型保留两路权威来源的最新状态,在显示投影时按类别过滤;分类关闭期间继续沿用现有状态更新与任务已读围栏,重开不复活旧状态。关闭任务分类同时隐藏原生任务状态点,避免自定义气泡移除后露出原生提示;气泡卸载清理样式标记。分类切换不重载气泡脚本,气泡总开关关闭仍释放显示模块;独立任务栏成功计数逻辑不变。 0.6.22:更新检查开始时发送本窗口 component-maintenance 事件,复用核心开关读取与 stop 路径;无新增核心轮询、闲置缓存注册表或预热。浏览器脚本使用 no-store 且加载后移除 script/工厂,停用清理实例,再开重新取代码;Node ESM 和引擎编译缓存不能可靠主动卸载,禁止删除共享全局缓存或强制 GC。消息中心为最多两条活动消息和一条短暂退出动画保存有界状态,按接收时间 8 秒绝对期限管理计时器;停用/分类过滤及时清理,不由 React 悬停状态控制到期。搜索及分组仅随已打开插件页运行局部观察器,离开释放并恢复属性,不搬移原生 React 节点。通用快捷方式管理排除专用自启动入口,旧版改写按管理日志摘要证明归属;不新增后台系统入口扫描。 0.6.23:Mac 标题栏与全屏避让复用原生 CSS 安全区和 data-platform/data-fullscreen,不新增平台或主题轮询。Windows 专用快捷方式状态在非 Windows 返回 unsupported,详情收到后清理自己的轮询。系统通知唤起仍仅在点击时执行,Mac 使用固定 Launch Services open 路径激活当前应用,无常驻进程。模型卡片与按需策略服务之间采用可释放的小型订阅桥,策略热替换不销毁卡片;关闭卡片清理桥和自身注入。脚本资源仍用 no-store 并立即移除 script/工厂;协调器在热更新后接受受当前同源授权接口确认的构建版本,不强制页面重载、不跨源取代码。未做运行期或实体 Mac 验证。 0.6.24:补齐调用 modelDirectories.directoryFor 的两个局部作用域的 remote.session 等宿主依赖;遵循 Cordis 服务跟踪和就绪/停用流程,不新增后台任务、请求或常驻组件。去掉重复的原生标签子槽声明,卡片自行渲染标题;提供方偏好读取保留注册项顶层元数据。通过真实 Windows DSH 验证卡片显示及连续选择,不将静态构建当作运行验收。