diff --git a/api/core/helper/code_executor/javascript/javascript_transformer.py b/api/core/helper/code_executor/javascript/javascript_transformer.py index 62489cdf29..e28f027a3a 100644 --- a/api/core/helper/code_executor/javascript/javascript_transformer.py +++ b/api/core/helper/code_executor/javascript/javascript_transformer.py @@ -6,10 +6,7 @@ from core.helper.code_executor.template_transformer import TemplateTransformer class NodeJsTemplateTransformer(TemplateTransformer): @classmethod def get_runner_script(cls) -> str: - runner_script = dedent( - f""" - // declare main function - {cls._code_placeholder} + runner_script = dedent(f""" {cls._code_placeholder} // decode and prepare input object var inputs_obj = JSON.parse(Buffer.from('{cls._inputs_placeholder}', 'base64').toString('utf-8')) @@ -21,6 +18,5 @@ class NodeJsTemplateTransformer(TemplateTransformer): var output_json = JSON.stringify(output_obj) var result = `<>${{output_json}}<>` console.log(result) - """ - ) + """) return runner_script diff --git a/api/core/helper/code_executor/python3/python3_transformer.py b/api/core/helper/code_executor/python3/python3_transformer.py index 836fd273ae..ee866eeb81 100644 --- a/api/core/helper/code_executor/python3/python3_transformer.py +++ b/api/core/helper/code_executor/python3/python3_transformer.py @@ -6,9 +6,7 @@ from core.helper.code_executor.template_transformer import TemplateTransformer class Python3TemplateTransformer(TemplateTransformer): @classmethod def get_runner_script(cls) -> str: - runner_script = dedent(f""" - # declare main function - {cls._code_placeholder} + runner_script = dedent(f""" {cls._code_placeholder} import json from base64 import b64decode diff --git a/api/tests/unit_tests/core/helper/code_executor/__init__.py b/api/tests/unit_tests/core/helper/code_executor/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/api/tests/unit_tests/core/helper/code_executor/javascript/__init__.py b/api/tests/unit_tests/core/helper/code_executor/javascript/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/api/tests/unit_tests/core/helper/code_executor/javascript/test_javascript_transformer.py b/api/tests/unit_tests/core/helper/code_executor/javascript/test_javascript_transformer.py new file mode 100644 index 0000000000..03f37756d7 --- /dev/null +++ b/api/tests/unit_tests/core/helper/code_executor/javascript/test_javascript_transformer.py @@ -0,0 +1,12 @@ +from core.helper.code_executor.javascript.javascript_code_provider import JavascriptCodeProvider +from core.helper.code_executor.javascript.javascript_transformer import NodeJsTemplateTransformer + + +def test_get_runner_script(): + code = JavascriptCodeProvider.get_default_code() + inputs = {"arg1": "hello, ", "arg2": "world!"} + script = NodeJsTemplateTransformer.assemble_runner_script(code, inputs) + script_lines = script.splitlines() + code_lines = code.splitlines() + # Check that the first lines of script are exactly the same as code + assert script_lines[: len(code_lines)] == code_lines diff --git a/api/tests/unit_tests/core/helper/code_executor/python3/__init__.py b/api/tests/unit_tests/core/helper/code_executor/python3/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/api/tests/unit_tests/core/helper/code_executor/python3/test_python3_transformer.py b/api/tests/unit_tests/core/helper/code_executor/python3/test_python3_transformer.py new file mode 100644 index 0000000000..1166cb8892 --- /dev/null +++ b/api/tests/unit_tests/core/helper/code_executor/python3/test_python3_transformer.py @@ -0,0 +1,12 @@ +from core.helper.code_executor.python3.python3_code_provider import Python3CodeProvider +from core.helper.code_executor.python3.python3_transformer import Python3TemplateTransformer + + +def test_get_runner_script(): + code = Python3CodeProvider.get_default_code() + inputs = {"arg1": "hello, ", "arg2": "world!"} + script = Python3TemplateTransformer.assemble_runner_script(code, inputs) + script_lines = script.splitlines() + code_lines = code.splitlines() + # Check that the first lines of script are exactly the same as code + assert script_lines[: len(code_lines)] == code_lines diff --git a/web/app/components/goto-anything/actions/commands/feedback.tsx b/web/app/components/goto-anything/actions/commands/forum.tsx similarity index 54% rename from web/app/components/goto-anything/actions/commands/feedback.tsx rename to web/app/components/goto-anything/actions/commands/forum.tsx index cce0aeb5f4..66237cb348 100644 --- a/web/app/components/goto-anything/actions/commands/feedback.tsx +++ b/web/app/components/goto-anything/actions/commands/forum.tsx @@ -4,27 +4,27 @@ import { RiFeedbackLine } from '@remixicon/react' import i18n from '@/i18n-config/i18next-config' import { registerCommands, unregisterCommands } from './command-bus' -// Feedback command dependency types -type FeedbackDeps = Record +// Forum command dependency types +type ForumDeps = Record /** - * Feedback command - Opens GitHub feedback discussions + * Forum command - Opens Dify community forum */ -export const feedbackCommand: SlashCommandHandler = { - name: 'feedback', - description: 'Open feedback discussions', +export const forumCommand: SlashCommandHandler = { + name: 'forum', + description: 'Open Dify community forum', mode: 'direct', // Direct execution function execute: () => { - const url = 'https://github.com/langgenius/dify/discussions/categories/feedbacks' + const url = 'https://forum.dify.ai' window.open(url, '_blank', 'noopener,noreferrer') }, async search(args: string, locale: string = 'en') { return [{ - id: 'feedback', - title: i18n.t('common.userProfile.communityFeedback', { lng: locale }), + id: 'forum', + title: i18n.t('common.userProfile.forum', { lng: locale }), description: i18n.t('app.gotoAnything.actions.feedbackDesc', { lng: locale }) || 'Open community feedback discussions', type: 'command' as const, icon: ( @@ -32,20 +32,20 @@ export const feedbackCommand: SlashCommandHandler = { ), - data: { command: 'navigation.feedback', args: { url: 'https://github.com/langgenius/dify/discussions/categories/feedbacks' } }, + data: { command: 'navigation.forum', args: { url: 'https://forum.dify.ai' } }, }] }, - register(_deps: FeedbackDeps) { + register(_deps: ForumDeps) { registerCommands({ - 'navigation.feedback': async (args) => { - const url = args?.url || 'https://github.com/langgenius/dify/discussions/categories/feedbacks' + 'navigation.forum': async (args) => { + const url = args?.url || 'https://forum.dify.ai' window.open(url, '_blank', 'noopener,noreferrer') }, }) }, unregister() { - unregisterCommands(['navigation.feedback']) + unregisterCommands(['navigation.forum']) }, } diff --git a/web/app/components/goto-anything/actions/commands/slash.tsx b/web/app/components/goto-anything/actions/commands/slash.tsx index e0d03d5019..b99215255f 100644 --- a/web/app/components/goto-anything/actions/commands/slash.tsx +++ b/web/app/components/goto-anything/actions/commands/slash.tsx @@ -7,7 +7,7 @@ import { useTheme } from 'next-themes' import { setLocaleOnClient } from '@/i18n-config' import { themeCommand } from './theme' import { languageCommand } from './language' -import { feedbackCommand } from './feedback' +import { forumCommand } from './forum' import { docsCommand } from './docs' import { communityCommand } from './community' import { accountCommand } from './account' @@ -34,7 +34,7 @@ export const registerSlashCommands = (deps: Record) => { // Register command handlers to the registry system with their respective dependencies slashCommandRegistry.register(themeCommand, { setTheme: deps.setTheme }) slashCommandRegistry.register(languageCommand, { setLocale: deps.setLocale }) - slashCommandRegistry.register(feedbackCommand, {}) + slashCommandRegistry.register(forumCommand, {}) slashCommandRegistry.register(docsCommand, {}) slashCommandRegistry.register(communityCommand, {}) slashCommandRegistry.register(accountCommand, {}) @@ -44,7 +44,7 @@ export const unregisterSlashCommands = () => { // Remove command handlers from registry system (automatically calls each command's unregister method) slashCommandRegistry.unregister('theme') slashCommandRegistry.unregister('language') - slashCommandRegistry.unregister('feedback') + slashCommandRegistry.unregister('forum') slashCommandRegistry.unregister('docs') slashCommandRegistry.unregister('community') slashCommandRegistry.unregister('account') diff --git a/web/app/components/header/account-dropdown/support.tsx b/web/app/components/header/account-dropdown/support.tsx index b165c5fcca..f354cc4ab0 100644 --- a/web/app/components/header/account-dropdown/support.tsx +++ b/web/app/components/header/account-dropdown/support.tsx @@ -1,5 +1,5 @@ import { Menu, MenuButton, MenuItem, MenuItems, Transition } from '@headlessui/react' -import { RiArrowRightSLine, RiArrowRightUpLine, RiChatSmile2Line, RiDiscordLine, RiFeedbackLine, RiMailSendLine, RiQuestionLine } from '@remixicon/react' +import { RiArrowRightSLine, RiArrowRightUpLine, RiChatSmile2Line, RiDiscordLine, RiDiscussLine, RiMailSendLine, RiQuestionLine } from '@remixicon/react' import { Fragment } from 'react' import Link from 'next/link' import { useTranslation } from 'react-i18next' @@ -86,10 +86,10 @@ export default function Support({ closeAccountDropdown }: SupportProps) { className={cn(itemClassName, 'group justify-between', 'data-[active]:bg-state-base-hover', )} - href='https://github.com/langgenius/dify/discussions/categories/feedbacks' + href='https://forum.dify.ai/' target='_blank' rel='noopener noreferrer'> - -
{t('common.userProfile.communityFeedback')}
+ +
{t('common.userProfile.forum')}
diff --git a/web/app/components/workflow/run/status.tsx b/web/app/components/workflow/run/status.tsx index 97432254b8..fa9559fcf8 100644 --- a/web/app/components/workflow/run/status.tsx +++ b/web/app/components/workflow/run/status.tsx @@ -108,7 +108,7 @@ const StatusPanel: FC = ({ {status === 'failed' && error && ( <>
-
{error}
+
{error}
{ !!exceptionCounts && ( <> diff --git a/web/i18n/de-DE/common.ts b/web/i18n/de-DE/common.ts index 9226e81d9b..a615974061 100644 --- a/web/i18n/de-DE/common.ts +++ b/web/i18n/de-DE/common.ts @@ -161,7 +161,6 @@ const translation = { workspace: 'Arbeitsbereich', createWorkspace: 'Arbeitsbereich erstellen', helpCenter: 'Hilfe', - communityFeedback: 'Rückmeldung', roadmap: 'Fahrplan', community: 'Gemeinschaft', about: 'Über', @@ -170,6 +169,7 @@ const translation = { support: 'Unterstützung', github: 'GitHub', contactUs: 'Kontaktieren Sie uns', + forum: 'Forum', }, settings: { accountGroup: 'KONTO', @@ -726,6 +726,7 @@ const translation = { uploadFromComputerLimit: 'Datei hochladen darf {{size}} nicht überschreiten', uploadFromComputerReadError: 'Lesen der Datei fehlgeschlagen, bitte versuchen Sie es erneut.', fileExtensionNotSupport: 'Dateiendung nicht bedient', + fileExtensionBlocked: 'Dieser Dateityp ist aus Sicherheitsgründen gesperrt', }, license: { expiring: 'Läuft an einem Tag ab', diff --git a/web/i18n/en-US/common.ts b/web/i18n/en-US/common.ts index 33ae1691b2..26c6ed89f2 100644 --- a/web/i18n/en-US/common.ts +++ b/web/i18n/en-US/common.ts @@ -185,7 +185,7 @@ const translation = { helpCenter: 'View Docs', support: 'Support', compliance: 'Compliance', - communityFeedback: 'Feedback', + forum: 'Forum', roadmap: 'Roadmap', github: 'GitHub', community: 'Community', diff --git a/web/i18n/es-ES/common.ts b/web/i18n/es-ES/common.ts index cd854f19fa..3e3ffbd8e3 100644 --- a/web/i18n/es-ES/common.ts +++ b/web/i18n/es-ES/common.ts @@ -165,7 +165,6 @@ const translation = { workspace: 'Espacio de trabajo', createWorkspace: 'Crear espacio de trabajo', helpCenter: 'Ayuda', - communityFeedback: 'Comentarios', roadmap: 'Hoja de ruta', community: 'Comunidad', about: 'Acerca de', @@ -174,6 +173,7 @@ const translation = { compliance: 'Cumplimiento', github: 'GitHub', contactUs: 'Contáctenos', + forum: 'Foro', }, settings: { accountGroup: 'CUENTA', @@ -726,6 +726,7 @@ const translation = { fileExtensionNotSupport: 'Extensión de archivo no compatible', pasteFileLinkInputPlaceholder: 'Introduzca la URL...', uploadFromComputerLimit: 'El archivo de carga no puede exceder {{size}}', + fileExtensionBlocked: 'Este tipo de archivo está bloqueado por motivos de seguridad', }, license: { expiring: 'Caduca en un día', diff --git a/web/i18n/fa-IR/common.ts b/web/i18n/fa-IR/common.ts index dced7bfe82..fb81a9e98e 100644 --- a/web/i18n/fa-IR/common.ts +++ b/web/i18n/fa-IR/common.ts @@ -165,7 +165,6 @@ const translation = { workspace: 'فضای کاری', createWorkspace: 'ایجاد فضای کاری', helpCenter: 'راهنما', - communityFeedback: 'بازخورد', roadmap: 'نقشه راه', community: 'انجمن', about: 'درباره', @@ -174,6 +173,7 @@ const translation = { compliance: 'انطباق', support: 'پشتیبانی', contactUs: 'با ما تماس بگیرید', + forum: 'انجمن', }, settings: { accountGroup: 'حساب کاربری', @@ -726,6 +726,7 @@ const translation = { uploadFromComputerUploadError: 'آپلود فایل انجام نشد، لطفا دوباره آپلود کنید.', pasteFileLink: 'پیوند فایل را جایگذاری کنید', uploadFromComputerLimit: 'آپلود فایل نمی تواند از {{size}} تجاوز کند', + fileExtensionBlocked: 'این نوع فایل به دلایل امنیتی مسدود شده است', }, license: { expiring_plural: 'انقضا در {{count}} روز', diff --git a/web/i18n/fr-FR/common.ts b/web/i18n/fr-FR/common.ts index 96ecfe4151..3c8c4f0b78 100644 --- a/web/i18n/fr-FR/common.ts +++ b/web/i18n/fr-FR/common.ts @@ -161,7 +161,6 @@ const translation = { workspace: 'Espace de travail', createWorkspace: 'Créer un Espace de Travail', helpCenter: 'Aide', - communityFeedback: 'Retour d\'information', roadmap: 'Feuille de route', community: 'Communauté', about: 'À propos', @@ -170,6 +169,7 @@ const translation = { github: 'GitHub', compliance: 'Conformité', contactUs: 'Contactez-nous', + forum: 'Forum', }, settings: { accountGroup: 'COMPTE', @@ -727,6 +727,7 @@ const translation = { fileExtensionNotSupport: 'Extension de fichier non prise en charge', pasteFileLinkInvalid: 'Lien de fichier non valide', uploadFromComputerLimit: 'Le fichier de téléchargement ne peut pas dépasser {{size}}', + fileExtensionBlocked: 'Ce type de fichier est bloqué pour des raisons de sécurité', }, license: { expiring: 'Expirant dans un jour', diff --git a/web/i18n/hi-IN/common.ts b/web/i18n/hi-IN/common.ts index ae6ce65aea..e775946cb7 100644 --- a/web/i18n/hi-IN/common.ts +++ b/web/i18n/hi-IN/common.ts @@ -170,7 +170,6 @@ const translation = { workspace: 'वर्कस्पेस', createWorkspace: 'वर्कस्पेस बनाएं', helpCenter: 'सहायता', - communityFeedback: 'प्रतिक्रिया', roadmap: 'रोडमैप', community: 'समुदाय', about: 'के बारे में', @@ -179,6 +178,7 @@ const translation = { github: 'गिटहब', support: 'समर्थन', contactUs: 'संपर्क करें', + forum: 'फोरम', }, settings: { accountGroup: 'खाता', @@ -748,6 +748,7 @@ const translation = { pasteFileLink: 'फ़ाइल लिंक पेस्ट करें', fileExtensionNotSupport: 'फ़ाइल एक्सटेंशन समर्थित नहीं है', uploadFromComputer: 'स्थानीय अपलोड', + fileExtensionBlocked: 'सुरक्षा कारणों से इस फ़ाइल प्रकार को अवरुद्ध कर दिया गया है', }, license: { expiring: 'एक दिन में समाप्त हो रहा है', diff --git a/web/i18n/id-ID/common.ts b/web/i18n/id-ID/common.ts index d4180ea218..732b04bb92 100644 --- a/web/i18n/id-ID/common.ts +++ b/web/i18n/id-ID/common.ts @@ -163,7 +163,6 @@ const translation = { helpCenter: 'Docs', compliance: 'Kepatuhan', community: 'Masyarakat', - communityFeedback: 'Umpan balik', roadmap: 'Peta jalan', logout: 'Keluar', settings: 'Pengaturan', @@ -173,6 +172,7 @@ const translation = { workspace: 'Workspace', createWorkspace: 'Membuat Ruang Kerja', contactUs: 'Hubungi Kami', + forum: 'Forum', }, compliance: { soc2Type2: 'Laporan SOC 2 Tipe II', @@ -701,6 +701,7 @@ const translation = { pasteFileLinkInvalid: 'Tautan file tidak valid', pasteFileLinkInputPlaceholder: 'Masukkan URL...', uploadFromComputerReadError: 'Pembacaan file gagal, silakan coba lagi.', + fileExtensionBlocked: 'Tipe file ini diblokir karena alasan keamanan', }, tag: { noTag: 'Tidak ada tag', diff --git a/web/i18n/it-IT/common.ts b/web/i18n/it-IT/common.ts index 306f24829e..4f14727b10 100644 --- a/web/i18n/it-IT/common.ts +++ b/web/i18n/it-IT/common.ts @@ -170,7 +170,6 @@ const translation = { workspace: 'Workspace', createWorkspace: 'Crea Workspace', helpCenter: 'Aiuto', - communityFeedback: 'Feedback', roadmap: 'Tabella di marcia', community: 'Comunità', about: 'Informazioni', @@ -179,6 +178,7 @@ const translation = { compliance: 'Conformità', github: 'GitHub', contactUs: 'Contattaci', + forum: 'Forum', }, settings: { accountGroup: 'ACCOUNT', @@ -756,6 +756,7 @@ const translation = { uploadFromComputerUploadError: 'Caricamento del file non riuscito, carica di nuovo.', pasteFileLink: 'Incolla il collegamento del file', uploadFromComputerReadError: 'Lettura del file non riuscita, riprovare.', + fileExtensionBlocked: 'Questo tipo di file è bloccato per motivi di sicurezza', }, license: { expiring_plural: 'Scadenza tra {{count}} giorni', diff --git a/web/i18n/ja-JP/common.ts b/web/i18n/ja-JP/common.ts index 2b1e7e151d..53bb5301fe 100644 --- a/web/i18n/ja-JP/common.ts +++ b/web/i18n/ja-JP/common.ts @@ -174,13 +174,13 @@ const translation = { helpCenter: 'ドキュメントを見る', support: 'サポート', compliance: 'コンプライアンス', - communityFeedback: 'フィードバック', roadmap: 'ロードマップ', community: 'コミュニティ', about: 'Dify について', logout: 'ログアウト', github: 'GitHub', contactUs: 'お問い合わせ', + forum: 'フォーラム', }, compliance: { soc2Type1: 'SOC 2 Type I 報告書', @@ -741,6 +741,7 @@ const translation = { uploadFromComputerReadError: 'ファイルの読み取りに失敗しました。もう一度やり直してください。', fileExtensionNotSupport: 'ファイル拡張子はサポートされていません', pasteFileLinkInvalid: '無効なファイルリンク', + fileExtensionBlocked: 'このファイルタイプは、セキュリティ上の理由でブロックされています', }, license: { expiring_plural: '有効期限 {{count}} 日', diff --git a/web/i18n/ko-KR/common.ts b/web/i18n/ko-KR/common.ts index caff086f7c..22a4f918d5 100644 --- a/web/i18n/ko-KR/common.ts +++ b/web/i18n/ko-KR/common.ts @@ -157,7 +157,6 @@ const translation = { workspace: '작업 공간', createWorkspace: '작업 공간 만들기', helpCenter: '도움말 센터', - communityFeedback: '로드맵 및 피드백', roadmap: '로드맵', community: '커뮤니티', about: 'Dify 소개', @@ -166,6 +165,7 @@ const translation = { compliance: '컴플라이언스', support: '지원', contactUs: '문의하기', + forum: '포럼', }, settings: { accountGroup: '계정', @@ -722,6 +722,7 @@ const translation = { fileExtensionNotSupport: '지원되지 않는 파일 확장자', uploadFromComputerLimit: '업로드 파일은 {{size}}를 초과할 수 없습니다.', uploadFromComputerUploadError: '파일 업로드에 실패했습니다. 다시 업로드하십시오.', + fileExtensionBlocked: '보안상의 이유로 이 파일 형식은 차단되었습니다', }, license: { expiring_plural: '{{count}}일 후에 만료', diff --git a/web/i18n/pl-PL/common.ts b/web/i18n/pl-PL/common.ts index b0ec44d963..b936080e8b 100644 --- a/web/i18n/pl-PL/common.ts +++ b/web/i18n/pl-PL/common.ts @@ -166,7 +166,6 @@ const translation = { workspace: 'Przestrzeń robocza', createWorkspace: 'Utwórz przestrzeń roboczą', helpCenter: 'Pomoc', - communityFeedback: 'Opinie', roadmap: 'Plan działania', community: 'Społeczność', about: 'O', @@ -175,6 +174,7 @@ const translation = { github: 'GitHub', compliance: 'Zgodność', contactUs: 'Skontaktuj się z nami', + forum: 'Forum', }, settings: { accountGroup: 'KONTO', @@ -744,6 +744,7 @@ const translation = { uploadFromComputerReadError: 'Odczyt pliku nie powiódł się, spróbuj ponownie.', fileExtensionNotSupport: 'Rozszerzenie pliku nie jest obsługiwane', uploadFromComputer: 'Przesyłanie lokalne', + fileExtensionBlocked: 'Ten typ pliku jest zablokowany ze względów bezpieczeństwa', }, license: { expiring_plural: 'Wygasa za {{count}} dni', diff --git a/web/i18n/pt-BR/common.ts b/web/i18n/pt-BR/common.ts index ccce7da2c3..e98d5d0748 100644 --- a/web/i18n/pt-BR/common.ts +++ b/web/i18n/pt-BR/common.ts @@ -161,7 +161,6 @@ const translation = { workspace: 'Espaço de trabalho', createWorkspace: 'Criar Espaço de Trabalho', helpCenter: 'Ajuda', - communityFeedback: 'Feedback', roadmap: 'Roteiro', community: 'Comunidade', about: 'Sobre', @@ -170,6 +169,7 @@ const translation = { support: 'Suporte', compliance: 'Conformidade', contactUs: 'Contate-Nos', + forum: 'Fórum', }, settings: { accountGroup: 'CONTA', @@ -726,6 +726,7 @@ const translation = { uploadFromComputerReadError: 'Falha na leitura do arquivo, tente novamente.', uploadFromComputerLimit: 'Carregar arquivo não pode exceder {{size}}', uploadFromComputerUploadError: 'Falha no upload do arquivo, faça o upload novamente.', + fileExtensionBlocked: 'Este tipo de arquivo está bloqueado por razões de segurança', }, license: { expiring: 'Expirando em um dia', diff --git a/web/i18n/ro-RO/common.ts b/web/i18n/ro-RO/common.ts index 7e35a9fb26..f9b620e97e 100644 --- a/web/i18n/ro-RO/common.ts +++ b/web/i18n/ro-RO/common.ts @@ -161,7 +161,6 @@ const translation = { workspace: 'Spațiu de lucru', createWorkspace: 'Creează Spațiu de lucru', helpCenter: 'Ajutor', - communityFeedback: 'Feedback', roadmap: 'Plan de acțiune', community: 'Comunitate', about: 'Despre', @@ -170,6 +169,7 @@ const translation = { support: 'Suport', compliance: 'Conformitate', contactUs: 'Contactați-ne', + forum: 'Forum', }, settings: { accountGroup: 'CONT', @@ -726,6 +726,7 @@ const translation = { pasteFileLinkInvalid: 'Link fișier nevalid', uploadFromComputerLimit: 'Încărcarea fișierului nu poate depăși {{size}}', pasteFileLink: 'Lipiți linkul fișierului', + fileExtensionBlocked: 'Acest tip de fișier este blocat din motive de securitate', }, license: { expiring: 'Expiră într-o zi', diff --git a/web/i18n/ru-RU/common.ts b/web/i18n/ru-RU/common.ts index 2eb22284a5..ecfd241358 100644 --- a/web/i18n/ru-RU/common.ts +++ b/web/i18n/ru-RU/common.ts @@ -165,7 +165,6 @@ const translation = { workspace: 'Рабочее пространство', createWorkspace: 'Создать рабочее пространство', helpCenter: 'Помощь', - communityFeedback: 'Обратная связь', roadmap: 'План развития', community: 'Сообщество', about: 'О нас', @@ -174,6 +173,7 @@ const translation = { compliance: 'Соблюдение', support: 'Поддержка', contactUs: 'Свяжитесь с нами', + forum: 'Форум', }, settings: { accountGroup: 'АККАУНТ', @@ -726,6 +726,7 @@ const translation = { pasteFileLinkInvalid: 'Неверная ссылка на файл', uploadFromComputerLimit: 'Файл загрузки не может превышать {{size}}', uploadFromComputerUploadError: 'Загрузка файла не удалась, пожалуйста, загрузите еще раз.', + fileExtensionBlocked: 'Этот тип файла заблокирован по соображениям безопасности', }, license: { expiring: 'Срок действия истекает за один день', diff --git a/web/i18n/sl-SI/common.ts b/web/i18n/sl-SI/common.ts index 30400edf00..9a84513871 100644 --- a/web/i18n/sl-SI/common.ts +++ b/web/i18n/sl-SI/common.ts @@ -165,7 +165,6 @@ const translation = { workspace: 'Delovni prostor', createWorkspace: 'Ustvari delovni prostor', helpCenter: 'Pomoč', - communityFeedback: 'Povratne informacije', roadmap: 'Načrt razvoja', community: 'Skupnost', about: 'O nas', @@ -174,6 +173,7 @@ const translation = { github: 'GitHub', compliance: 'Skladnost', contactUs: 'Kontaktirajte nas', + forum: 'Forum', }, settings: { accountGroup: 'SPLOŠNO', @@ -792,6 +792,7 @@ const translation = { uploadFromComputer: 'Lokalno nalaganje', uploadFromComputerLimit: 'Nalaganje {{type}} ne sme presegati {{size}}', uploadFromComputerReadError: 'Branje datoteke ni uspelo, poskusite znova.', + fileExtensionBlocked: 'Ta vrsta datoteke je zaradi varnostnih razlogov blokirana', }, tag: { addTag: 'Dodajanje oznak', diff --git a/web/i18n/th-TH/common.ts b/web/i18n/th-TH/common.ts index b7b8cfba53..62d9115ac9 100644 --- a/web/i18n/th-TH/common.ts +++ b/web/i18n/th-TH/common.ts @@ -160,7 +160,6 @@ const translation = { workspace: 'พื้นที่', createWorkspace: 'สร้างพื้นที่ทํางาน', helpCenter: 'วิธีใช้', - communityFeedback: 'การตอบสนอง', roadmap: 'แผนงาน', community: 'ชุมชน', about: 'ประมาณ', @@ -169,6 +168,7 @@ const translation = { compliance: 'การปฏิบัติตามข้อกำหนด', support: 'การสนับสนุน', contactUs: 'ติดต่อเรา', + forum: 'ฟอรั่ม', }, settings: { accountGroup: 'ทั่วไป', @@ -706,6 +706,7 @@ const translation = { uploadFromComputerLimit: 'อัปโหลด {{type}} ต้องไม่เกิน {{size}}', pasteFileLinkInvalid: 'ลิงก์ไฟล์ไม่ถูกต้อง', fileExtensionNotSupport: 'ไม่รองรับนามสกุลไฟล์', + fileExtensionBlocked: 'ประเภทไฟล์นี้ถูกบล็อกด้วยเหตุผลด้านความปลอดภัย', }, tag: { placeholder: 'แท็กทั้งหมด', diff --git a/web/i18n/tr-TR/common.ts b/web/i18n/tr-TR/common.ts index b03b1423ae..3dc63a9ff8 100644 --- a/web/i18n/tr-TR/common.ts +++ b/web/i18n/tr-TR/common.ts @@ -165,7 +165,6 @@ const translation = { workspace: 'Çalışma Alanı', createWorkspace: 'Çalışma Alanı Oluştur', helpCenter: 'Yardım', - communityFeedback: 'Geri Bildirim', roadmap: 'Yol haritası', community: 'Topluluk', about: 'Hakkında', @@ -174,6 +173,7 @@ const translation = { compliance: 'Uygunluk', github: 'GitHub', contactUs: 'Bize Ulaşın', + forum: 'Forum', }, settings: { accountGroup: 'HESAP', @@ -726,6 +726,7 @@ const translation = { pasteFileLinkInputPlaceholder: 'URL\'yi giriniz...', pasteFileLinkInvalid: 'Geçersiz dosya bağlantısı', fileExtensionNotSupport: 'Dosya uzantısı desteklenmiyor', + fileExtensionBlocked: 'Bu dosya türü güvenlik nedenleriyle engellenmiştir', }, license: { expiring_plural: '{{count}} gün içinde sona eriyor', diff --git a/web/i18n/uk-UA/common.ts b/web/i18n/uk-UA/common.ts index a34cfc3725..941200d3a4 100644 --- a/web/i18n/uk-UA/common.ts +++ b/web/i18n/uk-UA/common.ts @@ -161,7 +161,6 @@ const translation = { workspace: 'Робочий простір', createWorkspace: 'Створити робочий простір', helpCenter: 'Довідковий центр', - communityFeedback: 'відгуки', roadmap: 'Дорожня карта', community: 'Спільнота', about: 'Про нас', @@ -170,6 +169,7 @@ const translation = { support: 'Підтримка', github: 'Гітхаб', contactUs: 'Зв’яжіться з нами', + forum: 'Форум', }, settings: { accountGroup: 'ОБЛІКОВИЙ ЗАПИС', @@ -727,6 +727,7 @@ const translation = { fileExtensionNotSupport: 'Розширення файлу не підтримується', uploadFromComputerReadError: 'Не вдалося прочитати файл, будь ласка, спробуйте ще раз.', uploadFromComputerUploadError: 'Не вдалося завантажити файл, будь ласка, завантажте ще раз.', + fileExtensionBlocked: 'Цей тип файлу заблоковано з міркувань безпеки', }, license: { expiring: 'Термін дії закінчується за один день', diff --git a/web/i18n/vi-VN/common.ts b/web/i18n/vi-VN/common.ts index d0d6222d08..b929854555 100644 --- a/web/i18n/vi-VN/common.ts +++ b/web/i18n/vi-VN/common.ts @@ -161,7 +161,6 @@ const translation = { workspace: 'Không gian làm việc', createWorkspace: 'Tạo Không gian làm việc', helpCenter: 'Trung tâm trợ giúp', - communityFeedback: 'Phản hồi', roadmap: 'Lộ trình', community: 'Cộng đồng', about: 'Về chúng tôi', @@ -170,6 +169,7 @@ const translation = { github: 'GitHub', support: 'Hỗ trợ', contactUs: 'Liên hệ với chúng tôi', + forum: 'Diễn đàn', }, settings: { accountGroup: 'TÀI KHOẢN', @@ -726,6 +726,7 @@ const translation = { pasteFileLinkInvalid: 'Liên kết tệp không hợp lệ', uploadFromComputerUploadError: 'Tải lên tệp không thành công, vui lòng tải lên lại.', uploadFromComputerReadError: 'Đọc tệp không thành công, vui lòng thử lại.', + fileExtensionBlocked: 'Loại tệp này bị chặn vì lý do bảo mật', }, license: { expiring_plural: 'Hết hạn sau {{count}} ngày', diff --git a/web/i18n/zh-Hans/common.ts b/web/i18n/zh-Hans/common.ts index 3e99600033..a9228a5a25 100644 --- a/web/i18n/zh-Hans/common.ts +++ b/web/i18n/zh-Hans/common.ts @@ -184,7 +184,7 @@ const translation = { helpCenter: '查看帮助文档', support: '支持', compliance: '合规', - communityFeedback: '用户反馈', + forum: '论坛', roadmap: '路线图', github: 'GitHub', community: '社区', diff --git a/web/i18n/zh-Hant/common.ts b/web/i18n/zh-Hant/common.ts index 65684ea972..51cdcf8a0b 100644 --- a/web/i18n/zh-Hant/common.ts +++ b/web/i18n/zh-Hant/common.ts @@ -170,6 +170,7 @@ const translation = { github: 'GitHub', compliance: '合規', contactUs: '聯絡我們', + forum: '論壇', }, settings: { accountGroup: '賬戶', @@ -726,6 +727,7 @@ const translation = { uploadFromComputer: '本地上傳', fileExtensionNotSupport: '不支援檔擴展名', uploadFromComputerLimit: '上傳文件不能超過 {{size}}', + fileExtensionBlocked: '出於安全原因,此檔案類型被阻止', }, license: { expiring: '將在 1 天內過期', diff --git a/web/package.json b/web/package.json index 032c713333..7e5a84048b 100644 --- a/web/package.json +++ b/web/package.json @@ -210,7 +210,7 @@ "canvas": "^3.2.0", "esbuild": "~0.25.0", "pbkdf2": "~3.1.3", - "vite": "~6.2", + "vite": "~6.4.1", "prismjs": "~1.30", "brace-expansion": "~2.0" }, @@ -233,7 +233,7 @@ "esbuild@<0.25.0": "0.25.0", "pbkdf2@<3.1.3": "3.1.3", "prismjs@<1.30.0": "1.30.0", - "vite@<6.2.7": "6.2.7", + "vite@<6.4.1": "6.4.1", "array-includes": "npm:@nolyfill/array-includes@^1", "array.prototype.findlast": "npm:@nolyfill/array.prototype.findlast@^1", "array.prototype.findlastindex": "npm:@nolyfill/array.prototype.findlastindex@^1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a2328052b0..8e638ed2df 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -12,7 +12,7 @@ overrides: canvas: ^3.2.0 esbuild: ~0.25.0 pbkdf2: ~3.1.3 - vite: ~6.2 + vite: ~6.4.1 prismjs: ~1.30 brace-expansion: ~2.0 lexical: 0.37.0 @@ -24,7 +24,7 @@ overrides: esbuild@<0.25.0: 0.25.0 pbkdf2@<3.1.3: 3.1.3 prismjs@<1.30.0: 1.30.0 - vite@<6.2.7: 6.2.7 + vite@<6.4.1: 6.4.1 array-includes: npm:@nolyfill/array-includes@^1 array.prototype.findlast: npm:@nolyfill/array.prototype.findlast@^1 array.prototype.findlastindex: npm:@nolyfill/array.prototype.findlastindex@^1 @@ -3424,7 +3424,7 @@ packages: resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: msw: ^2.4.9 - vite: 6.2.7 + vite: 6.4.1 peerDependenciesMeta: msw: optional: true