From ca71fec33bd3a146243890f19e233616ee793290 Mon Sep 17 00:00:00 2001 From: Antoine Clausse Date: Wed, 23 Jul 2025 16:25:28 +0200 Subject: [PATCH] Merge pull request #27363 from overleaf/revert-26751-rd-landmarks [web] Revert "Improve landmarks on the Project dashboard and Editor pages" GitOrigin-RevId: 4bf0bbb9466db4436df4a72dcc70c320263dd168 --- server-ce/test/git-bridge.spec.ts | 24 +--- server-ce/test/sandboxed-compiles.spec.ts | 18 +-- server-ce/test/templates.spec.ts | 36 +----- server-ce/test/upgrading.spec.ts | 10 +- .../layout/fat-footer-website-redesign.pug | 5 +- services/web/app/views/layout/fat-footer.pug | 5 +- .../layout/navbar-marketing-bootstrap-5.pug | 1 - .../web/app/views/layout/navbar-marketing.pug | 1 - .../views/layout/navbar-website-redesign.pug | 4 +- services/web/app/views/project/ide-react.pug | 2 +- .../web/frontend/extracted-translations.json | 17 +-- .../js/features/chat/components/chat-pane.tsx | 2 +- .../components/toolbar-header.tsx | 8 +- .../components/change-list/change-list.tsx | 2 +- .../ide-react/components/editor-and-pdf.tsx | 4 - .../ide-react/components/editor-sidebar.tsx | 6 +- .../ide-react/components/history-sidebar.tsx | 5 +- .../ide-redesign/components/chat/chat.tsx | 2 +- .../integrations-panel/integration-card.tsx | 4 +- .../ide-redesign/components/main-layout.tsx | 4 - .../pdf-preview-hybrid-toolbar.tsx | 11 +- .../components/rail-panel-header.tsx | 4 +- .../features/ide-redesign/components/rail.tsx | 18 +-- .../components/toolbar/toolbar.tsx | 10 +- .../outline/components/outline-pane.tsx | 4 +- .../pdf-preview/components/pdf-js-viewer.tsx | 15 --- .../components/pdf-preview-hybrid-toolbar.tsx | 11 +- .../components/preview-log-entry-header.tsx | 4 +- .../notifications/user-notifications.tsx | 9 +- .../components/project-list-ds-nav.tsx | 104 +++++++++--------- .../components/project-list-root.tsx | 2 +- .../components/sidebar/sidebar-ds-nav.tsx | 41 +++---- .../components/sidebar/sidebar.tsx | 0 .../components/title/project-list-title.tsx | 6 +- .../bootstrap-5/footer/fat-footer-base.tsx | 4 +- .../bootstrap-5/footer/fat-footer.tsx | 6 +- .../bootstrap-5/navbar/default-navbar.tsx | 3 +- .../bootstrap-5/pages/project-list.scss | 13 ++- services/web/locales/en.json | 16 +-- .../pdf-preview/pdf-js-viewer.spec.tsx | 14 +-- .../history/components/change-list.spec.tsx | 42 +------ 41 files changed, 166 insertions(+), 331 deletions(-) delete mode 100644 services/web/frontend/js/features/project-list/components/sidebar/sidebar.tsx diff --git a/server-ce/test/git-bridge.spec.ts b/server-ce/test/git-bridge.spec.ts index 53b1bae54c..1f114574ac 100644 --- a/server-ce/test/git-bridge.spec.ts +++ b/server-ce/test/git-bridge.spec.ts @@ -85,11 +85,7 @@ describe('git-bridge', function () { it('should render the git-bridge UI in the editor', function () { maybeClearAllTokens() createProject('git').as('projectId') - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Sync') cy.findByText('Git').click() cy.findByTestId('git-bridge-modal').within(() => { @@ -104,11 +100,7 @@ describe('git-bridge', function () { // Re-open cy.url().then(url => cy.visit(url)) - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Git').click() cy.findByTestId('git-bridge-modal').within(() => { cy.get('@projectId').then(id => { @@ -196,11 +188,7 @@ describe('git-bridge', function () { function checkGitAccess(access: 'readOnly' | 'readAndWrite') { const recompile = throttledRecompile() - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Sync') cy.findByText('Git').click() cy.get('@projectId').then(projectId => { @@ -382,11 +370,7 @@ Hello world it('should not render the git-bridge UI in the editor', function () { login('user@example.com') createProject('maybe git') - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Word Count') // wait for lazy loading cy.findByText('Sync').should('not.exist') cy.findByText('Git').should('not.exist') diff --git a/server-ce/test/sandboxed-compiles.spec.ts b/server-ce/test/sandboxed-compiles.spec.ts index a8772c6599..71f5b43392 100644 --- a/server-ce/test/sandboxed-compiles.spec.ts +++ b/server-ce/test/sandboxed-compiles.spec.ts @@ -37,11 +37,7 @@ describe('SandboxedCompiles', function () { cy.findByText(/This is pdfTeX, Version .+ \(TeX Live 2023\) /) cy.log('Switch TeXLive version from 2023 to 2022') - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText(LABEL_TEX_LIVE_VERSION) .parent() .findByText('2023') @@ -217,11 +213,7 @@ describe('SandboxedCompiles', function () { cy.findByText(/This is pdfTeX/) cy.log('Switch compiler to from pdfLaTeX to XeLaTeX') - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Compiler') .parent() .findByText('pdfLaTeX') @@ -253,11 +245,7 @@ describe('SandboxedCompiles', function () { cy.findByText(/This is pdfTeX, Version .+ \(TeX Live 2025\) /) cy.log('Check that there is no TeX Live version toggle') - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Word Count') // wait for lazy loading cy.findByText(LABEL_TEX_LIVE_VERSION).should('not.exist') }) diff --git a/server-ce/test/templates.spec.ts b/server-ce/test/templates.spec.ts index 93ee1b5079..4959e149fc 100644 --- a/server-ce/test/templates.spec.ts +++ b/server-ce/test/templates.spec.ts @@ -57,11 +57,7 @@ describe('Templates', () => { cy.visit('/') createProject(name).as('templateProjectId') - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Manage Template').click() cy.findByText('Template Description') @@ -140,11 +136,7 @@ describe('Templates', () => { cy.get('@templateProjectId').then(projectId => cy.visit(`/project/${projectId}`) ) - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Manage Template').click() cy.findByText('Publish').click() cy.findByText('Unpublish', { timeout: 10_000 }) @@ -169,11 +161,7 @@ describe('Templates', () => { cy.findByText('Open as Template').click() cy.url().should('match', /\/project\/[a-f0-9]{24}$/) cy.get('.project-name').findByText(name) - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Word Count') // wait for lazy loading cy.findByText('Manage Template').should('not.exist') @@ -192,11 +180,7 @@ describe('Templates', () => { cy.get('@templateProjectId').then(projectId => cy.visit(`/project/${projectId}`) ) - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Manage Template').click() cy.findByText('Unpublish') @@ -207,11 +191,7 @@ describe('Templates', () => { cy.get('@templateProjectId').then(projectId => cy.visit(`/project/${projectId}`) ) - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Manage Template').click() cy.findByText('Unpublish').click() cy.findByText('Publish') @@ -237,11 +217,7 @@ describe('Templates', () => { cy.visit('/') createProject('maybe templates') - cy.findByRole('navigation', { - name: /Project actions/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Word Count') // wait for lazy loading cy.findByText('Manage Template').should('not.exist') diff --git a/server-ce/test/upgrading.spec.ts b/server-ce/test/upgrading.spec.ts index 00390cd80e..16e0320dcc 100644 --- a/server-ce/test/upgrading.spec.ts +++ b/server-ce/test/upgrading.spec.ts @@ -55,11 +55,7 @@ describe('Upgrading', function () { cy.log('Trigger full flush') recompile() - cy.findByRole('navigation', { - name: /Project Layout, Sharing, and Submission/i, - }) - .findByRole('button', { name: /Menu/i }) - .click() + cy.get('header').findByText('Menu').click() cy.findByText('Source').click() cy.get('.left-menu-modal-backdrop').click({ force: true }) } @@ -120,9 +116,7 @@ describe('Upgrading', function () { openProjectByName(PROJECT_NAME) cy.url().should('match', /\/project\/[a-fA-F0-9]{24}/) - cy.findByRole('navigation', { - name: /Project actions/i, - }).within(() => { + cy.findByRole('navigation').within(() => { cy.findByText(PROJECT_NAME) }) const recompile = throttledRecompile() diff --git a/services/web/app/views/layout/fat-footer-website-redesign.pug b/services/web/app/views/layout/fat-footer-website-redesign.pug index 760faffe74..5a613df44a 100644 --- a/services/web/app/views/layout/fat-footer-website-redesign.pug +++ b/services/web/app/views/layout/fat-footer-website-redesign.pug @@ -1,5 +1,8 @@ footer.fat-footer.hidden-print.website-redesign-fat-footer - .fat-footer-container + .fat-footer-container( + role='navigation' + aria-label=translate('footer_navigation') + ) .fat-footer-sections(class={hidden: hideFatFooter}) #footer-brand.footer-section a.footer-brand(href='/' aria-label=settings.appName) diff --git a/services/web/app/views/layout/fat-footer.pug b/services/web/app/views/layout/fat-footer.pug index 2e88643abf..518511b11f 100644 --- a/services/web/app/views/layout/fat-footer.pug +++ b/services/web/app/views/layout/fat-footer.pug @@ -1,5 +1,8 @@ footer.fat-footer.hidden-print - .fat-footer-container + .fat-footer-container( + role='navigation' + aria-label=translate('footer_navigation') + ) .fat-footer-sections(class={hidden: hideFatFooter}) #footer-brand.footer-section a.footer-brand(href='/' aria-label=settings.appName) diff --git a/services/web/app/views/layout/navbar-marketing-bootstrap-5.pug b/services/web/app/views/layout/navbar-marketing-bootstrap-5.pug index 76693744bc..75cc065e73 100644 --- a/services/web/app/views/layout/navbar-marketing-bootstrap-5.pug +++ b/services/web/app/views/layout/navbar-marketing-bootstrap-5.pug @@ -5,7 +5,6 @@ nav.navbar.navbar-default.navbar-main.navbar-expand-lg( class={ 'website-redesign-navbar': isWebsiteRedesign, } - aria-label=translate('primary') ) .container-fluid.navbar-container .navbar-header diff --git a/services/web/app/views/layout/navbar-marketing.pug b/services/web/app/views/layout/navbar-marketing.pug index de147df23c..bb26ff8d40 100644 --- a/services/web/app/views/layout/navbar-marketing.pug +++ b/services/web/app/views/layout/navbar-marketing.pug @@ -2,7 +2,6 @@ nav.navbar.navbar-default.navbar-main( class={ 'website-redesign-navbar': isWebsiteRedesign, } - aria-label=translate('primary') ) .container-fluid .navbar-header diff --git a/services/web/app/views/layout/navbar-website-redesign.pug b/services/web/app/views/layout/navbar-website-redesign.pug index 67d7fe704a..210cf3a120 100644 --- a/services/web/app/views/layout/navbar-website-redesign.pug +++ b/services/web/app/views/layout/navbar-website-redesign.pug @@ -1,6 +1,4 @@ -nav.navbar.navbar-default.navbar-main.website-redesign-navbar( - aria-label=translate('primary') -) +nav.navbar.navbar-default.navbar-main.website-redesign-navbar .container-fluid .navbar-header if typeof suppressNavbarRight == 'undefined' diff --git a/services/web/app/views/project/ide-react.pug b/services/web/app/views/project/ide-react.pug index 135e28f0f0..8af9de8296 100644 --- a/services/web/app/views/project/ide-react.pug +++ b/services/web/app/views/project/ide-react.pug @@ -12,7 +12,7 @@ block entrypointVar - entrypoint = 'pages/ide' block content - #ide-root + main#ide-root .loading-screen .loading-screen-brand-container .loading-screen-brand(style='height: 20%') diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index 4f34862de9..10acda3399 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -53,7 +53,6 @@ "account_billed_manually": "", "account_has_been_link_to_institution_account": "", "account_has_past_due_invoice_change_plan_warning": "", - "account_help": "", "account_managed_by_group_administrator": "", "account_not_linked_to_dropbox": "", "account_settings": "", @@ -567,7 +566,6 @@ "fast": "", "fast_draft": "", "features_like_track_changes": "", - "feedback": "", "figure": "", "file": "", "file_action_created": "", @@ -587,7 +585,6 @@ "file_size": "", "file_tree": "", "files_cannot_include_invalid_characters": "", - "files_collaboration_integrations_logs": "", "files_selected": "", "filter_projects": "", "find": "", @@ -608,6 +605,7 @@ "font_size": "", "footer_about_us": "", "footer_contact_us": "", + "footer_navigation": "", "footnotes": "", "for_business": "", "for_government": "", @@ -731,7 +729,6 @@ "headers": "", "help": "", "help_articles_matching": "", - "help_editor_settings": "", "help_improve_overleaf_fill_out_this_survey": "", "help_improve_screen_reader_fill_out_this_survey": "", "help_shape_the_future_of_overleaf": "", @@ -1001,6 +998,7 @@ "main_bibliography_file_for_this_project": "", "main_document": "", "main_file_not_found": "", + "main_navigation": "", "make_a_copy": "", "make_email_primary_description": "", "make_owner": "", @@ -1139,7 +1137,6 @@ "not_a_student": "", "not_managed": "", "not_now": "", - "notification": "", "notification_personal_and_group_subscriptions": "", "notification_project_invite_accepted_message": "", "notification_project_invite_message": "", @@ -1224,7 +1221,6 @@ "payment_error_update_payment_method": "", "payment_provider_unreachable_error": "", "payment_summary": "", - "pdf": "", "pdf_compile_in_progress_error": "", "pdf_compile_rate_limit_hit": "", "pdf_compile_try_again": "", @@ -1234,7 +1230,6 @@ "pdf_only_hide_editor": "", "pdf_preview": "", "pdf_preview_error": "", - "pdf_preview_logs": "", "pdf_rendering_error": "", "pdf_unavailable_for_download": "", "pdf_viewer": "", @@ -1295,7 +1290,6 @@ "primarily_work_study_question_nonprofit_ngo": "", "primarily_work_study_question_other": "", "primarily_work_study_question_university_school": "", - "primary": "", "primary_certificate": "", "priority_support": "", "privacy_and_terms": "", @@ -1308,17 +1302,14 @@ "processing_uppercase": "", "professional": "", "progress_bar_percentage": "", - "project_actions": "", "project_approaching_file_limit": "", - "project_categories_tags": "", "project_figure_modal": "", "project_files": "", - "project_files_history": "", - "project_files_outline": "", "project_flagged_too_many_compiles": "", "project_has_too_many_files": "", - "project_history_labels": "", + "project_history_list": "", "project_last_published_at": "", + "project_layout_sharing_submission": "", "project_linked_to": "", "project_name": "", "project_not_linked_to_github": "", diff --git a/services/web/frontend/js/features/chat/components/chat-pane.tsx b/services/web/frontend/js/features/chat/components/chat-pane.tsx index 48ae6b6f6e..1ef4d46a31 100644 --- a/services/web/frontend/js/features/chat/components/chat-pane.tsx +++ b/services/web/frontend/js/features/chat/components/chat-pane.tsx @@ -72,7 +72,7 @@ const ChatPane = React.memo(function ChatPane() { } return ( -