Commit Graph

8457 Commits

Author SHA1 Message Date
Oliver Günther 8eca1925ec Respect activation limit in user unlocking
https://community.openproject.org/work_packages/74373
2026-04-24 09:19:06 +02:00
OpenProject Actions CI ca54954220 Merge branch 'release/17.3' into dev 2026-04-23 04:33:10 +00:00
Oliver Günther 02ae6a9119 Remove password min-rules in favor of clearly listed/checked password rules
https://community.openproject.org/work_packages/73461
2026-04-22 13:43:42 +02:00
Oliver Günther 7135dfc2c4 Add additional validations for path validation for posix on repositories 2026-04-22 11:23:37 +02:00
Pavel Balashou 10f2ed7efe Merge pull request #22842 from opf/jira-import-ssrf
Use ssrf filtering in Jira Import.
2026-04-21 15:26:40 +02:00
Tobias Dillmann a42eb98f87 [#73104] Move api resource link out of the model 2026-04-21 13:55:12 +02:00
Tobias Dillmann 4d3205636e [#73104] Remove backlogs module pollution from core
We delegate the resource name to the object itself, that way we can
override it in our record and no knowledge about the backlogs module is
necessary in the core.
2026-04-21 13:55:12 +02:00
Tobias Dillmann 281e44762f [#73104] Allow resource linking for sprints
This is necessary to make the group_by work
2026-04-21 13:55:12 +02:00
Kabiru Mwenja 234a870060 Merge pull request #22704 from opf/feature/73716-adapt-work-package-show-view-for-project-based-semantic-work-package-identifiers
Adapt work package show view for semantic identifiers
2026-04-21 13:52:23 +03:00
Kabiru Mwenja 79d4e67a0d Merge pull request #22718 from opf/feature/73756-adapt-routes-for-project-based-semantic-work-package-identifiers
Make find/exists? resolve semantic work package identifiers
2026-04-21 13:13:54 +03:00
Oliver Günther a92edf17a6 Merge remote-tracking branch 'origin/release/17.3' into dev 2026-04-21 11:00:11 +02:00
Oliver Günther 61266cd96b Validate use of existing managed repository paths
https://community.openproject.org/work_packages/74165
2026-04-21 10:59:52 +02:00
Pavel Balashou 53e33770c2 Use ssrf filtering in Jira Import. 2026-04-21 10:29:45 +02:00
Oliver Günther fad228d8d3 Remove style with content 2026-04-20 19:38:03 +02:00
Oliver Günther 12160eab43 Add svg to remove list 2026-04-20 19:38:03 +02:00
Oliver Günther 4abbc75f22 Remove commonmarker GFM tagfilter extension
We already use our own extensive sanitization pipeline, and it turns out
tagfilter is extremely slow on large oneline input (such as big tables).

Rendering a large table inside a work package (2k rows, 20k cells) caused tagfilter to run for over 2 minutes.
Added a separate spec to test all tags the tagfilter filters for to avoid its runaway execution time.
2026-04-20 16:52:10 +02:00
Oliver Günther 098bd4927c Bumped version to 17.3.2
[ci skip]
2026-04-20 13:08:33 +02:00
Klaus Zanders 8d15647333 Merge pull request #22372 from opf/departments-admin-menu
Manage organizations in Admin Menu
2026-04-20 12:39:43 +02:00
Alexander Brandon Coles 7b3b6bdbf3 Clean up remaining Backlogs dead code
Restore the minimal admin settings blankslate so the admin menu route
remains valid after the sprint-based cleanup. Remove the remaining
settings-driven story/task classification code, dead models and
services, and the obsolete filter and spec setup that depended on it.
2026-04-17 10:14:14 +01:00
OpenProject Actions CI 0c68614c6e Merge branch 'release/17.3' into dev 2026-04-17 04:32:30 +00:00
Klaus Zanders 710eac52ba Do not allow changing the organizational_unit flag and allow setting parent in the API 2026-04-16 18:11:13 +02:00
Oliver Günther 96397d7388 Explicit path validation on svn targets
https://community.openproject.org/work_packages/73978
2026-04-16 15:51:52 +02:00
Kabiru Mwenja 6c02cd1fea Separate displayId from wp.id to fix cascading bugs
Overriding wp.id to return the semantic identifier (e.g. "PROJ-42")
broke cache keys, API filters, row rendering, and CSS selectors that
all depend on the numeric PK.

Instead, keep wp.id as the numeric PK and add two new properties:
- displayId: returns the user-facing identifier ("PROJ-42" or "123")
- displayIdWithHash: returns "#PROJ-42" or "#123" for UI display

Also adds a COALESCE fallback in the SQL representer so work packages
created before semantic mode was enabled still get a valid displayId.
2026-04-15 18:59:42 +03:00
Kabiru Mwenja 8d13c2ac93 Fix grammar in multi-argument error and clarify API route param
- "find are not yet supported" → "find is not yet supported"
- Add semantic identifier example to API route param description
2026-04-15 16:42:18 +03:00
Jan Sandbrink 61c6f8f616 Merge pull request #22758 from opf/extend-pattern-matcher-filter
Allow to extend PatternMatcherFilters via method call
2026-04-15 13:08:50 +02:00
Oliver Günther 94a79e67c0 Bumped version to 17.3.1
[ci skip]
2026-04-15 07:47:24 +02:00
Jan Sandbrink ded6d960c0 Allow to extend PatternMatcherFilters via method call
Instead of requiring plugins to overwrite the .matchers method,
they can now call .append_matcher with their custom matcher.
2026-04-14 16:47:17 +02:00
Kabiru Mwenja 63e9854836 Make find/exists? resolve semantic work package identifiers
Extract FinderMethods module that transparently resolves both numeric and
semantic identifiers (e.g. "PROJ-42") using FriendlyId's Object#friendly_id?
for dispatch. The module is included in both the WorkPackage class and
extended onto every relation, so scoped queries like
WorkPackage.visible(user).find("PROJ-42") work seamlessly.

- Override find to resolve semantic IDs via identifier column + alias table
- Override exists? with the same resolution chain
- Refactor find_by_id_or_identifier to use friendly_id? instead of semantic_id?
- Update API route to accept string IDs (type: Integer → type: String)
- Update controller and ViewComponent finders to use find_by_id_or_identifier
- Pass display_id from Rails views to Angular custom elements
2026-04-14 17:38:12 +03:00
Kabiru Mwenja 54423b842d Expose displayId in API v3 work package endpoints (#22710) 2026-04-14 17:17:46 +03:00
ulferts 52637b49b1 bump grape 2026-04-14 09:34:44 +02:00
Kabiru Mwenja 5bbc4e7563 Rename semanticId to displayId, make always present
Replace the conditional `semanticId` API field with `displayId` which is
always present in work package responses. In semantic mode it returns the
project-based identifier (e.g. "PROJ-42"), in classic mode it returns the
numeric ID as a string. This gives API consumers (frontend, mobile) a
single field to read without conditional logic.

- Add `WorkPackage#display_id` method that encapsulates the mode check
- Update both representers (JSON and SQL) to render `displayId` unconditionally
- Update OpenAPI schema documentation
2026-04-13 14:04:39 +03:00
Kabiru Mwenja d39b720e6e Expose semanticId in API v3 work package endpoints
Adds the computed semanticId property to the HAL representer,
SQL collection representer, and schema representer. The property is
gated behind the semantic_work_package_ids feature flag and returns the
value from WorkPackage#identifier. Includes OpenAPI docs
and the translation key for the schema name.
2026-04-13 14:04:38 +03:00
Oliver Günther 40bc3c04e5 Add OpenProject::Cache.fetch_request_cached for hot-path caching
Add fetch_request_cached method that layers RequestStore in front of Rails.cache.fetch

Used in the following places, as they are repeatedly accessed during schema initialization.

all_work_package_form_attributes, form_config_attribute_representation, Query.available_columns

In my tests, this improves cold cache access by reducing initial number of queries to access cache
2026-04-09 15:48:40 +02:00
Henriette Darge 66cae3a519 Merge remote-tracking branch 'origin/dev' into feature/65404-combine-and-redesign-notification-settings-and-email-reminders-pages-in-myaccount-area 2026-04-07 09:08:43 +02:00
Henriette Darge 3852563aa9 Add a divider before the "log out" menu entry 2026-04-02 08:23:17 +02:00
Kabiru Mwenja 8c0d0c28b1 Merge pull request #22564 from opf/refinements/72665-collaboration-improvements
Collaboration refinements: require HocuspocusProvider, context-aware error messages
2026-04-01 14:15:39 +03:00
OpenProject Actions CI 6559ec3342 Merge branch 'release/17.3' into dev 2026-04-01 09:41:14 +00:00
OpenProject Actions CI 013105e1e1 Merge branch 'release/17.3' into dev 2026-04-01 04:32:16 +00:00
Kabiru Mwenja 5e3dd6a1d1 fix(documents): strip invisible characters from document titles
Documents created with zero-width Unicode characters (e.g. U+200B)
in their titles become unclickable on the index page, making them
hard to manage or delete.

Introduce RemoveInvisibleCharacters normalizer, replacing the former
RemoveAsciiControlCharacters. It strips both ASCII control characters
and Unicode zero-width characters, with each category defined as a
named constant for clarity. Apply it to Document#title and update
existing callers (Project#identifier, CustomField#name).

Add a shared RSpec example "strips invisible characters" to verify
normalization consistently across all three models.
2026-03-31 18:18:41 +03:00
Wieland Lindenthal a5842882db Add rel=nofollow to user-generated links to deter SEO spam (#22548)
* Add rel=nofollow to user-generated links to deter SEO spam

Links in user-generated content (work package descriptions, comments,
wiki pages) previously carried rel="noopener noreferrer" but not
nofollow. Search engines therefore passed PageRank through them, making
OpenProject community instances attractive targets for spammers posting
links for SEO gain.

Adding nofollow removes this incentive without any visible impact on
legitimate users.

* Fix missing nofollow in AutolinkCustomProtocolsFilter
2026-03-31 16:33:17 +02:00
Kabiru Mwenja 8272768057 Remove test-mode fallback, require HocuspocusProvider, add context-aware error messages
Extract non-IndexedDB refinements from PR #22125 so they can ship
independently while IndexedDB offline persistence is evaluated separately.

- Gate collaboration on Setting.real_time_text_collaboration_enabled?
  instead of hardcoding it to true
- Remove the test-mode fallback that created a standalone Y.Doc without
  a provider; HocuspocusProvider is now required for document editing
- Refactor useCollaboration hooks: callback-based timeout with proactive
  cancel on sync, extracted useProviderAuthError hook, JSDoc comments
- Add read/write context-aware connection error messages (readonly users
  see "real-time updates will resume" vs writers see "changes will sync")
- Add blocked offline mode: when the server is unreachable and there is
  no local cache, hide the editor entirely to prevent an empty Y.Doc
  from being synced as authoritative content on reconnect
- Update feature specs to use real hocuspocus shared context instead of
  stubbing collaboration_enabled, add offline blocking tests
2026-03-30 16:43:48 +03:00
Jan Sandbrink f9d8bc6614 Introduce SubclassResponsibility error
This error is intended for cases when a method is
intentionally not implemented, because the module/class defining
it expects a subclass (or class including the module) to implement
the method.

This is intended to distinguish it from other cases, such as:
* feature not implemented yet
* edge case of a method call not yet supported

Notably it avoids the misuse of the Ruby-defined NotImplementedError,
which is only intended for much more specific scenarios:

> Raised when a feature is not implemented on the current platform. For example, methods depending on the fsync or fork system calls may raise this exception [...]

Also see https://docs.ruby-lang.org/en/master/NotImplementedError.html
2026-03-27 08:14:56 +01:00
Henriette Darge 3f0f3cfca0 Use reminders form component for the admin view as well and remove now outdated angular components 2026-03-26 15:15:29 +01:00
Henriette Darge 35d481edb7 Pimerize the reminders form 2026-03-26 14:41:54 +01:00
Oliver Günther 9617b069e9 Bumped version to 17.4.0
[ci skip]
2026-03-26 07:14:46 +01:00
Jens Ulferts f192606e93 Merge pull request #22414 from opf/feature/73105-filter-by-sprints-on-work-packages-table
Feature/73105 filter by sprints on work packages table
2026-03-25 23:01:56 +01:00
Wieland Lindenthal 60e63674e8 [#70191] Allow searching for work package types and status when selecting work package for time entries (#21522) 2026-03-25 19:31:09 +01:00
Jens Ulferts d457547f5c Merge pull request #22373 from opf/implementation/71251-migrate-versions-to-sprints
[#71251] Migrate Versions to Sprints
2026-03-25 14:23:29 +01:00
Behrokh Satarnejad 7014e13d3e Merge pull request #22475 from opf/71063-create-a-pagination-component-based-on-the-primer-specification
[71063] Update PVC with new Pagination component and Banner styles
2026-03-25 14:02:04 +01:00
ulferts 64626ad129 Merge remote-tracking branch 'origin/dev' into implementation/71251-migrate-versions-to-sprints 2026-03-25 10:17:26 +01:00