From d2fc6b8b0807f30be103e48b85a1a4ce2be522a3 Mon Sep 17 00:00:00 2001
From: Remko
Date: Fri, 21 Aug 2026 16:29:29 +0200
Subject: [PATCH 01/38] refactor(menu): declutter the navigation into the old
minimal shape
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Stage 1 of the original-look restyle. The Vault menu entry becomes
\"All secrets\" with a key icon (KeyVariant registered in src/icons.js —
unregistered icon names render no icon at all), and the Certificates and
Emergency access entries move from the footer to the settings foldout.
Documentation, Features & roadmap, My activity and Password health
deliberately stay in the footer.
Also removes the duplicated \"Personal settings\" opener: CnAppNav
auto-prepends its own entry at the top of the settings foldout while the
manifest already declares the UserSettings entry (action: user-settings),
so the same dialog had two openers. nav.includePersonalSettings:false
keeps the explicit manifest entry as the only one — the e2e specs assert
it, and the upcoming manifest-driven nav override renders it directly.
The manifest schema rejects _note on nav and menu entries, hence this
explanation lives here.
Placement assertions in page-surfaces.spec.ts follow the relabel and the
two moved entries; the local restyle plan file is gitignored.
---
.gitignore | 2 ++
src/icons.js | 2 ++
src/manifest.json | 11 +++++++----
tests/e2e/workflows/page-surfaces.spec.ts | 8 ++++++--
4 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/.gitignore b/.gitignore
index fd45ae8b9..6ff57d9b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -121,3 +121,5 @@ openspec/test-site-results/**/*.webp
# docs-site build artefacts (regenerated by npm; never track)
docs/node_modules/
docs/build/
+
+RESTYLE-PLAN.md
\ No newline at end of file
diff --git a/src/icons.js b/src/icons.js
index eeb214c63..46ea8dcb6 100644
--- a/src/icons.js
+++ b/src/icons.js
@@ -21,6 +21,7 @@ import ClipboardList from 'vue-material-design-icons/ClipboardList.vue'
import CogOutline from 'vue-material-design-icons/CogOutline.vue'
import FileDocumentOutline from 'vue-material-design-icons/FileDocumentOutline.vue'
import FolderOutline from 'vue-material-design-icons/FolderOutline.vue'
+import KeyVariant from 'vue-material-design-icons/KeyVariant.vue'
import LockOutline from 'vue-material-design-icons/LockOutline.vue'
import MapMarkerPath from 'vue-material-design-icons/MapMarkerPath.vue'
import Plus from 'vue-material-design-icons/Plus.vue'
@@ -38,6 +39,7 @@ export default {
CogOutline,
FileDocumentOutline,
FolderOutline,
+ KeyVariant,
LockOutline,
MapMarkerPath,
Plus,
diff --git a/src/manifest.json b/src/manifest.json
index 059e2d68a..e035c4654 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -2,6 +2,9 @@
"$schema": "https://raw.githubusercontent.com/ConductionNL/nextcloud-vue/main/src/schemas/app-manifest-v2.schema.json",
"version": "1.0.0",
"dependencies": [],
+ "nav": {
+ "includePersonalSettings": false
+ },
"menu": [
{
"id": "Dashboard",
@@ -12,8 +15,8 @@
},
{
"id": "Vault",
- "label": "Vault",
- "icon": "LockOutline",
+ "label": "All secrets",
+ "icon": "KeyVariant",
"route": "SecretList",
"order": 20
},
@@ -62,7 +65,7 @@
"label": "Certificates",
"icon": "CertificateOutline",
"route": "Certificates",
- "section": "footer",
+ "section": "settings",
"order": 88
},
{
@@ -70,7 +73,7 @@
"label": "Emergency access",
"icon": "ShieldKeyOutline",
"route": "EmergencyAccess",
- "section": "footer",
+ "section": "settings",
"order": 89
},
{
diff --git a/tests/e2e/workflows/page-surfaces.spec.ts b/tests/e2e/workflows/page-surfaces.spec.ts
index 3f9da1027..8d7846bc5 100644
--- a/tests/e2e/workflows/page-surfaces.spec.ts
+++ b/tests/e2e/workflows/page-surfaces.spec.ts
@@ -319,13 +319,17 @@ test.describe('Routed page surfaces — authenticated', () => {
placement.Dashboard,
`the nav did not render its daily-use entries (saw: ${JSON.stringify(placement)})`,
).toBe('main')
- expect(placement.Vault).toBe('main')
- // …and the relocated entry is in the foldout, not the main list. Both
+ expect(placement['All secrets']).toBe('main')
+ // …and the relocated entries are in the foldout, not the main list. Both
// halves: "not in main" alone would also pass if it vanished entirely.
expect(
placement.Applications,
`"Applications" should be in the settings foldout (saw: ${JSON.stringify(placement)})`,
).toBe('foldout')
+ // Restyle Stage 1: Certificates and Emergency access moved from the
+ // footer to the settings foldout (RESTYLE-PLAN.md).
+ expect(placement.Certificates).toBe('foldout')
+ expect(placement['Emergency access']).toBe('foldout')
})
test('ApplicationRegisterView lists the caller’s applications at #/applications', async ({
From 3b80a70eb3ceb7845d1e0c3dbc2c8fc4c27d4bbd Mon Sep 17 00:00:00 2001
From: Remko
Date: Mon, 24 Aug 2026 16:38:48 +0200
Subject: [PATCH 02/38] feat(settings): show the app version in the
user-settings dialog
---
l10n/be.js | 3 +-
l10n/be.json | 3 +-
l10n/bg.js | 3 +-
l10n/bg.json | 3 +-
l10n/bs.js | 3 +-
l10n/bs.json | 3 +-
l10n/ca.js | 3 +-
l10n/ca.json | 3 +-
l10n/cs.js | 3 +-
l10n/cs.json | 3 +-
l10n/da.js | 3 +-
l10n/da.json | 3 +-
l10n/de.js | 3 +-
l10n/de.json | 3 +-
l10n/el.js | 3 +-
l10n/el.json | 3 +-
l10n/en.js | 3 +-
l10n/en.json | 3 +-
l10n/es.js | 3 +-
l10n/es.json | 3 +-
l10n/et.js | 3 +-
l10n/et.json | 3 +-
l10n/fi.js | 3 +-
l10n/fi.json | 3 +-
l10n/fr.js | 3 +-
l10n/fr.json | 3 +-
l10n/ga.js | 3 +-
l10n/ga.json | 3 +-
l10n/hr.js | 3 +-
l10n/hr.json | 3 +-
l10n/hu.js | 3 +-
l10n/hu.json | 3 +-
l10n/is.js | 3 +-
l10n/is.json | 3 +-
l10n/it.js | 3 +-
l10n/it.json | 3 +-
l10n/lb.js | 3 +-
l10n/lb.json | 3 +-
l10n/lt.js | 3 +-
l10n/lt.json | 3 +-
l10n/lv.js | 3 +-
l10n/lv.json | 3 +-
l10n/mk.js | 3 +-
l10n/mk.json | 3 +-
l10n/mt.js | 3 +-
l10n/mt.json | 3 +-
l10n/nb.js | 3 +-
l10n/nb.json | 3 +-
l10n/nl.js | 3 +-
l10n/nl.json | 3 +-
l10n/pl.js | 3 +-
l10n/pl.json | 3 +-
l10n/pt.js | 3 +-
l10n/pt.json | 3 +-
l10n/rm.js | 3 +-
l10n/rm.json | 3 +-
l10n/ro.js | 3 +-
l10n/ro.json | 3 +-
l10n/ru.js | 3 +-
l10n/ru.json | 3 +-
l10n/sk.js | 3 +-
l10n/sk.json | 3 +-
l10n/sl.js | 3 +-
l10n/sl.json | 3 +-
l10n/sq.js | 3 +-
l10n/sq.json | 3 +-
l10n/sr.js | 3 +-
l10n/sr.json | 3 +-
l10n/sv.js | 3 +-
l10n/sv.json | 3 +-
l10n/tr.js | 3 +-
l10n/tr.json | 3 +-
l10n/uk.js | 3 +-
l10n/uk.json | 3 +-
lib/Controller/DashboardController.php | 11 ++++
src/App.vue | 20 +++++++
.../Controller/DashboardControllerTest.php | 53 ++++++++++++++++++-
77 files changed, 231 insertions(+), 75 deletions(-)
diff --git a/l10n/be.js b/l10n/be.js
index 785cd27d6..393c5d0c7 100644
--- a/l10n/be.js
+++ b/l10n/be.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Выдаліць",
"Remove this field": "Выдаліць гэта поле",
"Give the field a name.": "Дайце полю назву.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — убудаванае поле, а не дадатковае: выберыце іншую назву."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — убудаванае поле, а не дадатковае: выберыце іншую назву.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/be.json b/l10n/be.json
index 28698c073..bce470960 100644
--- a/l10n/be.json
+++ b/l10n/be.json
@@ -425,7 +425,8 @@
"Remove": "Выдаліць",
"Remove this field": "Выдаліць гэта поле",
"Give the field a name.": "Дайце полю назву.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — убудаванае поле, а не дадатковае: выберыце іншую назву."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — убудаванае поле, а не дадатковае: выберыце іншую назву.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/bg.js b/l10n/bg.js
index 8a36e0be5..4aee466cd 100644
--- a/l10n/bg.js
+++ b/l10n/bg.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Премахване",
"Remove this field": "Премахване на това поле",
"Give the field a name.": "Дайте име на полето.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ е вградено поле, а не допълнително — изберете друго име."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ е вградено поле, а не допълнително — изберете друго име.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/bg.json b/l10n/bg.json
index 1b5d29911..201c9238b 100644
--- a/l10n/bg.json
+++ b/l10n/bg.json
@@ -425,7 +425,8 @@
"Remove": "Премахване",
"Remove this field": "Премахване на това поле",
"Give the field a name.": "Дайте име на полето.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ е вградено поле, а не допълнително — изберете друго име."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ е вградено поле, а не допълнително — изберете друго име.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/bs.js b/l10n/bs.js
index ff64e26f2..082087acb 100644
--- a/l10n/bs.js
+++ b/l10n/bs.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Ukloni",
"Remove this field": "Ukloni ovo polje",
"Give the field a name.": "Dajte polju naziv.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je ugrađeno polje, a ne dodatno — odaberite drugi naziv."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je ugrađeno polje, a ne dodatno — odaberite drugi naziv.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/bs.json b/l10n/bs.json
index 1f2196a54..a86933009 100644
--- a/l10n/bs.json
+++ b/l10n/bs.json
@@ -425,7 +425,8 @@
"Remove": "Ukloni",
"Remove this field": "Ukloni ovo polje",
"Give the field a name.": "Dajte polju naziv.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je ugrađeno polje, a ne dodatno — odaberite drugi naziv."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je ugrađeno polje, a ne dodatno — odaberite drugi naziv.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/ca.js b/l10n/ca.js
index e3133ef73..7bc790de7 100644
--- a/l10n/ca.js
+++ b/l10n/ca.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Elimina",
"Remove this field": "Elimina aquest camp",
"Give the field a name.": "Doneu un nom al camp.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» és un camp integrat, no addicional: trieu un altre nom."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» és un camp integrat, no addicional: trieu un altre nom.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/ca.json b/l10n/ca.json
index 49aa8c0d5..0bcd1d31e 100644
--- a/l10n/ca.json
+++ b/l10n/ca.json
@@ -425,7 +425,8 @@
"Remove": "Elimina",
"Remove this field": "Elimina aquest camp",
"Give the field a name.": "Doneu un nom al camp.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» és un camp integrat, no addicional: trieu un altre nom."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» és un camp integrat, no addicional: trieu un altre nom.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/cs.js b/l10n/cs.js
index c13446fb3..6b9e93528 100644
--- a/l10n/cs.js
+++ b/l10n/cs.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Odebrat",
"Remove this field": "Odebrat toto pole",
"Give the field a name.": "Pojmenujte pole.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vestavěné pole, nikoli další — zvolte jiný název."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vestavěné pole, nikoli další — zvolte jiný název.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/cs.json b/l10n/cs.json
index 01dde50ed..8df63263e 100644
--- a/l10n/cs.json
+++ b/l10n/cs.json
@@ -425,7 +425,8 @@
"Remove": "Odebrat",
"Remove this field": "Odebrat toto pole",
"Give the field a name.": "Pojmenujte pole.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vestavěné pole, nikoli další — zvolte jiný název."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vestavěné pole, nikoli další — zvolte jiný název.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/da.js b/l10n/da.js
index 0f0c23f54..e20915af2 100644
--- a/l10n/da.js
+++ b/l10n/da.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Fjern",
"Remove this field": "Fjern dette felt",
"Give the field a name.": "Giv feltet et navn.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” er et indbygget felt, ikke et yderligere — vælg et andet navn."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” er et indbygget felt, ikke et yderligere — vælg et andet navn.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/da.json b/l10n/da.json
index f239ffde6..af72f96c1 100644
--- a/l10n/da.json
+++ b/l10n/da.json
@@ -425,7 +425,8 @@
"Remove": "Fjern",
"Remove this field": "Fjern dette felt",
"Give the field a name.": "Giv feltet et navn.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” er et indbygget felt, ikke et yderligere — vælg et andet navn."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” er et indbygget felt, ikke et yderligere — vælg et andet navn.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/de.js b/l10n/de.js
index 3cc144da3..c36e68a3f 100644
--- a/l10n/de.js
+++ b/l10n/de.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Entfernen",
"Remove this field": "Dieses Feld entfernen",
"Give the field a name.": "Geben Sie dem Feld einen Namen.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ ist ein integriertes Feld, kein zusätzliches — wählen Sie einen anderen Namen."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ ist ein integriertes Feld, kein zusätzliches — wählen Sie einen anderen Namen.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/de.json b/l10n/de.json
index 2da504634..7560be913 100644
--- a/l10n/de.json
+++ b/l10n/de.json
@@ -425,7 +425,8 @@
"Remove": "Entfernen",
"Remove this field": "Dieses Feld entfernen",
"Give the field a name.": "Geben Sie dem Feld einen Namen.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ ist ein integriertes Feld, kein zusätzliches — wählen Sie einen anderen Namen."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ ist ein integriertes Feld, kein zusätzliches — wählen Sie einen anderen Namen.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/el.js b/l10n/el.js
index ccdb0a244..7acb2be18 100644
--- a/l10n/el.js
+++ b/l10n/el.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Αφαίρεση",
"Remove this field": "Αφαίρεση αυτού του πεδίου",
"Give the field a name.": "Δώστε όνομα στο πεδίο.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "Το «{name}» είναι ενσωματωμένο πεδίο, όχι πρόσθετο — επιλέξτε άλλο όνομα."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "Το «{name}» είναι ενσωματωμένο πεδίο, όχι πρόσθετο — επιλέξτε άλλο όνομα.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/el.json b/l10n/el.json
index 3158ac816..89509d193 100644
--- a/l10n/el.json
+++ b/l10n/el.json
@@ -425,7 +425,8 @@
"Remove": "Αφαίρεση",
"Remove this field": "Αφαίρεση αυτού του πεδίου",
"Give the field a name.": "Δώστε όνομα στο πεδίο.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "Το «{name}» είναι ενσωματωμένο πεδίο, όχι πρόσθετο — επιλέξτε άλλο όνομα."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "Το «{name}» είναι ενσωματωμένο πεδίο, όχι πρόσθετο — επιλέξτε άλλο όνομα.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/en.js b/l10n/en.js
index 8480c7d3d..72e74b352 100644
--- a/l10n/en.js
+++ b/l10n/en.js
@@ -995,7 +995,8 @@ OC.L10N.register(
"No additional fields yet.": "No additional fields yet.",
"Remove": "Remove",
"Remove this field": "Remove this field",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” is a built-in field, not an additional one — choose a different name."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” is a built-in field, not an additional one — choose a different name.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/en.json b/l10n/en.json
index 9ed042979..5852d24da 100644
--- a/l10n/en.json
+++ b/l10n/en.json
@@ -994,7 +994,8 @@
"No additional fields yet.": "No additional fields yet.",
"Remove": "Remove",
"Remove this field": "Remove this field",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” is a built-in field, not an additional one — choose a different name."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” is a built-in field, not an additional one — choose a different name.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": "",
"pluralForm": "nplurals=2; plural=(n != 1);"
diff --git a/l10n/es.js b/l10n/es.js
index 182247ff7..004f7f4ad 100644
--- a/l10n/es.js
+++ b/l10n/es.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Eliminar",
"Remove this field": "Eliminar este campo",
"Give the field a name.": "Dale un nombre al campo.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» es un campo integrado, no adicional: elige otro nombre."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» es un campo integrado, no adicional: elige otro nombre.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/es.json b/l10n/es.json
index cc9f76a47..0d241982f 100644
--- a/l10n/es.json
+++ b/l10n/es.json
@@ -425,7 +425,8 @@
"Remove": "Eliminar",
"Remove this field": "Eliminar este campo",
"Give the field a name.": "Dale un nombre al campo.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» es un campo integrado, no adicional: elige otro nombre."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» es un campo integrado, no adicional: elige otro nombre.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/et.js b/l10n/et.js
index e73e93f48..a1e36c16f 100644
--- a/l10n/et.js
+++ b/l10n/et.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Eemalda",
"Remove this field": "Eemalda see väli",
"Give the field a name.": "Anna väljale nimi.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ on sisseehitatud väli, mitte lisaväli — vali teine nimi."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ on sisseehitatud väli, mitte lisaväli — vali teine nimi.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/et.json b/l10n/et.json
index 65f748ae2..f5d206c7a 100644
--- a/l10n/et.json
+++ b/l10n/et.json
@@ -425,7 +425,8 @@
"Remove": "Eemalda",
"Remove this field": "Eemalda see väli",
"Give the field a name.": "Anna väljale nimi.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ on sisseehitatud väli, mitte lisaväli — vali teine nimi."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ on sisseehitatud väli, mitte lisaväli — vali teine nimi.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/fi.js b/l10n/fi.js
index 6675bd2b5..e0d61ae54 100644
--- a/l10n/fi.js
+++ b/l10n/fi.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Poista",
"Remove this field": "Poista tämä kenttä",
"Give the field a name.": "Anna kentälle nimi.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "”{name}” on sisäänrakennettu kenttä, ei lisäkenttä — valitse toinen nimi."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "”{name}” on sisäänrakennettu kenttä, ei lisäkenttä — valitse toinen nimi.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/fi.json b/l10n/fi.json
index f49591967..82b694ead 100644
--- a/l10n/fi.json
+++ b/l10n/fi.json
@@ -425,7 +425,8 @@
"Remove": "Poista",
"Remove this field": "Poista tämä kenttä",
"Give the field a name.": "Anna kentälle nimi.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "”{name}” on sisäänrakennettu kenttä, ei lisäkenttä — valitse toinen nimi."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "”{name}” on sisäänrakennettu kenttä, ei lisäkenttä — valitse toinen nimi.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/fr.js b/l10n/fr.js
index 75d1d3dd8..696160514 100644
--- a/l10n/fr.js
+++ b/l10n/fr.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Supprimer",
"Remove this field": "Supprimer ce champ",
"Give the field a name.": "Donnez un nom au champ.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "« {name} » est un champ intégré, pas un champ supplémentaire — choisissez un autre nom."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "« {name} » est un champ intégré, pas un champ supplémentaire — choisissez un autre nom.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/fr.json b/l10n/fr.json
index a032d0dcb..80b0a395a 100644
--- a/l10n/fr.json
+++ b/l10n/fr.json
@@ -425,7 +425,8 @@
"Remove": "Supprimer",
"Remove this field": "Supprimer ce champ",
"Give the field a name.": "Donnez un nom au champ.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "« {name} » est un champ intégré, pas un champ supplémentaire — choisissez un autre nom."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "« {name} » est un champ intégré, pas un champ supplémentaire — choisissez un autre nom.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/ga.js b/l10n/ga.js
index 2f7506a55..e61d9e5a6 100644
--- a/l10n/ga.js
+++ b/l10n/ga.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Bain",
"Remove this field": "Bain an réimse seo",
"Give the field a name.": "Tabhair ainm ar an réimse.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "Is réimse ionsuite é “{name}”, nach ceann breise — roghnaigh ainm eile."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "Is réimse ionsuite é “{name}”, nach ceann breise — roghnaigh ainm eile.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/ga.json b/l10n/ga.json
index 20c91cf7d..2cb336496 100644
--- a/l10n/ga.json
+++ b/l10n/ga.json
@@ -425,7 +425,8 @@
"Remove": "Bain",
"Remove this field": "Bain an réimse seo",
"Give the field a name.": "Tabhair ainm ar an réimse.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "Is réimse ionsuite é “{name}”, nach ceann breise — roghnaigh ainm eile."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "Is réimse ionsuite é “{name}”, nach ceann breise — roghnaigh ainm eile.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/hr.js b/l10n/hr.js
index b587859be..f655c202d 100644
--- a/l10n/hr.js
+++ b/l10n/hr.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Ukloni",
"Remove this field": "Ukloni ovo polje",
"Give the field a name.": "Dajte polju naziv.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je ugrađeno polje, a ne dodatno — odaberite drugi naziv."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je ugrađeno polje, a ne dodatno — odaberite drugi naziv.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/hr.json b/l10n/hr.json
index 951d84240..aa6b173fe 100644
--- a/l10n/hr.json
+++ b/l10n/hr.json
@@ -425,7 +425,8 @@
"Remove": "Ukloni",
"Remove this field": "Ukloni ovo polje",
"Give the field a name.": "Dajte polju naziv.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je ugrađeno polje, a ne dodatno — odaberite drugi naziv."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je ugrađeno polje, a ne dodatno — odaberite drugi naziv.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/hu.js b/l10n/hu.js
index 5a9fcb9b0..56d39f712 100644
--- a/l10n/hu.js
+++ b/l10n/hu.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Eltávolítás",
"Remove this field": "Mező eltávolítása",
"Give the field a name.": "Adjon nevet a mezőnek.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "A(z) „{name}” beépített mező, nem további — válasszon másik nevet."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "A(z) „{name}” beépített mező, nem további — válasszon másik nevet.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/hu.json b/l10n/hu.json
index 593df1619..d2b9f6a92 100644
--- a/l10n/hu.json
+++ b/l10n/hu.json
@@ -425,7 +425,8 @@
"Remove": "Eltávolítás",
"Remove this field": "Mező eltávolítása",
"Give the field a name.": "Adjon nevet a mezőnek.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "A(z) „{name}” beépített mező, nem további — válasszon másik nevet."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "A(z) „{name}” beépített mező, nem további — válasszon másik nevet.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/is.js b/l10n/is.js
index 77b9040eb..bc9186c4e 100644
--- a/l10n/is.js
+++ b/l10n/is.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Fjarlægja",
"Remove this field": "Fjarlægja þetta svið",
"Give the field a name.": "Gefðu sviðinu nafn.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ er innbyggt svið, ekki viðbótarsvið — veldu annað nafn."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ er innbyggt svið, ekki viðbótarsvið — veldu annað nafn.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/is.json b/l10n/is.json
index bed193deb..140266696 100644
--- a/l10n/is.json
+++ b/l10n/is.json
@@ -425,7 +425,8 @@
"Remove": "Fjarlægja",
"Remove this field": "Fjarlægja þetta svið",
"Give the field a name.": "Gefðu sviðinu nafn.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ er innbyggt svið, ekki viðbótarsvið — veldu annað nafn."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ er innbyggt svið, ekki viðbótarsvið — veldu annað nafn.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/it.js b/l10n/it.js
index 6cc9f2403..1475f6146 100644
--- a/l10n/it.js
+++ b/l10n/it.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Rimuovi",
"Remove this field": "Rimuovi questo campo",
"Give the field a name.": "Dai un nome al campo.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» è un campo integrato, non aggiuntivo: scegli un altro nome."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» è un campo integrato, non aggiuntivo: scegli un altro nome.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/it.json b/l10n/it.json
index 74195bc2d..6b53a5096 100644
--- a/l10n/it.json
+++ b/l10n/it.json
@@ -425,7 +425,8 @@
"Remove": "Rimuovi",
"Remove this field": "Rimuovi questo campo",
"Give the field a name.": "Dai un nome al campo.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» è un campo integrato, non aggiuntivo: scegli un altro nome."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» è un campo integrato, non aggiuntivo: scegli un altro nome.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/lb.js b/l10n/lb.js
index 6ab2df86c..1dec0f851 100644
--- a/l10n/lb.js
+++ b/l10n/lb.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Ewechhuelen",
"Remove this field": "Dëst Feld ewechhuelen",
"Give the field a name.": "Gitt dem Feld en Numm.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ ass en integréiert Feld, kee zousätzlecht — wielt en anere Numm."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ ass en integréiert Feld, kee zousätzlecht — wielt en anere Numm.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/lb.json b/l10n/lb.json
index 578eef2a2..d84780315 100644
--- a/l10n/lb.json
+++ b/l10n/lb.json
@@ -425,7 +425,8 @@
"Remove": "Ewechhuelen",
"Remove this field": "Dëst Feld ewechhuelen",
"Give the field a name.": "Gitt dem Feld en Numm.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ ass en integréiert Feld, kee zousätzlecht — wielt en anere Numm."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ ass en integréiert Feld, kee zousätzlecht — wielt en anere Numm.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/lt.js b/l10n/lt.js
index c8ed9272d..ce08dcd30 100644
--- a/l10n/lt.js
+++ b/l10n/lt.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Pašalinti",
"Remove this field": "Pašalinti šį lauką",
"Give the field a name.": "Suteikite laukui pavadinimą.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ yra integruotas laukas, o ne papildomas — pasirinkite kitą pavadinimą."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ yra integruotas laukas, o ne papildomas — pasirinkite kitą pavadinimą.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/lt.json b/l10n/lt.json
index b054f93f0..4a198eb3f 100644
--- a/l10n/lt.json
+++ b/l10n/lt.json
@@ -425,7 +425,8 @@
"Remove": "Pašalinti",
"Remove this field": "Pašalinti šį lauką",
"Give the field a name.": "Suteikite laukui pavadinimą.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ yra integruotas laukas, o ne papildomas — pasirinkite kitą pavadinimą."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ yra integruotas laukas, o ne papildomas — pasirinkite kitą pavadinimą.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/lv.js b/l10n/lv.js
index 95b980d68..8b81dff2a 100644
--- a/l10n/lv.js
+++ b/l10n/lv.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Noņemt",
"Remove this field": "Noņemt šo lauku",
"Give the field a name.": "Piešķir laukam nosaukumu.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” ir iebūvēts lauks, nevis papildu — izvēlies citu nosaukumu."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” ir iebūvēts lauks, nevis papildu — izvēlies citu nosaukumu.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/lv.json b/l10n/lv.json
index 24ba018b8..2bab5a60d 100644
--- a/l10n/lv.json
+++ b/l10n/lv.json
@@ -425,7 +425,8 @@
"Remove": "Noņemt",
"Remove this field": "Noņemt šo lauku",
"Give the field a name.": "Piešķir laukam nosaukumu.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” ir iebūvēts lauks, nevis papildu — izvēlies citu nosaukumu."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” ir iebūvēts lauks, nevis papildu — izvēlies citu nosaukumu.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/mk.js b/l10n/mk.js
index 8058f4cf7..cb0ffabe3 100644
--- a/l10n/mk.js
+++ b/l10n/mk.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Отстрани",
"Remove this field": "Отстрани го ова поле",
"Give the field a name.": "Дајте му име на полето.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ е вградено поле, а не дополнително — одберете друго име."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ е вградено поле, а не дополнително — одберете друго име.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/mk.json b/l10n/mk.json
index bd3bbbd26..8dc73329b 100644
--- a/l10n/mk.json
+++ b/l10n/mk.json
@@ -425,7 +425,8 @@
"Remove": "Отстрани",
"Remove this field": "Отстрани го ова поле",
"Give the field a name.": "Дајте му име на полето.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ е вградено поле, а не дополнително — одберете друго име."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ е вградено поле, а не дополнително — одберете друго име.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/mt.js b/l10n/mt.js
index 579bb57ff..72daa9103 100644
--- a/l10n/mt.js
+++ b/l10n/mt.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Neħħi",
"Remove this field": "Neħħi dan il-qasam",
"Give the field a name.": "Agħti isem lill-qasam.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” huwa qasam integrat, mhux addizzjonali — agħżel isem oħra."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” huwa qasam integrat, mhux addizzjonali — agħżel isem oħra.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/mt.json b/l10n/mt.json
index d175da789..87a17c707 100644
--- a/l10n/mt.json
+++ b/l10n/mt.json
@@ -425,7 +425,8 @@
"Remove": "Neħħi",
"Remove this field": "Neħħi dan il-qasam",
"Give the field a name.": "Agħti isem lill-qasam.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” huwa qasam integrat, mhux addizzjonali — agħżel isem oħra."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” huwa qasam integrat, mhux addizzjonali — agħżel isem oħra.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/nb.js b/l10n/nb.js
index d96292ce3..ab4bfedd7 100644
--- a/l10n/nb.js
+++ b/l10n/nb.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Fjern",
"Remove this field": "Fjern dette feltet",
"Give the field a name.": "Gi feltet et navn.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» er et innebygd felt, ikke et tilleggsfelt — velg et annet navn."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» er et innebygd felt, ikke et tilleggsfelt — velg et annet navn.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/nb.json b/l10n/nb.json
index bf498366f..38f8d0d4a 100644
--- a/l10n/nb.json
+++ b/l10n/nb.json
@@ -425,7 +425,8 @@
"Remove": "Fjern",
"Remove this field": "Fjern dette feltet",
"Give the field a name.": "Gi feltet et navn.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» er et innebygd felt, ikke et tilleggsfelt — velg et annet navn."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» er et innebygd felt, ikke et tilleggsfelt — velg et annet navn.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/nl.js b/l10n/nl.js
index 064e4d553..ce9bb2127 100644
--- a/l10n/nl.js
+++ b/l10n/nl.js
@@ -585,7 +585,8 @@ OC.L10N.register(
"Remove": "Verwijderen",
"Remove this field": "Dit veld verwijderen",
"Give the field a name.": "Geef het veld een naam.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” is een ingebouwd veld, geen extra veld — kies een andere naam."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” is een ingebouwd veld, geen extra veld — kies een andere naam.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/nl.json b/l10n/nl.json
index a7cc80b4f..a74d51568 100644
--- a/l10n/nl.json
+++ b/l10n/nl.json
@@ -584,7 +584,8 @@
"Remove": "Verwijderen",
"Remove this field": "Dit veld verwijderen",
"Give the field a name.": "Geef het veld een naam.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” is een ingebouwd veld, geen extra veld — kies een andere naam."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” is een ingebouwd veld, geen extra veld — kies een andere naam.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null,
"pluralForm": "nplurals=2; plural=(n != 1);"
diff --git a/l10n/pl.js b/l10n/pl.js
index 3d188e806..eb286d6cf 100644
--- a/l10n/pl.js
+++ b/l10n/pl.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Usuń",
"Remove this field": "Usuń to pole",
"Give the field a name.": "Nadaj polu nazwę.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}” to pole wbudowane, a nie dodatkowe — wybierz inną nazwę."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}” to pole wbudowane, a nie dodatkowe — wybierz inną nazwę.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/pl.json b/l10n/pl.json
index fc9120b03..c5b5f2c02 100644
--- a/l10n/pl.json
+++ b/l10n/pl.json
@@ -425,7 +425,8 @@
"Remove": "Usuń",
"Remove this field": "Usuń to pole",
"Give the field a name.": "Nadaj polu nazwę.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}” to pole wbudowane, a nie dodatkowe — wybierz inną nazwę."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}” to pole wbudowane, a nie dodatkowe — wybierz inną nazwę.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/pt.js b/l10n/pt.js
index 2b92274be..3279beebc 100644
--- a/l10n/pt.js
+++ b/l10n/pt.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Remover",
"Remove this field": "Remover este campo",
"Give the field a name.": "Dê um nome ao campo.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” é um campo integrado, não adicional — escolha outro nome."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” é um campo integrado, não adicional — escolha outro nome.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/pt.json b/l10n/pt.json
index 5fd57d45f..2e00a5571 100644
--- a/l10n/pt.json
+++ b/l10n/pt.json
@@ -425,7 +425,8 @@
"Remove": "Remover",
"Remove this field": "Remover este campo",
"Give the field a name.": "Dê um nome ao campo.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” é um campo integrado, não adicional — escolha outro nome."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” é um campo integrado, não adicional — escolha outro nome.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/rm.js b/l10n/rm.js
index 0ea614d6d..929de22e4 100644
--- a/l10n/rm.js
+++ b/l10n/rm.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Allontanar",
"Remove this field": "Allontanar quest champ",
"Give the field a name.": "Dai in num al champ.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» è in champ integrà, betg in supplementar — tscherna in auter num."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» è in champ integrà, betg in supplementar — tscherna in auter num.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/rm.json b/l10n/rm.json
index 7b82b9767..b019af8b1 100644
--- a/l10n/rm.json
+++ b/l10n/rm.json
@@ -425,7 +425,8 @@
"Remove": "Allontanar",
"Remove this field": "Allontanar quest champ",
"Give the field a name.": "Dai in num al champ.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» è in champ integrà, betg in supplementar — tscherna in auter num."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» è in champ integrà, betg in supplementar — tscherna in auter num.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/ro.js b/l10n/ro.js
index 36ea6072f..35f96149d 100644
--- a/l10n/ro.js
+++ b/l10n/ro.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Eliminați",
"Remove this field": "Eliminați acest câmp",
"Give the field a name.": "Dați un nume câmpului.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}” este un câmp integrat, nu suplimentar — alegeți alt nume."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}” este un câmp integrat, nu suplimentar — alegeți alt nume.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/ro.json b/l10n/ro.json
index e732b95aa..9d3d47902 100644
--- a/l10n/ro.json
+++ b/l10n/ro.json
@@ -425,7 +425,8 @@
"Remove": "Eliminați",
"Remove this field": "Eliminați acest câmp",
"Give the field a name.": "Dați un nume câmpului.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}” este un câmp integrat, nu suplimentar — alegeți alt nume."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}” este un câmp integrat, nu suplimentar — alegeți alt nume.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/ru.js b/l10n/ru.js
index 3960e4b3a..5032c70b3 100644
--- a/l10n/ru.js
+++ b/l10n/ru.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Удалить",
"Remove this field": "Удалить это поле",
"Give the field a name.": "Дайте полю имя.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — встроенное поле, а не дополнительное: выберите другое имя."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — встроенное поле, а не дополнительное: выберите другое имя.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/ru.json b/l10n/ru.json
index 40510269e..0fefbf104 100644
--- a/l10n/ru.json
+++ b/l10n/ru.json
@@ -425,7 +425,8 @@
"Remove": "Удалить",
"Remove this field": "Удалить это поле",
"Give the field a name.": "Дайте полю имя.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — встроенное поле, а не дополнительное: выберите другое имя."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — встроенное поле, а не дополнительное: выберите другое имя.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/sk.js b/l10n/sk.js
index 54dd1cf5d..1d6f14224 100644
--- a/l10n/sk.js
+++ b/l10n/sk.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Odobrať",
"Remove this field": "Odobrať toto pole",
"Give the field a name.": "Pomenujte pole.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vstavané pole, nie ďalšie — zvoľte iný názov."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vstavané pole, nie ďalšie — zvoľte iný názov.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/sk.json b/l10n/sk.json
index a45d10662..daa83d6fc 100644
--- a/l10n/sk.json
+++ b/l10n/sk.json
@@ -425,7 +425,8 @@
"Remove": "Odobrať",
"Remove this field": "Odobrať toto pole",
"Give the field a name.": "Pomenujte pole.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vstavané pole, nie ďalšie — zvoľte iný názov."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vstavané pole, nie ďalšie — zvoľte iný názov.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/sl.js b/l10n/sl.js
index f489084dd..6201ff739 100644
--- a/l10n/sl.js
+++ b/l10n/sl.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Odstrani",
"Remove this field": "Odstrani to polje",
"Give the field a name.": "Poimenujte polje.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vgrajeno polje, ne dodatno — izberite drugo ime."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vgrajeno polje, ne dodatno — izberite drugo ime.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/sl.json b/l10n/sl.json
index 37adc6391..61a230df7 100644
--- a/l10n/sl.json
+++ b/l10n/sl.json
@@ -425,7 +425,8 @@
"Remove": "Odstrani",
"Remove this field": "Odstrani to polje",
"Give the field a name.": "Poimenujte polje.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vgrajeno polje, ne dodatno — izberite drugo ime."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ je vgrajeno polje, ne dodatno — izberite drugo ime.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/sq.js b/l10n/sq.js
index 7672f8b23..6a4371d54 100644
--- a/l10n/sq.js
+++ b/l10n/sq.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Hiq",
"Remove this field": "Hiq këtë fushë",
"Give the field a name.": "Jepni emër fushës.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” është fushë e integruar, jo shtesë — zgjidhni emër tjetër."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” është fushë e integruar, jo shtesë — zgjidhni emër tjetër.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/sq.json b/l10n/sq.json
index 58bcac386..3420e1674 100644
--- a/l10n/sq.json
+++ b/l10n/sq.json
@@ -425,7 +425,8 @@
"Remove": "Hiq",
"Remove this field": "Hiq këtë fushë",
"Give the field a name.": "Jepni emër fushës.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” është fushë e integruar, jo shtesë — zgjidhni emër tjetër."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” është fushë e integruar, jo shtesë — zgjidhni emër tjetër.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/sr.js b/l10n/sr.js
index d6db64d56..1019c0344 100644
--- a/l10n/sr.js
+++ b/l10n/sr.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Уклони",
"Remove this field": "Уклони ово поље",
"Give the field a name.": "Дајте полју назив.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ је уграђено поље, а не додатно — одаберите други назив."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ је уграђено поље, а не додатно — одаберите други назив.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/sr.json b/l10n/sr.json
index 6fe5d0ca0..fb7141581 100644
--- a/l10n/sr.json
+++ b/l10n/sr.json
@@ -425,7 +425,8 @@
"Remove": "Уклони",
"Remove this field": "Уклони ово поље",
"Give the field a name.": "Дајте полју назив.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ је уграђено поље, а не додатно — одаберите други назив."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "„{name}“ је уграђено поље, а не додатно — одаберите други назив.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/sv.js b/l10n/sv.js
index 0d3847df4..e02c76dfc 100644
--- a/l10n/sv.js
+++ b/l10n/sv.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Ta bort",
"Remove this field": "Ta bort det här fältet",
"Give the field a name.": "Ge fältet ett namn.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "”{name}” är ett inbyggt fält, inte ett ytterligare — välj ett annat namn."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "”{name}” är ett inbyggt fält, inte ett ytterligare — välj ett annat namn.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/sv.json b/l10n/sv.json
index 52c4794d3..b597de4e8 100644
--- a/l10n/sv.json
+++ b/l10n/sv.json
@@ -425,7 +425,8 @@
"Remove": "Ta bort",
"Remove this field": "Ta bort det här fältet",
"Give the field a name.": "Ge fältet ett namn.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "”{name}” är ett inbyggt fält, inte ett ytterligare — välj ett annat namn."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "”{name}” är ett inbyggt fält, inte ett ytterligare — välj ett annat namn.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/tr.js b/l10n/tr.js
index 64fb9807a..baa7605d1 100644
--- a/l10n/tr.js
+++ b/l10n/tr.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Kaldır",
"Remove this field": "Bu alanı kaldır",
"Give the field a name.": "Alana bir ad verin.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” yerleşik bir alandır, ek alan değil — başka bir ad seçin."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” yerleşik bir alandır, ek alan değil — başka bir ad seçin.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/tr.json b/l10n/tr.json
index 16c5a084e..93e2042f7 100644
--- a/l10n/tr.json
+++ b/l10n/tr.json
@@ -425,7 +425,8 @@
"Remove": "Kaldır",
"Remove this field": "Bu alanı kaldır",
"Give the field a name.": "Alana bir ad verin.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” yerleşik bir alandır, ek alan değil — başka bir ad seçin."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "“{name}” yerleşik bir alandır, ek alan değil — başka bir ad seçin.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/l10n/uk.js b/l10n/uk.js
index b5a455a3f..e5f21edaf 100644
--- a/l10n/uk.js
+++ b/l10n/uk.js
@@ -426,7 +426,8 @@ OC.L10N.register(
"Remove": "Видалити",
"Remove this field": "Видалити це поле",
"Give the field a name.": "Дайте полю назву.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — вбудоване поле, а не додаткове: виберіть іншу назву."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — вбудоване поле, а не додаткове: виберіть іншу назву.",
+ "Keepiq {version}": "Keepiq {version}"
},
"nplurals=2; plural=(n != 1);"
)
diff --git a/l10n/uk.json b/l10n/uk.json
index b519d3e9a..309a04052 100644
--- a/l10n/uk.json
+++ b/l10n/uk.json
@@ -425,7 +425,8 @@
"Remove": "Видалити",
"Remove this field": "Видалити це поле",
"Give the field a name.": "Дайте полю назву.",
- "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — вбудоване поле, а не додаткове: виберіть іншу назву."
+ "“{name}” is a built-in field, not an additional one — choose a different name.": "«{name}» — вбудоване поле, а не додаткове: виберіть іншу назву.",
+ "Keepiq {version}": "Keepiq {version}"
},
"plurals": null
}
diff --git a/lib/Controller/DashboardController.php b/lib/Controller/DashboardController.php
index 235e95e51..4856e2b07 100644
--- a/lib/Controller/DashboardController.php
+++ b/lib/Controller/DashboardController.php
@@ -23,6 +23,7 @@
use OCA\Keepiq\AppInfo\Application;
use OCA\Keepiq\Service\DashboardSummaryService;
+use OCP\App\IAppManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\ContentSecurityPolicy;
@@ -44,6 +45,7 @@ class DashboardController extends Controller {
* @param IRequest $request The request object
* @param IInitialState $initialState The initial state service
* @param IAppConfig $appConfig The app config interface
+ * @param IAppManager $appManager The app manager (version source)
* @param DashboardSummaryService $summaryService The dashboard summary aggregator
* @param IUserSession $userSession The user session
* @param IGroupManager $groupManager The group manager
@@ -54,6 +56,7 @@ public function __construct(
IRequest $request,
private IInitialState $initialState,
private IAppConfig $appConfig,
+ private IAppManager $appManager,
private DashboardSummaryService $summaryService,
private IUserSession $userSession,
private IGroupManager $groupManager,
@@ -106,6 +109,14 @@ public function page(): TemplateResponse {
data: $this->appConfig->getValueBool(Application::APP_ID, 'breach_check_enabled', false),
);
+ // The user-settings dialog renders this as its version footer.
+ // IAppManager reads appinfo/info.xml — the version truth; the
+ // package.json version is stale and must not be used.
+ $this->initialState->provideInitialState(
+ key: 'appVersion',
+ data: $this->appManager->getAppVersion(Application::APP_ID),
+ );
+
$response = new TemplateResponse(appName: Application::APP_ID, templateName: 'index');
// Link-share encryption derives its AES key client-side via the Argon2id
diff --git a/src/App.vue b/src/App.vue
index 55b58eb58..cb763aa48 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -289,6 +289,13 @@
}}
+
+
+
+ {{ t('keepiq', 'Keepiq {version}', { version: appVersion }) }}
+
@@ -296,6 +303,7 @@
+
+
diff --git a/src/components/KeepiqAppNav/NavFolderTree.vue b/src/components/KeepiqAppNav/NavFolderTree.vue
new file mode 100644
index 000000000..2f79ce6d4
--- /dev/null
+++ b/src/components/KeepiqAppNav/NavFolderTree.vue
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/SecretList.vue b/src/views/SecretList.vue
index b85fbe02c..e68ba33bb 100644
--- a/src/views/SecretList.vue
+++ b/src/views/SecretList.vue
@@ -1,21 +1,9 @@
-
-
-
-
+
+ rides along. No "All vaults" host item — the caption already
+ names the group and a second link to the vault root would
+ double-highlight next to "All secrets". Revisit if the lib's
+ filter learns to spare captions. -->
-
-
-
-
-
-
+
-
+
+
import { NcAppNavigationItem } from '@nextcloud/vue'
import FolderOutline from 'vue-material-design-icons/FolderOutline.vue'
+import Safe from 'vue-material-design-icons/Safe.vue'
/**
* Maximum folder depth the rail renders. Deeper levels are reachable
@@ -67,6 +72,7 @@ export default {
components: {
NcAppNavigationItem,
FolderOutline,
+ Safe,
},
props: {
diff --git a/src/components/SecretListItem.vue b/src/components/SecretListItem.vue
index 42c7c02a1..4d02e4dc4 100644
--- a/src/components/SecretListItem.vue
+++ b/src/components/SecretListItem.vue
@@ -92,9 +92,13 @@
From ee31d7f3caafcd2df73c9b971e0f59c0baf01e51 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Sun, 30 Aug 2026 10:54:25 +0200
Subject: [PATCH 37/38] chore(release): 0.2.2-unstable.20260830082444 (#501)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
appinfo/info.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/appinfo/info.xml b/appinfo/info.xml
index b3196ee4c..918567c0c 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -36,7 +36,7 @@ Vrij en open source onder de EUPL-1.2-licentie.
**Ondersteuning:** Voor ondersteuning, neem contact op via support@conduction.nl.
]]>
- 0.2.1-unstable.20260829130044
+ 0.2.2-unstable.20260830082444
EUPL-1.2
Conduction
Keepiq
From 2d947189f3912f53b2cdfa52eee8cab5ea3891c2 Mon Sep 17 00:00:00 2001
From: Ruben van der Linde
Date: Sun, 30 Aug 2026 11:43:55 +0200
Subject: [PATCH 38/38] fix(deps): align dexie on 4.4.5 so only one copy loads
per page (#505)
Dexie refuses to run twice in one page: it throws "Two different versions of
Dexie loaded in the same app". Nextcloud loads openregister's global
integration script and hermiq's agent leaf on every page, alongside whichever
leaf app you are in, so all three have to agree on one dexie.
After the dependabot sweep on 2026-08-30 they did not. openregister resolved
4.4.4 while hermiq resolved 4.4.5, and the throw happened before the leaf app
mounted, so every app page rendered as bare Nextcloud chrome with no content.
This pins the floor at ^4.4.5 and regenerates the lock, matching the apps that
were already there.
Verified in the browser: the Dexie error is gone from the console and app pages
render their navigation and content again.
---
package-lock.json | 8 ++++----
package.json | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 9d155fbfb..4a803716e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,7 +22,7 @@
"@nextcloud/vue": "^9.9.0",
"@vueuse/core": "^14.4.0",
"argon2-browser": "^1.18.0",
- "dexie": "^4.4.4",
+ "dexie": "^4.4.5",
"dompurify": "^3.4.12",
"gridstack": "^12.6.0",
"marked": "^12.0.0",
@@ -8705,9 +8705,9 @@
}
},
"node_modules/dexie": {
- "version": "4.4.4",
- "resolved": "https://registry.npmjs.org/dexie/-/dexie-4.4.4.tgz",
- "integrity": "sha512-jIwsYI8Os2hgnqc6O49YwFDKGc5v5QjGx0wPVp543ip1F53VFAKMLthV2pQosQcVTv3eAskTWYspOx195PM0FQ==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/dexie/-/dexie-4.4.5.tgz",
+ "integrity": "sha512-wWCHdihT3dmlUSuNhn5mMZDWSpG0suxjAni7YjjiZdzabZcKmy3uNZGZ7AeYYXBoLbpSXX35fikPLkPC44Osiw==",
"license": "Apache-2.0"
},
"node_modules/diffie-hellman": {
diff --git a/package.json b/package.json
index 78f9b129d..919cb3b03 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"@nextcloud/vue": "^9.9.0",
"@vueuse/core": "^14.4.0",
"argon2-browser": "^1.18.0",
- "dexie": "^4.4.4",
+ "dexie": "^4.4.5",
"dompurify": "^3.4.12",
"gridstack": "^12.6.0",
"marked": "^12.0.0",