chore: prettier format all files, brotli, Sentry release tagging, CI gates
Prettier: auto-formatted 103 files to fix baseline. Prettier check in CI is now a hard gate (removed continue-on-error). Brotli: installed libnginx-mod-http-brotli-filter/static. Enabled in nginx with brotli_static on for pre-compressed assets and comp_level 6. Sentry releases: deploy script now exports VITE_APP_VERSION=<git-short-sha> before building so each Sentry release maps to an exact commit. CI also passes github.sha as VITE_APP_VERSION. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+120
-33
@@ -10,10 +10,12 @@ import {
|
||||
} from 'react-router-dom';
|
||||
|
||||
import { ClientConfig } from '../hooks/useClientConfig';
|
||||
const AuthLayout = React.lazy(() => import('./auth').then(m => ({ default: m.AuthLayout })));
|
||||
const Login = React.lazy(() => import('./auth').then(m => ({ default: m.Login })));
|
||||
const Register = React.lazy(() => import('./auth').then(m => ({ default: m.Register })));
|
||||
const ResetPassword = React.lazy(() => import('./auth').then(m => ({ default: m.ResetPassword })));
|
||||
const AuthLayout = React.lazy(() => import('./auth').then((m) => ({ default: m.AuthLayout })));
|
||||
const Login = React.lazy(() => import('./auth').then((m) => ({ default: m.Login })));
|
||||
const Register = React.lazy(() => import('./auth').then((m) => ({ default: m.Register })));
|
||||
const ResetPassword = React.lazy(() =>
|
||||
import('./auth').then((m) => ({ default: m.ResetPassword }))
|
||||
);
|
||||
import {
|
||||
DIRECT_PATH,
|
||||
EXPLORE_PATH,
|
||||
@@ -48,9 +50,8 @@ import { Home, HomeRouteRoomProvider, HomeSearch } from './client/home';
|
||||
import { Direct, DirectCreate, DirectRouteRoomProvider } from './client/direct';
|
||||
import { RouteSpaceProvider, Space, SpaceRouteRoomProvider, SpaceSearch } from './client/space';
|
||||
|
||||
|
||||
import { setAfterLoginRedirectPath } from './afterLoginRedirectPath';
|
||||
const Room = React.lazy(() => import('../features/room').then(m => ({ default: m.Room })));
|
||||
const Room = React.lazy(() => import('../features/room').then((m) => ({ default: m.Room })));
|
||||
|
||||
import { WelcomePage } from './client/WelcomePage';
|
||||
import { SidebarNav } from './client/SidebarNav';
|
||||
@@ -62,22 +63,38 @@ import { ClientNonUIFeatures } from './client/ClientNonUIFeatures';
|
||||
import { AuthRouteThemeManager, UnAuthRouteThemeManager } from './ThemeManager';
|
||||
import { ReceiveSelfDeviceVerification } from '../components/DeviceVerification';
|
||||
import { AutoRestoreBackupOnVerification } from '../components/BackupRestore';
|
||||
const RoomSettingsRenderer = React.lazy(() => import('../features/room-settings').then(m => ({ default: m.RoomSettingsRenderer })));
|
||||
const RoomSettingsRenderer = React.lazy(() =>
|
||||
import('../features/room-settings').then((m) => ({ default: m.RoomSettingsRenderer }))
|
||||
);
|
||||
import { ClientRoomsNotificationPreferences } from './client/ClientRoomsNotificationPreferences';
|
||||
const SpaceSettingsRenderer = React.lazy(() => import('../features/space-settings').then(m => ({ default: m.SpaceSettingsRenderer })));
|
||||
const SpaceSettingsRenderer = React.lazy(() =>
|
||||
import('../features/space-settings').then((m) => ({ default: m.SpaceSettingsRenderer }))
|
||||
);
|
||||
import { UserRoomProfileRenderer } from '../components/UserRoomProfileRenderer';
|
||||
const CreateRoomModalRenderer = React.lazy(() => import('../features/create-room').then(m => ({ default: m.CreateRoomModalRenderer })));
|
||||
const CreateRoomModalRenderer = React.lazy(() =>
|
||||
import('../features/create-room').then((m) => ({ default: m.CreateRoomModalRenderer }))
|
||||
);
|
||||
import { HomeCreateRoom } from './client/home/CreateRoom';
|
||||
import { Create } from './client/create';
|
||||
const CreateSpaceModalRenderer = React.lazy(() => import('../features/create-space').then(m => ({ default: m.CreateSpaceModalRenderer })));
|
||||
const SearchModalRenderer = React.lazy(() => import('../features/search').then(m => ({ default: m.SearchModalRenderer })));
|
||||
const Explore = React.lazy(() => import('./client/explore').then(m => ({ default: m.Explore })));
|
||||
const FeaturedRooms = React.lazy(() => import('./client/explore').then(m => ({ default: m.FeaturedRooms })));
|
||||
const PublicRooms = React.lazy(() => import('./client/explore').then(m => ({ default: m.PublicRooms })));
|
||||
const Notifications = React.lazy(() => import('./client/inbox').then(m => ({ default: m.Notifications })));
|
||||
const Inbox = React.lazy(() => import('./client/inbox').then(m => ({ default: m.Inbox })));
|
||||
const Invites = React.lazy(() => import('./client/inbox').then(m => ({ default: m.Invites })));
|
||||
const Lobby = React.lazy(() => import('../features/lobby').then(m => ({ default: m.Lobby })));
|
||||
const CreateSpaceModalRenderer = React.lazy(() =>
|
||||
import('../features/create-space').then((m) => ({ default: m.CreateSpaceModalRenderer }))
|
||||
);
|
||||
const SearchModalRenderer = React.lazy(() =>
|
||||
import('../features/search').then((m) => ({ default: m.SearchModalRenderer }))
|
||||
);
|
||||
const Explore = React.lazy(() => import('./client/explore').then((m) => ({ default: m.Explore })));
|
||||
const FeaturedRooms = React.lazy(() =>
|
||||
import('./client/explore').then((m) => ({ default: m.FeaturedRooms }))
|
||||
);
|
||||
const PublicRooms = React.lazy(() =>
|
||||
import('./client/explore').then((m) => ({ default: m.PublicRooms }))
|
||||
);
|
||||
const Notifications = React.lazy(() =>
|
||||
import('./client/inbox').then((m) => ({ default: m.Notifications }))
|
||||
);
|
||||
const Inbox = React.lazy(() => import('./client/inbox').then((m) => ({ default: m.Inbox })));
|
||||
const Invites = React.lazy(() => import('./client/inbox').then((m) => ({ default: m.Invites })));
|
||||
const Lobby = React.lazy(() => import('../features/lobby').then((m) => ({ default: m.Lobby })));
|
||||
import { getFallbackSession } from '../state/sessions';
|
||||
import { CallStatusRenderer } from './CallStatusRenderer';
|
||||
import { CallEmbedProvider } from '../components/CallEmbedProvider';
|
||||
@@ -112,9 +129,30 @@ export const createRouter = (clientConfig: ClientConfig, screenSize: ScreenSize)
|
||||
</React.Suspense>
|
||||
}
|
||||
>
|
||||
<Route path={LOGIN_PATH} element={<React.Suspense fallback={null}><Login /></React.Suspense>} />
|
||||
<Route path={REGISTER_PATH} element={<React.Suspense fallback={null}><Register /></React.Suspense>} />
|
||||
<Route path={RESET_PASSWORD_PATH} element={<React.Suspense fallback={null}><ResetPassword /></React.Suspense>} />
|
||||
<Route
|
||||
path={LOGIN_PATH}
|
||||
element={
|
||||
<React.Suspense fallback={null}>
|
||||
<Login />
|
||||
</React.Suspense>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path={REGISTER_PATH}
|
||||
element={
|
||||
<React.Suspense fallback={null}>
|
||||
<Register />
|
||||
</React.Suspense>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path={RESET_PASSWORD_PATH}
|
||||
element={
|
||||
<React.Suspense fallback={null}>
|
||||
<ResetPassword />
|
||||
</React.Suspense>
|
||||
}
|
||||
/>
|
||||
</Route>
|
||||
|
||||
<Route
|
||||
@@ -149,12 +187,22 @@ export const createRouter = (clientConfig: ClientConfig, screenSize: ScreenSize)
|
||||
</ClientLayout>
|
||||
<CallStatusRenderer />
|
||||
</CallEmbedProvider>
|
||||
<React.Suspense fallback={null}><SearchModalRenderer /></React.Suspense>
|
||||
<React.Suspense fallback={null}>
|
||||
<SearchModalRenderer />
|
||||
</React.Suspense>
|
||||
<UserRoomProfileRenderer />
|
||||
<React.Suspense fallback={null}><CreateRoomModalRenderer /></React.Suspense>
|
||||
<React.Suspense fallback={null}><CreateSpaceModalRenderer /></React.Suspense>
|
||||
<React.Suspense fallback={null}><RoomSettingsRenderer /></React.Suspense>
|
||||
<React.Suspense fallback={null}><SpaceSettingsRenderer /></React.Suspense>
|
||||
<React.Suspense fallback={null}>
|
||||
<CreateRoomModalRenderer />
|
||||
</React.Suspense>
|
||||
<React.Suspense fallback={null}>
|
||||
<CreateSpaceModalRenderer />
|
||||
</React.Suspense>
|
||||
<React.Suspense fallback={null}>
|
||||
<RoomSettingsRenderer />
|
||||
</React.Suspense>
|
||||
<React.Suspense fallback={null}>
|
||||
<SpaceSettingsRenderer />
|
||||
</React.Suspense>
|
||||
<ReceiveSelfDeviceVerification />
|
||||
<AutoRestoreBackupOnVerification />
|
||||
</ClientNonUIFeatures>
|
||||
@@ -250,7 +298,14 @@ export const createRouter = (clientConfig: ClientConfig, screenSize: ScreenSize)
|
||||
element={<WelcomePage />}
|
||||
/>
|
||||
)}
|
||||
<Route path={_LOBBY_PATH} element={<React.Suspense fallback={null}><Lobby /></React.Suspense>} />
|
||||
<Route
|
||||
path={_LOBBY_PATH}
|
||||
element={
|
||||
<React.Suspense fallback={null}>
|
||||
<Lobby />
|
||||
</React.Suspense>
|
||||
}
|
||||
/>
|
||||
<Route path={_SEARCH_PATH} element={<SpaceSearch />} />
|
||||
<Route
|
||||
path={_ROOM_PATH}
|
||||
@@ -269,7 +324,9 @@ export const createRouter = (clientConfig: ClientConfig, screenSize: ScreenSize)
|
||||
<PageRoot
|
||||
nav={
|
||||
<MobileFriendlyPageNav path={EXPLORE_PATH}>
|
||||
<React.Suspense fallback={null}><Explore /></React.Suspense>
|
||||
<React.Suspense fallback={null}>
|
||||
<Explore />
|
||||
</React.Suspense>
|
||||
</MobileFriendlyPageNav>
|
||||
}
|
||||
>
|
||||
@@ -284,8 +341,22 @@ export const createRouter = (clientConfig: ClientConfig, screenSize: ScreenSize)
|
||||
element={<WelcomePage />}
|
||||
/>
|
||||
)}
|
||||
<Route path={_FEATURED_PATH} element={<React.Suspense fallback={null}><FeaturedRooms /></React.Suspense>} />
|
||||
<Route path={_SERVER_PATH} element={<React.Suspense fallback={null}><PublicRooms /></React.Suspense>} />
|
||||
<Route
|
||||
path={_FEATURED_PATH}
|
||||
element={
|
||||
<React.Suspense fallback={null}>
|
||||
<FeaturedRooms />
|
||||
</React.Suspense>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path={_SERVER_PATH}
|
||||
element={
|
||||
<React.Suspense fallback={null}>
|
||||
<PublicRooms />
|
||||
</React.Suspense>
|
||||
}
|
||||
/>
|
||||
</Route>
|
||||
<Route path={CREATE_PATH} element={<Create />} />
|
||||
<Route
|
||||
@@ -294,7 +365,9 @@ export const createRouter = (clientConfig: ClientConfig, screenSize: ScreenSize)
|
||||
<PageRoot
|
||||
nav={
|
||||
<MobileFriendlyPageNav path={INBOX_PATH}>
|
||||
<React.Suspense fallback={null}><Inbox /></React.Suspense>
|
||||
<React.Suspense fallback={null}>
|
||||
<Inbox />
|
||||
</React.Suspense>
|
||||
</MobileFriendlyPageNav>
|
||||
}
|
||||
>
|
||||
@@ -309,8 +382,22 @@ export const createRouter = (clientConfig: ClientConfig, screenSize: ScreenSize)
|
||||
element={<WelcomePage />}
|
||||
/>
|
||||
)}
|
||||
<Route path={_NOTIFICATIONS_PATH} element={<React.Suspense fallback={null}><Notifications /></React.Suspense>} />
|
||||
<Route path={_INVITES_PATH} element={<React.Suspense fallback={null}><Invites /></React.Suspense>} />
|
||||
<Route
|
||||
path={_NOTIFICATIONS_PATH}
|
||||
element={
|
||||
<React.Suspense fallback={null}>
|
||||
<Notifications />
|
||||
</React.Suspense>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path={_INVITES_PATH}
|
||||
element={
|
||||
<React.Suspense fallback={null}>
|
||||
<Invites />
|
||||
</React.Suspense>
|
||||
}
|
||||
/>
|
||||
</Route>
|
||||
</Route>
|
||||
<Route path="/*" element={<p>Page not found</p>} />
|
||||
|
||||
Reference in New Issue
Block a user