Merge pull request #21786 from opf/merge-release/17.0-20260127110839

Merge release/17.0 into dev
This commit is contained in:
Klaus Zanders
2026-01-27 13:39:16 +01:00
committed by GitHub
10 changed files with 92 additions and 18 deletions
@@ -133,7 +133,7 @@ Please note: For the OpenProject Enterprise cloud we currently have two SaaS inf
**OpenProject.com**
This infrastructure is hosted at AWS in Dublin. For sending transactional emails we use the service Postmark which is based in the US.
This infrastructure is hosted at AWS in Frankfurt, Germany. For sending transactional emails we use the service Postmark which is based in the US.
**OpenProject.eu**
+27
View File
@@ -0,0 +1,27 @@
---
title: OpenProject 16.6.6
sidebar_navigation:
title: 16.6.6
release_version: 16.6.6
release_date: 2026-01-27
---
# OpenProject 16.6.6
Release date: 2026-01-27
We released OpenProject [OpenProject 16.6.6](https://community.openproject.org/versions/2261).
The release contains security related bug fixes and we strongly urge you to update to the newest version.
Below you will find a complete list of all changes and bug fixes.
<!--more-->
## Bug fixes and changes
<!-- Warning: Anything within the below lines will be automatically removed by the release script -->
<!-- BEGIN AUTOMATED SECTION -->
- Bugfix: Fix revision parsing in git diff output \[[#71019](https://community.openproject.org/wp/71019)\]
<!-- END AUTOMATED SECTION -->
<!-- Warning: Anything above this line will be automatically removed by the release script -->
+36
View File
@@ -0,0 +1,36 @@
---
title: OpenProject 17.0.2
sidebar_navigation:
title: 17.0.2
release_version: 17.0.2
release_date: 2026-01-27
---
# OpenProject 17.0.2
Release date: 2026-01-27
We released OpenProject [OpenProject 17.0.2](https://community.openproject.org/versions/2260).
The release contains sa security fix and several bug fixes and we strongly recommend updating to the newest version.
Below you will find a complete list of all changes and bug fixes.
<!--more-->
## Bug fixes and changes
<!-- Warning: Anything within the below lines will be automatically removed by the release script -->
<!-- BEGIN AUTOMATED SECTION -->
- Bugfix: Unable to change to earlier finish date for automatically scheduled successor \[[#65130](https://community.openproject.org/wp/65130)\]
- Bugfix: Meeting outcomes cannot be saved with ctrl/cmd+enter \[[#69974](https://community.openproject.org/wp/69974)\]
- Bugfix: AXe Accessibility error: invalid list structure \[[#70573](https://community.openproject.org/wp/70573)\]
- Bugfix: Fix AXe Accessibility error: Navigation toggler must have discernible text \[[#70574](https://community.openproject.org/wp/70574)\]
- Bugfix: Documents module is missing meaningfull html title \[[#70614](https://community.openproject.org/wp/70614)\]
- Bugfix: Users with the &quot;Manage Users&quot; permission did not see links to Lock/Unlock users \[[#70796](https://community.openproject.org/wp/70796)\]
- Bugfix: Cannot authorise OpenProject app with OpenProject when user has 2FA enabled \[[#70966](https://community.openproject.org/wp/70966)\]
- Bugfix: Running docker slim image, runs slim-bim one \[[#70980](https://community.openproject.org/wp/70980)\]
- Bugfix: &#39;For all projects&#39; project attributes are not displayed during new project creation \[[#70982](https://community.openproject.org/wp/70982)\]
- Bugfix: Fix revision parsing in git diff output \[[#71020](https://community.openproject.org/wp/71020)\]
<!-- END AUTOMATED SECTION -->
<!-- Warning: Anything above this line will be automatically removed by the release script -->
+13
View File
@@ -13,6 +13,13 @@ Stay up to date and get an overview of the new features included in the releases
<!--- New release notes are generated below. Do not remove comment. -->
<!--- RELEASE MARKER -->
## 17.0.2
Release date: 2026-01-27
[Release Notes](17-0-2/)
## 17.0.1
Release date: 2026-01-16
@@ -24,6 +31,12 @@ Release date: 2026-01-16
Release date: 2026-01-14
[Release Notes](17-0-0/)
## 16.6.6
Release date: 2026-01-27
[Release Notes](16-6-6/)
## 16.6.5
+1 -1
View File
@@ -109,7 +109,7 @@ You will be guided through creating an iCal subscription token:
3. Add this URL to your external calendar to subscribe to your OpenProject meetings.
If you are only interested in a specific meeting, you can [download that specific meeting as an iCal event]
(/one-time-meetings/#download-a-meeting-as-an-icalendar-event/) instead.
(/one-time-meetings/#download-a-meeting-as-an-icalendar-event) instead.
> [!TIP]
> If you are interested in how the Meetings module is used by the OpenProject team, please take a look at [this blog article](https://www.openproject.org/blog/meeting-management-example/).
@@ -15,14 +15,16 @@ You can create a project template in OpenProject by [creating a new project](../
Configure everything you want included in future projects:
- Add project members
- Select the necessary modules
- Select and populate the necessary modules
> [!IMPORTANT]
> Settings and data from the *Budgets* and *Time and costs* modules is not included when copying a template. For this reason, these modules should not be configured in templates, as any projects created from them will not contain the corresponding data.
- Set up the default project structure in the Gantt chart
- Create work package templates
Navigate to the [project settings](../project-settings), click the **More (three dots)** icon in the upper right corner and select **Set as template** from the dropdown menu. You can later remove the project from the template list at the same location.
> [!NOTE]
>
> Only administrators can set or remove projects as templates
![Icon to set a project as a template under project settings in OpenProject](openproject_userguide_projects_project_template.png)
+2 -2
View File
@@ -7,8 +7,8 @@ name: OpenProject
applicationSuite: openDesk
url: 'https://github.com/opf/openproject'
roadmap: 'https://www.openproject.org/roadmap'
releaseDate: '2026-01-16'
softwareVersion: '17.0.1'
releaseDate: '2026-01-27'
softwareVersion: '17.0.2'
developmentStatus: stable
softwareType: standalone/web
logo: 'publiccode_logo.svg'
@@ -281,6 +281,7 @@ RSpec.describe "Edit project phases on project overview page", :js do
# The earliest enabled date should be after initiating date's finish date
initiating_finish_date_succesor = initiating_finish_date + 1.day
datepicker.show_date(initiating_finish_date)
datepicker.expect_not_disabled(initiating_finish_date)
datepicker.expect_not_disabled(initiating_finish_date_succesor)
@@ -300,6 +301,7 @@ RSpec.describe "Edit project phases on project overview page", :js do
dialog.expect_input("Finish date", value: "")
dialog.expect_input("Duration", value: "", disabled: true)
datepicker.show_date(initiating_finish_date)
datepicker.expect_disabled(initiating_finish_date)
datepicker.expect_not_disabled(initiating_finish_date_succesor)
@@ -5,6 +5,7 @@ module Components
include Capybara::DSL
include Capybara::RSpecMatchers
include RSpec::Matchers
attr_reader :context_selector
##
@@ -180,7 +181,6 @@ module Components
##
# Expect the given date to be visible and a non-working day
def expect_non_working(date)
ensure_date_is_displayed(date) unless displays_date?(date)
label = date.strftime("%B %-d, %Y")
expect(page).to have_css(".flatpickr-day.flatpickr-non-working-day[aria-label='#{label}']")
end
@@ -188,7 +188,6 @@ module Components
##
# Expect the given date to be visible and a working day
def expect_working(date)
ensure_date_is_displayed(date) unless displays_date?(date)
label = date.strftime("%B %-d, %Y")
expect(page).to have_css(".flatpickr-day:not(.flatpickr-non-working-day)[aria-label='#{label}']")
end
@@ -196,7 +195,6 @@ module Components
##
# Expect the given date to be visible and disabled
def expect_disabled(date)
ensure_date_is_displayed(date) unless displays_date?(date)
label = date.strftime("%B %-d, %Y")
expect(page).to have_css(".flatpickr-day.flatpickr-disabled[aria-label='#{label}']," \
".flatpickr-day.flatpickr-non-working-day[aria-label='#{label}']")
@@ -205,23 +203,19 @@ module Components
##
# Expect the given date to be visible and enabled
def expect_not_disabled(date)
ensure_date_is_displayed(date) unless displays_date?(date)
label = date.strftime("%B %-d, %Y")
expect(page).to have_css(".flatpickr-day:not(.flatpickr-disabled):not(.flatpickr-non-working-day)[aria-label='#{label}']")
end
def displays_date?(date)
expect_visible
label = date.strftime("%B %-d, %Y")
page.has_css?(".flatpickr-day.flatpickr-disabled[aria-label='#{label}']")
page.has_css?(".flatpickr-day[aria-label='#{label}']", wait: 0)
end
def has_previous_month_toggle?
page.has_css?(".flatpickr-prev-month")
end
def ensure_date_is_displayed(date)
select_year(date.year)
select_month(date.month)
expect_visible
page.has_css?(".flatpickr-prev-month", wait: 0)
end
protected
+1 -1
View File
@@ -52,7 +52,7 @@ module Ferrum
main_frame_id = @traffic.first&.request&.frame_id
current_navigation = @traffic.reverse.find { |conn| conn.navigation_request?(main_frame_id) }
current_traffic = @traffic.filter do |exchange|
next unless exchange.request
next unless exchange.request && current_navigation
exchange.request.loader_id == current_navigation.request.loader_id
end