Commit Graph
28512 Commits
Author SHA1 Message Date
David 691452580b Merge pull request #35735 from overleaf/dp-mobile-projects-dropdown
Update mobile projects dropdown to merge top and submenu views

GitOrigin-RevId: 33650de2018b2536101edb7071526b65393e90d2
2026-09-17 11:38:01 +00:00
Chris Dryden f81a7b2ff2 Merge pull request #35534 from overleaf/cd-share-sidenav-bar-with-library
[web] Share the dashboard sidebar with the library page

GitOrigin-RevId: 5595746fef6698bee6a35ee7fc8be15743e2c620
2026-09-17 11:37:57 +00:00
Kristina 6af1d79cd6 [web] reset all css variables impacting the comment field (#35681)
GitOrigin-RevId: b66f612e186434208a658d64ccc6346c37f23182
2026-09-17 11:37:54 +00:00
Lucie Germain ebf72a6a93 Bump js-yaml to 4.3.0 via lockfile (#35811)
GitOrigin-RevId: 1d938fecb596dad40ac523daee0aef6cc1129dc0
2026-09-17 11:37:48 +00:00
Tom Wells 4430252b77 Add reference preview/edit drawer to the library (#35763)
* Add reference preview/edit drawer to the library, with mobile bottom-sheet layout

* Fix stylelint comment spacing and update library Cypress spec for the drawer flow

* Fix desktop drawer focus/escape handling and autosave race in the library

Replace the desktop preview panel's hand-rolled Escape listener with the
shared FocusTrap component (already used for the mobile sheet), fixing
missing focus trap/restore and reusing existing infrastructure instead of
duplicating it. Track whether the kebab actions menu is open via a ref so
Escape closes just the menu first, not the whole panel.

Guard the autosave-on-blur form against redundant saves (skip when nothing
changed since the last save) and out-of-order responses (serialize saves
through a queue so a later edit can't be clobbered by a stale response).

Remove dead commented-out JSX for unimplemented tabs/actions.

* Reinstate library reference analytics events for the new preview drawer

* Surface an error notification when deleting a reference from the drawer fails

* Fix stuck kebab-menu state and blocked outside clicks in the reference drawer

* Share error-message extraction and add a test for the delete-failure path

* Fix formatting

* Fix the translation

GitOrigin-RevId: a0082377c6e3f6712fba80c485b9cde4d431c90f
2026-09-17 11:37:40 +00:00
45b4237fd5 fix: always render @[userId] mention tokens regardless of split test (#35564)
* Initial plan

* fix: always render @[userId] mention tokens regardless of split test

Readers outside the comment-mentions/email-notifications split tests
were seeing raw @[<userId>] tokens in chat messages and review-panel
comments, leaking internal Mongo ObjectIds.

Fix: always parse and render @[userId] tokens using parseMentions() +
MentionBadge regardless of split-test membership. MentionBadge already
safely falls back to "@Unknown" when a userId can't be resolved to a
project member, so no ID is ever emitted.

- message-content.tsx: remove mentionsFeatureEnabled gate; always call
  renderMentionedContent() instead of falling back to raw <Linkify>
- review-panel-message.tsx: remove mentionsFeatureEnabled gate; always
  pass displayMentions to ExpandableContent

The mentions-input autocomplete (typing new @mentions) remains gated
behind the split test as before — this fix is rendering-only.

Co-authored-by: jdomaga <25135258+jdomaga@users.noreply.github.com>

* feat: always allow for mentions to display

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jdomaga <25135258+jdomaga@users.noreply.github.com>
Co-authored-by: Jimmy Domagala-Tang <jimmy.domagala-tang@overleaf.com>
GitOrigin-RevId: c7cedbfe6966bb2ebce58a5f4e03b1627198dab7
2026-09-17 11:37:32 +00:00
Jimmy Domagala-Tang 4840bfc23e feat: allow for split tests in dev panel to be filtered to make it easier to test locally (#35653)
GitOrigin-RevId: 0e3600c290877136464765cafccd98294e12d9bb
2026-09-17 11:37:26 +00:00
Malik Glossop 7e69642c01 Merge pull request #35731 from overleaf/mg-historyot-delete-at-end
Fix History OT base length when a tracked delete is in the document

GitOrigin-RevId: 414349aedd498c2635bb3067388dcc7291e32ee6
2026-09-17 11:37:22 +00:00
Andrew Rumble e4bbf74476 Merge pull request #35812 from overleaf/lg-shell-quote-security-upgrade
[Security upgrade] bump shell-quote to 1.10.0 in root workspace

GitOrigin-RevId: 935aa24b352d5f5705609c83f5ea8997df7be425
2026-09-17 11:37:19 +00:00
Lucie Germain 2320967c1b Bump immutable to 4.3.9 via lockfile (#35810)
GitOrigin-RevId: be6149988462a97860074bc8766fe37b0c0ad19e
2026-09-17 11:37:13 +00:00
Rebeka Dekany 1d8c0fb23a Suppress navbar and footer on account security pages (#35744)
* Suppress skip-to-content link on pages without a navbar

* Add main content as target area for the skip link on the library page

* Suppress navbar, footer and skip-to-content on account security pages

GitOrigin-RevId: a85fac5667d84c6f60577cd0ea469cd215554cc4
2026-09-17 11:37:10 +00:00
Rebeka DekanyandCopilot Autofix powered by AI 0b574d2ccd Rename user-facing Papers reference manager to ReadCube (#35701)
* Rename user-facing Papers reference manager text to ReadCube

* Rename Papers component and files name to Readcube

* Update locales from Papers to ReadCube

* Rename ID name from papers to readcube

* Fix a chinese locale to use ReadCube

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: ee89e3f5da5bcf9987c0ee3e558b9ae1dab9372c
2026-09-17 11:37:06 +00:00
Domagoj Kriskovic 0a913bba5e simplify health check comments
GitOrigin-RevId: cc31a6fd98a2c21b8163912e25542e5584d1794f
2026-09-17 11:37:03 +00:00
Domagoj Kriskovic 655034fb8e [git-bridge] Make liveness detect a dead service
GitOrigin-RevId: 266f6db044eec8b362b07bdfed45f892dd272413
2026-09-17 11:36:59 +00:00
Davinder Singh e0a2af4bf6 Merge pull request #35725 from overleaf/ds-unable-to-sync-modal
[WEB] adds unable-to-sync modal for intermittent connection improvements

GitOrigin-RevId: 4cd85cf742cb3f36cc0c97f83bdeab09bb6f7c53
2026-09-17 11:36:54 +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
Kristina 6f8a1be171 [web] emit mention notifications (#35611)
GitOrigin-RevId: 4852c217a8bf7f1fe71696604acbb0f7434d3f2a
2026-09-17 11:36:42 +00:00
Kristina 4e2840e247 [web] remove mentions from chat message editing (#35761)
GitOrigin-RevId: 6cd27490485196b82a9c4d9ffa19ba5d8e10922d
2026-09-17 11:36:38 +00:00
Jakob Ackermann 94cad14caf [chat] migrate to express with strict zod schema (#35742)
GitOrigin-RevId: edffacde0c069768def849f45364d519d9f76f1e
2026-09-17 11:36:35 +00:00
Rebeka Dekany 5ccbd1eb5c [web] Suppress skip-to-content link on pages without a navbar (#35670)
* Suppress skip-to-content link on pages without a navbar

* Add main content as target area for the skip link on the library page

GitOrigin-RevId: a47d7bbc283b648e47db93648d8fcae6ae12ea5a
2026-09-17 11:36:29 +00:00
Maria Florencia Besteiro Gonzalez 4132731016 Merge pull request #35680 from overleaf/mfb-migrate-bibtex-parser-to-core-feature
Migrate BibTeX parser to core frontend feature

GitOrigin-RevId: 274f64d31c1027c5eea9ec569e54dece57307220
2026-09-17 11:36:26 +00:00
Antoine Clausse f9a2a0ad6c Merge pull request #35733 from overleaf/lg-axios-security-upgrade
[Security upgrade] bump axios from 1.16.0 to 1.18.1 in services/web

GitOrigin-RevId: 9c413da00f137873b964b956364b742d366869eb
2026-09-17 11:36:20 +00:00
Antoine ClausseandClaude Fable 5 59b4a67c2d [web] Remove redundant annualDividedByTwelve from pricing tables (#35507)
* [web] Add snapshot test for all annualDividedByTwelve values

Captures the 85 stored values into a JSON fixture and asserts the
effective value (stored field, or PlansHelper.roundedTwelfth(annual)
once the field is derived at runtime) matches. Verification harness for
the annualDividedByTwelve refactor.

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

* [web] Compute annualDividedByTwelve at runtime instead of hardcoding it

* [web] Update annualDividedByTwelve snapshot for the rounding rule

The runtime derivation reproduces 84 of the 85 historical values exactly.
The one difference is PEN assistant, which was historically stored
unrounded (350 / 12 = 29.1667) and now follows the round-up-to-0.05 rule
(29.20). The assistant add-on is unavailable, so this is not user-visible.

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

* Remove `localizedAddOnsPricing` from test

* Add more sanity tests

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
GitOrigin-RevId: e60e8b3e90360817d4be3732243d242dc0cbb69e
2026-09-17 11:36:17 +00:00
Mathias Jakobsen 33e0a5e1c2 [web] Remove toasts and NEW indicators from conversions (#35591)
* [web] Remove toasts for document conversions

* [web] Remove NEW indicators from document conversions

GitOrigin-RevId: 608b344d9be596ecb3cf4573ab1152f78d7d9d43
2026-09-17 11:36:11 +00:00
Mathias Jakobsen 17363fcc59 [web] Recover offline doc backup (#35647)
GitOrigin-RevId: 999ecc534821ab6f1bdc1bc4f7757316dab1658d
2026-09-17 11:36:07 +00:00
Andrew Rumble 64b6b28f69 Merge pull request #35800 from overleaf/ar-convert-project-notifications-script-to-esm
[document-updater] convert project notifications script to ESM

GitOrigin-RevId: df7a617e1e77ee31e4129b5e55d497005ac0acd4
2026-09-17 11:36:04 +00:00
Jakob Ackermann a1d1145df1 [web] fix settings override in acceptance tests (#35798)
GitOrigin-RevId: ee64407a47ef2dac28ca82bd46659c4735e02b6f
2026-09-17 11:36:01 +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
Malik Glossop 73068f10ee Merge pull request #35571 from overleaf/mg-increase-max-string-size
Bump backend OT/history processing limit (MAX_STRING_LENGTH) to 3MB

GitOrigin-RevId: ed64fe5522c45b1ace221a01daa2ae70939816f9
2026-09-17 11:35:54 +00:00
Andrew Rumble cca0f9b518 Merge pull request #35788 from overleaf/dk-nonblocking-libreferences
Add 'nonblocking' tag to library reference migration

GitOrigin-RevId: 6a39eff80b41b1b0fa07d6cf78baf959b74346f1
2026-09-17 11:35:41 +00:00
Jakob Ackermann c6d1cea177 [monorepo] make format_fix happy (#35660)
GitOrigin-RevId: 6f070a87c5240317960c7227dfa8f868e781d2a0
2026-09-17 11:35:30 +00:00
Andrew Rumble da3adace36 Merge pull request #34850 from overleaf/acf-ar-yarn-pnp-redux
[monorepo] yarn pnp redux

GitOrigin-RevId: fb04cab879b04ead2665b5e985a44053ceea33f3
2026-09-17 11:35:26 +00:00
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