projects: file explorer, ws improvements, i18n, and fs routing
Nightly Build / build (push) Successful in 6m47s

Add project-files component with tree navigation. Extend UserFs with
shared-folder resolution. Wire API routes for file browsing. Improve
WS session lifecycle and project-board layout. Add i18n keys for
projects and inbox across all locales.
This commit is contained in:
2026-07-22 18:35:13 +01:00
parent 8407a949fc
commit f34f800e5c
16 changed files with 733 additions and 40 deletions
+20 -1
View File
@@ -221,7 +221,26 @@ export default {
'projects.share.access.write': 'Write',
'projects.share.access.readonly': 'Read-only',
'projects.share.access.readwrite':'Read & write',
'projects.files.placeholder': 'The project files live here. Open the chat to work in this folder — a file explorer is coming.',
'projects.tabs.files': 'Files',
'projects.tabs.sharing': 'Sharing',
'projects.files.col.name': 'Name',
'projects.files.col.created': 'Created',
'projects.files.col.modified': 'Modified',
'projects.files.col.size': 'Size',
'projects.files.empty': 'This folder is empty.',
'projects.files.refresh': 'Refresh',
'projects.files.drop': 'Drop files here to upload',
'projects.files.btn.new_folder': 'New folder',
'projects.files.btn.upload': 'Upload',
'projects.files.uploading': 'Uploading…',
'projects.files.action.rename': 'Rename',
'projects.files.action.delete': 'Delete',
'projects.files.confirm.delete_file': 'Delete "{name}"?',
'projects.files.confirm.delete_dir': 'Delete the folder "{name}" and everything inside it?',
'projects.files.modal.mkdir': 'New folder',
'projects.files.modal.rename': 'Rename "{name}"',
'projects.files.modal.name': 'Name',
'projects.files.error.name': 'Enter a valid name (no slashes).',
// ── Project detail ──────────────────────────────────────────────────────────
'project_board.back': 'Projects',
+20 -1
View File
@@ -221,7 +221,26 @@ export default {
'projects.share.access.write': 'Écriture',
'projects.share.access.readonly': 'Lecture seule',
'projects.share.access.readwrite':'Lecture et écriture',
'projects.files.placeholder': 'Les fichiers du projet vivent ici. Ouvrez la discussion pour travailler dans ce dossier — un explorateur de fichiers arrive bientôt.',
'projects.tabs.files': 'Fichiers',
'projects.tabs.sharing': 'Partage',
'projects.files.col.name': 'Nom',
'projects.files.col.created': 'Création',
'projects.files.col.modified': 'Modification',
'projects.files.col.size': 'Taille',
'projects.files.empty': 'Ce dossier est vide.',
'projects.files.refresh': 'Actualiser',
'projects.files.drop': 'Déposez les fichiers ici pour les envoyer',
'projects.files.btn.new_folder': 'Nouveau dossier',
'projects.files.btn.upload': 'Envoyer',
'projects.files.uploading': 'Envoi…',
'projects.files.action.rename': 'Renommer',
'projects.files.action.delete': 'Supprimer',
'projects.files.confirm.delete_file': 'Supprimer « {name} » ?',
'projects.files.confirm.delete_dir': 'Supprimer le dossier « {name} » et tout son contenu ?',
'projects.files.modal.mkdir': 'Nouveau dossier',
'projects.files.modal.rename': 'Renommer « {name} »',
'projects.files.modal.name': 'Nom',
'projects.files.error.name': 'Saisissez un nom valide (sans barres obliques).',
// ── Détail du projet ────────────────────────────────────────────────────────
'project_board.back': 'Projets',
+20 -1
View File
@@ -245,7 +245,26 @@ export default {
'projects.share.access.write': 'Scrittura',
'projects.share.access.readonly': 'Sola lettura',
'projects.share.access.readwrite':'Lettura e scrittura',
'projects.files.placeholder': 'Qui vivono i file del progetto. Apri la chat per lavorare in questa cartella — un file explorer è in arrivo.',
'projects.tabs.files': 'File',
'projects.tabs.sharing': 'Condivisione',
'projects.files.col.name': 'Nome',
'projects.files.col.created': 'Creazione',
'projects.files.col.modified': 'Ultima modifica',
'projects.files.col.size': 'Dimensione',
'projects.files.empty': 'Questa cartella è vuota.',
'projects.files.refresh': 'Aggiorna',
'projects.files.drop': 'Trascina qui i file per caricarli',
'projects.files.btn.new_folder': 'Nuova cartella',
'projects.files.btn.upload': 'Carica',
'projects.files.uploading': 'Caricamento…',
'projects.files.action.rename': 'Rinomina',
'projects.files.action.delete': 'Elimina',
'projects.files.confirm.delete_file': 'Eliminare "{name}"?',
'projects.files.confirm.delete_dir': 'Eliminare la cartella "{name}" e tutto il suo contenuto?',
'projects.files.modal.mkdir': 'Nuova cartella',
'projects.files.modal.rename': 'Rinomina "{name}"',
'projects.files.modal.name': 'Nome',
'projects.files.error.name': 'Inserisci un nome valido (senza barre).',
// ── Dettaglio progetto ──────────────────────────────────────────────────────
'project_board.back': 'Progetti',