Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -294,11 +294,11 @@ Semantics(
测试文件位于 `test/unit/core/accessibility/a11y_semantics_test.dart`。

## 变更记录
- 2026-06-20:OSTree 修复必须区分 linyaps 正常 partial pull 与 fsck 检测损坏后的 partial。依据 linyaps 1.13.0 源码,`fetchRefMetaData()` 会使用 commit-only 或 `/info.json` subdir pull,因此单独出现 `partial commits not verified` 不能判定为仓库损坏;只有 `partial commits from fsck-detected corruption`、`Marking commit as partial` 后接 `Repository corruption encountered`,或 `.commitpartial` 内容为 `f` 才表示 fsck 截断后的损坏状态。环境管理执行 `pkexec ostree fsck --repo=/var/lib/linglong/repo --all --delete` 后若遇到 fsck partial,必须追加受控 `pkexec bash` 脚本扫描受影响 refs、尽量以 `deepin-linglong` 用户执行 `ostree pull --disable-static-deltas <remote> <ref>` 重新拉取,并再次 `ostree fsck --quiet` 复验;复验仍出现 `Corrupted file object` 或 checksum mismatch 时,结果必须是失败并提示可能是上游仓库数据或 OSTree/玲珑 `bare-user-only` 模式兼容问题,禁止再显示“已修复成功”
- 2026-06-19:玲珑环境管理必须单独识别“玲珑数据目录权限异常”:`ll-package-manager` 服务用户为 `deepin-linglong:deepin-linglong`,如果 `/var/lib/linglong/.version`、`config.yaml`、`states.json`、`repo`、`layers`、`entries`、`merged` 被 root 或其他用户接管,会导致 `.version` 打不开、OSTree pull `mkdirat` 权限不足、layer 目录创建失败。该问题不得再笼统展示为 OSTree 仓库完整性异常;分析统一由 `LinglongEnvironmentManagementService` 执行 `stat -c %U:%G:%a:%n`,修复统一由环境管理对话框二次确认后调用 `repairLinglongDataPermissions()`,通过 `pkexec bash` 恢复属主、重启 `org.deepin.linglong.PackageManager.service` 并执行 `ll-cli --json repo show` 验证。UI 和 Provider 禁止直接拼接权限修复脚本或散写 `chown/systemctl` 命令
- 2026-06-19:玲珑环境管理的 OSTree 状态必须区分“运行可用性”和“深度对象完整性审计”。依据 linyaps 1.13.0 源码,运行路径主要依赖 `OSTreeRepo::init/loadFromPath/create` 打开仓库、读取 refs/cache/states 以及 `/var/lib/linglong/layers/<commit>` checkout 目录,`ostree fsck` 不是启动或运行前置条件。环境分析必须先执行 `ostree refs --repo=/var/lib/linglong/repo` 判断仓库是否可读;仅在 refs 可读后执行 `ostree fsck --repo=/var/lib/linglong/repo --quiet` 做深度审计。`fsck` 非零但 refs 可读时只能展示“OSTree 对象完整性风险”警告和修复建议,不得再展示笼统“OSTree 仓库完整性异常”或把顶层状态标为不可用;只有 refs 不可读才可展示“OSTree 仓库不可用”错误
- 2026-06-18:OSTree 修复必须兼容不同版本 `ostree fsck` 行为:优先执行 `pkexec ostree fsck --repo=/var/lib/linglong/repo --all --delete`;仅当输出明确表示不支持 `--all` 时,降级重试不带 `--all` 的 `--delete` 命令,并追加写入同一日志。若 `--delete` 不支持,禁止退化成只检查并伪装修复成功,必须提示当前版本无法自动删除损坏对象。新版 OSTree 输出 `partial commits from fsck-detected corruption` 或先输出 `Marking commit as partial` 后以 `Repository corruption encountered` 返回时,应视为自动删除步骤已执行但仍需重新拉取受影响应用/基础环境;单独出现 `partial commits not verified` 不能判定为仓库损坏。UI 要展示具体 partial commit 数量和后续处理建议,不能再显示笼统“修复失败”。
- 2026-06-14:玲珑环境管理统一入口为设置页「玲珑环境管理」对话框;仓库增删改、默认仓库、优先级和镜像开关必须走 `LinglongRepositoryManagementRepository`(当前由 `LinglongCliRepositoryImpl` 实现),页面和 Provider 禁止直接拼 `ll-cli repo` 命令。环境分析、OSTree 完整性检查、`pkexec ostree fsck --all --delete` 修复、保存位置迁移脚本统一收敛到 `LinglongEnvironmentManagementService`;UI 只能通过 `linglongEnvironmentManagementProvider` 触发。保存位置迁移必须遵循 OpenAtom-Linyaps/linyaps#1411 的 systemd bind mount 方案,不得创造“自定义安装目录”业务语义;迁移前必须阻断运行中玲珑应用和安装/更新队列活跃任务,拒绝危险目标路径和目标空间不足场景;迁移脚本必须写日志、保留旧目录备份并在挂载后做 OSTree fsck 校验。OSTree 修复和保存位置迁移都必须显式二次确认,UI 只展示截断输出,完整输出以日志文件为准。
- 2026-06-20:玲珑环境管理默认健康检查必须以 linyaps 运行路径为准:`ll-cli --json repo show`、`ll-cli --json list`、`ll-cli --json ps`、数据目录权限和空间状态。默认分析禁止再执行底层完整性审计,也禁止把底层 checksum/fsck 差异展示成用户侧“环境异常”;顶部指标统一展示“本地数据”,问题标题统一使用“玲珑本地数据不可用/检测失败”。底层修复命令只属于用户显式确认后的“玲珑本地数据修复”和日志细节
- 2026-06-20:玲珑本地数据修复必须区分 linyaps 正常 partial pull 与完整性审计检测损坏后的 partial。依据 linyaps 1.13.0 源码,`fetchRefMetaData()` 会使用 commit-only 或 `/info.json` subdir pull,因此单独出现 `partial commits not verified` 不能判定为仓库损坏;只有 `partial commits from fsck-detected corruption`、`Marking commit as partial` 后接 `Repository corruption encountered`,或 `.commitpartial` 内容为 `f` 才表示审计截断后的损坏状态。显式修复后若遇到 fsck partial,必须追加受控 `pkexec bash` 脚本扫描受影响 refs、尽量以 `deepin-linglong` 用户重新拉取,并再次复验;复验仍出现 `Corrupted file object` 或 checksum mismatch 时,结果必须是失败并提示可能是上游仓库数据或 linyaps 本地存储模式兼容问题,禁止再显示“已修复成功”
- 2026-06-19:玲珑环境管理必须单独识别“玲珑数据目录权限异常”:`ll-package-manager` 服务用户为 `deepin-linglong:deepin-linglong`,如果 `/var/lib/linglong/.version`、`config.yaml`、`states.json`、`repo`、`layers`、`entries`、`merged` 被 root 或其他用户接管,会导致 `.version` 打不开、拉取对象 `mkdirat` 权限不足、layer 目录创建失败。该问题不得再笼统展示为本地数据仓库完整性异常;分析统一由 `LinglongEnvironmentManagementService` 执行 `stat -c %U:%G:%a:%n`,修复统一由环境管理对话框二次确认后调用 `repairLinglongDataPermissions()`,通过 `pkexec bash` 恢复属主、重启 `org.deepin.linglong.PackageManager.service` 并执行 `ll-cli --json repo show` 验证。UI 和 Provider 禁止直接拼接权限修复脚本或散写 `chown/systemctl` 命令
- 2026-06-18:玲珑本地数据修复必须兼容不同版本底层工具行为:优先执行带全量对象和自动清理的受控修复命令;仅当输出明确表示不支持全量参数时,降级重试不带全量参数的自动清理命令,并追加写入同一日志。若自动清理参数不支持,禁止退化成只检查并伪装修复成功,必须提示当前系统组件无法自动清理问题对象。新版工具输出 `partial commits from fsck-detected corruption` 或先输出 `Marking commit as partial` 后以 `Repository corruption encountered` 返回时,应视为自动清理步骤已执行但仍需重新拉取受影响应用/基础环境;单独出现 `partial commits not verified` 不能判定为仓库损坏。UI 要展示具体 partial commit 数量和后续处理建议,不能再显示笼统“修复失败”。
- 2026-06-14:玲珑环境管理统一入口为设置页「玲珑环境管理」对话框;仓库增删改、默认仓库、优先级和镜像开关必须走 `LinglongRepositoryManagementRepository`(当前由 `LinglongCliRepositoryImpl` 实现),页面和 Provider 禁止直接拼 `ll-cli repo` 命令。环境分析、本地数据修复、数据目录权限修复、保存位置迁移脚本统一收敛到 `LinglongEnvironmentManagementService`;UI 只能通过 `linglongEnvironmentManagementProvider` 触发。保存位置迁移必须遵循 OpenAtom-Linyaps/linyaps#1411 的 systemd bind mount 方案,不得创造“自定义安装目录”业务语义;迁移前必须阻断运行中玲珑应用和安装/更新队列活跃任务,拒绝危险目标路径和目标空间不足场景;迁移脚本必须写日志、保留旧目录备份并在挂载后做只读校验。本地数据修复和保存位置迁移都必须显式二次确认,UI 只展示截断输出,完整输出以日志文件为准。
- 2026-06-10:下载管理当前任务主卡片的阶段文案只允许在进度条上方展示;应用名下方标题区只展示应用身份补充信息(如版本),不得重复渲染 `InstallTask.displayMessage`。慢安装提示行需保持黄色提示图标与中文 caption 首行视觉对齐,后续调整下载中心提示文案时必须同步检查图标/文字对齐。
- 2026-06-08:GitHub Release / Nightly release notes 的总结范围必须由 `generate-changelog.sh <version> <start-ref>` 或仓库变量 `LINGLONG_RELEASE_NOTES_START_REF` 显式指定,禁止把“从某个版本开始总结”写进 AI prompt 的临时自然语言要求;Claude Code 只允许输出 `{"items":["用户可读描述"]}` 结构化文案数组,最终 `## Release Notes` 和 `1、2、3` 编号描述列表必须由脚本渲染,禁止 AI 输出编号、分类前缀或 Markdown,避免再次出现 `0、` 起始编号或 commit 标题复述。prompt 中禁止保留让 AI 删除文件、git 提交或修改仓库的指令。
- 2026-06-08:下载中心 UI 统一采用轻工作面板结构,保持 `showDownloadManagerDialog(context)` 单一入口;面板包含固定顶栏、概览条、当前任务主卡、等待/历史紧凑行和底部状态栏。后续优化只允许调整展示层,不得新增 `ll-cli` 调用、绕过 `installQueueProvider`,也不得改变 `InstallTask.commandOutput` 作为“复制日志”唯一来源的约定。
Expand Down
4 changes: 3 additions & 1 deletion build/scripts/generate-changelog.sh
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ format_release_notes_markdown() {
/^- / {
text = substr($0, 3)
if (item_count < 5 && is_visible_change(section, text)) {
items[++item_count] = item_count "、" text
# awk 对赋值左右两侧求值顺序没有统一保证,拆开递增可避免 mawk 输出 0 起始编号。
item_count++
items[item_count] = item_count "、" text
}
next
}
Expand Down
Loading
Loading