Merge pull request #32281 from overleaf/mj-remove-enableNewEditor

[web] Remove enableNewEditor settings

GitOrigin-RevId: cc33be59b8c2f5b0ba9e12a2fe9af9ccba7196e8
This commit is contained in:
Mathias Jakobsen
2026-03-23 09:05:55 +00:00
committed by Copybot
parent 84fa80c8e9
commit b87053a932
8 changed files with 0 additions and 91 deletions
@@ -1,35 +1,5 @@
import SplitTestHandler from '../SplitTests/SplitTestHandler.mjs'
// Copied from services/web/frontend/js/features/ide-redesign/utils/new-editor-utils.ts
const SPLIT_TEST_USER_CUTOFF_DATE = new Date(Date.UTC(2025, 8, 23, 13, 0, 0)) // 2pm British Summer Time on September 23, 2025
const NEW_USER_CUTOFF_DATE = new Date(Date.UTC(2025, 10, 12, 12, 0, 0)) // 12pm GMT on November 12, 2025
async function getEnableNewEditorLegacyDefault(req, res, user) {
if (req.query['existing-user-override'] === 'true') {
return false
}
if (req.query['skip-new-user-check'] === 'true') {
return true
}
if (user.signUpDate >= NEW_USER_CUTOFF_DATE) {
return true
}
if (user.signUpDate >= SPLIT_TEST_USER_CUTOFF_DATE) {
const assignment = await SplitTestHandler.promises.getAssignment(
req,
res,
'editor-redesign-new-users'
)
return assignment.variant !== 'default'
}
return false
}
const SYSTEM_THEME_USER_CUTOFF_DATE = new Date(Date.UTC(2026, 2, 2, 12, 0, 0)) // 12pm GMT on March 2, 2026
async function getOverallTheme(req, res, user) {
@@ -58,16 +28,6 @@ async function getOverallTheme(req, res, user) {
}
async function buildUserSettings(req, res, user) {
const defaultLegacyEnableNewEditor = await getEnableNewEditorLegacyDefault(
req,
res,
user
)
const enableNewEditorStageFour = user.ace.enableNewEditorStageFour ?? true
const enableNewEditorLegacy =
user.ace.enableNewEditor ?? defaultLegacyEnableNewEditor
return {
mode: user.ace.mode,
editorTheme: user.ace.theme,
@@ -84,8 +44,6 @@ async function buildUserSettings(req, res, user) {
mathPreview: user.ace.mathPreview,
breadcrumbs: user.ace.breadcrumbs,
referencesSearchMode: user.ace.referencesSearchMode,
enableNewEditor: enableNewEditorStageFour,
enableNewEditorLegacy,
darkModePdf: user.ace.darkModePdf ?? false,
}
}
@@ -410,9 +410,6 @@ async function updateUserSettings(req, res, next) {
const mode = body.referencesSearchMode === 'simple' ? 'simple' : 'advanced'
user.ace.referencesSearchMode = mode
}
if (body.enableNewEditor != null) {
user.ace.enableNewEditorStageFour = Boolean(body.enableNewEditor)
}
if (body.darkModePdf != null) {
user.ace.darkModePdf = Boolean(body.darkModePdf)
}
-5
View File
@@ -93,11 +93,6 @@ export const UserSchema = new Schema(
mathPreview: { type: Boolean, default: true },
breadcrumbs: { type: Boolean, default: true },
referencesSearchMode: { type: String, default: 'advanced' }, // 'advanced' or 'simple'
// enableNewEditor is being phased out in favor of enableNewEditorStageFour
// when moving the new editor to opt out (stage 4). However, we need to keep the
// old field for determining whether to show promotional material to users.
enableNewEditor: { type: Boolean },
enableNewEditorStageFour: { type: Boolean },
darkModePdf: { type: Boolean, default: false },
},
features: {
@@ -89,7 +89,6 @@ function useCodeMirrorScope(view: EditorView) {
syntaxValidation,
mathPreview,
referencesSearchMode,
enableNewEditor,
} = userSettings
const activeOverallTheme = useActiveOverallTheme()
const editorTheme = useActiveEditorTheme()
@@ -160,7 +159,6 @@ function useCodeMirrorScope(view: EditorView) {
syntaxValidation,
mathPreview,
referencesSearchMode,
enableNewEditor,
})
const currentDocRef = useRef({
@@ -25,8 +25,6 @@ export const defaultSettings: UserSettings = {
lineHeight: 'normal',
mathPreview: true,
referencesSearchMode: 'advanced',
enableNewEditor: true,
enableNewEditorLegacy: true,
breadcrumbs: true,
darkModePdf: false,
}
@@ -66,8 +66,6 @@ export const USER_EMAIL = 'testuser@example.com'
const defaultUserSettings = {
...defaultSettings,
enableNewEditor: false,
enableNewEditorLegacy: false,
referencesSearchMode: 'simple',
} satisfies UserSettings
@@ -532,39 +532,6 @@ describe('UserController', function () {
})
})
it('should set enableNewEditorStageFour to true', function (ctx) {
return new Promise(resolve => {
ctx.req.body = { enableNewEditor: true }
ctx.res.sendStatus = code => {
ctx.user.ace.enableNewEditorStageFour.should.equal(true)
resolve()
}
ctx.UserController.updateUserSettings(ctx.req, ctx.res)
})
})
it('should set enableNewEditorStageFour to false', function (ctx) {
return new Promise(resolve => {
ctx.req.body = { enableNewEditor: false }
ctx.res.sendStatus = code => {
ctx.user.ace.enableNewEditorStageFour.should.equal(false)
resolve()
}
ctx.UserController.updateUserSettings(ctx.req, ctx.res)
})
})
it('should keep enableNewEditorStageFour a boolean', function (ctx) {
return new Promise(resolve => {
ctx.req.body = { enableNewEditor: 'foobar' }
ctx.res.sendStatus = code => {
ctx.user.ace.enableNewEditorStageFour.should.equal(true)
resolve()
}
ctx.UserController.updateUserSettings(ctx.req, ctx.res)
})
})
it('should set darkModePdf to true', function (ctx) {
return new Promise(resolve => {
ctx.req.body = { darkModePdf: true }
-2
View File
@@ -18,8 +18,6 @@ export type UserSettings = {
lineHeight: LineHeight
mathPreview: boolean
referencesSearchMode: 'advanced' | 'simple'
enableNewEditor: boolean
enableNewEditorLegacy: boolean
breadcrumbs: boolean
darkModePdf: boolean
}