Commit Graph
28263 Commits
Author SHA1 Message Date
Jakob Ackermann a6c98365d9 [web] use client-side filtering for split tests in admin panel (#34975)
* [web] use client-side filtering for split tests in admin panel

Filtering on non-indexed fields is not allowed with notablescan.

* [web] add initial value for DEFAULT_FILTERS.active

* [web] unset error before fetching split tests

GitOrigin-RevId: 0813873c5a90d57c4fdbfd0043fcc325f00408aa
2026-06-26 08:08:10 +00:00
Jakob Ackermann 1b553c0455 [migrations] only apply non-blocking migrations in CI (#34665)
* [migrations] only apply non-blocking migrations in CI

* [migrations] use "yarn run migrations" instead of "npm run migrations"

GitOrigin-RevId: d9f96db398adf2febcd82333295fb8d5eab741bb
2026-06-26 08:08:05 +00:00
Jakob Ackermann 9fd0d644cf [agents] refine guidance for running tests (#34977)
* [monorepo] fix handling of quoted MOCHA_GREP

* [agents] refine guidance for running tests

- nudge it towards scoped module targets
- nudge it to really run e2e tests when changed
- nudge it towards a11y cypress matchers
- recommend quoting for MOCHA_GREP

* [web] fix forwarding of mocha args from module Makefile

* [monorepo] use BRANCH_NAME_TAG_SAFE for building the ci image name

* [web] also make BRANCH_NAME_TAG_SAFE available in module Makefile

(It's not really needed, but will make copilot happy.)

GitOrigin-RevId: bfda3c8fe2b4f857ef111ac63f94b35a82ad75f8
2026-06-26 08:07:37 +00:00
Eric Mc Sween c645215afc Merge pull request #34907 from overleaf/em-promisify-github-sync
Promisify github-sync

GitOrigin-RevId: ac68f3f18ad211e204631d80bd5d4354ea23aaff
2026-06-26 08:07:30 +00:00
Eric Mc Sween 2c54574377 Merge pull request #34922 from overleaf/lg-vite-security-upgrade-v2
[Security upgrade] bump vite to 7.3.5 in root workspace

GitOrigin-RevId: 278475d98e23f0679ec45993e2a6816e9b93eb64
2026-06-26 08:07:25 +00:00
Eric Mc Sween 4fb8608908 Merge pull request #34884 from overleaf/em-already-in-your-library
Library import: flag entries that are already in the user's library

GitOrigin-RevId: f3c92fb59283631e1a9e78d2e08a3a365981df45
2026-06-26 08:07:21 +00:00
Mathias Jakobsen 75f7f82a3f Merge pull request #34923 from overleaf/mj-left-menu-field
[web] Clean up "left menu" concepts in new editor

GitOrigin-RevId: 9597c1c53af15f3a1587e62176bca36cd7c9069c
2026-06-26 08:07:10 +00:00
Mathias Jakobsen 5dd2c425ac Merge pull request #34912 from overleaf/mj-file-tree-style-cleanup
[web] Clean up file tree scss post editor redesign

GitOrigin-RevId: de2c5f3bd2979600897ffbbdcaead7ef72fa6ae1
2026-06-26 08:07:05 +00:00
Kate Crichton 9034e81c9b Merge pull request #34508 from overleaf/kc-email-admin-domain-reverification-failed
[web] email group admin when domain reverification failed

GitOrigin-RevId: d885f26b1b39184c25133f70024a72af66fa2d69
2026-06-26 08:07:01 +00:00
Kate Crichton 907f5a969a Merge pull request #34841 from overleaf/kc-grace-period-failedat-anchor
[web] Anchor domain-capture grace period on failedAt

GitOrigin-RevId: 5a31e5189512b22952c387722c7ad67f5c6397e3
2026-06-26 08:06:57 +00:00
Andrew Rumble bbf5586935 Merge pull request #34919 from overleaf/lg-undici-security-upgrade
[Security upgrade] bump undici to 7.28.0 in root workspace

GitOrigin-RevId: 39a6fb92235c6453fbd6106c05af66fb1d089607
2026-06-26 08:06:49 +00:00
Maria Florencia Besteiro Gonzalez 1e03046d68 Merge pull request #34587 from overleaf/lg-security-netty-codec-http2
[Security upgrade] bump io.netty:netty-codec-http2 to 4.1.135.Final in services/git-bridge

GitOrigin-RevId: e6b6b110bd4ce9c70c91f701cc3cb4f0868f870a
2026-06-25 08:06:26 +00:00
Jessica Lawshe 6c9b4aa498 Merge pull request #34768 from overleaf/jel-email-when-domain-verified
[web] Email group admin when domain is verified

GitOrigin-RevId: 5f8bc6187c561067d16863d3586a94ef498f3bdf
2026-06-25 08:06:22 +00:00
Jessica Lawshe 02d9c344f2 Merge pull request #34821 from overleaf/jel-clear-domain-notifications
[web] Make domain notifications dismissible

GitOrigin-RevId: fa1648efd0aa73213e5352b347a1b0f4c07dfc04
2026-06-25 08:06:18 +00:00
Jessica Lawshe 4a635d7599 Merge pull request #34819 from overleaf/jel-domain-table-spacing
[web] Update spacing in groups domain table

GitOrigin-RevId: 6e908b79e45212cf060068271ec56c3146fe20d7
2026-06-25 08:06:13 +00:00
Mathias Jakobsen a038e4b3a2 Merge pull request #34903 from overleaf/mj-settings-tabs-hover
[web] Add hover states to settings tabs

GitOrigin-RevId: c41c200231d0308267fc346d2949ef659a1950bc
2026-06-25 08:05:59 +00:00
Tim Down 3e29ce839f Merge pull request #34602 from overleaf/td-stripe-3ds1-redirect
Fix for Stripe redirecting to incorrect page

GitOrigin-RevId: ac90b2e501c4bf5f2738d61866ea72ba861e5539
2026-06-25 08:05:54 +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
ilkin-overleaf f536b39b03 Merge pull request #34627 from overleaf/ii-share-modal-improvements
[web] New share modal improvements

GitOrigin-RevId: d8b47a6294f8d7e4833130fd2bb1720bfe2357d8
2026-06-25 08:05:45 +00:00
roo hutton 0fab15c58e Merge pull request #34730 from overleaf/rh-tax-id-verify
Validate tax ids and send emails on failed verification

GitOrigin-RevId: 84d53fdaf00d7b23ced22dd540a071e3028ced93
2026-06-25 08:05:34 +00:00
Brian Gough 29c8717b60 Merge pull request #33845 from overleaf/lg-ws-security-upgrade
[Security upgrade] pin ws@^8 to 8.21.0

GitOrigin-RevId: 40b839757122c1116debe8b7ebfa4eba9187bfa8
2026-06-24 08:06:51 +00:00
Andrew Rumble 255a6242cb Merge pull request #34340 from overleaf/ar-things-that-dont-need-to-be-pinned
[dependency-management] find unnecessary pins script

GitOrigin-RevId: b935ee7ae72c0339ea58f14d5f0a991ed4ae350c
2026-06-24 08:06:36 +00:00
Jakob Ackermann a8b4f2dc55 [web] reduce mongo lookups for compile requests (#34890)
* [web] _getUserCompileLimits: use owner.analyticsId directly

* [web] deduplicate project lookups for compile requests

* [web] add test case for prefetched project

GitOrigin-RevId: 0e140619c874accf8673153ed90af2ce70cf9234
2026-06-24 08:06:18 +00:00
Mathias Jakobsen 795ba4cd41 Merge pull request #34655 from overleaf/mj-ai-error-assistant-ide-redesign-cleanup
Clean up ai error assistant  style after editor redesign

GitOrigin-RevId: 8ca0747a567fe8f46b4d76886cd0723e1721ced1
2026-06-24 08:05:58 +00:00
Mathias Jakobsen fe52c3df12 Merge pull request #34872 from overleaf/mj-bulk-review-permissions
[web] Hide bulk track change actions for reviewers

GitOrigin-RevId: f636f4c82fdfb43a6dedf1abbb3cc53805eab7f8
2026-06-24 08:05:53 +00:00
Mathias Jakobsen c625ce428e Merge pull request #34875 from overleaf/mj-logs-link-colour
[web] Avoid default blue link colours in log headers

GitOrigin-RevId: 56359ededf5ba8c1a615bf1bf84ba6502f9c0078
2026-06-24 08:05:49 +00:00
David 7ce1e0bd48 Merge pull request #34797 from overleaf/dp-cleanup-reference-settings-migrated-field
[web] Add migration to unset reference settings migrated flag

GitOrigin-RevId: 570621d7a78f225a4bbf98f7046b096ffa735048
2026-06-24 08:05:38 +00:00
Brian Gough c6a46fbdad Merge pull request #33961 from overleaf/lg-qs-security-upgrade
[Security upgrade] pin qs to 6.15.2 in root yarn.lock

GitOrigin-RevId: 4819f0a1f9b41821ccda354a309d190d8395ef56
2026-06-24 08:05:31 +00:00
Brian Gough 81f85293f2 Merge pull request #33656 from overleaf/lg-protobufjs-security-upgrade
[Security upgrade] Pin protobufjs to 7.6.3 and @protobufjs/utf8 to 1.1.1 via resolutions

GitOrigin-RevId: 7d71d564d7296af76f04fda8b35f178c5014a9b9
2026-06-24 08:05:26 +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
Jakob Ackermann 6b084424b5 [monorepo] fix running make lint from root (#33559)
* [monorepo] remove spurious package-name field from buildscript.txt

* [monorepo] align variables/paths across build script variants

* [monorepo] align linting/test setup for jobs/libraries

* [monorepo] fix "make lint/lint_fix" from root

* [wiki-algolia] integrate with yarn workspace

GitOrigin-RevId: a0954f2936d03cd4a69b3f2c8098d9ee2e361993
2026-06-23 08:06:37 +00:00
Eric Mc Sween 006b30c441 Merge pull request #34817 from overleaf/em-library-backend-search-2
Library search: make backend search tokens consistent with frontend (re-apply #34643)

GitOrigin-RevId: e5a143edf3226c12eaff77b2bc4cdb68e139bb10
2026-06-23 08:06:33 +00:00
Jimmy Domagala-Tang 5cd4447cbf Adding 2026 TeXLive behind admin (#34291)
* feat: adding 2026 behind admin

* feat: bumping packer and clsi memory to accomodate new image

* align packer build and packer verify disk sizes

* feat: adding more space for packer build

GitOrigin-RevId: 1961ea7937e2c751137a4b9564a34d4e371ce0f9
2026-06-23 08:06:14 +00:00
Jakob Ackermann 88267716a3 [web] adopt free/premium compile backend class (#34846)
* [web] adopt free/premium compile backend class

* [rails] adopt free compile backend class for pdf conversion

GitOrigin-RevId: e12c99a27363f5654132c2fcdc6c5d8ccc591868
2026-06-23 08:05:59 +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
Brian Gough b1ed38c2d0 Merge pull request #34761 from overleaf/bg-enable-clsi-checkpoints
adds enableCheckpoint to compile requests from web to clsi

GitOrigin-RevId: 431b28602091cf8f7252ad836f083c7b092351d4
2026-06-23 08:05:50 +00:00
Jakob Ackermann 3be2f320f8 [web] fix preference of new/old clsiServerId in double-compiles (#34862)
GitOrigin-RevId: 81cbbcec9fef79ebd0c5e7d90048fc4bda302108
2026-06-23 08:05:42 +00:00
Brian Gough d75ef19bbf Merge pull request #34746 from overleaf/bg-clsi-apparmor
add new clsi apparmor profile for checkpoints

GitOrigin-RevId: 3a003263326613d3166343d54adb7050fe1e9847
2026-06-23 08:05:38 +00:00
Mathias Jakobsen e0cfb07f60 Merge pull request #34698 from overleaf/mj-context-menu-tracked-changes
[web] Add tracked changes options to context menu

GitOrigin-RevId: b49198c6c2c63063d96ace69f10b617ac819bb04
2026-06-23 08:05:33 +00:00
Kristina a53b164b45 [web] email content previews for notification emails (#34576)
* add content previews to notification emails
* add fetcher for doc lines
* gate content previews behind a split test
* make composable blocks for rendering

GitOrigin-RevId: c8df384d55a301084b98df76fd3edd6dde6ea50c
2026-06-22 08:06:25 +00:00
Domagoj Kriskovic 63a605484c Add support for rendering math in Markdown with MathJax
GitOrigin-RevId: dd1c1c72237a5364c642e46c66e08ea7a6977662
2026-06-22 08:05:40 +00:00
Mathias Jakobsen ef05288f81 Merge pull request #34714 from overleaf/mj-tracked-change-merges
[overleaf-editor-core+ranges-tracker] Pick lower timestamp when merging tracking info

GitOrigin-RevId: 5b1c8d7c719003df4506014c381f2a525d0a7ff4
2026-06-19 08:07:27 +00:00
Eric Mc Sween 7ee385fe45 Merge pull request #34816 from overleaf/revert-34643-em-library-backend-search
Revert "Library search: make backend search tokens consistent with frontend (follow-up to #34386)"

GitOrigin-RevId: 83328f2ee4a9c3f668325fa4de1ca652e7c718bf
2026-06-19 08:07:19 +00:00
Eric Mc Sween 80218df85e Merge pull request #34643 from overleaf/em-library-backend-search
Library search: make backend search tokens consistent with frontend (follow-up to #34386)

GitOrigin-RevId: 91ef5b5dc81ba8ebda43e746c9b747b7636f3e80
2026-06-19 08:07:12 +00:00
Eric Mc Sween 0371ba46f6 Merge pull request #34693 from overleaf/em-upload-bib
[web] Add "Upload .bib file" option to library

GitOrigin-RevId: 7067a4cb10f0973c0423507836ef13555329942c
2026-06-19 08:07:08 +00:00
Kate Crichton 0883e0fec0 Merge pull request #34513 from overleaf/kc-verify-domain-from-table
[web] verify domain from table

GitOrigin-RevId: 2e41f76be26b81f204208fab714f2e3399071499
2026-06-19 08:06:34 +00:00
Kate Crichton f7b1ccae9a Merge pull request #33852 from overleaf/kc-schedule-domain-verification
[web] schedule domain reverification

GitOrigin-RevId: 08217692960379d0a6f7ce457032b1182fb2bf4e
2026-06-19 08:06:30 +00:00
Liam O'BrienandClaude Opus 4.8 bc9c85019f Lo zotero initial library sync (#34456)
* Migration and index setup script

* Helper script to clear linked library

* Pull users collections

* Implementing get items from users zotero library

* Initial zotero sync client

* Pulling users overleaf collection

* Pulling users overleaf collection

* Initial sync pull from Zotero to Library

* Sync and import workflow from Zotero into Library

* Using user getter and setter for updating user library info

* Using new collection for library sync states

* Adding tests for new sync functionality

* Harden Zotero sync route

* Simplify Zotero sync state read and skip accounting

Fold the ensure+get double round-trip in sync-state discovery into one
findOneAndUpdate, and derive itemsSkipped from items.length - itemsInserted
instead of a running counter.

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

* Redact URL-encoded token secret from OAuth1 request logs

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

* fixing type failure

* Rename upsertZoteroReferences to importZoteroReferences

The method is insert-only; the bulkWrite upsert just makes re-runs
idempotent rather than updating, so the name now reflects that.

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

* Validate librarySyncStates reads with zod

Replace the `as` / `as unknown as` casts in getLibrarySyncState and
ensureLibrarySyncState with a zod schema parse, matching
LibraryReferenceRepository. Types are now derived from the schema.

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

* Defer Zotero sync watermark until pagination exists

Don't record lastSyncedVersion after a single-page sync: committing the
page-1 version before pagination (#34286) lands would let incremental
sync (#34282) skip items beyond the first page. Drops the commitSyncState
call and toVersion from SyncResult; the version envelope is left for the
follow-ups. commitSyncState stays in the repository for #34282.

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

* Extract OAuth1Transport from OAuth1Handler

Lift the OAuth1 client/config registry, getAccessToken, redactSecret and
classifyOAuth1Error into oauth1/OAuth1Transport.js, plus a signedGet
helper for provider modules to reuse. OAuth1Handler now imports them; its
method bodies are unchanged. Test mocks move to esmock's global scope so
they reach the transport, with Errors pinned for instanceof checks.

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

* Move Zotero collections/items into a per-provider ZoteroProvider

Carve the Zotero-only operations out of the generic OAuth1 handler into
providers/ZoteroProvider.js, dispatched via providers/ProviderRegistry.js.
ReferenceProviderHandler now resolves the provider from the registry and
throws UnsupportedOperationError (mapped to 501) for providers without the
operation, instead of bolting Zotero-only methods onto OAuth1Handler.

Zotero's collectionsUri/itemsTopUri are read from settings by ZoteroProvider
rather than copied into the shared OAuth1 registry. Removes getCollections/
getUsersItemsChanges (and their tests) from OAuth1Handler.

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

* Add ZoteroProvider unit tests and unsupported-provider coverage

Cover ZoteroProvider collections/items parsing, header envelope and
malformed-payload rejection, and assert ReferenceProviderHandler throws
UnsupportedOperationError for providers without a sync implementation.

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

* Make addSyncedCollection idempotent

Only push a synced collection when its key isn't already recorded, so a
repeat sync can't create duplicate syncedCollections entries regardless of
the caller-side guard. Adds a sequential test asserting no duplicate.

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

* Hardcode Zotero library endpoint paths, derive host from site

Move the collections/items-top endpoints out of settings and into
ZoteroProvider as path constants, taking only the host from the
provider's `site`. Aligns Zotero `site` with the other providers
(API host) and avoids adding per-endpoint config points.

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

* Make Zotero sync routes explicit, 404 unknown providers

Hardcode the collections/items routes to /zotero rather than a generic
/:ref_provider, so a non-Zotero request 404s on the missing route
instead of returning a misleading 501. Drop the UnsupportedOperationError
501 branch, reverting OAuth2 unsupported ops to their prior 500.

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

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
GitOrigin-RevId: 50e16a9c46f995c2e9db6eed50ef81c3a71ea71d
2026-06-19 08:06:07 +00:00
Antoine ClausseandClaude Opus 4.8 e5f712a857 [web] Cleanup plans-2026-phase-1 - phase 2: pug/backend pricing (#34623)
* Remove `plans2026` from pug files in subscriptions module

* Remove `plans2026` param from `makeGroupPlans`

* Remove `plans2026` param from `makeUISettings` in interstitial-payment.mjs

* Remove `plans2026` param from `makeInterstitialPaymentConfig` in interstitial-payment.mjs

* Remove `plans2026` param from `makeIndividualPlans`

* Remove `plans2026` param from `makeStudentPlans`

* Remove `plans2026` from try-premium page

* Remove `plans2026` from controllers

* Remove unused files

* Update translations

* Update tests

* Update tests

* Remove unused translations

* Rename the collaborator upgrade-mode test to read explicitly as the
Standard-plan replacement for the removed redirect test, and drop the
stale "when plans 2026 is enabled" framing now the controller no longer
branches on the flag.

* Surface controller errors in InterstitialPayment tests

Move assertions out of the res.render callback into render/redirect
helpers that resolve with the captured args and reject on the wrong
path or a controller rejection, so failures show the real error
instead of timing out. Restore the ai-limit-upgrade-copy split-test
assignment for the AI copy tests.

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

* format

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
GitOrigin-RevId: f0b055b4d92b494b531766a13b057336d9c2c9af
2026-06-19 08:06:03 +00:00
David d6e55f81ff Merge pull request #34750 from overleaf/dp-cleanup-reference-settings-migration
[web] Remove reference manager settings migration code

GitOrigin-RevId: 1062e1f08a6e6d4547f48c965c342d2ac15e9a4f
2026-06-19 08:05:56 +00:00