passbolt-browser-extension 5.1.0 → 5.2.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/CHANGELOG.md +80 -2
  2. package/RELEASE_NOTES.md +72 -76
  3. package/crowdin.yml +2 -0
  4. package/doc/browser-extension-class-diagram.md +162 -27
  5. package/package.json +11 -6
  6. package/src/all/_locales/sl/messages.json +10 -0
  7. package/src/all/_locales/uk/messages.json +10 -0
  8. package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.js +3 -12
  9. package/src/all/background_page/controller/crypto/validatePrivateGpgKeySetupController.js +4 -4
  10. package/src/all/background_page/controller/export/exportResourcesFileController.js +2 -2
  11. package/src/all/background_page/controller/metadata/saveMetadataKeysSettingsController.test.js +0 -1
  12. package/src/all/background_page/controller/metadata/saveMetadataTypesSettingsController.test.js +0 -1
  13. package/src/all/background_page/controller/metadata/shareMetadataKeyPrivateController.js +64 -0
  14. package/src/all/background_page/controller/metadata/shareMetadataKeyPrivateController.test.js +115 -0
  15. package/src/all/background_page/controller/resource/findAllIdsByIsSharedWithGroupController.js +25 -3
  16. package/src/all/background_page/controller/resource/findAllIdsByIsSharedWithGroupController.test.js +34 -0
  17. package/src/all/background_page/controller/setup/generateSetupKeyPairController.js +15 -6
  18. package/src/all/background_page/controller/setup/generateSetupKeyPairController.test.js +40 -0
  19. package/src/all/background_page/controller/user/updateUserLocalStorageController.test.js +9 -1
  20. package/src/all/background_page/event/appEvents.js +13 -0
  21. package/src/all/background_page/model/entity/gpgkey/generate/generateGpgKeyPairOptionsEntity.js +143 -41
  22. package/src/all/background_page/model/entity/gpgkey/generate/generateGpgKeyPairOptionsEntity.test.js +216 -54
  23. package/src/all/background_page/model/entity/metadata/shareMetadataPrivateKeysCollection.js +103 -0
  24. package/src/all/background_page/model/entity/metadata/shareMetadataPrivateKeysCollection.test.data.js +88 -0
  25. package/src/all/background_page/model/entity/metadata/shareMetadataPrivateKeysCollection.test.js +192 -0
  26. package/src/all/background_page/model/entity/organizationSettings/organizationSettingsEntity.test.data.js +11 -0
  27. package/src/all/background_page/model/entity/resource/external/externalResourceEntity.js +37 -2
  28. package/src/all/background_page/model/entity/resource/external/externalResourceEntity.test.js +12 -0
  29. package/src/all/background_page/model/entity/resource/resourceEntity.js +4 -4
  30. package/src/all/background_page/model/entity/resource/resourcesCollection.js +30 -0
  31. package/src/all/background_page/model/entity/resource/resourcesCollection.test.js +34 -1
  32. package/src/all/background_page/model/entity/user/userEntity.js +23 -0
  33. package/src/all/background_page/model/entity/user/userEntity.test.js +57 -0
  34. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.js +15 -0
  35. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.test.js +34 -0
  36. package/src/all/background_page/model/import/resources/kdbx/kdbx-protected-with-color-and-icon.kdbx +0 -0
  37. package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.js +16 -0
  38. package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.test.js +62 -3
  39. package/src/all/background_page/model/user/userModel.js +12 -0
  40. package/src/all/background_page/model/user/userModel.test.js +172 -2
  41. package/src/all/background_page/service/accountRecovery/validateOrganizationPublicKeyService.js +2 -2
  42. package/src/all/background_page/service/api/accountRecovery/validateAccountRecoveryOrganizationPrivateKeyService.js +1 -0
  43. package/src/all/background_page/service/api/metadata/metadataPrivateKeyApiService.js +26 -0
  44. package/src/all/background_page/service/api/metadata/metadataPrivateKeyApiService.test.js +51 -2
  45. package/src/all/background_page/service/api/user/userService.js +2 -0
  46. package/src/all/background_page/service/api/userKeyPolicies/userKeyPoliciesSettingsApiService.js +52 -0
  47. package/src/all/background_page/service/api/userKeyPolicies/userKeyPoliciesSettingsApiService.test.js +89 -0
  48. package/src/all/background_page/service/crypto/encryptMessageService.js +1 -1
  49. package/src/all/background_page/service/crypto/generateGpgKeyPairService.js +2 -1
  50. package/src/all/background_page/service/local_storage/resourceLocalStorage.js +12 -1
  51. package/src/all/background_page/service/local_storage/resourceLocalStorage.test.js +35 -0
  52. package/src/all/background_page/service/metadata/createMetadataKeyService.js +4 -1
  53. package/src/all/background_page/service/metadata/createMetadataKeyService.test.js +8 -4
  54. package/src/all/background_page/service/metadata/encryptMetadataPrivateKeysService.js +8 -4
  55. package/src/all/background_page/service/metadata/encryptMetadataPrivateKeysService.test.js +21 -0
  56. package/src/all/background_page/service/metadata/encryptMetadataService.js +38 -5
  57. package/src/all/background_page/service/metadata/encryptMetadataService.test.js +50 -0
  58. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.js +104 -0
  59. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.test.data.js +59 -0
  60. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.test.js +178 -0
  61. package/src/all/background_page/service/move/moveResourcesService.js +4 -3
  62. package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.js +25 -7
  63. package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.test.js +107 -5
  64. package/src/all/background_page/service/resource/findResourcesService.js +11 -13
  65. package/src/all/background_page/service/resource/findResourcesService.test.js +42 -70
  66. package/src/all/background_page/service/resource/import/ImportResourcesService.js +2 -1
  67. package/src/all/background_page/service/resource/update/resourceUpdateLocalStorageService.js +46 -0
  68. package/src/all/background_page/service/resource/update/resourceUpdateLocalStorageService.test.js +144 -0
  69. package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.js +59 -0
  70. package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.test.js +123 -0
  71. package/src/all/locales/en-UK/common.json +2 -2
  72. package/src/all/locales/sl-SI/common.json +124 -0
  73. package/src/all/locales/uk-UA/common.json +124 -0
  74. package/src/chrome/manifest.json +1 -1
  75. package/src/chrome-mv3/manifest.json +1 -1
  76. package/src/firefox/manifest.json +1 -1
  77. package/src/safari/manifest.json +1 -1
  78. package/src/all/background_page/utils/url/canSuggestUrl.js +0 -188
  79. package/src/all/background_page/utils/url/canSuggestUrl.test.js +0 -149
package/CHANGELOG.md CHANGED
@@ -4,6 +4,83 @@ This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [5.2.0] - 2025-06-04
8
+
9
+ ### Added
10
+ - PB-42936 Translate the application into Ukrainian
11
+ - PB-42897 Upgrade resource to v5 from information panel
12
+ - PB-42896 PB-42896 Display an “Upgrade Resource to v5” card in the information panel
13
+ - PB-42895 Upgrade v4 password string resources to v5 default
14
+ - PB-42894 Upgrade a single v4 resource to v5
15
+ - PB-42860 Translate the application into Slovenian
16
+ - PB-42796 Add a limit for multiple URIs
17
+ - PB-42788 As a user I can access the resource appearance customization from the create/edit
18
+ - PB-42704 Display missing metadata keys information in the user sidebar
19
+ - PB-42658 Refresh the users local storage after sharing missing metadata keys
20
+ - PB-42598 Retrieve missing_metadata_keys_ids information when retrieving signed-in user details with the getOrFindMe method of the UserModel
21
+ - PB-42590 Write the background color and icon ID into KDBX files
22
+ - PB-42589 Read the background color and icon ID from KDBX files
23
+ - PB-42588 Adapt the ResourceIcon component to handle IconEntity
24
+ - PB-42587 Add the AddResourceAppearance form part for the resource dialog
25
+ - PB-42586 Add the ‘appearance’ metadata field in the resource dialog
26
+ - PB-42585 Add IconEntity as an associated entity in MetadataEntity
27
+ - PB-42584 Create IconEntity to hold custom icon and color information
28
+ - PB-42570 Create a method canSuggestUris using canSuggestUri
29
+ - PB-42543 Allow users to navigate to the additional URIs from the SelectResourceForm
30
+ - PB-42536 Allow user to add additional URIs from the Create and Edit Resource v5 dialogs
31
+ - PB-42534 Display resource additional URIs badge in the filtered resource of the QuickApplication
32
+ - PB-42533 Display resource additional URIs badge in the suggested resource of the QuickApplication
33
+ - PB-42530 Display resource additional URIs in the details of a resource of the QuickApplication
34
+ - PB-42529 Display resource additional URIs badge in the browsed resource of the QuickApplication
35
+ - PB-42528 Display resource additional URIs badge in the resource details sidebar
36
+ - PB-42527 Display resource additional URIs badge in the resources grid
37
+ - PB-42526 Create the ResourceUrisBadge component to handle resource additional URIs badge and the tooltip displaying them
38
+ - PB-42130 Add shareMetadataKeyPrivate event to AppEvents
39
+ - PB-42129 Create ShareMetadataKeyPrivateController and use ShareMetadataKeyPrivateService to perform the action
40
+ - PB-42127 Create ShareMetadataKeyPrivateService and implement shareMissing method
41
+ - PB-42114 Add create or share method to metadata private key api service
42
+ - PB-42368 Update EncryptOne method from EncryptMetadataPrivateKeysService to allow encryption without signature
43
+ - PB-42134 Update DisplayUsersContextualMenu to display a Share metadata keys action if key is missing
44
+ - PB-42133 Update DisplayUserWorkspaceActions to display a Share metadata keys action if key is missing
45
+ - PB-42132 Implement Dialog confirmation when administrator wants to share keys with an user
46
+ - PB-42131 Add share method into metadataKeysServiceWorkerService to perform the UI action
47
+ - PB-42126 Add cloneForSharing method into MetadataPrivateKeyEntity
48
+ - PB-42124 Create ShareMetadataPrivateKeysCollection
49
+ - PB-42110 Update userModel updateLocalStorage method to include missing_metadata_keys_ids option
50
+ - PB-42109 Add missing_metadata_keys_ids property to UserEntity
51
+ - PB-41617 Add comfortable grid
52
+ - PB-39042 Display upgrade resource to v5 card
53
+
54
+ ### Improved
55
+ - PB-42883 Improve performance by skipping the decryption of unchanged metadata.
56
+ - PB-41654 Transform workspaces shifter into a dropdown
57
+ - PB-42184 Increase the share dialog width to accommodate longer strings from translations or user names
58
+
59
+ ### Fixed
60
+ - PB-43008 Fix dragging v5 resources into shared folders should trigger the share strategy on the resource
61
+ - PB-42985 Translate the button manage account in the profile dropdown
62
+ - PB-42789 Fix userAvatar on userInformationPanel with attention required svg
63
+ - PB-42702 Fix contains missing_metadata_keys_ids miss match
64
+ - PB-42606 Fix the Quick App Login form CTA spinner should not be displayed over the text of the button
65
+ - PB-42272 Fix display v5 resource metadata in the grid when filtering by group
66
+ - PB-42077 Update navigation menu icon width
67
+ - PB-41649 Re-align components in the left sidebar
68
+ - PB-41643 Remove TOTP MFA (profile workspace) border around the QR code and card
69
+ - PB-41642 Update Turn off MFA primary button to be red
70
+
71
+ ### Maintenance
72
+ - PB-43012 Change authentication_token parameter to token for get the user key policies endpoint
73
+ - PB-42790 Replace legacy Icon by SVG
74
+ - PB-42572 Update Quickaccess HomePage to use the canSuggestUris
75
+ - PB-42571 Update isSuggestion in resource entity to use canSuggestUris
76
+ - PB-42569 Create and merge canSuggestUri into a service
77
+ - PB-42978 Check object_type is defined and valid before metadata encryption
78
+
79
+ ### Security
80
+ - PB-42700 Upgrade vulnerable library undici and lockfile-lint-api
81
+ - PB-42391 Update Papaparse library
82
+
83
+
7
84
  ## [5.1.0] - 2025-05-12
8
85
 
9
86
  ### Added
@@ -2152,8 +2229,9 @@ self registration settings option in the left-side bar
2152
2229
  - AP: User with plugin installed
2153
2230
  - LU: Logged in user
2154
2231
 
2155
- ## [4.12.0] - 2024-03-10
2156
- [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.1.0...HEAD
2232
+ [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.2.0...HEAD
2233
+ [5.2.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.1.1...v5.2.0
2234
+ [5.1.1]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.1.0...v5.1.1
2157
2235
  [5.1.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.0.1...v5.1.0
2158
2236
  [5.0.1]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.0.0...v5.0.1
2159
2237
  [5.0.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.12.0...v5.0.0
package/RELEASE_NOTES.md CHANGED
@@ -1,84 +1,80 @@
1
- Song: https://www.youtube.com/watch?v=d9WHUTKMD8k
1
+ Song: https://youtu.be/ZA2JknKrCbM?si=H-rta-dE_IVIqm45
2
2
 
3
- The 5.1 release adds support for encrypted resource metadata features as an opt-in feature. Early adopters can turn it on, test real-world workflows and feed back improvements, while more cautious teams, or teams with a lot of custom integrations, can wait until they are ready.
3
+ Passbolt v5.2.0 is now available as a release candidate. This version introduces the long-awaited metadata properties for v5 resources (beta): users can set a custom icon for a resource and associate multiple URIs with it. The release also ships with numerous bug fixes. For full details, please see the changelog.
4
4
 
5
- This is a major milestone for the product, further extending Passbolt’s security model to improve confidentiality for the contextual information surrounding credentials. This means that metadata such as names, login URLs, and similar fields are now also cryptographically protected. As is customary for high-risk security features, this implementation has been audited by security researchers from Cure53 with a public report publication coming soon.
6
-
7
- To ensure a smooth and cautious rollout, the feature is released in beta with v5.1 and is scheduled for stable release in v5.2. If you want to know more about how to enable it and start testing, a blog article published shortly, will provide a step-by-step guidance on how to activate the feature and a deeper dive into what’s changed.
8
-
9
- Additionally, the password expiry feature is now enabled by default for new installations. This capability is considered a security best practice, helping organizations enforce rotation policies and mitigate risks associated with long-lived shared credentials. For existing instances, administrators can enable this feature manually from the administration workspace. To learn more, check out the blog article: [Passbolt’s New Automation of Shared Passwords Expiry](https://www.passbolt.com/blog/passbolts-new-automation-of-shared-passwords-expiry).
10
-
11
- As usual, this release also includes a few bug fixes and performance improvements, like a faster folder tree that handles 5,000+ folders for the ones that are running a tight ship.
12
-
13
- As always, thank you to our community for your feedback, contributions, and bug reports. A special thanks to the CakePHP maintainers for the fast post v5 upgrade support!
5
+ As always, we warmly invite the community to test these new features before the production release, and we thank everyone for their valuable feedback and bug reports.
14
6
 
15
7
  ### Added
16
- - PB-41340 Add dedicated input to fix autofill on specific website
17
- - PB-41734 SPKD-1.1 Rename metadata private key getter/setter dataSignedByCurrentUser & ensure constructor pass options to its parent class to ensure validation can be disabled
18
- - PB-41735 SPKD-1.2 Verify the metadata public key entity fingerprint is equal to the armored key fingerprint in FindMetadataKeysService findAll
19
- - PB-41737 SPKD-1.3 Verify metadata private key data entity fingerprint with armored key fingerprint in DecryptMetadataPrivateKeysService decryptOne
20
- - PB-41738 SPKD-1.4 Assert metadata keys collection fingerprints public/private integrity in DecryptMetadataPrivateKeysService decryptAllFromMetadataKeysCollection
21
- - PB-41739 SPKD-1.5 Adapt DecryptMessageService.decrypt to return the raw OpenPGP decryption result, including signatures, without throwing an error when signature verification fails
22
- - PB-41740 SPKD-1.7 Implement findVerifiedSignatureForGpgKey in src/all/background_page/service/crypto/findSignatures utils to retrieve a signature for a given OpenPGP key
23
- - PB-41741 SPKD-1.8 Check current user signature when decrypting Metadata Private Key Data
24
- - PB-41742 SPKD-1.6 Implement ExternalGpgSignatureEntity to carry OpenPGP signature data
25
- - PB-41743 SPKD-1.9 Implement MetadataTrustedKeyEntity to carry the information relative to a trusted metadata key
26
- - PB-41744 SPKD-1.10 Implement TrustedMetadataKeyLocalStorage to support the persistence of the trusted metadata key
27
- - PB-41746 SPKD-2.1 Implement bext ConfirmMetadataKeyContentCodeService to request user to confirm trusted metadata keys changes
28
- - PB-41747 SPKD-2.2 Implement confirm metadata key event handler and dialog on the web application
29
- - PB-41748 SPKD-2.3 Implement confirm metadata key event handler and dialog on the quick application
30
- - PB-41749 SPKD-2.4 Implement GetMetadataTrustedKeyService get to retrieve the trusted metadata key from the local storage
31
- - PB-41753 SPKD-2.8 Implement VerifyOrTrustMetadataKeyService verifyTrustedOrTrustNewMetadataKey to verify that the current active metadata key is trusted or request the user to trust it
32
- - PB-41750 SPKD-2.5 Implement MetadataPrivateKeyApiService update to update a trusted metadata key on the API
33
- - PB-41751 SPKD-2.6 Implement UpdateMetadataKeyPrivateService update function to update a trusted metadata key
34
- - PB-41752 SPKD-2.7 Implement TrustMetadataKeyService trust to trust a new metadata key
35
- - PB-41847 SPKD-2.18 Add creator field to metadataKeyEntity test data
36
- - PB-41916 SPKD-2.19 Flush Metadata Keys Settings storage when a user is signed-out
37
- - PB-41918 SPKD-2.20 Adapt EncryptMessageService.encrypt so that it can sign a message with a specified date
38
- - PB-41919 SPKD-2.21 Adapt EncryptMetadataPrivateKeysService.encryptOne so that it can sign a message with a specified date
39
- - PB-41958 SPKD-2.10 Verify and trust metadata key prior to encrypt metadata
40
- - PB-41961 SPKD-2.21 Add in diagram TrustMetadataKeyService
41
- - PB-41962 SPKD-2.22 Add unit test and in the diagram for VerifyOrTrustMetadataKeyService
8
+ - PB-42936 Translate the application into Ukrainian
9
+ - PB-42897 Upgrade resource to v5 from information panel
10
+ - PB-42896 PB-42896 Display an “Upgrade Resource to v5” card in the information panel
11
+ - PB-42895 Upgrade v4 password string resources to v5 default
12
+ - PB-42894 Upgrade a single v4 resource to v5
13
+ - PB-42860 Translate the application into Slovenian
14
+ - PB-42796 Add a limit for multiple URIs
15
+ - PB-42788 As a user I can access the resource appearance customization from the create/edit
16
+ - PB-42704 Display missing metadata keys information in the user sidebar
17
+ - PB-42658 Refresh the users local storage after sharing missing metadata keys
18
+ - PB-42598 Retrieve missing_metadata_keys_ids information when retrieving signed-in user details with the getOrFindMe method of the UserModel
19
+ - PB-42590 Write the background color and icon ID into KDBX files
20
+ - PB-42589 Read the background color and icon ID from KDBX files
21
+ - PB-42588 Adapt the ResourceIcon component to handle IconEntity
22
+ - PB-42587 Add the AddResourceAppearance form part for the resource dialog
23
+ - PB-42586 Add the ‘appearance’ metadata field in the resource dialog
24
+ - PB-42585 Add IconEntity as an associated entity in MetadataEntity
25
+ - PB-42584 Create IconEntity to hold custom icon and color information
26
+ - PB-42570 Create a method canSuggestUris using canSuggestUri
27
+ - PB-42543 Allow users to navigate to the additional URIs from the SelectResourceForm
28
+ - PB-42536 Allow user to add additional URIs from the Create and Edit Resource v5 dialogs
29
+ - PB-42534 Display resource additional URIs badge in the filtered resource of the QuickApplication
30
+ - PB-42533 Display resource additional URIs badge in the suggested resource of the QuickApplication
31
+ - PB-42530 Display resource additional URIs in the details of a resource of the QuickApplication
32
+ - PB-42529 Display resource additional URIs badge in the browsed resource of the QuickApplication
33
+ - PB-42528 Display resource additional URIs badge in the resource details sidebar
34
+ - PB-42527 Display resource additional URIs badge in the resources grid
35
+ - PB-42526 Create the ResourceUrisBadge component to handle resource additional URIs badge and the tooltip displaying them
36
+ - PB-42130 Add shareMetadataKeyPrivate event to AppEvents
37
+ - PB-42129 Create ShareMetadataKeyPrivateController and use ShareMetadataKeyPrivateService to perform the action
38
+ - PB-42127 Create ShareMetadataKeyPrivateService and implement shareMissing method
39
+ - PB-42114 Add create or share method to metadata private key api service
40
+ - PB-42368 Update EncryptOne method from EncryptMetadataPrivateKeysService to allow encryption without signature
41
+ - PB-42134 Update DisplayUsersContextualMenu to display a Share metadata keys action if key is missing
42
+ - PB-42133 Update DisplayUserWorkspaceActions to display a Share metadata keys action if key is missing
43
+ - PB-42132 Implement Dialog confirmation when administrator wants to share keys with an user
44
+ - PB-42131 Add share method into metadataKeysServiceWorkerService to perform the UI action
45
+ - PB-42126 Add cloneForSharing method into MetadataPrivateKeyEntity
46
+ - PB-42124 Create ShareMetadataPrivateKeysCollection
47
+ - PB-42110 Update userModel updateLocalStorage method to include missing_metadata_keys_ids option
48
+ - PB-42109 Add missing_metadata_keys_ids property to UserEntity
49
+ - PB-41617 Add comfortable grid
50
+ - PB-39042 Display upgrade resource to v5 card
51
+
52
+ ### Improved
53
+ - PB-42883 Improve performance by skipping the decryption of unchanged metadata.
54
+ - PB-41654 Transform workspaces shifter into a dropdown
55
+ - PB-42184 Increase the share dialog width to accommodate longer strings from translations or user names
42
56
 
43
57
  ### Fixed
44
- - PB-35383 refresh folders list after delete parent folder and keep items inside
45
- - PB-39607 metadata migration should encrypt metadata with user's key when encrypting a personal resource
46
- - PB-40181 The session keys cache items are missing modified field
47
- - PB-41296 on a fresh install + first login after setup (firefox + debian) going to the user workspace crashes as roles are not defined
48
- - PB-41304 import password errors (UAT required & fix)
49
- - PB-41305 clicking on folder parent in location of a resource in the right sidebar just close the panel
50
- - PB-41407 account recovery in user profile can crash when clicking on review
51
- - PB-41638 Hide administration workspace shifter on desktop app
52
- - PB-41716 Permalink when paste in url and local storage is not loaded yet
53
- - PB-41753 safer key public distribution confirmation in quickaccess
54
- - PB-41776 password input with show icon can display a broken UI
55
- - PB-41841 user workspace displays a blank screen when accessing a user's URL directly from the browser
56
- - PB-41846 Other type resource dialog TOTP does not open a TOTP but a password + totp
57
- - PB-42030 'where to find my account kit' does no open the browser for help
58
- - PB-42033 design of security token in input field could be broken with some characters
59
- - PB-42046 set empty translations with their default string
60
- - PB-42105 import of resources process always uses shared metadata key instead of personal key
61
- - PB-42106 throw an error while decrypting resource metadata if the decrypted metadata object type is not valid
62
- - PB-41378 UI minor bug: multiple resource select, right sidebar cropped
63
- - PB-41435 Display the folder context menu above the “More” button
64
- - PB-41551 Show a disabled style when dragging an item over an invalid drop target
65
- - PB-41550 Refresh the folder tree after the folder‑hierarchy cache updates (order issue)
66
- - PB-41627 UI bug: Note formatting in the right sidebar
67
- - PB-41759 Browser extension should enforce object_type on metadata of resource creation / edition
58
+ - PB-43008 Fix dragging v5 resources into shared folders should trigger the share strategy on the resource
59
+ - PB-42985 Translate the button manage account in the profile dropdown
60
+ - PB-42789 Fix userAvatar on userInformationPanel with attention required svg
61
+ - PB-42702 Fix contains missing_metadata_keys_ids miss match
62
+ - PB-42606 Fix the Quick App Login form CTA spinner should not be displayed over the text of the button
63
+ - PB-42272 Fix display v5 resource metadata in the grid when filtering by group
64
+ - PB-42077 Update navigation menu icon width
65
+ - PB-41649 Re-align components in the left sidebar
66
+ - PB-41643 Remove TOTP MFA (profile workspace) border around the QR code and card
67
+ - PB-41642 Update Turn off MFA primary button to be red
68
68
 
69
69
  ### Maintenance
70
- - PB-38199 Update administration page Role-Based Access Control save behavior
71
- - PB-41346 Remove mfa settings screens from API
72
- - PB-41366 ECC-1.1 Update browser extension outdated OpenPGP.js to version 6
73
- - PB-41384 Upgrade vulnerable lib on bext 'image-size'
74
- - PB-41385 2.1 Display react list for folder tree
75
- - PB-41386 2.2 Folders updated should be refreshed in the folder tree
76
- - PB-41387 2.3 Navigate to a folder form route should scroll the folder tree to see the selected folder
77
- - PB-41388 2.4 Update the padding according to the depth of the folder
78
- - PB-41414 WP4-14.2 Migrate import account kit screen
79
- - PB-41646 UI adjustment: All tables should have a 0.8rem gap
80
- - PB-41648 UI adjustment: Name column size in grid should be large by default
81
- - PB-41647 UI adjustment: All dialog & setting primary should have a regular font weight
82
- - PB-41653 UI adjustment: Grid select column, padding left & right 1.6rem
83
- - PB-41709 Add activity diagram to verify metadata keys
84
- - PB-41720 Add licence on SVG in the folder svg on the styleguide
70
+ - PB-43012 Change authentication_token parameter to token for get the user key policies endpoint
71
+ - PB-42790 Replace legacy Icon by SVG
72
+ - PB-42572 Update Quickaccess HomePage to use the canSuggestUris
73
+ - PB-42571 Update isSuggestion in resource entity to use canSuggestUris
74
+ - PB-42569 Create and merge canSuggestUri into a service
75
+ - PB-42978 Check object_type is defined and valid before metadata encryption
76
+
77
+ ### Security
78
+ - PB-42700 Upgrade vulnerable library undici and lockfile-lint-api
79
+ - PB-42391 Update Papaparse library
80
+
package/crowdin.yml CHANGED
@@ -17,5 +17,7 @@ export_languages:
17
17
  - pt-BR
18
18
  - ro
19
19
  - ru
20
+ - sl
20
21
  - sv
22
+ - uk
21
23
  commit_message: '[skip-ci]'
@@ -210,6 +210,11 @@ classDiagram
210
210
  +exec() Promise~void~
211
211
  }
212
212
 
213
+ class ShareMetadataKeyPrivateController {
214
+ event "passbolt.metadata.share-missing-metadata-private-keys-with-user"
215
+ +exec(uuid userId) Promise~void~
216
+ }
217
+
213
218
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
214
219
  %% Metadata services
215
220
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -288,6 +293,10 @@ classDiagram
288
293
  +getOrFindAll() Promise~MetadataKeysCollection~
289
294
  }
290
295
 
296
+ class ShareMetadataKeyPrivateService {
297
+ +shareMissing(uuid userId, string passphrase) Promise~void~
298
+ }
299
+
291
300
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
292
301
  %% Metadata Settings services
293
302
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -323,6 +332,7 @@ classDiagram
323
332
 
324
333
  class MetadataPrivateKeyApiService {
325
334
  +update(MetadataPrivateKeyEntity metadataPrivateKey) Promise~string~
335
+ +create(ShareMetadataPrivateKeysCollection metadataPrivateKeysCollection) Promise~void~
326
336
  }
327
337
 
328
338
  class MetadataKeysSettingsLocalStorage {
@@ -529,7 +539,7 @@ classDiagram
529
539
  -string props.expires
530
540
  -string props.created
531
541
  -string props.algorithm
532
- -number props.length
542
+ -integer props.length
533
543
  -string props.curve
534
544
  -boolean props.private
535
545
  -boolean props.revoked
@@ -541,7 +551,7 @@ classDiagram
541
551
  +get isValid() boolean
542
552
  +get created() string
543
553
  +get algorithm() string
544
- +get length() number
554
+ +get length() integer
545
555
  +get curve() string
546
556
  +get revoked() boolean
547
557
  +get private() boolean
@@ -562,28 +572,6 @@ classDiagram
562
572
  +get created() string
563
573
  }
564
574
 
565
- class GpgkeyEntity {
566
- -uuid props.id
567
- -uuid props.user_id
568
- -string props.fingerprint
569
- -string props.armored_key
570
- -boolean props.deleted
571
- -string props.type
572
- -string props.uid
573
- -integer props.bits
574
- -string props.key_created
575
- -string props.expires
576
- -string props.created
577
- -string props.modified
578
- +get id() string
579
- +get userId() string
580
- +get armoredKey() string
581
- +get fingerprint() boolean
582
- +get created() string
583
- +get modified() string
584
- +get isDeleted() boolean
585
- }
586
-
587
575
  class GroupsUsersCollection {
588
576
  +getById(string id) GroupUserEntity
589
577
  +getGroupUserByUserId(string userId) GroupUserEntity
@@ -665,6 +653,12 @@ classDiagram
665
653
  +hasEncryptedPrivateKeys() boolean
666
654
  }
667
655
 
656
+ class ShareMetadataPrivateKeysCollection {
657
+ +validateBuildRules(item, options): void
658
+ +hasDecryptedPrivateKeys(): boolean
659
+ +hasEncryptedPrivateKeys(): boolean
660
+ }
661
+
668
662
  class MetadataTrustedKeyEntity {
669
663
  -string props.fingerprint
670
664
  -string props.signed
@@ -751,7 +745,7 @@ classDiagram
751
745
  -string props.created_by
752
746
  -string props.modified
753
747
  -string props.modified_by
754
- -MetadataEntity _metadata
748
+ -ResourceMetadataEntity _metadata
755
749
  -FavoriteEntity _favorite
756
750
  -PermissionEntity _permission
757
751
  -PermissionsCollection _permissions
@@ -760,8 +754,8 @@ classDiagram
760
754
  -TagsCollection _tags
761
755
  -UserEntity _creator
762
756
  -UserEntity _modifier
763
- +get metadata() string|MetadataEntity
764
- +set metadata(string|MetadataEntity metadata)
757
+ +get metadata() string|ResourceMetadataEntity
758
+ +set metadata(string|ResourceMetadataEntity metadata)
765
759
  +isMetadataDecrypted() boolean
766
760
  +isMetadataKeyTypeUserKey() boolean
767
761
  }
@@ -867,6 +861,7 @@ classDiagram
867
861
  -string props.last_logged_in
868
862
  -boolean props.is_mfa_enabled
869
863
  -string props.locale
864
+ -array~uuid~ missing_metadata_key_ids
870
865
  -RoleEntity _role
871
866
  -ProfileEntity _profile
872
867
  -GpgkeyEntity _gpgkey
@@ -888,12 +883,44 @@ classDiagram
888
883
  +get groupsUsers() GroupsUsersCollection
889
884
  +get accountRecoveryUserSetting() AccountRecoveryUserSettingEntity
890
885
  +get pendingAccountRecoveryUserRequest() AccountRecoveryRequestEntity
886
+ +get missingMetadataKeysIds() array~uuid~
891
887
  +set locale(string locale)
892
888
  }
893
889
 
894
890
  class UsersCollection {
895
891
  }
896
892
 
893
+ class ResourceMetadataEntity {
894
+
895
+ -string props.object_type
896
+ -string props.resource_type_id
897
+ -string props.name
898
+ -string props.username
899
+ -array props.uris
900
+ -string props.description
901
+ -IconEntity _icon
902
+
903
+ +get objectType() string|null
904
+ +get name() string
905
+ +get username() string
906
+ +get description() string|null
907
+ +get resourceTypeId() string
908
+ +get uris() Array;
909
+ +get icon() IconEntity|null
910
+ +get METADATA_OBJECT_TYPE()$ string
911
+ +get URI_MAX_LENGTH()$ number
912
+ }
913
+
914
+ class IconEntity {
915
+ -string props.type
916
+ -intger props.value
917
+ -string props.background_color
918
+
919
+ +get type string|null
920
+ +get value integer|null
921
+ +get backgroundColor string|null
922
+ }
923
+
897
924
  class MigrateMetadataEntity {
898
925
  -boolean migrate_resources_to_v5
899
926
  -boolean migrate_folders_to_v5
@@ -931,6 +958,99 @@ classDiagram
931
958
  }
932
959
  }
933
960
 
961
+ namespace GpgKeyNs {
962
+ %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
963
+ %% GpgKey controllers
964
+ %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
965
+
966
+ class GenerateSetupKeyPairController {
967
+ +exec(object generateGpgKeyDto) Promise
968
+ }
969
+
970
+ class AccountRecoveryGenerateOrganizationKeyController {
971
+ +exec(generateGpgKeyPairOptionsDto object) Promise~ExternalGpgKeyPairEntity~
972
+ }
973
+
974
+ %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
975
+ %% GpgKey services
976
+ %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
977
+
978
+ class FindUserKeyPoliciesSettingsService {
979
+ +findSettingsAsGuest(userId string, authenticationToken string) Promise~UserKeyPoliciesSettingsEntity~
980
+ }
981
+
982
+ %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
983
+ %% GpgKey models
984
+ %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
985
+
986
+ class UserKeyPoliciesSettingsApiService {
987
+ +findSettingsAsGuest(userId string, authenticationToken string) Promise~object~
988
+ }
989
+
990
+ class UserKeyPoliciesSettingsEntity {
991
+ -string props.preferred_key_type
992
+ -string props.source
993
+
994
+ +get preferredKeyType() string
995
+ +get source() string|null
996
+
997
+ +createFromDefault(data: object)$ UserKeyPoliciesSettingsEntity
998
+ }
999
+
1000
+ class GenerateGpgKeyPairOptionsEntity {
1001
+ -string props.preferred_key_type
1002
+ -string props.source
1003
+ -string props.name
1004
+ -string props.email
1005
+ -string props.passphrase
1006
+ -string props.type
1007
+ -integer props.keySize
1008
+ -string props.curve
1009
+ -integer props.date
1010
+
1011
+ +toGenerateOpenpgpKeyDto() object
1012
+ +get userId() string
1013
+ +get name() string
1014
+ +get email() string
1015
+ +get type() string
1016
+ +get passphrase() string
1017
+ +get curve() string|null
1018
+ +get rsaBits() integer|null
1019
+ +get date() Date
1020
+ +createForUserKeyGeneration(apiGpgKeyType string, generateGpgKeyPairDto object)$ GenerateGpgKeyPairOptionsEntity
1021
+ +createForOrkKeyGeneration(generateGpgKeyPairDto object)$ GenerateGpgKeyPairOptionsEntity
1022
+ +get ENTITY_NAME() string
1023
+ +get DEFAULT_RSA_KEY_SIZE() integer
1024
+ +get DEFAULT_KEY_TYPE() string
1025
+ +get DEFAULT_ECC_KEY_CURVE() string
1026
+ +get KEY_TYPE_RSA() string
1027
+ +get KEY_TYPE_ECC() string
1028
+ +get KEY_CURVE_ED25519() string
1029
+ }
1030
+
1031
+ class GpgkeyEntity {
1032
+ -uuid props.id
1033
+ -uuid props.user_id
1034
+ -string props.fingerprint
1035
+ -string props.armored_key
1036
+ -boolean props.deleted
1037
+ -string props.type
1038
+ -string props.uid
1039
+ -integer props.bits
1040
+ -string props.key_created
1041
+ -string props.expires
1042
+ -string props.created
1043
+ -string props.modified
1044
+ +get id() string
1045
+ +get userId() string
1046
+ +get armoredKey() string
1047
+ +get fingerprint() boolean
1048
+ +get created() string
1049
+ +get modified() string
1050
+ +get isDeleted() boolean
1051
+ }
1052
+ }
1053
+
934
1054
  %% Resource controllers relationships
935
1055
  CreateResourceController*--CreateResourceService
936
1056
  %% CreateResourceController*--GetPassphraseService
@@ -982,12 +1102,15 @@ classDiagram
982
1102
  GetOrFindMetadataTypesSettingsController*--GetOrFindMetadataSettingsService
983
1103
  SaveMetadataKeysSettingsController*--SaveMetadataSettingsService
984
1104
  SaveMetadataTypesSettingsController*--SaveMetadataSettingsService
1105
+ ShareMetadataKeyPrivateController*--GetPassphraseService
1106
+ ShareMetadataKeyPrivateController*--VerifyOrTrustMetadataKeyService
985
1107
  style CreateMetadataKeyController fill:#D2E0FB
986
1108
  style FindAllNonDeletedMetadataKeysController fill:#D2E0FB
987
1109
  style GenerateMetadataPrivateKeyController fill:#D2E0FB
988
1110
  style GetOrFindMetadataTypesSettingsController fill:#D2E0FB
989
1111
  style SaveMetadataKeysSettingsController fill:#D2E0FB
990
1112
  style SaveMetadataTypesSettingsController fill:#D2E0FB
1113
+ ShareMetadataKeyPrivateController*--ShareMetadataKeyPrivateService
991
1114
  %% Metadata services relationships.
992
1115
  CreateMetadataKeyService*--EncryptMetadataPrivateKeysService
993
1116
  CreateMetadataKeyService*--FindUsersService
@@ -997,6 +1120,9 @@ classDiagram
997
1120
  MigrateMetadataResourcesService*--MigrateMetadataResourcesApiService
998
1121
  MigrateMetadataResourcesService*--EncryptMetadataService
999
1122
  MigrateMetadataResourcesService*--ResourceTypeModel
1123
+ ShareMetadataKeyPrivateService*--MetadataPrivateKeyApiService
1124
+ ShareMetadataKeyPrivateService*--GetOrFindMetadataKeysService
1125
+ ShareMetadataKeyPrivateService*--EncryptMetadataPrivateKeysService
1000
1126
  %% DecryptMetadataPrivateKeysService*--PassphraseStorageService
1001
1127
  DecryptMetadataService*--GetOrFindMetadataKeysService
1002
1128
  DecryptMetadataService*--GetOrFindSessionKeysService
@@ -1095,4 +1221,13 @@ classDiagram
1095
1221
  ShareResourceService*--ShareService
1096
1222
  %% Share models relationships.
1097
1223
  style ShareService fill:#DEE5D4
1224
+
1225
+ %% GpgKey controllers relationships
1226
+ GenerateSetupKeyPairController*--FindUserKeyPoliciesSettingsService
1227
+ GenerateSetupKeyPairController*--GenerateGpgKeyPairService
1228
+ GenerateSetupKeyPairController*--GenerateGpgKeyPairOptionsEntity
1229
+ AccountRecoveryGenerateOrganizationKeyController*--GenerateGpgKeyPairService
1230
+ AccountRecoveryGenerateOrganizationKeyController*--GenerateGpgKeyPairOptionsEntity
1231
+ %% GpgKey services relationships
1232
+ FindUserKeyPoliciesSettingsService*--UserKeyPoliciesSettingsApiService
1098
1233
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "passbolt-browser-extension",
3
- "version": "5.1.0",
3
+ "version": "5.2.0-rc.0",
4
4
  "license": "AGPL-3.0",
5
5
  "copyright": "Copyright 2025 Passbolt SA",
6
6
  "description": "Passbolt web extension for the open source password manager for teams",
@@ -20,9 +20,9 @@
20
20
  "jssha": "~3.3.1",
21
21
  "kdbxweb": "2.1.1",
22
22
  "locutus": "~2.0.9",
23
- "openpgp": "6.1",
24
- "papaparse": "^5.2.0",
25
- "passbolt-styleguide": "^5.1.2",
23
+ "openpgp": "^6.1.1",
24
+ "papaparse": "^5.5.2",
25
+ "passbolt-styleguide": "^5.2.1",
26
26
  "react": "17.0.2",
27
27
  "react-dom": "17.0.2",
28
28
  "secrets-passbolt": "github:passbolt/secrets.js#v2.0.1",
@@ -62,7 +62,7 @@
62
62
  "jest-fetch-mock": "^3.0.3",
63
63
  "jest-junit": "^16.0.0",
64
64
  "jest-webextension-mock": "^3.8.9",
65
- "lockfile-lint": "^4.14.0",
65
+ "lockfile-lint": "^4.14.1",
66
66
  "text-encoding-utf-8": "^1.0.2",
67
67
  "uuid": "^8.3.2",
68
68
  "web-ext": "^8.0.0",
@@ -70,7 +70,12 @@
70
70
  "webpack-cli": "^5.1.4"
71
71
  },
72
72
  "overrides": {
73
- "image-size": "^2.0.2"
73
+ "image-size": "^2.0.2",
74
+ "i18next-parser": {
75
+ "cheerio": {
76
+ "undici": "6.21.2"
77
+ }
78
+ }
74
79
  },
75
80
  "scripts": {
76
81
  "build": "npx grunt build",
@@ -0,0 +1,10 @@
1
+ {
2
+ "appName": {
3
+ "message": "Passbolt - upravljalnik gesel z odprto kodo",
4
+ "description": "The application name of the extension, displayed in the web store. 45 characters max."
5
+ },
6
+ "appDescription": {
7
+ "message": "Razširitev Passbolt za upravljalnik gesel z odprto kodo za ekipe.",
8
+ "description": "The description of the extension, displayed in the web store. 85 characters max."
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "appName": {
3
+ "message": "Passbolt — менеджер паролів з відкритим кодом",
4
+ "description": "The application name of the extension, displayed in the web store. 45 characters max."
5
+ },
6
+ "appDescription": {
7
+ "message": "Розширення Passbolt, менеджера паролів з відкритим кодом для команд.",
8
+ "description": "The description of the extension, displayed in the web store. 85 characters max."
9
+ }
10
+ }