mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-07-11 00:33:40 +00:00
Some checks are pending
Docker Dev Images Build / build (Dockerfile, librechat-dev, node) (push) Waiting to run
Docker Dev Images Build / build (Dockerfile.multi, librechat-dev-api, api-build) (push) Waiting to run
GitNexus Index / index (push) Waiting to run
GitNexus Index / post-index (push) Blocked by required conditions
Sync Locize Translations & Create Translation PR / Sync Translation Keys with Locize (push) Waiting to run
Sync Locize Translations & Create Translation PR / Create Translation PR on Version Published (push) Blocked by required conditions
Sync Helm Chart Tags / Ignore non-main push (push) Waiting to run
Sync Helm Chart Tags / Sync chart tags (push) Waiting to run
* 🛟 fix: Auto-Recover from Stale Service Worker Assets After Deploys - 404 missing static assets in the SPA fallback instead of serving index.html - inline recovery script unregisters stale SWs and reloads once on chunk failure - route vite:preloadError into the same recovery path for stale lazy chunks * 🛟 fix: Address Review — SW-Side Recovery, Scoped Unregister, Shared Fallback - importScripts'd sw-heal.js pings window clients on activation and reloads ones that can't pong: stale pages carry no recovery code of their own - scope SW unregistration to the deployment base for subpath installs - preventDefault vite:preloadError only when a recovery reload was initiated - extract createSpaFallback and apply the asset 404 guard to experimental.js
38 lines
983 B
JavaScript
38 lines
983 B
JavaScript
import './polyfills/regeneratorRuntime';
|
|
import { createRoot } from 'react-dom/client';
|
|
import { initializeI18n } from './locales/i18n';
|
|
import App from './App';
|
|
import '@librechat/client/style.css';
|
|
import './style.css';
|
|
import './mobile.css';
|
|
import { ApiErrorBoundaryProvider } from './hooks/ApiErrorBoundaryContext';
|
|
import 'katex/dist/katex.min.css';
|
|
import 'katex/dist/contrib/copy-tex.js';
|
|
|
|
window.addEventListener('vite:preloadError', (event) => {
|
|
if (window.__lcRecoverStaleAssets?.()) {
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
|
|
const container = document.getElementById('root');
|
|
const root = createRoot(container);
|
|
|
|
async function bootstrap() {
|
|
await initializeI18n();
|
|
|
|
root.render(
|
|
<ApiErrorBoundaryProvider>
|
|
<App />
|
|
</ApiErrorBoundaryProvider>,
|
|
);
|
|
}
|
|
|
|
bootstrap().catch((error) => {
|
|
console.error('[i18n] Failed to initialize before render', error);
|
|
root.render(
|
|
<ApiErrorBoundaryProvider>
|
|
<App />
|
|
</ApiErrorBoundaryProvider>,
|
|
);
|
|
});
|