2097 Commits

Author SHA1 Message Date
Klaus Zanders 38ce5a3e33 Merge branch 'dev' into merge-release/17.5-20260611050510 2026-06-11 09:17:51 +02:00
OpenProject Actions CI ff8d35a227 Merge branch 'release/17.4' into release/17.5 2026-06-10 12:10:20 +00:00
Tobias Dillmann adb9f6b071 Authorize project custom field access in inplace edit dialog 2026-06-10 14:09:25 +02:00
Oliver Günther d851d25524 Merge remote-tracking branch 'origin/release/17.5' into dev 2026-06-10 11:29:44 +02:00
Henriette Darge 5a3eaa11e3 Always expand the hierarchy in "favorite" mdoe 2026-06-10 09:23:12 +02:00
Henriette Darge 396de9362f [74625] Make project hierarchy collapsable in the global project selector (#23137)
* Use new async FilterableTreeView for global project selector

* Remove replaced angular component

* Fine tune sorting and expansion state of the new project selector

* Update primer to 0.86.1

* Add workspace information and filter results hierarchy information to project selector

* Include review feedback: Harmonize I18n keys, fix visible scope, use guarded local storage

* Add a turboFrame in the project select overlay to only load the projects when it is actually opened

* Restore BIM tab styles which were broken for a while already but the new project selector changes made it so bad that the test broke because the plus icon was overlapping the checkbox

* Clarify spec expectation
2026-06-08 08:14:47 +02:00
Tomas Hykel 285f3381a9 [STC-811] Fix pagination for filtered Documents & Reserved identifiers 2026-06-05 14:18:05 +02:00
OpenProject Actions CI 13c2ee75ba Merge branch 'release/17.5' into dev 2026-06-03 12:57:00 +00:00
Tom Hykel 2e01aff2a3 Merge pull request #23325 from opf/bug/74927-unable-to-change-a-parent-on-bulk-edit-of-work-packages-with-semantic-id
[#74927] Unable to change a parent on bulk edit of work packages with semantic ID
2026-06-03 13:39:06 +02:00
Alexander Brandon Coles fa5b7ee1b5 Merge remote-tracking branch 'opf/dev' into merge-release/17.5-20260603051246 2026-06-03 09:52:08 +02:00
Tom Hykel afe7550851 Merge pull request #23366 from opf/fix/74928-numeric-id-instead-of-semantic-one-on-th
fix(ui): Numeric ID instead of semantic one on the error message on bulk edit (WP #74928)
2026-06-02 17:24:18 +02:00
Oliver Günther 11dc79a74d Merge remote-tracking branch 'origin/release/17.5' into dev 2026-06-02 16:22:39 +02:00
Tomas Hykel 27f56b14bd fix: Render a proper error when releasing a 404d project identifier 2026-06-02 12:08:01 +02:00
Oliver Günther 1f3da064ac Escape CSV formula cells by default 2026-06-01 13:44:29 +02:00
Ivan Kuchin c5df0c29f0 Merge pull request #23182 from opf/code-maintenance/74769-remove-portfolio_models-feature-flag
[#74769] Remove portfolio_models feature flag
2026-05-28 17:20:48 +02:00
Ivan Kuchin f6e073f0a1 [#74769] Remove portfolio_models feature flag
https://community.openproject.org/wp/74769
2026-05-28 13:53:08 +02:00
Tomas Hykel 2ad4ea078a fix(ui): Numeric ID instead of semantic one on the error message on bulk edit (WP #74928) 2026-05-26 23:47:59 +02:00
Tomas Hykel 529bd77587 fix(ui): Numeric ID instead of semantic one in bulk edit work packages (WP #74926) 2026-05-26 23:31:44 +02:00
Tomas Hykel 948fa43321 chore: Remove feature flag for project-based work package identifiers 2026-05-25 17:45:06 +02:00
Tomas Hykel 3fbad33ee1 [#74927] Unable to change a parent on bulk edit of work packages with semantic ID
https://community.openproject.org/wp/74927
2026-05-22 19:10:26 +02:00
Tomas Hykel 15f86021b1 feat: Add progress bar for identifier conversion 2026-05-20 21:28:07 +02:00
Tomas Hykel 46390ca62a feat: Release reserved project identifiers via admin 2026-05-20 20:48:00 +02:00
Tomas Hykel 1ce03faa03 feat: Improve progress reporting during identifier conversion 2026-05-20 20:27:43 +02:00
Kabiru Mwenja 70931762d9 Merge remote-tracking branch 'origin/dev' into feature/editor-mention-semantic-id
# Conflicts:
#	frontend/src/vendor/ckeditor/ckeditor.js
#	frontend/src/vendor/ckeditor/ckeditor.js.map
2026-05-20 16:33:47 +03:00
OpenProject Actions CI 7e1c003ba7 Merge branch 'release/17.4' into dev 2026-05-20 06:43:24 +00:00
OpenProject Actions CI 82c65d6a27 Merge branch 'release/17.3' into release/17.4 2026-05-20 06:42:24 +00:00
Oliver Günther 27817f2871 Explicitly call journable.visible? on the diff controller 2026-05-18 11:28:51 +02:00
Kabiru Mwenja ed4d03d6c3 Cover displayId JSON contract in both modes
The CKEditor mention plugin reads `displayId` (camelCase, stringified)
off each entry to insert `#PROJ-7` or `#1234` into the editor source and
to build the mention's link URL. The contract must hold in both classic
and semantic mode so the frontend doesn't have to branch on identifier
shape, and the comment in the controller cites APIv3 parity as the reason
the value is forced to a String.

Render-views spec asserts the camelCase key, the stringified value, and
the mode-conditional shape (numeric id in classic, semantic identifier
in semantic).
2026-05-15 10:59:09 +03:00
Oliver Günther f4cc426b2c Merge pull request #23133 from opf/feat/users-filter-component
Convert custom filters on user administration to standard query
2026-05-13 14:34:04 +02:00
Behrokh Satarnejad d924c255cf [69524] Primerize Types form configuration page (#22854)
* Create the section component

* Create the form configuration component

* Create a controller

* change form template

* Use primer dialog for reset to defaults button

* show WP configuration modal while creating a related WPs table

* Fix the drag and drop functionality without save button

* Fix renaming functionality

* Use generic drag and drop in form configuration and move all client side action handling to server side

* Fix embedded query form configuration regressions

* Add data test selectors to all elements that we used for test

* update the current tests with the new implementations and design

* Add new tests for new controller of sections and rows

* WP quesry row should only have edit quesry action

* Update transformer spec regarding the new changes

* Fix the failing test in reset form configuration and some tests for actions

* Fix rubocop errors

* Fix eslint errors

* Add spec for removing a section

* Use condensed border boxes

* fix failing specs

* fix failing specs

* Switch the buttons in form configuration component

* Create the section at the top of the list

* Instead of using UUID, use the name of the group as the key

* Add missing check for EE for section actions

* Remove angular components

* Use action list instead of a border box for left side panel

* Reduce the margin between the right side panel and sub header, add some space to the query table left side, span to the whole available space

* Show validation errors while updating and creating a section

* Use a danger dialog for reset to default

* Add a confirmation for removing the section

* Align items in the row

* Use test_selector instead of data-test-selector

* Create move_action in rb file

* Create move_action in rb file

* Simplify section component

* Simplify form configuration component

* Remove dialog for rename and delete section on missing EE

* Create a component for inactive attribute list

* Create a separate component for reset dialog

* Remove EE feedback dialog

* Remove form partial which is not needed anymore

* Remove unused js strings

* Update using update_via_turbo

* Remove form configuration rows controller

* Create a blanksalte component

* Fix failing specs

* Fix failing specs

* Fix failing specs

* Remove unused translation strings

* Align form configuration section routes with actual create flow

* Change section to group

* Change section to group in services and controllers

* Change section to group in en.yml

* Fix rubocop errors

* Move the query group persistence assertion from the JS feature spec
to the synchronous form configuration groups controller spec.

* Reuse query service result in embedded query build

* Keep inactive attribute filter after turbo list refresh

* Extract form configuration group edit state into form model

* Fix the failing test

* Potential fix for pull request finding 'CodeQL / Potentially uninitialized local variable'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Rename inactive attribute component inputs

* Refine reset dialog wording for form configuration

* Use direct Turbo action for adding attribute groups

* Reuse generic filter-list controller for inactive attributes

* Remove focus impelementation in ts

* Group form configuration Stimulus controllers under one namespace

* Use turbo request service in form configuration controller

* Clarify legacy group key normalization in form config contract

* Replace inactive attribute list wrapper via turbo stream

* Extract duplicate untitled group key generation into Type::FormGroup.next_untitled_key

* Auto-generate untitled group name on create instead of returning an error

* Avoid mixed return types in form config group create service

* Extract shared form configuration group service behavior into concern

* Fix spacing for the last group and italic font for the placeholder rows

* Replace Angular no-results component with Primer Banner on form configuration page

* Hide dropped element immediately to prevent flickering before Turbo Stream response

* Reload type before rendering create error to prevent duplicate groups

* Await service initialization before use to prevent potential race condition

* Replace sleep calls with deterministic waits in form configuration spec

* Handle malformed JSON and invalid query errors gracefully in form configuration update

* Make query group label a clickable button and empty group hint italic

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-05-13 12:56:18 +02:00
Alexander Brandon Coles f8e3ea3019 Merge remote-tracking branch 'opf/dev' into HEAD
# Conflicts:
#	frontend/src/assets/sass/backlogs/_master_backlog.sass
#	modules/backlogs/config/locales/crowdin/es.yml
#	modules/backlogs/config/locales/crowdin/uk.yml
#	modules/storages/config/locales/crowdin/zh-CN.yml
#	modules/wikis/config/locales/crowdin/es.yml
#	modules/wikis/config/locales/crowdin/uk.yml
#	modules/wikis/config/locales/crowdin/zh-CN.yml
2026-05-11 17:31:22 +02:00
Oliver Günther c950be910e Convert custom filters on user administration to standard query 2026-05-08 13:34:21 +02:00
Oliver Günther eae05f9d1a Fix after login redirect not ending up on configured URL by default
We used request.url and a back_url for the home path to redirect users
if they did not end up trying to access on a deep link.

In case you access / and get redirected by require_login, you want users
to end up on the after_login_default_redirect_url

Likewise, if you access /login without a back_url, you want the same
behavior

Deep linking logins are unchanged

https://community.openproject.org/work_packages/74756
2026-05-08 09:26:58 +02:00
Eric Schubert aaa7727c55 Merge pull request #22877 from opf/feature/73440-extend-wiki-permissions
[#73440] refactor wiki permissions
2026-05-06 16:50:15 +02:00
Kabiru Mwenja 8edab11953 Merge pull request #23016 from opf/bugfix/move-work-package-semantic-id-404
Resolve semantic work package id when moving a work package
2026-05-05 16:50:40 +03:00
Alexander Brandon Coles 83573af155 Merge dev into release merge branch
Resolve Backlogs sprint conflicts by porting the release assignability
changes onto the renamed Sprint model.
2026-05-05 08:51:13 +01:00
Eric Schubert c3557734cd [#73440] fix permission checks
- move actions to correct controller name
- fix unit test
2026-05-04 14:52:52 +02:00
Klaus Zanders a66bc91c63 Include all permission dependencies, add a factory for the role with the correct permissions 2026-05-04 11:15:43 +02:00
Klaus Zanders b00b01d519 Always include the selected option in the settings form 2026-05-04 10:31:22 +02:00
Eric Schubert 4531cb2cc0 [#73440] refactor wiki permissions
- https://community.openproject.org/work_packages/73440
- merge several wiki permissions into 4 resulting ones
- fix some smaller rubocop issues
2026-05-04 10:27:00 +02:00
Oliver Günther 30b5e4e621 Force password change when sending out passwords via email 2026-05-04 09:08:48 +02:00
Alexander Brandon Coles 31aac08962 Merge remote-tracking branch 'opf/dev' into merge-release/17.4-20260501044839
# Conflicts:
#	modules/backlogs/config/locales/crowdin/af.yml
#	modules/backlogs/config/locales/crowdin/ar.yml
#	modules/backlogs/config/locales/crowdin/az.yml
#	modules/backlogs/config/locales/crowdin/be.yml
#	modules/backlogs/config/locales/crowdin/bg.yml
#	modules/backlogs/config/locales/crowdin/ca.yml
#	modules/backlogs/config/locales/crowdin/ckb-IR.yml
#	modules/backlogs/config/locales/crowdin/cs.yml
#	modules/backlogs/config/locales/crowdin/da.yml
#	modules/backlogs/config/locales/crowdin/de.yml
#	modules/backlogs/config/locales/crowdin/el.yml
#	modules/backlogs/config/locales/crowdin/eo.yml
#	modules/backlogs/config/locales/crowdin/es.yml
#	modules/backlogs/config/locales/crowdin/et.yml
#	modules/backlogs/config/locales/crowdin/eu.yml
#	modules/backlogs/config/locales/crowdin/fa.yml
#	modules/backlogs/config/locales/crowdin/fi.yml
#	modules/backlogs/config/locales/crowdin/fil.yml
#	modules/backlogs/config/locales/crowdin/fr.yml
#	modules/backlogs/config/locales/crowdin/he.yml
#	modules/backlogs/config/locales/crowdin/hi.yml
#	modules/backlogs/config/locales/crowdin/hr.yml
#	modules/backlogs/config/locales/crowdin/hu.yml
#	modules/backlogs/config/locales/crowdin/it.yml
#	modules/backlogs/config/locales/crowdin/ka.yml
#	modules/backlogs/config/locales/crowdin/kk.yml
#	modules/backlogs/config/locales/crowdin/ko.yml
#	modules/backlogs/config/locales/crowdin/lt.yml
#	modules/backlogs/config/locales/crowdin/lv.yml
#	modules/backlogs/config/locales/crowdin/mn.yml
#	modules/backlogs/config/locales/crowdin/ne.yml
#	modules/backlogs/config/locales/crowdin/nl.yml
#	modules/backlogs/config/locales/crowdin/no.yml
#	modules/backlogs/config/locales/crowdin/pl.yml
#	modules/backlogs/config/locales/crowdin/pt-BR.yml
#	modules/backlogs/config/locales/crowdin/pt-PT.yml
#	modules/backlogs/config/locales/crowdin/ro.yml
#	modules/backlogs/config/locales/crowdin/ru.yml
#	modules/backlogs/config/locales/crowdin/rw.yml
#	modules/backlogs/config/locales/crowdin/si.yml
#	modules/backlogs/config/locales/crowdin/sk.yml
#	modules/backlogs/config/locales/crowdin/sl.yml
#	modules/backlogs/config/locales/crowdin/sr.yml
#	modules/backlogs/config/locales/crowdin/sv.yml
#	modules/backlogs/config/locales/crowdin/tr.yml
#	modules/backlogs/config/locales/crowdin/uk.yml
#	modules/backlogs/config/locales/crowdin/uz.yml
#	modules/backlogs/config/locales/crowdin/zh-CN.yml
#	modules/backlogs/config/locales/crowdin/zh-TW.yml
2026-05-01 12:42:35 +02:00
Kabiru Mwenja a88698c230 Use where_display_id_in in find_work_packages
Both :work_package_id (single-WP routes) and :ids (bulk routes) come
from URLs or HTML forms and may carry semantic identifiers, so the
prior numeric-only assumption on :ids was wrong. Route both inputs
through WorkPackage.where_display_id_in, which returns a chainable
scope that matches numeric, current-identifier, and historical-alias
forms in a single query — no per-id round trip and no controller-side
coupling to WorkPackageSemanticAlias.

Tighten the post-move controller spec to assert the redirect URL
contains the destination project's semantic prefix when follow: 1 is
set, which is the path that exercises the moved WP's display_id.
2026-04-30 17:44:12 +03:00
Kabiru Mwenja c069e1bcb1 Resolve semantic work package id in find_work_packages
Single-WP routes pass :work_package_id from the URL, which can be a
semantic identifier (e.g. "PROJ-42") since commit 4dfdd6ec5d dropped
numeric pins on the move and copy HAL action links. The bulk
where(id:) lookup in find_work_packages only matches numeric primary
keys, so /work_packages/PROJ-42/move/new returned 404. Translate
:work_package_id through find_by_display_id first; the bulk :ids
branch is untouched since form submissions already send numeric ids.
2026-04-30 16:45:27 +03:00
Henriette Darge 4b1fc96ccd Show banner after successfully deletion of version 2026-04-30 09:26:27 +02:00
Mir Bhatia bd6ddfe555 Merge pull request #22835 from opf/feature/72242-workflows-ux-improvement-allow-multi-selection-of-roles-in-workflow
[#72242] Workflows UX improvement: Allow multi-selection of roles in workflow
2026-04-29 11:29:10 +02:00
Mir Bhatia e561086d38 Update all remaining components to work with multiple roles 2026-04-28 13:08:26 +02:00
Mir Bhatia b8b5574df0 Update specs to work with multiple roles 2026-04-24 17:32:46 +02:00
Mir Bhatia ddaff61e26 Merge pull request #22762 from opf/fix/68573-blank-page-and-error-404-when-calendar-board-team-planner-role-is-deleted
Draft: [68582] Blank page and error 404 when calendar, board, team planner, role is deleted
2026-04-23 09:29:38 +02:00
Mir Bhatia c8148ab799 Fix more redirection HTTP statuses 2026-04-22 16:44:50 +02:00