Commit Graph
28116 Commits
Author SHA1 Message Date
Jakob AckermannandAnna Claire Fields a8a58f59a4 [monorepo] remove haproxy from service-to-service communication (#34391)
* [web] gracefully handle notifications being down on project dashboard

* [monorepo] remove haproxy from service-to-service communication

Co-authored-by: Anna Claire Fields <acfields11@gmail.com>

* [monorepo] fix OVERLEAF_LATEXQC_API_BASE_URL in dev-env

* [SaaS test fix] update history v1 export base url

---------

Co-authored-by: Anna Claire Fields <acfields11@gmail.com>
GitOrigin-RevId: cf355ef061412a1b57b5383cb60d4be574055af5
2026-06-10 08:05:37 +00:00
Andrew Rumble cc2d74a44d Merge pull request #34406 from overleaf/lg-xmldom-security-fix
[Security upgrade] update @xmldom/xmldom to ^0.8.13 in services/web

GitOrigin-RevId: 2a7d55f73a71c6eb2f82821069cd3a8b367a55a0
2026-06-10 08:05:33 +00:00
David 1542fbab57 Merge pull request #33770 from overleaf/mj-git-bridge-hook-readbranch
[git-bridge] Ensure pushed branches match branch on disk

GitOrigin-RevId: 9fb6b6f6475790ad83b560a84b625e6a2b806254
2026-06-10 08:05:29 +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
Jakob Ackermann 7f5af99ee9 [web] determine rootResourcePath if not set in compile request (#34398)
* [web] determine rootResourcePath if not set in compile request

This affects the following compile requests:
- compile request from "Download PDF" button on project dashboard
  Pre-resolving the rootResourcePath for all projects is too expensive.
  Adding an endpoint to resolve it is too slow and doubles project auth
  check.
- custom frontends
  Can't do much about these. I tried blocking them, requests still come
  in after weeks of returning 400s.

The rootDoc maintenance methods now return {rootResourcePath,rootDocId}
rather than just the rootDocId. This avoids an extra project lookup when
the rootDocId was updated.

GitOrigin-RevId: ab7c539b7ffd162bde0903fe1040a48834a245f5
2026-06-09 08:07:36 +00:00
Eric Mc Sween 5eb1f41ef7 Merge pull request #34421 from overleaf/em-revert-modals-scrolling
Revert changes to BibTeX modals scrolling

GitOrigin-RevId: a04c3eaeafa08339f2725db13e8fee5d1e7da182
2026-06-09 08:07:31 +00:00
Eric Mc Sween 595e67973b Merge pull request #34284 from overleaf/em-library-highlight-adjustments
fix(library): highlight word prefixes in search results

GitOrigin-RevId: 5457ea1460c442ba33f9042c1e2fc4cd2b9a5e54
2026-06-09 08:07:27 +00:00
Eric Mc Sween ad9da31252 Merge pull request #34383 from overleaf/em-fix-new-project-dropdown-alignment
Fix "New project" dropdown shifting to viewport edge in library layout

GitOrigin-RevId: f6b8af3e4d15828847ff69423a1c475efd2e32a9
2026-06-09 08:07:23 +00:00
Eric Mc Sween 85dafd4931 Merge pull request #34333 from overleaf/em-scrollable-bibtex-modals
[web] Scroll the contents of the BibTeX modals

GitOrigin-RevId: 8fcbe2520dca458d0fa15ba98047d0bdfcb53596
2026-06-09 08:07:18 +00:00
Brian Gough 19b040fc69 add ELINT_FAST environment variable in pre-commit hook (#34396)
* add ELINT_FAST environment variable in pre-commit hook

skips slow type-aware linting in pre-commit hook, full lint still runs in CI

GitOrigin-RevId: d4b6fde1c5010ba0f61aed03972b745af0f55b9b
2026-06-09 08:06:57 +00:00
Andrew Rumble b703acb55a Merge pull request #34325 from overleaf/ar-remove-noop-pins
[monorepo] remove no-op pins

GitOrigin-RevId: 9b059ae72e63f01b836a72501de893c28a4bbcbf
2026-06-09 08:06:52 +00:00
Miguel Serrano 73e437ad96 Revert "[git-bridge] Cache maven artifacts in Dockerfile (#34390)" (#34399)
This reverts commit 1222ba62bc6242874d76e26c69b366fbde62f519.

GitOrigin-RevId: dc45e995b30ffc958a4ce62206d8f4dd7d41ca50
2026-06-09 08:06:32 +00:00
Mathias Jakobsen 748bdfd59d Merge pull request #34395 from overleaf/mj-tabs-disable-close-button
[web] Disable close tab button on last tab

GitOrigin-RevId: 2d4600162696b07848311e75154d9d86aac0b315
2026-06-09 08:06:23 +00:00
Miguel Serrano dedc521295 [git-bridge] Cache maven artifacts in Dockerfile (#34390)
* [git-bridge] Cache maven artifacts in Dockerfile

GitOrigin-RevId: 1222ba62bc6242874d76e26c69b366fbde62f519
2026-06-09 08:06:18 +00:00
David a16274409e Merge pull request #34318 from overleaf/dp-labs-custom-success-notification
Add customisable success notification for Labs experiment enrollment

GitOrigin-RevId: 7d60ea3bac124909b19f8f537e1ab2b6db8d787e
2026-06-09 08:06:14 +00:00
Mathias Jakobsen 38e3104edf Merge pull request #34364 from overleaf/mj-tabs-tweaks
[web] Tweaks for editor tabs release preparation

GitOrigin-RevId: 83de2fddc5410454fa0d55a517cedc7a455b807f
2026-06-09 08:06:10 +00:00
Mathias Jakobsen f52dccbee5 Merge pull request #34350 from overleaf/mj-pandoc-texinputs
[clsi] Add TEXINPUTS variable to compressing conversion

GitOrigin-RevId: 7d708f106f6abf344707a87ba75a6e41f4023bd8
2026-06-09 08:06:05 +00:00
Kristina eb031f4c3c [web] parse mentions in comments (#34055)
GitOrigin-RevId: 185485a3ac9670c46d0e7c43bf281a5ffee3f784
2026-06-09 08:05:58 +00:00
Kristina dce6bce9fa [web] update notification preferences on ownership transfer (#33854)
GitOrigin-RevId: c20c7f992d9dbdd6e9f80feafc7b53587c122dd7
2026-06-09 08:05:53 +00:00
Kristina 6d8e4e4c5b [web] ship updated email templates (#34180)
GitOrigin-RevId: fa04ff132ec898efdb4e2d35df8b8a0b09219d5e
2026-06-09 08:05:45 +00:00
Olzhas Askar 8c88f53a9a Merge pull request #34326 from overleaf/oa-remove-logo
[web] Remove double logo

GitOrigin-RevId: 85678f6077bed57394a6d0ec5e72fefcc565352c
2026-06-09 08:05:37 +00:00
Miguel Serrano 63ed42ca3d [CE/SP] Add init script to check for missing secrets (#34345)
* [CE/SP] Add init script to check missing secrets

* Added OVERLEAF_INVITE_TOKEN_SECRET to CE compose files

GitOrigin-RevId: 1bc15763edfc43782038bdfd173067230477ce94
2026-06-08 08:06:36 +00:00
Mathias Jakobsen 1a7b5e66f5 Merge pull request #34311 from overleaf/mj-review-panel-with-tabs
[web] Move review panel header into tabs row when open

GitOrigin-RevId: e4594040f7a8ca67778fdd3e31cab909b3120adb
2026-06-08 08:06:31 +00:00
Mathias Jakobsen aed97f025c Merge pull request #34354 from overleaf/ab-update-focus-mode-icons
Update icons for opening and closing the focus mode

GitOrigin-RevId: f7d28dbfaa35eff3906ce5909b9ab88f53f4f7cf
2026-06-08 08:06:27 +00:00
Mathias Jakobsen ddfff06ef8 Merge pull request #34162 from overleaf/mj-tabs-close-to-right
[web] Context menu updates for tabs

GitOrigin-RevId: 09dbecaf119237adfb9b779a46bf76103c12de8e
2026-06-08 08:06:22 +00:00
Simon Gardner 20f03d75fe [web] Fix Stripe Subscription ID being saved to wrong field in admin panel (#34157)
* [web] Fix Stripe Subscription ID being saved to wrong field in admin panel

* add migration for unsetting recurlySubscription_id

GitOrigin-RevId: ccae470897690a8cdc8a8bce883983808a963d24
2026-06-08 08:06:10 +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
roo hutton 757735b075 Merge pull request #34297 from overleaf/rh-prev-plan-type-cancel
Update previous_plan_type on subscription expiry

GitOrigin-RevId: 19381e5516fdbfd2650a9a5b94b61791e0da909f
2026-06-05 08:07:27 +00:00
Mathias Jakobsen fa36cd508b Merge pull request #34310 from overleaf/mj-handle-lazy-errors-for-search-and-share
[web] Handle errors while loading full project search and share modal

GitOrigin-RevId: 29d863324a54fa872022002f612498335f88f377
2026-06-05 08:07:10 +00:00
Mathias Jakobsen b7735d402d Merge pull request #34195 from overleaf/mj-command-palette-menu-labels
[web] Add menu labels to commands, and add more commands to command palette

GitOrigin-RevId: 21e17142bb3112b5fdcda85a472122b011979f49
2026-06-05 08:07:06 +00:00
Mathias Jakobsen cabe0046c5 Merge pull request #34102 from overleaf/mj-document-import-errors
[web] Expose pandoc errors in import

GitOrigin-RevId: 55f89b91a52099a99a5d955bc05f3657b87b2cdc
2026-06-05 08:07:02 +00:00
Anna Claire Fields 97247b8ea5 [PnP migration] Remove mock-fs dependency (#33835)
GitOrigin-RevId: ff8df32d85b2ecd2837c9eee6d6d2b3b95285239
2026-06-05 08:06:54 +00:00
Anna Claire Fields 3fcd133198 [patch] update sandboxed-module for Yarn PnP compatibility and add mongodb-legacy type definitions (#33983)
GitOrigin-RevId: 8f1e9a4e4b4b5fbf3a770951a070b5a259abdcee
2026-06-05 08:06:50 +00:00
Anna Claire Fields 44dee7592a use require.resolve for mocha reporter paths (#34235)
GitOrigin-RevId: af607dfdeac8f91f63db294a964ade7622225932
2026-06-05 08:06:46 +00:00
Anna Claire Fields bfcf75855a [PnP migration] Convert .prettierrc to .prettierrc.cjs with require.resolve (#34237)
GitOrigin-RevId: ab57ca143bca8bfd2b44f03f9712a1aae70b2c1c
2026-06-05 08:06:42 +00:00
Antoine ClausseandOlzhas Askar 3140e46e68 [web] Replace token-link email verification with 6-digit code on SSO registration (ORCID) (#33889)
* Replace token-link email with 6-digit code on SSO registration

Unverified SSO emails previously received a long-lived token link
(90-day TTL) via UserEmailsConfirmationHandler. This replaces that
flow with the same 6-digit code verification used for password
registration, redirecting through /registration/confirm-email.

- SSOManager.registerSSO now always confirms email (caller must
  verify first); removes sendConfirmationEmail / _finishRegistration
- SSOController._signUp sends confirmation code and stores
  pendingSSORegistration in session when IdP email_verified is false
- New SSOConfirmEmailHandler completes registration after code check
  via completeSSOEmailConfirmation module hook
- OnboardingController confirm-email handlers accept
  pendingSSORegistration alongside pendingUserRegistration

confirmEmailFromToken (POST /user/emails/confirm) removal is deferred
to a follow-up PR to avoid breaking in-flight 90-day tokens.

Closes #28607

* Fix unverified-email edge cases; Add ORCID e2e tests;

* Rename `confirmEmail` parameter to `emailVerifiedByIdP` in _signUp function

* Remove `sendConfirmationEmail`

* Mock getUserByAnyEmail in tests

* Extract _finishSSORegistration helper to deduplicate the register →
set session flags → allocate referral → finishSaasLogin → finishLogin
sequence shared by both the direct and deferred (code-confirmed) paths.

* Stop duplicating session data in pendingSSORegistration

analyticsId, splitTests, and referal_* are already in the session at
confirmation time — no need to copy them into pendingSSORegistration.
Re-fetch splitTests fresh on completion instead.

* Simplify the code

* Remove dead confirmEmail template

No callers remain after sendConfirmationEmail was deleted. The token-link
flow (confirmEmailFromToken) only validates tokens, never sends email.

* Remove dead reconfirmEmail template

* Address comments from Copilot

* Clear stale pending registration when starting a new flow

* Add unit tests for completeSSOEmailConfirmation

* Add `verificationMethod` param

* Fix camelcase issues

* Extract _createSSOUser and _registerAndFinish helpers to deduplicate registration logic

* Remove obscure "registration_error"

* Prevent FormTextIcon from shrinking

* Enable "email_already_registered_sso" error

* Misc. improvements to confirm-email-form.tsx

* Remove `UserEmailsConfirmationHandler` mock

Co-authored-by: Olzhas Askar <olzhas.askar@overleaf.com>

* Add info on sso_email.pug page

---------

Co-authored-by: Olzhas Askar <olzhas.askar@overleaf.com>
GitOrigin-RevId: d0196ebc6d81ff61bcd27726d0b899b743d08d64
2026-06-05 08:06:34 +00:00
Daniel Kontšek 2570b6559d Merge pull request #34112 from overleaf/dn0-migration-check-predeploy-hook
Add predeploy migration gate for Mongo-bundling services

GitOrigin-RevId: d9eb192ea32b5328fb24fd453ddb1370f373858e
2026-06-05 08:06:30 +00:00
Davinder Singh 6ce36a2606 adding web changes of Export HTML (#34117)
GitOrigin-RevId: 804c576faefebfc6683a0363b45372e66a43d8fc
2026-06-05 08:06:19 +00:00
Jakob Ackermann fc2abf5b24 [web] fix submit modal in Codespaces (#34137)
GitOrigin-RevId: dc057ed736e97265a901b1cf21995c1f391339a5
2026-06-05 08:06:15 +00:00
Malik Glossop b8fc478e1f Merge pull request #34185 from overleaf/worktree-mg-error-assist-paywall
Show paywall from gutter when user hits suggestion limit

GitOrigin-RevId: 36c09e3d93ac38e1e675aa8ffb419e928094d68e
2026-06-05 08:06:11 +00:00
Malik Glossop d25b032e16 Merge pull request #33450 from overleaf/worktree-mg-writefull-spelling-tab
Add writefull language suggestions section to Spelling and language tab

GitOrigin-RevId: 6195683ca175a4c3da25a7ab334a605c67db04b8
2026-06-05 08:06:07 +00:00
Mathias Jakobsen fc31a88767 Merge pull request #34145 from overleaf/ds-download-html-using-pandoc-clsi-1
[CLSI] Download as HTML feature

GitOrigin-RevId: 374101c1f957a00eda423a6be0363c08b5de7a95
2026-06-05 08:06:03 +00:00
Jakob Ackermann 0501586743 [latexqc] migrate to local s3, add codespaces support, add e2e tests (#34136)
GitOrigin-RevId: 167171103c14ed3c4ba2939d80231c343645e53a
2026-06-05 08:05:59 +00:00
Jakob AckermannandBrian Gough df61bfc788 [clsi] initial version of /convert/pdf-to-jpeg (#33752)
* [monorepo] consolidate clsi-lb host/ip env-vars

Target env-var is CLSI_LB_HOST. Keep CLSI_LB_IP populated for a week.

* [clsi] initial version of /convert/pdf-to-jpeg

* [rails] use fake-secrets in CI and Codespaces

* [rails] adapt tests for using clsi to convert PDFs to image

* [rails] add rake task for comparing clsi conversion with transloadit

* [clsi] double check that output.jpg is a regular file

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

* [clsi] fix composing basename

* [monorepo] fix clsi-lb host env-var post merge

* [monorepo] sort dev-environment.env hosts

* [rails] use local pdf file rather than downloading it again

Download from the old renderer code path still. It's dead code.

* [terraform] clsi: enable pdf to jpg conversion

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: 5ecaa8559d299486340bb3961f06b29f7c4dfcca
2026-06-05 08:05:55 +00:00
Brian Gough 9ec0ff065d add missing mongo dependencies (#34298)
* add missing mongo dependency for analytics

* update build scripts for analytics

* add missing mongo dependency for third-party-datastore

* update build scripts for third-party-datastore

* add missing mongo dependency for third-party-references

* update build scripts for third-party-references

* update yarn.lock for buildscript changes

GitOrigin-RevId: 1c42e49af5075529a334d50648da990e4cedb1b4
2026-06-05 08:05:50 +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
roo hutton 06e99fe62a Merge pull request #34130 from overleaf/rh-enterprise-cio
Expose enterprise indicators and previous_plan_type for first subscriptions to customer.io

GitOrigin-RevId: 693db7f796609f00ecd31216a6d6be32c1f569c8
2026-06-04 08:07:09 +00:00
Maria Florencia Besteiro Gonzalez d112271b1c Merge pull request #34184 from overleaf/cs-icon-button-labs-library
feat(library): add Labs feedback badge to Library heading

GitOrigin-RevId: 6dacc588cc58300a09b8195ca800d042d40f4c89
2026-06-04 08:06:52 +00:00
Antoine ClausseandClaude Opus 4.7 0658bd9a31 [web] Change plans order in Change Plan modal (#34096)
* [web] Order plans in Change Plan modal consistently

Reorder the plans returned by `buildPlansListForSubscriptionDash` so the
Subscription page "Change plan" modal lists them top-to-bottom as:

  1. Student annual
  2. Student monthly
  3. Standard monthly
  4. Standard annual
  5. Pro monthly
  6. Pro annual

Previously `buildPlansList` produced three per-period buckets which the
dash function concatenated, giving an order that flipped per family.
Replace that with an explicit `CHANGE_PLAN_MODAL_PLAN_CODES` list so the
order matches the Design QA spec at a glance. The now-unused
`studentAccounts`, `individualMonthlyPlans`, `individualAnnualPlans`,
`groupMonthlyPlans`, and `groupAnnualPlans` buckets are dropped from
`buildPlansList` (no other callers).

Closes #34024

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* [web] Update personal-plan acceptance test for new buildPlansList shape

The previous test asserted `buildPlansList().individualMonthlyPlans`,
which no longer exists after the change-plan modal reorder dropped the
per-period buckets. Move the assertion to
`buildPlansListForSubscriptionDash()`, which is where the personal-plan
exclusion is now enforced (via `CHANGE_PLAN_MODAL_PLAN_CODES`).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* [web] Drop now-dead client-side plan filter

`IndividualPlansTable` used to filter out `paid-personal`,
`paid-personal-annual` and `institutional_commons` defensively because
the old `buildPlansListForSubscriptionDash` returned every non-group
plan that wasn't `hideFromUsers`. The previous commit pins the modal to
an explicit six-plan list (`CHANGE_PLAN_MODAL_PLAN_CODES`), so none of
those plan codes ever reach the frontend and the filter is dead. Remove
it and the now-unused `useMemo` import.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Revert "[web] Drop now-dead client-side plan filter"

This reverts commit 83e8448f2cfa2c68e44b749d5a2bc350a7443c6d.

We'll do that in a later cleanup

* Swap "Student monthly" and "Student annual" for consistency

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GitOrigin-RevId: 046a235e14e7ad6622288f5a5a723f5a4f7f14da
2026-06-04 08:06:40 +00:00
Antoine ClausseandClaude Opus 4.7 b07d141397 [web] Fix /user/subscription/plans#ai-assist redirects (#34124)
* [web] Redirect missing AI add-on purchase to subscription dashboard

The two error paths in `previewAddonPurchase` redirected to
`/user/subscription/plans#ai-assist`, but the `#ai-assist` anchor was
removed when the AI Assist add-on was retired, so users land at the top
of the plans page with no context. Align both with the other error
branches in the same function and the `plans-2026-phase-1` enabled
branch, which already redirect to
`/user/subscription?redirect-reason=ai-assist-unavailable` — the
subscription dashboard shows the matching warning alert
(`redirect-alerts.tsx`).

Update the acceptance test to match the new redirect target.

Closes #34074

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* [web] Update ai-assist-unavailable warning to reflect bundled AI features

The previous copy said "AI Assist isn't available to you due to your
current subscription type", which read as a hard block. Now that the AI
Assist add-on has been retired and AI features are included with every
paid plan, the warning should point users to the pricing page instead of
implying their plan can't access AI at all.

Keep the existing translation key for now — a follow-up can rename it
once #33624 (AI page CTA destination) is resolved.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* [web] Link the ai-assist-unavailable warning to the pricing page

* [web] Rename key `ai_assist_unavailable_due_to_subscription_type` -> `ai_assist_unavailable`

* [web] Update french and german translations

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GitOrigin-RevId: ae1319fa5b857d8f292de77c82ef0bda1c7ad144
2026-06-04 08:06:31 +00:00