Commit Graph

4366 Commits

Author SHA1 Message Date
Mathias Jakobsen 05bf74cf94 Merge pull request #27790 from overleaf/mj-chat-typescript
[web] Convert remaining chat frontend and tests to typescript

GitOrigin-RevId: 6b2b485433e0a4530f00496e7ecdd49d9eb450af
2025-08-14 08:05:23 +00:00
Mathias Jakobsen 49ac21087b Merge pull request #27804 from overleaf/mj-left-menu-tests-typescript
[web] Convert editor-left-menu tests to typescript

GitOrigin-RevId: 8b12fc6dfea387a30e6fe13d117ed623e3d1840b
2025-08-14 08:05:19 +00:00
Antoine Clausse 9774d9048c [web] Add admin permissions modify-group & modify-managed-group (#27456)
* Add capabilities `modify-group` and `modify-managed-group`

* Fix: Warning: validateDOMNesting(...): <span> cannot appear as a child of <option>

* Add `form-control` to select (fix styles)

* Check if admin can modify the group (frontend)

* Check if admin can modify the group (backend)

* Update tests

* Fix: Set `useSettingsUKAMF` state from `data?.useSettingsUKAMF`

* Add tests: Subscriptions update with adminRolesEnabled

* Use `getAdminCapabilities` helper

* Update `requireModifyGroupPermission` to array

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>

* Rename `canModify` to `canModifySubscription`

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>

* Refactor `requireModifyGroupPermission` stub

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>

* Test with `adminRolesEnabled` in SubscriptionDeletionTests.mjs

* Update test description with `adminRoles`

---------

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>
GitOrigin-RevId: 37b9a2e838fd566a33aa3a70631cebfd01b520ef
2025-08-14 08:05:00 +00:00
Christopher Hoskin ae602208f1 Merge pull request #27860 from overleaf/lg-spam-safe
Add spam check for incident

GitOrigin-RevId: 752180f7507e32219cc5faaef5d48fdc0003e889
2025-08-13 08:07:10 +00:00
Andrew Rumble 160e82a732 Combine implementations of hasAdminCapability
GitOrigin-RevId: a847c9182c018524c96726fe30e501763904b82e
2025-08-13 08:06:58 +00:00
Andrew Rumble cce55cf3d8 Add authorization helper for admin capabilities
GitOrigin-RevId: fbf28c89500481e379db6c49512876d867478eb7
2025-08-13 08:06:39 +00:00
Jakob Ackermann d055f01c00 [web] add config option for custom maintenance message (#27618)
GitOrigin-RevId: e01eebecce780af6e9e3f8b82321cb7776d414e2
2025-08-13 08:06:12 +00:00
David 7b230eb8ed Merge pull request #25598 from overleaf/dp-proptypes-misc
Convert HotkeysModal components to Typescript

GitOrigin-RevId: c2cf7a3a33afeb996650faa6e3ed91c4fe14ef1a
2025-08-12 08:06:35 +00:00
roo hutton eab0e40ba4 Merge pull request #27742 from overleaf/rh-odc-rm-skip
Remove skip button from ODC form

GitOrigin-RevId: b3974e041ab7fa5f28c2d5eb5176510616d50127
2025-08-12 08:06:12 +00:00
roo hutton 6c185cd700 Merge pull request #27670 from overleaf/rh-stripe-pause-addons
Prevent buying add-on while subscription is paused

GitOrigin-RevId: b8cfbbaa05a1031bedf37edf7b1ded2252eb6906
2025-08-12 08:06:08 +00:00
roo hutton ec0f719307 Merge pull request #27391 from overleaf/rh-stripe-pause-anchor
Reset billing cycle when resuming paused Stripe subscription

GitOrigin-RevId: 44f7aa4d3eeaab7622e97b0178fe7d6c7cccae50
2025-08-12 08:06:04 +00:00
Miguel Serrano e8e319d231 [web] Clean up group-audit-logs split test (#27614)
GitOrigin-RevId: e22183820e418cabc83cf2619c2c10cf4f82d3b9
2025-08-12 08:05:39 +00:00
ilkin-overleaf 29249c55a2 Merge pull request #27680 from overleaf/ii-domain-capture-get-user-affiliations
[web] Get domain capture info when getting user affiliations

GitOrigin-RevId: 475024cda072c45e548407dfdb36a772f845ac2b
2025-08-11 08:06:26 +00:00
ilkin-overleaf 222ecb55d6 Merge pull request #27641 from overleaf/ii-domain-capture-page
[web] Create domain capture page

GitOrigin-RevId: df16ba2cac683d315979be69f63e160ec402020b
2025-08-11 08:06:21 +00:00
Rebeka Dekany d751b88e6b Bootstrap files and folders cleanup (#27692)
* Remove icons folder

* Create folders for badge, button, and dropdown components

* Remove Bootstrap 5 from test

* Rename `getBootstrap5Breakpoint` to `getBootstrapBreakpoint`

* Cleanup and update BS 5 comments

* Move components to the shared folder

* Rename `tooltips-bs5` to `tooltip`

* Remove `-bs5` suffix

* Fix path

* Delete BS3 version file

* Rename `_form_marketing-bootstrap-5` to `_form_marketing`

* Delete BS3 version file

* Rename `_contact_general_modal-marketing-bootstrap-5` to `_contact_general_modal-marketing`

* Delete BS3 version file

* Rename `_contact_modal-marketing-bootstrap-5` to `_contact_modal-marketing`

* Delete BS3 version file

* Rename `thin-footer-bootstrap-5` to `thin-footer`

* Delete BS3 version file

* Rename `language-picker-bootstrap-5` to `language-picker`

* Rename `fat-footer-react-bootstrap-5` to `fat-footer-react`

* Delete BS3 version file

* Rename `navbar-marketing-bootstrap-5` to `navbar-marketing`

* Rename `navbar-marketing-react-bootstrap-5` to `navbar-marketing-react`

* Delete BS3 version file

* Rename `layout-website-redesign-cms-bootstrap-5` to `layout-website-redesign-cms`

* Source format

* Fix path

GitOrigin-RevId: cf0f5db7c84cf545c69213dcc271d9ff17fe5db7
2025-08-11 08:06:16 +00:00
Domagoj Kriskovic bd8493dba6 [dsmp] Add acceptChanges notification (#27555)
* [dsmp] moved redis functions to RedisStreamManager

* use getEventStream generator function

* [dsmp] moved redis functions to RedisStreamManager

* [dsmp] Add acceptChanges notification

* rename to acceptedChanges

* cleanup after rebasing parent branch

GitOrigin-RevId: c7e100f55503e52b146bcc07deb3e483250b66f8
2025-08-11 08:05:37 +00:00
Antoine Clausse 422e892231 [web] Map admin capabilities to project PrivilegeLevels (#27488)
* Add capability `copy-project`

* Check `copy-project` (frontend)

* Update tests

* Suggestion: map `modify-project`-`PrivilegeLevels.OWNER` and `view-project`-`PrivilegeLevels.READ_ONLY`

* Suggestion: remove capability `copy-project`. Use `view-project` instead

* Revert unrelated changes

* Add tests on AuthorizationManager when `adminRolesEnabled`

* Update `Modules.promises.hooks.fire` stubs with `.withArgs('getAdminCapabilities')`

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>

* Use `getAdminCapabilities` from AdminAuthorizationHelper.js

---------

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>
GitOrigin-RevId: 61167509c4a035c99831a5b0346347c2e6b5fae0
2025-08-08 08:07:59 +00:00
Jessica Lawshe f1c59be2d2 Merge pull request #27637 from overleaf/jel-remove-unused-group-sso
[web] Use `providerId` for group SSO and remove unused `universityId`

GitOrigin-RevId: 0928cdfee78cae5cdede57159b9968c15e26f27c
2025-08-08 08:07:34 +00:00
Mathias Jakobsen 35e8493934 Merge pull request #27630 from overleaf/mj-ai-settings-widget
[web] Update AI section of account settings page

GitOrigin-RevId: 217494ec10e686391ef46199e8cdaf900d762950
2025-08-08 08:07:05 +00:00
Mathias Jakobsen 9839dc57b3 Merge pull request #27620 from overleaf/mj-remove-ai-assistant-notification
[web] Remove AI Assist notification

GitOrigin-RevId: e3ffcac233eb77d215bff8af7e35f7fdecacf29a
2025-08-08 08:07:00 +00:00
Mathias Jakobsen 9b601774fc Merge pull request #27608 from overleaf/mj-beta-colours
[web] Update beta badge colours

GitOrigin-RevId: ffa08940a3133e09f4b14d964ac58443ba5cf4e3
2025-08-08 08:06:47 +00:00
Rebeka Dekany c9a1ecd060 Remove Bootstrap version 3 (#27420)
* Remove bootstrap-3 entrypoint

* Rename bootstrap-5 entrypoint to bootstrap

* Restore entrypoints

* Remove `bootstrap-5` and `bootstrap-3` entrypoints and a single `bootstrap.ts` file is now the default entrypoint

* Update `bootstrap-5` component imports to `bootstrap`

* Update `bootstrap-5` CSS imports to `bootstrap`

* Remove the `isBootstrap5` utility

* Remove `bootstrapVersion`

* Remove `ol-bootstrapVersion`

* Remove getCssThemeModifier

* Update path and rename

* Source format

* Remove Bootstrap v3 and Bootstrap v5 alias npm packages

* Remove bootstrap argument

* Remove unused files

* Update with the latest split tests

* Remove remaining bootstrap5PageStatus

* Update path

GitOrigin-RevId: 7acda2f80114d2de8699e1f06729a2a29218e284
2025-08-08 08:06:00 +00:00
Andrew Rumble 70e0ca3eb5 Split adminCapabilities middleware into two
GitOrigin-RevId: 093e455e33459cae2e3da236958cb991f128299e
2025-08-08 08:05:52 +00:00
Andrew Rumble 0f4534260b Try checking admin access before getting capabilities
GitOrigin-RevId: 75ff99aa6b6e94c1b84a99d22d65b327f4d40126
2025-08-08 08:05:47 +00:00
Andrew Rumble ccfeb59c59 Move hasAdminCapability middleware into helpers
This is so that we can test it more easily than embedding it would allow

GitOrigin-RevId: be23d945bc7c816d32b18b4990ecd9e0a6592eb5
2025-08-08 08:05:42 +00:00
Andrew Rumble 192aacbecd Add hasAdminCapabilities function to ExpressLocals
This will be available in pug to allow admin capabilities to be used.

GitOrigin-RevId: 6bc4e38385b421aa44ee9385e28f3c59b09e3ade
2025-08-08 08:05:37 +00:00
Rebeka Dekany 3f11776ecd Remove LESS stylesheets and dependencies (#27409)
* Remove components, core and modules LESS stylesheets

* Remove variables LESS stylesheets

* Remove app LESS stylesheets

* Remove github-sync, onboarding LESS stylesheets

* Remove main-light and IEEE LESS stylesheets

* Remove Less loader configuration

* Remove bootstrap-3 entrypoint

* Rename bootstrap-5 entrypoint to bootstrap

* Remove bootstrap-5 CSS folder and move stylesheets

* Update CSS variables

* Restore and update github-sync.scss path

* Fix try-premium.scss path and fix undefined mixin error

* Restore entrypoints

* Simplify buildCssPath to always use main-style.css

* Remove less from prettier formatting scripts

* Remove less from addHook extension

* Source format

* Remove nvd3 file reference from prettierignore (equivalent of nvd3.scss)

* Remove less and less-loader

* Add SCSS files to pirates require hook

GitOrigin-RevId: bd83c79f4d6ef7305d75993959a4dc5e7714ef9c
2025-08-06 08:05:38 +00:00
Simon Gardner 203e2e914b Merge pull request #27464 from overleaf/slg-filter-group-member-list
add user filter to group member list

GitOrigin-RevId: 0a65ca377979de706e2e43ee024d2cee9261a121
2025-08-06 08:05:05 +00:00
roo hutton 58b8e36739 Merge pull request #27215 from overleaf/rh-stripe-pause-status
Update features and subscription state when Stripe pause starts and ends

GitOrigin-RevId: 368f5d9b046cfe26e996be336189081b96926713
2025-08-06 08:04:57 +00:00
Thomas 7b7b560431 Use AsyncLocalStorage to cache userFullEmails on the request, avoiding duplicated calls to the affiliations endpoint (#27542)
* Use AsyncLocalStorage to cache userFullEmails

* Rename temporary fakeUser override to avoid conflicts

GitOrigin-RevId: 3a74816f677c1357293b0d46f245b4cfc499f2fa
2025-08-05 08:06:04 +00:00
Simon Gardner 7b7d03bcc0 Merge pull request #27516 from overleaf/slg-hide-enrolment_ad_html
hide enrolment_ad_html field from v1 admin form and remove unused usage in web

GitOrigin-RevId: 7cf8eed1a68bbaf2ebbb77069bfd421cd26ef01d
2025-08-05 08:05:41 +00:00
Alf Eaton 677ebf3590 Use "*:placeholder" as placeholder label (#27520)
GitOrigin-RevId: eb6566e8cab401675df21a54d0b1035fd6e8a8df
2025-08-01 08:05:58 +00:00
Miguel Serrano cf0a4c472f [web] Group audit log link in settings (#27390)
* [web] Group audit log link in settings

Adds a link to access the `/manage/groups/:subscription_id/audit-logs`
endpoint

* [web] Add `group-audit-logs` split test for gradual rollout

GitOrigin-RevId: 60d6c9917ca54ff5e228996e7454a901f0f3b9ca
2025-08-01 08:05:10 +00:00
Jakob Ackermann 29045b9085 [web] download binary files in clsi from filestore via new endpoints (#27505)
* [history-v1] use String.padStart instead of lodash.padStart

* [web] download binary files in clsi from filestore via new endpoints

* [server-ce] tests: Cypress.env() is parsing boolean values

* [server-ce] tests: run history migration as root

GitOrigin-RevId: bdf6c0e542531ccc4b3f13d2ed68ca0d31e580e9
2025-07-31 08:05:28 +00:00
Jakob Ackermann 6a92acf542 Merge pull request #27476 from overleaf/jpa-transfer-all
[web] add script for transferring all of a users projects in Server Pro

GitOrigin-RevId: 3aad2b624e1da2af83fec0715c2e5e08eff43695
2025-07-30 08:06:51 +00:00
Antoine Clausse 1cebef56f0 Remove endpoint /user/emails/send-reconfirmation (#27423)
GitOrigin-RevId: bd96d749175248cba83eb07c00dab7e7a9f819da
2025-07-30 08:06:38 +00:00
Antoine Clausse 535a9774ef [web] Remove the unused endpoint /user/emails/resend_confirmation (#27416)
* Remove the unused endpoint `/user/emails/resend_confirmation`

* Remove exported middleware `resendConfirmationEmail`

* Revert "Remove exported middleware `resendConfirmationEmail`"

This reverts commit 7989bf25465dbc9b68c9d1af0d64d1097a747b55.

GitOrigin-RevId: 8054c6f217a734881093f78599a7b2be29436793
2025-07-30 08:06:33 +00:00
Antoine Clausse ec69641649 [web] Remove the endpoint /user/emails (POST) (#27418)
* Remove `/user/emails` (post)

* Update test

GitOrigin-RevId: 3979820935209ca36fdd8fabc016ad55d4858cef
2025-07-30 08:06:29 +00:00
Rebeka Dekany 7c97cbbfe4 Improve landmarks on the Project dashboard and Editor pages (#27401)
* Improve landmarks for the Project Dasbhboard

* Improve landmarks for the IDE page

* Improve landmarks for the new redesigned IDE page

* Sort locales

* Fix typo OlButtonToolbar -> OLButtonToolbar

* Update project navbar translation

* Update labels

* Redundant main landmark

* Fix failing test

* Descriptive name for the rails tab

* Header should not be in a button

* Update translation to Account and help

* Update translation to Project categories and tags

* Add explanations

* Show landmark for the survey widget when it's rendered

* Suggestions for nav stretch/scroll/borders

* Source format

---------

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>
GitOrigin-RevId: d05a738e782d2edb229529aadf92b9004dfd973a
2025-07-29 08:05:16 +00:00
Jakob Ackermann 809ab571d8 Merge pull request #25479 from overleaf/msm-passport-saml-5
[web] Update `passport-saml` to `v5.0.1`

GitOrigin-RevId: 9e154d3f7ef78d37a151e863ce86bfc2f8d85956
2025-07-28 08:05:20 +00:00
Liangjun Song ec591c4f7b Merge pull request #27150 from overleaf/ls-flexible-licensing-for-stripe-manually-billed-users
Support Stripe manually billed users in flexible licensing

GitOrigin-RevId: b3211577a313f3a241320bfe3910cf648ee49319
2025-07-25 08:05:32 +00:00
Antoine Clausse ca71fec33b Merge pull request #27363 from overleaf/revert-26751-rd-landmarks
[web] Revert "Improve landmarks on the Project dashboard and Editor pages"

GitOrigin-RevId: 4bf0bbb9466db4436df4a72dcc70c320263dd168
2025-07-24 08:05:48 +00:00
Antoine Clausse e7eb7d32c5 [web] Replace token-link validation on reconfirm affiliation notifications (#27250)
* Update Reconfirm Affiliation (Pug) in Portal page

Change the notification so it directs users to the settings page instead of triggering an email confirmation with token-link

* Update Reconfirm Affiliation (React) in Settings page

Update the component so it sends the 6-digits code and opens the modal to enter it

* Update Reconfirm Affiliation (React) in Projects page

Update the component so it sends the 6-digits code and opens the modal to enter it

* `cleanup_unused_locales`

* `bin/run web npm run extract-translations`

* Update tests

* Minor updates in tests

* Update Pug notifications with the notification mixin

* De-center the "reconfirmed notification"

* Update "Learn more" links to "Learn more about institutional email reconfirmation"

* Update tests

GitOrigin-RevId: cb65623e209217614786eec56f7f5d28b9e8cec5
2025-07-24 08:05:34 +00:00
roo hutton 86d9f55f38 Merge pull request #27141 from overleaf/rh-stripe-schedule-pause
Support subscription pausing in Stripe

GitOrigin-RevId: 5550b2af2db99fd456d591c9bb4ba64d34dc7615
2025-07-24 08:05:29 +00:00
Rebeka Dekany 1b4cbd4efb Improve landmarks on the Project dashboard and Editor pages (#26751)
* Improve landmarks for the Project Dasbhboard

* Improve landmarks for the IDE page

* Improve landmarks for the new redesigned IDE page

* Sort locales

* Fix typo OlButtonToolbar -> OLButtonToolbar

* Update project navbar translation

* Update labels

* Redundant main landmark

* Fix failing test

* Descriptive name for the rails tab

* Header should not be in a button

* Update translation to Account and help

* Update translation to Project categories and tags

* Add explanations

GitOrigin-RevId: 96712b37bb1306b552de510d9fd8ae890f24309f
2025-07-23 08:07:35 +00:00
Jessica Lawshe 1387466151 Merge pull request #27026 from overleaf/jel-domain-capture-check
[web] Check if domain is captured by group when using domain API

GitOrigin-RevId: 6e14df0a1701c33fc80f21f01bb3fbb446d7f074
2025-07-23 08:06:52 +00:00
Jakob Ackermann 082121d3da [web] reject upload requests without a file path (#27156)
* [web] reject upload requests without a file path

* [web] update copy on error message and link to contact form

Co-authored-by: Kamal Arkinstall <kamal.arkinstall@overleaf.com>

* [web] update copy: move dot to the end

---------

Co-authored-by: Kamal Arkinstall <kamal.arkinstall@overleaf.com>
GitOrigin-RevId: ba1ee81a91b046540caeb2f3f3da0e305611b35f
2025-07-22 08:07:03 +00:00
Jakob Ackermann 81f0807fc6 [web] prepare filestore migration for Server Pro/CE (#27230)
* [web] prepare filestore migration for Server Pro/CE

* [history-v1] remove unused USER_FILES_BUCKET_NAME env var from script

* [server-ce] tests: write default docker-compose.override.yml on startup

* [server-ce] tests: extend access logging of host-admin for response

* [server-ce] tests: test text and binary file upload

* [server-ce] tests: add tests for filestore migration

* [web] simplify feature gate for filestore/project-history-blobs logic

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [server-ce] test: fix flaky test helper

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: f89bdab2749e2b7a49d609e2eac6bf621c727966
2025-07-22 08:06:58 +00:00
Antoine Clausse 30b0cabbbc [web] Update tests to add emails with 6-digits flow (#27076)
* In tests, post to `/user/emails/secondary` (6-digits) instead of the deprecated `/user/emails` (link-token)

* Update `addEmailAndConfirm` so it calls the right endpoint

* Remove unnecessary `userId` from `confirmEmail` and `addEmailAndConfirm` args

* Use `updateUser` to add unconfirmed email to user

* Confirm, then unconfirm emails, in order to test on unconfirmed emails

* Lowercase emails in `unconfirmSecondaryEmail`, so they get matched correctly

* Update UserEmailsTests.mjs with 6-digits flow, fetch, no `npm:async`

GitOrigin-RevId: 71b9ed65daebea5f22272240559caab375515f0c
2025-07-22 08:06:23 +00:00
Domagoj Kriskovic d5b5710d01 Add docModified hook in ds-mobile-app module (#27196)
* Add docModified hook in ds-mobile-app module

* use Object.entries when iterating over promises

* avoid project lookup

* update tests

GitOrigin-RevId: 88676746f56558a97ce31010b57f5eeb254fefef
2025-07-22 08:05:56 +00:00