OpenProject 10.6.5 补丁版本发布说明:修复评论重复与俄语本地化翻译问题
【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject
本文档对应 OpenProject 10.6.x 系列的一个补丁版本(patch release)。10.6.5 于 2020 年 7 月 21 日发布,聚焦于两项稳定性与质量修复:短时间内连续输入多条评论导致评论重复、以及俄语本地化中头像(Avatar)更改页面的不当翻译。读完本文你将了解该版本修复的具体问题、背后的工作包评论与活动(Journal)机制、俄语本地化文件的现状,以及如何将现有安装平滑升级到该补丁版本。
版本发布概览
OpenProject 10.6.5 是 10.6 分支的第五个补丁版本,官方发布页面对应于社区站点上的 10.6.5 版本条目(community.openproject.org/versions/1446)。发布说明位于仓库的 docs/release-notes/10/10-6-5/README.md,其 front matter 记录了关键元数据:
release_version: 10.6.5release_date: 2020-07-21
官方对该版本的建议是:包含多项 bug 修复,推荐所有用户升级到最新版本。这也符合 OpenProject 的版本迭代节奏——10.6.x 系列每个补丁版本都会累积修复,前一版 10.6.4 的发布说明(2020-06-30)同样采用了"多个 bug 修复 + 建议升级"的表述。
从当前仓库源码 lib/open_project/version.rb 可以看到,OpenProject 主线版本号已演进到MAJOR = 18,因此 10.6.5 属于有较长历史沉淀的稳定分支版本,其发布说明对理解 OpenProject 补丁版本发布机制与升级策略仍有参考价值。
修复一:5 分钟内连续输入多条评论导致评论重复(#33744)
问题现象
发布说明记载的修复条目为:
Fixed: Comments get repeated when entering several comments within 5 minutes ([#33744])
即在约 5 分钟的时间窗口内连续提交多条评论时,用户会看到评论内容被重复展示。这类问题通常与工作包(Work Package)的活动/评论提交链路有关,往往由前端重复请求、渲染聚合或并发提交场景触发。
评论与活动的底层实现:Journal 机制
在 OpenProject 中,工作包评论(comment/note)与历史变更并非直接写入工作包记录,而是以Journal(日志/活动记录)的形式持久化。仓库中的核心模型 app/models/journal.rb 定义如下:
class Journal < ApplicationRecord self.table_name = "journals" self.ignored_columns += ["activity_type"] include ::JournalChanges include ::JournalFormatter include ::Acts::Journalized::FormatHooks include Journal::Timestamps include Reactable # Inline attachments for Journal#notes aka comments acts_as_attachable view_permission: :view_work_packages, add_on_new_permission: :add_work_package_comments, add_on_persisted_permission: :edit_own_work_package_comments, delete_permission: :edit_own_work_package_comments ...关键信息:
self.table_name = "journals":所有活动/评论统一落在journals表中;belongs_to :journable, polymorphic: true(app/models/journal.rb):Journal 通过多态关联挂接到任意可记录对象(工作包、会议等);- 代码注释明确指出
Journal#notes即评论("Inline attachments for Journal#notes aka comments"),并声明了add_work_package_comments、edit_own_work_package_comments等评论相关权限。
因此,用户在活动标签页看到的一条条"评论"本质上是按时间排序的 Journal 记录。当一次操作在短时间内产生多条内容相同的 Journal 记录时,活动时间线就会表现为"评论重复"。从当前代码结构看,可以推断 10.6.5 的修复目标正是消除这类在 5 分钟窗口内出现的重复记录生成或重复渲染路径,使每条评论只出现一次。
活动标签页的渲染链路
工作包详情页的"活动"(Activities)标签页负责展示这些 Journal 记录。仓库中该标签页的渲染逻辑位于 app/controllers/concerns/work_packages/activities_tab/component_streaming.rb,它通过 OpTurbo 流式更新活动标签页,其中:
replace_whole_tab/update_index_component负责整页或列表的刷新;update_item_component按单个 journal 生成WorkPackages::ActivitiesTab::Journals::ItemComponent,用于增量更新单条活动条目。
这类"按单条 journal 增量渲染"的机制,正是需要保证每条评论对应唯一一条 Journal 记录的原因——若同一评论生成了多条 journal 或同一 journal 被多次渲染,活动时间线就会出现重复项。
修复二:俄语本地化头像更改页面的不当翻译(#33888)
问题现象
发布说明记载的第二项修复为:
Fixed: Wrong (abusive) translations on avatar change page in russian localization. ([#33888])
即俄语(Russian)本地化中,头像更改(avatar change)页面的部分翻译文本存在错误甚至冒犯性内容("abusive"),10.6.5 对相关翻译词条进行了更正。
俄语本地化文件的现状
OpenProject 的本地化采用标准 Rails i18n 体系,翻译文件按语言存放在 config/locales 下。俄语翻译由 Crowdin 社区协同维护,文件为 config/locales/crowdin/ru.yml,其中与头像相关的词条包括:
avatar: 'Аватар' ... label_my_avatar: Мой аватар从当前文件内容看,avatar(Аватар,即"头像")与"我的头像"(Мой аватар)等词条均为正常翻译。可以推断 10.6.5 针对该页面此前错误的翻译词条进行了校正,且后续社区本地化过程中相关词条保持正常。这起案例也体现了 OpenProject 社区驱动的本地化工作流价值:翻译质量问题通过社区成员报告(issue)进入发布修复清单。
如何升级到 10.6.5
10.6.5 属于补丁/小版本(patch/minor release),官方升级路径对运维非常友好。完整升级指南见 docs/installation-and-operations/operation/upgrading/README.md。
注意事项(升级前必读)
升级指南开篇明确提醒两点:
- 先备份:升级(尤其是跨多个版本升级)前务必按照 备份指南 完成数据备份;
- 版本跨度:OpenProject 支持从一个主版本(含其 minor 与 patch)直接迁移到下一个主版本;跨两个主版本则需先升到中间版本,可使用官方提供的分步数据库迁移脚本完成。
方式一:Debian / Ubuntu(apt)
sudo apt-get update sudo apt-get install --only-upgrade openproject sudo openproject configure方式二:CentOS / RHEL(yum)
sudo yum update sudo yum install openproject sudo openproject configure方式三:SuSE(zypper)
sudo zypper refresh openproject sudo zypper update openproject sudo openproject configure方式四:Docker Compose
docker-compose pull --ignore-buildable docker-compose up -d关键:升级后务必执行openproject configure
无论采用哪种包管理方式,升级完成后都必须运行openproject configure。升级指南明确指出:
It is important that you run the
openproject configurecommand aftereveryupgrade of OpenProject, as this will ensure your installation is being updated and necessary database migrations are being performed.
该命令会以向导形式展示新增配置步骤;若想重走完整配置流程,可安全地执行openproject reconfigure——向导仍会保留之前已填写的值,只需按回车跳过无需变更的步骤即可(密码字段即使显示为空,跳过也等于沿用原值)。
社区贡献
10.6.5 发布说明的"Contributions"部分对参与报告与定位问题的社区成员表达了感谢,特别鸣谢了:
- Christoph Arnold
- Антон Сміян(Anton Smiyan)
这也体现了 OpenProject 的社区驱动开发模式——bug 由社区成员在 社区实例 上以工作包(Work Package)形式提交(如 #33744、#33888),经官方确认后进入后续补丁版本修复。
延伸阅读
- 同系列发布说明:OpenProject 10.6.4 及其他 10.x 版本发布说明
- 升级与运维完整指南:Upgrading your OpenProject installation
- 备份指南:docs/installation-and-operations/operation/backing-up
- 评论/活动底层模型:app/models/journal.rb
- 活动标签页渲染实现:app/controllers/concerns/work_packages/activities_tab/component_streaming.rb
- 俄语本地化文件:config/locales/crowdin/ru.yml
【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考