Skip to content

Commit 2e04baf

Browse files
Release OpenProject 14.4.0
2 parents d06d1b6 + 5c451bb commit 2e04baf

File tree

1,712 files changed

+45194
-30587
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,712 files changed

+45194
-30587
lines changed

.github/dependabot.yml

+6
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,9 @@ updates:
2121
target-branch: "dev"
2222
open-pull-requests-limit: 3
2323
versioning-strategy: lockfile-only
24+
- package-ecosystem: "github-actions"
25+
directory: "/"
26+
schedule:
27+
interval: "weekly"
28+
target-branch: "dev"
29+
open-pull-requests-limit: 3

.github/pull_request_template.md

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<!-- Contributors: Please check our [PR guide](https://www.openproject.org/docs/development/code-review-guidelines/#preparing-your-pull-request) before opening a PR. -->
2+
3+
<!-- Reviewers: Please check our [Review guide](https://www.openproject.org/docs/development/code-review-guidelines/#reviewing) -->
4+
5+
# What are you trying to accomplish?
6+
<!-- Provide a description of the changes. -->
7+
8+
## Screenshots
9+
<!-- Provide before/after screenshots, videos, or graphs for any visual changes; otherwise, remove this section -->
10+
11+
# What approach did you choose and why?
12+
<!-- This section is a place for you to describe your thought process in making these changes.
13+
List any tradeoffs you made to take on or pay down tech debt.
14+
Describe any alternative approaches you considered and why you discarded them. -->
15+
16+
# Ticket
17+
<!-- Provide the link to respective work package -->
18+
19+
# Merge checklist
20+
21+
- [ ] Added/updated tests
22+
- [ ] Added/updated documentation in Lookbook (patterns, previews, etc)
23+
- [ ] Tested major browsers (Chrome, Firefox, Edge, ...)

.github/workflows/brakeman-scan-core.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
RUBY_GC_HEAP_INIT_SLOTS: 100000
2626
steps:
2727
- name: Checkout
28-
uses: actions/checkout@v3
28+
uses: actions/checkout@v4
2929

3030
- name: Setup Ruby
3131
uses: ruby/setup-ruby@v1
@@ -44,6 +44,6 @@ jobs:
4444
--output output.sarif.json
4545
4646
- name: Upload SARIF
47-
uses: github/codeql-action/upload-sarif@v2
47+
uses: github/codeql-action/upload-sarif@v3
4848
with:
4949
sarif_file: output.sarif.json

.github/workflows/crowdin.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
- dev
4242
- "${{ needs.setup.outputs.latest_release_branch }}"
4343
steps:
44-
- uses: actions/checkout@v3
44+
- uses: actions/checkout@v4
4545
with:
4646
ref: ${{ matrix.branch }}
4747
fetch-depth: 1
@@ -65,7 +65,7 @@ jobs:
6565
bundle exec script/i18n/generate_seeders_i18n_source_file
6666
fi
6767
- name: "Crowdin: upload sources and download translations"
68-
uses: crowdin/github-action@v1
68+
uses: crowdin/github-action@v2
6969
with:
7070
# Upload current source files
7171
upload_sources: true

.github/workflows/danger.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ jobs:
1717
- uses: actions/checkout@v4
1818
- uses: ruby/setup-ruby@v1
1919
with:
20-
ruby-version: '3.3.3'
21-
- uses: MeilCli/danger-action@v5
20+
ruby-version: '3.3.4'
21+
- uses: MeilCli/danger-action@v6
2222
with:
2323
danger_file: 'Dangerfile'
2424
danger_id: 'danger-pr'

.github/workflows/docker.yml

+22-10
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,11 @@ jobs:
8585
./docker/prod/setup/precompile-assets.sh
8686
# public/assets will be saved as artifact, so temporarily copying config file there as well
8787
cp config/frontend_assets.manifest.json public/assets/frontend_assets.manifest.json
88-
- uses: actions/upload-artifact@v3
88+
- uses: actions/upload-artifact@v4
8989
with:
9090
path: public/
9191
name: public-assets-${{ github.sha }}
92+
overwrite: true
9293
outputs:
9394
version: ${{ steps.extract_version.outputs.version }}
9495
checkout_ref: ${{ steps.extract_version.outputs.checkout_ref }}
@@ -106,22 +107,27 @@ jobs:
106107
matrix:
107108
include:
108109
- platform: linux/amd64
110+
digest: amd64-slim
109111
bim_support: true
110112
target: slim
111113
runner: runner=4cpu-linux-x64
112114
- platform: linux/arm64/v8
115+
digest: arm64-slim
113116
bim_support: false
114117
target: slim
115118
runner: runner=4cpu-linux-arm64
116119
- platform: linux/amd64
120+
digest: amd64-aio
117121
bim_support: true
118122
target: all-in-one
119123
runner: runner=4cpu-linux-x64
120124
- platform: linux/arm64/v8
125+
digest: arm64-aio
121126
bim_support: false
122127
target: all-in-one
123128
runner: runner=4cpu-linux-arm64
124129
- platform: linux/ppc64le
130+
digest: ppc-aio
125131
bim_support: false
126132
target: all-in-one
127133
runner: runner=4cpu-linux-x64
@@ -134,7 +140,7 @@ jobs:
134140
run: |
135141
cp ./docker/prod/Dockerfile ./Dockerfile
136142
- name: Download precompiled public assets
137-
uses: actions/download-artifact@v3
143+
uses: actions/download-artifact@v4
138144
with:
139145
name: public-assets-${{ github.sha }}
140146
path: public/
@@ -164,7 +170,7 @@ jobs:
164170
password: ${{ secrets.DOCKER_PASSWORD }}
165171
- name: Docker meta
166172
id: meta
167-
uses: docker/metadata-action@v4
173+
uses: docker/metadata-action@v5
168174
with:
169175
context: git
170176
labels: |
@@ -177,7 +183,7 @@ jobs:
177183
${{ env.REGISTRY_IMAGE }}
178184
- name: Build image
179185
id: build
180-
uses: docker/build-push-action@v4
186+
uses: docker/build-push-action@v6
181187
with:
182188
context: .
183189
platforms: ${{ matrix.platform }}
@@ -209,7 +215,7 @@ jobs:
209215
wget -O- --retry-on-http-error=503,502 --retry-connrefused http://localhost:8080/api/v3
210216
- name: Push image
211217
id: push
212-
uses: docker/build-push-action@v4
218+
uses: docker/build-push-action@v6
213219
with:
214220
context: .
215221
platforms: ${{ matrix.platform }}
@@ -226,9 +232,9 @@ jobs:
226232
digest="${{ steps.push.outputs.digest }}"
227233
touch "/tmp/digests/${digest#sha256:}"
228234
- name: Upload digest
229-
uses: actions/upload-artifact@v3
235+
uses: actions/upload-artifact@v4
230236
with:
231-
name: digests-${{ matrix.target }}
237+
name: digests-${{ matrix.target }}-${{ matrix.digest }}
232238
path: /tmp/digests/*
233239
if-no-files-found: error
234240
retention-days: 1
@@ -241,10 +247,16 @@ jobs:
241247
- setup
242248
- build
243249
steps:
250+
- name: Merge digests
251+
uses: actions/upload-artifact/merge@v4
252+
with:
253+
pattern: digests-*
254+
overwrite: true
255+
name: "merged-digests-${{ matrix.target }}-${{ github.run_number }}-${{ github.run_attempt }}"
244256
- name: Download digests
245-
uses: actions/download-artifact@v3
257+
uses: actions/download-artifact@v4
246258
with:
247-
name: digests-${{ matrix.target }}
259+
name: "merged-digests-${{ matrix.target }}-${{ github.run_number }}-${{ github.run_attempt }}"
248260
path: /tmp/digests
249261
- name: Set suffix
250262
id: set_suffix
@@ -256,7 +268,7 @@ jobs:
256268
uses: docker/setup-buildx-action@v3
257269
- name: Docker meta
258270
id: meta
259-
uses: docker/metadata-action@v4
271+
uses: docker/metadata-action@v5
260272
with:
261273
images: ${{ env.REGISTRY_IMAGE }}
262274
labels: |

.github/workflows/eslint-core.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ jobs:
1414
name: eslint
1515
runs-on: ubuntu-latest
1616
steps:
17-
- uses: actions/checkout@v3
17+
- uses: actions/checkout@v4
1818
with:
1919
fetch-depth: 0
20-
- uses: actions/setup-node@v3
20+
- uses: actions/setup-node@v4
2121
with:
2222
node-version: '18.13'
2323
cache: npm

.github/workflows/openapi.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ jobs:
1818
if: github.repository == 'opf/openproject'
1919
runs-on: [ubuntu-latest]
2020
steps:
21-
- uses: actions/checkout@v2
21+
- uses: actions/checkout@v4
2222
- uses: ruby/setup-ruby@v1
2323
with:
2424
bundler-cache: true
25-
- uses: actions/setup-node@v2
25+
- uses: actions/setup-node@v4
2626
with:
2727
node-version: '20'
2828
- run: ./script/api/validate_spec

.github/workflows/pullpreview.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
runs-on: ubuntu-latest
2525
timeout-minutes: 60
2626
steps:
27-
- uses: actions/checkout@v3
27+
- uses: actions/checkout@v4
2828
- name: Generate .env.pullpreview file
2929
run: |
3030
echo "OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET=false" >> .env.pullpreview

.github/workflows/rubocop-core.yml

+2-3
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,15 @@ jobs:
99
runs-on: ubuntu-latest
1010
steps:
1111
- uses: actions/checkout@v4
12-
- name: Fetch head commit of base branch
13-
run: git fetch --depth 1 origin ${{ github.event.pull_request.base.sha }}
1412
- uses: ruby/setup-ruby@v1
15-
- uses: opf/action-rubocop@master
13+
- uses: reviewdog/action-rubocop@v2
1614
with:
1715
github_token: ${{ secrets.github_token }}
1816
rubocop_version: gemfile
1917
rubocop_extensions: >
2018
rubocop-capybara:gemfile
2119
rubocop-factory_bot:gemfile
20+
rubocop-openproject:gemfile
2221
rubocop-performance:gemfile
2322
rubocop-rails:gemfile
2423
rubocop-rspec:gemfile

.rubocop.yml

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
require:
2+
- rubocop-openproject
23
- rubocop-rails
34
- rubocop-rspec
45
- rubocop-rspec_rails
5-
- ./lib_static/rubocop/cop/open_project/add_preview_for_view_component.rb
6-
- ./lib_static/rubocop/cop/open_project/no_do_end_block_with_rspec_capybara_matcher_in_expect.rb
7-
- ./lib_static/rubocop/cop/open_project/use_service_result_factory_methods.rb
86
- rubocop-capybara
97
- rubocop-factory_bot
108
- rubocop-performance
@@ -145,7 +143,7 @@ Naming/VariableNumber:
145143
AllowedPatterns:
146144
- '\w_20\d\d' # allow dates like christmas_2022 or date_2034_04_12
147145
- '\w\d++(_\d++)+' # allow hierarchical data like child1_2_5 (second + in regex is possessive qualifier)
148-
146+
- 'custom_field_\d+' # allow custom field method names to be called with send :custom_field_1001
149147
# There are valid cases in which to use methods like:
150148
# * update_all
151149
# * touch_all
@@ -238,6 +236,8 @@ RSpec/DescribeMethod:
238236
# Don't force the second argument of describe
239237
# to match the exact file name
240238
RSpec/SpecFilePathFormat:
239+
CustomTransform:
240+
OAuthClients: oauth_clients
241241
IgnoreMethods: true
242242

243243
# Prevent "fit" or similar to be committed
@@ -461,3 +461,10 @@ Style/HashTransformValues:
461461

462462
Performance/Casecmp:
463463
Enabled: false
464+
465+
OpenProject/AddPreviewForViewComponent:
466+
Include:
467+
- app/components/op_turbo/**.rb
468+
- app/components/op_primer/**.rb
469+
- app/components/open_project/**.rb
470+
- app/components/concerns/**.rb

.ruby-version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.3.3
1+
3.3.4

Gemfile

+7-4
Original file line numberDiff line numberDiff line change
@@ -209,14 +209,15 @@ gem "mini_magick", "~> 4.13.0", require: false
209209
gem "validate_url"
210210

211211
# Storages support code
212+
gem "dry-auto_inject"
212213
gem "dry-container"
213214
gem "dry-monads"
214215

215216
# ActiveRecord extension which adds typecasting to store accessors
216217
gem "store_attribute", "~> 1.0"
217218

218219
# Appsignal integration
219-
gem "appsignal", "~> 3.8.1", require: false
220+
gem "appsignal", "~> 3.10.0", require: false
220221

221222
gem "view_component"
222223
# Lookbook
@@ -227,6 +228,7 @@ gem "factory_bot", "~> 6.4.0", require: false
227228
# require factory_bot_rails for convenience in core development
228229
gem "factory_bot_rails", "~> 6.4.0", require: false
229230

231+
gem "turbo_power", "~> 0.6.2"
230232
gem "turbo-rails", "~> 2.0.0"
231233

232234
gem "httpx"
@@ -331,6 +333,7 @@ group :development, :test do
331333
gem "rubocop", require: false
332334
gem "rubocop-capybara", require: false
333335
gem "rubocop-factory_bot", require: false
336+
gem "rubocop-openproject", require: false
334337
gem "rubocop-performance", require: false
335338
gem "rubocop-rails", require: false
336339
gem "rubocop-rspec", require: false
@@ -389,6 +392,6 @@ gemfiles.each do |file|
389392
send(:eval_gemfile, file) if File.readable?(file)
390393
end
391394

392-
gem "openproject-octicons", "~>19.14.1"
393-
gem "openproject-octicons_helper", "~>19.14.1"
394-
gem "openproject-primer_view_components", "~>0.35.2"
395+
gem "openproject-octicons", "~>19.17.0"
396+
gem "openproject-octicons_helper", "~>19.17.0"
397+
gem "openproject-primer_view_components", "~>0.40.0"

0 commit comments

Comments
 (0)