From fa86a48e067f52e6a7ec35c84f7700640c4d767f Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Sat, 21 Mar 2026 22:30:20 -0300
Subject: [PATCH 1/7] chore(l10n): add l10n gitkeep for transifex
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
l10n/.gitkeep | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 l10n/.gitkeep
diff --git a/l10n/.gitkeep b/l10n/.gitkeep
new file mode 100644
index 0000000..e69de29
From a9890fdd405c456af4b7b52fb265ea57b0e87347 Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Sat, 21 Mar 2026 22:30:20 -0300
Subject: [PATCH 2/7] fix(l10n): use unicode ellipsis in personal settings
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
src/views/PersonalSettings.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/views/PersonalSettings.vue b/src/views/PersonalSettings.vue
index 327ec7b..af78918 100644
--- a/src/views/PersonalSettings.vue
+++ b/src/views/PersonalSettings.vue
@@ -151,7 +151,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
/>
- {{ isSaving(field.definition.id) ? t('profile_fields', 'Saving changes...') : t('profile_fields', 'Save changes') }}
+ {{ isSaving(field.definition.id) ? t('profile_fields', 'Saving changes…') : t('profile_fields', 'Save changes') }}
From 439408afba5c5456e3f3958976c171109f6301ec Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Sat, 21 Mar 2026 22:30:20 -0300
Subject: [PATCH 3/7] fix(l10n): use unicode ellipsis in admin settings
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
src/views/AdminSettings.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/views/AdminSettings.vue b/src/views/AdminSettings.vue
index 5cb9738..5d0530e 100644
--- a/src/views/AdminSettings.vue
+++ b/src/views/AdminSettings.vue
@@ -397,7 +397,7 @@ const editorEmptyState = computed(() => sortedDefinitions.value.length === 0
description: t('profile_fields', 'Select a field from the list, or create a new one.'),
})
const configuredFieldsCountLabel = computed(() => n('profile_fields', 'field configured', 'fields configured', definitions.value.length, { count: definitions.value.length }))
-const saveActionLabel = computed(() => isSaving.value ? t('profile_fields', 'Saving changes...') : (isEditing.value ? t('profile_fields', 'Save changes') : t('profile_fields', 'Create field')))
+const saveActionLabel = computed(() => isSaving.value ? t('profile_fields', 'Saving changes…') : (isEditing.value ? t('profile_fields', 'Save changes') : t('profile_fields', 'Create field')))
const editFieldAriaLabel = (label: string) => t('profile_fields', 'Edit field {label}', { label })
const actionsForLabel = (label: string) => t('profile_fields', 'Actions for {label}', { label })
const toggleDefinitionActiveLabel = (definition: FieldDefinition) => definition.active
From 592d882270bdd4bc139a80aa87a526b59a389065 Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Sat, 21 Mar 2026 22:32:43 -0300
Subject: [PATCH 4/7] fix(i18n): use unicode ellipsis in admin user dialog
strings
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
src/components/AdminUserFieldsDialog.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/AdminUserFieldsDialog.vue b/src/components/AdminUserFieldsDialog.vue
index b8aec8e..3a2314d 100644
--- a/src/components/AdminUserFieldsDialog.vue
+++ b/src/components/AdminUserFieldsDialog.vue
@@ -124,7 +124,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
{{ t('profile_fields', 'Cancel') }}
- {{ isSavingAny ? t('profile_fields', 'Saving changes...') : t('profile_fields', 'Save changes') }}
+ {{ isSavingAny ? t('profile_fields', 'Saving changes…') : t('profile_fields', 'Save changes') }}
@@ -184,7 +184,7 @@ export default defineComponent({
const headerUserName = computed(() => props.userDisplayName.trim() !== '' ? props.userDisplayName : props.userUid)
const visibilityFieldLabel = t('profile_fields', 'Who can view this field value')
- const loadingMessage = computed(() => t('profile_fields', 'Loading profile fields for {userUid}...', { userUid: props.userUid }))
+ const loadingMessage = computed(() => t('profile_fields', 'Loading profile fields for {userUid}…', { userUid: props.userUid }))
const editableFields = computed(() => buildAdminEditableFields(definitions.value, userValues.value))
const isSavingAny = computed(() => savingIds.value.length > 0)
const headerDescription = computed(() => {
From 9f4ff86c0b567b11b674640fcee9165f78abc22a Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Sat, 21 Mar 2026 22:32:43 -0300
Subject: [PATCH 5/7] fix(i18n): use unicode ellipsis in webhook placeholder
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
src/workflow.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/workflow.ts b/src/workflow.ts
index 708135f..62f3358 100644
--- a/src/workflow.ts
+++ b/src/workflow.ts
@@ -681,7 +681,7 @@ class WorkflowWebhookOperationElement extends HTMLElement {
urlInput.type = 'url'
urlInput.value = config.url
urlInput.disabled = this.disabledInternal
- urlInput.placeholder = t('profile_fields', 'Webhook URL (https://...)')
+ urlInput.placeholder = t('profile_fields', 'Webhook URL (https://…)')
urlInput.className = config.url === '' || isUrlValid ? '' : 'invalid'
const secretInput = document.createElement('input')
From 9b6c06ac268365d9855ae266eed66e6d1066fe6f Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Sat, 21 Mar 2026 22:34:56 -0300
Subject: [PATCH 6/7] fix: indent
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
src/views/PersonalSettings.vue | 2 +-
src/workflow.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/views/PersonalSettings.vue b/src/views/PersonalSettings.vue
index af78918..7a9e26f 100644
--- a/src/views/PersonalSettings.vue
+++ b/src/views/PersonalSettings.vue
@@ -151,7 +151,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
/>
- {{ isSaving(field.definition.id) ? t('profile_fields', 'Saving changes…') : t('profile_fields', 'Save changes') }}
+ {{ isSaving(field.definition.id) ? t('profile_fields', 'Saving changes…') : t('profile_fields', 'Save changes') }}
diff --git a/src/workflow.ts b/src/workflow.ts
index 62f3358..34c925d 100644
--- a/src/workflow.ts
+++ b/src/workflow.ts
@@ -681,7 +681,7 @@ class WorkflowWebhookOperationElement extends HTMLElement {
urlInput.type = 'url'
urlInput.value = config.url
urlInput.disabled = this.disabledInternal
- urlInput.placeholder = t('profile_fields', 'Webhook URL (https://…)')
+ urlInput.placeholder = t('profile_fields', 'Webhook URL (https://…)')
urlInput.className = config.url === '' || isUrlValid ? '' : 'invalid'
const secretInput = document.createElement('input')
From e70e83e7b0f503eec4f4537f014ba7c007980b81 Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Sat, 21 Mar 2026 22:38:10 -0300
Subject: [PATCH 7/7] chore: update documentation
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
openapi-administration.json | 2 +-
openapi-full.json | 2 +-
openapi.json | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/openapi-administration.json b/openapi-administration.json
index 6c52dc4..2e9da01 100644
--- a/openapi-administration.json
+++ b/openapi-administration.json
@@ -3,7 +3,7 @@
"info": {
"title": "profile_fields-administration",
"version": "0.0.1",
- "description": "Structured custom profile data for directories, operations and support teams",
+ "description": "Extend Nextcloud user profiles with customizable fields, access control, and integration-friendly APIs",
"license": {
"name": "agpl"
}
diff --git a/openapi-full.json b/openapi-full.json
index 551804d..fa4bd48 100644
--- a/openapi-full.json
+++ b/openapi-full.json
@@ -3,7 +3,7 @@
"info": {
"title": "profile_fields-full",
"version": "0.0.1",
- "description": "Structured custom profile data for directories, operations and support teams",
+ "description": "Extend Nextcloud user profiles with customizable fields, access control, and integration-friendly APIs",
"license": {
"name": "agpl"
}
diff --git a/openapi.json b/openapi.json
index d5e81eb..fe05e2d 100644
--- a/openapi.json
+++ b/openapi.json
@@ -3,7 +3,7 @@
"info": {
"title": "profile_fields",
"version": "0.0.1",
- "description": "Structured custom profile data for directories, operations and support teams",
+ "description": "Extend Nextcloud user profiles with customizable fields, access control, and integration-friendly APIs",
"license": {
"name": "agpl"
}