Merge branch 'release/17.2' into dev

This commit is contained in:
OpenProject Actions CI
2026-03-03 16:29:36 +00:00
87 changed files with 1208 additions and 212 deletions
@@ -0,0 +1,50 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) the OpenProject GmbH
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 3.
OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
Copyright (C) 2006-2013 Jean-Philippe Lang
Copyright (C) 2010-2013 the ChiliProject Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See COPYRIGHT and LICENSE files for more details.
++#%>
<%=
render(Primer::OpenProject::InputGroup.new(input_width: :large)) do |input_group|
input_group.with_text_input(
name: :server_url,
label: t(".label"),
visually_hide_label: false,
value: server_url
)
input_group.with_trailing_action_clipboard_copy_button(
value: server_url,
aria: {
label: I18n.t("button_copy_to_clipboard")
}
)
input_group.with_caption do
t(".caption")
end
end
%>
@@ -23,15 +23,17 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
module ProjectHelper
def project_creation_wizard_name(project)
I18n.t(project.project_creation_wizard_artifact_name,
default: :project_initiation_request,
scope: "settings.project_initiation_request.name.options")
module McpConfigurations
class ServerUrlComponent < ApplicationComponent
include OpPrimer::ComponentHelpers
def server_url
url_helpers.api_mcp_url
end
end
end
@@ -30,7 +30,7 @@
class Projects::CreationWizardStatusComponent < ApplicationComponent
include ApplicationHelper
include ProjectHelper
include ProjectsHelper
attr_reader :project, :current_user,
:artifact_id, :artifact_work_package
@@ -34,7 +34,7 @@ module Projects
include OpPrimer::ComponentHelpers
include OpTurbo::Streamable
include ApplicationHelper
include ProjectHelper
include ProjectsHelper
def initialize(project:, custom_fields_by_section:, current_section:)
super
-9
View File
@@ -345,13 +345,4 @@ class ProjectsController < ApplicationController
def login_back_url_params
params.permit(:parent_id, :template_id, :step, :next_section)
end
def portfolio_management_feature_required? = params[:workspace_type].in?(%w[portfolio program])
def portfolio_management_feature_missing?
portfolio_management_feature_required? && !EnterpriseToken.allows_to?(:portfolio_management)
end
helper_method :supported_export_formats,
:portfolio_management_feature_missing?
end
@@ -39,6 +39,10 @@ module McpConfigurations
)
if server_enabled?
f.html_content do
render(McpConfigurations::ServerUrlComponent.new)
end
f.text_field(
name: :title,
label: McpConfiguration.human_attribute_name(:title),
+16
View File
@@ -93,4 +93,20 @@ module ProjectsHelper
def projects_query_params
safe_query_params(PROJECTS_QUERY_PARAM_NAMES)
end
def supported_export_formats
::Exports::Register.list_formats(Project).map(&:to_s)
end
def project_creation_wizard_name(project)
I18n.t(project.project_creation_wizard_artifact_name,
default: :project_initiation_request,
scope: "settings.project_initiation_request.name.options")
end
def portfolio_management_feature_required? = params[:workspace_type].in?(%w[portfolio program])
def portfolio_management_feature_missing?
portfolio_management_feature_required? && !EnterpriseToken.allows_to?(:portfolio_management)
end
end
+1 -1
View File
@@ -29,7 +29,7 @@
#++
class ProjectArtifactsMailer < ApplicationMailer
include ProjectHelper
include ProjectsHelper
include Exports::PDF::Common::Macro
def creation_wizard_submitted(user, project, artifact_work_package)
+57 -12
View File
@@ -60,21 +60,20 @@ module Exports::PDF::Common::Attachments
def attachment_image_filepath(src)
# images are embedded into markup with the api-path as img.src
attachment = attachment_by_api_content_src(src)
return nil if attachment.nil? || !pdf_embeddable?(attachment.content_type)
return if attachment.nil? || !pdf_embeddable?(attachment.content_type)
local_file = attachment_image_local_file(attachment)
return nil if local_file.nil?
return if local_file.nil?
filename = local_file.path
filename = convert_gif_to_png(filename) if attachment.content_type == "image/gif"
filename = convert_webp_to_png(filename) if attachment.content_type == "image/webp"
resize_image(filename)
filename ? resize_image(filename) : nil
end
def temp_image_file(extension)
tmp_file = Tempfile.new(["temp_image", extension])
@resized_images = [] if @resized_images.nil?
@resized_images ||= []
@resized_images << tmp_file
tmp_file.path
end
@@ -90,14 +89,60 @@ module Exports::PDF::Common::Attachments
def convert_webp_to_png(filename)
tmp_file = temp_image_file(".png")
image = MiniMagick::Image.open(filename)
image.format("png")
image.write(tmp_file)
# ImageMagick loads ALL frames of an animated WebP into its pixel cache even
# when only frame 0 is needed, which can exhaust memory or even cache for large animations.
# Instead, parse the RIFF/WEBP binary to extract the first ANMF frame as a
# standalone single-frame WebP, then convert only that.
source = extract_first_webp_frame(filename) || filename
image = MiniMagick::Image.open(source)
image.frames.first.write(tmp_file)
tmp_file
end
# Parses the RIFF/WEBP container and extracts the first animation frame
# (ANMF chunk) as a standalone single-frame WebP written to a temp file.
# Returns nil if the file is not an animated WebP.
#
# Each ANMF frame in animated WebP is independently encoded (no inter-frame
# references), so the raw frame chunk is a valid standalone WebP image.
def extract_first_webp_frame(filename) # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity
data = File.binread(filename)
return unless data.bytesize > 12 && data[0, 4] == "RIFF".b && data[8, 4] == "WEBP".b
webp_type = %W[VP8\x20 VP8L VP8X]
pos = 12
while pos + 8 <= data.bytesize
chunk_id = data[pos, 4]
chunk_size = data[pos + 4, 4].unpack1("V")
break if pos + 8 + chunk_size > data.bytesize
if chunk_id == "ANMF".b && chunk_size > 16
# ANMF payload: 16 bytes of frame metadata (position, size, duration, flags)
# followed by the frame image data as a VP8 / VP8L / VP8X chunk.
# Wrap it in a minimal RIFF/WEBP container to create a single-frame WebP.
frame_chunk = data[pos + 8 + 16, chunk_size - 16]
# Reject frames whose payload isn't a recognised WebP bitstream type
next unless webp_type.map(&:b).include?(frame_chunk[0, 4])
riff_size = 4 + frame_chunk.bytesize # "WEBP" + frame data
tmp_frame = temp_image_file(".webp")
File.binwrite(tmp_frame, "RIFF".b + [riff_size].pack("V") + "WEBP".b + frame_chunk)
return tmp_frame
end
# RIFF chunks are padded to even byte offsets; use & 1 to get the padding.
pos += 8 + chunk_size + (chunk_size & 1)
end
nil
rescue StandardError => e
Rails.logger.error "Failed to extract first webp frame: #{e}"
nil
end
def attachment_by_api_content_src(src)
return nil if src.empty?
return if src.empty?
# we accept absolut linked images
# (but not hot-linked from elsewhere: https://example.com/another_api/attachments/1/somefile.png)
@@ -106,12 +151,12 @@ module Exports::PDF::Common::Attachments
# #{api_url_helpers.root_path}attachments/:id/filename.ext (e.g. inserted by drag and drop from the files tab)
attachment_regex = %r{/attachments/(\d+)/}
return nil unless src.start_with?(api_url_helpers.root_path) && src.match?(attachment_regex)
return unless src.start_with?(api_url_helpers.root_path) && src.match?(attachment_regex)
attachments_id = src.scan(attachment_regex).first.first
attachment = Attachment.find_by(id: attachments_id.to_i)
return nil if attachment.nil?
return nil unless attachment.visible?
return if attachment.nil?
return unless attachment.visible?
attachment
rescue StandardError
@@ -39,7 +39,7 @@ class Project::PDFExport::ProjectInitiation < Exports::Exporter
include Project::PDFExport::Common::ProjectAttributes
include Project::PDFExport::ProjectInitiation::Cover
include Project::PDFExport::ProjectInitiation::Styles
include ProjectHelper
include ProjectsHelper
attr_accessor :pdf
@@ -31,7 +31,7 @@
module Projects::CreationWizard
class CreateArtifactWorkPackageService < ::BaseServices::BaseContracted
include Contracted
include ProjectHelper
include ProjectsHelper
include ArtifactExporter
include Rails.application.routes.url_helpers
prepend Projects::Concerns::UpdateDemoData
@@ -31,7 +31,7 @@
module Projects::CreationWizard
class ReuploadArtifactOnStatusChangesService
include Contracted
include ProjectHelper
include ProjectsHelper
include ArtifactExporter
include Rails.application.routes.url_helpers
prepend Projects::Concerns::UpdateDemoData
+7 -3
View File
@@ -286,7 +286,7 @@ af:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ af:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2673,7 +2677,7 @@ af:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ af:
title: "Pasgemaakte aksies"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -310,7 +310,7 @@ ar:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -621,6 +621,10 @@ ar:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "أو"
errors:
@@ -2893,7 +2897,7 @@ ar:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2972,7 +2976,7 @@ ar:
title: "إجراءات مخصصة"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ az:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ az:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2673,7 +2677,7 @@ az:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ az:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -298,7 +298,7 @@ be:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -609,6 +609,10 @@ be:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2783,7 +2787,7 @@ be:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2862,7 +2866,7 @@ be:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ bg:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ bg:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "или"
errors:
@@ -2673,7 +2677,7 @@ bg:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ bg:
title: "Персонализирани действия"
description: "Потребителските действия са преки пътища с едно кликване до набор от предварително дефинирани действия, които можете да направите достъпни за определени работни пакети въз основа на статус, роля, тип или проект."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ ca:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -594,6 +594,10 @@ ca:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "o"
errors:
@@ -2670,7 +2674,7 @@ ca:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2749,7 +2753,7 @@ ca:
title: "Accions personalitzades"
description: "Les accions personalitzades són accessos ràpids d'un sol clic que et permeten crear accions predefinides en els paquets de treball que desitgis basat en estat, rol, estil o projecte."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ ckb-IR:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ ckb-IR:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2673,7 +2677,7 @@ ckb-IR:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ ckb-IR:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -298,7 +298,7 @@ cs:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -609,6 +609,10 @@ cs:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "nebo"
errors:
@@ -2783,7 +2787,7 @@ cs:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2862,7 +2866,7 @@ cs:
title: "Vlastní akce"
description: "Vlastní akce jsou zkratky jedním kliknutím na sadu předem definovaných akcí, které můžete zpřístupnit na základě stavu některých pracovních balíčků. role, typ nebo projekt."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ da:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -595,6 +595,10 @@ da:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "eller"
errors:
@@ -2671,7 +2675,7 @@ da:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2750,7 +2754,7 @@ da:
title: "Brugerdefinerede handlinger"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ de:
title: "Projekte auswählen"
mcp_configurations:
index:
description: "Das Model Context Protocol ermöglicht es KI-Agenten, ihren Nutzern Tools und Ressourcen bereitzustellen, die diese OpenProject-Instanz zur Verfügung stellt."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Ressourcen"
resources_description: "OpenProject stellt die folgenden Ressourcen bereit. Jede Ressource kann nach Wunsch aktiviert, umbenannt und beschrieben werden. Weitere Informationen finden sich in der [Dokumentation zu MCP-Ressourcen](docs_url)."
resources_submit: "Ressourcen aktualisieren"
@@ -594,6 +594,10 @@ de:
danger_dialog:
confirmation_live_message_checked: "Die Schaltfläche zum Fortfahren ist nun aktiv."
confirmation_live_message_unchecked: "Die Schaltfläche zum Fortfahren ist inaktiv. Sie müssen das Kontrollkästchen ankreuzen, um fortzufahren."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "oder"
errors:
@@ -2665,7 +2669,7 @@ de:
edit_attribute_groups: Attributgruppen bearbeiten
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP-Benutzer- und Gruppensynchronisation
mcp_server: MCP-Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On für Nextcloud-Speicher
one_drive_sharepoint_file_storage: OneDrive/SharePoint-Datei-Speicher
@@ -2744,7 +2748,7 @@ de:
title: "Benutzerdefinierte Aktionen"
description: "Selbstdefinierte Aktionen sind Verknüpfungen zu einer Reihe von vordefinierten Aktionen, die Sie für bestimmte Arbeitspakete je nach Status, Rolle, Typ oder Projekt mit nur einem Klick auf einen Button auslösen."
mcp_server:
description: "Integrieren Sie KI-Agenten mit Ihrer OpenProject-Instanz über MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ el:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -593,6 +593,10 @@ el:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "ή"
errors:
@@ -2669,7 +2673,7 @@ el:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2748,7 +2752,7 @@ el:
title: "Προσαρμοσμένες ενέργειες"
description: "Οι προσαρμοσμένες ενέργειες είναι συντομεύσεις με ένα κλικ προς ένα σύνολο προκαθορισμένων ενεργειών που μπορείτε να διαθέσετε σε συγκεκριμένα πακέτα εργασίας με βάση την κατάσταση, ρόλος, τύπος ή έργο."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ eo:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ eo:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "aŭ"
errors:
@@ -2673,7 +2677,7 @@ eo:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ eo:
title: "Adaptitaj agoj"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ es:
title: "Select projects"
mcp_configurations:
index:
description: "El protocolo de contexto de modelo (MCP, por sus siglas en inglés) permite a los agentes de IA proporcionar a sus usuarios herramientas y recursos expuestos por esta instancia de OpenProject."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Recursos"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Actualizar recursos"
@@ -595,6 +595,10 @@ es:
danger_dialog:
confirmation_live_message_checked: "El botón para continuar ya está activo."
confirmation_live_message_unchecked: "El botón para continuar ya está inactivo. Debe marcar la casilla para continuar."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "o"
errors:
@@ -2670,7 +2674,7 @@ es:
edit_attribute_groups: Editar grupos de atributos
gantt_pdf_export: Exportación de Gantt a PDF
ldap_groups: Usuarios de LDAP y sincronización de grupos
mcp_server: Servidor MCP
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Inicio de sesión único para almacenamiento en la nube
one_drive_sharepoint_file_storage: Almacenamiento de archivos OneDrive/SharePoint
@@ -2749,7 +2753,7 @@ es:
title: "Acciones personalizadas"
description: "Las acciones personalizadas son accesos directos con un solo clic a un conjunto de acciones predefinidas que puede mostrar en determinados paquetes de trabajo según el estado, rol, tipo o proyecto."
mcp_server:
description: "Integre agentes de IA con su instancia de OpenProject a través del protocolo de contexto de modelo (MCP)."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ et:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ et:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "või"
errors:
@@ -2673,7 +2677,7 @@ et:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ et:
title: "Kohandatud toimingud"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ eu:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ eu:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2673,7 +2677,7 @@ eu:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ eu:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ fa:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ fa:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "یا"
errors:
@@ -2673,7 +2677,7 @@ fa:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ fa:
title: "اقدامات سفارشی"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ fi:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ fi:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "tai"
errors:
@@ -2673,7 +2677,7 @@ fi:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ fi:
title: "Mukautetut toiminnot"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ fil:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ fil:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2673,7 +2677,7 @@ fil:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ fil:
title: "Mga custom aksyon"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ fr:
title: "Sélectionner des projets"
mcp_configurations:
index:
description: "Le protocole de contexte de modèle permet aux agents d'intelligence artificielle de fournir à leurs utilisateurs les outils et les ressources exposés par cette instance d'OpenProject."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Ressources"
resources_description: "OpenProject met en œuvre les ressources suivantes. Chacune d'entre elles peut être activée, renommée et décrite comme vous le souhaitez. Pour plus d'informations, veuillez vous référer à la [documentation sur les ressources MCP](docs_url)."
resources_submit: "Mettre à jour les ressources"
@@ -597,6 +597,10 @@ fr:
danger_dialog:
confirmation_live_message_checked: "Le bouton pour continuer est maintenant actif."
confirmation_live_message_unchecked: "Le bouton pour continuer est maintenant inactif. Vous devez cocher la case pour continuer."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "ou"
errors:
@@ -2671,7 +2675,7 @@ fr:
edit_attribute_groups: Modifier les groupes d'attributs
gantt_pdf_export: Exportation PDF de diagramme de Gantt
ldap_groups: Synchronisation des utilisateurs LDAP et des groupes
mcp_server: Serveur MCP
mcp_server: Model Context Protocol (MCP)
meeting_templates: Modèles de réunion réutilisables
nextcloud_sso: Authentification unique pour le stockage Nextcloud
one_drive_sharepoint_file_storage: Stockage de fichiers OneDrive/SharePoint
@@ -2750,7 +2754,7 @@ fr:
title: "Actions personnalisées"
description: "Les actions personnalisées sont des raccourcis en un clic vers un ensemble d'actions prédéfinies que vous pouvez rendre disponibles sur certains lots de travaux en fonction de l'état, du rôle, du type ou du projet."
mcp_server:
description: "Intégrez des agents d'intelligence artificielle à votre instance OpenProject grâce à MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Définissez des modèles de réunion avec une structure d'ordre du jour définie et gagnez du temps en les réutilisant lors de la création de nouvelles réunions."
nextcloud_sso:
+7 -3
View File
@@ -298,7 +298,7 @@ he:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -609,6 +609,10 @@ he:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "או"
errors:
@@ -2783,7 +2787,7 @@ he:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2862,7 +2866,7 @@ he:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ hi:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ hi:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "या"
errors:
@@ -2671,7 +2675,7 @@ hi:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2750,7 +2754,7 @@ hi:
title: "विशेष या कस्टम क्रियाएँ"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -292,7 +292,7 @@ hr:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -603,6 +603,10 @@ hr:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2728,7 +2732,7 @@ hr:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2807,7 +2811,7 @@ hr:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ hu:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -596,6 +596,10 @@ hu:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "vagy"
errors:
@@ -2672,7 +2676,7 @@ hu:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2751,7 +2755,7 @@ hu:
title: "Egyéni műveletek"
description: "Az egyéni műveletek egy kattintással elérhető parancsikonok előre meghatározott műveletek csoportjához, amelyeket állapot, szerep, típus vagy projekt alapján elérhetővé tehet bizonyos munkacsomagokon."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -280,7 +280,7 @@ id:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -587,6 +587,10 @@ id:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "atau"
errors:
@@ -2614,7 +2618,7 @@ id:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2693,7 +2697,7 @@ id:
title: "Tindakan khusus"
description: "Tindakan kustom adalah pintasan sekali klik ke serangkaian tindakan yang ditentukan sebelumnya yang dapat Anda sediakan pada paket kerja tertentu berdasarkan status, peran, jenis, atau proyek."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ it:
title: "Select projects"
mcp_configurations:
index:
description: "Il protocollo di contesto del modello consente agli agenti di intelligenza artificiale di fornire ai propri utenti strumenti e risorse esposti da questa istanza di OpenProject."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Risorse"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Aggiorna risorse"
@@ -595,6 +595,10 @@ it:
danger_dialog:
confirmation_live_message_checked: "Il pulsante per procedere è ora attivo."
confirmation_live_message_unchecked: "Il pulsante per procedere è ora inattivo. Devi spuntare la casella per continuare."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "oppure"
errors:
@@ -2670,7 +2674,7 @@ it:
edit_attribute_groups: Modifica proprietà gruppo
gantt_pdf_export: Esportazione PDF Gantt
ldap_groups: Utenti LDAP e sincronizzazione di gruppo
mcp_server: Server MCP
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Accesso singolo per Nextcloud Storage
one_drive_sharepoint_file_storage: Archiviazione file OneDrive/SharePoint
@@ -2749,7 +2753,7 @@ it:
title: "Azioni personalizzate"
description: "Le azioni personalizzate sono scorciatoie che con un clic ti consentono di eseguire una serie di azioni predefinite che è possibile rendere disponibili su determinate macro-attività in base a stato, ruolo, tipo o progetto."
mcp_server:
description: "Integra gli agenti IA con l'istanza OpenProject tramite MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -280,7 +280,7 @@ ja:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -589,6 +589,10 @@ ja:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "または"
errors:
@@ -2617,7 +2621,7 @@ ja:
edit_attribute_groups: 属性グループを編集
gantt_pdf_export: ガントPDFをエクスポート
ldap_groups: LDAP ユーザーとグループ同期
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Nextcloudストレージのシングルサインオン。
one_drive_sharepoint_file_storage: OneDrive/SharePointファイルストレージ
@@ -2696,7 +2700,7 @@ ja:
title: "カスタムアクション"
description: "カスタムアクションは、ステータスに基づいて特定のワークパッケージで利用できる、事前に定義されたアクションです。"
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ ka:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ ka:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "ან"
errors:
@@ -2673,7 +2677,7 @@ ka:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ ka:
title: "მორგებული ქმედებები"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ kk:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ kk:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2673,7 +2677,7 @@ kk:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ kk:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -280,7 +280,7 @@ ko:
title: "Select projects"
mcp_configurations:
index:
description: "모델 컨텍스트 프로토콜을 통해 AI 에이전트는 이 OpenProject 인스턴스에 의해 노출된 도구와 리소스를 사용자에게 제공할 수 있습니다."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "리소스"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "리소스 업데이트"
@@ -591,6 +591,10 @@ ko:
danger_dialog:
confirmation_live_message_checked: "진행 버튼이 이제 활성화되었습니다."
confirmation_live_message_unchecked: "진행 버튼이 이제 비활성화되었습니다. 계속하려면 확인란을 선택해야 합니다."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "또는"
errors:
@@ -2618,7 +2622,7 @@ ko:
edit_attribute_groups: 특성 그룹 편집
gantt_pdf_export: Gantt PDF 내보내기
ldap_groups: LDAP 사용자 및 그룹 동기화
mcp_server: MCP 서버
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Nextcloud 저장소용 Single Sign-On
one_drive_sharepoint_file_storage: OneDrive/SharePoint 파일 저장소
@@ -2697,7 +2701,7 @@ ko:
title: "사용자 지정 작업"
description: "사용자 지정 작업은 상태, 역할, 유형 또는 프로젝트를 기반으로 특정 작업 패키지에서 사용할 수 있도록 미리 정의된 작업 세트에 대한 원클릭 바로 가기입니다."
mcp_server:
description: "MCP를 통해 AI 에이전트를 OpenProject 인스턴스와 통합합니다."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -298,7 +298,7 @@ lt:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -606,6 +606,10 @@ lt:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "arba"
errors:
@@ -2780,7 +2784,7 @@ lt:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2859,7 +2863,7 @@ lt:
title: "Pasirinktiniai veiksmai"
description: "Savo veiksmai yra vieno paspaudimo kombinacijos, leidžiančios nustatyti veiksmus, kuriuos galite padaryti preinamais kai kuriuose darbo paketuose pagal jų būseną, rolę, tipą ar projektą."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -292,7 +292,7 @@ lv:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -603,6 +603,10 @@ lv:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "vai"
errors:
@@ -2728,7 +2732,7 @@ lv:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2807,7 +2811,7 @@ lv:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ mn:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ mn:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "эсвэл"
errors:
@@ -2673,7 +2677,7 @@ mn:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ mn:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -280,7 +280,7 @@ ms:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -590,6 +590,10 @@ ms:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "atau"
errors:
@@ -2616,7 +2620,7 @@ ms:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2695,7 +2699,7 @@ ms:
title: "Tindakan tersuai"
description: "Tindakan tersuai adalah pintasan satu klik ke satu set tindakan yang telah ditetapkan yang anda boleh sediakan untuk pakej kerja tertentu berdasarkan status, peranan, jenis atau projek."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ ne:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ ne:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2673,7 +2677,7 @@ ne:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ ne:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ nl:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -594,6 +594,10 @@ nl:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "of"
errors:
@@ -2669,7 +2673,7 @@ nl:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2748,7 +2752,7 @@ nl:
title: "Aangepaste acties"
description: "Aangepaste acties zijn met één klik snelkoppelingen naar een aantal vooraf gedefinieerde acties die u op bepaalde werkpakketten op basis van status beschikbaar kunt maken rol, type of project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "eller"
errors:
@@ -2672,7 +2676,7 @@
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2751,7 +2755,7 @@
title: "Tilpassede handlinger"
description: "Egendefinerte handlinger er snarveier med ett klikk til en rekke forhåndsdefinerte handlinger som du kan gjøre tilgjengelige på visse arbeidspakker basert på status, rolle, type eller prosjekt."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -298,7 +298,7 @@ pl:
title: "Select projects"
mcp_configurations:
index:
description: "Protokół kontekstu modelu umożliwia agentom AI dostarczanie użytkownikom narzędzi i zasobów udostępnianych przez to wystąpienie OpenProject."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Zasoby"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Zaktualizuj zasoby"
@@ -606,6 +606,10 @@ pl:
danger_dialog:
confirmation_live_message_checked: "Przycisk kontynuowania jest już aktywny."
confirmation_live_message_unchecked: "Przycisk kontynuowania jest teraz nieaktywny. Aby kontynuować, zaznacz pole wyboru."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "lub"
errors:
@@ -2779,7 +2783,7 @@ pl:
edit_attribute_groups: Edytuj grupy atrybutów
gantt_pdf_export: Eksport wykresu Gantta w formacie PDF
ldap_groups: Synchronizacja użytkowników i grup LDAP
mcp_server: Serwer MCP
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Logowanie jednokrotne do magazynu Nextcloud
one_drive_sharepoint_file_storage: Magazyn plików OneDrive/SharePoint
@@ -2858,7 +2862,7 @@ pl:
title: "Działania niestandardowe"
description: "Akcje niestandardowe są skrótami do zestawu predefiniowanych akcji, które można udostępnić w określonych pakietach roboczych na podstawie statusu, roli, typu lub projektu."
mcp_server:
description: "Zintegruj agentów AI ze swoim wystąpieniem OpenProject za pomocą usługi MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ pt-BR:
title: "Select projects"
mcp_configurations:
index:
description: "O protocolo de contexto do modelo permite que agentes de IA forneçam aos seus usuários ferramentas e recursos disponibilizados por esta instância do OpenProject."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Recursos"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Atualizar recursos"
@@ -596,6 +596,10 @@ pt-BR:
danger_dialog:
confirmation_live_message_checked: "O botão para prosseguir agora está ativo."
confirmation_live_message_unchecked: "O botão para prosseguir está desativado. É necessário marcar a caixa de seleção para continuar."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "ou"
errors:
@@ -2670,7 +2674,7 @@ pt-BR:
edit_attribute_groups: Editar atributo de grupos
gantt_pdf_export: Exportar diagrama de Gantt para PDF
ldap_groups: Sincronização de usuários e grupos LDAP
mcp_server: Servidor MCP
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Autenticação única para o armazenamento do Nextcloud
one_drive_sharepoint_file_storage: Armazenamento de Arquivos OneDrive/SharePoint
@@ -2749,7 +2753,7 @@ pt-BR:
title: "Ações personalizadas"
description: "As ações personalizadas são atalhos de clique único para um conjunto de ações pré-definidas que você pode disponibilizar em certos pacotes de trabalho com base no estado, função, tipo ou projeto."
mcp_server:
description: "Integre agentes de IA à sua instância do OpenProject por meio do MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ pt-PT:
title: "Select projects"
mcp_configurations:
index:
description: "O protocolo de contexto do modelo permite que os agentes de IA forneçam aos seus utilizadores ferramentas e recursos expostos por esta instância do OpenProject."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Recursos"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Atualizar recursos"
@@ -595,6 +595,10 @@ pt-PT:
danger_dialog:
confirmation_live_message_checked: "O botão para prosseguir está agora ativo."
confirmation_live_message_unchecked: "O botão para prosseguir está agora inativo. Tem de assinalar a caixa de verificação para continuar."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "ou"
errors:
@@ -2670,7 +2674,7 @@ pt-PT:
edit_attribute_groups: Editar grupos de atributos
gantt_pdf_export: Exportação de PDF de Gantt
ldap_groups: Sincronização de utilizadores e grupos LDAP
mcp_server: Servidor MCP
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Início de sessão único para armazenamento Nextcloud
one_drive_sharepoint_file_storage: Armazenamento de ficheiros no OneDrive/SharePoint
@@ -2749,7 +2753,7 @@ pt-PT:
title: "Ações personalizadas"
description: "As ações personalizadas são atalhos de um clique para um conjunto de ações predefinidas que pode disponibilizar em determinados pacotes de trabalho com base no estado, função, tipo ou projeto."
mcp_server:
description: "Integre agentes de IA com a sua instância do OpenProject através de MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -292,7 +292,7 @@ ro:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -603,6 +603,10 @@ ro:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "sau"
errors:
@@ -2728,7 +2732,7 @@ ro:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2807,7 +2811,7 @@ ro:
title: "Acțiuni personalizate"
description: "Acțiunile personalizate sunt comenzi rapide cu un singur clic către un set de acțiuni predefinite pe care le puteți face disponibile pentru anumite pachete de lucru în funcție de statut, rol, tip sau proiect."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -298,7 +298,7 @@ ru:
title: "Select projects"
mcp_configurations:
index:
description: "Протокол модели контекста позволяет агентам ИИ предоставлять своим пользователям инструменты и ресурсы, открытые данным экземпляром OpenProject."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Ресурсы"
resources_description: "OpenProject реализует следующие ресурсы. Каждый из них может быть включен, переименован и описан по Вашему желанию. Для получения дополнительной информации обратитесь к [документации по ресурсам MCP](docs_url)."
resources_submit: "Обновить ресурсы"
@@ -608,6 +608,10 @@ ru:
danger_dialog:
confirmation_live_message_checked: "Кнопка для продолжения активна."
confirmation_live_message_unchecked: "Кнопка для продолжения неактивна. Чтобы продолжить, поставьте галочку."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "или"
errors:
@@ -2781,7 +2785,7 @@ ru:
edit_attribute_groups: Редактирование атрибутов групп
gantt_pdf_export: Экспорт диаграммы Ганта в PDF
ldap_groups: Синхронизация пользователей LDAP и групп
mcp_server: MCP-сервер
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Единый вход для Nextcloud хранения
one_drive_sharepoint_file_storage: Файловое хранилище OneDrive/SharePoint
@@ -2860,7 +2864,7 @@ ru:
title: "Пользовательские действия"
description: "Пользовательские действия являются ярлыками к набору заранее определенных действий, которые вы можете сделать доступными для определенных пакетов работ на основе статуса, роли, типа или проекта."
mcp_server:
description: "Интегрируйте агентов искусственного интеллекта в Ваш OpenProject с помощью MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ rw:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ rw:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2673,7 +2677,7 @@ rw:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ rw:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ si:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ si:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "හෝ"
errors:
@@ -2673,7 +2677,7 @@ si:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ si:
title: "අභිරුචි ක්‍රියාමාර්ග"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -298,7 +298,7 @@ sk:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -609,6 +609,10 @@ sk:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "alebo"
errors:
@@ -2783,7 +2787,7 @@ sk:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2862,7 +2866,7 @@ sk:
title: "Vlastné akcie"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -298,7 +298,7 @@ sl:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -608,6 +608,10 @@ sl:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "ali"
errors:
@@ -2782,7 +2786,7 @@ sl:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2861,7 +2865,7 @@ sl:
title: "Dejanja po meri"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -292,7 +292,7 @@ sr:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -603,6 +603,10 @@ sr:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2728,7 +2732,7 @@ sr:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2807,7 +2811,7 @@ sr:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ sv:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ sv:
danger_dialog:
confirmation_live_message_checked: "Knappen för att fortsätta är nu aktiv."
confirmation_live_message_unchecked: "Knappen för att fortsätta är nu inaktiv. Du måste markera kryssrutan för att fortsätta."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "eller"
errors:
@@ -2673,7 +2677,7 @@ sv:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ sv:
title: "Anpassade åtgärder"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -280,7 +280,7 @@ th:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -591,6 +591,10 @@ th:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2618,7 +2622,7 @@ th:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2697,7 +2701,7 @@ th:
title: "การกระทำ กำหนดเอง"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ tr:
title: "Select projects"
mcp_configurations:
index:
description: "MCP (Model Bağlam Protokolü), AI ajanlarının bu OpenProject sisteminde sunulan araç ve kaynakları kullanıcılara erişilebilir kılmasını sağlar."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Kaynaklar"
resources_description: "OpenProject aşağıdaki araçları destekler. Her biri etkinleştirilebilir, adı ve açıklaması değiştirilebilir. Daha fazla bilgi için [documentation on MCP tools](docs_url)."
resources_submit: "Kaynakları güncelle"
@@ -598,6 +598,10 @@ tr:
danger_dialog:
confirmation_live_message_checked: "Devam etmek için düğme artık aktif."
confirmation_live_message_unchecked: "Devam etmek için düğme artık aktif değil. Devam etmek için işratlemeniz gerekli."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "ya da"
errors:
@@ -2673,7 +2677,7 @@ tr:
edit_attribute_groups: Özellik Grubunu Düzenleme
gantt_pdf_export: Gantt PDF Dışa Aktarma
ldap_groups: LDAP kullanıcıları ve grup senkronizasyonu
mcp_server:
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Nextcloud Storage için Tek Oturum Açma
one_drive_sharepoint_file_storage: OneDrive/SharePoint Dosya Depolama
@@ -2752,7 +2756,7 @@ tr:
title: "Özel eylemler"
description: "Özel eylemler, duruma, role, türe veya projeye göre belirli iş paketlerinde kullanıma sunabileceğiniz bir dizi önceden tanımlanmış eylemin tek tıkla kısayollarıdır."
mcp_server:
description: "Yapay zeka aracılarını MCP aracılığıyla OpenProject örneğinizle entegre edin."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -298,7 +298,7 @@ uk:
title: "Select projects"
mcp_configurations:
index:
description: "Протокол контексту моделі дає змогу агентам ШІ надавати своїм користувачам інструменти й ресурси, доступні в цьому екземплярі OpenProject."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Ресурси"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Оновити ресурси"
@@ -606,6 +606,10 @@ uk:
danger_dialog:
confirmation_live_message_checked: "Кнопка для продовження активна."
confirmation_live_message_unchecked: "Кнопка для продовження зараз неактивна. Щоб продовжити, поставте прапорець."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "або"
errors:
@@ -2777,7 +2781,7 @@ uk:
edit_attribute_groups: Редагування груп атрибутів
gantt_pdf_export: Експорт діаграми Ґантта в PDF
ldap_groups: Синхронізація користувачів і груп LDAP
mcp_server: Сервер MCP
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Єдиний вхід для сховища Nextcloud
one_drive_sharepoint_file_storage: Сховище файлів OneDrive / SharePoint
@@ -2856,7 +2860,7 @@ uk:
title: "Користувацькі дії"
description: "Користувацькі дії – це ярлики набору попередньо визначених дій, які ви можете включати в певні пакети робіт залежно від статусу, ролі, типу або проєкту."
mcp_server:
description: "Інтегруйте ШІ-агентів у свій екземпляр OpenProject за допомогою MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -286,7 +286,7 @@ uz:
title: "Select projects"
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -597,6 +597,10 @@ uz:
danger_dialog:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2673,7 +2677,7 @@ uz:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2752,7 +2756,7 @@ uz:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -280,7 +280,7 @@ vi:
title: "Select projects"
mcp_configurations:
index:
description: "Giao thức bối cảnh mô hình cho phép các tác nhân AI cung cấp cho người dùng của mình các công cụ và tài nguyên được cung cấp bởi phiên bản OpenProject này."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Tài nguyên"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Cập nhật tài nguyên"
@@ -591,6 +591,10 @@ vi:
danger_dialog:
confirmation_live_message_checked: "Nút để tiếp tục hiện đang hoạt động."
confirmation_live_message_unchecked: "Nút để tiếp tục hiện không hoạt động. Bạn cần đánh dấu vào hộp kiểm để tiếp tục."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "hoặc"
errors:
@@ -2616,7 +2620,7 @@ vi:
edit_attribute_groups: Chỉnh sửa nhóm thuộc tính
gantt_pdf_export: Xuất PDF Gantt
ldap_groups: Đồng bộ hóa nhóm và người dùng LDAP
mcp_server: Máy chủ MCP
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Đăng nhập một lần để lưu trữ Nextcloud
one_drive_sharepoint_file_storage: Lưu trữ tệp OneDrive/SharePoint
@@ -2695,7 +2699,7 @@ vi:
title: "Hành động tùy chỉnh"
description: "Hành động tùy chỉnh là các phím tắt bằng một cú nhấp chuột tới một tập hợp các hành động được xác định trước mà bạn có thể cung cấp trên các gói công việc nhất định dựa trên trạng thái, vai trò, loại hoặc dự án."
mcp_server:
description: "Tích hợp các tác nhân AI với phiên bản OpenProject của bạn thông qua MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -280,7 +280,7 @@ zh-CN:
title: "Select projects"
mcp_configurations:
index:
description: "Model Context Protocol 允许 AI 智能体向其用户提供此 OpenProject 实例所公开的工具和资源。"
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "资源"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "更新资源"
@@ -588,6 +588,10 @@ zh-CN:
danger_dialog:
confirmation_live_message_checked: "继续按钮现已激活。"
confirmation_live_message_unchecked: "继续按钮现已失效。您需要勾选复选框才能继续。"
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "或"
errors:
@@ -2614,7 +2618,7 @@ zh-CN:
edit_attribute_groups: 编辑属性组
gantt_pdf_export: 甘特图 PDF 导出
ldap_groups: LDAP 用户和群组同步
mcp_server: MCP 服务器
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Nextcloud存储的单点登录(SSO)
one_drive_sharepoint_file_storage: OneDrive/SharePoint 文件存储
@@ -2693,7 +2697,7 @@ zh-CN:
title: "自定义操作"
description: "自定义操作是一键快捷方式,指向一组预定义的操作,您可以根据状态、角色、类型或项目在某些工作包上使用这些操作。"
mcp_server:
description: "通过 MCP 将 AI 智能体与 OpenProject 实例集成。"
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+7 -3
View File
@@ -280,7 +280,7 @@ zh-TW:
title: "Select projects"
mcp_configurations:
index:
description: "模型上下文協定允許 AI 代理向其使用者提供此 OpenProject 實體所揭露的工具與資源。"
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "資源"
resources_description: "OpenProject 實作下列資源。每個資源都可以依您的需求啟用、重新命名及描述。如需詳細資訊,請參閱 [關於 MCP 資源的文件](docs_url)。"
resources_submit: "更新資源"
@@ -590,6 +590,10 @@ zh-TW:
danger_dialog:
confirmation_live_message_checked: "繼續的按鈕現已啟用。"
confirmation_live_message_unchecked: "繼續的按鈕現在沒有作用。您需要勾選核取方塊才能繼續。"
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "或"
errors:
@@ -2614,7 +2618,7 @@ zh-TW:
edit_attribute_groups: 編輯群組屬性
gantt_pdf_export: 以PDF匯出甘特圖
ldap_groups: 同步LDAP使用者與群組
mcp_server: MCP 伺服器
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Nextcloud 儲存空間的單一登入(SSO)
one_drive_sharepoint_file_storage: OneDrive/SharePoint 檔案儲存
@@ -2693,7 +2697,7 @@ zh-TW:
title: "自訂動作"
description: "自訂動作是一系列預先定義動作的單鍵捷徑,您可以根據狀態、角色、類型或專案,在特定工作套件上使用這些動作。"
mcp_server:
description: "透過 MCP 將 AI 代理與您的 OpenProject 實例整合。"
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
+8 -3
View File
@@ -296,7 +296,7 @@ en:
mcp_configurations:
index:
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance."
description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta."
resources_heading: "Resources"
resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)."
resources_submit: "Update resources"
@@ -635,6 +635,11 @@ en:
confirmation_live_message_checked: "The button to proceed is now active."
confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue."
mcp_configurations:
server_url_component:
caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients."
label: "Server URL"
op_dry_validation:
or: "or"
errors:
@@ -2800,7 +2805,7 @@ en:
edit_attribute_groups: Edit Attribute Groups
gantt_pdf_export: Gantt PDF Export
ldap_groups: LDAP users and group sync
mcp_server: MCP Server
mcp_server: Model Context Protocol (MCP)
meeting_templates: Reusable meeting templates
nextcloud_sso: Single Sign-On for Nextcloud Storage
one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage
@@ -2880,7 +2885,7 @@ en:
title: "Custom actions"
description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project."
mcp_server:
description: "Integrate AI agents with your OpenProject instance through MCP."
description: "Bring OpenProject into your AI workflows with a secure MCP server."
meeting_templates:
description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings."
nextcloud_sso:
@@ -54,6 +54,13 @@ properties:
Whether the storage has the application password to use for the Nextcloud storage.
Ignored if the provider type is not Nextcloud.
forbiddenFileNameCharacters:
type: string
description: |-
A string with all the characters forbidden to be used for file and folder names in the storage. Used by OpenProject to avoid
creating files with unsupported names (e.g. when creating project folders).
Only supported for provider type Nextcloud so far.
createdAt:
type: string
format: date-time
@@ -29,6 +29,13 @@ properties:
If a string is provided, the password is set and automatic management is enabled for the storage.
If null is provided, the password is unset and automatic management is disabled for the storage.
forbiddenFileNameCharacters:
type: string
description: |-
A string with all the characters forbidden to be used for file and folder names in the storage. Used by OpenProject to avoid
creating files with unsupported names (e.g. when creating project folders).
Only supported for provider type Nextcloud so far.
_links:
type: object
required:
@@ -18,22 +18,30 @@ OpenProject allows AI agents and similar tools to integrate through an API calle
This allows these agents to access information from your OpenProject instance into their responses. Right now OpenProject only offers
read-only tools, tools to manipulate data might be added in the future.
## Configuring authentication
## Configuration
In your MCP client, you have to configure the endpoint of the OpenProject MCP server, which is available under `/mcp`, so for example:
```
https://your-openproject.example.com/mcp
```
### Authentication
Authentication with MCP can happen in the ways that authentication for regular API endpoints can happen as well. The two distinct
use cases for authentication are authentication for a single user via personal API tokens or authentication for different users
sharing the same (web) application through OAuth.
### Personal access with API tokens
#### Personal access with API tokens
This way of authentication requires no further setup on the administration side of OpenProject.
The only requirement is that the ["Enable REST web service"](../../api-and-webhooks/) setting is enabled.
The only requirement is that the ["Enable API tokens"](../../api-and-webhooks/) setting is enabled.
Afterwards users that want to make use of MCP on a personal basis, can create a personal API token and configure an MCP client with that
token. However, this only works properly with locally running MCP clients that are only used by a single user and it requires the user
to configure the MCP endpoint themselves.
### Shared access via OAuth
#### Shared access via OAuth
If multiple users shall be able to use information from the same OpenProject instance and when using web-based MCP clients, the typical
configuration will involve an admin setting up the MCP client and OpenProject once, so that regular users can then utilize the
@@ -47,8 +55,33 @@ by OpenProject already, namely:
In case OpenProject is used as the authentication provider, the configuration for the client has to be prepared by the administrator.
Go to *Administration -> Authentication -> OAuth applications* and create an application with the `mcp` scope, entering
the "Redirect URI" according to the instructions of your MCP client. Make sure that the application is marked as confidential.
the "Redirect URI" according to the instructions of your MCP client.
## Customization
> [!IMPORTANT]
>
> Make sure that the application is marked as confidential.
TODO: What can be customized in the Admin UI
![Create new OAuth application for an MCP server in OpenProject administration](openproject_system_guide_new_oauth_mcp.png)
### Customization
You can customize the MCP server further under *Administration -> Artificial Intelligence (AI) -> Model Context Protocol (MCP)*.
Here you can enable or disable the entire MCP server and change the MCP server titles and descriptions indicated towards MCP clients. If you think that your MCP client is passing duplicated information to the language model, you can also change the response format, though for most purposes the default should work well.
The available response format options are:
- **Full**: The most compatible option. Tool responses will include both regular and structured content, allowing MCP clients to choose which format they want to read. This may increase the number of tokens that the language model has to process, potentially increasing cost and decreasing performance.
- **Structured content only**: Choose this if you are certain that MCP clients connecting to this instance support structured content. Tool responses will only include structured content and leave out its text representation.
- **Content only**: Choose this if MCP clients connecting to this instance do not support structured content. Tool responses will only contain plain text content and leave out the structured version.
![Model context protocol (MCP) settings under OpenProject administration](openproject_system_guide_new_mcp.png)
You can also disable individual tools and resources provided via MCP. This can be useful if you want to introduce alternative naming for certain entities or limit available functionality.
For example if work packages are called "work items" in your day-to-day language, it can be helpful to rename *Search work packages* to *Search work items*, so that users interacting with the MCP client understand what a tool does and the language model has an additional cue that there is an alias for "work packages".
![MCP tools section settings in OpenProject administration](openproject_system_guide_new_mcp_tools.png)
Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

@@ -33,7 +33,7 @@ module Overviews
extend Dry::Initializer
include ApplicationHelper
include ProjectHelper
include ProjectsHelper
include Redmine::I18n
option :project
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
@@ -39,7 +39,7 @@ module Storages
end
def name
"#{@project.name.tr('/', '|')} (#{@project.id})"
"#{filter_restricted_characters(@project.name)} (#{@project.id})"
end
def path
@@ -49,6 +49,18 @@ module Storages
def location
path
end
private
def filter_restricted_characters(name)
# slashes have historically always been replaced with |
# hardcoding slash and backslash instead of making them configurable also prevents project names to be usable
# for directory-escape attempts (e.g. "../project name")
name = name.tr("/\\", "|")
# other forbidden characters are replaced with _, consistent with other storages
name.tr(@storage.forbidden_file_name_characters, "_")
end
end
end
end
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
@@ -50,6 +50,10 @@ module Storages
store_attribute :provider_fields, :storage_audience, :string
store_attribute :provider_fields, :token_exchange_scope, :string
# Default has been chosen to maximize compatibility with Windows-based Nextcloud clients
# also see https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions
store_attribute :provider_fields, :forbidden_file_name_characters, :string, default: "<>:\"\\/|?*"
def self.short_provider_name = :nextcloud
def self.non_confidential_provider_fields
@@ -0,0 +1,46 @@
# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
class SetNextcloudDefaultProhibitedCharacters < ActiveRecord::Migration[8.0]
disable_ddl_transaction!
def up
execute <<~SQL.squish
UPDATE storages
SET provider_fields = provider_fields || '{ "forbidden_file_name_characters": "<>:\\"\\\\/|?*" }'::jsonb
WHERE provider_type = 'Storages::NextcloudStorage' AND NOT provider_fields ? 'forbidden_file_name_characters'
SQL
end
def down
# we'll not delete any JSONB data on rollback
# though there's also no need to artificially block rollbacks past this version
end
end
@@ -140,6 +140,13 @@ module API::V3::Storages
end,
setter: ->(*) {}
property :forbiddenFileNameCharacters,
skip_render: ->(represented:, **) { !represented.provider_type_nextcloud? },
getter: ->(represented:, **) do
represented.forbidden_file_name_characters if represented.provider_type_nextcloud?
end,
setter: ->(fragment:, represented:, **) { represented.forbidden_file_name_characters = fragment }
date_time_property :created_at
date_time_property :updated_at
@@ -0,0 +1,82 @@
# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
require "spec_helper"
RSpec.describe Storages::Adapters::Providers::Nextcloud::ManagedFolderIdentifier do
let(:managed_folder_identifier) { described_class.new(project_storage) }
let(:project_storage) { create(:project_storage, project:, storage:) }
let(:project) { create(:project, name: project_name) }
let(:project_name) { "My great Demo project" }
let(:storage) { create(:nextcloud_storage) }
describe "#path" do
subject { managed_folder_identifier.path }
it { is_expected.to eq("/OpenProject/My great Demo project (#{project.id})/") }
context "when the project name contains a slash" do
let(:project_name) { "My great/awesome project" }
it { is_expected.to eq("/OpenProject/My great|awesome project (#{project.id})/") }
context "when the pipe character is prohibited by the storage" do
let(:storage) { create(:nextcloud_storage, forbidden_file_name_characters: "|") }
it { is_expected.to eq("/OpenProject/My great_awesome project (#{project.id})/") }
end
end
context "when the project name contains a backslash" do
let(:project_name) { "My great\\awesome project" }
it { is_expected.to eq("/OpenProject/My great|awesome project (#{project.id})/") }
context "when the pipe character is prohibited by the storage" do
let(:storage) { create(:nextcloud_storage, forbidden_file_name_characters: "|") }
it { is_expected.to eq("/OpenProject/My great_awesome project (#{project.id})/") }
end
end
context "when the project name contains special characters" do
let(:project_name) { "My $pecia| project: The ☃" }
it { is_expected.to eq("/OpenProject/My $pecia| project: The ☃ (#{project.id})/") }
context "and when certain characters are prohibited by the storage" do
let(:storage) { create(:nextcloud_storage, forbidden_file_name_characters: "$:") }
it { is_expected.to eq("/OpenProject/My _pecia| project_ The ☃ (#{project.id})/") }
end
end
end
end
@@ -93,6 +93,7 @@ FactoryBot.define do
sequence(:host) { |n| "https://host#{n}.example.com/" }
authentication_method { "two_way_oauth2" }
storage_audience { nil }
forbidden_file_name_characters { "" }
trait :with_oauth_configured do
after(:create) do |storage, _evaluator|
@@ -227,11 +227,19 @@ RSpec.describe API::V3::Storages::StorageRepresenter, "rendering" do
let(:oauth_application) { build_stubbed(:oauth_application) }
let(:storage) { build_stubbed(:nextcloud_storage, oauth_application:, oauth_client: oauth_client_credentials) }
it "fulfills the documented schema" do
expect(generated).to match_json_schema.from_docs("storage_read_model")
end
it_behaves_like "common file storage properties"
context "if file storage is not completely configured" do
let(:storage) { build_stubbed(:nextcloud_storage, oauth_client: nil) }
it "fulfills the documented schema" do
expect(generated).to match_json_schema.from_docs("storage_read_model")
end
it_behaves_like "property", :configured do
let(:value) { false }
end
@@ -357,11 +365,19 @@ RSpec.describe API::V3::Storages::StorageRepresenter, "rendering" do
context "if file storage has provider type OneDrive" do
let(:storage) { build_stubbed(:one_drive_storage, oauth_client: oauth_client_credentials) }
it "fulfills the documented schema" do
expect(generated).to match_json_schema.from_docs("storage_read_model")
end
it_behaves_like "common file storage properties"
context "if file storage is not completely configured" do
let(:storage) { build_stubbed(:one_drive_storage, drive_id: nil, oauth_client: oauth_client_credentials) }
it "fulfills the documented schema" do
expect(generated).to match_json_schema.from_docs("storage_read_model")
end
it_behaves_like "property", :configured do
let(:value) { false }
end
@@ -32,7 +32,7 @@ require "rails_helper"
RSpec.describe Projects::CreationWizardStatusComponent, type: :component do
include ApplicationHelper
include ProjectHelper
include ProjectsHelper
include Rails.application.routes.url_helpers
let(:current_user) { build_stubbed(:user) }
@@ -37,7 +37,9 @@ RSpec.describe "Persisted lists on projects index page",
shared_let(:user) { create(:user) }
shared_let(:manager) { create(:project_role, name: "Manager") }
shared_let(:developer) { create(:project_role, name: "Developer") }
# The permission is not necessary for any of the tests. But it enables one more code path
# where a regression occured before (#72362).
shared_let(:developer) { create(:project_role, name: "Developer", permissions: %i(export_projects)) }
shared_let(:custom_field) { create(:text_project_custom_field) }
shared_let(:invisible_custom_field) { create(:project_custom_field, admin_only: true) }
Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

+7
View File
@@ -99,4 +99,11 @@ RSpec.describe ProjectsHelper do
])
end
end
describe "#supported_export_formats" do
it "returns the supported export formats" do
expect(helper.supported_export_formats)
.to match_array(%w[xls csv pdf])
end
end
end
@@ -0,0 +1,443 @@
# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
require "spec_helper"
RSpec.describe Exports::PDF::Common::Attachments do
let(:helper) do
obj = Object.new
obj.extend(described_class)
# api_url_helpers is defined in Exports::PDF::Common::Common, not in
# Attachments. Provide a minimal implementation so the module methods work.
obj.define_singleton_method(:api_url_helpers) { API::V3::Utilities::PathHelper::ApiV3Path }
obj
end
describe "#pdf_embeddable?" do
%w[image/jpeg image/png image/gif image/webp].each do |type|
it "returns true for #{type}" do
expect(helper.pdf_embeddable?(type)).to be true
end
end
%w[application/pdf text/plain image/svg+xml application/binary].each do |type|
it "returns false for #{type}" do
expect(helper.pdf_embeddable?(type)).to be false
end
end
end
describe "#temp_image_file" do
after { helper.delete_all_resized_images }
it "returns a string path ending with the given extension" do
path = helper.temp_image_file(".png")
expect(path).to end_with(".png")
end
it "registers the temp file so delete_all_resized_images can clean it up" do
helper.temp_image_file(".png")
expect { helper.delete_all_resized_images }.not_to raise_error
end
it "accumulates multiple temp files" do
helper.temp_image_file(".png")
helper.temp_image_file(".jpg")
expect { helper.delete_all_resized_images }.not_to raise_error
end
end
describe "#delete_all_resized_images" do
it "does not raise when no images have been created yet" do
expect { helper.delete_all_resized_images }.not_to raise_error
end
it "calls close! on each registered temp file" do
tmp1 = instance_double(Tempfile)
tmp2 = instance_double(Tempfile)
allow(tmp1).to receive(:close!)
allow(tmp2).to receive(:close!)
helper.instance_variable_set(:@resized_images, [tmp1, tmp2])
helper.delete_all_resized_images
expect(tmp1).to have_received(:close!)
expect(tmp2).to have_received(:close!)
end
it "resets the list to an empty array" do
tmp = instance_double(Tempfile)
allow(tmp).to receive(:close!)
helper.instance_variable_set(:@resized_images, [tmp])
helper.delete_all_resized_images
expect(helper.instance_variable_get(:@resized_images)).to eq([])
end
end
describe "#resize_image" do
let(:png_fixture) { Rails.root.join("spec/fixtures/files/image.png").to_s }
after { helper.delete_all_resized_images }
it "returns a path string" do
result = helper.resize_image(png_fixture)
expect(result).to be_a(String)
end
it "writes the resized image to the returned path" do
result = helper.resize_image(png_fixture)
expect(File.exist?(result)).to be true
expect(File.size(result)).to be > 0
end
it "writes a file with image/png MIME type" do
result = helper.resize_image(png_fixture)
expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/png")
end
end
describe "#convert_gif_to_png" do
# Use the PNG fixture as a stand-in; MiniMagick handles it fine.
let(:source_fixture) { Rails.root.join("spec/fixtures/files/image.png").to_s }
after { helper.delete_all_resized_images }
it "returns a path ending with .png" do
result = helper.convert_gif_to_png(source_fixture)
expect(result).to end_with(".png")
end
it "writes a non-empty file to the returned path" do
result = helper.convert_gif_to_png(source_fixture)
expect(File.exist?(result)).to be true
expect(File.size(result)).to be > 0
end
it "writes a file with image/png MIME type" do
result = helper.convert_gif_to_png(source_fixture)
expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/png")
end
end
describe "#convert_webp_to_png" do
let(:webp_fixture) { Rails.root.join("spec/fixtures/files/image.webp").to_s }
after { helper.delete_all_resized_images }
it "returns a path ending with .png" do
result = helper.convert_webp_to_png(webp_fixture)
expect(result).to end_with(".png")
end
it "writes a non-empty PNG file" do
result = helper.convert_webp_to_png(webp_fixture)
expect(File.exist?(result)).to be true
expect(File.size(result)).to be > 0
end
it "writes a file with image/png MIME type" do
result = helper.convert_webp_to_png(webp_fixture)
expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/png")
end
it "falls back to the source file when extract_first_webp_frame returns nil" do
allow(helper).to receive(:extract_first_webp_frame).and_return(nil)
result = helper.convert_webp_to_png(webp_fixture)
expect(result).to end_with(".png")
expect(File.exist?(result)).to be true
expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/png")
end
end
describe "#attachment_image_local_file" do
let(:attachment) { instance_double(Attachment, id: 42) }
let(:file_uploader) { instance_double(LocalFileUploader) }
let(:local_file) { instance_double(File, path: "/some/path/image.png") }
context "when the file is accessible" do
before do
allow(attachment).to receive(:file).and_return(file_uploader)
allow(file_uploader).to receive(:local_file).and_return(local_file)
end
it "returns the local file object" do
expect(helper.attachment_image_local_file(attachment)).to eq(local_file)
end
end
context "when accessing the file raises an error" do
before do
allow(attachment).to receive(:file).and_return(file_uploader)
allow(file_uploader).to receive(:local_file).and_raise(StandardError, "disk error")
allow(Rails.logger).to receive(:error)
end
it "returns nil" do
expect(helper.attachment_image_local_file(attachment)).to be_nil
end
it "logs the error including the attachment id" do
helper.attachment_image_local_file(attachment)
expect(Rails.logger).to have_received(:error).with(/42/)
end
end
end
describe "#attachment_by_api_content_src" do
# api_url_helpers returns the ApiV3Path class; stub root_path on the class itself.
before do
allow(API::V3::Utilities::PathHelper::ApiV3Path).to receive(:root_path).and_return("/")
end
it "returns nil for an empty src" do
expect(helper.attachment_by_api_content_src("")).to be_nil
end
it "returns nil when src does not start with root_path" do
expect(helper.attachment_by_api_content_src("https://evil.example.com/attachments/1/file.png")).to be_nil
end
it "returns nil when src does not contain the attachments pattern" do
expect(helper.attachment_by_api_content_src("/api/v3/some_other_path")).to be_nil
end
context "when src matches a valid attachment path" do
let(:attachment) { instance_double(Attachment, id: 7) }
before { allow(Attachment).to receive(:find_by).with(id: 7).and_return(attachment) }
context "when the attachment is visible" do
before { allow(attachment).to receive(:visible?).and_return(true) }
it "returns the attachment for the api/v3 path" do
result = helper.attachment_by_api_content_src("/api/v3/attachments/7/content")
expect(result).to eq(attachment)
end
it "returns the attachment for the drag-and-drop path format" do
result = helper.attachment_by_api_content_src("/attachments/7/filename.ext")
expect(result).to eq(attachment)
end
end
context "when the attachment is not visible" do
before { allow(attachment).to receive(:visible?).and_return(false) }
it "returns nil" do
result = helper.attachment_by_api_content_src("/api/v3/attachments/7/content")
expect(result).to be_nil
end
end
end
context "when no attachment with that id exists" do
before { allow(Attachment).to receive(:find_by).and_return(nil) }
it "returns nil" do
expect(helper.attachment_by_api_content_src("/attachments/999/file.png")).to be_nil
end
end
context "when an unexpected error is raised" do
before do
allow(Attachment).to receive(:find_by).and_raise(StandardError, "db error")
allow(Rails.logger).to receive(:error)
end
it "returns nil" do
expect(helper.attachment_by_api_content_src("/attachments/1/file.png")).to be_nil
end
it "logs the error" do
helper.attachment_by_api_content_src("/attachments/1/file.png")
expect(Rails.logger).to have_received(:error)
end
end
end
describe "#attachment_image_filepath" do
let(:src) { "/api/v3/attachments/1/content" }
let(:attachment) { instance_double(Attachment, id: 1, content_type: "image/jpeg") }
let(:local_file) { instance_double(File, path: "/tmp/image.jpg") }
before do
allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(attachment)
allow(helper).to receive(:pdf_embeddable?).with("image/jpeg").and_return(true)
allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(local_file)
allow(helper).to receive(:resize_image).with("/tmp/image.jpg").and_return("/tmp/resized.jpg")
end
it "returns a resized image path for a jpeg" do
expect(helper.attachment_image_filepath(src)).to eq("/tmp/resized.jpg")
end
context "when attachment is nil" do
before { allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(nil) }
it "returns nil" do
expect(helper.attachment_image_filepath(src)).to be_nil
end
end
context "when content_type is not embeddable" do
before { allow(helper).to receive(:pdf_embeddable?).with("image/jpeg").and_return(false) }
it "returns nil" do
expect(helper.attachment_image_filepath(src)).to be_nil
end
end
context "when local_file is nil" do
before { allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(nil) }
it "returns nil" do
expect(helper.attachment_image_filepath(src)).to be_nil
end
end
context "when the attachment is a GIF" do
let(:attachment) { instance_double(Attachment, id: 1, content_type: "image/gif") }
let(:local_file) { instance_double(File, path: "/tmp/image.gif") }
before do
allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(attachment)
allow(helper).to receive(:pdf_embeddable?).with("image/gif").and_return(true)
allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(local_file)
allow(helper).to receive(:convert_gif_to_png).with("/tmp/image.gif").and_return("/tmp/converted.png")
allow(helper).to receive(:resize_image).with("/tmp/converted.png").and_return("/tmp/resized.png")
end
it "converts the GIF to PNG before resizing" do
result = helper.attachment_image_filepath(src)
expect(helper).to have_received(:convert_gif_to_png).with("/tmp/image.gif")
expect(result).to eq("/tmp/resized.png")
end
end
context "when the attachment is a WebP" do
let(:attachment) { instance_double(Attachment, id: 1, content_type: "image/webp") }
let(:local_file) { instance_double(File, path: "/tmp/image.webp") }
before do
allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(attachment)
allow(helper).to receive(:pdf_embeddable?).with("image/webp").and_return(true)
allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(local_file)
allow(helper).to receive(:convert_webp_to_png).with("/tmp/image.webp").and_return("/tmp/converted.png")
allow(helper).to receive(:resize_image).with("/tmp/converted.png").and_return("/tmp/resized.png")
end
it "converts the WebP to PNG before resizing" do
result = helper.attachment_image_filepath(src)
expect(helper).to have_received(:convert_webp_to_png).with("/tmp/image.webp")
expect(result).to eq("/tmp/resized.png")
end
end
context "when gif conversion returns nil" do
let(:attachment) { instance_double(Attachment, id: 1, content_type: "image/gif") }
let(:local_file) { instance_double(File, path: "/tmp/image.gif") }
before do
allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(attachment)
allow(helper).to receive(:pdf_embeddable?).with("image/gif").and_return(true)
allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(local_file)
allow(helper).to receive(:convert_gif_to_png).with("/tmp/image.gif").and_return(nil)
end
it "returns nil" do
expect(helper.attachment_image_filepath(src)).to be_nil
end
end
end
describe "#extract_first_webp_frame" do
let(:animated_webp) { Rails.root.join("spec/fixtures/files/animated.webp").to_s }
let(:static_webp) { Rails.root.join("spec/fixtures/files/image.webp").to_s }
let(:non_webp) { Rails.root.join("spec/fixtures/files/image.png").to_s }
after { helper.delete_all_resized_images }
context "with an animated WebP" do
it "returns a non-nil path" do
expect(helper.extract_first_webp_frame(animated_webp)).not_to be_nil
end
it "returns a path to an existing file" do
result = helper.extract_first_webp_frame(animated_webp)
expect(File.exist?(result)).to be true
end
it "returns a file with image/webp MIME type" do
result = helper.extract_first_webp_frame(animated_webp)
expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/webp")
end
it "returns a single-frame WebP" do
result = helper.extract_first_webp_frame(animated_webp)
expect(MiniMagick::Image.open(result).frames.count).to eq(1)
end
it "returns a file with a valid RIFF/WEBP container header" do
result = helper.extract_first_webp_frame(animated_webp)
data = File.binread(result)
expect(data[0, 4]).to eq("RIFF".b)
expect(data[8, 4]).to eq("WEBP".b)
end
end
context "with a static (non-animated) WebP" do
it "returns nil" do
expect(helper.extract_first_webp_frame(static_webp)).to be_nil
end
end
context "with a non-WebP file" do
it "returns nil" do
expect(helper.extract_first_webp_frame(non_webp)).to be_nil
end
end
context "when an error is raised while reading the file" do
before do
allow(File).to receive(:binread).and_raise(StandardError, "read error")
allow(Rails.logger).to receive(:error)
end
it "returns nil" do
expect(helper.extract_first_webp_frame(animated_webp)).to be_nil
end
it "logs the error" do
helper.extract_first_webp_frame(animated_webp)
expect(Rails.logger).to have_received(:error).with(/read error/)
end
end
end
end
@@ -34,7 +34,7 @@ require_relative "../../projects/exporter/exportable_project_context"
RSpec.describe Project::PDFExport::ProjectInitiation do
include PDFExportSpecUtils
include ProjectHelper
include ProjectsHelper
include Redmine::I18n
include_context "with a project with an arrangement of custom fields"