Adding 2025 and 2026 incremental compiles options (#35850)

* feat: adding 2025 and 2026 incremental compiles options

* feat: remove dmtcp from compiler list and autoselect checkpointing version with labs inclusion

* feat: updating seccomp profile for checkpointing

* feat: disable non-premium dmtcp compiles, and align checkpoint version detection between clsi and web

* feat: adding in reminder of checkpoint experiment, and using session based split test retrieval

* Increase Packer build.sh timeout from 1h15m to 1h30m as build takes approx 1h

* fix: moving checkpointing check from tag name based to hasCheckpointing flag set as part of allowed_images, and removing uneeded seccomp rule

* feat: move variant/ image selection to CLSI, and have web control only what options to set for a compile. removing uneeded extra variants from webs list of allowed images

* feat: adding compile timer as a query string as well

---------

Co-authored-by: Tim Gibbon <tim.gibbon@overleaf.com>
GitOrigin-RevId: cdbdf76a62dcd5a585925f18d64b6cb9cd6ed373
This commit is contained in:
Jimmy Domagala-Tang
2026-09-17 12:00:46 +00:00
committed by Copybot
co-authored by Tim Gibbon
parent 35271cb33c
commit baa9cf78d9
12 changed files with 389 additions and 27 deletions
@@ -1013,6 +1013,8 @@
"increase_indent": "",
"increased_ai_allowance": "",
"increased_compile_timeout": "",
"incremental_compiles_are_on": "",
"incremental_compiles_reusing_last_compile": "",
"info": "",
"inline": "",
"inline_math": "",
@@ -0,0 +1,32 @@
import Notification from '@/shared/components/notification'
import { useTranslation, Trans } from 'react-i18next'
import { isSplitTestEnabled } from '@/utils/splitTestUtils'
const CheckpointCompilesEnabledReminder = () => {
const { t } = useTranslation()
if (!isSplitTestEnabled('compile-with-checkpoint')) {
return null
}
const content = (
<Trans
i18nKey="incremental_compiles_reusing_last_compile"
components={[
<a href="/labs/participate" target="_blank" rel="noreferrer" />, // eslint-disable-line react/jsx-key, jsx-a11y/anchor-has-content
]}
/>
)
return (
<div className="notification-list">
<Notification
title={t('incremental_compiles_are_on')}
content={content}
type="info"
className="mb-0"
/>
</div>
)
}
export default CheckpointCompilesEnabledReminder
@@ -16,6 +16,7 @@ import getMeta from '@/utils/meta'
import PdfClearCacheButton from '@/features/pdf-preview/components/pdf-clear-cache-button'
import PdfDownloadFilesButton from '@/features/pdf-preview/components/pdf-download-files-button'
import RollingBuildSelectedReminder from './rolling-build-selected-reminder'
import CheckpointCompilesEnabledReminder from './checkpoint-compiles-enabled-reminder'
import ErrorAssistantAiPaywallNotification from './error-assistant-ai-paywall-notification'
type ErrorLogTab = {
@@ -78,6 +79,7 @@ function ErrorLogs({
<TabContent className="error-logs new-error-logs">
<div className="logs-pane-content">
<RollingBuildSelectedReminder />
<CheckpointCompilesEnabledReminder />
{stoppedOnFirstError && includeErrors && <StopOnFirstErrorPrompt />}
{loadingError && (
@@ -38,7 +38,9 @@ function PdfPreviewHybridToolbar() {
function PdfPreviewHybridToolbarInner() {
const { focusMode } = useLayoutContext()
const showCompileTimer = useFeatureFlag('compile-with-checkpoint')
const debugTimer =
new URLSearchParams(window.location.search).get('compile-timer') === 'true'
const showCompileTimer = useFeatureFlag('show-compile-timer') || debugTimer
return (
<>