138 Commits
Author SHA1 Message Date
34d57a87f9 Add contextual pointers to the AI assistant in the editor gutter (#36643)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: jessdomanska <87976015+jessdomanska@users.noreply.github.com>
GitOrigin-RevId: 0df858dae9673868f02ca32cea024fe89794b544
2026-09-17 12:02:41 +00:00
Malik Glossop 15bc30b596 Merge pull request #36140 from overleaf/mg-ai-usage-limit-show
Add 'ai-usage-limit-show' event for ai limits

GitOrigin-RevId: 887ecc8b3fea52bcd45cf771ab0d22b8f4539308
2026-09-17 11:52:30 +00:00
Jakob Ackermann 2566455740 [web] mock the changes/users request in EditorProviders (#36435)
GitOrigin-RevId: 5f8f5b9317d089ca52ff17ad1307d58d625709d5
2026-09-17 11:52:22 +00:00
Jimmy Domagala-Tang 560b7a209a Transition optimized images to project-level toggle (#36093)
* 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
2026-09-17 11:47:49 +00:00
Jimmy Domagala-Tang ba76fda37b Cleanup AiErrorAssistant todos post plans changes (#35067)
* feat: cleaning up ai quota leftovers

fix: removing more straggler invos

* fix: featureUpdater still need analyticsId in the user projection

* feat: updating cypress tests to also check for fair usage text

GitOrigin-RevId: 09c1167106c144084c111beea56867f6aa4a0906
2026-09-17 11:41:10 +00:00
Mathias Jakobsen 6f06df61a6 Merge pull request #35457 from overleaf/mj-more-disabled-buttons
[web] Disable compilation buttons during network stall

GitOrigin-RevId: c94a77fea7171c6e9ff4fa9f30e9475474900845
2026-09-17 11:28:24 +00:00
Mathias JakobsenandDavinder Singh 1acb00407e [web] Disable various editor buttons during network stall (#34247)
Co-authored-by: Davinder Singh <davibaweja@gmail.com>
GitOrigin-RevId: 9e169f3591cfff2fdae63b461b946fde4611f2d7
2026-09-17 11:25:49 +00:00
ilkin-overleaf 6f8ecc7678 Merge pull request #35182 from overleaf/ii-use-event-listener
[web] Replace useScopeEventEmitter and useScopeEventListener with useEventListener

GitOrigin-RevId: 8348c8c980b01e172fee3371980176d2b58ceec6
2026-09-17 11:22:34 +00:00
Domagoj Kriskovic a2712ce523 [web] Clean up boolean handling of track changes state in the frontend
GitOrigin-RevId: 640380219274e156d5bbac704d82e7ea75e1fee2
2026-09-17 11:17:51 +00:00
Jakob AckermannandBrian Gough 69ccb3c316 [clsi] integrate png2pdf (#34796)
* Add png to pdf converter for optimising image loading in pdftex

* refactor

* move fixtures

* refactor and add unit tests

* Remove gamma correction from PNG processing and update related tests

* Add crc32fast dependency and enhance PNG processing tests

* Add fixture test cases for PNG processing

* fix alpha channel to match pdftex

pdftex always uses an 8 bit alpha channel in the output even for 16 bit images

* Refactor PNG processing to use Option for alpha stream and update related logic

* Enhance PDF writing by adding DecodeParms for alpha stream and optimize PNG encoding process

* Add pixel dimensions support in PNG processing and PDF writing

* [copybara] move clsi excludes

* [clsi] move gitignore rules

* [png2pdf] move into dockerfiles folder

* [png2pdf] use atomic writes

* [clsi] integrate png2pdf

* [saas-e2e] add coverage for png2pdf

* [png2pdf] make compatible with seccomp profile in clsi

* [copybara] remove exclude following move of png2pdf

* [copybara] remove spurious excludes

* fix broken detection of malformed chunk headers

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

* [project-history] add build script flag for depending on doc-updater types

* [png2pdf] run tests as part of clsi pipeline

* [png2pdf] fix calculation of PDF page size

* [web] put png2pdf behind feature flag and make it opt-in

* [web] fix ClsiManager.promises.sendRequest invocation after merge

* extend is_copy_safe function to follow pdftex

see the conditions in pdftex's writepng.c
https://svn.tug.org:8369/texlive/trunk/Build/source/texk/web2c/pdftexdir/writepng.c?revision=78081&view=markup#l575

the criteria are not an exact match because the png crate does not support all the
png chunk types
https://github.com/image-rs/image-png/issues/116

if the criteria result in a png being converted or skipped the final result should be the same.

in one case the conversion will be done by pdftex (at runtime)
in the other case the conversion will be done by png2pdf -

both conversions should give the same result.

* include tests in png2pdf Dockerfile

* [clsi] explicitly disable png2pdf conversion for project conversion

* [clsi] png2pdf: count converted files

* [png2pdf] bump date in docker image tag

* [web] make draft-setting option wider when png2pdf is available

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: d0d952ee009bf93c72bba2ffe763ae0160d396e4
2026-09-17 11:17:28 +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
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
MoxAmber 886985d91c Merge pull request #33717 from overleaf/as-new-link-sharing-pass-groups
[web] Pass project owner link sharing settings to frontend

GitOrigin-RevId: ff000f38ef36a3d448a2934d0c5963139852eee2
2026-06-12 08:06:12 +00:00
Alexandre BourdinandAnna Fields c8a3bdd13f [web] Add a focus mode to the editor (#32245)
* Basic focus mode implementation

* Exit button

* Toggle between editor pdf mode

* Keep the rail and file tree mounted for editor tabs to work properly

* Hide Switch to editor button in focus mode

* Show shortcuts in layout menu

* Gate the feature behind a focus-mode feature flag

* Add split test badges in the focus mode dropdown item and top bar

* Add analytics tracking for focusMode changes

* Cleanup leftover IdeView value

* Allow passing focusMode value in layout test provider

* Remove redundant listener for focus mode shortcut

* Update focus mode and full project search listeners to use the event key

* Post-rebase cleanup

---------

Co-authored-by: Anna Fields <acfields11@gmail.com>
GitOrigin-RevId: 207f8d136fa6662558c474cca4a867a9842191e7
2026-06-08 08:06:05 +00:00
Miguel Serrano f9c53fe147 [web] Added DEFAULT_LATEX_COMPILER env (#32455)
This is mainly intended to be used in CE/Server Pro

GitOrigin-RevId: 277f9afca389a1e7b00db2d987129432fb1707b5
2026-05-21 08:06:12 +00:00
Mathias Jakobsen 76fbb56107 [web] Delay suggest fix paywall until suggest button has been clicked (#33458)
GitOrigin-RevId: 11d2ec0c9c33aea3fedff57d5f1a74d6ce774017
2026-05-07 08:08:36 +00:00
ilkin-overleaf faec27d7b0 Merge pull request #33163 from overleaf/ii-share-modal-give-feedback
[web] Share modal give feedback link

GitOrigin-RevId: 5e83dec6c6b97c172b7600d8ded285db49178a64
2026-05-07 08:07:54 +00:00
Mathias Jakobsen c67885919b Merge pull request #33141 from overleaf/mj-tutorials-show-one
[web] Ensure only one tutorial shows at once

GitOrigin-RevId: 797c677a3d45635451485d79ed1c0705819ed5ad
2026-05-01 08:07:29 +00:00
Eric Mc Sween 628e05a278 Merge pull request #32884 from overleaf/em-editor-switch-by-filetype
[web] Split editor mode preference by file type

GitOrigin-RevId: 2574623c9c1c88cc66de72c19cffb4428a632e96
2026-04-21 08:06:23 +00:00
Mathias Jakobsen b87053a932 Merge pull request #32281 from overleaf/mj-remove-enableNewEditor
[web] Remove enableNewEditor settings

GitOrigin-RevId: cc33be59b8c2f5b0ba9e12a2fe9af9ccba7196e8
2026-03-23 09:05:55 +00:00
Malik Glossop a598c552a5 Merge pull request #31737 from overleaf/mg-shared-ai-consent
Migrate Writefull AI consent to shared tutorial system

GitOrigin-RevId: c9298a177c9f1aa1a941c96599d6d854591f8a76
2026-03-20 09:07:33 +00:00
Copilot 27aac33259 Add .lean, .lean4, and .hs as editable/viewable file types (#31716)
GitOrigin-RevId: c3ee7592d0a1096ac96ca9514579c559d028b840
2026-03-09 09:05:48 +00:00
Jimmy Domagala-Tang bb5d90a332 Add usage quota to Workbench (#31782)
* feat: adding usage rate limiting to workbench and aligning editor context values for suggestionsLeft

* feat: prepend word token to headers of token rate limiter to prevent confusion with usage rate limiter

* Shared AI paywalls (#31948)

* feat: renaming hasPremiumSuggestion and adding token limits to editor context and project load

* feat: adding new ai features paywall component

* feat: rename getRemainingFeatureUses to token based naming for token based limiter, removed checking for feature usage on anonymous users, and removed guard on null userId since we shouldnt be calling getRemainingFeatureUses on a nonexistent user

* feat: using token rate limit headers to set token rate values in editor context

* feat: update workbench to be available without refreshing if rate limit reset occurs within session

* fix: move paywall out of inert section

* Hide new paywalls behind FF and open plans page on upgrade attempt (#32023)

* feat: hide new paywalls behind FF

* feat: update ai paywall buttons to navigate to plans page post quota plans change release

* feat: showing a fair limit notificaiton pre-quota change, and updating paywall to not fire if user has premium already (#32056)

GitOrigin-RevId: 565fb128d55543fea34c383bc4abeaa3dd148d09
2026-03-06 09:17:52 +00:00
Malik Glossop a293474c0c Merge pull request #31035 from overleaf/mg-context-menu-analytics
Add analytics event for context menu, comment, track changes, and jump to location

GitOrigin-RevId: 8412cc3c8039cd1582ccee20b162b4bef4467dea
2026-03-06 09:14:26 +00:00
Jakob Ackermann ddeafa1d7c [web] fallback to clsi-cache from regular output file download (#31555)
* [web] fallback to clsi-cache from regular output file download

* [web] add comment on req.params assignment

GitOrigin-RevId: 9d0c2e0a8e12d322aa5754c732a38f19adeac716
2026-02-17 09:05:08 +00:00
Mathias Jakobsen 08f2597948 Merge pull request #31372 from overleaf/mj-tutorial-cleanup
[web] Stop manually checking inactiveTutorials

GitOrigin-RevId: c2d14d8633ff58c1dc0b0544c890090d8beb64e2
2026-02-16 09:06:15 +00:00
Mathias Jakobsen 498c89c6ed Merge pull request #31329 from overleaf/mj-dark-mode-notification
[web] Introduce notification for dashboard dark mode

GitOrigin-RevId: da5045d412ddc87a4b18823a4a5fa3192fe15c89
2026-02-12 09:05:36 +00:00
Mathias Jakobsen cc1dedca7d Merge pull request #31397 from overleaf/mj-old-editor-toolbar-teardown
[web] Tear down old editor toolbar

GitOrigin-RevId: 8ba74abcc56e7bd476a9d6cae72f38486168c2ed
2026-02-11 09:07:14 +00:00
Alf Eaton 07d39f631a Add Cypress tests for code check (#30781)
GitOrigin-RevId: 6ff1314542c3042d40054e5173ea85e14719d8a2
2026-02-06 09:05:40 +00:00
Chris Dryden fa4a8a0333 Merge pull request #31141 from overleaf/cd-adjust-githubworkflow-error-message-for-non-project-owners
Add GitHub error message for non-project owners

GitOrigin-RevId: 954c5ae45cee9de22df20acfe26867d50b049100
2026-02-04 09:06:39 +00:00
Anna Claire Fields e80ce42896 Upgrade Node.js from 22.18 to 24.13 (#30509)
GitOrigin-RevId: c2405a0583e68c61351f52b32ba28faec994fbc0
2026-01-30 09:05:28 +00:00
Alf Eaton ce5f66c21b Add keyboard shortcuts for Layout actions (#30494)
GitOrigin-RevId: 7978a579e719c4cd593c02662406e364b19f87e0
2026-01-09 09:05:56 +00:00
Jakob Ackermann f3f6a8a8e0 [web] add clsi-cache prompts (#29281)
* [web] add clsi-cache prompts

* [web] add new editor variant to segmentation

* [web] add tests for useNewEditorVariant

* [web] adjust start of using clsi-cache in split-test

GitOrigin-RevId: c9c5b1eff2ceefb65ef82516d9074cb971cb4c48
2025-10-24 08:05:42 +00:00
Mathias Jakobsen ed0c4c447e Merge pull request #24468 from overleaf/mj-client-side-references
[web] Perform ARS on client-side

GitOrigin-RevId: 19703c82758cae450fe52463ad9612d3a2383ba0
2025-09-03 08:05:41 +00:00
Jakob Ackermann bd4130c147 [filestore] remove user files endpoints (#28125)
* [filestore] remove user files endpoints

* [web] remove user files integration for filestore

GitOrigin-RevId: 565fa68a659c07420ee6141d0f276b4e4d2972e0
2025-09-02 08:04:52 +00:00
Brian GoughandJakob Ackermann f5dbbadf79 add option to disable link sharing (#27626)
* add option to remove link-sharing from backend

* restrict make link-sharing in the frontend based on capability

* extend e2e project-sharing tests to cover OVERLEAF_DISABLE_LINK_SHARING=true

* throw an error when link sharing is disabled in TokenAccessHandler

* throw errors when attempting to add users to projects with link sharing disabled

* Update server-ce/test/project-sharing.spec.ts

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* add tests for existing access when link sharing is disabled

* update tests to specify access restrictions for read-only and read-write link shared projects

* [web] block access to legacy public project with link-sharing disabled

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 5f194dbcb790e973e427c58a3a4a738a5dd74cb4
2025-08-20 08:05:33 +00:00
David ba1245682f Merge pull request #27828 from overleaf/dp-modal-test-typescript
Convert clone project, share project and dictionary modal tests to typescript

GitOrigin-RevId: 058eecef6054a40dff7c3697fcd908bb60e39b6b
2025-08-14 08:05:38 +00:00
Rebeka Dekany c9a1ecd060 Remove Bootstrap version 3 (#27420)
* Remove bootstrap-3 entrypoint

* Rename bootstrap-5 entrypoint to bootstrap

* Restore entrypoints

* Remove `bootstrap-5` and `bootstrap-3` entrypoints and a single `bootstrap.ts` file is now the default entrypoint

* Update `bootstrap-5` component imports to `bootstrap`

* Update `bootstrap-5` CSS imports to `bootstrap`

* Remove the `isBootstrap5` utility

* Remove `bootstrapVersion`

* Remove `ol-bootstrapVersion`

* Remove getCssThemeModifier

* Update path and rename

* Source format

* Remove Bootstrap v3 and Bootstrap v5 alias npm packages

* Remove bootstrap argument

* Remove unused files

* Update with the latest split tests

* Remove remaining bootstrap5PageStatus

* Update path

GitOrigin-RevId: 7acda2f80114d2de8699e1f06729a2a29218e284
2025-08-08 08:06:00 +00:00
Rebeka Dekany 3f11776ecd Remove LESS stylesheets and dependencies (#27409)
* Remove components, core and modules LESS stylesheets

* Remove variables LESS stylesheets

* Remove app LESS stylesheets

* Remove github-sync, onboarding LESS stylesheets

* Remove main-light and IEEE LESS stylesheets

* Remove Less loader configuration

* Remove bootstrap-3 entrypoint

* Rename bootstrap-5 entrypoint to bootstrap

* Remove bootstrap-5 CSS folder and move stylesheets

* Update CSS variables

* Restore and update github-sync.scss path

* Fix try-premium.scss path and fix undefined mixin error

* Restore entrypoints

* Simplify buildCssPath to always use main-style.css

* Remove less from prettier formatting scripts

* Remove less from addHook extension

* Source format

* Remove nvd3 file reference from prettierignore (equivalent of nvd3.scss)

* Remove less and less-loader

* Add SCSS files to pirates require hook

GitOrigin-RevId: bd83c79f4d6ef7305d75993959a4dc5e7714ef9c
2025-08-06 08:05:38 +00:00
Mathias Jakobsen 4ab4fbdf51 Merge pull request #26951 from overleaf/mj-layout-broken
[web] Add restoreView to LayoutContext

GitOrigin-RevId: 3a50c1e215c99236f503285fee1c924df57e07e4
2025-07-11 08:05:06 +00:00
Tim Down bfa0459e72 Merge pull request #26928 from overleaf/td-remove-use-scope-value
Remove useScopeValue and its associated store

GitOrigin-RevId: 439d6eb16343f65695ef615a9ff697d0cc5ad2c7
2025-07-10 08:08:59 +00:00
Tim Down 905cc5d45f Move project context out of scope value store (#26615)
* Refactor project context to not use scope store

* Fix Cypress tests for project context changes

* Fix frontend React Testing Library tests for project context changes

* Remove redundant code

* Fix some project types in tests

* Remove unused import and fix a type

* Throw an error if updating the project in the project context before joining the project

* Fix some review panel tests

* Remove unused imports

GitOrigin-RevId: 2f0c928b651f387aa980c29aef7d1ba0649790a7
2025-07-10 08:06:31 +00:00
Tim Down 132ccbc4cc Merge pull request #26583 from overleaf/td-editor-scope-values-to-context
Move scope values starting with `editor.` to contexts

GitOrigin-RevId: 7ca349ceff002228cf4e931c644c8c386eb6c597
2025-07-09 08:05:15 +00:00
Antoine Clausse 07b1701b72 [web] Convert EditorProviders and some test files to Typescript (#26512)
* Rename files to tsx

* Update types

* Remove props that aren't typed

* Add `LayoutContextOwnStates`

* Use `LayoutContextOwnStates`

* Ignore ts errors about `SocketIOMock`

* Address comments: remove `satisfies`, update `BroadcastChannel` fixture

* Add types to `makeEditorOpenDocProvider`. Update `openDocId`->`currentDocumentId`

* misc.

* Type sockets as `SocketIOMock & Socket`

* Fix remaining typing errors

* Fix type of `ideReactContextValue`

GitOrigin-RevId: 2734ac707517d56c452b0bf06ea3438f947a64be
2025-07-07 08:05:40 +00:00
Antoine Clausse 09a534f48b [web] Move scopes permissionsLevel, permissions and hasLintingError to React context (#26607)
* Move `hasLintingError` from scope to react state

* Move `permissionsLevel` to IdeReactContext states

* Get `permissionsLevel` from `useIdeReactContext()`

* Set `permissionsLevel` in mocked `IdeReactProvider`

* Replace `permissions` scope by React state

* Fixup `permission` changes

* Remove redundant type

GitOrigin-RevId: 6203c61f9ac429789624196bf67e508310f4577f
2025-07-07 08:05:36 +00:00
Tim Down 904fac958d Merge pull request #26326 from overleaf/td-clean-up-scope-store
Create separate window.overleaf.unstable.store based on React context values

GitOrigin-RevId: 68f070a6fc5e2965a82720024d91b16fa622b28b
2025-07-02 08:05:53 +00:00
Antoine Clausse 9e189e7d59 [web] Move UI scope to React states (#26403)
* Move `ui.view` to setState

* Move `openFile` to setState

* Move `ui.leftMenuShown` to setState

* Move `ui.miniReviewPanelVisible` to setState

* Move `ui.pdfLayout` to setState

* Move `ui.chatOpen` to setState

* Move `ui.reviewPanelOpen` to setState

* Cleanup: remove layout-context-adapter and imports

* Replace `ui` scope by mocked `LayoutProvider` in tests

* Update test

* Remove unnecessary `scopeStore.set('ui.chatOpen' ...`

GitOrigin-RevId: 81578bfdc958239eac492905f714a6074c81d0f5
2025-06-25 08:05:15 +00:00
Miguel Serrano 04fa5366ce Merge pull request #26070 from overleaf/msm-disable-dropbox
[web] Disable Dropbox Capability

GitOrigin-RevId: 5f91d2918bf3b88e52f4d27c828a4715f9b88629
2025-06-20 08:05:20 +00:00
Antoine Clausse 494f0a4b1a [web] Rename docRoot_id to docRootId in the frontend code (#26337)
* Rename `rootDoc_id` to `rootDocId` in the frontend

* Update types

* Fix frontend test

GitOrigin-RevId: b755a4ebf7b8c0b8ed800d713bbae8cfcfdd5046
2025-06-18 08:07:05 +00:00
Antoine Clausse 3ba002460e [web] Remove instances of $scope and _ide (#26297)
* Remove `$scope` from `getMockIde`

* Replace `...getMockIde()` by `_id: projectId`

* Simplify stories decorator scope.tsx: less reliance on `window`

* Update helper editor-providers.jsx: pass data instead directly instead of using `window`

* Remove `cleanUpContext`

* Remove unused prop `clsiServerId`

* Update types to reflect unused properties

* Remove comment

* Add `ol-chatEnabled` in Storybook

* Revert moving `getMeta` outside of the component

This causes issues in Storybook

GitOrigin-RevId: dc2558ce814c2d738fb39450c57c104f4419efb8
2025-06-18 08:06:42 +00:00