Journal des versions
L'évolution de Sunitech Drive, version après version. Généré automatiquement à chaque publication.
Nouveautés
- searchPhase 1a — plomberie recherche full-text Meilisearch (non-E2EE)
- searchPhase 1b — extraction contenu (service drive-indexer)
- searchPhase 2 — recherche full-text E2EE (blind index, zero-knowledge)
- searchpolish UI recherche — extraits surlignés + renommage
Nouveautés
- responsivePhase 1 — fondation mobile (breakpoints + shell drawer)
- responsivePhase 2 — sweep responsive des 18 écrans
- responsivePhase 3 — polish mobile
Nouveautés
- accesspage « Accès » - matrice dossiers x membres/groupes (RW/RO/aucun) - v0.9.18
- adminendpoints lock/unlock compte + reset mot de passe (anti-lockout admin)
- admingestion des comptes + bootstrap admin initial + garde admin
- adminpage Utilisateurs (gestion du tenant) + email de l'acteur dans l'audit
- api-keysApiKeyAuthGuard + ScopeGuard + @RequireScope/@ApiKeyCtx
- api-keyscontroleur de gestion (bootstrap admin + provisioning M2M)
- api-keysmethodes GED scoped-space dans FilesService (search/classes/changes/browse/content/setMeta)
- api-keysmodule + enregistrement dans AppModule
- api-keysservice (generation/hash de secret, create/verify/list/revoke/touch)
- api-keyssurface de service GED /svc/ged (lecture + meta:write, space implicite)
- api-keystable api_keys scoped a un space + migration
- apiendpoint delta /files/changes (reconciliation descendante client)
- apimailer Resend brandé + notification accès Drive (addMember)
- apiRange / 206 Partial Content sur GET /files/item/:id/content (hydratation par plage)
- app de bureau unifiee (WebView2 interface web + tray) + sync engine simultane (commande app)
- audit trail nLPD (table+service+endpoints CSV) + WebDAV verrous reels (Redis) + white-label (/branding + web)
- auditpage admin du journal nLPD (visible si admin, cibles E2EE masquees)
- auth,userslogin local JWT + garde + /me + service users
- authJWT en cookie httpOnly (anti-XSS) + flag session lisible + logout ; front sans token en JS, guard cookie|Bearer
- authOIDC Entra (code flow + PKCE, verif JWKS via jose)
- authSSO lie par oid Entra (anti-takeover, backfill comptes existants, refus collision email)
- basculescript de migration ancien Sync-in -> greenfield
- brandingwhite-label éditable par l'admin du tenant (table branding + GET public/PUT admin + carte Marque blanche dans le Profil)
- client lourd .NET 8 - milestone 1: sync root Cloud Files dans l'explorateur
- clientauth durable - reconnexion silencieuse + refresh token
- clientdouble-clic (sans argument) lance l'app complete
- clientE2ee aligne sur le format greenfield (SDEC v1 + AAD)
- clientfile de sync montant durable (persistance + retry/backoff)
- clienthydratation par plage (Range) - plus de fichier entier en RAM
- clientlecture des Drives chiffres (E2EE) via pont WebView
- clientM3 — pont WebView->moteur + API Drive reelle (browse/download)
- clientmenu contextuel en sous-menu (Partager / Garder sur l'appareil / Liberer l'espace)
- clientmulticompte (un process par compte)
- clientreconciliation descendante (serveur -> client)
- clientrepointage backend greenfield (drive.sunitech.ch)
- clientstatut sync in-sync + menu contextuel Explorateur (Partager)
- clientsync montant phase 1 - upload nouveaux fichiers/dossiers
- clientsync montant phase 2 - modif / suppression / renommage / deplacement
- clientupload chiffre vers Drives E2EE (E2ee.EncryptContent)
- configvariables d'env OnlyOffice (optionnelles)
- corbeillesuppression + restauration RECURSIVES au niveau dossier
- data-roomsburn du filigrane dynamique dans le PDF (pdf-lib)
- data-roomsliens view-only + email viewer + tracabilite (audit) — valide runtime
- dbmodele de donnees (users, spaces, spaces_members, files) + migration init
- deployservice OnlyOffice Document Server + env api
- depotdossier de depot (lien upload-only, file request)
- downloadtéléchargement du client lourd + manifest (proxy release Gitea)
- driveassistant de creation de Drive qualitatif
- drivesuppression d un Drive (deleteSpace) + retrait CORS MinIO inutile
- e2eebackend chiffrement E2EE (port [@noble](https://github.com/noble)) — clés, escrow org, espaces chiffrés
- e2eechiffrement bout-en-bout cote front (zero-knowledge)
- e2eecontenu chiffre v1 (header versionne + AAD par chunk anti-troncature/reordre, retro-compat v0)
- e2eePDF brande cle de recup + reset cle org + re-escrow auto
- e2eeprimitive de dechiffrement par blocs (XChaCha20-Poly1305)
- filesacces par dossier (ACL RW/RO/aucun, herite) - v0.9.17
- filesgetForEdit + replaceContent pour l'edition en ligne
- filesstockage objet S3 + arbo + upload presigne + corbeille
- gedendpoint scoped accessible-ids (RAG conscient des ACL, 2c)
- gedUI GED complete - modeles de classe (doc_classes) + editeur guide + facettes
- gedvue GED dediee (/ged) + entree menu lateral - recherche par classe/tag/nom + admin modeles
- icone Sunitech (hexagone S) pour le sync root explorateur, generee depuis favicon-512
- integrationsendpoint admin 'Connecter SuniRAG' (orchestration cle GED + M2M)
- linksliens publics de partage (token, mot de passe, expiration)
- M2-A fichiers a la demande (CfCreatePlaceholders) - placeholders RECALL_ON_DATA_ACCESS dans l'explorateur
- M2-B hydratation files-on-demand (CfConnectSyncRoot + FETCH_DATA + CfExecute TRANSFER_DATA) - download a la demande OK
- navigation shell fonctionnelle + page Profil
- onlyofficecontroleur + module + enregistrement
- onlyofficeforcesave (Ctrl+S -> version immediate) + autosave editeur
- onlyofficeservice config + callback
- plangating des features par plan (API refuse hors-plan + masquage web)
- recoverycorbeille enrichie (date/auteur/emplacement) + auteur des versions
- securiteanti-brute-force /auth/token + req.ip reel derriere Traefik + CORS bucket best-effort
- security+finitionsdurcissement backend + WebDAV COPY/LOCK + retention auto
- shellcommande « Ouvrir SuniDrive » (menu contextuel) -> ouvre l'UI
- shellextension shell native C++ - menu contextuel Win11 (IExplorerCommand)
- spacesacces par groupes locaux - partage d'un Drive a un groupe - v0.9.16
- spacesCRUD espaces + membres (manager/member) + gardes d acces
- spacespartage d'un Drive apres creation (gestion des membres) - v0.9.15
- syncAPI manifest (base du delta-sync) — valide runtime
- syncbouclier anti-suppression de masse + reorg sure (v0.9.24)
- syncrecup depuis l'app (corbeille) + reconcile post-reinscription (v1.0.2)
- uisysteme de design « Pro sobre » (tokens) + shell navy - v0.9.20
- updateauto-update du client (portable .exe) v0.9.1
- uploadproxy streaming upload/download via API (option B, MinIO prive)
- versioningpoint-in-time / anti-ransomware + retention Hybride — valide runtime
- versioningUI historique des versions + endpoint /content proxifie
- versioningversions de fichiers (overwrite -> snapshot S3, list/restore/download)
- webclic sur un document editable l'ouvre dans OnlyOffice (au lieu de telecharger)
- webdavserveur WebDAV (montage reseau) sur le modele files+S3 — valide runtime
- webdesign premium 0.6.x pixel-perfect (shell + table + cartes)
- webediteur OnlyOffice + bouton Editer (drives standard)
- webesthetique premium DANS les dossiers (badges type + selection + panneau details)
- webfront Angular premium MVP cable sur l API neuve
- webpage admin Integrations + bouton 'Connecter SuniRAG'
- webpartage / data rooms + page publique de lien (polish premium)
- webpousse les cles d e2ee au client lourd (WebView2) au deverrouillage
- webversion responsive mobile (sidebar off-canvas, table adaptative, modales plein ecran)
- webviewer fichiers (apercu image/pdf/texte) + docs bascule
- white-labelheader du shell (logo+nom) pilote par le branding du tenant
Corrections
- clientcorrige les limites connues (reconciliation + renommage dossier)
- clientenregistrement sync root idempotent + release v0.9.0
- clienticone Sunitech robuste pour le single-file distribue seul
- deploypas de secret JWT OnlyOffice hardcode en dev (mismatch/insecure default)
- dockerAPI runtime via npm prune --omit=dev (robuste, retire drizzle-kit/esbuild)
- downloadliste les releases (inclut prereleases) au lieu de /releases/latest
- downloadsert le binaire via browser_download_url (/releases/assets/:id renvoie 404)
- editorremonte le code d'erreur OnlyOffice pour diagnostiquer les echecs au lancement
- oidcredirections via @Redirect (302) + activation avec creds Entra existants
- onlyofficeDS telecharge via l'API (pas d'URL S3 signee) + compat MinIO + buffer nginx
- onlyofficeforce X-Forwarded-Proto https sur /ds/ (rendu Editor.bin en https)
- onlyofficesert le DS en same-origin sous /ds/ (:443) au lieu de :8443
- public-linktelechargement proxifie (option B) au lieu du presigne mort
- runtimecorrections validees au boot + e2e (PG/MinIO reels)
- syncfichiers d'un dossier neuf ne sont plus perdus + journal fichier + v1.5.0
- syncintegration Explorateur robuste aux mises a jour (v1.0.0)
- uimodale Partager utilisable (layout pleine largeur) + vrai proprietaire affiche - v0.9.19
- upload proxifie versionne le remplacement (meme nom) + nginx client_max_body_size 5g
- webbadge type robuste (dotfiles/horodatages) + tooltip nom complet
- webcable la barre de recherche globale de la topbar
- webnom de fichier ecrase en mode fenetre (container queries sur le tableau)
- websert /version.json (suivi des versions par l orchestrateur)
- webvrai logo Sunitech (favicon-512) sur login/shell/page publique + favicon
Nouveautés
- accesspage « Accès » - matrice dossiers x membres/groupes (RW/RO/aucun) - v0.9.18
- adminendpoints lock/unlock compte + reset mot de passe (anti-lockout admin)
- admingestion des comptes + bootstrap admin initial + garde admin
- adminpage Utilisateurs (gestion du tenant) + email de l'acteur dans l'audit
- api-keysApiKeyAuthGuard + ScopeGuard + @RequireScope/@ApiKeyCtx
- api-keyscontroleur de gestion (bootstrap admin + provisioning M2M)
- api-keysmethodes GED scoped-space dans FilesService (search/classes/changes/browse/content/setMeta)
- api-keysmodule + enregistrement dans AppModule
- api-keysservice (generation/hash de secret, create/verify/list/revoke/touch)
- api-keyssurface de service GED /svc/ged (lecture + meta:write, space implicite)
- api-keystable api_keys scoped a un space + migration
- apiendpoint delta /files/changes (reconciliation descendante client)
- apimailer Resend brandé + notification accès Drive (addMember)
- apiRange / 206 Partial Content sur GET /files/item/:id/content (hydratation par plage)
- app de bureau unifiee (WebView2 interface web + tray) + sync engine simultane (commande app)
- audit trail nLPD (table+service+endpoints CSV) + WebDAV verrous reels (Redis) + white-label (/branding + web)
- auditpage admin du journal nLPD (visible si admin, cibles E2EE masquees)
- auth,userslogin local JWT + garde + /me + service users
- authJWT en cookie httpOnly (anti-XSS) + flag session lisible + logout ; front sans token en JS, guard cookie|Bearer
- authOIDC Entra (code flow + PKCE, verif JWKS via jose)
- authSSO lie par oid Entra (anti-takeover, backfill comptes existants, refus collision email)
- basculescript de migration ancien Sync-in -> greenfield
- brandingwhite-label éditable par l'admin du tenant (table branding + GET public/PUT admin + carte Marque blanche dans le Profil)
- client lourd .NET 8 - milestone 1: sync root Cloud Files dans l'explorateur
- clientauth durable - reconnexion silencieuse + refresh token
- clientdouble-clic (sans argument) lance l'app complete
- clientE2ee aligne sur le format greenfield (SDEC v1 + AAD)
- clientfile de sync montant durable (persistance + retry/backoff)
- clienthydratation par plage (Range) - plus de fichier entier en RAM
- clientlecture des Drives chiffres (E2EE) via pont WebView
- clientM3 — pont WebView->moteur + API Drive reelle (browse/download)
- clientmenu contextuel en sous-menu (Partager / Garder sur l'appareil / Liberer l'espace)
- clientmulticompte (un process par compte)
- clientreconciliation descendante (serveur -> client)
- clientrepointage backend greenfield (drive.sunitech.ch)
- clientstatut sync in-sync + menu contextuel Explorateur (Partager)
- clientsync montant phase 1 - upload nouveaux fichiers/dossiers
- clientsync montant phase 2 - modif / suppression / renommage / deplacement
- clientupload chiffre vers Drives E2EE (E2ee.EncryptContent)
- configvariables d'env OnlyOffice (optionnelles)
- corbeillesuppression + restauration RECURSIVES au niveau dossier
- data-roomsburn du filigrane dynamique dans le PDF (pdf-lib)
- data-roomsliens view-only + email viewer + tracabilite (audit) — valide runtime
- dbmodele de donnees (users, spaces, spaces_members, files) + migration init
- deployservice OnlyOffice Document Server + env api
- depotdossier de depot (lien upload-only, file request)
- downloadtéléchargement du client lourd + manifest (proxy release Gitea)
- driveassistant de creation de Drive qualitatif
- drivesuppression d un Drive (deleteSpace) + retrait CORS MinIO inutile
- e2eebackend chiffrement E2EE (port [@noble](https://github.com/noble)) — clés, escrow org, espaces chiffrés
- e2eechiffrement bout-en-bout cote front (zero-knowledge)
- e2eecontenu chiffre v1 (header versionne + AAD par chunk anti-troncature/reordre, retro-compat v0)
- e2eePDF brande cle de recup + reset cle org + re-escrow auto
- e2eeprimitive de dechiffrement par blocs (XChaCha20-Poly1305)
- filesacces par dossier (ACL RW/RO/aucun, herite) - v0.9.17
- filesgetForEdit + replaceContent pour l'edition en ligne
- filesstockage objet S3 + arbo + upload presigne + corbeille
- gedendpoint scoped accessible-ids (RAG conscient des ACL, 2c)
- gedUI GED complete - modeles de classe (doc_classes) + editeur guide + facettes
- gedvue GED dediee (/ged) + entree menu lateral - recherche par classe/tag/nom + admin modeles
- icone Sunitech (hexagone S) pour le sync root explorateur, generee depuis favicon-512
- integrationsendpoint admin 'Connecter SuniRAG' (orchestration cle GED + M2M)
- linksliens publics de partage (token, mot de passe, expiration)
- M2-A fichiers a la demande (CfCreatePlaceholders) - placeholders RECALL_ON_DATA_ACCESS dans l'explorateur
- M2-B hydratation files-on-demand (CfConnectSyncRoot + FETCH_DATA + CfExecute TRANSFER_DATA) - download a la demande OK
- navigation shell fonctionnelle + page Profil
- onlyofficecontroleur + module + enregistrement
- onlyofficeforcesave (Ctrl+S -> version immediate) + autosave editeur
- onlyofficeservice config + callback
- plangating des features par plan (API refuse hors-plan + masquage web)
- recoverycorbeille enrichie (date/auteur/emplacement) + auteur des versions
- securiteanti-brute-force /auth/token + req.ip reel derriere Traefik + CORS bucket best-effort
- security+finitionsdurcissement backend + WebDAV COPY/LOCK + retention auto
- shellcommande « Ouvrir SuniDrive » (menu contextuel) -> ouvre l'UI
- shellextension shell native C++ - menu contextuel Win11 (IExplorerCommand)
- spacesacces par groupes locaux - partage d'un Drive a un groupe - v0.9.16
- spacesCRUD espaces + membres (manager/member) + gardes d acces
- spacespartage d'un Drive apres creation (gestion des membres) - v0.9.15
- syncAPI manifest (base du delta-sync) — valide runtime
- syncbouclier anti-suppression de masse + reorg sure (v0.9.24)
- syncrecup depuis l'app (corbeille) + reconcile post-reinscription (v1.0.2)
- uisysteme de design « Pro sobre » (tokens) + shell navy - v0.9.20
- updateauto-update du client (portable .exe) v0.9.1
- uploadproxy streaming upload/download via API (option B, MinIO prive)
- versioningpoint-in-time / anti-ransomware + retention Hybride — valide runtime
- versioningUI historique des versions + endpoint /content proxifie
- versioningversions de fichiers (overwrite -> snapshot S3, list/restore/download)
- webclic sur un document editable l'ouvre dans OnlyOffice (au lieu de telecharger)
- webdavserveur WebDAV (montage reseau) sur le modele files+S3 — valide runtime
- webdesign premium 0.6.x pixel-perfect (shell + table + cartes)
- webediteur OnlyOffice + bouton Editer (drives standard)
- webesthetique premium DANS les dossiers (badges type + selection + panneau details)
- webfront Angular premium MVP cable sur l API neuve
- webpage admin Integrations + bouton 'Connecter SuniRAG'
- webpartage / data rooms + page publique de lien (polish premium)
- webpousse les cles d e2ee au client lourd (WebView2) au deverrouillage
- webversion responsive mobile (sidebar off-canvas, table adaptative, modales plein ecran)
- webviewer fichiers (apercu image/pdf/texte) + docs bascule
- white-labelheader du shell (logo+nom) pilote par le branding du tenant
Corrections
- clientcorrige les limites connues (reconciliation + renommage dossier)
- clientenregistrement sync root idempotent + release v0.9.0
- clienticone Sunitech robuste pour le single-file distribue seul
- deploypas de secret JWT OnlyOffice hardcode en dev (mismatch/insecure default)
- dockerAPI runtime via npm prune --omit=dev (robuste, retire drizzle-kit/esbuild)
- downloadliste les releases (inclut prereleases) au lieu de /releases/latest
- downloadsert le binaire via browser_download_url (/releases/assets/:id renvoie 404)
- editorremonte le code d'erreur OnlyOffice pour diagnostiquer les echecs au lancement
- oidcredirections via @Redirect (302) + activation avec creds Entra existants
- onlyofficeDS telecharge via l'API (pas d'URL S3 signee) + compat MinIO + buffer nginx
- onlyofficeforce X-Forwarded-Proto https sur /ds/ (rendu Editor.bin en https)
- onlyofficesert le DS en same-origin sous /ds/ (:443) au lieu de :8443
- public-linktelechargement proxifie (option B) au lieu du presigne mort
- runtimecorrections validees au boot + e2e (PG/MinIO reels)
- syncfichiers d'un dossier neuf ne sont plus perdus + journal fichier + v1.5.0
- syncintegration Explorateur robuste aux mises a jour (v1.0.0)
- uimodale Partager utilisable (layout pleine largeur) + vrai proprietaire affiche - v0.9.19
- upload proxifie versionne le remplacement (meme nom) + nginx client_max_body_size 5g
- webbadge type robuste (dotfiles/horodatages) + tooltip nom complet
- webcable la barre de recherche globale de la topbar
- webnom de fichier ecrase en mode fenetre (container queries sur le tableau)
- websert /version.json (suivi des versions par l orchestrateur)
- webvrai logo Sunitech (favicon-512) sur login/shell/page publique + favicon