跳转到主要内容
CHANGELOG

每一次变好,都有迹可循。

持续记录项目的新版本、重要改进与修复。

  1. 软件中心 v1.2.0

    软件中心 v1.2.0

    这是继 v1.0.0 后的正式发布,包含 v1.1.0 阶段新增的可选 Halo MCP Server 集成,以及自动化操作的重试、并发编辑和操作前检查改进。现提供 43 个基础工具 + 2 个默认关闭的敏感工具,覆盖软件、版本、下载源、分类、标签和专题;未安装 MCP Server 时插件仍可独立运行。相对于 v1.1.0 阶段新增 9 个查询工具,已有工具名称和必填参数保持兼容。

    三项改进

    1. 创建请求持久化,重复调用不会重复创建

    六类创建工具均接受可选 requestId(UUID)。同一资源类型下,相同 ID 和相同输入只尝试创建一次;换用不同输入会返回 IDEMPOTENCY_CONFLICT。

    • 创建回执保存在 Halo 数据库中,跨插件重载及 Halo 进程重启保留。
    • 同一请求并发到达时,只有取得写入资格的调用创建资源,其他调用返回原回执或 OPERATION_IN_PROGRESS。
    • 资源已保存但回执未完成时,可以通过资源上的请求标记恢复回执。
    • 资源后来被修改或删除,重放旧请求只返回原创建结果,不覆盖或重建。
    • 新增 get_create_operation,查询 pending/writing/succeeded/failed/unknown 状态。

    回执只保存输入摘要、目标名称和操作状态,不保存输入正文或敏感值。当前不自动清理回执;管理员清理记录或回退数据库会改变防重复保障。无法确认结果的请求保留 unknown,不自动重建。

    2. 统计刷新不再必然阻止普通编辑

    普通读取增加 editRevision。普通更新及发布时,除 expectedVersion 外传入 expectedEditRevision,即可在业务内容未变的情况下接受统计或元数据造成的版本变化。

    实际落库仍发生版本冲突时,最多重新读取并重试两次。每次重试重新检查业务内容和引用,不覆盖其他人的业务修改。

    只传 expectedVersion 时继续严格校验。敏感配置更新和删除仍使用严格版本,不能使用该宽容机制。敏感值不参与普通业务摘要;普通更新保留最新敏感配置。editRevision 表示当前内容,不是修改历史序号。

    3. 发布前看准备情况,删除前看影响

    新增 check_app_publication、check_topic_publication 及六类 check_*_deletion。

    • allowed 表示当前领域规则是否允许操作;ready 还要求没有准备度警告。
    • 软件发布检查已发布版本、该版本启用的下载源、目标配置及必要 Secret 是否存在;不输出 Secret 名称或值。
    • 专题发布检查条目中的软件是否可见。
    • 删除检查返回引用数量、最多 20 个名称样本,以及引用是否阻止删除;同时提示保留的专题或关联软件引用。
    • 每组下载源或专题条目最多深入检查 200 条,超限会明确提示检查不完整。

    预检查是当前快照,不锁定资源,也不改变原有发布规则。它不验证远程文件能否下载或登录、验证码流程能否成功;实际执行仍重新校验。

    升级与使用

    1. 在 Halo Console 上传 plugin-software-1.2.0.jar。
    2. 等待插件恢复 STARTED,客户端重新获取工具目录。
    3. 在 MCP 服务中为已有密钥勾选需要的新增查询工具;新增工具不会自动授权。
    4. 自动化创建始终携带稳定的 requestId,重试复用同一 ID 和输入;编辑读取最新详情并携带 expectedEditRevision。

    新增参数均为可选。旧客户端继续可用,但不会自动获得创建去重或容忍统计变更的能力。重放创建返回的是原回执,后续编辑前需要重新读取资源。

    从 v1.0.0 升级前,需先将 Halo 升级至 2.26.0 或更高版本(v1.0.0 的最低要求为 2.25.0)。源码构建使用 Java 21。当前编译使用 MCP API 1.3.0,保留 1.0.0 调用契约,可选插件依赖仍为 MCP Server >=1.0.0 & <2.0.0;不嵌入 MCP API/SDK。基础工具不依赖 AI Foundation;AI Foundation 编译 API 为 1.1.1,可选依赖范围保持 >=1.0.0-SNAPSHOT & <2.0.0。

    新增内部 Extension operations.software.jiewen.run/v1alpha1/SoftwareCreateOperation 及两项引用索引,既有六类业务 GVK、Console API 和业务数据结构保持兼容。内部请求记录未向普通软件角色或匿名用户开放原始资源权限。

    完整参数、工具目录和失败处理见 MCP 接入文档。1.1.0 设计背景见 原实现方案。

    构建与发布维护

    • 更新 Gradle、Halo UI 和其他兼容依赖;Console 保持 IIFE 输出及现有 JS/CSS 加载方式。
    • 对齐 Node.js 24、TypeScript 5.9 和 Halo 2.26 要求的 Vue Router 5.1,避免依赖升级破坏构建兼容性。
    • GitHub Release 发布后自动构建安装包并推送至 Halo 应用市场应用 app-todmqfve;本次不自动同步 README。
    • 暂停三个生态的常规 Dependabot 版本更新 PR,改为按需手动维护;仓库安全更新设置保持原样。

    验证记录

    验证日期:2026-10-16。使用独立 Halo 2.26.0 容器、文件型 H2 数据库、官方 MCP Server 1.0.0,通过 /mcp Streamable HTTP 联调。

    检查 结果
    完整 Gradle 构建 通过,生成 1.2.0 安装包
    Java 单元与契约测试 193 项通过,无失败或跳过(含提交前审查新增的 4 项)
    前端测试 14 个文件、55 项通过
    前端类型检查与 lint 通过
    真实 MCP 联调 全部 45 个工具调用成功,61 项检查通过
    JAR 内容 含 Console JS/CSS、新服务及内部模型;无 MCP API/SDK 类

    真实联调覆盖六类创建/查询/编辑/删除、同一请求重放和不同输入拒绝、四个并发请求只创建一条资源、保存资源后恢复回执、插件重载和整站进程重启后的去重、删除资源后不再重建、不确定结果不重建、业务版本与统计版本冲突、发布准备及引用影响、敏感配置脱敏、密钥白名单、匿名访问拒绝,以及 MCP 停用和恢复。

    单元测试另覆盖回执存储失败、取消与超时恢复、业务并发竞争、有限重试、敏感字段不进入摘要、检查数量上限及全部工具输出 Schema。联调修复了 Halo 将存储重名异常转换为 HTTP 400 异常的兼容问题:重试先读取并核验已存在请求,不依赖异常消息文字。

    提交前对抗审查修复了两项边界问题:引用校验不再接受已标记删除但尚未清理的软件、分类或 Secret 等资源;专题发布预检查遇到旧数据中的空条目时返回隐藏条目警告,避免 Reactor 拒绝空元素而中断检查。4 项回归用例先复现失败,修复后通过;上述真实 MCP 联调记录来自修补前,本轮修补通过完整本地构建和回归验证,未重复执行整套真实 MCP 联调。

    依赖更新后,Gradle 9.8.1 完整构建、193 项 Java 测试、55 项前端测试、lint 和类型检查再次通过。保持新 API 编译结果不变,仅将测试运行时替换为 AI Foundation API 1.0.1 / MCP API 1.0.0 后,193 项 Java 测试再次通过;安装包保留 Console JS/CSS,不包含可选插件 API 或 MCP SDK。此阶段未重复执行真实 Halo 安装、升级、编辑器 UI 和 MCP 联调。

    本次未进行 PostgreSQL/MySQL 联调、生产数据压力测试、全部 MCP 1.x 版本测试或特定 AI 客户端的界面验收。跨资源工作流、批量导入和 AI 异步作业仍不在本版本范围内。

    正式版本号为 1.2.0,Git 标签为 v1.2.0,安装包为 plugin-software-1.2.0.jar。发布安装包不会自动升级已安装插件的站点;站点升级需在 Halo Console 中执行。

  2. v3.0.0

    TinyTale Next 小程序 3.0.0

    本次对小程序进行了整体重构,在保留首页、分类、图库、瞬间、关于等主要功能和图鸟 UI 的基础上,完善账号体系、内容阅读、媒体发布及页面交互。

    新增功能

    • 新增 Halo 账号密码登录、微信一键登录及微信账号绑定。微信用户可通过主动登录完成账号创建或登录,已绑定用户支持静默恢复会话。

    • 新增个人资料页面,支持修改头像、昵称和个人简介。

    • 新增受限文章阅读能力,根据后端配置支持密码、验证码、登录、评论可见等访问方式。

    • 新增友链申请页面,对接支持申请功能的官方友链接口,支持验证码校验及申请结果反馈。

    • 新增跟随系统切换明暗主题,继续支持站点配置和用户主题偏好。

    体验优化

    • 重构底部导航,将五个主页面整合到统一页面容器,按需加载,并限制同时保留的较重页面数量。

    • 统一文章与瞬间的富文本渲染,完善代码高亮、明暗主题、内容样式和文章表格横向滚动。

    • 优化图库瀑布流,根据图片尺寸预留展示空间,优先加载缩略图,缩略图失败时回退原图,点击后预览原图。

    • 优化图片发布流程,记录图片尺寸,支持压缩封面,并在部分发布失败后避免重复提交已成功的图片。

    • 完善页面加载、空数据、请求失败和重试反馈。

    • 完善微信分享路径、页面跳转和返回导航。

    • 调整评论弹层及原生输入框的键盘避让逻辑,保留关闭后再次打开的评论草稿。

    架构重构

    • 升级 uni-app 工具链和相关依赖,保留 Vue 3 与图鸟 UI 技术体系。

    • 使用 Alova 统一普通请求和文件上传,集中处理认证、错误和请求重试。

    • 重新划分页面、业务组件、接口调用、会话状态、站点配置及本地偏好的职责。

    • 将富文本渲染器整理为独立工作区包,统一维护文章和瞬间的渲染样式与构建流程。

    • 补充登录会话及评论输入组件的回归测试。

    问题修复

    • 修复会话过期后仍发送旧凭据的问题,请求前检查有效期并尝试恢复会话。

    • 避免并发请求重复触发静默登录,防止用户主动退出后被先前的登录响应恢复会话。

    • 修复会话恢复失败可能阻塞公开文章读取的问题,允许符合条件的公开读取按访客身份继续。

    • 修复图库发布页面的分组读取方式,改用管理接口获取可用图库分组。

    • 调整图库和瞬间访问密码的传递方式,使用请求头发送,并取消访问密码的本地持久化。

    已知问题

    • 微信小程序评论输入仍需真机回归:空内容触发校验后关闭评论弹层,再次打开并点击输入框,可能出现输入框闪烁、输入法无法唤起。当前已调整输入组件和键盘处理,但尚未确认彻底修复。

  3. v2.2.0

    Fuwari v2.2.0

    本次更新新增友链自助申请与萌 ICP 备案支持,并对友链页面和 Markdown 显示体验进行了优化。

    新功能

    • 友链页面新增与主题风格一致的申请表单,支持填写网站信息、反链及 RSS / Atom 订阅地址。
    • 友链申请接入 plugin-links 公共 REST API,验证码获取和申请提交均无需刷新页面。
    • 新增萌 ICP 备案号和跳转链接设置,仅在两者均已配置时显示。感谢 @qzgeek 的贡献(#31)。

    优化与修复

    • 完善友链申请成功、内容无效、验证码错误、重复申请、请求限流和服务不可用等状态提示。
    • 优化验证码刷新、过期处理和请求状态,避免重复请求及重复提交。
    • 修复 Swup 页面切换后申请按钮可能一直处于禁用状态的问题。
    • Logo 加载前、加载失败或未配置时显示网站名称首字,不再出现裂图。
    • 保留无 JavaScript 环境下的原生友链申请表单。
    • 修复 Markdown 行内代码前后显示多余反引号的问题。感谢 @nekoside-dev 的贡献(#30)。

    兼容性

    • 需要 Halo 2.25.0 或更高版本。
    • 使用无刷新友链申请功能需要 plugin-links v2.3.0-beta.2 或更高版本。

    升级提示

    升级后请在 Halo Console 中重载主题配置,以载入新增的萌 ICP 备案设置。

    Full Changelog: v2.1.0...v2.2.0

  4. v0.1.8

    ImagePort v0.1.8

    本版本引入多服务商图像生成架构,并完善了协议适配、能力管理、设置体验和发布流程。

    主要更新

    多服务商与协议适配

    • 新增 OpenAI Images 协议适配器
    • 新增 OpenAI Responses 协议适配器
    • 新增 xAI Grok Imagine Images 适配器
    • 新增 Google Gemini Interactions / Nano Banana 适配器
    • 支持自定义 Provider Manifest
    • 服务商能力预设与 API 协议解耦,第三方中转站可按实际兼容协议配置
    • 设置页新增最终请求地址预览和协议不匹配提示

    Gallery 能力管理

    • 根据当前服务商和模型动态显示可用参数
    • 不支持的质量、格式、审核、压缩和尺寸选项会自动隐藏或归一化
    • 根据服务商能力限制参考图数量
    • 不支持像素级蒙版的服务商会禁用蒙版入口
    • 不支持图像编辑的自定义服务商会禁用参考图入口
    • Gemini 多图生成会拆分为多次独立请求
    • 修复特殊竖图比例下 1K / 2K 分辨率档位误判问题

    设置与配置体验

    • API 配置页移除冗余介绍文字
    • 多个服务商添加按钮合并为“添加连接”下拉菜单
    • 服务商切换时分别保存各自的 URL、模型、API Key 和协议草稿
    • 支持恢复官方连接配置
    • API Key 导出默认脱敏
    • 旧版本配置会自动迁移到新的协议字段
    • Agent 模式继续使用 OpenAI Responses API

    稳定性修复

    • 阻止空 URL、相对 URL 等无效地址,避免出现 Invalid URL (POST /v1/interactions)
    • 修复 Google 官方地址误用 OpenAI Images 协议的问题
    • 修复 Gemini Interactions 地址拼接兼容性
    • OpenAI-compatible 响应支持根据 mime_type 正确生成图片 Data URL
    • 任务历史记录保存实际使用的 API 协议
    • 任务复用时优先匹配服务商、协议和模型

    发布流程

    • 新增统一发版命令:

      bun run release 0.1.9
  5. v0.1.7

    ImagePort v0.1.7

    这次更新重点改善任务历史、设置弹窗和发版更新体验,让大量历史任务下的操作更稳定、更流畅。

    新增

    • 在“关于”页新增 GitHub 仓库入口。
    • 新增手动检查更新功能,可从 GitHub Releases 获取最新版本并提示是否有更新。
    • GitHub 外链现在通过 Tauri opener 打开,并在前端限制为 ImagePort 仓库链接。

    改进

    • 设置页的任务存储估算改为异步分批计算,避免打开设置或切换到关于页时阻塞界面。
    • 存储估算文案改为“已加载任务导出 JSON 估算”,避免和完整本地历史占用混淆。
    • 关于页和数据页会区分“已加载任务数”和“历史总任务数”。
    • 完整备份、导出任务等文案改为明确说明当前导出的是已加载任务。

    修复

    • 修复任务列表底部分页/加载按钮可能被输入框遮挡,导致看起来无法继续加载的问题。
    • 修复框选任务时可能误选中页面文字、图片的体验问题。
    • 修复参考图 hover 操作区删除按钮显示不完整的问题。
    • 修复 GitHub 仓库按钮点击无反应的问题。

    工程质量

    • 增加更新检查、外部链接打开、异步存储估算等单元测试。
    • 通过前端构建、Svelte 类型检查、lint、Bun 测试和 Tauri cargo check。
  6. v2.1.0

    v2.2.0

    本次版本主要新增侧边栏音乐播放器、重做相册浏览体验,并接入 Halo 2.25 的主题端 UI 扩展能力,为编辑器提供 Fuwari 提示块支持。

    新增

    • 新增侧边栏音乐播放器组件,支持在主题设置中配置播放器。
    • 新增相册详情页,支持照片标题、描述、标签、EXIF 信息和上下张分页导航。
    • 新增相册预览遮罩信息面板,支持下载、分享、查看详情和跳转分组。
    • 新增编辑器提示块功能,支持 NOTE、TIP、IMPORTANT、WARNING、CAUTION 五种类型。
    • 支持提示块自定义标题,并在再次编辑时保持块结构与样式。
    • 新增主题预览图。

    优化

    • 优化相册列表和图片预览体验,改善桌面端与移动端遮罩布局。
    • 优化 PhotoSwipe 交互,修复按钮位置、图片缩放、关闭动画和页面滚动穿透等问题。
    • 优化相册详情页布局,使标题、分组信息和图片内容更统一。
    • 调整 Markdown 提示块前台样式,兼容新的 fuwari-admonition 自定义元素。
    • 保留旧 Markdown 引用提示块的兼容转换逻辑。
    • 调整主题构建流程,支持独立构建主题 UI 插件。

    使用提示块

    在 Halo 编辑器中输入 / 打开快捷菜单,然后选择对应的 Fuwari 提示块;也可以直接输入对应命令快速查找:

    • /note:提示框
    • /tip:技巧提示
    • /important:重要信息
    • /warning:警告信息
    • /caution:注意信息

    插入后可以直接编辑提示块内容,也可以填写自定义标题。

    兼容性

    • 最低 Halo 版本要求提升至 >= 2.25.0。
  7. v0.1.6

    ImagePort Desktop v0.1.6

    这次是一次小版本体验修复,主要优化 Gallery 的框选交互、首次历史任务加载反馈,以及参考图操作按钮的显示细节。

    更新内容

    • 修复 Gallery 框选任务时会误选中文字、图片的问题
    • 任务卡片预览图禁用原生拖拽,框选体验更稳定
    • 首次进入 App 加载历史任务时增加骨架屏,减少“像是空列表”的等待感
    • 修复参考图缩略图 hover 删除按钮被裁切或位置过于靠内的问题

    验证

    • bun test
    • bun run lint:oxc
    • bun run check
    • bun run build
  8. v0.1.5

    ImagePort Desktop v0.1.4

    这版重点优化 Gallery 历史任务性能、任务删除体验,以及 Settings 打开时的响应速度,同时继续拆分 Gallery Workspace,降低后续维护成本。

    Highlights

    • 优化历史任务删除:删除任务时不再重写全部任务记录,改为按任务 ID 增量删除,减少大历史库下的等待时间。
    • 优化 Settings 打开速度:任务存储体积估算改为按需延后执行,打开设置弹窗时不再被大任务列表的同步计算阻塞。
    • 支持历史任务分页加载:启动时只加载首批任务,点击“加载更多”再继续从 SQLite 加载后续任务。
    • Gallery Workspace 继续模块化拆分,主组件更轻,任务状态、输入区、导入导出、任务卡片展示逻辑都有独立边界。

    Improvements

    • 提取 GalleryComposer,底部提示词、参考图和参数输入区从主工作台拆出。
    • 提取 AgentWorkspace,Agent 会话视图和 Gallery 主逻辑解耦。
    • 提取 TaskCard view model,任务卡片展示文案、预览图、按钮状态集中计算。
    • 提取任务状态 helper,减少散落的 tasks.map/filter 状态更新逻辑。
    • 导入、导出、完整备份逻辑移动到独立 helper,并补充测试。
    • 删除任务图片文件时改为有限并发清理,避免一次性启动过多文件操作。

    Fixes

    • 停止 Agent / 删除任务后,后台异步轮询与图片请求会更及时取消。
    • 修复 Settings 弹窗打开前同步估算任务存储大小导致的卡顿。
    • 保留 legacy localStorage fallback,避免 SQLite 读取为空或不可用时丢失旧历史。

    Verification

    • bun test
    • bun run check
    • bun run lint:oxc
    • bun run build
  9. v0.1.4

    ImagePort Desktop v0.1.4

    修复

    • 修复设置「关于」页版本号仍显示 0.1.0 的问题。
    • 关于页现在会优先读取 Tauri 应用真实版本,开发/非 Tauri 环境下兜底显示 package.json 版本。

    保留改进

    • 优化图片复制性能:优先使用浏览器剪贴板写入原始图片 Blob,减少大图复制时的 RGBA 解码和跨进程传输开销。
    • 修复 GitHub Actions Windows 构建中版本同步脚本无法处理 CRLF 换行的问题。
    • Release 构建时会从 tag 自动同步应用版本号。

    验证

    • 通过格式检查。
    • 通过 Svelte 类型检查。
    • 通过前端生产构建。
  10. v0.1.3

    ImagePort Desktop v0.1.3

    修复

    • 修复 GitHub Actions Windows 构建中版本同步失败的问题。
    • 版本同步脚本现在兼容 Cargo.lock 的 Windows CRLF 换行,避免出现 Could not update src-tauri/Cargo.lock。

    改进

    • 保留 v0.1.2 的图片复制性能优化:优先使用浏览器剪贴板写入原始图片 Blob,减少大图复制时的 RGBA 解码和跨进程传输开销。
    • 保留 Tauri 原生剪贴板写入作为兜底,提升不同系统环境下的兼容性。

    发布流程

    • Release 构建时会从 tag 自动同步应用版本号。
    • GitHub Actions actions/checkout 已升级到 v6,适配新版 Node.js Actions runtime。

    验证

    • 通过版本同步脚本 CRLF 回归测试。
    • 通过图片剪贴板单元测试。
    • 通过格式检查和 Svelte 类型检查。
  11. v0.1.2

    ImagePort Desktop v0.1.2

    改进

    • 优化图片复制性能:优先使用浏览器剪贴板写入原始图片 Blob,减少大图复制时的 RGBA 解码和跨进程传输开销。
    • 保留 Tauri 原生剪贴板写入作为兜底,提升不同系统环境下的兼容性。

    发布流程

    • 升级 GitHub Actions actions/checkout 到 v6,适配新版 Node.js Actions runtime。
    • 发版构建时会从 Release tag 自动同步应用版本号,避免安装包版本停留在旧版本。

    验证

    • 通过图片剪贴板单元测试。
    • 通过格式检查、Svelte 类型检查和前端构建。
  12. v0.1.1

    ImagePort v0.1.1

    这是一个体验修复与工程规范化版本,重点改善图片预览、复制、右键操作和项目检查流程。

    更新内容

    • 修复图片预览中点击“复制图片”失败的问题,避免出现 expected RGBA image data, found raw bytes 错误。
    • 为任务详情、图片预览和图库图片增加右键菜单,支持查看大图、保存、复制、设为参考图、遮罩编辑等常用操作。
    • 优化图片预览上一张/下一张按钮体验,修复点击时按钮位置下跳、偶发点击无效的问题。
    • 优化任务详情右侧操作按钮布局,让图片操作更集中、更顺手。
    • 更新应用图标与品牌展示资源。
    • 引入 Oxc 工具链,新增前端格式化与 lint 检查脚本,提升代码规范化和后续维护体验。

    开发与质量

    • 新增 Oxc 配置:oxfmt、oxlint。
    • 新增图片右键菜单和剪贴板复制相关回归测试。
    • 已通过格式检查、Oxc lint、Svelte 类型检查和相关单元测试。
桂ICP备2023015155号-3