From 0de31fe59716b1c2c0cc4eb2ada41829e203ad82 Mon Sep 17 00:00:00 2001 From: sokumon Date: Sun, 1 Feb 2026 21:25:13 +0530 Subject: [PATCH 1/3] fix: routing issues with private workspaces --- frappe/public/js/frappe/router.js | 3 ++- frappe/public/js/frappe/ui/sidebar/sidebar.js | 1 - frappe/public/js/frappe/ui/sidebar/sidebar_item.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/router.js b/frappe/public/js/frappe/router.js index 4d45ed853a..d98700073e 100644 --- a/frappe/public/js/frappe/router.js +++ b/frappe/public/js/frappe/router.js @@ -173,7 +173,8 @@ frappe.router = { route = ["Workspaces", frappe.workspaces[route[0]].name]; } else if (route[0] == "private") { // private workspace - let private_workspace = route[1] && `${route[1]}-${frappe.user.name.toLowerCase()}`; + let private_workspace = + route[1] && frappe.router.slug(`${route[1]}-${frappe.user.name.toLowerCase()}`); if (!frappe.workspaces[private_workspace]) { frappe.msgprint( __("Workspace {0} does not exist", [ diff --git a/frappe/public/js/frappe/ui/sidebar/sidebar.js b/frappe/public/js/frappe/ui/sidebar/sidebar.js index 51bdb31ab2..aa861245cd 100644 --- a/frappe/public/js/frappe/ui/sidebar/sidebar.js +++ b/frappe/public/js/frappe/ui/sidebar/sidebar.js @@ -550,7 +550,6 @@ frappe.ui.Sidebar = class Sidebar { let sidebars = []; Object.entries(this.all_sidebar_items).forEach(([name, sidebar]) => { const { items, label } = sidebar; - if (label.includes("My Workspaces")) return; items.forEach((item) => { if (item.link_to === link_to) { sidebars.push(label || name); diff --git a/frappe/public/js/frappe/ui/sidebar/sidebar_item.js b/frappe/public/js/frappe/ui/sidebar/sidebar_item.js index 760b81e193..6fad636ee5 100644 --- a/frappe/public/js/frappe/ui/sidebar/sidebar_item.js +++ b/frappe/public/js/frappe/ui/sidebar/sidebar_item.js @@ -36,7 +36,7 @@ frappe.ui.sidebar_item.TypeLink = class SidebarItem { if (workspaces.public) { path = "/desk/" + frappe.router.slug(this.item.link_to); } else { - path = "/desk/private/" + frappe.router.slug(workspaces.title); + path = "/desk/private/" + frappe.router.slug(this.item.link_to); } if (this.item.route) { From be4f4b6f5f01559fa8aa3adce3e19a9e5ab05732 Mon Sep 17 00:00:00 2001 From: sokumon Date: Mon, 2 Feb 2026 12:14:30 +0530 Subject: [PATCH 2/3] fix: don't export non standard workspace sidebar --- frappe/desk/doctype/workspace_sidebar/workspace_sidebar.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/desk/doctype/workspace_sidebar/workspace_sidebar.py b/frappe/desk/doctype/workspace_sidebar/workspace_sidebar.py index 7360fdc24f..efa7f0795e 100644 --- a/frappe/desk/doctype/workspace_sidebar/workspace_sidebar.py +++ b/frappe/desk/doctype/workspace_sidebar/workspace_sidebar.py @@ -54,7 +54,9 @@ class WorkspaceSidebar(Document): self.set_module() def export_sidebar(self): - allow_export = self.app and not frappe.flags.in_import and frappe.conf.developer_mode + allow_export = ( + self.app and self.standard and not frappe.flags.in_import and frappe.conf.developer_mode + ) if allow_export: folder_path = create_directory_on_app_path("workspace_sidebar", self.app) file_path = os.path.join(folder_path, f"{frappe.scrub(self.title)}.json") From 5e77082f409885b95dae8a850b2c8fa848f59a0b Mon Sep 17 00:00:00 2001 From: sokumon Date: Mon, 2 Feb 2026 12:36:32 +0530 Subject: [PATCH 3/3] fix: alllow everyone to make private workspaces --- .../workspace_sidebar/workspace_sidebar.json | 14 +++++++++++++- frappe/public/js/frappe/ui/sidebar/sidebar.js | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/frappe/desk/doctype/workspace_sidebar/workspace_sidebar.json b/frappe/desk/doctype/workspace_sidebar/workspace_sidebar.json index b2ffbdc56c..371c6564df 100644 --- a/frappe/desk/doctype/workspace_sidebar/workspace_sidebar.json +++ b/frappe/desk/doctype/workspace_sidebar/workspace_sidebar.json @@ -72,7 +72,7 @@ "grid_page_length": 50, "index_web_pages_for_search": 1, "links": [], - "modified": "2026-01-10 22:12:40.504715", + "modified": "2026-02-02 12:35:38.009501", "modified_by": "Administrator", "module": "Desk", "name": "Workspace Sidebar", @@ -90,6 +90,18 @@ "role": "System Manager", "share": 1, "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Desk User", + "share": 1, + "write": 1 } ], "row_format": "Dynamic", diff --git a/frappe/public/js/frappe/ui/sidebar/sidebar.js b/frappe/public/js/frappe/ui/sidebar/sidebar.js index aa861245cd..50f25b5a2c 100644 --- a/frappe/public/js/frappe/ui/sidebar/sidebar.js +++ b/frappe/public/js/frappe/ui/sidebar/sidebar.js @@ -30,6 +30,7 @@ frappe.ui.Sidebar = class Sidebar { this.add_standard_items(); this.sidebar_data = frappe.boot.workspace_sidebar_item[this.workspace_title]; this.workspace_sidebar_items = this.sidebar_data.items; + this.all_sidebar_items = frappe.boot.workspace_sidebar_item; if (this.edit_mode) { this.workspace_sidebar_items = this.editor.new_sidebar_items; }