Commit Graph
28480 Commits
Author SHA1 Message Date
Miguel Serrano 44f053129f [web] Update @aws-sdk/client-ses to v2 (CE/SP only) (#35531)
This new version is compatible with the current nodemailer version.

GitOrigin-RevId: 8244fa8fc42edbc6aa7b702ec7975e9eee7f9879
2026-09-17 11:35:20 +00:00
Brian Gough 6c756eab73 Validate id types in LinkedFiles getSourceProject (#35748)
* Validate id types in LinkedFiles getSourceProject

Require source_project_id and v1_source_doc_id to be primitives before
querying Mongo, rejecting anything else with BadDataError.

* Validate refreshLinkedFile request params and body

Route refreshLinkedFile through parseReq with a schema requiring
project_id and file_id to be ObjectIds and typing the request body.

* Use well-formed ObjectIds in LinkedFilesController tests

Give the shared test setup valid ObjectId project_id/parent_folder_id
so parseReq passes and the controller logic is actually exercised, and
fail the tests if next is called unexpectedly.

* Use ObjectId file ids in v1 linked-file acceptance fixtures

The refresh route now validates file_id as an ObjectId, so the v1
not-imported fixtures need well-formed ids to reach the refuse-to-refresh
path (409) instead of failing id validation (404).

GitOrigin-RevId: d78b3664e825c6bb25ab2e363e5094b9212db307
2026-09-17 11:35:02 +00:00
Brian Gough 158d8a5839 Merge pull request #35646 from overleaf/jpa-fix-input-selection
[web] fix race condition of input selection and user edit

GitOrigin-RevId: 2180fba1f77da2d13f216d33d16f49ee2dd58442
2026-09-17 11:34:59 +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
Thomas fc40c1f8a4 Merge pull request #35636 from overleaf/tm-fix-export-error-forwarding
[web] Forward v1 export errors to the publish modal instead of a 500

GitOrigin-RevId: 7cf69c4d6a954cd311ac64fff175156b300afabb
2026-09-17 11:34:52 +00:00
Brian Gough 41a1b639f6 Merge pull request #35734 from overleaf/bg-issue35720
add zod validation to ExportsController and TemplatesController

GitOrigin-RevId: 8f283999665d730d491160aabe75b2643b8c2178
2026-09-17 11:34:46 +00:00
Tom WellsandCopilot Autofix powered by AI c88544c290 Autogenerate citation key from author/year (#35577)
* Autogenerate citation key from author/year

* Fix abort handling and error fallback in citation key suggestions

* Apply suggestions from code review

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

* Always fall back to a generated key on suggestion failure

* Make citation-key suggestion location-aware (project vs library), fix validation timing and duplicate-key edge cases, and consolidate the resolution logic

* Update citation key helper/error copy and hide the autogenerate hint while its error is showing

* Refactor comments: significantly shorten and remove unnecessary

* Fix error logic: if empty show error on save. If invalid entry, show onBlur

* Error refactoring

GitOrigin-RevId: 0cd919c9224731f1d5694204e8cdb03288ade04b
2026-09-17 11:34:40 +00:00
Kristina 4d1e9677e1 [web] set up types for mentions (#35609)
GitOrigin-RevId: 70ebe11659072a7df09be916d7a01cfd87b73c81
2026-09-17 11:34:37 +00:00
Domagoj Kriskovic d8de261370 Add request validation to HistoryController endpoints (#35730)
* Add schemas for file restoration and label management in HistoryController

* Add request schemas for proxying to history API and resyncing project history

* prevent transforming version:null into version:0 with coerce

* move jsDoc comments above the handler

* check for undefined resyncProjectStructureOnly

* Add tests for restoreFileFromV2 and revertFile

* Set default value for resyncProjectStructureOnly in resyncProjectHistorySchema

GitOrigin-RevId: 7b8b8a4c3834b8c8a83f93052ab1f59e86c529a6
2026-09-17 11:34:33 +00:00
Jakob Ackermann c821cc695c [real-time] delete PubSubRace test (#35746)
With the removal of per-doc rooms, there is nothing to race anymore.
The next lower timeout is 0, i.e. useless check.

GitOrigin-RevId: effb6cc0525f5fd785c7dce8df4e279de1f1b13f
2026-09-17 11:34:30 +00:00
Malik Glossop 03ddb0de69 Merge pull request #35669 from overleaf/mg-fix-comment-scroll
Fix scroll for adding comments in editor

GitOrigin-RevId: fa9ecb07008bfca1d2e233b4da97817cd77f9105
2026-09-17 11:34:27 +00:00
Alf Eaton b4d2d11c7b Add search_project tool to the AI assistant (#31879)
GitOrigin-RevId: 257b59bea43bd8ee3ff81b2f5439455c4a6ea403
2026-09-17 11:34:23 +00:00
Alf Eaton 5c8a4f3210 Add read_project_outline tool to the AI assistant (#31875)
GitOrigin-RevId: 37e7d9bebdc6291a0ea7d89b73494d24f5cd5908
2026-09-17 11:34:20 +00:00
Jakob Ackermann aab08b4c28 [document-updater] remove doc lock from per-doc operations (#35696)
GitOrigin-RevId: c45c1dbf11049c0fab8a7d788006a698ede0d510
2026-09-17 11:34:14 +00:00
Jakob Ackermann e714810632 [real-time] remove per-doc rooms (#35691)
* [real-time] remove applied-ops pub/sub

* [real-time] remove per-doc rooms

GitOrigin-RevId: ec3b76b37a029df15bf20d6f2832fb7c089c0042
2026-09-17 11:34:11 +00:00
Lucie Germain 2dee2b31d9 [Security upgrade] bump adm-zip to 0.6.0 in tools/saas-e2e and server-ce/test (#35608)
Fixes GHSA-xcpc-8h2w-3j85 / CVE-2026-39244 (high): a crafted ZIP archive
declaring a huge uncompressed size could force an unbounded Buffer.alloc
and OOM the process.

adm-zip 0.6.0 ships built-in TypeScript types, so @types/adm-zip is
dropped from both workspaces' devDependencies to avoid duplicate/
conflicting type declarations.

GitOrigin-RevId: dffc1c38a10f42d09c799ae768f1ffcfc0e09328
2026-09-17 11:34:07 +00:00
Lucie Germain a22f4ad1c5 [Security upgrade] bump websocket-driver to 0.7.5 (#35559)
Fixes GHSA-xv26-6w52-cph6 (critical): message corruption via abuse of
protocol length headers in the WebSocket frame parser.

GitOrigin-RevId: 678d85f1132e55cfeeef266a65c2deb869fe41ae
2026-09-17 11:33:54 +00:00
Jakob Ackermann bc9d25d385 [monorepo] clean up the per-project pub/sub migration (#35686)
GitOrigin-RevId: 4bbb97d1d2750f21751ef54e206e3e720b88615a
2026-09-17 11:33:51 +00:00
Jessica Lawshe 10adc3c477 Merge pull request #35477 from overleaf/jel-domains-table-icons
[web] Remove icon position CSS in domains table

GitOrigin-RevId: ca4ed97528577866a7e45538d0820baabfbe8f0b
2026-09-17 11:33:47 +00:00
Jessica Lawshe dde570ad9b Merge pull request #35065 from overleaf/jel-cleanup-domain-captured-by-group
[web] Remove `domain-captured-by-group` rollout flag for user settings

GitOrigin-RevId: f7fe0e66649e4cd4b94124f8f2eefa150758203a
2026-09-17 11:33:44 +00:00
Jessica Lawshe 66671f9bf2 Merge pull request #34936 from overleaf/jel-scroll-to-notification
[web] Scroll to new notification added above domains table

GitOrigin-RevId: f62851398de3a54ef07c0e125c65a29dd84af6f8
2026-09-17 11:33:41 +00:00
f950d8ffde Replace the bibtex entries table with a card layout (#35565)
* Replace the bibtex entries table with a card layout

Render each reference as a card (citation key, title, author, year and an
error indicator) instead of a table row. Drop @tanstack/react-table, which was
the last consumer of the dependency, and keep @tanstack/react-virtual for
virtualization.

- Add a compact card variant (via a `compact` prop) for the bibtex editor:
  tighter spacing, no border-radius, and cards separated by a single collapsing
  border rather than a gap.
- Add hover and green selected/selected+hover states.
- Move the select-all checkbox out of the scrolling list into the editor
  toolbar so it stays fixed while the list scrolls.
- Lay out title/author/year with nested flex so author and year wrap together.

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

* In progress dark mode for review

* Slight design changes & updated dark mode

* Small tweaks to dark mode secondary text, and light mode border

* Truncate long authors, also use .summarize() on authors

* Refactor comments: reduce verbose, remove unnecessary

* Fix empty line

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Tom Wells <wellsthomas@hotmail.co.uk>
GitOrigin-RevId: feaa6718484eefb9e9efb44b99f456910697cb17
2026-09-17 11:33:35 +00:00
Rebeka Dekany 607e0b0343 [web] Add paymentMethod segment to payment-page-form events (#35583)
* Add paymentMethod segment to `payment-page-form-submit` event

* Add paymentMethod segment to `payment-page-form-success` event

GitOrigin-RevId: 7ad1d18d3f4ed38d39f4336790581604ddae749e
2026-09-17 11:33:31 +00:00
Rebeka Dekany 94ea8f75a0 Remove Stripe customer.created webhook handler (#35547)
GitOrigin-RevId: 9dd1bf5b41189a986ec6dc1c838973dd4cb051b6
2026-09-17 11:33:28 +00:00
Andrew Rumble 15fb07da65 Merge pull request #35570 from overleaf/ar-remove-security-pins
[monorepo] remove pins responsible for security alerts

GitOrigin-RevId: f009618c05accc95b20a4bf4e32ebf26cfc6853b
2026-09-17 11:33:20 +00:00
Tom Wells 87d538dc71 Merge pull request #35642 from overleaf/tw-new-tag-button-modal
Fix New tag modal

GitOrigin-RevId: 6c0f227db27b87bc1affdf932de16c60d3571413
2026-09-17 11:33:14 +00:00
Kristina 5cde47d3d5 [web] revert adding mentions to chat (#35592)
GitOrigin-RevId: 9765993318e0467a97b7ced695fab55df29146a2
2026-09-17 11:33:08 +00:00
Kristina 74d7a649c8 [web] fix comment input in visual mode (#35665)
GitOrigin-RevId: 7aced47d90a856fe9ebcb07f8148c4987b3583c8
2026-09-17 11:33:05 +00:00
Jakob Ackermann 3565f51a84 [monorepo] prepare for per-project pub/sub for applied ops (#35663)
GitOrigin-RevId: 11d45addf366c3449cad432272ed03d4c8dae49d
2026-09-17 11:33:01 +00:00
Malik Glossop 1b2da240d5 Merge pull request #35558 from overleaf/mg-floating-menu-blank-line
Calculate floating menu position using line block

GitOrigin-RevId: aaf86d7cbdbddf6e77cb58563b16708888d03d7b
2026-09-17 11:32:55 +00:00
Simon Gardner a4c55af2e7 [web] Migrate publisher-managers and institution-managers pages to TypeScript (#35630)
GitOrigin-RevId: 61c14988a24b7b9050a8383e101f354253d09fc5
2026-09-17 11:32:20 +00:00
Jakob Ackermann e1358c4507 [document-updater] remove unused script (#35614)
GitOrigin-RevId: 95717884ce4b5207ef7289108eb64a84d4ed5dd4
2026-09-17 11:32:11 +00:00
Miguel Serrano b0015ef166 [CE/SP] Hotfix 6.2.2 (#35546)
* [CE/SP] Hotfix 6.2.2

GitOrigin-RevId: 5ee457a611fe7d6f73d8ce4bcf55378bd8c7fc69
2026-09-17 11:32:08 +00:00
ilkin-overleaf f27b19f86a Merge pull request #35607 from overleaf/ii-share-modal-invited-people-count
Exclude project owner from "X people invited" count in share modal

GitOrigin-RevId: 7f914a09401691b6e6f7299637ee695ed37d05c0
2026-09-17 11:32:05 +00:00
David 873bf5923d Merge pull request #35420 from overleaf/lo-stop-silently-dropping-large-bib-files
Lo stop silently dropping large bib files

GitOrigin-RevId: cba919227eb6d5c1f8100c6afba3076bd62a5797
2026-09-17 11:32:01 +00:00
Jakob Ackermann 324f011d80 [document-updater] add script for flushing/discarding stuck docs (#35603)
GitOrigin-RevId: 099e1e0a38515b35decbdc608acd75f59de0ec6f
2026-09-17 11:31:56 +00:00
Jakob Ackermann 68352783b0 [monorepo] clean up per-project queue migration (#35573)
GitOrigin-RevId: 988df4cdc7d929efc921e7e99d803c6ce6e52c57
2026-09-17 11:31:52 +00:00
Mathias Jakobsen d8f167dec2 Merge pull request #35293 from overleaf/mj-zod-history-ot
[real-time] Allow history-ot operations in real-time

GitOrigin-RevId: 4b1b9e4c1a214edf49c5eface46a4d309ba41b0d
2026-09-17 11:31:49 +00:00
Brian Gough 9d57689112 Merge pull request #35549 from overleaf/copilot/fix-prettier-caching-issue
Work around Prettier stale-cache parse-error behavior in root format commands

GitOrigin-RevId: 1669047b3f52c15fcbff8bff41fcb1ca1257418d
2026-09-17 11:31:43 +00:00
Miguel Serrano d07cc5a927 [web] Add features.aiToggling to Subscriptions (#35494)
* [web] Add `features.aiToggling` to Subscriptions

This new flag controls whether the subscription admin
can toggle AI Features for their group.

When the feature is unchecked, group admins only
see a dialog explaining AI Features are enabled/disabled,
but never the controls.

GitOrigin-RevId: 94132f5569102b91113bf15075e66c02aaed277f
2026-09-17 11:31:39 +00:00
Mathias Jakobsen b526135232 Merge pull request #35569 from overleaf/mj-network-stalled-on-disconnect
[web] Check websocket status in stall test

GitOrigin-RevId: c62f2d3641d444d8bbe2eed84a6ed6a0ad241b2a
2026-09-17 11:31:34 +00:00
Mathias Jakobsen bbe1c2126a Merge pull request #35579 from overleaf/mj-theme-race
[web] Avoid race condition in theme selection

GitOrigin-RevId: 2252e316d267ddd1e9c5f8e09a1c0a2c4e35b706
2026-09-17 11:31:30 +00:00
Miguel Serrano 4f9ada1ecb [web] Add env variable to control GceMetadataLogLevelChecker (#35273)
The feature should be disabled in Server Pro, since the container is expected not to make any external request.

GitOrigin-RevId: 38b59de61e498c58a5fbacf48d2244481d099187
2026-09-17 11:31:27 +00:00
Lucie GermainandClaude Fable 5 975cd99871 [github-sync] Surface "project too large" errors instead of hanging (#35183)
* [github-sync] Surface "project too large" errors instead of hanging

A GitHub sync of a project whose total editable text exceeds github-sync's
7MB request body limit would hang silently: the modal stayed on "Importing
and merging changes in GitHub" and then closed with no error.

Root cause was a chain of three issues:

1. github-sync's ErrorMiddleware did not recognise the body-parser
   PayloadTooLargeError, so it fell through to a generic 500.

2. web's _reportError rethrew any non-4xx error instead of responding, and
   several github-sync controller handlers were not wrapped in expressify.
   On Express 4 the rethrow became an unhandled rejection and no HTTP
   response was ever sent, so the browser request hung until the socket died.

3. the frontend read error.data.error without a null check, which threw a
   render-time TypeError when the fetch failed at the network level (as it
   did once the hung request was aborted).

Fixes:
- github-sync: add ProjectTooLargeError and map the body-parser 413 to it.
- web: _reportError always responds (500 for unexpected errors) and every
  controller handler is expressified as a backstop.
- frontend: null-safe error.data?.error, a friendly message for the
  too-large case, and a generic message for server errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* [github-sync] Refine project-too-large error copy per content guidance

Apply the content-design system's error-message guidance to the new
github_project_too_large_error string: use a contraction, drop the
redundant "reduce the size of your project" restatement and the formal
"Please", keeping the problem/reason/next-step structure.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* [github-sync] Use plain string matcher in project-too-large CT test

Address review feedback: prefer a plain string matcher with exact:false
over a regex, per the repo's testing guidance.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* [github-sync] Link to the file-limits docs from the too-large error

Add a "Learn about GitHub sync file limits" link below the project-too-large
error, pointing to the GitHub synchronization file-limits documentation, so
users can find out what the limits are and how to stay under them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* [github-sync] Use rel="noopener noreferrer" on the file-limits docs link

The eslint rule for external docs.overleaf.com links requires
rel="noopener noreferrer" (not just noreferrer) with target="_blank" to
prevent reverse-tabnabbing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
GitOrigin-RevId: 16f701a85fb4ae049c208e03e328ad80049e8579
2026-09-17 11:31:13 +00:00
Domagoj Kriskovic 7f74e5b1d2 Add support for auxiliary MongoDB sessions in startSession function
GitOrigin-RevId: 3ea0acd9c78e837f8aaf7c1e5ac06f7befb80805
2026-09-17 11:31:05 +00:00
Domagoj Kriskovic 5df372186e Add auxiliary tag to library reference migration
GitOrigin-RevId: ecb9bf2101dc5e633ec702041b02698d9c912317
2026-09-17 11:31:02 +00:00
Tom Wells e20d9f3ce8 Group tags into submenu (#35528)
GitOrigin-RevId: e6689ad3b73189444989f5f401df59f7ff0bbcd5
2026-09-17 11:30:54 +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
Kristina 76e004b3e2 [web] save doc to sessionStorage while editing offline (#35519)
* save doc to session storage when offline
* scope offline doc backup key to user id
* clear offline doc backups on logout
* handle anonymous users
* include trackChanges

GitOrigin-RevId: 3fe6a1523cb10cf76a1fcf4ee46790f6673bd84f
2026-09-17 11:30:42 +00:00
Liam O'Brien bbac293414 using mongo transaction to make sync atomatic
GitOrigin-RevId: 4261e14ab8cf6afd418f11492395038ecb4e3be6
2026-09-17 11:30:26 +00:00