passbolt-browser-extension 5.5.0 → 5.6.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 (91) hide show
  1. package/.github/workflows/release.yaml +19 -19
  2. package/CHANGELOG.md +110 -53
  3. package/RELEASE_NOTES.md +55 -37
  4. package/doc/browser-extension-class-diagram.md +53 -3
  5. package/package.json +8 -9
  6. package/src/all/_locales/ko/messages.json +2 -2
  7. package/src/all/background_page/controller/auth/redirectToAdminWorkspaceController.test.js +0 -1
  8. package/src/all/background_page/controller/group/groupUpdateController.js +0 -2
  9. package/src/all/background_page/controller/group/groupUpdateController.test.data.js +2 -2
  10. package/src/all/background_page/controller/group/groupUpdateController.test.js +47 -28
  11. package/src/all/background_page/controller/import/importResourcesFileController.test.js +57 -11
  12. package/src/all/background_page/controller/metadata/createMetadataKeyController.test.js +1 -2
  13. package/src/all/background_page/controller/migrateMetadata/migrateMetadataResourcesController.js +1 -1
  14. package/src/all/background_page/controller/rotateMetadata/resumeRotateMetadataKeyController.js +69 -0
  15. package/src/all/background_page/controller/rotateMetadata/resumeRotateMetadataKeyController.test.js +47 -0
  16. package/src/all/background_page/controller/rotateMetadata/rotateMetadataKeyController.js +73 -0
  17. package/src/all/background_page/controller/rotateMetadata/rotateMetadataKeyController.test.js +54 -0
  18. package/src/all/background_page/event/appEvents.js +24 -0
  19. package/src/all/background_page/model/entity/account/accountKitEntity.js +1 -1
  20. package/src/all/background_page/model/entity/account/accountKitEntity.test.js +4 -4
  21. package/src/all/background_page/model/entity/group/update/groupUpdateDryRunResultEntity.test.data.js +1 -1
  22. package/src/all/background_page/model/entity/group/update/groupUpdatesCollection.js +111 -0
  23. package/src/all/background_page/model/entity/group/update/groupUpdatesCollection.test.data.js +117 -0
  24. package/src/all/background_page/model/entity/group/update/groupUpdatesCollection.test.js +190 -0
  25. package/src/all/background_page/model/entity/resource/external/externalResourceEntity.js +70 -1
  26. package/src/all/background_page/model/entity/resource/external/externalResourceEntity.test.js +310 -0
  27. package/src/all/background_page/model/entity/totp/externalTotpEntity.js +17 -10
  28. package/src/all/background_page/model/entity/totp/totpEntity.test.js +40 -0
  29. package/src/all/background_page/model/export/resources/csvRowComposer/csvLastPassRowComposer.js +3 -0
  30. package/src/all/background_page/model/export/resources/csvRowComposer/csvLastPassRowComposer.test.js +25 -1
  31. package/src/all/background_page/model/group/groupModel.js +0 -16
  32. package/src/all/background_page/model/group/groupModel.test.js +0 -24
  33. package/src/all/background_page/model/import/resources/csvRowParser/csv1PasswordRowParser.test.js +40 -1
  34. package/src/all/background_page/model/import/resources/csvRowParser/csvBitWardenRowParser.test.js +41 -1
  35. package/src/all/background_page/model/import/resources/csvRowParser/csvDashlaneRowParser.test.js +39 -1
  36. package/src/all/background_page/model/import/resources/csvRowParser/csvKdbxRowParser.test.js +40 -1
  37. package/src/all/background_page/model/import/resources/csvRowParser/csvLastPassRowParser.js +19 -4
  38. package/src/all/background_page/model/import/resources/csvRowParser/csvLastPassRowParser.test.js +129 -1
  39. package/src/all/background_page/model/import/resources/csvRowParser/csvLogMeOnceRowParser.test.js +40 -1
  40. package/src/all/background_page/model/import/resources/csvRowParser/csvNordpassRowParser.test.js +39 -1
  41. package/src/all/background_page/model/import/resources/csvRowParser/csvSafariRowParser.test.js +37 -1
  42. package/src/all/background_page/model/import/resources/resourcesCsvImportParser.test.js +2 -1
  43. package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.js +32 -23
  44. package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.test.js +1 -1
  45. package/src/all/background_page/model/import/resources/resourcesTypeImportParser.js +4 -4
  46. package/src/all/background_page/model/import/resources/resourcesTypeImportParser.test.js +3 -2
  47. package/src/all/background_page/service/api/metadata/metadataKeysApiService.js +28 -1
  48. package/src/all/background_page/service/api/metadata/metadataKeysApiService.test.js +116 -0
  49. package/src/all/background_page/service/api/metadata/metadataRotateKeysResourcesApiService.js +59 -0
  50. package/src/all/background_page/service/api/metadata/metadataRotateKeysResourcesApiService.test.js +97 -0
  51. package/src/all/background_page/service/group/groupUpdateService.js +46 -20
  52. package/src/all/background_page/service/group/groupUpdateService.test.js +91 -72
  53. package/src/all/background_page/service/metadata/configureMetadataSettingsService.js +2 -2
  54. package/src/all/background_page/service/metadata/configureMetadataSettingsService.test.js +2 -2
  55. package/src/all/background_page/service/metadata/decryptMetadataService.js +10 -6
  56. package/src/all/background_page/service/metadata/deleteMetadataKeyService.js +39 -0
  57. package/src/all/background_page/service/metadata/deleteMetadataKeyService.test.js +51 -0
  58. package/src/all/background_page/service/metadata/expireMetadataKeyService.js +62 -0
  59. package/src/all/background_page/service/metadata/expireMetadataKeyService.test.js +75 -0
  60. package/src/all/background_page/service/metadata/rotateMetadata/rotateMetadataKeyService.js +96 -0
  61. package/src/all/background_page/service/metadata/rotateMetadata/rotateMetadataKeyService.test.js +202 -0
  62. package/src/all/background_page/service/metadata/rotateMetadata/rotateResourcesMetadataKeyService.js +102 -0
  63. package/src/all/background_page/service/metadata/rotateMetadata/rotateResourcesMetadataKeyService.test.js +198 -0
  64. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.js +1 -1
  65. package/src/all/background_page/service/progress/progressService.test.data.js +1 -0
  66. package/src/all/background_page/service/resource/import/ImportResourcesService.js +7 -45
  67. package/src/all/background_page/service/resource/import/ImportResourcesService.test.js +27 -47
  68. package/src/all/background_page/service/resourceType/updateResourceTypesService.test.js +4 -2
  69. package/src/all/background_page/service/sessionKey/decryptSessionKeysBundlesService.js +21 -6
  70. package/src/all/background_page/service/sessionKey/decryptSessionKeysBundlesService.test.js +7 -4
  71. package/src/all/locales/cs-CZ/common.json +12 -4
  72. package/src/all/locales/de-DE/common.json +12 -4
  73. package/src/all/locales/en-UK/common.json +12 -4
  74. package/src/all/locales/es-ES/common.json +12 -4
  75. package/src/all/locales/fr-FR/common.json +12 -4
  76. package/src/all/locales/it-IT/common.json +12 -4
  77. package/src/all/locales/ja-JP/common.json +12 -4
  78. package/src/all/locales/ko-KR/common.json +14 -6
  79. package/src/all/locales/lt-LT/common.json +12 -4
  80. package/src/all/locales/nl-NL/common.json +12 -4
  81. package/src/all/locales/pl-PL/common.json +15 -7
  82. package/src/all/locales/pt-BR/common.json +12 -4
  83. package/src/all/locales/ro-RO/common.json +12 -4
  84. package/src/all/locales/ru-RU/common.json +12 -4
  85. package/src/all/locales/sl-SI/common.json +12 -4
  86. package/src/all/locales/sv-SE/common.json +12 -4
  87. package/src/all/locales/uk-UA/common.json +12 -4
  88. package/src/chrome/manifest.json +1 -1
  89. package/src/chrome-mv3/manifest.json +1 -1
  90. package/src/firefox/manifest.json +1 -1
  91. package/src/safari/manifest.json +1 -1
@@ -1,19 +1,19 @@
1
- name: Create Release
2
-
3
- on:
4
- push:
5
- tags:
6
- - "v[0-9]+.[0-9]+.[0-9]+"
7
-
8
- jobs:
9
- build:
10
- name: Create release
11
- runs-on: ubuntu-latest
12
- permissions:
13
- contents: write
14
- steps:
15
- - uses: actions/checkout@v4
16
- - env:
17
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18
- name: Create Release
19
- run: gh release create "${GITHUB_REF#refs/*/}" -t "${GITHUB_REF#refs/*/}" --notes-file RELEASE_NOTES.md
1
+ #name: Create Release
2
+ #
3
+ #on:
4
+ # push:
5
+ # tags:
6
+ # - "v[0-9]+.[0-9]+.[0-9]+"
7
+ #
8
+ #jobs:
9
+ # build:
10
+ # name: Create release
11
+ # runs-on: ubuntu-latest
12
+ # permissions:
13
+ # contents: write
14
+ # steps:
15
+ # - uses: actions/checkout@v4
16
+ # - env:
17
+ # GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18
+ # name: Create Release
19
+ # run: gh release create "${GITHUB_REF#refs/*/}" -t "${GITHUB_REF#refs/*/}" --notes-file RELEASE_NOTES.md
package/CHANGELOG.md CHANGED
@@ -4,9 +4,63 @@ This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [5.6.0] - 2025-10-08
8
+ ### Added
9
+ - PB-39068 WP5-5.6 - Implement a Service RotateResourcesMetadataKeyService that proceed with the rotation of the key
10
+ - PB-39069 WP5-5.8 - Implement a new method in MetadataKeysServiceWorkerService to call for to expire a key
11
+ - PB-39071 WP5-5.1 - Implement a new method in MetadataKeysApiService to expire a shared metadata key
12
+ - PB-39072 WP5-5.4 - Implement a new Service UpdateMetadataKeysService to process with the expiration of a key
13
+ - PB-39073 WP5-5.2 - Implement a new API service MetadataRotateKeysResourcesApiService to retrieve the first page of data to rotate
14
+ - PB-39074 WP5-5.3 - Implement a new method in MetadataKeysApiService to register the rotated data on the API
15
+ - PB-39075 WP5-5.7 - Implement a Controller RotateResourcesMetadataKeyController to run the rotation process
16
+ - PB-39076 WP5-5.9 - Implement a new method in MetadataKeysServiceWorkerService to call passbolt.metadata.rotate-resources-metadata for with the new Key
17
+ - PB-39078 WP5-5.10 - Implement the ConfirmMetadataRotationDialog
18
+ - PB-39094 WP5-6.2 - Display the rotate key button when multiple metadata key are active
19
+ - PB-43253 Workspace resizable sidebars
20
+ - PB-44582 lastpass example csv import with totp success
21
+ - PB-45385 SN - WP1.1 Create the entity SecretDataV5StandaloneNoteEntity
22
+ - PB-45389 SN - WP1.3 Update ResourceFormEntity to include secret SecretDataV5StandaloneNoteEntity
23
+ - PB-45400 SN - WP2.1 Add new resource type in DisplayContentTypesAllowedContentTypesAdministration
24
+ - PB-45404 SN - WP2.2 Add new resource type in DisplayResourcesWorkspaceMainMenu
25
+ - PB-45406 SN - WP2.3 Update passbolt default resource type icons to include the new resource type icon
26
+ - PB-45408 SN - WP2.4 Update DisplayResourcesListDetails to handle the correct subtitle for standalone note and add the same for standalone custom fields
27
+ - PB-45412 SN - WP3.1 Apply a minimum height to the resource workspace ‘others’ dialog used to create other resource types
28
+ - PB-45413 SN - WP3.3 Increase the height of the notes textarea to use the maximum available space in the resource creation dialog
29
+ - PB-45414 SN - WP3.3 Add “hide” button when the note is decrypted to hide it again
30
+ - PB-45417 SN - WP2.5 Update the “other” dialog to add the standalone note in the content type list in v5
31
+ - PB-45424 SN - WP3.4 Ensure Import/Export is working as expected with standalone notes
32
+ - PB-45464 GMUO - WP1.1 Create new collection ‘GroupUpdateCollection’
33
+ - PB-45465 GMUO - WP1.2 Migrate group update logic to optimise the request on the API
34
+ - PB-45466 GMUO - WP1.3 Adapt group update progress bar mechanism
35
+ - PB-45476 WP5-6.3 - Create events with controller to rotate and resume rotation of a metadata key
36
+
37
+ ### Fixed
38
+ - PB-43218 Date field icons should not be replaced with the copy icon in the SSO settings and expiry resource dialogs
39
+ - PB-45239 Folders are not displayed in the correct order (GITHUB #568)
40
+ - PB-45329 add TOTP toString handling similar to other csv exports
41
+ - PB-45402 Add missing icon property to resource types schema definition
42
+ - PB-45450 Fix account kit export with big private armored keys
43
+ - PB-45458 Remove Organisation Settings max-width
44
+ - PB-45733 Fix quickaccess resource creation with encrypted metadata
45
+
46
+ ### Maintenance
47
+ - PB-44253 Upgrade vulnerable library form-data
48
+ - PB-44593 Upgrade i18next to v24x
49
+ - PB-45182 Major upgrade for copy-anything (Medium)
50
+ - PB-45183 Minor upgrade for browserslist (Low)
51
+ - PB-45184 3rd party Github Actions should be pinned (Medium)
52
+ - PB-45401 Enforce the requirement of the property object_type for custom fields
53
+ - PB-45484 Fix low security vulnerability dependency with web-ext to 8.10.0
54
+ - PB-45583 Review and clean up npm overridden dependencies
55
+ - PB-45601 Update the "Upgrade to Passbolt Pro" buttons URL
56
+
57
+ ## [5.5.1] - 2025-09-15
58
+ ### Fixed
59
+ - PB-45290 Fix password missing crash on metadata activation in first admin setup
60
+
7
61
  ## [5.5.0] - 2025-09-10
8
62
  ### Added
9
- - PB-43921 - Increase directory sync report dialog size
63
+ - PB-43921 Increase directory sync report dialog size
10
64
  - PB-44816 Pro teasing - WP1.1 Create DisplaySubscriptionKeyTeasing component
11
65
  - PB-44817 Pro teasing - WP1.2 Create DisplayPasswordPoliciesAdministrationTeasing
12
66
  - PB-44818 Pro teasing - WP1.3 Create DisplayAdministrationUserPassphrasePoliciesTeasing
@@ -22,67 +76,67 @@ This project adheres to [Semantic Versioning](http://semver.org/).
22
76
  - PB-44641 ZK - WP5.4 Create UpdateMetadataSettingsPrivateKeyService to to be able to disabled zero knowledge mode
23
77
  - PB-44631 ZK - WP5.5 Update SaveMetadataKeysSettingsController to be able to disabled zero knowledge mode
24
78
  - PB-44757 ZK - WP5.6 As an administrator with missing metadata keys I should not be able to change metadata settings
25
- - PB-44630 - SCIM administration screen
79
+ - PB-44630 SCIM administration screen
26
80
 
27
81
  ### Fixed
28
- - PB-44638 - Password expiry should not be removed when password is not updated
29
- - PB-44604 - Fix regular expression on public key metadata validation
30
- - PB-44707 - Fix service worker not restarting after browser extension update on Chrome
31
- - PB-45060 - Fix custom fields json schema properties type
32
- - PB-44933 - Fix setup a new user should have missing key set
82
+ - PB-44638 Password expiry should not be removed when password is not updated
83
+ - PB-44604 Fix regular expression on public key metadata validation
84
+ - PB-44707 Fix service worker not restarting after browser extension update on Chrome
85
+ - PB-45060 Fix custom fields json schema properties type
86
+ - PB-44933 Fix setup a new user should have missing key set
33
87
 
34
88
  ### Maintenance
35
- - PB-44594 - Upgrade xregexp to 5.1.2
89
+ - PB-44594 Upgrade xregexp to 5.1.2
36
90
  - PB-44638 Password expiry should not be removed when password is not updated
37
91
  - PB-44668 The create menu import operation should be actionable when encrypted metadata plugin is not available
38
92
 
39
93
  ## [5.4.0] - 2025-08-13
40
94
  ### Added
41
- - PB-44201: E2EE The organisation settings offer now a simplified way to activate metadata encryption and the new resource types
42
- - PB-42205: E2EE encrypted metadata and new resource types are activated by default after the first administrator setup
43
- - PB-43255: Add support for multiple uri import export on kdbx files
44
- - PB-43110: ZK - WP4.2 As a signed-in user I should not be allowed to upgrade resources with missing key situation
45
- - PB-43712: Translate the application in Czech
46
- - PB-43939: ZK - WP3.2 Add an app event to get or find the metadata keys settings
47
- - PB-43980: Add support for custom field import export on kdbx files
48
- - PB-44080: ZK - WP4.1 Create a dialog explaining the missing key situation
49
- - PB-44081: ZK - WP4.3 As a signed-in user I should not be allowed to create resources with missing key situation in the resource workspace
50
- - PB-44090: ZK - WP4.4 As a signed-in user I should not be allowed to edit resources with missing key situation
51
- - PB-44091: ZK - WP4.5 As a signed-in user I should not be allowed to share resources with missing key situation
52
- - PB-44094: ZK - WP4.6 As a signed-in user I should not be allowed to import resources with missing key situation
53
- - PB-44095: ZK - WP4.7 As a signed-in user I should not be allowed to move resources with missing key situation
54
- - PB-44096: ZK - WP4.8 As a signed-in user I should not be allowed to move folders with missing key situation
55
- - PB-44097: ZK - WP4.9 Display a page explaining the missing key situation on the quick app
56
- - PB-44098: ZK - WP4.10 As a signed-in user I should not be allowed to create resources with missing key situation in the quick app
57
- - PB-44099: ZK - WP4.11 As a signed-in user I should not be allowed to generate password on the inform menu
58
- - PB-44206: ZK - WP4.14 As administrators I cannot trigger the encrypted metadata migration if I have missing metadata keys
59
- - PB-44211: ZK - WP3.5 Add MetadataKeysSettingsLocalStorageContextProvider to the App and the quick-app and the inform menu
60
- - PB-44212: CU - WP5.2 Update ExternalResourceEntity buildDtoFromResourceEntityDto to support custom fields
61
- - PB-44286: ZK - WP3.6 Add a quick app and inform menu event to get the metadata keys settings
62
- - PB-44295: ZK - WP4.15 As a signed-in user with missing keys I should not be able to create resource if metadata shared key is enforced on the inform menu
63
- - PB-44296: ZK - WP4.16 As a signed-in user I should not be allowed to move shared folders into personal folders with missing key situation
64
- - PB-44327: Display sub-folders in breadcrumbs
65
- - PB-44374: Extend notes v5 max length to 50_000
66
-
67
- ### Fixed
68
- - PB-43296: Displaying resource activities should not crash the application when a resource activity does not have related user or group
69
- - PB-43652: The sentence to change the passphrase in the user settings workspace should have a space after.
70
- - PB-43657: Resources loading became noticeably slower after migrating to encrypted
71
- - PB-43667: Cancelling the user passphrase request should not trigger an error when sharing missing metadata key
72
- - PB-43676: Cancelling the user passphrase should not freeze the create resource dialog
73
- - PB-43719: After importing resources from Bitwarden the URIs are not separated correctly
74
- - PB-43784: Display the progression of the encryption of metadata in the import dialog
75
- - PB-43906: User should be notified of any errors while loading comments
76
- - PB-44079: Update/Create a method in resourceLocalStorage.js to bulk delete resources
77
- - PB-44161: As a user I should not see the resource description and note warning message if only one of them is concerned
78
- - PB-44273: Activities are not loaded when new resource is clicked after load more activities of a previous resource
95
+ - PB-44201 E2EE The organisation settings offer now a simplified way to activate metadata encryption and the new resource types
96
+ - PB-42205 E2EE encrypted metadata and new resource types are activated by default after the first administrator setup
97
+ - PB-43255 Add support for multiple uri import export on kdbx files
98
+ - PB-43110 ZK - WP4.2 As a signed-in user I should not be allowed to upgrade resources with missing key situation
99
+ - PB-43712 Translate the application in Czech
100
+ - PB-43939 ZK - WP3.2 Add an app event to get or find the metadata keys settings
101
+ - PB-43980 Add support for custom field import export on kdbx files
102
+ - PB-44080 ZK - WP4.1 Create a dialog explaining the missing key situation
103
+ - PB-44081 ZK - WP4.3 As a signed-in user I should not be allowed to create resources with missing key situation in the resource workspace
104
+ - PB-44090 ZK - WP4.4 As a signed-in user I should not be allowed to edit resources with missing key situation
105
+ - PB-44091 ZK - WP4.5 As a signed-in user I should not be allowed to share resources with missing key situation
106
+ - PB-44094 ZK - WP4.6 As a signed-in user I should not be allowed to import resources with missing key situation
107
+ - PB-44095 ZK - WP4.7 As a signed-in user I should not be allowed to move resources with missing key situation
108
+ - PB-44096 ZK - WP4.8 As a signed-in user I should not be allowed to move folders with missing key situation
109
+ - PB-44097 ZK - WP4.9 Display a page explaining the missing key situation on the quick app
110
+ - PB-44098 ZK - WP4.10 As a signed-in user I should not be allowed to create resources with missing key situation in the quick app
111
+ - PB-44099 ZK - WP4.11 As a signed-in user I should not be allowed to generate password on the inform menu
112
+ - PB-44206 ZK - WP4.14 As administrators I cannot trigger the encrypted metadata migration if I have missing metadata keys
113
+ - PB-44211 ZK - WP3.5 Add MetadataKeysSettingsLocalStorageContextProvider to the App and the quick-app and the inform menu
114
+ - PB-44212 CU - WP5.2 Update ExternalResourceEntity buildDtoFromResourceEntityDto to support custom fields
115
+ - PB-44286 ZK - WP3.6 Add a quick app and inform menu event to get the metadata keys settings
116
+ - PB-44295 ZK - WP4.15 As a signed-in user with missing keys I should not be able to create resource if metadata shared key is enforced on the inform menu
117
+ - PB-44296 ZK - WP4.16 As a signed-in user I should not be allowed to move shared folders into personal folders with missing key situation
118
+ - PB-44327 Display sub-folders in breadcrumbs
119
+ - PB-44374 Extend notes v5 max length to 50_000
120
+
121
+ ### Fixed
122
+ - PB-43296 Displaying resource activities should not crash the application when a resource activity does not have related user or group
123
+ - PB-43652 The sentence to change the passphrase in the user settings workspace should have a space after.
124
+ - PB-43657 Resources loading became noticeably slower after migrating to encrypted
125
+ - PB-43667 Cancelling the user passphrase request should not trigger an error when sharing missing metadata key
126
+ - PB-43676 Cancelling the user passphrase should not freeze the create resource dialog
127
+ - PB-43719 After importing resources from Bitwarden the URIs are not separated correctly
128
+ - PB-43784 Display the progression of the encryption of metadata in the import dialog
129
+ - PB-43906 User should be notified of any errors while loading comments
130
+ - PB-44079 Update/Create a method in resourceLocalStorage.js to bulk delete resources
131
+ - PB-44161 As a user I should not see the resource description and note warning message if only one of them is concerned
132
+ - PB-44273 Activities are not loaded when new resource is clicked after load more activities of a previous resource
79
133
 
80
134
  ### Maintenance
81
- - PB-43585: Azure SSO login_hint settings can now be configured
82
- - PB-43908: Move logic of commentModel file to a service and update assertions in controllers
83
- - PB-44076: Create a Controller to handle Resource Delete
84
- - PB-44077: Create a dedicated Service to handle resource deletion
85
- - PB-44396: the endpoint complete/recover.json is now used instead of the legacy endpoint
135
+ - PB-43585 Azure SSO login_hint settings can now be configured
136
+ - PB-43908 Move logic of commentModel file to a service and update assertions in controllers
137
+ - PB-44076 Create a Controller to handle Resource Delete
138
+ - PB-44077 Create a dedicated Service to handle resource deletion
139
+ - PB-44396 the endpoint complete/recover.json is now used instead of the legacy endpoint
86
140
 
87
141
  ### Security
88
142
  - PB-43730: Upgrade vulnerable library brace-expansion
@@ -2388,8 +2442,11 @@ self registration settings option in the left-side bar
2388
2442
  - AP: User with plugin installed
2389
2443
  - LU: Logged in user
2390
2444
 
2391
- [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.4.1...HEAD
2392
- [5.4.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.4.0...v5.4.1
2445
+ [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.6.0...HEAD
2446
+ [5.6.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.5.1...v5.6.0
2447
+ [5.5.1]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.5.0...v5.5.1
2448
+ [5.5.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.4.1...v5.5.0
2449
+ [5.4.1]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.4.0...v5.4.1
2393
2450
  [5.4.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.3.3...v5.4.0
2394
2451
  [5.3.2]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.3.0...v5.3.2
2395
2452
  [5.3.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v5.2.0...v5.3.0
package/RELEASE_NOTES.md CHANGED
@@ -1,52 +1,70 @@
1
- Release song: https://youtu.be/L3Wo8jcNrkQ?si=HiNK6kSFC-aMFMJe
1
+ Release song: https://www.youtube.com/watch?v=bu50DtPF1Ac
2
2
 
3
- Passbolt 5.5.0 is a feature release candidate that lets administrators run encrypted metadata in zero-knowledge mode and adds SCIM provisioning (beta) for easier user management.
3
+ Passbolt 5.6.0 introduces standalone notes, shared metadata key rotation, and resizable sidebars. As usual, this version also brings important security hardening through dependency updates as well as a series of bug fixes and maintenance improvements.
4
4
 
5
- # Zero-knowledge
6
- Zero-knowledge for encrypted metadata is intended for organisations that prioritise maximum privacy and can do without server-side auditability. In this mode, the server never receives the shared metadata private key and therefore cannot access any resource metadata.
5
+ ## Standalone notes
7
6
 
8
- When a new user joins, the server does not automatically share the key with them. Instead, administrators are notified by email once the user has completed their activation and is ready to receive access. From the Users & Groups workspace, administrators can then review the situation and share the key when the time is right.
7
+ It is now possible to create notes as a standalone resource type, without attaching them to credentials or other elements. Import and export processes have been updated to recognize and support this new type. Any imported resources that contain only a description will now be created as standalone notes.
9
8
 
10
- Until a user receives the key, their experience is intentionally limited: actions that depend on the shared metadata key, such as sharing a resource, moving a private item into a shared folder, or creating content meant to be shared, are blocked.
9
+ ## Shared metadata key rotation
11
10
 
12
- To know more about the encrypted metadata zero-knowledge mode, check out this [blog post](https://www.passbolt.com/blog/the-road-to-passbolt-v5-encrypted-metadata-and-other-core-security-changes-2).
11
+ Administrators can now rotate the shared metadata key at any time from the organization settings. This improvement marks one of the final steps in meeting metadata encryption requirements. The rotation process can be performed while the instance remains operational, so availability is not disrupted.
13
12
 
14
- # SCIM (beta)
15
- This release also introduces SCIM 2.0 (beta) to automate user provisioning with your identity provider. The first iteration focuses on Microsoft Entra ID (Azure AD) and is available on Passbolt Pro.
13
+ ## Resizable sidebars
16
14
 
17
- With SCIM, administrators can create, update, and deactivate users directly from their identity provider, without ever touching the Passbolt UI. For now, only user synchronisation is supported, while group synchronisation will follow in a future update.
15
+ Both main workspace and Users & Groups workspace now feature sidebars that can be resized. This allows users to improve readability when working with long folder names or deeply nested folder structures. After resizing, a double-click on the sidebar handle resets it to its default width.
18
16
 
19
- Note that Okta should work out of the box, though some journeys may still need polish, such as the user deactivation.
17
+ ## Miscellaneous Improvements
20
18
 
21
- Several bugs reported by the community have also been fixed. As always, thank you to everyone who took the time to file issues and suggest improvements. Checkout the changelog for more information.
19
+ The export of account kits is now compatible with larger private keys. The group membership update process has been optimized to reduce request payload size and to avoid certain size limitations. Sorting of folder names has also been improved with natural number ordering, meaning for example that “folder2” now correctly appears before “folder10.”
20
+
21
+ Many thanks to everyone who shared feedback, reported issues, and helped refine these features.
22
22
 
23
23
  ### Added
24
- - PB-43921 - Increase directory sync report dialog size
25
- - PB-44816 Pro teasing - WP1.1 Create DisplaySubscriptionKeyTeasing component
26
- - PB-44817 Pro teasing - WP1.2 Create DisplayPasswordPoliciesAdministrationTeasing
27
- - PB-44818 Pro teasing - WP1.3 Create DisplayAdministrationUserPassphrasePoliciesTeasing
28
- - PB-44819 Pro teasing - WP1.4 Create ManageAccountRecoveryAdministrationSettingsTeasing
29
- - PB-44820 Pro teasing - WP1.5 Create ManageSsoSettingsTeasing
30
- - PB-44821 Pro teasing - WP1.6 Create DisplayMfaPolicyAdministrationTeasing
31
- - PB-44822 Pro teasing - WP1.7 Create DisplayUserDirectoryAdministrationTeasing
32
- - PB-44823 Pro teasing - WP1.8 Create DisplayScimAdministrationTeasing
33
- - PB-44826 Pro teasing - WP2.1 Add teasing property and new route on AdministrationHomePage
34
- - PB-44827 Pro teasing - WP2.2 Update the DisplayAdministrationMenu to display teasing Icon on PRO menu for CE
35
- - PB-44393 ZK - WP5.1 As an administrator I should be able to enable zero knowledge mode
36
- - PB-44646 ZK - WP5.3 Add share metadata private keys to MetadataKeysSettingsEntity
37
- - PB-44641 ZK - WP5.4 Create UpdateMetadataSettingsPrivateKeyService to to be able to disabled zero knowledge mode
38
- - PB-44631 ZK - WP5.5 Update SaveMetadataKeysSettingsController to be able to disabled zero knowledge mode
39
- - PB-44757 ZK - WP5.6 As an administrator with missing metadata keys I should not be able to change metadata settings
40
- - PB-44630 - SCIM administration screen
24
+ - PB-39068 WP5-5.6 - Implement a Service RotateResourcesMetadataKeyService that proceed with the rotation of the key
25
+ - PB-39069 WP5-5.8 - Implement a new method in MetadataKeysServiceWorkerService to call for to expire a key
26
+ - PB-39071 WP5-5.1 - Implement a new method in MetadataKeysApiService to expire a shared metadata key
27
+ - PB-39072 WP5-5.4 - Implement a new Service UpdateMetadataKeysService to process with the expiration of a key
28
+ - PB-39073 WP5-5.2 - Implement a new API service MetadataRotateKeysResourcesApiService to retrieve the first page of data to rotate
29
+ - PB-39074 WP5-5.3 - Implement a new method in MetadataKeysApiService to register the rotated data on the API
30
+ - PB-39075 WP5-5.7 - Implement a Controller RotateResourcesMetadataKeyController to run the rotation process
31
+ - PB-39076 WP5-5.9 - Implement a new method in MetadataKeysServiceWorkerService to call passbolt.metadata.rotate-resources-metadata for with the new Key
32
+ - PB-39078 WP5-5.10 - Implement the ConfirmMetadataRotationDialog
33
+ - PB-39094 WP5-6.2 - Display the rotate key button when multiple metadata key are active
34
+ - PB-43253 Workspace resizable sidebars
35
+ - PB-44582 lastpass example csv import with totp success
36
+ - PB-45385 SN - WP1.1 Create the entity SecretDataV5StandaloneNoteEntity
37
+ - PB-45389 SN - WP1.3 Update ResourceFormEntity to include secret SecretDataV5StandaloneNoteEntity
38
+ - PB-45400 SN - WP2.1 Add new resource type in DisplayContentTypesAllowedContentTypesAdministration
39
+ - PB-45404 SN - WP2.2 Add new resource type in DisplayResourcesWorkspaceMainMenu
40
+ - PB-45406 SN - WP2.3 Update passbolt default resource type icons to include the new resource type icon
41
+ - PB-45408 SN - WP2.4 Update DisplayResourcesListDetails to handle the correct subtitle for standalone note and add the same for standalone custom fields
42
+ - PB-45412 SN - WP3.1 Apply a minimum height to the resource workspace ‘others’ dialog used to create other resource types
43
+ - PB-45413 SN - WP3.3 Increase the height of the notes textarea to use the maximum available space in the resource creation dialog
44
+ - PB-45414 SN - WP3.3 Add “hide” button when the note is decrypted to hide it again
45
+ - PB-45417 SN - WP2.5 Update the “other” dialog to add the standalone note in the content type list in v5
46
+ - PB-45424 SN - WP3.4 Ensure Import/Export is working as expected with standalone notes
47
+ - PB-45464 GMUO - WP1.1 Create new collection ‘GroupUpdateCollection’
48
+ - PB-45465 GMUO - WP1.2 Migrate group update logic to optimise the request on the API
49
+ - PB-45466 GMUO - WP1.3 Adapt group update progress bar mechanism
50
+ - PB-45476 WP5-6.3 - Create events with controller to rotate and resume rotation of a metadata key
41
51
 
42
52
  ### Fixed
43
- - PB-44638 - Password expiry should not be removed when password is not updated
44
- - PB-44604 - Fix regular expression on public key metadata validation
45
- - PB-44707 - Fix service worker not restarting after browser extension update on Chrome
46
- - PB-45060 - Fix custom fields json schema properties type
47
- - PB-44933 - Fix setup a new user should have missing key set
53
+ - PB-43218 Date field icons should not be replaced with the copy icon in the SSO settings and expiry resource dialogs
54
+ - PB-45239 Folders are not displayed in the correct order (GITHUB #568)
55
+ - PB-45329 add TOTP toString handling similar to other csv exports
56
+ - PB-45402 Add missing icon property to resource types schema definition
57
+ - PB-45450 Fix account kit export with big private armored keys
58
+ - PB-45458 Remove Organisation Settings max-width
59
+ - PB-45733 Fix quickaccess resource creation with encrypted metadata
48
60
 
49
61
  ### Maintenance
50
- - PB-44594 - Upgrade xregexp to 5.1.2
51
- - PB-44638 Password expiry should not be removed when password is not updated
52
- - PB-44668 The create menu import operation should be actionable when encrypted metadata plugin is not available
62
+ - PB-44253 Upgrade vulnerable library form-data
63
+ - PB-44593 Upgrade i18next to v24x
64
+ - PB-45182 Major upgrade for copy-anything (Medium)
65
+ - PB-45183 Minor upgrade for browserslist (Low)
66
+ - PB-45184 3rd party Github Actions should be pinned (Medium)
67
+ - PB-45401 Enforce the requirement of the property object_type for custom fields
68
+ - PB-45484 Fix low security vulnerability dependency with web-ext to 8.10.0
69
+ - PB-45583 Review and clean up npm overridden dependencies
70
+ - PB-45601 Update the "Upgrade to Passbolt Pro" buttons URL
@@ -183,6 +183,11 @@ classDiagram
183
183
  +exec() Promise~MetadataKeyEntity~
184
184
  }
185
185
 
186
+ class RotateMetadataKeyController {
187
+ event "passbolt.metadata.rotate-metadata-key"
188
+ +exec(string metadataKeyId) Promise~void~
189
+ }
190
+
186
191
  class FindAllNonDeletedMetadataKeysController {
187
192
  event "passbolt.metadata.find-all-non-deleted-metadata-keys"
188
193
  +exec() Promise~MetadataKeysCollection~
@@ -218,6 +223,11 @@ classDiagram
218
223
  +exec() Promise~void~
219
224
  }
220
225
 
226
+ class RotateResourcesMetadataKeyController {
227
+ event "passbolt.metadata.rotate-resources-metadata"
228
+ +exec() Promise~void~
229
+ }
230
+
221
231
  class ShareMetadataKeyPrivateController {
222
232
  event "passbolt.metadata.share-missing-metadata-private-keys-with-user"
223
233
  +exec(uuid userId) Promise~void~
@@ -232,6 +242,23 @@ classDiagram
232
242
  +decryptAllFromForeignModels(Collection collection, ?string passphrase, ?object options) Promise
233
243
  }
234
244
 
245
+ class ExpireMetadataKeyService {
246
+ +expire(string uuid) Promise
247
+ }
248
+
249
+ class DeleteMetadataKeyService {
250
+ +delete(string uuid) Promise
251
+ }
252
+
253
+ class RotateMetadataKeyService {
254
+ +rotate(ExternalGpgKeyPairEntity entity, string uuid, string passphrase) Promise
255
+ +resumeRotate(MetdataKeyEntity entity, string passphrase) Promise
256
+ }
257
+
258
+ class UpdateMetadataKeyPrivateService {
259
+ +update(MetadataPrivateKeyEntity entity) Promise
260
+ }
261
+
235
262
  class DecryptMetadataPrivateKeysService {
236
263
  +decryptOne(MetadataPrivateKeyEntity entity, ?string passphrase) Promise
237
264
  +decryptAll(MetadataPrivateKeyCollection collection, ?string passphrase) Promise
@@ -269,6 +296,10 @@ classDiagram
269
296
  +verifyTrustedOrTrustNewMetadataKey(string passphrase) Promise~void~
270
297
  }
271
298
 
299
+ class RotateResourcesMetadataKeyService {
300
+ +rotate(string passphrase) Promise~void~
301
+ }
302
+
272
303
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
273
304
  %% Metadata Keys services
274
305
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -336,6 +367,13 @@ classDiagram
336
367
  class MetadataKeysApiService {
337
368
  +findAll(object contains) Promise~array~
338
369
  +create(MetadataKeyEntity metadataKey) Promise~*string*~
370
+ +delete(string uuid) Promise~*void*~
371
+ +update(string uuid, MetadataKeyEntity metadataKey) Promise~*void*~
372
+ }
373
+
374
+ class MetadataRotateKeysResourcesApiService {
375
+ +findAll() Promise~array~
376
+ +rotate(ResourceCollection resourcesCollection) Promise~array~
339
377
  }
340
378
 
341
379
  class MetadataPrivateKeyApiService {
@@ -1107,6 +1145,10 @@ classDiagram
1107
1145
  CreateMetadataKeyController*--CreateMetadataKeyService
1108
1146
  FindAllNonDeletedMetadataKeysController*--FindMetadataKeysService
1109
1147
  GenerateMetadataPrivateKeyController*--GenerateMetadataKeyService
1148
+ %% RotateMetadataKeyController*--GetPassphraseService
1149
+ RotateMetadataKeyController*--RotateMetadataKeyService
1150
+ %% ResumeRotateMetadataKeyController*--GetPassphraseService
1151
+ ResumeRotateMetadataKeyController*--RotateMetadataKeyService
1110
1152
  %% GenerateMetadataPrivateKeyController*--GetPassphraseService
1111
1153
  GetOrFindMetadataTypesSettingsController*--GetOrFindMetadataSettingsService
1112
1154
  SaveMetadataKeysSettingsController*--SaveMetadataSettingsService
@@ -1114,6 +1156,7 @@ classDiagram
1114
1156
  ShareMetadataKeyPrivateController*--GetPassphraseService
1115
1157
  ShareMetadataKeyPrivateController*--VerifyOrTrustMetadataKeyService
1116
1158
  style CreateMetadataKeyController fill:#D2E0FB
1159
+ style RotateMetadataKeyController fill:#D2E0FB
1117
1160
  style FindAllNonDeletedMetadataKeysController fill:#D2E0FB
1118
1161
  style GenerateMetadataPrivateKeyController fill:#D2E0FB
1119
1162
  style GetOrFindMetadataTypesSettingsController fill:#D2E0FB
@@ -1124,7 +1167,14 @@ classDiagram
1124
1167
  CreateMetadataKeyService*--EncryptMetadataPrivateKeysService
1125
1168
  CreateMetadataKeyService*--FindUsersService
1126
1169
  CreateMetadataKeyService*--GetOrFindMetadataSettingsService
1127
- CreateMetadataKeyService*--MetadataKeyApiService
1170
+ CreateMetadataKeyService*--MetadataKeysApiService
1171
+ ExpireMetadataKeyService*--MetadataKeysApiService
1172
+ RotateResourcesMetadataKeyService*--MetadataRotateKeysResourcesApiService
1173
+ DeleteMetadataKeyService*--MetadataKeysApiService
1174
+ RotateMetadataKeyService*--CreateMetadataKeyService
1175
+ RotateMetadataKeyService*--ExpireMetadataKeyService
1176
+ RotateMetadataKeyService*--RotateResourcesMetadataKeyService
1177
+ RotateMetadataKeyService*--DeleteMetadataKeyService
1128
1178
  FindMetadataMigrateResourcesService*--MigrateMetadataResourcesApiService
1129
1179
  MigrateMetadataResourcesService*--MigrateMetadataResourcesApiService
1130
1180
  MigrateMetadataResourcesService*--EncryptMetadataService
@@ -1147,7 +1197,7 @@ classDiagram
1147
1197
  FindAndUpdateMetadataSettingsService*--FindMetadataSettingsService
1148
1198
  FindAndUpdateMetadataSettingsService*--MetadataTypesSettingsLocalStorage
1149
1199
  FindMetadataKeysService*--DecryptMetadataPrivateKeysService
1150
- FindMetadataKeysService*--MetadataKeyApiService
1200
+ FindMetadataKeysService*--MetadataKeysApiService
1151
1201
  FindMetadataSettingsService*--MetadataKeysSettingsApiService
1152
1202
  FindMetadataSettingsService*--MetadataTypesSettingsApiService
1153
1203
  FindResourcesService*--DecryptMetadataService
@@ -1161,7 +1211,7 @@ classDiagram
1161
1211
  SaveMetadataSettingsService*--MetadataKeysSettingsLocalStorage
1162
1212
  GetMetadataTrustedKeyService*--TrustedMetadataKeyLocalStorage
1163
1213
  %% Metadata models relationships.
1164
- style MetadataKeyApiService fill:#DEE5D4
1214
+ style MetadataKeysApiService fill:#DEE5D4
1165
1215
  style MetadataKeysSettingsLocalStorage fill:#DEE5D4
1166
1216
  style MetadataKeysSessionStorageService fill:#DEE5D4
1167
1217
  style MetadataKeysSettingsApiService fill:#DEE5D4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "passbolt-browser-extension",
3
- "version": "5.5.0",
3
+ "version": "5.6.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",
@@ -14,7 +14,7 @@
14
14
  "await-lock": "^2.1.0",
15
15
  "downloadjs": "^1.4.7",
16
16
  "eckey-utils": "^0.7.14",
17
- "i18next": "^23.7.16",
17
+ "i18next": "23.15.2",
18
18
  "i18next-http-backend": "^2.4.2",
19
19
  "ip-regex": "^5.0.0",
20
20
  "jssha": "~3.3.1",
@@ -22,7 +22,7 @@
22
22
  "locutus": "~2.0.9",
23
23
  "openpgp": "^6.1.1",
24
24
  "papaparse": "^5.5.2",
25
- "passbolt-styleguide": "^v5.5.2",
25
+ "passbolt-styleguide": "^5.6.2",
26
26
  "react": "17.0.2",
27
27
  "react-dom": "17.0.2",
28
28
  "secrets-passbolt": "github:passbolt/secrets.js#v2.0.1",
@@ -65,18 +65,17 @@
65
65
  "lockfile-lint": "^4.14.1",
66
66
  "text-encoding-utf-8": "^1.0.2",
67
67
  "uuid": "^8.3.2",
68
- "web-ext": "^8.0.0",
68
+ "web-ext": "^8.10.0",
69
69
  "webpack": "^5.94.0",
70
70
  "webpack-cli": "^5.1.4"
71
71
  },
72
72
  "overrides": {
73
- "image-size": "^2.0.2",
73
+ "addons-linter": "^8.0.0",
74
74
  "i18next-parser": {
75
- "cheerio": {
76
- "undici": "6.21.2"
77
- }
75
+ "cheerio": "1.1.2"
78
76
  },
79
- "brace-expansion": "^1.1.12"
77
+ "brace-expansion": "^1.1.12",
78
+ "browserslist": "4.26.2"
80
79
  },
81
80
  "scripts": {
82
81
  "build": "npx grunt build",
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "appName": {
3
- "message": "패스볼트 - 오픈소스 비밀번호 관리 프로그램",
3
+ "message": "Passbolt - 오픈소스 비밀번호 관리 프로그램",
4
4
  "description": "The application name of the extension, displayed in the web store. 45 characters max."
5
5
  },
6
6
  "appDescription": {
7
- "message": "팀을 위한 오픈 소스 비밀번호 관리자인 패스볼트의 확장 프로그램.",
7
+ "message": "팀을 위한 오픈 소스 비밀번호 관리자인 Passbolt의 확장 프로그램.",
8
8
  "description": "The description of the extension, displayed in the web store. 85 characters max."
9
9
  }
10
10
  }
@@ -32,7 +32,6 @@ describe("RedirectToAdminWorkspaceController", () => {
32
32
  };
33
33
  const account = new AccountEntity(defaultAccountDto());
34
34
  const expectedUrl = `${account.domain}/app/administration`;
35
- console.log(expectedUrl);
36
35
  const controller = new RedirectToAdminWorkspaceController(worker, null, account);
37
36
  jest.spyOn(chrome.tabs, "update").mockImplementation(() => {});
38
37
 
@@ -12,7 +12,6 @@
12
12
  */
13
13
  import Keyring from "../../model/keyring";
14
14
  import GetPassphraseService from "../../service/passphrase/getPassphraseService";
15
- import GroupModel from "../../model/group/groupModel";
16
15
  import i18n from "../../sdk/i18n";
17
16
  import ProgressService from "../../service/progress/progressService";
18
17
  import GroupUpdateService from "../../service/group/groupUpdateService";
@@ -30,7 +29,6 @@ class GroupsUpdateController {
30
29
  constructor(worker, requestId, apiClientOptions, account) {
31
30
  this.worker = worker;
32
31
  this.requestId = requestId;
33
- this.groupModel = new GroupModel(apiClientOptions);
34
32
  this.keyring = new Keyring();
35
33
 
36
34
  this.getPassphraseService = new GetPassphraseService(account);
@@ -17,7 +17,7 @@ import {defaultGroupDto} from "passbolt-styleguide/src/shared/models/entity/grou
17
17
  import {createGroupUser} from "passbolt-styleguide/src/shared/models/entity/groupUser/groupUserEntity.test.data.js";
18
18
  import EncryptMessageService from "../../service/crypto/encryptMessageService";
19
19
  import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
20
- import {defaultDyRunResponse} from "../../model/entity/group/update/groupUpdateDryRunResultEntity.test.data";
20
+ import {defaultDryRunResponse} from "../../model/entity/group/update/groupUpdateDryRunResultEntity.test.data";
21
21
  import {OpenpgpAssertion} from "../../utils/openpgp/openpgpAssertions";
22
22
 
23
23
  export const updateGroupNameDto = (data = {}) => {
@@ -66,5 +66,5 @@ export const add2UsersToGroupDryRunResponse = async(data = {}) => {
66
66
  Secrets: secrets
67
67
  }, data);
68
68
 
69
- return defaultDyRunResponse(defaultData);
69
+ return defaultDryRunResponse(defaultData);
70
70
  };