Commit Graph

1697 Commits

Author SHA1 Message Date
Olzhas Askar
823f11426b Merge pull request #33109 from overleaf/oa-upgrade-path
[web] Upgrade path

GitOrigin-RevId: 532993e613bdc42cf92a7b10e629aa94596d854e
2026-05-01 08:07:01 +00:00
Antoine Clausse
353c681d51 [web] Disable AI Assist add-on purchase for plans-2026-phase-1 users (#33178)
Users in the plans-2026-phase-1=enabled split test can no longer
purchase the AI Assist add-on via crafted HTTP requests. The preview
and purchase endpoints return 404/redirect for these users.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
GitOrigin-RevId: 2c75eb622cf44dc91019a692290ac646b51fd72c
2026-05-01 08:06:37 +00:00
Brian Gough
c19c25d113 Merge pull request #32874 from overleaf/bg-promisify-archive-manager
Promisify ArchiveManager

GitOrigin-RevId: 7a3ee3dfb2f07dc06ee894cfce0a9196622c878e
2026-05-01 08:06:05 +00:00
Brian Gough
eec3be362b Merge pull request #33172 from overleaf/bg-fix-project-upload-unlinks
fix: use fsPromises ins ProjectUploadController async functions for consistency
GitOrigin-RevId: beb858d9b6cf50431fb14626dfd7cddfaf093882
2026-05-01 08:05:52 +00:00
roo hutton
970bc85b78 Merge pull request #33247 from overleaf/rh-cio-fix-ai-group-enabled
Base group ai enabled cio attribute on group policy

GitOrigin-RevId: 2b2411aec3ffc694d2570e6031e9a876a1575e2c
2026-05-01 08:05:44 +00:00
Jimmy Domagala-Tang
41b96ec8d6 feat: ai quotas should reset when a new plan purchase is made or upgraded (#33095)
GitOrigin-RevId: 9034800e067426fc22f8f86f9d7309699797d02e
2026-04-30 08:06:30 +00:00
Jimmy Domagala-Tang
994932b8e3 [Web + Doc-Updater] Add track changes accepted notification (#32752)
* feat: update doc manager to return a list of contributors to the accepted change

* feat: add new notification type for accepting a tracked change

* update email with tracked changes accepted

* feat: update tests

* fix: feedback on consistent api and returns

* feat: adding new tests

* feat: self accepted changes shouldnt trigger notification, and using existing changesAccepted hook

* Add better subject and activity list for track change accepted (#33094)

* feat: add better activity list entry and subject header for accepted changes, to match other notifications

* feat: updating tests

* feat: updating accepting_user_id to just user_id

* fix: adding users in emailBuilder test to userCache

GitOrigin-RevId: 6114f77916b5f503b7bbbb5ca8fed99e58edc31b
2026-04-30 08:06:19 +00:00
Domagoj Kriskovic
117a783f21 [web] Add .py to defaultTextExtensions
GitOrigin-RevId: 0880c01f6e3b4267f6cb790a44c6094738ab2229
2026-04-30 08:05:30 +00:00
Olzhas Askar
7c0595f9a9 Merge pull request #32063 from overleaf/oa-group-plans
[web] Rename group plans

GitOrigin-RevId: 8a3097dc1724709b5d7b163e0f9d968c21d63831
2026-04-30 08:05:10 +00:00
Andrew Rumble
2f51ad5180 Merge pull request #32782 from overleaf/ar-allow-types-to-pass-through-for-parseReq
[web] fix typing of parseReq

GitOrigin-RevId: 6f10ed8682af7c999497e3a9fbd77a9d25bd7c28
2026-04-29 08:06:04 +00:00
Brian Gough
18b2308887 Merge pull request #32835 from overleaf/bg-fix-potential-race-condition-in-archive-manager
fix potential race condition in extractZipArchive

GitOrigin-RevId: 6dc77443e8a58172825d2b03645da05a9887e468
2026-04-28 08:07:26 +00:00
Simon Gardner
8a331bc943 fix: [web] managed group admins unable to re-subscribe (#29634)
GitOrigin-RevId: 5e3d46c39f4657fcc737403a80093b870bc42240
2026-04-28 08:06:27 +00:00
Kristina
b556fd40b5 [web] support email sender customization for email notifications (#33035)
GitOrigin-RevId: 9aa298c233c1f314ef3bdb381c20692bd0d4e212
2026-04-27 08:06:35 +00:00
Kristina
4db3982c08 [web] rename BaseWithHeaderEmailLayout -> BaseEmailLayout (#33026)
GitOrigin-RevId: 16967d34d5128a34ec9ddf382eb664e5a8e45065
2026-04-27 08:06:31 +00:00
Jessica Lawshe
7ff114bbef Merge pull request #32396 from overleaf/jel-unlink-sso
[web] Add button so user can unlink Commons SSO

GitOrigin-RevId: 46e0607549341a98beca3873ea63bf091a883e85
2026-04-24 08:06:48 +00:00
Davinder Singh
be5a7b56c8 [WEB + CLSI] Download as docx file feature (#32851)
* using CLSI logic for fetching the project contents and skip the .zip export

* Use unique conversion directory for project-to-docx export to avoid corrupting the shared compile
  directory when a compile runs concurrently

* Remove X-Accel-Buffering header — not needed as CLSI does not run behind nginx

* moving log before sending the data

* Return CLSI stream directly instead of buffering to disk on web

  Previously convertProjectToDocx wrote the CLSI response to a temp file
  on disk, then the controller read it back to stream to the client.
  Now the stream is returned directly and piped to the response,
  avoiding unnecessary disk I/O on the web server.

* Use href redirect for docx export instead of fetching blob into memory

* making functions and files more generic so they can be used in future for other documents exports as well

* adding export-docx split test

* adding unit tests

* adding cypress E2E test

* format:fix

* renaming the route to download from convert

* adding new icon for export docx button

* format:fix

* remove unused showExportDocumentErrorToast export and adding guard against invalid Content-Length header from CLSI

* format:fix

* refactor(clsi): move promisify(parse) into RequestParser

* refactor: generic conversion endpoint with type as route
  param

* refactor: use type→extension map for validated conversion types

* refactor(clsi): remove --standalone flag and fix rejection test

* fixing the href in cypress test

* renaming function

* adding type to Metrics.inc

* fix: rename exportProjectDocument, add WithLock wrapper and metrics type label

* format:fix

* fix: hide docx export from anonymous users and add WithLock wrapper

* format fix

* remove redundant Content-Length validation from DocumentConversionManager

* format:fix

* removing trailing icon

GitOrigin-RevId: e9764fefac2c4b625d23be9e942ea4a8b283c70d
2026-04-24 08:06:10 +00:00
Kristina
b6ec7945f4 [web] update copy in email notifications (#32912)
* add footerMessage to base email template
* add customized subject line and CTA
* add _getBundledActivityList

GitOrigin-RevId: e70c0955485b0892f31e20daa0430faef80b0d64
2026-04-23 08:07:01 +00:00
roo hutton
dece22ba92 Merge pull request #32871 from overleaf/rh-cio-comms-attributes
Expose remaining marketing properties to customer.io

GitOrigin-RevId: 6956e1faf90ecc650108404fe13b2f6de2eb4d0c
2026-04-23 08:06:04 +00:00
Mathias Jakobsen
1110172597 Merge pull request #32927 from overleaf/mj-themed-project-page-teardown
[web] Tear down new-user-system-overall-theme split test and themed-project-dashboard feature flag

GitOrigin-RevId: fe947a603266166332b73a5707bb6cbc9e3d03b9
2026-04-21 08:06:08 +00:00
Jakob Ackermann
4ce5620b1d [web] add metrics for mongo access in split test system (#32920)
GitOrigin-RevId: cd93401bace60c003a63914e2898cf1f0defdabc
2026-04-21 08:05:14 +00:00
Jakob Ackermann
d56477565c [web] deduplicate getting the project when loading the editor (#32762)
* [web] enable async local storage on all the endpoints

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

* [web] deduplicate getting the project when loading the editor

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

* [web] use ProjectAccess state for computing analytics segmentation

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

* [web] restore ownership of active flag and deferredTpdsFlushCounter

* [web] add missing await

* [web] update unit tests

* [web] add metrics for project access caching

* [web] add missing test mock

* [web] invalidate async local storage when changing project access

* [web] deduplicate project lookup when checking for token access

* [web] add helper function for getting cached ProjectAccess

* [web] add acceptance test for caching of ProjectAccess

* [web] account for saas-only project access in tests

* Revert "[web] enable async local storage on all the endpoints"

This reverts commit 1b82f3b935040e8cfd180d1f6bf4183a655580e2.

* [web] add async local storage to project endpoints in top-50

* [web] invalidate async local storage for project access from modules

Co-authored-by: Jessica Lawshe <jessica.lawshe@overleaf.com>

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
Co-authored-by: Jessica Lawshe <jessica.lawshe@overleaf.com>
GitOrigin-RevId: 3eea7956b24e6f937dc1c17948681063d4dca3ea
2026-04-17 08:07:08 +00:00
roo hutton
c02ba36b83 Merge pull request #32594 from overleaf/rh-cio-migration-mapping
Add customer.io fields for migration comms and marketing initiatives

GitOrigin-RevId: f11ffee255d9582cbfd4c7e285bd6690c0cf1e3c
2026-04-17 08:05:47 +00:00
Jakob Ackermann
917d2700c8 [web] use a global shared mock for the metrics module (#32799)
GitOrigin-RevId: 72874ba6c06c2a602b01cc029bc9c71ce3ce8892
2026-04-15 08:05:38 +00:00
Brian Gough
e9b50b08bf Merge pull request #32776 from overleaf/bg-record-file-source-in-filenames
record upload type in temporary filenames

GitOrigin-RevId: 83232be85ad58e03b1ce9da4bb7de54f7a7cfdb0
2026-04-15 08:05:34 +00:00
Brian Gough
3f75f35a8e Merge pull request #32766 from overleaf/bg-add-missing-unit-test-mocks
add missing mocks for @overleaf/metrics in unit tests

GitOrigin-RevId: 0903c3e26f88f92ef816a64f14ad053f159b31ed
2026-04-14 08:04:46 +00:00
Anna Claire Fields
2487b73962 Implement sanitization of control characters in user input for hackerone (#32521)
GitOrigin-RevId: 859299da44b1c60220592c8f71a90536a5aa34a3
2026-04-14 08:04:36 +00:00
roo hutton
24b16c1304 Merge pull request #32611 from overleaf/rh-cio-email-sdk
Add identifiers to cio calls to avoid profile splits

GitOrigin-RevId: fec8cad4e87f8df910d729bd00acbf26d0931102
2026-04-13 08:04:18 +00:00
Mathias Jakobsen
78c81cd0d5 Merge pull request #32730 from overleaf/mj-conversion-compiler-luatex
[web] Use LuaLaTeX compiler for converted documents

GitOrigin-RevId: e9a0d2020ce40a0ada16eb9afae8b1a08933db49
2026-04-13 08:04:14 +00:00
Miguel Serrano
c83d37437d [web] Add collaboratorEmail data to group audit logs (#32644)
Added `collaboratorEmail`, extracted wither from the invite, or the User record for the `remove-collaborator` event.

GitOrigin-RevId: c6465ad6633a244ac58a487481a67abbb768ba78
2026-04-10 08:03:48 +00:00
Alexandre Bourdin
bf41ecdb39 Merge pull request #32633 from overleaf/ab-fix-flaky-project-getter-test
[web] Fix flaky ProjectGetter test (existUsersDebugProjectsOlderThan)

GitOrigin-RevId: 6963720fc06507425d3c9a44aeaa3d7b2e305d43
2026-04-08 08:05:11 +00:00
Thomas
77d3467761 Merge pull request #32606 from overleaf/revert-30426-jdt-promisify-institutions-api
Revert "Promisify InstitutionsApi"

GitOrigin-RevId: 6bf06bf4220833abb3927911ab3079caeb061c25
2026-04-03 08:05:46 +00:00
Jimmy Domagala-Tang
bcee2939d0 naive removal of callback code from InstitutionsAPI (#30426)
GitOrigin-RevId: 073127685720b85360362ecf08be9b037c0a098f
2026-03-31 08:07:57 +00:00
Mathias Jakobsen
9c97876268 [web]+clsi] Allow docx import via pandoc (#32004)
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 246b3290ec04867f71545b1a7c5d95d0f68379ff
2026-03-27 09:06:23 +00:00
Jimmy Domagala-Tang
72b7524094 Revert "Revert "Adding More Ai Quota Tiers"" (#32433)
* Revert "Revert "Adding More Ai Quota Tiers (#32128)" (#32431)"

This reverts commit f0ea19b418da6096c84b42024aea643807347649.

* fix: dont block workbench from users who have access via WF

* fix: simplify workbench access rules and ensure wf premium users can use workbench

GitOrigin-RevId: 7927248eadd906d7f802d55fa5c6bc7df162b141
2026-03-27 09:05:21 +00:00
l-obrien-overleaf
27e5044d30 Migrating reference settings to mongo and exposing them through code … (#31726)
* Migrating reference settings to mongo and exposing them through code mirror context

* removing undefined optional for reference manager type settings

* allowing partial updates to user settings objects, and remove repeated cypress intercepts

* Zod schema parsing for user reference manager settings

* Splitting ref provider mongoose schema into const

* Persisting local storage reference settings to mongo and deleting from local

* Enforcing ref provider group id to always be type string

* Fixing test and format errors

* Migrated flag for settings to only migrate once

* fixing cypress tests adding migrated flag

* persisting local storage to allow for easy rollback

GitOrigin-RevId: f59522bdee6f0e56efb7d98b9d9373a743619ec8
2026-03-26 09:07:40 +00:00
Alexandre Bourdin
671df33da3 Merge pull request #32244 from overleaf/ab-labs-in-feature-flags
[web] Merge Labs programme into the Feature flags system

GitOrigin-RevId: db75e07bf3272becc11ef1eeda3850098b3daa9d
2026-03-26 09:06:51 +00:00
Jimmy Domagala-Tang
6f3e0963b8 Revert "Adding More Ai Quota Tiers (#32128)" (#32431)
This reverts commit e3ef38797f267677cad51d7273272623027ca330.

GitOrigin-RevId: f0ea19b418da6096c84b42024aea643807347649
2026-03-26 09:06:42 +00:00
Jimmy Domagala-Tang
c87fd5c42e Adding More Ai Quota Tiers (#32128)
* feat: adding tiers for free and standard

* feat: updating feature calculation to account for more quota tiers

* feat: rename freeTrialQuota to freeQuota

* feat: add hasAiFreeTier and hasUnlimitedAi to editor, block free tier from using workbench

* fix: updating tests

* fix: updating ordering precedence for quota tiers

* feat: bump unlimited ai fair usage to 300 uses

* fix: update workbench quota usage for unlimited plans

* feat: bump features version for ai quota split

* feat: popover should only show for relevant users on workbench, and adding upgrade notification to ineligible users

GitOrigin-RevId: e3ef38797f267677cad51d7273272623027ca330
2026-03-26 09:06:37 +00:00
Jakob Ackermann
205573c01a [web] fetch file-tree in fallback to old compile mode (#32403)
* [web] fetch file-tree in fallback to old compile mode

* [web] tweak unit test

GitOrigin-RevId: 1c5f8cb1f0cb15c91efc46babec343d228631019
2026-03-24 09:06:22 +00:00
Antoine Clausse
f3fbfeab20 [web] Fix feature refresh handling in ProjectController (#32353)
* Update tests to check that refreshed features are used correctly

* Fix feature refresh handling in ProjectController

GitOrigin-RevId: 14c0cedf72f6cfe6657aa35fab16e319a37231e7
2026-03-23 09:06:09 +00:00
Domagoj Kriskovic
6486ef3e1e [web] Add deletedReason parameter to project deletion methods (#32221)
* [web] Add deletedReason parameter to project deletion methods

* revert sinon.match.any in ProjectDuplicator negative assertion

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
GitOrigin-RevId: d1595eefe0e36150231ee9646fe5eba0786fd1f5
2026-03-23 09:06:04 +00:00
Mathias Jakobsen
b87053a932 Merge pull request #32281 from overleaf/mj-remove-enableNewEditor
[web] Remove enableNewEditor settings

GitOrigin-RevId: cc33be59b8c2f5b0ba9e12a2fe9af9ccba7196e8
2026-03-23 09:05:55 +00:00
ilkin-overleaf
d61413e57d Merge pull request #31827 from overleaf/ii-project-sharing-access-denied
[web] Project sharing access denied redesign

GitOrigin-RevId: b1e3016eb7ef9e2a502e0b67abc3b10c08531fe9
2026-03-19 09:06:31 +00:00
Davinder Singh
b7f140ba0b Tear down cancellation-survey-ai-assist feature flag (#32129)
* tearing down the cancellation-survey-ai-assist

* fixing a failing test

GitOrigin-RevId: 592873217120c2b19f5dccd2575b56cce4d8f0b5
2026-03-16 11:56:39 +00:00
roo hutton
15714582e4 Merge pull request #32096 from overleaf/rh-rm-cio-integration-segmentation
Remove customerio-integration segmentation from all events

GitOrigin-RevId: 628772f61f2ace0fc6b6f4ddbabbab94057188ca
2026-03-10 09:06:17 +00:00
Copilot
27aac33259 Add .lean, .lean4, and .hs as editable/viewable file types (#31716)
GitOrigin-RevId: c3ee7592d0a1096ac96ca9514579c559d028b840
2026-03-09 09:05:48 +00:00
Jimmy Domagala-Tang
bb5d90a332 Add usage quota to Workbench (#31782)
* feat: adding usage rate limiting to workbench and aligning editor context values for suggestionsLeft

* feat: prepend word token to headers of token rate limiter to prevent confusion with usage rate limiter

* Shared AI paywalls (#31948)

* feat: renaming hasPremiumSuggestion and adding token limits to editor context and project load

* feat: adding new ai features paywall component

* feat: rename getRemainingFeatureUses to token based naming for token based limiter, removed checking for feature usage on anonymous users, and removed guard on null userId since we shouldnt be calling getRemainingFeatureUses on a nonexistent user

* feat: using token rate limit headers to set token rate values in editor context

* feat: update workbench to be available without refreshing if rate limit reset occurs within session

* fix: move paywall out of inert section

* Hide new paywalls behind FF and open plans page on upgrade attempt (#32023)

* feat: hide new paywalls behind FF

* feat: update ai paywall buttons to navigate to plans page post quota plans change release

* feat: showing a fair limit notificaiton pre-quota change, and updating paywall to not fire if user has premium already (#32056)

GitOrigin-RevId: 565fb128d55543fea34c383bc4abeaa3dd148d09
2026-03-06 09:17:52 +00:00
ilkin-overleaf
6539e26107 Merge pull request #31742 from overleaf/ii-project-sharing-join-project
[web] Join project page redesign

GitOrigin-RevId: d182ec4fb744f384f824c9e63b534da02a9f8e99
2026-03-06 09:17:16 +00:00
Jimmy Domagala-Tang
3fa5ce8b16 Add Shared Usage Quota to Writefull Functions (#31867)
* feat: moved error handling to controller, added config for each route, added usage rate limiter, and removed uneeded functions from manager

* feat: allow for 0 usage cost features in Writefull

* feat: update decrement to also use cost, and make cost optional, defaulting to 1

* feat: adding WF quota tests and updating tests for quota rate limiter (#31982)

* feat: adding WF quota tests and updating tests for quota rate limiter

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
GitOrigin-RevId: 281cb6b50b54c02f54a85a6492ca322ef8f00429
2026-03-06 09:14:46 +00:00
Jimmy Domagala-Tang
501e11a42a Move feature rate limiters to shared web folder (#31855)
* feat: remove old assist split test

* feat: moving featue rate limiters to main shared directory for use in multiple modules

* feat: base workbench rate limiter on a token specific base class

* feat: rename aiErrorAssistRateLimiter to AiFeatureUsageRateLimiter to better reflect its for our shared ai usage quota

GitOrigin-RevId: 89464d115b5904f6274756a7169e2b35945e2fc9
2026-03-06 09:13:40 +00:00