Commit Graph
137 Commits
Author SHA1 Message Date
Alf EatonandClaude Opus 4.8 98842d4659 Add Draw mode to the symbol palette (#34868)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
GitOrigin-RevId: 4ea4f97023e65fdb8b018f610f77d7dd107c8e76
2026-09-17 11:51:03 +00:00
Olzhas Askar f513b1aa52 Merge pull request #36302 from overleaf/oa-teardown-trial-ineligible-cta
[web] Teardown trial ineligible cta

GitOrigin-RevId: 4d114943bc2839b29b6eae3a133d6c235f98ffcc
2026-09-17 11:50:24 +00:00
David 761d4efc1f Merge pull request #36114 from overleaf/dp-merge-library-bibtex-flags
Merge bibtex-visual-editor into overleaf-library feature flags

GitOrigin-RevId: 26f8325d68367d0e33236e9f92ab6dc76f76987d
2026-09-17 11:48:08 +00:00
Tim Down 7895541382 Merge pull request #36141 from overleaf/oa-teardown-editor-upgrade-button-relocation
[web] Teardown `editor-upgrade-button-relocation`

GitOrigin-RevId: b6c53eef240ac2386907e0d0a942c674cfc9133b
2026-09-17 11:46:39 +00:00
Jimmy Domagala-Tang ba76fda37b Cleanup AiErrorAssistant todos post plans changes (#35067)
* feat: cleaning up ai quota leftovers

fix: removing more straggler invos

* fix: featureUpdater still need analyticsId in the user projection

* feat: updating cypress tests to also check for fair usage text

GitOrigin-RevId: 09c1167106c144084c111beea56867f6aa4a0906
2026-09-17 11:41:10 +00:00
Maria Florencia Besteiro Gonzalez 02d36687cd Merge pull request #35739 from overleaf/mfb-bring-main-bibliography-to-top-level
Bring main bibliography file to the top level settings

GitOrigin-RevId: 4c4d4927067995d947c6d0656425760ce56f9435
2026-09-17 11:36:48 +00:00
Brian Gough 8f5f86bce1 Merge pull request #35257 from overleaf/bg-png2pdf-premium
limit png2pdf to priority compiles

GitOrigin-RevId: a2b394efe6056ccbc6963d922f3e8b385645167b
2026-09-17 11:35:57 +00:00
Thomas 3fb3baf03a Merge pull request #34605 from overleaf/tm-request-access-redesign
[WEB] Request edit access in the new share modal

GitOrigin-RevId: d01cf4d038d5ce07c34deac0714b0cdad02136be
2026-09-17 11:34:55 +00:00
Olzhas Askar d29eefaa64 Merge pull request #35478 from overleaf/oa-paywall-ctas
[web] Paywall CTAs

GitOrigin-RevId: 26703fe008926db67473a43ef64addca0e23accd
2026-09-17 11:30:50 +00:00
Antoine Clausse 8f501c5eb7 [web] Fix lint: remove unused import (#35567)
GitOrigin-RevId: 77a6c89183768324058317c66e29f8dc31c9e277
2026-09-17 11:29:45 +00:00
Antoine ClausseandClaude Opus 4.8 a4da7a935c [web] Remove redundant monthlyTimesTwelve from pricing tables (#35506)
* [web] Remove redundant monthlyTimesTwelve from pricing tables

monthlyTimesTwelve was always exactly monthly * 12 in every pricing row,
and the value was only ever used to render the "billed monthly for a year"
strikethrough price in the compile-timeout paywall.

- Drop the stored field from the pricing tables
- Send raw monthly/annual numbers in ol-standardPlanPricing instead of
  pre-formatted strings
- Format the prices (and derive the strikethrough as monthly * 12) in the
  paywall modal via the frontend currency helper

No user-facing change: the displayed prices are identical.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Remove `monthlyTimesTwelve` from script

* Remove comments

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
GitOrigin-RevId: b637208540b3b96180b1a3cc4417b09944c5d158
2026-09-17 11:29:42 +00:00
Antoine Clausse 82f92933a2 [web] Remove some unused code related to AI assist (#35533)
* Remove unused `ol-addonPrices`

* Remove unused `showAiAssistAnnualDiscount`

* Remove unused `buyAddOnUrl` and related code

GitOrigin-RevId: d4f47d8c6cd8e2b304ad5c0a2c78cbef28a6cb97
2026-09-17 11:29:35 +00:00
b8b78b6932 [web] Gate new reusable sharing links behind sharing-updates-new-link (#35412)
Ship the new share-project modal (behind sharing-updates) wired to the
legacy token-based link sharing, and hide the new reusable-link
functionality (anyone with the link / group links) behind a new
sharing-updates-new-link split test.

- With the flag off, the modal offers two options, "Only invited people"
  and "Via sharing links", both driven by publicAccessLevel; the reusable
  -link options, privileges dropdown and copy-sharing-link button are hidden.
- Enable the flag in the acceptance tests that exercise those routes: a
  seeded split test in saas, splitTestOverrides in non-saas.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: thomas- <2176518+thomas-@users.noreply.github.com>
GitOrigin-RevId: 3f34a2da5dbdc6f27ed389f9c25eea66143b8160
2026-09-17 11:27:06 +00:00
Antoine Clausse 882ca2f981 [web] Cleanup plans-2026-phase-1 - phase 4: rest of backend (#34771)
* Remove `plans-2026-phase-1` from subscription module

* Remove code related to `plans-2026-phase-1`

* Remove `SplitTestUserGetter.getProjection`

* Update tests

* Remove last mentions of `plans-2026-phase-1`

* In test, wait for `_updateCustomerIoSubscriptionProperties` to be done

* Remove `purchaseAddon` test

* Remove AI-addon tests

* Fix `_quotaTierToAllowance` throwing on zero-grant tiers

`!quota` treated `0` as invalid, so `basic` (grant 0) threw. Check `typeof quota !== 'number'` alone. Unmasked once branch removed the split-test branch that skipped this path.

* Extract `waitForCustomerIoSync` helper in FeaturesUpdater tests

* https://github.com/overleaf/internal/pull/34771#discussion_r3552882875

GitOrigin-RevId: 0fe0e41b7a4105a3c4739214e2fffb77e91dbc42
2026-09-17 11:23:39 +00:00
Mathias Jakobsen 843aae01c9 Merge pull request #35350 from overleaf/mj-up-timeouts
[web] Increase reconnection window in editor

GitOrigin-RevId: e6ffb4ecda170eb171455a9c692900ce71309c88
2026-09-17 11:22:37 +00:00
Jakob AckermannandBrian Gough 84c6a68eae [web] enforce size limit on individual files when cloning project (#35211)
* [web] enforce size limit on individual files when cloning project

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

* [web] improve test coverage

* [agents] speed up running frontend tests

* [web] gracefully handle project too large error

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: c7b35a3a9688e15a9bb51c61816da82d39e0d29d
2026-09-17 11:20:03 +00:00
Miguel Serrano 9394f64c54 [web] Minor fixes for AI Disabled state (#34504)
* [web] Minor fixes for AI Disabled state

- Applies opacity to disabled spark icons
- Forces AI controls to be hidden on View state

* Removed redundant check

GitOrigin-RevId: a1389bec3e80a396c77a22294b1d921b4116a75c
2026-09-17 11:17:38 +00:00
Jakob AckermannandBrian Gough 69ccb3c316 [clsi] integrate png2pdf (#34796)
* Add png to pdf converter for optimising image loading in pdftex

* refactor

* move fixtures

* refactor and add unit tests

* Remove gamma correction from PNG processing and update related tests

* Add crc32fast dependency and enhance PNG processing tests

* Add fixture test cases for PNG processing

* fix alpha channel to match pdftex

pdftex always uses an 8 bit alpha channel in the output even for 16 bit images

* Refactor PNG processing to use Option for alpha stream and update related logic

* Enhance PDF writing by adding DecodeParms for alpha stream and optimize PNG encoding process

* Add pixel dimensions support in PNG processing and PDF writing

* [copybara] move clsi excludes

* [clsi] move gitignore rules

* [png2pdf] move into dockerfiles folder

* [png2pdf] use atomic writes

* [clsi] integrate png2pdf

* [saas-e2e] add coverage for png2pdf

* [png2pdf] make compatible with seccomp profile in clsi

* [copybara] remove exclude following move of png2pdf

* [copybara] remove spurious excludes

* fix broken detection of malformed chunk headers

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

* [project-history] add build script flag for depending on doc-updater types

* [png2pdf] run tests as part of clsi pipeline

* [png2pdf] fix calculation of PDF page size

* [web] put png2pdf behind feature flag and make it opt-in

* [web] fix ClsiManager.promises.sendRequest invocation after merge

* extend is_copy_safe function to follow pdftex

see the conditions in pdftex's writepng.c
https://svn.tug.org:8369/texlive/trunk/Build/source/texk/web2c/pdftexdir/writepng.c?revision=78081&view=markup#l575

the criteria are not an exact match because the png crate does not support all the
png chunk types
https://github.com/image-rs/image-png/issues/116

if the criteria result in a png being converted or skipped the final result should be the same.

in one case the conversion will be done by pdftex (at runtime)
in the other case the conversion will be done by png2pdf -

both conversions should give the same result.

* include tests in png2pdf Dockerfile

* [clsi] explicitly disable png2pdf conversion for project conversion

* [clsi] png2pdf: count converted files

* [png2pdf] bump date in docker image tag

* [web] make draft-setting option wider when png2pdf is available

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: d0d952ee009bf93c72bba2ffe763ae0160d396e4
2026-09-17 11:17:28 +00:00
Olzhas Askar dd48dfa093 Merge pull request #35158 from overleaf/oa-compile-timeout-final
[web] Compile timeout CTA

GitOrigin-RevId: f64c651332a32c293da1f3256cf9443413878d63
2026-09-17 11:16:42 +00:00
Mathias Jakobsen 3c3dd0fb37 Merge pull request #35037 from overleaf/mj-themed-modals-again
[web] Add support for dark mode modals

GitOrigin-RevId: 34770a6f91d6a331cfaccf86c7dc1a5d151ad25b
2026-09-17 11:15:24 +00:00
ilkin-overleaf 13bc31cf25 Merge pull request #34870 from overleaf/ii-share-modal-group-sharing
[web] Make group project sharing available to Group Professional plans only

GitOrigin-RevId: ced66529818d573cfd20cef016ed4b3aafdd8d51
2026-06-25 08:05:50 +00:00
Jakob Ackermann 1cc18dd0f0 [web] avoid UserAnalyticsIdCache for split-test assignments (#34803)
* [web] split-tests: add helpers to using an already fetched mongo user

* [web] split-tests: add ignoreOverrides option to getAssignment

* [web] split-tests: reuse already fetched mongo users where possible

* [web] notifications: fetch users in bulk for split-test assignment

* [web] split-tests: use session for assignment where possible

* [web] split-tests: pass req/res down into domain-capture hook

* [web] split-tests: explicitly throw early

* [web] split-tests: refine jsdoc types

* [web] mark analyticsId and labsProgram as required in user model

* [web] split-tests: refine jsdoc types

* Revert "[web] split-tests: pass req/res down into domain-capture hook"

This reverts commit 897a158384cd2b3e416fc34495b20d1e2a0e68f0.

GitOrigin-RevId: ea4afd15c2506f369827b5193fd16d220d3c7d0e
2026-06-23 08:06:42 +00:00
Brian Gough 23dca72cd3 Merge pull request #34843 from overleaf/bg-add-compile-timer
add timer for compile with checkpoints

GitOrigin-RevId: ec758d34594f242a5cac8192233bfe2db783e42a
2026-06-23 08:05:55 +00:00
MoxAmber bd8a156908 Merge pull request #34394 from overleaf/as-link-sharing-groups-split-test
[web] Move group link sharing behind a separate split test

GitOrigin-RevId: c973a9bccb88f427a9f51d121b58a8799993e7c9
2026-06-18 08:06:39 +00:00
Jakob AckermannandAndrew Rumble 6323fddbd8 [web] avoid UserAnalyticsIdCache (#33121)
* [web] always provide an analyticsId when registering new users

* [web] add recordEventForMongoUser and use it during login

* [web] use recordEventForMongoUser/recordEventForSession where possible

* [web] use session cache for analyticsId when refreshing features

* [web] add setUserPropertyForMongoUser and use it where possible

* [web] use setUserPropertyForSessionInBackground where possible

* [web] use mongo user for analyticsId when setting utm user properties

* [web] admin-panel: user updated user when sending events

* [web] enforce labsProgram being populated on user object

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

* [web] revert FeaturesUpdater.refreshFeatures change

* [web] labs: move session maintenance into handler

* [web] analyticsMiddleware: ensure that all users have labsProgram field

* [web] migrate a few more events to recordEventForSession

* [migrations] mark back-fill of db.users.analyticsId as required

* [web] setUserPropertyForSessionInBackground: throw early

---------

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>
GitOrigin-RevId: 19c26bc36abd8c11f0a8f458d25abfb7cbda0bb7
2026-06-17 08:08:32 +00:00
MoxAmber 886985d91c Merge pull request #33717 from overleaf/as-new-link-sharing-pass-groups
[web] Pass project owner link sharing settings to frontend

GitOrigin-RevId: ff000f38ef36a3d448a2934d0c5963139852eee2
2026-06-12 08:06:12 +00:00
Malik Glossop 6794af0ede Merge pull request #34110 from overleaf/mg-toolbar-language-suggestions
Add language suggestion controls to editor toolbar

GitOrigin-RevId: fe52b909b44ef8ccfc1449366bbf62f2d9d7ee4e
2026-06-10 11:58:20 +00:00
Miguel Serrano c981330cc1 [web] Disabled AI state for project collaborators (#34256)
* [web] Disabled AI state for project collaborators

Displays a disabled state, along with an informative tooltip in Editor AI controls.

GitOrigin-RevId: a749cd25d54f6ef3d7bf4276343400894bc193a4
2026-06-10 11:58:01 +00:00
Alf EatonandClaude Opus 4.7 68ce10440a Add Dimensions search via module and rail panel (#33773)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GitOrigin-RevId: 5c2811c155c7a1d577c08f6d01564b621b3b264c
2026-06-10 08:06:22 +00:00
jmescuderowritefull 2334a95b44 Clean up advance paraphrase experiment and pre-rebranding components (phase1) (#34231)
GitOrigin-RevId: 5481fcd105d0797e099a9c23c51bf18b086631a8
2026-06-10 08:05:21 +00:00
Kristina eb031f4c3c [web] parse mentions in comments (#34055)
GitOrigin-RevId: 185485a3ac9670c46d0e7c43bf281a5ffee3f784
2026-06-09 08:05:58 +00:00
Alexandre BourdinandAnna Fields c8a3bdd13f [web] Add a focus mode to the editor (#32245)
* Basic focus mode implementation

* Exit button

* Toggle between editor pdf mode

* Keep the rail and file tree mounted for editor tabs to work properly

* Hide Switch to editor button in focus mode

* Show shortcuts in layout menu

* Gate the feature behind a focus-mode feature flag

* Add split test badges in the focus mode dropdown item and top bar

* Add analytics tracking for focusMode changes

* Cleanup leftover IdeView value

* Allow passing focusMode value in layout test provider

* Remove redundant listener for focus mode shortcut

* Update focus mode and full project search listeners to use the event key

* Post-rebase cleanup

---------

Co-authored-by: Anna Fields <acfields11@gmail.com>
GitOrigin-RevId: 207f8d136fa6662558c474cca4a867a9842191e7
2026-06-08 08:06:05 +00:00
Davinder Singh 6ce36a2606 adding web changes of Export HTML (#34117)
GitOrigin-RevId: 804c576faefebfc6683a0363b45372e66a43d8fc
2026-06-05 08:06:19 +00:00
Olzhas Askar 8e36f20950 Merge pull request #34267 from overleaf/oa-move-upgrade
[web] Moving the upgrade button

GitOrigin-RevId: 33dcdcfa4e816e29177abe2c045e919edd7a4e08
2026-06-04 08:07:21 +00:00
Domagoj Kriskovic 5cf1b43ce7 Add Markdown visual editor support
GitOrigin-RevId: 4ec2ffb276c729a58f82ccb26ed571f4187a4178
2026-06-04 08:06:04 +00:00
jmescuderowritefull a553a8390d Clean 'writefull-keywords-generator' flag (#34200)
GitOrigin-RevId: 3014f02eba721b002eb35ec81750252993597748
2026-06-03 08:07:27 +00:00
Olzhas Askar b5a73efaeb Merge pull request #34060 from overleaf/oa-timeout-cta
[web] Compile timeout CTA

GitOrigin-RevId: c1dd014150964ffec1b556943f572d3e5a8069ce
2026-06-01 08:04:24 +00:00
Eric Mc Sween 3d71f51435 Merge pull request #33856 from overleaf/em-library-write-and-cite
[web] Add account-level library as a source for write & cite autocomplete

GitOrigin-RevId: 3182d516c1fab68e5bbf5d77d60e4c431d54b73e
2026-05-25 08:05:53 +00:00
Malik Glossop eb9d586bdb Merge pull request #32968 from overleaf/worktree-labs-feature-preview
Add labs preview modal to editor

GitOrigin-RevId: 0df33135febc8e94129bcdfdfb5c4981326dfab0
2026-05-25 08:05:28 +00:00
Mathias Jakobsen eddec90cb1 Merge pull request #33649 from overleaf/mj-command-palette
[web] Add command palette

GitOrigin-RevId: 5bf1903836810ca5f0e2bc7f6c00a4b1da797ea2
2026-05-21 08:07:04 +00:00
Miguel Serrano f9c53fe147 [web] Added DEFAULT_LATEX_COMPILER env (#32455)
This is mainly intended to be used in CE/Server Pro

GitOrigin-RevId: 277f9afca389a1e7b00db2d987129432fb1707b5
2026-05-21 08:06:12 +00:00
Mathias Jakobsen 5dc67db403 Merge pull request #33089 from overleaf/ds-export-md-files-pandoc
[WEB + CLSI] Download as markdown

GitOrigin-RevId: 181eddf2513e9c5edacbab37e93f9cac2191ee1a
2026-05-08 08:09:07 +00:00
ilkin-overleaf faec27d7b0 Merge pull request #33163 from overleaf/ii-share-modal-give-feedback
[web] Share modal give feedback link

GitOrigin-RevId: 5e83dec6c6b97c172b7600d8ded285db49178a64
2026-05-07 08:07:54 +00:00
ilkin-overleaf 816f8c45eb Merge pull request #32924 from overleaf/ii-share-modal-basic-layout
[web] Share modal redesign base layout

GitOrigin-RevId: 0f011d03762c6669a0fd3b1fc2af32c9026c7ea4
2026-04-28 08:06:13 +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
Mathias Jakobsen e30a2a5beb Merge pull request #32925 from overleaf/mj-editor-redesign-new-users
[web] Remove unused split test from web

GitOrigin-RevId: 329c98a1072a3a64923371641069c45552da5eaa
2026-04-21 08:05:39 +00:00
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
Jakob Ackermann 5a6c066847 [web] allow admins to clone projects with ranges and entire history (#32739)
* [web] add consistent aria-label to editing/reviewing toggle

* [docstore] add endpoint for getting all docs with ranges

* [history-v1] fix schema of chunkId when deleting old history chunk

* [web] skip duplicate project lookup for resolving rootDocPath

* [web] ignore new limits for root doc path when making debug copy

* [web] allow admins to clone projects with ranges and entire history

* [web] fix tests

* [history-v1] re-order params for cloning project

* [web] fix duplicate import of logger after merge

* [project-history] re-order params for cloning project history metadata

GitOrigin-RevId: 7fa35b4f90885dd453150a348d491ba0ec8de412
2026-04-15 08:05:49 +00:00
Domagoj Kriskovic 19c8434653 [web] Add stop button for Python code execution via worker termination
GitOrigin-RevId: f44b429a1d85e66ce89719817efd7acbfc7c4540
2026-04-13 08:04:07 +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