Skip to content

Commit 9866ece

Browse files
committed
Merge remote-tracking branch 'origin/dev' into feature/71380-inplace-edit-for-project-attributes-on-project-overview-page
2 parents 66dc683 + 2b16e71 commit 9866ece

File tree

728 files changed

+12242
-2810
lines changed

Some content is hidden

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

728 files changed

+12242
-2810
lines changed

.env.example

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,15 @@ FE_PORT=4200
4848
OPENPROJECT_COLLABORATIVE__EDITING__HOCUSPOCUS__URL=ws://localhost:1234
4949
OPENPROJECT_COLLABORATIVE__EDITING__HOCUSPOCUS__SECRET=secret12345
5050

51+
# Hocuspocus (collaborative editing) - docker dev development
52+
# OPENPROJECT_COLLABORATIVE__EDITING__HOCUSPOCUS__URL=wss://hocuspocus.local
53+
# OPENPROJECT_COLLABORATIVE__EDITING__HOCUSPOCUS__SECRET=secret12345
54+
5155
# Default TLD for docker dev stack (e.g. when set to "local", services will be openproject.local, nextcloud.local, etc.)
5256
OPENPROJECT_DOCKER_DEV_TLD=local
5357

5458
# Use this variables to configure hostnames for frontend and backend, e.g. to enable HTTPS in docker development setup
59+
# For docker development: openproject.local and localhost for "local" development
5560
OPENPROJECT_DEV_HOST=localhost
5661
OPENPROJECT_DEV_URL=http://${OPENPROJECT_DEV_HOST}:${FE_PORT}
5762

.github/workflows/cla.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ jobs:
5959
dominic-braeunlein,
6060
dsteiner,
6161
dtohmucu,
62+
fereshtehnm,
6263
gleone-art,
6364
ihor-khomenko,
6465
judithroth,

.github/workflows/docker.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -192,18 +192,18 @@ jobs:
192192
echo "https://github.com/opf/openproject/commits/${{ inputs.branch }}" > PRODUCT_URL
193193
date -u +"%Y-%m-%dT%H:%M:%SZ" > RELEASE_DATE
194194
- name: Set up QEMU
195-
uses: docker/setup-qemu-action@v3
195+
uses: docker/setup-qemu-action@v4
196196
- name: Set up Docker Buildx
197197
id: buildx
198-
uses: docker/setup-buildx-action@v3
198+
uses: docker/setup-buildx-action@v4
199199
- name: Login to Docker Hub
200-
uses: docker/login-action@v3
200+
uses: docker/login-action@v4
201201
with:
202202
username: ${{ secrets.DOCKER_USERNAME }}
203203
password: ${{ secrets.DOCKER_PASSWORD }}
204204
- name: Docker meta
205205
id: meta
206-
uses: docker/metadata-action@v5
206+
uses: docker/metadata-action@v6
207207
with:
208208
context: git
209209
labels: |
@@ -228,7 +228,7 @@ jobs:
228228
sed -i 's/vendor\/bundle//g' .dockerignore
229229
- name: Build image
230230
id: build
231-
uses: docker/build-push-action@v6
231+
uses: docker/build-push-action@v7
232232
with:
233233
context: .
234234
platforms: ${{ matrix.platform }}
@@ -273,7 +273,7 @@ jobs:
273273
--platform "${{ matrix.platform }}"
274274
- name: Push image
275275
id: push
276-
uses: docker/build-push-action@v6
276+
uses: docker/build-push-action@v7
277277
with:
278278
context: .
279279
platforms: ${{ matrix.platform }}
@@ -324,10 +324,10 @@ jobs:
324324
if [ "$suffix" = "-all-in-one" ]; then suffix="" ; fi
325325
echo "suffix=$suffix" >> "$GITHUB_OUTPUT"
326326
- name: Set up Docker Buildx
327-
uses: docker/setup-buildx-action@v3
327+
uses: docker/setup-buildx-action@v4
328328
- name: Docker meta
329329
id: meta
330-
uses: docker/metadata-action@v5
330+
uses: docker/metadata-action@v6
331331
with:
332332
images: ${{ needs.setup.outputs.registry_image }}
333333
labels: |
@@ -342,7 +342,7 @@ jobs:
342342
tags: |
343343
${{ needs.setup.outputs.docker_tags }}
344344
- name: Login to Docker Hub
345-
uses: docker/login-action@v3
345+
uses: docker/login-action@v4
346346
with:
347347
username: ${{ secrets.DOCKER_USERNAME }}
348348
password: ${{ secrets.DOCKER_PASSWORD }}

.github/workflows/hocuspocus-docker.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,20 @@ jobs:
8383
echo $REGISTRY:$LATEST_TAG >> $GITHUB_OUTPUT
8484
echo 'EOF' >> $GITHUB_OUTPUT
8585
- name: Login to Docker Hub
86-
uses: docker/login-action@v3
86+
uses: docker/login-action@v4
8787
with:
8888
username: ${{ secrets.DOCKER_USERNAME }}
8989
password: ${{ secrets.DOCKER_PASSWORD }}
9090

9191
- name: Set up QEMU
92-
uses: docker/setup-qemu-action@v3
92+
uses: docker/setup-qemu-action@v4
9393

9494
- name: Set up Docker Buildx
95-
uses: docker/setup-buildx-action@v3
95+
uses: docker/setup-buildx-action@v4
9696

9797
- name: Build and push
9898
id: build
99-
uses: docker/build-push-action@v6
99+
uses: docker/build-push-action@v7
100100
with:
101101
context: extensions/op-blocknote-hocuspocus
102102
push: true

.rubocop.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,10 @@ Rails/SkipsModelValidations:
226226
RSpecRails/HttpStatus:
227227
Enabled: false
228228

229+
# The block form of `travel_to` is often the tighter and safer option in our Rails specs.
230+
RSpecRails/TravelAround:
231+
Enabled: false
232+
229233
# expect not_to change is not working as expected
230234
# if you chain it with multiple expected changes
231235
RSpec/ChangeByZero:

.ruby-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.4.7
1+
4.0.1

Gemfile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ gem "scimitar", "~> 2.13"
6969
gem "acts_as_list", "~> 1.2.6"
7070
gem "acts_as_tree", "~> 2.9.0"
7171
gem "awesome_nested_set", "~> 3.9.0"
72-
gem "closure_tree", "~> 9.6.0"
72+
gem "closure_tree", "~> 9.6.1"
7373
gem "rubytree", "~> 2.2.0"
7474

7575
gem "addressable", "~> 2.8.9"
@@ -201,6 +201,7 @@ gem "nokogiri", "~> 1.19.1"
201201

202202
gem "carrierwave", "~> 2.2.6"
203203
gem "carrierwave_direct", "~> 3.0.0"
204+
gem "ssrf_filter", "~> 1.3"
204205
gem "fog-aws"
205206

206207
gem "aws-sdk-core", "~> 3.241"
@@ -255,7 +256,7 @@ gem "turbo-rails", "~> 2.0.20"
255256

256257
# There is a problem with version 1.4.0. Do not update until you're sure there is no infinite hang
257258
# happenning in failing tests when WebMock or VCR stub cannot be found.
258-
gem "httpx", "~> 1.7.2"
259+
gem "httpx", "~> 1.7.3"
259260

260261
# Brings actual deep-freezing to most ruby objects
261262
gem "ice_nine"

Gemfile.lock

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ GEM
223223
remote: https://rubygems.org/
224224
specs:
225225
Ascii85 (2.0.1)
226-
action_text-trix (2.1.16)
226+
action_text-trix (2.1.17)
227227
railties
228228
actioncable (8.1.2)
229229
actionpack (= 8.1.2)
@@ -424,7 +424,7 @@ GEM
424424
childprocess (5.1.0)
425425
logger (~> 1.5)
426426
climate_control (1.2.0)
427-
closure_tree (9.6.0)
427+
closure_tree (9.6.1)
428428
activerecord (>= 7.2.0)
429429
with_advisory_lock (>= 7.5.0)
430430
zeitwerk (~> 2.7)
@@ -697,8 +697,8 @@ GEM
697697
htmlentities (4.3.4)
698698
http-2 (1.1.3)
699699
http_parser.rb (0.8.1)
700-
httpx (1.7.2)
701-
http-2 (>= 1.0.0)
700+
httpx (1.7.3)
701+
http-2 (>= 1.1.3)
702702
i18n (1.14.8)
703703
concurrent-ruby (~> 1.0)
704704
i18n-js (4.2.4)
@@ -740,7 +740,7 @@ GEM
740740
jmespath (1.6.2)
741741
job-iteration (1.12.0)
742742
activejob (>= 6.1)
743-
json (2.18.1)
743+
json (2.19.1)
744744
json-jwt (1.17.0)
745745
activesupport (>= 4.2)
746746
aes_key_wrap
@@ -767,7 +767,7 @@ GEM
767767
addressable (~> 2.8)
768768
childprocess (~> 5.0)
769769
logger (~> 1.6)
770-
lefthook (2.1.2)
770+
lefthook (2.1.3)
771771
letter_opener (1.10.0)
772772
launchy (>= 2.2, < 4)
773773
letter_opener_web (3.0.0)
@@ -1452,7 +1452,7 @@ GEM
14521452
thor (1.5.0)
14531453
thread_safe (0.3.6)
14541454
timecop (0.9.10)
1455-
timeout (0.6.0)
1455+
timeout (0.6.1)
14561456
tpm-key_attestation (0.14.1)
14571457
bindata (~> 2.4)
14581458
openssl (> 2.0)
@@ -1588,7 +1588,7 @@ DEPENDENCIES
15881588
carrierwave (~> 2.2.6)
15891589
carrierwave_direct (~> 3.0.0)
15901590
climate_control
1591-
closure_tree (~> 9.6.0)
1591+
closure_tree (~> 9.6.1)
15921592
colored2
15931593
commonmarker (~> 2.6.0)
15941594
compare-xml (~> 0.66)
@@ -1629,7 +1629,7 @@ DEPENDENCIES
16291629
grids!
16301630
html-pipeline (~> 2.14.0)
16311631
htmldiff
1632-
httpx (~> 1.7.2)
1632+
httpx (~> 1.7.3)
16331633
i18n-js (~> 4.2.4)
16341634
i18n-tasks (~> 1.1.0)
16351635
ice_cube (~> 0.17.0)
@@ -1753,6 +1753,7 @@ DEPENDENCIES
17531753
spring-commands-rubocop
17541754
sprockets (~> 3.7.2)
17551755
sprockets-rails (~> 3.5.1)
1756+
ssrf_filter (~> 1.3)
17561757
stackprof
17571758
statesman (~> 13.1.0)
17581759
store_attribute (~> 2.0)
@@ -1784,7 +1785,7 @@ DEPENDENCIES
17841785

17851786
CHECKSUMS
17861787
Ascii85 (2.0.1) sha256=15cb5d941808543cbb9e7e6aea3c8ec3877f154c3461e8b3673e97f7ecedbe5a
1787-
action_text-trix (2.1.16) sha256=f645a2c21821b8449fd1d6770708f4031c91a2eedf9ef476e9be93c64e703a8a
1788+
action_text-trix (2.1.17) sha256=b44691639d77e67169dc054ceacd1edc04d44dc3e4c6a427aa155a2beb4cc951
17881789
actioncable (8.1.2) sha256=dc31efc34cca9cdefc5c691ddb8b4b214c0ea5cd1372108cbc1377767fb91969
17891790
actionmailbox (8.1.2) sha256=058b2fb1980e5d5a894f675475fcfa45c62631103d5a2596d9610ec81581889b
17901791
actionmailer (8.1.2) sha256=f4c1d2060f653bfe908aa7fdc5a61c0e5279670de992146582f2e36f8b9175e9
@@ -1847,7 +1848,7 @@ CHECKSUMS
18471848
cgi (0.5.1) sha256=e93fcafc69b8a934fe1e6146121fa35430efa8b4a4047c4893764067036f18e9
18481849
childprocess (5.1.0) sha256=9a8d484be2fd4096a0e90a0cd3e449a05bc3aa33f8ac9e4d6dcef6ac1455b6ec
18491850
climate_control (1.2.0) sha256=36b21896193fa8c8536fa1cd843a07cf8ddbd03aaba43665e26c53ec1bd70aa5
1850-
closure_tree (9.6.0) sha256=75aac8f058597b0d96f2052f1419c912e8f4e92425e56273db122913cdae5d1e
1851+
closure_tree (9.6.1) sha256=f6af11243dea13d888788ffb0fd28014bd1077abe3a4233ea1e7044e52fc6377
18511852
coderay (1.1.3) sha256=dc530018a4684512f8f38143cd2a096c9f02a1fc2459edcfe534787a7fc77d4b
18521853
coercible (1.0.0) sha256=5081ad24352cc8435ce5472bc2faa30260c7ea7f2102cc6a9f167c4d9bffaadc
18531854
color_conversion (0.1.2) sha256=99bea5fa412e1527a11389975aa6ad445ff8528ebae202c11d08c45ea2b94c96
@@ -1965,7 +1966,7 @@ CHECKSUMS
19651966
htmlentities (4.3.4) sha256=125a73c6c9f2d1b62100b7c3c401e3624441b663762afa7fe428476435a673da
19661967
http-2 (1.1.3) sha256=1b2f379d35a11dbae94f8a1a52c053d8c161eb4a0c98b5d1605ff1b2bf171c9c
19671968
http_parser.rb (0.8.1) sha256=9ae8df145b39aa5398b2f90090d651c67bd8e2ebfe4507c966579f641e11097a
1968-
httpx (1.7.2) sha256=10cdcd5b03794de743bec87e8cdba2ca93e2124084b6cdb1ad01b00c192a51f7
1969+
httpx (1.7.3) sha256=126914109a58350e5ad0c13786092f35e2419857dad15745f31fc81c371f93a8
19691970
i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
19701971
i18n-js (4.2.4) sha256=61390d372f8fa68c495c5907d577657e8cc3a7031f4945db1e91f935e1391355
19711972
i18n-tasks (1.1.2) sha256=4dcfba49e52a623f30661cb316cb80d84fbba5cb8c6d88ef5e02545fffa3637a
@@ -1980,7 +1981,7 @@ CHECKSUMS
19801981
iso8601 (0.13.0) sha256=298c2b15b7be5fa95a1372813d36a2257656cd8e906dfbc1f5cb409851425aa2
19811982
jmespath (1.6.2) sha256=238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1
19821983
job-iteration (1.12.0) sha256=0164057417750f6e9c3ed548f029f1136b18eb53975fa438b09304a525d6c6c0
1983-
json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
1984+
json (2.19.1) sha256=dd94fdc59e48bff85913829a32350b3148156bc4fd2a95a2568a78b11344082d
19841985
json-jwt (1.17.0) sha256=6ff99026b4c54281a9431179f76ceb81faa14772d710ef6169785199caadc4cc
19851986
json-schema (4.3.1) sha256=d5e68dc32b94408d0b06ad04f9382ccbb6fe5a44910e066f8547f56c471a7825
19861987
json_schemer (2.5.0) sha256=2f01fb4cce721a4e08dd068fc2030cffd0702a7f333f1ea2be6e8991f00ae396
@@ -1989,7 +1990,7 @@ CHECKSUMS
19891990
ladle (1.0.1) sha256=e8586964108c798d48bf57d2a65bd5602e8e5223a176b6602a0fb36c0bda90dc
19901991
language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
19911992
launchy (3.1.1) sha256=72b847b5cc961589dde2c395af0108c86ff0119f42d4648d25b5440ebb10059e
1992-
lefthook (2.1.2) sha256=da5a2484d68ee00d7fcc7e072e925c0246363eb20d77499d536bea209ae6ae06
1993+
lefthook (2.1.3) sha256=399eae9411d5a65fbeff38230a685073fefac6ef9ae18165a81f5f7ffa2df7a7
19931994
letter_opener (1.10.0) sha256=2ff33f2e3b5c3c26d1959be54b395c086ca6d44826e8bf41a14ff96fdf1bdbb2
19941995
letter_opener_web (3.0.0) sha256=3f391efe0e8b9b24becfab5537dfb17a5cf5eb532038f947daab58cb4b749860
19951996
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
@@ -2273,7 +2274,7 @@ CHECKSUMS
22732274
thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
22742275
thread_safe (0.3.6) sha256=9ed7072821b51c57e8d6b7011a8e282e25aeea3a4065eab326e43f66f063b05a
22752276
timecop (0.9.10) sha256=12ba45ce57cdcf6b1043cb6cdffa6381fd89ce10d369c28a7f6f04dc1b0cd8eb
2276-
timeout (0.6.0) sha256=6d722ad619f96ee383a0c557ec6eb8c4ecb08af3af62098a0be5057bf00de1af
2277+
timeout (0.6.1) sha256=78f57368a7e7bbadec56971f78a3f5ecbcfb59b7fcbb0a3ed6ddc08a5094accb
22772278
tpm-key_attestation (0.14.1) sha256=7fd4e4653a7afd0a386632ddfb05d10ecfdd47678299c5e69165bc9ae111193f
22782279
trailblazer-option (0.1.2) sha256=20e4f12ea4e1f718c8007e7944ca21a329eee4eed9e0fa5dde6e8ad8ac4344a3
22792280
tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
@@ -2316,7 +2317,7 @@ CHECKSUMS
23162317
zeitwerk (2.7.5) sha256=d8da92128c09ea6ec62c949011b00ed4a20242b255293dd66bf41545398f73dd
23172318

23182319
RUBY VERSION
2319-
ruby 3.4.7p58
2320+
ruby 4.0.1
23202321

23212322
BUNDLED WITH
2322-
2.7.2
2323+
4.0.6

app/components/admin/import/jira/import_runs/status_badge_component.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,18 @@ def status_color_scheme(status)
4444
when Import::JiraImportStateMachine::IMPORT_ERROR,
4545
Import::JiraImportStateMachine::REVERT_ERROR,
4646
Import::JiraImportStateMachine::INSTANCE_META_ERROR,
47-
Import::JiraImportStateMachine::PROJECTS_META_ERROR
47+
Import::JiraImportStateMachine::PROJECTS_META_ERROR,
48+
Import::JiraImportStateMachine::FINALIZING_ERROR
4849
:danger
49-
when Import::JiraImportStateMachine::COMPLETED,
50+
when Import::JiraImportStateMachine::FINALIZING_DONE,
5051
Import::JiraImportStateMachine::REVERTED
5152
:success
5253
when Import::JiraImportStateMachine::INSTANCE_META_FETCHING,
5354
Import::JiraImportStateMachine::PROJECTS_META_FETCHING,
5455
Import::JiraImportStateMachine::IMPORTING,
55-
Import::JiraImportStateMachine::REVERTING
56+
Import::JiraImportStateMachine::FINALIZING,
57+
Import::JiraImportStateMachine::REVERTING,
58+
Import::JiraImportStateMachine::REVERT_CANCELLING
5659
:accent
5760
else
5861
:attention

app/components/admin/import/jira/import_runs/wizard_step_review_component.html.erb

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,30 @@ See COPYRIGHT and LICENSE files for more details.
5252
render(Admin::Import::Jira::ImportRuns::ErrorBannerComponent.new(model, 'revert'))
5353
end
5454
end
55+
elsif model.in_state?(:finalizing, :finalizing_done, :finalizing_error)
56+
box.with_row do
57+
concat(render(Primer::Beta::Text.new(font_weight: :semibold, tag: :div)) {
58+
I18n.t(:"admin.jira.run.wizard.sections.import_result.label_finalize_import")
59+
})
60+
end
61+
case model.current_state.to_sym
62+
when :finalizing
63+
box.with_row(mt: 3) do
64+
render(Admin::Import::Jira::ImportRuns::ProgressBoxComponent.new(
65+
I18n.t(:"admin.jira.run.wizard.sections.import_result.label_finalizing")
66+
))
67+
end
68+
when :finalizing_done
69+
box.with_row(mt: 3) do
70+
render(Primer::Alpha::Banner.new(scheme: :success, icon: :"check-circle")) {
71+
I18n.t(:"admin.jira.run.wizard.sections.import_result.label_finalizing_done")
72+
}
73+
end
74+
when :finalizing_error
75+
box.with_row(mt: 3) do
76+
render(Admin::Import::Jira::ImportRuns::ErrorBannerComponent.new(model, 'finalize'))
77+
end
78+
end
5579
else
5680
box.with_row do
5781
concat(render(Primer::Beta::Text.new(font_weight: :semibold, tag: :div)) {
@@ -70,7 +94,7 @@ See COPYRIGHT and LICENSE files for more details.
7094
}
7195
end
7296
end
73-
if model.in_state?(:imported, :completed)
97+
if model.in_state?(:imported, :finalizing_done)
7498
box.with_row(mt: 3, mb: 3) do
7599
render(Admin::Import::Jira::ImportRuns::InfoListBoxComponent.new(
76100
title: I18n.t(:"admin.jira.run.wizard.sections.import_result.label_results"),

0 commit comments

Comments
 (0)