mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Merge pull request #21786 from opf/merge-release/17.0-20260127110839
Merge release/17.0 into dev
This commit is contained in:
@@ -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**
|
||||
|
||||
|
||||
@@ -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 -->
|
||||
@@ -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 "Manage Users" 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: 'For all projects' 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,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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||

|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user