= ({
- setEditorRedesignStatus,
- hide,
- loading,
-}) => {
- const { t } = useTranslation()
- const { sendEvent } = useEditorAnalytics()
- const enable = useCallback(() => {
- sendEvent('editor-redesign-toggle', {
- action: 'enable',
- location: 'modal',
- })
- setEditorRedesignStatus(true)
- .then(hide)
- .catch(() => {
- // do nothing, we're already showing the error
- })
- }, [setEditorRedesignStatus, hide, sendEvent])
- return (
- <>
-
- {t('help_shape_the_future_of_overleaf')}
- {t('were_redesigning_our_editor_to_make_it_easier_to_use')}
-
-
-
-
-
- {t('cancel')}
-
-
- {t('switch_to_new_editor')}
-
-
- >
- )
-}
-
-const SwitcherWhatsNew = () => {
- const { t } = useTranslation()
- const newErrorlogs = useFeatureFlag('new-editor-error-logs-redesign')
-
- return (
-
-
{t('latest_updates')}
-
- {newErrorlogs && - {t('new_error_logs_panel')}
}
- - {t('searching_all_project_files_is_now_available')}
- - {t('double_clicking_on_the_pdf_shows')}
-
-
-
{t('whats_different_in_the_new_editor')}
-
- - {t('new_look_and_feel')}
- -
- {t('new_navigation_introducing_left_hand_side_rail_and_top_menus')}
-
- - {t('new_look_and_placement_of_the_settings')}
- - {t('improved_dark_mode')}
- - {t('review_panel_and_error_logs_moved_to_the_left')}
-
-
- )
-}
-
-const LeavingNote = () => {
- return (
-
- ]}
- shouldUnescape
- tOptions={{ interpolation: { escapeValue: true } }}
- />
-
- )
-}
diff --git a/services/web/frontend/js/features/ide-redesign/components/toolbar/labs-actions.tsx b/services/web/frontend/js/features/ide-redesign/components/toolbar/labs-actions.tsx
deleted file mode 100644
index a04ac343d8..0000000000
--- a/services/web/frontend/js/features/ide-redesign/components/toolbar/labs-actions.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import { useIdeRedesignSwitcherContext } from '@/features/ide-react/context/ide-redesign-switcher-context'
-import OLButton from '@/shared/components/ol/ol-button'
-import OLTooltip from '@/shared/components/ol/ol-tooltip'
-import MaterialIcon from '@/shared/components/material-icon'
-import { useCallback } from 'react'
-import { useTranslation } from 'react-i18next'
-import { GiveFeedbackLink } from './give-feedback-link'
-
-export const LabsActions = () => {
- const { t } = useTranslation()
- const { setShowSwitcherModal } = useIdeRedesignSwitcherContext()
- const openEditorRedesignSwitcherModal = useCallback(() => {
- setShowSwitcherModal(true)
- }, [setShowSwitcherModal])
-
- return (
- <>
-
-
- }
- >
- {t('labs')}
-
-
-
-
- >
- )
-}
diff --git a/services/web/frontend/js/features/ide-redesign/components/toolbar/toolbar.tsx b/services/web/frontend/js/features/ide-redesign/components/toolbar/toolbar.tsx
index f106c15fc9..2174d3349b 100644
--- a/services/web/frontend/js/features/ide-redesign/components/toolbar/toolbar.tsx
+++ b/services/web/frontend/js/features/ide-redesign/components/toolbar/toolbar.tsx
@@ -5,7 +5,6 @@ import { OnlineUsers } from './online-users'
import ShareProjectButton from './share-project-button'
import ChangeLayoutButton from './change-layout-button'
import ShowHistoryButton from './show-history-button'
-import { LabsActions } from './labs-actions'
import { useLayoutContext } from '@/shared/context/layout-context'
import BackToEditorButton from '@/features/editor-navigation-toolbar/components/back-to-editor-button'
import { useCallback } from 'react'
@@ -16,7 +15,6 @@ import importOverleafModules from '../../../../../macros/import-overleaf-module.
import UpgradeButton from './upgrade-button'
import getMeta from '@/utils/meta'
import { useIdeReactContext } from '@/features/ide-react/context/ide-react-context'
-import { isNewEditorInBeta } from '../../utils/new-editor-utils'
import { BetaActions } from './beta-actions'
const [publishModalModules] = importOverleafModules('publishModal')
@@ -30,7 +28,6 @@ export const Toolbar = () => {
const shouldDisplaySubmitButton =
(permissionsLevel === 'owner' || permissionsLevel === 'readAndWrite') &&
SubmitProjectButton
- const newEditorBeta = isNewEditorInBeta()
const handleBackToEditorClick = useCallback(() => {
eventTracking.sendMB('navigation-clicked-history', { action: 'close' })
@@ -57,7 +54,7 @@ export const Toolbar = () => {
- {newEditorBeta ? : }
+
diff --git a/services/web/frontend/js/features/ide-redesign/hooks/use-survey-url.tsx b/services/web/frontend/js/features/ide-redesign/hooks/use-survey-url.tsx
index 0b8007623c..68233d8f76 100644
--- a/services/web/frontend/js/features/ide-redesign/hooks/use-survey-url.tsx
+++ b/services/web/frontend/js/features/ide-redesign/hooks/use-survey-url.tsx
@@ -1,23 +1,10 @@
-import {
- useFeatureFlag,
- useSplitTest,
-} from '@/shared/context/split-test-context'
-import { isNewEditorInBeta } from '../utils/new-editor-utils'
+import { useSplitTest } from '@/shared/context/split-test-context'
export const useSurveyUrl = () => {
- const newErrorlogs = useFeatureFlag('new-editor-error-logs-redesign')
const splitTestConfig = useSplitTest('editor-redesign')
- const newEditorBeta = isNewEditorInBeta()
- if (newEditorBeta) {
- return (
- splitTestConfig.info?.badgeInfo?.url ||
- 'https://forms.gle/NGkALNUiMbanjp3Q7'
- )
- }
-
- if (newErrorlogs) {
- return 'https://forms.gle/83QJ9ALJkiugxTZf8'
- }
- return 'https://forms.gle/soyVStc5qDx9na1Z6'
+ return (
+ splitTestConfig.info?.badgeInfo?.url ||
+ 'https://forms.gle/NGkALNUiMbanjp3Q7'
+ )
}
diff --git a/services/web/frontend/js/features/ide-redesign/utils/new-editor-utils.ts b/services/web/frontend/js/features/ide-redesign/utils/new-editor-utils.ts
index 3408e35513..b0f583bcf8 100644
--- a/services/web/frontend/js/features/ide-redesign/utils/new-editor-utils.ts
+++ b/services/web/frontend/js/features/ide-redesign/utils/new-editor-utils.ts
@@ -1,19 +1,8 @@
import { useUserSettingsContext } from '@/shared/context/user-settings-context'
-import { isInExperiment } from '@/utils/labs-utils'
-import getMeta from '@/utils/meta'
import { isSplitTestEnabled } from '@/utils/splitTestUtils'
-export const isNewEditorInBeta = () => {
- const splitTestInfo = getMeta('ol-splitTestInfo') || {}
- return splitTestInfo['editor-redesign']?.phase === 'beta'
-}
-
export const canUseNewEditor = () => {
- const inBetaPhase = isNewEditorInBeta()
- return (
- (!inBetaPhase && isInExperiment('editor-redesign')) ||
- isSplitTestEnabled('editor-redesign')
- )
+ return isSplitTestEnabled('editor-redesign')
}
export const useIsNewEditorEnabled = () => {
diff --git a/services/web/frontend/js/utils/labs-utils.ts b/services/web/frontend/js/utils/labs-utils.ts
index 1cfabafd87..9ac34e588c 100644
--- a/services/web/frontend/js/utils/labs-utils.ts
+++ b/services/web/frontend/js/utils/labs-utils.ts
@@ -2,7 +2,7 @@ import getMeta from './meta'
// Should be `never` when no experiments are active. Otherwise it should be a
// union of active experiment names e.g. `'experiment1' | 'experiment2'`
-export type ActiveExperiment = 'editor-redesign'
+export type ActiveExperiment = never
export const isInExperiment = (experiment: ActiveExperiment): boolean => {
const experiments = getMeta('ol-labsExperiments')
diff --git a/services/web/frontend/stylesheets/abstracts/mixins.scss b/services/web/frontend/stylesheets/abstracts/mixins.scss
index 0b8ebff3e5..1c4bb08c6f 100644
--- a/services/web/frontend/stylesheets/abstracts/mixins.scss
+++ b/services/web/frontend/stylesheets/abstracts/mixins.scss
@@ -60,7 +60,7 @@
}
}
-@mixin labs-button {
+@mixin editor-switcher-button {
@include ol-button-variant(
$color: var(--green-60),
$background: var(--bg-accent-03),
diff --git a/services/web/frontend/stylesheets/pages/editor/ide-redesign-switcher-modal.scss b/services/web/frontend/stylesheets/pages/editor/ide-redesign-switcher-modal.scss
index bb9c930848..5603092fec 100644
--- a/services/web/frontend/stylesheets/pages/editor/ide-redesign-switcher-modal.scss
+++ b/services/web/frontend/stylesheets/pages/editor/ide-redesign-switcher-modal.scss
@@ -29,12 +29,4 @@
}
}
}
-
- .ide-redesign-switcher-modal-leave-text {
- color: var(--content-secondary);
-
- a {
- color: var(--link-ui);
- }
- }
}
diff --git a/services/web/frontend/stylesheets/pages/editor/toolbar-redesign.scss b/services/web/frontend/stylesheets/pages/editor/toolbar-redesign.scss
index 32517a887f..72985f5416 100644
--- a/services/web/frontend/stylesheets/pages/editor/toolbar-redesign.scss
+++ b/services/web/frontend/stylesheets/pages/editor/toolbar-redesign.scss
@@ -234,10 +234,6 @@
white-space: nowrap;
}
-.ide-redesign-labs-button.btn.btn-secondary {
- @include labs-button;
-}
-
.ide-redesign-beta-button.btn.btn-secondary {
- @include labs-button;
+ @include editor-switcher-button;
}
diff --git a/services/web/frontend/stylesheets/pages/editor/toolbar.scss b/services/web/frontend/stylesheets/pages/editor/toolbar.scss
index 59923830a6..df2605c72c 100644
--- a/services/web/frontend/stylesheets/pages/editor/toolbar.scss
+++ b/services/web/frontend/stylesheets/pages/editor/toolbar.scss
@@ -534,7 +534,7 @@
// Override a secondary button to ensure that the border is visible because
// overriding a borderless button will not add a border.
.toolbar-experiment-button.btn-secondary {
- @include labs-button;
+ @include editor-switcher-button;
max-height: 39px;
font-size: var(--font-size-01);
diff --git a/services/web/locales/en.json b/services/web/locales/en.json
index a35b1db417..90bd41f534 100644
--- a/services/web/locales/en.json
+++ b/services/web/locales/en.json
@@ -52,7 +52,6 @@
"access_denied": "Access Denied",
"access_edit_your_projects": "Access and edit your projects",
"access_levels_changed": "Access levels changed",
- "access_your_favourite_features_faster_with_our_new_streamlined_editor": "Access your favourite features faster with our new, streamlined editor.",
"account": "Account",
"account_already_managed": "Your account is already managed.",
"account_billed_manually": "Account billed manually",
@@ -581,7 +580,6 @@
"dont_forget_you_currently_have": "Don’t forget, you currently have:",
"dont_have_account": "Don’t have an account?",
"dont_reload_or_close_this_tab": "Don’t reload or close this tab.",
- "double_clicking_on_the_pdf_shows": "Double clicking on the PDF shows the corresponding location in code. Added word count (7 May 2025)",
"download": "Download",
"download_all": "Download all",
"download_as_pdf": "Download as PDF",
@@ -958,7 +956,6 @@
"help_guides": "Help guides",
"help_improve_overleaf_fill_out_this_survey": "If you would like to help us improve Overleaf, please take a moment to fill out <0>this survey0>.",
"help_improve_screen_reader_fill_out_this_survey": "Help us improve your experience using a screen reader with __appName__ by filling out this quick survey.",
- "help_shape_the_future_of_overleaf": "Help shape the future of Overleaf",
"hide": "Hide",
"hide_configuration": "Hide configuration",
"hide_deleted_user": "Hide deleted users",
@@ -1148,7 +1145,6 @@
"ja": "Japanese",
"january": "January",
"join": "Join",
- "join_beta": "Join beta",
"join_beta_program": "Join the beta program",
"join_labs": "Join Labs",
"join_now": "Join now",
@@ -1193,7 +1189,6 @@
"latam_discount_modal_info": "Unlock the full potential of Overleaf with a __discount__% discount on premium subscriptions paid in __currencyName__. Get a longer compile timeout, full document history, track changes, additional collaborators, and more.",
"latam_discount_modal_title": "Premium subscription discount",
"latam_discount_offer_plans_page_banner": "__flag__ We’ve applied a __discount__ discount to premium plans on this page for our users in __country__. Check out the new lower prices (in __currency__).",
- "latest_updates": "Latest updates",
"latex_articles_page_title": "Articles - Papers, Presentations, Reports and more",
"latex_examples": "LaTeX examples",
"latex_examples_page_title": "Examples - Equations, Formatting, TikZ, Packages and More",
@@ -1420,14 +1415,12 @@
"neither_agree_nor_disagree": "Neither agree nor disagree",
"new_compile_domain_notice": "We’ve recently migrated PDF downloads to a new domain. Something might be blocking your browser from accessing that new domain, <0>__compilesUserContentDomain__0>. This could be caused by network blocking or a strict browser plugin rule. Please follow our <1>troubleshooting guide1>.",
"new_create_tables_and_equations": "NEW! Create tables and equations in seconds",
- "new_error_logs_panel": "New error logs panel. Added ‘Go to location in code’ and ‘Go to location in PDF’ buttons (17 June 2025)",
"new_file": "New file",
"new_folder": "New folder",
"new_look_and_feel": "New look and feel",
"new_look_and_placement_of_the_settings": "New look and placement of the settings",
"new_name": "New Name",
"new_navigation_introducing_left_hand_side_rail_and_top_menus": "New navigation - introducing left-hand side rail and top menus",
- "new_overleaf_editor": "New Overleaf editor",
"new_password": "New password",
"new_project": "New project",
"new_project_name": "New project name",
@@ -1992,7 +1985,6 @@
"search_whole_word": "Whole word",
"search_within_selection": "Within selection",
"searched_path_for_lines_containing": "Searched __path__ for lines containing \"__query__\"",
- "searching_all_project_files_is_now_available": "Searching all project files is now available (2 June 2025)",
"secondary_email_password_reset": "That email is registered as a secondary email. Please enter the primary email for your account.",
"security": "Security",
"see_suggestions_from_collaborators": "See suggestions from collaborators",
@@ -2296,14 +2288,12 @@
"thank_you_for_being_part_of_our_beta_program": "Thank you for being part of our beta program, where you can have <0>early access to new features0> and help us understand your needs better",
"thank_you_for_your_feedback": "Thank you for your feedback!",
"thanks": "Thanks",
- "thanks_for_being_part_of_this_labs_experiment_your_feedback_will_help_us_make_the_new_editor_the_best_yet": "Thanks for being part of this Labs experiment. Your feedback and support will help us make the new editor the best yet! Some features are still in progress, so if you need something that’s missing, you can switch back to the old editor.",
"thanks_for_confirming_your_email_address": "Thanks for confirming your email address",
"thanks_for_getting_in_touch": "Thanks for getting in touch. Our team will get back to you by email as soon as possible.",
"thanks_for_subscribing": "Thanks for subscribing!",
"thanks_for_subscribing_to_plan_with_add_on": "Thank you for subscribing to the __planName__ plan with the __addOnName__ add-on. It’s support from people like yourself that allows __appName__ to continue to grow and improve.",
"thanks_for_subscribing_to_the_add_on": "Thank you for subscribing to the __addOnName__ add-on. It’s support from people like yourself that allows __appName__ to continue to grow and improve.",
"thanks_for_subscribing_you_help_sl": "Thank you for subscribing to the __planName__ plan. It’s support from people like yourself that allows __appName__ to continue to grow and improve.",
- "thanks_for_trying_the_new_editor": "Thanks for trying the new editor",
"thanks_settings_updated": "Thanks, your settings have been updated.",
"the_add_on_will_remain_active_until": "The add-on will remain active until the end of the current billing period.",
"the_code_editor_color_scheme": "The code editor color scheme",
@@ -2313,9 +2303,7 @@
"the_following_files_and_folders_already_exist_in_this_project": "The following files and folders already exist in this project:",
"the_following_folder_already_exists_in_this_project": "The following folder already exists in this project:",
"the_following_folder_already_exists_in_this_project_plural": "The following folders already exist in this project:",
- "the_labs_experiment_has_now_finished": "The Labs experiment has now finished, but you can still use the new editor by joining our beta program.",
"the_latex_engine_used_for_compiling": "The LaTeX engine used for compiling",
- "the_new_overleaf_editor": "The new Overleaf editor",
"the_new_overleaf_editor_try_now_in_beta": "The new Overleaf editor — try now in beta",
"the_next_payment_will_be_collected_on": "The next payment will be collected on __date__.",
"the_original_text_has_changed": "The original text has changed, so this suggestion can’t be applied",
@@ -2355,7 +2343,6 @@
"this_field_is_required": "This field is required",
"this_grants_access_to_features_2": "This grants you access to <0>__appName__0> <0>__featureType__0> features.",
"this_is_a_beta_release_for_the_new_overleaf_editor": "This is a beta release for the new Overleaf editor. You can switch back to the old editor at any time.",
- "this_is_a_labs_experiment_for_the_new_overleaf_editor_some_features_are_still_in_progress": "This is a Labs experiment for the new Overleaf editor. Some features are still in progress, so if you need something that’s missing, you can switch back to the old editor at any time.",
"this_is_a_new_feature": "This is a new feature",
"this_is_the_file_that_references_pulled_from_your_reference_manager_will_be_added_to": "This is the file that references pulled from your reference manager will be added to.",
"this_is_your_template": "This is your template from your project",
@@ -2662,7 +2649,6 @@
"well_be_here_when_youre_ready": "We’ll be here when you’re ready to dive back in! 🦆",
"were_making_some_changes_to_project_sharing_this_means_you_will_be_visible": "We’re making some <0>changes to project sharing0>. This means, as someone with edit access, your name and email address will be visible to the project owner and other editors.",
"were_performing_maintenance": "We’re performing maintenance on Overleaf and you need to wait a moment. Sorry for any inconvenience. The editor will refresh automatically in __seconds__ seconds.",
- "were_redesigning_our_editor_to_make_it_easier_to_use": "We’re redesigning our editor to make it easier to use and ensure it’s future ready. Try it out and give us your feedback to help us get this right. (Some features are still in the works, so you can switch back at any time.)",
"were_reducing_compile_timeout": "We’re in the process of <0>reducing the compile timeout limit0> on our free plan, which may affect your project in future.",
"weve_redesigned_our_editor_to_make_it_easier_to_use_and_future_ready": "We’ve redesigned our editor to make it easier to use and future ready. It’s now in beta, so try it out and give us your feedback.",
"what_did_you_find_most_helpful": "What did you find most helpful?",
@@ -2672,7 +2658,6 @@
"what_happens_when_sso_is_enabled": "What happens when SSO is enabled?",
"what_should_we_call_you": "What should we call you?",
"whats_different": "What’s different?",
- "whats_different_in_the_new_editor": "What’s different in the new editor?",
"when_you_join_labs": "When you join Labs, you can choose which experiments you want to be part of. Once you’ve done that, you can use Overleaf as normal, but you’ll see any labs features marked with this badge:",
"when_you_tick_the_include_caption_box": "When you tick the box “Include caption” the image will be inserted into your document with a placeholder caption. To edit it, you simply select the placeholder text and type to replace it with your own.",
"why_latex": "Why LaTeX?",
@@ -2723,7 +2708,6 @@
"you_are_using_your_organization_email_x_would_like_you_to_take_action": "Because you are using your organization email on Overleaf, __companyName__ would like you to take one of the following actions.",
"you_can_also_choose_to_view_anonymously_or_leave_the_project": "You can also choose to <0>view anonymously0> (you will lose edit access) or <1>leave the project1>.",
"you_can_buy_this_plan_but_not_as_a_trial": "You can buy this plan but not as a trial, as you’ve completed a trial recently.",
- "you_can_leave_the_experiment_from_your_account_settings_at_any_time": "You can leave the experiment from your <0>account settings0> at any time.",
"you_can_manage_your_reference_manager_integrations_from_your_account_settings_page": "You can manage your reference manager integrations from your <0>account settings page0>.",
"you_can_now_enable_sso": "You can now enable SSO on your group settings page.",
"you_can_now_log_in_sso": "You can now log in through your institution and if eligible you will receive <0>__appName__ Professional features0>.",
@@ -2804,7 +2788,6 @@
"youre_about_to_enable_single_sign_on_sso_only": "You’re about to enable single sign-on (SSO). Before you do this, you should ensure you’re confident the SSO configuration is correct.",
"youre_adding_x_licenses_to_your_plan_giving_you_a_total_of_y_licenses": "You’re adding <0>__adding__0> licenses to your plan giving you a total of <1>__total__1> licenses.",
"youre_already_setup_for_sso": "You’re already set up for SSO",
- "youre_helping_us_shape_the_future_of_overleaf": "You’re helping us shape the future of Overleaf",
"youre_joining": "You’re joining",
"youre_on_free_trial_which_ends_on": "You’re on a free trial which ends on <0>__date__0>.",
"youre_signed_in_as_logout": "You’re signed in as <0>__email__0>. <1>Log out.1>",