v1.0.3 - #6
Merged
Merged
v1.0.3#6
Conversation
feat(container): 添加 Docker API 版本感知的容器配置清理功能 - 修改 SanitizeCreateConfig 函数签名,增加 apiVersion 参数用于版本感知清理 - 新增 DockerManager.APIVersion 方法获取协商后的 API 版本信息 - 实现对低版本 daemon (API < 1.44) 的 per-network MacAddress 字段自动清理 - 修复在群晖 DSM 等非标准环境中容器重建失败的问题 - 添加完整的集成测试验证不同 API 版本环境下的配置处理逻辑 - 更新所有调用点以传递正确的 API 版本信息 ```
feat(container): 优化镜像名称处理逻辑,修复更新后显示SHA256的问题 当同一镜像部署多个容器时,第一个容器更新后会拉取新镜像并重新打tag, 导致其他容器仍在使用的旧镜像变成untagged状态,此时v.Image会变成空字符串。 现在优先使用containerInspect.Config.Image(创建时的镜像名)作为CreateImage, 该字段不会受后续tag变化影响,保持用户友好的镜像名称显示。 同时移除DelOldContainer环境变量控制,改为默认删除旧容器。 fix(bot): 修复面板中镜像名称显示问题,优先使用CreateImage字段 refactor(containerops): 统一镜像更新逻辑,使用CreateImage替代Image字段 docs(version): 更新版本号至v1.0.3 ```
feat(compose): 实现 Docker Compose 操作实时日志推送功能 - 修改 ContainerEditModal 组件中的挂载点选择器,更新宿主机路径输入框占位符文本, 并调整文件浏览器按钮的标题提示,明确区分宿主机和容器内目录浏览功能 - 更新 ContainerPathPicker 和 DirectoryPicker 组件的标题,增加关于 DockerCopilot 容器内目录的说明文字,并在 DirectoryPicker 中添加警告提示,告知用户显示的是 DockerCopilot 容器内的目录而非宿主机真实路径 - 在 internal/logic/compose/actionlogic.go 中修改 ComposeLogic.Action 方法, 将原有的 RunAction 调用替换为支持进度更新的 RunActionWithProgress 方法, 实现实时推送日志到前端的功能 - 在 internal/module/compose/runner.go 中新增 RunActionWithProgress 函数, 该函数通过管道方式捕获命令输出,实现流式读取并实时更新任务进度, 支持同时处理标准输出和错误输出,包含详细的错误处理和超时控制逻辑 ```
feat(compose): 添加文件管理器功能支持创建文件夹和Compose配置文件 - 前端添加ComposeFileManager组件,支持浏览/compose目录、创建文件夹和docker-compose.yml文件 - 新增createFolder和createFile API方法用于后端接口调用 - 后端添加CreateFolderHandler、CreateComposeFileHandler、ReadFileHandler和SaveFileHandler接口 - 实现文件浏览功能,支持显示目录和文件列表 - 添加文件内容编辑、校验和保存功能 - 改进Browse接口同时返回目录和文件列表 ```
feat(helper): 增强自我更新功能的稳定性和自清理机制 - 添加容器启动后稳定性验证:启动成功后等待2秒检查容器是否正常运行, 防止启动后立即崩溃的情况,并在检测到崩溃时自动回滚到旧容器 - 实现详细的启动失败诊断:获取并记录新容器的启动日志(前50行), 便于排查启动失败的具体原因 - 添加helper容器自清理功能:更新成功后主动删除自身容器, 避免遗留临时容器占用系统资源 - 改进Docker API兼容性:在sanitizecontainerconfig中清理网络端点配置 的运行态字段(EndpointID、Gateway、IPAddress等),解决非标准Docker daemon(如群晖)的网络冲突问题 - 调整helper容器生命周期管理:将AutoRemove设置为false,失败时保 留容器日志供排查,成功时由helper自行清理,提高故障诊断能力 - 优化start.sh脚本:添加默认工作目录设置,增强脚本健壮性 ```
feat(icons): 支持容器名称匹配和扩展图标配置格式 - 修改前端图标配置结构,支持容器名和镜像名分别配置 - 新增图标配置数据结构,包含target、targetType、iconUrl和priority字段 - 后端API改为JSON格式存储,替换原有的JavaScript配置文件 - 支持容器级别和镜像级别的图标配置,容器级别优先级更高 - 前端getImageLogo函数增加containerName参数,优先匹配容器名称 - 更新所有相关API接口,包括上传、获取、设置图标等操作 - 添加SVG和ICO格式图片支持 - 调整图标匹配算法,支持精确匹配、大小写不敏感匹配和模糊匹配 ```
refactor(docker-copilot): 统一路径常量管理和图标API优化 - 使用config常量统一管理数据目录路径(/data/config/image, /data/images, /data/config) - 新增serveEmbeddedFavicon函数复用前端logo.png作为favicon资源 - 优化图标API参数结构,统一采用对象入参方式(imageName, url, targetType字段对齐) - 删除重复的iconAPI,图标功能统一收敛至imageAPI模块 - 更新图标数据结构为IconItem数组格式,移除内置图标本地维护 - 优化getImageLogo函数为纯函数模式,消除异步加载时序问题 - 调整resolveContainerIcon优先级逻辑,确保持久化图标优于实时抓取结果 - 更新前端查询键名从'customIcons'调整为'icons'保持一致性 - 修复favicon路径处理逻辑,统一嵌入资源访问方式 fix(frontend): 图标管理和API调用优化 - 修复图标API调用参数结构不一致问题,统一使用对象入参格式 - 优化图标数据获取逻辑,前端不再维护内置图标列表 - 修复favicon获取和持久化流程,确保容器图标稳定性 - 更新图标过滤和搜索功能适配新的数据结构 ```
feat(icon-cache): 解耦前端缓存与后端持久化机制 - 前端缓存命中时补充持久化写入,确保图标最终落库 - 缓存额外记录容器访问地址src字段,用于后端fetchIcon时的resolve操作 - 增加注释说明缓存与持久化的解耦逻辑和TTL处理机制 fix(icon-persistence): 添加互斥锁防止并发写入覆盖 - 在ensureBuiltInIcons和addOrUpdateIcon函数中添加iconsFileMu锁 - 避免批量自动抓取时多个请求同时读改写icons.json导致互相覆盖 - 保护icons.json的读改写操作,确保并发安全性 ```
feat(container): 容器编辑弹窗挂载路径选择器优化 - 新增 pickContainerInitialPath 函数计算容器内路径选择器的起始目录, 仅当挂载行已填的容器内路径 target 是有效的绝对目录路径时才作为起点, 否则回退根目录 /,避免选择器因 target 为空、为文件或无效值时卡死 - 宿主机路径浏览按钮增加启用条件判断:仅本地容器且宿主机路径映射 可用时方可使用,远程容器或映射未配置时禁用并显示相应提示 - 容器内路径选择器的 initialPath 参数改为调用 pickContainerInitialPath 函数处理,确保起始路径有效性 - DirectoryPicker 组件 load 方法增加 allowFallback 参数,首次加载时 若指定路径不可访问或列不出子目录,自动回退到根目录 / fix(icon): 图标管理统一去除镜像tag避免匹配错位 - 前端 IconEditor 组件存储 key 统一去除 tag,与自动抓取路径 (useFavicon)保持一致,避免同镜像因手动/自动存入带/不带 tag 的两个 key 导致匹配错位 - 后端 obtainhandler.go 中 addOrUpdateIcon 函数对镜像级 key 统一 去除 tag,与前端匹配逻辑对齐,防止再次写入带 tag 的 key - 修复 useFaviconMap hook 中旧缓存无 src 字段时的补写逻辑, 通过容器实时端口重建访问地址后再补写,避免容器永远无法落库 - 优化 getImageLogo 函数中的模糊匹配逻辑,支持 target 比镜像名 更长/更完整的场景,提升图标匹配准确性 ```
feat(TaskPanel): 添加检查镜像更新任务的可更新列表展开功能 - 引入 ArrowUpCircle 图标用于可更新镜像标识 - 在 TaskRow 组件中添加 updatableImages 数据结构支持 - 实现可更新镜像列表的展开/折叠功能,与分层任务展开互斥 - 显示可更新镜像数量徽标(X 个镜像可更新) - 展开后以列表形式展示镜像名:tag 详情 - 更新 useTasks hook 以接收后端传来的 updatableImages 数据 refactor(checkupdatelogic): 优化镜像更新检查结果处理逻辑 - 新增 collectUpdatableImages 方法收集可更新镜像清单 - 多主机同名同 tag 镜像自动去重处理 - 将可更新列表随任务完成状态一同下发给前端 - 更新完成消息显示已检测镜像总数和可更新数量 ```
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.