Commit Graph
5807 Commits
Author SHA1 Message Date
Kristina b624adf885 [web] trigger post-offline sync result treatments (#35854)
* trigger `UnableToSyncModal` on refresh
* trigger `UnableToSyncModal` without refresh
* show success toast when offline edits sync
* always show out of sync modal as the final backup

GitOrigin-RevId: 3ed300fef9e6d2ff81e17868309f80ffa40e0576
2026-09-17 11:39:03 +00:00
Maria Florencia Besteiro Gonzalez 297b9bf443 Merge pull request #35860 from overleaf/tw-35479-navigate-prev-next-drawer
Add previous/next buttons to side drawer

GitOrigin-RevId: 720228c8686bcbf3871d7ea338fd76a3ae6d667c
2026-09-17 11:38:15 +00:00
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
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
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
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 4e2840e247 [web] remove mentions from chat message editing (#35761)
GitOrigin-RevId: 6cd27490485196b82a9c4d9ffa19ba5d8e10922d
2026-09-17 11:36:38 +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
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
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
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
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
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 5c8a4f3210 Add read_project_outline tool to the AI assistant (#31875)
GitOrigin-RevId: 37e7d9bebdc6291a0ea7d89b73494d24f5cd5908
2026-09-17 11:34:20 +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
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
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
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
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
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
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
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
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 adc89fbf67 frontend handling zotero deletions
GitOrigin-RevId: 7e824ce8d86dd4f8185ba9d6c35ccb8f003e303e
2026-09-17 11:30:18 +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 ClausseandClaude Opus 4.8 bf50bf56b4 [web] Widen auth-aux container to fit page headers on one line (#35513)
* [web] Widen auth-aux container to fit page headers on one line

Bump .auth-aux-container max-width from 320px to 400px, matching
.login-register-container. Fixes the "Keep your account safe" header
wrapping to two lines on primaryEmailCheck, and keeps the auth pages
(reconfirm, passwordReset, setPassword) consistent with login/register.

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

* Add x-padding to `.auth-aux-container`

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
GitOrigin-RevId: 3256447bd7f6a1b13fbe09d8d359f037c0e50ac2
2026-09-17 11:29:38 +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
Jimmy Domagala-TangandKristina 7e550a9475 Chat and Review-panel mentions (#34564)
* feat: changing chat to use cm6 editor instead to allow for mentions display and autocomplete

* feat: changing review panel comment, edit, and reply to also use cm6 editor to enable mentions

* feat: updating tests, and moving from jsdom to cypress tests as jsdom cant handle cm6

* feat: centralizing mentions component and applying to both chat and review-panel

* feat: centralizing mentions input, and using changesUsers in chat mentions

* fixing dark mode styles of chat

* feat: updating mentions dropdown style and adding custom icon generation for mentions cm6 autocomplete tooltip

* feat: making mentions look like links, and fixing border radius on tooltip

* fix: naming and using correct color util

* feat: fixing hover on highlight

* update scroll bar dance in review panel

when a system had persistent scroll bars, we would run into issues calculating the height of the review panel

Co-authored-by: Kristina <7614497+khjrtbrg@users.noreply.github.com>

---------

Co-authored-by: Kristina <7614497+khjrtbrg@users.noreply.github.com>
GitOrigin-RevId: 96441ad55f9614427506edfecf3d87bae82d1607
2026-09-17 11:29:26 +00:00
Mathias Jakobsen c3fa2bf304 Merge pull request #35543 from overleaf/mj-survey-removal
[web] Remove tabs and focus mode surveys

GitOrigin-RevId: 6ab783b6db0089a61b9620ba86fa1df36e30b79a
2026-09-17 11:29:05 +00:00