diff --git a/services/web/app/src/infrastructure/ExpressLocals.mjs b/services/web/app/src/infrastructure/ExpressLocals.mjs index 8d0c3780b7..15c930a345 100644 --- a/services/web/app/src/infrastructure/ExpressLocals.mjs +++ b/services/web/app/src/infrastructure/ExpressLocals.mjs @@ -370,6 +370,7 @@ export default async function (webRouter, privateApiRouter, publicApiRouter) { webRouter.use(function (req, res, next) { res.locals.ExposedSettings = { isOverleaf: Settings.overleaf != null, + env: Settings.env, appName: Settings.appName, adminEmail: Settings.adminEmail, dropboxAppName: diff --git a/services/web/app/views/layout/thin-footer.pug b/services/web/app/views/layout/thin-footer.pug index a5670be0df..d8c68ccc8c 100644 --- a/services/web/app/views/layout/thin-footer.pug +++ b/services/web/app/views/layout/thin-footer.pug @@ -7,7 +7,7 @@ footer.site-footer if !settings.nav.hide_powered_by li //- year of Server Pro release, static - | © 2025 + | © 2026 | a(href='https://www.overleaf.com/for/enterprises') Powered by Overleaf @@ -36,3 +36,8 @@ footer.site-footer a(href=item.url class=item.class aria-label=item.label) !{item.text} else | !{item.text} + if settings.env === 'server-ce' + .row + .col-12 + p.copyright-notice + | Overleaf Community Edition™ is a free unsupported software that may contain vulnerabilities and used at your own risk. Use of Overleaf Community Edition™ here is not operated, supported or endorsed by Overleaf®. It has been provided "AS IS" with all liability disclaimed (to the fullest extent lawful) and all rights reserved. diff --git a/services/web/frontend/js/shared/components/footer/thin-footer.tsx b/services/web/frontend/js/shared/components/footer/thin-footer.tsx index 21e6e972df..765e7573aa 100644 --- a/services/web/frontend/js/shared/components/footer/thin-footer.tsx +++ b/services/web/frontend/js/shared/components/footer/thin-footer.tsx @@ -3,7 +3,9 @@ import type { FooterMetadata, } from '@/shared/components/types/footer-metadata' import OLRow from '@/shared/components/ol/ol-row' +import OLCol from '@/shared/components/ol/ol-col' import LanguagePicker from '@/shared/components/language-picker' +import getMeta from '@/utils/meta.ts' import React from 'react' function FooterItemLi({ @@ -46,6 +48,7 @@ function ThinFooter({ leftItems, rightItems, }: FooterMetadata) { + const { env } = getMeta('ol-ExposedSettings') const showLanguagePicker = Boolean( subdomainLang && Object.keys(subdomainLang).length > 1 ) @@ -60,7 +63,7 @@ function ThinFooter({ {showPoweredBy ? ( <>
  • - {/* year of Server Pro release, static */}© 2025{' '} + {/* year of Server Pro release, static */}© 2026{' '} Powered by Overleaf @@ -86,6 +89,20 @@ function ThinFooter({ ))} + {env === 'server-ce' && ( + + +

    + Overleaf Community Edition™ is a free unsupported software that + may contain vulnerabilities and used at your own risk. Use of + Overleaf Community Edition™ here is not operated, supported or + endorsed by Overleaf®. It has been provided "AS IS" with all + liability disclaimed (to the fullest extent lawful) and all + rights reserved. +

    +
    +
    + )} ) diff --git a/services/web/frontend/stylesheets/components/footer.scss b/services/web/frontend/stylesheets/components/footer.scss index f3c5829886..b7347a0894 100644 --- a/services/web/frontend/stylesheets/components/footer.scss +++ b/services/web/frontend/stylesheets/components/footer.scss @@ -160,6 +160,11 @@ footer.site-footer { font-size: var(--font-size-05); } } + + .copyright-notice { + font-size: var(--font-size-02); + line-height: calc($thin-footer-height / 2); + } } .site-footer-content { diff --git a/services/web/types/exposed-settings.ts b/services/web/types/exposed-settings.ts index 012e7588fd..a1f55f538d 100644 --- a/services/web/types/exposed-settings.ts +++ b/services/web/types/exposed-settings.ts @@ -23,6 +23,7 @@ export type ExposedSettings = { hotjarVersion?: string ieeeBrandId: number isOverleaf: boolean + env: 'saas' | 'server-pro' | 'server-ce' maxEntitiesPerProject: number mixpanelLabsToken?: string projectUploadTimeout: number