passbolt-browser-extension 5.10.1 → 5.10.3

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 (81) hide show
  1. package/RELEASE_NOTES.md +117 -70
  2. package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager/Passbolt - password manager.entitlements +0 -4
  3. package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager Extension/Passbolt - password manager Extension.entitlements +0 -4
  4. package/build-safari-extension/Passbolt-Safari-Extension/Passbolt - password manager.xcodeproj/project.pbxproj +44 -12
  5. package/eslint.config.mjs +38 -63
  6. package/package.json +4 -3
  7. package/src/all/background_page/controller/InformMenuController/InformMenuController.js +8 -2
  8. package/src/all/background_page/controller/InformMenuController/InformMenuController.test.js +344 -0
  9. package/src/all/background_page/controller/account/updatePrivateKeyController.test.js +7 -5
  10. package/src/all/background_page/controller/auth/redirectPostLoginController.js +1 -1
  11. package/src/all/background_page/controller/autofill/AutofillController.js +12 -7
  12. package/src/all/background_page/controller/autofill/AutofillController.test.js +301 -85
  13. package/src/all/background_page/controller/exportAccount/exportDesktopAccountController.test.js +3 -1
  14. package/src/all/background_page/controller/informCallToActionController/informCallToActionController.js +7 -3
  15. package/src/all/background_page/controller/informCallToActionController/informCallToActionController.test.js +189 -0
  16. package/src/all/background_page/controller/metadata/createMetadataKeyController.test.js +0 -1
  17. package/src/all/background_page/controller/passwordExpiry/deletePasswordExpirySettingsController.test.js +3 -3
  18. package/src/all/background_page/controller/port/generatePortIdController.test.js +1 -1
  19. package/src/all/background_page/controller/scimSettings/createScimSettingsController.test.js +0 -1
  20. package/src/all/background_page/controller/scimSettings/disableScimSettingsController.test.js +0 -1
  21. package/src/all/background_page/controller/scimSettings/findScimSettingsController.test.js +0 -1
  22. package/src/all/background_page/controller/scimSettings/updateScimSettingsController.test.js +0 -1
  23. package/src/all/background_page/controller/share/shareResourcesController.test.js +0 -1
  24. package/src/all/background_page/event/appEvents.js +1 -1
  25. package/src/all/background_page/event/informCallToActionEvents.js +3 -2
  26. package/src/all/background_page/model/config.js +2 -1
  27. package/src/all/background_page/model/entity/folder/external/externalFoldersCollection.js +1 -1
  28. package/src/all/background_page/model/entity/folder/foldersCollection.js +3 -1
  29. package/src/all/background_page/model/entity/folder/foldersCollection.test.js +0 -1
  30. package/src/all/background_page/model/entity/import/importResourcesFileEntity.js +1 -1
  31. package/src/all/background_page/model/entity/import/importResourcesFileEntity.test.data.js +0 -13
  32. package/src/all/background_page/model/entity/mfa/mfaSetupYubikeyEntity.js +1 -1
  33. package/src/all/background_page/model/entity/resource/external/externalResourcesCollection.js +1 -1
  34. package/src/all/background_page/model/entity/resource/resourceEntity.js +1 -1
  35. package/src/all/background_page/model/entity/resource/resourceEntity.test.js +4 -5
  36. package/src/all/background_page/model/entity/resource/resourcesCollection.test.js +1 -2
  37. package/src/all/background_page/model/entity/secret/needed/neededSecretsCollection.test.js +0 -1
  38. package/src/all/background_page/model/entity/securityToken/securityTokenEntity.js +1 -1
  39. package/src/all/background_page/model/entity/theme/themeEntity.js +1 -1
  40. package/src/all/background_page/model/entity/userAndGroupSearchResultEntity/userAndGroupSearchResultCollestion.test.js +0 -1
  41. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.js +3 -3
  42. package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.test.js +3 -5
  43. package/src/all/background_page/sdk/i18n.js +2 -2
  44. package/src/all/background_page/service/account/getActiveAccountService.js +1 -1
  45. package/src/all/background_page/service/account/getActiveAccountService.test.js +1 -5
  46. package/src/all/background_page/service/api/accountRecovery/validateAccountRecoveryOrganizationPrivateKeyService.test.data.js +1 -1
  47. package/src/all/background_page/service/api/comment/commentApiService.test.js +2 -3
  48. package/src/all/background_page/service/api/metadata/metadataKeysApiService.test.js +1 -1
  49. package/src/all/background_page/service/api/move/moveService.test.js +2 -2
  50. package/src/all/background_page/service/api/passwordExpiry/passwordExpirySettingsService.test.js +2 -2
  51. package/src/all/background_page/service/api/sessionKey/sessionKeysBundlesApiService.test.js +2 -2
  52. package/src/all/background_page/service/local_storage/resourceLocalStorage.test.js +0 -1
  53. package/src/all/background_page/service/metadata/decryptMetadataService.js +7 -5
  54. package/src/all/background_page/service/metadata/encryptMetadataService.js +8 -5
  55. package/src/all/background_page/service/metadata/encryptMetadataService.test.js +17 -15
  56. package/src/all/background_page/service/move/moveOneFolderService.test.js +0 -1
  57. package/src/all/background_page/service/move/moveResourcesService.test.js +0 -1
  58. package/src/all/background_page/service/publicWebsite/parsePublicWebsiteUrlService.js +1 -2
  59. package/src/all/background_page/service/resource/create/resourceCreateService.test.js +0 -1
  60. package/src/all/background_page/service/resource/getOrFindResourcesService.js +11 -4
  61. package/src/all/background_page/service/resource/getOrFindResourcesService.test.js +85 -3
  62. package/src/all/background_page/service/resource/update/resourceUpdateService.test.js +0 -1
  63. package/src/all/background_page/service/scimSettings/updateScimSettingsService.test.js +3 -3
  64. package/src/all/background_page/service/sessionKey/getOrFindSessionKeysService.test.js +0 -1
  65. package/src/all/background_page/service/sessionKey/saveSessionKeysService.test.js +0 -1
  66. package/src/all/background_page/service/share/shareFoldersService.test.js +0 -1
  67. package/src/all/background_page/service/share/shareResourceService.test.js +0 -1
  68. package/src/all/background_page/service/toolbar/toolbarService.js +14 -1
  69. package/src/all/background_page/service/webIntegration/parseWebIntegrationUrlService.js +1 -1
  70. package/src/all/background_page/utils/format/formDataUtils.test.js +7 -2
  71. package/src/all/background_page/utils/format/gpgUserIdParser.js +2 -2
  72. package/src/all/background_page/utils/promise/promiseTimeoutService.js +1 -1
  73. package/src/all/contentScripts/js/app/App.js +4 -7
  74. package/src/all/webAccessibleResources/js/app/App.js +4 -4
  75. package/src/all/webAccessibleResources/js/app/InFormCallToAction.js +2 -1
  76. package/src/chrome/manifest.json +1 -1
  77. package/src/chrome-mv3/manifest.json +1 -1
  78. package/src/firefox/manifest.json +1 -1
  79. package/src/safari/background_page/service/cookies/cookiesService.js +1 -1
  80. package/src/safari/manifest.json +1 -1
  81. package/test/jest.setup.js +0 -1
package/RELEASE_NOTES.md CHANGED
@@ -1,76 +1,123 @@
1
- Release song: https://www.youtube.com/watch?v=QNa5o85Q-FE
2
-
3
- Passbolt 5.9 is designed to keep upgrades predictable and everyday use reliable. It expands runtime compatibility with PHP 8.5, makes environment risks easier to spot earlier through health checks, and closes a couple of security gaps that could otherwise be used to probe accounts or mislead users during navigation.
4
-
5
- **Warning**: If you run MariaDB 10.3 or 10.5, or MySQL 5, pay particular attention to the environment section below. Support for these versions is planned to stop in January 2027, and this release starts flagging them proactively so you can schedule upgrades before they become urgent.
6
-
7
- ### Environment support and deprecation signals you can act on early
8
-
9
- Passbolt 5.9 adds PHP 8.5 support, helping administrators and platform teams validate upcoming runtime upgrades in advance. Moreover, while PHP 8.2 is still supported until 2027, it has entered security maintenance, and administrators should plan its upgrade this year.
10
-
11
- At the same time, this release improves environment health checks to surface database versions that have reached end of life. MariaDB 10.3 and 10.5, and MySQL 5, are now flagged as deprecated allowing administrators to identify risky deployments during routine maintenance rather than responding under time pressure. These notices are explicitly tied to a planned end of support in January 2027, giving teams a clear runway to align database upgrades with regular change windows and internal upgrade policies.
12
-
13
- ### Safer account recovery responses to reduce email enumeration risk
14
-
15
- Account recovery endpoints can unintentionally reveal whether a user exists, which makes targeted attacks easier. In Passbolt 5.9, the recover endpoint no longer leaks information when a user does not exist in the database, reducing the signal attackers rely on for email or username enumeration.
16
-
17
- ### Stronger protection against clickjacking and deceptive overlays
18
-
19
- Clickjacking and overlay techniques aim to trick users into clicking something different from what they believe they are interacting with. Passbolt 5.9 reinforces defenses against these UI-level attacks in edge-case conditions, including scenarios where a compromised website tries to influence user interactions when a password could be suggested.
20
-
21
- In practice, this extra hardening helps ensure users cannot be guided into interacting with sensitive Passbolt components when those components are not fully visible and clearly presented to them.
22
-
23
- ### Better visibility and efficiency around email digest operations
24
-
25
- Large folder operations can generate a lot of email activity and can be difficult to reason about as queues grow. Passbolt 5.9 improves digest handling related to folder operations, helping reduce unnecessary mail churn in workspaces where folder structure and permissions evolve frequently.
26
-
27
- In addition, the passbolt *email_digest* command now reports how many emails were sent and how many remain in the queue. This makes it easier for administrators to confirm progress, anticipate bursts, and troubleshoot queue behavior using logs.
28
-
29
- ### Maintenance work that improves stability over time
30
-
31
- Passbolt 5.9 continues the migration work of its UI framework for authentication-related applications. The first applications have been migrated as part of a larger foundation effort aimed at improving stability and long-term performance as more areas move to the new framework.
32
-
33
- ### Conclusion
34
- This release also includes additional fixes and improvements beyond the highlights above. Check out the changelogs to learn more. Thanks to the community members and teams who reported issues and helped validate fixes.
35
-
1
+ Passbolt 5.10.0 is the first version of Passbolt that officially supports Safari. Also, this version comes with tags in the grid and security improvements regarding CSV exports.
2
+
3
+ # Safari is now supported
4
+
5
+ Passbolt 5.10.0 adds Safari as a supported browser. Safari has its own specificities and limitations, therefore features like avatars are disabled.
6
+
7
+ # TOTP Autofill
8
+
9
+ Passbolt 5.10.0 now automatically fills the one-time password directly into login forms, just like it does with usernames and passwords. This seamless integration simplifies your multi-factor authentication by eliminating manual copying.
10
+
11
+ # Tags are visible in the grid
12
+
13
+ This version also releases modernization of the tag codebase. This allows us to present these tags in the grid but also paves the way for further improvement of this feature.
14
+
15
+ # CSV export security update
16
+
17
+ CSV export has been updated to reinforce Passbolt's security postures. Some spreadsheet software that supports CSV also executes formulas when opening these files. It's a security issue that has been tackled in this version in 2 ways:
18
+ the CSV exports are disabled by default (import is still working) and can be reenabled via a server configuration
19
+ When CSV exports are enabled, a confirmation checkbox is displayed to ensure the users know what are the risks of this kind of export. Exported values are not modified to keep data integrity
20
+
21
+ # React 18 migration
22
+
23
+ The migration to React 18 is a significant step toward modernizing the application's entire codebase. This update improves the code and brings performance optimizations for our users.
24
+
25
+ # Conclusion
26
+ 3 long awaited features are finally out: Safari, TOTP autofill and tags in the grid.
27
+
28
+ ### Added
29
+ - PB-28063 Activate Safari support in the styleguide
30
+ - PB-29275 SAF - WP2.10 Add Safari as supported extension
31
+ - PB-29292 SAF - WP2.11 Fix quickaccess opening on Safari
32
+ - PB-29605 SAF - WP2.7 Fix detached quickaccess not being closed after "use on this page" click
33
+ - PB-36503 Browser extension causes performance degradation on some websites
34
+ - PB-36503 Browser extension causes performance degradation on some websites
35
+ - PB-43353 SAF - WP2.8 Fix file download on Safari
36
+ - PB-43355 SAF - WP2.9 Fix quickaccess animations
37
+ - PB-43997 SAF - WP1 Update the Safari browser extension build
38
+ - PB-44342 SAF - WP2.1 Provide Safari with its own polyfill
39
+ - PB-44343 SAF - WP2.2 Remove unsupported index.js callback
40
+ - PB-44345 SAF - WP2.4 fix the CSS injection in styleguide.js
41
+ - PB-45869 SAF - WP2.13 Implement file download using the native messaging
42
+ - PB-45870 SAF - WP2.14 Implement a custom fetch using the native messaging
43
+ - PB-46265 SAF - WP2.15 Fix authentication with MFA in the quickaccess
44
+ - PB-46679 SAF - Fix bold font rendering
45
+ - PB-47765 Tags modernization
46
+ - PB-47777 Migrate tags logic from components to TagServiceWorkerService
47
+ - PB-47789 REACT18 - Update ReactDom render to createRoot
48
+ - PB-47992 REACT 18 - migration of ResourceWorkspaceContext
49
+ - PB-48158 REACT 18 - Implement the migration of Dialog and Progress Contexts
50
+ - PB-48240 REACT18 - UserWorkspace migration
51
+ - PB-48252 REACT18 - Migrate ExtAppContext
52
+ - PB-48253 SAF - Temporarily remove Avatar download to avoid user being signed out
53
+ - PB-48258 SAF - Temporarily remove "upload avatar" feature
54
+ - PB-48337 REACT18 - Update contexts that should use functional update
55
+ - PB-48338 REACT18 - Update shared components that should use functional update
56
+ - PB-48339 REACT18 - Update quickaccess components that should use functional update
57
+ - PB-48340 REACT18 - Update authentication components that should use functional update
58
+ - PB-48342 REACT18 - Update user setting components that should use functional update
59
+ - PB-48343 REACT18 - Update administration components that should use functional update
60
+ - PB-48360 REACT18 - Update resource components that should use functional update
61
+ - PB-48363 REACT18 - Update user components that should use functional update
62
+ - PB-48366 REACT18 - Remove await set state in contexts
63
+ - PB-48384 REACT18 - Remove await setState in components and apps
64
+ - PB-48404 REACT18 - Object.assign should use functional set state for context
65
+ - PB-48408 CSV - WP1.2 Add a warning message when user is selecting a CSV format on the button
66
+ - PB-48416 CSV - WP2.9 Check if the setting is enabled when displaying the csv format on exportFormats
67
+ - PB-48419 REACT18 - Update the components to use functional setState
68
+ - PB-48425 REACT18 - Form validation should not check errors in the state for component
69
+ - PB-48470 Create ColumnTagsModel component
70
+ - PB-48471 TAGRID-1.2 Create CellTags component and make it resizable
71
+ - PB-48472 TAGRID-1.3 Add ColumnTagsModel and CellTags to DisplayResourcesList
72
+ - PB-48473 TAGRID-1.4 Clicking on a tag should filter the workspace
73
+ - PB-48521 Harmonise tags style
74
+ - PB-48553 SAF - Use webNavigation instead of tab update to improve navigation performances
75
+ - PB-49070 REACT18 - Migrate SSOContext for react-extension
76
+ - PB-49085 REACT18 - Migrate tests to remove legacyRoot true
77
+ - PB-49092 TAGRID-1.6 Hovering the tag on the resource detail should display tooltip
78
+ - PB-49106 CSV - WP2.2 Implement the exportPoliciesSettingsEntity
79
+ - PB-49107 CSV - WP2.3 Implement the exportPoliciesSettingsApiService
80
+ - PB-49108 CSV - WP2.4 Implement the findExportPoliciesSettingsService
81
+ - PB-49109 CSV - WP2.5 Implement findExportPoliciesSettingsController
82
+ - PB-49110 CSV - WP2.7 Implement exportPoliciesSettingsServiceWorkerService
83
+ - PB-49134 REACT18 - Migrate ApiAppContext
84
+ - PB-49137 CSV - WP2.8 Implement the ExportPoliciesContext
85
+ - PB-49138 CSV - WP2.6 Add event to find export policies settings
86
+ - PB-49172 REACT18 - Rename method in DisplaySelfRegistrationAdminstration
87
+ - PB-49248 REACT 18 - Revert functional setstate
88
+ - PB-49262 REACT18 - revert functional setstate in contexts and components
89
+ - PB-49270 SAF - Fix Safari Users settings for Duo MFA configuration
90
+ - PB-49293 TOTP Autofill
91
+ - PB-49294 Send TOTP through port to fill from in-form menu or quickaccess
36
92
 
37
93
  ### Fixed
38
- - PB-43511 Display the "Migrate metadata" admin home page card icon with a 2px stroke width
94
+ - PB-48468 Fix layout when an announcement is visible
95
+ - PB-49330 Alignment issues in 2FA Yubikey login page
39
96
 
40
97
  ### Maintenance
41
- - PB-6069 Moving folders should not send unnecessary data to the API
42
- - PB-44598 Replaced links from old help site with new docs links
43
- - PB-46314 REACT18 Implement migration for Login Content Script
44
- - PB-46361 REACT18 Implement migration for Login WAR file
45
- - PB-46364 REACT18 Implement migration for Account Recovery
46
- - PB-46664 First browser extension build has missing dist folder for browsers that cause issue
47
- - PB-46665 Browser extension build should add chrome-mv3 in the global build command
48
- - PB-47012 Add prettier to replace ESLINT styling rules
49
- - PB-47073 Add SubscriptionKeyServiceWorkerService
50
- - PB-47074 Rename subscriptionService to subscriptionApiService
51
- - PB-47075 Migrate subscription key finder business logic
52
- - PB-47100 Move find controller logic from SubscriptionController
53
- - PB-47101 Migrate subscription logic from SubscriptionController to UpdateSubscriptionKeyController
54
- - PB-47103 Remove grunt-contrib-clean dependency
55
- - PB-47351 Chrome Bext is killed and not restarted on upgrade
56
- - PB-47606 Add eslint-plugin-security
57
- - PB-47607 Add eslint-plugin-n
58
- - PB-47608 Add eslint-plugin-regexp
59
- - PB-47609 Add eslint-plugin-promise
60
- - PB-47621 Move SubscriptionEntity from browser extension to styleguide
61
- - PB-47692 Fix prettier warning
62
- - PB-47707 REACT18 Implement migration for Recover
63
- - PB-47711 REACT18 Implement migration for Setup
64
- - PB-47719 REACT18 Implement migration for Inform Menu
65
- - PB-47783 REACT18 Implement migration for API Triage Feedback
66
- - PB-47785 REACT18 Implement migration for Setup/Recover Account recovery
67
- - PB-47867 Align dynamic roles to work with the windows application
68
- - PB-47902 Add a ResponseEntity factory for the unit tests
69
- - PB-47905 Refactor test mock for subscription refactoring
70
- - PB-47931 Cleanup ResourceModel
71
- - PB-47955 Update overlay calculation detection on inform
72
- - PB-48014 Remove dead code from Google Closure library
73
- - PB-48038 Small upgrade for validator
98
+ - PB-47191 Review Dependabot alert for useless regular expression escape in browser extension
99
+ - PB-47542 Add unit tests to roleApiService
100
+ - PB-47713 REACT18- 10.2 Implement migration for QuickAccess
101
+ - PB-48088 Remove console errors related to pagemod page detection
102
+ - PB-48242 Remove dev phantom dependencies
103
+ - PB-48375 Add tests to gpg user id parser
104
+ - PB-48467 Add unit test to improve coverage on Allowed Content type page
105
+ - PB-49472 Remove unnecessary permissions from entitlements and project
106
+ - PB-49631 Optimize getFirst function
74
107
 
75
108
  ### Security
76
- - PB-46637 Prevent in-form menu to be displayed when overlaid by other components
109
+ - PB-48025 Major upgrade for pino (Medium) - passbolt-browser-extension
110
+ - PB-48039 Small upgrade for validator (Medium) - styleguide
111
+ - PB-48256 Small upgrade for lodash-es (Medium) - all-projects
112
+ - PB-48257 Small upgrade for lodash (Medium) - all projects
113
+ - PB-48527 Small upgrade for locutus (Critical) - passbolt-windows
114
+ - PB-48535 NPM - Remove now unnecessary overrides in package.json for styleguide and bext
115
+ - PB-49119 Remove dev phantom dependencies - node-fetch
116
+ - PB-49120 Remove dev phantom dependencies - history
117
+ - PB-49121 Remove dev phantom dependencies - expect
118
+ - PB-49369 Fix GCVE-0-2026-2391 - Medium CVSS4.0
119
+ - PB-49372 Fix GCVE-0-2025-68458 & GCVE-0-2025-68157 - LOW CVSS3.1
120
+ - PB-49373 Fix GCVE-0-2026-25547 - CRITICAL CVSS4.0
121
+ - PB-49432 Fix GCVE-0-2025-69873 - MEDIUM CVSS4.0
122
+ - PB-49452 Fix GHSA-3ppc-4f35-3m26 - HIGH CVSS4.0
123
+ - PB-49454 Update CSPs to allow inline <style> in SVGs
@@ -4,9 +4,5 @@
4
4
  <dict>
5
5
  <key>com.apple.security.app-sandbox</key>
6
6
  <true/>
7
- <key>com.apple.security.files.user-selected.read-only</key>
8
- <true/>
9
- <key>com.apple.security.network.client</key>
10
- <true/>
11
7
  </dict>
12
8
  </plist>
@@ -4,9 +4,5 @@
4
4
  <dict>
5
5
  <key>com.apple.security.app-sandbox</key>
6
6
  <true/>
7
- <key>com.apple.security.files.downloads.read-write</key>
8
- <true/>
9
- <key>com.apple.security.files.user-selected.read-only</key>
10
- <true/>
11
7
  </dict>
12
8
  </plist>
@@ -593,14 +593,22 @@
593
593
  buildSettings = {
594
594
  CODE_SIGN_ENTITLEMENTS = "Passbolt - password manager Extension/Passbolt - password manager Extension.entitlements";
595
595
  CODE_SIGN_STYLE = Automatic;
596
- CURRENT_PROJECT_VERSION = 3;
596
+ CURRENT_PROJECT_VERSION = 0;
597
597
  DEAD_CODE_STRIPPING = YES;
598
598
  DEVELOPMENT_TEAM = UHX38H22ZT;
599
599
  ENABLE_APP_SANDBOX = YES;
600
600
  ENABLE_FILE_ACCESS_DOWNLOADS_FOLDER = readwrite;
601
601
  ENABLE_HARDENED_RUNTIME = YES;
602
+ ENABLE_INCOMING_NETWORK_CONNECTIONS = NO;
602
603
  ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;
603
- ENABLE_USER_SELECTED_FILES = readonly;
604
+ ENABLE_RESOURCE_ACCESS_AUDIO_INPUT = NO;
605
+ ENABLE_RESOURCE_ACCESS_BLUETOOTH = NO;
606
+ ENABLE_RESOURCE_ACCESS_CALENDARS = NO;
607
+ ENABLE_RESOURCE_ACCESS_CAMERA = NO;
608
+ ENABLE_RESOURCE_ACCESS_CONTACTS = NO;
609
+ ENABLE_RESOURCE_ACCESS_LOCATION = NO;
610
+ ENABLE_RESOURCE_ACCESS_PRINTING = NO;
611
+ ENABLE_RESOURCE_ACCESS_USB = NO;
604
612
  GENERATE_INFOPLIST_FILE = YES;
605
613
  INFOPLIST_FILE = "Passbolt - password manager Extension/Info.plist";
606
614
  INFOPLIST_KEY_CFBundleDisplayName = "Passbolt - Open source password manager Extension";
@@ -612,7 +620,7 @@
612
620
  "@executable_path/../../../../Frameworks",
613
621
  );
614
622
  MACOSX_DEPLOYMENT_TARGET = 15.6;
615
- MARKETING_VERSION = 5.10.0;
623
+ MARKETING_VERSION = 5.10.1;
616
624
  OTHER_LDFLAGS = (
617
625
  "-framework",
618
626
  SafariServices,
@@ -631,14 +639,22 @@
631
639
  buildSettings = {
632
640
  CODE_SIGN_ENTITLEMENTS = "Passbolt - password manager Extension/Passbolt - password manager Extension.entitlements";
633
641
  CODE_SIGN_STYLE = Automatic;
634
- CURRENT_PROJECT_VERSION = 3;
642
+ CURRENT_PROJECT_VERSION = 0;
635
643
  DEAD_CODE_STRIPPING = YES;
636
644
  DEVELOPMENT_TEAM = UHX38H22ZT;
637
645
  ENABLE_APP_SANDBOX = YES;
638
646
  ENABLE_FILE_ACCESS_DOWNLOADS_FOLDER = readwrite;
639
647
  ENABLE_HARDENED_RUNTIME = YES;
648
+ ENABLE_INCOMING_NETWORK_CONNECTIONS = NO;
640
649
  ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;
641
- ENABLE_USER_SELECTED_FILES = readonly;
650
+ ENABLE_RESOURCE_ACCESS_AUDIO_INPUT = NO;
651
+ ENABLE_RESOURCE_ACCESS_BLUETOOTH = NO;
652
+ ENABLE_RESOURCE_ACCESS_CALENDARS = NO;
653
+ ENABLE_RESOURCE_ACCESS_CAMERA = NO;
654
+ ENABLE_RESOURCE_ACCESS_CONTACTS = NO;
655
+ ENABLE_RESOURCE_ACCESS_LOCATION = NO;
656
+ ENABLE_RESOURCE_ACCESS_PRINTING = NO;
657
+ ENABLE_RESOURCE_ACCESS_USB = NO;
642
658
  GENERATE_INFOPLIST_FILE = YES;
643
659
  INFOPLIST_FILE = "Passbolt - password manager Extension/Info.plist";
644
660
  INFOPLIST_KEY_CFBundleDisplayName = "Passbolt - Open source password manager Extension";
@@ -650,7 +666,7 @@
650
666
  "@executable_path/../../../../Frameworks",
651
667
  );
652
668
  MACOSX_DEPLOYMENT_TARGET = 15.6;
653
- MARKETING_VERSION = 5.10.0;
669
+ MARKETING_VERSION = 5.10.1;
654
670
  OTHER_LDFLAGS = (
655
671
  "-framework",
656
672
  SafariServices,
@@ -672,13 +688,21 @@
672
688
  CODE_SIGN_ENTITLEMENTS = "Passbolt - password manager/Passbolt - password manager.entitlements";
673
689
  CODE_SIGN_STYLE = Automatic;
674
690
  COMBINE_HIDPI_IMAGES = YES;
675
- CURRENT_PROJECT_VERSION = 3;
691
+ CURRENT_PROJECT_VERSION = 0;
676
692
  DEAD_CODE_STRIPPING = YES;
677
693
  DEVELOPMENT_TEAM = UHX38H22ZT;
678
694
  ENABLE_APP_SANDBOX = YES;
679
695
  ENABLE_HARDENED_RUNTIME = YES;
696
+ ENABLE_INCOMING_NETWORK_CONNECTIONS = NO;
680
697
  ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;
681
- ENABLE_USER_SELECTED_FILES = readonly;
698
+ ENABLE_RESOURCE_ACCESS_AUDIO_INPUT = NO;
699
+ ENABLE_RESOURCE_ACCESS_BLUETOOTH = NO;
700
+ ENABLE_RESOURCE_ACCESS_CALENDARS = NO;
701
+ ENABLE_RESOURCE_ACCESS_CAMERA = NO;
702
+ ENABLE_RESOURCE_ACCESS_CONTACTS = NO;
703
+ ENABLE_RESOURCE_ACCESS_LOCATION = NO;
704
+ ENABLE_RESOURCE_ACCESS_PRINTING = NO;
705
+ ENABLE_RESOURCE_ACCESS_USB = NO;
682
706
  GENERATE_INFOPLIST_FILE = YES;
683
707
  INFOPLIST_FILE = "Passbolt - password manager/Info.plist";
684
708
  INFOPLIST_KEY_CFBundleDisplayName = "Passbolt - Open source password manager";
@@ -692,7 +716,7 @@
692
716
  "@executable_path/../Frameworks",
693
717
  );
694
718
  MACOSX_DEPLOYMENT_TARGET = 15.6;
695
- MARKETING_VERSION = 5.10.0;
719
+ MARKETING_VERSION = 5.10.1;
696
720
  OTHER_LDFLAGS = (
697
721
  "-framework",
698
722
  SafariServices,
@@ -715,13 +739,21 @@
715
739
  CODE_SIGN_ENTITLEMENTS = "Passbolt - password manager/Passbolt - password manager.entitlements";
716
740
  CODE_SIGN_STYLE = Automatic;
717
741
  COMBINE_HIDPI_IMAGES = YES;
718
- CURRENT_PROJECT_VERSION = 3;
742
+ CURRENT_PROJECT_VERSION = 0;
719
743
  DEAD_CODE_STRIPPING = YES;
720
744
  DEVELOPMENT_TEAM = UHX38H22ZT;
721
745
  ENABLE_APP_SANDBOX = YES;
722
746
  ENABLE_HARDENED_RUNTIME = YES;
747
+ ENABLE_INCOMING_NETWORK_CONNECTIONS = NO;
723
748
  ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;
724
- ENABLE_USER_SELECTED_FILES = readonly;
749
+ ENABLE_RESOURCE_ACCESS_AUDIO_INPUT = NO;
750
+ ENABLE_RESOURCE_ACCESS_BLUETOOTH = NO;
751
+ ENABLE_RESOURCE_ACCESS_CALENDARS = NO;
752
+ ENABLE_RESOURCE_ACCESS_CAMERA = NO;
753
+ ENABLE_RESOURCE_ACCESS_CONTACTS = NO;
754
+ ENABLE_RESOURCE_ACCESS_LOCATION = NO;
755
+ ENABLE_RESOURCE_ACCESS_PRINTING = NO;
756
+ ENABLE_RESOURCE_ACCESS_USB = NO;
725
757
  GENERATE_INFOPLIST_FILE = YES;
726
758
  INFOPLIST_FILE = "Passbolt - password manager/Info.plist";
727
759
  INFOPLIST_KEY_CFBundleDisplayName = "Passbolt - Open source password manager";
@@ -735,7 +767,7 @@
735
767
  "@executable_path/../Frameworks",
736
768
  );
737
769
  MACOSX_DEPLOYMENT_TARGET = 15.6;
738
- MARKETING_VERSION = 5.10.0;
770
+ MARKETING_VERSION = 5.10.1;
739
771
  OTHER_LDFLAGS = (
740
772
  "-framework",
741
773
  SafariServices,
package/eslint.config.mjs CHANGED
@@ -66,6 +66,11 @@ export default [
66
66
  react: {
67
67
  version: "detect",
68
68
  },
69
+ regexp: {
70
+ // Allow PGP armor header character ranges (RFC 4880)
71
+ // !-9 and ;-~ match all printable ASCII except colon
72
+ allowedCharacterRanges: ["alphanumeric", "!-9", ";-~"],
73
+ },
69
74
  "import/resolver": {
70
75
  node: {
71
76
  paths: [__dirname], // Add project root to resolution paths
@@ -97,8 +102,14 @@ export default [
97
102
  "no-console": "off", // Allow console.log in dev
98
103
  "react/display-name": "off", // Don't require display names
99
104
  "react/prop-types": "off", // Skip PropTypes (future TypeScript)
105
+ "react/jsx-uses-react": "error", // Marks React as used when JSX is present
100
106
  "no-useless-escape": "off", // Too many false positives
101
107
  "func-names": ["error", "never"],
108
+ "import/no-named-as-default": "off",
109
+ "security/detect-object-injection": "off",
110
+ "security/detect-non-literal-regexp": "off",
111
+ "security/detect-unsafe-regex": "off",
112
+ "prefer-regex-literals": "off",
102
113
 
103
114
  // Phantom dependency detection (CRITICAL)
104
115
  "import/no-extraneous-dependencies": [
@@ -123,69 +134,6 @@ export default [
123
134
  "n/no-unsupported-features/node-builtins": "off", // We use browser APIs
124
135
  "n/no-missing-import": "off", // Handled by import plugin
125
136
  "n/no-missing-require": "off", // Handled by import plugin
126
-
127
- // Muted during migration
128
- "import/no-named-as-default-member": "off",
129
- "import/no-duplicates": "off",
130
- "import/named": "off",
131
- "import/no-named-as-default": "off",
132
- "no-empty": "off",
133
- "react/jsx-uses-react": "error", // Marks React as used when JSX is present
134
- "react/jsx-uses-vars": "error", // Marks JSX components as used
135
- "react/react-in-jsx-scope": "error", // Ensures React is in scope for JSX
136
- "security/detect-object-injection": "off",
137
- "security/detect-non-literal-regexp": "off",
138
- "security/detect-unsafe-regex": "off",
139
- "security/detect-non-literal-fs-filename": "off",
140
- "security/detect-possible-timing-attacks": "off",
141
- "n/no-unpublished-import": [
142
- "error",
143
- {
144
- allowModules: [
145
- "jest-fetch-mock",
146
- "jest-useragent-mock",
147
- "jest-each",
148
- "@testing-library/dom",
149
- "@testing-library/jest-dom",
150
- "@testing-library/react",
151
- "@testing-library/user-event",
152
- "fetch-mock",
153
- "@babel/core",
154
- "@storybook/test",
155
- ],
156
- },
157
- ],
158
- "n/no-unpublished-require": [
159
- "error",
160
- {
161
- allowModules: ["jest-fetch-mock"],
162
- },
163
- ],
164
- "n/no-extraneous-import": [
165
- "error",
166
- {
167
- allowModules: ["expect", "history"],
168
- },
169
- ],
170
- "prefer-regex-literals": "off",
171
- "regexp/strict": "off",
172
- "regexp/no-useless-escape": "off",
173
- "regexp/no-dupe-characters-character-class": "off",
174
- "regexp/use-ignore-case": "off",
175
- "regexp/prefer-d": "off",
176
- "regexp/prefer-character-class": "off",
177
- "regexp/prefer-w": "off",
178
- "regexp/no-obscure-range": "off",
179
- "regexp/prefer-range": "off",
180
- "regexp/no-dupe-disjunctions": "off",
181
- "regexp/no-useless-assertions": "off",
182
- "regexp/optimal-quantifier-concatenation": "off",
183
- "regexp/no-unused-capturing-group": "off",
184
- "regexp/sort-flags": "off",
185
- "regexp/negation": "off",
186
- "regexp/no-useless-flag": "off",
187
- "promise/param-names": "off",
188
- "promise/catch-or-return": "off",
189
137
  },
190
138
  },
191
139
  /*
@@ -221,7 +169,34 @@ export default [
221
169
  // Test-specific overrides
222
170
  "no-console": "off", // Allow console in tests
223
171
  "import/no-extraneous-dependencies": "off", // Dev deps OK in tests
172
+ "n/no-unpublished-import": "off", // Dev deps OK in tests
173
+ "n/no-unpublished-require": "off",
174
+ "n/no-extraneous-import": "off",
224
175
  "jest/prefer-expect-assertions": "off", // Not always needed
176
+ "security/detect-non-literal-fs-filename": "off",
177
+
178
+ // Forbid explicit imports of Jest globals (they are injected automatically)
179
+ "no-restricted-imports": [
180
+ "error",
181
+ {
182
+ paths: [
183
+ {
184
+ name: "expect",
185
+ message: "Use Jest's global `expect` instead.",
186
+ },
187
+ {
188
+ name: "jest",
189
+ message: "Use Jest's global `jest` instead.",
190
+ },
191
+ ],
192
+ patterns: [
193
+ {
194
+ group: ["@jest/globals"],
195
+ message: "Use Jest's injected globals instead of importing from '@jest/globals'.",
196
+ },
197
+ ],
198
+ },
199
+ ],
225
200
 
226
201
  // Rules muted during migration
227
202
  "jest/no-conditional-expect": "off",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "passbolt-browser-extension",
3
- "version": "5.10.1",
3
+ "version": "5.10.3",
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",
@@ -22,7 +22,7 @@
22
22
  "locutus": "~2.0.39",
23
23
  "openpgp": "^6.1.1",
24
24
  "papaparse": "^5.5.2",
25
- "passbolt-styleguide": "^5.10.1",
25
+ "passbolt-styleguide": "5.10.5",
26
26
  "react": "^18.3.1",
27
27
  "react-dom": "^18.3.1",
28
28
  "secrets-passbolt": "github:passbolt/secrets.js#v2.0.1",
@@ -75,9 +75,10 @@
75
75
  "jest-webextension-mock": "^3.8.9",
76
76
  "lockfile-lint": "^4.14.1",
77
77
  "prettier": "3.6.2",
78
+ "terser-webpack-plugin": "^5.3.16",
78
79
  "text-encoding-utf-8": "^1.0.2",
79
80
  "web-ext": "^9.2.0",
80
- "webpack": "^5.94.0",
81
+ "webpack": "^5.105.2",
81
82
  "webpack-cli": "^5.1.4"
82
83
  },
83
84
  "scripts": {
@@ -43,7 +43,7 @@ class InformMenuController {
43
43
 
44
44
  /**
45
45
  * Request the initial configuration of the in-form menu
46
- * @param requestId The identifier of the request
46
+ * @param {string} requestId The identifier of the request
47
47
  */
48
48
  async getInitialConfiguration(requestId) {
49
49
  try {
@@ -52,12 +52,18 @@ class InformMenuController {
52
52
  const callToActionInput = await webIntegrationWorker.port.request(
53
53
  "passbolt.web-integration.last-performed-call-to-action-input",
54
54
  );
55
- const suggestedResources = await this.getOrFindResourcesService.getOrFindSuggested(this.worker.tab.url);
55
+
56
+ const suggestedResources = await this.getOrFindResourcesService.getOrFindSuggested(
57
+ this.worker.tab.url,
58
+ callToActionInput.type,
59
+ );
60
+
56
61
  const configuration = {
57
62
  inputType: callToActionInput.type,
58
63
  inputValue: callToActionInput.value,
59
64
  suggestedResources: suggestedResources.toDto(),
60
65
  };
66
+
61
67
  this.worker.port.emit(requestId, "SUCCESS", configuration);
62
68
  } catch (error) {
63
69
  console.error(error);