feat(user-perf): add ui user-perf + dotfile filter

- add resource kind filter (file, folder, drive) in shared section (localStorage stored)
- add user preferences serverside store
- add client side dotfile filter (show/hide dotfiles) (user perf stored, default: dotfiles are shown)
  for security trashed dotfile are always displayed

  protection added: if a folder has only hidden items, a notification invite user to display it
  if a user rename or create a hidden item, a notification tells it to user
This commit is contained in:
Edouard Vanbelle
2026-07-13 19:26:19 +02:00
parent 06da428493
commit 5aaf49859e
43 changed files with 1676 additions and 121 deletions
+28 -2
View File
@@ -58,6 +58,8 @@
"photos": {
"empty_state": "لا توجد صور بعد",
"empty_hint": "ارفع صوراً أو مقاطع فيديو لعرضها هنا",
"empty_hidden": "{{n}} من الصور مخفية وفقاً لتفضيلاتك",
"empty_hidden_hint": "قم بإيقاف تشغيل \"إخفاء الملفات المخفية\" في ملفك الشخصي لرؤيتها.",
"items_selected": "محدد",
"view_daily": "يوم",
"view_monthly": "شهر",
@@ -365,7 +367,15 @@
"folder": "مجلد",
"new_folder": "مجلد جديد",
"share": "مشاركة",
"view": "عرض"
"view": "عرض",
"empty_hidden_title": "{{n}} عنصر مخفي في هذا المجلد",
"empty_hidden_hint": "الملفات التي يبدأ اسمها بـ '.' مخفية. غيّر الإعداد لرؤيتها.",
"show_hidden": "إظهار الملفات المخفية",
"upload_dotfile_hidden": "تم رفع {{n}} ملف/ملفات ولكن تم إخفاؤها وفقاً لتفضيلاتك.",
"rename_dotfile_hidden": "تمت إعادة التسمية إلى \"{{name}}\" — أصبحت الآن مخفية وفقاً لتفضيلاتك.",
"new_folder_dotfile_hidden": "تم إنشاء المجلد \"{{name}}\" — مخفي وفقاً لتفضيلاتك.",
"dotfiles_hidden_toast": "تم إخفاء الملفات المخفية",
"dotfiles_shown_toast": "تم إظهار الملفات المخفية"
},
"dialogs": {
"rename_folder": "إعادة تسمية المجلد",
@@ -570,6 +580,8 @@
"accessed": "تم الوصول",
"empty_state": "لا توجد ملفات حديثة",
"empty_hint": "الملفات التي تفتحها ستظهر هنا",
"empty_hidden_state": "{{n}} من العناصر الأخيرة مخفية وفقاً لتفضيلاتك",
"empty_hidden_hint": "قم بإيقاف تشغيل \"إخفاء الملفات المخفية\" في ملفك الشخصي لرؤيتها.",
"loadMore": "تحميل المزيد"
},
"notifications": {
@@ -879,6 +891,7 @@
"family_name": "اسم العائلة",
"notify_on_share": "أرسل لي بريدًا إلكترونيًا عندما يشاركني شخص ما",
"notify_on_share_hint": "عند إلغاء التحديد، ستظل المشاركات تظهر في حسابك — لن تتلقى فقط بريدًا إلكترونيًا بشأنها.",
"hide_dotfiles": "إخفاء الملفات التي يبدأ اسمها بنقطة (.env، .git، …)",
"save_profile": "حفظ التغييرات",
"profile_saved": "تم تحديث الملف الشخصي",
"profile_no_changes": "لا توجد تغييرات لحفظها.",
@@ -999,7 +1012,17 @@
"notifyRateLimited": "عدد كبير من الإشعارات لهذا المستلم — حاول لاحقًا.",
"removeAccess": "إزالة الوصول",
"resendInvitation": "إعادة إرسال بريد الدعوة",
"publicLinks": "Public links"
"publicLinks": "Public links",
"filter": {
"button": "الأنواع",
"title": "تصفية حسب النوع",
"files": "ملفات",
"folders": "مجلدات",
"drives": "الأقراص",
"emptyTitle": "لا توجد مشاركات تطابق التصفية الحالية",
"emptyHint": "اضبط تصفية النوع أو أعِد ضبطها إلى الافتراضي (ملفات + مجلدات).",
"reset": "إعادة تعيين التصفية"
}
},
"sort": {
"asc": "ascending",
@@ -1129,5 +1152,8 @@
"view": {
"grid": "عرض شبكي",
"list": "عرض قائمة"
},
"preferences": {
"save_failed": "تعذّر حفظ تفضيلك. حاول مرة أخرى."
}
}