From c01306734a8433905e8e0cebabe9132adb63bc4b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mar=C3=ADa=20Valderrama?=
Date: Fri, 28 Aug 2026 14:04:56 +0200
Subject: [PATCH] :bug: Fix default team and UI labels to use Personal Projects
(#11418)
* :bug: Fix default team and UI labels to use Personal Projects
* :paperclip: Code review
---
.../email/request-file-access-yourpenpot-view/en.html | 2 +-
.../email/request-file-access-yourpenpot-view/en.txt | 2 +-
.../app/email/request-file-access-yourpenpot/en.html | 2 +-
.../app/email/request-file-access-yourpenpot/en.txt | 2 +-
backend/src/app/email.clj | 4 ++--
backend/src/app/rpc/commands/nitrate.clj | 2 +-
backend/src/app/rpc/commands/profile.clj | 2 +-
backend/src/app/rpc/commands/teams.clj | 4 ++--
backend/src/app/rpc/management/nitrate.clj | 10 +++++-----
.../test/backend_tests/rpc_management_nitrate_test.clj | 2 +-
frontend/playwright/ui/pages/DashboardPage.js | 2 +-
frontend/playwright/ui/pages/OnboardingPage.js | 2 +-
frontend/src/app/main/ui/dashboard/file_menu.cljs | 2 +-
frontend/src/app/main/ui/dashboard/fonts.cljs | 2 +-
frontend/src/app/main/ui/dashboard/libraries.cljs | 2 +-
frontend/src/app/main/ui/dashboard/projects.cljs | 2 +-
frontend/src/app/main/ui/dashboard/search.cljs | 2 +-
frontend/src/app/main/ui/dashboard/sidebar.cljs | 6 +++---
frontend/src/app/main/ui/dashboard/team.cljs | 8 ++++----
frontend/translations/en.po | 7 ++-----
frontend/translations/es.po | 7 ++-----
21 files changed, 34 insertions(+), 40 deletions(-)
diff --git a/backend/resources/app/email/request-file-access-yourpenpot-view/en.html b/backend/resources/app/email/request-file-access-yourpenpot-view/en.html
index 57f0bbb781..f26a4b65da 100644
--- a/backend/resources/app/email/request-file-access-yourpenpot-view/en.html
+++ b/backend/resources/app/email/request-file-access-yourpenpot-view/en.html
@@ -191,7 +191,7 @@
file named “{{file-name|abbreviate:25}}”.
- Since this file is in your Penpot team, you can provide access by sending a view-only link.
+ Since this file is in your Personal Projects, you can provide access by sending a view-only link.
This will allow {{requested-by|abbreviate:25}} to view the content without making any changes.
To proceed, please click the button below to generate and send the view-only link:
diff --git a/backend/resources/app/email/request-file-access-yourpenpot-view/en.txt b/backend/resources/app/email/request-file-access-yourpenpot-view/en.txt
index 397f3c821d..c52649dd37 100644
--- a/backend/resources/app/email/request-file-access-yourpenpot-view/en.txt
+++ b/backend/resources/app/email/request-file-access-yourpenpot-view/en.txt
@@ -2,7 +2,7 @@ Hello!
{{requested-by|abbreviate:25}} ({{requested-by-email}}) wants to have view-only access to the file named “{{file-name|abbreviate:25}}”.
-Since this file is in your Penpot team, you can provide access by sending a view-only link. This will allow {{requested-by|abbreviate:25}} to view the content without making any changes.
+Since this file is in your Personal Projects, you can provide access by sending a view-only link. This will allow {{requested-by|abbreviate:25}} to view the content without making any changes.
To proceed, please click the link below to generate and send the view-only link:
diff --git a/backend/resources/app/email/request-file-access-yourpenpot/en.html b/backend/resources/app/email/request-file-access-yourpenpot/en.html
index ca0b00ee27..cf3161a6b6 100644
--- a/backend/resources/app/email/request-file-access-yourpenpot/en.html
+++ b/backend/resources/app/email/request-file-access-yourpenpot/en.html
@@ -191,7 +191,7 @@
“{{file-name|abbreviate:25}}”.
- Please note that the file is currently in Your Penpot 's team, so direct access cannot be
+ Please note that the file is currently in Personal Projects, so direct access cannot be
granted. However, you have two options to provide the requested access:
diff --git a/backend/resources/app/email/request-file-access-yourpenpot/en.txt b/backend/resources/app/email/request-file-access-yourpenpot/en.txt
index 81f5d5c72e..e33a0bf80a 100644
--- a/backend/resources/app/email/request-file-access-yourpenpot/en.txt
+++ b/backend/resources/app/email/request-file-access-yourpenpot/en.txt
@@ -5,7 +5,7 @@ Hello!
{{requested-by|abbreviate:25}} ({{requested-by-email}}) has requested access to the file named “{{file-name|abbreviate:25}}”.
-Please note that the file is currently in Your Penpot 's team, so direct access cannot be granted. However, you have two options to provide the requested access:
+Please note that the file is currently in Personal Projects, so direct access cannot be granted. However, you have two options to provide the requested access:
- Move the File to Another Team:
diff --git a/backend/src/app/email.clj b/backend/src/app/email.clj
index e069b2908b..120b721781 100644
--- a/backend/src/app/email.clj
+++ b/backend/src/app/email.clj
@@ -505,13 +505,13 @@
:schema schema:request-file-access))
(def request-file-access-yourpenpot
- "File access on Your Penpot request email."
+ "File access on Personal Projects request email."
(template-factory
:id ::request-file-access-yourpenpot
:schema schema:request-file-access))
(def request-file-access-yourpenpot-view
- "File access on Your Penpot view mode request email."
+ "File access on Personal Projects view mode request email."
(template-factory
:id ::request-file-access-yourpenpot-view
:schema schema:request-file-access))
diff --git a/backend/src/app/rpc/commands/nitrate.clj b/backend/src/app/rpc/commands/nitrate.clj
index 8714c5c841..2ca0032949 100644
--- a/backend/src/app/rpc/commands/nitrate.clj
+++ b/backend/src/app/rpc/commands/nitrate.clj
@@ -336,7 +336,7 @@
(doseq [{:keys [id reassign-to]} teams-to-leave]
(teams/leave-team cfg {:profile-id profile-id :id id :reassign-to reassign-to}))
- ;; Process organization "Your Penpot" team: keep with prefix if needed, otherwise delete.
+ ;; Process organization "Personal Projects" team: keep with prefix if needed, otherwise delete.
(when default-team-id
(if keep-default-team?
(db/exec! conn [sql:prefix-team-name-and-unset-default organization-prefix default-team-id])
diff --git a/backend/src/app/rpc/commands/profile.clj b/backend/src/app/rpc/commands/profile.clj
index 114f07be3e..4027efc6a4 100644
--- a/backend/src/app/rpc/commands/profile.clj
+++ b/backend/src/app/rpc/commands/profile.clj
@@ -524,7 +524,7 @@
;; Penpot back through two paths: ::notify-user-organizations-deletion
;; (during delete-owned-organizations) and ::notify-organization-deletion.
;; Both preserve organization teams unchanged and only prefix or delete
- ;; imported "Your Penpot" teams according to whether they still have files.
+ ;; imported "Personal Projects" teams according to whether they still have files.
;; Let Nitrate clean up the data associated with the deleted Penpot user:
;; owned organizations, remaining memberships, and subscription cancellation.
(when (contains? cf/flags :admin-console)
diff --git a/backend/src/app/rpc/commands/teams.clj b/backend/src/app/rpc/commands/teams.clj
index ab2a0628a5..17f23fcf9c 100644
--- a/backend/src/app/rpc/commands/teams.clj
+++ b/backend/src/app/rpc/commands/teams.clj
@@ -575,7 +575,7 @@
(set/difference cfeat/frontend-only-features)
(set/difference cfeat/no-team-inheritable-features))
params {:profile-id profile-id
- :name "Your Penpot"
+ :name "Personal Projects"
:features features
:organization-id organization-id
:is-default true}
@@ -829,7 +829,7 @@
:code :only-owner-can-delete-team))
;; Protect the user's personal default team from deletion.
- ;; Organization-scoped default teams ("Your Penpot") are allowed to be deleted when they have no files.
+ ;; Organization-scoped default teams ("Personal Projects") are allowed to be deleted when they have no files.
(when (and (:is-default team) (not in-organization?))
(ex/raise :type :validation
:code :non-deletable-team
diff --git a/backend/src/app/rpc/management/nitrate.clj b/backend/src/app/rpc/management/nitrate.clj
index 5df54b7e7f..9dc140ba4a 100644
--- a/backend/src/app/rpc/management/nitrate.clj
+++ b/backend/src/app/rpc/management/nitrate.clj
@@ -318,7 +318,7 @@ RETURNING id, deleted_at;")
(defn manage-deleted-organization-teams
"For a deleted organization, preserve organization teams unchanged and only prefix or
- delete member Your Penpot teams depending on whether they still contain files."
+ delete member Personal Projects teams depending on whether they still contain files."
[cfg {:keys [organization-id organization-name teams]}]
(let [all-team-ids (->> teams
(map :id)
@@ -347,13 +347,13 @@ RETURNING id, deleted_at;")
teams-to-delete (->> your-penpot-team-ids (remove teams-with-files) (into []))]
;; Organization teams move to the fallback organization unchanged. Only imported
- ;; Your Penpot teams keep the organization prefix when they still have files.
+ ;; Personal Projects teams keep the organization prefix when they still have files.
(when (seq teams-to-prefix)
(db/exec! conn [sql:prefix-teams-name-and-unset-default
organization-prefix
(db/create-array conn "uuid" teams-to-prefix)]))
- ;; Empty imported Your Penpot teams disappear entirely.
+ ;; Empty imported Personal Projects teams disappear entirely.
(soft-delete-teams! cfg teams-to-delete)
(notifications/notify-organization-deletion cfg organization-id organization-name all-team-ids teams-to-delete)
@@ -362,7 +362,7 @@ RETURNING id, deleted_at;")
(sv/defmethod ::notify-organization-deletion
"For a deleted organization, preserve organization teams and only prefix or delete
- imported Your Penpot teams before notifying connected users."
+ imported Personal Projects before notifying connected users."
{::doc/added "2.18"
::sm/params schema:notify-organization-deletion
::rpc/auth false}
@@ -382,7 +382,7 @@ RETURNING id, deleted_at;")
(sv/defmethod ::notify-user-organizations-deletion
"For a given user, find all owned organizations and apply the deleted-organization
- transfer rules to their imported Your Penpot teams."
+ transfer rules to their imported Personal Projects teams."
{::doc/added "2.18"
::sm/params schema:notify-user-organizations-deletion
::nitrate/sso false}
diff --git a/backend/test/backend_tests/rpc_management_nitrate_test.clj b/backend/test/backend_tests/rpc_management_nitrate_test.clj
index 455f875fd3..aabf58f31d 100644
--- a/backend/test/backend_tests/rpc_management_nitrate_test.clj
+++ b/backend/test/backend_tests/rpc_management_nitrate_test.clj
@@ -268,7 +268,7 @@
new-team (th/db-get :team {:id new-team-id})]
(t/is (th/success? out))
(t/is (= 1 (count (set/difference after-teams before-teams))))
- (t/is (= "Your Penpot" (:name new-team)))
+ (t/is (= "Personal Projects" (:name new-team)))
(t/is (true? (:is-default new-team))))))
(t/deftest get-managed-profiles-returns-unique-members-for-owned-teams
diff --git a/frontend/playwright/ui/pages/DashboardPage.js b/frontend/playwright/ui/pages/DashboardPage.js
index 4dee04f18e..eb4bea0b9f 100644
--- a/frontend/playwright/ui/pages/DashboardPage.js
+++ b/frontend/playwright/ui/pages/DashboardPage.js
@@ -86,7 +86,7 @@ export class DashboardPage extends BaseWebSocketPage {
this.searchInput = page.getByPlaceholder("Search…");
this.teamDropdown = this.sidebar.getByRole("button", {
- name: "Your Penpot",
+ name: "Personal Projects",
});
this.userAccount = this.sidebar.getByRole("button", {
name: /Princesa Leia/,
diff --git a/frontend/playwright/ui/pages/OnboardingPage.js b/frontend/playwright/ui/pages/OnboardingPage.js
index bbf59bbab6..0fe447463e 100644
--- a/frontend/playwright/ui/pages/OnboardingPage.js
+++ b/frontend/playwright/ui/pages/OnboardingPage.js
@@ -7,7 +7,7 @@ export class OnboardingPage extends BaseWebSocketPage {
}
async fillOnboardingInputsStep1() {
- await this.page.getByText("Personal").click();
+ await this.page.getByText("Personal", { exact: true }).click();
await this.page.getByText("Select option").click();
await this.page.getByText("Product Management").click();
diff --git a/frontend/src/app/main/ui/dashboard/file_menu.cljs b/frontend/src/app/main/ui/dashboard/file_menu.cljs
index c3d466e3d3..bbd38efed2 100644
--- a/frontend/src/app/main/ui/dashboard/file_menu.cljs
+++ b/frontend/src/app/main/ui/dashboard/file_menu.cljs
@@ -37,7 +37,7 @@
(defn- get-team-name
[team]
(if (:is-default team)
- (tr "dashboard.your-penpot")
+ (tr "dashboard.personal-projects")
(:name team)))
(defn- group-by-team
diff --git a/frontend/src/app/main/ui/dashboard/fonts.cljs b/frontend/src/app/main/ui/dashboard/fonts.cljs
index 6c248beb04..b5795a69ac 100644
--- a/frontend/src/app/main/ui/dashboard/fonts.cljs
+++ b/frontend/src/app/main/ui/dashboard/fonts.cljs
@@ -43,7 +43,7 @@
(mf/with-effect [team]
(when team
(let [tname (if (:is-default team)
- (tr "dashboard.your-penpot")
+ (tr "dashboard.personal-projects")
(:name team))]
(case section
:fonts (dom/set-html-title (tr "title.dashboard.fonts" tname))
diff --git a/frontend/src/app/main/ui/dashboard/libraries.cljs b/frontend/src/app/main/ui/dashboard/libraries.cljs
index f907d04b53..c5443b7bca 100644
--- a/frontend/src/app/main/ui/dashboard/libraries.cljs
+++ b/frontend/src/app/main/ui/dashboard/libraries.cljs
@@ -52,7 +52,7 @@
(mf/with-effect [team]
(let [tname (if (:is-default team)
- (tr "dashboard.your-penpot")
+ (tr "dashboard.personal-projects")
(:name team))]
(dom/set-html-title (tr "title.dashboard.shared-libraries" tname))))
diff --git a/frontend/src/app/main/ui/dashboard/projects.cljs b/frontend/src/app/main/ui/dashboard/projects.cljs
index 441bf5cc5c..521a20cd55 100644
--- a/frontend/src/app/main/ui/dashboard/projects.cljs
+++ b/frontend/src/app/main/ui/dashboard/projects.cljs
@@ -357,7 +357,7 @@
(mf/with-effect [team]
(let [tname (if (:is-default team)
- (tr "dashboard.your-penpot")
+ (tr "dashboard.personal-projects")
(:name team))]
(dom/set-html-title (tr "title.dashboard.projects" tname))))
diff --git a/frontend/src/app/main/ui/dashboard/search.cljs b/frontend/src/app/main/ui/dashboard/search.cljs
index bd52a5fa57..01ad54548e 100644
--- a/frontend/src/app/main/ui/dashboard/search.cljs
+++ b/frontend/src/app/main/ui/dashboard/search.cljs
@@ -44,7 +44,7 @@
(mf/with-effect [team]
(when team
(let [tname (if (:is-default team)
- (tr "dashboard.your-penpot")
+ (tr "dashboard.personal-projects")
(:name team))]
(dom/set-html-title (tr "title.dashboard.search" tname)))))
diff --git a/frontend/src/app/main/ui/dashboard/sidebar.cljs b/frontend/src/app/main/ui/dashboard/sidebar.cljs
index 3036dad42c..1767ce9e23 100644
--- a/frontend/src/app/main/ui/dashboard/sidebar.cljs
+++ b/frontend/src/app/main/ui/dashboard/sidebar.cljs
@@ -438,7 +438,7 @@
(when-not (contains? cf/flags :admin-console)
[:span {:class (stl/css :penpot-icon)} deprecated-icon/logo-icon])
- [:span {:class (stl/css :team-text)} (if (contains? cf/flags :admin-console) (tr "dashboard.personal-projects") (tr "dashboard.your-penpot"))]
+ [:span {:class (stl/css :team-text)} (tr "dashboard.personal-projects")]
(when (= default-team-id (:id team))
tick-icon)]
@@ -725,7 +725,7 @@
current-organization (dtm/team->organization team)
- ;; Find the "your-penpot" teams, and transform them in organizations. When
+ ;; Find the "personal-projects" teams, and transform them in organizations. When
;; the selected team is directly accessible but not listed in
;; membership teams, include only its organization so the organization selector can
;; show the current selection without leaking the team into the
@@ -972,7 +972,7 @@
:team-name-no-logo nitrate?)}
(when-not nitrate?
[:span {:class (stl/css :penpot-icon)} deprecated-icon/logo-icon])
- [:span {:class (stl/css :team-text)} (if nitrate? (tr "dashboard.personal-projects") (tr "dashboard.default-team-name"))]]
+ [:span {:class (stl/css :team-text)} (tr "dashboard.personal-projects")]]
(and (contains? cf/flags :subscriptions)
(not is-default?)
diff --git a/frontend/src/app/main/ui/dashboard/team.cljs b/frontend/src/app/main/ui/dashboard/team.cljs
index a39b5eb9be..df94f26837 100644
--- a/frontend/src/app/main/ui/dashboard/team.cljs
+++ b/frontend/src/app/main/ui/dashboard/team.cljs
@@ -644,7 +644,7 @@
(dom/set-html-title
(tr "title.team-members"
(if (:is-default team)
- (tr "dashboard.your-penpot")
+ (tr "dashboard.personal-projects")
(:name team)))))
(mf/with-effect [(:id team)]
@@ -1248,7 +1248,7 @@
(dom/set-html-title
(tr "title.team-invitations"
(if (:is-default team)
- (tr "dashboard.your-penpot")
+ (tr "dashboard.personal-projects")
(:name team)))))
(mf/with-effect [(:id team)]
@@ -1528,7 +1528,7 @@
(dom/set-html-title
(tr "title.team-webhooks"
(if (:is-default team)
- (tr "dashboard.your-penpot")
+ (tr "dashboard.personal-projects")
(:name team)))))
(mf/with-effect []
@@ -1635,7 +1635,7 @@
(mf/with-effect [team]
(dom/set-html-title (tr "title.team-settings"
(if (:is-default team)
- (tr "dashboard.your-penpot")
+ (tr "dashboard.personal-projects")
(:name team)))))
(mf/with-effect []
diff --git a/frontend/translations/en.po b/frontend/translations/en.po
index 50bf6b331e..3254e20103 100644
--- a/frontend/translations/en.po
+++ b/frontend/translations/en.po
@@ -413,7 +413,7 @@ msgstr "Pin this version"
#: src/app/main/ui/components/context_menu_a11y.cljs:300, src/app/main/ui/dashboard/sidebar.cljs:882
msgid "dashboard.default-team-name"
-msgstr "Your Penpot"
+msgstr "Personal Projects"
#: src/app/main/ui/dashboard/deleted.cljs:265
msgid "dashboard.delete-all-forever-confirmation.description"
@@ -1437,9 +1437,6 @@ msgid "dashboard.your-name"
msgstr "Your name"
#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:46, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:352, src/app/main/ui/dashboard/search.cljs:47, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:616, src/app/main/ui/dashboard/team.cljs:1191, src/app/main/ui/dashboard/team.cljs:1471, src/app/main/ui/dashboard/team.cljs:1577
-msgid "dashboard.your-penpot"
-msgstr "Your Penpot"
-
msgid "dashboard.personal-projects"
msgstr "Personal Projects"
@@ -4631,7 +4628,7 @@ msgstr "You don't have access to this file."
#: src/app/main/ui/static.cljs:62, src/app/main/ui/static.cljs:265, src/app/main/ui/static.cljs:271, src/app/main/ui/static.cljs:277, src/app/main/ui/static.cljs:283, src/app/main/ui/static.cljs:292, src/app/main/ui/static.cljs:301
msgid "not-found.no-permission.go-dashboard"
-msgstr "Go to your Penpot"
+msgstr "Go to Personal Projects"
#: src/app/main/ui/static.cljs:289, src/app/main/ui/static.cljs:298
msgid "not-found.no-permission.if-approves"
diff --git a/frontend/translations/es.po b/frontend/translations/es.po
index 4ff509285e..146a4b72e3 100644
--- a/frontend/translations/es.po
+++ b/frontend/translations/es.po
@@ -420,7 +420,7 @@ msgstr "Guardar esta versión"
#: src/app/main/ui/components/context_menu_a11y.cljs:300, src/app/main/ui/dashboard/sidebar.cljs:882
msgid "dashboard.default-team-name"
-msgstr "Tu Penpot"
+msgstr "Proyectos Personales"
#: src/app/main/ui/dashboard/deleted.cljs:265
msgid "dashboard.delete-all-forever-confirmation.description"
@@ -1444,9 +1444,6 @@ msgid "dashboard.your-name"
msgstr "Tu nombre"
#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:46, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:352, src/app/main/ui/dashboard/search.cljs:47, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:616, src/app/main/ui/dashboard/team.cljs:1191, src/app/main/ui/dashboard/team.cljs:1471, src/app/main/ui/dashboard/team.cljs:1577
-msgid "dashboard.your-penpot"
-msgstr "Tu Penpot"
-
msgid "dashboard.personal-projects"
msgstr "Proyectos Personales"
@@ -4503,7 +4500,7 @@ msgstr "No tienes permiso para acceder a este archivo."
#: src/app/main/ui/static.cljs:62, src/app/main/ui/static.cljs:265, src/app/main/ui/static.cljs:271, src/app/main/ui/static.cljs:277, src/app/main/ui/static.cljs:283, src/app/main/ui/static.cljs:292, src/app/main/ui/static.cljs:301
msgid "not-found.no-permission.go-dashboard"
-msgstr "Ir a tu Penpot"
+msgstr "Ir a tus Proyectos Personales"
#: src/app/main/ui/static.cljs:289, src/app/main/ui/static.cljs:298
msgid "not-found.no-permission.if-approves"