From ff8c5ee910e47122088d286d0ba0b23ec0bc2c1f Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Fri, 10 Jan 2025 10:18:45 +0530 Subject: [PATCH 1/6] fix: floating toolbar ui (#6368) --- .../src/core/components/menus/bubble-menu/root.tsx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/editor/src/core/components/menus/bubble-menu/root.tsx b/packages/editor/src/core/components/menus/bubble-menu/root.tsx index 4ed3709f40..3f4e97ca70 100644 --- a/packages/editor/src/core/components/menus/bubble-menu/root.tsx +++ b/packages/editor/src/core/components/menus/bubble-menu/root.tsx @@ -87,12 +87,9 @@ export const EditorBubbleMenu: FC = (props: any) => { }, []); return ( - + {!isSelecting && ( - <> +
{!props.editor.isActive("table") && ( = (props: any) => { editor.commands.setTextSelection(pos ?? 0); }} /> - +
)} ); From 2018114543ad3859eefcff847fa322e3c4e93b09 Mon Sep 17 00:00:00 2001 From: Vamsi Krishna <46787868+mathalav55@users.noreply.github.com> Date: Fri, 10 Jan 2025 10:19:51 +0530 Subject: [PATCH 2/6] fix: added missing translation (#6367) --- packages/i18n/src/locales/en/translations.json | 1 + packages/i18n/src/locales/es/translations.json | 1 + packages/i18n/src/locales/fr/translations.json | 1 + packages/i18n/src/locales/ja/translations.json | 1 + web/core/components/home/widgets/recents/index.tsx | 2 +- 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index 774c607f2f..596c3093fa 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -283,6 +283,7 @@ "create_a_draft": "Create a draft", "save_to_drafts": "Save to Drafts", "save": "Save", + "update": "Update", "updating": "Updating", "create_new_issue": "Create new issue", "editor_is_not_ready_to_discard_changes": "Editor is not ready to discard changes", diff --git a/packages/i18n/src/locales/es/translations.json b/packages/i18n/src/locales/es/translations.json index 35fa67c1ec..9f2b98792c 100644 --- a/packages/i18n/src/locales/es/translations.json +++ b/packages/i18n/src/locales/es/translations.json @@ -282,6 +282,7 @@ "create_a_draft": "Crear un borrador", "save_to_drafts": "Guardar en borradores", "save": "Guardar", + "update": "Actualizar", "updating": "Actualizando", "create_new_issue": "Crear nuevo problema", "editor_is_not_ready_to_discard_changes": "El editor no está listo para descartar los cambios", diff --git a/packages/i18n/src/locales/fr/translations.json b/packages/i18n/src/locales/fr/translations.json index c41312e6e0..e711d71860 100644 --- a/packages/i18n/src/locales/fr/translations.json +++ b/packages/i18n/src/locales/fr/translations.json @@ -282,6 +282,7 @@ "create_a_draft": "Créer un brouillon", "save_to_drafts": "Enregistrer dans les brouillons", "save": "Enregistrer", + "update": "Mettre à jour", "updating": "Mise à jour", "create_new_issue": "Créer un nouveau problème", "editor_is_not_ready_to_discard_changes": "L'éditeur n'est pas prêt à annuler les modifications", diff --git a/packages/i18n/src/locales/ja/translations.json b/packages/i18n/src/locales/ja/translations.json index 71b7a17622..fa2b244cc5 100644 --- a/packages/i18n/src/locales/ja/translations.json +++ b/packages/i18n/src/locales/ja/translations.json @@ -282,6 +282,7 @@ "create_a_draft": "下書きを作成", "save_to_drafts": "下書きに保存", "save": "保存", + "update": "更新", "updating": "更新中", "create_new_issue": "新しい問題を作成", "editor_is_not_ready_to_discard_changes": "エディターは変更を破棄する準備ができていません", diff --git a/web/core/components/home/widgets/recents/index.tsx b/web/core/components/home/widgets/recents/index.tsx index ba3893f6b0..4eeaba37af 100644 --- a/web/core/components/home/widgets/recents/index.tsx +++ b/web/core/components/home/widgets/recents/index.tsx @@ -8,6 +8,7 @@ import { Briefcase, FileText } from "lucide-react"; import { TActivityEntityData, THomeWidgetProps, TRecentActivityFilterKeys } from "@plane/types"; // components import { LayersIcon } from "@plane/ui"; +import { ContentOverflowWrapper } from "@/components/core/content-overflow-HOC"; import { useProject } from "@/hooks/store"; import { WorkspaceService } from "@/plane-web/services"; import { EmptyWorkspace } from "../empty-states"; @@ -17,7 +18,6 @@ import { FiltersDropdown } from "./filters"; import { RecentIssue } from "./issue"; import { RecentPage } from "./page"; import { RecentProject } from "./project"; -import { ContentOverflowWrapper } from "@/components/core/content-overflow-HOC"; const WIDGET_KEY = EWidgetKeys.RECENT_ACTIVITY; const workspaceService = new WorkspaceService(); From 7b3f206f570a448c758c8d9338da1ff11b9da3c9 Mon Sep 17 00:00:00 2001 From: Vamsi Krishna <46787868+mathalav55@users.noreply.github.com> Date: Fri, 10 Jan 2025 10:20:13 +0530 Subject: [PATCH 3/6] fix: prevented multiple api call while updating comment (#6352) --- .../issue-detail/issue-activity/comments/comment-card.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/core/components/issues/issue-detail/issue-activity/comments/comment-card.tsx b/web/core/components/issues/issue-detail/issue-activity/comments/comment-card.tsx index 79eac92a6b..baae682881 100644 --- a/web/core/components/issues/issue-detail/issue-activity/comments/comment-card.tsx +++ b/web/core/components/issues/issue-detail/issue-activity/comments/comment-card.tsx @@ -67,11 +67,11 @@ export const IssueCommentCard: FC = observer((props) => { defaultValues: { comment_html: comment?.comment_html }, }); - const onEnter = (formData: Partial) => { + const onEnter = async (formData: Partial) => { if (isSubmitting || !comment) return; setIsEditing(false); - activityOperations.updateComment(comment.id, formData); + await activityOperations.updateComment(comment.id, formData); editorRef.current?.setEditorValue(formData?.comment_html ?? "

"); showEditorRef.current?.setEditorValue(formData?.comment_html ?? "

"); From de009d6d10c3d8721a0e1c1d62b739a09ff44c13 Mon Sep 17 00:00:00 2001 From: Sangeetha Date: Fri, 10 Jan 2025 10:20:38 +0530 Subject: [PATCH 4/6] [WEB 3053]feat: support LibreOffice file attachments in issues (#6343) * feat: API endpoints for stickies * Support libre office in issue attachments * Remove flash --- apiserver/plane/app/views/issue/attachment.py | 2 ++ apiserver/plane/settings/common.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/apiserver/plane/app/views/issue/attachment.py b/apiserver/plane/app/views/issue/attachment.py index 4427227f12..d519a52695 100644 --- a/apiserver/plane/app/views/issue/attachment.py +++ b/apiserver/plane/app/views/issue/attachment.py @@ -120,10 +120,12 @@ class IssueAttachmentV2Endpoint(BaseAPIView): # Get the presigned URL storage = S3Storage(request=request) + # Generate a presigned URL to share an S3 object presigned_url = storage.generate_presigned_post( object_name=asset_key, file_type=type, file_size=size_limit ) + # Return the presigned URL return Response( { diff --git a/apiserver/plane/settings/common.py b/apiserver/plane/settings/common.py index db9a244537..4de98b5501 100644 --- a/apiserver/plane/settings/common.py +++ b/apiserver/plane/settings/common.py @@ -361,6 +361,18 @@ ATTACHMENT_MIME_TYPES = [ "application/vnd.openxmlformats-officedocument.presentationml.presentation", "text/plain", "application/rtf", + "application/vnd.oasis.opendocument.spreadsheet", + "application/vnd.oasis.opendocument.text", + "application/vnd.oasis.opendocument.presentation", + "application/vnd.oasis.opendocument.graphics", + # Microsoft Visio + "application/vnd.visio", + # Netpbm format + "image/x-portable-graymap", + "image/x-portable-bitmap", + "image/x-portable-pixmap", + # Open Office Bae + "application/vnd.oasis.opendocument.database", # Audio "audio/mpeg", "audio/wav", From e3ceb4825a3587dbbc0145ca7ae202006e259b80 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Fri, 10 Jan 2025 10:21:22 +0530 Subject: [PATCH 5/6] chore: app theme store updated (#6356) --- web/core/store/theme.store.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/web/core/store/theme.store.ts b/web/core/store/theme.store.ts index 0102a09369..cf37b1ae8f 100644 --- a/web/core/store/theme.store.ts +++ b/web/core/store/theme.store.ts @@ -7,12 +7,16 @@ export interface IThemeStore { workspaceAnalyticsSidebarCollapsed: boolean | undefined; issueDetailSidebarCollapsed: boolean | undefined; epicDetailSidebarCollapsed: boolean | undefined; + initiativesSidebarCollapsed: boolean | undefined; + projectOverviewSidebarCollapsed: boolean | undefined; // actions toggleSidebar: (collapsed?: boolean) => void; toggleProfileSidebar: (collapsed?: boolean) => void; toggleWorkspaceAnalyticsSidebar: (collapsed?: boolean) => void; toggleIssueDetailSidebar: (collapsed?: boolean) => void; toggleEpicDetailSidebar: (collapsed?: boolean) => void; + toggleInitiativesSidebar: (collapsed?: boolean) => void; + toggleProjectOverviewSidebar: (collapsed?: boolean) => void; } export class ThemeStore implements IThemeStore { @@ -22,6 +26,8 @@ export class ThemeStore implements IThemeStore { workspaceAnalyticsSidebarCollapsed: boolean | undefined = undefined; issueDetailSidebarCollapsed: boolean | undefined = undefined; epicDetailSidebarCollapsed: boolean | undefined = undefined; + initiativesSidebarCollapsed: boolean | undefined = undefined; + projectOverviewSidebarCollapsed: boolean | undefined = undefined; constructor() { makeObservable(this, { @@ -31,12 +37,16 @@ export class ThemeStore implements IThemeStore { workspaceAnalyticsSidebarCollapsed: observable.ref, issueDetailSidebarCollapsed: observable.ref, epicDetailSidebarCollapsed: observable.ref, + initiativesSidebarCollapsed: observable.ref, + projectOverviewSidebarCollapsed: observable.ref, // action toggleSidebar: action, toggleProfileSidebar: action, toggleWorkspaceAnalyticsSidebar: action, toggleIssueDetailSidebar: action, toggleEpicDetailSidebar: action, + toggleInitiativesSidebar: action, + toggleProjectOverviewSidebar: action, }); } @@ -96,4 +106,22 @@ export class ThemeStore implements IThemeStore { } localStorage.setItem("epic_detail_sidebar_collapsed", this.epicDetailSidebarCollapsed.toString()); }; + + toggleInitiativesSidebar = (collapsed?: boolean) => { + if (collapsed === undefined) { + this.initiativesSidebarCollapsed = !this.initiativesSidebarCollapsed; + } else { + this.initiativesSidebarCollapsed = collapsed; + } + localStorage.setItem("initiatives_sidebar_collapsed", this.initiativesSidebarCollapsed.toString()); + }; + + toggleProjectOverviewSidebar = (collapsed?: boolean) => { + if (collapsed === undefined) { + this.projectOverviewSidebarCollapsed = !this.projectOverviewSidebarCollapsed; + } else { + this.projectOverviewSidebarCollapsed = collapsed; + } + localStorage.setItem("project_overview_sidebar_collapsed", this.projectOverviewSidebarCollapsed.toString()); + }; } From 87ea13c32e7093d5c0c22ed969e4ab164819b54f Mon Sep 17 00:00:00 2001 From: Vamsi Krishna <46787868+mathalav55@users.noreply.github.com> Date: Fri, 10 Jan 2025 10:21:52 +0530 Subject: [PATCH 6/6] fix: prevented display filter mismatch in global view creation (#6341) --- web/core/components/workspace/views/form.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/web/core/components/workspace/views/form.tsx b/web/core/components/workspace/views/form.tsx index 0bad0add36..9710f09369 100644 --- a/web/core/components/workspace/views/form.tsx +++ b/web/core/components/workspace/views/form.tsx @@ -34,6 +34,7 @@ const defaultValues: Partial = { display_properties: getComputedDisplayProperties(), display_filters: getComputedDisplayFilters({ layout: EIssueLayoutTypes.SPREADSHEET, + order_by: "-created_at", }), };