# 更新日志 当前版本 **1.0.0**。实现机制、根因与验证边界见 [SOURCE-NOTES.md](./docs/research/SOURCE-NOTES.md);上游渲染机制核对见 [ASCII-RENDER-NOTES.md](./docs/research/ASCII-RENDER-NOTES.md)。 ## 1.0.0 方格海面与听写修正 1.0 是第一个正式版本:插件外观、设置字段与跨插件契约按稳定接口对待,后续变化以保持兼容为前提。旧配置不需要迁移——新增字段「海面方格」缺省开启,已有配置文件直接获得方格海面。本版合并两轮未发布改动。 ### 海面方格 - 整片海面改为字格纸:相邻字格之间描一条共享的 1 设备像素浅色格线(只描内部边界,最外圈不额外加框),鲸体的彩色字格落在同一套格线上,鲸群像停在格纸上的彩色方格。浅色页面用冷灰细线,深色页面用浅灰细线;线条浓度跟随「背景浓度」,默认 0.6 时白底上的格线约 `#e8eaeb`(浏览器实测像素 232/234/235)。 - 新增「海面方格」开关,默认开启,位于设置页「海面与天气」组。它是海面底层而不是天气:不读时间、不随暂停或减少动态推进,也不做窗口边缘淡出——水面延伸出窗口之外,只有会绕回另一侧的鲸鱼需要在边上淡出。设置页顶部的分组预览把对话视口缩放后居中,方格会按同一相位延续到整块预览画布边缘,不会停在一个看不见的 letterbox 矩形里。 - 方格参与现有阅读保护,不额外测量文字:微光模式在文字行下隐去方格,模糊和毛玻璃把方格随同一份低分辨率海面缓冲一起软化;该缓冲经强模糊后格线已淡到肉眼不可见,所以磨砂面板看起来仍是原来的柔白,不会多出一层网格。 - 独立预览新增同名开关;更新 `client.js` 与 `preview/whale-preview.html` 产物,新增 `src/sea-grid.js` 与两份测试(单元测试、两份产物的命令流测试)。`pnpm verify` 421 项通过(49 个测试文件),GitHub Actions 在 Windows 与 Linux 两个平台通过。 ### 听写转向与实时振幅 - 录音期间每一头鲸鱼都会转向输入框并缓慢靠近。空间足够时进入输入框上缘外的等待位;拥挤时其余鲸鱼沿各自朝输入框的方向接近、等待空间,不再有鲸鱼分不到等待位就继续原巡游,也不会整头跳过。接近速度不超过普通巡游,转向用有限角速度平滑过渡,途中持续面向输入框,身体避障与骨架连续保持不变;每次开始录音重新规划,短录音允许只移动一小段。 - 海面声浪改由持续行进的高度场驱动,波前的纵向坐标就是实际起伏:实时响度直接改变振幅,已经扩散出去的波前也立即响应,不再只靠波前的数量、亮度或半径表达音量。振幅上限 36 CSS px,离输入框越远越平缓,静音后归零;开启减少动态时清除已有波前。 - 修复安静输入和拥挤鲸群下的听写响应丢失。可选注入挂起不再被当成提供方缺失:语义降级监听在插件存续期间常驻,主通道接通时忽略降级事件;音量只从可读取的 `dictation` 服务取得,没有服务时为零,不从语义事件推算。原始 RMS 在进入视觉下限前先做开方压扩(稳态约随 RMS 的四次方根递增),轻声也能看到起伏。 - 同步更新规格、生成物与独立预览;本轮 `pnpm verify` 405 项通过(47 个测试文件),随后方格一轮把总数带到 421 项。真实 DSH 中的指针、画面与麦克风交互尚未复测;README 的听写 GIF 仍为此前版本录制,图注已标明。 ### 发行边界 - 1.0 发布前没有重新验收当前运行中的 DSH 桌面窗口:方格与听写两轮的像素证据来自独立预览与真实浏览器的画布导出。真实对话页上的方格、正文与毛玻璃叠层观感,以及设置页开关的鼠标交互,仍是发布后要继续补的验收项。 - README 的全部演示图与设置页截图录制于方格默认开启之前,页面观感尚未重录。 ## 0.15.0 听写联动与共享工具链 ### 共享脚手架接入 - 验证、打包与审查改用 devDependency @jryang1997/dsh-plugin-kit(零依赖,配置在 package.json 的 dshPluginKit 键;以 v1.0.0 tag 的 GitHub tarball 固定引用)。删除重复的 scripts/project-check.mjs、review-snapshot.mjs、read-probe.mjs 及两份工具测试;对应行为由 kit 的 fixture 测试覆盖。 - 发布包改为精简运行时内容:只含运行文件、locale/、图标、README/CHANGELOG、docs/images/ 与 docs/research/;tests/、scripts/、preview/、.node-version 不再发布,README 图片随包发出。pnpm verify 现在会真实执行 npm pack --dry-run 并拒绝开发目录泄漏与缺失图片。 - kit 仓库已公开(jryang1997/dsh-plugin-kit,tag v1.0.0);本机对 github.com 的 git 访问受限,依赖走 codeload tarball URL,CI 可正常安装。 ### 听写联动 - 新增「听写联动」开关,放在设置页「鲸群与游动」组,默认开启,与「跟随任务状态」互不绑定;未安装 `dsh-hold-to-dictate` 时开关可见但不产生效果,并提示需要该插件。 - 安装两个插件后:录音期间鲸群离开巡游路线、到输入框上缘外聚集并保持静止;海面以输入框为声源扩散不规则声浪,音量越大波前越强、越密、越远,静音时归于平静;转写完成(done)后散开。 - 跨插件状态走 cordis 服务 `dictation`(schema 1),快照只含相位、会话与标志,不含输入框几何、音频或转写文本;任意一端缺失、卸载或 HMR 都不影响另一端。 - 聚集带避开毛玻璃面板与前景媒体;多行输入框、8 头与窄窗按需分多行,空间不足时保持装饰巡游;系统减少动态时不聚集、不推进声浪。 - 验证:`pnpm verify` 388 项通过;真实 DSH profile 中按住录音 25 秒、转写完成、散开,控制台无错误。证据与录屏帧在本地 `.scratch/echo-capture/`(不随仓库发布);README 新增真实页面 GIF。 ### 文档与演示 - README 演示统一为白色主题、隐藏侧栏:巡游与落雨来自真实 DSH 页面录屏;下潜、拍尾与任务状态改为同一渲染器的单鲸特写,依次演示入水/出水、摆尾,以及 `···`、`!`、`✓`、`×` 四种状态;新增中英文任务状态动图。不再使用独立预览页的合成画面。 ### 滚动时暂停渲染改为可选 - 新增「滚动时暂停渲染」,放在设置页「高级设置」内,默认关闭。关闭时滚动阅读不再隐去鲸群,也不暂停仿真:装饰层继续按原有节奏巡游,文字遮罩跟随 120 毫秒的几何测量预算刷新到新位置。 - 开启后沿用原行为:滚轮、触摸与滚动事件立即隐去装饰层并暂停仿真,最后一次滚动后静止 140 毫秒,按新位置测量一次再淡入恢复。 - 滚动事件只标记文字几何失效,处理函数本身仍不读取布局、不扫描文字、不绘制画面。在滚动过程中关掉这个开关会当场恢复装饰层与淡入,并清掉待触发的恢复计时器,不会把海面留在隐藏状态。 - 减少动态效果时动画循环本来就停着,关闭状态下的一次滚动会安排一帧合并后的静态重绘,使遮罩跟得上文字。旧配置没有这个字段时按默认值处理,升级后即为关闭。 - 本轮更新源码与生成的客户端、独立预览产物;独立预览新增同名开关。未安装到桌面 profile,未发布安装包。 ### 喷雾彩蛋 - 随机喷水从两三个淡字符改成一团圆雾。座头鲸大约九个字宽,蓝鲸大约五个字宽;先鼓起,大约 1.5 秒后变稀散掉。雾停在喷出的地方,不成喷泉。 - 浅色页面仍用深色雾字。背景浓度调低时,这团雾保持自己的浓度,不跟着鲸身一起淡没。 ### 分组设置与文字效果关闭 - 顶部效果预览与保存操作保持固定,仅下方选项独立滚动;预览按窗口可用高度缩放,滚动区支持键盘聚焦,主面板不再整页滚动。 - 设置页改为顶部大幅实时预览,下方按外观、鲸群、阅读和海面分组,窄容器自动单列,高级留白设置默认收起。预览可独立暂停,草稿、保存与冲突恢复沿用原协议。 - 数值使用原生滑块并显示百分比、倍率与像素;布尔设置使用独立开关,短枚举使用可键盘访问的分段按钮,鲸类与配色使用下拉选择。更新深浅主题、焦点、对比度与减少动态样式。 - 文字边缘效果新增「关闭」。关闭时不测量文字、不保留局部遮罩或模糊缓存,内容框玻璃和媒体遮挡保持独立;重新开启立即生效,保留原鲸群。旧配置默认仍为毛玻璃。 ### 鲸群深度与起伏 - 1 至 8 头鲸分配独立的初始深度,修复超过 5 头时深度重复。近处墨色清晰,远处在原有雾化上逐渐减淡,保留字符轮廓与逐格遮挡。 - 每头鲸以独立的节奏缓慢升沉,体长、碰撞范围、骨架和透视同步变化。深度目标平滑接续,改变设置、缩放、暂停和减少动态时保留连续状态。 - 更新客户端与独立预览产物。本轮为本地实现和验证,未安装到桌面 profile,未发布安装包。 ### 可选文字边缘效果 - 新增「文字边缘效果」,提供微光、柔和模糊和毛玻璃,默认毛玻璃。现有微光继续隐去文字附近的鲸鱼;模糊和毛玻璃改用同一片完整鲸群的模糊剪影,避免鲸身被文字行切断。 - 文字效果与「内容框毛玻璃」独立,设置草稿和独立预览都可直接比较。保存后原地应用,不重置鲸群;系统要求减少透明时退回微光。 - 新模式复用卡片、右侧栏的同一份模糊海面,文字行遮罩继续缓存;滚动期间不测量文字或重画海面,停下后再恢复。 ### 海上落雨 - 新增默认关闭的「海上落雨」与 0 至 1 的「雨量」,默认雨量 0.45。雨量和开关原地更新,保留鲸群、雨滴与水纹历史;关雨后已落下的涟漪自然消散。 - 风纹与雨丝共用缓慢变化的海面风场,雨丝按前后层次改变长短与速度。关闭海面风纹后逐渐回到直雨。 - 雨滴抵达海面时按实际落点带出短暂碎水和扩散断纹,与鲸鱼游动尾流开关独立;沿用阅读区、媒体与毛玻璃保护,暂停、页面隐藏和系统减少动态时不继续推进。 - 背景浓度调低时,雨丝、落点碎水和随机喷雾不再跟着淡到看不见。浅色页面上的雨改用更深的墨色和至少一像素的线宽,喷雾改用深色字,浓度 0.35 时仍然能认出。 - 设置草稿和独立预览均可调雨量,更新正式客户端与预览产物。此项为本地源码更新,未安装或发布安装包。 ### 滚动阅读响应 以下暂退行为现由「滚动时暂停渲染」控制,默认关闭,见上一节。 - 修复文字保护在滚动时反复读取布局、重建柔边遮罩,与鲸群和毛玻璃绘制争用主线程的问题。 - 滚轮、触摸和滚动事件只标记失效并立即暂退装饰层,采用不阻塞滚动的监听。最后一次滚动后静止 140ms,按新位置测量一次,再用 120ms 淡入恢复;减少动态时直接恢复静态画面。左侧栏滚动不影响鲸群。 - 正文静止时复用文字行几何;内容、字体、布局变化后才更新。滚动期间暂停仿真,恢复时接续原位,不补跳动作;卸载时清理恢复计时器。 ### 文字保护与右侧栏毛玻璃 - 按真实文字行保护正文、代码、输入内容与右侧栏标签。鲸鱼、风云、水纹和玻璃绘制完后,以带柔边的缓存遮罩恢复文字区域;关闭毛玻璃也保留保护。 - 右侧栏使用更淡的鲸影、更重的模糊和左侧微光,沿用「内容框毛玻璃」开关。识别零宽轨道中的展开面板,关闭侧栏时不在对话区留下玻璃;浮动面板单独识别。 - 右侧栏内的图片、嵌入页面与终端画布完整遮挡海面。减少动态时,文字变化、侧栏开合与滚动也会刷新保护区域。 - 独立预览加入无背景正文与可输入、可点击的右侧栏。本轮更新源码和生成产物,未安装到桌面 profile,未发布安装包。 ### 目标栏毛玻璃 - 修复输入框上方目标状态栏直接透出清晰鲸鱼的问题。目标栏的底色位于 `::before` 伪元素,且采用半透明菜单材质;原扫描只检查元素本体的近不透明背景,因此漏掉该栏。 - 现在识别带真实背景模糊的半透明面板,以及完整覆盖圆角卡片的 `::before` / `::after` 背景。沿用原有圆角裁切、阅读区材质和样式读取预算,不把装饰线、未生成或不可见的伪元素当成面板。 - 新增目标栏材质对照回归,覆盖强度为零、现代颜色格式、不透明对照及装饰误识别边界。 ### 任务状态与随机配色 - 「鲸鱼配色」加入「每条随机配色」。八种色系按场景种子打乱,每头各一种,保留体表明暗;保存、缩放与鲸体重建接续原色。 - 新增默认开启的「跟随任务状态」。会话、子代理与后台任务按身份分配鲸鱼;工作时加强巡游,空闲时滑行,等待人类处理时平滑上浮、慢游并显示 `!`。 - 后台任务从运行转为完成或失败时显示六秒播放时间的 `✓` / `×`。历史结果不会重新提示,子代理空闲不代表任务成功;鲸鱼不足时汇总额外任务及紧急提醒。 - 状态更新不重建画布,沿用阅读区与媒体遮罩,减少动态时静态更新。可选后台任务服务只共享当前会话的一条任务列表订阅,切换会话、关闭联动和卸载时释放。 - 独立预览加入随机配色、任务状态演示和联动开关。本轮为源码与产物更新,未发布安装包。 ### 架构与工程验证 - 修复毛玻璃周边出现白色矩形空带的问题。鲸鱼、风纹、云影和水纹按卡片真实圆角裁切,不再向外渐隐或按矩形块扩张遮罩;卡片内部继续显示模糊海面。 - 修复对话图片、GIF、视频和嵌入媒体被鲸鱼、尾流、云影与毛玻璃覆盖的问题。媒体现在完整遮挡海面,与毛玻璃开关无关,并随加载、滚动和显隐更新。 - 新增沿实际航迹留下的 ASCII 游动尾流,滑行时也能产生;水纹向两侧展开后消散,转弯不会把旧尾流一起旋转。沿用原 `ripples` 设置键,界面名称改为「游动尾流与水花」,并保留拍尾与入出水水花。 - 修复多轮对话后用户消息气泡、单字短消息气泡与跨屏长卡片的毛玻璃漏检问题,并取消开启「安静中心」时对毛玻璃底海面的双重衰减。 - 阅读区布局、鲸群仿真和配置草稿分别集中规则,保留原地更新、下潜接续、暂停及玻璃/避让语义。 - 插件与独立预览共用 esbuild 组装;新增生成产物公开入口的 Canvas 绘制命令对照及单边变异检查。 - 固定 Node/pnpm 版本,新增只检查不重建的 `pnpm verify` 与 Windows/Linux CI;自动发现 `tests/` 下的测试,排除临时副本。 - 整理源码、测试、工具、预览和研究资料目录,保留插件入口、设置与版本;图片迁入 `docs/images/`,独立预览位于 `preview/whale-preview.html`。 - 新增只读工作区审查清单、读取探测,以及分层浏览器验收说明。此节对应源码同步,未发布新的安装包。 ## 0.14.0 海面风纹、云影与穿屏连续性 - 新增独立的「海面风纹」「掠海云影」开关,默认开启。风使用少量断续短纹;云影以固定点阵形成软边暗块,缓慢经过海面,并轻微压暗鲸体颜色。 - 云影只改变鲸鱼的墨色,不改变字符、轮廓或可见度。风云共用阅读区遮罩;减少动态、隐藏页面与预览暂停时不继续推进。 - 修复穿屏后遇到对侧障碍时整身被推出去的跳位。对侧障碍现在参与提前预测,跨边附近的接触移动有单帧位移上限;中心与历史脊柱只按整屏周期共同平移。 - 下潜和出水仍在,画面见下一节。这一版新增的回归覆盖天气稳定性、字形不变、遮罩和穿屏。 研究依据与视觉设计取舍见 [ATMOSPHERE-RESEARCH.md](./docs/research/ATMOSPHERE-RESEARCH.md)。 ## 各自下潜,再从鼻端冒出来 这个动作在 0.14.0 里,0.10.0 没有。0.14.0 没有为它加开关,所以上一节只写了「仍在」。这里把能看见的过程写出来。 每条鲸自己挑时候,不是整群一起下去。页面打开后先在水面游一段。到了它自己的时刻,它可能下去,也可能这次放过,过一阵再决定。游动速度为 0 时,这个决定停住。 下去时吻端先入水。尾鳍先抬起,再用力向下拍一次。还在水面以上的部位继续看得见,落到水面以下的字格消失。不是整条身子一起变淡。水下它仍按原来的航线走,只是看不见。 上来时鼻端先破水,其余身子跟着出来,最后放平。入水和出水的这段时间,它不跟着平时的巡游目标急转。旁边的障碍仍然可以把它推开。完全回到水面之后,转向才慢慢回来。 尾鳍拍进水面、鼻端破出水面时,各留下一次水花。这和巡游时的「尾拍涟漪」走同一个开关。关掉之后,平时的波纹和这两次水花一起停。「随机喷水」默认开着。鲸在水面上隔一会儿从喷气孔吐一小团雾,雾留在喷出的地方散掉。身子入水较深时不新吐,已经吐出的雾也跟着变淡。 下水、待在水下和重新浮出的时长是为安静的对话背景排的,不是某个物种的实测潜水时间。没有单独的下潜开关。 ## 0.11.0 内容框毛玻璃与圆角统一 用户反馈两件事:0.10.0 的输入框毛玻璃「还是没有毛玻璃效果」,而且「圆角没有统一」。根因有两条: 1. 0.10.0 只给输入框盖了玻璃,消息卡片没有;而白底卡片上的极淡剪影几乎看不见,所以整体观感就是“没有玻璃”。现在改成**内容框级**:对话里每个不透明圆角卡片(消息、任务、代码块)和输入框各自一块玻璃,框内取整片鲸鱼字格场做一次高斯模糊,再按卡片圆角裁进去,鱼在框内只以模糊形态透出,文字保持清晰。 2. 用户截图里的“内层圆角矩形”是插件 0.10.0 在卡片自带的 0.5px 中性描边之上又画了一条 1px 偏蓝描边;几何虽与卡片完全重合,但在 125% 缩放下两条线只在四角错开成两圈半径不同的弧。0.11.0 **不再由画布描边**,轮廓只保留卡片自身的 hairline ring。 设置项变化:`glass` 语义改为「内容框毛玻璃」,默认开启;0.10.0 的「输入框毛玻璃」并入其中,旧配置里单独打开过它的会在读取时自动迁移;「鱼群避让输入框」保留,并与内容框毛玻璃互斥。 玻璃几何严格等于裁进画布后的 DOM 卡片矩形(不内缩/不外扩),圆角逐个取自卡片自身的计算圆角;候选框只在布局可能变化时扫描(400ms 节流 + 滚动/缩放/开关变化失效),不逐帧读 DOM。 ## 0.10.0 输入框毛玻璃与鱼群避让 设置页在**玻璃强度**之后新增两个开关,默认都关闭,且**互斥**(开启任意一项会自动关闭另一项;若把两者同时写入配置,插件按「毛玻璃优先」解析): | 开关 | 效果 | | --- | --- | | **输入框毛玻璃** | 在输入框卡片上盖一块与阅读区同材质的磨砂玻璃:框内鲸鱼只以模糊剪影透出,带描边、顶部微光和底部阴影。 | | **鱼群避让输入框** | 鲸鱼把输入框当作障碍物绕开,身体不再从框内穿过;关闭后恢复原有巡游。 | 两者互斥的原因是:玻璃已经把框内的鲸鱼藏进磨砂层,再让鱼群绕开同一个位置只会压缩可游动的海面,没有额外视觉收益。毛玻璃需要把文字上方也盖一层材质,会轻微降低输入框文字的对比度,所以默认关闭;材质沿用阅读区那套对比度预算,顶部高光带的强度另外降低(最坏情况仍按 WCAG 计算,明暗两主题、0/0.55/1 三档强度都 ≥ 4.5:1)。 几何来自 DSH 公开的 DOM 钩子:输入框卡片 `[data-composer-card]`,缺失时退回座位 `[data-composer-seat]`;圆角读卡片的实际边框圆角。所有读数只在布局可能变化时进行(400ms 节流,滚动、缩放、开关变化时立即失效),不逐帧查询 DOM。找不到输入框时两个开关自动退化为无操作,不报错。系统开启**减少透明效果**时不绘制玻璃材质,但输入框和阅读区仍然不会出现锐利字符(保持 0.9.0 的可读性行为)。 避让的内部实现是屏幕空间的软障碍:沿鲸体取 5 个轮廓站点(尾鳍、尾柄、中段、胸鳍根、吻端),每个站点带对应部位的半宽;任一站点进入「卡片 + 字格余量」就按最深穿透把整条身体推出去,并让转向提前发生;路线目标若落在障碍内会改到障碍上方最近点。避让开启时,输入框区域本身也不绘制鲸体字形(插件画布位于输入框之上,这是弯尾鳍偶尔扫过时的兜底),所以框内始终是干净的。障碍只影响当前位置与转向,不改变鲸类参数;关闭后与从未开启逐值一致。 ## 0.9.0 鲸鱼大小、全滑块设置,以及选中模型不再刷新鱼群 设置页新增 **鲸鱼大小**(0.55 至 1.55,默认 1)。它只改变体长:游速、转向和摆尾节奏仍由鲸类参数决定;鲸体越大占用的字格越多,粒子采样、避让距离和边界回旋随体长联动。默认值 1 与 0.8.0 的画面逐值一致,旧设置不需要迁移。 设置页的选项改为滑块: | 形态 | 选项 | | --- | --- | | 连续滑块 | 数量、游动速度、背景浓度、字符大小、鲸鱼大小、浏览器左侧留白、玻璃强度 | | 分段滑块 | 鲸鱼种类、渲染样式、填充内容、海洋色调(轨道下方标出各档,可拖、可点、可用方向键) | | 滑块式开关 | 显示蓝鲸、减淡阅读区域、圆角毛玻璃 | | 文本框 | 鱼身文字(唯一无法用滑块表达的选项;切到 ASCII 时禁用但保留内容) | 所有数值项都带实时读数与最小/最大刻度,拖动时静态样例立即更新;点击**保存**后才应用到背景。键盘方向键、Home 与 End 沿用浏览器原生滑杆行为。 本版修复了一个此前未被发现的问题:**在输入框切换模型时,背景鱼群会整体跳回初始位置**。根因不在本插件,而在 DSH 的设置同步机制:选择模型会把默认模型写进同一份设置文档,DSH 随后把整份文档重新解码并交给每个配置表单;即使插件自己的设置一个字都没变,表单拿到的也是**内容相同、引用全新**的对象。旧实现按引用判断「配置变了」,于是卸载重挂整层并新建鲸群。 现在改成按值比较:内容没变就完全不动作;真的变了就原地更新——浓度、速度这类选项下一帧生效;只有数量、鱼身文字、鲸类、鲸鱼大小这类结构选项才重建鲸群,并把每条鲸鱼的位置、朝向、游速和摆尾相位迁移过去,不会再跳回起点。换主题、切语言等同样会触发设置文档更新的操作也因此受益。 验证范围见 [SOURCE-NOTES.md](./docs/research/SOURCE-NOTES.md)。根因来自本机 DSH 安装包解包源码的逐行核对;修复前后各在真实 Chrome 的仿真 shell.overlay 上实测:0.8.0 在一次内容不变的设置文档更新后引擎重挂 1 次、画面指纹精确回到初始布局;0.9.0 同样操作重挂 0 次、画面连续巡游。 ## 0.8.0 彩色字格与 ASCII 在插件设置中新增两个独立选项,组合如下: | 渲染样式 | 填充内容 | 画面 | | --- | --- | --- | | 纯字符 | 自定义文字 | 沿用原来的文字鲸鱼,默认组合 | | 彩色字格 | 自定义文字 | 每格铺深浅底色,继续使用自己的文字 | | 纯字符 | ASCII | 按明暗选择疏密不同的等宽符号 | | 彩色字格 | ASCII | 深浅字格加 ASCII 字符,接近参考截图的构成 | 选择 **彩色字格 + ASCII 字符** 即可体验新增效果。底格根据鲸体高度、表面朝向和水深形成色阶,并带少量稳定的冷暖变化;不按时间随机跳色。内部先铺底色再绘字符,边缘覆盖不足处只保留浅字符。前景按实际合成底色选择深浅,淡出的格子不会因为配了白字而丢失字形。 自定义模式保留现有空白处理规则,只使用你的字符。ASCII 使用独立密度串 `.:-=+*ox%#@`,不会改写保存的鱼身文字;切回自定义即可继续使用。字格底色与字符内容互不绑定,旧配置自动保持纯字符、自定义文字。 设置页新增静态鲸鱼样例,草稿改变时立即更新,点击保存后才应用到背景。样例不启动动画循环。五种鲸类、上下摆尾、滑行、玻璃面板及减少动态/透明效果处理继续保留。较小字号能显示更多尾鳍与背部细节。 原版确实先画带色偏的底格,再叠字符;其彩色闪烁主要发生在前景字符,并非随机彩虹底格。具体源码核对和差异见 [ASCII-RENDER-NOTES.md](./docs/research/ASCII-RENDER-NOTES.md)。本插件使用原创配色与绘制代码。 ## 0.7.0 正文背后的圆角毛玻璃 对话区正文后面加了一整块圆角磨砂玻璃:从正文上沿一直贯通到输入框底边,鲸鱼只在玻璃四周和外面游动。玻璃内部是模糊后的鲸影,不再出现和正文抢注意力的单字。 关键约束:鲸鱼画布在 DSH 的浮层里,**位于正文之上**,所以面板里叠的每一层都会直接压低正文对比度。因此鱼影浓度被可读性上限卡住——玻璃的质感主要来自边缘描边、顶部高光、底部阴影和「里面的东西都被模糊了」这件事本身,而不是靠加厚底色。新增检查会用 WCAG 相对亮度公式算出明暗两套主题、0/0.55/1 三档强度下的最坏对比度,低于 7:1(AAA 正文标准)即失败;实测最低 7.41:1。 设置里新增 **圆角毛玻璃**(默认开)与 **玻璃强度**(0 至 1,默认 0.55)。关掉后回到 0.6.0 的纯鱼群背景;系统开启「减少透明效果」时自动放弃玻璃质感,只在正文区清空海水,正文始终优先。 ## 0.6.0 鲸类造型与沉稳巡游 新增五套独立体型,可选择混合鲸群或单一鲸类: | 鲸类 | 俯视轮廓 | | --- | --- | | 蓝鲸 | 修长躯干、宽圆吻部、短胸鳍、小而靠后的背鳍 | | 座头鲸 | 较厚实躯干、约三分之一体长的长胸鳍、宽尾叶 | | 抹香鲸 | 约三分之一体长的宽钝头部、小胸鳍、低背隆起 | | 长须鲸 | 更细长的躯干、V 形吻部、较明显的后置背鳍 | | 弓头鲸 | 圆厚躯干、收窄的吻部、桨状胸鳍、没有背鳍 | 造型对照了 NOAA 的真实航拍照片、Naturalis 物种鉴别资料和原始研究的鲸类俯视照片板。来源与适用范围见 [WHALE-REFERENCES.md](./docs/research/WHALE-REFERENCES.md)。这是按照片特征绘制的简化模型;未标定的体宽、尾展和各部位站位均为绘制参数。 推进从横向传播波改为尾柄及尾鳍上下摆动。直线巡游不再叠加左右蛇行,转向时仍有带历史位置的身体跟随。头肩保持相对稳定,后躯小幅起伏,两片尾叶同向上下运动。胸鳍缓慢调整角度以配合转向。 巡游基础速度、转弯上限和摆尾节奏均下调。连续摆尾之间平滑过渡到滑行,滑行时仍持续前进。五种鲸类有各自的参数。这些数值用于安静的对话背景,不代表真实物种在统一条件下的实测速度、周期或滑行时间。