From 4f5f5ddad4c9f97943bd54391d62b75fa07117c4 Mon Sep 17 00:00:00 2001 From: Maksim Eltyshev Date: Wed, 17 Dec 2025 15:49:33 +0100 Subject: [PATCH] feat: Display last updates in About modal --- client/package.json | 1 + client/src/assets/docs/whats-new.md | 84 +++++++++++++++++++ .../AboutModal.jsx} | 15 +++- .../common/AboutModal/AboutModal.module.scss | 14 ++++ .../common/AboutModal/AboutPane.jsx | 60 +++++++++++++ .../AboutPane.module.scss | 1 + .../TermsPane.jsx | 0 .../TermsPane.module.scss | 0 .../{InformationModal => AboutModal}/index.js | 4 +- client/src/components/common/Core/Core.jsx | 6 +- .../common/InformationModal/AboutPane.jsx | 24 ------ .../users/UserActionsStep/UserActionsStep.jsx | 6 +- client/src/constants/ModalTypes.js | 4 +- client/src/entry-actions/modals.js | 6 +- client/src/locales/ar-YE/core.js | 1 + client/src/locales/bg-BG/core.js | 1 + client/src/locales/ca-ES/core.js | 1 + client/src/locales/cs-CZ/core.js | 1 + client/src/locales/da-DK/core.js | 1 + client/src/locales/de-DE/core.js | 1 + client/src/locales/el-GR/core.js | 1 + client/src/locales/en-GB/core.js | 1 + client/src/locales/en-US/core.js | 1 + client/src/locales/es-ES/core.js | 1 + client/src/locales/et-EE/core.js | 1 + client/src/locales/fa-IR/core.js | 1 + client/src/locales/fi-FI/core.js | 1 + client/src/locales/fr-FR/core.js | 1 + client/src/locales/hu-HU/core.js | 1 + client/src/locales/id-ID/core.js | 1 + client/src/locales/it-IT/core.js | 1 + client/src/locales/ja-JP/core.js | 1 + client/src/locales/ko-KR/core.js | 1 + client/src/locales/nl-NL/core.js | 1 + client/src/locales/pl-PL/core.js | 1 + client/src/locales/pt-BR/core.js | 1 + client/src/locales/pt-PT/core.js | 1 + client/src/locales/ro-RO/core.js | 1 + client/src/locales/ru-RU/core.js | 1 + client/src/locales/sk-SK/core.js | 1 + client/src/locales/sr-Cyrl-RS/core.js | 1 + client/src/locales/sr-Latn-RS/core.js | 1 + client/src/locales/sv-SE/core.js | 1 + client/src/locales/tr-TR/core.js | 1 + client/src/locales/uk-UA/core.js | 1 + client/src/locales/uz-UZ/core.js | 1 + client/src/locales/zh-CN/core.js | 1 + client/src/locales/zh-TW/core.js | 1 + .../db/migrations/20250228000022_version_2.js | 2 +- server/package-lock.json | 7 -- 50 files changed, 220 insertions(+), 48 deletions(-) create mode 100644 client/src/assets/docs/whats-new.md rename client/src/components/common/{InformationModal/InformationModal.jsx => AboutModal/AboutModal.jsx} (82%) create mode 100644 client/src/components/common/AboutModal/AboutModal.module.scss create mode 100644 client/src/components/common/AboutModal/AboutPane.jsx rename client/src/components/common/{InformationModal => AboutModal}/AboutPane.module.scss (92%) rename client/src/components/common/{InformationModal => AboutModal}/TermsPane.jsx (100%) rename client/src/components/common/{InformationModal => AboutModal}/TermsPane.module.scss (100%) rename client/src/components/common/{InformationModal => AboutModal}/index.js (64%) delete mode 100644 client/src/components/common/InformationModal/AboutPane.jsx diff --git a/client/package.json b/client/package.json index 04c12100..5c7267fd 100644 --- a/client/package.json +++ b/client/package.json @@ -42,6 +42,7 @@ "error", { "ignore": [ + "\\?url$", "\\.svg\\?react$" ] } diff --git a/client/src/assets/docs/whats-new.md b/client/src/assets/docs/whats-new.md new file mode 100644 index 00000000..106e607a --- /dev/null +++ b/client/src/assets/docs/whats-new.md @@ -0,0 +1,84 @@ +## [2.4.0] - 2025-03-22 + +### Added + +* Lorem ipsum dolor sit amet consectetur adipiscing elit. +* Sed do eiusmod tempor incididunt ut labore et dolore magna. +* Ut enim ad minim veniam quis nostrud exercitation ullamco. + +### Changed + +* Duis aute irure dolor in reprehenderit in voluptate velit esse. +* Excepteur sint occaecat cupidatat non proident sunt in culpa. + +### Fixed + +* Nulla pariatur consectetur adipiscing elit sed do eiusmod. +* Tempor incididunt ut labore et dolore magna aliqua enim. + +--- + +## [2.3.2] - 2025-02-18 + +### Fixed + +* Minim veniam quis nostrud exercitation ullamco laboris nisi. +* Aliquip ex ea commodo consequat duis aute irure dolor. + +--- + +## [2.3.0] - 2025-01-29 + +### Added + +* Reprehenderit in voluptate velit esse cillum dolore eu fugiat. +* Excepteur sint occaecat cupidatat non proident culpa qui officia. + +### Changed + +* Deserunt mollit anim id est laborum sed ut perspiciatis. + +### Deprecated + +* Unde omnis iste natus error sit voluptatem accusantium doloremque. + +--- + +## [2.2.0] - 2024-12-14 + +### Added + +* Totam rem aperiam eaque ipsa quae ab illo inventore veritatis. +* Quasi architecto beatae vitae dicta sunt explicabo nemo. + +### Changed + +* Enim ipsam voluptatem quia voluptas sit aspernatur aut odit. +* Consequuntur magni dolores eos qui ratione voluptatem sequi. + +### Fixed + +* Neque porro quisquam est qui dolorem ipsum quia dolor. + +--- + +## [2.1.0] - 2024-10-05 + +### Added + +* Adipisci velit sed quia non numquam eius modi tempora incidunt. +* Ut labore et dolore magnam aliquam quaerat voluptatem neque. + +--- + +## [2.0.0] - 2024-08-20 + +### Added + +* Porro quisquam est qui dolorem ipsum quia dolor sit amet. +* Consectetur adipisci velit sed quia non numquam eius modi. +* Tempora incidunt ut labore et dolore magnam aliquam quaerat. + +### Removed + +* Voluptatem neque porro quisquam est qui dolorem ipsum quia. diff --git a/client/src/components/common/InformationModal/InformationModal.jsx b/client/src/components/common/AboutModal/AboutModal.jsx similarity index 82% rename from client/src/components/common/InformationModal/InformationModal.jsx rename to client/src/components/common/AboutModal/AboutModal.jsx index 8a892366..a9cfc78f 100644 --- a/client/src/components/common/InformationModal/InformationModal.jsx +++ b/client/src/components/common/AboutModal/AboutModal.jsx @@ -13,7 +13,9 @@ import { useClosableModal } from '../../../hooks'; import TermsPane from './TermsPane'; import AboutPane from './AboutPane'; -const InformationModal = React.memo(() => { +import styles from './AboutModal.module.scss'; + +const AboutModal = React.memo(() => { const dispatch = useDispatch(); const [t] = useTranslation(); @@ -39,7 +41,14 @@ const InformationModal = React.memo(() => { ]; return ( - + { ); }); -export default InformationModal; +export default AboutModal; diff --git a/client/src/components/common/AboutModal/AboutModal.module.scss b/client/src/components/common/AboutModal/AboutModal.module.scss new file mode 100644 index 00000000..1ba30fec --- /dev/null +++ b/client/src/components/common/AboutModal/AboutModal.module.scss @@ -0,0 +1,14 @@ +/*! + * Copyright (c) 2024 PLANKA Software GmbH + * Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md + */ + +:global(#app) { + .wrapper { + margin: 2rem auto; + + @media (width < 926px) { + margin: 1rem auto; + } + } +} diff --git a/client/src/components/common/AboutModal/AboutPane.jsx b/client/src/components/common/AboutModal/AboutPane.jsx new file mode 100644 index 00000000..072151b8 --- /dev/null +++ b/client/src/components/common/AboutModal/AboutPane.jsx @@ -0,0 +1,60 @@ +/*! + * Copyright (c) 2024 PLANKA Software GmbH + * Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md + */ + +import React, { useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Divider, Header, Image, Loader, Tab } from 'semantic-ui-react'; + +import version from '../../../version'; +import Markdown from '../Markdown'; + +import aboutLogo from '../../../assets/images/about-logo.png'; +import whatsNewUrl from '../../../assets/docs/whats-new.md?url'; + +import styles from './AboutPane.module.scss'; + +const AboutPane = React.memo(() => { + const [t] = useTranslation(); + const [whatsNew, setWhatsNew] = useState(null); + + useEffect(() => { + async function fetchWhatsNew() { + let response; + try { + response = await fetch(whatsNewUrl); + } catch { + return; + } + + const text = await response.text(); + setWhatsNew(text); + } + + fetchWhatsNew(); + }, []); + + return ( + + + + +
{version}
+ +
+ {t('common.whatsNew', { + context: 'title', + })} +
+
+ {whatsNew ? ( + {whatsNew} + ) : ( + + )} +
+ ); +}); + +export default AboutPane; diff --git a/client/src/components/common/InformationModal/AboutPane.module.scss b/client/src/components/common/AboutModal/AboutPane.module.scss similarity index 92% rename from client/src/components/common/InformationModal/AboutPane.module.scss rename to client/src/components/common/AboutModal/AboutPane.module.scss index ceff5895..8d3b78f6 100644 --- a/client/src/components/common/InformationModal/AboutPane.module.scss +++ b/client/src/components/common/AboutModal/AboutPane.module.scss @@ -6,6 +6,7 @@ :global(#app) { .version { font-weight: bold; + margin-bottom: 40px; text-align: center; } diff --git a/client/src/components/common/InformationModal/TermsPane.jsx b/client/src/components/common/AboutModal/TermsPane.jsx similarity index 100% rename from client/src/components/common/InformationModal/TermsPane.jsx rename to client/src/components/common/AboutModal/TermsPane.jsx diff --git a/client/src/components/common/InformationModal/TermsPane.module.scss b/client/src/components/common/AboutModal/TermsPane.module.scss similarity index 100% rename from client/src/components/common/InformationModal/TermsPane.module.scss rename to client/src/components/common/AboutModal/TermsPane.module.scss diff --git a/client/src/components/common/InformationModal/index.js b/client/src/components/common/AboutModal/index.js similarity index 64% rename from client/src/components/common/InformationModal/index.js rename to client/src/components/common/AboutModal/index.js index 8d2fab4a..73368a34 100644 --- a/client/src/components/common/InformationModal/index.js +++ b/client/src/components/common/AboutModal/index.js @@ -3,6 +3,6 @@ * Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md */ -import InformationModal from './InformationModal'; +import AboutModal from './AboutModal'; -export default InformationModal; +export default AboutModal; diff --git a/client/src/components/common/Core/Core.jsx b/client/src/components/common/Core/Core.jsx index 0bd40adb..3bc81e7b 100644 --- a/client/src/components/common/Core/Core.jsx +++ b/client/src/components/common/Core/Core.jsx @@ -16,7 +16,7 @@ import Toaster from '../Toaster'; import Fixed from '../Fixed'; import Static from '../Static'; import AdministrationModal from '../AdministrationModal'; -import InformationModal from '../InformationModal'; +import AboutModal from '../AboutModal'; import UserSettingsModal from '../../users/UserSettingsModal'; import ProjectBackground from '../../projects/ProjectBackground'; import AddProjectModal from '../../projects/AddProjectModal'; @@ -63,8 +63,8 @@ const Core = React.memo(() => { modalNode = ; break; - case ModalTypes.INFORMATION: - modalNode = ; + case ModalTypes.ABOUT: + modalNode = ; break; case ModalTypes.USER_SETTINGS: diff --git a/client/src/components/common/InformationModal/AboutPane.jsx b/client/src/components/common/InformationModal/AboutPane.jsx deleted file mode 100644 index 32d2a679..00000000 --- a/client/src/components/common/InformationModal/AboutPane.jsx +++ /dev/null @@ -1,24 +0,0 @@ -/*! - * Copyright (c) 2024 PLANKA Software GmbH - * Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md - */ - -import React from 'react'; -import { Image, Tab } from 'semantic-ui-react'; - -import version from '../../../version'; - -import aboutLogo from '../../../assets/images/about-logo.png'; - -import styles from './AboutPane.module.scss'; - -const AboutPane = React.memo(() => ( - - - - -
{version}
-
-)); - -export default AboutPane; diff --git a/client/src/components/users/UserActionsStep/UserActionsStep.jsx b/client/src/components/users/UserActionsStep/UserActionsStep.jsx index 892158ee..0c0fcf60 100755 --- a/client/src/components/users/UserActionsStep/UserActionsStep.jsx +++ b/client/src/components/users/UserActionsStep/UserActionsStep.jsx @@ -40,8 +40,8 @@ const UserActionsStep = React.memo(({ onClose }) => { onClose(); }, [onClose, dispatch]); - const handleInformationClick = useCallback(() => { - dispatch(entryActions.openInformationModal()); + const handleAboutClick = useCallback(() => { + dispatch(entryActions.openAboutModal()); onClose(); }, [onClose, dispatch]); @@ -98,7 +98,7 @@ const UserActionsStep = React.memo(({ onClose }) => { )} )} - + {t('common.aboutApp', { context: 'title', diff --git a/client/src/constants/ModalTypes.js b/client/src/constants/ModalTypes.js index 0ee35b3c..51d93c49 100755 --- a/client/src/constants/ModalTypes.js +++ b/client/src/constants/ModalTypes.js @@ -4,7 +4,7 @@ */ const ADMINISTRATION = 'ADMINISTRATION'; -const INFORMATION = 'INFORMATION'; +const ABOUT = 'ABOUT'; const USER_SETTINGS = 'USER_SETTINGS'; const ADD_PROJECT = 'ADD_PROJECT'; const PROJECT_SETTINGS = 'PROJECT_SETTINGS'; @@ -13,7 +13,7 @@ const BOARD_ACTIVITIES = 'BOARD_ACTIVITIES'; export default { ADMINISTRATION, - INFORMATION, + ABOUT, USER_SETTINGS, ADD_PROJECT, PROJECT_SETTINGS, diff --git a/client/src/entry-actions/modals.js b/client/src/entry-actions/modals.js index cce8a221..5e852f6b 100755 --- a/client/src/entry-actions/modals.js +++ b/client/src/entry-actions/modals.js @@ -13,10 +13,10 @@ const openAdministrationModal = () => ({ }, }); -const openInformationModal = () => ({ +const openAboutModal = () => ({ type: EntryActionTypes.MODAL_OPEN, payload: { - type: ModalTypes.INFORMATION, + type: ModalTypes.ABOUT, }, }); @@ -68,7 +68,7 @@ const closeModal = () => ({ export default { openAdministrationModal, - openInformationModal, + openAboutModal, openUserSettingsModal, openAddProjectModal, openProjectSettingsModal, diff --git a/client/src/locales/ar-YE/core.js b/client/src/locales/ar-YE/core.js index da42ca48..75a5ffb2 100644 --- a/client/src/locales/ar-YE/core.js +++ b/client/src/locales/ar-YE/core.js @@ -357,6 +357,7 @@ export default { viewers: 'المشاهدون', visualTaskManagementWithLists: 'إدارة المهام البصرية بالقوائم.', webhooks: 'الويب هوكس', + whatsNew_title: 'ما الجديد', withoutBaseGroup: 'بدون مجموعة أساسية', writeComment: 'اكتب تعليقاً...', }, diff --git a/client/src/locales/bg-BG/core.js b/client/src/locales/bg-BG/core.js index e6f9ce91..c667ff79 100644 --- a/client/src/locales/bg-BG/core.js +++ b/client/src/locales/bg-BG/core.js @@ -372,6 +372,7 @@ export default { viewers: 'Зрители', visualTaskManagementWithLists: 'Визуално управление на задачи със списъци.', webhooks: 'Webhooks', + whatsNew_title: 'Какво еново', withoutBaseGroup: 'Без основна група', writeComment: 'Напишете коментар...', }, diff --git a/client/src/locales/ca-ES/core.js b/client/src/locales/ca-ES/core.js index 218c5ff1..597b039e 100644 --- a/client/src/locales/ca-ES/core.js +++ b/client/src/locales/ca-ES/core.js @@ -374,6 +374,7 @@ export default { viewers: 'Observadors', visualTaskManagementWithLists: 'Gestió visual de tasques amb llistes.', webhooks: 'Webhooks', + whatsNew_title: 'Què hi ha de nou', withoutBaseGroup: 'Sense grup base', writeComment: 'Escriu un comentari...', }, diff --git a/client/src/locales/cs-CZ/core.js b/client/src/locales/cs-CZ/core.js index e7083664..bea5160b 100644 --- a/client/src/locales/cs-CZ/core.js +++ b/client/src/locales/cs-CZ/core.js @@ -362,6 +362,7 @@ export default { viewers: 'Diváci', visualTaskManagementWithLists: 'Vizuální správa úkolů pomocí seznamů.', webhooks: 'Webhooky', + whatsNew_title: 'Co je nového', withoutBaseGroup: 'Bez základní skupiny', writeComment: 'Napsat komentář...', }, diff --git a/client/src/locales/da-DK/core.js b/client/src/locales/da-DK/core.js index 409bcc59..4d3f577f 100644 --- a/client/src/locales/da-DK/core.js +++ b/client/src/locales/da-DK/core.js @@ -368,6 +368,7 @@ export default { viewers: 'Læsere', visualTaskManagementWithLists: 'Visuel opgavestyring med lister.', webhooks: 'Webhooks', + whatsNew_title: 'Hvad er nyt', withoutBaseGroup: 'Uden standardgruppe', writeComment: 'Skriv en kommentar...', }, diff --git a/client/src/locales/de-DE/core.js b/client/src/locales/de-DE/core.js index 6ced847c..17faecfd 100644 --- a/client/src/locales/de-DE/core.js +++ b/client/src/locales/de-DE/core.js @@ -384,6 +384,7 @@ export default { viewers: 'Betrachter', visualTaskManagementWithLists: 'Visuelle Aufgabenverwaltung mit Listen.', webhooks: 'Webhooks', + whatsNew_title: 'Was ist neu', withoutBaseGroup: 'Ohne Basisgruppe', writeComment: 'Kommentar verfassen...', }, diff --git a/client/src/locales/el-GR/core.js b/client/src/locales/el-GR/core.js index 54f87ee3..843e9a17 100644 --- a/client/src/locales/el-GR/core.js +++ b/client/src/locales/el-GR/core.js @@ -388,6 +388,7 @@ export default { viewers: 'Θεατές', visualTaskManagementWithLists: 'Οπτική διαχείριση εργασιών με λίστες.', webhooks: 'Webhooks', + whatsNew_title: 'Τι νέο υπάρχει', withoutBaseGroup: 'Χωρίς βασική ομάδα', writeComment: 'Γράψτε ένα σχόλιο...', }, diff --git a/client/src/locales/en-GB/core.js b/client/src/locales/en-GB/core.js index e3ef80d7..9b79ff74 100644 --- a/client/src/locales/en-GB/core.js +++ b/client/src/locales/en-GB/core.js @@ -364,6 +364,7 @@ export default { viewers: 'Viewers', visualTaskManagementWithLists: 'Visual task management with lists.', webhooks: 'Webhooks', + whatsNew_title: "What's New", withoutBaseGroup: 'Without base group', writeComment: 'Write a comment...', }, diff --git a/client/src/locales/en-US/core.js b/client/src/locales/en-US/core.js index 29c0756c..484a15be 100644 --- a/client/src/locales/en-US/core.js +++ b/client/src/locales/en-US/core.js @@ -359,6 +359,7 @@ export default { viewers: 'Viewers', visualTaskManagementWithLists: 'Visual task management with lists.', webhooks: 'Webhooks', + whatsNew_title: "What's New", withoutBaseGroup: 'Without base group', writeComment: 'Write a comment...', }, diff --git a/client/src/locales/es-ES/core.js b/client/src/locales/es-ES/core.js index c5c11938..fce946c3 100644 --- a/client/src/locales/es-ES/core.js +++ b/client/src/locales/es-ES/core.js @@ -374,6 +374,7 @@ export default { viewers: 'Observadores', visualTaskManagementWithLists: 'Gestión visual de tareas con listas.', webhooks: 'Webhooks', + whatsNew_title: 'Novedades', withoutBaseGroup: 'Sin grupo base', writeComment: 'Escribe un comentario...', }, diff --git a/client/src/locales/et-EE/core.js b/client/src/locales/et-EE/core.js index ce148612..0d65c584 100644 --- a/client/src/locales/et-EE/core.js +++ b/client/src/locales/et-EE/core.js @@ -366,6 +366,7 @@ export default { viewers: 'Vaatajad', visualTaskManagementWithLists: 'Visual tööülesande haldamine nimekirjade abil.', webhooks: 'Webhookid', + whatsNew_title: 'Mis on uut', withoutBaseGroup: 'Ilma põhiklassita', writeComment: 'Kirjuta kommentaar...', }, diff --git a/client/src/locales/fa-IR/core.js b/client/src/locales/fa-IR/core.js index 91ec1cc1..388f0a0b 100644 --- a/client/src/locales/fa-IR/core.js +++ b/client/src/locales/fa-IR/core.js @@ -368,6 +368,7 @@ export default { viewers: 'بینندگان', visualTaskManagementWithLists: 'مدیریت بصری وظایف با لیست‌ها.', webhooks: 'وب‌هوک‌ها', + whatsNew_title: 'چه چیز جدیدی', withoutBaseGroup: 'بدون گروه پایه', writeComment: 'نظر بنویسید...', }, diff --git a/client/src/locales/fi-FI/core.js b/client/src/locales/fi-FI/core.js index 3971c042..1d7acba0 100644 --- a/client/src/locales/fi-FI/core.js +++ b/client/src/locales/fi-FI/core.js @@ -367,6 +367,7 @@ export default { viewers: 'Katselijat', visualTaskManagementWithLists: 'Visuaalinen tehtävien hallinta listoilla.', webhooks: 'Webhookit', + whatsNew_title: 'Mitä uutta', withoutBaseGroup: 'Ilman perusryhmää', writeComment: 'Kirjoita kommentti...', }, diff --git a/client/src/locales/fr-FR/core.js b/client/src/locales/fr-FR/core.js index 780a9b62..c9c1d8a5 100644 --- a/client/src/locales/fr-FR/core.js +++ b/client/src/locales/fr-FR/core.js @@ -373,6 +373,7 @@ export default { viewers: 'Spectateurs', visualTaskManagementWithLists: 'Management visuel des tâches avec des listes.', webhooks: 'Webhooks', + whatsNew_title: 'Quoi de neuf', withoutBaseGroup: 'Sans groupe de base', writeComment: 'Écrire un commentaire...', }, diff --git a/client/src/locales/hu-HU/core.js b/client/src/locales/hu-HU/core.js index f327c56e..80eb33ff 100644 --- a/client/src/locales/hu-HU/core.js +++ b/client/src/locales/hu-HU/core.js @@ -366,6 +366,7 @@ export default { viewers: 'Megtekintők', visualTaskManagementWithLists: 'Vizuális feladatkezelés listákkal.', webhooks: 'Webhook-ok', + whatsNew_title: 'Újdonságok', withoutBaseGroup: 'Alapcsoport nélkül', writeComment: 'Írjon egy megjegyzést...', }, diff --git a/client/src/locales/id-ID/core.js b/client/src/locales/id-ID/core.js index 4e2af810..2650e545 100644 --- a/client/src/locales/id-ID/core.js +++ b/client/src/locales/id-ID/core.js @@ -367,6 +367,7 @@ export default { viewers: 'Penglihat', visualTaskManagementWithLists: 'Manajemen tugas visual dengan daftar.', webhooks: 'Webhook', + whatsNew_title: 'Apa yang baru', withoutBaseGroup: 'Tanpa grup dasar', writeComment: 'Tuliskan komentar...', }, diff --git a/client/src/locales/it-IT/core.js b/client/src/locales/it-IT/core.js index 82bea374..d558e24b 100644 --- a/client/src/locales/it-IT/core.js +++ b/client/src/locales/it-IT/core.js @@ -370,6 +370,7 @@ export default { viewers: 'Visualizzatori', visualTaskManagementWithLists: 'Gestione visiva dei task con liste.', webhooks: 'Webhooks', + whatsNew_title: 'Novità', withoutBaseGroup: 'Senza gruppo base', writeComment: 'Scrivi un commento...', }, diff --git a/client/src/locales/ja-JP/core.js b/client/src/locales/ja-JP/core.js index 02b0b47b..bd0a7474 100644 --- a/client/src/locales/ja-JP/core.js +++ b/client/src/locales/ja-JP/core.js @@ -364,6 +364,7 @@ export default { viewers: 'ビューア', visualTaskManagementWithLists: 'リストによる視覚的タスク管理。', webhooks: 'Webhook', + whatsNew_title: '新機能', withoutBaseGroup: 'ベースグループなし', writeComment: 'コメントを書く…', }, diff --git a/client/src/locales/ko-KR/core.js b/client/src/locales/ko-KR/core.js index 8fa43f5b..60226323 100644 --- a/client/src/locales/ko-KR/core.js +++ b/client/src/locales/ko-KR/core.js @@ -361,6 +361,7 @@ export default { viewers: '뷰어들', visualTaskManagementWithLists: '목록을 통한 시각적 작업 관리.', webhooks: '웹훅', + whatsNew_title: '새로운 소식', withoutBaseGroup: '기본 그룹 없음', writeComment: '댓글 작성...', }, diff --git a/client/src/locales/nl-NL/core.js b/client/src/locales/nl-NL/core.js index 36da8489..789ff681 100644 --- a/client/src/locales/nl-NL/core.js +++ b/client/src/locales/nl-NL/core.js @@ -370,6 +370,7 @@ export default { viewers: 'Kijkers', visualTaskManagementWithLists: 'Visueel takenbeheer met lijsten.', webhooks: 'Webhooks', + whatsNew_title: 'Wat is er nieuw', withoutBaseGroup: 'Zonder basisgroep', writeComment: 'Schrijf een opmerking...', }, diff --git a/client/src/locales/pl-PL/core.js b/client/src/locales/pl-PL/core.js index 0e534b70..4c0259a7 100644 --- a/client/src/locales/pl-PL/core.js +++ b/client/src/locales/pl-PL/core.js @@ -367,6 +367,7 @@ export default { viewers: 'Wyświetlający', visualTaskManagementWithLists: 'Wizualne zarządzanie zadaniami z listami.', webhooks: 'Webhooks', + whatsNew_title: 'Co nowego', withoutBaseGroup: 'Bez grupy bazowej', writeComment: 'Napisz komentarz...', }, diff --git a/client/src/locales/pt-BR/core.js b/client/src/locales/pt-BR/core.js index 1fb285c6..5bb24cb2 100644 --- a/client/src/locales/pt-BR/core.js +++ b/client/src/locales/pt-BR/core.js @@ -370,6 +370,7 @@ export default { viewers: 'Visualizadores', visualTaskManagementWithLists: 'Gerenciamento visual de tarefas com listas.', webhooks: 'Webhooks', + whatsNew_title: 'Novidades', withoutBaseGroup: 'Sem grupo básico', writeComment: 'Escreva um comentário...', }, diff --git a/client/src/locales/pt-PT/core.js b/client/src/locales/pt-PT/core.js index 64a86723..734bb571 100644 --- a/client/src/locales/pt-PT/core.js +++ b/client/src/locales/pt-PT/core.js @@ -373,6 +373,7 @@ export default { viewers: 'Visualizadores', visualTaskManagementWithLists: 'Gestão visual de tarefas com listas.', webhooks: 'Webhooks', + whatsNew_title: 'Novidades', withoutBaseGroup: 'Sem grupo base', writeComment: 'Escreva um comentário...', }, diff --git a/client/src/locales/ro-RO/core.js b/client/src/locales/ro-RO/core.js index 05b2987d..d23be61c 100644 --- a/client/src/locales/ro-RO/core.js +++ b/client/src/locales/ro-RO/core.js @@ -367,6 +367,7 @@ export default { viewers: 'Vizualizatori', visualTaskManagementWithLists: 'Gestionarea vizuală a sarcinilor cu liste.', webhooks: 'Webhooks', + whatsNew_title: 'Ce este nou', withoutBaseGroup: 'Fără grup de bază', writeComment: 'Scrie un comentariu...', }, diff --git a/client/src/locales/ru-RU/core.js b/client/src/locales/ru-RU/core.js index db150600..3a285f5e 100644 --- a/client/src/locales/ru-RU/core.js +++ b/client/src/locales/ru-RU/core.js @@ -369,6 +369,7 @@ export default { viewers: 'Читатели', visualTaskManagementWithLists: 'Визуальное управление задачами с помощью списков.', webhooks: 'Веб-хуки', + whatsNew_title: 'Что нового', withoutBaseGroup: 'Без основной группы', writeComment: 'Напишите комментарий...', }, diff --git a/client/src/locales/sk-SK/core.js b/client/src/locales/sk-SK/core.js index 9be8645b..0dca24f9 100644 --- a/client/src/locales/sk-SK/core.js +++ b/client/src/locales/sk-SK/core.js @@ -360,6 +360,7 @@ export default { viewers: 'Prehliadače', visualTaskManagementWithLists: 'Vizuálne riadenie úloh so zoznamami.', webhooks: 'Webhooks', + whatsNew_title: 'Čo je nové', withoutBaseGroup: 'Bez základnej skupiny', writeComment: 'Napísať komentár...', }, diff --git a/client/src/locales/sr-Cyrl-RS/core.js b/client/src/locales/sr-Cyrl-RS/core.js index aab3f8f8..bfeebc95 100644 --- a/client/src/locales/sr-Cyrl-RS/core.js +++ b/client/src/locales/sr-Cyrl-RS/core.js @@ -363,6 +363,7 @@ export default { viewers: 'Прегледачи', visualTaskManagementWithLists: 'Визуелно управљање задацима са списковима.', webhooks: 'Webhooks', + whatsNew_title: 'Шта је ново', withoutBaseGroup: 'Без основне групе', writeComment: 'Напиши коментар...', }, diff --git a/client/src/locales/sr-Latn-RS/core.js b/client/src/locales/sr-Latn-RS/core.js index 341ae2ee..71690fe3 100644 --- a/client/src/locales/sr-Latn-RS/core.js +++ b/client/src/locales/sr-Latn-RS/core.js @@ -365,6 +365,7 @@ export default { viewers: 'Pregledači', visualTaskManagementWithLists: 'Vizuelno upravljanje zadacima sa spiskovima.', webhooks: 'Webhooks', + whatsNew_title: 'Šta je novo', withoutBaseGroup: 'Bez osnovne grupe', writeComment: 'Napiši komentar...', }, diff --git a/client/src/locales/sv-SE/core.js b/client/src/locales/sv-SE/core.js index a8f20ed9..10a394b1 100644 --- a/client/src/locales/sv-SE/core.js +++ b/client/src/locales/sv-SE/core.js @@ -374,6 +374,7 @@ export default { viewers: 'Visare', visualTaskManagementWithLists: 'Visuell uppgiftshantering med listor.', webhooks: 'Webhooks', + whatsNew_title: 'Vad är nytt', withoutBaseGroup: 'Utan basgrupp', writeComment: 'Skriv en kommentar...', }, diff --git a/client/src/locales/tr-TR/core.js b/client/src/locales/tr-TR/core.js index 02c34e95..30ea6c52 100644 --- a/client/src/locales/tr-TR/core.js +++ b/client/src/locales/tr-TR/core.js @@ -370,6 +370,7 @@ export default { viewers: 'Görüntüleyiciler', visualTaskManagementWithLists: 'Listelerle görsel görev yönetimi.', webhooks: "Webhook'lar", + whatsNew_title: 'Yenilikler', withoutBaseGroup: 'Temel grup olmadan', writeComment: 'Yorum yazın...', }, diff --git a/client/src/locales/uk-UA/core.js b/client/src/locales/uk-UA/core.js index 0d523ea3..a2247d3a 100644 --- a/client/src/locales/uk-UA/core.js +++ b/client/src/locales/uk-UA/core.js @@ -365,6 +365,7 @@ export default { viewers: 'Переглядачі', visualTaskManagementWithLists: 'Візуальне управління завданнями за допомогою списків.', webhooks: 'Вебхуки', + whatsNew_title: 'Що нового', withoutBaseGroup: 'Без базової групи', writeComment: 'Написати коментар...', }, diff --git a/client/src/locales/uz-UZ/core.js b/client/src/locales/uz-UZ/core.js index f65eb7f7..06f9b0ae 100644 --- a/client/src/locales/uz-UZ/core.js +++ b/client/src/locales/uz-UZ/core.js @@ -363,6 +363,7 @@ export default { viewers: "Ko'ruvchilar", visualTaskManagementWithLists: "Ro'yxatlar bilan vizual vazifa boshqaruvi.", webhooks: 'Webhooks', + whatsNew_title: 'Nima yangi', withoutBaseGroup: 'Asosiy guruhsiz', writeComment: 'Izoh yozish...', }, diff --git a/client/src/locales/zh-CN/core.js b/client/src/locales/zh-CN/core.js index 4962b59c..c7653294 100644 --- a/client/src/locales/zh-CN/core.js +++ b/client/src/locales/zh-CN/core.js @@ -340,6 +340,7 @@ export default { viewers: '查看者', visualTaskManagementWithLists: '使用列表进行可视化任务管理。', webhooks: 'Webhooks', + whatsNew_title: '新功能', withoutBaseGroup: '无基础组', writeComment: '编写评论...', }, diff --git a/client/src/locales/zh-TW/core.js b/client/src/locales/zh-TW/core.js index a5875851..d4868b06 100644 --- a/client/src/locales/zh-TW/core.js +++ b/client/src/locales/zh-TW/core.js @@ -340,6 +340,7 @@ export default { viewers: '檢視者', visualTaskManagementWithLists: '使用列表進行視覺化任務管理。', webhooks: 'Webhook', + whatsNew_title: '最新消息', withoutBaseGroup: '無基礎群組', writeComment: '編寫評論...', }, diff --git a/server/db/migrations/20250228000022_version_2.js b/server/db/migrations/20250228000022_version_2.js index e0feb191..432d9329 100644 --- a/server/db/migrations/20250228000022_version_2.js +++ b/server/db/migrations/20250228000022_version_2.js @@ -5,7 +5,7 @@ module.exports.up = async (knex) => { await knex.raw(` - CREATE EXTENSION pg_trgm; + CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE SEQUENCE next_id_seq; CREATE FUNCTION next_id(OUT id BIGINT) AS $$ diff --git a/server/package-lock.json b/server/package-lock.json index b2d0af3a..f344f8d5 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -432,7 +432,6 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.726.0.tgz", "integrity": "sha512-5JzTX9jwev7+y2Jkzjz0pd1wobB5JQfPOQF3N2DrJ5Pao0/k6uRYwE4NqB0p0HlGrMTDm7xNq7OSPPIPG575Jw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -486,7 +485,6 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.726.1.tgz", "integrity": "sha512-qh9Q9Vu1hrM/wMBOBIaskwnE4GTFaZu26Q6WHwyWNfj7J8a40vBxpW16c2vYXHLBtwRKM1be8uRLkmDwghpiNw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -2761,7 +2759,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4527,7 +4524,6 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -4614,7 +4610,6 @@ "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -4678,7 +4673,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -8492,7 +8486,6 @@ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" },