From 4a4c6e341eb9357db26dc646e8607af082fb37b2 Mon Sep 17 00:00:00 2001
From: Xavier Abad
Date: Thu, 26 Mar 2026 09:02:44 +0100
Subject: [PATCH 1/3] feat(workspace): disable workspace selector for
individuals
---
src/views/Home/components/WorkspaceSelector.tsx | 8 ++++----
src/views/Home/components/WorkspaceSelectorContainer.tsx | 1 -
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/views/Home/components/WorkspaceSelector.tsx b/src/views/Home/components/WorkspaceSelector.tsx
index 4fececc73..17bec1305 100644
--- a/src/views/Home/components/WorkspaceSelector.tsx
+++ b/src/views/Home/components/WorkspaceSelector.tsx
@@ -16,7 +16,6 @@ export interface Workspace {
interface WorkspaceSelectorProps {
userWorkspace: Workspace;
workspaces: Workspace[];
- onCreateWorkspaceButtonClicked: () => void;
onChangeWorkspace: (workspaceId: string | null) => void;
selectedWorkspace: Workspace | null;
setIsDialogOpen: (boolean) => void;
@@ -71,7 +70,6 @@ const WorkspaceCard = ({
const WorkspaceSelector: React.FC = ({
userWorkspace,
workspaces,
- onCreateWorkspaceButtonClicked,
onChangeWorkspace,
setIsDialogOpen,
pendingWorkspacesInvitesLength,
@@ -81,10 +79,12 @@ const WorkspaceSelector: React.FC = ({
isCollapsed = false,
}) => {
const dropdownRef = useRef(null);
+ const isWorkspaceDropdownDisabled = workspaces.length === 0;
const { translate } = useTranslationContext();
const toggleDropdown = () => {
+ if (isWorkspaceDropdownDisabled) return;
setIsWorkspaceSelectorOpen(!isWorkspaceSelectorOpen);
};
@@ -115,7 +115,7 @@ const WorkspaceSelector: React.FC = ({
-
+ {!isWorkspaceDropdownDisabled && }
)}
diff --git a/src/views/Home/components/WorkspaceSelectorContainer.tsx b/src/views/Home/components/WorkspaceSelectorContainer.tsx
index b19a15d1c..deaaeae38 100644
--- a/src/views/Home/components/WorkspaceSelectorContainer.tsx
+++ b/src/views/Home/components/WorkspaceSelectorContainer.tsx
@@ -85,7 +85,6 @@ const WorkspaceSelectorContainer = ({ user, isCollapsed }: WorkspaceSelectorCont
userWorkspace={userWorkspace}
workspaces={allParsedWorkspaces}
onChangeWorkspace={handleWorkspaceChange}
- onCreateWorkspaceButtonClicked={() => undefined}
selectedWorkspace={selectedWorkspace ? parseWorkspaces([selectedWorkspace])[0] : userWorkspace}
pendingWorkspacesInvitesLength={pendingWorkspacesInvites.length}
setIsDialogOpen={setIsDialogOpen}
From 98d19a9160c2cbf70e22c10d89b7d44d78061b75 Mon Sep 17 00:00:00 2001
From: Xavier Abad
Date: Thu, 26 Mar 2026 09:06:30 +0100
Subject: [PATCH 2/3] fix: german translations
---
src/app/i18n/locales/de.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/app/i18n/locales/de.json b/src/app/i18n/locales/de.json
index f42a314c7..a875ab5c5 100644
--- a/src/app/i18n/locales/de.json
+++ b/src/app/i18n/locales/de.json
@@ -842,7 +842,7 @@
"userItem": {
"roles": {
"owner": "Besitzer",
- "editor": "Herausgeber",
+ "editor": "Bearbeiter",
"reader": "Betrachter"
},
"remove": "Entfernen"
@@ -876,7 +876,7 @@
"accept": "Akzeptieren",
"deny": "Ablehnen",
"roles": {
- "editor": "Redakteur",
+ "editor": "Bearbeiter",
"reader": "Betrachter"
}
}
@@ -916,7 +916,7 @@
"duplicatedEmail": "Die E-Mail-Adresse existiert bereits",
"email": "E-Mail eingeben",
"invite": "Einladen",
- "editor": "Redakteur",
+ "editor": "Bearbeiter",
"reader": "Betrachter",
"listUsers": "einzuladende Benutzer",
"successSentInvitation": "Erfolgreiche Freigabe mit {{email}}",
From 051d26f6713ce82a13098d93ae9a35081eab5acc Mon Sep 17 00:00:00 2001
From: Xavier Abad
Date: Thu, 26 Mar 2026 09:09:35 +0100
Subject: [PATCH 3/3] feat: show oGB when the user does not have usage
---
src/components/SidenavWrapper.tsx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/components/SidenavWrapper.tsx b/src/components/SidenavWrapper.tsx
index d1e844842..aba91177e 100644
--- a/src/components/SidenavWrapper.tsx
+++ b/src/components/SidenavWrapper.tsx
@@ -52,6 +52,7 @@ const SidenavWrapper = ({
const workspaceUuid = selectedWorkspace?.workspaceUser.workspaceId;
const { itemsNavigation } = useSidenavNavigation();
const { suiteArray } = useSuiteLauncher();
+ const userUsage = planUsage > 0 ? bytesToString(planUsage) : '0GB';
const [isCollapsed, setIsCollapsed] = useState(() => {
const savedState = sessionStorage.getItem('sidenav-collapsed');
@@ -131,7 +132,7 @@ const SidenavWrapper = ({
)
}
storage={{
- usage: bytesToString(planUsage),
+ usage: userUsage,
limit: bytesToString(planLimit),
percentage: Math.min((planUsage / planLimit) * 100, 100),
onUpgradeClick: handleUpgradeClick,