* [editor-core] gracefully handle no-op TextOperation
* [web] avoid sending sync to pdf requests without a ?file
* [validation-tools] log deeper nested violations
* [editor-core] fix round trip of EditNoOperation
* [web] use custom error for sync to pdf w/o file, fix tests
* [validation-tools] include request params in log msg for violation
* Revert "[editor-core] gracefully handle no-op TextOperation"
This reverts commit c1d37261d5db72b37dbf39428c54edcfb5423f41.
* [web] gracefully handle rejected sync to pdf from context menu
GitOrigin-RevId: 21de7dc96b23575b0d67b6eb0c68ed9c2f86292b
* Simplify the new project dropdown
* Simplify the New project dropdown
* removing artefact of rebase
GitOrigin-RevId: e7e4dc48c10f2297abcd7c5b489ff2308bf9e18b
* feat: transitioning optimized images from a compile mode to a project level toggle. We still persist it for the proect and between users, and ensure that draft mode does not interact with it (silently disabled while draft mode is on)
* feat: cleaning up unused var, tests, and locales
* feat: updating copy
GitOrigin-RevId: 8010edfab164980f14125739e481d8b512f6b3df
* Add Abstract tab to the reference preview drawer
* Correct active border colour
* Swap mobile navigation items around
* Fix co-pilot suggestions
* fix: stop auto complete grabbing focus on mount
* fix: focus issues
* Fix failing test
GitOrigin-RevId: a9e808cf40ab0626ed9e2cf8dc732a224aab31d3
* 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
* 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
* 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
* 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
* [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
* [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
* 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
Ship the new share-project modal (behind sharing-updates) wired to the
legacy token-based link sharing, and hide the new reusable-link
functionality (anyone with the link / group links) behind a new
sharing-updates-new-link split test.
- With the flag off, the modal offers two options, "Only invited people"
and "Via sharing links", both driven by publicAccessLevel; the reusable
-link options, privileges dropdown and copy-sharing-link button are hidden.
- Enable the flag in the acceptance tests that exercise those routes: a
seeded split test in saas, splitTestOverrides in non-saas.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: thomas- <2176518+thomas-@users.noreply.github.com>
GitOrigin-RevId: 3f34a2da5dbdc6f27ed389f9c25eea66143b8160