From 771a3b80533f6f522bb32b5daaf89c663c168f40 Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:35:16 -0400 Subject: [PATCH 01/11] feat(files_external): alphabetical sort backends The front-end will display them in the order returned. Signed-off-by: Josh --- apps/files_external/lib/Service/BackendService.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/files_external/lib/Service/BackendService.php b/apps/files_external/lib/Service/BackendService.php index 271ffa7695ff5..1da8c618ccadf 100644 --- a/apps/files_external/lib/Service/BackendService.php +++ b/apps/files_external/lib/Service/BackendService.php @@ -178,7 +178,9 @@ public function getBackends() { * @return Backend[] */ public function getAvailableBackends() { - return array_filter($this->getBackends(), fn (Backend $backend) => $backend->checkRequiredDependencies() === []); + $backends = array_filter($this->getBackends(), fn (Backend $backend) => $backend->checkRequiredDependencies() === []); + uasort($backends, [Backend::class, 'lexicalCompare']); + return $backends; } /** From ba8f722554f9f5ab28c2ab47d75f6144fb3f120a Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:41:18 -0400 Subject: [PATCH 02/11] feat(files_external/s3): modernize parameter labels/descriptions Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/AmazonS3.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/files_external/lib/Lib/Backend/AmazonS3.php b/apps/files_external/lib/Lib/Backend/AmazonS3.php index 06a1a67d72340..689f59882c64a 100644 --- a/apps/files_external/lib/Lib/Backend/AmazonS3.php +++ b/apps/files_external/lib/Lib/Backend/AmazonS3.php @@ -23,7 +23,7 @@ public function __construct(IL10N $l, AccessKey $legacyAuth) { ->setIdentifier('amazons3') ->addIdentifierAlias('\OC\Files\Storage\AmazonS3') // legacy compat ->setStorageClass('\OCA\Files_External\Lib\Storage\AmazonS3') - ->setText($l->t('S3 Storage')) + ->setText($l->t('S3-Compatible Object Storage')) ->addParameters([ new DefinitionParameter('bucket', $l->t('Bucket')), (new DefinitionParameter('hostname', $l->t('Hostname'))) @@ -36,17 +36,17 @@ public function __construct(IL10N $l, AccessKey $legacyAuth) { ->setFlag(DefinitionParameter::FLAG_OPTIONAL), (new DefinitionParameter('storageClass', $l->t('Storage Class'))) ->setFlag(DefinitionParameter::FLAG_OPTIONAL), - (new DefinitionParameter('use_ssl', $l->t('Enable SSL'))) + (new DefinitionParameter('use_ssl', $l->t('Use HTTPS'))) ->setType(DefinitionParameter::VALUE_BOOLEAN) ->setDefaultValue(true), - (new DefinitionParameter('use_path_style', $l->t('Enable Path Style'))) + (new DefinitionParameter('use_path_style', $l->t('Use Path Style (https://domain.com/bucket)'))) ->setType(DefinitionParameter::VALUE_BOOLEAN), (new DefinitionParameter('legacy_auth', $l->t('Legacy (v2) authentication'))) ->setType(DefinitionParameter::VALUE_BOOLEAN), (new DefinitionParameter('useMultipartCopy', $l->t('Enable multipart copy'))) ->setType(DefinitionParameter::VALUE_BOOLEAN) ->setDefaultValue(true), - (new DefinitionParameter('use_presigned_url', $l->t('Use presigned S3 url'))) + (new DefinitionParameter('use_presigned_url', $l->t('Enable Direct Downloads (presigned URLs)'))) ->setType(DefinitionParameter::VALUE_BOOLEAN) ->setDefaultValue(false), (new DefinitionParameter('sse_c_key', $l->t('SSE-C encryption key'))) From 12f929e9f9085365b81504cdb7dd7b6309c10043 Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:42:29 -0400 Subject: [PATCH 03/11] feat(files_external/swift): modernize label Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/Swift.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_external/lib/Lib/Backend/Swift.php b/apps/files_external/lib/Lib/Backend/Swift.php index 452e7546ec2ca..c771c6fa21bae 100644 --- a/apps/files_external/lib/Lib/Backend/Swift.php +++ b/apps/files_external/lib/Lib/Backend/Swift.php @@ -24,7 +24,7 @@ public function __construct(IL10N $l, OpenStackV2 $openstackAuth, Rackspace $rac ->setIdentifier('swift') ->addIdentifierAlias('\OC\Files\Storage\Swift') // legacy compat ->setStorageClass('\OCA\Files_External\Lib\Storage\Swift') - ->setText($l->t('OpenStack Object Storage')) + ->setText($l->t('OpenStack Swift Object Storage')) ->addParameters([ (new DefinitionParameter('service_name', $l->t('Service name'))) ->setFlag(DefinitionParameter::FLAG_OPTIONAL), From 71b9d8e3004961c869da35dc8194e55b284bf659 Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:43:25 -0400 Subject: [PATCH 04/11] feat(files_external): clearer label for Local storage Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/Local.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_external/lib/Lib/Backend/Local.php b/apps/files_external/lib/Lib/Backend/Local.php index 59ab6c3ae6898..f141b9be8b7d3 100644 --- a/apps/files_external/lib/Lib/Backend/Local.php +++ b/apps/files_external/lib/Lib/Backend/Local.php @@ -23,7 +23,7 @@ public function __construct(IL10N $l, NullMechanism $legacyAuth) { ->setIdentifier('local') ->addIdentifierAlias('\OC\Files\Storage\Local') // legacy compat ->setStorageClass('\OC\Files\Storage\Local') - ->setText($l->t('Local')) + ->setText($l->t('Local (server storage)')) ->addParameters([ new DefinitionParameter('datadir', $l->t('Location')), ]) From 6bf5bb39d57744bb131320104aa56d8e4610ff0e Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:45:08 -0400 Subject: [PATCH 05/11] feat(files_external): clearer label for SFTP_Key backend Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/SFTP_Key.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_external/lib/Lib/Backend/SFTP_Key.php b/apps/files_external/lib/Lib/Backend/SFTP_Key.php index 49a2b9b941716..b8559711dcd7b 100644 --- a/apps/files_external/lib/Lib/Backend/SFTP_Key.php +++ b/apps/files_external/lib/Lib/Backend/SFTP_Key.php @@ -19,7 +19,7 @@ public function __construct(IL10N $l, RSA $legacyAuth, SFTP $sftpBackend) { $this ->setIdentifier('\OC\Files\Storage\SFTP_Key') ->setStorageClass('\OCA\Files_External\Lib\Storage\SFTP') - ->setText($l->t('SFTP with secret key login')) + ->setText($l->t('SFTP with public key authentication')) ->addParameters([ new DefinitionParameter('host', $l->t('Host')), (new DefinitionParameter('root', $l->t('Remote subfolder'))) From 13e8aa03435a87e5ddc2c26b96a3f2c2af60f514 Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:45:51 -0400 Subject: [PATCH 06/11] feat(files_external): clearer labeling for SFTP backend Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/SFTP.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_external/lib/Lib/Backend/SFTP.php b/apps/files_external/lib/Lib/Backend/SFTP.php index 58258d126c6a5..0168785872a5f 100644 --- a/apps/files_external/lib/Lib/Backend/SFTP.php +++ b/apps/files_external/lib/Lib/Backend/SFTP.php @@ -20,7 +20,7 @@ public function __construct(IL10N $l, Password $legacyAuth) { ->setIdentifier('sftp') ->addIdentifierAlias('\OC\Files\Storage\SFTP') // legacy compat ->setStorageClass('\OCA\Files_External\Lib\Storage\SFTP') - ->setText($l->t('SFTP')) + ->setText($l->t('SFTP (SSH file transfer)')) ->addParameters([ new DefinitionParameter('host', $l->t('Host')), (new DefinitionParameter('port', $l->t('Port'))) From ac1ff1b905c4ca04174839268fa979df67ad2342 Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:47:35 -0400 Subject: [PATCH 07/11] feat(files_external): clearer label for SMB_OC backend Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/SMB_OC.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_external/lib/Lib/Backend/SMB_OC.php b/apps/files_external/lib/Lib/Backend/SMB_OC.php index 25e1b60254ae1..8058eae4c5db1 100644 --- a/apps/files_external/lib/Lib/Backend/SMB_OC.php +++ b/apps/files_external/lib/Lib/Backend/SMB_OC.php @@ -28,7 +28,7 @@ public function __construct(IL10N $l, SessionCredentials $legacyAuth, SMB $smbBa $this ->setIdentifier('\OC\Files\Storage\SMB_OC') ->setStorageClass('\OCA\Files_External\Lib\Storage\SMB') - ->setText($l->t('SMB/CIFS using OC login')) + ->setText($l->t('SMB / CIFS using Nextcloud login')) ->addParameters([ new DefinitionParameter('host', $l->t('Host')), (new DefinitionParameter('username_as_share', $l->t('Login as share'))) From e44bb1c324fafee3e3ee7e4831ff76428702b620 Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:48:12 -0400 Subject: [PATCH 08/11] feat(files_external): clearer label for SMB backend Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/SMB.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_external/lib/Lib/Backend/SMB.php b/apps/files_external/lib/Lib/Backend/SMB.php index e86ad98880c42..79bfe66728b17 100644 --- a/apps/files_external/lib/Lib/Backend/SMB.php +++ b/apps/files_external/lib/Lib/Backend/SMB.php @@ -30,7 +30,7 @@ public function __construct(IL10N $l, Password $legacyAuth) { ->setIdentifier('smb') ->addIdentifierAlias('\OC\Files\Storage\SMB')// legacy compat ->setStorageClass('\OCA\Files_External\Lib\Storage\SMB') - ->setText($l->t('SMB/CIFS')) + ->setText($l->t('SMB / CIFS (Windows network share)')) ->addParameters([ new DefinitionParameter('host', $l->t('Host')), new DefinitionParameter('share', $l->t('Share')), From f6f0175cdb53883512a026e3b2096be08bbdf5b6 Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:48:55 -0400 Subject: [PATCH 09/11] feat(files_external): clearer label for Nextcloud / ownCloud backend Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/OwnCloud.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_external/lib/Lib/Backend/OwnCloud.php b/apps/files_external/lib/Lib/Backend/OwnCloud.php index fe2cb990a1fb7..13c08e723e1e3 100644 --- a/apps/files_external/lib/Lib/Backend/OwnCloud.php +++ b/apps/files_external/lib/Lib/Backend/OwnCloud.php @@ -20,7 +20,7 @@ public function __construct(IL10N $l, Password $legacyAuth) { ->setIdentifier('owncloud') ->addIdentifierAlias('\OC\Files\Storage\OwnCloud') // legacy compat ->setStorageClass('\OCA\Files_External\Lib\Storage\OwnCloud') - ->setText($l->t('Nextcloud')) + ->setText($l->t('Nextcloud (WebDAV)')) ->addParameters([ new DefinitionParameter('host', $l->t('URL')), (new DefinitionParameter('root', $l->t('Remote subfolder'))) From abae6066bd9c4c1e50484b529cb0cb5e55f5ce4d Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 25 Mar 2026 18:50:16 -0400 Subject: [PATCH 10/11] feat(files_external): clearer label for FTP + FTPS backend Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/FTP.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_external/lib/Lib/Backend/FTP.php b/apps/files_external/lib/Lib/Backend/FTP.php index ab276b871f89b..fc9be7df448cd 100644 --- a/apps/files_external/lib/Lib/Backend/FTP.php +++ b/apps/files_external/lib/Lib/Backend/FTP.php @@ -23,7 +23,7 @@ public function __construct(IL10N $l, Password $legacyAuth) { ->setIdentifier('ftp') ->addIdentifierAlias('\OC\Files\Storage\FTP') // legacy compat ->setStorageClass('\OCA\Files_External\Lib\Storage\FTP') - ->setText($l->t('FTP')) + ->setText($l->t('FTP / FTPS')) ->addParameters([ new DefinitionParameter('host', $l->t('Host')), (new DefinitionParameter('port', $l->t('Port'))) From 2ae532196b0064262cbe6b748f8205117ef2b187 Mon Sep 17 00:00:00 2001 From: Josh Date: Fri, 27 Mar 2026 09:56:08 -0400 Subject: [PATCH 11/11] chore(files_external/s3): use example reserved domain Co-authored-by: Kate <26026535+provokateurin@users.noreply.github.com> Signed-off-by: Josh --- apps/files_external/lib/Lib/Backend/AmazonS3.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_external/lib/Lib/Backend/AmazonS3.php b/apps/files_external/lib/Lib/Backend/AmazonS3.php index 689f59882c64a..007a33dcce58a 100644 --- a/apps/files_external/lib/Lib/Backend/AmazonS3.php +++ b/apps/files_external/lib/Lib/Backend/AmazonS3.php @@ -39,7 +39,7 @@ public function __construct(IL10N $l, AccessKey $legacyAuth) { (new DefinitionParameter('use_ssl', $l->t('Use HTTPS'))) ->setType(DefinitionParameter::VALUE_BOOLEAN) ->setDefaultValue(true), - (new DefinitionParameter('use_path_style', $l->t('Use Path Style (https://domain.com/bucket)'))) + (new DefinitionParameter('use_path_style', $l->t('Use Path Style (https://example.com/bucket)'))) ->setType(DefinitionParameter::VALUE_BOOLEAN), (new DefinitionParameter('legacy_auth', $l->t('Legacy (v2) authentication'))) ->setType(DefinitionParameter::VALUE_BOOLEAN),