Compare commits

...

1725 commits

Author SHA1 Message Date
yu-i-i
3461c105f4 Fix: always include repository prefix in sandboxed compiles image name 2025-07-22 19:22:12 +02:00
yu-i-i
bfc75552a5 Fix template publishing to align with upstream project context changes 2025-07-22 19:22:12 +02:00
yu-i-i
0d3890e2ae Move documentation from README.md to Wiki 2025-07-22 19:22:12 +02:00
yu-i-i
a66cfc15ec Remove LDAP admin check via group search in ldap-passport 2025-07-22 19:22:11 +02:00
yu-i-i
9f8136d13a toggleSymbolPalette now in useEditorPropertiesContext 2025-07-22 19:22:11 +02:00
yu-i-i
5e527b9a61 Set use-ai capability to false 2025-07-22 19:22:11 +02:00
yu-i-i
88283f054d Track changes: convert to mjs 2025-07-22 19:22:11 +02:00
yu-i-i
e9efde94b7 Track changes: use getTrackedChangesUserIds introduced in the mainstream 2025-07-22 19:22:11 +02:00
yu-i-i
e8813f89cb Remove OVERLEAF_OIDC_DISABLE_JIT_ACCOUNT_CREATION in favor of OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS 2025-07-22 19:22:11 +02:00
Synésio Neto
07a66fe94c Introduce an environment variable to allow JIT OIDC users creation based on their email address domain. 2025-07-22 19:22:11 +02:00
yu-i-i
af636b8940 Update README: variable to control JIT account creation in OIDC authentication 2025-07-22 19:22:11 +02:00
yu-i-i
08d22264c6 Introduce an environment variable to control user creation in OIDC authentication, closes #47 2025-07-22 19:22:11 +02:00
53f532fa29 I need the --network=host settings for building the container 2025-07-22 19:22:11 +02:00
yu-i-i
94c0234284 Avoid DEP0174 by removing async from callback-based getGroupPolicyForUser 2025-07-22 19:22:10 +02:00
yu-i-i
176a1a4f96 README.md: v5.5.0-v3 2025-07-22 19:22:10 +02:00
yu-i-i
3ce4381768 Fix missing Templates link on login page 2025-07-22 19:22:10 +02:00
yu-i-i
7de6dffb3c Fix login page 2025-07-22 19:22:10 +02:00
yu-i-i
dce4c64534 Update README.md: Changes to Template Gallery and Sandboxed Compiles, v5.4.1-ext-v3 2025-07-22 19:22:10 +02:00
yu-i-i
8af4a2996a Symbol Palette: make close button visible 2025-07-22 19:22:10 +02:00
yu-i-i
73ff0a0eee Template Gallery: replace markdown-it with marked 2025-07-22 19:22:10 +02:00
yu-i-i
571735fd8f Refactor Template Gallery; resolves #38 and #39
- Replace free-text license input with a select box
- Improve visual presentation of modals and enhance keyboard interaction
2025-07-22 19:22:10 +02:00
yu-i-i
2253ec577e Refactor Sandboxed Compiles 2025-07-22 19:22:10 +02:00
yu-i-i
88486fa491 README.md: v5.4.0-v2 2025-07-22 19:22:09 +02:00
yu-i-i
26521730ef Symbol Palette: improve keyboard input experience 2025-07-22 19:22:09 +02:00
yu-i-i
7bb14e7e9d Symbol Palette: get rid of @reach/tabs 2025-07-22 19:22:09 +02:00
yu-i-i
9e0792f665 Add 'poll' to clsi seccomp profile, fixes minted. Thanks, David. 2025-07-22 19:22:09 +02:00
yu-i-i
8a20b2b5a1 Update README.md: Template Gallery 2025-07-22 19:22:09 +02:00
yu-i-i
ae99d681bb Make Template Gallery optional; rename environment variables 2025-07-22 19:22:09 +02:00
yu-i-i
b035613237 Add Template Gallery support 2025-07-22 19:22:09 +02:00
yu-i-i
2a0d304b70 Enable From External URL feature 2025-07-22 19:22:08 +02:00
yu-i-i
da8bcee3c1 Minor changes in README.md 2025-07-22 19:22:08 +02:00
yu-i-i
f38be34f46 Track changes / comments: update backend to support frontend changes 2025-07-22 19:22:08 +02:00
yu-i-i
d86d6519e6 Allow EXTERNAL_AUTH to be undefined, fixes #26 2025-07-22 19:22:08 +02:00
yu-i-i
1e3e9a4096 Clarify OIDC redirect URI in README.md (closes #28) 2025-07-22 19:22:08 +02:00
yu-i-i
d0b38798d8 Symbol palette: switch to 'OL' UI components and apply minor cosmetic changes 2025-07-22 19:22:08 +02:00
yu-i-i
a31f70f4db Clarify OVERLEAF_OIDC_USER_ID_FIELD parameter usage (closes #24) 2025-07-22 19:22:08 +02:00
yu-i-i
bfecca5eb3 Make OVERLEAF_OIDC_USER_ID_FIELD support 'email' as a value 2025-07-22 19:22:08 +02:00
yu-i-i
b6f4eaf1df See upstream commit 42ee56e 2025-07-22 19:22:08 +02:00
yu-i-i
747b021030 Fix glitches in symbol palette after switching to Bootstrap 5 2025-07-22 19:22:07 +02:00
yu-i-i
db3f0d08dc Whitelist /oidc/login endpoint, fixes #21 2025-07-22 19:22:07 +02:00
yu-i-i
586afb3e70 Update README.md (add ENV variables to control SAML signature validation) 2025-07-22 19:22:07 +02:00
yu-i-i
f90b086f32 Add ENV variables to control SAML signature validation 2025-07-22 19:22:07 +02:00
yu-i-i
29ed51f81b Update README.md 2025-07-22 19:22:07 +02:00
yu-i-i
41d0404df4 Re-export doLogout (was removed from exports in commit b9fb636). 2025-07-22 19:22:07 +02:00
yu-i-i
beff3fdb07 Refactor authentication code; add OIDC support 2025-07-22 19:22:07 +02:00
yu-i-i
f5859e373f Allow adding extra flags to LaTeX compiler through environment variable 2025-07-22 19:22:06 +02:00
yu-i-i
f1e9b0645c Update README.md 2025-07-22 19:22:06 +02:00
yu-i-i
47cefe1c45 Enable LDAP and SAML authentication support 2025-07-22 19:22:06 +02:00
yu-i-i
c15930080c Enable Symbol Palette 2025-07-22 19:22:06 +02:00
yu-i-i
3b3fc01308 Allow selecting a TeX Live image for a project 2025-07-22 19:22:06 +02:00
Sam Van den Vonder
5d3d056af2 Enable Sandboxed Compiles feature 2025-07-22 19:22:06 +02:00
yu-i-i
010192506b Enable autocomplete of reference keys feature 2025-07-22 19:22:06 +02:00
yu-i-i
9821e64994 Enable track changes and comments feature 2025-07-22 19:22:05 +02:00
yu-i-i
3eb637d999 Redirect non-existing links to Overleaf page 2025-07-22 19:22:05 +02:00
Jakob Ackermann
0546fb7233 [third-party-datastore] improve error handling (#26881)
* [third-party-datastore] use generic serializer for dropboxError

The `err` serializer will not pick up all the dropbox fields.

Co-authored-by: Thomas Mees <thomas.mees@overleaf.com>

* [third-party-datastore] handle user_suspended like insufficient_space

Unlink dropbox and display a notification (same key to clear later).

Co-authored-by: Thomas Mees <thomas.mees@overleaf.com>

* [third-party-datastore] skip retries when rejected with disallowed_name

Co-authored-by: Thomas Mees <thomas.mees@overleaf.com>

* [web] sort translations

* [web] update copy for dropbox_unlinked_because_suspended

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

---------

Co-authored-by: Thomas Mees <thomas.mees@overleaf.com>
Co-authored-by: Kamal Arkinstall <kamal.arkinstall@overleaf.com>
GitOrigin-RevId: 8fbb9074d1d6eb879e904d79dd4b2a2c952ff902
2025-07-22 08:07:13 +00:00
Jakob Ackermann
b1880ba64d [monorepo] upgrade tough-cookie in request to latest version (#27249)
GitOrigin-RevId: 9096e05d2c337c3d3a9b4ca6efec8fd40c51a622
2025-07-22 08:07:08 +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
Jakob Ackermann
bf43d4f709 [history-v1] make back_fill_file_hash_fix_up compatible with Server Pro (#27280)
* [history-v1] move MockFilestore into shared place

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

* [history-v1] make back_fill_file_hash_fix_up compatible with Server Pro

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: 70ea57e1503031d9f14dcd60c4c110e746450587
2025-07-22 08:06:41 +00:00
David
ae3f63d37f Merge pull request #27209 from overleaf/dp-collaborator-colour
Adapt online user and chat user colors based on luminance

GitOrigin-RevId: 1b0c843147ee3dc585866bc491a7c7613cb00e70
2025-07-22 08:06:32 +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
Tim Down
2f427ef0e0 Merge pull request #27229 from overleaf/td-group-pricing-select
Allow clicks on icon in group plans select lists to open the select

GitOrigin-RevId: d54b27851cb8b5541d71c48ff815d52cf99db16f
2025-07-22 08:06:10 +00:00
Tim Down
0778bab910 Merge pull request #27254 from overleaf/td-project-dashboard-cookie-banner
Implement React cookie banner on project dashboard

GitOrigin-RevId: 95d2778d7ce7cb3054a06b06486b815a3453a623
2025-07-22 08:06:05 +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
Domagoj Kriskovic
868d562d96 Support password-fallbackPassword array in requireBasicAuth (#27237)
GitOrigin-RevId: 33b15a05996bfa0190041f347772867a9667e2ca
2025-07-22 08:05:51 +00:00
Andrew Rumble
5d79cf18c0 Define all initial roles
GitOrigin-RevId: ad613bad4d8a47e327281e90b5475e989a3ccec4
2025-07-22 08:05:42 +00:00
Christopher Hoskin
7ecee2e0aa Merge pull request #27255 from overleaf/revert-27252-revert-26843-csh-issue-26608-mongo8-dev-ci
Revert "Revert "Upgrade the dev environment and CI to mongo 8""

GitOrigin-RevId: 5074b012504e65240017f1fde9b0d8d04c7b8b61
2025-07-22 08:05:25 +00:00
Christopher Hoskin
f4dc8f7ebc Merge pull request #27252 from overleaf/revert-26843-csh-issue-26608-mongo8-dev-ci
Revert "Upgrade the dev environment and CI to mongo 8"

GitOrigin-RevId: f2145812a5c1cf8d3d3ac31c76cc4aed4ea9d46d
2025-07-21 08:05:01 +00:00
Christopher Hoskin
456f751a18 Merge pull request #26843 from overleaf/csh-issue-26608-mongo8-dev-ci
Upgrade the dev environment and CI to mongo 8

GitOrigin-RevId: 5fc33863094ea2bdb9235372efdc7d0cb492c34a
2025-07-21 08:04:57 +00:00
Jakob Ackermann
48df8c9f38 [server-ce] reduce verbose output from cron jobs (#27240)
GitOrigin-RevId: 8a2eda551796e62af6fddf80a3ce8cf37ec309d4
2025-07-21 08:04:50 +00:00
Miguel Serrano
7540bc9cbe Merge pull request #27202 from overleaf/msm-fix-pricing
[web] Remove group size limits for additional licenses

GitOrigin-RevId: d48976ccd72ec5e99249f80ab5d3e9e85e089b18
2025-07-18 08:07:17 +00:00
David
5aacccc9d0 Merge pull request #27138 from overleaf/dp-overleaf-dark
Add overleaf dark editor theme

GitOrigin-RevId: bd8cdbcc7ad6b56078611b7c2ab69008ea578ae7
2025-07-18 08:07:06 +00:00
David
3fe4cd31b9 Merge pull request #27203 from overleaf/dp-overleaf-dark-theme-name
Change name of dark overall theme from "Default" to "Dark"

GitOrigin-RevId: 6928e4779c433e55525becfb5ba3f07a5b3847d3
2025-07-18 08:07:02 +00:00
David
8d8142ba2b Merge pull request #27205 from overleaf/dp-persist-rail-tab
Persist currently selected rail tab on refresh

GitOrigin-RevId: a609bed93340d950a1fba8358fd5ed20afe6a4ce
2025-07-18 08:06:57 +00:00
Antoine Clausse
cf668d897d [web] Create middleware and functions for checks on admin permissions (#27107)
* Create AdminCapabilities in admin-panel module

* Add `adminRolesEnabled` setting

* Use `PermissionsController.requirePermission` in admin-panel routes

* Update `adminCapabilities` to be an array

* Update frontend tests

* Rename `defaultAdminCapabilities` to `fullAdminCapabilities`

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Add tests to PermissionsManagerTests.js

* Get admin roles and capabilities from the database

* Add tests to admin-panel

* Fixup PermissionsManagerTests.js without admin-panel module

* Revert "Use `PermissionsController.requirePermission` in admin-panel routes"

This reverts commit ccbf3e3e3bca9239b786c662cba2ac6bd2f4117a.

* Revert "Fixup PermissionsManagerTests.js without admin-panel module"

This reverts commit 6d7ad207bb17c5ca4c12c489d4636a02c608926d.

* Revert "Add tests to PermissionsManagerTests.js"

This reverts commit 8f9cc911750911e1c4b74b631d8c8a1b1ca86630.

* Fix tests after the reverts

* Replace capabilities to more sensible examples ('modify-user-email' and 'view-project')

* Set `adminRolesEnabled: false` for now

* Return `[]` capabilities for non-admins

* Misc: types, test description, settings ordering

* Small refactor of AdminPermissions.mjs:

Reuse code with `getMissingCapabilities`
Throw when `requiredCapabilities` is empty

* Update tests after update

* Rename `checkAdminPermissions` to `hasAdminPermissions`

* Change role permissions to array instead of object

* Remove admin capabilities when `!Settings.adminPrivilegeAvailable`

* Return `[]` if there is no user id

* Throw if `user?._id` is missing

* Update services/web/modules/admin-panel/app/src/AdminPermissions.mjs

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Adjust to ForbiddenError constructor syntax

* Give empty capabilities for unknown role, update tests

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 1eec4f6a45e1cc3ae76a3a4603cec1ceba1c2322
2025-07-18 08:06:40 +00:00
Andrew Rumble
71a33925b6 Update types to match usage
GitOrigin-RevId: c3d175ba804bcb27613adf6604b9a45b714ee531
2025-07-18 08:06:26 +00:00
Antoine Clausse
98af0e3d82 [web] In tests, update email confirmation to use the 6-digits flow (#27069)
* Rename `sendExistingSecondaryEmailConfirmationCode` to `sendExistingEmailConfirmationCode`

* Deduplicate error handling into `throwIfErrorResponse`

* Update `userHelper.confirmEmail` to use the 6-digits flow

GitOrigin-RevId: 91bdf7b185407b58520ca6b2aa1a7c71bdd23bc8
2025-07-18 08:06:18 +00:00
Brian Gough
5208ad39ec Merge pull request #27173 from overleaf/bg-filestore-migration-remove-backups
remove backup code from back_fill_file_hash script and tests

GitOrigin-RevId: 364eefc47670e6e7f2314de810ea259b609ff976
2025-07-18 08:06:14 +00:00
David
2e82852ed0 Merge pull request #27125 from overleaf/ae-extension-exports
Add CodeMirror history-related exports to `UNSTABLE_editor:extensions` event

GitOrigin-RevId: 015a19f8b97075ee441dda1d42e19d7f81804ed7
2025-07-18 08:06:06 +00:00
David
b0776da02c Merge pull request #27119 from overleaf/dp-select-error-text
Make error log header text selectable

GitOrigin-RevId: f3844d20bb11abf32ee053da763531c39d63a543
2025-07-18 08:06:02 +00:00
David
ec2ab62f4d Merge pull request #27171 from overleaf/dp-make-a-copy
Update copy of copy project option

GitOrigin-RevId: 3d1cc544f3945f55600f0daf1021b07de9d207bc
2025-07-18 08:05:58 +00:00
David
be4a11484f Merge pull request #27172 from overleaf/dp-file-menu-settings
Add settings option to file menu

GitOrigin-RevId: a5ad0cecad5b7896185a8b9c91364c7904961438
2025-07-18 08:05:53 +00:00
David
97eceb9c58 Merge pull request #27174 from overleaf/dp-subscription-settings
Add subscription option to settings modal

GitOrigin-RevId: 5f38db41c1d4f5727d56e2d0a4e0740e83114f15
2025-07-18 08:05:49 +00:00
David
63ca134fc5 Merge pull request #27182 from overleaf/dp-file-outline-spacing
Fix nesting of file outline

GitOrigin-RevId: b18e5eca9bdfb2c01c244e3843d0ae38041a7378
2025-07-18 08:05:45 +00:00
David
ee8e1915ab Merge pull request #27183 from overleaf/dp-file-tree-open-state
Persist rail tab isOpen state

GitOrigin-RevId: f1cbaa80fecd10953e9be61a993d69bd2c3c7915
2025-07-18 08:05:41 +00:00
Andrew Rumble
f054a5658f Run npm install with new npm version
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 8d81e73f528c34ad8df8b09716198dbaeebee23f
2025-07-18 08:05:33 +00:00
Andrew Rumble
5df6047fd8 Add npm engines entry
GitOrigin-RevId: 4f5ba34447d339cebba654835045c3eff1e23b39
2025-07-18 08:05:28 +00:00
Andrew Rumble
29d9408a69 Add vitest check when initialising redis
This is similar to the Mocha checks and will error if a connection is
attempted.

GitOrigin-RevId: 35e73cb56dc7c72393c55f40b6c18e9aaf74ab50
2025-07-18 08:05:14 +00:00
Tim Down
9c16a85295 Merge pull request #24030 from overleaf/td-bs5-remove-font-awesome
Remove Font Awesome in BS5

GitOrigin-RevId: 3ee9b136ac9ecda57ba9985d1da7d7a7e6b275e6
2025-07-18 08:05:06 +00:00
Brian Gough
5669a7d1c8 Merge pull request #27147 from overleaf/bg-filestore-migration-for-server-pro-II
add support for fetching files via http from filestore in back_fill_file_hash script and tests

GitOrigin-RevId: 8dea6383ed6fe9ee6786a5695e2deee93b1cdd84
2025-07-17 08:05:30 +00:00
MoxAmber
93c6353b90 Merge pull request #27120 from overleaf/as-compile-timeout-date-change
[web] Update compile timeout enforcement date

GitOrigin-RevId: 9c6957bad440a381e954e1f4de98d603d31aef42
2025-07-17 08:05:05 +00:00
Jakob Ackermann
9720413218 [web] add support for pug caching when running E2E tests in dev-env (#27073)
GitOrigin-RevId: bbb53723bd1bc22db5b3d440539f1624a905341f
2025-07-16 08:06:07 +00:00
Jakob Ackermann
8c39add865 [clsi-cache] meter ingress and egress bandwidth (#27143)
* [mics] fix "app" label in clsi-cache metrics in dev-env

* [clsi-cache] validate filePath when processing file

* [clsi-cache] meter ingress and egress bandwidth

Files are downloaded directly from nginx, hence we cannot meter egress
in clsi-cache easily.

GitOrigin-RevId: 24de8c41728f0e9c984113c1470dec6153e75f20
2025-07-16 08:05:59 +00:00
M Fahru
3e29af53a8 Merge pull request #27058 from overleaf/mf-re-add-sticky-header-plans-page
[web] Re-add sticky header for mobile plans table on bs5 version of the plans page

GitOrigin-RevId: 2c97e9983f8d0e1beb312c135558758a7f4f2ec0
2025-07-16 08:05:48 +00:00
Eric Mc Sween
1833bd3d00 Merge pull request #27126 from overleaf/em-fix-persist-changes
Fix chunk creation over a one change chunk

GitOrigin-RevId: aecae334849522975b83c77224ee27db64de4ed8
2025-07-16 08:05:40 +00:00
Liangjun Song
1daa49d9d2 Merge pull request #27093 from overleaf/ls-support-3ds-in-group-plan-update-flows
Support 3DS verification in group plan update flows

GitOrigin-RevId: 3206f612e5699f39ac44864daf6610da2956e6ca
2025-07-16 08:05:25 +00:00
Liangjun Song
9e22ed9c3f Merge pull request #26934 from overleaf/ls-support-individual-to-group-plan-upgrade
Support individual to group plan upgrade in Stripe

GitOrigin-RevId: 24cbe7bd6de86a4d9410e1abc49b6457e0871f40
2025-07-16 08:05:20 +00:00
David
1375f695d3 Merge pull request #27079 from overleaf/mj-base-theme-extraction
[web] Extract breadcrumbs theme to constant

GitOrigin-RevId: 55d65597a85a7da5cf5506caf8e13d4e2977fb1f
2025-07-16 08:05:16 +00:00
David
5b5e650754 Merge pull request #27078 from overleaf/mj-dark-mode-panel-border
[web] Use correct border color between toolbar and editor

GitOrigin-RevId: 48e08bdec57b25f2f70731f89c66be8c487b9e41
2025-07-16 08:05:12 +00:00
David
ce074ecf11 Merge pull request #27128 from overleaf/mj-ide-tooltip-teardown
[web] Editor Redesign: Tear down editor nudge tooltips

GitOrigin-RevId: 83c412ad782d041c960eba8533ffc49935524b9c
2025-07-16 08:05:07 +00:00
David
42a408c6ae Merge pull request #27053 from overleaf/dp-review-panel-disabled
Disable review panel tab when it cannot be opened in new editor

GitOrigin-RevId: 586ef06bc7cd27efdec6cb7ccc287f4ad41e4da5
2025-07-16 08:05:03 +00:00
Rebeka Dekany
488d0fdf9e Preserve source-only extensions on file switch (#27080)
GitOrigin-RevId: 661c70b78a508619e6532b87b0409f546b4d9e82
2025-07-15 08:06:32 +00:00
Jessica Lawshe
524402e817 Merge pull request #26603 from overleaf/jel-domainCaptureEnabled
[web] Add admin toggle for setting `domainCaptureEnabled` feature for groups

GitOrigin-RevId: d116a493402f39c06b3267bf5294ed90ed3e762d
2025-07-15 08:06:23 +00:00
Jessica Lawshe
3c24c9bcc9 Merge pull request #26473 from overleaf/jel-group-domainCapture
[web] Add admin toggle for setting `domainCapture` feature for groups

GitOrigin-RevId: d4dc373aa0d7863f83129126613a38d914afbd5f
2025-07-15 08:06:19 +00:00
Jessica Lawshe
1768bef22a Merge pull request #26366 from overleaf/jel-group-csv
[web] Include in group members CSV if user is managed and/or linked to the group's SSO

GitOrigin-RevId: 449974917d98cf121ea46eaa58be4b3666d88268
2025-07-15 08:06:14 +00:00
Jakob Ackermann
0f1d672a57 [server-ce] update copy/logo in README (#27104)
* [server-ce] add warning on not using sandboxed compiles

Co-authored-by: Mathew Evans <matt.evans@overleaf.com>

* [server-ce] update logo

Co-authored-by: Jamie Liu <jamie.liu@overleaf.com>

---------

Co-authored-by: Mathew Evans <matt.evans@overleaf.com>
Co-authored-by: Jamie Liu <jamie.liu@overleaf.com>
GitOrigin-RevId: 9fafa951af9918924eae5493dbe8f9aa3dfc87b2
2025-07-15 08:06:09 +00:00
Jakob Ackermann
2e2415c56e [server-pro] move revision from /var/www/revisions.txt into label (#27071)
Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: d760498b50006a23f446a91647954d00fa22f2f2
2025-07-15 08:05:57 +00:00
roo hutton
caedd0f850 Merge pull request #27046 from overleaf/rh-header-footer
Header and footer changes

GitOrigin-RevId: 963b07e6240401b6fc87ace7328b6f5a2046dc6c
2025-07-15 08:05:52 +00:00
roo hutton
1b70f09bee Merge pull request #27031 from overleaf/rh-safari-video-el
Catch video autoplay errors from Safari

GitOrigin-RevId: c2ed2b0a720603bfb80ebb3025c4ed107eec7f06
2025-07-15 08:05:47 +00:00
roo hutton
fe8964cc0a Merge pull request #26994 from overleaf/rh-cio-ai-assist
Expose AI status to customer.io

GitOrigin-RevId: 7e69676d686326f50b16cbae9b1e4d97c14612fa
2025-07-15 08:05:42 +00:00
Antoine Clausse
10f4722641 [web] Add some types to web module (#27051)
* Update `WebModule` types

* Add `if (module.middleware)` so types are satisfied

GitOrigin-RevId: 875fa2710a65d557037771c3eb76ff3cb0e73429
2025-07-15 08:05:34 +00:00
Antoine Clausse
4c03ebe4ee [web] Add some types for existing capabilities and PermissionController (#27048)
* Add types on existing Capabilities code

* Add ts-expect-error comments

* Minor code changes to satisfy types

* Remove ts-check because of unrelated errors

* Remove some ts-expect-error comments

* Revert "Remove some ts-expect-error comments"

This reverts commit 76cc0a073710eecf4f8b88f8579405838607f4d5.

* Remove the `@ts-check`s for now

It looks like typescript is somewhat flaky. We can re-enable this later

* Remove the `@ts-expect-error`s

* Remove return type

GitOrigin-RevId: 57bbd370654592c0662047e72e61f91bf38e0949
2025-07-15 08:05:29 +00:00
Antoine Clausse
c20c17b68e [web] Fix clockDelta computation in socket diagnostic (#27022)
GitOrigin-RevId: f27ac2b182c650a38cf74806152e10460a8dd21b
2025-07-15 08:05:24 +00:00
Kristina
ea2ba8cdbe [web] add error messages for payment failing on upgrade (#27054)
* [web] add error messages for payment failing to upgrade modal
* [web] show payment error on preview change page
* [web] add separate message for 3ds failure

GitOrigin-RevId: b2680ff9b4f01e42f31c1c11457f216a5eadf49d
2025-07-15 08:05:19 +00:00
Kristina
2ac46151f8 Merge pull request #26996 from overleaf/kh-include-region-in-errors
[web] improve errors thrown from StripeClient & PaymentService

GitOrigin-RevId: 59319936cc0caa876d80b068aac324dfe469b343
2025-07-15 08:05:14 +00:00
Eric Mc Sween
122c618e53 Merge pull request #27085 from overleaf/em-upgrade-oauth-tokens
Script for upgrading OAuth token scopes

GitOrigin-RevId: 9411494d402a1ff4bdc275ce54d574049a5f5060
2025-07-14 08:06:14 +00:00
Andrew Rumble
a9fa1aa598 Replace uses of resolve in place of a NextFunction
rejectOnError is safer

GitOrigin-RevId: 9ae988975ce5c4921964ecdab5892b72def0e78e
2025-07-14 08:06:09 +00:00
Eric Mc Sween
6abd4fe23e Merge pull request #26975 from overleaf/em-dsmp-subscribe
Add DS mobile app subscribe/unsubscribe endpoints

GitOrigin-RevId: 7396ccd54671016c62d61076e5e92ff3ecd42338
2025-07-14 08:06:01 +00:00
Rebeka Dekany
e35f79bf32 Tear down bs5-auth-pages feature flag (#27035)
* Remove auth-pages-bs5 test assignment setPassword

* Remove auth-pages-bs5 test assignment passwordReset

* Remove auth-pages-bs5 test assignment primaryEmailCheck

* Remove auth-pages-bs5 test assignment reconfirm

* Remove - bootstrap5PageStatus = 'enabled'

* Remove primary-email-check.less

* Fix spacing

* Remove unused translations

* Removed unused SplitTestHandler

* Update password_reset_sentence_case to password_reset

GitOrigin-RevId: d5a5c9a1576f325186aa103c4b7ad8fb819b790a
2025-07-14 08:05:56 +00:00
Rebeka Dekany
35f5588be4 Tear down cms-pages-bs5 feature flag - BS3 CMS pages (#27032)
* Remove cms-pages-bs5 assignments

* Remove BS3 version of CMS pages

* Remove website-redesign.less

* Remove default variant and update path

* Use async await

GitOrigin-RevId: a7728de85d971cd1cc66f340a5bc6f6e45c16101
2025-07-14 08:05:43 +00:00
Mathias Jakobsen
39b4581e1d Merge pull request #26735 from overleaf/mj-system-theme
[web] Add new system theme to the editor

GitOrigin-RevId: b65083c5e96abc493556e901c861689cb7e3bbf7
2025-07-14 08:05:37 +00:00
Miguel Serrano
72aca352fc [web] Group audit log for Feature disablement (#26930)
Adds a `update-group-policy` group audit log including the policies that are toggled.

GitOrigin-RevId: a582d612d20c8547995228e6b92b730373a89b63
2025-07-11 08:07:45 +00:00
Miguel Serrano
5351488f0e [web] Feature disablement status on user's admin panel (#26924)
* [web] Feature disablement status on user's admin panel

Adds a visual hint on the end user's admin panel when
dropbox/chat/ai features are disabled

GitOrigin-RevId: ded7a80120821ff606cc2c3b61bc2d82615c6026
2025-07-11 08:07:40 +00:00
Miguel Serrano
406312d495 Merge pull request #26513 from overleaf/msm-fix-sso-disable-managed-group
[web] Fix disable managed users clears SSO enrollment

GitOrigin-RevId: 75742840b5cee98a203ad11e9213e2e31cf18985
2025-07-11 08:07:32 +00:00
Jimmy Domagala-Tang
d5e00845c6 Revert "Merge pull request #27060 from overleaf/em-log-oauth-authenticate-errors" (#27062)
This reverts commit 32bb3c66b61d0de8cbbfe1da08042f06b4f4342a, reversing
changes made to 5e87b704cd90478aedc8d8befa0aa5787a53177b.

Co-authored-by: Eric Mc Sween <5454374+emcsween@users.noreply.github.com>
GitOrigin-RevId: 10b51500e3429a637dc76e3cec7d6b2764708ddb
2025-07-11 08:07:27 +00:00
Eric Mc Sween
bc49968908 Merge pull request #27060 from overleaf/em-log-oauth-authenticate-errors
Log OAuth authentication errors

GitOrigin-RevId: 32bb3c66b61d0de8cbbfe1da08042f06b4f4342a
2025-07-11 08:07:23 +00:00
Brian Gough
2f2862ecd7 Merge pull request #26637 from overleaf/bg-clsi-fix-process-group-for-local-compiles
fix "stop compile" option for local command runner in CE/SP

GitOrigin-RevId: 7986b505362aaf33ac6e161b3b54458baba1e2e6
2025-07-11 08:07:11 +00:00
Brian Gough
85ecef4d96 Merge pull request #26652 from overleaf/bg-run-e2e-tests-under-wayland
allow running e2e tests under Wayland

GitOrigin-RevId: 281186059300b4012e7f57b963b2577bfd5d0d93
2025-07-11 08:07:03 +00:00
M Fahru
8a07389ce6 Merge pull request #26979 from overleaf/mf-show-error-alert-in-plans-page
[web] Show error alert in plans page if error occurs when accessing Stripe checkout page

GitOrigin-RevId: 51cce691b25bc6bd59ee004c2ba495b75639c737
2025-07-11 08:06:58 +00:00
M Fahru
028d4b481f Merge pull request #26965 from overleaf/mf-trials-convert-to-regular-should-not-send-subscription-renewed
[web] Stop sending any event when trial changes to active for Stripe subscription on `customer.subscription.updated` stripe webhook event type

GitOrigin-RevId: 11256878cd2828036aad3130a05ad36d95466199
2025-07-11 08:06:50 +00:00
M Fahru
fd8a4ac020 Merge pull request #26970 from overleaf/mf-fix-spacing-issue-plans-faq
[web] Fix various spacing issues in plans page -> faq section

GitOrigin-RevId: d265c4c0b92f093a496ec8a4a180f1061e007b11
2025-07-11 08:06:46 +00:00
David
e38b04a3ee Merge pull request #27047 from overleaf/dp-fix-lint
Remove unneeded import

GitOrigin-RevId: 4120038529e2b15845b491c624d98bab2819d482
2025-07-11 08:06:41 +00:00
David
e7918247b4 Merge pull request #27034 from overleaf/dp-rail-tabs-on-click
Ensure rail tab always opens when clicked

GitOrigin-RevId: 70a01fab81c15011753b469a117cde599f98b541
2025-07-11 08:06:37 +00:00
David
beb3d87a77 Merge pull request #27036 from overleaf/dp-max-errors-message
Fix logic for PdfLogsEntries hasErrors prop

GitOrigin-RevId: ca9346bac807176882059ba758594356a7fa854f
2025-07-11 08:06:32 +00:00
David
d014db9893 Merge pull request #27037 from overleaf/dp-file-outline-spacing
Reduce line height for file outline items in new editor

GitOrigin-RevId: 4f022a99d264b919cd591eb028eaa24664dc914a
2025-07-11 08:06:28 +00:00
David
f0d2df3c43 Merge pull request #27040 from overleaf/dp-file-tree-close-button
Add close button to file tree rail panel

GitOrigin-RevId: d8abac122e266922b9ca914bc5df6ae7895b3796
2025-07-11 08:06:19 +00:00
Brian Gough
8fab1b54a3 Merge pull request #27025 from overleaf/bg-delete-redis-buffer-when-project-deleted
delete redis buffer when project deleted

GitOrigin-RevId: eef7b6fdeb04cb556ae47794379d83e659f89b2e
2025-07-11 08:06:08 +00:00
ilkin-overleaf
97f1425326 Merge pull request #27018 from overleaf/ii-flexible-licensing-manually-billed-billed-tear-down-revert
[web] Revert "FL manually billed subscription feature flag tear down"

GitOrigin-RevId: 7cc809570d310f56b8f9e1a4f43ca895db8a8073
2025-07-11 08:06:03 +00:00
ilkin-overleaf
f5dd356df3 Merge pull request #27017 from overleaf/ii-flexible-licensing-manually-billed-users-add-seats-revert
[web] Revert "FL manually billed subscriptions with no upsell"

GitOrigin-RevId: 3ce5441f825f9a364d3c17e3ac09aa3b9e87b0e7
2025-07-11 08:05:58 +00:00
ilkin-overleaf
8efe921326 Merge pull request #27016 from overleaf/ii-group-admin-managed-status-revert
[web] Revert "Managed status for group admin"

GitOrigin-RevId: 5a691a4f3702292648d484c8148bb2707c64028c
2025-07-11 08:05:54 +00:00
ilkin-overleaf
ca426842c1 Merge pull request #27014 from overleaf/ii-join-group-copy-improvement-revert
[web] Revert "Copy change on the consent screen when joining a managed group"

GitOrigin-RevId: 0690545a38c362f3cd32ec04bc7e2ae36808ebc3
2025-07-11 08:05:49 +00:00
ilkin-overleaf
da0967e902 Merge pull request #27015 from overleaf/ii-groups-pagination-2-revert
[web] Revert "Group members page pagination"

GitOrigin-RevId: 83c377e319c32110bdaa22970cc378f2aa89be7c
2025-07-11 08:05:44 +00:00
Jakob Ackermann
95b5c1f659 [terraform] clsi: add C4D trial (#27033)
* [terraform] clsi: add C4D trial

* [terraform] clsi: make SPOT instance setup idempotent

GitOrigin-RevId: 19d5cf0b1f3aaaa967a2b1e78eba77fc1887cc65
2025-07-11 08:05:36 +00:00
roo hutton
6bdcd1f803 Merge pull request #26901 from overleaf/rh-hotjar-marketing
Add hotjar tracking to marketing pages

GitOrigin-RevId: 5490392b44a287e4853778416323b3aa5fbfc1ef
2025-07-11 08:05:25 +00:00
David
14afc82acf Merge pull request #27003 from overleaf/dp-modal-opacity
Change settings modal appearance tab to have transparent backdrop

GitOrigin-RevId: 9cbf36164a8d82ec5945d06c7107a3b73b334cfe
2025-07-11 08:05:20 +00:00
David
029395ebb9 Merge pull request #26990 from overleaf/dp-pdf-logs-max-entries
Ensure that PreviewLogsPaneMaxEntries uses new style log entry in new editor

GitOrigin-RevId: 964525a4676eeb341ce168aa3189ef59bb26b1cc
2025-07-11 08:05:15 +00:00
Mathias Jakobsen
9e6ca01e7f Merge pull request #27005 from overleaf/mj-editor-redesign-feature-flag
[web] Allow editor redesign to be loaded through feature flag

GitOrigin-RevId: b600b0d42c7a052fde19be3eee46c9e11cc3bac1
2025-07-11 08:05:10 +00:00
Mathias Jakobsen
4ab4fbdf51 Merge pull request #26951 from overleaf/mj-layout-broken
[web] Add restoreView to LayoutContext

GitOrigin-RevId: 3a50c1e215c99236f503285fee1c924df57e07e4
2025-07-11 08:05:06 +00:00
Mathias Jakobsen
6b6ff921ef [web] Add W&C nudges to full-library synced libraries (#26784)
GitOrigin-RevId: d958191a543993a0080f0c58ebd373bad0b42aa2
2025-07-11 08:05:01 +00:00
Tim Down
bfa0459e72 Merge pull request #26928 from overleaf/td-remove-use-scope-value
Remove useScopeValue and its associated store

GitOrigin-RevId: 439d6eb16343f65695ef615a9ff697d0cc5ad2c7
2025-07-10 08:08:59 +00:00
Jimmy Domagala-Tang
e4a9b13e9a fix: adding target blank to usage limits link in assist paywall (#26817) (#26792)
GitOrigin-RevId: da9624b51c0394c81f6355470322d7185a144b21
2025-07-10 08:08:51 +00:00
Jimmy Domagala-Tang
102f3a5d5c fix: prevent users spam clicking from creating multiple projects (#26818)
GitOrigin-RevId: 8e867d02df70424f710b101e23e0889101e31d72
2025-07-10 08:08:42 +00:00
Jimmy Domagala-Tang
1083a05d69 adding link to delete writefull account on deletion modal (#26974)
GitOrigin-RevId: 6e9dec05a7cecb3013b629bc87b066466db9ed02
2025-07-10 08:08:37 +00:00
Davinder Singh
698d2aebb1 adding a check on the variable (#27021)
GitOrigin-RevId: 9ecc517ff9bee1dac14e579d494294c0efeb6b69
2025-07-10 08:08:29 +00:00
M Fahru
8ea682cba3 Merge pull request #26823 from overleaf/mf-re-add-cta-click-event-homepage
[web] Re-add homepage CTA click events that were accidentally removed

GitOrigin-RevId: d0452562f0a39f396e54ade0127e1fa2801f917b
2025-07-10 08:08:20 +00:00
M Fahru
c62c2d6157 Merge pull request #26820 from overleaf/mf-fix-btn-class-missing-homepage
[web] Fix missing `.btn` class from the "begin now" card

GitOrigin-RevId: ec51d3875a1a567a6bf051761becb3202e0fb580
2025-07-10 08:08:15 +00:00
M Fahru
1e9dcd9983 Merge pull request #26750 from overleaf/mf-fix-tooltip-disabled-plans-cta
[web] Fix tooltip isn't showing properly in plans CTA for disabled state in bs5 plans page

GitOrigin-RevId: e734e3ed93cfa8c28211d4f721aded1e968d142a
2025-07-10 08:08:10 +00:00
M Fahru
da203d6e96 Merge pull request #26749 from overleaf/mf-tear-down-plans-page-bs5
[web] Tear down plans-page-bs5 and make the bs5 version the default version

GitOrigin-RevId: 6a4d8c8a75597bbda23057f8ca404cf6c5e1f428
2025-07-10 08:08:06 +00:00
Mathias Jakobsen
298f56cbe5 [web] Support multi-byte characters in online user name (#26882)
GitOrigin-RevId: 9547ed7df13fcf8bb51ddd8c3f59167c2099e4e6
2025-07-10 08:08:01 +00:00
David
3c63c1ac3e Merge pull request #26971 from overleaf/dp-settings-button-active-state
Avoid using OLIconButton to remove active background on rail settings button

GitOrigin-RevId: c0a6c47e258ff350e82dfc465f9d37123411e446
2025-07-10 08:07:56 +00:00
Domagoj Kriskovic
11cb140fe3 Move AI related functions from PaymentProviderEntities to AiHelper (#26956)
* Move AI related functions from PaymentProviderEntities to AiHelper

* added @ts-check

GitOrigin-RevId: 8c8eec334b40a7f8f8533f6d5194f428112f68f9
2025-07-10 08:07:51 +00:00
Alf Eaton
d617fd0754 Add visual preview (#26947)
GitOrigin-RevId: f77b59219909971b11416f196783b3ab7198ed91
2025-07-10 08:07:28 +00:00
Alf Eaton
3e9d60c25a Ensure collaborator cursor colour is updated (#26847)
GitOrigin-RevId: 7057cdbb4815d5f1c5e5771d38255e58f592f9cd
2025-07-10 08:07:23 +00:00
Alf Eaton
bd64f09b91 Test entity counts on admin project info page (#26845)
GitOrigin-RevId: a49926358f367a7cbfb8aa2a1bc77a1cc1fd0b77
2025-07-10 08:07:18 +00:00
Alf Eaton
b410de7c39 Disable Insert > Comment menu item when no text is selected (#26805)
GitOrigin-RevId: a5fdd662cd487359f9b09212a449d7831bb5dcac
2025-07-10 08:07:13 +00:00
Alf Eaton
b87b83e33c Use full URL for keyboard shortcuts documentation (#26777)
GitOrigin-RevId: dc165fc475a0d2513eaebec0176479dd538a7bac
2025-07-10 08:07:08 +00:00
Alf Eaton
b843603bb1 Use data-type="number" for numeric meta values (#26775)
GitOrigin-RevId: 844f56383457ee7f2043af553b7dd5ae1b33f8a9
2025-07-10 08:07:04 +00:00
Eric Mc Sween
b165fea0de Merge pull request #26915 from overleaf/em-jd-increase-max-request-size
Increase web's max JSON request size to 12 MB

GitOrigin-RevId: 91da31e14570e770553049d8376ae1686eba3336
2025-07-10 08:06:55 +00:00
Eric Mc Sween
7219043c6b Merge pull request #26918 from overleaf/em-transfer-to-reviewer
Support ownership transfer to reviewer

GitOrigin-RevId: 1e97439e720a2125028a1776525f5c3766a289ef
2025-07-10 08:06:50 +00:00
Rebeka Dekany
bae2eb3861 Improve landmarks on the learn pages (#26821)
* Add search HTML tag and improve landmarks

* Add material symbol icons

* Add translation and improve landmarks

GitOrigin-RevId: bd0ddcce16348883c58ae547623b8e615b55df27
2025-07-10 08:06:45 +00:00
Rebeka Dekany
59b34d7c2b Fix table layout of Audit logs (#26796)
GitOrigin-RevId: 9882b3ba56bfbe6e78b03e1721ab77dcd55a7e85
2025-07-10 08:06:40 +00:00
Tim Down
905cc5d45f Move project context out of scope value store (#26615)
* Refactor project context to not use scope store

* Fix Cypress tests for project context changes

* Fix frontend React Testing Library tests for project context changes

* Remove redundant code

* Fix some project types in tests

* Remove unused import and fix a type

* Throw an error if updating the project in the project context before joining the project

* Fix some review panel tests

* Remove unused imports

GitOrigin-RevId: 2f0c928b651f387aa980c29aef7d1ba0649790a7
2025-07-10 08:06:31 +00:00
David
9237d8227b Merge pull request #26972 from overleaf/dp-file-tree-icons
Improvements to file tree icon buttons

GitOrigin-RevId: a27b25e11c90f1b833fac0f5ce2c1cb8d0cedb8c
2025-07-10 08:06:26 +00:00
Davinder Singh
349fb62f60 adding a specific class for quote to avoid overriding general blockquote tag (#26987)
GitOrigin-RevId: 046322bdc05b9322ede5920af2b829beca0bc0d2
2025-07-10 08:06:20 +00:00
Davinder Singh
8adc7526d9 Tearing down "paywall-change-compile-timeout" (#26741)
* removing the split test

* removing translations

* removing comments

* removing odcRole

GitOrigin-RevId: 8654876a6d97c52058fe9416f4495845d1320765
2025-07-10 08:06:10 +00:00
Davinder Singh
97d2954cc0 Home page burger menu scroll fix (#26853)
* adding a scroll fix

* generalising the solution so it works for both BS3 and BS5

GitOrigin-RevId: 8dd0d82356b484adcad9de487b12ecfc4050d109
2025-07-10 08:05:59 +00:00
David
6969caf690 Merge pull request #26969 from overleaf/dp-chat-text-color
Fix chat empty state colors in dark mode

GitOrigin-RevId: 8daca1971443d0112068bb06bb312ab633d39a20
2025-07-10 08:05:54 +00:00
David
e17eaf51d2 Merge pull request #26967 from overleaf/dp-synctex-not-bold
Change synctex icons in new editor to not be bold

GitOrigin-RevId: edb5aab8248c484b3791c0705dd571bdb405e612
2025-07-10 08:05:49 +00:00
David
faabd91e43 Merge pull request #26966 from overleaf/dp-review-panel-border
Fix review panel border in dark mode

GitOrigin-RevId: 68ad036b6d452be6259afbcd1eae723a873756c2
2025-07-10 08:05:44 +00:00
David
496093203a Merge pull request #26932 from overleaf/dp-auto-expand-first-message
Auto-expand first error log in new editor

GitOrigin-RevId: 03237426fb7127c631b2da3488322deb22b8d63b
2025-07-10 08:05:39 +00:00
David
74063b14e0 Merge pull request #26909 from overleaf/dp-eq-preview-presentation-mode
Prevent codemirror tooltips appearing on top of pdf preview

GitOrigin-RevId: 0c6ce15cd91b4958674fbc247bcd27ce5778f7fc
2025-07-10 08:05:34 +00:00
Kristina
6ce114da77 Revert "Revert "[web] link to correct Stripe dashboard from admin panel (#26756)"" (#26984)
This reverts commit 30aae5a0b0849a736e27e34661971dd9a950202e.

GitOrigin-RevId: c4837ece509a1f8da525f49895402f2f4f298f11
2025-07-10 08:05:21 +00:00
Rebeka Dekany
66b7fd8844 Fix selectors in e2e tests (#26695)
* Fix e2e tests

* Fix e2e tests

GitOrigin-RevId: 10bb27b6b33dd38d35964d327c0122d094a0abc9
2025-07-09 08:07:17 +00:00
Eric Mc Sween
ebf810e836 Merge pull request #26968 from overleaf/em-revert-jul8
Revert bad deploy

GitOrigin-RevId: fd6227cf4fde7fd8053b47365154d59d15fa115e
2025-07-09 08:07:12 +00:00
ilkin-overleaf
9d1641a1ab Merge pull request #26842 from overleaf/ii-flexible-licensing-manually-billed-billed-tear-down
[web] FL manually billed subscription feature flag tear down

GitOrigin-RevId: c860e8fc17c14685688fb834260772d9b63bcc6a
2025-07-09 08:06:49 +00:00
ilkin-overleaf
aa9dcb19a3 Merge pull request #26829 from overleaf/ii-flexible-licensing-manually-billed-users-add-seats
[web] FL manually billed subscriptions with no upsell

GitOrigin-RevId: b5f2083c7eabd0a1a5d024d5699d2c5e5556671a
2025-07-09 08:06:44 +00:00
ilkin-overleaf
9b43b82c95 Merge pull request #26770 from overleaf/ii-group-admin-managed-status
[web] Managed status for group admin

GitOrigin-RevId: 15db443f1ab06174dd5c30e48eff6b495166ec07
2025-07-09 08:06:40 +00:00
Kristina
c5fad346f9 [web] link to correct Stripe dashboard from admin panel (#26756)
* [web] link to correct Stripe dashboard from admin panel
* [web] be more careful about constructing the base URL
* [web] be extra careful about accessing values in the subscription
* [web] switch to plain text environment variables

GitOrigin-RevId: 5fa802fce11967f56289b11476f39e2e1d5a9c74
2025-07-09 08:06:35 +00:00
ilkin-overleaf
37b63f9823 Merge pull request #26634 from overleaf/ii-join-group-copy-improvement
[web] Copy change on the consent screen when joining a managed group

GitOrigin-RevId: e888673778e42b8db2a857a58df89b06c4b38cdb
2025-07-09 08:06:30 +00:00
ilkin-overleaf
cb945472c7 Merge pull request #26610 from overleaf/ii-groups-pagination-2
[web] Group members page pagination

GitOrigin-RevId: 9c7635bf24bed0af6d7d1a9626cae310f524b3e0
2025-07-09 08:06:26 +00:00
Jakob Ackermann
9fc0373fab [terraform] clsi: add C3D trial (#26929)
* [terraform] clsi: add C3D trial

* [terraform] clsi: switch C3D to standard variant with local SSD

GitOrigin-RevId: 6e6ceeb93ee94800d8ce46557322da82dc99fc2a
2025-07-09 08:06:10 +00:00
Andrew Rumble
1a1f283245 Update node to 22.17.0
GitOrigin-RevId: 7a15f7a0e95e3331c589955aca1fbc5dfb13a568
2025-07-09 08:06:01 +00:00
Andrew Rumble
f0827f0e67 consider trustedUsersRegex when choosing to show captcha at login
GitOrigin-RevId: 963fe1c40d05fe088a092eb45b12bcddf1f18e7b
2025-07-09 08:05:56 +00:00
Andrew Rumble
519b18e4a1 Lint fixes
GitOrigin-RevId: 686f3fb718faf5830a34656d45f888c8e245f7f9
2025-07-09 08:05:48 +00:00
Andrew Rumble
1b03bb6e5d Fix prettier
GitOrigin-RevId: a3bdc1bc6a8bfa05ed9f8d7bfcd91cbd4cd48375
2025-07-09 08:05:43 +00:00
Andrew Rumble
8a5e2b0ea3 Update package-lock file
This step is required as renovate is not able to generate a lockfile
itself

GitOrigin-RevId: d5fcdc4a98b24c6fb5662ef77dac6a1cf47589c2
2025-07-09 08:05:31 +00:00
renovate[bot]
6176f4d074 Update linters
GitOrigin-RevId: e6ce5461881abe515f57b9b066bb81c194f80e53
2025-07-09 08:05:22 +00:00
Tim Down
132ccbc4cc Merge pull request #26583 from overleaf/td-editor-scope-values-to-context
Move scope values starting with `editor.` to contexts

GitOrigin-RevId: 7ca349ceff002228cf4e931c644c8c386eb6c597
2025-07-09 08:05:15 +00:00
Domagoj Kriskovic
b2fb70c2b6 Add support for --any-comments to check_docs script (#26903)
GitOrigin-RevId: 283e761a3f305286584164b12e9736deba0064d9
2025-07-08 08:08:04 +00:00
Rebeka Dekany
5ed1225162 Remove admin-panel LESS stylesheet (#26797)
GitOrigin-RevId: e289ed2c82623034785d08564e01340828f7b91c
2025-07-08 08:07:52 +00:00
Rebeka Dekany
83a00e7546 Remove info Badge from the left menu (#26856)
GitOrigin-RevId: 108571730106aea29db2454b646c88cc9fc3f39a
2025-07-08 08:07:47 +00:00
M Fahru
16f3795c3e Merge pull request #25962 from overleaf/mf-stripe-payment-page-form-success-event
[web] Simulate sending `payment-page-form-success` event when user successfully subscribe using Stripe

GitOrigin-RevId: 82243fc16d3410670e4e6e9c0ccd487a5f2253a3
2025-07-08 08:07:20 +00:00
M Fahru
b3c339464e Merge pull request #25911 from overleaf/mf-stripe-payment-page-form-submit-event
[web] Simulate `payment-page-form-submit` event for Stripe subscription

GitOrigin-RevId: 8cfa1a2d91aaea4314a4a40f3256bade50507084
2025-07-08 08:07:16 +00:00
David
d4ab715a9b Merge pull request #26738 from overleaf/dp-search-filter-select-color
Fix selected state color for search modifiers in dark mode

GitOrigin-RevId: 9f488bdb57591d3f92c52283778ce38ee9e315b5
2025-07-08 08:07:11 +00:00
David
5973c90e39 Merge pull request #26726 from overleaf/dp-capitalize-pdf
Capitalize PDF in pdf error state

GitOrigin-RevId: 8a2f42cbadcc355759d836d68bfbb712dfae46ab
2025-07-08 08:07:06 +00:00
Mathias Jakobsen
2cacf8f645 [web] Fix zip name in e2e tests (#26888)
GitOrigin-RevId: d0efd0f09af04ea5039d0f5335f8d1a776dcf3a3
2025-07-08 08:06:54 +00:00
Brian Gough
16135bde64 Merge pull request #26874 from overleaf/bg-sp-hotfix-5-5-2-cve-2024-22088
add security update for CVE-2025-22088 in CE/SP 5.5.2 hotfix

GitOrigin-RevId: 6c61e0a120b82d5f5edb29b3a5f96c4dac6f1a68
2025-07-08 08:06:45 +00:00
Mathias Jakobsen
23403a7ef2 Merge pull request #26771 from overleaf/td-tooltip-click-trigger
Make OLTooltip with click trigger work

GitOrigin-RevId: e4b976255dd514af0cfa199b9bd6815b3a8a09ef
2025-07-08 08:06:41 +00:00
Mathias Jakobsen
c10b95ae06 Merge pull request #26757 from overleaf/mj-papers-notification-teardown
[web] Tear down papers-notification-banner

GitOrigin-RevId: c6cb0affe85147f34f3dc6c36041fe190faf7ff2
2025-07-08 08:06:36 +00:00
Mathias Jakobsen
b89951cf5d Merge pull request #26814 from overleaf/mj-review-panel-comment-collapse
[web] Fix review panel check for comments in active document

GitOrigin-RevId: fc0c35bc1d2f253c133dec5dcea7f81f68d723a9
2025-07-08 08:06:31 +00:00
Mathias Jakobsen
56232b48a7 Merge pull request #26827 from overleaf/mj-zip-download-name
[web] Sanitise project name in zip download

GitOrigin-RevId: 3b22da84002f57e3965c529c673344af04db9128
2025-07-08 08:06:26 +00:00
Mathias Jakobsen
bd3ef799f3 Merge pull request #26832 from overleaf/mj-system-messages
[web] Move system messages back to top of page

GitOrigin-RevId: 627a0e33e0cc49d75912621afc706da82aee7080
2025-07-08 08:06:21 +00:00
Mathias Jakobsen
913caca379 Merge pull request #26850 from overleaf/mj-chat-deleted-user
[web] Handle deleted users in chat threads

GitOrigin-RevId: 6593bf37e4f2339b40069b7cf4198166660852fb
2025-07-08 08:06:17 +00:00
Liangjun Song
c6b576b25a Merge pull request #26574 from overleaf/ls-group-plan-seats-adding-in-stripe
Support group plan seats adding in Stripe

GitOrigin-RevId: 9c46c167388c5578a1513f908e409ab5d940c1df
2025-07-08 08:06:12 +00:00
Jakob Ackermann
d7a0cbefea [history-v1] fix typo in metrics name in redis chunk store (#26865)
GitOrigin-RevId: 5b37e3b22a3250fcfbd7411e635cc11ed38dcb27
2025-07-08 08:05:52 +00:00
Jakob Ackermann
cf472f54d0 [history-v1] use POST requests for expiring redis buffer from cron (#26568)
* [history-v1] use POST requests for expiring redis buffer from cron

(cherry picked from commit 15780ac54e36b96e1aed9fd9eb6dfe9d4fbf842f)

* [history-v1] remove double claim of expire job

GitOrigin-RevId: 8b2eab07006a5819a47eed3f646b2a4d75f86e5b
2025-07-08 08:05:47 +00:00
Domagoj Kriskovic
d57d0ca738 Unselect files before deleting (#26810)
GitOrigin-RevId: 6bf22bc4983c96b7e2b45067aa0970c7fea293e2
2025-07-08 08:05:42 +00:00
Antoine Clausse
7d5bf2c0dd [web] Fix error: Cannot read properties of undefined (reading 'startsWith') (#26844)
https://overleaf.sentry.io/issues/6726737555/

GitOrigin-RevId: 488b64c5cb4a75ac4e77c7cdfb47cd3381a9c8eb
2025-07-07 08:05:49 +00:00
Brian Gough
0c462d45d1 Merge pull request #26815 from overleaf/bg-sp-hotfix-5-5-2
[CE/SP] Hotfix 5.5.2

GitOrigin-RevId: bcd409968ef0321dd1d8050553e7c9a02d3efdc4
2025-07-07 08:05:45 +00:00
Antoine Clausse
07b1701b72 [web] Convert EditorProviders and some test files to Typescript (#26512)
* Rename files to tsx

* Update types

* Remove props that aren't typed

* Add `LayoutContextOwnStates`

* Use `LayoutContextOwnStates`

* Ignore ts errors about `SocketIOMock`

* Address comments: remove `satisfies`, update `BroadcastChannel` fixture

* Add types to `makeEditorOpenDocProvider`. Update `openDocId`->`currentDocumentId`

* misc.

* Type sockets as `SocketIOMock & Socket`

* Fix remaining typing errors

* Fix type of `ideReactContextValue`

GitOrigin-RevId: 2734ac707517d56c452b0bf06ea3438f947a64be
2025-07-07 08:05:40 +00:00
Antoine Clausse
09a534f48b [web] Move scopes permissionsLevel, permissions and hasLintingError to React context (#26607)
* Move `hasLintingError` from scope to react state

* Move `permissionsLevel` to IdeReactContext states

* Get `permissionsLevel` from `useIdeReactContext()`

* Set `permissionsLevel` in mocked `IdeReactProvider`

* Replace `permissions` scope by React state

* Fixup `permission` changes

* Remove redundant type

GitOrigin-RevId: 6203c61f9ac429789624196bf67e508310f4577f
2025-07-07 08:05:36 +00:00
Antoine Clausse
bb5b9afd0e [web] Define loadPropensityScript before use (#26813)
This prevents the bug "ReferenceError: Cannot access uninitialized variable" for users who don't have `window.requestIdleCallback`.

Fixes https://overleaf.sentry.io/issues/6724866295

GitOrigin-RevId: 129dcb72f24dc901ad600253bab7c58673e44321
2025-07-07 08:05:32 +00:00
Antoine Clausse
3681be7a71 [web] Ignore Propensity Network errors (#26840)
* Test the scripts by adding fake ids

* Test Propensity errors

* Don't send Sentry event if `isPropensityNetworkError`

* Revert "Test Propensity errors"

This reverts commit 7052ca20d0bee3bb32b39fb90c473458a4375d7b.

* Revert "Test the scripts by adding fake ids"

This reverts commit 2ac797aadf24359917a10119155c5e41935a7482.

GitOrigin-RevId: 03c1e63e359d41ad83ce1ae5cc1063f1c59d0b4e
2025-07-07 08:05:27 +00:00
roo hutton
2b8a14c4d2 Merge pull request #26822 from overleaf/rh-current-plan-free-personal
Treat 'free - personal' plan as free in current plan widget

GitOrigin-RevId: 271aca9b1c97389357b7b7d107ed838ebbcada40
2025-07-07 08:05:23 +00:00
roo hutton
a7e3ce67ea Merge pull request #26809 from overleaf/rh-email-already-registered
Update 'email already registered' text

GitOrigin-RevId: aa8b7d0f83549f22a721f6e41a4a6cd51e287251
2025-07-07 08:05:19 +00:00
roo hutton
425344b40b Merge pull request #26806 from overleaf/rh-friendly-group-name-dash
Use friendly group plan name in project dash tooltip

GitOrigin-RevId: bb4e763c2fe0b8cb5d2f8ac0adf2a8cd956ddd0c
2025-07-07 08:05:14 +00:00
Eric Mc Sween
cbe96f21cb Merge pull request #26794 from overleaf/em-subscription-index
Add an index on recurlySubscription_id

GitOrigin-RevId: 06c20df8e94e4aebeb0f49acec5babad0f1c4031
2025-07-04 08:06:04 +00:00
Mathias Jakobsen
4e40f24a9e Merge pull request #26631 from overleaf/mj-tooltip-labs-new-survey
[web] Editor redesign: Add tooltip for filling out new survey

GitOrigin-RevId: 432201b6fbff085fcc8ccdeb70c3056043b50422
2025-07-04 08:06:00 +00:00
roo hutton
1b02a26d1f Merge pull request #26799 from overleaf/rh-resolve-deleted-email
Clear loading state after deleting email address

GitOrigin-RevId: 7422a7e223ba430459afa862f10c2b2fd9038306
2025-07-04 08:05:39 +00:00
roo hutton
8cd8d8239b Merge pull request #26779 from overleaf/rh-email-confirmation-logo
Use green OL logo in Interstitial and ODC components

GitOrigin-RevId: 8fee3f0758e22c4ebaea7d0cd01a408c16380a98
2025-07-04 08:05:35 +00:00
roo hutton
10b6f82677 Merge pull request #26764 from overleaf/rh-department-autocomplete
Use department institutions when adding email

GitOrigin-RevId: d82df795428f8545f22a64b55986d2bf5fff0037
2025-07-04 08:05:31 +00:00
Rebeka Dekany
b7032e925f Storybook for the Modal component (#26798)
GitOrigin-RevId: 679935722a8b8a96c55f60be16c0ac34f6e6fbcc
2025-07-04 08:05:26 +00:00
Mathias Jakobsen
9de32e1570 Merge pull request #26761 from overleaf/mj-mendeley-unselect-group
[web] Unify group selection for reference managers

GitOrigin-RevId: 606032624f60ed1c1aa14da237531d1277e94eab
2025-07-04 08:05:15 +00:00
Mathias Jakobsen
e660718c63 Merge pull request #26769 from overleaf/mj-review-mode-switch-focus
[web] Focus editor after changing reviewer mode

GitOrigin-RevId: d19ef178221579894620c5fd204f45c893c126ae
2025-07-04 08:05:08 +00:00
Brian Gough
d701b8ff9b Merge pull request #26783 from overleaf/bg-server-ce-ignore-mongo-check-failures
allow skipping checks requiring mongo admin privileges in check-mongodb script

GitOrigin-RevId: 0c7157a153457a97c92ea3eb5e8c2a4de7971bf6
2025-07-04 08:05:03 +00:00
Andrew Rumble
f5038b5de3 Switch eslint-plugin-n for eslint-plugin-node
GitOrigin-RevId: eec3cf3836556a5c035b1339548c724ab3cd0c43
2025-07-04 08:04:56 +00:00
Andrew Rumble
381a106b46 Remove @types/workerpool
This is a stub

GitOrigin-RevId: de776c11044c42bb191424f1d614442da22c3197
2025-07-04 08:04:51 +00:00
Andrew Rumble
90226043c7 Remove @types/react-bootstrap
GitOrigin-RevId: 0a410b82540b2b11bc4930753dbd650937ebba1e
2025-07-04 08:04:46 +00:00
Kristina
a74c0abdf5 Merge pull request #26793 from overleaf/mf-add-missing-public-key-on-purchase-addon
[web] Add missing publicKey to purchase add-on flow when user need to authenticate their payment via 3ds secure flow

GitOrigin-RevId: cc330cb8dad501479bbb3c5c5b4fc32ef9d36921
2025-07-03 08:06:25 +00:00
Kristina
4eee7cd6ef [web] rm annual-prices-monthly-rates split test (#26727)
* [web] rm annual-prices-monthly-rates split test

- rm monthly rates treatment
- rm unused translations
- rm unused supporting functions
- rm unused styles

GitOrigin-RevId: 5901853245cd9b01ee9e4774154d29ae8f5fcae5
2025-07-03 08:06:13 +00:00
Kristina
3f1a930046 [web] make SubscriptionController.cancelSubscription return a status (#26734)
* [web] make SubscriptionController.cancelSubscription return a status
* [web] update acceptance test to match cancel subscription behavior

GitOrigin-RevId: 507809dcb7fa645c2a69e38cdf4a9e3f736622e1
2025-07-03 08:06:09 +00:00
Alf Eaton
97863f62ca Upgrade TypeScript to 5.8.3 (#24900)
GitOrigin-RevId: 80937de3dde14e21e02af2ecb93350b1fedafc82
2025-07-03 08:05:57 +00:00
Alf Eaton
58303de9f4 Enable full project search in Community Edition and Server Pro (#25753)
GitOrigin-RevId: 1def9c3e190c907d41b7f822831e12c8609e9c7c
2025-07-03 08:05:52 +00:00
Alf Eaton
06153de0aa Fix Add Comment observer disconnect (#26565)
GitOrigin-RevId: bb84aa25d744a9b035a70c877c934156c2675cbd
2025-07-03 08:05:47 +00:00
Alf Eaton
d8d53f76ca Avoid highlighting the focused tracked change (#26681)
GitOrigin-RevId: fcc47f9d23ae870e781bb0f772e2604e630cf292
2025-07-03 08:05:43 +00:00
Alexandre Bourdin
d55cb6af5e Merge pull request #26699 from overleaf/ab-survey-exclude-labs-users-option
Add an option to hide a survey from Labs users

GitOrigin-RevId: d6f87bb31221d8db38f8506afa7cc3313ad235ce
2025-07-03 08:05:31 +00:00
Alexandre Bourdin
36c4c65609 Merge pull request #26683 from overleaf/ab-update-survey-form
Update survey form and preview + support custom button CTA

GitOrigin-RevId: 2b519ab1da1c8e7897b3135956f80619f4e901b4
2025-07-03 08:05:26 +00:00
Alexandre Bourdin
75d443934f Merge pull request #26674 from overleaf/ab-fix-stacking-tooltips
Lower default delayHide for tooltips to prevent stacking

GitOrigin-RevId: e13fa28f495e1b79aa552a236e1c9d161ab2ee0c
2025-07-03 08:05:22 +00:00
Domagoj Kriskovic
c538091fa8 Add script to check and fix duplicate collaborators in projects (#26572)
* [web] Add script to check and fix duplicate collaborators in projects

* use batchedUpdate

* project-id param and BATCH_RANGE_START,

GitOrigin-RevId: 451549eaff255dfae3e55515786d7a68184d557f
2025-07-03 08:05:17 +00:00
Andrew Rumble
747224ac10 Remove code that checks for index.js (now that we don't have any of these)
GitOrigin-RevId: c7ece8f01d1e8318ffe461e9ebe2cf0ed1b040ac
2025-07-03 08:05:12 +00:00
Andrew Rumble
af0c0e5bcd Convert server-ce-scripts index file to ES modules
GitOrigin-RevId: 5edfa16b4a77471f340c8bbc784a3833cfcaf490
2025-07-03 08:05:08 +00:00
Jakob Ackermann
7c92e0719c [web] small tweaks for display of deleted projects in admin panel (#26747)
* [web] display project expiry date and badge

Co-authored-by: Alex Bourdin <alex.bourdin@overleaf.com>

* [web] redirect admins to deleted project page

* Expiration badge tweaks

* [web] fix frontend tests

---------

Co-authored-by: Alex Bourdin <alex.bourdin@overleaf.com>
GitOrigin-RevId: 42dafb5e4e3e781c87fa26092ea9b3400f471bb8
2025-07-03 08:05:03 +00:00
Antoine Clausse
40136785dd [web] Move pdf.* scopes to react states (#26599)
* Move `pdf.logEntryAnnotations` to react state

* Remove unused scope `pdf.downloadUrl`

* Remove unused scope `pdf.url`

* Move `pdf.uncompiled` to react state

* Move `pdf.logEntries` to react state

* Remove `pdf` from `mockScope`

* Fix test: "renders annotations in the gutter"

GitOrigin-RevId: bf1d0ec30cc0ffcc1177871651483c296ed08baf
2025-07-03 08:04:58 +00:00
Jakob Ackermann
67342e9c33 [terraform] clsi: add pre-emp C2D capacity in zone b (#26755)
GitOrigin-RevId: aa52dec1f7135f53f8c887199c1d1e4e31ef70ff
2025-07-03 08:04:53 +00:00
Tim Down
ebb2cff2af Merge pull request #26697 from overleaf/td-custom-logo-sp
Restore custom logo feature on SP project dashboard

GitOrigin-RevId: c3ceafa8756968bfbb92f3fca22889e11a39dc40
2025-07-02 08:06:01 +00:00
Tim Down
affd1bea49 Merge pull request #26586 from overleaf/td-file-view-error-reset
Reset file view loading and error state when switching between files

GitOrigin-RevId: 44be9bf71fe9541ed78db3421bf356997850e6ec
2025-07-02 08:05:57 +00:00
Tim Down
904fac958d Merge pull request #26326 from overleaf/td-clean-up-scope-store
Create separate window.overleaf.unstable.store based on React context values

GitOrigin-RevId: 68f070a6fc5e2965a82720024d91b16fa622b28b
2025-07-02 08:05:53 +00:00
Rebeka Dekany
dc97da1276 Add accessible names to the editor editing field (#26678)
GitOrigin-RevId: 2ebed9db517c288450230675ae038d0cc3260a61
2025-07-02 08:05:25 +00:00
Rebeka Dekany
6a56c64d9a Use long month date format (#26666)
GitOrigin-RevId: 8a52bca6e13087f43d14ed1caffb7709ccee4e02
2025-07-02 08:05:17 +00:00
Rebeka Dekany
79e5a884f5 Use meta tags for user info and refactor syntax for conditional classes (#26617)
* Use meta tags for user info data

* Remove Back button

* Refactor syntax for conditional classes

* Inline meta tags

* Keep "Please go back and try again" text

* Shorthand classname

GitOrigin-RevId: 3b78bff04b4fb8dc7fdecf5b663d2a4f64c3218b
2025-07-02 08:05:07 +00:00
roo hutton
2a9d3bb168 Merge pull request #26566 from overleaf/rh-cio-event-segmentation
Include customer.io segmentation in recurly/stripe subscription events

GitOrigin-RevId: 54483e17eec5251ac7871d43a3aa1e074dcfe98d
2025-07-01 08:07:02 +00:00
Mathias Jakobsen
28c227157e Merge pull request #26616 from overleaf/mj-tooltip-labs-disabled-nudge
[web] Add nudge tooltip to try redesigned editor again

GitOrigin-RevId: 1db104adeee2225f24dd76df141daf145b6ec582
2025-07-01 08:06:37 +00:00
Andrew Rumble
fe5d6ddf5c Upgrade cross-env
The breaking changes here are just for node version for the most part.
The one other breaking change has a workaround and shouldn't affect us
anyway.

GitOrigin-RevId: beb192a38cfc04f6b321e5ab44770a9a64110c30
2025-07-01 08:05:48 +00:00
Andrew Rumble
8c8f4177d9 Remove unneeded overrides and pin remaining ones
GitOrigin-RevId: fff3a067728e313d0b3e7755c926e1eeba6562f6
2025-07-01 08:05:42 +00:00
Kristina
ffb7f23dfd Merge pull request #26661 from overleaf/kh-support-3ds-for-stripe-us
[web] support 3DS for Stripe US

GitOrigin-RevId: b798b59601f3fb0df54afbcfb19434fbb0b38cdf
2025-06-30 08:06:07 +00:00
Kristina
f7a68cb503 Merge pull request #26641 from overleaf/kh-use-stripe-us-client
[web] use Stripe US client

GitOrigin-RevId: 9b99ba8c7ac900c528526cf7e18fec48761e0091
2025-06-30 08:06:02 +00:00
Kristina
3bdc8316e9 Merge pull request #26639 from overleaf/kh-support-stripe-us
[web] support regional Stripe accounts

GitOrigin-RevId: d414d310d8db495635d8e0d3b057e3f56b2f044e
2025-06-30 08:05:57 +00:00
Antoine Clausse
00d5d879c5 [web] Add third-party tracking Propensity (#26638)
* Rename `suppressGoogleAnalytics` to `suppressAnalytics`

* Add Propensity script

* Add LinkedIn Insight Tag script

* Version the cookie to prevent adding unconsented tracking

* Move tracking loaders to Typescript, insert them in foot_scripts.pug

* Show the cookie-banner when tracking other than GA is set

* Revert `oa` cookie versioning

* Remove `async` from propensity script

* Use shared tracking loader for Hotjar, LinkedIn, and Propensity

* Reusable `insertScript`

* Remove tracking-linkedin

* Test the scripts by adding fake ids

* Revert "Test the scripts by adding fake ids"

This reverts commit 50759bb6b40fd2684d1b967d83dd71e8517c3de9.

GitOrigin-RevId: 2a7b36bfc70ac1fc983f837dd4693a19a385cbc6
2025-06-30 08:05:52 +00:00
Eric Mc Sween
735cc2272f Merge pull request #26505 from overleaf/em-persist-buffer-batch
Persist Redis buffer in batches

GitOrigin-RevId: 1de22807dae3554b3274ec103783b0868b1439d9
2025-06-30 08:05:25 +00:00
Eric Mc Sween
a38eefd2ab Merge pull request #26559 from overleaf/em-redis-buffer-delete
Delete project from redis buffer when expiring

GitOrigin-RevId: 66c48adc388a4a4e0b1b54b581dc945a38a41356
2025-06-30 08:05:20 +00:00
Domagoj Kriskovic
04e026904f Hide reviewer options for community edition (#25944)
GitOrigin-RevId: 7eba3d193e3a0ab37006cb42dd945ba40703136f
2025-06-27 08:56:35 +00:00
roo hutton
6d7b13ac18 Merge pull request #26349 from overleaf/rh-cio-dashboard-assignment
Assign customer.io split test on projects dashboard

GitOrigin-RevId: 78a21bce31262db15f9701abc0599b44b9023ad2
2025-06-27 08:56:30 +00:00
Rebeka Dekany
1950585514 Improve selectors to reduce flaky E2E tests (#26413)
* Use the leadingIcon prop instead of spacing

* Remove duplicated ID

* Make the alt text to be empty since image is decorative

* Make switcher input visually hidden

The switcher's input previously used 'pointer-events: none', which prevented proper interaction in the test. It replaces that hack.

* Add accessibilityLabel to the info icon that is actually a clickable link

* Use more specific selectors

* It should display

* Use more specific selectors

* Use more specific selectors

GitOrigin-RevId: a555d96cf972d06dd5432f44a23b02355cedcd94
2025-06-27 07:34:51 +00:00
Rebeka Dekany
99e580047c Improve green link colour contrast on the marketing pages (#26461)
* Fix visited link colour

* Udpdate green link colors for the marketing pages

* Use the semantic color variables

GitOrigin-RevId: c53240cbd6f3608031d6e98db8203fe7bb414a9b
2025-06-27 07:34:46 +00:00
M Fahru
6965618c34 Merge pull request #26605 from overleaf/mf-remove-for-teaching-and-overleaf-advisor-program
[web] Remove both "For teaching" and "Overleaf advisor programme" from our website navigation and pages

GitOrigin-RevId: 3189398e3f2fa9b19e828daeb890d89a336058b0
2025-06-27 07:34:41 +00:00
Domagoj Kriskovic
3b65a674d0 Allow switching reviewing mode for anonymous editors (#26426)
* Revert "Remove reference to track changes ofForGuests"

This reverts commit 675f3864e4bf0a07d24848223814768ab50bfd9b.

* handle track changes for guests

* only send on_for_guests

* update test

GitOrigin-RevId: 15308f0904b26d2ea6a2e57b3852cd2a9b3c886d
2025-06-26 08:05:43 +00:00
Mathias Jakobsen
13d3d0c552 Merge pull request #26269 from overleaf/ae-use-debounce-types
Remove JSDoc types from useDebounce

GitOrigin-RevId: d0504076aab4af94cd03c5f2a98853535979012a
2025-06-26 08:05:31 +00:00
Mathias Jakobsen
169e37cf31 Merge pull request #26567 from overleaf/ae-modal-onconfirm
Remove onConfirm from modal props

GitOrigin-RevId: 96c6456a0e893aeb544f346c0de3cb2c207f40d4
2025-06-26 08:05:23 +00:00
Mathias Jakobsen
77d5c8fa64 Merge pull request #26555 from overleaf/dp-error-logs-header-tweaks
Small fixes to new error log entry headers

GitOrigin-RevId: 1ed2fcc7ce1210b3bf4e330c079ba6d5166580d6
2025-06-26 08:05:18 +00:00
Mathias Jakobsen
9d267f0803 Merge pull request #26499 from overleaf/dp-pdf-couldnt-compile
Update handling of "suggest fix" in new editor

GitOrigin-RevId: 80d6fa479bc1d12d7e5b82a8c504830c9f4db182
2025-06-26 08:05:14 +00:00
Mathias Jakobsen
4fd9c6fd18 Merge pull request #26440 from overleaf/mj-ide-co-branding-submit
[web] Editor redesign: Add co-branded submit button to toolbar

GitOrigin-RevId: 45f7ba93de8b28868d88a4ad913f6543e0f7e0a6
2025-06-26 08:05:10 +00:00
Mathias Jakobsen
e562e3d1bf Merge pull request #26399 from overleaf/mj-ide-co-branding
[web] Editor redesign: Add cobranding logo to toolbar

GitOrigin-RevId: 9f9138bb4ebc2cc7d39e38f8bee77c7fbde8b781
2025-06-26 08:05:06 +00:00
Jakob Ackermann
73ae6f480f [web] change status page URL to HTTPS everywhere (#26587)
* [web] change status page URL to HTTPS everywhere

Also open all links to the status page or admin email in a new tab.

* [server-ce] explicit protocol matching

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

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: d7d12eef4efc737c5d70fc969c862acae9faf14c
2025-06-26 08:04:59 +00:00
Jakob Ackermann
886bad1071 [web] remove runtime migration for fixing collaborator lists on projects (#26581)
GitOrigin-RevId: f6a4c142e010e168c79b59cb96dddb147093d4a0
2025-06-26 08:04:54 +00:00
Jakob Ackermann
87de73333a Merge pull request #26575 from overleaf/jpa-archived-state
[web] remove runtime migration for project.archived/trashed state

GitOrigin-RevId: 69064878f3dfdcde3727a4e3eb555deb75c70588
2025-06-26 08:04:50 +00:00
Jakob Ackermann
19980b41b8 [web] switch migrations for fixing dates to batchedUpdate (#26582)
* [web] switch migration for fixing confirmedAt dates to batchedUpdate

* [web] switch migration for fixing assignedAt dates to batchedUpdate

* [web] make eslint happy

GitOrigin-RevId: d898d28dc2aa1084e8d3af20b98f49e3fda8a1c6
2025-06-26 08:04:46 +00:00
Jakob Ackermann
1543f0a53e Merge pull request #26580 from overleaf/jpa-fix-null-array
[web] add migration for fixing collaborator arrays on projects

GitOrigin-RevId: 73178b56501025bf23f463e8f9822fc33ecaaea0
2025-06-26 08:04:42 +00:00
Andrew Rumble
12a1a85a2f Make sure req.capabilitySet is defined
GitOrigin-RevId: 408dcb3463884d1bbdc56f409121728d1275f501
2025-06-25 08:07:12 +00:00
Andrew Rumble
4550cfc6a0 Use a context function to replicate the behaviour of done
This is slightly different than done because done would resolve but I
think it is safer for the purpose done was being used in these changes.

GitOrigin-RevId: e60a912b82a8e544444a2776ea6aab7d2ea83bdb
2025-06-25 08:07:08 +00:00
Andrew Rumble
d3d5674436 Remove resolve when passed as next
GitOrigin-RevId: 071ce6a4cab210f2db0d278aeb08d31fbba4cbfc
2025-06-25 08:07:03 +00:00
Andrew Rumble
e76a8ff267 Convert return new Promise to await new Promise
GitOrigin-RevId: 49404748cc90cb7bdef0460f7e9837196f81cae8
2025-06-25 08:06:59 +00:00
Liangjun Song
c7ae851d39 Merge pull request #26519 from overleaf/ls-group-plan-upgrade-in-stripe
Support group plan upgrade in Stripe

GitOrigin-RevId: 44ae35c6221bf96a0b91526178d6ab1aff80f2a3
2025-06-25 08:06:54 +00:00
Andrew Rumble
903277c222 Handle rangeHashes
GitOrigin-RevId: 9b9a67d8e45f17e948d003aed33cef6128a25744
2025-06-25 08:06:50 +00:00
Andrew Rumble
34b674aa6f Handle errors when converting lazyfiles to eagerfiles
GitOrigin-RevId: 6ada48e2f2b7ffee9c8560856436dc5e2076099d
2025-06-25 08:06:45 +00:00
Andrew Rumble
745043ca92 Add more detail for the modes
GitOrigin-RevId: 44b63b76b1edb8bfb78049c9c8560934e340ef96
2025-06-25 08:06:41 +00:00
Andrew Rumble
6ed488cc65 Change raw mode to just fetch all raw content from backup
GitOrigin-RevId: 397060d63c824dbe688d187312dd78d1f3e4bf5d
2025-06-25 08:06:36 +00:00
Andrew Rumble
f2b0a982ac Use BackupBlobStore to get chunk content
GitOrigin-RevId: 91de53101ea289b43bdb08352aecc09ae89d0f74
2025-06-25 08:06:32 +00:00
Andrew Rumble
797f29d40a Handle errors when processing command line arguments
GitOrigin-RevId: 7c1f011e705d6e4b6fbf0afee3dc3aab749f0de4
2025-06-25 08:06:27 +00:00
Andrew Rumble
b42b0a8d3e Make file related BlobStore type more specific
GitOrigin-RevId: d5e70b13cbdfe1faf133eb4c040b0bbf6fa47dea
2025-06-25 08:06:23 +00:00
Andrew Rumble
392037efd6 Improve types and export functions we want to use
GitOrigin-RevId: 25fd93214f88c425bee23d43de113cf754f89524
2025-06-25 08:06:18 +00:00
Andrew Rumble
3600aa4b75 Add script for restoring projects from backup
GitOrigin-RevId: b639d74989afa17638bbcba0f8ee34c978fcd5d9
2025-06-25 08:06:14 +00:00
Andrew Rumble
25a911d4cb Export loadChunk from verifier to allow code reuse
GitOrigin-RevId: fc5f2de50583ab2469e8ab3c86776c55501ba2e2
2025-06-25 08:06:09 +00:00
Andrew Rumble
4157f8ca00 Add a list directory method to the S3 persistor
GitOrigin-RevId: 6ecff3eb457dc2168ca49ff9409bb09fa932781c
2025-06-25 08:06:05 +00:00
Domagoj Kriskovic
48379a9d86 Refactor AI assist notification logic in project list page (#26613)
GitOrigin-RevId: 849ab62b814f321452e5d6e53d968943cec60417
2025-06-25 08:06:00 +00:00
roo hutton
50b5aa33b1 Merge pull request #26495 from overleaf/rh-prevent-pause-cancel-last-term
Redirect to support if trying to cancel in last month of pause

GitOrigin-RevId: d92f84c79482bb7c409f4e3070337b0ac958756a
2025-06-25 08:05:42 +00:00
Domagoj Kriskovic
fda96b2fdf Add promo notifications for AI assist (#26514)
* Add promo notifications for AI assist

* format pug

GitOrigin-RevId: 8895145e1e5dcd8e28f29bf2601a4bd21456a407
2025-06-25 08:05:37 +00:00
Lucie Germain
f53a13ae1e Merge pull request #26604 from overleaf/mf-resync-recurly-state-single-subscription
Add script to sync recurlyStatus.state for a single subscriptionId

GitOrigin-RevId: 69af89a44b4043d92853862baee65d8b7f84b88f
2025-06-25 08:05:29 +00:00
Brian Gough
f0c63b6ccd Merge pull request #26175 from overleaf/bg-fix-logging-in-project-deletion
test logging in user and project deletion

GitOrigin-RevId: ea51082aeada81f8e7ae356966cda0f57f7cd072
2025-06-25 08:05:24 +00:00
Antoine Clausse
e6d09ca748 [web] Fix Editor Stories (#26535)
* Fix storybook stories

* Add `chat` to `ol-capabilities` in Storybook

GitOrigin-RevId: 0816c82170ebc3bfe9ca2d7f02766364c693365a
2025-06-25 08:05:20 +00:00
Antoine Clausse
9e189e7d59 [web] Move UI scope to React states (#26403)
* Move `ui.view` to setState

* Move `openFile` to setState

* Move `ui.leftMenuShown` to setState

* Move `ui.miniReviewPanelVisible` to setState

* Move `ui.pdfLayout` to setState

* Move `ui.chatOpen` to setState

* Move `ui.reviewPanelOpen` to setState

* Cleanup: remove layout-context-adapter and imports

* Replace `ui` scope by mocked `LayoutProvider` in tests

* Update test

* Remove unnecessary `scopeStore.set('ui.chatOpen' ...`

GitOrigin-RevId: 81578bfdc958239eac492905f714a6074c81d0f5
2025-06-25 08:05:15 +00:00
Tim Down
ab140f578d Merge pull request #26244 from overleaf/td-limit-browser-translate-ide
Prevent browser translation of stuff that shouldn't be translated in IDE page

GitOrigin-RevId: 96a75b51c3c8efc4cbcec7eb17d9e331a03e2c96
2025-06-24 08:05:32 +00:00
Tim Down
de1ab31bfd Merge pull request #26469 from overleaf/td-bs5-sp-ce-register
Migrate SP/CE registration page to Bootstrap 5

GitOrigin-RevId: 5e99a6a091d725ea3ab54e7cf6a4d1ea4f6bfab6
2025-06-24 08:05:28 +00:00
Antoine Clausse
2d5a3efc12 [web] Add compilation indicator favicon (#25990)
* Import changes from Hackathon

https://github.com/overleaf/internal/pull/24501

* Update compile status: allow errors

* Update favicons. Use the ones from Figma

* Optimize and reuse path from favicon.svg

* Clear status favicon after 5s on active tab

* Rename hook from useCompileNotification to useStatusFavicon

* Add tests

* Revert changes to favicon.svg

* Query favicon on document.head

GitOrigin-RevId: 3972b1981abaf6c80273e0ed5b1bc05eb51bd689
2025-06-24 08:05:15 +00:00
Antoine Clausse
46555d27b0 [web] Add window. prefix to globals and add no-restricted-globals rule (#26422)
* Add `no-restricted-globals` eslint rule

Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>

* Change `self` to `window.self`

* Change `innerWidth` to `window.innerWidth`

* Change `confirm` to `window.confirm`

* Change `location` to `window.location`

* Use `location` from `useLocation` hook

* Use location from useLocation hook
Co-authored-by: Antoine <antoine.clausse@overleaf.com>

* Disable no-restricted-globals eslint rule for use of 'self'

* Use `confusing-browser-globals` from npm

* Prevent unexpected globals in workers, using `no-undef`

* Use `self` as a global in workers

* Use unexpected globals in workers, using `no-restricted-globals` in workers

---------

Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>
Co-authored-by: Rebeka <o.dekany@gmail.com>
GitOrigin-RevId: 526986799f5f2edf53c7d978fa85c1e98189565f
2025-06-24 08:05:10 +00:00
Rebeka Dekany
c40ab3234d Prettier for PUG templates (#26170)
* Setup prettier

* Ignore these pug templates by prettier

* Fix typo

* Fix prettier error

* Add prettier-ignore for quoting of event-segmentation attribute

* Manual tab indentation

* Interpolate

* Remove unbuffered if conditional

* Inline event-segmentation objects and remove prettier-ignore rule

* Fix spacing before interpolation

* Source format

* Source format

GitOrigin-RevId: c30e037f5caf8f91efc1bd9e75f81ae533b5a506
2025-06-24 08:05:06 +00:00
Tim Down
19dc71f414 Merge pull request #26456 from overleaf/td-limit-browser-translate-non-react-icons
Prevent browser translation of icons in Pug pages

GitOrigin-RevId: 97e4d3ba70a4c95bed2c9f52e66038911625613d
2025-06-23 08:05:06 +00:00
Miguel Serrano
069e42e763 Merge pull request #26556 from overleaf/add-chat-capability-sp
[web] Populate `chat` capability for CE/SP

GitOrigin-RevId: d9a3a9f6540552ad47b0c937115d0cf6318c49e9
2025-06-20 08:06:00 +00:00
Miguel Serrano
04fa5366ce Merge pull request #26070 from overleaf/msm-disable-dropbox
[web] Disable Dropbox Capability

GitOrigin-RevId: 5f91d2918bf3b88e52f4d27c828a4715f9b88629
2025-06-20 08:05:20 +00:00
David
edf4fdda50 Merge pull request #26491 from overleaf/dp-move-synctex
Move synctex controls lower to account for breadcrumbs in new editor

GitOrigin-RevId: 78ae0f6f1eb1384b8b3014ba4d1a0565ed3fd452
2025-06-20 08:05:16 +00:00
David
6e30a1a32d Merge pull request #26527 from overleaf/dp-errors-notification
Add promo for new error logs

GitOrigin-RevId: 68ce79653484dc018be302d753c572c39864c723
2025-06-20 08:05:11 +00:00
Eric Mc Sween
1042092144 Merge pull request #26547 from overleaf/em-revert-expiry-post
Revert "use POST requests for expiring redis buffer from cron"

GitOrigin-RevId: 95e9fd1be7b73699d6fac24035437d467c273d0a
2025-06-19 08:06:58 +00:00
Eric Mc Sween
150dfd6cba Merge pull request #26539 from overleaf/jpa-post
[history-v1] use POST requests for expiring redis buffer from cron

GitOrigin-RevId: 51c9a25b998e581ed20c0e113bd4989537a1e6ef
2025-06-19 08:06:50 +00:00
Eric Mc Sween
fd9fd9f0e7 Merge pull request #26545 from overleaf/jpa-fix-resync
[history-v1] use mongo projectId for initiating resync

GitOrigin-RevId: f93f2358695782fb222d23ba3720d98724b9a291
2025-06-19 08:06:45 +00:00
Jessica Lawshe
c9174cdecc Merge pull request #25965 from overleaf/jel-admin-ui-use-ukamf-settings
[web] Overleaf admin UI to toggle group SSO using UKAMF settings

GitOrigin-RevId: c4f976d8125c9a8e549c049841f5d7b58edf8192
2025-06-19 08:06:30 +00:00
Jessica Lawshe
a20a0923b7 Merge pull request #26207 from overleaf/jel-group-sso-ukamf-endpoints-tests
[web] Acceptance tests for option to use UKAMF path for group SSO

GitOrigin-RevId: 16d6669083c0e651adea755f1b24926838b0737a
2025-06-19 08:06:25 +00:00
Jessica Lawshe
91a308a62f Merge pull request #25868 from overleaf/jel-group-sso-ukamf-endpoints
[web] Option to use UKAMF path for group SSO

GitOrigin-RevId: 117fca5913682a02e9f8e8442eed13568f6551a1
2025-06-19 08:06:21 +00:00
Eric Mc Sween
7bdc4291fc Merge pull request #26533 from overleaf/jpa-queue
[history-v1] use POST requests for flushing history queues

GitOrigin-RevId: ae87a046a7844b25cc123d08ac6c8d1624608394
2025-06-19 08:06:16 +00:00
Rebeka Dekany
af99f736bd Create bug_report.md (#26525)
GitOrigin-RevId: 3795d1505d58bdbebc3d196e3a7709ba8ac05fd1
2025-06-19 08:06:08 +00:00
Domagoj Kriskovic
3a1ef872cd Check for existing reviewers when adding user to a project (#26463)
GitOrigin-RevId: 935335345461133fb8b08fa95f960f801b8775a7
2025-06-19 08:05:27 +00:00
Jakob Ackermann
4310d3ec88 [docstore] add runtime fix for mismatching comment vs thread ids (#26488)
GitOrigin-RevId: e7cefa88d125a73a26863e6fae8b49530efa2b4e
2025-06-19 08:05:22 +00:00
Jakob Ackermann
adf399fb95 [project-history] add support for resync of history-ot ranges (#26475)
* [project-history] add support for resync of history-ot ranges

* [project-history] avoid compressing sharejs and history-ot upgrades

* [document-updater] improve error message of some assertions

... by migrating the assertions like this:
```diff
-stub.calledWith().should.equal(true)
+stub.should.have.been.calledWith()
```
```diff
-stub.called.should.equal(false)
+stub.should.not.have.been.called
```

* [document-updater] move content field in resyncDocContent

* [document-updater] add support for resync of history-ot ranges

GitOrigin-RevId: e6104686a26934a5f25a8f095cbe00c163fbbaa7
2025-06-19 08:05:18 +00:00
Jakob Ackermann
5b39c76aa8 Merge pull request #26506 from overleaf/em-lazy-string-file-data-store
Fix lazy file data truncation on store()

GitOrigin-RevId: 2316a096e6a365178afbded58351359893a36312
2025-06-19 08:05:13 +00:00
Rebeka Dekany
8423829714 Migrate subscription related pages to Bootstrap 5 (#26372)
* Enable Bootstrap 5 for the subscription error pages

* Override contact modal on the plans page

* Convert AI Assist related styles to CSS

* Extend single layout-website-redesign.pug template for both Bootstrap 3 and 5

* Formatting to tab indentation

* Add the switcher for AI Assist

* Fix translations in heading

GitOrigin-RevId: 54ddc35602831f1ec1fa83c9f67a091eefda7a77
2025-06-19 08:05:05 +00:00
Kristina
cc7c01132b Merge pull request #26193 from overleaf/ls-consider-group-plan-when-get-next-subscription-items
Consider group plan when getting next subscription items

GitOrigin-RevId: cbf05c1a7de9e957739273b865c335807a58d739
2025-06-19 08:04:59 +00:00
Rebeka Dekany
bf8abb3181
Update ISSUE_TEMPLATE.md 2025-06-18 14:20:53 +02:00
Antoine Clausse
494f0a4b1a [web] Rename docRoot_id to docRootId in the frontend code (#26337)
* Rename `rootDoc_id` to `rootDocId` in the frontend

* Update types

* Fix frontend test

GitOrigin-RevId: b755a4ebf7b8c0b8ed800d713bbae8cfcfdd5046
2025-06-18 08:07:05 +00:00
Kristina
0dab9369ee Merge pull request #26434 from overleaf/kh-limit-trial-extentions
[web] limit trial extensions

GitOrigin-RevId: 57973190cdb57a04ce6a2585394bcb38321838f7
2025-06-18 08:07:00 +00:00
Kristina
b15758da97 Merge pull request #26494 from overleaf/kh-fix-trial-transitions
[web] fix upgrades/downgrades while on trial

GitOrigin-RevId: 4076befc5dbbee32b0cf2a4ff99db96a0cf3ad8b
2025-06-18 08:06:55 +00:00
Antoine Clausse
3ba002460e [web] Remove instances of $scope and _ide (#26297)
* Remove `$scope` from `getMockIde`

* Replace `...getMockIde()` by `_id: projectId`

* Simplify stories decorator scope.tsx: less reliance on `window`

* Update helper editor-providers.jsx: pass data instead directly instead of using `window`

* Remove `cleanUpContext`

* Remove unused prop `clsiServerId`

* Update types to reflect unused properties

* Remove comment

* Add `ol-chatEnabled` in Storybook

* Revert moving `getMeta` outside of the component

This causes issues in Storybook

GitOrigin-RevId: dc2558ce814c2d738fb39450c57c104f4419efb8
2025-06-18 08:06:42 +00:00
David
a559cbb590 Merge pull request #26493 from overleaf/dp-raw-logs
Improvements to raw logs log entry ui in new editor

GitOrigin-RevId: 516094fadfa4db7e82431c91b766dbe7e378b4a7
2025-06-18 08:06:33 +00:00
Jessica Lawshe
4648661ce6 Merge pull request #26449 from overleaf/jel-password-reset-err-msg
[web] Fix message check when managed user linked to SSO tries to reset password

GitOrigin-RevId: f271cd38484c48418f60c28eab2c4863d2984313
2025-06-18 08:06:21 +00:00
Eric Mc Sween
f68bf5a69f Merge pull request #26477 from overleaf/em-redis-buffer-resync
Handle invalid content hash when persisting changes

GitOrigin-RevId: 5259190396c8c261cad1abcd5de66314c1e871fb
2025-06-18 08:06:17 +00:00
David
90309f59ae Merge pull request #26471 from overleaf/dp-update-editor-switcher-modal
Add line about new error logs to editor switcher modal

GitOrigin-RevId: 13ca361060ab1e9144c3a3d4ebc1fc487e6a8895
2025-06-18 08:06:08 +00:00
David
89937d9635 Merge pull request #26487 from overleaf/dp-error-log-clickbox
Expand clickable area of log header in new editor

GitOrigin-RevId: dbb24ea84d04b41ce779f0490b34d51f44164f9e
2025-06-18 08:06:03 +00:00
David
3eeee3b983 Merge pull request #26470 from overleaf/dp-labs-survey
Launch new editor redesign labs survey

GitOrigin-RevId: a39b319aecde7fa9a00fb0f7f77814f6a277ab6c
2025-06-18 08:05:58 +00:00
David
4e03e0fbe1 Merge pull request #26468 from overleaf/dp-error-colors
Small style updates to new error logs

GitOrigin-RevId: fdfe7489bc87733b065d08c77353dce9ab940fc2
2025-06-18 08:05:53 +00:00
David
dc252fe772 Merge pull request #26472 from overleaf/dp-full-project-search-shortcut
Add mod-shift-f shortcut to open full-project-search to new editor

GitOrigin-RevId: a843c408cc8bd30228cbb7bc17309f4f9ff355b3
2025-06-18 08:05:48 +00:00
Jakob Ackermann
30143ead97 [web] migration fixes (#26443)
* [web] fix typo in ESM migration of a db migration

* [web] migrate old migration to ESM

* [web] use batchedUpdate for bulk updates in old migrations

GitOrigin-RevId: a984f785c577c2ac4125c947b8a3efffa57e1eb7
2025-06-18 08:05:44 +00:00
Jakob Ackermann
982f647845 [web] copy duplicated comment id into id field (#26481)
GitOrigin-RevId: accd6d9dc0165ff2cc9f8edd28c42d38b76ba909
2025-06-18 08:05:39 +00:00
David
39b4aed85f Merge pull request #26479 from overleaf/dp-synctex
Add synctex buttons to new editor

GitOrigin-RevId: 7790c848f96d9b12d95f2f01c5048da2ea17d8b4
2025-06-18 08:05:33 +00:00
Eric Mc Sween
6f461564d5 Merge pull request #26367 from overleaf/em-history-ot-undo
Fixes to TextOperation invert algorithm

GitOrigin-RevId: dd655660f6ecad7b6e9b2d4435dc9a5364d0fde2
2025-06-17 08:06:11 +00:00
Jakob Ackermann
0c2f79b0b8 [misc] make log level configurable when running tests in ESM services (#26465)
GitOrigin-RevId: 153fa99731b2fbff6dfd5edc80ce3e8acf9fc5ce
2025-06-17 08:06:04 +00:00
Eric Mc Sween
0f330ef6a3 Merge pull request #26393 from overleaf/bg-history-redis-gradual-rollout
add gradual rollout mechanism for history-v1 rollout

GitOrigin-RevId: 5fa69f5c3874bd5df1f31fdd3115e4ba6a0dab51
2025-06-17 08:06:00 +00:00
Eric Mc Sween
9cb4ef4d7d Merge pull request #26353 from overleaf/bg-history-redis-extend-persist-worker
extend persist worker to make parallel requests

GitOrigin-RevId: 8def7d5a8b5c9fcbe5fe45ac8f3ace503d31877a
2025-06-17 08:05:55 +00:00
Kristina
6b38336c7b Merge pull request #26397 from overleaf/kh-use-new-price-lookups
[web] use new price lookup keys

GitOrigin-RevId: f4c077d946100862aaea0288d5035a34d6188e83
2025-06-17 08:05:51 +00:00
Rebeka Dekany
9aa261eaf6 Hide tooltips on the Esc key (#26305)
* Hide the tooltip when Esc key is pressed

* Simplify ActionsDropdown

* Rename to tooltipDescription

* Use OLTooltip instead of Tooltip

GitOrigin-RevId: ee27cde2735ae3a0de5e37bfb8ab1dd99069742c
2025-06-17 08:05:47 +00:00
David
aa4d8f4925 Merge pull request #26389 from overleaf/dp-last-suggested-fix
Update ui for previous suggested ai fix in new editor

GitOrigin-RevId: 2f4edbcb0614d560bad28f862408ed73d39e988c
2025-06-17 08:05:39 +00:00
David
b6fe6ae062 Merge pull request #26407 from overleaf/dp-review-panel-gap
Allow comments to be positioned at top of review panel in new editor

GitOrigin-RevId: 581bbf85cc54b68b54235123b14b1564ed019e6d
2025-06-17 08:05:35 +00:00
David
b14a131b43 Merge pull request #26398 from overleaf/dp-premium-button
Add upgrade button to new editor toolbar

GitOrigin-RevId: 6c4832ccb6c32e72a842671c35d2315e3b792c15
2025-06-17 08:05:31 +00:00
David
7ca01dc925 Merge pull request #26303 from overleaf/dp-ai-troubleshooting-tip
Update UI of "Start at first error" tip to match designs

GitOrigin-RevId: fd745d1cce7b21847041614af7313768c26b5d08
2025-06-17 08:05:27 +00:00
David
e1a3037ffa Merge pull request #26162 from overleaf/dp-error-logs-ai-2
Update error logs AI UI

GitOrigin-RevId: 6f9783090797e6d7d2fe01178f6945aa364ff4ac
2025-06-17 08:05:22 +00:00
Tim Down
6bde3acc62 Merge pull request #25973 from overleaf/td-restricted-home-link
Use a single link for home link in restricted page

GitOrigin-RevId: 0220116c89845ad7704fb446e41abf99cfff3b45
2025-06-17 08:05:18 +00:00
Tim Down
d9914bf80a Merge pull request #25877 from overleaf/td-limit-browser-translate
Prevent browser translation of stuff that shouldn't be translated in project dashboard

GitOrigin-RevId: aba5d28d368277730d3bdc9aced6b9257cbd7950
2025-06-17 08:05:14 +00:00
Jakob Ackermann
7e9a33841d [project-history] migrate retry_failures script to ESM (#26444)
GitOrigin-RevId: 425e0e6c0a61ef7f8c8c3e07f2d16089f594eb32
2025-06-16 08:07:08 +00:00
Alf Eaton
afe146a620 Sort Storybook stories alphabetically (#26225)
GitOrigin-RevId: d7cf167a67ea24d7095fb27e6090ef735e966536
2025-06-16 08:07:04 +00:00
Jakob Ackermann
c7dd7208fb [document-updater] add flag for checking sync state of a single project (#26433)
GitOrigin-RevId: 504f607c652e59fa1305067f273db849d7923da2
2025-06-16 08:06:59 +00:00
Jakob Ackermann
8b937c91f4 [project-history] fix unit tests after merging multiple PRs (#26442)
GitOrigin-RevId: 9ccbadaa807da2f20010930477724e9370bf103e
2025-06-16 08:06:54 +00:00
Jakob Ackermann
22016ffef9 [clsi] adopt Server Pro env vars for sandboxed compiles (#26430)
GitOrigin-RevId: b7c0d9f4ff37d6cef77694a6a9ea4d50dcb148b2
2025-06-16 08:06:50 +00:00
Andrew Rumble
569e72a1c0 Downgrade outdated-ack message to debugConsole.warn
GitOrigin-RevId: 3537d4e3ee311cafc2956b2a9d3267e8184af48e
2025-06-16 08:06:45 +00:00
Jakob Ackermann
740b1d3f50 [project-history] add script for retrying failures (#26427)
GitOrigin-RevId: 265cec9719825613de01d7f476b20203bbff8d7f
2025-06-16 08:06:41 +00:00
Jakob Ackermann
0aa56fbe2c [project-history] fix callback signature when processing no updates (#26420)
* [project-history] fix tests and cover callback for processing updates

The before setup was hiding that some tests were not doing what the
assertions were expecting.

* [project-history] fix callback signature when processing no updates

GitOrigin-RevId: 4fa14d47b9a1afd998316b0c9024d49760785a47
2025-06-16 08:06:36 +00:00
Jakob Ackermann
6f516b25af [project-history] add metrics for compression of updates (#26307)
* [project-history] add metrics for compression of updates

* [project-history] sample compression metrics

GitOrigin-RevId: 1cd67dc4ec7b44285afb436c62392b464f007f97
2025-06-16 08:06:28 +00:00
Jimmy Domagala-Tang
a1591e8b0c feat: log error for support to investigate, and return 200 to recurly to prevent retries (#26317)
GitOrigin-RevId: 6f71fd4451e950a7bdbe1140a86a78bf8a04b039
2025-06-16 08:06:23 +00:00
Domagoj Kriskovic
b0c5d6fc5a Update font size and spacing in AI assist part of plans page (#26437)
GitOrigin-RevId: 2b0e3b68f73e72ef1024db9c1088d20b973f6245
2025-06-16 08:06:18 +00:00
Rebeka Dekany
0ac2ddd686 Migrate onboarding/bonus/beta program templates to Bootstrap 5 (#26344)
* Migrate the Try Premium for free page to Bootstrap 5

* Migrate the Overleaf Beta Program page to Bootstrap 5

* Fix buttons alignment on smaller screen size

* Migrate the Overleaf Bonus Program page to Bootstrap 5

GitOrigin-RevId: 811db783af6a86ab472aae95e075bfa301786a31
2025-06-16 08:06:14 +00:00
Kristina
53fc78d83e Merge pull request #25771 from overleaf/kh-pass-locale-to-checkout
[web] pass locale and currency to Stripe checkout

GitOrigin-RevId: 410cde4849226a70c5a6b295554d96984f48f9fb
2025-06-16 08:05:51 +00:00
roo hutton
980a8458d4 Merge pull request #26140 from overleaf/rh-cio-sub-status
Use analyticsId as primary identifier in customer.io and support best-subscription property

GitOrigin-RevId: d412f2edbff2e430d7fe3192b8843ad9ac2c226a
2025-06-16 08:05:39 +00:00
Jakob Ackermann
f025f1d0cb [web] let docstore determine a projects comment thread ids (#26364)
* [docstore] add endpoint for getting a projects comment thread ids

* [web] let docstore determine a projects comment thread ids

Also fetch the comment thread ids once when reverting project.

GitOrigin-RevId: c3ebab976821509c9627962e58918f9c6ebb0e1d
2025-06-13 08:08:00 +00:00
MoxAmber
e95b159edd Merge pull request #26395 from overleaf/as-compile-timeout-event-fix
[web] Rename time segmentation value to compileTime to prevent MixPanel errors

GitOrigin-RevId: 70ddfd5091e3f8d98849f09dc9d09adc8c0bf2c7
2025-06-13 08:07:48 +00:00
Davinder Singh
227f035c2e Merge pull request #26358 from overleaf/ds-bs5-customer-story-cern
[B2C] MIgrating CERN customer story page to Bootstrap 5

GitOrigin-RevId: dcffa5117c66438caeef3793e7f6a87055371f91
2025-06-13 08:07:40 +00:00
Davinder Singh
08ea0f270b Merge pull request #26268 from overleaf/ds-cms-bs5-customer-story-layout-2
[B2C] Bootstrap 5 migration of Customer story layout

GitOrigin-RevId: 6156d69f24be4818e68d044e44539ec3fc8b2595
2025-06-13 08:07:35 +00:00
Domagoj Kriskovic
fd1926a1c8 Preserve resolve state in history on file restore (#26302)
* Preserve resolve state in history when doing a restore

* added comment why is resovled property deleted

GitOrigin-RevId: fb1011cf98a658b302c6eef1da83fb1006bb2052
2025-06-13 08:07:26 +00:00
Tim Down
9c287ba36c Merge pull request #26390 from overleaf/td-logged-out-invite-layout
Use correct layout for logged-out user invite page

GitOrigin-RevId: f8b95e90068b3b18d937f56a4e5edba59e39d111
2025-06-13 08:07:21 +00:00
Tim Down
ef7cc20694 Merge pull request #26274 from overleaf/td-account-enrollment-error-fix
Prevent front-end errors in account enrollment page

GitOrigin-RevId: d05e295f70a8e9cb6d5e0da6800d7eaf4468cb39
2025-06-13 08:07:16 +00:00
Tim Down
cc21f42a14 Merge pull request #26023 from overleaf/td-remove-components-from-includes
Remove imports of react-bootstrap components from marketing pages

GitOrigin-RevId: 12a3446cc42f1438a52f49a893e53a02a1b5be4f
2025-06-13 08:07:12 +00:00
Antoine Clausse
5c7bef31ca [web] Fix donut chart in non-commons uni portal pages (#26379)
* Revert me: show fake data for donut chart

* Re-add `nvd3` styles in BS3

* Revert "Revert me: show fake data for donut chart"

This reverts commit b93e2aa5b0838571a5c4d96e85483b3d029038c7.

* Prettierignore nvd3.less

GitOrigin-RevId: 90702447244e7a2ddac495e9203c16c6bfc17bb0
2025-06-13 08:07:07 +00:00
Domagoj Kriskovic
fc050983c9 AI assist section for plans page (#26187)
* AI assist plans section

* fix merge issues, add tests

* translate img alt

* startInterval only if there are images found

* update casing for TeXGPT

* update mobile price font

* small design tweaks

GitOrigin-RevId: 87d993bb5da1929f99ab3b4721316961d78a46f5
2025-06-13 08:07:02 +00:00
Domagoj Kriskovic
92626393ec Check if AI assist standalone plan is used in shouldPlanChangeAtTermEnd (#26272)
GitOrigin-RevId: d6737ea28071d565109dba695876b6fbf3f5daa2
2025-06-13 08:06:57 +00:00
Domagoj Kriskovic
ce00213c4a Add permissions checks for AI assist addon purchase (#26355)
* Add permissions checks for AI assist when trying to buy the addon

* more explicit check for DuplicateAddOnError

* remove useCapabilities()

GitOrigin-RevId: 1979e27410981e2ef020cecc731e228483d3315a
2025-06-13 08:06:52 +00:00
Brian Gough
92731848ac Merge pull request #26352 from overleaf/bg-history-redis-add-flush-endpoint
add flush endpoint to history-v1

GitOrigin-RevId: b2ca60f7d040459f9c542e4e87147b9eecc9f596
2025-06-13 08:06:37 +00:00
Brian Gough
2f44a4eb5a Merge pull request #26351 from overleaf/bg-history-redis-convert-persist-worker-to-esm
history redis convert persist worker to esm

GitOrigin-RevId: edcbac6e3f1d3dde3fa8239378995f3ff3afcfdd
2025-06-13 08:06:32 +00:00
Brian Gough
d189c91c59 Merge pull request #26378 from overleaf/bg-history-redis-fix-misc
add type check to scan.js

GitOrigin-RevId: a306ec841b8801a2a5eab8c35f246180206f7231
2025-06-13 08:06:27 +00:00
Brian Gough
eed6a982f7 Merge pull request #26377 from overleaf/bg-history-redis-remove-unwanted-parameters
remove unwanted parameters in queueChangesFake and queueChangesFakeOnlyIfExists functions

GitOrigin-RevId: 5946cd1f81db7076eb545b5a0aca28b81fa19be4
2025-06-13 08:06:22 +00:00
Jakob Ackermann
ab0199f238 [misc] migrate remaining references to our GCR repositories to AR (#26370)
* [misc] migrate remaining references to our GCR repositories to AR

* [server-ce] fix retagging of texlive images

GitOrigin-RevId: 81f955ad4c4486ad42b29cbd6bcc9d5ef4b1a432
2025-06-13 08:06:18 +00:00
MoxAmber
0a79ac75ff Merge pull request #26312 from overleaf/as-10s-compile-timeout
[web] 10s Compile Timeout: Warning Phase

GitOrigin-RevId: 749baad646fa7ef0d3a8e14fbbb5edec7b227ed3
2025-06-13 08:06:13 +00:00
ilkin-overleaf
d49a9e9e80 Merge pull request #25843 from overleaf/ii-managed-users-make-unmanaged-terminate-subscription
[web] Terminate subscription when joining a managed group

GitOrigin-RevId: 2a4f2fd57e1319970780043a633fb8027593e5d4
2025-06-13 08:06:08 +00:00
ilkin-overleaf
0fc229dfc0 Merge pull request #25729 from overleaf/ii-managed-users-make-unmanaged-explanations-copy
[web] Managed users copy changes

GitOrigin-RevId: 2cbcdc80eafb2257302d11c179f7efd8742a3945
2025-06-13 08:06:03 +00:00
Kristina
02e7ac52e2 Merge pull request #26208 from overleaf/kh-extend-trial
[web] support extending trials for Stripe

GitOrigin-RevId: ae7d863f61ce5ec463509c590199c6e583300e8f
2025-06-13 08:05:55 +00:00
ilkin-overleaf
cfc6ff0759 Merge pull request #25983 from overleaf/ii-managed-users-make-unmanaged-roles-access
[web] Prevent managers from removing/deleting themselves

GitOrigin-RevId: 9287dc06bab8024bf03fecff678a4118a9456919
2025-06-13 08:05:46 +00:00
ilkin-overleaf
277e59fbd5 Merge pull request #25713 from overleaf/ii-managed-users-make-unmanaged-events
[web] Tracking events for offboarding managed users

GitOrigin-RevId: 12d0f178bab9f2f0923135ce3661738acdc85b82
2025-06-13 08:05:42 +00:00
ilkin-overleaf
272303cb58 Merge pull request #24907 from overleaf/ii-managed-users-make-unmanaged
[web] Release users from managed group

GitOrigin-RevId: 15921286af332d2294fb900ab3055991ca8b1673
2025-06-13 08:05:37 +00:00
Mathias Jakobsen
819cd85a0e Merge pull request #26310 from overleaf/mj-history-view-cut-off
[web] Editor redesign: Avoid cutting off history view

GitOrigin-RevId: ecffc404ef6c210c852edd13c99b742545b73b32
2025-06-13 08:05:25 +00:00
Rebeka Dekany
d2e784e11c Remove .text-centered and use .text-center instead (#26217)
GitOrigin-RevId: 75774d877e3d513574818afc517be815cb7201ae
2025-06-13 08:05:19 +00:00
Jakob Ackermann
8b91b3b749 [misc] wait for mongo before running acceptance tests (#26374)
GitOrigin-RevId: 1fde30c2b630a51f5eda9d318ac721a81cc23607
2025-06-13 08:05:08 +00:00
Jakob Ackermann
365af778b6 [web] fetch user details for chat messages/ranges in a single batch (#26342)
GitOrigin-RevId: 5a4238e30388bb7f58b7a93dda9e43338ab94f6e
2025-06-12 08:06:16 +00:00
Jakob Ackermann
3862826589 [web] let docstore determine user ids of tracked changes (#26333)
* [docstore] add endpoint for getting user ids of tracked changes

* [web] let docstore determine user ids of tracked changes

GitOrigin-RevId: 8d0a131555aa827f7ff80690fedc1aca26cf0817
2025-06-12 08:06:11 +00:00
Brian Gough
2e4b57bf81 Merge pull request #26357 from overleaf/bg-history-redis-fix-history-buffer-level
remove incorrect parameter from queueChanges call in queueChangesFake function

GitOrigin-RevId: 4567be5eb5634c0c419f7f8758f1a6f27586a9af
2025-06-12 08:05:58 +00:00
Jimmy Domagala-Tang
55295ece9c feat: allow for users on both free plans and premium plans to use the freemium ai assist (#26350)
GitOrigin-RevId: cef1051800abac3d4f7039ade2d79c75d5c15c8f
2025-06-12 08:05:49 +00:00
Brian Gough
8a90173aa7 Merge pull request #26271 from overleaf/bg-history-redis-deployment-refactor
introduce history-v1 buffering levels

GitOrigin-RevId: 7709935a5ceb19ef6c5723ded647217b7399759a
2025-06-12 08:05:39 +00:00
David
72ff927a52 Merge pull request #26311 from overleaf/dp-auto-compile-failure
Add a code check banner to the new editor

GitOrigin-RevId: 6ee01d8379247824f4ec0684809ad432c4617c96
2025-06-12 08:05:35 +00:00
Miguel Serrano
9601eeb7c9 [CE/SP] Hotfix 5.5.1 (#26091)
* [CE/SP] Hotfix 5.5.1

* [web] Fix License tab in CE/SP

* Added patch to improve logging

* Added patch to fix create-user.mjs

* Added check for `featureCompatibilityVersion` on CE/SP startup

* Patch with `multer` and `tar-fs` updates

* Install manually missing @paralleldrive/cuid2 on CE 5.1.1

GitOrigin-RevId: 0138dffdcb171382014a383bee13676fc873b1dd
2025-06-12 08:05:30 +00:00
Eric Mc Sween
91c1c6858a Merge pull request #26281 from overleaf/em-history-ot-undo
Fix undo in history OT

GitOrigin-RevId: 22e8da99abb3de70095539fd8acb5c7eb947fbd1
2025-06-12 08:05:25 +00:00
Eric Mc Sween
101c994fec Merge pull request #26279 from overleaf/em-compose-tracking-props
Merge tracked inserts and deletes during composition

GitOrigin-RevId: f8cfcf79aef7cb3e7acaecf7c3baa69d71a4efa9
2025-06-12 08:05:21 +00:00
Antoine Clausse
ab19b01d43 [web] Migrate metrics module Pug files to Bootstrap 5 (2) (#26199)
* Reapply "[web] Migrate metrics module Pug files to Bootstrap 5 (#25745)"

This reverts commit 0962383998f29313cc1fa33b98255a38896738a0.

* Remove foot-scripts from metricsApp.pug

* Fix loading-overlay position

* Hide carets on print display

* Fix Dropdown

* Fix Tooltips

GitOrigin-RevId: 754d9a004f7b476578ee20565203aef98b08bbf4
2025-06-12 08:05:16 +00:00
Antoine Clausse
b3dc0097fd Merge pull request #26188 from overleaf/ac-bs5-fix-redundant-carets
[web] Fix redundant carets in BS5 marketing pages

GitOrigin-RevId: 479687d982db23e4f5f2efcc3f5f39bb78f0eb24
2025-06-12 08:05:11 +00:00
Antoine Clausse
6a951e2ff0 [web] Migrate general Pug pages to BS5 (2) (#26121)
* Reapply "[web] Migrate general Pug pages to BS5 (#25937)"

This reverts commit c0afd7db2dde6a051043ab3e85a969c1eeb7d6a3.

* Fixup layouts in `404` and `closed` pages

Oversight from https://github.com/overleaf/internal/pull/25937

* Use `.container-custom-sm` and `.container-custom-md` instead of inconsistent page widths

* Copy error-pages.less

* Convert error-pages.lss to SCSS

* Revert changes to pug files

* Nest CSS in `.error-container` so nothing leaks to other pages

* Remove `font-family-serif`

* Use CSS variables

* Remove `padding: 0` from `.full-height`: it breaks the layout in BS5

* Fix error-actions buttons

* Revert changes to .container-custom...

* Update services/web/app/views/external/planned_maintenance.pug

Co-authored-by: Rebeka Dekany <50901361+rebekadekany@users.noreply.github.com>

* Update services/web/app/views/general/closed.pug

Co-authored-by: Rebeka Dekany <50901361+rebekadekany@users.noreply.github.com>

---------

Co-authored-by: Rebeka Dekany <50901361+rebekadekany@users.noreply.github.com>
GitOrigin-RevId: 313f04782a72fae7cc66d36f9d6467bad135fd60
2025-06-12 08:05:06 +00:00
Brian Gough
b290e93441 Merge pull request #26270 from overleaf/bg-history-redis-commit-change-manager
replace redis logic in persistChanges with new commitChanges method

GitOrigin-RevId: e06f9477b9d5548fa92ef87fb6e1f4f672001a35
2025-06-11 08:07:45 +00:00
Andrew Rumble
5799d534a9 Ensure we wait after processing each subscription
GitOrigin-RevId: f6a184bc8a65934f24857cfc4f71f95574576b9d
2025-06-11 08:07:41 +00:00
Andrew Rumble
07b47606c1 Disable script in production
GitOrigin-RevId: 81fe077a5816a23fa20c78a6271fbdf62021e3b2
2025-06-11 08:07:36 +00:00
Brian Gough
b946c2abff Merge pull request #26304 from overleaf/bg-history-redis-clear-persist-time-on-persist
add persist time handling to setPersistedVersion method

GitOrigin-RevId: 5e115b49116ee4604e3e478c206c7e9cf147cbc8
2025-06-11 08:07:32 +00:00
Jakob Ackermann
25c3699862 [docstore] finish async/await migration (#26295)
* [docstore] DocManager.getDocLines returns flat content

* [docstore] peekDoc throws NotFoundError, skip check in HttpController

* [docstore] getFullDoc throws NotFoundError, skip check in HttpController

* [docstore] migrate HealthChecker to async/await

* [docstore] migrate HttpController to async/await

* [docstore] remove .promises/callbackify wrapper from all the modules

GitOrigin-RevId: a9938b03cdd2b5e80c2c999039e8f63b20d59dc5
2025-06-11 08:07:20 +00:00
Mathias Jakobsen
0397b02214 Merge pull request #26221 from overleaf/mj-history-dark-mode-entries
[web] Editor redesign: Add dark mode to history entries

GitOrigin-RevId: 16c9743bdee85dc3825ce6e9901a0107956205ca
2025-06-11 08:07:12 +00:00
Mathias Jakobsen
7c23655c79 Merge pull request #26177 from overleaf/mj-ide-history-file-tree
[web] Editor redesign: Update history view file tree

GitOrigin-RevId: bb0fe871837ffac6e1af6c18c7c1ae651dee7f81
2025-06-11 08:07:07 +00:00
Brian Gough
fdd0d95554 Merge pull request #26293 from overleaf/bg-history-redis-fix-persist-worker
add missing load global blobs from persist worker

GitOrigin-RevId: ae9393f2353fb4d5afe349aa7d0a26bab80c7f53
2025-06-11 08:06:59 +00:00
Brian Gough
2a833aa23a Merge pull request #26250 from overleaf/bg-history-redis-add-return-value-to-persistBuffer
provide return value from persistBuffer

GitOrigin-RevId: ba52ff42b91ffe9adc23ab0461fa836540735563
2025-06-11 08:06:54 +00:00
Brian Gough
fec6dde00f Merge pull request #26203 from overleaf/bg-history-redis-fix-loadAtVersion
Extend loadAtVersion to handle nonpersisted versions

GitOrigin-RevId: 22060605ea7bb89a8d4d61bafab8f63b94d59067
2025-06-11 08:06:50 +00:00
Brian Gough
c81cc4055e Merge pull request #26220 from overleaf/bg-history-redis-fix-loadAtVersion-startVersion
correct startVersion calculation in loadAtVersion

GitOrigin-RevId: b81c30dcab90b137169a4bddef3c22f44a957f68
2025-06-11 08:06:45 +00:00
Brian Gough
2d0706591b Merge pull request #26219 from overleaf/bg-history-redis-fix-loadAtTimestamp
correct startVersion calculation in loadAtTimestamp

GitOrigin-RevId: ad46aae47c0769943e787199d68e895cf139bb56
2025-06-11 08:06:41 +00:00
Brian Gough
f904933d68 Merge pull request #26180 from overleaf/bg-history-redis-add-queueChanges
add queueChanges method to history-v1

GitOrigin-RevId: fb6da79bd5ca40e7cbdcb077ad3a036cc5509ced
2025-06-11 08:06:36 +00:00
Andrew Rumble
c227c1e2d9 Remove some unused variables
These miseed the lint rule as they were merged between the last rebase
and deploy.

GitOrigin-RevId: 16b1117d56f2fc824509b9a0f340dba2ede9902f
2025-06-11 08:06:31 +00:00
Brian Gough
c23e84eb37 Merge pull request #26273 from overleaf/bg-history-redis-add-persist-worker-to-cron
modify existing run-chunk-lifecycle cron job to persist and expire redis queues

GitOrigin-RevId: afb94b3e2fba7368cfec11997dfd5b2bbd6321a9
2025-06-11 08:06:23 +00:00
David
637312e4f8 Merge pull request #26135 from overleaf/dp-error-logs-ai
Add AI paywall to new error logs

GitOrigin-RevId: 2d6dad11dfe3b27c8ff322a9778a53496cfe7277
2025-06-11 08:06:19 +00:00
Andrew Rumble
ce3054713f Remove unused variable
GitOrigin-RevId: 57b864aff3317513f981b101feafac28d3379403
2025-06-11 08:06:14 +00:00
Andrew Rumble
2c07fa1f77 Skip unused array members
GitOrigin-RevId: 5ea4dd880505e65fe7545e0c0d4301236ad103e7
2025-06-11 08:06:10 +00:00
andrew rumble
52280febf6 When filtering object members from rest use full name
GitOrigin-RevId: 0c21c70b2512931744f18e79c8d9e4bb85e83dfa
2025-06-11 08:06:05 +00:00
andrew rumble
f871130773 Disable lint warnings for stubbed class
GitOrigin-RevId: bcee2d1ea4fcb5543fa31fd2174641e55d6c4d39
2025-06-11 08:06:00 +00:00
andrew rumble
25675ce2ba Remove unused params from destructuring
GitOrigin-RevId: e47a16e2d99e923c314fd0fa2220c19b7b2c9b51
2025-06-11 08:05:56 +00:00
Andrew Rumble
c1f5d7c40c Ignore params that are needed for type integrity
These params are either used in a descendent or ancestor of the relevant
file and form part of the interface of the method even if they are not
directly used.

GitOrigin-RevId: 8bf64cecc69a9ae9e6c50797de5ce8db86757440
2025-06-11 08:05:51 +00:00
andrew rumble
4960569648 Remove unused full arguments
As distinct from removing destructured props.

GitOrigin-RevId: d02ad8d36fb532559ed2899268d7b699f2f2fa37
2025-06-11 08:05:46 +00:00
andrew rumble
eb60d364f6 Fix instances of ...rest filtering
GitOrigin-RevId: 9f2889b08ffed20466d7022a5aba69d3e87c5ed9
2025-06-11 08:05:42 +00:00
andrew rumble
542008c61d Remove unused event arguments
GitOrigin-RevId: 25858d07865d6b9a7caa4997d031586a248d8e8b
2025-06-11 08:05:37 +00:00
andrew rumble
3da4dc71f1 Modify no-unused-vars behaviour
using @typescript-eslint/no-unused-vars reduces the number of false
positives in TS code. The changes:
1. Allow the arguments to a function to be checked (reporting only after
the last used variable)
2. Allow rest siblings to be checked
3. Allow these rules to be skipped with an _ prefix to a variable

GitOrigin-RevId: 1f6eac4109859415218248d5b2068a22b34cfd7e
2025-06-11 08:05:33 +00:00
Davinder Singh
312664bd2d Merge pull request #26265 from overleaf/ds-cms-bs5-customer-stories-2
[B2C] Bootstrap 5 migration of Customer stories page

GitOrigin-RevId: cca0d00412ab4ec5da15e26e4e7eb3c40de9e47c
2025-06-11 08:05:14 +00:00
ilkin-overleaf
69e2a57769 Merge pull request #26141 from overleaf/ii-managed-users-consent-screen
[web] Joining managed group from projects page

GitOrigin-RevId: 191203559fba94cad45f35de1af2427b2abb9326
2025-06-11 08:05:09 +00:00
Eric Mc Sween
6d202432ff Merge pull request #26209 from overleaf/em-multiple-edit-ops
Support multiple ops in the history OT ShareJS type

GitOrigin-RevId: fad1e9081ed1978de414c5130692d3b23fcd13d8
2025-06-10 08:06:13 +00:00
Miguel Serrano
5b08adc4ff Merge pull request #26218 from overleaf/msm-bump-tar-fs-multer
[clsi/web/history-v1] Bump `tar-fs` and `multer`

GitOrigin-RevId: c76b964224c8367d68dc1190ff29627cc6919ade
2025-06-10 08:06:05 +00:00
Davinder Singh
86626ca44e Merge pull request #25856 from overleaf/ds-cms-bs5-migration-universities-2
[B2C] Bootstrap 5 migration of Universities page

GitOrigin-RevId: b069c04131531e9f9774a9a53aaa53858ba568c7
2025-06-10 08:06:00 +00:00
Davinder Singh
45c6ce2219 Merge pull request #25842 from overleaf/ds-cms-bs5-migration-enterprises-2
[B2C] Bootstrap 5 migration of Enterprises page

GitOrigin-RevId: 63c4095ddb2ee688bc1780883b86f5a994b262c0
2025-06-10 08:05:55 +00:00
David
ff63215d73 Merge pull request #26155 from overleaf/dp-content-info
Add content-info and content-info-dark to standard colours and use in editor redesign logs

GitOrigin-RevId: 40c026a9ccfe511cab2bf4e28fbfbed7cf218642
2025-06-10 08:05:51 +00:00
Mathias Jakobsen
d3a9b4943a Merge pull request #26257 from overleaf/mj-ide-breadcrumbs-crash
[web] Avoid editor crash when breadcrumbs can't find open entity

GitOrigin-RevId: 7c7f198c82e102ee9f8e2a59ca1755c3550bdf37
2025-06-10 08:05:46 +00:00
Mathias Jakobsen
e0f6ee8b20 Merge pull request #26133 from overleaf/mj-ide-keyboard-shortcuts
[web] Editor redesign: Add keyboard shortcuts to menu bar

GitOrigin-RevId: 8fe844389de70a919ba836d03f0390f585532bb1
2025-06-10 08:05:42 +00:00
Andrew Rumble
edc7634007 Update bootstrap process to use vitest chai
GitOrigin-RevId: 5576223019c0e2b4554707f0025e82ab3a7ca514
2025-06-10 08:05:23 +00:00
Andrew Rumble
c0b7efea10 Change imports that use chai to use vitest
GitOrigin-RevId: 59d780f754adbb5160a2de8e5eca1def6968584b
2025-06-10 08:05:18 +00:00
Brian Gough
2eb695f4c3 Merge pull request #26122 from overleaf/bg-history-redis-make-persist-buffer-consistent
make persistBuffer export consistent with other methods

GitOrigin-RevId: 24536e521e1d20ef63cc74bd9ba40e095025d512
2025-06-09 08:05:39 +00:00
Brian Gough
d280f40885 Merge pull request #26116 from overleaf/bg-history-redis-show-buffer
add script to display redis buffer for a given history ID

GitOrigin-RevId: 71c2e79480c0873d30801ed3c13aa9a7fc7873f6
2025-06-09 08:05:35 +00:00
Kristina
a9923fed4e Merge pull request #26198 from overleaf/jpa-recurly-metrics
[web] add metrics for recurly API usage

GitOrigin-RevId: 89840829f86ce1ff750d57f3445f279f4b151d6f
2025-06-09 08:05:24 +00:00
Kristina
7a449f4686 Merge pull request #26014 from overleaf/kh-remaining-references-to-recurly-fields
[web] update remaining references to `recurlyStatus` and `recurlySubscription_id`

GitOrigin-RevId: f5e905eba598cfcd146803c6ccc36a2304021544
2025-06-09 08:05:17 +00:00
Kristina
a8df91e91b Merge pull request #26087 from overleaf/mf-change-to-stripe-uk
[web] Configure to use Stripe UK account

GitOrigin-RevId: 0856f6da2caae8caf9887ec2acea8e7f0972e598
2025-06-09 08:05:09 +00:00
CloudBuild
9e9ad3c005 auto update translation
GitOrigin-RevId: 52a28c6823536ef916c656128dbcdff1da80635b
2025-06-06 08:06:46 +00:00
Eric Mc Sween
e5d828673e Merge pull request #26128 from overleaf/em-no-tracked-deletes-in-cm
History OT: Remove tracked deletes from CodeMirror

GitOrigin-RevId: 4e7f30cf2ed90b0c261eaa4ba51a2f54fe6e3cef
2025-06-06 08:06:34 +00:00
Andrew Rumble
df233f3e5e Add commands for running just mocha tests
GitOrigin-RevId: 6cd5c6aedd4fb2f222a758d6aca130f178a4acf3
2025-06-06 08:06:18 +00:00
Rebeka Dekany
784559f1b8 Add video caption track if captionFile is available (#25997)
GitOrigin-RevId: fefcce66fe573385dfec34cc0f8697220fe418a3
2025-06-06 08:06:06 +00:00
Rebeka Dekany
ae51e57c75 Migrate user email confirmation page to Bootstrap 5 (#26026)
GitOrigin-RevId: 8e12b19fb941c0adfeaa16089bfe229e8816ad8d
2025-06-06 08:06:01 +00:00
Rebeka Dekany
24e12bfbd4 Migrate institutional account linking pages to Bootstrap 5 (#25900)
GitOrigin-RevId: 75734bdbde52e90305ae759789acaf4203ec49b4
2025-06-06 08:05:57 +00:00
Andrew Rumble
1386ca1669 Add migration for drop projectHistoryMetaData collection
GitOrigin-RevId: 1ebfc60ee9591837f37e507fb1dcb059c09a7f3b
2025-06-06 08:05:52 +00:00
Andrew Rumble
f7fcf4c23f Remove projectHistoryMetaData from mongo db interface
GitOrigin-RevId: dbbc2218c7b1ff8b7907248f86b03189e9e4006d
2025-06-06 08:05:47 +00:00
Jakob Ackermann
3b684e08ca [web] fetch token users in a single db query per access mode (#26078)
* [web] skip db query when getting empty list of users

* [web] fetch token users in a single db query per access mode

GitOrigin-RevId: fa5d9edcb761bd5d5e5ea07d137a5a86efdbdd5c
2025-06-06 08:05:42 +00:00
Brian Gough
d7833afd35 Merge pull request #26173 from overleaf/bg-fix-typo-in-project-deletion
fix deleted project owner ID in expireDeletedProject function

GitOrigin-RevId: 7e427bf9877865752f259a75b99354597d2e0a7f
2025-06-06 08:05:38 +00:00
Brian Gough
af7bcfc96a Merge pull request #25486 from overleaf/bg-add-logging-when-projects-are-expired
add logging when projects are expired

GitOrigin-RevId: 5107f9f3d2f35aac1ee3f02a9a92c5f625d47f7a
2025-06-06 08:05:33 +00:00
Jakob Ackermann
842f6c289f [document-updater] make setDoc aware of tracked deletes in history-ot (#26126)
GitOrigin-RevId: efa1a94f2f435058b553f639e43832454c58591d
2025-06-06 08:05:23 +00:00
Brian Gough
1e6112d5b0 Merge pull request #25467 from overleaf/bg-fix-error-handling-when-accounts-are-deleted
improve logging deleted when user data is expired

GitOrigin-RevId: ac85b66c503184a815348a11a730fb68a504d80a
2025-06-05 08:06:27 +00:00
Antoine Clausse
11e410c9c0 Merge pull request #26163 from overleaf/revert-25745-ac-bs5-metrics-module
Revert "[web] Migrate metrics module Pug files to Bootstrap 5 (#25745)"

GitOrigin-RevId: b97eecc2232f56833391fb789902f9a85936c365
2025-06-05 08:06:16 +00:00
CloudBuild
0037b0b3fc auto update translation
GitOrigin-RevId: f0b783bc74dc2212d330305600c8f3d16d27eef3
2025-06-05 08:06:11 +00:00
Jakob Ackermann
cd10a31a16 [server-ce] fix direct invocation of create-user.mjs script in web (#26152)
GitOrigin-RevId: 9c7917e489dc8f3651f4ccf88a740ad60b6b4437
2025-06-05 08:06:06 +00:00
M Fahru
ca10904484 Merge pull request #26027 from overleaf/mf-admin-panel-stripe
[web] Update admin panel with Stripe subscription data

GitOrigin-RevId: fc4f773c5d6d2eae206a791c1ad40d8ccbf766e7
2025-06-05 08:05:58 +00:00
M Fahru
e3310e2358 Merge pull request #26117 from overleaf/sg-money-back-wording
Update en.json

GitOrigin-RevId: 5b02970e6344b65e37c49c196c9e3c89b1555c75
2025-06-05 08:05:54 +00:00
Domagoj Kriskovic
62714d995d Revert "Reinitialise Writefull toolbar after buying AI assist (#25741)" (#26144)
This reverts commit 7247ae45ca7de7f1f3778b1b22f49e2ff840a7ef.

GitOrigin-RevId: c6dc1a073ce3d0f9703e426df1c12fa1c7ffac5c
2025-06-05 08:05:28 +00:00
David
a8a21e05af Merge pull request #26100 from overleaf/dp-compile-timeout-paywall
Add compile timeout paywall to new editor

GitOrigin-RevId: 9742ae67b4103c72cc9d87852801ae8751f85d6d
2025-06-05 08:05:20 +00:00
David
08316442cf Merge pull request #26067 from overleaf/dp-separate-rail-sizes
Separate rail size storage for different rail tabs

GitOrigin-RevId: dd97215de9ea4e4a932d10dabb234e343f5e3fa5
2025-06-05 08:05:15 +00:00
David
db98f5132b Merge pull request #25939 from overleaf/dp-error-logs
Update error logs designs for new editor

GitOrigin-RevId: 0de3a54446a0ff114a1debb7b5f274d3a8f19c42
2025-06-05 08:05:11 +00:00
Kristina
a134a2b799 [web] support purchasing/removing add-ons for Stripe subscriptions (#26081)
GitOrigin-RevId: 01c2eaccc7c34bc37be43120de83270490e5e6da
2025-06-05 08:05:06 +00:00
Eric Mc Sween
7a556cf1fd Merge pull request #26041 from overleaf/em-history-ot-type-serialize
History OT type: operate on parsed EditOperations

GitOrigin-RevId: dbb35789736958d4ef398e566400d6e9a0e49e8b
2025-06-04 08:07:54 +00:00
Eric Mc Sween
f11ea06c1a Merge pull request #25910 from overleaf/em-track-changes-sharejs
Track changes in the history OT sharejs doc

GitOrigin-RevId: 17365219f24a25790eac611dbde9681eb73d0961
2025-06-04 08:07:50 +00:00
M Fahru
d173bdf8e2 Merge pull request #25355 from overleaf/mf-whitelist-staging-url-stripe-test
[web] Bypass country requirement for Stripe if user is on staging or dev environment to ease the testing process

GitOrigin-RevId: 0924a57d3a1b7b530a3822fb8f9056a1dd7119e9
2025-06-04 08:07:35 +00:00
M Fahru
832f9923b9 Merge pull request #25998 from overleaf/mf-update-stripe-email-from-subscription-dashboard
[web] Make user able to sync their email address in subscription dashboard for Stripe subscription

GitOrigin-RevId: 9abdc0e18ebea29b18c2041130946b9e50fa43db
2025-06-04 08:07:27 +00:00
M Fahru
ef810a9f36 Merge pull request #25967 from overleaf/mf-sync-email-update-to-stripe-account
[web] Sync Stripe customer email when user update their primary email in account setting

GitOrigin-RevId: a5f4b4e960d2c9d4ba96a2b3036329f4868e1bb8
2025-06-04 08:07:23 +00:00
Brian Gough
54c0eb7fdc Merge pull request #25958 from overleaf/bg-history-redis-check-persisted-version-on-update
prevent setPersistedVersion from setting an out of bounds version

GitOrigin-RevId: 9561b7b96399bed901db5c2ac20a0cdbf4c67395
2025-06-04 08:07:19 +00:00
Antoine Clausse
edacb9ec0b Merge pull request #26111 from overleaf/revert-25937-ac-bs5-general-pug-pages
Revert "[web] Migrate general Pug pages to BS5"

GitOrigin-RevId: fcc42ee28004aa55c09ecbd5f5e96c6067e717e9
2025-06-04 08:07:07 +00:00
Jakob Ackermann
b84d23564b [web] remove spurious cleanup of project audit log entries (#26102)
GitOrigin-RevId: 32693f89b417b357588d059500ab51c3a9dd46dd
2025-06-04 08:07:01 +00:00
Mathias Jakobsen
d5ba2e3f1c Merge pull request #26094 from overleaf/mj-ide-fps-update
[web] Add full project search to redesign switcher modal

GitOrigin-RevId: 3f494ddc3bf94d9f7c2d6de62183b1805b110601
2025-06-04 08:06:51 +00:00
Alf Eaton
385f5706d8 Add doc and file counts to the admin info page for a project (#26076)
GitOrigin-RevId: afa7fa4e562962a4c7c88f6d3d5f13c0f1feb2e3
2025-06-04 08:06:45 +00:00
Antoine Clausse
2226594ade [web] Migrate 4 simple user pages to BS5 (#25947)
* Migrate email-preferences.pug to BS5

https://www.dev-overleaf.com/user/email-preferences

* Migrate sessions.pug to BS5

https://www.dev-overleaf.com/user/sessions

* Migrate one_time_login.pug to BS5

https://www.dev-overleaf.com/read-only/one-time-login

* Fix positions in back-to-btns mixin

* Migrate accountSuspended.pug to BS5

https://www.dev-overleaf.com/account-suspended

* Set max-width of 400px in account-suspended page

* Fix column widths in sessions.pug

GitOrigin-RevId: 8ec6100fb230cf532049fcc9aba7c00def20ea0e
2025-06-04 08:06:40 +00:00
Antoine Clausse
a210a7b14d [web] Migrate general Pug pages to BS5 (#25937)
* Revert me! Temporarily update code to test updates

* Update layout-no-js.pug to use BS5

* Migrate pages to BS5

* Revert "Revert me! Temporarily update code to test updates"

This reverts commit 03d980939dcbdc3f73ddf1e673acbc3fbfdfe2ec.

* Use `.error-container` class instead of BS5 utility

* Fix breakbpoints

* Use `.error-container` instead of utility class

GitOrigin-RevId: fd39c4f7278f175bbdeee24826f7a2226b1d7c70
2025-06-04 08:06:36 +00:00
Antoine Clausse
25d3972810 [web] Migrate post-gateway.pug to BS5 (#25860)
* Remove `data-ol-auto-submit`, to test the page

* Migrate post-gateway.pug to BS5

* Revert "Remove `data-ol-auto-submit`, to test the page"

This reverts commit ee728b0bdda80d739bd09b2e4e9419303f7053db.

* Fix breakbpoints

* Use `layout-marketing`

GitOrigin-RevId: 73aa4da1e4ddae03d9c8e6671c6a8ccb89ecf0b0
2025-06-04 08:06:32 +00:00
Antoine Clausse
397016744e [web] Migrate metrics module Pug files to Bootstrap 5 (#25745)
* Remove `bootstrap5PageStatus = 'disabled'`

* Update from 'col-xs-' to 'col-'

* Rename LESS files to SCSS

* Rename local vars

* Refactor color variables to use SCSS variables in stylesheets

* Remove unused `.superscript`

It was added in 6696ffdd50

* Remove -moz and -webkit properties

* Remove unused(?) `.hub-circle img`

* Fix selector specificity for calendar display in daterange-picker

* Fix space/tab indents

* Fixup btn-link classes: fixes some borders

* Add support for svg.nvd3-iddle alongside svg.nvd3-svg in styles

* Add dropdown-item classes (improves styles)

* Replace `data-toggle` by `data-bs-toggle`

* Fixup table: remove .card class, add scope="col", add tbody

* Update dropdown caret icon

* Update icons to material symbols

* Remove green color override for links

* Remove/rearrange CSS unrelated to metrics module

* Add space after "by" in lags-container (by Day/Week/Month)

* Fix SCSS linting

* Re-add CSS that belongs in portals module

* Use `layout-react`

* Put table in Card. It still overflows but looks slightly better

* Fix columns breakbpoints

* Revert "Use `layout-react`"

This reverts commit a9e0d8f5c19d1dfd7417bf67b90799ad199a5913.

* Use css variables, use breakpoint mixins

* Add `.py-0` on subscriptions table card, so overflows appear less bad

GitOrigin-RevId: 55295ad76c112609baf43de4aa606d0c3da7a91f
2025-06-04 08:06:27 +00:00
Antoine Clausse
4dbc70b745 [web] Replace action button to "Go to Account Settings" link in group-settings alert for email confirmation (#25672)
* Replace action button to "Go to Account Settings" link in group-settings alert for email confirmation

* `bin/run web npm run extract-translations` & `make cleanup_unused_locales`

* Fix test capitalization

* Update "Go to account settings" to lowercase and link-styling

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

* Fix test

GitOrigin-RevId: d66ce34556bdfc2a37f12900055640cc995ac140
2025-06-04 08:06:23 +00:00
Brian Gough
393cee7af5 Merge pull request #25993 from overleaf/bg-history-refactor-persist-buffer-limits
refactor persist buffer to add limits

GitOrigin-RevId: 4a40a7a8812acf5bb7f98bfd7b94d81ebe19fc57
2025-06-04 08:06:19 +00:00
Brian Gough
50df3862e9 Merge pull request #25954 from overleaf/bg-history-expire-worker-fix
fix expire_redis_chunks to only clear job on error

GitOrigin-RevId: f7ec435edda95958b453fba501686dcfd84426f7
2025-06-04 08:06:14 +00:00
Brian Gough
a80203f748 Merge pull request #25909 from overleaf/bg-history-persist-worker
add history persist worker

GitOrigin-RevId: b9e31e7bdd84570efc0b87b9f5e90b4078551a8c
2025-06-04 08:06:10 +00:00
Brian Gough
cb350ecc65 Merge pull request #25907 from overleaf/bg-history-redis-persist-buffer
add a `persistBuffer` method to history-v1

GitOrigin-RevId: 71a34e48e9ebe378e2f765f3216023e505a58a5d
2025-06-04 08:06:06 +00:00
Brian Gough
b2b676249d Merge pull request #25928 from overleaf/bg-history-redis-move-test-script-helpers
move test script helpers in history-v1

GitOrigin-RevId: cc2e5d8b1baea7396f948883a12a91846f77836c
2025-06-04 08:06:02 +00:00
Miguel Serrano
ee23e8f49f Merge pull request #26093 from overleaf/msm-e2e-fix
[CE/SP] Force build of docker compose containers

GitOrigin-RevId: 0605fcdcaf670e3d8435f1e180d2bfc34a29ed81
2025-06-04 08:05:57 +00:00
Jakob Ackermann
4aaf411cd2 [misc] improve logging in history system (#26086)
* [project-history] tag all the errors

* [history-v1] log warnings for unexpected cases

GitOrigin-RevId: 3189fa487eee88985688ff990ec101daad0d13b1
2025-06-04 08:05:50 +00:00
roo hutton
a63e25953f Merge pull request #25896 from overleaf/rh-load-odc-data
Load ODC data when revisiting onboarding form

GitOrigin-RevId: 506df5d58a8b0305d83b9f43986a55fd309a2720
2025-06-04 08:05:42 +00:00
Mathias Jakobsen
48337b2e2c Merge pull request #25808 from overleaf/mj-ide-full-project-search
[web] Editor redesign: Add full project search

GitOrigin-RevId: b4327c4ba0ddd7387ec8d6640e31200ca0fe4a6e
2025-06-03 08:06:52 +00:00
Brian Gough
3a96df4623 Merge pull request #26050 from overleaf/em-saml-user-query
Improve index usage for SAML user query

GitOrigin-RevId: 189aba60a12c8369a0062e7df4c57bef8a16c98c
2025-06-03 08:06:47 +00:00
Brian Gough
4b9963757f Merge pull request #26047 from overleaf/bg-web-api-is-leaking-disk-space
clean up temporary files in GitBridgeHandler operations

GitOrigin-RevId: b4a202f4f4c563a020fed8a47da1a84417ccbd2d
2025-06-03 08:06:43 +00:00
M Fahru
35500cc72b Merge pull request #25607 from overleaf/mf-free-trial-limit-stripe-handler
[web] Limit user free trial on stripe subscription

GitOrigin-RevId: b3d978ed598d20451a99cf811fcae9ba2e3b23f0
2025-06-03 08:06:35 +00:00
Jakob Ackermann
3fbbb50ef7 [web] use correct term in setPublicAccessLevel API wrapper (#25848)
GitOrigin-RevId: 022c59d6d5c6f239438ed8e91f3ca47954198a0c
2025-06-03 08:06:26 +00:00
Jakob Ackermann
0aae5c48b4 [web] skip fetching members and invites for restricted users (#25673)
* [web] hide sensitive data from joinProject when building project view

* [web] skip fetching members and invites for restricted users

* [web] fix owner features in joinProject view

* [web] separate invited members from owner

* [web] skip fetching users with empty members  list

* [web] split await chain

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>

* [web] remove spurious parentheses

* [web] remove dead code

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>

---------

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>
GitOrigin-RevId: 5b4d874f974971e9c14d7412620805f8ebf63541
2025-06-03 08:06:22 +00:00
Jakob Ackermann
6cbacc8cb7 [web] fetch project once for joinProject (#25667)
* [web] fetch project once for joinProject

* [web] await all the nested helpers for getting privilege levels

Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>

---------

Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>
GitOrigin-RevId: f0280c36ef995b417ccdab15014f05954e18c5f0
2025-06-03 08:06:13 +00:00
Jakob Ackermann
2e50e0ffa1 [web] add ProjectAccess helper class (#25663)
* [web] add ProjectAccess helper class

* [web] remove ts-ignore for calling OError.tag with try/catch error

GitOrigin-RevId: e097a95b4d929a3927a3eeb70635590680c93007
2025-06-03 08:06:01 +00:00
Mathias Jakobsen
da449f9f5f Merge pull request #26015 from overleaf/mj-ide-breadcrumbs-setting
[web] Add setting to control editor breadcrumbs

GitOrigin-RevId: 6e0a4bb97eba63a1df43d85840f8962bf0238b7c
2025-06-03 08:05:49 +00:00
Mathias Jakobsen
1b15dc3854 Merge pull request #26003 from overleaf/mj-ide-duplicate-project
[web] Editor redesign: Add project duplication button

GitOrigin-RevId: 93e5aa66a7ccc13650e07fda041394811874dafa
2025-06-03 08:05:44 +00:00
Mathias Jakobsen
86e13b088a Merge pull request #25938 from overleaf/mj-core-pug-teardown
[web] Tear down core-pug-bs5 feature flag

GitOrigin-RevId: 875417ca02d8212940b4782bc3016778344116ba
2025-06-03 08:05:39 +00:00
Liangjun Song
26a77e739d Merge pull request #25852 from overleaf/ls-sync-stripe-subscription-logic
Replicate syncing logic for Stripe subscription

GitOrigin-RevId: 9422a3e193160409eddd4c5f2c80e8578bd88559
2025-06-02 08:05:35 +00:00
Eric Mc Sween
c6f4229147 Merge pull request #25952 from overleaf/em-split-editor-facade
Split EditorFacade functionality for history OT (2nd attempt)

GitOrigin-RevId: 2bc6d6c54a9f336fd4a69f0eb548dd06b9f06f5f
2025-06-02 08:05:30 +00:00
Christopher Hoskin
fe64856be7 Merge pull request #26021 from overleaf/csh-issue-25976-dev-env-ci
Upgrade to Redis 7.4 in dev and CI

GitOrigin-RevId: 068e54899bf50a247fedd0243d66f1545bc7cf01
2025-06-02 08:05:21 +00:00
Kristina
9ba772b18f [web] handle 3DS challenges for Stripe (#25918)
* handle 3DS challenges on the subscription dashboard
* add `/user/subscription/sync` endpoint
* upgrade `stripe-js` & rm `react-stripe-js`
* group related unit tests together
* add modules `SubscriptionController` unit tests and convert to async/await
* add `StripeClient` unit tests for 3DS failure

GitOrigin-RevId: 9da4758703f6ef4ec08248b328abddbbdd8e44ad
2025-06-02 08:05:16 +00:00
CloudBuild
efa20c26c9 auto update translation
GitOrigin-RevId: 410e63cee274ad03fc9f64b277ff0cd8aa8c1995
2025-05-30 08:05:46 +00:00
Mathias Jakobsen
97f8149a2b Merge pull request #25955 from overleaf/mj-ide-editing-session
[analytics+web] Add editor redesign status to editing session segmentation

GitOrigin-RevId: 8f2a05a6851d41712a592952c18b845b77115f47
2025-05-30 08:05:35 +00:00
Mathias Jakobsen
393e738ce6 Merge pull request #25978 from overleaf/mj-rail-active-indicator-overflow
[web] Avoid showing active rail indicator overflow

GitOrigin-RevId: a81d97bde6dfa22102374f13b8d372d61e08180e
2025-05-30 08:05:23 +00:00
Mathias Jakobsen
102b59a641 Merge pull request #25984 from overleaf/mj-breadcrumbs-filename-refresh
[web] Update breadcrumbs file name on renames

GitOrigin-RevId: 8d2f176b14880bec512a9b37c15148e10f29a758
2025-05-30 08:05:18 +00:00
Mathias Jakobsen
f40eb50264 Merge pull request #25987 from overleaf/mj-ide-review-panel-overview
[web] Editor redesign: Align review panel overview to top

GitOrigin-RevId: d713d07b1e4eba76164fd29bce696288cca1d63c
2025-05-30 08:05:14 +00:00
David
ba53ea3306 Merge pull request #25999 from overleaf/dp-eq-preview-fix
Move rendering of equation preview math into codemirror extension to fix zoomed in issue

GitOrigin-RevId: 66bf9120191da236d88213d16b457c0a676f38ac
2025-05-30 08:05:09 +00:00
David
28c5d777a4 Merge pull request #25846 from overleaf/dp-themed-style-variables
Create themed colour variables and use them in new editor rail

GitOrigin-RevId: 48719f1b29170bcb95d34ecd538554bdf4fad2bb
2025-05-30 08:05:05 +00:00
Miguel Serrano
b8816848a0 Merge pull request #25972 from overleaf/msm-unvendor-envsubst
[git-bridge] Un-vendor `envsubst`

GitOrigin-RevId: 02abdd20aede8b6fd90013f4841ad3375997335c
2025-05-30 08:05:00 +00:00
Miguel Serrano
1ea7a6f33f Merge pull request #25968 from overleaf/msm-git-bridge-bump-async-handler
[git-bridge] Bump `async-http-client` to 3.0.2

GitOrigin-RevId: 659e997b0403e9eb5af03ce398a84730661ff66a
2025-05-30 08:04:55 +00:00
Jimmy Domagala-Tang
aee3909a5f prevent attempting to set headers after we already sent respone (#25994)
GitOrigin-RevId: be9f63f4c6d86ccd7f55850d71f5f2564eab2f12
2025-05-29 08:06:51 +00:00
Andrew Rumble
a06ae82b56 Remove esmock from web
GitOrigin-RevId: 32aa3f23da8bb135d41f2e305662f157094d4936
2025-05-29 08:06:46 +00:00
Andrew Rumble
de4a80ef93 Update unit test script to remove mocha module tests
GitOrigin-RevId: 3bcc265e32486a179dd473233bed27ed798fba47
2025-05-29 08:06:34 +00:00
Jimmy Domagala-Tang
d49a8f83df Revert Recurly based subscription upgrades on failed payments (#25824)
* feat: add ability to set restore point for subscriptions

* feat: update recurly client with ability to get past due invoices and fail invoices

* utility to retrieve last valid subscription

* create revert requests and fail invoices, revert subscriptions to previous valid states on failed upgrade payments

* add restore point and call to revert plans on failed payments

* code style for PaymentProviderEntities

* moving subs restore point check to SubscriptionController, and removing unecessary error

* adding ability to stop sub restores without a deploy

* ensure that subs restore point is set before changing plan

* changing reverted flag on subscription to count, and only reverting automatic invoices

* updating tests with restorepoint functions

* rethrow error after voiding restore point, and ensure that recurly failed_payment always gets a 200 response

* only void restore point if the changeRequest fails

GitOrigin-RevId: cf3074c13db22d1cf680b59c4d57817c390db23e
2025-05-29 08:06:11 +00:00
Brian Gough
3296fc15da Merge pull request #25905 from overleaf/bg-history-redis-fix-import-path
fix import path for Job errors in history-v1

GitOrigin-RevId: f5f88bd34e713cd2ed78185ed4ce917e10d09caf
2025-05-29 08:06:06 +00:00
Brian Gough
b525a80d28 Merge pull request #25470 from overleaf/bg-history-redis-downgrade-job-related-errors
downgrade expected job errors in scanAndProcessDueItems

GitOrigin-RevId: 0a2689699bfc6512c5017c7f5e51ac4f80c409fe
2025-05-29 08:06:01 +00:00
Rebeka Dekany
9f821b4cfa Add landmark for the cookie banner and update its links color (#25823)
* Update cookie banner link color

* Add landmark for the cookie banner

GitOrigin-RevId: 9500cdfd7ddacbc2442680ed477ca1ac793720f7
2025-05-29 08:05:42 +00:00
Rebeka Dekany
c8d4b644bf Update the Labs button's content and border colour (#25942)
GitOrigin-RevId: 36de10a13ff5d8721ffcac25c5c002fe25f7a125
2025-05-29 08:05:37 +00:00
Andrew Rumble
18c0634011 Disable test isolation
Isolation isn't required and it takes the setup contribution to our
tests down from over 60 seconds to single figures, greatly speeding up
the tests.

GitOrigin-RevId: 72516e420583fa2dfcef13f2cc50b0769a100baf
2025-05-29 08:05:29 +00:00
Andrew Rumble
b35b54cb80 Use vi for logger mocks
GitOrigin-RevId: aeff4a82f96300ec3f81c8418e8373e923b8c4d4
2025-05-29 08:05:24 +00:00
Andrew Rumble
ee8044d162 Update script to handle multiple directories and no vitest tests scenarios
GitOrigin-RevId: 92a394387c2326d350b64c6a25e3b34c92e342aa
2025-05-29 08:05:19 +00:00
Andrew Rumble
5b764953c0 Add eslint rules for skipped/focused tests (and fix issues)
GitOrigin-RevId: 01735e0805a28609a68df667cd2a4c3d89c5b968
2025-05-29 08:05:11 +00:00
Andrew Rumble
873068a187 Update test files with vitest compat changes
GitOrigin-RevId: 494f906089d250268a5ff8c8a2150ff2692c37e2
2025-05-29 08:05:06 +00:00
Andrew Rumble
51dcc88f27 Rename test files for vitest
GitOrigin-RevId: f8792c0ce5eeb4843a534d3ff83e011d25fb65e0
2025-05-29 08:05:00 +00:00
Andrew Rumble
0d3025b8cf Add vitest and configuration
GitOrigin-RevId: 1262f9f32a0db6a29d3feedd8158b8dd04e48b6a
2025-05-29 08:04:55 +00:00
Jessica Lawshe
ce67a27c97 Merge pull request #25556 from overleaf/jel-group-audit-log-remove-from-group
[web] Log when user leaves or is removed from group

GitOrigin-RevId: 8a5042b21cbf4eb622d5ca35cc095d94fe5a8539
2025-05-28 08:05:53 +00:00
Jessica Lawshe
dcd520d7eb Merge pull request #25360 from overleaf/jel-group-audit-log-join
[web] Update group audit log when user joins

GitOrigin-RevId: 81c0d5003cdde384cb5ff90b57f6aa8b8dae0ee2
2025-05-28 08:05:46 +00:00
Jessica Lawshe
881db9b472 Merge pull request #25011 from overleaf/jel-group-audit-logs-part-2
[web] Update group audit log when user enrolls in managed users

GitOrigin-RevId: 15d79854007ac3334a2bb66bcf73230bf42c68ce
2025-05-28 08:05:42 +00:00
Domagoj Kriskovic
93a1996491 Show add-on list for non-personal subscription (#25901)
GitOrigin-RevId: ba23158f51a7183fabc61c16b19809f58cf15323
2025-05-28 08:05:34 +00:00
Eric Mc Sween
25adb7e303 Merge pull request #25949 from overleaf/revert-25869-em-split-editor-facade
Revert "Split EditorFacade functionality for history OT"

GitOrigin-RevId: a55328e08776fa0f59071fca955ba73ef130984d
2025-05-28 08:05:30 +00:00
Eric Mc Sween
13fa735da0 Merge pull request #25869 from overleaf/em-split-editor-facade
Split EditorFacade functionality for history OT

GitOrigin-RevId: 1e415e1d058c0de0b27271a9a5d7208b4a8a689b
2025-05-28 08:05:26 +00:00
Miguel Serrano
4315777638 Merge pull request #25916 from overleaf/msm-git-bridge-bump-jgit
[git-bridge] bump `jgit` to `6.10.1`

GitOrigin-RevId: a1ffaa68a2eaca278c48acaf8e9d72b06c0cf29a
2025-05-28 08:05:19 +00:00
Antoine Clausse
344405cdcb Revert case-insensitivity in e2e tests (#25828)
* Revert case-insensitivity in e2e tests

* Use `{ exact: false }` to filter createProject type

* Update server-ce/test/helpers/project.ts

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: b8b2f8439a55e9527358b13d9292779dc3509e9d
2025-05-28 08:05:05 +00:00
Antoine Clausse
f7b6246d41 [web] Use 6-digits verification in project-list notifications (bis) (#25847)
* Pull email context outside of `ResendConfirmationCodeModal`

* Use `loading` prop of button instead of deprecated Icon

* Swap notification order to clarify priority (no change in behaviour)

* Replace confirmation link action by confirmationCodeModal, and simplify code

* Change to secondary button variant in the Notification

* Display errors within the modal

* Increase ratelimit for resend-confirmation

* Copy changes

* Add stories on email confirmation notifications

* Fix other Notification stories

* Update tests

* Update services/web/frontend/js/features/settings/components/emails/confirm-email-form.tsx

Co-authored-by: Rebeka Dekany <50901361+rebekadekany@users.noreply.github.com>

* Remove placeholder on 6-digit code input

---------

Co-authored-by: Rebeka Dekany <50901361+rebekadekany@users.noreply.github.com>
GitOrigin-RevId: dad8bfd79505a2e7d065fd48791fd57c8a31e071
2025-05-28 08:05:01 +00:00
David
9000a3b70c Merge pull request #25923 from overleaf/dp-view-dropdown
Update UI of view dropdown

GitOrigin-RevId: 2d689a73886e0821eaa21e6666092e9414528e55
2025-05-28 08:04:57 +00:00
David
43563158d3 Merge pull request #25779 from overleaf/dp-recompile-button
Update Recompile button to match figma designs

GitOrigin-RevId: c3614fe2e621a64eb35dd4989b86c68a89bea342
2025-05-28 08:04:53 +00:00
CloudBuild
1c6ee3f930 auto update translation
GitOrigin-RevId: 4e2e3d1e7ca70f76f13f905753ba1ca2c945b72f
2025-05-27 08:05:55 +00:00
Jakob Ackermann
25577379fc [clsi] add env var override for seccomp profile (#25894)
GitOrigin-RevId: 6ef9a5c1f9149147641abb9fe1798b1b41a14c05
2025-05-23 13:25:58 +00:00
Miguel Serrano
923708f9f9 Merge pull request #25889 from overleaf/jpa-web-wait-for-mongo
[web] wait for DB before fetching global blobs

GitOrigin-RevId: 2beefd39ae4be4d233e2aac018d471bf949faea2
2025-05-23 11:08:40 +00:00
Jakob Ackermann
eaf71be07c [references] move redis config to common path in settings (#25883)
* [references] move redis config to common path in settings
---------

Co-authored-by: mserranom <mserranom@gmail.com>
GitOrigin-RevId: a5bf258bb71ff40344b53deb8c07dae849b4d00e
2025-05-23 11:08:35 +00:00
Miguel Serrano
3cf436c89e Merge pull request #25886 from overleaf/msm-add-skip-email-to-delete-user
[CE] Add `--skip-email` to `delete-user` script

GitOrigin-RevId: d0f5ced26930060df1e9f40dee97839076743bbd
2025-05-23 11:08:31 +00:00
Miguel Serrano
01dc0a4b45 Merge pull request #25882 from overleaf/jpa-sp-mongo-6
[web] bump minimum mongo version for Server Pro to 6.0

GitOrigin-RevId: 57821a0610b640880e3801e597f78103d580ee40
2025-05-23 11:08:26 +00:00
Miguel Serrano
978086c658 Merge pull request #25885 from overleaf/jpa-msm-tls-email
[web] fix nodemailer config for tls

GitOrigin-RevId: 6470a57bc66a89d463ca11f0f27e864a8cd3f61a
2025-05-23 11:08:21 +00:00
Mathias Jakobsen
3274235ac6 Merge pull request #25832 from overleaf/mj-ide-hide-editor-actions-when-unavailable
[web] Editor redesign: Hide editor options in menu bar when editor is not visible

GitOrigin-RevId: c4d158f80821afbc5f7ff7d13dac8ff5ecff6315
2025-05-23 08:06:08 +00:00
Mathias Jakobsen
6bb074eec3 Merge pull request #25836 from overleaf/mj-ide-settings-padding
[web] Add border padding to rail to reduce link text overlap

GitOrigin-RevId: f0a49b51dccb6618ca991f2074845796f2b95933
2025-05-23 08:06:03 +00:00
David
c450094659 Merge pull request #25804 from overleaf/dp-on-for-guests
Remove references to removed track changes onForGuests option

GitOrigin-RevId: c251ad41633df33f0d963dbc3c2e5cb62920a5e1
2025-05-23 08:05:59 +00:00
David
2d66b9751a Merge pull request #25784 from overleaf/dp-backend-reviewer-role-cleanup
Remove references to `reviewer-role` feature flag in the backend

GitOrigin-RevId: 4d2088e4c2815d3221817a182a0a66b5a60b3532
2025-05-23 08:05:54 +00:00
Eric Mc Sween
f69b9f857e Merge pull request #25825 from overleaf/em-accept-edit-operations
Accept all EditOperations in history-ot type

GitOrigin-RevId: b3bc710c92c4aa31dfeec16d422e42f0a6bb8cdb
2025-05-23 08:05:46 +00:00
Jakob Ackermann
64984ee86a [history-ot] flush history for projects with short queues ASAP (#25776)
* [document-updater] flush history for projects with short queues ASAP

* [k8s] document-updater: enable short history queue for history-ot demo

* [project-history] flush history for projects with short queues ASAP

* [project-history] wait for mongo before running acceptance tests

* [k8s] project-history: enable short history queue for history-ot demo

* [project-history] change wait-for-mongo step in tests

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>

---------

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>
GitOrigin-RevId: 3e989c409e8e9887655b35f2659ce0829e61b357
2025-05-23 08:05:35 +00:00
Liangjun Song
2f87db9c0d Merge pull request #24790 from overleaf/ls-use-script-runner
Update some scripts to use Script Runner

GitOrigin-RevId: aaa11f94dcfd328c158bb02d1b9fb2adfb1bb146
2025-05-23 08:05:23 +00:00
Tim Down
d0010217cd Merge pull request #25613 from overleaf/td-bs5-sp-login
Migrate SP/CE login page to Bootstrap 5

GitOrigin-RevId: 37fc7cbb453bfef93abde2080faaa0a88116d1f4
2025-05-23 08:05:19 +00:00
Tim Down
a77f218a77 Merge pull request #25805 from overleaf/td-bs5-rename-auth-pages-feature-flag
Change auth pages feature flag

GitOrigin-RevId: 091b2cde7cc4f91e2ce7533d610db773fc622bb5
2025-05-23 08:05:14 +00:00
Tim Down
290bf71659 Merge pull request #25788 from overleaf/td-layout-react
Use correct layout for React pages

GitOrigin-RevId: 0dbf3146273c0ac2f1549f67be374595e1b8403e
2025-05-23 08:05:10 +00:00
Jakob Ackermann
11b94593c2 [web] remove deledFiles collection (#25750)
* [history-v1] remove processing of deleted files when back-filling hashes

* [web] remove deledFiles collection

GitOrigin-RevId: 7c080e564f7d7acb33ebe7ebe012f415a847d0df
2025-05-23 08:05:01 +00:00
Antoine Clausse
52f1e46343 Fix casing in E2E tests (Example project, Blank project, ...) (#25812)
* Fix casing in Tests (Example project, Blank project, Trashed projects, ...)

* Check "Blank Project" case insentively

* Fix git-bridge tests

GitOrigin-RevId: 52339258016c3a923c6207a65d058cb0d6e9d3a2
2025-05-22 08:45:33 +00:00
Christopher Hoskin
841e32bb64 Merge pull request #25809 from overleaf/csh-issue-22789-ci-mongo-7
Upgrade the dev environment and CI to mongo 7

GitOrigin-RevId: da02881d142d21be47dac7bd2af74520ba8664cd
2025-05-22 08:45:24 +00:00
Miguel Serrano
88d3186dc1 Merge pull request #25792 from overleaf/msm-bump-multer
Bump `multer` to v2.0.0

GitOrigin-RevId: 688bfd3e6546b18f22ebaef82e4d9dd57b6d40bd
2025-05-22 08:45:16 +00:00
Rebeka Dekany
f86eb6208f Filter out link-sharing token sent to Sentry (#25787)
GitOrigin-RevId: 647f1a2e20e7883f7ab9c862bb0d90cf96360c24
2025-05-22 08:08:13 +00:00
Eric Mc Sween
c18b3f95b2 Merge pull request #25492 from overleaf/em-paginate-changes-1
Paginate history changes endpoint

GitOrigin-RevId: 2b48044d64244404efcd2e090b682c1f571a5567
2025-05-22 08:08:09 +00:00
Jimmy Domagala-Tang
23e24627d5 Merge pull request #25821 from overleaf/jdt-handle-no-prem-src
Handle cases where Writefull is not defined on a user on the subscription page

GitOrigin-RevId: ef43da630b5194f6021ebfc52ca4cb473e674b23
2025-05-22 08:08:05 +00:00
Jimmy Domagala-Tang
d6cd041704 Merge pull request #25505 from overleaf/jdt-redirect-to-wf-based-on-prem-src
Manage on Writefull should provide the right instructions based on premiumSource

GitOrigin-RevId: bc6dcc5962d18220c445315acbb3b4040ff23d5d
2025-05-22 08:08:01 +00:00
Antoine Clausse
e0f3bea9ad [web] De-capitalize english translations (#24123)
* Create decapitalize.sh script

* Remove `text-capitalize` classes, rely on translations instead

* `Account Linking` -> `Account linking`

* `Account Settings` -> `Account settings`

* `Add Affiliation` -> `Add affiliation`

* `Add Email` -> `Add email`

* `Add Files` -> `Add files`

* `Add to Dictionary` -> `Add to dictionary`

* `All Projects` -> `All projects`

* `All Templates` -> `All templates`

* `Archive Projects` -> `Archive projects`

* `Archived Projects` -> `Archived projects`

* `Auto Compile` -> `Auto compile`

* `Back to Subscription` -> `Back to subscription`

* `Blank Project` -> `Blank project`

* `Change Password` -> `Change password`

* `Change Project Owner` -> `Change project owner`

* `Clear Sessions` -> `Clear sessions`

* `Company Name` -> `Company name`

* `Compile Error Handling` -> `Compile error handling`

* `Compile Mode` -> `Compile mode`

* `Compromised Password` -> `Compromised password`

* `Confirm Affiliation` -> `Confirm affiliation`

* `Confirm Email` -> `Confirm email`

* `Connected Users` -> `Connected users`

* `Contact Sales` -> `Contact sales`

* `Contact Support` -> `Contact support`

* `Contact Us` -> `Contact us`

* `Copy Project` -> `Copy project`

* `Delete Account` -> `Delete account`

* `Emails and Affiliations` -> `Emails and affiliations`

* `Git Integration` -> `Git integration`

* `Group Settings` -> `Group settings`

* `Link Accounts` -> `Link accounts`

* `Make Primary` -> `Make primary`

* `Mendeley Integration` -> `Mendeley integration`

* `Papers Integration` -> `Papers integration`

* `Project Synchronisation` -> `Project synchronisation`

* `Sessions Cleared` -> `Sessions cleared`

* `Stop Compilation` -> `Stop compilation`

* `Update Account Info` -> `Update account info`

* `the Sales team` -> `the sales team`

* `your Group settings` -> `your group settings`

* `Zotero Integration` -> `Zotero integration`

* Update decapitalize.sh

* Decapitalize some translations

* `Example Project` -> `Example project`

* `New Project` -> `New project`

* `New Tag` -> `New tag`

* `Trashed Projects` -> `Trashed projects`

* `Upload Project` -> `Upload project`

* `Your Projects` -> `Your projects`

* Revert "Create decapitalize.sh script"

This reverts commit 8c79f367096c206c704c7c01e3572a18f3961d5e.

* Revert changes to stories

* Fix tests

* `Contact us of` -> `Contact us if`

* Make `Contact us` bold in tex files

* `sales team` -> `Sales team`

* `Link accounts and Add email` -> `Link accounts and add email`

* `Make Private` -> `Make private`

* `contact support` -> `contact Support`

* Make `Make primary` tests case sensitive

* Use `add_email` translation string

* Revert changes to non-english locales

* Remove redundant `Account settings` translation

* `New project Name` -> `New project name`

GitOrigin-RevId: 675c46f96ddbf3d259a8d723fed62aa4a7ed40b7
2025-05-22 08:07:46 +00:00
Antoine Clausse
436dcc977f Update Node to 22.15.1 (#25785)
GitOrigin-RevId: 52428d2d7e67c3135a1604fa487dd142aa08bf15
2025-05-22 08:07:42 +00:00
Antoine Clausse
b667cef262 Revert "Update defaultHighWaterMark to 64KiB (Node 22's default) (#25522)" (#25789)
This reverts commit 19d731abf683066654027de3a4f9ac0b8916f22c.

GitOrigin-RevId: eb7c45ab45e02054601b607a4bfeb432424a1837
2025-05-22 08:07:38 +00:00
Kristina
8e6d1d5f07 Merge pull request #25732 from overleaf/kh-stripe-preview-addon-purchase
[web] add support for previewing add-on changes for Stripe

GitOrigin-RevId: 46e7d0b96bf0935a4a3afcaf03d7a6f3c26d2108
2025-05-22 08:07:20 +00:00
Domagoj Kriskovic
9b27ed4798 Reinitialise Writefull toolbar after buying AI assist (#25741)
* Reinitialise Writefull toolbar after buying AI assist (#25596)

* Reinit Writefull toolbar after buying AI assist

* use refreshSession()

* add a timeout

* add a second refresh

* Increase a timeout for second refresh of writefull session (#25725)

GitOrigin-RevId: 7247ae45ca7de7f1f3778b1b22f49e2ff840a7ef
2025-05-22 08:07:16 +00:00
Domagoj Kriskovic
b8e391c005 Handle undefined user features in UserFeaturesProvider
GitOrigin-RevId: 70841809f691e9f20591bdf1ea05c510a44892af
2025-05-22 08:07:11 +00:00
Alf Eaton
827fb19df7 Define Change.toRaw result as RawChange (#25676)
GitOrigin-RevId: 0fa23806e9d7ee015b5a2a542d52382499edf9ab
2025-05-22 08:07:07 +00:00
Alf Eaton
80897001a5 Add review mode tutorial popover (#25709)
GitOrigin-RevId: bf2a365b21da780786f2736efb0770cea5f5b656
2025-05-22 08:07:03 +00:00
Mathias Jakobsen
8a1cdab27e Merge pull request #25755 from overleaf/mj-ide-collaborators-look
[web] Align online user design to Figma

GitOrigin-RevId: 89e09056558d98a57d3c1e5a8409476530784b26
2025-05-22 08:06:55 +00:00
Mathias Jakobsen
e98addf33a Merge pull request #24979 from overleaf/mj-editor-event-hook
[web] Introduce React hook wrapper around sendMB and friends

GitOrigin-RevId: 3c693ae609c6d4e5ba280c45096692aca47975ca
2025-05-22 08:06:51 +00:00
David
0b9cb185fa Merge pull request #25740 from overleaf/dp-gutter-error-logs
Correctly open logs when using AI assist gutter button in new editor

GitOrigin-RevId: 2700832f9e18d10ca3e6ee52841d31613fee626c
2025-05-22 08:06:47 +00:00
David
061f10a059 Merge pull request #25752 from overleaf/dp-delete-multiple-files
Add bulk delete button to file tree toolbar

GitOrigin-RevId: c857d8f5027eddb29b1ca324efe1a0e94ef4c28b
2025-05-22 08:06:42 +00:00
David
c45bca6ce9 Merge pull request #25780 from overleaf/dp-equation-preview-copy
Update copy in equation preview disable modal for new editor

GitOrigin-RevId: 51f1c00764ed3cb8f48448846e575ca738f71238
2025-05-22 08:06:38 +00:00
Eric Mc Sween
17d1b0b8d6 Merge pull request #25646 from overleaf/em-ds-mobile-app-compile
Compile endpoint for the DS mobile app

GitOrigin-RevId: 2fd9f4a6e8c2ed4ee868b0c1293f6760b9d113c8
2025-05-21 08:06:36 +00:00
Miguel Serrano
5a0f53654f Merge pull request #25021 from overleaf/msm-hotfix-5-4-1
CE/SP Hotfix `5.4.1`

GitOrigin-RevId: f88fb2bef6d096cb46eb0b39652e751056d114ef
2025-05-21 08:06:20 +00:00
M Fahru
0e54e650e3 Merge pull request #25706 from overleaf/mf-tear-down-nudge-annual-checkout-page
[web] Tear down `nudge-annual-checkout-page` split test and keep the default version

GitOrigin-RevId: 5714810b2a8abedca60855b37b059cd7f900407c
2025-05-21 08:06:16 +00:00
M Fahru
6a73d3f8f3 Merge pull request #25705 from overleaf/mf-add-journal-grey-sticker
[web] Add `journal-grey.svg` sticker in Contentful

GitOrigin-RevId: 713ba7ef1e2589eecb9b93081d31a79464172850
2025-05-21 08:06:07 +00:00
Jakob Ackermann
47b76a49d8 [web] start fetching load global blobs on module import (#25757)
GitOrigin-RevId: 7c1b6ed717142ad07d6ba5464aab2ecc6ebe9736
2025-05-21 08:05:59 +00:00
Jessica Lawshe
6bc4e40773 Merge pull request #24624 from overleaf/jel-latexqc-updates
[LaTeXQC] Footer and other minor style updates

GitOrigin-RevId: 67a43f715857a3bd1e97f24278d8e4586815688c
2025-05-21 08:05:50 +00:00
Jakob Ackermann
26a7a7d7b8 [clsi] mark VM as unhealthy when detecting of-of-disk condition (#25721)
* [clsi] shed load when detecting out-of-disk condition

* [clsi] mark VM as unhealthy when detecting of-of-disk condition

GitOrigin-RevId: 25cda6785c0d973f50ec6206bee389804f35917e
2025-05-21 08:05:34 +00:00
Davinder Singh
bb24aa46d1 [B2C] Bootstrap 5 migration of why-latex page (#25133)
* adding temporary rendering of the BS5 version of why-latex page

* adding first section on the page with new styling, that is compatible with BS5

* adding next section

* adding cards and copy pasting existing styling

* using variables instead of direct values

* fixing the styling of h3 in info-card

* adding next section and its styling

* adding variables

* adding features card section

* adding the next features card

* adding the next features card section

* adding another card section

* adding last feature card section

* adding next section

* adding next section

* adding next section

* adding begin now card

* running npm run lint:styles:fix

* making some style changes to match BS3 version for smaller screen under lg in BS5

* adding a width fix to image

* changing breakpoints to bring consistency in stylesheet

* adding vars

* adding split test

* removing the temporary rendering solution for the BS5 page

* adding splitTestHandler Stub

GitOrigin-RevId: 1257dff09e5371d68e102972e3544559800ca339
2025-05-21 08:05:30 +00:00
Brian Gough
efd55ffe97 Merge pull request #25743 from overleaf/bg-deactivate-projects-script
add deactivate projects script

GitOrigin-RevId: 5acf4b980d8980457930ee488571362da2a8014c
2025-05-21 08:05:25 +00:00
David
1354465562 Merge pull request #25727 from overleaf/dp-fix-track-changes-e2e-tests
Fix broken E2E tests after reviewer role feature flag cleanup

GitOrigin-RevId: 9860d546d8a6385554f223bf15c10875089ea130
2025-05-21 08:05:20 +00:00
Jakob Ackermann
1e6b13f9d5 [history-ot] rename remaining history-v1-ot references to history-ot (#25428)
* [history-ot] rename remaining history-v1-ot references to history-ot

* [web] rename History-v1 OT -> History OT in admin panel

* [web] rename OT Migration -> History OT Migration in admin panel

GitOrigin-RevId: 103ce816d5320d6379d51009cdc08b8a71aa48e6
2025-05-20 08:06:46 +00:00
Jakob Ackermann
f56645ecfe [server-ce] develop: fix mismatching bind-mount and env for clsi output (#25761)
GitOrigin-RevId: e907bc183360d253f446ed304108974d1f0b034d
2025-05-20 08:06:41 +00:00
Jakob Ackermann
efc42481da [clsi] avoid creating legacy db folder (#25760)
GitOrigin-RevId: eaa97813f0e20d14d7d6dafefe7b8b4d002fa41c
2025-05-20 08:06:36 +00:00
CloudBuild
26f27d32a1 auto update translation
GitOrigin-RevId: 8d2e4b1682fe0735260ca5f48cf5617966497fa9
2025-05-20 08:06:31 +00:00
M Fahru
14d6600fb5 Merge pull request #22908 from overleaf/mf-fix-disable-element-bs5-anchor-tag
[web] Fix `disableElement` won't properly disable the element if using bs5 and applied on anchor tag

GitOrigin-RevId: 49ce8514be3e44e5e3a45f41751c94c77f34399b
2025-05-20 08:06:26 +00:00
roo hutton
d8c5b74e09 Merge pull request #24855 from overleaf/rh-pug-contact-ui
Pug BS5 contact form UI updates

GitOrigin-RevId: 2a2428c89f799913ad5c0f7a607d59735334aeda
2025-05-20 08:06:07 +00:00
roo hutton
d680544b69 Merge pull request #24787 from overleaf/rh-sort-account-emails
Sort user emails by primary>confirmed>alphabetical

GitOrigin-RevId: 1d166e424e3848b83110c1a87adfff7790c1a01f
2025-05-20 08:06:00 +00:00
Domagoj Kriskovic
ab37e18bc3 Update AI Assist wording on checkout page if not in rollout (#25689) (#25733)
* Update AI Assist wording on checkout page if not in rollout

* update wording when buyin addon

GitOrigin-RevId: 7133b4fd3efac8e8a7361dcc15d54367f809f16d
2025-05-20 08:05:36 +00:00
Kristina
dbb528762e [web] add support for previewing base plan changes for Stripe (#25619)
GitOrigin-RevId: 458eeac52bc5fc010b9749f6fcd48350aa792582
2025-05-20 08:05:31 +00:00
Miguel Serrano
ecdd0c54bd [CE/SP] Update base image to noble-1.0.2 and node@22 (#25716)
* [CE/SP] Update base image to node:22

Also triggers a rebuild of the image to ensure all dependencies are up to date

* Bump phusion image to noble-1.0.2

GitOrigin-RevId: 8dce9d3cc6e8df28fce7a15f2727e7bc4aa453fd
2025-05-19 12:27:23 +00:00
Alf Eaton
f7d37a49d6 Upgrade CodeMirror dependencies (#25620)
* Upgrade CodeMirror dependencies
* Upgrade Lezer dependencies

GitOrigin-RevId: fcbf9b4bbf2577d85f44b48d3b745a56e49e24c9
2025-05-19 12:27:19 +00:00
Alf Eaton
ed006b707c Update "Editing" role description (#25641)
GitOrigin-RevId: dba2e4a21ca645ba34d9e41b76f09a287b5c3b33
2025-05-19 12:27:14 +00:00
Alf Eaton
bb3f1aa998 Merge pull request #25666 from overleaf/ae-reviewing-button
Prevent gap between button and menu

GitOrigin-RevId: 42f6a80ea2cda55c3b321a8d9ca9710ecf06c8a3
2025-05-19 12:27:09 +00:00
Alf Eaton
d280d4ecad Merge pull request #25691 from overleaf/ae-project-list-nav
Move isReady out of DefaultNavbar component

GitOrigin-RevId: 66f19620399e405c9ef4d95f7aef3ab918da5aa1
2025-05-19 12:27:05 +00:00
Domagoj Kriskovic
b375b13950 Revert "Reinitialise Writefull toolbar after buying AI assist" (#25731)
* Revert "Increase a timeout for second refresh of writefull session (#25725)"

This reverts commit 0a34bdde656ade863aead22f003253e13af37829.

* Revert "Reinitialise Writefull toolbar after buying AI assist (#25596)"

This reverts commit a2572d62bce0e344d92696e42d137a0b36574b3b.

GitOrigin-RevId: 3d51a4375059ab9f4494a7e18b132cc5db34e4cd
2025-05-19 12:27:00 +00:00
Mathias Jakobsen
60e588440f Merge pull request #25631 from overleaf/mj-reactdom-render
[web] Remove ReactDOM.render usage

GitOrigin-RevId: 42f62fa79a784cf3cc5c420357880154562d7dc7
2025-05-19 12:26:56 +00:00
Mathias Jakobsen
5ee59a4f4a Merge pull request #25548 from overleaf/mj-add-booktabs
[web] Add support for booktabs table style

GitOrigin-RevId: e3f7e1a867474a86e4b5f8c701d845d55592bb68
2025-05-19 12:26:48 +00:00
Miguel Serrano
a8b443fe5f [web] Update base-x dependency to 4.0.1 (#25581)
GitOrigin-RevId: 746f06a3abe75dbc7deb6ea181a15dfc24cd9d22
2025-05-19 12:26:43 +00:00
Domagoj Kriskovic
996c407393 Revert "Update AI Assist wording on checkout page if not in rollout (#25689)" (#25726)
This reverts commit 20a90b14e97b1a8837e8be697c1a9666ed15a1c3.

GitOrigin-RevId: 26d4ad8f1b3a7dbe884dfbe4f4be5ee632abed1e
2025-05-19 12:26:35 +00:00
Miguel Serrano
85533a36e9 [history-v1] Disable backups on CE/SP (#25591)
Disables backup when `backupStore` is not present,
as it's the case for CE/SP

GitOrigin-RevId: a920f041c639e599084fa97d2ef2643a01da70e3
2025-05-19 12:26:30 +00:00
Domagoj Kriskovic
d7ef7f0399 Update AI Assist wording on checkout page if not in rollout (#25689)
* Update AI Assist wording on checkout page if not in rollout

* update wording when buyin addon

GitOrigin-RevId: 20a90b14e97b1a8837e8be697c1a9666ed15a1c3
2025-05-19 12:26:26 +00:00
Domagoj Kriskovic
50a5c7984d Reinitialise Writefull toolbar after buying AI assist (#25596)
* Reinit Writefull toolbar after buying AI assist

* use refreshSession()

* add a timeout

* add a second refresh

GitOrigin-RevId: a2572d62bce0e344d92696e42d137a0b36574b3b
2025-05-19 12:26:21 +00:00
Miguel Serrano
cc3b020d88 [CE/SP] cron for daily runs of scripts/flush_all.js (#25575)
* [CE/SP] `cron` for daily runs of `scripts/flush_all.js`

GitOrigin-RevId: 9616e99c01491e2a410601f4e33917ed47990b11
2025-05-19 12:26:16 +00:00
Rebeka Dekany
957462b61c Update selector to target input[type='search'] (#25712)
GitOrigin-RevId: 492bda0eb70dd821dbfa3dbf818cafc1ef8975eb
2025-05-19 12:26:12 +00:00
CloudBuild
c4c8f521ff auto update translation
GitOrigin-RevId: 07588ad1e4cbc9028cf0de125b4c6c222e1b0ecc
2025-05-19 08:05:37 +00:00
M Fahru
7a0a6077cf Merge pull request #25692 from overleaf/mf-add-stickers-cms
[web] Add pen-yellow and support-green sticker in contentful

GitOrigin-RevId: 26beffd1bf75f9fdf1dba5b8e93b1190a642ff6d
2025-05-19 08:05:33 +00:00
Andrew Rumble
586820c34d Fix package version for socket.io
GitOrigin-RevId: 07a436ce0db5a0cd320964e3e9e7a5646877561b
2025-05-19 08:05:29 +00:00
Jakob Ackermann
18cd52cfa1 [real-time] avoid shutting down all pods simultaneously (#25627)
GitOrigin-RevId: e416e06588b915548c83d70433f411c9f303ad87
2025-05-19 08:05:25 +00:00
Jakob Ackermann
0e13796882 [real-time] bail out early upon hitting a redis error (#25614)
GitOrigin-RevId: 2563094d1ec8017450fdfdb2b0e77d74bbc825d1
2025-05-19 08:05:21 +00:00
Andrew Rumble
daa52d62fa Allow an empty origin request in real-time
This will only happen with a same-origin request (or if someone has
tampered with the request - in which case they could set anything).

Co-authored-by: Tim Down <158919+timdown@users.noreply.github.com>
GitOrigin-RevId: 9dfe49f974a476bfe215768d3984dd60a381d37a
2025-05-19 08:05:16 +00:00
Jakob Ackermann
e3e8d944b2 [web] fetch project members in a single db query (#25662)
* [web] fetch project members in a single db query

GitOrigin-RevId: ca749327d4783c67a3ad81f611cd7d3e7fa84028
2025-05-19 08:05:12 +00:00
Jakob Ackermann
14cbd44d9b [web] deletedDocs are not needed for joinProject anymore (#25654)
* [web] deletedDocs are not needed for joinProject anymore

* [web] cleanup unit tests

GitOrigin-RevId: 91c9bc60ec776757b3031cbc85c67ae1bf4adf4d
2025-05-19 08:05:08 +00:00
Jakob Ackermann
cb7d75202b [web] fetch users subscriptions once from project dashboard (#25652)
* [web] fetch users subscriptions once from project dashboard

* [web] fix types

GitOrigin-RevId: 18de18f8d4237d97087ef92eaa5052f253a92813
2025-05-19 08:05:04 +00:00
Jakob Ackermann
bc78432e62 [web] wait for prefetching of projects listing (#25650)
GitOrigin-RevId: 59fb0c74b8cf6a496e256960f7f2e83ace2c5ee0
2025-05-19 08:04:59 +00:00
CloudBuild
efa39ee664 auto update translation
GitOrigin-RevId: aaa30f0991b037c3829cebc655e1cd9086b6cba5
2025-05-16 08:07:20 +00:00
M Fahru
1440a47d53 Merge pull request #25560 from overleaf/mf-stripe-analytics-invoice-event
[web] Handle stripe analytics for the `subscription-invoice-collected` event

GitOrigin-RevId: cba56db820cac92a66307a05350c779e1198cbf3
2025-05-16 08:07:16 +00:00
M Fahru
81dd3c10a7 Merge pull request #25497 from overleaf/mf-send-subscription-renewed-event-stripe
[web] Send analytics events and user properties when user's subscription is renewed with the same plan

GitOrigin-RevId: c21436d942e8b1a2b8c9fca5827826bf0e8b8bdb
2025-05-16 08:07:12 +00:00
M Fahru
8017918063 Merge pull request #25490 from overleaf/mf-send-subscription-cancelled-and-reactivated-event-stripe-subscription
[web] Send analytics events and user properties for cancelled and reactivated event in Stripe subscription

GitOrigin-RevId: 07a4e6395be334c90910b5d421624c4daa703d3b
2025-05-16 08:07:04 +00:00
M Fahru
75ce58d0c6 Merge pull request #25404 from overleaf/mf-send-subscription-analytics-events
[web] Send analytics events and user properties when user start subscription using Stripe

GitOrigin-RevId: 9028397a5cb256df506e14beb1705191c9ae3f7f
2025-05-16 08:06:57 +00:00
Rebeka Dekany
bb66f75027 Add aria-label to the documentation searchbar and update the type to search (#25431)
GitOrigin-RevId: 782eb2238636040fedae628b17224f2e91159a34
2025-05-16 08:06:52 +00:00
Rebeka Dekany
3ef62472bd Fix back to your projects button (#25500)
GitOrigin-RevId: 98f84593bec190b24a225d4690414e4e9f1141e0
2025-05-16 08:06:48 +00:00
Rebeka Dekany
e282a74f7a Make links more descriptive on the Account settings page (#25558)
GitOrigin-RevId: 21cb7c02f7a5678b4c385da5b842ad6a5303169b
2025-05-16 08:06:44 +00:00
Antoine Clausse
10091811f7 Remove returns in functions with callback in CooldownManager (fix DeprecationWarning) (#25665)
GitOrigin-RevId: 3652ee78d533cb00ce5ec4de1a66a959ab418def
2025-05-16 08:06:33 +00:00
Antoine Clausse
67ab5a749a Update Node to 22.15.0 (#24699)
* Run `bin/update_node 20.18.2 22.15.0`

* Remove expects on `fetchMock.callHistory.done()` to fix tests: are they necessary?

* Set node version to `22.x` in linked-url-proxy

* Increase test timeout to 30s in `github-sync`, Add waiting steps

* Define `navigator.onLine` in tests setup

GitOrigin-RevId: 75eb556e9f51b665e57497a0879b6915d14069ce
2025-05-16 08:06:26 +00:00
Eric Mc Sween
2dd054d602 Merge pull request #25606 from overleaf/em-o-error-types
OError: handle unknown error types
GitOrigin-RevId: a52dd92a4f95cd738556612599805f41f24de69f
2025-05-16 08:06:22 +00:00
David
966cea3d8b Merge pull request #25550 from overleaf/dp-share-modal-proptypes
Remove proptypes from ShareProjectModal

GitOrigin-RevId: b95fed5007f72e4a57a65b1d08d8fcc9579b3630
2025-05-16 08:06:05 +00:00
David
b56556f37b Merge pull request #25547 from overleaf/dp-remove-reviewer-role-flag-frontend
Clean up reviewer-role feature flag from frontend

GitOrigin-RevId: 0cac59be58b0350c24f57d3e63898246b2bd6881
2025-05-16 08:06:00 +00:00
David
899f6d18d6 Merge pull request #25617 from overleaf/dp-projec-owner-email-overflow
Truncate long project owner names in project dashboard

GitOrigin-RevId: a3c98b359dc880a3f487c1a6de9a2fe4bb4913c1
2025-05-16 08:05:56 +00:00
David
449a5d6339 Merge pull request #25605 from overleaf/dp-track-changes-redirect
Redirect old track changes marketing page to track changes learn wiki page

GitOrigin-RevId: 890e7f746b71b8e5108e8209d55903f68adde1ea
2025-05-16 08:05:52 +00:00
David
4847c83cb8 Merge pull request #25618 from overleaf/dp-symbol-palette-proptypes
Remove Proptypes from SymbolPalette components

GitOrigin-RevId: 58b74652a5b47612c4622a7cac9b1ff3aadadfc5
2025-05-16 08:05:48 +00:00
David
69d99079b1 Merge pull request #25553 from overleaf/dp-clone-project-modal-proptypes
Remove Proptypes from CloneProjectModal

GitOrigin-RevId: 400f4c9de72eb1910a0ca067882a6358663303d3
2025-05-16 08:05:44 +00:00
Antoine Clausse
fee5ea8411 Remove returns of promises within functions with callbacks (address DeprecationWarning) (#25603)
* [document-updater] Don't return promises within functions with callbacks

Remove the errors:
DeprecationWarning: Calling promisify on a function that returns a Promise is likely a mistake
https://cloudlogging.app.goo.gl/YHDhoarvLEw2w9rXA

* Remove some more unnecessary returns in functions with callbacks, for consistency

* Add `sendCanaryAppliedOp` to excluded methods for promisification

GitOrigin-RevId: fa6d3e47c4e6561dc29d4c15e57c3289fc1f3dfa
2025-05-16 08:05:33 +00:00
Tim Down
5c4cb50628 Merge pull request #24988 from overleaf/td-bs5-upgrade-and-rename
Apply minor upgrades to Bootstrap 5 and react-bootstrap

GitOrigin-RevId: eb013f38515ebd4b9572d139f00841aca344e3c6
2025-05-16 08:05:28 +00:00
Tim Down
2ebc3a982a Merge pull request #25588 from overleaf/td-bs5-restricted-page
Migrate restricted page to BS5

GitOrigin-RevId: 7df26700b5e3b8fb08d061fd9e211bf09ca4e956
2025-05-16 08:05:24 +00:00
Jakob Ackermann
59f614a41b [web] use the common split-test for clsi-cache when cloning (#25644)
GitOrigin-RevId: 30377d69a9e1be11261eb6076f8996e71090fb9e
2025-05-16 08:05:07 +00:00
Jakob Ackermann
ec1bd69605 [clsi-cache] remove non sharded instances (#25645)
* Revert "[clsi-cache] only use sharding from updated project editor tabs (#25326)"

This reverts commit 1754276bed3186c0536055c983e32476cc90d416.

* [clsi-cache] remove non sharded instances

GitOrigin-RevId: aa3ac46140dfc1722a3350cf7071e5b11af61199
2025-05-16 08:05:02 +00:00
CloudBuild
40193752c4 auto update translation
GitOrigin-RevId: c67507e30704ca92838cf1b72ae911624fc66200
2025-05-14 08:07:41 +00:00
Jakob Ackermann
eebda2427e [clsi-cache] fix path traversal (#25585)
* [clsi-cache] fix path traversal

* [clsi-cache] double down on path traversal validation

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

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: 28a6a2024aae81e9b361db7918dc0c5381cd8246
2025-05-14 08:06:54 +00:00
Jakob Ackermann
e25a69936e [clsi-cache] base64 encode X-All-Files header if needed (#25579)
* [clsi-cache] base64 encode X-All-Files header if needed

* [clsi-cache] add explicit error check

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

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: bd3b6381b68398aac4a07e48cd69e6aa97e94f18
2025-05-14 08:06:49 +00:00
Jimmy Domagala-Tang
443fb3f152 Merge pull request #24739 from overleaf/dk-thankyou-page
Update "thanks for subscribing page" with AI Assist links

GitOrigin-RevId: 41a23d6fd5edfc8f9ad0f97e513e1ea66aed5bdc
2025-05-14 08:06:44 +00:00
Alf Eaton
fb0cfbe0bb Add more detail to word count UI (#25400)
GitOrigin-RevId: 3521f2ea03332e46ef1bac634ce0650cdce01249
2025-05-14 08:06:40 +00:00
Alf Eaton
bd67b4ca13 Improve review panel entry performance (#25402)
GitOrigin-RevId: 2a6ec8ad432195c6069bb58be37dd93341533817
2025-05-14 08:06:35 +00:00
Alf Eaton
6c96c70b28 Remove the full-project-search split test (#25444)
GitOrigin-RevId: b36c1c81152694547dcf044cfb2cb0f511bfdc22
2025-05-14 08:06:31 +00:00
Alf Eaton
b70e0166bd Remove zlib dependency from freegeoip (#25474)
GitOrigin-RevId: 9f61a0630ff6c4b7fd92f180fb58f91178567ede
2025-05-14 08:06:26 +00:00
Alf Eaton
60cdd252ef Add span between synctex button and tooltip (#25475)
GitOrigin-RevId: d1e7c71597566f916a9432d9114def791cf25fa8
2025-05-14 08:06:21 +00:00
Alf Eaton
c942b490ab Clamp PDF highlights to the extents of the page container (#25498)
GitOrigin-RevId: cc2e30b04b9c57b2ea6038bee1e06467b785386f
2025-05-14 08:06:16 +00:00
Jimmy Domagala-Tang
732b365683 Merge pull request #25568 from overleaf/jdt-rely-on-user-feats-for-assist-paywall-button
Rely on user features when showing the get assist paywall button post upgrade

GitOrigin-RevId: 2218171eb57996ee962b4ddc94c1749ad65b9c1b
2025-05-14 08:06:04 +00:00
Jimmy Domagala-Tang
dd351f64fb Merge pull request #25587 from overleaf/dk-select-table-size-fix
Prevent "select size" popover in TableDropdown from closing when toolbar is collapsed

GitOrigin-RevId: 82f8226e0ff071dfea965c8c991141d90ff72197
2025-05-14 08:06:00 +00:00
Jimmy Domagala-Tang
5730cd3dde Merge pull request #25577 from overleaf/dk-assist-promition-spacing-fix
Fix alignment issue in equation and table generator promotion

GitOrigin-RevId: 2f085e266b0385efcae546b89e2c73388764bae3
2025-05-14 08:05:55 +00:00
Mathias Jakobsen
b52c0bf08e Merge pull request #25534 from overleaf/mj-table-gen-color
[web] Fix table generator edited cell color

GitOrigin-RevId: 7ad762954637b13022a361f87fdf08f7dc97e17f
2025-05-14 08:05:43 +00:00
Mathias Jakobsen
587390d066 Merge pull request #25514 from overleaf/mj-ide-pdf-controls-editor-only
[web] Hide PDF controls from menu bar in editor only mode

GitOrigin-RevId: 91513e40693e1214c3bdbc56d9dec19e08c74e36
2025-05-14 08:05:38 +00:00
ilkin-overleaf
21c035b8d5 Merge pull request #25468 from overleaf/ii-flexible-licensing-invoice-date
[web] FL next invoice date formatting

GitOrigin-RevId: 5f4f86d4f11c7ee217ff806d26fc3f8a79e5affc
2025-05-14 08:05:34 +00:00
Rebeka Dekany
6d35305d7d Use the semantic <details> HTML tag instead for disclosure (#25489)
GitOrigin-RevId: 9ed634529a17abd0693441c7563262ed5d1c7f88
2025-05-14 08:05:25 +00:00
Rebeka Dekany
271635491a Remove incorrect "button" role from navigational links that are styled as buttons (#25504)
GitOrigin-RevId: 717b20a6f2e893034eb12547fa663d358c0de419
2025-05-14 08:05:21 +00:00
Antoine Clausse
aa002369cb Update defaultHighWaterMark to 64KiB (Node 22's default) (#25522)
* Set defaultHighWaterMark to 16KiB

This is already the default in Node 20

* Set defaultHighWaterMark to 64KiB

Per https://github.com/overleaf/internal/pull/25522#issuecomment-2872035192

GitOrigin-RevId: 19d731abf683066654027de3a4f9ac0b8916f22c
2025-05-14 08:05:16 +00:00
Rebeka Dekany
7c79c3b4c3 Add ARIA attributes for menu and separator (#25501)
GitOrigin-RevId: ef80d2811ecee78adc8bb359cf3b059d79fe9900
2025-05-13 08:08:36 +00:00
Rebeka Dekany
ac51878186 Improve ARIA labels for buttons and links on the Account setting page (#25499)
* Improve announced button and link labels for screen reader users

* Improve labels for integration widgets and update test

* Make integration widget IDs to be required

GitOrigin-RevId: 1e0124ef63a91fb63dffd79881c60794bccb9d27
2025-05-13 08:08:31 +00:00
Rebeka Dekany
3cb7ef05d9 Fix undefined alt text for images (#25447)
GitOrigin-RevId: 59efe870275f3dcbabecf1c3d115e7a7a85be594
2025-05-13 08:08:27 +00:00
Christopher Hoskin
7356c3b863 Merge pull request #25543 from overleaf/csh-issue-23942-more-migrate
Remove more CR refs

GitOrigin-RevId: 7ba91712943c309d40613b0f7247f20d45d7fbb1
2025-05-13 08:08:22 +00:00
Tim Down
11d964649c Merge pull request #25502 from overleaf/td-chat-open-bug
Prevent chat opening by default for new user

GitOrigin-RevId: 260050c26f6b9dee7ea52284dadb7ed00ce9eddb
2025-05-13 08:08:11 +00:00
David
8d940ad841 Merge pull request #25387 from overleaf/dp-editor-toolbar-proptypes
Remove proptypes from editor-navigation-toolbar components

GitOrigin-RevId: 77a1c4e13e3da6c06bb515b0137da2f70bfdf4a8
2025-05-13 08:08:06 +00:00
David
8e31c30ec7 Merge pull request #25398 from overleaf/dp-file-tree-proptypes
Remove PropTypes from file-tree components

GitOrigin-RevId: 7ecbf9778da59b852be8678c5dff61e13d927b9c
2025-05-13 08:08:02 +00:00
Jimmy Domagala-Tang
82e5b2c5d7 Merge pull request #25151 from overleaf/dk-use-user-features
UserFeaturesContext with cross-tab syncing via BroadcastChannel

GitOrigin-RevId: 4262719f5018f5717211851ce28b3255af65461a
2025-05-13 08:07:57 +00:00
Jimmy Domagala-Tang
2f3166aa54 Merge pull request #25517 from overleaf/dk-fix-get-error-assist-translation
Fix translation for "get_error_assist"

GitOrigin-RevId: ea9ef20b8d94e49e89cc77cc6517da25d002ba7f
2025-05-13 08:07:53 +00:00
Jimmy Domagala-Tang
8234e80931 Merge pull request #25538 from overleaf/jdt-fix-assist-interstitial-on-redesign
Add assist interstitial to editor redesign

GitOrigin-RevId: 97c2447bb6f6b47864563fac45ea8da46ca83777
2025-05-13 08:07:48 +00:00
Jimmy Domagala-Tang
3bfc3ee7ae Merge pull request #25540 from overleaf/jdt-push-assist-interstitial-higher-z-index
Fix assist promotion being hidden under error logs pane

GitOrigin-RevId: 715d82ddd98ce5e15ce2e42935526387b4c6fa1b
2025-05-13 08:07:44 +00:00
Eric Mc Sween
732b1d146e Merge pull request #25456 from overleaf/em-concurrency-handling
Add consistency constraints to the chunk store and Redis buffer

GitOrigin-RevId: 6f983ff207a13d204645e343290c94443dc537b0
2025-05-13 08:07:36 +00:00
Jimmy Domagala-Tang
bf22684e2d Merge pull request #25507 from overleaf/jdt-show-wf-src-on-admin
Add premium source for Writefull entitlment to the Admin page

GitOrigin-RevId: 937b6d588d0f9328eb450809a0cd2f0e4b0ea299
2025-05-13 08:07:03 +00:00
Jimmy Domagala-Tang
1ec12e3d88 Merge pull request #25493 from overleaf/jdt-ai-assist-entitlement-fix
Access addOnCode correctly when determining bundle entitlement

GitOrigin-RevId: c3aee15b3ef6fc1d32f24283ec848e600f0777f1
2025-05-13 08:06:59 +00:00
Jimmy Domagala-Tang
50c2d8f32f Merge pull request #25405 from overleaf/jdt-wf-rebrand-popover
Writefull Rebranded Features Editor Promotion

GitOrigin-RevId: 49beddbfa44bacf1546543e172dc8edcdb3784bc
2025-05-13 08:06:50 +00:00
Domagoj Kriskovic
b99a81cb25 Fix monthly price if billed annually for AI Assist (#25297)
* Fix monthly price if billed annually for AI Assist

* update script

* show annual price

* fix formatting

GitOrigin-RevId: e50493fa2176e6c8acb476a01a393eb940a3f1a2
2025-05-13 08:06:39 +00:00
Domagoj Kriskovic
c1f3758aa2 Add script to update null references in for readOnly_refs and pendingReviewer_refs (#25417)
* Add script to update null references in for readOnly_refs and pendingReviewer_refs

* update script to only update readOnly_refs

* clean up

* use projectAuditLogEntries to find relevant projects

* use updateOne

GitOrigin-RevId: bbeaa04b837ebb657c802598f0de72879f641bd0
2025-05-13 08:06:23 +00:00
Kristina
67a436b639 Merge pull request #25469 from overleaf/mj-paste-tables-multicol
[web] Improve borders and column definitions of pasted tables with multi-column cells

GitOrigin-RevId: fe9c44bd8ac6a34e8a8057f1a07d97771a116e1a
2025-05-13 08:06:10 +00:00
Kristina
70c26b6ed2 [web] prevent downgrade to personal upsell for stripe subscriptions (#25392)
GitOrigin-RevId: a954f42e1159e4bcc8fd06f5f6df9a53c67f9f90
2025-05-13 08:06:05 +00:00
Brian Gough
0d70223a48 Merge pull request #25482 from overleaf/bg-fix-bull-exporter-errors
retain completed and failed jobs for backup queue

GitOrigin-RevId: 7831ce2565dc493e3ce7f55001207daea2140575
2025-05-13 08:05:40 +00:00
Liangjun Song
caf8b5c3c5 Merge pull request #25329 from overleaf/ls-enable-stripe-checkout-for-group-plan
Enable stripe checkout for group subscriptions

GitOrigin-RevId: 10a579ebca789773bd2c94f8240b7b979b6e8eb0
2025-05-13 08:05:32 +00:00
Eric Mc Sween
5506e0d58e Merge pull request #25302 from overleaf/em-pkce-support-enforcement
Enforce pkceEnabled flag in OAuth configuration

GitOrigin-RevId: 8e941179017712050570f13522ec42814aa58c06
2025-05-12 08:06:11 +00:00
Mathias Jakobsen
ddfadbc474 Merge pull request #25422 from overleaf/mj-ide-rail-badges-placement
[web] Editor redesign: Improve badge locations for Rail buttons

GitOrigin-RevId: 11eef60e6ab35003b21fa1ebf0bde4588c5f7228
2025-05-12 08:05:56 +00:00
Mathias Jakobsen
3c3414a7d3 Merge pull request #25435 from overleaf/mj-review-panel-tests
[web] Add review panel cypress tests

GitOrigin-RevId: e953519fc8fed089df59970ee3c745b06d78ddfb
2025-05-12 08:05:52 +00:00
Brian Gough
9762cf95e3 Merge pull request #25463 from overleaf/bg-history-redis-fix-logging-in-expire-worker
reduce expire_redis_chunks log verbosity in production

GitOrigin-RevId: afcf6edc7154d49714bc60c276c129d70eaa49c7
2025-05-12 08:05:44 +00:00
Jakob Ackermann
bc4550c1f9 [CI] temporarily disable flaky tests (#25443)
GitOrigin-RevId: 4ed83e7b79d7aee0d7fab4594d4f7c8697e0cab4
2025-05-12 08:05:28 +00:00
Jakob Ackermann
fba8f776a1 [web] avoid trying to fetch synctex.gz from clsi-cache in free projects (#25445)
* [web] avoid trying to fetch synctex.gz from clsi-cache in free projects

* [clsi] parse boolean query parameter

GitOrigin-RevId: 99c98aac8147a626b704e9a888b7fc660cc5ab17
2025-05-12 08:05:24 +00:00
Brian Gough
9e07549ecb Merge pull request #25449 from overleaf/bg-histoy-redis-refactor-expire-worker
refactor the expire worker to make it easier to extend

GitOrigin-RevId: 7b277b243ed51ab3b46316d98b7157af95a9e42b
2025-05-12 08:05:19 +00:00
CloudBuild
0a0dc13030 auto update translation
GitOrigin-RevId: 4dbc6d69264f37aa2532aab2a92db943f90e0947
2025-05-09 08:06:31 +00:00
M Fahru
5ba31ab14f Merge pull request #25363 from overleaf/mf-stripe-webhook-delete-subscription
[web] Delete "expired" subscription in Stripe (in Stripe, this is called "canceled" status)

GitOrigin-RevId: 847cf431c2f6edd7ec6c4e17137d163e450dc4f1
2025-05-09 08:06:26 +00:00
M Fahru
c50bd6af89 Merge pull request #25372 from overleaf/kh-support-canceling-pending-stripe-change
[web] cancel pending Stripe subscription change

GitOrigin-RevId: c1d21a7d1c3962c20d589b1dd10f6c2a4c8e4be4
2025-05-09 08:06:22 +00:00
Eric Mc Sween
391fca9e83 Merge pull request #25361 from overleaf/em-load-latest-raw
Rename loadLatestRaw() to getLatestChunkMetadata()

GitOrigin-RevId: e089dcfa57cbbc43df8666b51eca0d81d595a5a7
2025-05-09 08:06:14 +00:00
Eric Mc Sween
5717ea7f5c Merge pull request #25306 from overleaf/em-redis-buffer-read-operations
Add changes from Redis when reading chunks from the chunk store

GitOrigin-RevId: c0ebf0669b91eb2efc5d1091d025e81efdff9fe4
2025-05-09 08:06:09 +00:00
Eric Mc Sween
7ea1b690f2 Configure PKCE support in OAuth clients (#25300)
This flag will control whether or not a particular client is allowed to
use PKCE instead of a client secret when requesting an access token.

GitOrigin-RevId: b9471112a485233308410e0cb7f20e20a613a971
2025-05-09 08:06:04 +00:00
Jakob Ackermann
d489e35782 [web] emit event when synctex mapping was downloaded from clsi-cache (#25424)
* [clsi] tell frontend when synctex mapping was downloaded from clsi-cache

* [web] emit event when synctex mapping was downloaded from clsi-cache

GitOrigin-RevId: 1f6b7e0faaa7dd76449aad566802da971a4cf9ed
2025-05-09 08:06:00 +00:00
Jakob Ackermann
8d4f258494 [web] retry fetching initial compile from cache response (#25436)
* [web] move building of compile from cache response into manager

* [web] retry fetching initial compile from cache response

GitOrigin-RevId: b4dc89f1b91d99e869c0c7789881dc72d8a5761f
2025-05-09 08:05:55 +00:00
Brian Gough
dc73a18ca4 Merge pull request #25432 from overleaf/em-redis-buffer-strict-apply
Use strict validation for the Redis buffer

GitOrigin-RevId: 43e73af5deabbf3de9f5eed14f062acc5fa35e36
2025-05-09 08:05:50 +00:00
Brian Gough
9cf284aefa Merge pull request #25414 from overleaf/bg-history-only-log-content-mismatch-once-per-request
log warning for content hash mismatch only on first occurrence

GitOrigin-RevId: ff09f8c262461488bd564ea0644d414bb32ff17e
2025-05-09 08:05:46 +00:00
Jakob Ackermann
3242376d19 [server-ce] add notice for CE users on disabling sandboxed compiles (#25425)
Co-authored-by: Mathew Evans <matt.evans@overleaf.com>
GitOrigin-RevId: 977625975af6ac68a33356dc4c39af98791e8708
2025-05-09 08:05:34 +00:00
David
2ea03af559 Merge pull request #25411 from overleaf/dp-clone-project-translation
Add missing translation for clone project modal name placeholder

GitOrigin-RevId: 7ee99d811f31eaa0441d2e9b9f579f29ff1cb368
2025-05-09 08:05:29 +00:00
Mathias Jakobsen
1b5d31941e Merge pull request #25383 from overleaf/mj-ide-long-title
[web] Editor redesign: Allow project name to shrink

GitOrigin-RevId: 4d25291437fae9672f0d0d4d20bde269f771020a
2025-05-09 08:05:25 +00:00
Mathias Jakobsen
9cb2b48c1e Merge pull request #25373 from overleaf/mj-reorder-tpr
[web] Reorder third party reference managers

GitOrigin-RevId: 283d50674fdcc60b7a32e4e7846c6638c591937a
2025-05-09 08:05:20 +00:00
Brian Gough
6eada92966 Merge pull request #25406 from overleaf/em-content-hash-validation-resync
Resync project when content hash validation fails

GitOrigin-RevId: ea9b5a78f89c55276fd67835bc262717bc778e92
2025-05-09 08:05:12 +00:00
ilkin-overleaf
2ccdb74d20 Merge pull request #25318 from overleaf/ii-flexible-licensing-manually-collected-3
[web] Add seats feature for manually collected subscriptions improvements

GitOrigin-RevId: 4fbd93097590d97ad6464d1988471a78bf7cb9e2
2025-05-09 08:05:07 +00:00
CloudBuild
d39d92cce8 auto update translation
GitOrigin-RevId: b57698529938bdf3227696cf8fbfde7f763a43d5
2025-05-08 08:06:55 +00:00
M Fahru
0335367c75 Merge pull request #25296 from overleaf/kh-support-upgrading-stripe-subscription
[web] support upgrading Stripe subscription

GitOrigin-RevId: 2663ca8f1c028a45cf47d3ab37c387c4f4b39f9a
2025-05-08 08:06:47 +00:00
M Fahru
fa553128a4 Merge pull request #25289 from overleaf/kh-rm-dead-coupon-code
[web] rm unused couponCode parameter

GitOrigin-RevId: c8c262322d74214e43870e67758aaa98aaa60c79
2025-05-08 08:06:42 +00:00
Jakob Ackermann
b3a1341545 [web] settle on a single split-test for the clsi-cache rollout (#25399)
* [web] settle on a single split-test for the clsi-cache rollout

Use the split-test that was used for rolling out the writes so that we
can use their already populated caches.

* [clsi-cache] fix non-sharded clsi-cache in dev-env

GitOrigin-RevId: 6ebd6369183342fe6d5e325b760d011fd1d57516
2025-05-08 08:06:37 +00:00
Jessica Lawshe
4b5f31ac95 Merge pull request #25353 from overleaf/revert-25351-revert-24919-jel-create-group-audit-log
Revert "Revert "[web] Add group audit log""

GitOrigin-RevId: 4d61cfd9e8a7dac1f5837a4028aff95fa19c308a
2025-05-08 08:06:32 +00:00
Brian Gough
ad94c29659 Merge pull request #25391 from overleaf/em-queue-changes-verification-rollout-stage-2
queue changes verification rollout stage 2

GitOrigin-RevId: c79a5a252c6fc8caf6fd164a31e6e360b6fc3e73
2025-05-08 08:06:27 +00:00
Brian Gough
ec91c120b1 Merge pull request #25284 from overleaf/em-queue-changes-verification
Exercise the Redis buffer when persisting changes

GitOrigin-RevId: a649b9808b6472e7c5dd9c8bfa6e3c98fb6ef4d4
2025-05-08 08:06:22 +00:00
Jimmy Domagala-Tang
9f0f910a83 Merge pull request #25251 from overleaf/jdt-show-wf-provided-bundle-on-free-plans
Show AI Assist entitlment via Writefull on free user's subscriptions page

GitOrigin-RevId: 20a456a231f60df279b949057972125735166904
2025-05-08 08:06:14 +00:00
Jimmy Domagala-Tang
fbbba7a3df Merge pull request #24816 from overleaf/jdt-update-checkout-for-bundle
Update checkout pages for AI Assist bundle content

GitOrigin-RevId: e2e1b705dd92e0858835d18eb6d8c5750030e550
2025-05-08 08:06:09 +00:00
Jimmy Domagala-Tang
6973ba4244 Merge pull request #25090 from overleaf/jdt-align-wf-rebrand-split-test
Align Writefull bundle changes to same split test

GitOrigin-RevId: 28eb7c0835a38d4989461d941efc3e8c0cdcfecb
2025-05-08 08:06:04 +00:00
Jakob Ackermann
e8b5ee2ff9 [history-ot] initial implementation of using doc-level history-ot (#25054)
* [history-v1-ot] initial implementation of using doc-level history-v1-ot

* [web] fix advancing of the otMigrationStage

Use 'nextStage' for the user provided, desired stage when advancing.

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

* [document-updater] document size check in editor-core

* [history-ot] rename history-v1-ot to history-ot and add types

* [history-ot] apply review feedback

- remove extra !!
- merge variable assignment when processing diff-match-match output
- add helper function for getting docstore lines view of StringFileData

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>

* Revert "[document-updater] add safe rollback point for history-ot (#25283)"

This reverts commit d7230dd14a379a27d2c6ab03a006463a18979d06

Signed-off-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

---------

Signed-off-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
Co-authored-by: Brian Gough <brian.gough@overleaf.com>
Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
GitOrigin-RevId: 89c497782adb0427635d50d02263d6f535b12481
2025-05-08 08:05:44 +00:00
David
4d93187e58 Merge pull request #25354 from overleaf/dp-editor-redesign-modal
Update editor switcher modal contents

GitOrigin-RevId: 98772328004303c43ff3f9f0edbf8b0725041c60
2025-05-08 08:05:32 +00:00
David
efb66b4d2f Merge pull request #25327 from overleaf/dp-word-count
Add word count to file menu in new editor

GitOrigin-RevId: a5cb4d6cd37c46775056f696c0f19fcabd3f4131
2025-05-08 08:05:27 +00:00
Jakob Ackermann
e4156e19b8 [web] use raw compile timeout in compile-result-backend event (#25141)
The alias was broken following the 60s -> 20s compile timeout change.

GitOrigin-RevId: c2172090e17be60490adaae245a1f0b045e93cf1
2025-05-08 08:05:14 +00:00
Brian Gough
f9b36cd5be Merge pull request #25241 from overleaf/bg-remove-existing-chunk-buffer
remove existing chunk redis backend and chunk buffer

GitOrigin-RevId: 28fb02d1802312de6892e2fb7dd59191e3fc8914
2025-05-08 08:05:09 +00:00
Jakob Ackermann
5cc0895c56 [clsi] enable keepAlive on global HTTP agents (#25350)
GitOrigin-RevId: c9478b405ac32ca55aeb3bcf9f24052477464667
2025-05-07 08:08:10 +00:00
Antoine Clausse
07b37abcb3 [web] Improve FileTooLargeError handling in FileWriter.js (#25278)
* Improve FileTooLargeError handling in FileWriter.js

* handle errors on passThrough stream
* unlink files on error
* fail `writeUrlToDisk` if content-length header is too large

With Node 22, the test `Open In Overleaf - when POSTing a snip_uri for a file that is too large` fails.

I initially tried replacing it with a check of the `content-length` header. But then I managed to make the old test pass by adding a handler (`passThrough.on('error', ...)`)

* Unlink files asynchronously, add stream destroys on error

* Remove eslint disables

* Remove `stream.on('error', ...)` and `passThrough.on('error', ...)`

* Revert `Content-Length` check

* Re-add `stream.on('error', errorHandler)`; Remove it on 'response'

* Only report unlink errors there is an error(!!) that's not ENOENT

GitOrigin-RevId: fefe49519ec6f54df5eef69a2c2a75518f9d3748
2025-05-07 08:08:06 +00:00
Antoine Clausse
e7329b9660 [web] Remove script remove_emails_with_commas.mjs (#25356)
It ran in prod and updated 112 users

GitOrigin-RevId: 730f6544e7a5bb4d08095b48fb697b5c8e7a08be
2025-05-07 08:08:01 +00:00
Antoine Clausse
eddeca2942 [history-v1] Update config from 1.31.0 to 3.3.12 (#25077)
This removes some DeprecationWarnings in history-v1

The update should be safe:
```
  3.0.0 / 2018-11-20
  Ensure config array items and objects are sealed @fgheorghe
  This required a major version bump in case someone
  relied on the ability to mutate non-sealed data.

  2.0.0 / 2018-07-26
  Potential for backward incompatibility requiring a major version bump.

  Safe to upgrade to major version 2 if you're using a recent NodeJS version and you're not trying to mutate config arrays.

  Added array immutability - jacobemerick
  Removed Node V.4 support
```

https://github.com/node-config/node-config/blob/master/History.md

GitOrigin-RevId: 8384247d1ad2cd659703b4ba50edf7212076dcf3
2025-05-07 08:07:56 +00:00
M Fahru
661aa20c09 Merge pull request #25288 from overleaf/mf-stripe-webhook-subscription-updated
[web] Handle `customer.subscription.updated` stripe webhook event type

GitOrigin-RevId: 821baee5d5a45b92ee7bce47598a5e3ea5aa95ea
2025-05-07 08:07:44 +00:00
M Fahru
6c3cc794a4 Merge pull request #25161 from overleaf/mf-stripe-webhook
[web] Implement stripe webhook for `customer.subscription.created` event type

GitOrigin-RevId: f32e7607ddf900211efbe487bcd1f09172100178
2025-05-07 08:07:39 +00:00
Jessica Lawshe
12939b91b3 Merge pull request #25351 from overleaf/revert-24919-jel-create-group-audit-log
Revert "[web] Add group audit log"

GitOrigin-RevId: cf192bbe3ebdb693f18bab9c1c5d08da18ed34c0
2025-05-07 08:07:34 +00:00
Tim Down
f72a34f25b Merge pull request #25348 from overleaf/td-react-18-flaky-tests
Attempt to fix two flaky frontend project dashboard tests

GitOrigin-RevId: 1d5c3a05f7439ad3e22e5de96da8628ad8dd27c5
2025-05-07 08:07:29 +00:00
Jimmy Domagala-Tang
c060358cd8 Merge pull request #25223 from overleaf/jdt-dk-commons-toggle-annual-discount-bundle
Allow for commons to toggle annual for the AI Assist bundle

GitOrigin-RevId: 719dbb4944e3a447e03aa5c3fee7d0f5a0ce005b
2025-05-07 08:07:25 +00:00
Jimmy Domagala-Tang
f29bd47911 Merge pull request #25252 from overleaf/jdt-add-addon-to-cancellation-mssg-in-subs
Show Assist Add-on for pending and cancelled subscriptions

GitOrigin-RevId: df733d7078c231a5de989bc070b37e3c250fdb37
2025-05-07 08:07:20 +00:00
Jessica Lawshe
59275eeb84 Merge pull request #24919 from overleaf/jel-create-group-audit-log
[web] Add group audit log

GitOrigin-RevId: b59c38c57f555f18cdfa5dd697ad38d78b590996
2025-05-07 08:07:12 +00:00
Antoine Clausse
bc4c3c4ef8 [web] Promisify ClsiCookieManager and CompileController (reapply again) (#25280)
* Reapply "[web] Promisify ClsiCookieManager and CompileController (reapply and fix)"

This reverts commit 98cb9127ff2b7c7c347c560766f749265d712490.

* Fix: Use query parameters correctly (!!)

* Add unit test on `checkIsLoadSheddingEvent`

* Remove interference between tests: rename to `ClsiCookieManager2` when it's re-sandboxed

* Add test: 'should report "cycle" when other is UP'

GitOrigin-RevId: 3146b149954b908830226cb03b51d9adfa08ec2e
2025-05-07 08:07:07 +00:00
Antoine Clausse
e3dd47ba6e [web] Fix date format in emails.createdAt, use new Date() instead of Date.now() (#25322)
GitOrigin-RevId: c94700accb1df902926779c1e6321be63cf65235
2025-05-07 08:07:02 +00:00
Antoine Clausse
81941ff335 Update some dependencies so they're compatible with Node 22 (#25317)
* `"@google-cloud/profiler": "^6.0.3"`

* `bin/npm update pprof`

* `bin/npm update nan`

* `bin/npm update @google-cloud/profiler`

* Ignore false positive of `@typescript-eslint/return-await`

> Returning an awaited value that is not a promise is not allowed
Though the function was promisified

GitOrigin-RevId: 24dbe3e8df2b55c0b9583ac79a61e0956ac3fac0
2025-05-07 08:06:57 +00:00
Antoine Clausse
9a2847dbee [web] Add startup metrics (#25277)
* [web] refactor startup sequence

The primary objective here is to call loadGlobalBlobs() only once.
But to get there, we need to reorder things and add extra try/catch
sections to ensure we are not letting the global uncaughtException
handler catch startup errors.

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>

* [web] add metrics for startup steps

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: c73edea02516e919d55b896588dcd1862835fedf
2025-05-07 08:06:52 +00:00
Antoine Clausse
f0856c862f [web] Migrate two-factor-authentication module to BS5 (#25181)
* Delete unused file error.pug

* Revert-me: Enable 2FA locally

* Migrate 2FA pages to BS5

* Add BS5 notification classes to hydrate-form.js

* Revert "Revert-me: Enable 2FA locally"

This reverts commit 2874bedb05e579623e5beb6cf518aa8608808802.

* Fix: Re-add .text-capitalize on button

* Use `notification` mixin for success state

* Append complex notifications with icons in `showMessages`

* Keep the BS3 version of the notification in `showMessages`, move the BS5 implementation to `createNotificationFromMessageBS5`

Check the Boostrap version with `!window?.Frontend?.['bootstrap-3']`, which is a bit hacky

* Update breakpoings in 2FA form to leave more room for error notification

* Address PR comments:

* Remove useless `createTextNode`
* Use `isBootstrap5`
* `Setup` -> `Set Up`

GitOrigin-RevId: d7285853ea1191da7711b7bada8d65ff064bc27d
2025-05-07 08:06:48 +00:00
Jakob Ackermann
6881ba956a [clsi-cache] only use sharding from updated project editor tabs (#25326)
GitOrigin-RevId: 1754276bed3186c0536055c983e32476cc90d416
2025-05-07 08:06:39 +00:00
Alf Eaton
bfe42734bc Merge pull request #25261 from overleaf/ae-textlayer-layer
Move `will-change: transform` to textLayer

GitOrigin-RevId: 15fdd919da54ed95e115d664156066e6fda36982
2025-05-07 08:06:31 +00:00
Alf Eaton
c3368167d0 Remove z-index from outline elements (#25265)
GitOrigin-RevId: 39b85a478b71bf42ebb6b886b6ae1b4ed6557570
2025-05-07 08:06:26 +00:00
Jakob Ackermann
5ce1685b5b [clsi-cache] shard each zone into three instances (#25301)
* [clsi-cache] shard per zone into three instances

Keep the old instance as read fallback. We can remove it in 4 days.

Disk size: 2Ti gives us the maximum write throughput of 240MiB/s on a
N2D instance with fewer than 8 vCPUs.

* [clsi] fix format

* [k8s] clsi-cache: bring back storage-classes

* [k8s] clsi-cache: fix reference to zonal storage-classes

* [k8s] clsi-cache: add logging configs

* [clsi] improve sharding

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

* [clsi] fix sharding

Index needs to be positive.

* [clsi] fix sharding

The random part is static per machine/process.

* [clsi] restrict clsi-cache to user projects

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

* [k8s] clsi-cache: align CLSI_CACHE_NGINX_HOST with service LB

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: 1efb1b3245c8194c305420b25e774ea735251fb3
2025-05-07 08:06:16 +00:00
Tim Down
aa97dbdbb6 Merge pull request #25269 from overleaf/td-flaky-tags-test
Add waits for flaky tag list test

GitOrigin-RevId: 9d0bf2acd54d07e96fe6837296176e62bf981947
2025-05-07 08:05:59 +00:00
David
42eb4b2779 Merge pull request #25320 from overleaf/dp-review-panel-shortcut
Fix open review panel shortcut in new editor

GitOrigin-RevId: 3e4b65ad1f1943574ba937460722912ff382bc39
2025-05-07 08:05:51 +00:00
David
0261d701a7 Merge pull request #25238 from overleaf/dp-tooltips
Add tooltip to new editor home button

GitOrigin-RevId: 91f47659caf64a7ee31ed156d4ee2d5c933e05b8
2025-05-07 08:05:46 +00:00
David
08c5b11689 Merge pull request #25248 from overleaf/dp-history-text-color
Add explicit color for history text

GitOrigin-RevId: 4b595ea824d75181c041d44fc48ea81fec864316
2025-05-07 08:05:41 +00:00
David
1cd8eba098 Merge pull request #25249 from overleaf/dp-chat-message-read
Mark messages as read when opening chat tab

GitOrigin-RevId: d0e3290cad72716cbbdf5b6cc92f6c1d387a92c7
2025-05-07 08:05:36 +00:00
Jakob Ackermann
07b2255426 [misc] cleanup .dockerignore and .gitignore files (#25312)
- Remove settings ignore, they are inconsistent and break local prettier
- Remove .dockerignore files, only root ignore file is used
- Move .idea/.run/*.swp/coverage to root
- Remove .npmrc entries, we are no longer writing the rc file
- Remove node_modules/.DS_Store, is contained in root
- Remove cruft

GitOrigin-RevId: 3025fd5acaef343312f55149466c638e759a6e1f
2025-05-07 08:05:24 +00:00
Jimmy Domagala-Tang
d95340edbc Merge pull request #25145 from overleaf/jdt-wf-premium-src
Add premium source to Writefull entitlement sync

GitOrigin-RevId: bbebd7741efdf40a444768255b4aade857aca602
2025-05-06 08:05:32 +00:00
Jakob Ackermann
a5e2708eae [document-updater] add safe rollback point for history-ot (#25283)
GitOrigin-RevId: d7230dd14a379a27d2c6ab03a006463a18979d06
2025-05-06 08:05:28 +00:00
M Fahru
c8a410d358 Merge pull request #25155 from overleaf/mf-use-stripe-v18
[web] Upgrade stripe to v18

GitOrigin-RevId: df522f73132e99e38f1716bf33e8ff4881bd5430
2025-05-06 08:05:19 +00:00
Domagoj Kriskovic
473f767465 Update event tracking for AI assist payment flow (#25222)
GitOrigin-RevId: feb7987b1397d70b3a04c797bd2db92e42c325f5
2025-05-06 08:04:56 +00:00
CloudBuild
ffbb09e1d4 auto update translation
GitOrigin-RevId: a7a660549ae9997345e376977da0880a239541ea
2025-05-05 08:06:03 +00:00
Tim Down
057f4b4bb5 Merge pull request #25113 from overleaf/td-remove-button-info-variant
Change labs/new editor buttons to be based on secondary buttons

GitOrigin-RevId: f02565e60be33ff75c217c1ea1d0f24b3b619ed4
2025-05-05 08:05:40 +00:00
Tim Down
d9587e8b06 Merge pull request #25264 from overleaf/bg-td-account-deletion-logging
Add logging for each stage of user deletion

GitOrigin-RevId: 13f9575012fcd8f166c4b14eba2ee5910658072e
2025-05-05 08:05:36 +00:00
Mathias Jakobsen
50c9de6178 Merge pull request #25262 from overleaf/mj-project-search-signup-date-promo
[web] Only show full-project-search promotion to older users

GitOrigin-RevId: 086d904d2f78c2eba30e1db37ac8eb3c606f118f
2025-05-05 08:05:31 +00:00
Mathias Jakobsen
7a072164a2 Merge pull request #25127 from overleaf/mj-full-project-search-promotion
[web] Add promotion for full-project-search

GitOrigin-RevId: e102dbf7df8b63afc592c57ebf6dafa51efdf9ff
2025-05-05 08:05:23 +00:00
Mathias Jakobsen
930401541d Merge pull request #25190 from overleaf/mj-survey-signup-limits
[web] Add options to limit survey exposure based on signup date

GitOrigin-RevId: 5719997339b5040d5cc42ffe7bee6d7b66bff12d
2025-05-05 08:05:18 +00:00
Mathias Jakobsen
081fced4bd Merge pull request #25217 from overleaf/mj-beamer-arrow-links
[web] Fix arrow movement in beamer presentation mode after link click

GitOrigin-RevId: 85701d9c918889981faa34f1adb57fb901d7b9df
2025-05-05 08:05:14 +00:00
Jimmy Domagala-Tang
22ad3a86a9 Merge pull request #25148 from overleaf/jdt-bundle-price-update
Update prices and naming for AI Assist bundle

GitOrigin-RevId: ece300a9d009a9e17594d3c052b33321c9b17f82
2025-05-02 08:06:10 +00:00
M Fahru
dd3ae65bd2 Merge pull request #25166 from overleaf/kh-cancel-subscription
[web] support canceling Stripe subscription

GitOrigin-RevId: a72ccb20fbef9b6662cdfa1dcffacbd76dcb694c
2025-05-02 08:06:02 +00:00
Eric Mc Sween
2a88d7d9c9 Merge pull request #25152 from overleaf/em-ds-mobile-app
Endpoints for DS mobile app

GitOrigin-RevId: c7cf867bde60a0293c1c9f68f5a08515d0d2e904
2025-05-02 08:05:57 +00:00
Eric Mc Sween
6f05a43f32 Merge pull request #25064 from overleaf/em-oauth-no-secret
Do not require a secret in OAuth configurations

GitOrigin-RevId: 8d67436bc9366ef5991c02e89a81dbbf573196d7
2025-05-02 08:05:52 +00:00
David
79f9957b68 Merge pull request #25164 from overleaf/dp-editor-survey
Create Editor Survey

GitOrigin-RevId: dc11ef16c0a00aa846ac7a664dd88e9531e832f2
2025-05-02 08:05:47 +00:00
David
32a8142f9c Merge pull request #25211 from overleaf/dp-review-panel-mini-click
Fix bug where clicking on comment/change in mini panel would not open full panel in new editor

GitOrigin-RevId: e7db345e01b881255a1651b37dec637f04692f3e
2025-05-02 08:05:43 +00:00
David
32b30606e5 Merge pull request #25213 from overleaf/dp-switch-to-editor
Add SwitchToEditorButton to new editor

GitOrigin-RevId: 6ea546fbc208c0a815f895c33ce4b5fe67829083
2025-05-02 08:05:38 +00:00
Tim Down
7abafb01ea Merge pull request #23940 from overleaf/td-react-18
Upgrade to React 18

GitOrigin-RevId: 9b81936e6eea2bccd97fe5c2c5841f0b946371b8
2025-05-02 08:05:29 +00:00
Brian Gough
4464320757 Merge pull request #25224 from overleaf/em-disable-chunk-buffer
Bypass chunk buffer when loading the latest chunk

GitOrigin-RevId: 98a15b496b0d52802f9b61cefb60a7b8df653fb2
2025-05-02 08:05:17 +00:00
Mathias Jakobsen
4bbd5f32b9 Merge pull request #25205 from overleaf/mj-subeqnarray
[web] Add subeqnarray support

GitOrigin-RevId: a26fe362ec6e053134f9f4454979b773cae33241
2025-05-02 08:05:13 +00:00
Mathias Jakobsen
4077486b86 Merge pull request #25178 from overleaf/mj-ide-redesign-deleted-chat-user
[web] Editor redesign: Handle deleted user in chat

GitOrigin-RevId: 905896883657d6a39fd3c0de2306af18580d1be3
2025-05-02 08:05:08 +00:00
Antoine Clausse
666481d8b2 Merge pull request #25221 from overleaf/revert-25207-ac-promisify-compile-controller-2
Revert "[web] Promisify ClsiCookieManager and CompileController (reapply and fix)"

GitOrigin-RevId: 4495b0fdee22c9c2a7eb39250aef498883389427
2025-05-01 08:06:55 +00:00
Antoine Clausse
61db35ac8f Merge pull request #25207 from overleaf/ac-promisify-compile-controller-2
[web] Promisify ClsiCookieManager and CompileController (reapply and fix)

GitOrigin-RevId: 0737f30c24bf92b33327dc7d0e015ac2cd7d751d
2025-05-01 08:06:47 +00:00
Miguel Serrano
707e197625 Merge pull request #25008 from overleaf/msm-missing-close-handler-modal
[web] Fix `cancel` button in `UnlinkUserModal`.

GitOrigin-RevId: 5b84c9593ce59c6da9aae9cf4f8e763151202d34
2025-05-01 08:06:32 +00:00
Miguel Serrano
958e05a001 [web] script to update group members via CSV (#24861)
* [web] script to update group members via CSV

GitOrigin-RevId: 973d1bdb1180af008608e14e1ff31af83e47f630
2025-05-01 08:06:27 +00:00
David
5b499efd23 Merge pull request #25128 from overleaf/dp-synctex
Add synctex controls with buttons hidden to new editor

GitOrigin-RevId: 27566210444ca6d83fef977290fa7c2700f2bb62
2025-05-01 08:06:15 +00:00
Antoine Clausse
d7d60f9d4c Merge pull request #25200 from overleaf/revert-25023-ac-promisify-compile-controller
Revert "[web] Promisify ClsiCookieManager and CompileController"

GitOrigin-RevId: 190ee8d2be23687f092e762c5199a34bcdf37cf9
2025-05-01 08:06:00 +00:00
Jakob Ackermann
7256c99e29 [clsi-cache] scale writes (#25198)
* [k8s] clsi-cache: increase the number of workers

* [clsi-cache] add a global limit on concurrent writes

* [k8s] clsi-cache: increase timeouts for health checks

* [k8s] clsi-cache: align resource requests with current usage

GitOrigin-RevId: 2aba881ac0e581aa8db78a30d2c58afee6702318
2025-05-01 08:05:55 +00:00
Antoine Clausse
a8d6055b4e [web] Migrate user-activate module to BS5 (#25174)
* Revert-me: Add `user-activate` to SAAS modules

* Migrate user-activate module to BS5

* Add loading state to button

* Revert "Revert-me: Add `user-activate` to SAAS modules"

This reverts commit 0584005953bf470ab21697e5c5448c566d95ca5d.

* Remove `bootstrap5PageStatus` var in register.pug

GitOrigin-RevId: 45fffc902e69a0b8f6e2a1a9c0381c9e844fafca
2025-05-01 08:05:51 +00:00
Antoine Clausse
c51d6f46d4 Add script to remove emails with commas, taken from a CSV file (#25107)
* Add script to remove emails with commas and replace them emails to support with encoded former emails

* Enhance RemoveEmailsWithCommasScriptTest to verify unchanged user data

GitOrigin-RevId: 6961995f2a143ac1c53bc2eeb183808a4be7dd02
2025-05-01 08:05:46 +00:00
Antoine Clausse
73476180d4 [web] Promisify ClsiCookieManager and CompileController (#25023)
* Refactor `ClsiCookieManager` to use async/await

* Refactor `CompileController` to use async/await

* Fix tests: CompileControllerTests.js

* Fix tests: ClsiCookieManagerTests.js

* Fixup: keep old object key (`serverId`->`clsiServerId`)

* Prefix non-express methods with an underscore

* Use async versions of `rclient` methods

* Fix: `canContinue` must be `false` when rate limited (!!)

* Remove unused `ClsiCookieManager.getCookieJar`

* Remove bad comments

* Fix linting

* Replace `request` by `@overleaf/fetch-utils`

* Replace `callsFake` by `resolves`

* Update `catch` block after request->fetch update: check status code

* Re-add timeout of 30s (was removed in 3df75ab5ccc8a63bd69a6a6e6052ef0451b76220)

* `npm run format:fix`

* Don't throw on 4xx errors; keep functionality similar to the current implementation using `request`.

GitOrigin-RevId: ef161f6c252d13f407e9cf28029b62061d6b992f
2025-05-01 08:05:42 +00:00
CloudBuild
b3cc1fa582 auto update translation
GitOrigin-RevId: 07c6f33cf063a2ebf52304afd29adc807a7ca989
2025-05-01 08:05:33 +00:00
Brian Gough
19a804d5bf Merge pull request #25147 from overleaf/bg-history-buffer-use-persist-time
use persist time in history buffer

GitOrigin-RevId: 881c42f86c6cd3cc2ea8373af4371ccc1a89e9ed
2025-05-01 08:05:21 +00:00
Jakob Ackermann
478e264817 [fetch-utils] fix leak of abort event handlers in AbortSignal (#25172)
GitOrigin-RevId: 992496010eb1cbe571b2e87fab8e7227b0d64538
2025-04-30 08:06:05 +00:00
Rebeka Dekany
df3d9099b6 Add aria-label to indicate the current PDF page number to screen readers (#25034)
GitOrigin-RevId: c2d64928378c9919f8ab8480559418cc52338854
2025-04-30 08:05:31 +00:00
Rebeka Dekany
2731ffaf10 Make editor popover toolbar keyboard focusable (#25169)
* Remove redundant class conflicting with focus styling

* Make the toolbar in the popover focusable via keyboard

* Focus to the first context menu item via keyboard only

GitOrigin-RevId: 7d3e2af4ba96654b5b2312b3999483c2a439b406
2025-04-30 08:05:25 +00:00
Alf Eaton
14c82ac94d Merge pull request #25149 from overleaf/ae-disable-toggletabfocusmode
Disable toggleTabFocusMode

GitOrigin-RevId: 7f9f9a1a57e6656a3bd03c1986ae6e4d3be71f84
2025-04-30 08:05:13 +00:00
Alf Eaton
52e6a216f4 Set will-change: transform on PDF canvas container (#25153)
GitOrigin-RevId: 316a99ac99cbff321fc2ae5a737d0aaf134ff775
2025-04-30 08:05:09 +00:00
ilkin-overleaf
1a8c549389 Merge pull request #24412 from overleaf/ii-flexible-licensing-manually-collected-2
[web] Add seats feature for manually collected subscriptions

GitOrigin-RevId: f7cc6f8ce17163f10e175a06bb471de6e3a96e3c
2025-04-30 08:05:00 +00:00
Liangjun Song
62760a9bf5 Merge pull request #25117 from overleaf/ls-map-stripe-product-to-recurly-plan-code
Use metadata to map Stripe product to Recurly plan code

GitOrigin-RevId: 775eb39cedff81985fc72cb14d411575231ade8f
2025-04-29 08:06:28 +00:00
Tim Down
5d78229e1e Merge pull request #25093 from overleaf/td-upgrade-react-error-boundary-second-attempt
Upgrade react-error-boundary to version 5, second attempt

GitOrigin-RevId: 2b88334b66f0ace383211c147279ff88e9f956bb
2025-04-29 08:06:23 +00:00
Mathias Jakobsen
d7bd665bee Merge pull request #25060 from overleaf/mj-core-pug-bs5
[web] Convert various pug pages to BS5

GitOrigin-RevId: f42de89eca778db19d5faa8a19fa8a210c7a749b
2025-04-29 08:06:01 +00:00
Mathias Jakobsen
447be67f78 Merge pull request #25118 from overleaf/mj-coloneq
[web] Redefine coloneq to coloneqq in mathjax

GitOrigin-RevId: 1797acff022d45e89bcec518905cf53cbc45825e
2025-04-29 08:05:57 +00:00
Mathias Jakobsen
5fec16153b Merge pull request #25119 from overleaf/mj-ide-hide-project-search
[web] Hide full project search button in new editor

GitOrigin-RevId: badbed06ab311f63e18a3687771d209e7c853d42
2025-04-29 08:05:52 +00:00
Domagoj Kriskovic
53c34b5726 Add "referrer" tracking to payment flows for AI assist (#25002)
* Add "referrer" tracking to payment flows for AI assist

* move sendMB call

* fix conflict

GitOrigin-RevId: 0c4480816d5fe525a87223c0b1827093d853d474
2025-04-29 08:05:41 +00:00
Andrew Rumble
2b49653f21 Improve logging
This includes setting up the verbose mode appropriately

GitOrigin-RevId: 6d7499467ae1ca80ca88963b14360931c7eb35e6
2025-04-29 08:05:36 +00:00
Andrew Rumble
a0aa6b9cc7 Use correct identifier for updating history id
GitOrigin-RevId: d95c6e85a8fd530189c14e36fed1112a51fb8609
2025-04-29 08:05:32 +00:00
Andrew Rumble
f5a89cc38f Add a script for finding projects missing a history id in Redis
GitOrigin-RevId: 3606e82c8e0fc8e1118cd6ce1981610ec20b73af
2025-04-29 08:05:27 +00:00
Andrew Rumble
2c3eed8d96 Use assert.fail instead of comparing false and true
GitOrigin-RevId: c6cbaf0a424771cf2a037366fccd790a13d9b1bb
2025-04-29 08:05:23 +00:00
Andrew Rumble
2ad9f36706 Promisify tests
GitOrigin-RevId: 6f413f4c5ef8d034b4e94afacdf2d7b43c3a8830
2025-04-29 08:05:18 +00:00
Brian Gough
850da34778 Merge pull request #25086 from overleaf/bg-history-buffer-use-expire-time
add expire time to redis buffer in history-v1

GitOrigin-RevId: 3d74957c341e62e536dc60869a7ca71ac173e380
2025-04-29 08:05:14 +00:00
Kristina
23c1a0ba4d Merge pull request #25082 from overleaf/kh-prevent-pausing-and-group-plans
[web] prevent pausing or upgrading to group for Stripe subscriptions

GitOrigin-RevId: 4d194339282d8bc165ffa1b89e8e1cf298c2d343
2025-04-29 08:05:09 +00:00
Rebeka Dekany
71094cb283 Fix the React version of Facebook logo (#25070)
GitOrigin-RevId: 8357f6d3fef31fdea9d5d77b11093946a4a7ceba
2025-04-28 08:06:11 +00:00
Domagoj Kriskovic
35722acb3d Update review panel entry header user width in mini view (#25027)
GitOrigin-RevId: cbb62889f58b913e874fb947b95c16b0e0882671
2025-04-28 08:05:56 +00:00
Domagoj Kriskovic
8870aa6e63 Fix AI assist links based on annual/monthly switch (#25052)
* Fix AI assist links based on annual/monthly switch

* use translations for annually discount

GitOrigin-RevId: eaf10720eb162c8ecbd891e8f73475db0c02b9f9
2025-04-28 08:05:51 +00:00
Domagoj Kriskovic
5a4cf8a003 Refactor Writefull init to always include overleafLabels (#25055)
GitOrigin-RevId: 416b2d1ea3a24e7c879779078e4f2a13ca6c3555
2025-04-28 08:05:47 +00:00
Alf Eaton
c732a02b38 Use toast notifications for SyncTeX errors and handle missing file errors (#24579)
GitOrigin-RevId: 88c6658ff0d11fdb43cef19c48b542a3b2206666
2025-04-28 08:05:42 +00:00
Alf Eaton
c6ac06b51c Start adding client-side word count (#24892)
GitOrigin-RevId: 6c17d7bf7095794c003e17939a8302fc6b059262
2025-04-28 08:05:38 +00:00
Alf Eaton
c378f0961c Add footnote and endnote commands to the LaTeX grammar (#24939)
GitOrigin-RevId: f0342156fa22a1bcf73ae2e8afdcc6f330ba5d37
2025-04-28 08:05:33 +00:00
Jakob Ackermann
a9780ccf96 [clsi] merge sandboxed compiles config from Server Pro and SaaS (#25062)
* [clsi] merge sandboxed compiles config from Server Pro and SaaS

* [clsi] reorder fallback env vars

Co-authored-by: Mathew Evans <matt.evans@overleaf.com>

* [server-pro] bump version of expected release with these changes

---------

Co-authored-by: Mathew Evans <matt.evans@overleaf.com>
GitOrigin-RevId: bada93fec89bcc3f2bab85b6e60b2e27de88b9c2
2025-04-28 08:05:21 +00:00
Alf Eaton
247b4e274d Upgrade PDF.js to v5 (#24948)
* Reapply "Upgrade PDF.js to v5 (#24646)" (#24946)
* Upgrade core-js, caniuse-lite and babel

GitOrigin-RevId: 63398189301b5f5adc8a17b332d92dccfc26d612
2025-04-28 08:05:09 +00:00
Alf Eaton
9d290ae234 Add polyfills for AbortSignal.any and AbortSignal.timeout (#24958)
GitOrigin-RevId: d0fc041054e17f50b5b19343e06e857bd9635902
2025-04-28 08:05:04 +00:00
Brian Gough
ed9844b2ec Merge pull request #25088 from overleaf/bg-increase-verify-blob-timeout
increase script timeout to avoid flaky tests in backupVerifier

GitOrigin-RevId: 4a52178b0e03ca9a69f82f7ddfe866ce689592b7
2025-04-25 08:05:53 +00:00
M Fahru
87bca3601d Merge pull request #25065 from overleaf/mf-schedule-refresh-features-stripe
[web] Refresh user features for stripe subscripton

GitOrigin-RevId: e0600e80bfc264f2c0229090f0d5ff7ef845d28e
2025-04-25 08:05:49 +00:00
M Fahru
bb3a123b8d Merge pull request #25041 from overleaf/mf-update-careers-footer-link
[web] Update careers footer link

GitOrigin-RevId: 25b797b16fa5829ec970b2854f93c6ab270ecf24
2025-04-25 08:05:41 +00:00
Jakob Ackermann
86d310c741 [web] clsi-cache: fix download of .blg files (#25083)
GitOrigin-RevId: 69c8f789b8f8fa4b241c7563722e9a1cb6f86244
2025-04-25 08:05:37 +00:00
Jakob Ackermann
8ed650f57a [web] make clsi-cache a premium feature (#25075)
* [web] stopOnFirstError=true does not conflict with =false locally

Allow stopOnFirstError to be enabled in the compile from cache and
disabled locally.
Compiles that passed with stopOnFirstError=true will also pass with
stopOnFirstError=false. The inverse does not hold, and we need to
recompile.

* [web] record event when using compile from cache

* [web] record event when falling back to clsi-cache

* [web] make clsi-cache a premium feature

* [k8s] clsi-cache: increase disk size for beta rollout

NOTE: As this is a premium feature and paid servers run in zones c+d, we
do not need to scale up clsi-cache in zone b for now.

* [web] enable full sampling of compile-result-backend events

* [web] fix frontend tests

* [web] be more verbose when determining access to clsi-cache feature

GitOrigin-RevId: 6fd663e16085187876eb225f7f33eeeaf69d2b2a
2025-04-25 08:05:33 +00:00
Antoine Clausse
13270dee2d [web] Tear down sidebar-navigation-ui-update, Update project-list look in SP/CE (#24920)
* Remove hacks that conditionally hid `ds-nav` survey

* Remove `getAssignment` of `sidebar-navigation-ui-update`

* Remove `hasDsNav`: make it true everywhere

* Remove dead code

* Update Footer so thin footer is shown in SP/CE

* Run `web$ make cleanup_unused_locales` & `bin/run web npm run extract-translations`

* [server-pro] fix learn wiki tests following DS navigation changes

* [server-pro] tests: remove logout action before switching session

* [server-pro] tests: fix logout test

* [server-pro] tests: use new css class for sidebar on project dashboard

* Revert "should add a documentation entry to the nav bar" test change

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 93eb7a1b03bb4e54ad1770150d83778b8f7f6727
2025-04-25 08:05:29 +00:00
Tim Down
cf36767f03 Merge pull request #25080 from overleaf/revert-25073-td-upgrade-react-error-boundary
Revert "Upgrade react-error-boundary to version 5"

GitOrigin-RevId: 3301adb508eed26e4429c6aa912abf9e81c1d9f8
2025-04-25 08:05:25 +00:00
Tim Down
247f04557c Merge pull request #25073 from overleaf/td-upgrade-react-error-boundary
Upgrade react-error-boundary to version 5

GitOrigin-RevId: ebccd35e10084aa221c437c09ddfdb86f6272cf3
2025-04-25 08:05:20 +00:00
Rebeka Dekany
3c154955b2 [web] Ensure buttons and links have discernible text on the editor page (#25005)
* Use OLIconButton for buttons lacking visible text

* Ensure correct ARIA attr for the Layout dropdown

* Add a tooltip to Layout button

* Add "Open dev tool" aria-label

* Add accessible names to the rail tab items

* Remove unused IconProps export

GitOrigin-RevId: 185937384cf5ec87b32238111d6621ac07789fb4
2025-04-25 08:05:16 +00:00
Brian Gough
612981bedb Merge pull request #24993 from overleaf/bg-history-buffer-use-cache-in-persist-changes
use chunkBuffer in persistChanges

GitOrigin-RevId: dd4cdf39ba53c3becf306119fed7eacfe67de15d
2025-04-25 08:05:12 +00:00
Brian Gough
a7466a7291 Merge pull request #24966 from overleaf/bg-history-buffer-optimised-get
add getCurrentChunkIfValid function

GitOrigin-RevId: e947a99ac928b58048a87cea0be1da34fcf3a9f8
2025-04-25 08:05:04 +00:00
Tim Down
fb50d429b4 Merge pull request #24965 from overleaf/td-downshift-9-upgrade
Upgrade Downshift to version 9

GitOrigin-RevId: b36904ab0c82c09a633a25cd6fed651d7c8b19f7
2025-04-24 08:06:24 +00:00
Antoine Clausse
8ec9cd21b4 [latexqc] Update vite version (#25056)
Fixes https://github.com/overleaf/internal/security/dependabot/1398

GitOrigin-RevId: e759d529609df79c63e0c6c45cda941d45fe7ec8
2025-04-24 08:06:19 +00:00
Antoine Clausse
5861e4160c [latexqc] Continue the ESM migration (#24743)
* Set `"type": "module"` in package.json

* Update imports to include file extensions

* Update imports to include file extensions in test files

* Convert webpack files to ESM

* Update configureStore.js for ESM

* Make static-assets CJS, and rename with .cjs

* Misc: update imports to `node:path`

* Add vitest; Remove chai, mocha, sinon, expect, jsdom

* Return promises in conversion-controller, to make testing easier

* Update tests to vitest syntax

* Fix JSON import syntax and babel config

* Import combobo from NPM

* Rename `app.js` to `app.cjs`

This should prevent errors in the production app (https://console.cloud.google.com/cloud-build/builds;region=us-east1/8b42465c-0d07-4a08-b856-aa18c13fae46?project=overleaf-ops)

### Before

```
node@ea395ce612a8:/overleaf/services/latexqc$ node app.js
[...]
ReferenceError: require is not defined in ES module scope, you can use import instead
This file is being treated as an ES module because it has a '.js' file extension and '/overleaf/services/latexqc/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
    at file:///overleaf/services/latexqc/app.js:2:1
    at ModuleJob.run (node:internal/modules/esm/module_job:234:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:473:24)
    at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:122:5)
```

### After

```
node@ea395ce612a8:/overleaf/services/latexqc$ node app.cjs
--------------------------
===>  😊 Starting Server . . .
===>  Environment: production
===>  Listening on port: 8082
--------------------------
```

* Rename `app.js` to `app.cjs` (Fixup forgotten one)

* Rename `app.js` to `app.cjs` (Fixup 2)

* Rename asset files to `.js`

Fixes:
```
Refused to execute script from 'https://staging-latexqc.ieee.org/assets/9d6cc24692a7f912ff06.cjs' because its MIME type ('application/octet-stream') is not executable, and strict MIME type checking is enabled.
```
GitOrigin-RevId: f0b618f7fc4062fb6bdc3779dfc5defc5f72d614
2025-04-24 08:06:14 +00:00
M Fahru
ec763c69a7 Merge pull request #24801 from overleaf/mf-swap-trial-cta-tear-down
[web] Tear down `swap-trial-cta` and use the `enabled` variant as the default

GitOrigin-RevId: 2ba2f5c864908871797420aff976918a4e224ad3
2025-04-24 08:06:06 +00:00
David
1cfd5ca948 Merge pull request #24950 from overleaf/dp-writeful-editor-switch
Expose isNewEditor in window.overleaf.unstable.store for use by writefull

GitOrigin-RevId: be68b3bc62ea1bfb631f349475888b1153e47cfd
2025-04-24 08:05:58 +00:00
Brian Gough
12b96e40a5 Merge pull request #24977 from overleaf/bg-history-buffer-improve-tests
add more tests for chunk buffer in history-v1

GitOrigin-RevId: 3cfa2492efd67597a2782ca7a5671889a67049d5
2025-04-24 08:05:53 +00:00
Brian Gough
626416ed02 Merge pull request #24945 from overleaf/bg-redis-buffer-stats-script
add script for listing buffer stats from redis

GitOrigin-RevId: 7836563d51a5c6ded264d0e709d5cfcda70596e3
2025-04-24 08:05:49 +00:00
Kristina
6166a51552 Merge pull request #24922 from overleaf/kh-add-customer-portal-links
[web] add stripe customer portal link

GitOrigin-RevId: 6baaf51d4dd89ef779229ad17603529db06cf396
2025-04-24 08:05:44 +00:00
Kristina
6f1f1ba744 Merge pull request #24848 from overleaf/mf-save-stripe-checkout-data-to-mongo-db
[web] Save stripe checkout data to mongodb

GitOrigin-RevId: 537778a041f92f43ccf6455c29a56c7a961ce765
2025-04-24 08:05:40 +00:00
Jakob Ackermann
dd3956f5f4 [document-updater] delete dead code for handling JSON documents (#25036)
GitOrigin-RevId: 59a2c5f0174cd041ebda1ea4898114e6fb6d41a5
2025-04-24 08:05:35 +00:00
David
52898ac83b Merge pull request #25031 from overleaf/dp-page-number-color
Fix pdf page number color in safari

GitOrigin-RevId: 14745d50a16df1aa5129b068d5dcf3ae5bc81e8b
2025-04-24 08:05:27 +00:00
Jakob Ackermann
fe1129c2cf [web] avoid accessing the sharejs snapshot directly (#25037)
* [web] avoid accessing the sharejs snapshot directly

* [web] limit API interface for sharejs types

GitOrigin-RevId: faece372128e4580376e32fa93aa8fedf1e02957
2025-04-24 08:05:15 +00:00
Jakob Ackermann
7f086b21c8 [document-updater] modernize ApplyingUpdatesToADocTests (#25038)
- use beforeEach to ensure tests do not interfere with each other
  Notably, the 'when the ops come in a single linear order' test suite
  had state-changing tests that were dependent on the correct order.
  Also, the assigment of 'this.firstOpTimestamp' was in a test.
- consolidate populating project and doc ids
  The doc reference in this.update was undefined.
- fix doc reference in updates
  There were two misuses of 'doc_id' instead of 'doc'.
- Move mocking of MockWebApi.getDocument to the top and use
  sinon.resetHistory() or sinon.restore() for controlling the stub.
- Add another test for simple transforming of updates
  See 'when another client is sending a concurrent update'.

GitOrigin-RevId: 61ca8a1b0172920ad6ab1b604a9b9259cebddaad
2025-04-24 08:05:10 +00:00
Jimmy Domagala-Tang
b225b55e8d Merge pull request #24990 from overleaf/dk-paywall-modal-updates
Updates to AI assist interstitial modal

GitOrigin-RevId: d2365aaf36f1f61a39a0bd52357f4518736e2a7d
2025-04-23 08:05:35 +00:00
Jimmy Domagala-Tang
f95bf41824 Merge pull request #24697 from overleaf/jdt-show-addons-via-wf
Display When Ai Assist Is Granted Via Writefull

GitOrigin-RevId: 91f6e1843e2e1d1f7b3a49d95f31603e838c5545
2025-04-23 08:05:30 +00:00
David
d492512d9e Merge pull request #24878 from overleaf/mj-editor-redesign-experiment
[web] Move editor redesign to labs experiment

GitOrigin-RevId: 5f11ff29a6c392ff6e448a16450e2e65a2574097
2025-04-23 08:05:22 +00:00
Andrew Rumble
1c672e55f5 Minor bump of webpack and @pmmmwh/react-refresh-webpack-plugin
GitOrigin-RevId: 55421a1cd66e0ec7177470f38fe9f575837b6bac
2025-04-23 08:05:11 +00:00
David
9d858dcf0f Merge pull request #24961 from overleaf/dp-back-to-editor
Update toolbar in history view to add BackToEditorButton

GitOrigin-RevId: 4c260126a373b1b3a7c31f9f4b44f6ae7fba6f36
2025-04-23 08:05:06 +00:00
David
584db6c301 Merge pull request #24989 from overleaf/mj-ide-redesign-modal-content
[web] Update copy in editor redesign switcher modal

GitOrigin-RevId: 9df3d6d580fec2540d0254e1f3a65b3b059bc63f
2025-04-23 08:05:01 +00:00
M Fahru
a29280a1fe Merge pull request #24833 from overleaf/kh-add-stripe-get-subscription
[web] fetch Stripe subscription

GitOrigin-RevId: bffc31224aece584f4f1e3294bb1285d17f99195
2025-04-18 08:05:44 +00:00
Eric Mc Sween
315bde6f1b Merge pull request #24968 from overleaf/em-chunks-concurrency-postgres
Handle concurrency during chunk extension in the Postgres backend

GitOrigin-RevId: fd706b73deacf141cbd478d3ed47f298e6c6db72
2025-04-18 08:05:37 +00:00
Eric Mc Sween
2256697323 Merge pull request #24967 from overleaf/em-chunks-concurrency-pg-migration
Add closed column to PostgreSQL chunks

GitOrigin-RevId: 6babf7e94936ebfac31650aa7f190630e3288bbf
2025-04-18 08:05:29 +00:00
Jakob Ackermann
ee2338a33b [web] align criteria for fallback to clsi-cache (#24970)
* [web] rename helper for browser cache bug, avoid confusion w/ clsi-cache

* [web] align criteria for fallback to clsi-cache

Notably, avoid the fallback from inside pdf-caching when disabled.

GitOrigin-RevId: 3fd918de14eef59c45c28cc5b5e256048cb91528
2025-04-18 08:05:25 +00:00
Christopher Hoskin
94e12ec404 Merge pull request #24971 from overleaf/csh-issue-19131-diable-filestore-endpoints
Disable the old filestore endpoints if user_files not defined

GitOrigin-RevId: f7d188cef3fe53835070903448690baff4ebad98
2025-04-18 08:04:59 +00:00
Domagoj Kriskovic
26032d6b77 Add origin for ai assist interstitial modal (#24904)
GitOrigin-RevId: 035edf8791b0afdc8c320598d09d99f5e84acc47
2025-04-18 08:04:55 +00:00
Andrew Rumble
adb9723d62 Log a warning when a user is rejected from accessing real-time by CORS
GitOrigin-RevId: 04a7ffbc24654c876688db446164bf36a162828f
2025-04-18 08:04:47 +00:00
Antoine Clausse
b901bb6c75 [web] Update fetch-mock to version 12 (#24837)
* Update fetch-mock to version 12

* Replace `fetchMock.done` by `fetchMock.callHistory.done`

* Replace `…Mock.called` by `…Mock.callHistory.called`

* Replace `fetchMock.reset` by `fetchMock.hardReset`

* Replace `fetchMock.restore` by `fetchMock.hardReset`

* Replace `fetchMock.resetHistory` by `fetchMock.clearHistory`

* Replace `fetchMock.calls` by `fetchMock.callHistory.calls`

* Replace `fetchMock.flush` by `fetchMock.callHistory.flush`

* Update tests for fetch-mock version 12

See https://www.wheresrhys.co.uk/fetch-mock/docs/Usage/upgrade-guide

* Update stories for fetch-mock version 12

* Remove `overwriteRoutes` option

* Add `fetchMock.spyGlobal()` to storybook

* Remove deprecated `sendAsJson` param

* Replace `fetchMock.hardReset()` by `fetchMock.removeRoutes().clearHistory()`

* Fixup fetch-mock in storybook:

Call `mockGlobal` inside the hook, call `removeRoutes` and `unmockGlobal` on cleanup

Behaviour can be tested by navigating between

https://storybook.dev-overleaf.com/main/?path=/story/editor-ai-error-assistant-compile-log-entries--first-log-entry
https://storybook.dev-overleaf.com/main/?path=/story/editor-ai-error-assistant-compile-log-entries--rate-limited

https://storybook.dev-overleaf.com/main/?path=/story/project-list-notifications--project-invite
https://storybook.dev-overleaf.com/main/?path=/story/project-list-notifications--project-invite-network-error

And clicking the buttons

GitOrigin-RevId: 35611b4430259e4c21c3d819ad18b2e6dab66242
2025-04-17 08:06:24 +00:00
Antoine Clausse
fa62529d82 [clsi] Replace diskusage by fs (#24789)
* Replace `diskusage` by `fs` in clsi

* Replace `diskusage` by `fs` in clsi-cache

* Update disk space calculations to include block size in bytes

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Add warning comments about Docker-for-Mac fs stats being off by a factor

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 02ea07e531b89bb3d10ddfe780348b19cbddad1f
2025-04-17 08:06:16 +00:00
Andrew Rumble
cde7ff5d2f Don't run the verifier loop when app created from test
GitOrigin-RevId: e8a565ae00019de66cbbaf961e0ee3ace90f800e
2025-04-17 08:06:11 +00:00
Eric Mc Sween
82c95dd82d Merge pull request #24930 from overleaf/em-ae-jd-full-project-search-launch
Launch full project search from regular search

GitOrigin-RevId: 3ef4f6923a0aeef6ab68768bab79e4be32f09eb0
2025-04-17 08:06:07 +00:00
Christopher Hoskin
778221c0af Merge pull request #24924 from overleaf/csh-issue-18692-404-if-templates-not-configured
Only define the template endpoints if configured

GitOrigin-RevId: 9ec9d411d6aed8774a880e80d0559a3491e832de
2025-04-17 08:06:03 +00:00
Kristina Hjertberg
f8f2585164 [web] mv PaymentService to modules
GitOrigin-RevId: 73d739f53d96ff9e9d51a535907dbdc878aa6624
2025-04-17 08:05:58 +00:00
M Fahru
04d36122bd Merge pull request #24659 from overleaf/mf-init-plans-page-bs5
[web] Migrate plans page and interstitial payment page to bootstrap 5 with feature flag

GitOrigin-RevId: 4491b2205a19b943e8d8bf13f699f92278f5e183
2025-04-17 08:05:54 +00:00
Mathias Jakobsen
dfc00ed8c1 Merge pull request #24949 from overleaf/mj-papers-notification-papers-feature
[web] Show papers notification to users with papers feature

GitOrigin-RevId: 376ed7a43bec28766f89101588ed2546ec3093d2
2025-04-17 08:05:49 +00:00
Jessica Lawshe
262a1d09c6 Add BS3 templates stylesheet back
Still used by portals

GitOrigin-RevId: 0d85d437c3f771fbb6ff76048f9e49654c88cf83
2025-04-17 08:05:45 +00:00
Andrew Rumble
5e76a97bc4 Log more information for failing tests
GitOrigin-RevId: 22ae2151b476b4f810ab9223b42f9cb6fe9d7442
2025-04-17 08:05:40 +00:00
Eric Mc Sween
aa367bcd1d Merge pull request #24897 from overleaf/em-chunks-concurrency
Concurrency handling for history chunks with Mongo backend

GitOrigin-RevId: 30abe11237c80e7803c8934a20a57a7223afa85a
2025-04-17 08:05:36 +00:00
Mathias Jakobsen
fe68930e9a Merge pull request #24733 from overleaf/mj-labs-without-features
[web] Move labs experiments from features to own property

GitOrigin-RevId: 22dee79758e5fa65fc31d9b8d4b155443cd585e7
2025-04-17 08:05:28 +00:00
Mathias Jakobsen
3a0c71175b Merge pull request #24891 from overleaf/mj-ide-redesign-hide-unavailable-menu-options
[web] Editor Redesign: Hide unavailable menu items

GitOrigin-RevId: 4aaee8befb6234a00bd4ec6087dcfd1417878576
2025-04-17 08:05:24 +00:00
Mathias Jakobsen
8fc206073b Merge pull request #24923 from overleaf/dp-mj-papers-notification
Add notification banner for Papers integration marketing

GitOrigin-RevId: 625c3afcc6ca617fd01af58a05a6c85f7126398b
2025-04-17 08:05:19 +00:00
Alf Eaton
34d5564abc Revert "Upgrade PDF.js to v5 (#24646)" (#24946)
This reverts commit 3ef46af6363aab5b5b007b6c9d72decae65a36ab.

GitOrigin-RevId: 9c3671b3ff196bb62ff547210a1138cb603d6791
2025-04-17 08:05:15 +00:00
David
c1fc5b88b3 Merge pull request #24916 from overleaf/dp-git-logo
Use orange version of Git logo in account settings

GitOrigin-RevId: 10067d4190d54ea14183b20620001237090758da
2025-04-17 08:05:03 +00:00
Alf Eaton
a1098a921c Upgrade PDF.js to v5 (#24646)
GitOrigin-RevId: 3ef46af6363aab5b5b007b6c9d72decae65a36ab
2025-04-17 08:04:59 +00:00
Andrew Rumble
a1a3019d1e Debugging flakey test
GitOrigin-RevId: 0da9b4ee107162aed88f2f782e80a6325fb48622
2025-04-17 08:04:51 +00:00
Tim Down
34be8b75ad Merge pull request #24936 from overleaf/td-warning-badge-light
Use dark-on-light for warning badge by default

GitOrigin-RevId: 6259ec08c9c31f54dbdad6261a966f638303cc3b
2025-04-17 08:04:46 +00:00
Brian Gough
cedc96bdd7 Merge pull request #24906 from overleaf/bg-history-redis-read-cache
implement read cache for history-v1 chunks

GitOrigin-RevId: 128de7e9380fd489f68d5045d3333a27018845c2
2025-04-16 08:06:18 +00:00
Jakob Ackermann
457d61fa9a [web] avoid logging when password is too similar to email (#24914)
GitOrigin-RevId: 122e1790e4827aa26da712011e946ea025a08300
2025-04-16 08:06:11 +00:00
David
35902407b3 Update integration logos in editor redesign (#24902)
* Update git bridge logo based on current theme

* Use GithubLogo black instead of GithubLogo

* Add missing logos

* Update dropbox logo

* Revert default DropboxLogoBlack size

* Remove white background from DropboxLogo

* Rename GitBridgeLogo to GitLogo

GitOrigin-RevId: 00d08716d9ccb0df7912dba39ec0477d672dc56d
2025-04-16 08:05:56 +00:00
Domagoj Kriskovic
1f7bfb4737 "default-visual-for-beginners" split test tear down (#24759)
GitOrigin-RevId: cdd6c8d3ffb60b9ae3e972f2267f1838cf720c83
2025-04-16 08:05:47 +00:00
Jakob Ackermann
6ac5142b41 [web] remove dead endpoints for downloading clsi output w/o buildId (#24825)
The corresponding clsi endpoints have already been removed.

GitOrigin-RevId: 0414040557f50dae6ad58228eefae7b2739a5656
2025-04-16 08:05:39 +00:00
Jakob Ackermann
39110d9da9 [clsi-cache] check compiler settings before using compile from cache (#24845)
* [web] provide an actual rootFolder from EditorProviders in tests

- Fixup SocketIOMock and ShareJS mocks to provide the complete interface
- Extend SocketIOMock interface to count event listeners
- Fixup test that did not expect to find a working rootDoc

* [web] expose imageName from ProjectContext

* [clsi-cache] check compiler settings before using compile from cache

* [web] avoid fetching initial compile from clsi-cache in PDF detach tab

GitOrigin-RevId: e3c754a7ceca55f03a317e1bc8ae45ed12cc2f02
2025-04-16 08:05:35 +00:00
Tim Down
ef958f97a1 Merge pull request #24644 from overleaf/td-contact-form-react-email-validation
Add validation to email field in React version of contact form

GitOrigin-RevId: 9804af9fd5c4cf8e29e47a8661c50198eb0f6bcf
2025-04-16 08:05:23 +00:00
Tim Down
832028e92d Merge pull request #24718 from overleaf/td-bs5-warning-bg
Fix for form warning text colour

GitOrigin-RevId: 48a6d710548d919a5968a04709b41e4f1b2cd004
2025-04-16 08:05:19 +00:00
Jakob Ackermann
f0edc7ba00 [web] update the projects lastUpdated timestamp when changing file-tree (#24867)
* [misc] freeze time before any other unit test setup steps

Freezing it after other work (notably sandboxed-module imports) will
result in flaky tests.

* [web] update the projects lastUpdated timestamp when changing file-tree

GitOrigin-RevId: b82b2ff74dc31886f3c4bd300375117eead6e0cd
2025-04-16 08:05:14 +00:00
Brian Gough
d6c2188f2d Merge pull request #24903 from overleaf/bg-fix-backup-scheduler
remove history.id check from processPendingProjects function

GitOrigin-RevId: 017ab7c9bf693ed4077d4619574154166af04fe3
2025-04-16 08:05:06 +00:00
David
bc95219bf6 Merge pull request #24862 from overleaf/dp-check-logs
Create openTab utility in rail-context to open rail at specific tab

GitOrigin-RevId: bfac2597fdd66db6dd8280873be97096f2b812dc
2025-04-16 08:05:01 +00:00
David
3e49fd6967 Merge pull request #24860 from overleaf/dp-chat-names-dark
Fix chat message names in dark mode

GitOrigin-RevId: dd919e3398a53b981939add5e3300c6427133b39
2025-04-16 08:04:57 +00:00
David
846ccd3aac Merge pull request #24859 from overleaf/dp-history-file-tree
Always show file tree in history view in new editor

GitOrigin-RevId: e993aae4c1625ef7fb0a716ae5bff8edb0e8d0d0
2025-04-16 08:04:52 +00:00
David
9babb6283b Merge pull request #24866 from overleaf/dp-toolbar-truncation
Add explicit width to codemirror toolbar wrapper to ensure it truncates correctly

GitOrigin-RevId: 458788daa8e634aebcb5f61dc4ce78f871b03913
2025-04-16 08:04:47 +00:00
Brian Gough
62c8af2a93 Merge pull request #24856 from overleaf/bg-history-redis-buffer-tweaks
fix error logging for chunk cache mismatches

GitOrigin-RevId: 85344c4025fdaa6ee916c5438ff38c7c49f4bce3
2025-04-15 08:06:27 +00:00
Brian Gough
3850e97446 Merge pull request #24857 from overleaf/bg-backup-scheduler-fix-for-broken-projects
handle broken projects in history backup

GitOrigin-RevId: a295d9d7a29715807a8172dae46e0fe3c14ecf12
2025-04-15 08:06:23 +00:00
Eric Mc Sween
397a546095 Merge pull request #24895 from overleaf/em-fix-history-changes
Properly serialize changes returned by the history changes endpoint

GitOrigin-RevId: a85fd8aede9316100d2cec901c1ab9b7d1faa9bb
2025-04-15 08:06:19 +00:00
Brian Gough
d8c5160349 Merge pull request #24858 from overleaf/bg-fix-server-ce-history-redis
add history-v1 redis configuration to server-ce

GitOrigin-RevId: 7ad37f6261165b29b7c16b92890b2103afaf47d7
2025-04-15 08:06:15 +00:00
M Fahru
3a5d24eb7a Merge pull request #24524 from overleaf/mf-gallery-redesign-leftover-remove
[web] Remove leftover gallery redesign split test code

GitOrigin-RevId: 484272bfaae7db5b5329ae19ca556ee8e4a33650
2025-04-15 08:06:05 +00:00
Kristina Hjertberg
a3b908e255 [web] add payment field to Subscription
GitOrigin-RevId: 3fd569372636f880b5e2d4e5dd98f6e28067c464
2025-04-15 08:05:57 +00:00
Jimmy Domagala-Tang
0e49a5d9b0 Merge pull request #24391 from overleaf/jdt-move-wf-features-to-ol
Move Writefull table + equation generator to OL toolbar

GitOrigin-RevId: b7bc5b1cde5687360c4f60cb64924da139ccfbe9
2025-04-15 08:05:47 +00:00
Eric Mc Sween
958ff0f3bf Merge pull request #24847 from overleaf/em-chunks-index
Include closed chunks in active chunks index

GitOrigin-RevId: ff75959737908afa72cee2c2784abb476c115e80
2025-04-15 08:05:33 +00:00
Tim Down
773cbc92eb Merge pull request #24592 from overleaf/td-socket-io-origins
Use updated socket.io with CORS origin check in real-time

GitOrigin-RevId: a1a874ba298e145aa4c9dd55ef723d79843f8145
2025-04-15 08:05:25 +00:00
Domagoj Kriskovic
b9f1013f37 Update "collaborator-invited" analytics event (#24639)
GitOrigin-RevId: e469c50dadea568032ec825fa99b33b80d0b3964
2025-04-15 08:05:18 +00:00
Domagoj Kriskovic
30c5495b21 Update share modal copy for reviewer role (#24694)
* Update share modal copy for reviewer role

* fix ShareProjectModal test

* use "limited_to_n_collaborators_per_project"

GitOrigin-RevId: f5afcb18a3921a6b1132a4c323af9d8395a7d07b
2025-04-15 08:05:14 +00:00
Brian Gough
835e14b8b2 Merge pull request #24768 from overleaf/bg-history-redis-buffer
test redis caching when loading latest chunk in history-v1

GitOrigin-RevId: f0ee09e5e9e1d7605e228913cb8539be4134e1f7
2025-04-15 08:05:03 +00:00
Eric Mc Sween
fb03fe4d26 Merge pull request #24776 from overleaf/em-project-history-unused-endpoints
Remove unused endpoints in project-history

GitOrigin-RevId: 2940c1c1973177e3200cb78884b307f708fd88c3
2025-04-14 08:05:08 +00:00
Jakob Ackermann
4a17a1e713 [web] gracefully access compile stats for event (#24818)
* [web] gracefully access compile stats for event

* [clsi] always emit stats and timings

GitOrigin-RevId: 959e5fe1508245ffecfab1219fd86e53b210fca1
2025-04-14 08:04:51 +00:00
Liangjun Song
c60ceaf932 Merge pull request #24466 from overleaf/ls-script-runner
Script runner

GitOrigin-RevId: 4cc7004f05177dba2a2151aa6db7e75fb679d11d
2025-04-14 08:04:37 +00:00
CloudBuild
8ad335cf47 auto update translation
GitOrigin-RevId: b09c8b2b9c0e29f3061aaacb7dbfff4ccaaec466
2025-04-11 08:06:17 +00:00
M Fahru
14308f4fba Merge pull request #23085 from overleaf/mf-teardown-bs5-register-login
[web] Teardown bs5 login and register page

GitOrigin-RevId: e2335ecbe89212984acd24fbbaa6f9549dc45b96
2025-04-11 08:06:13 +00:00
Brian Gough
fe8d6392d5 Merge pull request #24793 from overleaf/bg-update-build-scripts-to-include-history-redis
update build scripts to include HISTORY_REDIS_HOST

GitOrigin-RevId: da0f317c80401067c0f4aa772196cb2f24849b8e
2025-04-11 08:06:03 +00:00
Eric Mc Sween
dd526693f5 Merge pull request #24775 from overleaf/em-bypass-project-history
Call history-v1 directly for latest history and changes

GitOrigin-RevId: 39c32dd50ff7875f82bbb2716da753a9c3e6e81d
2025-04-11 08:05:56 +00:00
Eric Mc Sween
42aea53307 Merge pull request #24754 from overleaf/em-promisify-history-controller
Promisify HistoryController

GitOrigin-RevId: e1783acb8c7ba7e00b109a4f4a514973cc3163d2
2025-04-11 08:05:52 +00:00
Eric Mc Sween
3aa579f232 Merge pull request #24736 from overleaf/em-history-get-changes
Endpoint for getting history changes

GitOrigin-RevId: b96afed0492522d62df9c24390f76e5490afbb44
2025-04-11 08:05:48 +00:00
David
9cd7e49daf Merge pull request #24332 from overleaf/dp-review-panel
Add review panel to new editor

GitOrigin-RevId: 918a29d81fcfaf60bc4af8a20a25545d79c4a3ed
2025-04-11 08:05:31 +00:00
Kristina
9f22564ca3 Merge pull request #24680 from overleaf/kh-rename-recurly-namespace
[web] rename recurly namespace

GitOrigin-RevId: b7cfd26923d47bd7f3de4140be24d2d1ef20f6c8
2025-04-11 08:05:20 +00:00
Kristina
af46bcdace Merge pull request #24396 from overleaf/kh-rm-unused-recurly-subscription-property
[web] rm dead code in `SubscriptionViewModelBuilder`

GitOrigin-RevId: 64006e3f51f61c40e2d4e01fd04961546319ffdd
2025-04-11 08:05:16 +00:00
Mathias Jakobsen
c27c7bbe83 Merge pull request #24720 from overleaf/mj-teardown-write-and-cite-split-tests
[web] Tear down Write and Cite related split tests

GitOrigin-RevId: 0002829f53b0f28d482c79ed2cbf61066690ae02
2025-04-11 08:05:05 +00:00
Andrew Rumble
814a55809b Reinstate options param in getDoc
Removed in #23209 - used by the admin restore doc functionality.

GitOrigin-RevId: bb3b682ef19719956236ec24807e19cbc09f049c
2025-04-11 08:04:48 +00:00
CloudBuild
29b0dd0725 auto update translation
GitOrigin-RevId: 9010716cae7147df527797d531b902f40f20352c
2025-04-10 08:06:36 +00:00
Jimmy Domagala-Tang
f7f4a03abb Merge pull request #24523 from overleaf/jdt-prevent-bundle-dbl-buys
Redirect bundle purchases when users already have it

GitOrigin-RevId: d8e3c0256db08c08c2be24f38caef91fb26b90e8
2025-04-10 08:06:28 +00:00
Mathias Jakobsen
f11a6a6b87 Merge pull request #24717 from overleaf/dp-github-typo
Give GitHub a capital H in integrations panel description

GitOrigin-RevId: 8644e638c3d557221c1cf3b42b2884d9fdc4572c
2025-04-10 08:06:06 +00:00
Mathias Jakobsen
6207c853ef Merge pull request #24708 from overleaf/mj-rail-element-tooltips
[web] Add tooltips to rail buttons

GitOrigin-RevId: 1b75c48f30b593e9e725bcb9658c4c15c9fe6a66
2025-04-10 08:06:01 +00:00
Mathias Jakobsen
c183176fd3 Merge pull request #24705 from overleaf/mj-ide-rail-hover-state
[web] Editor redesign: Add hover state colors to rail

GitOrigin-RevId: 9b4a19a913963fcd4b76cf24467b8c1ad6fb1fab
2025-04-10 08:05:57 +00:00
Mathias Jakobsen
15663796ad Merge pull request #24703 from overleaf/mj-ide-align-icon
[web] Editor redesign: Align logo and home button with rail tabs

GitOrigin-RevId: 837651bb55348a043ec16afeffb508bc1d723689
2025-04-10 08:05:52 +00:00
Mathias Jakobsen
e670024f5c Merge pull request #24678 from overleaf/mj-ide-view-help-menu
[web] Add remaining options to menu bar

GitOrigin-RevId: cf6cc6c2aaf450e362588c514e1a87e923a611b4
2025-04-10 08:05:48 +00:00
Mathias Jakobsen
bdf0194fc8 [web] Add editor commands to command registry and toolbar (#24538)
* [web] Add editor commands to command registry and toolbar

* [web] Omit empty groups

* [web] Editor redesign: Move toolbar commands to custom hook

* [web] Disable editor commands when editor is not visible

GitOrigin-RevId: be9f4060fc44e51223e16860fdcf6698c927998c
2025-04-10 08:05:43 +00:00
Brian Gough
4ba0e97b95 Merge pull request #24749 from overleaf/bg-history-redis-buffer
add history redis to history-v1

GitOrigin-RevId: 70dc1aee809ad17902c93c020f3804c0f1429238
2025-04-10 08:05:35 +00:00
Brian Gough
d85dbe429d Merge pull request #24745 from overleaf/bg-history-use-consistent-import-for-chunk-store
use consistent import for chunk_store

GitOrigin-RevId: 427b148c53c9d0913b2cdfdc634273a1d8ece060
2025-04-10 08:05:31 +00:00
Jakob Ackermann
d99ba08d01 [clsi] run SyncTeX in specific output dir rather than compile dir (#24690)
* [clsi] drop support for docker-in-docker

* [clsi] run SyncTeX in specific output dir rather than compile dir

* [clsi] store output.synctex.gz outside of tar-ball in clsi-cache

* [clsi] add documentation for rewriting of docker bind-mounts

* [server-pro] update env vars for sandboxed compiles in sample config

GitOrigin-RevId: 8debd7102ac612544961f237aa4ff1c530aa3da3
2025-04-10 08:05:26 +00:00
Jakob Ackermann
b831a0b3f7 [clsi-cache] frontend (#24389)
* [clsi-lb] forward ?clsiserverid=cache requests to clsi-cache

* [web] use clsi-cache in frontend

* [web] upgrade compile from cache to full compile when triggered inflight

* [web] fix pdf-js-viewer.spec.tsx tests -- add ?clsiserverid=foo to url

* [web] fix renamed reference after merge

* [web] fix download of other output files and use specific build

* [web] consolidate validation of filename into ClsiCacheHandler

* [web] remove unused projectName from getLatestBuildFromCache

* [web] avoid hitting the same clsi-cache instance first all the time

* [web] update documentation

GitOrigin-RevId: d48265a7ba89d6731092640e1492bc9f103f5c33
2025-04-10 08:05:22 +00:00
Jakob Ackermann
b538d56591 [clsi-cache] backend (#24388)
* [clsi-cache] initial revision of the clsi-cache service

* [clsi] send output files to clsi-cache and import from clsi-cache

* [web] pass editorId to clsi

* [web] clear clsi-cache when clearing clsi cache

* [web] add split-tests for controlling clsi-cache rollout

* [web] populate clsi-cache when cloning/creating project from template

* [clsi-cache] produce less noise when populating cache hits 404

* [clsi-cache] push docker image to AR

* [clsi-cache] push docker image to AR

* [clsi-cache] allow compileGroup in job payload

* [clsi-cache] set X-Zone header from latest endpoint

* [clsi-cache] use method POST for /enqueue endpoint

* [web] populate clsi-cache in zone b with template data

* [clsi-cache] limit number of editors per project/user folder to 10

* [web] clone: populate the clsi-cache unless the TeXLive release changed

* [clsi-cache] keep user folder when clearing cache as anonymous user

* [clsi] download old output.tar.gz when synctex finds empty compile dir

* [web] fix lint

* [clsi-cache] multi-zonal lookup of single build output

* [clsi-cache] add more validation and limits

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

* [clsi] do not include clsi-cache tar-ball in output.zip

* [clsi-cache] fix reference after remaining constant

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>

* [web] consolidate validation of filename into ClsiCacheHandler

* [clsi-cache] extend metrics and event tracking

- break down most of the clsi metrics by label
  - compile=initial - new compile dir without previous output files
  - compile=recompile - recompile in existing compile dir
  - compile=from-cache - compile using previous clsi-cache
- extend segmentation on compile-result-backend event
  - isInitialCompile=true - found new compile dir at start of request
  - restoredClsiCache=true - restored compile dir from clsi-cache

* [clsi] rename metrics labels for download of clsi-cache

This is in preparation for synctex changes.

* [clsi] use constant for limit of entries in output.tar.gz

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>

* [clsi-cache] fix cloning of project cache

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>
GitOrigin-RevId: 4901a65497af13be1549af7f38ceee3188fcf881
2025-04-10 08:05:17 +00:00
Kristina
7920cd9d3d Merge pull request #24519 from overleaf/kh-add-payment-service-low-delta
[web] add `PaymentService` to `buildUsersSubscriptionViewModel`

GitOrigin-RevId: 543531226bad38d34b225dae28cf00a5e02e5558
2025-04-10 08:05:06 +00:00
Tim Down
28468e134c Merge pull request #24660 from overleaf/td-bs5-remove-react-bootstrap-0
Remove react-bootstrap 0.33.1

GitOrigin-RevId: c320a6b18c576afdc0fd49559915d3d2f3a7a1ef
2025-04-10 08:04:50 +00:00
roo hutton
1741e48d59 Merge pull request #24619 from overleaf/rh-team-invites-index
Add migration for subscriptions.teamInvites.email index

GitOrigin-RevId: 5f4bca578ae0dcf92c422596aa7834c42dc63bee
2025-04-09 08:05:49 +00:00
Jimmy Domagala-Tang
94a067d7c8 Merge pull request #24208 from overleaf/jdt-wf-analytics-wrapper
Create listener for Writefull to send events to our analytics

GitOrigin-RevId: 8ad1866e3c81b1f6c3388b744f9e27810623436e
2025-04-09 08:05:42 +00:00
Jakob Ackermann
3f10b29869 [real-time] backwards compatibility fix for redis 6.2 (#24734)
GitOrigin-RevId: ffc51a8280e0d0708e7dcb2638cabed2b7adfbf5
2025-04-09 08:05:37 +00:00
Jakob Ackermann
ca111771c2 [real-time] rename metric label to align with common name (#24732)
GitOrigin-RevId: fd161f2345f0c30aa82395dbca673025698f13fe
2025-04-09 08:05:33 +00:00
Jakob Ackermann
dadf6f0ed4 [real-time] record metrics on number of connected clients per project (#24727)
Note: "connected" here means across all real-time pods.

- editing_session_mode, counter
  - mode=connect - a client connected
  - mode=disconnect - a client disconnect
  - mode=update - continuous editing
  - status=empty - all clients disconnected
  - status=single - a single client is connected
  - status=multi - multiple clients are connected

- project_not_empty_since histogram with buckets [0,1h,2h,1d,2d,1w,30d]
  - status=empty/single/multi as described above

GitOrigin-RevId: 1cc42e72bbb5aae754399bdbc3f8771642f35c22
2025-04-09 08:05:29 +00:00
Jessica Lawshe
fc56d1690d Merge pull request #24617 from overleaf/jel-fix-status-labels
[web] Switch to `OLBadge` to fix style in BS5 on admin SSO config labels

GitOrigin-RevId: eb3745b602f33e9bd5aea3704ec6f0d2904ee5b1
2025-04-09 08:05:25 +00:00
Jessica Lawshe
aa723a70c2 Merge pull request #24580 from overleaf/jel-bs5-loading-labels
[web] Add accessibility labels for processing view on BS5 group buttons

GitOrigin-RevId: bb79d3b73eb187097d036bc5a6e307c4232f32d0
2025-04-09 08:05:21 +00:00
M Fahru
73e141a4a3 Merge pull request #24635 from overleaf/mf-tear-down-period-toggle-improvements-test
[web] Tear down `period-toggle-improvements` split test and apply the `default` variant

GitOrigin-RevId: 154a291437afc6e4b1c87eef91e6f05ae5a454c3
2025-04-09 08:05:04 +00:00
M Fahru
620edfa347 Merge pull request #24632 from overleaf/mf-tear-down-group-tab-improvements-split-test
[web] Tear down `group-tab-improvements` split test and apply the `default` variant

GitOrigin-RevId: c2fe07d0b4338f85b053637d85a05bbcbcce74ea
2025-04-09 08:05:00 +00:00
M Fahru
4e192f760d Merge pull request #24458 from overleaf/mf-update-rocket-yellow-to-be-bigger
[web] Update rocket-yellow sticker size

GitOrigin-RevId: 0e5b39610687eff3d2ce51e48da2e7829f26f574
2025-04-09 08:04:55 +00:00
Miguel Serrano
44926d3519 Merge pull request #24721 from overleaf/msm-cleanup-git-oauth-secret
[git-bridge] Cleanup `oauth` clientID/secret

GitOrigin-RevId: 48144d928119782d1c7b048b0cb6a4afb6072f28
2025-04-09 08:04:48 +00:00
Tim Down
b41f8164b8 Merge pull request #24709 from overleaf/td-prevent-spellcheck-after-destroy
Prevent spell checks after spell checker is destroyed

GitOrigin-RevId: 070f6c6ed05063e46960dad8099d61f585d6120c
2025-04-08 08:07:44 +00:00
Eric Mc Sween
bfd9ab6b8f Merge pull request #24604 from overleaf/em-docstore-errors
Downgrade 4xx errors in docstore

GitOrigin-RevId: ec6c73b4222876e6f58690779571e2e42106c36b
2025-04-08 08:07:34 +00:00
Tim Down
9ea0f2ec29 Merge pull request #24606 from overleaf/td-bs5-make-default
Make Bootstrap 5 the default everywhere

GitOrigin-RevId: 024614d6f4f370fd9c9623a6f35c64e43d2a70c4
2025-04-08 08:07:29 +00:00
Tim Down
4cee376878 Merge pull request #24688 from overleaf/td-bs5-editor-beginner-switch-popover
Migrate beginner editor switch popover to BS5

GitOrigin-RevId: c470df46989de7ad6477ee23ff13fc95dd580ea8
2025-04-08 08:07:24 +00:00
ilkin-overleaf
4e8f982ca2 Merge pull request #24682 from overleaf/ii-group-members-table-2
[web] Group members table colspan fix 2

GitOrigin-RevId: ddb7438da3c68b74b8f38feb8512175e8c24443d
2025-04-08 08:07:19 +00:00
Tim Down
eb276c7403 Merge pull request #24416 from overleaf/td-bs5-remove-platform-pages-flag
Remove bs5-misc-pages-platform feature flag from code

GitOrigin-RevId: 8da617e5d7703a56399b227b0c38acda86150b8d
2025-04-08 08:07:07 +00:00
Brian Gough
a68e96400b Merge pull request #24670 from overleaf/bg-remove-logging-of-update-errors
remove update parameter in applyOtUpdate error handling

GitOrigin-RevId: 46fa9d669327850f956154b20676317a7b13eb78
2025-04-08 08:06:46 +00:00
Domagoj Kriskovic
0f3f78cde7 Add mouse down listener in PreventSelectingEntry (#24665)
GitOrigin-RevId: 97411fd45d10b850f41c3f6269550bc6fffb0e11
2025-04-08 08:06:41 +00:00
MoxAmber
d08fa01110 Merge pull request #24545 from overleaf/as-customerio-toolbar-placeholders
[web] Create placeholders for customer.io inline messages

GitOrigin-RevId: 862362cd9336e5c1899dfaeeabac9f3da181ccf9
2025-04-08 08:06:28 +00:00
Jakob Ackermann
cdf04d695c [clsi] upgrade dockerode to bump tar-fs (#24693)
Diff: https://github.com/apocas/dockerode/compare/v3.3.1...v4.0.5
GitOrigin-RevId: 73ba2610d0c2e766a52e638754af410aaad94ec1
2025-04-08 08:06:23 +00:00
MoxAmber
71bc4c45bc Merge pull request #24373 from overleaf/as-customerio-web-sdk
[web] Set up customerio frontend SDK

GitOrigin-RevId: 0e043163e1f6cd02d8ecf3a3e854e7799d776edd
2025-04-08 08:06:18 +00:00
David
55a13ca1de Merge pull request #24662 from overleaf/mj-wc-survey-cleanup
[web] Remove unused component

GitOrigin-RevId: dd525258349834a8bbb28e78a06445bafc9b2e99
2025-04-08 08:06:09 +00:00
David
92dd62975e Merge pull request #24575 from overleaf/dp-review-panel-dark-theme
Add dark theme for review panel in new editor

GitOrigin-RevId: 179cc257cd66f1ac477d7f4d428992019298ebc1
2025-04-08 08:06:04 +00:00
Brian Gough
040f70471c Merge pull request #24636 from overleaf/bg-history-backup-fix-broken-projects
add --fix option to backup script

GitOrigin-RevId: 568c9158669bb1cede0f0dd75e7507b10e8ff5a2
2025-04-08 08:05:59 +00:00
Brian Gough
f08532dfb0 Merge pull request #24637 from overleaf/bg-history-backup-uninitialised-projects
backup uninitialised projects

GitOrigin-RevId: 9310ef9f803decffbd674024a1ffd33d1960a2c4
2025-04-08 08:05:54 +00:00
Antoine Clausse
7eecfe9e27 [web] Add another partial fix for fix_malformed_filetree: use _id instead of path to locate data (#24101)
* Fix `fix_malformed_filetree`'s `fixName`

* Fix findUniqueName with missing names in siblings

* Add test showcasing another bug: shifted arrays in filetree folder

* Update `removeNulls` to use `_id`

* Update services/web/app/src/Features/Project/ProjectLocator.js

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Add FIXME about file names uniqueness

* Rename `obj` to `project`

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 3ed795ae0621800603395f7b50626ac89c39199d
2025-04-08 08:05:32 +00:00
CloudBuild
670ed44963 auto update translation
GitOrigin-RevId: 2a2199f74cf1e0c2506ba336624cd858e2f24d3e
2025-04-07 08:05:15 +00:00
CloudBuild
f2030789d1 auto update translation
GitOrigin-RevId: 6363d21d4903cb8f4cdcca28ec1b1baca39406b1
2025-04-07 08:05:11 +00:00
ilkin-overleaf
ee11889431 Merge pull request #24647 from overleaf/ii-group-members-table
[web] Group members table colspan fix

GitOrigin-RevId: 99d52f0081ef500f63d86d9bdc2fda5c3cdab1d9
2025-04-07 08:05:04 +00:00
Domagoj Kriskovic
1fb18b092d Add upgrade prompt for track changes in share modal (#24572)
* Add upgrade prompt for track changes in share modal

* remove message from invite.jsx

* Fix itemToDisabled in Select

GitOrigin-RevId: 5ba9e2b063c7e26a4c39b9e973eddce36a5b4733
2025-04-07 08:05:00 +00:00
Domagoj Kriskovic
6169a5d3df Update track changes paywall modal (#24620)
* Update track changes paywall modal

* update list styling

GitOrigin-RevId: f5eda3a4b19c89105e163c8b5729ebcdd5dca2d0
2025-04-07 08:04:56 +00:00
Domagoj Kriskovic
51250ca45f Add review access notification in Git bridge modal (#24623)
GitOrigin-RevId: e9efc2f036445f610f2c1aa60a882faf09d2067f
2025-04-07 08:04:52 +00:00
Domagoj Kriskovic
bfe5871e9e Dropbox sync info message for read-only and reviewer collaborators (#24641)
* Dropbox sync info message for read-only and reviewer collaborators

* fix translation text

GitOrigin-RevId: 12984a1f9fa20c39f171b56f4a46830df7a5f5e0
2025-04-07 08:04:48 +00:00
Brian Gough
0cc244c516 Merge pull request #20022 from overleaf/bg-check-file-tree
add script to check for errors in project file tree

GitOrigin-RevId: da115cbd79e7ca53a0222638a54bbea1b633f709
2025-04-07 08:04:44 +00:00
Mathias Jakobsen
767ac1632e Merge pull request #24427 from overleaf/mj-command-registry
[web] Editor redesign: Add command registry

GitOrigin-RevId: c3d78d052f7e6e067de3247da8fe04329d8822ff
2025-04-07 08:04:40 +00:00
M Fahru
1d1bad23e3 Merge pull request #24625 from overleaf/mf-fix-error-auth-pages-bs5
[web] Fix form message errors aren't shown properly in bs5 auth pages

GitOrigin-RevId: 9a94fe53647d224faf63bdd047bfa26463d385f1
2025-04-04 08:05:18 +00:00
M Fahru
73b4584575 Merge pull request #24384 from overleaf/mf-teardown-checkout-redesign-split-test
[web] Tear down `checkout-redesign` split test

GitOrigin-RevId: b3038276c28aece85a47d7b0a8134fad75e8af2c
2025-04-04 08:05:13 +00:00
Tim Down
bbf85ae6d2 Merge pull request #24460 from overleaf/ar-personal-access-token-add-type-to-index
[web] personal access token add type to index

GitOrigin-RevId: 28b0fb8d3764c977d667cd8a5ee543d1f2e2eed2
2025-04-04 08:05:09 +00:00
Brian Gough
90fac6b206 Merge pull request #24587 from overleaf/bg-fix-web-routes-script
fix bin/routes script

GitOrigin-RevId: bc791cf01ce3321ec4badffe2cbc8c4ea93ba381
2025-04-04 08:05:04 +00:00
Brian Gough
9f527f10e1 Merge pull request #24104 from overleaf/bg-batched-update-concurrency-warning
prevent concurrent execution of batchedUpdate

GitOrigin-RevId: 90853ccd83943d8cd7b01fd11f152512d806e9a7
2025-04-04 08:05:00 +00:00
roo hutton
fc6df69e41 Merge pull request #24630 from overleaf/rh-null-editor-fix
Coerce null reviewer_refs to empty array

GitOrigin-RevId: dd1931b306e22fc4b7dbd3709dfac786a2475724
2025-04-04 08:04:44 +00:00
ilkin-overleaf
3b5a148cdc Merge pull request #24634 from overleaf/ii-flexible-group-licensing-replace-add-with-purchase
[web] Replace "add" with "buy" in FL

GitOrigin-RevId: 2c9aa50f138306a46ebfd8557d907c6c55d694bc
2025-04-03 08:05:12 +00:00
Domagoj Kriskovic
4e27add5b7 Add AI assist subscription check in WritefullManager (#24428)
* Add AI assist subscription check when updating subscription in WritefullManager

* move AI assist check in WritefullController

GitOrigin-RevId: 0327e1c19e14e554fb707dc1d2840b7147bdf1d1
2025-04-03 08:05:08 +00:00
Domagoj Kriskovic
c3e34f8850 Rename editMode to mode in "project-opened" analytics event (#24552)
GitOrigin-RevId: f04d5c3550bed14e9f34067fef5b8e46e56e6c4d
2025-04-03 08:05:03 +00:00
Domagoj Kriskovic
f36c87b301 Update share modal dropdown with a description for reviewers in a free project (#24571)
* Update collaborator select dropdown with a description for reviewers in free project

* Update share-project-modal test

* Fix saas-e2e tests

* fix server pro tests

* fix cypress multiple inputs selection

* fix testid case

GitOrigin-RevId: 5369828334596d80988aba168385f0a51eea998f
2025-04-03 08:04:59 +00:00
Domagoj Kriskovic
830d0daa38 Script for removing user enrollment from a subscription (#24627)
* Script for removing user enrollment to a subcription

* Add "release-managed-user"  audit log event for an user id

GitOrigin-RevId: adf2dd97ac82977bcfa07d9a24d1f3c190d095a2
2025-04-03 08:04:54 +00:00
Miguel Serrano
fd62142b21 Merge pull request #24397 from overleaf/msm-saml-logs-indexes
[web] Add missing indexes for SAML Logs search

GitOrigin-RevId: 07d994fc6a1b2af7a86e933d0b0c4d4c76370801
2025-04-03 08:04:49 +00:00
Miguel Serrano
6501314616 Merge pull request #24445 from overleaf/msm-saml-identifiers-migration
[web] Update user.samlIdentifiers compound index

GitOrigin-RevId: f14da17fa89c89f0fc75df074b3f6ca04b479efb
2025-04-03 08:04:45 +00:00
ilkin-overleaf
fef5ab7255 Merge pull request #24562 from overleaf/ii-bs5-group-settings-tear-down
[web] Group settings BS5 feature flag tear down

GitOrigin-RevId: c83297771dfeeb0426096b3b0765d6c420356d2a
2025-04-02 08:05:14 +00:00
roo hutton
0c6c61b654 Merge pull request #24618 from overleaf/rh-null-pending-reviewer
Handle null readOnly_refs in CollaboratorsHandler

GitOrigin-RevId: b718c4a1b5216a42920909615a0f3c2fe0a16bdb
2025-04-02 08:05:10 +00:00
roo hutton
774292d8ba Merge pull request #24609 from overleaf/rh-bs5-b2c-teardown
Teardown Bootstrap 5 B2C feature flag

GitOrigin-RevId: 4021820bc3b207dae9fffd23dfac778746fa8f20
2025-04-02 08:05:05 +00:00
Brian Gough
6969a12fae Merge pull request #24616 from overleaf/bg-npm-audit-fix
update axios to version 1.8.4

GitOrigin-RevId: 0e7deb1b55b08ad1c1d81fdd2fa96925b514caf7
2025-04-02 08:04:59 +00:00
roo hutton
c52b23af57 Merge pull request #24614 from overleaf/rh-pending-reviewer-pull
Set null pendingReviewer_refs to empty array in removeUserFromProject

GitOrigin-RevId: b21dd3f2febdb59dfafb45347960e375daeac463
2025-04-01 08:04:42 +00:00
CloudBuild
e08e58485e auto update translation
GitOrigin-RevId: 034ad5d613a28540d777f88c75e7284bc7eb7c3e
2025-03-31 08:05:01 +00:00
ilkin-overleaf
b9bc2b01fd Merge pull request #24597 from overleaf/ii-flexible-group-licensing-replace-users-with-licenses-2
[web] FL "licenses" in cost summary preview

GitOrigin-RevId: f6020fe0c5903dc2b1ebb923718525403e5a2fe7
2025-03-31 08:04:57 +00:00
ilkin-overleaf
b223bb8da8 Merge pull request #24576 from overleaf/ii-flexible-group-licensing-replace-users-with-licenses
[web] Replace "users" with "licenses" in flexible licensing

GitOrigin-RevId: c262f802c92e7ce82f8dc60badf8e6147c5da4e5
2025-03-31 08:04:50 +00:00
ilkin-overleaf
61ce012fb5 Merge pull request #24430 from overleaf/ii-flexible-group-licensing-tear-down-feature-flag
[web] Tear down flexible group licensing feature flag

GitOrigin-RevId: 181713f1f2371b51cbc4256debea59bbcf3668f3
2025-03-31 08:04:42 +00:00
M Fahru
f0fe0db10c [web] Remove unused get_more_compile_time string key because of paywall-cta split test is removed (#24574)
* Re-add missing translation key

* Remove `get_more_compile_time` translation key because of `paywall-cta` is removed

GitOrigin-RevId: bf0fe677adc32a91db57d41d83f0f1e0b2ee3741
2025-03-28 09:04:41 +00:00
Andrew Rumble
93793fe723 Increase default value
GitOrigin-RevId: 6674716042415aaa6b73b4efcf46443c3faab0cc
2025-03-27 14:17:15 +00:00
Andrew Rumble
46f3b595a9 Configure backup RPO for backup-verifier
GitOrigin-RevId: 376c2f18a1e9bef4e77f0ce5999ec7ce5341d481
2025-03-27 14:17:11 +00:00
M Fahru
639690bb50 Merge pull request #24551 from overleaf/mf-remove-fedramp-plans-page
[web] Remove fedramp from group tab in plans page features table

GitOrigin-RevId: fd855ad6ce7bb0d14e970342740a93d4f85ae465
2025-03-27 14:17:07 +00:00
M Fahru
90b6dbdf55 Merge pull request #24530 from overleaf/mf-add-papers-integration-plans-page
[web] Add Papers integration to plans page

GitOrigin-RevId: 72a890fb69417d5a9e8f4146421a3a2ee1716c32
2025-03-27 14:17:03 +00:00
M Fahru
640c699042 Merge pull request #24525 from overleaf/mf-add-learning-menu-navigation
[web] Add new "Resources" menu in our "Help" menu dropdown

GitOrigin-RevId: 9a0e26696d33edaba091abf8fac97fbf051bb6c2
2025-03-27 14:16:59 +00:00
M Fahru
ad677afa81 Merge pull request #22705 from overleaf/mf-tear-down-paywall-cta
[web] Tear down `paywall-cta` split test

GitOrigin-RevId: 8cfba819b80bb34f48f8fc1fec37aee6791ef9f0
2025-03-27 14:16:52 +00:00
Eric Mc Sween
f46fd6f2d5 Merge pull request #24433 from overleaf/em-pending-reviewers
Support reviewers in the collaborator limit enforcement logic

GitOrigin-RevId: f11a8e37ca6ef36f9894233803c6ee8363bf0ff8
2025-03-27 14:16:48 +00:00
Miguel Serrano
373b222929 Merge pull request #24565 from overleaf/msm-fix-ldap-test
[CE/SP] Fix LDAP e2e tests

GitOrigin-RevId: 536de71f2b4e5b9bd2ae67dbea26d03b794a7a64
2025-03-27 14:16:44 +00:00
Andrew Rumble
99ab41fd76 Allow scaling in getEndDateForRPO
RPO can now be scaled to allow a little extra grace in certain
circumstances.

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: fa60a9ffe966977e396b5645919ddd1451fb1b7a
2025-03-27 14:16:40 +00:00
Andrew Rumble
c921c8f586 Monitor backup status in health check
GitOrigin-RevId: 1a90b2fcf85bfa5ec1e5aabcfe4183d406da95e6
2025-03-27 14:16:36 +00:00
Andrew Rumble
4707842642 Add functions for monitoring backup status of db records
GitOrigin-RevId: f0d3564dfd3b38ef9ee451de866c0c05acd0cb20
2025-03-27 14:16:32 +00:00
Andrew Rumble
dabf610764 Extract getEndDateForRPO method to utils
This will allow sharing with other functionality.

GitOrigin-RevId: a6e11447180511cc3741ca03f4996ef7ceb45ea5
2025-03-27 14:16:28 +00:00
Miguel Serrano
b44dd4d3c5 Merge pull request #24558 from overleaf/msm-ce-rebuild-dockerfile
[CE] Rebuild Dockerfile-base

GitOrigin-RevId: 7fca7fc64a709f7d5d4eccb4b7f9586a78769803
2025-03-27 14:16:17 +00:00
Tim Down
2d4b5e51f1 Merge pull request #24539 from overleaf/td-inactive-project-index-2
Update inactive project deactivation index, second attempt

GitOrigin-RevId: adc16761b001b2aa919b5a61cdbd468b7ad4e26d
2025-03-27 14:16:07 +00:00
Andrew Rumble
c55df0e803 Add new index to improve sort speed on hostname search
GitOrigin-RevId: e78c2848a0cfbe6347e57de140512941a68f7f47
2025-03-27 14:15:59 +00:00
Alf Eaton
b14490d6aa Avoid setting pendingOpCreatedAt for remote changes (#24542)
GitOrigin-RevId: 5d1684a743825cac23d486678b8f249cf0d152d8
2025-03-27 09:06:02 +00:00
David
d67f3d3181 Merge pull request #24442 from overleaf/dp-writefull-parent
Provide writefull with element selectors to insert into

GitOrigin-RevId: 87c9a939f7024e54adfe0b970dddb96b7f56d6b3
2025-03-27 09:05:51 +00:00
Antoine Clausse
2f0254a2c8 [web] Add reCAPTCHA conditions to /user/emails/add-secondary (#24528)
* Add RecaptchaConditions to `user/emails/add-secondary`, set font to 12px

* Hide `RecaptchaConditions` if `ExposedSettings.recaptchaDisabled.addEmail`

GitOrigin-RevId: dcc4609bf8787076257caed6b5a5d1e47178380e
2025-03-27 09:05:47 +00:00
Antoine Clausse
fa058a5ca8 Add recaptcha conditions to the add-email form (#24295)
GitOrigin-RevId: 4b90a73edd2435d6c858ccf790827fb3352069e8
2025-03-27 09:05:42 +00:00
Tim Down
25d1b2a24d Merge pull request #24448 from overleaf/td-deleted-users-email-index
Add user email indexes on deletedUsers collection

GitOrigin-RevId: 032b8b189b67b9f491b47438c3b2e0cbfd7b8294
2025-03-27 09:05:38 +00:00
Tim Down
363e426e9f Merge pull request #24536 from overleaf/revert-24444-td-inactive-project-index
Revert "Update inactive project deactivation index"

GitOrigin-RevId: cc6788af5fcb652fdb1eaeefe7f10c5bc1afa910
2025-03-27 09:05:34 +00:00
Tim Down
d04cc1d8ac Update inactive project deactivation index (#24444)
* Update inactive project deactivation index

* Delete index first, otherwise Mongo complains that the index already exists with a different name

GitOrigin-RevId: b28a60c0774a77363c4e052ddb64bf68665cccf5
2025-03-27 09:05:22 +00:00
Jakob Ackermann
dda94cdfbc [web] ensure that only a single socket.io transport is connected (#24422)
GitOrigin-RevId: 9397b0c85f0a889385d4761945e976ada7aa537b
2025-03-27 09:05:14 +00:00
Alf Eaton
e754ee9cb4 Remove unused flush-changes listener (#24449)
GitOrigin-RevId: e22a6677617e1d20f9cd4fce38653d126714a553
2025-03-27 09:05:06 +00:00
Andrew Rumble
7eb5c8a38e Adds deleted filter to docs index
GitOrigin-RevId: bd00fa383946c3a2aa7b03f355aad399bbe9cdca
2025-03-27 09:05:01 +00:00
Miguel Serrano
1ab8302254 Merge pull request #24467 from overleaf/msm-fix-sp-e2e
[CE/SP] e2e fixes

GitOrigin-RevId: 32722dd7d7520e87cd8d8cf6dbdadec73b27caa6
2025-03-26 09:05:36 +00:00
roo hutton
29238e54e3 Merge pull request #24125 from overleaf/rh-current-version-fix
Fix version check for undefined split tests

GitOrigin-RevId: bbbd44a27ca41c5ffac02cb34ac0049a14cd13e4
2025-03-26 09:05:32 +00:00
Eric Mc Sween
20c7f14b3c Merge pull request #24461 from overleaf/em-non-editable-file-in-history
Graceful fallback for getRangesSnapshot()

GitOrigin-RevId: 2f0e70dbcdd38de87d0b1c7590f7d8a5a7112937
2025-03-26 09:05:21 +00:00
Miguel Serrano
b480903426 Merge pull request #24381 from overleaf/msm-improve-sync-group-subscription-script
[web] Improve group subscription sync + add missing indexes

GitOrigin-RevId: e7cecd9b8a1978a9e13a165d3f646b98ff7e9394
2025-03-26 09:05:04 +00:00
Miguel Serrano
235f1a5a59 Merge pull request #24329 from overleaf/msm-fix-login-translation-ce-sp
[web] Fix `log_in` default translation in user/pass login

GitOrigin-RevId: 70876652a462b7917d9864e5dccce45ebf3b6d0a
2025-03-26 09:05:00 +00:00
Miguel Serrano
d59afb21be Merge pull request #24327 from overleaf/msm-update-max-reconnect-gracefully-interval
[web] Make `maxReconnectGracefullyIntervalMs` configurable

GitOrigin-RevId: 18846b050e76ec86d00bc0dd7e07ab09d552bed7
2025-03-26 09:04:56 +00:00
Jimmy Domagala-Tang
5ba43eb56c Merge pull request #24253 from overleaf/jdt-move-wf-instance-to-context
moving WF to editor context in anticipation for calling functionality…

GitOrigin-RevId: 368554e9308fe8e9e7ef42a4abd78690ec834520
2025-03-25 09:05:21 +00:00
M Fahru
9eb84d6ad5 Merge pull request #24417 from overleaf/mf-implement-stripe-hosted-checkout-split-test
[web] Implement stripe hosted checkout with split test

GitOrigin-RevId: 25e5ff2a46135f402cdf479623ab38c858c5640c
2025-03-25 09:05:16 +00:00
Eric Mc Sween
374acf8119 Merge pull request #24462 from overleaf/em-resync-error
Fix error reporting on resyncs in project-history

GitOrigin-RevId: 9e8a454f746c2b4db7c28fafcd52e50935af5957
2025-03-25 09:05:12 +00:00
CloudBuild
ab19677a6c auto update translation
GitOrigin-RevId: 9ba894868c164a34d5420369c798d837a06fd450
2025-03-24 10:51:34 +00:00
CloudBuild
e8462f4250 auto update translation
GitOrigin-RevId: d8edcccce86a3892bebf2b4ab2d769275a231325
2025-03-24 10:51:30 +00:00
Eric Mc Sween
1fb94dee18 Merge pull request #24357 from overleaf/em-reviewers-limit
Count reviewers towards the collaborator limit in the backend

GitOrigin-RevId: 352fa37023ffbb032e23a474a81897ca871fee69
2025-03-24 10:51:14 +00:00
Eric Mc Sween
e4dae982d2 Merge pull request #24225 from overleaf/em-reviewers-share-modal
Count reviewers towards collaborator limit in share modal

GitOrigin-RevId: 27ec3a787124be7590791412d914ec6da78bab35
2025-03-24 10:51:09 +00:00
Thomas Mees
f5c92cb627 Merge pull request #24309 from overleaf/tm-recurly-webhook-ratelimit
Make a new less restrictive ratelimiter for the recurly callback

GitOrigin-RevId: 61bc39110a7ecc6e8f937478a9ccc965b555add5
2025-03-24 10:51:05 +00:00
Alf Eaton
bdcf1d3a83 Convert GitHub Sync tests to Cypress (#24228)
* Use OError
* Remove setTimeout stub
* Convert GitHub Sync tests to Cypress
* Use setIgnoringExternalUpdates directly
* Migrate remaining GitHub Sync components to TypeScript

GitOrigin-RevId: 7c8b875b9a7bbf6353d87a5f93c2267d1d4bc65d
2025-03-24 10:51:00 +00:00
Alf Eaton
e827540a6d Record an event when the "unsaved doc" alert is displayed (#24431)
GitOrigin-RevId: 87ccdf5a15173afa7548532d72fb1d3e32f255fe
2025-03-24 10:50:56 +00:00
Alf Eaton
7f019d3880 Fix id and labels for compile/image settings (#24439)
GitOrigin-RevId: 5a686afed947bf2da1f90d80f20cb8ba7168a1f5
2025-03-24 10:50:51 +00:00
Miguel Serrano
716fe07e84 Merge pull request #24383 from overleaf/msm-hotfix-5-3-3
[SP/CE] Hotfix 5.3.3 / 4.2.9

GitOrigin-RevId: e377fe7ab83295d0a270f908bde4628928a76775
2025-03-24 10:50:43 +00:00
Eric Mc Sween
0e9c310d1d Merge pull request #24390 from overleaf/em-enforce-content-hash-validation
Enforce content hash validation in history

GitOrigin-RevId: 90de21ea86ddc6548001059c41139a2af5b27060
2025-03-24 10:50:01 +00:00
David
7308ac0e1f Merge pull request #24306 from overleaf/mj-ide-breadcrumbs-loading
[web] Disable breadcrumbs with user setting

GitOrigin-RevId: bcb43aee139a321d9532b9a49e1e73fabba2fd66
2025-03-24 10:49:46 +00:00
David
a853a92765 Merge pull request #24350 from overleaf/dp-settings-modal
Implement new editor settings modal options

GitOrigin-RevId: b16358e29f2ebcac6e7f92f1c0196f5911f2e733
2025-03-24 10:49:41 +00:00
Rebeka Dekany
562ef81389 Cleanup Bootstrap 3 code in the Account settings page (#24058)
* Remove the Bootstrap 5 version utilities

* Remove Account settings LESS stylesheet and unused styles

* Prefer using the OLFormText wrapper component instead of FormText

* Remove the Bootstrap 3 version stories

* Replace Font Awesome icons to Material icons

* Fix the heading hierarchy

* Cleanup unused translation

* Restore ellipsis to the text of two loading spinners

* Add loading button tests back and add some button loading labels

---------

Co-authored-by: Tim Down <158919+timdown@users.noreply.github.com>
GitOrigin-RevId: 283a9167c8c78bf0fe5062840ded6917dcd6263b
2025-03-24 10:49:33 +00:00
Domagoj Kriskovic
8fe07b196b Fix import path for UpgradeTrackChangesModal in review mode switcher (#24410)
GitOrigin-RevId: 929c85480d253ff5786d99812f4959683f050b52
2025-03-24 10:49:25 +00:00
Domagoj Kriskovic
7f67df2468 Disable track changes for reviewers in free projects (#24368)
* Disable track changes for reviewers in free projects

* cleanup_unused_locales

GitOrigin-RevId: 806ee20c0aed5ef61352041782af620cec72ed70
2025-03-24 10:49:20 +00:00
Domagoj Kriskovic
47fb3a644c Script for generating add-on prices (from recurly) (#24051)
* Script for generating addon prices (from recurly)

* addon code as param

GitOrigin-RevId: b1a45a806c29de56a10532398b56468f9732593f
2025-03-24 10:49:15 +00:00
Liangjun Song
e44f892cb0 Merge pull request #24271 from overleaf/ls-script-to-update-manually-billed-users
Scripts to update terms and conditions for manually billed users

GitOrigin-RevId: 5efe43a42c3ed21779c9de698268817e2cbb5249
2025-03-24 10:49:11 +00:00
Domagoj Kriskovic
6932b3deb7 Add AI feature detection to subscription in OAuth user info (#24240)
* Add AI feature detection to subscription in OAuth user info

* remove subscriptionHasAi

GitOrigin-RevId: 73cdbe452cc5c7f5e379d29723978b33cb827762
2025-03-24 10:49:02 +00:00
Andrew Rumble
800b151024 Ensure metrics exist before collecting them
GitOrigin-RevId: 811301ddebb794341dccc0f27954c66dc5c44aa4
2025-03-24 10:48:58 +00:00
Andrew Rumble
47d8e59938 Add code to shutdown message for debugging
GitOrigin-RevId: 1efbda8c82ca1bc160ec4334388fb14259be563c
2025-03-24 10:48:53 +00:00
Andrew Rumble
56f8993bd7 Remove low information log message
GitOrigin-RevId: 8e961d7dea04debe0f459db3b461673618ab7597
2025-03-24 10:48:48 +00:00
Andrew Rumble
432a92173a Perform verification smoothly over time window
GitOrigin-RevId: b00c18a61a5473f3b7353fd5ab1e55f191722ecd
2025-03-24 10:48:44 +00:00
Andrew Rumble
2779691cd9 Add a script for verifying a set of blobs have been backed up
GitOrigin-RevId: 8f7af647ce0ac86ee9800cdf3d386fb78debed7a
2025-03-24 10:48:39 +00:00
Andrew Rumble
d2d556ddf6 Allow cached persistor to get size of a blob
GitOrigin-RevId: 7e2c14381cf717c21325917ef4f78acb340a50d9
2025-03-24 10:48:35 +00:00
David
0895b5c6ee Merge pull request #24405 from overleaf/dp-review-panel-new-cleanup
Remove review-panel-new namespacing css class

GitOrigin-RevId: 3a3f62674763d1b6b4b1a69e6a72b676cdd549c0
2025-03-24 10:48:30 +00:00
Tim Down
7168572e74 Merge pull request #24336 from overleaf/td-bs5-migrate-cypress-tests
Migrate some Cypress tests to Bootstrap 5

GitOrigin-RevId: a3de8680046c35f8cc1df8baef60981d8eb52580
2025-03-24 10:48:25 +00:00
Tim Down
c2da12939e Merge pull request #24313 from overleaf/td-ac-bs5-frontend-tests
Update front-end tests to use Bootstrap 5

GitOrigin-RevId: abaa09f8c0639d64d6ade97468ab16204e5de97b
2025-03-24 10:48:20 +00:00
Alf Eaton
b8d74c6ae0 Remove 'review-panel-redesign' split test and old code (#24235)
GitOrigin-RevId: 1f3d4a9a51429591a82391a9bee3cfdf226bc9c8
2025-03-24 10:48:15 +00:00
Alf Eaton
e56c4304a1 Avoid re-rendering sync buttons when code/pdf position changes (#24192)
GitOrigin-RevId: cc17fc15df356bde6a737d6e60479cdc2e421d3e
2025-03-24 10:48:02 +00:00
Alf Eaton
9fd4e4ab87 Display changes as additions when only whitespace content is removed (#24296)
GitOrigin-RevId: b6527e8a1c4a73faeed01538212224349ad70614
2025-03-24 10:47:53 +00:00
Alf Eaton
d7cddd14fa Use first root .tex file as fallback main doc when importing from zip (#24302)
GitOrigin-RevId: 51affe14b77aa4f774d5e5f0807f42e07842f807
2025-03-24 10:47:44 +00:00
Alf Eaton
67a6857ca6 Increase the file upload rate limit from 200 to 500 per 15 mins (#24312)
GitOrigin-RevId: e57cc9f8dc12d40ce30eba0ef8067dd3ae72f3ea
2025-03-24 10:47:40 +00:00
M Fahru
57f389646c Merge pull request #24360 from overleaf/mf-initialize-stripe-package-and-keys
[web] Init Stripe packages and keys

GitOrigin-RevId: e707704db6d758a0309f398bfde8900376b5cc67
2025-03-24 10:47:20 +00:00
Jessica Lawshe
f3a19f48d8 Merge pull request #24377 from overleaf/jel-xml-crypto-update
[web] Upgrade dependencies of dependencies for `xml-crypto`

GitOrigin-RevId: 004302f7b5a780e3a43c427182e21fb162df8dd1
2025-03-24 10:47:16 +00:00
Domagoj Kriskovic
19852ed180 Update project-joined event to include role, mode, ownerId, and source (#23677)
* Update project-joined event to include role, mode, ownerId, and source

* fix test

GitOrigin-RevId: 67c428a80f5791b69a57b6719ec795399e2a98ef
2025-03-24 10:47:11 +00:00
Domagoj Kriskovic
5a33a51076 Fix font family for edit mode switcher dropdown (#24291)
GitOrigin-RevId: ccefe032da6dcbecdad8e076797c08ceb5776d6c
2025-03-24 10:47:06 +00:00
Tim Down
48e0bc28f8 Merge pull request #24365 from overleaf/td-bs5-misc-clean-up
Remove BS3 code from a couple of places

GitOrigin-RevId: 110a8f4c96a5418da27be11471d2e93bb7e01ee8
2025-03-24 10:47:02 +00:00
Tim Down
e98ec386cb Merge pull request #24349 from overleaf/td-bs5-add-secondary-email
Migrate add secondary email page to Bootstrap 5

GitOrigin-RevId: f5d1992f2cb2d313f5950ccfd5c187b9bac72d82
2025-03-24 10:46:57 +00:00
David
9680fd115b Merge pull request #24346 from overleaf/dp-breadcrumbs-flag
Remove remaining direct usage of editor-redesign feature flag

GitOrigin-RevId: c17e377f7e6f7828a77e9620df6e31d1030a98cf
2025-03-24 10:46:52 +00:00
Jakob Ackermann
54f5c3115c [web] convert file-list to typescript (#24354)
* [web] convert file-list to typescript

* [web] add type annotation for clsiServerId without providing default

Co-authored-by: David Powell <david.powell@overleaf.com>

---------

Co-authored-by: David Powell <david.powell@overleaf.com>
GitOrigin-RevId: 5ecb79c2540a3e46e296c6bf7f8573fb65febc3f
2025-03-24 10:46:48 +00:00
Jakob Ackermann
1117ea1b3e [clsi] add helper function for detecting extraneous files (#24376)
* [clsi] add helper function for detecting extraneous files

* [clsi] output.pdfxref and output.synctex.gz are extraneous as well

* [clsi] minor code cleanup

Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>

---------

Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>
GitOrigin-RevId: 0d6c96c99b6be3adaee1558b1f958da885e6307a
2025-03-24 10:46:43 +00:00
Jakob Ackermann
ff78f687d8 [document-updater] add endpoint for project wide last updated timestamp (#24352)
* [document-updater] fix acceptance test for sending two updates

The Object.create() invocation yields an empty object. The following v
assignment works as expected. The effective update is { v: 43 }.
Processing that fails as no operations were included.

* [document-updater] add endpoint project wide last updated timestamp

* [document-updater] apply review feedback

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>

---------

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>
GitOrigin-RevId: 81397537bfd85c2077f19669860b1391c15b34a3
2025-03-24 10:46:38 +00:00
Brian Gough
31b57e2991 Merge pull request #24367 from overleaf/bg-add-new-project-history-flush-script
add new project history flush script

GitOrigin-RevId: 4d6f3be1ada7191334b934e34e1c9eac59a816d0
2025-03-24 10:46:34 +00:00
Jakob Ackermann
8ada51158f [clsi] add support for downloading output files with dot in extension (#24342)
E.g. output.tar.gz

GitOrigin-RevId: d119a41172bb21fb2de429a64b82d05a1efc2375
2025-03-24 10:46:29 +00:00
Jessica Lawshe
6cb5360c88 Merge pull request #24339 from overleaf/jel-xml-crypto
[web] Upgrade `xml-crypto` in web

GitOrigin-RevId: 0fa810d227da9c65031b843958f8b5e796e3adc8
2025-03-24 10:46:24 +00:00
Jakob Ackermann
70601db76f [fetch-utils] export fetchRedirectWithResponse (#24372)
GitOrigin-RevId: 7cd30479fbe70fce68f2d6ef573187fc4f412749
2025-03-24 10:46:19 +00:00
Jakob Ackermann
7b69d61540 [saas-e2e] initial revision of SaaS E2E tests running in the dev-env (#24311)
* [saas-e2e] initial revision of SaaS E2E tests running in the dev-env

* [v1] make rubocop happy

* [v1] make rubocop happy

* [saas-e2e] more retries for webpack startup check

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>

* [web] restrict e2e_test_setup.mjs to running in the dev-env

Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>

* [saas-e2e] import latest split-tests from production

---------

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>
GitOrigin-RevId: 034343ee56b8d059090d8a5de74eaac24429b527
2025-03-24 10:46:15 +00:00
Jakob Ackermann
13bf214a3c [web] generate clsi buildId ahead of fetching project content (#24337)
* [web] generate clsi buildId ahead of fetching project content

The buildIds timestamp component will be used for cache invalidation.

* [clsi] strict validation for buildId

* [clsi] validate buildId parameter

GitOrigin-RevId: 88e8b2d48e78fa137b6dca7f2e6b93bbcf88a777
2025-03-24 10:46:02 +00:00
Jakob Ackermann
47ea64c30a [web] operate on shadow-copy of compileResponse.outputFiles (#24330)
GitOrigin-RevId: 49336daf11b2a011d03b7469aa4c0ffed72b279a
2025-03-24 10:45:58 +00:00
Jakob Ackermann
e94473a1ce [web] add support for regex based allow-list for skipping captcha (#24266)
* [web] double down on validating email addresses

* [web] normalize emails in captcha middleware

* [web] add support for regex based allow-list for skipping captcha

* [web] skip captcha for trusted users on all actions

GitOrigin-RevId: a994ebf6b74e80f462d2dab1fe5113bbffa676a9
2025-03-24 10:45:53 +00:00
Jakob Ackermann
a7818e9b11 [web] update reference to backfill_project_image_name script (#24326)
GitOrigin-RevId: 40a459de2321aa140638d30c5a1d16390c2cdb28
2025-03-24 10:45:48 +00:00
M Fahru
f94adbf039 Merge pull request #24244 from overleaf/mf-add-new-stickers-contentful-11march25
[web] Add new stickers in contentful

GitOrigin-RevId: ebb5411e38ffab7bb1dc366de7521d03bad2ab27
2025-03-18 09:06:02 +00:00
M Fahru
ec13227fc6 Merge pull request #21520 from overleaf/mf-fedramp-ad
[web][will merge 17 march 2025] Add "FedRamp" advertisement variant to the US Gov banner list with a special rule

GitOrigin-RevId: 86f96c6c108f72b44658dca53d2cecabf0fe9d14
2025-03-18 09:05:58 +00:00
Jakob Ackermann
a530cca2c5 [history-v1] increase timeout for preparing test environment (#24345)
GitOrigin-RevId: a11a16f07da61603218ff14bef32172d4f32c469
2025-03-18 09:05:53 +00:00
Brian Gough
0292bc418d Merge pull request #24335 from overleaf/bg-warn-old-pending-changes
add warning for backups outside rpo threshold

GitOrigin-RevId: a8421529ae64693d860b0325961b010a132426da
2025-03-18 09:05:49 +00:00
Jakob Ackermann
e99cd74cca [fetch-utils] add fetchRedirectWithResponse (#24341)
GitOrigin-RevId: 9b1e9b02399beea87dbae0f87d1d7d897d145178
2025-03-18 09:05:44 +00:00
David
dcabf55882 Merge pull request #24137 from overleaf/mj-ide-permissions-utils
[web] Add switcher for editor redesign

GitOrigin-RevId: 806a1f567027df53f879b564a50aaae9166c8480
2025-03-18 09:05:40 +00:00
Eric Mc Sween
35dc7faab6 Merge pull request #24224 from overleaf/em-resync-on-flush-failure
Immediately attempt a resync when a history flush fails

GitOrigin-RevId: 098a0a7edf55c0ed47c48e0a3c080e3562cdceaa
2025-03-18 09:05:36 +00:00
Tim Down
c5b584e3d8 Merge pull request #24165 from overleaf/lg-td-firefox-78-unsupported
Redirect Firefox 78 and lower to unsupported browser page

GitOrigin-RevId: 1da7379c622b3ae61c3309295c769fe293c0e716
2025-03-18 09:05:21 +00:00
Tim Down
09b68de041 Merge pull request #24083 from overleaf/td-bs5-misc-bs3-removal
Remove Bootstrap 3 components in a few places

GitOrigin-RevId: 0380506543b40f3d8d83f2bf6199af28f61ad5af
2025-03-18 09:05:17 +00:00
Tim Down
7c7cc0fce0 Merge pull request #24021 from overleaf/td-social-logos
Update social media logos in footer

GitOrigin-RevId: a9498d7501c6d4c4ce1b76884f0f278dd92d4cf7
2025-03-18 09:05:12 +00:00
Brian Gough
3f7c88108c Merge pull request #24275 from overleaf/bg-fix-pending-change-timestamp
fix pending change timestamp

GitOrigin-RevId: 9297a4b57ea718e6a2e1ca62388919c62911af6c
2025-03-18 09:05:08 +00:00
Andrew Rumble
f134746c9c Extend script to allow multiple blobs to be processed from csv
GitOrigin-RevId: ad47eb754436ddc7f56b27ceda627268c3a030a1
2025-03-18 09:05:03 +00:00
Andrew Rumble
b5d6484991 Add a script to backup a single blob from a project
GitOrigin-RevId: 464e6d69093b87891497e07d1627cd20e2285380
2025-03-18 09:04:59 +00:00
Andrew Rumble
78481e010e Add verification looper and handle shutdown signals
Shutdown signals become more relevant now that we are looping as we want
to gracefully stop processing records rather than continue looping.

GitOrigin-RevId: dbb499388c86d552d77954988f8fc27d140da3f1
2025-03-18 09:04:54 +00:00
Andrew Rumble
9d72eeeeac Add new strategy to verify_sampled_projects
GitOrigin-RevId: d967da41250bb5945d5b8668b212d4a61b4f9d69
2025-03-18 09:04:50 +00:00
Andrew Rumble
f85fdd3a97 Refactor project sampler and add new sampler type
GitOrigin-RevId: 984aa35cef1165e1c8342073b9211a387bd6089e
2025-03-18 09:04:46 +00:00
Jakob Ackermann
f6bd485863 [misc] align initializing of mongodb replica set (#24287)
* [misc] align initializing of mongodb replica set

* [misc] fix volumes for mono container in dev-env

* Remove duplicate volumes key

---------

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
GitOrigin-RevId: 0119c42ee8b13a0fca9373e40a27fc5b2a52d73b
2025-03-17 09:04:58 +00:00
Jakob Ackermann
5cdaa424ee [clsi] increase CACHE_AGE for output files to 90 minutes (#24322)
GitOrigin-RevId: d6208281be8d9a97278f7c60e203de68eb3f7501
2025-03-17 09:04:53 +00:00
Jakob Ackermann
0c3a62297a [clsi] collect disk usage more frequently (#24314)
GitOrigin-RevId: 0c5b3ebeadec6d2ac70b7adc77935aa0cea92ffc
2025-03-17 09:04:49 +00:00
CloudBuild
a097577e29 auto update translation
GitOrigin-RevId: 3fa7f5bc4f52ddec1c55f0409bc930be1e522971
2025-03-17 09:04:44 +00:00
Jakob Ackermann
f7e716c826 [clsi] add metric for disk usage (#24303)
GitOrigin-RevId: e21b867a2fdaf54e9ec5b29b0f80b29349eb901c
2025-03-14 09:05:23 +00:00
Thomas Mees
84996ea88c Implement checks for user eligibility when switching plans (#24276)
* Convert updateSubscription controller to async/await

* Move updateSubscription to subscription module

* Validate if user is eligible to change plan

GitOrigin-RevId: ce538429cd5a3b93acabdc046f1a8b164ac02301
2025-03-14 09:05:19 +00:00
Mathias Jakobsen
e6371ec197 Merge pull request #24260 from overleaf/mj-ide-rail-selected-states
[web] Editor redesign: Update selected state for rail tabs

GitOrigin-RevId: 4ce868c62a53355f8271db32884db0b2ed985d60
2025-03-14 09:05:00 +00:00
Mathias Jakobsen
971c63a636 Merge pull request #24258 from overleaf/mj-ide-dark-mode-readonly-file
[web] Specify text color of readonly files

GitOrigin-RevId: c7395f4b693c9b413d60e0aba20cc78ea72efd86
2025-03-14 09:04:54 +00:00
Mathias Jakobsen
5a67353dc3 [web] Editor redesign: Add actions to project name dropdown (#24220)
GitOrigin-RevId: 04f4abdc529a0494c70b0e3d14847b0cf452b80d
2025-03-14 09:04:40 +00:00
Jakob Ackermann
eaefecb91d [server-pro] TeXLive 2025 has been released (#24285)
* [server-pro] TeXLive 2025 has been released

* [server-ce] bump copyright year in README

GitOrigin-RevId: ece909181b96f25250559cf387c19cd87bb48097
2025-03-13 09:06:48 +00:00
Jakob Ackermann
8d569815e6 [real-time] only log userId from session (#24281)
While we are at it, log projectId and transport.

GitOrigin-RevId: ac10220247947e0050f1374c81091c50c8cc0e85
2025-03-13 09:06:44 +00:00
Brian Gough
2d48c86e61 Merge pull request #24269 from overleaf/bg-backup-replication-smoothing
extend backup scheduler to delay jobs for load levelling

GitOrigin-RevId: be62c458d3be464bf80ca590fcc107c2760aa061
2025-03-13 09:06:28 +00:00
Brian Gough
a178c0f400 Merge pull request #24268 from overleaf/bg-backup-replication-lag-metrics
add backup replication metrics

GitOrigin-RevId: a734435e3c6ce56350b2286bd218a5e2324d93a9
2025-03-13 09:06:24 +00:00
Brian Gough
cf105cf01d Merge pull request #24267 from overleaf/bg-fix-init-option
update backup script to use index when finding uninitialised projects

GitOrigin-RevId: 04ce0654b3d42de1c1a9bb542482c2dd53540628
2025-03-13 09:06:20 +00:00
Brian Gough
3b93efdf5c Merge pull request #24256 from overleaf/bg-backup-fix-sample
fix backup sample script

GitOrigin-RevId: 4bf4c15324d9b3b7ebd809f7b212e52d75ab216d
2025-03-13 09:06:16 +00:00
Alf Eaton
28ff69b51b Revert "Check for changed files since last merge in GitHub Sync modal (#24180)" (#24273)
This reverts commit 4cd55e1501648f0a18b77be5af19deb0773d6881.

GitOrigin-RevId: 132eead97e924037c2fd17fd636a769ef95f4cc1
2025-03-13 09:06:06 +00:00
Alf Eaton
4ddd3ee772 Check for changed files since last merge in GitHub Sync modal (#24180)
GitOrigin-RevId: 4cd55e1501648f0a18b77be5af19deb0773d6881
2025-03-13 09:06:02 +00:00
Andrew Rumble
92499f6260 Revert "Revert "Add a metric so that we can know maint is prevented""
This reverts commit b3c4e7181b5f6f52178e165f6220c485e8e97caf.

GitOrigin-RevId: d5525bbe5cb1546cdff8e201de04762a8d86e332
2025-03-13 09:05:59 +00:00
Jakob Ackermann
3d9bc77fce [misc] compress in ssl_proxy instead of webpack-dev-server (#24263)
GitOrigin-RevId: 200cf9c49a68412591a359f46f0d1d900e303520
2025-03-13 09:05:52 +00:00
Christopher Hoskin
c3ade4dce1 Merge pull request #24070 from overleaf/csh-fix-check_institution_users
Allow higher timeouts

GitOrigin-RevId: 8b762cab7cf1420cec732ea592a8075e96b9a5f8
2025-03-13 09:05:45 +00:00
Miguel Serrano
9470c3a44b Merge pull request #23790 from overleaf/msm-base-image-update
[CE] Trigger CE `Dockerfile-base` build

GitOrigin-RevId: b96b8b2d612b5b0a4079b9fafd6cf3c071c6ab8d
2025-03-13 09:05:35 +00:00
Miguel Serrano
89b4eaf391 Merge pull request #24130 from overleaf/msm-proxy-agent-learn
[web] Add `https-proxy-agent` for learn wiki

GitOrigin-RevId: 215f0f3ad5254b0620692c1cc4c90b50bdf1d4ef
2025-03-13 09:05:31 +00:00
Miguel Serrano
79dcab4ef5 Merge pull request #24231 from overleaf/msm-fix-separator-footer
[web] Fix separator in thin-footer

GitOrigin-RevId: 8b5700ea7998e9fe451dded10321757ee5fa47a6
2025-03-13 09:05:27 +00:00
David
542a52c510 Merge pull request #24210 from overleaf/mj-nested-menu-bar
[web] Editor redesign: Make menu bar nestable

GitOrigin-RevId: 5c08126499ff96494d6af9adcbd75126ddd596af
2025-03-13 09:05:23 +00:00
David
10b0d6333f Merge pull request #24177 from overleaf/mj-ide-symbol-palette
[web] Editor redesign: Add symbol palette

GitOrigin-RevId: c9c1e15adef86023b18a6d6efea854777fa4fb11
2025-03-13 09:05:19 +00:00
David
1fcf046c81 Merge pull request #24133 from overleaf/mj-ide-selected-colors
[web] Editor redesign: Update selected states

GitOrigin-RevId: a43f4504c14c536850ce97c6259bf5d4d67b5418
2025-03-13 09:05:15 +00:00
David
cc72d8b11b Merge pull request #24171 from overleaf/mj-ide-dark-mode-premium
[web] Editor redesign: Fix color of premium badge in dark mode

GitOrigin-RevId: 6a49ec99a2e339635c1e2f7a732a4a1176bdd8f4
2025-03-13 09:05:11 +00:00
David
c4493ebc90 Merge pull request #24197 from overleaf/mj-ide-dark-color-scheme
[web] Editor redesign: Set color-scheme to dark in dark mode

GitOrigin-RevId: 6d62288e4ec9737629ed2e7a78865c6017ccea59
2025-03-13 09:05:07 +00:00
David
3d9b1bb177 Merge pull request #23914 from overleaf/dp-history
Add existing history view into new editor

GitOrigin-RevId: 0d35ba1f38dafd8a71087f231f2cddc1b0424401
2025-03-13 09:05:03 +00:00
David
ea33c7d896 Merge pull request #24233 from overleaf/dp-dark-breadcrumbs
Add dark mode for breadcrumbs

GitOrigin-RevId: f1425a1da514f74854fd7afe176e27e2b62dae9c
2025-03-13 09:04:59 +00:00
Andrew Rumble
768180c456 Handle errors during startup
GitOrigin-RevId: ba8e5964e78439b0ea3650191f5ea9c9e22f2b50
2025-03-13 09:04:55 +00:00
Andrew Rumble
dad6f97cce Load global blobs when starting backup-verifier
GitOrigin-RevId: 31aa2a3639f8d9a69b5b98f27aff17b98bd14694
2025-03-13 09:04:51 +00:00
Andrew Rumble
273ae4aecd Split healthCheck out into separate module
GitOrigin-RevId: 847d00b696fe6d82f4bd5fea8f9130437c68e7b2
2025-03-13 09:04:47 +00:00
Andrew Rumble
b5f8bfa28e Switch health check to use projects instead of blobs
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: db1a1c8ce5968e558b0754e5e0da50af89fd80db
2025-03-13 09:04:43 +00:00
Antoine Clausse
959562661f [web] Make Bootstrap 5 the default for new pages (#24079)
* Update layout-base.pug to treat missing `bootstrap5PageStatus` as enabled

* Set `bootstrap5PageStatus = 'disabled'` everywhere it's undefined

I found the files with `find . -name "*.pug" -type f -exec grep -l "block content" {} \; | xargs grep -L "bootstrap5PageStatus\|layout-website-redesign-boo
                        tstrap-5\|layout-website-redesign-cms-bootstrap-5" | sort`

GitOrigin-RevId: 8ecf2eedea032d96e4fba078fb0316a7a311b08a
2025-03-12 09:06:50 +00:00
Jimmy Domagala-Tang
80abd0ac2c Merge pull request #23972 from overleaf/jdt-grant-assist-via-wf-set-trait
enable granting of premium error assist based on WF entitlement to bu…

GitOrigin-RevId: 9d21cf8755c881bdc698c0cf9891076ecefd34eb
2025-03-12 09:06:42 +00:00
Andrew Rumble
19eefebe95 Revert "Switch health check to use projects instead of blobs"
This reverts commit c318b70397ed5e2fcbb07fa019412b56844260ef.

GitOrigin-RevId: 087ae9d21be83bf3dae47c4e6d27eb4e74f387df
2025-03-12 09:06:34 +00:00
Andrew Rumble
087a9daf34 Revert "Split healthCheck out into separate module"
This reverts commit 96061812977d5c854e494cd44163b16a96722b17.

GitOrigin-RevId: f30a185b65a4f1346ed13fa0c6e9ea0852d44335
2025-03-12 09:06:30 +00:00
Andrew Rumble
a7be1f3430 Split healthCheck out into separate module
GitOrigin-RevId: 96061812977d5c854e494cd44163b16a96722b17
2025-03-12 09:06:22 +00:00
Andrew Rumble
c373db4f86 Switch health check to use projects instead of blobs
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: c318b70397ed5e2fcbb07fa019412b56844260ef
2025-03-12 09:06:18 +00:00
Jessica Lawshe
3bc21faeaf Merge pull request #23088 from overleaf/jel-managed-users-enroll
[web] Show message instead of enrollment form when already managed

GitOrigin-RevId: ffa9dfd8af17ee3128df15d4027a66b96f2c8b0d
2025-03-12 09:06:03 +00:00
Jessica Lawshe
f9515f10cd Merge pull request #24191 from overleaf/jel-latexqc-bootstrap
[latexqc] Remove `react-bootstrap` and upgrade to `bootstrap` 5

GitOrigin-RevId: 39d9a12121d34e3844a8e80a50bc6d3bc73c1808
2025-03-12 09:05:59 +00:00
Andrew Rumble
0b387c5116 Simplify error identification
GitOrigin-RevId: 6dae1ed99269deb26e15ec921ba173f85f5e6fc9
2025-03-12 09:05:48 +00:00
Andrew Rumble
149b590413 Fix script name in usage prompt
GitOrigin-RevId: ab4ed7479c96d3d1db82b23ef3c883706c61995e
2025-03-12 09:05:44 +00:00
Andrew Rumble
282f5f92ff Ensure global blobs are loaded before verifying
GitOrigin-RevId: 3f78c44e6b4d98fd6c469b0f4fbacc033b0a0868
2025-03-12 09:05:39 +00:00
Andrew Rumble
afedce1b0e Add script for verifying sampled sets of projects
GitOrigin-RevId: 23a599ea269a528201c67cda66bd2d00c0d376e4
2025-03-12 09:05:35 +00:00
Andrew Rumble
061d67ee4b Emit more specific errors from backupVerifier
GitOrigin-RevId: 99475608f096be3e35fbaaf1825b99d145ea86f3
2025-03-12 09:05:31 +00:00
Andrew Rumble
36056e75d7 Improve chunk loading in backupVerifier
Brings the process closer to history_store.

We can't use the backup history_store because the keys are generated
differently for chunks than the standard history_store way of doing it.

GitOrigin-RevId: 07adfc0531f6ec0f38bb70ea0fe8ae0d41f508cc
2025-03-12 09:05:26 +00:00
Andrew Rumble
d04bfbcdea Add promiseMapSettledWithLimit utility
GitOrigin-RevId: e34102de17f28e43deb383d630088c6e753e2ec1
2025-03-12 09:05:22 +00:00
Alf Eaton
ecc2f1f544 Merge pull request #24196 from overleaf/ae-fetch-data-access
Avoid fetching unavailable project data

GitOrigin-RevId: 58fd58f098af5e3eb000e31f22b403d3e28ef691
2025-03-12 09:05:18 +00:00
Alf Eaton
a11266471c Merge pull request #22661 from overleaf/ae-remove-client-opentelemetry
Remove OpenTelemetry from the web frontend

GitOrigin-RevId: fc81052724afd7f62c44e17de3adffbb7c1a62c2
2025-03-12 09:05:13 +00:00
Andrew Rumble
302362c70d Return a NotFoundError when filestore disabled
GitOrigin-RevId: b470d75fc621e2e52180cf923d0ee818f4ec4cb2
2025-03-12 09:05:09 +00:00
Brian Gough
efd53e567c Merge pull request #24237 from overleaf/bg-fix-backup-worker
fixes for backup worker

GitOrigin-RevId: 79c99e5b2d99d1b0298f69d968e0e2cb89281dd6
2025-03-12 09:05:04 +00:00
Andrew Rumble
0002e008bb Revert "Add a metric so that we can know maint is prevented"
This reverts commit a4df6ce7f22df01e1116ae9dbf5c7c7afc73c388.

GitOrigin-RevId: b3c4e7181b5f6f52178e165f6220c485e8e97caf
2025-03-12 09:04:57 +00:00
ilkin-overleaf
96af83a4ed Merge pull request #24138 from overleaf/ii-flexible-licensing-colombian-pesos
[web] Recurly subtotal limit on flexible licensing

GitOrigin-RevId: 302fb15dcc360e3b47674e8e776ffa115af6cbe6
2025-03-12 09:04:52 +00:00
Andrew Rumble
00aa26cd1a Add a metric so that we can know maint is prevented
GitOrigin-RevId: a4df6ce7f22df01e1116ae9dbf5c7c7afc73c388
2025-03-12 09:04:48 +00:00
Brian Gough
3cad54b215 Merge pull request #24186 from overleaf/bg-backup-index-on-missing-lastBackedUpVersion
add a mongo index to find projects which are not backed up

GitOrigin-RevId: d776ebac2bef348117dc87556156e4682ac1b3e3
2025-03-11 09:06:47 +00:00
Brian Gough
a04d3198a8 Merge pull request #24181 from overleaf/bg-Project-Audit-Log-Transfer-ownership-is-missing-the-IP-address
add missing ip adress to audit log for transfer ownership

GitOrigin-RevId: c14494efce25efa92a6cd81bcf197d8f897571bb
2025-03-11 09:06:43 +00:00
CloudBuild
aaa15a2733 auto update translation
GitOrigin-RevId: 9617a83b396ecec5c4b8a50a858db49257326027
2025-03-11 09:06:26 +00:00
M Fahru
cae698b705 Merge pull request #23994 from overleaf/mf-20-millions-update-user-count
[web] Update user count to 20 millions

GitOrigin-RevId: 768b08b70cdbcff0435897f7cf518de3dff80f55
2025-03-11 09:06:12 +00:00
Brian Gough
c233243948 Merge pull request #24200 from overleaf/bg-backup-queue-pending-jobs
fix backup worker and backup scheduler to handle pending projects

GitOrigin-RevId: a97e011615666b3ae2b8fafe26a96d41b3609edd
2025-03-11 09:06:05 +00:00
Andrew Rumble
f045361b49 Merge pull request #24205 from overleaf/ar-log-additional-information-when-getting-a-file-from-filestore
[web] Gather information about files with no hash

GitOrigin-RevId: 7f509c13f14902a40ae39bf1889103274de23040
2025-03-11 09:06:01 +00:00
Andrew Rumble
441c7a89a7 Merge pull request #24204 from overleaf/ar-jpa-add-chunk-verification
[history-v1] add chunk verification

GitOrigin-RevId: 7208ad20872386813bb1c6946283afddb5e8b1cf
2025-03-11 09:05:57 +00:00
Davinder Singh
7ec4cbd841 Merge pull request #24164 from overleaf/ds-group-discount-10-percent-february
Group plans - Reintroduce 10% discount for group plans (Part 1, 2 & 3 Combined)

GitOrigin-RevId: f3a59a65bbd300cc06f70e179e794c32ed7970ce
2025-03-11 09:05:50 +00:00
Eric Mc Sween
1ea577ef12 Merge pull request #24154 from overleaf/em-bs5-subscription-preview
Migrate the subscription change preview page to BS5

GitOrigin-RevId: beb398ef3a81be1b8d35536c524af6c110ea1b3d
2025-03-11 09:05:46 +00:00
Alf Eaton
eedf5367fc Store/update entity sha after importing from GitHub (#23935)
* Refactor WebApiManager
* Store/update entity sha after importing

GitOrigin-RevId: 604bf3b8010140355c21afca01a54237a301eb92
2025-03-11 09:05:42 +00:00
Alf Eaton
fe4f41501f Parse labels from environment options (#24189)
GitOrigin-RevId: e51eed7521f6e32e614f8b38092a0b0219f7f186
2025-03-11 09:05:31 +00:00
Mathias Jakobsen
f11ad91249 Merge pull request #24201 from overleaf/mj-fix-ce-contact
[web] Import contact us modal via macro

GitOrigin-RevId: 6d8a14c33fb158a38413d32036b17dd4b3debdd9
2025-03-11 09:05:24 +00:00
ilkin-overleaf
1c4a761478 Merge pull request #24057 from overleaf/ii-group-management-improvements
[web] Group management improvements

GitOrigin-RevId: 01826bf37fa8d5e06595f660ccb42a8df00b63ae
2025-03-11 09:05:20 +00:00
ilkin-overleaf
c3c14ccfbc Merge pull request #24028 from overleaf/ii-bs5-group-settings
[web] BS5 group settings

GitOrigin-RevId: d4f0a16c653548bee66a65a5a5db056c8cc09666
2025-03-11 09:05:16 +00:00
David
9824151e62 Merge pull request #24033 from overleaf/mj-rail-dropdown
[web] Editor redesign: Add help dropdown to rail

GitOrigin-RevId: 052ba1852a8e2702fe1671c4613d986b9b0c91c2
2025-03-11 09:05:12 +00:00
David
d7ad742ba3 Merge pull request #23747 from overleaf/dp-breadcrumbs
Add file breadcrumbs to new editor

GitOrigin-RevId: 54bde446ad632976503a2c4aff915c862bad710e
2025-03-11 09:05:08 +00:00
Jakob Ackermann
087c41190e [web] switch query for hard-deleting users and add index (#22920)
* [web] switch query for hard-deleting users and add index

Co-authored-by: Dr. Sasha Göbbels <sasha.goebbels@overleaf.com>

* [web] fix unit tests

---------

Co-authored-by: Dr. Sasha Göbbels <sasha.goebbels@overleaf.com>
GitOrigin-RevId: a7fd2a590351d2e0d60c0032ca78d457ef815e41
2025-03-11 09:05:04 +00:00
Rebeka Dekany
69bc8a135b Bootstrap 3 cleanup from the IDE page - #2 (#24175)
* Remove skipLoadingStyleSheet

* Remove unused bootstrap-5 assignment from the Account settings page since it's archived

* Remove bsVersionIcon

* Remove bsVersion, bootstrapVersion and isBootstrap5 from elements on the IDE page

* Remove BS3Dropdown from the context menu

* Cleanup Bootstrap 3 related comment and type

GitOrigin-RevId: a67244eb78943ee84cc5f89bae164c0361e8fc13
2025-03-11 09:05:00 +00:00
CloudBuild
6a344c7a52 auto update translation
GitOrigin-RevId: 037a91f43519537e0dc572771f8cbe92659d61df
2025-03-10 09:05:31 +00:00
CloudBuild
b5031fdee5 auto update translation
GitOrigin-RevId: ba3022ee74dee8356611c970a9cd880930023d34
2025-03-10 09:05:27 +00:00
Brian Gough
15e5501ddd Merge pull request #23119 from overleaf/bg-issue23112
Add script to SP/CE to export user projects

GitOrigin-RevId: d8a5af638ccc2376ce2af25ef00904be5aa682e3
2025-03-10 09:05:23 +00:00
Rebeka Dekany
5974eed4aa Upgrade Storybook to 8.4.7 (#24144)
GitOrigin-RevId: df469e5d4123f0a4704a8670896ad29797f0f92b
2025-03-10 09:05:19 +00:00
Brian Gough
8a4c84e7dd Merge pull request #24131 from overleaf/bg-disable-call-to-filestore-in-project-deleter
disable call to filestore in project deleter

GitOrigin-RevId: 07d9d3b33220e33abfa18a5f54e56e2b8d544e8d
2025-03-10 09:05:15 +00:00
Antoine Clausse
c4e6dfbbbd [web] Use 6-digits code to confirm existing email in Account Settings (#23931)
* Rename `checkSecondaryEmailConfirmationCode` to `checkAddSecondaryEmailConfirmationCode`

* Create function `sendCodeAndStoreInSession`

* Create function `sendExistingSecondaryEmailConfirmationCode`

* Create function `_checkConfirmationCode`

* Create function `checkExistingEmailConfirmationCode`

* Rename `resendSecondaryEmailConfirmationCode` to `resendAddSecondaryEmailConfirmationCode`

* Create function `_resendConfirmationCode`

* Create function `resendExistingSecondaryEmailConfirmationCode`

* Add `ResendConfirmationCodeModal`

* Remove `ResendConfirmationEmailButton`

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

* Update frontend test

* Fix: don't throw on render when send-confirmation-code fails!

* Update phrasing in the UI

Per https://docs.google.com/document/d/1PE1vlZWQN--PjmXpyHR9rV2YPd7OIPIsUbnZaHj0cDI/edit?usp=sharing

* Add unit test

* Don't share the "send-confirmation" and "resend-confirmation" rate-limits

* Update frontend test after copy change

* Rename `checkAddSecondaryEmailConfirmationCode` to `checkNewSecondaryEmailConfirmationCode` and `resendAddSecondaryEmailConfirmationCode` to `resendNewSecondaryEmailConfirmationCode`

* Rename `cb` to `beforeConfirmEmail`

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Return `422` on missing session data

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Add `userId` to log

* Replace `isSecondary` param by `welcomeUser`

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Rename `resend-confirm-email-code`'s `existingEmail` to `email`

* Remove "secondary" from rate-limiters

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Remove unnecessary `userId` check behind `AuthenticationController.requireLogin()`

* Only open the modal if the code was sent successfully

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: df892064641d9f722785699777383b2d863124e1
2025-03-07 09:06:50 +00:00
Davinder Singh
e52f3543a7 Merge pull request #24149 from overleaf/ds-revert-of-discount-pr
Revert "Group plans - Reintroduce 10% discount for group plans (part 1)"

GitOrigin-RevId: b3ed4fa969df49c35e9119241161dabeeb66ce61
2025-03-07 09:06:39 +00:00
Davinder Singh
37dc516ea2 Merge pull request #24148 from overleaf/revert-24066-ds-group-discount-2
Revert "Group plans - Reintroduce 10% discount for group plans (part 2)"

GitOrigin-RevId: 2d8a8d117222daa997e4d0632a9e7235559a8b8c
2025-03-07 09:06:35 +00:00
Davinder Singh
6dce566595 Merge pull request #24147 from overleaf/revert-24096-ds-group-discount-3
Revert "Group plans - Reintroduce 10% discount for group plans (part 3)"

GitOrigin-RevId: e763fff88109ff57e897173e287415baed6fc81c
2025-03-07 09:06:30 +00:00
Brian Gough
9ff3a45690 Merge pull request #24142 from overleaf/bg-backup-fix-blob-error-handling
fix bug which caused errors to be ignored when backing up blobs

GitOrigin-RevId: 64674a484a6e22493cba8f8e47d4671072dc2e9a
2025-03-07 09:06:26 +00:00
Brian Gough
281168fd52 Merge pull request #24080 from overleaf/bg-serialise-backup-initialisation
fix backup initialization to avoid incorrect use of batchedUpdate

GitOrigin-RevId: 6984f3510c6b03b3dfda35efea8173f848e58eff
2025-03-07 09:06:22 +00:00
Brian Gough
154de1a0f9 Merge pull request #24102 from overleaf/bg-backup-stats-script
add backup sampling script

GitOrigin-RevId: cfd546d421cdcfb9f8ad2111703a437a7272bd54
2025-03-07 09:06:17 +00:00
Davinder Singh
4e8d718609 Merge pull request #24096 from overleaf/ds-group-discount-3
Group plans - Reintroduce 10% discount for group plans (part 3)

GitOrigin-RevId: bd3b834c86e5821dee18a8b5f884d8b7f8a1111b
2025-03-07 09:06:10 +00:00
Davinder Singh
3784061935 Merge pull request #24066 from overleaf/ds-group-discount-2
Group plans - Reintroduce 10% discount for group plans (part 2)

GitOrigin-RevId: ea5d600d901329944092daf560a015ac8ca10cd3
2025-03-07 09:06:05 +00:00
Davinder Singh
8ad7ec6682 Merge pull request #23973 from overleaf/ds-group-discount
Group plans - Reintroduce 10% discount for group plans (part 1)

GitOrigin-RevId: 7cb60413ff99396a015de03450b19fba2d896fab
2025-03-07 09:06:01 +00:00
Rebeka Dekany
cd133e8240 Show dashboard notification for unconfirmed emails and untrusted secondary emails (#23919)
* Show an aggressive dashboard notification for unconfirmed emails
Show a persistent dashboard notification for untrusted secondary emails

* For emails before the cutoffDate, start displaying the notification on the deletionDate and show the notification for 90 days

* Update the email deletion logic for displaying the email notification and update test

* Update test

GitOrigin-RevId: 1b0e44f79592292d428c634dc1ec4df9e6ceaeb4
2025-03-07 09:05:50 +00:00
Alf Eaton
2147f1d53d Remove Bootstrap 3 code from IDE page components (#23061)
GitOrigin-RevId: b41aff10672bf96e892de0be396a69eb25e2443b
2025-03-07 09:05:45 +00:00
Alf Eaton
a062ec2dd9 Ensure that the PDF viewer has an isolated stacking context (#24003)
GitOrigin-RevId: 2cdaffa8c4387e173f3256864ec15d785931caf2
2025-03-07 09:05:30 +00:00
Alf Eaton
763bf34e19 Avoid creating a comment when the main selection is empty (#24063)
GitOrigin-RevId: 8c21dfbcb5f49d196afd0e8730326ee6e0bfbe25
2025-03-07 09:05:25 +00:00
Alf Eaton
ee99856b8f Update text in GitHub Sync modal (#24068)
GitOrigin-RevId: c99b9f8eac48b8dee1e195e82ae5d8bbf4a4b0a5
2025-03-07 09:05:21 +00:00
Alf Eaton
b653ae2a66 Remove prototype full project search components (#24106)
GitOrigin-RevId: 7ffd290f537c1f3aae072a045405b2c3b2253f45
2025-03-07 09:05:16 +00:00
Alf Eaton
ab55d54c45 Add custom words to the en_US dictionary (#24108)
GitOrigin-RevId: 44587567340b4a6ff357f6a321055554a800d799
2025-03-07 09:05:12 +00:00
Alf Eaton
b52ad5c32e Set font-size and line-height for upload modal (#24109)
GitOrigin-RevId: 3544628aa616d2507b0b5d440a8bb087c0748748
2025-03-07 09:05:08 +00:00
Antoine Clausse
13e97ab2c9 [web] Remove absolute font-size for code, kdb, samp (#24078)
* Swap pre/div in split-test-dump-modal.tsx

* Remove fixed font-size and line-height for code/kdb/pre/samp

* Set the font-size of code,kdb,samp to 1em instead of 0.875em

* Remove unnecessary `font-size: inherit`

GitOrigin-RevId: b5b19cf08774312ad1b3c4dcf16ea08e08093ccb
2025-03-07 09:04:56 +00:00
Andrew Rumble
13b4e6333c Merge pull request #23874 from overleaf/ar-use-gcp-pre-emptible-signal
[clsi] Use GCP pre-emptible metadata instead of hostname

GitOrigin-RevId: 2df305e68f2999c9d3bde051dbb533025478800f
2025-03-07 09:04:45 +00:00
Jakob Ackermann
6916e22b09 [real-time] log transport and clientId in both directions of serverPing (#24084)
GitOrigin-RevId: dabd8db6949498ef1a6252864cef94cd4329e3c0
2025-03-07 09:04:40 +00:00
roo hutton
27e2adecab Merge pull request #23939 from overleaf/rh-cio-analytics-split-test
Only send events to customer.io if in campaign split test

GitOrigin-RevId: 572ad5efdfc1e86f525722c6a425fa1454f2cf3a
2025-03-06 09:05:45 +00:00
CloudBuild
4441f42dea auto update translation
GitOrigin-RevId: 2e25b40ec57740bbb49deaab1c4f4809a5c150fd
2025-03-06 09:05:41 +00:00
Eric Mc Sween
4ccc21ca85 Merge pull request #24046 from overleaf/em-cdn-assets
Load assets from the CDN in selected pages

GitOrigin-RevId: c2b25f74e30c0ce47e486855dee3815d72d43d47
2025-03-06 09:05:23 +00:00
Eric Mc Sween
8e86a78666 Merge pull request #24038 from overleaf/em-tear-down-bs5-misc-pages-core
Tear down bs5-misc-pages-core feature flag

GitOrigin-RevId: e99ad216f775ec7acba3eab7bbaef2753877e046
2025-03-06 09:05:18 +00:00
Domagoj Kriskovic
42ddbb6eb3 Update Overleaf assist paywall to reflect group and institution licensing (#24061)
GitOrigin-RevId: 5df447febb845ed60ddb04428d7f6a0375f351f7
2025-03-06 09:05:07 +00:00
Domagoj Kriskovic
08882c63df Adjust scroll behavior in review panel to account for wrapped lines (#24029)
GitOrigin-RevId: 748f7ffcdd2d0c83132b43de99b10f598227f6b0
2025-03-06 09:05:03 +00:00
Miguel Serrano
42ee56ecd4 Merge pull request #23810 from overleaf/msm-ldap-login-rate-limiter
[SP] LDAP login rate limiter

GitOrigin-RevId: dedab17da85c0f91b280d002cdad796e95b9fd4f
2025-03-06 09:04:55 +00:00
CloudBuild
2c91363745 auto update translation
GitOrigin-RevId: 0ad3c5d4f7b66b19329b2a249a291af52c7da312
2025-03-05 09:06:00 +00:00
Brian Gough
893294e6b8 Merge pull request #24069 from overleaf/bg-backup-errors
more tweaks for backup errors

GitOrigin-RevId: 0f7c7bb5004923c3c22c6e3471bb7152cc3e05e2
2025-03-05 09:05:50 +00:00
Mathias Jakobsen
6f826c5546 Merge pull request #24024 from overleaf/ae-react-refresh-enabled
Use process.env.REACT_REFRESH_ENABLED for configuration

GitOrigin-RevId: e97967e52bed10422b0e2cce53fb09e2745a5c4a
2025-03-05 09:05:46 +00:00
Mathias Jakobsen
3a67124f90 Merge pull request #24026 from overleaf/ae-webpack-version
Ensure single webpack version

GitOrigin-RevId: 1a3c3af2d77967ad010a858404a9c6a87fe22bf3
2025-03-05 09:05:42 +00:00
Mathias Jakobsen
d17f698453 Merge pull request #23915 from overleaf/dp-resizing
Blank out pdf and editor windows when resizing rail

GitOrigin-RevId: 0fc93e068541bc6110fe20339c49355f98d2cd7a
2025-03-05 09:05:38 +00:00
Mathias Jakobsen
733bc26ed1 Merge pull request #23848 from overleaf/dp-settings
Add initial components for new editor settings modal

GitOrigin-RevId: e3eb511d2af9265e0fc1cf54178b3e2953717950
2025-03-05 09:05:34 +00:00
Mathias Jakobsen
d63221d8b6 Merge pull request #23925 from overleaf/mj-ide-dark-mode
[web] Editor Redesign: Add dark mode

GitOrigin-RevId: 063552ee3c1647e8ae090852868b01d372845b87
2025-03-05 09:05:30 +00:00
Rebeka Dekany
5010c91c79 Make the checkbox to readonly to preserve the Group plan value on form submission (#24004)
GitOrigin-RevId: 555c69952d64e050f0f30669ee8d69a511f6a08d
2025-03-05 09:05:23 +00:00
Rebeka Dekany
55e14b9b21 Adjust the vertical positioning of the OpenDyslexic Mono font (#24008)
GitOrigin-RevId: 0b47294219e0517601a4d005204e8569ad80d786
2025-03-05 09:05:19 +00:00
Brian Gough
34b397073f Merge pull request #24053 from overleaf/bg-backup-queue-tweaks-II
additional backup queue tweaks

GitOrigin-RevId: b54e0c5f4a23bb9962c5062bd1b80f9f124c3c87
2025-03-05 09:05:15 +00:00
Copybot
ccd685b60d Merge pull request #1308 from DerEchteJoghurt:fix/mongo/mongosh
GitOrigin-RevId: e3efb05bfb6ea0f65dcd71c820324701bb48fa4f
2025-03-05 09:05:10 +00:00
Tim Down
2d1fb9c1a5 Merge pull request #22639 from overleaf/td-ds-nav-tag-men-toggle-bg
Preserve background on expanded tag menu toggle button in DS nav project dashboard

GitOrigin-RevId: cc5f6092236150e123202af17e1c2eaecca29654
2025-03-05 09:05:06 +00:00
Tim Down
cd644320f4 Merge pull request #23998 from overleaf/td-resolved-thread-count
Fix for resolved thread count display

GitOrigin-RevId: c4f6848ed2e952981d20f157466db6dded99c3c9
2025-03-05 09:05:02 +00:00
Tim Down
1f339b37bd Merge pull request #23763 from overleaf/td-bs5-user-activation
Migrate user activation page to BS5

GitOrigin-RevId: 3f4c9173cf480aafc5d874bfe81bbc8503a2e5be
2025-03-05 09:04:58 +00:00
Tim Down
69896f4c8b Merge pull request #23872 from overleaf/td-bs5-compromised-password-page
Migrate compromised password page to Bootstrap 5

GitOrigin-RevId: fed58659cdeb12ba16bdd08c0c91c629a71ac169
2025-03-05 09:04:54 +00:00
Brian Gough
c815106d62 Merge pull request #24037 from overleaf/bg-fix-backup-worker-errors
backup worker tweaks

GitOrigin-RevId: 7901bb0257c7c7320afd08ef965f124347a1de30
2025-03-04 09:05:12 +00:00
M Fahru
67947fff6c Merge pull request #23062 from overleaf/mf-remove-leftover-new-design-variant-config
[web] Remove leftover plans page redesign split test config

GitOrigin-RevId: a658dda19034096668a148fc0991010b7914bbca
2025-03-04 09:05:05 +00:00
M Fahru
17d7c3c094 Merge pull request #23585 from overleaf/mf-rename-b2c-pages-bs5-split-test
[web] Rename b2c pages split test to follow the standard for bs5 migration

GitOrigin-RevId: 7a26912642d84866b6b99ce57107f8ba79335f1a
2025-03-04 09:05:01 +00:00
Eric Mc Sween
290bdf4361 Merge pull request #23993 from overleaf/em-remove-fixed-remove-change-flag
Remove fixedRemoveChange flag from editor updates

GitOrigin-RevId: bf74e1137560184c4b024a3b5c6ede5a841d3559
2025-03-04 09:04:48 +00:00
Brian Gough
1dbf5dca10 Merge pull request #24019 from overleaf/bg-backup-add-error-logging
add logging of backup errors in batch mode

GitOrigin-RevId: 96ae7a2354f82451b3bbe8c5459c4d4cf47e5459
2025-03-04 09:04:44 +00:00
Domagoj Kriskovic
408f6dfee3 Open overleaf assist paywall via event listener (#23958)
* Add overleaf assist paywall modal component in storybook

* update img alt

* remove data-action

* rename assistant -> assist

* use css var for blue color

* Open Overleaf assist paywall if in "overleaf-assist-bundle" split-test

* dont use optional planCode

* Open overleaf assist paywal via event listener

* rename to mainEditorLayoutModals

* call setAssistantUpgraded when modal is shown

* fix merge mistake

* fix lint error

* fix merge differences

GitOrigin-RevId: 0b3162a5c241d4dbe2773ae773c3e35f02c5c492
2025-03-04 09:04:37 +00:00
Domagoj Kriskovic
767eccd1c8 Update projectRanges on "accept-changes" (#23984)
GitOrigin-RevId: f06dd126e3948df41f71a189d97f8d3ad6928a43
2025-03-04 09:04:33 +00:00
Jakob Ackermann
a4f2d0e37a [server-pro] tests: npm audit fix (#23982)
GitOrigin-RevId: c3779a435a32106bf83c74baf2abf140876459e3
2025-03-03 09:05:35 +00:00
Jakob Ackermann
dddb091d77 [real-time] retire legacy transports on the server-side as well (#23983)
GitOrigin-RevId: 27dad39e889a5df46943c4f393277be16ab8ffdd
2025-03-03 09:05:30 +00:00
Jakob Ackermann
195a12a3dc [web] fix download of output.pdf when creating Server Pro template (#23988)
GitOrigin-RevId: 899b9bfd54af8d3f345393068663d769ec3a869b
2025-03-03 09:05:26 +00:00
Brian Gough
4720e8f2c5 Merge pull request #23989 from overleaf/bg-backup-worker-reduce-logging
reduce log level from info to debug for backup logging

GitOrigin-RevId: 10f541b0e0068aafd50710226fb8425527fee7c5
2025-03-03 09:05:22 +00:00
Eric Mc Sween
0d9528932c Merge pull request #23900 from overleaf/em-read-only-permissions
Restrict viewer permissions for comments

GitOrigin-RevId: fb7189b8af9358603e29bbd33b0160dd862fe532
2025-03-03 09:05:17 +00:00
Eric Mc Sween
1534731cdf Merge pull request #23902 from overleaf/em-upgrade-octokit
Upgrade octokit/request to 9.2.2 in github-sync

GitOrigin-RevId: de44a80b5aad50a982f706ab148e9a76f3004b00
2025-03-03 09:05:13 +00:00
Brian Gough
8d0fa5be65 Merge pull request #23977 from overleaf/bg-backup-worker-load-global-blobs
ensure global blobs are loaded in backup worker

GitOrigin-RevId: b80791ef38e7fa8db364bdd3a9c461757778409d
2025-03-03 09:05:08 +00:00
Jakob Ackermann
d8b0ab9436 [clsi] avoid downloads from compile directory (#23975)
* [clsi] make error copying output files a fatal compile error

Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>

* [clsi] remove unused endpoints for downloading files from compileDir

Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>

* [clsi] avoid useless clone of output files

* [clsi] add test for output files when compile did not produce a PDF

---------

Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>
GitOrigin-RevId: cb998b99b4d96cb48ddd70987958f614ad3b40fc
2025-03-03 09:05:04 +00:00
Domagoj Kriskovic
0a270e0870 Open Overleaf assist paywall if in "overleaf-assist-bundle" split-test (#23894)
* Add overleaf assist paywall modal component in storybook

* update img alt

* remove data-action

* rename assistant -> assist

* use css var for blue color

* Open Overleaf assist paywall if in "overleaf-assist-bundle" split-test

* dont use optional planCode

GitOrigin-RevId: 9315ee2350cb7bc804afa720047849c220781686
2025-03-03 09:04:48 +00:00
Brian Gough
a8030f9e32 Merge pull request #23970 from overleaf/bg-change-history-worker-to-use-queue-redis
fix backup worker to use queues redis

GitOrigin-RevId: 4f278c12ea00ec98d9fa0a1430e1dd8bc8b40409
2025-03-03 09:04:40 +00:00
Jakob Ackermann
14d9874b68 [git-bridge] add CORS support (#23892)
GitOrigin-RevId: 9e3d85e479746affd047434ec9ce2588b60ca76c
2025-02-28 09:06:10 +00:00
Jakob Ackermann
18fb4effb1 [server-pro] tests: reduce flakiness of editor tests (#23963)
- Swap order of "oldContent" and "static" (apparently that makes the
  selection more reliable...)
- Turn off spellchecking outside the spellchecking test (avoid DOM
  changes from added underline on misspelled words)
- Swap order of opening file and switching to doc under test:
  The cy.findByText('static') was occasionally triggering an unhandled
  error in codemirror when it ran while the editor was getting swapped.
  (something along the lines of "cannot select out-of-dom range")
- Align source and visual editor tests, use ".findByText(oldContent)"
- Double down on waiting for doc switch to finish loading

GitOrigin-RevId: 8b201a6d78a60e3cfa92c22198f63e705d8880ec
2025-02-28 09:06:07 +00:00
Brian Gough
b37b409994 Merge pull request #23946 from overleaf/bg-backup-queue-implementation
additional backup queue implementation

GitOrigin-RevId: 03754e57a6c6798a07dcca6a5248dec61b3cdc7a
2025-02-28 09:05:50 +00:00
Andrew Rumble
767591973c Merge pull request #23905 from overleaf/ar-mocha-11
[all] Bump mocha everywhere

GitOrigin-RevId: bf5587047f9ceb88872cbd356c2029717bb8ca9d
2025-02-28 09:05:40 +00:00
Jimmy Domagala-Tang
da3a24ad7e Merge pull request #23721 from overleaf/jdt-hide-ai-for-paying-users-if-toggled
Hiding AI should hide assist for paying accounts

GitOrigin-RevId: 6a1ec76d648be2986241ee6e87d74ce69c7c4867
2025-02-28 09:05:32 +00:00
Jimmy Domagala-Tang
8a81b0777a Merge pull request #23820 from overleaf/jdt-transition-wf-accounts-script
Script to transition WF users from auto-load to auto-create

GitOrigin-RevId: 538ff04dece52e4c46a4a592cb5089d20eb5aa7a
2025-02-28 09:05:25 +00:00
Alf Eaton
18c2b4108d Tidy up global scope values (#20379)
* Remove crypto from window
* Remove ui.loadingStyleSheet
* Remove onlineUsers scope
* Remove addNewComment

GitOrigin-RevId: 5e62ed7f265cdd530b5ca85488477093b0be775a
2025-02-28 09:05:15 +00:00
Alf Eaton
c9320eb7a1 Allow AI feature use for reviewers (#23843)
GitOrigin-RevId: 190c0ee4174d69d4429dba6c0c58d785b4afab7d
2025-02-28 09:05:10 +00:00
Antoine Clausse
0abdbc0093 [web] Add script to attach dangling comments to a document (#23904)
* Add script to attach dangling comments to a document

* Fix comment id field

---------

Co-authored-by: Eric Mc Sween <5454374+emcsween@users.noreply.github.com>
GitOrigin-RevId: b51c9c57542b24bd27cb9475b088eb2f0d88b3af
2025-02-28 09:05:06 +00:00
Alf Eaton
9586af91e5 Store deletedProjectReviewerIds on deleterData (#23868)
GitOrigin-RevId: 1ae0aaf59de6869fc9469bffaf0c68fe17405464
2025-02-28 09:05:02 +00:00
ilkin-overleaf
887e190de8 reduce the cap to 20 users when adding seats (#23873)
GitOrigin-RevId: f997059632e9d123e2aa71a74a64ac3b0dd20ef9
2025-02-28 09:04:55 +00:00
Davinder Singh
3851ee4eb2 Plans Group Size - Removing the 50 size (#23851)
* removing the group size 50

* removing the if condition for 20/50 groups

* running make cleanup_unused_locales

* removing instances of sizesForHighDenominationCurrencies and the related if conditions

* removing the price related to group size of 50 in different currencies

* fixing the test

* changing the 50 to 20 under faqs

* changing the remaining 50 to 20

* cleaning of variables

* removing extra variable

GitOrigin-RevId: 68f5d7df1eab29360e9c806ad844f1c900341c19
2025-02-28 09:04:51 +00:00
Brian Gough
763e5ba82c Merge pull request #23920 from overleaf/bg-backup-queue
initial history backup queue worker app

GitOrigin-RevId: e9647a2ec3caeb1fff843cead12164ba89fdb1f8
2025-02-28 09:04:46 +00:00
ilkin-overleaf
788f6569d8 Merge pull request #23933 from overleaf/jel-group-table-no-checkbox
[web] Fix group table layout when all users are managed

GitOrigin-RevId: dbbfe31fd8e3a3b9a1ec9fd11d7a8950c7344f83
2025-02-28 09:04:42 +00:00
ilkin-overleaf
d5adc6ee4b Merge pull request #23806 from overleaf/ii-bs5-manage-group-managers
[web] BS5 Group managers management

GitOrigin-RevId: 912fd29c3d5cf07eab0cd67e2771e60b1ba25fb3
2025-02-28 09:04:35 +00:00
roo hutton
8ce05dfc62 Merge pull request #23878 from overleaf/rh-cio-split-test-assignment-trial
Assign users to customer.io split test after trial start

GitOrigin-RevId: a9a5bf288919d86a604541810f76578b088579ba
2025-02-27 09:06:07 +00:00
Jakob Ackermann
245473c1ac [server-pro] tests: backport changes from SaaS E2E tests (#23921)
* [server-pro] tests: add helper for gitURL

* [server-pro] tests: avoid hard-coding URL scheme/origin

* [server-pro] tests: fix typo in query selector

* [server-pro] tests: fix spelling of GitHub

* [server-pro] tests: double down on matching email in body

* [server-pro] tests: speed up session resumption

* [server-pro] tests: use a single project in editor spec

* [server-pro] drop check on started recompile

The labels changed between versions and making it configurable is too
verbose.

GitOrigin-RevId: d1ace3b534f28c65b8e20c808bac12268f26fa4d
2025-02-27 09:06:03 +00:00
CloudBuild
8610b190e8 auto update translation
GitOrigin-RevId: 35b25e3daaf940ab241b3c97d48375d78cb385db
2025-02-27 09:05:59 +00:00
Jakob Ackermann
efdde960d5 [server-pro] trim build context (#23893)
* [server-pro] trim build context

* [misc] remove old Makefile/mvn cache folders from gitignore

* [misc] add extra entries from .gitignore to .dockerignore

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>

---------

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>
GitOrigin-RevId: 2ebca7d6739f778ec31d0c09fd6a75029bf2483e
2025-02-27 09:05:55 +00:00
Jessica Lawshe
06f0ee4c91 Merge pull request #23690 from overleaf/jel-test
[web] Remove test skip

GitOrigin-RevId: bd5a35bcb62227a7bc282bb0813ac0482b04ada2
2025-02-27 09:05:51 +00:00
Jessica Lawshe
aa7692b7dc Merge pull request #23299 from overleaf/jel-admin-saml-ids
[web] Show SAML IDs in user audit logs and user info page

GitOrigin-RevId: b8baa44c3110764e466d92ad2b0dc54ddc8f7819
2025-02-27 09:05:47 +00:00
Jessica Lawshe
508b796a69 Merge pull request #23349 from overleaf/jel-managed-unlinked-email-notification
[web] Add message about resetting password when user is managed and unlinked

GitOrigin-RevId: e9d6692f17f31d9d63cb13436018ce9fe6986106
2025-02-27 09:05:43 +00:00
Jessica Lawshe
670c691196 Merge pull request #23394 from overleaf/jel-bs5-notification-close
[web] Use RGB to fix close button hover effect

GitOrigin-RevId: 9c636fdcf509b76a3a7fbad365e24f6adb75f8ee
2025-02-27 09:05:39 +00:00
Jessica Lawshe
50e0d2b4ff Merge pull request #23351 from overleaf/jel-v1-down-sso-login
[web] Catch v1 errors on SSO log in to not block group SSO

GitOrigin-RevId: b99498dfd4a0de2099b8da1ac73dda28280cd430
2025-02-27 09:05:34 +00:00
Jessica Lawshe
182713d02d Merge pull request #23890 from overleaf/jel-reconfirm-date
[web] If v1 date doesn't show as reconfirmed, ensure v2 does not as well

GitOrigin-RevId: dc2850221a2d9176023380b38508311ea98abe43
2025-02-27 09:05:27 +00:00
David
fc19e1d34a Merge pull request #23669 from overleaf/mj-ide-chat-look
[web] Update chat in editor redesign

GitOrigin-RevId: 79c79eb9c774fbaa1a5a1e15386b629cc03239b3
2025-02-27 09:05:03 +00:00
David
a6d71eb555 Merge pull request #23772 from overleaf/dp-binary-files
Show binary and non-tex files in new editor

GitOrigin-RevId: b6d2681e6ecc868fac0ca484570e33220ec74980
2025-02-27 09:04:56 +00:00
David
ad78287c1f Merge pull request #23891 from overleaf/dp-eq-preview
Always include math preview theme even when it is disabled

GitOrigin-RevId: cfbad399ccd0cb6805158633c35c7b15140b9feb
2025-02-27 09:04:51 +00:00
ilkin-overleaf
0783bf1dc7 Merge pull request #23743 from overleaf/ii-bs5-manage-group-members
[web] BS5 Group members management

GitOrigin-RevId: fab24ee6f6de07aa64887e123df930593fcec6a2
2025-02-27 09:04:47 +00:00
CloudBuild
8533b8a628 auto update translation
GitOrigin-RevId: e1b26d9b9d5b0ed7912a6a643f94fc68ba974ba8
2025-02-26 09:05:32 +00:00
Jakob Ackermann
a26290018c [server-pro] tests: avoid opening editor if not needed for test (#23875)
* [server-pro] tests: avoid opening editor if not needed for test

* [server-pro] tests: use intercept to avoid opening editor page

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>

* [server-pro] tests: use times option in intercept

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>

---------

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
GitOrigin-RevId: 9530d1f5b06766fec70631da47d8b1049b59ead5
2025-02-26 09:05:20 +00:00
Antoine Clausse
08ee37afc1 Update to lockfile-version 3 (#23839)
`npm i --lockfile-version 3`

GitOrigin-RevId: ee5b547b2d7ddd3395f55825123af8a68bfbecd6
2025-02-26 09:05:11 +00:00
Antoine Clausse
fe03d8d7fd Add shellcheck to web, server-pro, server-ce (#23823)
* Update shellcheck files to include non ".sh" files having the sh shebang

* Add shellcheck to root Makefile

* `make shellcheck_fix`

* Add shellcheck to server-ce and server-pro

* Exclude SC1091 (Not following) in SP/CE

* Fix errors in SP

* Fix errors in CE

* Update root shellcheck to ignore all failing rules. We can later remove rules one by one.

* Add shellcheck to web

* Add shellcheck step for server-ce and server-pro in cloudbuild.yaml

* Revert "Add shellcheck to root Makefile"

This reverts commit e0fa56f2

* Revert "`make shellcheck_fix`"

This reverts commit eb179245c109a9e742a7fdeeb75a4bdd03963587.

* `make shellcheck_fix` in server-ce

* Fix: Use $(...) notation instead of legacy backticked

```
In init_scripts/100_set_docker_host_ipaddress.sh line 5:
echo "`route -n | awk '/UG[ \t]/{print $2}'` dockerhost" >> /etc/hosts
      ^-- SC2006 (style): Use $(...) notation instead of legacy backticks `...`.

Did you mean:
echo "$(route -n | awk '/UG[ \t]/{print $2}') dockerhost" >> /etc/hosts

For more information:
  https://www.shellcheck.net/wiki/SC2006 -- Use $(...) notation instead of le...
```

* `make shellcheck_fix` in web

* Manual corrections on autofix

* Update SHELLCHECK_FILES to Perl regex so it matches at start of file

GitOrigin-RevId: 815d53f319a3792efa22703beb75570de5977450
2025-02-26 09:05:02 +00:00
Antoine Clausse
d9a9fbb242 [web] Fix button-link loading state in subscription page (#23640)
* Fix inline loading button style

* Fix frontend test

GitOrigin-RevId: 59cdf68b8f2ad50f042a4457dc37f5c3d33d6c87
2025-02-26 09:04:58 +00:00
Eric Mc Sween
59fb97d874 Merge pull request #23819 from overleaf/em-find-projects
Rename find_dangling_comments script to check_docs and make improvements

GitOrigin-RevId: 3c81c734f4259c5939c190a886b5b90239d03017
2025-02-26 09:04:54 +00:00
Jakob Ackermann
04c42f03e1 [web] editor connection tweaks for connection attempts when offline (#23864)
* [web] only flag errors originating from WebSocket connect as ws failure

* [web] slow down reconnecting when potentially offline

GitOrigin-RevId: 7c587d52dfe8092c45e2152f929e05e814db98f4
2025-02-26 09:04:47 +00:00
Rebeka Dekany
61ddeeca2b Merge pull request #23695 from overleaf/rd-admin-page-remaining-refactors-bs5
Remaining refactors for admin pages - Bootstrap 5 Migration

GitOrigin-RevId: 2f3ac77ba79f6970bc53b93cd45522d475f974bd
2025-02-26 09:04:40 +00:00
Rebeka Dekany
6f1f968954 Merge pull request #21895 from overleaf/rd-trusted-secondary
Indicate secondary emails in User Info if they are trusted or untrusted

GitOrigin-RevId: b206b022c9661f972dae2b8d4c8e4c71a1ef7eb8
2025-02-26 09:04:36 +00:00
Alf Eaton
1fd9c592e2 Ensure that lastClickEvent is set before handling doubleClick (#23865)
GitOrigin-RevId: 1f080e62e95dc71cec6bcf2f5c9e0cb8bd5f5e2c
2025-02-26 09:04:33 +00:00
Andrew Rumble
59b708e3f7 Allow draining to be prevented in CLSI agent
Co-authored-by: Brian Gough <brian.gough@overleaf.com>
Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com>
GitOrigin-RevId: f55de7783cb1c14108eb347eebb74ec329180000
2025-02-26 09:04:26 +00:00
Alf Eaton
fe878a88d1 Run Prettier (#23860)
GitOrigin-RevId: fd65c7d24c4ada0367ba38092a142c6f6aeaba71
2025-02-26 09:04:19 +00:00
Domagoj Kriskovic
598d51c9e7 Prevent focusing review panel entry on resolve/accept/reject (#23859)
GitOrigin-RevId: 91d6725d1ea2a27f1ff93871db745440486b7246
2025-02-26 09:04:16 +00:00
Alf Eaton
fe1beec09a Use the original double-click location in bracketSelection extension (#23722)
GitOrigin-RevId: 173c4b4149fa4e6b552cb88022dad6334492c59a
2025-02-26 09:04:12 +00:00
Alf Eaton
cee51af9fd Disable "Go to code location in PDF" button for non-TeX files (#23751)
GitOrigin-RevId: 9a51252e2df6e52532d0cd787a8fd744af41ed95
2025-02-26 09:04:08 +00:00
Alf Eaton
02cd5d2f2f Reduce PDF.js maxCanvasPixels in Safari (#23781)
GitOrigin-RevId: 3b75d85bb4af33e4d4d40ee6f1dc9cf375f1435f
2025-02-26 09:04:05 +00:00
Alf Eaton
7070a0d410 Focus the editor and place cursor after the learned/corrected word (#23782)
GitOrigin-RevId: 605b13a4bb0d8e9375d8c4edc17a1866e29a3169
2025-02-26 09:04:01 +00:00
Alf Eaton
09ffc2b652 Set flex-shrink: 0 on file name in PDF log header (#23792)
GitOrigin-RevId: 5ba49fdf2715cd4839174c9dcd26b968b0834e27
2025-02-26 09:03:57 +00:00
Alf Eaton
9dee601ba3 Remove AI Error Assistant feedback prompt (#23796)
GitOrigin-RevId: 36ee1ca0befc0f2e4bf817a6946213f814947079
2025-02-26 09:03:52 +00:00
Tim Down
4e353956db Merge pull request #17378 from overleaf/td-stream-buffer-consolidation
Stream and buffer consolidation

GitOrigin-RevId: 284f411e6403e190d2dda3d9ebf806b1935b3949
2025-02-25 09:05:26 +00:00
Brian Gough
6e55a9fa81 Merge pull request #23837 from overleaf/bg-redis-redact-config
sanitise password in redis config output

GitOrigin-RevId: 45d8bd13f01c3c4f138549c8a9f47dc0db29d0b0
2025-02-25 09:05:22 +00:00
Brian Gough
0acc067205 Merge pull request #23836 from overleaf/bg-backup-extend-debugging-script
add support for fetching chunks in backup debugging script

GitOrigin-RevId: 641298088d62148693525259748dcddf4d67d14b
2025-02-25 09:05:18 +00:00
Brian Gough
9d8f9e5358 Merge pull request #23835 from overleaf/bg-backup-show-errors
add error cause logging for missing chunks and blobs in backup comparison

GitOrigin-RevId: 9a1bf84b64621add71fb1d1e0cb013598b226bc8
2025-02-25 09:05:14 +00:00
Brian Gough
dd8a683e9e Merge pull request #23834 from overleaf/bg-backup-graceful-shutdown
add graceful shutdown handling to backup script

GitOrigin-RevId: f0fb9a3867b26c7800edefab126fd05fbabdae02
2025-02-25 09:05:10 +00:00
Jakob Ackermann
8b64325e89 [server-pro] tests: wait for editor to finish loading before interacting (#23841)
GitOrigin-RevId: bef74f336c3a240da43cd5f9563629b96bc1d7ca
2025-02-25 09:05:06 +00:00
Jakob Ackermann
8138c76c1d [web] restrict external heartbeat/server ping to websocket transport (#23830)
Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
GitOrigin-RevId: c03a78e2c05cd380b705bd14652060980682cb39
2025-02-25 09:05:02 +00:00
Jakob Ackermann
4d857b7937 [web] editor connection fixes (#23807)
* [haproxy] add support for xhr-polling in real-time

* [web] try 3 WebSockets then fallback to xhr-polling when (re-)connecting

* [web] ensure old socket.io transport has been closed when reconnecting

* [web] close xhr-polling transport before leaving the page

This will de-register the client, leave the project and clean up the
connected clients tracking ASAP.

* [web] rename constant to avoid confusion

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>

---------

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
GitOrigin-RevId: 55e500c341145947e5589875438fc796394b6ae4
2025-02-25 09:04:58 +00:00
Antoine Clausse
82f2e47476 [web] Show DS Navigation for all SAAS users regardless of feature flag (with fix!) (#23821)
* Reapply "[web] Show DS Navigation for all SAAS users regardless of feature fla…"

This reverts commit 8d4096a7e4b6a7894b1bef14290548225deebd57.

* Fix: `hasDsNav` should check `isOverleaf` !!!

* Change `hasDsNav` from a boolean to a function call for dynamic evaluation

GitOrigin-RevId: 17463ac113a4278ed344622552d83da93b208b4d
2025-02-25 09:04:54 +00:00
Antoine Clausse
e429ee533f Fix prefetch_custom_texlive command (#23813)
Previous attempt failed with `sh: gcr.io/overleaf-ops/texlive-full:2023.1: No such file or directory`.

 Now tested with `make prefetch_custom_texlive`

GitOrigin-RevId: 09a5e1d3c270bdb58c761c8be3c665155879290f
2025-02-25 09:04:50 +00:00
Jakob Ackermann
d65be7772d [server-ce] precompile pug files concurrent to npm-i-dev/webpack build (#23824)
GitOrigin-RevId: 7fd153dd0fa89ca4bc12efc1e26276844ff9431a
2025-02-25 09:04:43 +00:00
CloudBuild
c9bbdc37a1 auto update translation
GitOrigin-RevId: 9948881e46548a02c38202ac0408c609c2c6f82b
2025-02-24 09:06:23 +00:00
CloudBuild
6b90f831ad auto update translation
GitOrigin-RevId: 2d057c8c8816407403ee26baebacbddf5f7d8946
2025-02-24 09:06:19 +00:00
Andrew Rumble
b0ed2efdf9 Merge pull request #23812 from overleaf/ar-allow-debugging-for-remove-backup-blobs-script-errors
[history-v1] Minor improvements to AWS cleanup script

GitOrigin-RevId: bd01a72169b9cbc018612173294cfbf8649a9fbd
2025-02-24 09:06:15 +00:00
Antoine Clausse
47dd074c36 Merge pull request #23811 from overleaf/revert-23801-ac-remove-ds-nav-code-3
Revert "[web] Show DS Navigation for all SAAS users regardless of feature flag"

GitOrigin-RevId: 3a5b5603718da2fddabc9f1460151efd9cbf6178
2025-02-24 09:06:11 +00:00
Antoine Clausse
c31dffc605 [web] Show DS Navigation for all SAAS users regardless of feature flag (#23801)
* Remove `sidebar-navigation-ui-update` as true from analytics events

* Hide "ds-nav" survey for users who have the feature flag

* Replace `useIsDsNav()` by `isOverleaf`

* Rename former `hideDsSurvey` to `hideDsSurvey`, and set `hasDsNav = isOverleaf` variable

so the intent is clearer.

* Update frontend tests

GitOrigin-RevId: 2be9f88a10da430c0429de15d777d98104327f9f
2025-02-24 09:06:04 +00:00
Antoine Clausse
f2aa79f49d Replace xargs -d, by tr ',' '\0' | xargs -0 (#23800)
`xargs -d` doesn't work on Mac OS: `xargs: illegal option -- d`

There's a workaround using `tr`

See: https://stackoverflow.com/a/71409498/4823861
GitOrigin-RevId: 109c7e1e035b829122d96fd41824f18bdf81468a
2025-02-24 09:06:00 +00:00
Andrew Rumble
a0d79d5871 Merge pull request #23742 from overleaf/ar-script-for-removing-blobs-in-wrong-place
[history-v1] Script for deleting blobs backed up to wrong location

GitOrigin-RevId: 6abe1dba5164f8fa7d41c4ee3e4a07764e73b7e1
2025-02-24 09:05:53 +00:00
Alf Eaton
df671b2869 Revert "Use fixed width for project list checkbox cell (#23778)" (#23808)
This reverts commit 4d3f443f99f366a43a1b59a7556c0341c06d7af9.

GitOrigin-RevId: 1b111d9b4826ecdba1d40334f9c8e25e2b8561b1
2025-02-24 09:05:49 +00:00
Alf Eaton
a0eb8baf72 Upgrade dompurify (#23748)
GitOrigin-RevId: a2aa1c40a454f8ff487b5de15da39de577c6ff16
2025-02-24 09:05:44 +00:00
Alf Eaton
3671e4d452 Update AI feedback form text (#23754)
GitOrigin-RevId: 29ca72963e912ee0e121dece9821bb90efa8eff3
2025-02-24 09:05:40 +00:00
Alf Eaton
e151be6b89 Avoid selecting word when opening spell check context menu (#23756)
GitOrigin-RevId: 0276979d18583f5813476b2ac01a8eb33b352fcb
2025-02-24 09:05:36 +00:00
Alf Eaton
816410f2d4 Remove aria-hidden from theme menu divider option (#23704)
GitOrigin-RevId: c6df23ad5869aaff41beb767ecd5d1d86910a267
2025-02-24 09:05:31 +00:00
Alf Eaton
2139107f6b Block Safari 14, deprecate Safari 15 (#23740)
GitOrigin-RevId: ef1506bc58982c4fb8286d48137ca9c8557ee1a0
2025-02-24 09:05:27 +00:00
Alf Eaton
dd2c213ac5 Upgrade PDF.js to 4.10.38 (#23745)
GitOrigin-RevId: d7264acd7c1a8e64042be799efa4c7ca133e64f8
2025-02-24 09:05:23 +00:00
Alf Eaton
e8a6cb340e Remove link from DS in side nav (#23759)
GitOrigin-RevId: 0724fecd45ce3686be25d394aaea9c2c2b97f669
2025-02-24 09:05:18 +00:00
Alf Eaton
c5f4fb5762 Show reviewers in the admin list of collaborators for a project (#23777)
GitOrigin-RevId: 6d7e5debc5619dab5b696ab8aab26496931e38b1
2025-02-24 09:05:11 +00:00
Alf Eaton
cad8eb679c Use fixed width for project list checkbox cell (#23778)
* Use fixed width for project list checkbox
* Set word-break: break-word for project owner name (#23783)

GitOrigin-RevId: 4d3f443f99f366a43a1b59a7556c0341c06d7af9
2025-02-24 09:05:06 +00:00
Alf Eaton
a7e00e19e2 Only dispatch doc:changed event for insert or delete operations (#23779)
GitOrigin-RevId: b3425d4edffb045b2a15e5fc5cb69210d9e97203
2025-02-24 09:05:02 +00:00
Alf Eaton
6688b81ece Ensure that the Chat pane is disabled for read-only link collaborators (#23785)
GitOrigin-RevId: 56e1b1d6b08ec7537386cab0b251e325d681e117
2025-02-24 09:04:58 +00:00
Rebeka Dekany
789db0d822 Remove bootstrap-5 feature flag from the Account Settings page (#23693)
GitOrigin-RevId: 0fc29f2cb904f9133fd26ad119909edba1518cbf
2025-02-24 09:04:54 +00:00
Eric Mc Sween
819e49aa17 Merge pull request #23784 from overleaf/em-find-dangling-comments-modified-since
Add --project-modified-since option to find_dangling_comments script

GitOrigin-RevId: 69483611dbfa71eeb16206387771b2b9d837f978
2025-02-24 09:04:49 +00:00
Domagoj Kriskovic
ebab25058a Allow selecting comment text without changing scroll position (#23628)
* Allow selecting comment text without changing scroll position

* cursor:default on review content

* check text selection on mouseup

* update comment

GitOrigin-RevId: f867613f5b4d08c3b960abfa061b14b404f411a8
2025-02-24 09:04:45 +00:00
Domagoj Kriskovic
d8b850f740 Convert track changes to proper format when reviewer role is enabled (#23683)
GitOrigin-RevId: 2ac696804491f61e52b4645dff7f64339c47afc5
2025-02-24 09:04:41 +00:00
Antoine Clausse
3976210485 Merge pull request #23798 from overleaf/revert-23767-ac-remove-ds-nav-code-small
Revert "[web] Show DS Navigation for all users regardless of feature flag "

GitOrigin-RevId: 569800d75e1ef3ed6af666325213f1615c8f3a43
2025-02-24 09:04:37 +00:00
Brian Gough
981e91f012 Merge pull request #21763 from overleaf/bg-backup-script
initial script for running backups

GitOrigin-RevId: d22c373de30738d8080d40dce10790f0bdcb9f51
2025-02-24 09:04:32 +00:00
Jakob Ackermann
c3f94358eb [real-time] ignore error from duplicate send action on socket.io socket (#23787)
GitOrigin-RevId: 992a39a5cff04bcc0814ac6a620ad350d6e1da14
2025-02-21 09:05:52 +00:00
Antoine Clausse
7b2f51aad5 [web] Show DS Navigation for all users regardless of feature flag (#23767)
* Remove uses of `useIsDsNav`

* Remove `sidebar-navigation-ui-update` as true from analytics events

* Hide "ds-nav" survey for users who have the feature flag

* `make cleanup_unused_locales` & `bin/run web npm run extract-translations`

* Update frontend tests

GitOrigin-RevId: 83f429d81ca1b46e9eab4fc667a921026a85912f
2025-02-21 09:05:48 +00:00
Antoine Clausse
34cac93f9a [web] When switching primary email, delete the old primary if it's unconfirmed (#23688)
* Add note to ConfirmModal: unconfirmed primary will be deleted

* Change confirm button copy

* Promisify `UserEmailsController.setDefault`

* Update tests after promisification

* Delete unconfirmed primary when swapped

* Fixup apostrophe in translation

* `npm run extract-translations`

* Add unit tests

* Add acceptance tests

* Fix frontend tests

* Make email address bold

* Add "We removed the previous primary..." to the email

GitOrigin-RevId: c971e219e36e509f9963e1720acdd44f562a05b5
2025-02-21 09:05:44 +00:00
Jakob Ackermann
f0d94f06ed [server-pro] fix ldap tests (#23771)
GitOrigin-RevId: 6540b7b8766eaf5fd2c7d0b3ff3c9d627382e56e
2025-02-21 09:05:40 +00:00
Jakob Ackermann
0be79e846c [server-pro] tests: make project invite tests more reliable (#23732)
* [web] wait for sending project invite notification, send email detached

Errors from sending the notification or email are still logged only.
Wait up-to ~one second for notification to be sent (API timeout is 1s).

* [server-pro] tests: wait for invite action to complete

GitOrigin-RevId: e6998e6134b5267c91b47785d616a46e9651b996
2025-02-21 09:05:30 +00:00
Miguel Serrano
2e72aa8a47 Merge pull request #23652 from overleaf/msm-update-path-to-regexp
[monorepo] Update express to 4.1.2

GitOrigin-RevId: b3db75257e1edc1a25a1a657def352ecca926920
2025-02-21 09:05:26 +00:00
Miguel Serrano
9a2a14f588 Merge pull request #23642 from overleaf/msm-update-cross-spawin
[monorepo] Updated cross-spawn to 7.0.6

GitOrigin-RevId: 42ca1ca19957a2cddd4968ceea276bc05f659071
2025-02-21 09:05:22 +00:00
Miguel Serrano
d22ffb926d Merge pull request #23733 from overleaf/msm-configurable-login-title
[web] Add `OVERLEAF_LOGIN_SUPPORT_TITLE` for CE/SP

GitOrigin-RevId: 5a50d17ded67b68c72dbaeab5172fc283b5aaa01
2025-02-21 09:05:18 +00:00
Miguel Serrano
78297efeab Merge pull request #23680 from overleaf/msm-readonly-email-activation
[CE/SP] Fix `email` not sent on activation

GitOrigin-RevId: 3989bcc318086b3b10576138869296888be27998
2025-02-21 09:05:14 +00:00
Eric Mc Sween
fb22d6f518 Merge pull request #23725 from overleaf/em-find-dangling-comments-archived-docs
Look at archived docs when looking for dangling comments

GitOrigin-RevId: fb04b9428ce83802b6e658153c5bbe70e983de65
2025-02-21 09:05:04 +00:00
Eric Mc Sween
12abf74620 Merge pull request #23689 from overleaf/em-dp-mj-interstitial-join-project-bs5
Migrate interstitial join project page to Bootstrap 5

GitOrigin-RevId: 10f45eecb33e087373a9605074ef9f8562ca2b8f
2025-02-21 09:05:00 +00:00
Eric Mc Sween
2710e37caf Merge pull request #23715 from overleaf/em-zoom-tooltips
Change copy for zoom tooltips

GitOrigin-RevId: e87d66d22bba93b9e9ee5e6938a99d003e70131a
2025-02-21 09:04:56 +00:00
roo hutton
14e76b5a72 Misc fixes for updated compile timeout paywall (#23741)
* hide cached files/logs and files buttons while primary paywall showing

* replace plans link with interstitial

* open checkout in new tab

* editors > collaborators, use correct collab count for student plan, refactor collab translations

* fix variable case

GitOrigin-RevId: 48f53aa385ed6d7e5c9b485fe4a045a47c448777
2025-02-21 09:04:52 +00:00
Andrew Rumble
0e64fe2b21 Merge pull request #23457 from overleaf/ar-recurly-account-mapping-initial
[web] setup Recurly -> Mongo account mapping

GitOrigin-RevId: ee08cad60ee04e62100f3d5a4f76fdbcf5543917
2025-02-21 09:04:45 +00:00
Andrew Rumble
be247b8cc9 Merge pull request #23617 from overleaf/ar-lg-webpack
[web/latexqc] Bump webpack to 5.98.0

GitOrigin-RevId: 1124432fdce88df0636449d9bf0f8c99f582967c
2025-02-21 09:04:41 +00:00
David
64bb822e41 Merge pull request #23738 from overleaf/ae-blur-handler-timeout
Wrap "Add Comment" blur action in setTimeout

GitOrigin-RevId: 632555d94c8a33a095f3b9a10089714eeae2d962
2025-02-21 09:04:36 +00:00
David
3a9587797d Merge pull request #23710 from overleaf/dp-remove-file-tree-workaround
Remove pre-filetree work around for new editor

GitOrigin-RevId: 7b34e4e298324ad217b603b48abbfbfa78d21804
2025-02-21 09:04:32 +00:00
David
2d02111e06 Merge pull request #23697 from overleaf/dp-layout-switcher
Add layout switcher button to toolbar

GitOrigin-RevId: 33bf664c2e2cb5c2f992b70fd9ca90b5dfe2ee44
2025-02-21 09:04:28 +00:00
Domagoj Kriskovic
874b37c917 Added new properties to "project-opened" event (#23438)
GitOrigin-RevId: e7d3c665abfe485246281e949a645bb90f288dab
2025-02-21 09:04:21 +00:00
Domagoj Kriskovic
b75917eb9f Prevent user name in review panel to break if larger than container (#23643)
GitOrigin-RevId: 9d4948e5dc595dc39510a558edc6a008d3ef7156
2025-02-21 09:04:17 +00:00
Domagoj Kriskovic
725db44392 Change scrollTo behavior when review panel entry is selected (#23720)
GitOrigin-RevId: 86fc08f437c49bdf00a9b7d8461b9476f2e9717f
2025-02-21 09:04:10 +00:00
Brian Gough
32983da29c Merge pull request #23700 from overleaf/bg-history-redis
add redis to history-v1

GitOrigin-RevId: def900c4b560ea0a297b11b6c0ecc8cc8caa5b49
2025-02-21 09:04:06 +00:00
Alf Eaton
8ca5360454 Reapply "Increase the length of unsaved doc time before the editor is locked" (#23723)
* Reapply "Increase the length of unsaved doc time before the editor is locked (#23431)"

This reverts commit d0efca398e59ca488c530ee9ec5ca76f29843679.

* Use pendingOpCreatedAt if inflightOpCreatedAt isn't set

GitOrigin-RevId: b3301d7cc1554215a4ba569537bd47beeefde20f
2025-02-20 09:06:31 +00:00
Alf Eaton
aac5bccc54 Upgrade CodeMirror dependencies (#23707)
GitOrigin-RevId: b74813af84538f6d62bb3904be05c3782d1bdf45
2025-02-20 09:06:26 +00:00
Mathias Jakobsen
8fdefdc2bd Merge pull request #23687 from overleaf/mj-expose-font-lineheight
[web] Expose font family and lineheight to extensions

GitOrigin-RevId: 75462fd5b062b70feb152fe5e805ff5ab80f5e64
2025-02-20 09:06:22 +00:00
Alf Eaton
0d85fd775c Encapsulate left menu loading error (#23724)
GitOrigin-RevId: 6f53b4932f6e691b7aaaa5d308571561af636877
2025-02-20 09:06:14 +00:00
Jakob Ackermann
a1755c1c08 [web] fix waiting for cdn upload on staging-main (#23729)
Co-authored-by: Jimmy Domagala-Tang <jimmy.domagala-tang@overleaf.com>
GitOrigin-RevId: fdf0f2c0b0b8c9e83a1ea6f6f71305f9ff822f1f
2025-02-20 09:06:09 +00:00
Eric Mc Sween
5f6de9caf0 Merge pull request #23706 from overleaf/em-fix-dangling-comments-script
Fix dangling comments script when doc does not have ranges

GitOrigin-RevId: 31cf25ecf79f7ab0ed872c403d31b2c5064b4c76
2025-02-20 09:06:05 +00:00
Alf Eaton
432bbe0db8 Merge pull request #23714 from overleaf/ae-revert-unsaved-docs
Revert "Increase the length of unsaved doc time before the editor is locked"

GitOrigin-RevId: 0f2d257a55ebc3353ded2b10d505bfdb2e85f402
2025-02-20 09:05:53 +00:00
Eric Mc Sween
483c97a484 Merge pull request #23691 from overleaf/em-resolve-comments-permissions
Add resolveAllComments and resolveOwnComments permissions

GitOrigin-RevId: 1fca9391dc3ff6e890532054582c49f11731e987
2025-02-20 09:05:45 +00:00
Eric Mc Sween
ae491f910b Merge pull request #23692 from overleaf/em-history-errors
Move error boundary inside history container

GitOrigin-RevId: cd4c911cef18b50cd4187f655e818c9ab851cfe0
2025-02-20 09:05:40 +00:00
Davinder Singh
b38c6eab7c Customer IO - Initial functions Setup (#22972)
* adding a hello world end point in analytics service for customerio

* adding updateCustomerIoUser handler function

* setting up the function recordUserAnalyticsEvent

* removing hello function and adding end points for update and track function

* installing the node js source for customer io

* adding the the functions for identify and track events

* adding a properties property

* adding new API key

* cleaning some code and making some changes to make it work

* renaming function to include identify keyword

* adding some detailed succes messages and try catch blocks

* adding a temporary key for testing

* adding the env variable for key

* adding a fallback value for acceptance test, this will need more investigation later on

* deleting the controller, as the handler functions will directly be linked to the customerio queue, so we do not want this path anynmore

GitOrigin-RevId: 38e0cb713e5d6a14c70cdbfb2a7463c633746bbe
2025-02-20 09:05:32 +00:00
Alf Eaton
f40118e58b Increase the length of unsaved doc time before the editor is locked (#23431)
* Use opInflightSince to measure unsaved doc time
* Use performance.now() for lastAcked timestamp
* Use inflightOpCreatedAt
* Increase MAX_UNSAVED_ALERT_SECONDS to 15
* Increase MAX_UNSAVED_SECONDS to 30
* Increase FATAL_OP_TIMEOUT to 45000
* Convert "Connection lost" modal to a notification

GitOrigin-RevId: 2d4233723620fd03ce6d6c5795c48c33c0b2f92c
2025-02-20 09:05:20 +00:00
Alf Eaton
04a2e24a89 Use refs and timeout for editor heartbeat events (#23340)
GitOrigin-RevId: 4eb7697fb40c9aaf523765c256c870a21afb0844
2025-02-20 09:05:15 +00:00
Alf Eaton
97d7a60f68 Increase the maximum width of the search input (#23140)
GitOrigin-RevId: 70619c42cbbb16047a929e773a30ba4c0b5cfa50
2025-02-20 09:05:11 +00:00
Rebeka Dekany
d1ddfadd0d Merge pull request #23639 from overleaf/rd-fix-scrollbar-text-admins
Fix tables and tabs responsiveness on the admin pages

GitOrigin-RevId: 94c8cea8933f4f908c50aa404e45f23642852c15
2025-02-20 09:05:06 +00:00
Eric Mc Sween
4152d3d796 Merge pull request #23667 from overleaf/em-read-only-label-version
Prevent read-only users from labelling a version

GitOrigin-RevId: 472e70f3860553b131f20afe3dfd01aa00bd48fa
2025-02-19 09:05:26 +00:00
Eric Mc Sween
79bb2e3d40 Merge pull request #23673 from overleaf/em-reviewer-role-delete-replies
Let reviewers delete their own comments

GitOrigin-RevId: bd5341a917a3e886dc573d7e42d12343da6700cd
2025-02-19 09:05:21 +00:00
Mathias Jakobsen
a34ebd3c7e Merge pull request #23660 from overleaf/mj-history-tooltip
[web] Editor redesign: Add tooltip to history button

GitOrigin-RevId: c14dab2c6d62d10312f9d5097fd95cad5cae1397
2025-02-19 09:05:17 +00:00
Mathias Jakobsen
fb12a1bc8e Merge pull request #23656 from overleaf/mj-ide-toolbar-buttons
[web] Reduce toolbar and rail size in editor redesign

GitOrigin-RevId: 9e9670c37664355f4bc287a5561b427768bb4436
2025-02-19 09:05:12 +00:00
David
46e9c69d8e Merge pull request #23597 from overleaf/dp-integrations-panel
Add integration panel to new editor

GitOrigin-RevId: 85e038c645e40d0ea596ed35d31448caa232e298
2025-02-19 09:05:02 +00:00
Antoine Clausse
f096ffaa43 [web] Send security alert email when secondary is added (#23657)
* [web] Send security alert email when secondary is added

* [web] Add test: checkSecondaryEmailConfirmationCode - sends a security alert email

* Move `_sendSecurityAlertEmail` before `addEmailAddress`

GitOrigin-RevId: 8d9c496fffd953871e03d8c7f011c42459eeb0bc
2025-02-18 09:05:14 +00:00
Antoine Clausse
98ea3664f2 Create script: remove_unconfirmed_emails.mjs (#23079)
* Create script: remove_unconfirmed_emails.mjs

* Update script remove_unconfirmed_emails.mjs after pairing

Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>

* Add user counts. Add timing

* Revert previous changes: just remove the fully unconfirmed emails

* Add tests on scripts/remove_unconfirmed_emails.mjs

* Update audit log so `removedEmail` is a string and doesn't break the admin-panel audit logs list

* Update remove_unconfirmed_emails to have a `--generate` and a `--consume` mode

* Update tests on remove_unconfirmed_emails

* Add tests checking that `--consume` doesn't delete any email

* Update script so `--consume` checks that emails shouldn't be deleted again!

* Update CSV path to `/tmp/...`

* Add test cases: deleted users, deleted email, comma in email

---------

Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>
GitOrigin-RevId: 8c60b56bcdfa33bc6143d66c32a5f430fb76f6d7
2025-02-18 09:05:10 +00:00
Jakob Ackermann
b79af7f6d3 [server-ce] upgrade mongo to 6.0 in e2e tests (#23611)
* [server-ce] upgrade mongo to 6.0 in e2e tests

* [server-ce] upgrade mongo to 6.0 for CE dev-env

GitOrigin-RevId: 6a76297d32177a8b5a067d325e74bdb01971af30
2025-02-18 09:04:55 +00:00
Davinder Singh
39884d8199 Merge pull request #22733 from overleaf/ds-sso-login-redesign-bs5-2
Website Redesign & BS5 migration - SSO Login page (2)

GitOrigin-RevId: d0d5752e2ce84a70dfb50a3de0c200c468de0cb8
2025-02-18 09:04:43 +00:00
Davinder Singh
0c8e31708a Merge pull request #22716 from overleaf/ds-sso-login-redesign-bs5
Website Redesign & BS5 migration - SSO Login page

GitOrigin-RevId: 9c819479c7ca6510d2e683881564427c91c4f04e
2025-02-18 09:04:38 +00:00
Eric Mc Sween
b507c8e1bb Merge pull request #23612 from overleaf/em-find-dangling-comments
Add script to find projects with dangling comments

GitOrigin-RevId: 31048defa2f33c2bf23d14ddc643366775df3104
2025-02-18 09:04:34 +00:00
roo hutton
e954afa1c2 Merge pull request #23618 from overleaf/rh-compile-timeout-paywall-event-tracking
Add events to compile timeout paywall

GitOrigin-RevId: 2982e1a8c6494bafbc3137a25f5e9eb08182812b
2025-02-18 09:04:26 +00:00
Kristina
61f4e3f9d5 [web] fix UI regressions on share modal (#23542)
* restore `yellow-40` to the warning label
* adjust actions layout so dropdown always stays readable

GitOrigin-RevId: 60886cd71e7041976fe2467cf7ab946a6ef90be6
2025-02-18 09:04:21 +00:00
CloudBuild
3a898e2b61 auto update translation
GitOrigin-RevId: 3ef229bb22a6986ab693076b4386a0258acc8cbb
2025-02-17 09:05:18 +00:00
Antoine Clausse
ed3442ada6 [web] Update socket diagnostics: 2 columns, copy to clipboard (#23581)
* Use 2 columns for socket diagnostics

* Fixup time so it's never negative

* Add "Copy to clipboard" feature

GitOrigin-RevId: ba7bcc672287c2697afadd904ade315b4a39f954
2025-02-17 09:05:07 +00:00
Antoine Clausse
5d42e51d3e Remove feature-flag bootstrap-5-subscription (#23114)
GitOrigin-RevId: 4a8dadb7e5ae65c2651b1eeb317bb43daca881c8
2025-02-17 09:05:02 +00:00
Andrew Rumble
ccb2791a0d Merge pull request #22646 from overleaf/ar-address-mongo-count-deprecation-warning
[web] Switch from find.count to countDocuments

GitOrigin-RevId: cc607868334d54b3d5c375c06fec97a482a16cc5
2025-02-17 09:04:58 +00:00
Alf Eaton
784d107472 Skip "should not flag affiliations outside of notification period" test (#23619)
GitOrigin-RevId: 060158f5b3958577c3c1ebde8490cad2c763da88
2025-02-17 09:04:53 +00:00
Alf Eaton
4611de3f3d Update tooltip text for search buttons (#23448)
GitOrigin-RevId: d189aac06c5f68e009eeb125d7cc225b41e8cc0c
2025-02-17 09:04:45 +00:00
Davinder Singh
cd7b1bf649 Compile timeout- Adding the paywall component (#23606)
* adding the upgrade prompt component

* adding the container queries for cards

* removing comment

* styles:lint:fix

* adding ? for checking

GitOrigin-RevId: 63250f73fa543b510423835633de04eff69c47c5
2025-02-17 09:04:40 +00:00
Mathias Jakobsen
05045ee9f7 Merge pull request #23607 from overleaf/mj-papers-default-on
[third-party-references+web] Default to personal library in Papers integration

GitOrigin-RevId: 0a5a3de273341c1f5d5bd50b9c0f8fe98cd7504e
2025-02-14 09:04:27 +00:00
Mathias Jakobsen
7cf2359a62 Merge pull request #23545 from overleaf/mj-dp-labs-bs5
[web] Convert labs participation page to BS5

GitOrigin-RevId: 6a471b5162ee8485f2744157f29d1b94b59c8d4c
2025-02-14 09:04:24 +00:00
Mathias Jakobsen
f7c4df8d04 Merge pull request #23582 from overleaf/mj-material-icon-font-test
[web] Add cypress test for MaterialIcon variants

GitOrigin-RevId: 816ee12e8d50482c0b4fd05adc0511445d82ca8d
2025-02-14 09:04:20 +00:00
Davinder Singh
60eaca8301 only displaying the new paywall component for project owners (#23586)
GitOrigin-RevId: f30c5abd2db361742a1a35d5147ac83345fe44a8
2025-02-14 09:04:14 +00:00
Davinder Singh
de50b9b76c Compile timeout paywall after message: Adding the correct translations (#23564)
* adding the right translations to match figma

* adding 2 more translations

* adding the correct styling for the translation

* adding the last translation

* removing unused button and extra line

* adding the p tags and necessary styling to remover margin bottom

GitOrigin-RevId: 97c47e53ee4ae13e95027c602521258f056a6bed
2025-02-14 09:04:10 +00:00
MoxAmber
420c3881c2 Merge pull request #23503 from overleaf/as-compile-timeout-paywall-primary
[web] Create UpgradePrompt paywall component

GitOrigin-RevId: 591eaae0c179c7419f8ec93284cebb3ecfc52154
2025-02-14 09:04:07 +00:00
Liangjun Song
be33d0dd67 Merge pull request #23599 from overleaf/ii-flexible-group-licensing-vat
[web] Change "Sales tax" to "VAT"

GitOrigin-RevId: 549c6cea7bcb52d08d3b0967cf5fa446da901379
2025-02-14 09:04:03 +00:00
David
8e18162491 Merge pull request #23595 from overleaf/dk-can-review-order
Swap the order of "can view/can review" options

GitOrigin-RevId: d58a4633b02be1bcf28f7c483c046fa18a97adb6
2025-02-14 09:03:59 +00:00
ilkin-overleaf
4c60432229 Merge pull request #23563 from overleaf/ii-flexible-group-licensing-errors
[web] Flexible licensing error handling

GitOrigin-RevId: 9fd4992a81e67b0684d3e286492e0037dd56e2ea
2025-02-14 09:03:52 +00:00
roo hutton
be8adaf142 Merge pull request #23472 from overleaf/rh-timeout-paywall-plans
Expose plan prices to compile timeout paywall

GitOrigin-RevId: 33ee11bc0b770a2786931894ba9ae57312a7efa9
2025-02-14 09:03:45 +00:00
Domagoj Kriskovic
8183c0785c Validate privilege levels when sending /invite request (#23533)
* Validate privilege levels when sending /invite request

* add acceptance tests

GitOrigin-RevId: 4ccd0ad3504c3c5770f5ee2b2f6d34ef746d1430
2025-02-14 09:03:37 +00:00
Brian Gough
d2738fda73 Merge pull request #23565 from overleaf/bg-fix-history-metadata-in-projects-collection
fix history metadata in projects collection

GitOrigin-RevId: 18c821ef5966a8470b24dfa60313b09bdda9707d
2025-02-14 09:03:33 +00:00
Jakob Ackermann
6bea6a887d [web] decrease concurrency for thread-loader when running tests (#23567)
GitOrigin-RevId: 4aac1bf478af8a12c96765eafd4adfbaaf8b4a22
2025-02-13 09:07:04 +00:00
Jakob Ackermann
add8c3d120 [web] start webpack/pug build with low priority before all tests passed (#23569)
GitOrigin-RevId: 6fa6c6cd3c12fd28aad3d46cf8870bcef6b67a37
2025-02-13 09:07:00 +00:00
Jakob Ackermann
da31539306 [web] use a tmpfs for the data-dir of the acceptance tests (#23571)
Moving mongodb onto a tmpfs requires too much memory.

GitOrigin-RevId: e870ed8b5349c13e948f7037369fb52356cd562c
2025-02-13 09:06:55 +00:00
David
b974b501f4 Merge pull request #23576 from overleaf/mj-ide-redesign-font
[web] Update material symbols unfilled font

GitOrigin-RevId: 1d6fab495d9b1a24702a94bcfc5a32673186f725
2025-02-13 09:06:47 +00:00
David
1d648f9755 Merge pull request #23502 from overleaf/dp-pdf-typescript
Convert PDF Preview components to typescript

GitOrigin-RevId: 34594d21143727fa42b8b595aa12125a4dd7ae5e
2025-02-13 09:06:41 +00:00
Jakob Ackermann
1a45b909c3 [web] tweak logging for CI containers (#23570)
The default logger is "json-file", which writes json blobs and splits
stdout and stderr. We do not need to split and also can save on extra
serialization overhead in the docker daemon by switching the driver.

- use the cheaper "local" driver for containers that we need logs from
  (test containers), the local driver streams stdout+stderr into a file
- use the no-op "none" driver for support containers that we do need any
  logs from.

GitOrigin-RevId: 55c7cb7c91860e192b6d54354f4550a0ee9a672c
2025-02-13 09:06:30 +00:00
Jakob Ackermann
b928e865b7 [web] make user feature changes in tests more reliable (#23557)
* [web] tests: rename User.upgradeFeatures to User.upgradeSomeFeatures

The upgrades features do not match with any plan.

* [web] make user feature changes in tests more reliable

* [web] fix schema for featuresOverride in tests

* [web] log in after upgrading features

GitOrigin-RevId: ac5b19c798712926c118b221c553540b413802cd
2025-02-13 09:06:21 +00:00
Jakob Ackermann
cd5d2da2d2 [web] tweak trigger for prefetching of test images (#23568)
GitOrigin-RevId: 53e7005049809627b071c4bf59493874762121fd
2025-02-13 09:06:16 +00:00
Jakob Ackermann
d954fd5498 [web] dumpFolder is created on app start (#23559)
GitOrigin-RevId: e05c920f27a79a59e0c9408780b9c005b0dac350
2025-02-13 09:06:11 +00:00
M Fahru
84c66d5eae Merge pull request #23350 from overleaf/mf-nudge-to-annual-test
[web] Implement "Nudge to annual" split test

GitOrigin-RevId: 8dcd042fc54ede601f6db95a61feebaf15c849b6
2025-02-13 09:06:07 +00:00
M Fahru
9fe43e2f0d Merge pull request #22914 from overleaf/mf-remove-new-design-in-plans-page
[web] Remove "new-design" and "new" from plans and interstitial payment page file names

GitOrigin-RevId: d506ec53756ae4ebb4a314bd19773dfe34af9a85
2025-02-13 09:06:02 +00:00
M Fahru
b4051e48d3 Merge pull request #23305 from overleaf/mf-onboarding-data-collection-bs5
[web] Migrate onboarding collection data page to bootstrap 5

GitOrigin-RevId: ebf91db34ff11313c262bf57ad45e70d30857cd6
2025-02-13 09:05:58 +00:00
Eric Mc Sween
879aa33cbe Merge pull request #23519 from overleaf/em-remove-ordered-rejections-flag
Remove orderedRejections flag on ops

GitOrigin-RevId: df464023e7e6c3b5899e6a424f423a374fd33df6
2025-02-13 09:05:53 +00:00
Miguel Serrano
1a5db4b385 Merge pull request #23551 from overleaf/msm-git-bridge-update-deps
[git-bridge] Upgrade dependencies, use aws-s3 lib

GitOrigin-RevId: a542810d425309e8356ebc77752266b41f6006f4
2025-02-13 09:05:49 +00:00
Mathias Jakobsen
dfb7ab3433 Merge pull request #23496 from overleaf/mj-wc-dropdown-style
[web] Match dropdown styles in W&C RM settings

GitOrigin-RevId: 3765358c2f8ae7257054fb4f6b882930784dc39a
2025-02-13 09:05:40 +00:00
Domagoj Kriskovic
09110a0a76 If reviwer, show only from project files option in figure modal (#23500)
GitOrigin-RevId: 88796fb9a51f82ac79bc849ef9225efcdf29ad35
2025-02-13 09:05:36 +00:00
Domagoj Kriskovic
3251ebffdb Move "add comment" widget below edit mode switcher (#23507)
GitOrigin-RevId: cd1ca5b93bba5604ea312133dc2f9166d5fe8c84
2025-02-13 09:05:31 +00:00
Jakob Ackermann
d1410f4636 [web] avoid setting up users more than once in tests (#23558)
* [web] avoid setting up users more than once in tests

* [web] tests: simplify user exists check in User.setExtraAttributes

GitOrigin-RevId: 4c526df7c933a38ab93d7760efbd0a9490d5582a
2025-02-13 09:05:27 +00:00
Mathias Jakobsen
dc0b214bb5 Merge pull request #22638 from overleaf/mj-reference-search-paywall
[web] Add paywall to W&C settings modal

GitOrigin-RevId: 388c7c14092ca0190dd532d126760c8f755c383f
2025-02-13 09:05:15 +00:00
Mathias Jakobsen
c86343dd1d Merge pull request #22401 from overleaf/mj-updated-rm-promo-new-file
[web] Update paywall for RM import

GitOrigin-RevId: 9576cce28c50a7a0ec7e66073189337cfd9094b6
2025-02-13 09:05:10 +00:00
Jakob Ackermann
3de76b848f [web] split test_frontend_ct_core/test_frontend_ct_editor into two jobs (#23556)
* [web] split test_frontend_ct_editor into two jobs

* [web] split test_frontend_ct_core into two jobs

GitOrigin-RevId: 30f47003ca24ae71e443f130819b3ec600339193
2025-02-13 09:05:06 +00:00
ilkin-overleaf
b689c0d3b1 Merge pull request #23550 from overleaf/ls-add-missing-space-in-faq
Add space in FAQ

GitOrigin-RevId: 3f926b00a44b4cee0ce561d4cf4395ad37bcc820
2025-02-13 09:05:01 +00:00
ilkin-overleaf
bebc32b11d Merge pull request #23547 from overleaf/ii-flexible-group-licensing-error-assist-2
[web] Hide flexible licensing buttons for pending plans (fix)

GitOrigin-RevId: ce5b4ce4138ed7a029b840a87c5498227e3204f4
2025-02-13 09:04:57 +00:00
Jimmy Domagala-Tang
9f438f0805 Merge pull request #23544 from overleaf/revert-23516-jdt-institution-buttons-temp
Revert "Jdt institution buttons temp"

GitOrigin-RevId: b2a59ab9f917443fc8c9fdfc3c5035ce4c523fdd
2025-02-12 09:06:07 +00:00
Rebeka Dekany
a9d4341a26 Merge pull request #23489 from overleaf/rd-fix-label-alignment-project-dashboard
[web] Fix the label alignment of tags

GitOrigin-RevId: fe0a530131148fc166b16c968dcec12a082a7413
2025-02-12 09:06:02 +00:00
Jimmy Domagala-Tang
22bf2ced21 Merge pull request #23516 from overleaf/jdt-institution-buttons-temp
Jdt institution buttons temp

GitOrigin-RevId: 42771f3047088bfa2bd1dfdd89eb990392dd113c
2025-02-12 09:05:51 +00:00
Eric Mc Sween
761c184c8f Merge pull request #23540 from overleaf/revert-23483-ii-flexible-group-licensing-error-assist
Revert "[web] Hide flexible licensing buttons for pending plans"

GitOrigin-RevId: 6e19c2ae2663fc0cf3335e9517e80a1eee9e2659
2025-02-12 09:05:46 +00:00
Domagoj Kriskovic
126648e597 Script for updating comment id to match the one from history (#23460)
* Script for updating comment id to match the one from history

* update multiple comments in a single query

* use array filters for updating comments

* log doc id

GitOrigin-RevId: ca4337591735d0d76d5599c19cc42628421ed14f
2025-02-12 09:05:42 +00:00
Domagoj Kriskovic
01e8159801 Drop "project_id" index in rooms collection (#23423)
GitOrigin-RevId: ed0bcda9066f3ff595aae1ce6011335aaac7aaf0
2025-02-12 09:05:37 +00:00
Eric Mc Sween
510ad0ce9a Merge pull request #23509 from overleaf/em-fix-remove-change
Fix RangesTracker._removeChange() when multiple changes have the same id

GitOrigin-RevId: 2dafcf275b283da320bca70b460aba3051ca9575
2025-02-12 09:05:29 +00:00
Jakob Ackermann
8e5ebd5512 [web] disable recording of cypress videos in CI (#23530)
GitOrigin-RevId: d3a14418a69a8bc009a137e168ba679b72e7c420
2025-02-12 09:05:25 +00:00
Jakob Ackermann
4983e760bb [web] use tmpfs for transferring /overleaf into cypress image (#23529)
GitOrigin-RevId: e913a4388be6feb6e0cddd098f64452bfa0e7ef7
2025-02-12 09:05:20 +00:00
ilkin-overleaf
f032b47744 Merge pull request #23508 from overleaf/ii-flexible-group-licensing-change-plan-cta
[web] Subscription page change plan cta

GitOrigin-RevId: aa1ae2e00cbe49fb2f661204025ef4c32393b457
2025-02-12 09:05:16 +00:00
ilkin-overleaf
58ece71c7a Merge pull request #23483 from overleaf/ii-flexible-group-licensing-error-assist
[web] Hide flexible licensing buttons for pending plans

GitOrigin-RevId: 8e9b65ae9b68cdd838442e8b45f3bd8f22e72349
2025-02-12 09:05:11 +00:00
ilkin-overleaf
93dd1fea2d Merge pull request #23498 from overleaf/ii-flexible-group-licensing-paused-subscription
[web] Paused subscription support

GitOrigin-RevId: 76482011f9a75786722b4cc0c074e8c2ac3d6fb4
2025-02-12 09:05:07 +00:00
ilkin-overleaf
61ddc73d87 Merge pull request #23488 from overleaf/ls-display-add-on-with-pending-cancellation
Display addOn that has pending cancellation

GitOrigin-RevId: 5fde493d1b706a1708e0cb4a2de6a7682fb1d1e0
2025-02-12 09:05:02 +00:00
Jakob Ackermann
0f57110de0 [web] upload to CDN buckets concurrently (#23494)
* [web] upload to CDN buckets concurrently

* [web] documentation for detaching, recording of pid and waiting

GitOrigin-RevId: abdb357771d9c5e34330827b146ae43eb6146675
2025-02-12 09:04:58 +00:00
Kristina
14cb64df6b [web] migrate secondary confirm email page to bootstrap 5 (#23452)
GitOrigin-RevId: 39ff8856d40033df802a3d811c53d12f94e7d0ed
2025-02-12 09:04:46 +00:00
Kristina
53d8f365c7 [web] update time period string on group plans (#23465)
GitOrigin-RevId: b62991ffe122cae877c0d05b71d29619e25684d9
2025-02-12 09:04:42 +00:00
Kristina
03cd878d94 [web] migrate token access page to bs5 (#23474)
GitOrigin-RevId: 2a6c148aa52bfa109ba8a072ff7fb6dbd559ebb3
2025-02-12 09:04:37 +00:00
Davinder Singh
09ab193239 Compile timeout Paywall - Adding the second component that will be displayed after paywall dismissal (#23413)
* copy pasting the code into new redesign file from old paywall file

* creating a new file for redesign - pdf-log-entry-redesign and copy pasting the old file content for now

* adding redesign file for header and copy pasting old file content for now

* using pdf-log-entry-redesign

* adding first round of styling for headint title under BS5 styling

* adding hasBorder property on the inhouse button component

* adding a cta container for 2 buttons

* adding the icon and fixing the class hierarchy

* fixing the spacing so spacing matches the figma design

* adding a translation for heading

* adding bg color and spacing for heading

* removing no thanks button

* changing the font size

* adding the link colors

* adding the required spacing on the new website redesign logs pane components

* seperating the whole component into a new component TimeoutMessageAfterPaywallDismissal for easy display later in

* removing the class that I had added earlier

* deleting the website redesign folder because files dupliocated in that folder did not have any content changes, redesign only needs styling changes for now

* adding try for free translation

* adding the unfilled icon and ficing the heading sizew

* fixing the padding of log-entry-formatted-content

* running npm run extract-translations

GitOrigin-RevId: 810ddd6037cbad0761ea23a9a2e0693a7ad7130a
2025-02-11 09:04:46 +00:00
Domagoj Kriskovic
32bb4d36bb Create new projectId_1_threadId_1 index for rooms collection (#23422)
GitOrigin-RevId: 180799e5b045ba7f07e1dbda5b9d25b52741bd14
2025-02-11 09:04:42 +00:00
Domagoj Kriskovic
0eaa0c47e4 Added new analytics events for reviewer role (#23382)
* Added analytics for review mode switcher

* Added "collaborator-role-change" analytics event to edit-member.tsx

GitOrigin-RevId: 030e9208de088898ef112e951fe301799a27277e
2025-02-11 09:04:37 +00:00
Jakob Ackermann
68edbab74f [web] split non-editor frontend cypress tests into core vs modules (#23490)
* [web] split non-editor frontend cypress tests into core vs modules

* [web] skip docker compose down before starting frontend tests

We are already skipping it for all the other test targets.

GitOrigin-RevId: 9f5938198b7885f0e5bcaf77964e776e66002037
2025-02-11 09:04:32 +00:00
Jakob Ackermann
0a7b2004d2 [misc] silence logger when running tests (#22243)
* [misc] silence logger when running tests

* [misc] re-enable logging in some tests for scripts

* [misc] make it easy to turn on verbose logging for tests

```
LOG_LEVEL=debug make test_unit
LOG_LEVEL=debug make test_acceptance
```
GitOrigin-RevId: 219bc6d1f9cbdb89ddd7d94742920913ddde4514
2025-02-10 09:06:02 +00:00
Eric Mc Sween
064baf31ad Merge pull request #23478 from overleaf/em-doc-hash-diff
Fix doc hash on delete + insert combination

GitOrigin-RevId: ecea5f8ab01f24a9064be88611256b502500d91f
2025-02-10 09:05:38 +00:00
Jakob Ackermann
b5f96b50c0 [web] disable filestore writes (#23470)
GitOrigin-RevId: 96ccd9205f9bf21420e67aaa68f8bc035eeb87d8
2025-02-10 09:05:33 +00:00
Liangjun Song
12494acdf7 Merge pull request #23463 from overleaf/ii-flexible-group-licensing-supported-users-copy
[web] Subscription page additional licenses copy

GitOrigin-RevId: 5e14792798195718a98ee1efae1a964037a32b62
2025-02-10 09:05:25 +00:00
Liangjun Song
f3950e20a0 Merge pull request #23464 from overleaf/ii-flexible-group-licensing-missing-billing-details-2
[web] Missing billing info billing details link

GitOrigin-RevId: a77f5d637848cc9ba5efa0941052ab5e10be16e4
2025-02-10 09:05:20 +00:00
Liangjun Song
4ab827bf0f Merge pull request #23442 from overleaf/dp-table-label-bug
Use css variable to set insert table label color

GitOrigin-RevId: f99de70c470ca15927ee7ad38d004f94365519ac
2025-02-10 09:05:15 +00:00
Liangjun Song
eb5417fad5 Merge pull request #23462 from overleaf/ls-update-pricing-logic-for-small-educational-plans
Update pricing logic for small educational plans

GitOrigin-RevId: 0051f238ce50b2067b7dc75d08f55dc1c7ac3502
2025-02-10 09:05:11 +00:00
Jakob Ackermann
64e8d2b8b3 [history-v1] fix backup deletion for postgres projects (#23466)
* [history-v1] fix backup deletion for postgres projects

* [history-v1] convert historyId to string on assignment

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

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: 5e1033972745a9b72606638f56ebf2147406cc39
2025-02-10 09:05:06 +00:00
Tim Down
3082e4c5cc Merge pull request #23220 from overleaf/td-bs5-paused-plan-remove-bs3
Remove Bootstrap 3 styles from paused plan widget

GitOrigin-RevId: 1f04ab5c356f60330a9c5266b81de114dd81f943
2025-02-10 09:05:01 +00:00
Jakob Ackermann
b0534b7f85 [web] restore downloading from history-v1 via legacy file endpoint (#23450)
GitOrigin-RevId: f6d12cfe445c7c41a62a563c9a5e7089bf94344f
2025-02-07 09:06:52 +00:00
CloudBuild
1aec79d726 auto update translation
GitOrigin-RevId: 3e637f00e1a54160e992e6c9cfc277e554677301
2025-02-07 09:06:45 +00:00
Jimmy Domagala-Tang
a249c8e643 Merge pull request #23248 from overleaf/jdt-institutional-policies-include-past-affiliates
Policy checks apply for lapsed affiliates

GitOrigin-RevId: b4d42a2dc2d43b531886fb4eb8c4c6d990e324e7
2025-02-07 09:06:41 +00:00
David
e43da5569c Merge pull request #23406 from overleaf/dp-share-submit-buttons
Connect up share and submit project buttons in new editor

GitOrigin-RevId: 6eb4ef82662b8de3f59417b6a2d8d5fcf125a579
2025-02-07 09:06:34 +00:00
David
f219744fdd Merge pull request #23344 from overleaf/dp-file-tree-toolbar
Update file tree toolbar in new editor

GitOrigin-RevId: 11ca678b50e0c525ae60b806dfbc08773b661b7b
2025-02-07 09:06:30 +00:00
David
bd76193eb5 Merge pull request #23300 from overleaf/mj-ide-menu-hover
[web] Introduce menu bar shared component

GitOrigin-RevId: c304cc4e1e5961fe4ef7d2112e8d9f91c47dd0ec
2025-02-07 09:06:26 +00:00
David
b5c11370d6 Merge pull request #23384 from overleaf/mj-ide-collapsible-rail
[web] Make panels collapsible in editor redesign

GitOrigin-RevId: bc979e3b6028666d3e0aa751e341d838615c1aac
2025-02-07 09:06:22 +00:00
M Fahru
37444c5eef Merge pull request #23063 from overleaf/mf-teardown-bs5-homepage
[web] Tear down bs5-homepage feature flag and remove bs3 homepage code

GitOrigin-RevId: f7fca07c0fb958682c6eed7fdf824818c1039be7
2025-02-07 09:06:18 +00:00
M Fahru
431cba20ca Merge pull request #23400 from overleaf/mf-add-fedramp-group-tab
[web] Add FedRamp info in plans page group tab

GitOrigin-RevId: 4d3869f99ab63abb124a964f92069943f5212af4
2025-02-07 09:06:14 +00:00
Eric Mc Sween
9893f18ca5 Merge pull request #23447 from overleaf/em-reduce-validation-error-logs
Only log validation errors once per flush

GitOrigin-RevId: ee3f656c4c7c09fd7f3ff2462278c9aef81b9bb5
2025-02-07 09:06:10 +00:00
Eric Mc Sween
3c1f20a6d1 Merge pull request #23433 from overleaf/em-do-not-store-content-hashes
Do not store content hashes in chunks

GitOrigin-RevId: 65a255b92f9c4e216ad5a1fb5fb3fa5a6b9158c4
2025-02-07 09:06:03 +00:00
Eric Mc Sween
ce4c8a4e47 Merge pull request #23398 from overleaf/em-log-doc-hash-mismatches
Validate content hashes in history (log only)

GitOrigin-RevId: ed772fc4e4d0aa9e980f9693a759647bd937e13a
2025-02-07 09:05:59 +00:00
Liangjun Song
735fd761cd Merge pull request #23372 from overleaf/ls-update-pricing-logic-for-seats-adding
Update pricing logic for seats adding

GitOrigin-RevId: 8312941c88ade2e5ee83c806939628714880b416
2025-02-07 09:05:55 +00:00
Liangjun Song
5facec8ed2 Merge pull request #23238 from overleaf/ls-analytic-events-for-flexible-licensing
Implement analytic events for flexible licensing

GitOrigin-RevId: 2ac0b471616d6e4f80ade18934d7240618195a8a
2025-02-07 09:05:48 +00:00
Eric Mc Sween
e145667a81 Merge pull request #23282 from overleaf/em-async-await-persist-changes
Convert the history changes import code to async/await

GitOrigin-RevId: 6421fcaaf3bac69a3404754f935b4902979b4689
2025-02-07 09:05:44 +00:00
Liangjun Song
3d0632e916 Merge pull request #23380 from overleaf/ls-update-faq-for-group-plans
Update FAQ for group plans

GitOrigin-RevId: 090b3e512d4f2da4b8bed5b19a9c991665a138ee
2025-02-07 09:05:40 +00:00
Liangjun Song
b941439461 Merge pull request #23395 from overleaf/ls-display-discount-in-cost-summary
Display discount information in cost summary

GitOrigin-RevId: 95ff56b21b15e55860968e8ce4519c897b85ebba
2025-02-07 09:05:36 +00:00
Liangjun Song
58660cc9f2 Merge pull request #23409 from overleaf/ls-translation-for-single-license-purchase-confirmation
Update translation for single license purchase confirmation

GitOrigin-RevId: 5503c8c838814e3a56be75483699d5d4502d0acc
2025-02-07 09:05:32 +00:00
Liangjun Song
8421bcc5d2 Merge pull request #23415 from overleaf/ii-flexible-group-licensing-manually-collected
[web] Manually collected subscriptions with flexible licensing

GitOrigin-RevId: ca7cf2abf5cfa1d873614bf3407fb5a259a78a76
2025-02-07 09:05:28 +00:00
Liangjun Song
d66c11e786 Merge pull request #23435 from overleaf/ii-flexible-group-licensing-add-seats-links
[web] Add seats links handling

GitOrigin-RevId: d53264277c24ec64b6ff7744b4d7e10a4234ac86
2025-02-07 09:05:24 +00:00
Liangjun Song
ad9b409cf9 Merge pull request #23439 from overleaf/ii-flexible-group-licensing-subscription-add-on
[web] Add-on cancel button

GitOrigin-RevId: bdbcbf8820aa683f7bdb365eca331aa71455b687
2025-02-07 09:05:20 +00:00
Jakob Ackermann
668e9428f8 [history-v1] speed up tests for back-fill script (#23440)
* [history-v1] speed up tests for back-fill script

* [history-v1] move "should process nothing on re-run" test to the end

GitOrigin-RevId: d5180cfaefca3c46c440230eb3566539de1582bd
2025-02-07 09:05:16 +00:00
Alf Eaton
294079d55e Remove uses of editor scope values (#23312)
GitOrigin-RevId: 97e2188bc1363618b60f722fa317a5b240d5013b
2025-02-07 09:05:12 +00:00
Alf Eaton
9854d37916 Minimise use of ide context provider (#23308)
GitOrigin-RevId: 468b8d4b33925bdb97bd46d2c4e7acb969f3d82b
2025-02-07 09:05:05 +00:00
Jakob Ackermann
26321c5dba [history-v1] block deletion of bucket prefix that is not a valid project prefix (#22889)
Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: a3aff76a2e299b2e2ed030e34da0631fce51ad4b
2025-02-07 09:05:01 +00:00
Alf Eaton
185c53bd70 Restore return on join doc error (#23377)
GitOrigin-RevId: df03621221ecacffe50cb805fd3a2fd71ce773a7
2025-02-07 09:04:57 +00:00
Eric Mc Sween
7632bed1fe Fix full project search shortcut for Linux/Windows (#23430)
GitOrigin-RevId: e90baa04529ece283da794eeeb0bd322c7a74b51
2025-02-07 09:04:53 +00:00
Alf Eaton
91fb235030 Set font-variant-numeric: slashed-zero (#23416)
GitOrigin-RevId: 8a1ebecfe513226db75db431a05315064d6610d6
2025-02-07 09:04:36 +00:00
Alf Eaton
36392832d5 Remove unused EventLog (#23419)
GitOrigin-RevId: 25e09466c2a16545436fd9c312431f78e68b3194
2025-02-07 09:04:32 +00:00
Domagoj Kriskovic
543e15b846 Fix select widget width in share modal (#23426)
GitOrigin-RevId: 5912a315ac9bc634ca1b7ce9645c23a5e590461d
2025-02-07 09:04:25 +00:00
Domagoj Kriskovic
e76baa9cb4 Prevent expanding for ide-react-main element (#23405)
GitOrigin-RevId: 099f603b206cfa062fccd7577368f32062f15df4
2025-02-07 09:04:21 +00:00
Kristina
ac15073a52 [web] update e2e tests to look for new strings (#23425)
GitOrigin-RevId: 62c513369adcd003db0aac6a3777eb0a98bf3289
2025-02-07 09:04:17 +00:00
M Fahru
9b9d002f9b Merge pull request #22913 from overleaf/mf-remove-old-plans-page-css
[web] Remove old plans page `less` files

GitOrigin-RevId: 1216f87ce487848bf7d6dcf4ffea661761307e97
2025-02-06 09:04:55 +00:00
Brian Gough
25d9ef33c5 Merge pull request #23420 from overleaf/bg-add-plimit-to-history
add plimit to history-v1

GitOrigin-RevId: bae1b12b2031100144afc797094dba95524a8a3e
2025-02-06 09:04:48 +00:00
Jakob Ackermann
6b8a50eb92 [project-history] trim logging (#23408)
* [project-history] trim logging when projectVersion is out of order

* [editor-core] record reason rather than full pathname when not clean

* [editor-core] remove pathname from error messages

* [project-history] avoid logging updates when historyId is inconsistent

* [project-history] avoid logging failed history-v1 requests repeatedly

* [project-history] log once when doc version is out of order in chunk

GitOrigin-RevId: 5ac431ac87b57c00fac9d5ab486ca305b1775372
2025-02-06 09:04:35 +00:00
Jakob Ackermann
81aab1e159 [misc] fix logger.error(err) and logger.warn(err) calls (#23369)
* [misc] fix logger.error(err) calls

The signature is "logger.error({ err }, 'MESSAGE')".

* [project-history] remove duplicate logger.err calls in health check

The call-site is already logging any errors. Also, the logger.err call
signature was not quite right.

* [web] log userId when removeDropbox/removeGithub hook fails

* [misc] fix logger.warn(err) calls

The signature is "logger.warn({ err }, 'MESSAGE')".

* [misc] fix logger.error(OError.tag(err)) calls

* [web] make eslint happy

GitOrigin-RevId: 7f528113a3f7e9f6293b7d2d45adc079380325bb
2025-02-06 09:04:31 +00:00
Mathias Jakobsen
67f3c468a1 Merge pull request #23274 from overleaf/mj-restore-main-history
[web] Restore main documents with metadata as docs

GitOrigin-RevId: f3664689704e9098c2b9e317d65e4ab2633320cb
2025-02-06 09:04:26 +00:00
roo hutton
77fa5cf784 Merge pull request #23359 from overleaf/rh-roles-e2e-fix
Fix cross-module import in compile timeout paywall

GitOrigin-RevId: a54226c8bef65e0483a3eee614f0ab54f5828c97
2025-02-05 09:07:27 +00:00
Rebeka Dekany
ff92b70a7f Merge pull request #23217 from overleaf/rd-deleted-project-admin-migration-bs5
Migrate the admin deleted project page to Bootstrap 5

GitOrigin-RevId: 14992922a3476248de5ca7a04bc478e817da51a1
2025-02-05 09:07:03 +00:00
CloudBuild
25378de222 auto update translation
GitOrigin-RevId: 3bf5e1471dd406eecb0fb6862f6b1d7b62f7aad4
2025-02-05 09:06:59 +00:00
Brian Gough
b2ff14f669 Merge pull request #23375 from overleaf/bg-add-id-checks-for-chunks
guard against non-postgres projectIds

GitOrigin-RevId: eab2024e4e893591f4b1c6a507b26d935273ae5f
2025-02-05 09:06:54 +00:00
Brian Gough
9b073db24d Merge pull request #23368 from overleaf/bg-add-index-for-pending-change-at
add migration for creating index on overleaf.backup.pendingChangeAt

GitOrigin-RevId: b15f1b95d8dbbb08cd2ae4863a0501663130ab65
2025-02-05 09:06:50 +00:00
Jessica Lawshe
c53a00eb48 Merge pull request #23087 from overleaf/jel-reg-no-sso
[web] Update message on registration page when org does not have SSO

GitOrigin-RevId: 4df9e33f60e9b12acb17fa56401d76a5188f121c
2025-02-05 09:06:43 +00:00
Jessica Lawshe
5e0dced989 Merge pull request #22966 from overleaf/jel-saml-error
[web] Check for requester errors in SAML callback

GitOrigin-RevId: 491d7c85e859c503bade3b225a4596656dbfe84f
2025-02-05 09:06:38 +00:00
Jessica Lawshe
bcd61354a8 Merge pull request #22803 from overleaf/jel-sso-error-handling
[web] Better error when for missing user SAML callback data

GitOrigin-RevId: 0f781bc46a8684e183d4a860df00c29d6dc9193e
2025-02-05 09:06:31 +00:00
M Fahru
109cc90e34 Merge pull request #23303 from overleaf/mf-onboarding-confirm-email-bs5-migration
[web] Migrate onboarding confirm email page to bootstrap 5

GitOrigin-RevId: ccba9aa7c6b3767010d823a4373bf65bb026d3c4
2025-02-05 09:06:26 +00:00
Mathias Jakobsen
d0c94a0a56 Merge pull request #23237 from overleaf/mj-ide-chat
[web] Add existing chat pane to the editor redesign

GitOrigin-RevId: 21b4c80b18ec1dc554f1eb2fac95994f0352fefc
2025-02-05 09:06:15 +00:00
Domagoj Kriskovic
69d309f6a0 Sync history and chat service resolve value on file restore (#23265)
* Sync history and chat service resolve value on file restore

* properly check resolved values

* delete resolved from emitted newCommentThreadData

* removed resolved from the comment range

GitOrigin-RevId: 6f3a14e2e14e48a2313d7b0942b6621bb42c472f
2025-02-05 09:06:11 +00:00
Domagoj Kriskovic
6d45fea773 Add "new-comment-threads" event handler for new review panel (#23298)
GitOrigin-RevId: 00628e6421a563f5157415d235ee5e7c2818e690
2025-02-05 09:06:07 +00:00
Domagoj Kriskovic
6ee3ff63e4 Dont show "add comment" tooltip when text is selected via search (#23341)
* Dont show "add comment" tooltip when text is selected via search

* remove the tooltip if selection changes

* handle empty selection

* use tr.effects.some for mouseUp check

* avoid creating new create function each time

* use useEventListener

GitOrigin-RevId: 18d96fe6fdefcd55f88849cf880f804d4c963f4d
2025-02-05 09:06:02 +00:00
Mathias Jakobsen
1ab971a2da Merge pull request #23374 from overleaf/dp-compile-button-2
Use old pdf compile button in new editor

GitOrigin-RevId: 85a1bacf94b3fb569f95fcea23a16f5f51f29bcd
2025-02-05 09:05:58 +00:00
ilkin-overleaf
4a927e45a6 Merge pull request #23117 from overleaf/ii-flexible-group-licensing-subscription-page
[web] Subscription page for flexible licensing

GitOrigin-RevId: 8f2fab1fc01e27063d716a86add66b1b9a72cbe6
2025-02-05 09:05:54 +00:00
ilkin-overleaf
16130b79db Merge pull request #23203 from overleaf/ii-flexible-group-licensing-no-billing-details
[web] FL handle subscriptions with missing billing info

GitOrigin-RevId: 34209299c039992a80da5739e086beb5d0ede7b0
2025-02-05 09:05:50 +00:00
ilkin-overleaf
72be034435 Merge pull request #23263 from overleaf/ii-flexible-licensing-subscription-group-handler
[web] FL check subscription existence

GitOrigin-RevId: b564d681245137955a8f1e7367b9bd1a6b404268
2025-02-05 09:05:45 +00:00
ilkin-overleaf
fb8794921e Merge pull request #23314 from overleaf/ls-update-group-plan-upgrade-mapping
Update group plan upgrade mapping

GitOrigin-RevId: aca3d986477dbcf0561635dfd771413a2ba1ef15
2025-02-05 09:05:41 +00:00
ilkin-overleaf
d9febc168e Merge pull request #23313 from overleaf/ls-feature-flag-for-consolidated-plans
Add a separate feature flag for consolidated plans

GitOrigin-RevId: e048bf51fa9481506f884ba04bb0ba1a0605b43c
2025-02-05 09:05:36 +00:00
ilkin-overleaf
667b97664c Merge pull request #23366 from overleaf/ii-flexible-licensing-add-seats-for-all-legacy-plans
[web] Add seats feature for smaller groups

GitOrigin-RevId: 7b0d1ea61eaaf603610d5fd8df399c00d328be70
2025-02-05 09:05:32 +00:00
Brian Gough
098d91f0bb Merge pull request #23345 from overleaf/bg-write-latest-history-version-to-project
update project entry with history metadata on chunk creation

GitOrigin-RevId: dd19898f3d16e2e3360ff1bcccbf79f7dd27addb
2025-02-05 09:05:28 +00:00
Alf Eaton
c629355472 Only select content when opening a file if it matches the expected text (#23324)
GitOrigin-RevId: 8b180ab897bb9027743c37f2b7faf690b7177eb6
2025-02-05 09:05:23 +00:00
Alf Eaton
8406807552 Always wait for buffered ops before compiling (#23336)
GitOrigin-RevId: 1e586979897fb01378e449fe9dc9c7d269de83bb
2025-02-05 09:05:19 +00:00
Alf Eaton
87186eb568 Standardise naming of openDocId as openDocWithId or currentDocumentId (#23307)
GitOrigin-RevId: d71b6d878188c7b916f02a3749976ecd96d648a3
2025-02-05 09:05:15 +00:00
Alf Eaton
d899144d43 Remove doc:opened event (#23310)
GitOrigin-RevId: e0613c4ac548b57786df6a28f433636485dbb2a7
2025-02-05 09:05:07 +00:00
Alf Eaton
341f84ca80 Return a promise from openDoc (#23309)
GitOrigin-RevId: a2801ce482e48a061269d819aff16a6c6e507955
2025-02-05 09:05:03 +00:00
Alf Eaton
797686939f Merge pull request #23284 from overleaf/ae-scope-event-types
Improve scope event types

GitOrigin-RevId: 5327c56a14244a2513748d3bcbac04413d104e12
2025-02-05 09:04:58 +00:00
Jimmy Domagala-Tang
4b1babd4ea Merge pull request #22965 from overleaf/jdt-async-institution-feats
Async await institution features utility

GitOrigin-RevId: ef24a189aab46d065925405a795709c94ff3d0b3
2025-02-04 09:05:29 +00:00
Jimmy Domagala-Tang
7f7c2408c8 Merge pull request #23281 from overleaf/jdt-opp-prompts-teardown
Opportunistic prompts teardown

GitOrigin-RevId: ccca9b043dce9abc5719371c3adcdf41ec6510c3
2025-02-04 09:05:25 +00:00
Jimmy Domagala-Tang
98b5bf2694 Merge pull request #23209 from overleaf/jdt-async-await-prj-entity-handler
Async/await the ProjectEntityHandler

GitOrigin-RevId: 873106c4ea56e13d864407b338a1924370ba6709
2025-02-04 09:05:21 +00:00
Miguel Serrano
e73b3b4c9f [web] Ignore chat capability in CE/SP (#23297)
* [web] Ignore chat capability in CE/SP

* Allow usage of hasFeature('chat') for testing in saas

GitOrigin-RevId: 4ab5ffe2142353322e7955463f1beca524113d42
2025-02-04 09:05:14 +00:00
roo hutton
32793f7872 Merge pull request #23319 from overleaf/rh-compile-timeout-students
Expose ODC role to compile timeout paywall

GitOrigin-RevId: eca3983019200349e90b4681b59720c0028fb3b6
2025-02-04 09:05:10 +00:00
roo hutton
30335971cf Merge pull request #23339 from overleaf/rh-pause-subscription-id
Fix recurly subscription id in pause-scheduled event

GitOrigin-RevId: 94838bddd53c9b9a051cae8252eca11b01e96c60
2025-02-04 09:05:06 +00:00
Eric Mc Sween
39842c9857 Merge pull request #23250 from overleaf/em-project-history-doc-hash
Propagate the doc hash from project-history to history

GitOrigin-RevId: 341df52df41f7a5f8dbebbce53a47f9d5e1f8175
2025-02-04 09:05:03 +00:00
Jakob Ackermann
f727389b2b [project-history] make logging of latency in resync script optional (#23325)
GitOrigin-RevId: ee6863e05be648757ccaa96a0321085fe42f508f
2025-02-04 09:04:59 +00:00
Jakob Ackermann
3a4c5a0d0f [history-v1] add readOnly lookup for raw chunks (#23318)
* [history-v1] add readOnly lookup for raw chunks

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>

* [history-v1] reduce min poolsize for readOnly pool to 0

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

---------

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>
Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: a711c4ee4f3ea3775bd090e620d1ef52689fa1f4
2025-02-04 09:04:52 +00:00
Brian Gough
01ed0c10a0 Merge pull request #23317 from overleaf/bg-improve-real-time-ping-logs
Add connection details to real-time ping logs

GitOrigin-RevId: f993d71deb1a512295af6c7146a19b730742e33f
2025-02-04 09:04:48 +00:00
roo hutton
864599b325 Merge pull request #23172 from overleaf/rh-pause-pending-plan-change
Don't offer subscription pause if plan change is pending

GitOrigin-RevId: e91897fab2d003dc3ef7486e609a8b907e376a1f
2025-02-04 09:04:41 +00:00
Jakob Ackermann
5404dcb93d [misc] update build scripts (#23316)
* [misc] update build scripts

* [misc] make shellcheck happy

GitOrigin-RevId: 343655fda54aa7e835dd666dcd4218d61c58fd09
2025-02-04 09:04:37 +00:00
Kristina
70a17768a3 Merge pull request #23268 from overleaf/kh-rm-dead-link-sharing-code
[web] remove deprecated project sharing modal

GitOrigin-RevId: 7b25918363c27154e0000e9497847217f2317fce
2025-02-04 09:04:33 +00:00
Kristina
229cae771e Merge pull request #23259 from overleaf/kh-rm-dead-manager-code
[web] remove unused functions to support legacy read/write link sharing

GitOrigin-RevId: 504c1eb721caa7131ed685b1e0fa5e0d0b460888
2025-02-04 09:04:29 +00:00
Kristina
e3fdcdd601 Merge pull request #23131 from overleaf/kh-teardown-link-sharing-split-tests
[web] tear down link sharing split tests

GitOrigin-RevId: 449e9f368405aea1500035269428e7ae0c37d8fb
2025-02-04 09:04:25 +00:00
Brian Gough
8831fb9a18 Merge pull request #23169 from overleaf/bg-export-global-blobs
Add script to export global blobs to CSV

GitOrigin-RevId: 86c885981b150aae4541770a094c822e1fb364b9
2025-02-03 09:05:53 +00:00
Davinder Singh
423c2ba7e7 Merge pull request #23285 from overleaf/ds-compile-timeout-paywall-split-test
Compile timeout paywall - Setting up the split test

GitOrigin-RevId: c91c25c167daffdcd7b86fddf33e1867f90d0f4a
2025-02-03 09:05:48 +00:00
Jakob Ackermann
c6c623da78 [project-history] script for fixing-up files/metadata with bulk resync (#23184)
* [history-v1] add cheap endpoint for checking time of last history write

The /raw endpoint skips the GCS lookup for the chunk.

* [project-history] script for fixing-up files/metadata with bulk resync

* [project-history] upgrade structure only resync when full sync is needed

* [project-history] start resync and process resync updates under lock

* [project-history] stop retrying during graceful shutdown

GitOrigin-RevId: 73184d5786e1d40f5b7e21f387fc37cf43f0ac2d
2025-02-03 09:05:43 +00:00
Jakob Ackermann
b0c9176634 [project-history] add resync for project structure only (#23271)
* [project-history] add resync for project structure only

* [project-history] block resyncProjectStructureOnly that update docs

* [project-history] tweak test description

GitOrigin-RevId: ce2749566c36e04dab21c26dd60dd75d93c0d4c0
2025-02-03 09:05:39 +00:00
Jakob Ackermann
8df7f6772c [web] close connection permanently when opening out-of-sync modal (#23148)
* [web] close connection permanently when opening out-of-sync modal

* [web] disable generic forceDisconnected behavior for out-of-sync modal

* [web] hide "disconnected" banner when displaying out of sync modal

GitOrigin-RevId: 133b3e24d94279917298ce7fd5d0a76da2265512
2025-02-03 09:05:34 +00:00
Jakob Ackermann
cebaebc356 [web] add migration for indexing onboardingDataCollection.updatedAt (#22918)
Co-authored-by: Dr. Sasha Göbbels <sasha.goebbels@overleaf.com>
GitOrigin-RevId: 6dbd3e994dc3ebc3ef9afd6d3e3efe00606ba127
2025-02-03 09:05:29 +00:00
Domagoj Kriskovic
c0caaa20c3 Create missing dropboxEntities mongo index (#23257)
GitOrigin-RevId: cddcb63371f45c42482e42c6fdcc16f83aa41877
2025-02-03 09:05:21 +00:00
Domagoj Kriskovic
f2c6a7ddb4 Refactor review panel position-items function (#22969)
GitOrigin-RevId: 929e7f2b90ac21cb68117d66ca599120cc765fab
2025-02-03 09:05:10 +00:00
Domagoj Kriskovic
97562c0042 Debounce position updates in review panel for improved performance (#23190)
* Debounce position updates in review panel for improved performance

* move debounce inside useMemo

* move 'review-panel:position' inside debounce

GitOrigin-RevId: 2b2d0e59537875f85036b0105ccb1a7d2035c0de
2025-02-03 09:05:05 +00:00
Domagoj Kriskovic
14dedf0101 Prevent adding multiple replies by hitting enter while submitting (#23240)
GitOrigin-RevId: 342aa30f89f3ac0b0b25ab931dd4df1d956aa4a1
2025-02-03 09:05:00 +00:00
Alf Eaton
32a27c14b4 Add memoized FormatTimeBasedOnYear component (#23199)
GitOrigin-RevId: 1f26ca9c0dbbda639939736f1e6a0c236e38a160
2025-02-03 09:04:52 +00:00
Alf Eaton
5e491cc0c0 Use thread id in removeNewCommentRangeEffect (#23205)
GitOrigin-RevId: 6082f5e6d6f548eff43da657526097118a2d3c11
2025-02-03 09:04:48 +00:00
Brian Gough
a6bfbad5bd Merge pull request #23246 from overleaf/bg-real-time-server-ping
add real-time ping-pong messages for debugging lost connections

GitOrigin-RevId: 28feb8c8c7c660a5a23ca394acd0f69ac828c5a3
2025-02-03 09:04:39 +00:00
M Fahru
e042233dd9 [web] Fix bug where VAT value isn't retained properly when changing plan without reloading (#23211)
Fix VAT info is not properly updated when changing plan without reloading.

I removed `setPlan` and created a new function: `updatePlan`. In the new function, I call the recurly function directly and the tracking code. This way, we can be sure that changing plan won't call useLayoutEffect.

Also, remove unused `useState` on the `planCode`

GitOrigin-RevId: 0d6d9fac32c15dcf13e35cf9cd9161aa07581938
2025-01-31 09:05:36 +00:00
M Fahru
438bd76c61 Use PaymentContextValue type instead of direct boolean (#23185)
GitOrigin-RevId: 2e1af64a40a4b98f84fbd7a024b1facd18e0fe90
2025-01-31 09:05:32 +00:00
Antoine Clausse
3312d97a6b [web] Add tests on find_malformed_filetrees and fix_malformed_filetree, partially fix fix_malformed_filetree (#23120)
* Create tests on find_malformed_filetrees and fix_malformed_filetrees

* Remove lines that are making fix_malformed_filetree fail

These lines are causing errors such as
```
Missing file hash: 586846800000000000000000/5891271c0000000000000000 (rootFolder.0.folders.2.fileRefs.7.hash)
SaaS: likely needs filestore restore
Server Pro: please reach out to support
```

* Add snapshots of projects after fix_malformed_filetree

* Set `WRITE_SNAPSHOT` as false

* Make `deleteProjectsRecordId0` constant

* Ignore duplicated ID errors in CreateMalformedFileTrees.mjs

* Move snapshots to directory folder

* Remove unnecessary code

* Update tests to cover use cases from the scripts

* Fix: Use `new ObjectId(projectId)` instead of the string in mongo queries

* Fix: Query `rootFolder: []` to fix more than `rootFolder: { $size: 0 }`

* Remove/rename files from first draft

* Remove empty strings from expects in unrelated tests, now that `filterOutput` removes them

* Add missing `expectFixStdout` to tests

* misc: rename test util to strId

* Add "well formed filetrees" to test cases

* Use `wellFormed` variable to remove some duplication

* Update tests:
- check Missing file hash path
- remove test on string/numbers as array items

* Add test "bug: shifted arrays in filetree"

* Rename `wellFormedFile` to `wellFormedFolder`

* Fix name of the root folder to `'rootFolder'`, not `'untitled'`

GitOrigin-RevId: dc098bb7ad3ca441fe2bb72b5f5f0e3bcedbdf67
2025-01-31 09:05:27 +00:00
Antoine Clausse
4738961f51 [web] Update secondary email addition: confirm with 6 digits code (#22851)
* Remove `Interstitial` from `ConfirmEmailForm`

* Allow adding `affiliationOptions` in `addWithConfirmationCode`

* Add confirmationStep in add-email.tsx

* Call `getEmails` once a secondary email is added

* Fix tests

* Lint fix

* Style confirm-email-form

Figma: https://www.figma.com/design/TWyeImDSZHhkl9akYaGmeb/24.5-Secondary-email-reconfirmation?node-id=1-449&p=f&m=dev

* Remove unnecessary `successMessage` and `successButtonText` from hidden ConfirmEmailForm

* Remove icon padding

* Rename file to confirm-email-form.tsx

* Use `OLButton`

* Add Cancel button

* Update loading states

* Remove redundant `className` with variants

GitOrigin-RevId: 62b1729cf2299da38f20fa3946273ad0193c7d54
2025-01-31 09:05:23 +00:00
Miguel Serrano
8ff8e7a4bf Merge pull request #23006 from overleaf/msm-chat-capabilities-poc-2
[web] Add option to disable chat for subscription

GitOrigin-RevId: 0052d060c74c39400496f7f9f54c820398d60012
2025-01-31 09:05:18 +00:00
Jakob Ackermann
ba60f885a4 [project-history] fetch most recent chunk once when processing updates (#23261)
GitOrigin-RevId: 08ddd1f953b0dbae0541a60b45fec0f88e0a1d06
2025-01-31 09:05:14 +00:00
Jakob Ackermann
72b4083318 [project-history] forward all the optional file attributes during resync (#23260)
Notably, 'createdBlob' was missing. And others like metadata should not
be added if not set.

GitOrigin-RevId: c4a6746c4824d637f7c54b4c68a7025b60c15ff2
2025-01-31 09:05:09 +00:00
roo hutton
50f5a4e909 Merge pull request #23161 from overleaf/rh-pause-no-plan-change
Prevent downgrade to personal plan during subscription pause

GitOrigin-RevId: e3ba2e8e4d9b909fa2ee9c3c7e15db2ed257e43b
2025-01-31 09:04:58 +00:00
roo hutton
347cade55f Merge pull request #23177 from overleaf/rh-pause-tracking
Add tracking for subscription-pause-scheduled event

GitOrigin-RevId: 802899e53d22f2be49f2d20adb45a4a47d0f6beb
2025-01-31 09:04:53 +00:00
CloudBuild
4858efd06f auto update translation
GitOrigin-RevId: afd78e117c45b7ab3c28cacfc9ec29b2e7c20e70
2025-01-30 09:05:46 +00:00
Miguel Serrano
f157dd419e [CE/SP] Hotfix 5.3.1 (#23008)
* [CE/SP] Hotfix 5.3.1

* Added mongoose upgrade for services/templates

* Fix mongodb transitive dependency

* cleaned npm cache and /tmp

GitOrigin-RevId: 139cf7776ba053c3763613cc3a6cdea4dfd3db44
2025-01-30 09:05:38 +00:00
Domagoj Kriskovic
461818810c Ensure editor decorations for comments are removed in the old review panel (#23239)
GitOrigin-RevId: d41d9b9701fc792c0190f4648ce9c4ddf035a967
2025-01-30 09:05:30 +00:00
Domagoj Kriskovic
3a918a58e5 Prevent submitting comment on enter if input is empty (#23221)
* Prevent submitting comment on enter if input is empty

* check for content in keyPress event

GitOrigin-RevId: 1abef229782265836a49d74aa93625797d50dc3a
2025-01-30 09:05:26 +00:00
Eric Mc Sween
76dd6d1e20 Merge pull request #23212 from overleaf/em-docupdater-send-doc-hash
Send doc hash with history updates from docupdater

GitOrigin-RevId: 119475d4198c6603cecd4fd579a64ff4448261ce
2025-01-30 09:05:21 +00:00
David
d731afed90 Merge pull request #23134 from overleaf/dp-remove-math-preview-flag
Remove math-preview feature flag

GitOrigin-RevId: a5235cf36b692b0e3dc36ff6185ebc7ef169d21e
2025-01-30 09:05:17 +00:00
David
f523358d08 Merge pull request #23182 from overleaf/dp-pdf-error-state
Add pdf error state for new ide

GitOrigin-RevId: 35fe07744996375db9cb3b860bdc128b509ee438
2025-01-30 09:05:12 +00:00
David
069624029a Merge pull request #23080 from overleaf/dp-file-outline-in-editor
Add file outline to new editor

GitOrigin-RevId: c9b36d480b243905de8e98dcb838c56a2fe9d2b0
2025-01-30 09:05:08 +00:00
Rebeka Dekany
646e7c2ef0 Merge pull request #23071 from overleaf/rd-migrate-project-id-bs5
Migrate the admin project info page to Bootstrap 5

GitOrigin-RevId: 36ce714ca56e4aeea9f20a84fda6991fb53627c4
2025-01-30 09:05:00 +00:00
Alf Eaton
af86239f03 Reject out-of-order op ack messages (#23163)
GitOrigin-RevId: 50c48282e93925a8c40be72e8fc0b8a72d39d82d
2025-01-30 09:04:56 +00:00
Alf Eaton
8f11bc6270 Call event.preventDefault on the "full project search" keyboard shortcut (#23147)
GitOrigin-RevId: 7cd7b2fa3eaf978377fc6f402bce92229fda2c51
2025-01-30 09:04:51 +00:00
Alf Eaton
1ca47334f7 Throttle range rebuilding on edits (#23193)
GitOrigin-RevId: 86d9465af663c346805445cd57dd6f6e06049d7b
2025-01-30 09:04:47 +00:00
Alf Eaton
90aec12e84 Ensure that review panel components are memoized (#23194)
GitOrigin-RevId: 271b8b00394d6b87fddc503a70f17f8f41144ec7
2025-01-30 09:04:42 +00:00
Mathias Jakobsen
57e535af52 Merge pull request #23173 from overleaf/mj-fix-e2e
[web+server-ce] Fix E2E tests

GitOrigin-RevId: cc22952bf828c32ce01eacc707935d3e7b156d71
2025-01-29 09:06:04 +00:00
Mathias Jakobsen
fd8fcb11f8 Merge pull request #23170 from overleaf/mj-ide-resize-handle-bg
[web] Override resize handle background colour in editor redesign

GitOrigin-RevId: b429dc5d0f0369c7bd54f29b5e499411ac9398d6
2025-01-29 09:06:00 +00:00
M Fahru
51bf63a32a Merge pull request #23125 from overleaf/mf-change-case-settings-page-form
[web] Change settings page form labels to sentence case (instead of capitalizing each word)

GitOrigin-RevId: 70cc94c2883e782928b5cfdf81ea5ed2d4ff4363
2025-01-29 09:05:47 +00:00
M Fahru
33bbb32d07 Merge pull request #23149 from overleaf/mf-disable-paypal-submit-unchecked-student-confirm
[web] Disable paypal submit button if student confirmation checkbox is not checked

GitOrigin-RevId: 3c8ca624399e249a48ac0be48cb0c5c0b4170d30
2025-01-29 09:05:43 +00:00
Domagoj Kriskovic
cd48caeaa1 Updated mongo index for ProjectDeleter (#23138)
GitOrigin-RevId: aa26f29b8917b0d6ff836cc03f82b74066a7dcd4
2025-01-29 09:05:36 +00:00
Domagoj Kriskovic
ff9ee2f5a9 Use "can write or review project content" authorization middleware (#23111)
GitOrigin-RevId: c5d1cb955e5833347f7e0c3610c5b8d768026478
2025-01-29 09:05:33 +00:00
Domagoj Kriskovic
ea918f3674 Disable restore project/file and project settings for a reviewer (#23104)
* Disable restore project/file and project settings for a reviewer

* hide github menu

* use permissions context

GitOrigin-RevId: a705ecf8bc1f722b8818baef85c5411e7a762989
2025-01-29 09:05:29 +00:00
Liangjun Song
6245e81f42 Merge pull request #22518 from overleaf/ii-flexible-group-licensing-add-seats-legacy
[web] Unlock self-served license purchasing for legacy plans

GitOrigin-RevId: bf3083d00a77417f0e78d2145f6192c57b163273
2025-01-29 09:05:25 +00:00
Liangjun Song
8808e8dfa2 Merge pull request #23128 from overleaf/ii-flexible-group-licensing-add-seats-cost-summary
[web] FL cost summary billing info

GitOrigin-RevId: eae6a7f02aa37e304144ccf75b952406567ca5d5
2025-01-29 09:05:21 +00:00
Liangjun Song
e91079d493 Merge pull request #23129 from overleaf/ii-flexible-group-licensing-sales-tax-percentage
[web] Fix sales tax percentage in add seats page

GitOrigin-RevId: 0cb0ab537fbe190d7291deb5942c244a5b0bd3af
2025-01-29 09:05:17 +00:00
Liangjun Song
d893bb76cf Merge pull request #22816 from overleaf/enable-group-plan-upgrade-for-legacy-plans
Enable group plan upgrade for legacy plans

GitOrigin-RevId: 9dde0371eeb791a6331ab50733fd457e28837ba9
2025-01-29 09:05:13 +00:00
Liangjun Song
eba4418672 Merge pull request #23060 from overleaf/ls-support-new-group-plan-in-redesigned-checkout-page
Support new group plan in the redesigned checkout page

GitOrigin-RevId: 2564477b36ee93ca4b4b6dd8210f140a3104c6ed
2025-01-29 09:05:09 +00:00
Mathias Jakobsen
ec73bbcfa0 Merge pull request #23045 from overleaf/mj-errors-tab
[web] Add errors to rail

GitOrigin-RevId: 484e28b1ff1578ec46aa6811f1d1bd1d03a02f59
2025-01-29 09:04:59 +00:00
Mathias Jakobsen
4b46120ec1 Merge pull request #22928 from overleaf/mj-ide-toolbar
[web] Initial editor toolbar

GitOrigin-RevId: 33658d886bf86cbaa22a161f2ff463ef608e5f6b
2025-01-29 09:04:55 +00:00
Alf Eaton
71ab3a41ed Remove ColorManager (#22974)
GitOrigin-RevId: 32cb6fd599345eaf8e474553da5c6d3080575ee8
2025-01-29 09:04:48 +00:00
Alf Eaton
cce8d12bf7 Remove bootstrap-5-ide split test (#23059)
GitOrigin-RevId: a812f676b6dab1d3efec4ea8ff962e144baf4299
2025-01-29 09:04:45 +00:00
Alf Eaton
6ccf61e1f2 Disable spell check if WebAssembly is not available (#23136)
GitOrigin-RevId: c209540579e0d8ff7f62dc66ff5d850450b18600
2025-01-29 09:04:41 +00:00
Alf Eaton
4e736a9e96 Check that op ack message version matches the client ShareJS doc version (#23108)
GitOrigin-RevId: f262f63ed5012aabb1bffbf0fb44d677816443be
2025-01-29 09:04:37 +00:00
Alf Eaton
9e040d6946 Select matched text when a file is opened from a full project search result (#23139)
GitOrigin-RevId: bd3b66e89b70c4fa1d77e401d9e5fa755876ce9f
2025-01-29 09:04:33 +00:00
M Fahru
8ed4199245 Merge pull request #22615 from overleaf/mf-reconfirm-page-migrate-bs5
[web] Migrate reconfirm account page to bootstrap 5 and website-redesign styling

GitOrigin-RevId: b65f3ad69a5914ce42dc58c21436c8616393f724
2025-01-28 09:05:47 +00:00
M Fahru
1916a0bbf6 Merge pull request #22613 from overleaf/mf-migrate-primary-email-check-bs5
[web] Migrate "Primary email check" page to bootstrap 5 and website-redesign styling

GitOrigin-RevId: e233edafb8c5033c8fbd97088fa1ac840e2e572e
2025-01-28 09:05:43 +00:00
M Fahru
0558761482 Merge pull request #22610 from overleaf/mf-migrate-setpassword-page-bs5
[web] Migrate set password page to bootstrap 5 and website-redesign styling

GitOrigin-RevId: a9168b4171739cd49d0b76505800bcd171bd9572
2025-01-28 09:05:39 +00:00
M Fahru
7fbcca6ed1 Merge pull request #22609 from overleaf/mf-migrate-aux-password-pages-to-bs5
[web] Migrate reset password page to bootstrap 5 and website redesign

GitOrigin-RevId: 613865379d094b305c6dc78f74dc70341214f4ed
2025-01-28 09:05:35 +00:00
Jimmy Domagala-Tang
c6824f8649 Merge pull request #21838 from overleaf/jdt-ae-wf-codec-challenge
[Web] Enable PKCE flows for Oauth server

GitOrigin-RevId: e9a61596ed64e2be8b038b35eb8ea3e21b772e97
2025-01-28 09:05:31 +00:00
Jimmy Domagala-Tang
0baaed6cdf Merge pull request #22994 from overleaf/jdt-diasble-assist
Add a toggle to hide all AI features on a users account

GitOrigin-RevId: 978b02609c40f3975daa267aa6c10ac49e13d6f3
2025-01-28 09:05:27 +00:00
Jimmy Domagala-Tang
e228b77c14 Merge pull request #22840 from overleaf/revert-22795-jdt-offline-survey
Revert "feat: enable temporary survey hardcoded to only non ds-nav users"

GitOrigin-RevId: d48b629572e1b6b29121c3e1b54a70f3a8b4c884
2025-01-28 09:05:20 +00:00
Eric Mc Sween
db44d0b6ee Merge pull request #22915 from overleaf/em-blob-caching
Improved caching for blobs

GitOrigin-RevId: c5113106ef239b201ae8f66bb3539a52c65ddb60
2025-01-28 09:05:16 +00:00
Jakob Ackermann
45a5d090d9 [web] add external 15s heartbeat to socket.io connection (#22853)
* [web] add external 15s heartbeat to socket.io connection

* [web] extend debugging context for client errors

- include performance.now() timestamp for correlating other timings
- include connectionState, especially for new externalHeartbeat detail
- include spellCheckLanguage to check on client-side spelling impact

* [web] remove unnecessary hook dependency

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>

* Refactor externalHeartbeat

* Add connectionManager to context

* Clear the interval earlier, and on connect

* [web] refactor handling of socket debugging info

* [web] add split-test for external socket heartbeat

* [web] fully remove connectionManager from connection context

---------

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
GitOrigin-RevId: fbebe64f8aa207eb4fd4a8f27d522d1cac35f9d4
2025-01-28 09:05:12 +00:00
Andrew Rumble
342bbe5f0b Merge pull request #22943 from overleaf/ar-ss-migrate-sync-group-memberships-to-raw
[web] migrate sync group memberships to raw

GitOrigin-RevId: 8c2ea9fef84ec1abcc99deef841e085d62739050
2025-01-28 09:05:05 +00:00
Alf Eaton
b0a1a4e9d8 Remove equation preview beta badge (#23133)
GitOrigin-RevId: 1fb233dbceaf7f006f29b4f457084c802696e108
2025-01-28 09:04:58 +00:00
Alf Eaton
daaf134b07 Fix Vim search input color (#23094)
GitOrigin-RevId: bf0d5e3417f3ba9fe669c3baf4a34a54c4b61900
2025-01-28 09:04:54 +00:00
Alf Eaton
4351805f7c Remove CM6 performance measurement (#22663)
GitOrigin-RevId: 2178f2b66c200005517ed8ff52afadd8b5fda14b
2025-01-28 09:04:50 +00:00
Alf Eaton
47663fbe35 Improve full project search error handling (#23092)
GitOrigin-RevId: aded8cfbe1d4b24cb3128c8c377afe35f17cc8cf
2025-01-28 09:04:46 +00:00
David
f3077599bc Merge pull request #23082 from overleaf/dp-file-outline-typescript
Convert outline components to typescript

GitOrigin-RevId: 9fd057f70d9de7b9b209697a5d33ea72d5d64daa
2025-01-28 09:04:39 +00:00
David
8acbafcb05 Merge pull request #22979 from overleaf/dp-file-tree-in-editor
Add file tree to editor

GitOrigin-RevId: 493ecf88d632bed92c6b2b5ae2e5c0b7eef968cc
2025-01-28 09:04:35 +00:00
David
377f641dd4 Merge pull request #23035 from overleaf/dp-pdf-scroll-cmd
Only zoom pdf if CTRL/CMD is pressed before mousewheel event fires

GitOrigin-RevId: 772f2f699d57f0ebded2132efc1d6e62f1c5a5d5
2025-01-28 09:04:31 +00:00
Jakob Ackermann
54c70e9311 [web] create project-history indexes in Server Pro and CE (#23122)
GitOrigin-RevId: f361d3509037ea8b5e7af186895066a81f6b2922
2025-01-28 09:04:27 +00:00
DerEchteJoghurt
a20735426d docker-compose: Replace deprecated mongo with mongosh 2025-01-27 09:54:54 +00:00
CloudBuild
3f57c66510 auto update translation
GitOrigin-RevId: 2a7ec611581d1db6eba5dbd43646a24bddc049f3
2025-01-27 09:05:26 +00:00
Jakob Ackermann
ae171dbced [project-history] fix name for error in logging statement (#23110)
Only the err/error fields will use the Error serializer and emit all the
OError details into the log.

GitOrigin-RevId: 4b0e16c00be5ea7c0aea747f49b46897ebd100cc
2025-01-27 09:05:22 +00:00
M Fahru
dfbb4dde6c Merge pull request #23109 from overleaf/mf-switch-to-standard-text-change
[web] Change text from "Switch to standard" to "Switch to Standard plan"

GitOrigin-RevId: 1ad1df2a686a4c976ee5dcb16db1df860dd7f982
2025-01-27 09:05:18 +00:00
Mathias Jakobsen
9baddf78f6 Merge pull request #23101 from overleaf/mj-wc-unknown-groups
[web] Allow users to deselect unknown groups in Write and Cite

GitOrigin-RevId: 8bc814b70a206c4e66ccf04615705fff3ad2316b
2025-01-27 09:05:14 +00:00
Domagoj Kriskovic
09195a9b5d Allow reviewers to reopen comment threads (#23075)
GitOrigin-RevId: 065acf5931213c288dbdcb3bc06da988b094a1f4
2025-01-27 09:05:10 +00:00
Eric Mc Sween
3e4e9b298f Merge pull request #23089 from overleaf/em-fix-ranges-snapshot
Fix edge cases when restoring comments

GitOrigin-RevId: 6ce2426bfb7233a3c0915bcc8c53bf0588702847
2025-01-27 09:05:06 +00:00
Domagoj Kriskovic
7e5a0a9bea Delete unused canUserReviewProjectContent function (#23073)
GitOrigin-RevId: 5c2e17a44623916e494a24bf18dbff4e846734d3
2025-01-27 09:05:02 +00:00
Domagoj Kriskovic
6e314e07a1 Remove aria-hidden property from hidden textarea (#23077)
GitOrigin-RevId: d1f7389ae594b9cb686e96a7548fc2abe241eb95
2025-01-27 09:04:58 +00:00
Jakob Ackermann
762266cd87 [project-history] block filestore reads from old queue entries (#23096)
GitOrigin-RevId: 9952cb66e542b17a6a3b5e3b2609d53dc8c371fd
2025-01-27 09:04:54 +00:00
Jakob Ackermann
8d99ad3964 [web] do not send filestore URLs when feature is disabled (#23095)
* [web] do not return createdBlob=true from error path

Defense in-depth, currently the only call-site bails out on error.

* [web] do not send filestore URLs when feature is disabled

GitOrigin-RevId: 7e90cf4c4babffeec337702502234bac73c1f116
2025-01-27 09:04:50 +00:00
Jakob Ackermann
3b602ed93a [project-history] log previous error when retrying createBlob operation (#23103)
GitOrigin-RevId: ff59d15e93c406e17775e5e4acac1f13da9a7788
2025-01-27 09:04:46 +00:00
Jakob Ackermann
5c3353b3de Merge pull request #23099 from overleaf/jpa-fix-sessions-test
[web] add missing await in acceptance test

GitOrigin-RevId: d18d62c55609c46c5b8a583e572a415b55a81af7
2025-01-27 09:04:38 +00:00
Antoine Clausse
272108a213 Run bin/update_node 20.18.0 20.18.2 (#23074)
GitOrigin-RevId: 3f1ab14c4c36ea54408e0ce2c404a323bfe8d9a6
2025-01-24 09:06:05 +00:00
M Fahru
52498c26c8 Merge pull request #23064 from overleaf/mf-add-writeful-to-contact-form
[web] Add "Using Writefull" option to all contact forms

GitOrigin-RevId: 21b97d49b5657e21779c7854c490f68fbde18b82
2025-01-24 09:05:57 +00:00
M Fahru
7acd8ea64c Merge pull request #23030 from overleaf/mf-swap-trial-cta
[web] Swap "Try for free" and "Buy now" button for individual & student plans on plans page & interstitial payment page

GitOrigin-RevId: 4ee778dfa4c92da66d02da46a339d3d41c6e6bc5
2025-01-24 09:05:53 +00:00
M Fahru
7af423173c Merge pull request #22475 from overleaf/rh-student-hurdle
[web] Add friction to student plans

GitOrigin-RevId: 506f1e96a8430069ba5e9f7bfd6c709124e7857c
2025-01-24 09:05:48 +00:00
Jakob Ackermann
36c9772e0e [project-history] log context of failed history-v1 requests (#23078)
GitOrigin-RevId: a597efc46e00fc07cc6e5b71938c82f513c0b288
2025-01-24 09:05:44 +00:00
Domagoj Kriskovic
c300d0adb1 Show "Upgrade to track changes" modal for redesigned review panel (#23003)
GitOrigin-RevId: c4809784783af740d6b7d9fa24110e915c36d794
2025-01-24 09:05:40 +00:00
Domagoj Kriskovic
48d08f5b28 Allow reviewers to delete their own comment threads (#23044)
GitOrigin-RevId: 2165e0f549c9df923fb1c124a7622a49d579c2e3
2025-01-24 09:05:35 +00:00
Brian Gough
d6e89c7338 Merge pull request #23058 from overleaf/bg-export-backed-up-blobs
export backed up blobs to csv file

GitOrigin-RevId: 5a176055dc85c56ced64cbf13aa705b56071cdae
2025-01-24 09:05:31 +00:00
Kristina
0bbe4b2e5a [web] show monthly rates on group plans (#23019)
GitOrigin-RevId: e500869be9def2c150b4773f2f18883021ab356b
2025-01-24 09:05:26 +00:00
Mathias Jakobsen
77dd468c20 Merge pull request #23026 from overleaf/mj-wc-settings-second-try
[web] Move write and cite setting storage

GitOrigin-RevId: 88a234c15b4dd2a9b451170e3b474d88bb6d45f7
2025-01-24 09:05:22 +00:00
Kristina
0d42173034 [web] add annual-prices-monthly-rates experiment (#22956)
* [web] add annual-prices-monthly-rates experiment
* [web] add annualMonthly to plans.mjs and update settings.overrides.saas.js
* [web] display monthly rates on individual plans on desktop
* [web] display monthly rates on individual plans on mobile
* [web] add monthly rates split test to view event segmentation

GitOrigin-RevId: 4ddbdc2fc6a9ec5a868643d3fc0e3f78ef27772d
2025-01-24 09:05:17 +00:00
Jakob Ackermann
2640d4a566 [project-history] fixes for checking blob exists (#23051)
* [project-history] skip HEAD on blob without file-hash

* [project-history] only 404s indicate a missing blob

* [project-history] error checking for existing blob is fatal

* [project-history] always skip creating blob if already exists

Ignore createdBlob detail after performing check on blob. It might not
 exist on old operations that have been queued.

* [project-history] fix unit tests

* [project-history] migrate test to new fetch call

GitOrigin-RevId: 457963042e9d836647d3c122516329d4dc9b544f
2025-01-24 09:05:09 +00:00
Alf Eaton
f1e1d55d8c Merge pull request #22964 from overleaf/ae-project-search-flush
Ensure that open docs are flushed before running full project search

GitOrigin-RevId: 6707cf982018908a37957503add73a085c749f61
2025-01-24 09:05:05 +00:00
Alf Eaton
4898b15dea Add eslint-plugin-testing-library (#23017)
* Add eslint-plugin-testing-library

* Update .eslintrc.js

* Only import from @testing-library/react

* Fix issues

GitOrigin-RevId: c225f1f70020d4431866119423cd839ce1ee5ed2
2025-01-24 09:04:59 +00:00
Jessica Lawshe
e1a2bccf53 Merge pull request #22967 from overleaf/jel-user-settings-sso-institution
[web]  Fix SSO available check on user settings page

GitOrigin-RevId: e8322eb9d9cacad26054fc4a6186e41f66de7d22
2025-01-23 09:06:30 +00:00
Rebeka Dekany
207f9d1fc4 Merge pull request #22954 from overleaf/rd-admin-survey-bs5
Migrate the admin survey page to Bootstrap 5

GitOrigin-RevId: 220bcdca929d060e0ef5ae7a7d30fa0a1b7d3be1
2025-01-23 09:06:22 +00:00
Rebeka Dekany
2fe874e56d Merge pull request #22989 from overleaf/rd-split-test-list-migrate-bs5
Migrate the split test page to Bootstrap 5

GitOrigin-RevId: cac1cebc5ada032656f82428199fe60367b293f8
2025-01-23 09:06:17 +00:00
Andrew Rumble
47db5c1236 Merge pull request #23039 from overleaf/ar-bump-mongo-6.12
[many] Bump mongodb to 6.12.0 universally

GitOrigin-RevId: 6df934518e95217b6157ca5a41cf8acf4beb7689
2025-01-23 09:06:13 +00:00
roo hutton
ad096f82bf Merge pull request #21905 from overleaf/rh-pause-sub
Add support for pausing subscription

GitOrigin-RevId: f939ea4e7f3c2b1fa16dcb8aff1b2460d091d4e2
2025-01-23 09:06:04 +00:00
Domagoj Kriskovic
f79e2c8333 Expose fontSize to scopeSettings (for extensions) (#23033)
* Expose fontSize to scopeSettings (for extensions)

* Updated comment with fontSize property in IdeProvider context

GitOrigin-RevId: 3f622d75aa206f2760a3a9ce0db0f31a91e73089
2025-01-23 09:05:56 +00:00
Domagoj Kriskovic
6fa75eb905 Workaround for editor updating file when not focused in Safari (#23023)
GitOrigin-RevId: da9341b2cadf4b073eb4062619a9fa7bcba17c6b
2025-01-23 09:05:51 +00:00
Domagoj Kriskovic
8ae5e1dc5d Fix main height when system messages are shown (#22988)
GitOrigin-RevId: 0b5c6d22f61788475fc2c8595fd34e927a9f2303
2025-01-23 09:05:47 +00:00
Andrew Rumble
6cb1528495 Merge pull request #23020 from overleaf/ar-prevent-rootFolder-deletion
[web] Prevent deletes on a project's rootFolder

GitOrigin-RevId: 6d0506f207425f65d3de990a78bb1ea9b136ed1e
2025-01-23 09:05:42 +00:00
Alf Eaton
793d900ba5 Remove hover style from table header (#22121)
GitOrigin-RevId: 02253aeadcb3047ce5eef2241658cc670a0c6d53
2025-01-23 09:05:33 +00:00
Alf Eaton
25c401f2a7 Restore padding on search form inputs (#22132)
GitOrigin-RevId: da5826711072fc39ecc8f8db05881bb0dc0eea87
2025-01-23 09:05:29 +00:00
Alf Eaton
54a4f7a75b Upgrade @codemirror/autocomplete (#22921)
GitOrigin-RevId: e1b1205c1d577fcc338b429551038dba92ec23f4
2025-01-23 09:05:24 +00:00
Alf Eaton
50c6b8a831 Avoid mutating the previous state in a set function (#22935)
GitOrigin-RevId: b3613b8476bbb60a10ef6b293487b1017f56ea68
2025-01-23 09:05:19 +00:00
Alf Eaton
604471bfe9 Improve types for window.metaAttributesCache (#22983)
GitOrigin-RevId: cc962bf7eeaac525267ba04080889b0d58051914
2025-01-23 09:05:14 +00:00
Alf Eaton
53214d4222 Create shared PanelHeading and CollapsibleFileList components (#22995)
GitOrigin-RevId: ffe524cc0ddf6a1cf532a50f37900b1747b2afee
2025-01-23 09:05:09 +00:00
Alf Eaton
25027e0155 Use MEMFS in Hunspell worker (#22998)
GitOrigin-RevId: ef60b2c333484499e6289c51eacab04b983e1090
2025-01-23 09:05:04 +00:00
CloudBuild
958d889cbe auto update translation
GitOrigin-RevId: 9d4df12b84ae4e63c54b8039c8e35eab506d8fa5
2025-01-22 09:05:25 +00:00
Jakob Ackermann
9c377b74c1 [history-v1] add flag for back-filling hashes for projectIds from file (#23005)
* [history-v1] delay process exit to give logging time to flush

* [history-v1] add flag for back-filling hashes for projectIds from file

GitOrigin-RevId: 887a1e1c72d6f5a13bfc8d0e54023afbf5bc671c
2025-01-22 09:05:21 +00:00
Jakob Ackermann
6884338a34 [history-v1] fix remaining files with missing hashes (#22985)
GitOrigin-RevId: df382732954538f9db177180aee0a44c5d5679ca
2025-01-22 09:05:16 +00:00
Jakob Ackermann
04c1497673 [web] extend scripts for finding and fixing broken file-trees (#22984)
- Validate _id fields to be ObjectIds
- Include more debug output, notably include the folder/doc/file id
- Emit and consume JSON output
- Read broken file-tree details from (ad-hoc) file
- Use generator instead of accumulating all results per project first
- Use batchedUpdate to be able to pause and resume processing

GitOrigin-RevId: 606ac431fff65891e09479c0ba9bcb7e7dc5cbe4
2025-01-22 09:05:12 +00:00
David
037cc3b7a4 Merge pull request #22930 from overleaf/dp-filetree
Convert filetree components to typescript

GitOrigin-RevId: f06abb9705013d3da1a87c8f4bef4a82c4fab5d2
2025-01-22 09:05:01 +00:00
David
2365d8c199 Merge pull request #22836 from overleaf/dp-filetree-typescript
Convert file-tree util files to typescript

GitOrigin-RevId: bdf8d0655a543a216f028bc8477c3ee47aba5566
2025-01-22 09:04:56 +00:00
Rebeka Dekany
84deec4e5a Merge pull request #22993 from overleaf/rd-searchbar-button-fix-migration
[web] Fix close button alignment of search bar

GitOrigin-RevId: ef6761f6f068090d8cbf7e8922b257bd499ee5c3
2025-01-21 09:06:15 +00:00
Rebeka Dekany
6c69266c0a Merge pull request #22934 from overleaf/rd-admin-split-test-edit-id
Migrate the split test edit admin page to Bootstrap 5

GitOrigin-RevId: 34c690e00f74a68fb4018f7546d77aefd3e84a51
2025-01-21 09:06:10 +00:00
Rebeka Dekany
2d12ef6b78 Merge pull request #22863 from overleaf/rd-migrate-admin-user-bs5
Migrate the admin users page to Bootstrap 5

GitOrigin-RevId: 34165b5d0f91c45e24a7fc94086871a0f22e50f9
2025-01-21 09:06:06 +00:00
Domagoj Kriskovic
1072f836ae Hide reply input if no comment permissions (#22955)
GitOrigin-RevId: eeb323e8d7426388f4291906299397f58095b46a
2025-01-21 09:05:58 +00:00
Domagoj Kriskovic
741b65d0eb Add ensureUserCanSendComment authorization middleware (#22959)
* Add ensureUserCanSendComment authorization middleware

* added tests

GitOrigin-RevId: d1f58bd6bc63275456e5280ccb8c99aaa02c4e5f
2025-01-21 09:05:53 +00:00
Domagoj Kriskovic
e5a4a8606f Prevent scrolling when reply input is focused (#22968)
* Prevent scrolling when reply textarea is focused

* remove focusIsOnTextarea check as it is handled above

* remove unnecessery setSelected

GitOrigin-RevId: 5ce3fc6691a19fe2566875785607bb4faa3e9f52
2025-01-21 09:05:49 +00:00
Eric Mc Sween
71c2dc7d2d Merge pull request #22970 from overleaf/em-log-user-id
Add userId to request logs when user is logged in

GitOrigin-RevId: c7c907375af20c83f2ac762aa634b8d8cd1d9404
2025-01-21 09:05:44 +00:00
Eric Mc Sween
6ee70550c4 Merge pull request #22960 from overleaf/em-promisify-filestore-controller
Promisify FileStoreController

GitOrigin-RevId: b5f5861a7601a1bf4af3024394f910a0f5a14206
2025-01-21 09:05:40 +00:00
Eric Mc Sween
3d0a9017a4 Merge pull request #22973 from overleaf/em-fix-project-snapshot-concurrency
Fix concurrency in project snapshot

GitOrigin-RevId: 83710b84e5ff5c10d55b1a915a310db1ca431973
2025-01-21 09:05:35 +00:00
Mathias Jakobsen
6fba73c66a Merge pull request #22987 from overleaf/revert-22866-mj-typing-delay
Revert "[web] Remove activateOnTypingDelay from CM6 autocomplete"

GitOrigin-RevId: 1b598c8790bec1076db4d5a9feb551585565af05
2025-01-21 09:05:27 +00:00
Mathias Jakobsen
d34d15242e Merge pull request #22855 from overleaf/mj-ide-settings
[web] Add settings modal skeleton to editor redesign

GitOrigin-RevId: bc2e7f07f7ab737a67965fa615a04c8ee88b1271
2025-01-21 09:05:23 +00:00
Mathias Jakobsen
144334ec58 Merge pull request #22866 from overleaf/mj-typing-delay
[web] Remove activateOnTypingDelay from CM6 autocomplete

GitOrigin-RevId: 79c39932fce818f13bada824ceaecedd15d36b21
2025-01-21 09:05:18 +00:00
Mathias Jakobsen
5b7ca476a7 Merge pull request #22940 from overleaf/mj-font-script
[web] Add script for updating unfilled font

GitOrigin-RevId: c25a470e5263f62a9d445b10e66fa222b9fa8fa5
2025-01-21 09:05:14 +00:00
Jakob Ackermann
01ab32c029 [web] bump copyright year for Server Pro/CE to 2025 (#22950)
GitOrigin-RevId: 7747e64e787e22beb5caf6e47255ab6eeeb74d23
2025-01-21 09:05:06 +00:00
Antoine Clausse
d4a10c7b41 [web] Socket diagnostics updates (#22951)
* Increase threshold for "latency in red color"

* Fix online status in Chrome and Safari

* Add "Auto ping" checkbox

* Put `/socket-diagnostics` behind `AuthenticationController.requireLogin`

* Set logs to `logger.info` when debugging

* Add `publicId` and `clientId` to logs

* Fix disconnect logs when debugging

* Refresh UI every second. Display red "Ping Count" if unanswered for 3s

* Update services/web/frontend/js/features/socket-diagnostics/components/socket-diagnostics.tsx

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Update services/web/frontend/js/features/socket-diagnostics/components/socket-diagnostics.tsx

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* `npm run format:fix`

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 9faf2abdac51fa4b87c67d8fe89c4125d01d826f
2025-01-21 09:05:01 +00:00
Antoine Clausse
c8be2e25cf [web] Promisify ensureAffiliationMiddleware and refactor InstitutionHubsController (#22242 feedback) (#22261)
* Promisify `ensureAffiliationMiddleware`

* In `ensureAffiliationMiddleware`, throw when UserNotFoundError

* Unnest object `_InstitutionHubsController`

* Format fix

GitOrigin-RevId: 5b3c6c24724520353540b8d8dd05005b6fa749ff
2025-01-21 09:04:57 +00:00
Andrew Rumble
de7cd8900a Merge pull request #22948 from overleaf/ar-ac-mongoose-8.9.5
Upgrade mongoose to 8.9.5

GitOrigin-RevId: 0b58af36e3732c18f58fde7f3e8d33234d4b4629
2025-01-21 09:04:51 +00:00
CloudBuild
9332b42edd auto update translation
GitOrigin-RevId: 449c0fd0236464e412723bacc9bfeba2522a4a73
2025-01-20 09:05:30 +00:00
Jessica Lawshe
b735cac588 Merge pull request #22912 from overleaf/jel-cms-tabs-bs5
[web] Update admin panel to use `.ol-tabs` style

GitOrigin-RevId: c9e808c5534e5f033a8e829b35b0c6bd865cb596
2025-01-20 09:05:22 +00:00
Jakob Ackermann
ab4d1e0986 Merge pull request #22870 from overleaf/jpa-back-fill-fix-up
[history-v1] add script for fixing up back-fill errors

GitOrigin-RevId: 118992a32c1f6da4289cd35399ddd07a741da4ee
2025-01-20 09:05:14 +00:00
Alf Eaton
413c108c28 Improve project search UI (#22909)
GitOrigin-RevId: 83bc59269250afef3d25434b14151dbde5be5e5c
2025-01-20 09:05:06 +00:00
Alf Eaton
17ae05a055 Add cause to "spell check loading failed" error (#22923)
GitOrigin-RevId: 37772c842bb9d92200c08fa7ce89ec0b85fe1b94
2025-01-20 09:05:02 +00:00
Alf Eaton
ce1d63d92c Create a shared module for CSS styles from user settings (#22925)
GitOrigin-RevId: 1e62258e1e38d8ab2ce8debc51c53a98f4e915f6
2025-01-20 09:04:57 +00:00
Alf Eaton
fdf7a34f8f Avoid shifting the layout of the project dashboard when items are selected (#22937)
GitOrigin-RevId: 98f153efddfcc3c11712010e607cc1a308e74279
2025-01-20 09:04:53 +00:00
Jakob Ackermann
f03d346a32 Merge pull request #22882 from overleaf/jpa-file-tree-script
[web] scripts/find_malformed_filetrees: flag missing file hash and folder arrays

GitOrigin-RevId: 8561a59856486bd6903f84a99434d0bd81acb175
2025-01-20 09:04:45 +00:00
Domagoj Kriskovic
58c9f6e76e Hide resolve/edit/delete comment options for users without permissions (#22891)
GitOrigin-RevId: b3d2c1ba03ee836596abfc3da1260dec5a0a7714
2025-01-20 09:04:40 +00:00
Antoine Clausse
7bef003c56 [real-time, web] Create a UI to test socket connection (#22907)
* Create a UI to test socket connection

* Add Clock Delta to the measurements

* Add colors to DiagnosticItem

* Update icon

* Add more info to the diagnostics screen

* Add logs in backend on debug messages, disconnections and connection

* Add last received ping info

* Reorder DiagnosticItems

* Remove "warning" text color (too light)

* Replace Phosphor icons by Material Icons

GitOrigin-RevId: 6a015b4928cd19849ff287cf254f671840ed44af
2025-01-17 09:05:49 +00:00
Antoine Clausse
f9cc0c3bf4 [web] Scope ds-nav split test to project list (#22689)
* Add `dsNavStyle` prop, so `sidebar-navigation-ui-update` doesn't change all pages

* Use `useIsDsNav` instead of `useSplitTestContext`

* Create a `useDsNavStyle` hook

* Use `useDsNavStyle`

* Add comment on `useIsDsNav` and `NavStyleContext`

* Revert "Hide nav dropdown chevron icon in welcome page"

This reverts commit 78b5ba85

* Move `DsNavStyleProvider` usage to project-list-ds-nav.tsx

* Fix typo

* Simplify `useDsNavStyle` conditions

GitOrigin-RevId: df3fe66d772919c40df69d357bee6949ab413928
2025-01-17 09:05:41 +00:00
Antoine Clausse
b9fb636f0b [web] Remove promises exports from Controller modules (#22242)
* Remove promises object from CollaboratorsInviteController.mjs

* Define functions at root

* Remove mentions of undefined `revokeInviteForUser`

* Remove unused `doLogout`

* Remove promises object from UserController.js

* Remove unused `makeChangePreview`

* Remove promises object from SubscriptionController.js (`getRecommendedCurrency` and `getLatamCountryBannerDetails`)

* Remove promises object from CollabratecController.mjs

* Remove promises object from SSOController.mjs

* Remove promises object from ReferencesApiController.mjs

* Remove promises object from MetricsEmailController.mjs

* Remove promises object from InstitutionHubsController.mjs

* Remove promises object from DocumentUpdaterController.mjs

* Remove promises object from SubscriptionAdminController.mjs

* Fixup unit tests

* Add expects that controllers don't error

* Promisify `ensureAffiliationMiddleware`

GitOrigin-RevId: 311c8afa7d5c8e4f051408d305b6b4147a020edc
2025-01-17 09:05:36 +00:00
CloudBuild
ae34c4b8cc auto update translation
GitOrigin-RevId: fc3c6ea47100bc446d4a6290c2ba530083d9b717
2025-01-17 09:05:32 +00:00
Jessica Lawshe
feacd61408 Merge pull request #22684 from overleaf/jel-gallery-test-end
[web] Tear down gallery redesign test

GitOrigin-RevId: 907585c7d0e27c0c511e9d5f95096d82225f9aba
2025-01-17 09:05:24 +00:00
Eric Mc Sween
ab9d4d4c9c Merge pull request #22845 from overleaf/em-project-snapshot-queue-refreshes
Concurrency control in ProjectSnapshot

GitOrigin-RevId: b62b886b59a67f2c694ef7cefcff5c32da3e4457
2025-01-17 09:05:09 +00:00
Eric Mc Sween
84bd994345 Merge pull request #22892 from overleaf/em-filter-tracked-deletes
Filter tracked deletes on project snapshot

GitOrigin-RevId: 5146e00b67af8dc15bf17f587cb6173a0a21544d
2025-01-17 09:05:05 +00:00
Eric Mc Sween
30e5c95a27 Merge pull request #22871 from overleaf/em-history-flush-metrics
History flush metrics

GitOrigin-RevId: eb8b357427942e9816ad92ccd46c0dd8a65ab939
2025-01-17 09:05:00 +00:00
David
c919960d2b Merge pull request #22902 from overleaf/dp-remove-presentation-mode-flag
Remove pdf-presentation-mode feature flag

GitOrigin-RevId: 14e64115c539fe2721150ed6f09dfcc4ce9cbaaa
2025-01-17 09:04:49 +00:00
Mathias Jakobsen
849275c4b8 Merge pull request #22787 from overleaf/mj-ide-rail
[web] Create rail tabbed layout

GitOrigin-RevId: be54a224087aad8e6e2762d9c26463e37aecd9aa
2025-01-17 09:04:45 +00:00
Mathias Jakobsen
539e96c62b Merge pull request #22802 from overleaf/mj-outline-icons
[web] Add some unfilled material symbols

GitOrigin-RevId: 2b5c477e6ff32f62ab40cacf666aeb98b311f126
2025-01-17 09:04:40 +00:00
M Fahru
03bb4c57f9 Merge pull request #22742 from overleaf/mf-remove-frontend-plans-page-dead-code
[web] Remove frontend plans page dead code

GitOrigin-RevId: 6db07b909f99a7afd17880698787a2c3527e879f
2025-01-16 09:06:55 +00:00
M Fahru
545f990837 Merge pull request #22744 from overleaf/mf-update-blog-tagged-text
[web] On tagged blog pages, update "Posts tagged X" text color to neutral-70

GitOrigin-RevId: ad8e14ac275761f441e0db9760ba9c91de9019cd
2025-01-16 09:06:50 +00:00
M Fahru
685db9935a Merge pull request #22636 from overleaf/mf-remove-list-group-item-variant
[web] Remove `list-group-item-variant` mixin since it's no longer used

GitOrigin-RevId: f7d01acf1537d40060598d9ed68e602c1fc12609
2025-01-16 09:06:45 +00:00
M Fahru
da6f332269 Merge pull request #22821 from overleaf/kh-cop-on-upgrade-modal
[web] limit COP group plans to 20 seats in upgrade modal

GitOrigin-RevId: b1d2713b978d0269892d8f547eeccc5ab702ea77
2025-01-16 09:06:37 +00:00
Jessica Lawshe
76c0e6f84d Merge pull request #22824 from overleaf/jel-saml-tests
[web] SAML test helper update

GitOrigin-RevId: 6a721901b0026286e0ef28ed9168c8b97cd4a200
2025-01-16 09:06:33 +00:00
Jessica Lawshe
5c188939d6 Merge pull request #22740 from overleaf/jel-mono-text
[web] Eyebrow text margin

GitOrigin-RevId: cdf1eadf8ad1da4d81724e8aeb9994cc931388ce
2025-01-16 09:06:28 +00:00
Rebeka Dekany
bdd91358ef Merge pull request #22817 from overleaf/rd-migrate-admin-split-test-create-bs5
Migrate the split test create admin page to Bootstrap 5

GitOrigin-RevId: 897f634b00136605ce3faf0e2489902d41f51566
2025-01-16 09:06:16 +00:00
Rebeka Dekany
971a5d9de4 Merge pull request #22717 from overleaf/rd-migrate-admin-bootstrap5
[web] Migrate the admin page to Bootstrap 5

GitOrigin-RevId: 8d283f7ce4a7d73f033a69a4c075311ff756f06a
2025-01-16 09:06:12 +00:00
Rebeka Dekany
4fae817573 Merge pull request #22761 from overleaf/rd-migrate-admin-project-bs5
Migrate admin project URL lookup page to Bootstrap 5

GitOrigin-RevId: d8c58bbeb924da4e94a361ab59a66c2c6048dbfd
2025-01-16 09:06:07 +00:00
Jakob Ackermann
98e0ed6a06 Merge pull request #22894 from overleaf/jpa-large-chunk
[history-v1] add test case for large text file

GitOrigin-RevId: 5d7cc37d74c67e1927785ea9c544d897491e6abd
2025-01-16 09:06:02 +00:00
Miguel Serrano
68dcacea93 Merge pull request #22890 from overleaf/msm-fix-migrations
Fix module import in migrations

GitOrigin-RevId: 462eb54c68942118f3f76b166c3f27d923227e6c
2025-01-16 09:05:58 +00:00
Eric Mc Sween
9f1b6d480b Merge pull request #22869 from overleaf/em-remove-sanity-check
Remove RangesManager sanity check

GitOrigin-RevId: 376c2a197aa68cbde9259ec8c2cea1e9d43c8f69
2025-01-16 09:05:53 +00:00
Alf Eaton
f069adaf15 Add full project search UI (#22671)
GitOrigin-RevId: f40c85f40f4c16b4b3c26a197924cd9ac9b3db1f
2025-01-16 09:05:45 +00:00
Miguel Serrano
0d3be44f6a [web] Remove partial from oauthAccessTokens.user_id index (#22886)
* [web] Remove partial from `oauthAccessTokens.user_id` index

GitOrigin-RevId: 22b2bc136bef2c45b4bdf1e6a5d6a20eeefea3f7
2025-01-16 09:05:40 +00:00
Alf Eaton
2fbb4615f9 Convert utility functions to TypeScript (#22658)
* Convert event-tracking to TypeScript

* Convert local-storage to TypeScript

* Convert mapSeries to TypeScript

* Convert SessionStorage to TypeScript

* Convert account-upgrade to TypeScript

* Convert isValidTeXFile to TypeScript

* Convert date functions to TypeScript

* Convert EventEmitter to TypeScript

* Convert isNetworkError to TypeScript

* Convert webpack-public-path to TypeScript

* Convert displayNameForUser to TypeScript

GitOrigin-RevId: 79c5a2d1101fcd520f3116f0f4af29d974189d94
2025-01-16 09:05:36 +00:00
Alf Eaton
386d6f8ffd Wrap range building in setTimeout (#22796)
GitOrigin-RevId: a0841e6eb9f2f637653dd0b8a37a61136097cc4f
2025-01-16 09:05:31 +00:00
Alf Eaton
f2f1178bcd Refactor isMac to a utility module (#22829)
GitOrigin-RevId: c6ab1dbeb1c56c35af121e7f657325a89fc847ea
2025-01-16 09:05:26 +00:00
Kristina
7994390967 [web] tear down group-pricing-2025 split test on non-plans pages (#22785)
* [web] rm split test from the change to group modal
* [web] rm split test from cancel flow
* [web] rm split test from checkout flow
* [web] rm unused translations

GitOrigin-RevId: 0188f2631ed18e79fdf55dabedac7cdea4f213d3
2025-01-16 09:05:22 +00:00
Kristina
23c455d7b9 [web] tear down group-pricing-2025 split test on plans page (#22786)
* [web] rm split test from new plans page
* [web] rm showDiscountPercentage from group_member_picker (always false)
* [web] rm now unused classes on edu discount checkbox
* [web] rm split test from FAQ
* [web] rm unused translation

GitOrigin-RevId: 262d97f317d8aaef6e5a07a8ecd4edc67557408b
2025-01-16 09:05:17 +00:00
Domagoj Kriskovic
36f2e52167 Add comment option in editor toolbar (#22849)
* Add comment option in editor toolbar

* move addComment to commands

GitOrigin-RevId: 690b70f67abe5653f28ec9ec61deb3f201a78131
2025-01-16 09:05:12 +00:00
Domagoj Kriskovic
3d543b20b5 [web] Show most recently resolved comments at the top (#22835)
GitOrigin-RevId: cb42a0fe3d6bf5d23d329b6ef9732f7cb9612907
2025-01-16 09:05:07 +00:00
CloudBuild
22d007e8f4 auto update translation
GitOrigin-RevId: 087736340479ca8ef4b974e9b652e9e49011c764
2025-01-15 09:05:10 +00:00
M Fahru
292308d546 Merge pull request #22540 from overleaf/mf-remove-plans-page-default-variant-code
[web] Remove dead backend (include pug template) code after `website-redesign-plans` test has been concluded and `new-design` variant is fully activated

GitOrigin-RevId: 143129da71d43b88535f971b13e9e72c98bad798
2025-01-15 09:05:06 +00:00
M Fahru
4150baefcb Merge pull request #22539 from overleaf/mf-move-plansbanners-helper-to-module
[web] Move "plansBanners" function (along with its tests) to subscription module

GitOrigin-RevId: a231ecd862e7f052ca2597eb07d6612b23f2c7d3
2025-01-15 09:05:01 +00:00
M Fahru
ef5a52b29d Merge pull request #22493 from overleaf/mf-remove-website-redesign-plans-test-config
[web] Remove `website-redesign-plans` test config from acceptance test and redirection tests from unit tests

GitOrigin-RevId: f1b30231be06748726ec2921fe23deadf2a701b6
2025-01-15 09:04:57 +00:00
Eric Mc Sween
c9591e250a Merge pull request #22822 from overleaf/em-ai-manually-collected
Hide Error Assist from manually collected group admins

GitOrigin-RevId: fd4d851d1d427b1978649129674d74cb375bc3f5
2025-01-15 09:04:49 +00:00
Eric Mc Sween
a69036e005 Merge pull request #22825 from overleaf/em-move-project-snapshot
Move full project on client code to the main web tree

GitOrigin-RevId: a2afd0d7fceaef213841e662df0b20587e9fef69
2025-01-15 09:04:45 +00:00
M Fahru
2ef5db2938 Merge pull request #22340 from overleaf/mf-clean-up-currency-format-test
[web] Clean up localized currency format test (`local-ccy-format-v2`)

GitOrigin-RevId: 30d671479522b87ee9205994508b745d2b0ae4c3
2025-01-14 09:05:49 +00:00
David
bf789a2635 Merge pull request #22799 from overleaf/dp-new-pdf-toolbar
Add toolbar styles and update pdf toolbar to match new editor designs

GitOrigin-RevId: 4d5d9c6fa3353c10dd135aa35440c8512a5d3226
2025-01-14 09:05:45 +00:00
Jimmy Domagala-Tang
1b5fb1ef9e Merge pull request #22702 from overleaf/jdt-assistant-button-shrinking
Refactor AI error assistant ctas to reduce visual space

GitOrigin-RevId: 33f85849d250368e7ff53242b1d155573b0a1a43
2025-01-14 09:05:41 +00:00
Eric Mc Sween
e9c1c0f9c8 Merge pull request #22650 from overleaf/em-tracked-deletes-at-same-position
Handle multiple tracked deletes at same position

GitOrigin-RevId: 3cbf1c418bcd50cf08e1b90ce6ba3bc480236079
2025-01-14 09:05:34 +00:00
Domagoj Kriskovic
39d1ba7fe0 Allow rejecting reviewers own track changes (#22793)
* Allow rejecting reviewers own track changes

* reject option only for change authors

GitOrigin-RevId: ecbc5ee9dfe6c468a5df3c1ce7b147561802a8c0
2025-01-14 09:05:25 +00:00
David
c0ccb57100 Merge pull request #22756 from overleaf/dp-preload-pdf-presentation
Load full pdf document in background when entering presentation mode

GitOrigin-RevId: 514ef838b155a7f13f3bc12690aef45fd3f2c3fc
2025-01-14 09:05:20 +00:00
Domagoj Kriskovic
1f23b78de2 Fixed equation preview overflow (#22769)
* Fixed equation preview overflow

* Decrease max-height to 200px

GitOrigin-RevId: 4a733d25e86b0d4adfb2dc697bc251ad244949b4
2025-01-14 09:05:15 +00:00
Domagoj Kriskovic
30ebad91b7 Allow reviewers to resolve their own comments (#22582)
* Allow reviewers to resolve their own comments

* check if reviewer is comment author

* add missing translation

* add CommentsController tests

* added DocumentManagerTests

* added HttpControllerTests

* Add AuthorizationManagerTests

* added AuthorizationMiddlewareTests

* added DocumentUpdaterHandler test

* fix test descriptions

* remove returns from CommentsControllerTests

* use ensureUserCanResolveThread in authorizationMiddleware

* move canResolveThread to AuthorizationManager

* commentId as param in NotFoundError

* refactor canUserResolveThread

GitOrigin-RevId: 131c3d1eb9ac916eaaa9221d351a92bc07b80cdc
2025-01-14 09:05:11 +00:00
Alf Eaton
19ee929d65 Allow currentUserId to be null when calculating user colour (#22830)
GitOrigin-RevId: 70ef0c5a7319fa952690b5e23fae7aef9703eed9
2025-01-14 09:05:07 +00:00
Alf Eaton
cffa9c1a28 Improve spell check when dictionary is edited (#22635)
GitOrigin-RevId: 20d36cb987d014809423240a46c7c577781dfde6
2025-01-14 09:05:03 +00:00
Alf Eaton
47af13c8a8 Delete unused iconTypeFromName file (#22662)
GitOrigin-RevId: 3c768cacebcf229d932a7b03a4068291e3cf60b1
2025-01-14 09:04:58 +00:00
Alf Eaton
f79aac8d01 Convert endpoints to TypeScript (#22664)
GitOrigin-RevId: 159f0f38333ad2944c3f25c5076432e5f5dc7ba3
2025-01-14 09:04:54 +00:00
Alf Eaton
a8a61db23e Convert shared utils modules to TypeScript (#22665)
GitOrigin-RevId: de40a0aaba35336ec59499a047356b0b9d161b38
2025-01-14 09:04:50 +00:00
Alf Eaton
003fa536df Convert Chat components to TypeScript (#22672)
GitOrigin-RevId: b47a7fc3f77055335990ee0215bd32ae65b1ebfe
2025-01-14 09:04:45 +00:00
Alf Eaton
db78629e5c Remove deprecated apple-mobile-web-app-* meta tags (#22734)
GitOrigin-RevId: b146d74e94a215a222d403bd852e9b21b74614b1
2025-01-14 09:04:41 +00:00
Jakob Ackermann
62119de408 Merge pull request #22815 from overleaf/jpa-docker-compose-update
[server-ce] upgrade mongo and cleanup temporary env var

GitOrigin-RevId: 94be18c7d3074b5f707ad696384a583224b2f8a4
2025-01-13 09:05:11 +00:00
Tim Down
8f29870334 Merge pull request #22818 from overleaf/td-storybook-overall-editor-theme
Make theme switcher work in BS5 editor Storybook stories

GitOrigin-RevId: ff9a9a14c2e9bdaccefab2652fbfbd54c544635e
2025-01-13 09:05:07 +00:00
Jakob Ackermann
a343c010c1 Merge pull request #22800 from overleaf/jpa-fix-ce
[server-ce] fix mongo replica setup in public monorepo

GitOrigin-RevId: 98e0d3337c34b389b499520e85c1b72e0e91e07a
2025-01-13 09:05:03 +00:00
Alexandre Bourdin
356212ecde Merge pull request #22252 from overleaf/ab-gradual-rollout-continuity
[web] Ensure continuity for gradual rollouts

GitOrigin-RevId: c5bada71ae476862c782dc669024944f12d77097
2025-01-13 09:04:59 +00:00
Mathias Jakobsen
182e9deada Merge pull request #22768 from overleaf/mj-ide-source-editor
[web] Add editor to editor redesign

GitOrigin-RevId: cdda3d5391866b882d6696ba833316aa91cf2856
2025-01-13 09:04:55 +00:00
Andrew Rumble
dc157392ae Merge pull request #22765 from overleaf/ar-convert-final-acceptance-tests-to-es-modules
[web] convert final acceptance tests to es modules

GitOrigin-RevId: d0d0cd3dfedbe494ce51dd6f8c180dff02429ad8
2025-01-13 09:04:50 +00:00
3101 changed files with 154679 additions and 129893 deletions

View file

@ -1,10 +1,19 @@
---
name: Bug report
about: Report a bug
title: ''
labels: type:bug
assignees: ''
---
<!--
Note: If you are using www.overleaf.com and have a problem,
Note: If you are using www.overleaf.com and have a problem,
or if you would like to request a new feature please contact
the support team at support@overleaf.com
This form should only be used to report bugs in the
This form should only be used to report bugs in the
Community Edition release of Overleaf.
-->

View file

@ -14,39 +14,52 @@
<a href="#license">License</a>
</p>
<img src="doc/screenshot.png" alt="A screenshot of a project being edited in Overleaf Community Edition">
<img src="doc/screenshot.png" alt="A screenshot of a project being edited in Overleaf Extended Community Edition">
<p align="center">
Figure 1: A screenshot of a project being edited in Overleaf Community Edition.
Figure 1: A screenshot of a project being edited in Overleaf Extended Community Edition.
</p>
## Community Edition
[Overleaf](https://www.overleaf.com) is an open-source online real-time collaborative LaTeX editor. We run a hosted version at [www.overleaf.com](https://www.overleaf.com), but you can also run your own local version, and contribute to the development of Overleaf.
[Overleaf](https://www.overleaf.com) is an open-source online real-time collaborative LaTeX editor. Overleaf runs a hosted version at [www.overleaf.com](https://www.overleaf.com), but you can also run your own local version, and contribute to the development of Overleaf.
## Extended Community Edition
The present "extended" version of Overleaf CE includes:
- Template Gallery
- Sandboxed Compiles with TeX Live image selection
- LDAP authentication
- SAML authentication
- OpenID Connect authentication
- Real-time track changes and comments
- Autocomplete of reference keys
- Symbol Palette
- "From External URL" feature
> [!CAUTION]
> Overleaf Community Edition is intended for use in environments where **all** users are trusted. Community Edition is **not** appropriate for scenarios where isolation of users is required due to Sandbox Compiles not being available. When not using Sandboxed Compiles, users have full read and write access to the `sharelatex` container resources (filesystem, network, environment variables) when running LaTeX compiles.
Therefore, in any environment where not all users can be fully trusted, it is strongly recommended to enable the Sandboxed Compiles feature available in the Extended Community Edition.
For more information on Sandbox Compiles check out Overleaf [documentation](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/server-pro-only-configuration/sandboxed-compiles).
## Enterprise
If you want help installing and maintaining Overleaf in your lab or workplace, we offer an officially supported version called [Overleaf Server Pro](https://www.overleaf.com/for/enterprises). It also includes more features for security (SSO with LDAP or SAML), administration and collaboration (e.g. tracked changes). [Find out more!](https://www.overleaf.com/for/enterprises)
## Keeping up to date
Sign up to the [mailing list](https://mailchi.mp/overleaf.com/community-edition-and-server-pro) to get updates on Overleaf releases and development.
If you want help installing and maintaining Overleaf in your lab or workplace, Overleaf offers an officially supported version called [Overleaf Server Pro](https://www.overleaf.com/for/enterprises).
## Installation
We have detailed installation instructions in the [Overleaf Toolkit](https://github.com/overleaf/toolkit/).
## Upgrading
If you are upgrading from a previous version of Overleaf, please see the [Release Notes section on the Wiki](https://github.com/overleaf/overleaf/wiki#release-notes) for all of the versions between your current version and the version you are upgrading to.
Detailed installation instructions can be found in the [Overleaf Toolkit](https://github.com/overleaf/toolkit/).
Configuration details and release history for the Extended Community Edition can be found on the [Extended CE Wiki Page](https://github.com/yu-i-i/overleaf-cep/wiki).
## Overleaf Docker Image
This repo contains two dockerfiles, [`Dockerfile-base`](server-ce/Dockerfile-base), which builds the
`sharelatex/sharelatex-base` image, and [`Dockerfile`](server-ce/Dockerfile) which builds the
`sharelatex/sharelatex` (or "community") image.
`sharelatex/sharelatex-base:ext-ce` image, and [`Dockerfile`](server-ce/Dockerfile) which builds the
`sharelatex/sharelatex:ext-ce` image.
The Base image generally contains the basic dependencies like `wget`, plus `texlive`.
We split this out because it's a pretty heavy set of
This is split out because it's a pretty heavy set of
dependencies, and it's nice to not have to rebuild all of that every time.
The `sharelatex/sharelatex` image extends the base image and adds the actual Overleaf code
@ -54,23 +67,19 @@ and services.
Use `make build-base` and `make build-community` from `server-ce/` to build these images.
We use the [Phusion base-image](https://github.com/phusion/baseimage-docker)
(which is extended by our `base` image) to provide us with a VM-like container
The [Phusion base-image](https://github.com/phusion/baseimage-docker)
(which is extended by the `base` image) provides a VM-like container
in which to run the Overleaf services. Baseimage uses the `runit` service
manager to manage services, and we add our init-scripts from the `server-ce/runit`
folder.
## Contributing
Please see the [CONTRIBUTING](CONTRIBUTING.md) file for information on contributing to the development of Overleaf.
manager to manage services, and init scripts from the `server-ce/runit`
folder are added.
## Authors
[The Overleaf Team](https://www.overleaf.com/about)
[The Overleaf Team](https://www.overleaf.com/about)
[yu-i-i](https://github.com/yu-i-i/overleaf-cep) — Extensions for CE unless otherwise noted
## License
The code in this repository is released under the GNU AFFERO GENERAL PUBLIC LICENSE, version 3. A copy can be found in the [`LICENSE`](LICENSE) file.
Copyright (c) Overleaf, 2014-2024.
Copyright (c) Overleaf, 2014-2025.

View file

@ -11,12 +11,6 @@ bin/build
> [!NOTE]
> If Docker is running out of RAM while building the services in parallel, create a `.env` file in this directory containing `COMPOSE_PARALLEL_LIMIT=1`.
Next, initialize the database:
```shell
bin/init
```
Then start the services:
```shell
@ -48,7 +42,7 @@ To do this, use the included `bin/dev` script:
bin/dev
```
This will start all services using `nodemon`, which will automatically monitor the code and restart the services as necessary.
This will start all services using `node --watch`, which will automatically monitor the code and restart the services as necessary.
To improve performance, you can start only a subset of the services in development mode by providing a space-separated list to the `bin/dev` script:
@ -83,6 +77,7 @@ each service:
| `filestore` | 9235 |
| `notifications` | 9236 |
| `real-time` | 9237 |
| `references` | 9238 |
| `history-v1` | 9239 |
| `project-history` | 9240 |

View file

@ -1,6 +0,0 @@
#!/usr/bin/env bash
docker compose up --detach mongo
curl --max-time 10 --retry 5 --retry-delay 5 --retry-all-errors --silent --output /dev/null localhost:27017
docker compose exec mongo mongosh --eval "rs.initiate({ _id: 'overleaf', members: [{ _id: 0, host: 'mongo:27017' }] })"
docker compose down mongo

View file

@ -6,14 +6,18 @@ DOCUMENT_UPDATER_HOST=document-updater
FILESTORE_HOST=filestore
GRACEFUL_SHUTDOWN_DELAY_SECONDS=0
HISTORY_V1_HOST=history-v1
HISTORY_REDIS_HOST=redis
LISTEN_ADDRESS=0.0.0.0
MONGO_HOST=mongo
MONGO_URL=mongodb://mongo/sharelatex?directConnection=true
NOTIFICATIONS_HOST=notifications
PROJECT_HISTORY_HOST=project-history
QUEUES_REDIS_HOST=redis
REALTIME_HOST=real-time
REDIS_HOST=redis
REFERENCES_HOST=references
SESSION_SECRET=foo
V1_HISTORY_HOST=history-v1
WEBPACK_HOST=webpack
WEB_API_PASSWORD=overleaf
WEB_API_USER=overleaf

View file

@ -112,8 +112,19 @@ services:
- ../services/real-time/app.js:/overleaf/services/real-time/app.js
- ../services/real-time/config:/overleaf/services/real-time/config
references:
command: ["node", "--watch", "app.js"]
environment:
- NODE_OPTIONS=--inspect=0.0.0.0:9229
ports:
- "127.0.0.1:9238:9229"
volumes:
- ../services/references/app:/overleaf/services/references/app
- ../services/references/config:/overleaf/services/references/config
- ../services/references/app.js:/overleaf/services/references/app.js
web:
command: ["node", "--watch", "app.js", "--watch-locales"]
command: ["node", "--watch", "app.mjs", "--watch-locales"]
environment:
- NODE_OPTIONS=--inspect=0.0.0.0:9229
ports:

View file

@ -1,6 +1,5 @@
volumes:
clsi-cache:
clsi-output:
filestore-public-files:
filestore-template-files:
filestore-uploads:
@ -26,15 +25,16 @@ services:
env_file:
- dev.env
environment:
- DOCKER_RUNNER=true
- TEXLIVE_IMAGE=texlive-full # docker build texlive -t texlive-full
- COMPILES_HOST_DIR=${PWD}/compiles
- SANDBOXED_COMPILES=true
- SANDBOXED_COMPILES_HOST_DIR_COMPILES=${PWD}/compiles
- SANDBOXED_COMPILES_HOST_DIR_OUTPUT=${PWD}/output
user: root
volumes:
- ${PWD}/compiles:/overleaf/services/clsi/compiles
- ${PWD}/output:/overleaf/services/clsi/output
- ${DOCKER_SOCKET_PATH:-/var/run/docker.sock}:/var/run/docker.sock
- clsi-cache:/overleaf/services/clsi/cache
- clsi-output:/overleaf/services/clsi/output
contacts:
build:
@ -88,12 +88,20 @@ services:
- history-v1-buckets:/buckets
mongo:
image: mongo:5
image: mongo:6.0
command: --replSet overleaf
ports:
- "127.0.0.1:27017:27017" # for debugging
volumes:
- mongo-data:/data/db
- ../bin/shared/mongodb-init-replica-set.js:/docker-entrypoint-initdb.d/mongodb-init-replica-set.js
environment:
MONGO_INITDB_DATABASE: sharelatex
extra_hosts:
# Required when using the automatic database setup for initializing the
# replica set. This override is not needed when running the setup after
# starting up mongo.
- mongo:127.0.0.1
notifications:
build:
@ -115,7 +123,7 @@ services:
dockerfile: services/real-time/Dockerfile
env_file:
- dev.env
redis:
image: redis:5
ports:
@ -123,6 +131,13 @@ services:
volumes:
- redis-data:/data
references:
build:
context: ..
dockerfile: services/references/Dockerfile
env_file:
- dev.env
web:
build:
context: ..
@ -132,7 +147,7 @@ services:
- dev.env
environment:
- APP_NAME=Overleaf Community Edition
- ENABLED_LINKED_FILE_TYPES=project_file,project_output_file
- ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url
- EMAIL_CONFIRMATION_DISABLED=true
- NODE_ENV=development
- OVERLEAF_ALLOW_PUBLIC_ACCESS=true
@ -153,6 +168,7 @@ services:
- notifications
- project-history
- real-time
- references
webpack:
build:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 587 KiB

After

Width:  |  Height:  |  Size: 1 MiB

Before After
Before After

View file

@ -32,7 +32,7 @@ services:
OVERLEAF_REDIS_HOST: redis
REDIS_HOST: redis
ENABLED_LINKED_FILE_TYPES: 'project_file,project_output_file'
ENABLED_LINKED_FILE_TYPES: 'project_file,project_output_file,url'
# Enables Thumbnail generation using ImageMagick
ENABLE_CONVERSIONS: 'true'
@ -40,10 +40,6 @@ services:
# Disables email confirmation requirement
EMAIL_CONFIRMATION_DISABLED: 'true'
# temporary fix for LuaLaTex compiles
# see https://github.com/overleaf/overleaf/issues/695
TEXMFVAR: /var/lib/overleaf/tmp/texmf-var
## Set for SSL via nginx-proxy
#VIRTUAL_HOST: 103.112.212.22
@ -77,11 +73,19 @@ services:
## Server Pro ##
################
## Sandboxed Compiles: https://github.com/overleaf/overleaf/wiki/Server-Pro:-Sandboxed-Compiles
## The Community Edition is intended for use in environments where all users are trusted and is not appropriate for
## scenarios where isolation of users is required. Sandboxed Compiles are not available in the Community Edition,
## so the following environment variables must be commented out to avoid compile issues.
##
## Sandboxed Compiles: https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/server-pro-only-configuration/sandboxed-compiles
SANDBOXED_COMPILES: 'true'
SANDBOXED_COMPILES_SIBLING_CONTAINERS: 'true'
### Bind-mount source for /var/lib/overleaf/data/compiles inside the container.
SANDBOXED_COMPILES_HOST_DIR: '/home/user/sharelatex_data/data/compiles'
SANDBOXED_COMPILES_HOST_DIR_COMPILES: '/home/user/sharelatex_data/data/compiles'
### Bind-mount source for /var/lib/overleaf/data/output inside the container.
SANDBOXED_COMPILES_HOST_DIR_OUTPUT: '/home/user/sharelatex_data/data/output'
### Backwards compatibility (before Server Pro 5.5)
DOCKER_RUNNER: 'true'
SANDBOXED_COMPILES_SIBLING_CONTAINERS: 'true'
## Works with test LDAP server shown at bottom of docker compose
# OVERLEAF_LDAP_URL: 'ldap://ldap:389'
@ -102,12 +106,12 @@ services:
mongo:
restart: always
image: mongo:5.0
image: mongo:6.0
container_name: mongo
command: '--replSet overleaf'
volumes:
- ~/mongo_data:/data/db
- ./mongodb-init-replica-set.js:/docker-entrypoint-initdb.d/mongodb-init-replica-set.js
- ./bin/shared/mongodb-init-replica-set.js:/docker-entrypoint-initdb.d/mongodb-init-replica-set.js
environment:
MONGO_INITDB_DATABASE: sharelatex
extra_hosts:
@ -115,7 +119,7 @@ services:
# This override is not needed when running the setup after starting up mongo.
- mongo:127.0.0.1
healthcheck:
test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet
test: echo 'db.stats().ok' | mongosh localhost:27017/test --quiet
interval: 10s
timeout: 10s
retries: 5

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,46 +0,0 @@
compileFolder
Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store?
ehthumbs.db
Icon?
Thumbs.db
/node_modules/*
data/*/*
**.swp
/log.json
hash_folder
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -1,10 +1,10 @@
access-token-encryptor
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -21,7 +21,7 @@
"devDependencies": {
"chai": "^4.3.6",
"chai-as-promised": "^7.1.1",
"mocha": "^10.2.0",
"mocha": "^11.1.0",
"sandboxed-module": "^2.0.4",
"typescript": "^5.0.4"
}

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,3 +0,0 @@
# managed by monorepo$ bin/update_build_scripts
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -1,10 +1,10 @@
fetch-utils
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -23,11 +23,11 @@ async function fetchJson(url, opts = {}) {
}
async function fetchJsonWithResponse(url, opts = {}) {
const { fetchOpts } = parseOpts(opts)
const { fetchOpts, detachSignal } = parseOpts(opts)
fetchOpts.headers = fetchOpts.headers ?? {}
fetchOpts.headers.Accept = fetchOpts.headers.Accept ?? 'application/json'
const response = await performRequest(url, fetchOpts)
const response = await performRequest(url, fetchOpts, detachSignal)
if (!response.ok) {
const body = await maybeGetResponseBody(response)
throw new RequestFailedError(url, opts, response, body)
@ -53,8 +53,8 @@ async function fetchStream(url, opts = {}) {
}
async function fetchStreamWithResponse(url, opts = {}) {
const { fetchOpts, abortController } = parseOpts(opts)
const response = await performRequest(url, fetchOpts)
const { fetchOpts, abortController, detachSignal } = parseOpts(opts)
const response = await performRequest(url, fetchOpts, detachSignal)
if (!response.ok) {
const body = await maybeGetResponseBody(response)
@ -76,8 +76,8 @@ async function fetchStreamWithResponse(url, opts = {}) {
* @throws {RequestFailedError} if the response has a failure status code
*/
async function fetchNothing(url, opts = {}) {
const { fetchOpts } = parseOpts(opts)
const response = await performRequest(url, fetchOpts)
const { fetchOpts, detachSignal } = parseOpts(opts)
const response = await performRequest(url, fetchOpts, detachSignal)
if (!response.ok) {
const body = await maybeGetResponseBody(response)
throw new RequestFailedError(url, opts, response, body)
@ -95,9 +95,22 @@ async function fetchNothing(url, opts = {}) {
* @throws {RequestFailedError} if the response has a non redirect status code or missing Location header
*/
async function fetchRedirect(url, opts = {}) {
const { fetchOpts } = parseOpts(opts)
const { location } = await fetchRedirectWithResponse(url, opts)
return location
}
/**
* Make a request and extract the redirect from the response.
*
* @param {string | URL} url - request URL
* @param {object} opts - fetch options
* @return {Promise<{location: string, response: Response}>}
* @throws {RequestFailedError} if the response has a non redirect status code or missing Location header
*/
async function fetchRedirectWithResponse(url, opts = {}) {
const { fetchOpts, detachSignal } = parseOpts(opts)
fetchOpts.redirect = 'manual'
const response = await performRequest(url, fetchOpts)
const response = await performRequest(url, fetchOpts, detachSignal)
if (response.status < 300 || response.status >= 400) {
const body = await maybeGetResponseBody(response)
throw new RequestFailedError(url, opts, response, body)
@ -112,7 +125,7 @@ async function fetchRedirect(url, opts = {}) {
)
}
await discardResponseBody(response)
return location
return { location, response }
}
/**
@ -129,8 +142,8 @@ async function fetchString(url, opts = {}) {
}
async function fetchStringWithResponse(url, opts = {}) {
const { fetchOpts } = parseOpts(opts)
const response = await performRequest(url, fetchOpts)
const { fetchOpts, detachSignal } = parseOpts(opts)
const response = await performRequest(url, fetchOpts, detachSignal)
if (!response.ok) {
const body = await maybeGetResponseBody(response)
throw new RequestFailedError(url, opts, response, body)
@ -165,13 +178,14 @@ function parseOpts(opts) {
const abortController = new AbortController()
fetchOpts.signal = abortController.signal
let detachSignal = () => {}
if (opts.signal) {
abortOnSignal(abortController, opts.signal)
detachSignal = abortOnSignal(abortController, opts.signal)
}
if (opts.body instanceof Readable) {
abortOnDestroyedRequest(abortController, fetchOpts.body)
}
return { fetchOpts, abortController }
return { fetchOpts, abortController, detachSignal }
}
function setupJsonBody(fetchOpts, json) {
@ -195,6 +209,9 @@ function abortOnSignal(abortController, signal) {
abortController.abort(signal.reason)
}
signal.addEventListener('abort', listener)
return () => {
signal.removeEventListener('abort', listener)
}
}
function abortOnDestroyedRequest(abortController, stream) {
@ -213,11 +230,12 @@ function abortOnDestroyedResponse(abortController, response) {
})
}
async function performRequest(url, fetchOpts) {
async function performRequest(url, fetchOpts, detachSignal) {
let response
try {
response = await fetch(url, fetchOpts)
} catch (err) {
detachSignal()
if (fetchOpts.body instanceof Readable) {
fetchOpts.body.destroy()
}
@ -226,6 +244,7 @@ async function performRequest(url, fetchOpts) {
method: fetchOpts.method ?? 'GET',
})
}
response.body.on('close', detachSignal)
if (fetchOpts.body instanceof Readable) {
response.body.on('close', () => {
if (!fetchOpts.body.readableEnded) {
@ -297,6 +316,7 @@ module.exports = {
fetchStreamWithResponse,
fetchNothing,
fetchRedirect,
fetchRedirectWithResponse,
fetchString,
fetchStringWithResponse,
RequestFailedError,

View file

@ -20,8 +20,8 @@
"body-parser": "^1.20.3",
"chai": "^4.3.6",
"chai-as-promised": "^7.1.1",
"express": "^4.21.0",
"mocha": "^10.2.0",
"express": "^4.21.2",
"mocha": "^11.1.0",
"typescript": "^5.0.4"
},
"dependencies": {

View file

@ -1,6 +1,9 @@
const { expect } = require('chai')
const fs = require('node:fs')
const events = require('node:events')
const { FetchError, AbortError } = require('node-fetch')
const { Readable } = require('node:stream')
const { pipeline } = require('node:stream/promises')
const { once } = require('node:events')
const { TestServer } = require('./helpers/TestServer')
const selfsigned = require('selfsigned')
@ -203,6 +206,31 @@ describe('fetch-utils', function () {
).to.be.rejectedWith(AbortError)
expect(stream.destroyed).to.be.true
})
it('detaches from signal on success', async function () {
const signal = AbortSignal.timeout(10_000)
for (let i = 0; i < 20; i++) {
const s = await fetchStream(this.url('/hello'), { signal })
expect(events.getEventListeners(signal, 'abort')).to.have.length(1)
await pipeline(s, fs.createWriteStream('/dev/null'))
expect(events.getEventListeners(signal, 'abort')).to.have.length(0)
}
})
it('detaches from signal on error', async function () {
const signal = AbortSignal.timeout(10_000)
for (let i = 0; i < 20; i++) {
try {
await fetchStream(this.url('/500'), { signal })
} catch (err) {
if (err instanceof RequestFailedError && err.response.status === 500)
continue
throw err
} finally {
expect(events.getEventListeners(signal, 'abort')).to.have.length(0)
}
}
})
})
describe('fetchNothing', function () {
@ -391,9 +419,16 @@ async function* infiniteIterator() {
async function abortOnceReceived(func, server) {
const controller = new AbortController()
const promise = func(controller.signal)
expect(events.getEventListeners(controller.signal, 'abort')).to.have.length(1)
await once(server.events, 'request-received')
controller.abort()
return await promise
try {
return await promise
} finally {
expect(events.getEventListeners(controller.signal, 'abort')).to.have.length(
0
)
}
}
async function expectRequestAborted(req) {

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,3 +0,0 @@
node_modules
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -1,10 +1,10 @@
logger
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -14,8 +14,10 @@ const LoggingManager = {
initialize(name) {
this.isProduction =
(process.env.NODE_ENV || '').toLowerCase() === 'production'
const isTest = (process.env.NODE_ENV || '').toLowerCase() === 'test'
this.defaultLevel =
process.env.LOG_LEVEL || (this.isProduction ? 'info' : 'debug')
process.env.LOG_LEVEL ||
(this.isProduction ? 'info' : isTest ? 'fatal' : 'debug')
this.loggerName = name
this.logger = bunyan.createLogger({
name,

View file

@ -27,7 +27,7 @@
},
"devDependencies": {
"chai": "^4.3.6",
"mocha": "^10.2.0",
"mocha": "^11.1.0",
"sandboxed-module": "^2.0.4",
"sinon": "^9.2.4",
"sinon-chai": "^3.7.0",

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,3 +0,0 @@
node_modules
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -1,10 +1,10 @@
metrics
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -5,6 +5,8 @@
* before any other module to support code instrumentation.
*/
const metricsModuleImportStartTime = performance.now()
const APP_NAME = process.env.METRICS_APP_NAME || 'unknown'
const BUILD_VERSION = process.env.BUILD_VERSION
const ENABLE_PROFILE_AGENT = process.env.ENABLE_PROFILE_AGENT === 'true'
@ -103,3 +105,5 @@ function recordProcessStart() {
const metrics = require('.')
metrics.inc('process_startup')
}
module.exports = { metricsModuleImportStartTime }

View file

@ -9,7 +9,7 @@
"main": "index.js",
"dependencies": {
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
"@google-cloud/profiler": "^6.0.0",
"@google-cloud/profiler": "^6.0.3",
"@opentelemetry/api": "^1.4.1",
"@opentelemetry/auto-instrumentations-node": "^0.39.1",
"@opentelemetry/exporter-trace-otlp-http": "^0.41.2",
@ -23,7 +23,7 @@
"devDependencies": {
"bunyan": "^1.0.0",
"chai": "^4.3.6",
"mocha": "^10.2.0",
"mocha": "^11.1.0",
"sandboxed-module": "^2.0.4",
"sinon": "^9.2.4",
"typescript": "^5.0.4"

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,3 +0,0 @@
# managed by monorepo$ bin/update_build_scripts
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -16,6 +16,7 @@ let VERBOSE_LOGGING
let BATCH_RANGE_START
let BATCH_RANGE_END
let BATCH_MAX_TIME_SPAN_IN_MS
let BATCHED_UPDATE_RUNNING = false
/**
* @typedef {import("mongodb").Collection} Collection
@ -34,6 +35,7 @@ let BATCH_MAX_TIME_SPAN_IN_MS
* @property {string} [BATCH_RANGE_START]
* @property {string} [BATCH_SIZE]
* @property {string} [VERBOSE_LOGGING]
* @property {(progress: string) => Promise<void>} [trackProgress]
*/
/**
@ -209,59 +211,71 @@ async function batchedUpdate(
update,
projection,
findOptions,
batchedUpdateOptions
batchedUpdateOptions = {}
) {
ID_EDGE_PAST = await getIdEdgePast(collection)
if (!ID_EDGE_PAST) {
console.warn(
`The collection ${collection.collectionName} appears to be empty.`
)
return 0
// only a single batchedUpdate can run at a time due to global variables
if (BATCHED_UPDATE_RUNNING) {
throw new Error('batchedUpdate is already running')
}
refreshGlobalOptionsForBatchedUpdate(batchedUpdateOptions)
findOptions = findOptions || {}
findOptions.readPreference = READ_PREFERENCE_SECONDARY
projection = projection || { _id: 1 }
let nextBatch
let updated = 0
let start = BATCH_RANGE_START
while (start !== BATCH_RANGE_END) {
let end = getNextEnd(start)
nextBatch = await getNextBatch(
collection,
query,
start,
end,
projection,
findOptions
)
if (nextBatch.length > 0) {
end = nextBatch[nextBatch.length - 1]._id
updated += nextBatch.length
if (VERBOSE_LOGGING) {
console.log(
`Running update on batch with ids ${JSON.stringify(
nextBatch.map(entry => entry._id)
)}`
)
} else {
console.error(`Running update on batch ending ${renderObjectId(end)}`)
}
if (typeof update === 'function') {
await update(nextBatch)
} else {
await performUpdate(collection, nextBatch, update)
}
try {
BATCHED_UPDATE_RUNNING = true
ID_EDGE_PAST = await getIdEdgePast(collection)
if (!ID_EDGE_PAST) {
console.warn(
`The collection ${collection.collectionName} appears to be empty.`
)
return 0
}
console.error(`Completed batch ending ${renderObjectId(end)}`)
start = end
refreshGlobalOptionsForBatchedUpdate(batchedUpdateOptions)
const { trackProgress = async progress => console.warn(progress) } =
batchedUpdateOptions
findOptions = findOptions || {}
findOptions.readPreference = READ_PREFERENCE_SECONDARY
projection = projection || { _id: 1 }
let nextBatch
let updated = 0
let start = BATCH_RANGE_START
while (start !== BATCH_RANGE_END) {
let end = getNextEnd(start)
nextBatch = await getNextBatch(
collection,
query,
start,
end,
projection,
findOptions
)
if (nextBatch.length > 0) {
end = nextBatch[nextBatch.length - 1]._id
updated += nextBatch.length
if (VERBOSE_LOGGING) {
console.log(
`Running update on batch with ids ${JSON.stringify(
nextBatch.map(entry => entry._id)
)}`
)
}
await trackProgress(
`Running update on batch ending ${renderObjectId(end)}`
)
if (typeof update === 'function') {
await update(nextBatch)
} else {
await performUpdate(collection, nextBatch, update)
}
}
await trackProgress(`Completed batch ending ${renderObjectId(end)}`)
start = end
}
return updated
} finally {
BATCHED_UPDATE_RUNNING = false
}
return updated
}
/**

View file

@ -1,10 +1,10 @@
mongo-utils
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -16,12 +16,12 @@
"author": "Overleaf (https://www.overleaf.com)",
"license": "AGPL-3.0-only",
"dependencies": {
"mongodb": "6.10.0",
"mongodb": "6.12.0",
"mongodb-legacy": "6.1.3"
},
"devDependencies": {
"chai": "^4.3.6",
"mocha": "^10.2.0",
"mocha": "^11.1.0",
"sandboxed-module": "^2.0.4",
"sinon": "^9.2.4",
"sinon-chai": "^3.7.0",

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,5 +0,0 @@
.nyc_output
coverage
node_modules/
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -1,10 +1,10 @@
o-error
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -1,20 +1,34 @@
// @ts-check
/**
* Light-weight helpers for handling JavaScript Errors in node.js and the
* browser.
*/
class OError extends Error {
/**
* The error that is the underlying cause of this error
*
* @type {unknown}
*/
cause
/**
* List of errors encountered as the callback chain is unwound
*
* @type {TaggedError[] | undefined}
*/
_oErrorTags
/**
* @param {string} message as for built-in Error
* @param {Object} [info] extra data to attach to the error
* @param {Error} [cause] the internal error that caused this error
* @param {unknown} [cause] the internal error that caused this error
*/
constructor(message, info, cause) {
super(message)
this.name = this.constructor.name
if (info) this.info = info
if (cause) this.cause = cause
/** @private @type {Array<TaggedError> | undefined} */
this._oErrorTags // eslint-disable-line
}
/**
@ -31,7 +45,7 @@ class OError extends Error {
/**
* Wrap the given error, which caused this error.
*
* @param {Error} cause the internal error that caused this error
* @param {unknown} cause the internal error that caused this error
* @return {this}
*/
withCause(cause) {
@ -65,13 +79,16 @@ class OError extends Error {
* }
* }
*
* @param {Error} error the error to tag
* @template {unknown} E
* @param {E} error the error to tag
* @param {string} [message] message with which to tag `error`
* @param {Object} [info] extra data with wich to tag `error`
* @return {Error} the modified `error` argument
* @return {E} the modified `error` argument
*/
static tag(error, message, info) {
const oError = /** @type{OError} */ (error)
const oError = /** @type {{ _oErrorTags: TaggedError[] | undefined }} */ (
error
)
if (!oError._oErrorTags) oError._oErrorTags = []
@ -102,7 +119,7 @@ class OError extends Error {
*
* If an info property is repeated, the last one wins.
*
* @param {Error | null | undefined} error any error (may or may not be an `OError`)
* @param {unknown} error any error (may or may not be an `OError`)
* @return {Object}
*/
static getFullInfo(error) {
@ -129,7 +146,7 @@ class OError extends Error {
* Return the `stack` property from `error`, including the `stack`s for any
* tagged errors added with `OError.tag` and for any `cause`s.
*
* @param {Error | null | undefined} error any error (may or may not be an `OError`)
* @param {unknown} error any error (may or may not be an `OError`)
* @return {string}
*/
static getFullStack(error) {
@ -143,7 +160,7 @@ class OError extends Error {
stack += `\n${oError._oErrorTags.map(tag => tag.stack).join('\n')}`
}
const causeStack = oError.cause && OError.getFullStack(oError.cause)
const causeStack = OError.getFullStack(oError.cause)
if (causeStack) {
stack += '\ncaused by:\n' + indent(causeStack)
}

View file

@ -34,7 +34,7 @@
"@types/chai": "^4.3.0",
"@types/node": "^18.17.4",
"chai": "^4.3.6",
"mocha": "^10.2.0",
"mocha": "^11.1.0",
"typescript": "^5.0.4"
}
}

View file

@ -268,6 +268,11 @@ describe('utils', function () {
expect(OError.getFullInfo(null)).to.deep.equal({})
})
it('works when given a string', function () {
const err = 'not an error instance'
expect(OError.getFullInfo(err)).to.deep.equal({})
})
it('works on a normal error', function () {
const err = new Error('foo')
expect(OError.getFullInfo(err)).to.deep.equal({})

View file

@ -35,6 +35,14 @@ describe('OError', function () {
expect(err2.cause.message).to.equal('cause 2')
})
it('accepts non-Error causes', function () {
const err1 = new OError('foo', {}, 'not-an-error')
expect(err1.cause).to.equal('not-an-error')
const err2 = new OError('foo').withCause('not-an-error')
expect(err2.cause).to.equal('not-an-error')
})
it('handles a custom error type with a cause', function () {
function doSomethingBadInternally() {
throw new Error('internal error')

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,4 +0,0 @@
/node_modules
*.swp
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -1,10 +1,10 @@
object-persistor
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -34,9 +34,9 @@
"devDependencies": {
"chai": "^4.3.6",
"chai-as-promised": "^7.1.1",
"mocha": "^10.2.0",
"mocha": "^11.1.0",
"mock-fs": "^5.2.0",
"mongodb": "6.10.0",
"mongodb": "6.12.0",
"sandboxed-module": "^2.0.4",
"sinon": "^9.2.4",
"sinon-chai": "^3.7.0",

View file

@ -305,8 +305,10 @@ module.exports = class FSPersistor extends AbstractPersistor {
async _listDirectory(path) {
if (this.useSubdirectories) {
// eslint-disable-next-line @typescript-eslint/return-await
return await glob(Path.join(path, '**'))
} else {
// eslint-disable-next-line @typescript-eslint/return-await
return await glob(`${path}_*`)
}
}

View file

@ -33,6 +33,10 @@ const AES256_KEY_LENGTH = 32
* @property {() => Promise<Array<RootKeyEncryptionKey>>} getRootKeyEncryptionKeys
*/
/**
* @typedef {import('./types').ListDirectoryResult} ListDirectoryResult
*/
/**
* Helper function to make TS happy when accessing error properties
* AWSError is not an actual class, so we cannot use instanceof.
@ -343,9 +347,10 @@ class PerProjectEncryptedS3Persistor extends S3Persistor {
}
async deleteDirectory(bucketName, path, continuationToken) {
// Let [Settings.pathToProjectFolder] validate the project path before deleting things.
const { projectFolder, dekPath } = this.#buildProjectPaths(bucketName, path)
// Note: Listing/Deleting a prefix does not require SSE-C credentials.
await super.deleteDirectory(bucketName, path, continuationToken)
const { projectFolder, dekPath } = this.#buildProjectPaths(bucketName, path)
if (projectFolder === path) {
await super.deleteObject(
this.#settings.dataEncryptionKeyBucketName,
@ -390,9 +395,9 @@ class PerProjectEncryptedS3Persistor extends S3Persistor {
* A general "cache" for project keys is another alternative. For now, use a helper class.
*/
class CachedPerProjectEncryptedS3Persistor {
/** @type SSECOptions */
/** @type SSECOptions */
#projectKeyOptions
/** @type PerProjectEncryptedS3Persistor */
/** @type PerProjectEncryptedS3Persistor */
#parent
/**
@ -413,6 +418,26 @@ class CachedPerProjectEncryptedS3Persistor {
return await this.sendStream(bucketName, path, fs.createReadStream(fsPath))
}
/**
*
* @param {string} bucketName
* @param {string} path
* @return {Promise<number>}
*/
async getObjectSize(bucketName, path) {
return await this.#parent.getObjectSize(bucketName, path)
}
/**
*
* @param {string} bucketName
* @param {string} path
* @return {Promise<ListDirectoryResult>}
*/
async listDirectory(bucketName, path) {
return await this.#parent.listDirectory(bucketName, path)
}
/**
* @param {string} bucketName
* @param {string} path

View file

@ -20,6 +20,18 @@ const { URL } = require('node:url')
const { WriteError, ReadError, NotFoundError } = require('./Errors')
const zlib = require('node:zlib')
/**
* @typedef {import('aws-sdk/clients/s3').ListObjectsV2Output} ListObjectsV2Output
*/
/**
* @typedef {import('aws-sdk/clients/s3').Object} S3Object
*/
/**
* @typedef {import('./types').ListDirectoryResult} ListDirectoryResult
*/
/**
* Wrapper with private fields to avoid revealing them on console, JSON.stringify or similar.
*/
@ -266,26 +278,12 @@ class S3Persistor extends AbstractPersistor {
* @return {Promise<void>}
*/
async deleteDirectory(bucketName, key, continuationToken) {
let response
const options = { Bucket: bucketName, Prefix: key }
if (continuationToken) {
options.ContinuationToken = continuationToken
}
try {
response = await this._getClientForBucket(bucketName)
.listObjectsV2(options)
.promise()
} catch (err) {
throw PersistorHelper.wrapError(
err,
'failed to list objects in S3',
{ bucketName, key },
ReadError
)
}
const objects = response.Contents?.map(item => ({ Key: item.Key || '' }))
const { contents, response } = await this.listDirectory(
bucketName,
key,
continuationToken
)
const objects = contents.map(item => ({ Key: item.Key || '' }))
if (objects?.length) {
try {
await this._getClientForBucket(bucketName)
@ -316,6 +314,36 @@ class S3Persistor extends AbstractPersistor {
}
}
/**
*
* @param {string} bucketName
* @param {string} key
* @param {string} [continuationToken]
* @return {Promise<ListDirectoryResult>}
*/
async listDirectory(bucketName, key, continuationToken) {
let response
const options = { Bucket: bucketName, Prefix: key }
if (continuationToken) {
options.ContinuationToken = continuationToken
}
try {
response = await this._getClientForBucket(bucketName)
.listObjectsV2(options)
.promise()
} catch (err) {
throw PersistorHelper.wrapError(
err,
'failed to list objects in S3',
{ bucketName, key },
ReadError
)
}
return { contents: response.Contents ?? [], response }
}
/**
* @param {string} bucketName
* @param {string} key

View file

@ -0,0 +1,6 @@
import type { ListObjectsV2Output, Object } from 'aws-sdk/clients/s3'
export type ListDirectoryResult = {
contents: Array<Object>
response: ListObjectsV2Output
}

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,5 +0,0 @@
/coverage
/node_modules
# managed by monorepo$ bin/update_build_scripts
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -1,10 +1,10 @@
overleaf-editor-core
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -18,6 +18,7 @@ const MoveFileOperation = require('./lib/operation/move_file_operation')
const SetCommentStateOperation = require('./lib/operation/set_comment_state_operation')
const EditFileOperation = require('./lib/operation/edit_file_operation')
const EditNoOperation = require('./lib/operation/edit_no_operation')
const EditOperationTransformer = require('./lib/operation/edit_operation_transformer')
const SetFileMetadataOperation = require('./lib/operation/set_file_metadata_operation')
const NoOperation = require('./lib/operation/no_operation')
const Operation = require('./lib/operation')
@ -43,6 +44,8 @@ const TrackingProps = require('./lib/file_data/tracking_props')
const Range = require('./lib/range')
const CommentList = require('./lib/file_data/comment_list')
const LazyStringFileData = require('./lib/file_data/lazy_string_file_data')
const StringFileData = require('./lib/file_data/string_file_data')
const EditOperationBuilder = require('./lib/operation/edit_operation_builder')
exports.AddCommentOperation = AddCommentOperation
exports.Author = Author
@ -58,6 +61,7 @@ exports.DeleteCommentOperation = DeleteCommentOperation
exports.File = File
exports.FileMap = FileMap
exports.LazyStringFileData = LazyStringFileData
exports.StringFileData = StringFileData
exports.History = History
exports.Label = Label
exports.AddFileOperation = AddFileOperation
@ -65,6 +69,8 @@ exports.MoveFileOperation = MoveFileOperation
exports.SetCommentStateOperation = SetCommentStateOperation
exports.EditFileOperation = EditFileOperation
exports.EditNoOperation = EditNoOperation
exports.EditOperationBuilder = EditOperationBuilder
exports.EditOperationTransformer = EditOperationTransformer
exports.SetFileMetadataOperation = SetFileMetadataOperation
exports.NoOperation = NoOperation
exports.Operation = Operation

View file

@ -13,7 +13,7 @@ const V2DocVersions = require('./v2_doc_versions')
/**
* @import Author from "./author"
* @import { BlobStore } from "./types"
* @import { BlobStore, RawChange, ReadonlyBlobStore } from "./types"
*/
/**
@ -54,7 +54,7 @@ class Change {
/**
* For serialization.
*
* @return {Object}
* @return {RawChange}
*/
toRaw() {
function toRaw(object) {
@ -100,6 +100,9 @@ class Change {
)
}
/**
* @return {Operation[]}
*/
getOperations() {
return this.operations
}
@ -216,7 +219,7 @@ class Change {
* If this Change contains any File objects, load them.
*
* @param {string} kind see {File#load}
* @param {BlobStore} blobStore
* @param {ReadonlyBlobStore} blobStore
* @return {Promise<void>}
*/
async loadFiles(kind, blobStore) {
@ -248,6 +251,24 @@ class Change {
* @param {boolean} [opts.strict] - Do not ignore recoverable errors
*/
applyTo(snapshot, opts = {}) {
// eslint-disable-next-line no-unused-vars
for (const operation of this.iterativelyApplyTo(snapshot, opts)) {
// Nothing to do: we're just consuming the iterator for the side effects
}
}
/**
* Generator that applies this change to a snapshot and yields each
* operation after it has been applied.
*
* Recoverable errors (caused by historical bad data) are ignored unless
* opts.strict is true
*
* @param {Snapshot} snapshot modified in place
* @param {object} opts
* @param {boolean} [opts.strict] - Do not ignore recoverable errors
*/
*iterativelyApplyTo(snapshot, opts = {}) {
assert.object(snapshot, 'bad snapshot')
for (const operation of this.operations) {
@ -261,6 +282,7 @@ class Change {
throw err
}
}
yield operation
}
// update project version if present in change

View file

@ -1,7 +1,7 @@
// @ts-check
/**
* @import { ClearTrackingPropsRawData } from '../types'
* @import { ClearTrackingPropsRawData, TrackingDirective } from '../types'
*/
class ClearTrackingProps {
@ -11,12 +11,27 @@ class ClearTrackingProps {
/**
* @param {any} other
* @returns {boolean}
* @returns {other is ClearTrackingProps}
*/
equals(other) {
return other instanceof ClearTrackingProps
}
/**
* @param {TrackingDirective} other
* @returns {other is ClearTrackingProps}
*/
canMergeWith(other) {
return other instanceof ClearTrackingProps
}
/**
* @param {TrackingDirective} other
*/
mergeWith(other) {
return this
}
/**
* @returns {ClearTrackingPropsRawData}
*/

View file

@ -11,7 +11,7 @@ const EditOperation = require('../operation/edit_operation')
const EditOperationBuilder = require('../operation/edit_operation_builder')
/**
* @import { BlobStore, ReadonlyBlobStore, RangesBlob, RawFileData, RawLazyStringFileData } from '../types'
* @import { BlobStore, ReadonlyBlobStore, RangesBlob, RawHashFileData, RawLazyStringFileData } from '../types'
*/
class LazyStringFileData extends FileData {
@ -159,11 +159,11 @@ class LazyStringFileData extends FileData {
/** @inheritdoc
* @param {BlobStore} blobStore
* @return {Promise<RawFileData>}
* @return {Promise<RawHashFileData>}
*/
async store(blobStore) {
if (this.operations.length === 0) {
/** @type RawFileData */
/** @type RawHashFileData */
const raw = { hash: this.hash }
if (this.rangesHash) {
raw.rangesHash = this.rangesHash
@ -171,9 +171,11 @@ class LazyStringFileData extends FileData {
return raw
}
const eager = await this.toEager(blobStore)
const raw = await eager.store(blobStore)
this.hash = raw.hash
this.rangesHash = raw.rangesHash
this.operations.length = 0
/** @type RawFileData */
return await eager.store(blobStore)
return raw
}
}

View file

@ -8,7 +8,7 @@ const CommentList = require('./comment_list')
const TrackedChangeList = require('./tracked_change_list')
/**
* @import { StringFileRawData, RawFileData, BlobStore, CommentRawData } from "../types"
* @import { StringFileRawData, RawHashFileData, BlobStore, CommentRawData } from "../types"
* @import { TrackedChangeRawData, RangesBlob } from "../types"
* @import EditOperation from "../operation/edit_operation"
*/
@ -88,6 +88,14 @@ class StringFileData extends FileData {
return content
}
/**
* Return docstore view of a doc: each line separated
* @return {string[]}
*/
getLines() {
return this.getContent({ filterTrackedDeletes: true }).split('\n')
}
/** @inheritdoc */
getByteLength() {
return Buffer.byteLength(this.content)
@ -131,7 +139,7 @@ class StringFileData extends FileData {
/**
* @inheritdoc
* @param {BlobStore} blobStore
* @return {Promise<RawFileData>}
* @return {Promise<RawHashFileData>}
*/
async store(blobStore) {
const blob = await blobStore.putString(this.content)

View file

@ -84,6 +84,21 @@ class TrackedChange {
)
)
}
/**
* Return an equivalent tracked change whose extent is limited to the given
* range
*
* @param {Range} range
* @returns {TrackedChange | null} - the result or null if the intersection is empty
*/
intersectRange(range) {
const intersection = this.range.intersect(range)
if (intersection == null) {
return null
}
return new TrackedChange(intersection, this.tracking)
}
}
module.exports = TrackedChange

View file

@ -2,9 +2,11 @@
const Range = require('../range')
const TrackedChange = require('./tracked_change')
const TrackingProps = require('../file_data/tracking_props')
const { InsertOp, RemoveOp, RetainOp } = require('../operation/scan_op')
/**
* @import { TrackingDirective, TrackedChangeRawData } from "../types"
* @import TextOperation from "../operation/text_operation"
*/
class TrackedChangeList {
@ -58,6 +60,22 @@ class TrackedChangeList {
return this._trackedChanges.filter(change => range.contains(change.range))
}
/**
* Returns tracked changes that overlap with the given range
* @param {Range} range
* @returns {TrackedChange[]}
*/
intersectRange(range) {
const changes = []
for (const change of this._trackedChanges) {
const intersection = change.intersectRange(range)
if (intersection != null) {
changes.push(intersection)
}
}
return changes
}
/**
* Returns the tracking props for a given range.
* @param {Range} range
@ -89,6 +107,8 @@ class TrackedChangeList {
/**
* Collapses consecutive (and compatible) ranges
*
* @private
* @returns {void}
*/
_mergeRanges() {
@ -117,12 +137,28 @@ class TrackedChangeList {
}
/**
* Apply an insert operation
*
* @param {number} cursor
* @param {string} insertedText
* @param {{tracking?: TrackingProps}} opts
*/
applyInsert(cursor, insertedText, opts = {}) {
this._applyInsert(cursor, insertedText, opts)
this._mergeRanges()
}
/**
* Apply an insert operation
*
* This method will not merge ranges at the end
*
* @private
* @param {number} cursor
* @param {string} insertedText
* @param {{tracking?: TrackingProps}} [opts]
*/
_applyInsert(cursor, insertedText, opts = {}) {
const newTrackedChanges = []
for (const trackedChange of this._trackedChanges) {
if (
@ -171,15 +207,29 @@ class TrackedChangeList {
newTrackedChanges.push(newTrackedChange)
}
this._trackedChanges = newTrackedChanges
this._mergeRanges()
}
/**
* Apply a delete operation to the list of tracked changes
*
* @param {number} cursor
* @param {number} length
*/
applyDelete(cursor, length) {
this._applyDelete(cursor, length)
this._mergeRanges()
}
/**
* Apply a delete operation to the list of tracked changes
*
* This method will not merge ranges at the end
*
* @private
* @param {number} cursor
* @param {number} length
*/
_applyDelete(cursor, length) {
const newTrackedChanges = []
for (const trackedChange of this._trackedChanges) {
const deletedRange = new Range(cursor, length)
@ -205,15 +255,31 @@ class TrackedChangeList {
}
}
this._trackedChanges = newTrackedChanges
}
/**
* Apply a retain operation to the list of tracked changes
*
* @param {number} cursor
* @param {number} length
* @param {{tracking?: TrackingDirective}} [opts]
*/
applyRetain(cursor, length, opts = {}) {
this._applyRetain(cursor, length, opts)
this._mergeRanges()
}
/**
* Apply a retain operation to the list of tracked changes
*
* This method will not merge ranges at the end
*
* @private
* @param {number} cursor
* @param {number} length
* @param {{tracking?: TrackingDirective}} opts
*/
applyRetain(cursor, length, opts = {}) {
_applyRetain(cursor, length, opts = {}) {
// If there's no tracking info, leave everything as-is
if (!opts.tracking) {
return
@ -269,6 +335,31 @@ class TrackedChangeList {
newTrackedChanges.push(newTrackedChange)
}
this._trackedChanges = newTrackedChanges
}
/**
* Apply a text operation to the list of tracked changes
*
* Ranges are merged only once at the end, for performance and to avoid
* problematic edge cases where intermediate ranges get incorrectly merged.
*
* @param {TextOperation} operation
*/
applyTextOperation(operation) {
// this cursor tracks the destination document that gets modified as
// operations are applied to it.
let cursor = 0
for (const op of operation.ops) {
if (op instanceof InsertOp) {
this._applyInsert(cursor, op.insertion, { tracking: op.tracking })
cursor += op.insertion.length
} else if (op instanceof RemoveOp) {
this._applyDelete(cursor, op.length)
} else if (op instanceof RetainOp) {
this._applyRetain(cursor, op.length, { tracking: op.tracking })
cursor += op.length
}
}
this._mergeRanges()
}
}

View file

@ -62,6 +62,35 @@ class TrackingProps {
this.ts.getTime() === other.ts.getTime()
)
}
/**
* Are these tracking props compatible with the other tracking props for merging
* ranges?
*
* @param {TrackingDirective} other
* @returns {other is TrackingProps}
*/
canMergeWith(other) {
if (!(other instanceof TrackingProps)) {
return false
}
return this.type === other.type && this.userId === other.userId
}
/**
* Merge two tracking props
*
* Assumes that `canMerge(other)` returns true
*
* @param {TrackingDirective} other
*/
mergeWith(other) {
if (!this.canMergeWith(other)) {
throw new Error('Cannot merge with incompatible tracking props')
}
const ts = this.ts <= other.ts ? this.ts : other.ts
return new TrackingProps(this.type, this.userId, ts)
}
}
module.exports = TrackingProps

View file

@ -22,7 +22,7 @@ class NonUniquePathnameError extends PathnameError {
* @param {string[]} pathnames
*/
constructor(pathnames) {
super('pathnames are not unique: ' + pathnames, { pathnames })
super('pathnames are not unique', { pathnames })
this.pathnames = pathnames
}
}
@ -30,9 +30,13 @@ class NonUniquePathnameError extends PathnameError {
class BadPathnameError extends PathnameError {
/**
* @param {string} pathname
* @param {string} reason
*/
constructor(pathname) {
super(pathname + ' is not a valid pathname', { pathname })
constructor(pathname, reason) {
if (pathname.length > 10) {
pathname = pathname.slice(0, 5) + '...' + pathname.slice(-5)
}
super('invalid pathname', { reason, pathname })
this.pathname = pathname
}
}
@ -42,7 +46,7 @@ class PathnameConflictError extends PathnameError {
* @param {string} pathname
*/
constructor(pathname) {
super(`pathname '${pathname}' conflicts with another file`, { pathname })
super('pathname conflicts with another file', { pathname })
this.pathname = pathname
}
}
@ -52,7 +56,7 @@ class FileNotFoundError extends PathnameError {
* @param {string} pathname
*/
constructor(pathname) {
super(`file ${pathname} does not exist`, { pathname })
super('file does not exist', { pathname })
this.pathname = pathname
}
}
@ -315,8 +319,9 @@ function checkPathnamesAreUnique(files) {
*/
function checkPathname(pathname) {
assert.nonEmptyString(pathname, 'bad pathname')
if (safePathname.isClean(pathname)) return
throw new FileMap.BadPathnameError(pathname)
const [isClean, reason] = safePathname.isCleanDebug(pathname)
if (isClean) return
throw new FileMap.BadPathnameError(pathname, reason)
}
/**

View file

@ -7,7 +7,7 @@ const Change = require('./change')
const Snapshot = require('./snapshot')
/**
* @import { BlobStore } from "./types"
* @import { BlobStore, ReadonlyBlobStore } from "./types"
*/
class History {
@ -85,7 +85,7 @@ class History {
* If this History contains any File objects, load them.
*
* @param {string} kind see {File#load}
* @param {BlobStore} blobStore
* @param {ReadonlyBlobStore} blobStore
* @return {Promise<void>}
*/
async loadFiles(kind, blobStore) {

View file

@ -36,6 +36,20 @@ class EditOperationBuilder {
}
throw new Error('Unsupported operation in EditOperationBuilder.fromJSON')
}
/**
* @param {unknown} raw
* @return {raw is RawEditOperation}
*/
static isValid(raw) {
return (
isTextOperation(raw) ||
isRawAddCommentOperation(raw) ||
isRawDeleteCommentOperation(raw) ||
isRawSetCommentStateOperation(raw) ||
isRawEditNoOperation(raw)
)
}
}
/**

View file

@ -13,7 +13,7 @@ let EditFileOperation = null
let SetFileMetadataOperation = null
/**
* @import { BlobStore } from "../types"
* @import { ReadonlyBlobStore } from "../types"
* @import Snapshot from "../snapshot"
*/
@ -80,7 +80,7 @@ class Operation {
* If this operation references any files, load the files.
*
* @param {string} kind see {File#load}
* @param {BlobStore} blobStore
* @param {ReadOnlyBlobStore} blobStore
* @return {Promise<void>}
*/
async loadFiles(kind, blobStore) {}

View file

@ -175,7 +175,7 @@ class InsertOp extends ScanOp {
return false
}
if (this.tracking) {
if (!this.tracking.equals(other.tracking)) {
if (!other.tracking || !this.tracking.canMergeWith(other.tracking)) {
return false
}
} else if (other.tracking) {
@ -198,7 +198,10 @@ class InsertOp extends ScanOp {
throw new Error('Cannot merge with incompatible operation')
}
this.insertion += other.insertion
// We already have the same tracking info and commentIds
if (this.tracking != null && other.tracking != null) {
this.tracking = this.tracking.mergeWith(other.tracking)
}
// We already have the same commentIds
}
/**
@ -306,9 +309,13 @@ class RetainOp extends ScanOp {
return false
}
if (this.tracking) {
return this.tracking.equals(other.tracking)
if (!other.tracking || !this.tracking.canMergeWith(other.tracking)) {
return false
}
} else if (other.tracking) {
return false
}
return !other.tracking
return true
}
/**
@ -319,6 +326,9 @@ class RetainOp extends ScanOp {
throw new Error('Cannot merge with incompatible operation')
}
this.length += other.length
if (this.tracking != null && other.tracking != null) {
this.tracking = this.tracking.mergeWith(other.tracking)
}
}
/**

View file

@ -56,18 +56,34 @@ class TextOperation extends EditOperation {
constructor() {
super()
// When an operation is applied to an input string, you can think of this as
// if an imaginary cursor runs over the entire string and skips over some
// parts, removes some parts and inserts characters at some positions. These
// actions (skip/remove/insert) are stored as an array in the "ops" property.
/** @type {ScanOp[]} */
/**
* When an operation is applied to an input string, you can think of this as
* if an imaginary cursor runs over the entire string and skips over some
* parts, removes some parts and inserts characters at some positions. These
* actions (skip/remove/insert) are stored as an array in the "ops" property.
* @type {ScanOp[]}
*/
this.ops = []
// An operation's baseLength is the length of every string the operation
// can be applied to.
/**
* An operation's baseLength is the length of every string the operation
* can be applied to.
*/
this.baseLength = 0
// The targetLength is the length of every string that results from applying
// the operation on a valid input string.
/**
* The targetLength is the length of every string that results from applying
* the operation on a valid input string.
*/
this.targetLength = 0
/**
* The expected content hash after this operation is applied
*
* @type {string | null}
*/
this.contentHash = null
}
/**
@ -223,7 +239,12 @@ class TextOperation extends EditOperation {
* @returns {RawTextOperation}
*/
toJSON() {
return { textOperation: this.ops.map(op => op.toJSON()) }
/** @type {RawTextOperation} */
const json = { textOperation: this.ops.map(op => op.toJSON()) }
if (this.contentHash != null) {
json.contentHash = this.contentHash
}
return json
}
/**
@ -231,7 +252,7 @@ class TextOperation extends EditOperation {
* @param {RawTextOperation} obj
* @returns {TextOperation}
*/
static fromJSON = function ({ textOperation: ops }) {
static fromJSON = function ({ textOperation: ops, contentHash }) {
const o = new TextOperation()
for (const op of ops) {
if (isRetain(op)) {
@ -250,6 +271,9 @@ class TextOperation extends EditOperation {
throw new UnprocessableError('unknown operation: ' + JSON.stringify(op))
}
}
if (contentHash != null) {
o.contentHash = contentHash
}
return o
}
@ -290,25 +314,18 @@ class TextOperation extends EditOperation {
str
)
}
file.trackedChanges.applyRetain(result.length, op.length, {
tracking: op.tracking,
})
result += str.slice(inputCursor, inputCursor + op.length)
inputCursor += op.length
} else if (op instanceof InsertOp) {
if (containsNonBmpChars(op.insertion)) {
throw new InvalidInsertionError(str, op.toJSON())
}
file.trackedChanges.applyInsert(result.length, op.insertion, {
tracking: op.tracking,
})
file.comments.applyInsert(
new Range(result.length, op.insertion.length),
{ commentIds: op.commentIds }
)
result += op.insertion
} else if (op instanceof RemoveOp) {
file.trackedChanges.applyDelete(result.length, op.length)
file.comments.applyDelete(new Range(result.length, op.length))
inputCursor += op.length
} else {
@ -328,6 +345,8 @@ class TextOperation extends EditOperation {
throw new TextOperation.TooLongError(operation, result.length)
}
file.trackedChanges.applyTextOperation(this)
file.content = result
}
@ -376,44 +395,36 @@ class TextOperation extends EditOperation {
for (let i = 0, l = ops.length; i < l; i++) {
const op = ops[i]
if (op instanceof RetainOp) {
// Where we need to end up after the retains
const target = strIndex + op.length
// A previous retain could have overriden some tracking info. Now we
// need to restore it.
const previousRanges = previousState.trackedChanges.inRange(
new Range(strIndex, op.length)
)
let removeTrackingInfoIfNeeded
if (op.tracking) {
removeTrackingInfoIfNeeded = new ClearTrackingProps()
}
// Where we need to end up after the retains
const target = strIndex + op.length
// A previous retain could have overriden some tracking info. Now we
// need to restore it.
const previousChanges = previousState.trackedChanges.intersectRange(
new Range(strIndex, op.length)
)
for (const trackedChange of previousRanges) {
if (strIndex < trackedChange.range.start) {
inverse.retain(trackedChange.range.start - strIndex, {
tracking: removeTrackingInfoIfNeeded,
for (const change of previousChanges) {
if (strIndex < change.range.start) {
inverse.retain(change.range.start - strIndex, {
tracking: new ClearTrackingProps(),
})
strIndex = change.range.start
}
inverse.retain(change.range.length, {
tracking: change.tracking,
})
strIndex = trackedChange.range.start
strIndex += change.range.length
}
if (trackedChange.range.end < strIndex + op.length) {
inverse.retain(trackedChange.range.length, {
tracking: trackedChange.tracking,
if (strIndex < target) {
inverse.retain(target - strIndex, {
tracking: new ClearTrackingProps(),
})
strIndex = trackedChange.range.end
strIndex = target
}
if (trackedChange.range.end !== strIndex) {
// No need to split the range at the end
const [left] = trackedChange.range.splitAt(strIndex)
inverse.retain(left.length, { tracking: trackedChange.tracking })
strIndex = left.end
}
}
if (strIndex < target) {
inverse.retain(target - strIndex, {
tracking: removeTrackingInfoIfNeeded,
})
strIndex = target
} else {
inverse.retain(op.length)
strIndex += op.length
}
} else if (op instanceof InsertOp) {
inverse.remove(op.insertion.length)

View file

@ -86,10 +86,32 @@ class Range {
}
/**
* @param {Range} range
* Does this range overlap another range?
*
* Overlapping means that the two ranges have at least one character in common
*
* @param {Range} other - the other range
*/
overlaps(range) {
return this.start < range.end && this.end > range.start
overlaps(other) {
return this.start < other.end && this.end > other.start
}
/**
* Does this range overlap the start of another range?
*
* @param {Range} other - the other range
*/
overlapsStart(other) {
return this.start <= other.start && this.end > other.start
}
/**
* Does this range overlap the end of another range?
*
* @param {Range} other - the other range
*/
overlapsEnd(other) {
return this.start < other.end && this.end >= other.end
}
/**
@ -227,6 +249,26 @@ class Range {
)
return [rangeUpToCursor, rangeAfterCursor]
}
/**
* Returns the intersection of this range with another range
*
* @param {Range} other - the other range
* @return {Range | null} the intersection or null if the intersection is empty
*/
intersect(other) {
if (this.contains(other)) {
return other
} else if (other.contains(this)) {
return this
} else if (other.overlapsStart(this)) {
return new Range(this.pos, other.end - this.start)
} else if (other.overlapsEnd(this)) {
return new Range(other.pos, this.end - other.start)
} else {
return null
}
}
}
module.exports = Range

View file

@ -64,17 +64,57 @@ function cleanPart(filename) {
* @return {String}
*/
exports.clean = function (pathname) {
return exports.cleanDebug(pathname)[0]
}
/**
* See clean
* @param {string} pathname
* @return {[string,string]}
*/
exports.cleanDebug = function (pathname) {
let prev = pathname
let reason = ''
/**
* @param {string} label
*/
function recordReasonIfChanged(label) {
if (pathname === prev) return
if (reason) reason += ','
reason += label
prev = pathname
}
pathname = path.normalize(pathname)
pathname = pathname.replace(/\\/g, '/') // workaround for IE
pathname = pathname.replace(/\/+/g, '/') // no multiple slashes
pathname = pathname.replace(/^(\/.*)$/, '_$1') // no leading /
pathname = pathname.replace(/^(.+)\/$/, '$1') // no trailing /
pathname = pathname.replace(/^ *(.*)$/, '$1') // no leading spaces
pathname = pathname.replace(/^(.*[^ ]) *$/, '$1') // no trailing spaces
recordReasonIfChanged('normalize')
pathname = pathname.replace(/\\/g, '/')
recordReasonIfChanged('workaround for IE')
pathname = pathname.replace(/\/+/g, '/')
recordReasonIfChanged('no multiple slashes')
pathname = pathname.replace(/^(\/.*)$/, '_$1')
recordReasonIfChanged('no leading /')
pathname = pathname.replace(/^(.+)\/$/, '$1')
recordReasonIfChanged('no trailing /')
pathname = pathname.replace(/^ *(.*)$/, '$1')
recordReasonIfChanged('no leading spaces')
pathname = pathname.replace(/^(.*[^ ]) *$/, '$1')
recordReasonIfChanged('no trailing spaces')
if (pathname.length === 0) pathname = '_'
recordReasonIfChanged('empty')
pathname = pathname.split('/').map(cleanPart).join('/')
recordReasonIfChanged('cleanPart')
pathname = pathname.replace(BLOCKED_FILE_RX, '@$1')
return pathname
recordReasonIfChanged('BLOCKED_FILE_RX')
return [pathname, reason]
}
/**
@ -84,9 +124,19 @@ exports.clean = function (pathname) {
* @return {Boolean}
*/
exports.isClean = function pathnameIsClean(pathname) {
return (
exports.clean(pathname) === pathname &&
pathname.length <= MAX_PATH &&
pathname.length > 0
)
return exports.isCleanDebug(pathname)[0]
}
/**
* A pathname is clean (see clean) and not too long.
*
* @param {string} pathname
* @return {[boolean,string]}
*/
exports.isCleanDebug = function (pathname) {
if (pathname.length > MAX_PATH) return [false, 'MAX_PATH']
if (pathname.length === 0) return [false, 'empty']
const [cleanPathname, reason] = exports.cleanDebug(pathname)
if (cleanPathname !== pathname) return [false, reason]
return [true, '']
}

View file

@ -224,7 +224,7 @@ class Snapshot {
*
* @param {string} kind see {File#load}
* @param {ReadonlyBlobStore} blobStore
* @return {Promise<Object>} an object where keys are the pathnames and
* @return {Promise<Record<string, File>>} an object where keys are the pathnames and
* values are the files in the snapshot
*/
async loadFiles(kind, blobStore) {

View file

@ -132,6 +132,7 @@ export type RawScanOp = RawInsertOp | RawRemoveOp | RawRetainOp
export type RawTextOperation = {
textOperation: RawScanOp[]
contentHash?: string
}
export type RawAddCommentOperation = {

View file

@ -20,7 +20,7 @@
"@types/check-types": "^7.3.7",
"@types/path-browserify": "^1.0.2",
"chai": "^3.3.0",
"mocha": "^10.2.0",
"mocha": "^11.1.0",
"sinon": "^9.2.4",
"typescript": "^5.0.4"
},

View file

@ -193,4 +193,13 @@ describe('LazyStringFileData', function () {
expect(fileData.getStringLength()).to.equal(longString.length)
expect(fileData.getOperations()).to.have.length(1)
})
it('truncates its operations after being stored', async function () {
const testHash = File.EMPTY_FILE_HASH
const fileData = new LazyStringFileData(testHash, undefined, 0)
fileData.edit(new TextOperation().insert('abc'))
const stored = await fileData.store(this.blobStore)
expect(fileData.hash).to.equal(stored.hash)
expect(fileData.operations).to.deep.equal([])
})
})

View file

@ -1,4 +1,3 @@
// @ts-check
'use strict'
const { expect } = require('chai')
@ -449,4 +448,44 @@ describe('Range', function () {
expect(() => range.insertAt(16, 3)).to.throw()
})
})
describe('intersect', function () {
it('should handle partially overlapping ranges', function () {
const range1 = new Range(5, 10)
const range2 = new Range(3, 6)
const intersection1 = range1.intersect(range2)
expect(intersection1.pos).to.equal(5)
expect(intersection1.length).to.equal(4)
const intersection2 = range2.intersect(range1)
expect(intersection2.pos).to.equal(5)
expect(intersection2.length).to.equal(4)
})
it('should intersect with itself', function () {
const range = new Range(5, 10)
const intersection = range.intersect(range)
expect(intersection.pos).to.equal(5)
expect(intersection.length).to.equal(10)
})
it('should handle nested ranges', function () {
const range1 = new Range(5, 10)
const range2 = new Range(7, 2)
const intersection1 = range1.intersect(range2)
expect(intersection1.pos).to.equal(7)
expect(intersection1.length).to.equal(2)
const intersection2 = range2.intersect(range1)
expect(intersection2.pos).to.equal(7)
expect(intersection2.length).to.equal(2)
})
it('should handle disconnected ranges', function () {
const range1 = new Range(5, 10)
const range2 = new Range(20, 30)
const intersection1 = range1.intersect(range2)
expect(intersection1).to.be.null
const intersection2 = range2.intersect(range1)
expect(intersection2).to.be.null
})
})
})

View file

@ -5,10 +5,11 @@ const ot = require('..')
const safePathname = ot.safePathname
describe('safePathname', function () {
function expectClean(input, output) {
function expectClean(input, output, reason = '') {
// check expected output and also idempotency
const cleanedInput = safePathname.clean(input)
const [cleanedInput, gotReason] = safePathname.cleanDebug(input)
expect(cleanedInput).to.equal(output)
expect(gotReason).to.equal(reason)
expect(safePathname.clean(cleanedInput)).to.equal(cleanedInput)
expect(safePathname.isClean(cleanedInput)).to.be.true
}
@ -22,44 +23,56 @@ describe('safePathname', function () {
expect(safePathname.isClean('rm -rf /')).to.be.falsy
// replace invalid characters with underscores
expectClean('test-s*\u0001\u0002m\u0007st\u0008.jpg', 'test-s___m_st_.jpg')
expectClean(
'test-s*\u0001\u0002m\u0007st\u0008.jpg',
'test-s___m_st_.jpg',
'cleanPart'
)
// keep slashes, normalize paths, replace ..
expectClean('./foo', 'foo')
expectClean('../foo', '__/foo')
expectClean('foo/./bar', 'foo/bar')
expectClean('foo/../bar', 'bar')
expectClean('../../tricky/foo.bar', '__/__/tricky/foo.bar')
expectClean('foo/../../tricky/foo.bar', '__/tricky/foo.bar')
expectClean('foo/bar/../../tricky/foo.bar', 'tricky/foo.bar')
expectClean('foo/bar/baz/../../tricky/foo.bar', 'foo/tricky/foo.bar')
expectClean('./foo', 'foo', 'normalize')
expectClean('../foo', '__/foo', 'cleanPart')
expectClean('foo/./bar', 'foo/bar', 'normalize')
expectClean('foo/../bar', 'bar', 'normalize')
expectClean('../../tricky/foo.bar', '__/__/tricky/foo.bar', 'cleanPart')
expectClean(
'foo/../../tricky/foo.bar',
'__/tricky/foo.bar',
'normalize,cleanPart'
)
expectClean('foo/bar/../../tricky/foo.bar', 'tricky/foo.bar', 'normalize')
expectClean(
'foo/bar/baz/../../tricky/foo.bar',
'foo/tricky/foo.bar',
'normalize'
)
// remove illegal chars even when there is no extension
expectClean('**foo', '__foo')
expectClean('**foo', '__foo', 'cleanPart')
// remove windows file paths
expectClean('c:\\temp\\foo.txt', 'c:/temp/foo.txt')
expectClean('c:\\temp\\foo.txt', 'c:/temp/foo.txt', 'workaround for IE')
// do not allow a leading slash (relative paths only)
expectClean('/foo', '_/foo')
expectClean('//foo', '_/foo')
expectClean('/foo', '_/foo', 'no leading /')
expectClean('//foo', '_/foo', 'normalize,no leading /')
// do not allow multiple leading slashes
expectClean('//foo', '_/foo')
expectClean('//foo', '_/foo', 'normalize,no leading /')
// do not allow a trailing slash
expectClean('/', '_')
expectClean('foo/', 'foo')
expectClean('foo.tex/', 'foo.tex')
expectClean('/', '_', 'no leading /,no trailing /')
expectClean('foo/', 'foo', 'no trailing /')
expectClean('foo.tex/', 'foo.tex', 'no trailing /')
// do not allow multiple trailing slashes
expectClean('//', '_')
expectClean('///', '_')
expectClean('foo//', 'foo')
expectClean('//', '_', 'normalize,no leading /,no trailing /')
expectClean('///', '_', 'normalize,no leading /,no trailing /')
expectClean('foo//', 'foo', 'normalize,no trailing /')
// file and folder names that consist of . and .. are not OK
expectClean('.', '_')
expectClean('..', '__')
expectClean('.', '_', 'cleanPart')
expectClean('..', '__', 'cleanPart')
// we will allow name with more dots e.g. ... and ....
expectClean('...', '...')
expectClean('....', '....')
@ -82,10 +95,10 @@ describe('safePathname', function () {
expectClean('a b.png', 'a b.png')
// leading and trailing spaces are not OK
expectClean(' foo', 'foo')
expectClean(' foo', 'foo')
expectClean('foo ', 'foo')
expectClean('foo ', 'foo')
expectClean(' foo', 'foo', 'no leading spaces')
expectClean(' foo', 'foo', 'no leading spaces')
expectClean('foo ', 'foo', 'no trailing spaces')
expectClean('foo ', 'foo', 'no trailing spaces')
// reserved file names on Windows should not be OK, but we already have
// some in the old system, so have to allow them for now
@ -100,14 +113,14 @@ describe('safePathname', function () {
// there's no particular reason to allow multiple slashes; sometimes people
// seem to rename files to URLs (https://domain/path) in an attempt to
// upload a file, and this results in an empty directory name
expectClean('foo//bar.png', 'foo/bar.png')
expectClean('foo///bar.png', 'foo/bar.png')
expectClean('foo//bar.png', 'foo/bar.png', 'normalize')
expectClean('foo///bar.png', 'foo/bar.png', 'normalize')
// Check javascript property handling
expectClean('foo/prototype', 'foo/prototype') // OK as part of a pathname
expectClean('prototype/test.txt', 'prototype/test.txt')
expectClean('prototype', '@prototype') // not OK as whole pathname
expectClean('hasOwnProperty', '@hasOwnProperty')
expectClean('**proto**', '@__proto__')
expectClean('prototype', '@prototype', 'BLOCKED_FILE_RX') // not OK as whole pathname
expectClean('hasOwnProperty', '@hasOwnProperty', 'BLOCKED_FILE_RX')
expectClean('**proto**', '@__proto__', 'cleanPart,BLOCKED_FILE_RX')
})
})

View file

@ -107,7 +107,7 @@ describe('RetainOp', function () {
expect(op1.equals(new RetainOp(3))).to.be.true
})
it('cannot merge with another RetainOp if tracking info is different', function () {
it('cannot merge with another RetainOp if the tracking user is different', function () {
const op1 = new RetainOp(
4,
new TrackingProps('insert', 'user1', new Date('2024-01-01T00:00:00.000Z'))
@ -120,14 +120,14 @@ describe('RetainOp', function () {
expect(() => op1.mergeWith(op2)).to.throw(Error)
})
it('can merge with another RetainOp if tracking info is the same', function () {
it('can merge with another RetainOp if the tracking user is the same', function () {
const op1 = new RetainOp(
4,
new TrackingProps('insert', 'user1', new Date('2024-01-01T00:00:00.000Z'))
)
const op2 = new RetainOp(
4,
new TrackingProps('insert', 'user1', new Date('2024-01-01T00:00:00.000Z'))
new TrackingProps('insert', 'user1', new Date('2024-01-01T00:00:01.000Z'))
)
op1.mergeWith(op2)
expect(
@ -310,7 +310,7 @@ describe('InsertOp', function () {
expect(() => op1.mergeWith(op2)).to.throw(Error)
})
it('cannot merge with another InsertOp if tracking info is different', function () {
it('cannot merge with another InsertOp if tracking user is different', function () {
const op1 = new InsertOp(
'a',
new TrackingProps('insert', 'user1', new Date('2024-01-01T00:00:00.000Z'))
@ -323,7 +323,7 @@ describe('InsertOp', function () {
expect(() => op1.mergeWith(op2)).to.throw(Error)
})
it('can merge with another InsertOp if tracking and comment info is the same', function () {
it('can merge with another InsertOp if tracking user and comment info is the same', function () {
const op1 = new InsertOp(
'a',
new TrackingProps(
@ -338,7 +338,7 @@ describe('InsertOp', function () {
new TrackingProps(
'insert',
'user1',
new Date('2024-01-01T00:00:00.000Z')
new Date('2024-01-01T00:00:01.000Z')
),
['1', '2']
)

View file

@ -322,6 +322,47 @@ describe('TextOperation', function () {
new TextOperation().retain(4).remove(4).retain(3)
)
})
it('undoing a tracked delete restores the tracked changes', function () {
expectInverseToLeadToInitialState(
new StringFileData(
'the quick brown fox jumps over the lazy dog',
undefined,
[
{
range: { pos: 5, length: 5 },
tracking: {
ts: '2023-01-01T00:00:00.000Z',
type: 'insert',
userId: 'user1',
},
},
{
range: { pos: 12, length: 3 },
tracking: {
ts: '2023-01-01T00:00:00.000Z',
type: 'delete',
userId: 'user1',
},
},
{
range: { pos: 18, length: 5 },
tracking: {
ts: '2023-01-01T00:00:00.000Z',
type: 'insert',
userId: 'user1',
},
},
]
),
new TextOperation()
.retain(7)
.retain(13, {
tracking: new TrackingProps('delete', 'user1', new Date()),
})
.retain(23)
)
})
})
describe('compose', function () {

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,3 +0,0 @@
# managed by monorepo$ bin/update_build_scripts
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -1,10 +1,10 @@
promise-utils
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -13,6 +13,7 @@ module.exports = {
expressify,
expressifyErrorHandler,
promiseMapWithLimit,
promiseMapSettledWithLimit,
}
/**
@ -264,3 +265,19 @@ async function promiseMapWithLimit(concurrency, array, fn) {
const limit = pLimit(concurrency)
return await Promise.all(array.map(x => limit(() => fn(x))))
}
/**
* Map values in `array` with the async function `fn`
*
* Limit the number of unresolved promises to `concurrency`.
*
* @template T, U
* @param {number} concurrency
* @param {Array<T>} array
* @param {(T) => Promise<U>} fn
* @return {Promise<Array<PromiseSettledResult<U>>>}
*/
function promiseMapSettledWithLimit(concurrency, array, fn) {
const limit = pLimit(concurrency)
return Promise.allSettled(array.map(x => limit(() => fn(x))))
}

View file

@ -18,7 +18,7 @@
"devDependencies": {
"chai": "^4.3.10",
"chai-as-promised": "^7.1.1",
"mocha": "^10.2.0",
"mocha": "^11.1.0",
"typescript": "^5.0.4"
},
"dependencies": {

View file

@ -1 +0,0 @@
node_modules/

View file

@ -1,13 +0,0 @@
**.swp
app.js
app/js/
test/unit/js/
public/build/
node_modules/
/public/js/chat.js
plato/
.npmrc

View file

@ -1 +1 @@
20.18.0
22.17.0

View file

@ -1,10 +1,10 @@
ranges-tracker
--dependencies=None
--docker-repos=gcr.io/overleaf-ops
--docker-repos=us-east1-docker.pkg.dev/overleaf-ops/ol-docker
--env-add=
--env-pass-through=
--esmock-loader=False
--is-library=True
--node-version=20.18.0
--node-version=22.17.0
--public-repo=False
--script-version=4.5.0
--script-version=4.7.0

View file

@ -145,11 +145,7 @@ class RangesTracker {
}
removeChangeId(changeId) {
const change = this.getChange(changeId)
if (change == null) {
return
}
this._removeChange(change)
this.removeChangeIds([changeId])
}
removeChangeIds(ids) {
@ -316,7 +312,7 @@ class RangesTracker {
const movedChanges = []
const removeChanges = []
const newChanges = []
const trackedDeletesAtOpPosition = []
for (let i = 0; i < this.changes.length; i++) {
change = this.changes[i]
const changeStart = change.op.p
@ -327,13 +323,15 @@ class RangesTracker {
change.op.p += opLength
movedChanges.push(change)
} else if (opStart === changeStart) {
// If we are undoing, then we want to cancel any existing delete ranges if we can.
// Check if the insert matches the start of the delete, and just remove it from the delete instead if so.
if (
!alreadyMerged &&
undoing &&
change.op.d.length >= op.i.length &&
change.op.d.slice(0, op.i.length) === op.i
) {
// If we are undoing, then we want to reject any existing tracked delete if we can.
// Check if the insert matches the start of the delete, and just
// remove it from the delete instead if so.
change.op.d = change.op.d.slice(op.i.length)
change.op.p += op.i.length
if (change.op.d === '') {
@ -342,9 +340,25 @@ class RangesTracker {
movedChanges.push(change)
}
alreadyMerged = true
// Any tracked delete that came before this tracked delete
// rejection was moved after the incoming insert. Move them back
// so that they appear before the tracked delete rejection.
for (const trackedDelete of trackedDeletesAtOpPosition) {
trackedDelete.op.p -= opLength
}
} else {
// We're not rejecting that tracked delete. Move it after the
// insert.
change.op.p += opLength
movedChanges.push(change)
// Keep track of tracked deletes that are at the same position as the
// insert. If we find a tracked delete to reject, we'll want to
// reposition them.
if (!alreadyMerged) {
trackedDeletesAtOpPosition.push(change)
}
}
}
} else if (change.op.i != null) {
@ -624,9 +638,11 @@ class RangesTracker {
}
_addOp(op, metadata) {
// Don't take a reference to the existing op since we'll modify this in place with future changes
op = this._clone(op)
const change = {
id: this.newId(),
op: this._clone(op), // Don't take a reference to the existing op since we'll modify this in place with future changes
op,
metadata: this._clone(metadata),
}
this.changes.push(change)
@ -649,7 +665,7 @@ class RangesTracker {
}
_removeChange(change) {
this.changes = this.changes.filter(c => c.id !== change.id)
this.changes = this.changes.filter(c => c !== change)
this._markAsDirty(change, 'change', 'removed')
}

View file

@ -20,7 +20,7 @@
},
"devDependencies": {
"chai": "^4.3.6",
"mocha": "^10.2.0",
"mocha": "^11.1.0",
"typescript": "^5.0.4"
}
}

View file

@ -4,6 +4,7 @@ const RangesTracker = require('../..')
describe('RangesTracker', function () {
describe('with duplicate change ids', function () {
beforeEach(function () {
this.comments = []
this.changes = [
{ id: 'id1', op: { p: 1, i: 'hello' } },
{ id: 'id2', op: { p: 10, i: 'world' } },
@ -26,4 +27,199 @@ describe('RangesTracker', function () {
expect(this.rangesTracker.changes).to.deep.equal([this.changes[2]])
})
})
describe('with duplicate tracked insert ids', function () {
beforeEach(function () {
this.comments = []
this.changes = [
{ id: 'id1', op: { p: 10, i: 'one' } },
{ id: 'id1', op: { p: 20, i: 'two' } },
{ id: 'id1', op: { p: 30, d: 'three' } },
]
this.rangesTracker = new RangesTracker(this.changes, this.comments)
})
it("deleting one tracked insert doesn't delete the others", function () {
this.rangesTracker.applyOp({ p: 20, d: 'two' })
expect(this.rangesTracker.changes).to.deep.equal([
this.changes[0],
this.changes[2],
])
})
})
describe('with duplicate tracked delete ids', function () {
beforeEach(function () {
this.comments = []
this.changes = [
{ id: 'id1', op: { p: 10, d: 'one' } },
{ id: 'id1', op: { p: 20, d: 'two' } },
{ id: 'id1', op: { p: 30, d: 'three' } },
]
this.rangesTracker = new RangesTracker(this.changes, this.comments)
})
it('deleting over tracked deletes in tracked changes mode removes the tracked deletes covered', function () {
this.rangesTracker.track_changes = true
this.rangesTracker.applyOp({
p: 15,
d: '567890123456789012345',
})
expect(this.rangesTracker.changes.map(c => c.op)).to.deep.equal([
{ p: 10, d: 'one' },
{ p: 15, d: '56789two0123456789three012345' },
])
})
it('a tracked delete between two tracked deletes joins them into a single tracked delete', function () {
this.rangesTracker.track_changes = true
this.rangesTracker.applyOp({
p: 20,
d: '0123456789',
})
expect(this.rangesTracker.changes.map(c => c.op)).to.deep.equal([
{ p: 10, d: 'one' },
{ p: 20, d: 'two0123456789three' },
])
})
it("rejecting one tracked delete doesn't reject the others", function () {
this.rangesTracker.track_changes = true
this.rangesTracker.applyOp({
p: 20,
i: 'two',
u: true,
})
expect(this.rangesTracker.changes.map(c => c.op)).to.deep.equal([
{ p: 10, d: 'one' },
{ p: 33, d: 'three' },
])
})
it("rejecting all tracked deletes doesn't introduce tracked inserts", function () {
this.rangesTracker.track_changes = true
this.rangesTracker.applyOp({
p: 10,
i: 'one',
u: true,
})
this.rangesTracker.applyOp({
p: 23,
i: 'two',
u: true,
})
this.rangesTracker.applyOp({
p: 36,
i: 'three',
u: true,
})
expect(this.rangesTracker.changes.map(c => c.op)).to.deep.equal([])
})
})
describe('with multiple tracked deletes at the same position', function () {
beforeEach(function () {
this.comments = []
this.changes = [
{ id: 'id1', op: { p: 33, d: 'before' } },
{ id: 'id2', op: { p: 50, d: 'right before' } },
{ id: 'id3', op: { p: 50, d: 'this one' } },
{ id: 'id4', op: { p: 50, d: 'right after' } },
{ id: 'id5', op: { p: 75, d: 'long after' } },
]
this.rangesTracker = new RangesTracker(this.changes, this.comments)
})
it('preserves the text order when rejecting changes', function () {
this.rangesTracker.applyOp(
{ p: 50, i: 'this one', u: true },
{ user_id: 'user-id' }
)
expect(this.rangesTracker.changes).to.deep.equal([
{ id: 'id1', op: { p: 33, d: 'before' } },
{ id: 'id2', op: { p: 50, d: 'right before' } },
{ id: 'id4', op: { p: 58, d: 'right after' } },
{ id: 'id5', op: { p: 83, d: 'long after' } },
])
})
it('moves all tracked deletes after the insert if not rejecting changes', function () {
this.rangesTracker.applyOp(
{ p: 50, i: 'some other text', u: true, orderedRejections: true },
{ user_id: 'user-id' }
)
expect(this.rangesTracker.changes).to.deep.equal([
{ id: 'id1', op: { p: 33, d: 'before' } },
{ id: 'id2', op: { p: 65, d: 'right before' } },
{ id: 'id3', op: { p: 65, d: 'this one' } },
{ id: 'id4', op: { p: 65, d: 'right after' } },
{ id: 'id5', op: { p: 90, d: 'long after' } },
])
})
})
describe('with multiple tracked deletes at the same position with the same content', function () {
beforeEach(function () {
this.comments = []
this.changes = [
{ id: 'id1', op: { p: 10, d: 'cat' } },
{ id: 'id2', op: { p: 10, d: 'giraffe' } },
{ id: 'id3', op: { p: 10, d: 'cat' } },
{ id: 'id4', op: { p: 10, d: 'giraffe' } },
]
this.rangesTracker = new RangesTracker(this.changes, this.comments)
})
it('removes only the first matching tracked delete', function () {
this.rangesTracker.applyOp(
{ p: 10, i: 'giraffe', u: true },
{ user_id: 'user-id' }
)
expect(this.rangesTracker.changes).to.deep.equal([
{ id: 'id1', op: { p: 10, d: 'cat' } },
{ id: 'id3', op: { p: 17, d: 'cat' } },
{ id: 'id4', op: { p: 17, d: 'giraffe' } },
])
})
})
describe('with a tracked insert at the same position as a tracked delete', function () {
beforeEach(function () {
this.comments = []
this.changes = [
{
id: 'id1',
op: { p: 5, d: 'before' },
metadata: { user_id: 'user-id' },
},
{
id: 'id2',
op: { p: 10, d: 'delete' },
metadata: { user_id: 'user-id' },
},
{
id: 'id3',
op: { p: 10, i: 'insert' },
metadata: { user_id: 'user-id' },
},
]
this.rangesTracker = new RangesTracker(this.changes, this.comments)
})
it('places a tracked insert at the same position before both the delete and the insert', function () {
this.rangesTracker.track_changes = true
this.rangesTracker.applyOp(
{ p: 10, i: 'incoming' },
{ user_id: 'user-id' }
)
expect(this.rangesTracker.changes.map(change => change.op)).to.deep.equal(
[
{ p: 5, d: 'before' },
{ p: 10, i: 'incoming' },
{ p: 18, d: 'delete' },
{ p: 18, i: 'insert' },
]
)
})
})
})

View file

@ -1 +0,0 @@
node_modules/

Some files were not shown because too many files have changed in this diff Show more