Skip to content

Commit db873de

Browse files
Merge remote-tracking branch 'origin/release/15.4' into dev
2 parents 6486eb9 + 6443e2f commit db873de

File tree

15 files changed

+218
-27
lines changed

15 files changed

+218
-27
lines changed

.github/workflows/docker.yml

-5
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,6 @@ jobs:
133133
bim_support: false
134134
target: all-in-one
135135
runner: runner=4cpu-linux-arm64
136-
- platform: linux/ppc64le
137-
digest: ppc-aio
138-
bim_support: false
139-
target: all-in-one
140-
runner: runner=4cpu-linux-x64
141136
steps:
142137
- name: Checkout
143138
uses: actions/checkout@v4

docker/prod/setup/bundle-install.sh

-9
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@
22

33
set -e
44

5-
# temporary 'seed' for working ppc64 cached vendor/bundle
6-
if [ ! -d vendor/bundle ] && [ -n "$(uname -a | grep ppc64)" ]; then
7-
wget https://openproject-public.s3.eu-central-1.amazonaws.com/ruby/bundle/openproject-dev-ab76021a4064c1503435b44811bc754d05c82af8-vendor-bundle.tar.gz
8-
tar -xf openproject-*-vendor-bundle.tar.gz
9-
rm openproject-*-vendor-bundle.tar.gz
10-
11-
chown -R `whoami`:`whoami` vendor/bundle
12-
fi
13-
145
bundle config set --local path 'vendor/bundle'
156
bundle config set --local without 'test development'
167
bundle install --jobs=8 --retry=3

docs/installation-and-operations/installation-faq/README.md

-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ Starting with OpenProject 12.5.6 we publish our containers for three architectur
5959

6060
1. AMD64 (x86)
6161
2. ARM64
62-
3. PPC64
6362

6463
However, the OpenProject **BIM Edition** is only supported on AMD64.
6564

docs/installation-and-operations/installation/docker/README.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@ installed first, which usually requires a recent operating system. Please see th
1414

1515
## Supported architectures
1616

17-
Starting with OpenProject 12.5.6 we publish our containers for three architectures.
17+
Starting with OpenProject 12.5.6 we publish our containers for two architectures.
1818

1919
1. AMD64 (x86)
2020
2. ARM64
21-
3. PPC64
2221

2322
The OpenProject **BIM Edition** is only supported on AMD64, however.
2423

docs/installation-and-operations/system-requirements/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ The [package-based installation](../installation/packaged) requires one of the f
7777

7878
The [docker-based installation](../installation/docker) requires a system with Docker installed. Please see the [official Docker page](https://docs.docker.com/install/) for the list of supported systems.
7979

80-
**Please note**, that we only provide packages for the __AMD64__ (x86) architecture. We do provide *docker containers* for both __ARM64__ and __PPC64__ on top of __AMD64__.
80+
**Please note**, that we only provide packages for the __AMD64__ (x86) architecture. We do provide *docker containers* for both __ARM64__ and __AMD64__.
8181

8282
### Overview of dependencies
8383

docs/release-notes/15-4-0/README.md

+127
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
---
2+
title: OpenProject 15.4.0
3+
sidebar_navigation:
4+
title: 15.4.0
5+
release_version: 15.4.0
6+
release_date: 2025-03-06
7+
---
8+
9+
# OpenProject 15.4.0
10+
11+
Release date: 2025-03-06
12+
13+
We released OpenProject [OpenProject 15.4.0](https://community.openproject.org/versions/2165).
14+
The release contains several bug fixes and we recommend updating to the newest version.
15+
In these Release Notes, we will give an overview of important feature changes.
16+
At the end, you will find a complete list of all changes and bug fixes.
17+
18+
## Important feature changes
19+
20+
<!-- Inform about the major features in this section -->
21+
22+
## Important updates and breaking changes
23+
24+
<!-- Remove this section if empty, add to it in pull requests linking to tickets and provide information -->
25+
26+
<!--more-->
27+
28+
## Bug fixes and changes
29+
30+
<!-- Warning: Anything within the below lines will be automatically removed by the release script -->
31+
<!-- BEGIN AUTOMATED SECTION -->
32+
33+
- Feature: Use @-mention of user when quote replying to a comment \[[#37093](https://community.openproject.org/wp/37093)\]
34+
- Feature: New scheduling mode: automatic (start as soon as possible) \[[#42388](https://community.openproject.org/wp/42388)\]
35+
- Feature: Single-date mode for work package date pickers \[[#47519](https://community.openproject.org/wp/47519)\]
36+
- Feature: Allow encoding of current enterprise plan in the Enterprise Token \[[#50900](https://community.openproject.org/wp/50900)\]
37+
- Feature: Add and document Keycloak to the Docker based development setup \[[#53590](https://community.openproject.org/wp/53590)\]
38+
- Feature: File storages settings for type Nextcloud: Allow OIDC based connection instead of OAuth2 \[[#55284](https://community.openproject.org/wp/55284)\]
39+
- Feature: Extend Nextcloud files storage to use SSO access tokens \[[#57056](https://community.openproject.org/wp/57056)\]
40+
- Feature: Agenda item outcomes - let meeting participants note relevant decisions, questions and follow-up actions during a meeting \[[#57799](https://community.openproject.org/wp/57799)\]
41+
- Feature: Store token exchange capability on OIDC providers \[[#58862](https://community.openproject.org/wp/58862)\]
42+
- Feature: Track start time, finish time, and duration in Log time dialog \[[#59038](https://community.openproject.org/wp/59038)\]
43+
- Feature: Add automatic scheduling mode \[[#59539](https://community.openproject.org/wp/59539)\]
44+
- Feature: Highlight closest predecessor in the relations tab \[[#59540](https://community.openproject.org/wp/59540)\]
45+
- Feature: Update and Primerise Datepicker in the scope of automatic scheduling \[[#59845](https://community.openproject.org/wp/59845)\]
46+
- Feature: Define subject patterns in work package type settings \[[#59909](https://community.openproject.org/wp/59909)\]
47+
- Feature: Prevent editing of subject on work package creation and update \[[#59910](https://community.openproject.org/wp/59910)\]
48+
- Feature: Block users from editing managed subjects of work packages in table views \[[#59911](https://community.openproject.org/wp/59911)\]
49+
- Feature: Add times for labor costs to the cost report and export \[[#59914](https://community.openproject.org/wp/59914)\]
50+
- Feature: Add enterprise banner to subject configuration \[[#59929](https://community.openproject.org/wp/59929)\]
51+
- Feature: Autocompleters for filter values on the project list \[[#60521](https://community.openproject.org/wp/60521)\]
52+
- Feature: Consolidate &quot;Download PDF&quot; feature with the &quot;Generate PDF&quot; feature in one export modal \[[#60562](https://community.openproject.org/wp/60562)\]
53+
- Feature: Add start and end times to the API \[[#60633](https://community.openproject.org/wp/60633)\]
54+
- Feature: Amend work package comment href from \`#activity-&lt;journal-sequence&gt;\` to \`#comment-&lt;journal-id&gt;\` with backwards compatibility for old links \[[#60875](https://community.openproject.org/wp/60875)\]
55+
- Feature: Primerize time tracking settings in administration \[[#61290](https://community.openproject.org/wp/61290)\]
56+
- Feature: Store token expiration information for OIDC user tokens \[[#61344](https://community.openproject.org/wp/61344)\]
57+
- Feature: Version autocompleter for filter values on the project list \[[#61398](https://community.openproject.org/wp/61398)\]
58+
- Feature: OIDC provider creation: Prefill scopes instead of showing a placeholder \[[#61470](https://community.openproject.org/wp/61470)\]
59+
- Feature: Move &#39;Meetings&#39; higher up in the left-hand sidebar \[[#61475](https://community.openproject.org/wp/61475)\]
60+
- Feature: Reword recurring meeting labels and frequency options \[[#61476](https://community.openproject.org/wp/61476)\]
61+
- Feature: Allow to configure SSO authentication + two-way OAuth 2 \[[#61532](https://community.openproject.org/wp/61532)\]
62+
- Feature: Add &quot;Move to next meeting&quot; option for agenda items in a recurring meeting \[[#61536](https://community.openproject.org/wp/61536)\]
63+
- Feature: Allow more characters for Time Entry Comment \[[#61607](https://community.openproject.org/wp/61607)\]
64+
- Feature: Show proper error message when refresh token is unusable \[[#61612](https://community.openproject.org/wp/61612)\]
65+
- Feature: Audience selection for Nextcloud Hub scenario \[[#61623](https://community.openproject.org/wp/61623)\]
66+
- Feature: Validate subject pattern \[[#61692](https://community.openproject.org/wp/61692)\]
67+
- Feature: Restructure the administration and remove the enumerations page \[[#61733](https://community.openproject.org/wp/61733)\]
68+
- Feature: Create component Status button based on Action menu \[[#61745](https://community.openproject.org/wp/61745)\]
69+
- Feature: Redirect users to the home page, link to My Page to the global menu \[[#61881](https://community.openproject.org/wp/61881)\]
70+
- Feature: Reduce flickering when switching between meeting states \[[#61895](https://community.openproject.org/wp/61895)\]
71+
- Feature: Focus on the banner while opening the date pickr \[[#61906](https://community.openproject.org/wp/61906)\]
72+
- Feature: For recurring meetings, indicate original time zone in the meeting series details \[[#61946](https://community.openproject.org/wp/61946)\]
73+
- Feature: Visual changes for outcomes \[[#61956](https://community.openproject.org/wp/61956)\]
74+
- Feature: Add icon to indicate automatic scheduling mode \[[#61971](https://community.openproject.org/wp/61971)\]
75+
- Bugfix: &quot;During the last days&quot; filter input in cost reports shows a calendar popup \[[#42811](https://community.openproject.org/wp/42811)\]
76+
- Bugfix: Missing space for no-results box on mobile \[[#43665](https://community.openproject.org/wp/43665)\]
77+
- Bugfix: Always Show CKeditor Tool Bar On Screen When Scrolling \[[#53451](https://community.openproject.org/wp/53451)\]
78+
- Bugfix: Calendar headers don&#39;t respect date format (always show it in North American MM/DD format) \[[#54378](https://community.openproject.org/wp/54378)\]
79+
- Bugfix: Search results for projects does not render the description correctly \[[#56694](https://community.openproject.org/wp/56694)\]
80+
- Bugfix: If user removes all columns for their PDF export then default columns are used \[[#57618](https://community.openproject.org/wp/57618)\]
81+
- Bugfix: Project members: Unexpected opening of links in new tab (target=&quot;\_blank&quot;) \[[#58135](https://community.openproject.org/wp/58135)\]
82+
- Bugfix: Required custom fields prevent a WorkPackage from being added as a child \[[#60122](https://community.openproject.org/wp/60122)\]
83+
- Bugfix: Missing breadcrumb in Times &amp; Cost Administration \[[#60746](https://community.openproject.org/wp/60746)\]
84+
- Bugfix: Time Entry creation via the API is not correctly handling user timezones \[[#61081](https://community.openproject.org/wp/61081)\]
85+
- Bugfix: Date picker is partially off screen \[[#61091](https://community.openproject.org/wp/61091)\]
86+
- Bugfix: Pattern input style issues \[[#61165](https://community.openproject.org/wp/61165)\]
87+
- Bugfix: Reminder Button: Active state isn&#39;t used for active reminder \[[#61314](https://community.openproject.org/wp/61314)\]
88+
- Bugfix: Adding custom field of the work package itself to subject pattern not possible (only for parents) \[[#61315](https://community.openproject.org/wp/61315)\]
89+
- Bugfix: Subject field stays editable in create work package form after switching to a type that has automatically generated subjects \[[#61316](https://community.openproject.org/wp/61316)\]
90+
- Bugfix: Activity tab scrolling when adding new comments \[[#61399](https://community.openproject.org/wp/61399)\]
91+
- Bugfix: Users in lists miss popover \[[#61465](https://community.openproject.org/wp/61465)\]
92+
- Bugfix: Popover missing in multi-select custom fields of type user \[[#61466](https://community.openproject.org/wp/61466)\]
93+
- Bugfix: Mail handler keyword translations are confusing, not stable \[[#61482](https://community.openproject.org/wp/61482)\]
94+
- Bugfix: WP creation form: Click on file link renders API error \[[#61554](https://community.openproject.org/wp/61554)\]
95+
- Bugfix: Can&#39;t click outside of an added attribute on Google Chrome \[[#61573](https://community.openproject.org/wp/61573)\]
96+
- Bugfix: Should not display &quot;Delete relation&quot; for child if lacking &quot;Manage work package hierarchies&quot; permission \[[#61597](https://community.openproject.org/wp/61597)\]
97+
- Bugfix: Unclear error when cf that was added as an attribute does not belong to wp configuration form \[[#61604](https://community.openproject.org/wp/61604)\]
98+
- Bugfix: Unclear error message upon save on empty Subject patterns \[[#61619](https://community.openproject.org/wp/61619)\]
99+
- Bugfix: Wrong tab opens upon error message on Subject configuration tab \[[#61625](https://community.openproject.org/wp/61625)\]
100+
- Bugfix: Danger Dialog and Feedback Dialog close button ARIA label is not localised \[[#61631](https://community.openproject.org/wp/61631)\]
101+
- Bugfix: The costlog edit form shows incorrect cost value after update \[[#61689](https://community.openproject.org/wp/61689)\]
102+
- Bugfix: OIDC data sent to AppSignal \[[#61691](https://community.openproject.org/wp/61691)\]
103+
- Bugfix: Rescheduled series creates invalid open meetings \[[#61729](https://community.openproject.org/wp/61729)\]
104+
- Bugfix: Edit relation modal doesn&#39;t show the WP subject \[[#61737](https://community.openproject.org/wp/61737)\]
105+
- Bugfix: Regression: Rich text headlines show link icon on hover before the headline, while rendering after would be correct \[[#61780](https://community.openproject.org/wp/61780)\]
106+
- Bugfix: Not enough spacing on Categories page \[[#61790](https://community.openproject.org/wp/61790)\]
107+
- Bugfix: (Mobile) Left-side menu cannot be opened in Administration \[[#61806](https://community.openproject.org/wp/61806)\]
108+
- Bugfix: Meeting filter gets reset when clicking on &#39;Show more&#39; \[[#61873](https://community.openproject.org/wp/61873)\]
109+
- Bugfix: Autocompleter dropdown in pattern input is missing default entry \[[#61935](https://community.openproject.org/wp/61935)\]
110+
- Bugfix: Cannot import BCF issues \[[#61974](https://community.openproject.org/wp/61974)\]
111+
- Bugfix: Icons are barely visible in dark mode \[[#61989](https://community.openproject.org/wp/61989)\]
112+
- Feature: Generate PDF document from a work package description \[[#45896](https://community.openproject.org/wp/45896)\]
113+
- Feature: Automatically generated work package subjects \[[#53653](https://community.openproject.org/wp/53653)\]
114+
115+
<!-- END AUTOMATED SECTION -->
116+
<!-- Warning: Anything above this line will be automatically removed by the release script -->
117+
118+
## Contributions
119+
A very special thank you goes to our sponsors for this release.
120+
Also a big thanks to our Community members for reporting bugs and helping us identify and provide fixes.
121+
Special thanks for reporting and finding bugs go to René Schodder, Abhiyan Paudyal, Gunter Ohrner, Markus K..
122+
123+
Last but not least, we are very grateful for our very engaged translation contributors on Crowdin, who translated quite a few OpenProject strings!
124+
Would you like to help out with translations yourself?
125+
Then take a look at our translation guide and find out exactly how you can contribute.
126+
It is very much appreciated!
127+

modules/storages/app/common/storages/peripherals/nextcloud_registry.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ module Peripherals
6161
namespace("forms") do
6262
register(:automatically_managed_folders, ::Storages::Admin::Forms::AutomaticallyManagedProjectFoldersFormComponent)
6363
register(:general_information, ::Storages::Admin::Forms::GeneralInfoFormComponent)
64-
register(:storage_audience, ::Storages::Admin::Forms::NextcloudAudienceFormComponent)
64+
register(:storage_audience, ::Storages::Admin::Forms::StorageAudienceFormComponent)
6565
register(:oauth_application, ::Storages::Admin::OAuthApplicationInfoCopyComponent)
6666
register(:oauth_client, ::Storages::Admin::Forms::OAuthClientFormComponent)
6767
end
@@ -70,7 +70,7 @@ module Peripherals
7070

7171
register(:automatically_managed_folders, ::Storages::Admin::AutomaticallyManagedProjectFoldersInfoComponent)
7272
register(:general_information, ::Storages::Admin::GeneralInfoComponent)
73-
register(:storage_audience, ::Storages::Admin::NextcloudAudienceInfoComponent)
73+
register(:storage_audience, ::Storages::Admin::StorageAudienceInfoComponent)
7474
register(:oauth_application, ::Storages::Admin::OAuthApplicationInfoComponent)
7575
register(:oauth_client, ::Storages::Admin::OAuthClientInfoComponent)
7676
end

modules/storages/app/components/storages/admin/forms/nextcloud_audience_form_component.html.erb modules/storages/app/components/storages/admin/forms/storage_audience_form_component.html.erb

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ See COPYRIGHT and LICENSE files for more details.
4242
) do |form|
4343
flex_layout do |general_info_row|
4444
general_info_row.with_row(mb: 3) do
45-
render(Storages::Admin::NextcloudAudienceInputForm.new(form))
45+
render(Storages::Admin::StorageAudienceInputForm.new(form))
4646
end
4747

4848
general_info_row.with_row do

modules/storages/app/components/storages/admin/forms/nextcloud_audience_form_component.rb modules/storages/app/components/storages/admin/forms/storage_audience_form_component.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#++
3030
#
3131
module Storages::Admin::Forms
32-
class NextcloudAudienceFormComponent < StorageFormComponent
32+
class StorageAudienceFormComponent < StorageFormComponent
3333
def self.wrapper_key = :storage_audience_section
3434

3535
options submit_button_disabled: false

modules/storages/app/components/storages/admin/nextcloud_audience_info_component.rb modules/storages/app/components/storages/admin/storage_audience_info_component.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@
3030

3131
module Storages
3232
module Admin
33-
class NextcloudAudienceInfoComponent < StorageInfoComponent
33+
class StorageAudienceInfoComponent < StorageInfoComponent
3434
def self.wrapper_key = :storage_audience_section
3535

3636
def audience_summary
3737
case storage.storage_audience
38-
when ""
38+
when "", nil
3939
I18n.t("storages.file_storage_view.storage_audience_blank")
4040
when OpenIDConnect::UserToken::IDP_AUDIENCE
4141
I18n.t("storages.file_storage_view.storage_audience_idp")

modules/storages/app/controllers/storages/admin/storages_controller.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def edit_host
124124
end
125125

126126
def edit_storage_audience
127-
update_via_turbo_stream(component: Storages::Admin::Forms::NextcloudAudienceFormComponent.new(@storage))
127+
update_via_turbo_stream(component: Storages::Admin::Forms::StorageAudienceFormComponent.new(@storage))
128128
respond_with_turbo_streams
129129
end
130130

modules/storages/app/forms/storages/admin/nextcloud_audience_input_form.rb modules/storages/app/forms/storages/admin/storage_audience_input_form.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#++
3030

3131
module Storages::Admin
32-
class NextcloudAudienceInputForm < ApplicationForm
32+
class StorageAudienceInputForm < ApplicationForm
3333
form do |storage_form|
3434
storage_form.radio_button_group(name: :audience_configuration) do |group|
3535
group.radio_button(

modules/storages/config/locales/en.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ en:
225225
project_folders: Project folders
226226
redirect_uri: Redirect URI
227227
storage_audience: Storage Audience
228-
storage_audience_blank: No audience has been configured
228+
storage_audience_blank: No audience has been configured.
229229
storage_audience_description: Obtaining tokens for audience "%{audience}".
230230
storage_audience_idp: Using first access token received by identity provider, regardless of audience.
231231
storage_oauth: Nextcloud OAuth

0 commit comments

Comments
 (0)