302 Commits

Author SHA1 Message Date
claude 86a902c197 Improve mobile ergonomics for footer and project list
Footer (both React and Pug):
- Below md: switch to flex-wrap so items wrap naturally instead of
  overflowing; reset line-height from the fixed 49px to normal; add
  row-gap so wrapped rows aren't crammed together
- Add footer-sep class to pipe separator <li>s so they can be hidden
  on small screens (wrapping mid-separator looks wrong)
- Change col-lg-3 text-end → text-lg-end so the right column (licence,
  source code) aligns left when it stacks full-width below lg

Project list:
- Show NewProjectButton on mobile in the header row (the sidebar that
  holds the button is already hidden below md via d-none d-md-flex,
  leaving users with no way to create projects on their phone)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 08:22:57 +00:00
claude 81c1fc92d1 fix: remove data-bs-toggle from LanguagePicker dropdown toggle
Build and Deploy Verso / deploy (push) Successful in 10m8s
Bootstrap vanilla JS and react-bootstrap were both handling the dropdown,
causing the toggle to be unresponsive. react-bootstrap manages its own
state and does not need this attribute.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 14:15:36 +00:00
claude 319ccc32ee feat: add language picker to logged-in footer and editor settings
Build and Deploy Verso / deploy (push) Successful in 18m46s
- Rewrites LanguagePicker to use availableLanguages from ol-footer meta
  instead of subdomainLang (which is always empty in single-domain setup)
- Passes availableLanguages through layout-react.pug → ol-footer meta so
  React footer picks it up
- Adds InterfaceLanguageSetting component to the editor settings modal
  ("Spelling and language" tab) for use when no footer is present
- Adds interface_language key to all five locale files (en/fr/de/es/it)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 12:22:55 +00:00
claude ae4e95312d i18n: translate hardcoded strings on project page and footer
Build and Deploy Verso / deploy (push) Successful in 17m39s
- Card owner: "You" now goes through t('you') so it renders as
  "Vous"/"Tu"/"Du" etc. instead of always "You"
- Relative dates (fromNow): moment.locale() is now set from the app
  language so "2 days ago" becomes "il y a 2 jours" etc.
- Footer: "Built on", "Source code", "AGPL licence" are now translated
  via t() with keys added to all locale files and extracted-translations
- New keys: built_on, source_code, agpl_licence (FR/DE/IT/ES translations
  added manually)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 09:33:22 +00:00
claude 9e618280b1 fix: restore theme toggle in navbar account menu, Lumière button styling
Build and Deploy Verso / deploy (push) Successful in 21m51s
- logged-in-items: pass showThemeToggle to AccountMenuItems so the theme
  switcher is accessible from the top-right navbar (was lost when the
  sidebar account icons were removed); AccountMenuItems already gates on
  hasOverallThemes so it's a no-op on non-themed pages
- project-list-lumiere: restyle Account + Admin navbar buttons — rounded
  square (8px) instead of pill, teal resting tint on Account, subtle
  teal border on hover; matches Lumière design language
- ide-lumiere: extend rounded-square styling to all toolbar action buttons
  (Share, Present, History, Layout, File/Edit/Help menu buttons) via
  .ide-redesign-toolbar-actions and .ide-redesign-toolbar-menu selectors

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 14:59:48 +00:00
claude fc535590eb fix: restore account button, fix double border, logo, gradient, editor buttons
Build and Deploy Verso / deploy (push) Successful in 14m48s
- project-list-ds-nav.scss: remove display:none for .nav-item-account on
  desktop — it was hidden because the sidebar handled it, but now the sidebar
  no longer has the account icon so this made it invisible everywhere
- logged-in-items / nav-dropdown-menu: show User icon alongside 'Account'
  text in navbar dropdown so it's recognisable as an account button
- Lumière: remove border-top from .ds-nav-verso-logo (was doubling up with
  .ds-nav-sidebar-lower border)
- Logo hover: drop scale transform in both themes, use filter:brightness only
- Gradient: drop background-attachment:fixed (unreliable in scroll containers);
  switch to circle gradients at 0.60/0.45 opacity; base colour #e8f5f2
- Editor ide-lumiere: rounded square (7px) on .ol-cm-toolbar-button with teal
  hover/active states to match the Lumière design language

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 14:27:40 +00:00
claude 5fa73fa8e3 fix: rebrand Overleaf strings, move user menu, fix logo + button alignment
Build and Deploy Verso / deploy (push) Successful in 14m49s
- en.json: replace 'Overleaf' with 'Verso' in 6 user-visible strings
  (email_already_registered, add_manager_user_not_found, compile_timeout,
  download_metadata, to_confirm_email address, welcome_opening_workspace)
- groups-and-enterprise-banner: use dynamic appName instead of hard-coded
  'Overleaf'
- SidebarLowerSection: add showAccountIcons prop (default true); set false
  in project dashboard sidebar — account menu is already in the top-right
  navbar, so the bottom-left duplicate is removed for all themes
- ds-nav-verso-logo: replace opacity-fade hover with scale+brightness
  transform so logo is fully visible at rest
- Lumière: scope new-project-dropdown sidebar padding to avoid misaligning
  the button when it appears next to the search bar in the header

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 13:58:17 +00:00
claude 9ea904f78f Merge upstream Overleaf up to PR #34297 (68 commits)
Build and Deploy Verso / deploy (push) Successful in 11m30s
Conflicts resolved:
- fat-footer-website-redesign.pug: keep Verso footer (discard Overleaf marketing footer)
- MaterialSymbolsRoundedUnfilledPartialSlice.woff2: regenerated from merged
  unfilled-symbols.mjs (preserves Verso's deployed_code + adds upstream's spellcheck)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 13:39:32 +00:00
Antoine Clausse 3140e46e68 [web] Replace token-link email verification with 6-digit code on SSO registration (ORCID) (#33889)
* Replace token-link email with 6-digit code on SSO registration

Unverified SSO emails previously received a long-lived token link
(90-day TTL) via UserEmailsConfirmationHandler. This replaces that
flow with the same 6-digit code verification used for password
registration, redirecting through /registration/confirm-email.

- SSOManager.registerSSO now always confirms email (caller must
  verify first); removes sendConfirmationEmail / _finishRegistration
- SSOController._signUp sends confirmation code and stores
  pendingSSORegistration in session when IdP email_verified is false
- New SSOConfirmEmailHandler completes registration after code check
  via completeSSOEmailConfirmation module hook
- OnboardingController confirm-email handlers accept
  pendingSSORegistration alongside pendingUserRegistration

confirmEmailFromToken (POST /user/emails/confirm) removal is deferred
to a follow-up PR to avoid breaking in-flight 90-day tokens.

Closes #28607

* Fix unverified-email edge cases; Add ORCID e2e tests;

* Rename `confirmEmail` parameter to `emailVerifiedByIdP` in _signUp function

* Remove `sendConfirmationEmail`

* Mock getUserByAnyEmail in tests

* Extract _finishSSORegistration helper to deduplicate the register →
set session flags → allocate referral → finishSaasLogin → finishLogin
sequence shared by both the direct and deferred (code-confirmed) paths.

* Stop duplicating session data in pendingSSORegistration

analyticsId, splitTests, and referal_* are already in the session at
confirmation time — no need to copy them into pendingSSORegistration.
Re-fetch splitTests fresh on completion instead.

* Simplify the code

* Remove dead confirmEmail template

No callers remain after sendConfirmationEmail was deleted. The token-link
flow (confirmEmailFromToken) only validates tokens, never sends email.

* Remove dead reconfirmEmail template

* Address comments from Copilot

* Clear stale pending registration when starting a new flow

* Add unit tests for completeSSOEmailConfirmation

* Add `verificationMethod` param

* Fix camelcase issues

* Extract _createSSOUser and _registerAndFinish helpers to deduplicate registration logic

* Remove obscure "registration_error"

* Prevent FormTextIcon from shrinking

* Enable "email_already_registered_sso" error

* Misc. improvements to confirm-email-form.tsx

* Remove `UserEmailsConfirmationHandler` mock

Co-authored-by: Olzhas Askar <olzhas.askar@overleaf.com>

* Add info on sso_email.pug page

---------

Co-authored-by: Olzhas Askar <olzhas.askar@overleaf.com>
GitOrigin-RevId: d0196ebc6d81ff61bcd27726d0b899b743d08d64
2026-06-05 08:06:34 +00:00
Malik Glossop d25b032e16 Merge pull request #33450 from overleaf/worktree-mg-writefull-spelling-tab
Add writefull language suggestions section to Spelling and language tab

GitOrigin-RevId: 6195683ca175a4c3da25a7ab334a605c67db04b8
2026-06-05 08:06:07 +00:00
claude 4fc86ebd3d Editor: qmd/typst autocomplete, format column, compiler gating, Verso loader
Build and Deploy Verso / deploy (push) Successful in 9m48s
- Add a Typst language (stream highlighting + completions) for .typ, and
  Quarto completions (code chunks, callouts, cross-refs) for .qmd/markdown.
- Project dashboard: new Format column (Quarto/Typst/LaTeX) from the cheap
  project compiler field, surfaced through the projects list API.
- Compiler dropdown: grey out engines that don't match the root file's
  extension (.qmd->Quarto, .typ->Typst, .tex->LaTeX engines).
- Replace the Overleaf fill loader with an animated Verso logo: the four
  quadrant circles drift on their own orbits while colour warms up with load
  progress; reused on the token-access screen too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 07:47:31 +00:00
claude 12cabd1d1b Branding: build-number version, EB Garamond title, blue filters, Present button
Build and Deploy Verso / deploy (push) Successful in 9m21s
- Instance name: stamp the nav title with the build number at deploy time
  ("Verso V0.<run> alpha") via a sed placeholder fed by GITHUB_RUN_NUMBER,
  instead of the static "Verso V1.0 Alpha".

- Title typeface: self-host the EB Garamond latin subset (same one embedded in
  the logo SVGs) and apply it to .navbar-title so the instance name matches the
  Verso wordmark.

- Sidebar wordmark: let the logo fill the full sidebar column width (drop the
  160px cap).

- Project filters: switch the ds-nav active state (filter selection + theme
  toggle) from the green tokens to the blue scale, matching the rail.

- Present button: rename the presentation toolbar action from "Preview" to
  "Present" / "Présenter" and add a tooltip explaining it publishes the
  presentation and opens it in a new tab. New keys present /
  present_publishes_and_opens_in_new_tab in en, fr and extracted-translations.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 22:32:07 +00:00
claude 676663ffcc Branding polish: blue rail accent, drop fork link, bigger login logo, dashboard logo placement
Build and Deploy Verso / deploy (push) Successful in 9m41s
- Editor rail: the active item used the Overleaf green accent. Switch
  --ide-rail-link-active-color/background to the blue scale (--blue-10/70,
  --bg-info-03) to match the Verso palette.

- Footers: remove the default "Fork on GitHub!" right_footer item (redundant
  with the "Built on Overleaf" link); right_footer now defaults to [].

- Login: move the hero wordmark into a full-width centered block and bump it to
  max-width 480px so it's no longer constrained by the form column.

- Projects dashboard: restore the instance name in the top-left navbar (set
  OVERLEAF_NAV_TITLE="Verso V1.0 Alpha") instead of the wordmark logo, and move
  the full Verso wordmark to the sidebar's lower section (where the old
  "Digital Science" mark sat). Revert HeaderLogoOrTitle to its title-first
  behaviour now that the dashboard no longer passes a logo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 21:28:50 +00:00
claude 7a50f42e02 Restore dashboard footer; show navbar logo over title; enlarge login logo
Build and Deploy Verso / deploy (push) Successful in 9m46s
Three follow-ups after the visual-identity deploy:

- Footer: restore the React <Footer> on the projects dashboard (both
  ProjectListDsNav and the legacy DefaultNavbarAndFooter). Removing it earlier
  was an overcorrection — it now renders the Verso/AGPL thin footer rather than
  the old "Powered by Overleaf" line. Other pages already kept the pug footer.

- Navbar brand: HeaderLogoOrTitle previously hid the logo whenever a nav title
  was set, so on the dashboard only the "Verso" instance-name text showed and
  the wired-up Verso logo never appeared. Make a configured logo (custom logo
  or the Verso brand logo) take precedence over the title text; fall back to the
  title only when no logo is provided (unchanged for other navbars).

- Login: enlarge the hero wordmark (max-width 260px -> 380px, full column width).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 20:41:18 +00:00
claude 7670982f60 Dashboard: drop footer + Digital Science branding; Verso-ify React thin footer
Build and Deploy Verso / deploy (push) Successful in 9m47s
The project dashboard ("main menu") rendered the React <Footer> (ThinFooter)
at the bottom of the page, which forced a page-level scrollbar just to reach a
stale "© 2025 Powered by Overleaf" line. Remove <Footer> from both dashboard
variants (ProjectListDsNav and the legacy DefaultNavbarAndFooter) so the main
menu has no footer and no useless scroll. The login/auth pages keep the Verso
attribution footer (thin-footer.pug), which already satisfies the AGPL source
link requirement.

Also remove the hardcoded "Digital Science" marking from the dashboard sidebar
lower section, and update the React ThinFooter (used by other React pages such
as settings/subscription) to match the pug footer: © <year> Aloïs Coquillard ·
Built on Overleaf, with AGPL licence + source-code links on the right, instead
of "Powered by Overleaf".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 19:13:19 +00:00
Antoine Clausse 2a5f1be811 [web] Fix "For students" link, fix toggles and navigation (#34051)
* [web] Fix footer For Students link to activate student toggle

The footer link only set itm_referrer plus a #student-annual hash. The
plans page reads the active plan/period from `plan` and `period` query
params (PlansHelper.getPlansPageViewOptions), so the student tab never
activated from the footer link.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* syncStudentModeFromPlanType after in handleDeprecatedHash

* Change URL update to use replaceState in the pricing page

* Revert "Change URL update to use replaceState in the pricing page"

This reverts commit eac71f193029e3f1c75e0c97261d8a5982c0d35c.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GitOrigin-RevId: 69d689d0fe89fc68cefab9233739fc61da8f2ced
2026-06-02 08:07:40 +00:00
Antoine Clausse 0e4fe4090a [web] Migrate manual plurals to i18next _plural convention (#33989)
* Add tests on plurals

* Update `collabs_per_proj` and its pluralisations

* Update `n_user` and its pluralisations

* Update `showing_x_results` and its pluralisations

* Update `show_x_more_projects` and its pluralisations

* `bin/run web npm run extract-translations`

* Populate `_plural` keys in non-en locales

For 2-form languages (da, de, es, fi, fr, it, nl, no, pt, sv, tr), copy
the existing bare-key value into the new `_plural` sibling to prevent
i18next from falling back to English for count!=1.

Also remove orphan singular keys (`collabs_per_proj_single`,
`showing_1_result*`) left over from the previous commits.

Bare-key values remain in their original plural form pending translator
review — count=1 will still render the plural form in non-en until
translators flip those to singular. Multi-form (cs, pl, ru) and
single-form (ja, ko, zh-CN, zh-TW) locales are unchanged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Flip non-en bare-key values to singular form

Per review, the i18next v3 plural convention uses the bare key for count=1
(singular) and `_plural` for count!=1. The non-en bare-key values were
left as the original plural form by the previous commit so the `_plural`
siblings could be copied from them; this commit flips the bare values to
the singular form per language.

Languages where singular and plural noun forms coincide (Finnish, Swedish,
Turkish) are unchanged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Apply suggestions from code review

Co-authored-by: Olzhas Askar <olzhas.askar@gmail.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Olzhas Askar <olzhas.askar@gmail.com>
GitOrigin-RevId: 628513ca792c2dcce023247e52b7320e2741cc54
2026-06-02 08:07:17 +00:00
Olzhas Askar b5a73efaeb Merge pull request #34060 from overleaf/oa-timeout-cta
[web] Compile timeout CTA

GitOrigin-RevId: c1dd014150964ffec1b556943f572d3e5a8069ce
2026-06-01 08:04:24 +00:00
claude 141cf95f9e Apply Verso brand identity: Quarto palette, logo, UI text
Build and Deploy Verso / deploy (push) Successful in 10m58s
Color palette: introduce Quarto's five brand colours ($verso-blue
  #447099, $verso-blue-dark #1B3B6F, $verso-blue-light #75AADB,
  $verso-green #72994E, $verso-orange #EE6331) as CSS custom
  properties alongside the existing layout vars.

Logo: replace all Overleaf SVG assets (icon, wordmarks, favicons,
  horizontal logos) with the Verso mark — a circle split into four
  Quarto-coloured quadrants (Quarto DNA) with a bold white V
  letterform (Verso identity). Filenames kept so imports stay intact.
  Status favicons keep their layout; brand green #046530#447099.

UI text:
  - appName / nav.title default → 'Verso'
  - Footer copyright → '© Verso'; remove Overleaf social links;
    thin-footer attribution → 'Built on Overleaf' (with OSS link)
  - mask-icon colour → #447099
  - interstitial logo alt → 'Verso'
  - Key locale strings (welcome, agree terms, go-to) → Verso;
    SaaS-specific strings (subscriptions, AI Assist) left as-is
    since CE users never see them

Env var names (OVERLEAF_*) intentionally untouched to avoid breaking
  the build. Code comments citing Overleaf origin preserved.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 15:06:36 +00:00
Malik Glossop fa26367aa9 Merge pull request #33805 from overleaf/mg-ai-paywall-analytics
Add paywall-prompt and paywall-click events to ai paywalls

GitOrigin-RevId: aa7de15a990ad1833e3dda65d5fb50f60bb7c9e3
2026-05-28 08:05:52 +00:00
Malik Glossop 8af5c2c346 Merge pull request #33600 from overleaf/worktree-mg-bullet-list-compact
Combine toolbar list controls and render indentation controls conditionally

GitOrigin-RevId: 48d7c52983449566bfa21b5572915d79e595c704
2026-05-28 08:05:48 +00:00
Tom Wells 0565a778d8 Library: Design Changes (#33933)
GitOrigin-RevId: b45ea92adc424e2864e952cd7f157509e10ffb7d
2026-05-27 08:07:47 +00:00
Malik Glossop eb9d586bdb Merge pull request #32968 from overleaf/worktree-labs-feature-preview
Add labs preview modal to editor

GitOrigin-RevId: 0df33135febc8e94129bcdfdfb5c4981326dfab0
2026-05-25 08:05:28 +00:00
ilkin-overleaf 192fd7c28c Merge pull request #33542 from overleaf/ii-dropdown-flicker
Fix dropdown menu flicker on open

GitOrigin-RevId: ddf826b30fcac3322d86067e5950731e7dc1a2d4
2026-05-22 08:05:59 +00:00
Olzhas Askar 6c267e68d3 Merge pull request #33707 from overleaf/oa-learn-links
[web] Learn Overleaf links

GitOrigin-RevId: af9f72da008ad8b8c86e4c355268123eb6c40bcd
2026-05-18 08:05:48 +00:00
Alf Eaton c9d4edbb5b Use CSSProperties for button style prop (#33492)
GitOrigin-RevId: 0f531c58d8ec82930bd603c19af840338f0b512e
2026-05-12 08:05:41 +00:00
Eric Mc Sween e0488a8d3b Merge pull request #33534 from overleaf/em-fix-autocomplete-32913
Fix autocomplete dropdown closing on blur and input re-click

GitOrigin-RevId: 82f45f0f1ae9e2b3846906d962a3f16e5b2963e4
2026-05-11 08:06:11 +00:00
Mathias Jakobsen 0d40b7aca0 [web] Add dark mode variants to AI paywall notifications (#33469)
GitOrigin-RevId: 4c7b8fc0493b448fd565ac8b8521ee1777e60202
2026-05-07 08:08:41 +00:00
Jimmy Domagala-Tang cf0f4cb339 feat: updating content and adding new variant for groups (#33289)
GitOrigin-RevId: afecbd92c6a9f224226f3918d94396e2927f104a
2026-05-05 08:06:30 +00:00
Malik Glossop 47473bc5f4 Merge pull request #33044 from overleaf/worktree-mg-writefull-setting
Add writefull "AI Assistance" section

GitOrigin-RevId: c6d4cb60601c0b808cde96f29f6b79b26f631906
2026-05-05 08:05:53 +00:00
ilkin-overleaf 5727643852 Merge pull request #33065 from overleaf/ii-share-modal-send-invites
[web] Add send invites input and role selection to share modal

GitOrigin-RevId: f43654e1ca0d8000b2327f1f398fd062ef1b74e4
2026-05-05 08:05:45 +00:00
Mathias Jakobsen 42f7bca37e Merge pull request #33317 from overleaf/mj-menu-bar-role
[web] Fix aria roles for nested menu bar dropdowns

GitOrigin-RevId: 1c285c2ef8ed0c589bd6b0df6112c054c8662ca4
2026-05-01 08:07:09 +00:00
l-obrien-overleaf 6b78b42469 visual updates to optional fields in manual bib entry (#33102)
* visual updates to optional fields in manual bib entry

* omitting onClose from button auto complete props

GitOrigin-RevId: 922695e8eaec83702b482123dc4b4483fe957b78
2026-04-28 08:07:21 +00:00
Tom Wells 73cc1b571b Add DS nav page switcher behind overleaf-library flag (#33112)
* Add DS nav page switcher behind overleaf-library flag

- Add shared DsNavPageSwitcher component (Library/Projects nav links + logo)
- Show page switcher in projects sidebar when overleaf-library flag enabled
- Hide 'All projects' filter and sidebar New Project button behind flag
- Move New Project button to content area header when flag enabled
- Prevent full page reload when clicking active nav item
- Change Upgrade button to premium variant when flag enabled
- Add overleaf-library split test to ProjectListController
- Add library-page class to remove rounded corner on /library
- Add Cypress component tests for DsNavPageSwitcher

Closes #33092

GitOrigin-RevId: 2e348da8307bf944d481b54b3a2bcc2eb319e18e
2026-04-28 08:06:22 +00:00
ilkin-overleaf 816f8c45eb Merge pull request #32924 from overleaf/ii-share-modal-basic-layout
[web] Share modal redesign base layout

GitOrigin-RevId: 0f011d03762c6669a0fd3b1fc2af32c9026c7ea4
2026-04-28 08:06:13 +00:00
Antoine Clausse e8ea298ee4 [web] Update paywall copy for plans-2026 AI tiers (#33070)
* [web] Update paywall copy for plans-2026 AI tiers

Replace AI-related strings in upgrade/paywall UI when the
plans-2026-phase-1 flag is enabled:

- Add `higher_ai_allowance` ("Higher AI allowance") for paywall bullet
  lists and body text; keep `higher_ai_limits` ("Higher AI limits") for
  the subscriptions dashboard, which uses different wording per spec
- Update three locale strings to use "allowance" instead of "limits":
  `access_all_premium_features_ai`, `plus_additional_collaborators_and_more`,
  `upgrade_to_add_more_collaborators_and_more`
- Fix casing: `upgrade_to_review` "Upgrade to Review" → "Upgrade to review"
- Switch upgrade-benefits and onboarding prompt from `higher_ai_limits`
  to `higher_ai_allowance`
- Fix subscriptions free-plan to show `higher_ai_limits` instead of
  `get_unlimited_ai` under the plans2026 flag
- Fix compile-timeout button to show "Start free trial" under plans2026
  instead of "Start a free trial"
- Update two Cypress assertions for the new track-changes modal title

* Update extracted translations for higher AI allowance

* Remove "start a free trial" with exclamation

* Remove "get unlimited ai" translation entries

GitOrigin-RevId: 12300d94dc81c5407a21d4682d5714d7284c31b0
2026-04-27 08:06:13 +00:00
Olzhas Askar d3b60bcb46 Merge pull request #31750 from overleaf/oa-update-student-features
[web] Update student collaborators

GitOrigin-RevId: fa4631c4d6e95eaa4823d1d5db125231c6cd0c00
2026-04-24 08:06:58 +00:00
Mathias Jakobsen 1110172597 Merge pull request #32927 from overleaf/mj-themed-project-page-teardown
[web] Tear down new-user-system-overall-theme split test and themed-project-dashboard feature flag

GitOrigin-RevId: fe947a603266166332b73a5707bb6cbc9e3d03b9
2026-04-21 08:06:08 +00:00
Maria Florencia Besteiro Gonzalez df3f50d10b Merge pull request #32825 from overleaf/mfb-autocomplete-component-design-review
[web] Autocomplete component design review fixes

GitOrigin-RevId: f598f46a770c94512de5beddb8ff1997df354fae
2026-04-21 08:05:30 +00:00
Eric Mc Sween 26820bc327 Merge pull request #32817 from overleaf/em-account-level-library
[web] Add library page with navbar and sidebar layout

GitOrigin-RevId: b27f8e5dca13bae0cab83a919097c927a025e028
2026-04-20 08:05:40 +00:00
Olzhas Askar b345bf9485 [web] Update captcha notice (#32286)
* feat: remove translations

* feat: remove scss

* fix: remove the last translation

* feat: remove pug

* fix: forgotten conditions

* feat: also remove from react

* Revert changes

* Remove links from `recaptcha_conditions`

* Center short reCAPTCHA notice on CIAM screens

* Re-add the Chinese translation

---------

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>
GitOrigin-RevId: 64e7b8a38c2a4b4f7e60d5c9df6740c35b8763d8
2026-04-14 08:05:15 +00:00
Antoine Clausse 0b99e8e029 Merge pull request #32545 from overleaf/ii-tooltip-flickering
[web] Fix tooltip show and hide

GitOrigin-RevId: 3dfb7189adc5339b635696c9e84bf714a9a353dd
2026-04-14 08:05:12 +00:00
Copilot fb9fed2b74 Fix dropdown active item outline clipped by adjacent items (#32073)
* Initial plan

* Fix selected item outline overlapping next item in dropdown menus

Replace position:relative + absolute positioning with flexbox layout
on .dropdown-item to prevent stacking context overlap of active outline.

Co-authored-by: aeaton-overleaf <75253002+aeaton-overleaf@users.noreply.github.com>

* Fix invalid HTML - replace `div` with `span` inside dropdown item description container

* Do not suppress keyboard focus outlines in toolbar dropdown menus

* Add explicit keyboard focus ring for dropdown items

* Avoid overlapping link focus rings with inset box-shadow

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: aeaton-overleaf <75253002+aeaton-overleaf@users.noreply.github.com>
Co-authored-by: Rebeka <o.dekany@gmail.com>
GitOrigin-RevId: ce4d1b01f04476fd154b6c05a52fc5632bf8b8dc
2026-04-08 08:04:49 +00:00
Maria Florencia Besteiro Gonzalez 71b303863b Merge pull request #32393 from overleaf/mfb-improve-styling-on-support-custom-bibtex-entry-types
Mfb improve styling on support custom bibtex entry types

GitOrigin-RevId: 091518fd80777521b2f04a6f262109ee70213cd0
2026-03-31 08:07:38 +00:00
Jimmy Domagala-Tang 72b7524094 Revert "Revert "Adding More Ai Quota Tiers"" (#32433)
* Revert "Revert "Adding More Ai Quota Tiers (#32128)" (#32431)"

This reverts commit f0ea19b418da6096c84b42024aea643807347649.

* fix: dont block workbench from users who have access via WF

* fix: simplify workbench access rules and ensure wf premium users can use workbench

GitOrigin-RevId: 7927248eadd906d7f802d55fa5c6bc7df162b141
2026-03-27 09:05:21 +00:00
Alexandre Bourdin 671df33da3 Merge pull request #32244 from overleaf/ab-labs-in-feature-flags
[web] Merge Labs programme into the Feature flags system

GitOrigin-RevId: db75e07bf3272becc11ef1eeda3850098b3daa9d
2026-03-26 09:06:51 +00:00
Jimmy Domagala-Tang 6f3e0963b8 Revert "Adding More Ai Quota Tiers (#32128)" (#32431)
This reverts commit e3ef38797f267677cad51d7273272623027ca330.

GitOrigin-RevId: f0ea19b418da6096c84b42024aea643807347649
2026-03-26 09:06:42 +00:00
Jimmy Domagala-Tang c87fd5c42e Adding More Ai Quota Tiers (#32128)
* feat: adding tiers for free and standard

* feat: updating feature calculation to account for more quota tiers

* feat: rename freeTrialQuota to freeQuota

* feat: add hasAiFreeTier and hasUnlimitedAi to editor, block free tier from using workbench

* fix: updating tests

* fix: updating ordering precedence for quota tiers

* feat: bump unlimited ai fair usage to 300 uses

* fix: update workbench quota usage for unlimited plans

* feat: bump features version for ai quota split

* feat: popover should only show for relevant users on workbench, and adding upgrade notification to ineligible users

GitOrigin-RevId: e3ef38797f267677cad51d7273272623027ca330
2026-03-26 09:06:37 +00:00
Maria Florencia Besteiro Gonzalez 7f7ada1b1a Merge pull request #31922 from overleaf/mfb-ol-support-custom-bibtex-entry-types
Mfb ol support custom bibtex entry types

GitOrigin-RevId: 0146080b767c9653afd6567891d6d7778858ff24
2026-03-23 09:06:23 +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