Bump most frontend dependencies (#5699)

This commit is contained in:
Quentin Gliech
2026-05-25 12:57:16 +02:00
committed by GitHub
37 changed files with 2887 additions and 4142 deletions
+1 -1
View File
@@ -3,6 +3,6 @@
"private": true,
"devDependencies": {
"@actions/github-script": "github:actions/github-script",
"typescript": "^5.9.3"
"typescript": "^6.0.3"
}
}
+38 -38
View File
@@ -22,64 +22,64 @@
"@fontsource/inter": "^5.2.8",
"@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-dialog": "^1.1.15",
"@tanstack/react-query": "^5.97.0",
"@tanstack/react-router": "^1.168.10",
"@tanstack/react-query": "^5.100.14",
"@tanstack/react-router": "^1.170.8",
"@vector-im/compound-design-tokens": "6.10.1",
"@vector-im/compound-web": "^8.3.5",
"@zxcvbn-ts/core": "^3.0.4",
"@zxcvbn-ts/language-common": "^3.0.4",
"classnames": "^2.5.1",
"date-fns": "^4.1.0",
"i18next": "^26.0.4",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"react-i18next": "^17.0.2",
"swagger-ui-dist": "^5.31.0",
"valibot": "^1.2.0",
"date-fns": "^4.3.0",
"i18next": "^26.2.0",
"react": "^19.2.6",
"react-dom": "^19.2.6",
"react-i18next": "^17.0.8",
"swagger-ui-dist": "^5.32.6",
"valibot": "^1.4.0",
"vaul": "^1.1.2"
},
"devDependencies": {
"@biomejs/biome": "^2.4.2",
"@biomejs/biome": "^2.4.15",
"@browser-logos/chrome": "^2.0.0",
"@browser-logos/firefox": "^3.0.10",
"@browser-logos/safari": "^2.1.0",
"@graphql-codegen/cli": "^6.2.1",
"@graphql-codegen/client-preset": "^5.2.3",
"@graphql-codegen/typescript-msw": "^4.0.0",
"@graphql-codegen/cli": "^7.0.0",
"@graphql-codegen/client-preset": "^6.0.0",
"@graphql-codegen/typescript-msw": "^4.0.1",
"@graphql-typed-document-node/core": "^3.2.0",
"@storybook/addon-docs": "^10.3.5",
"@storybook/react-vite": "^10.3.5",
"@tanstack/react-query-devtools": "^5.97.0",
"@tanstack/react-router-devtools": "^1.166.11",
"@tanstack/router-plugin": "^1.167.12",
"@storybook/addon-docs": "^10.4.1",
"@storybook/react-vite": "^10.4.1",
"@tanstack/react-query-devtools": "^5.100.14",
"@tanstack/react-router-devtools": "^1.167.0",
"@tanstack/router-plugin": "^1.168.11",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^25.3.0",
"@types/react": "19.2.14",
"@types/node": "^25.9.1",
"@types/react": "19.2.15",
"@types/react-dom": "19.2.3",
"@types/swagger-ui-dist": "^3.30.6",
"@vitejs/plugin-react": "^6.0.1",
"@vitest/coverage-v8": "^4.1.3",
"autoprefixer": "^10.4.23",
"@vitejs/plugin-react": "^6.0.2",
"@vitest/coverage-v8": "^4.1.7",
"autoprefixer": "^10.5.0",
"browserslist-to-esbuild": "^2.1.1",
"graphql": "^16.12.0",
"happy-dom": "^20.8.9",
"i18next-cli": "^1.51.7",
"knip": "^5.81.0",
"msw": "^2.12.8",
"msw-storybook-addon": "^2.0.6",
"postcss": "^8.5.12",
"graphql": "^16.14.0",
"happy-dom": "^20.9.0",
"i18next-cli": "^1.58.0",
"knip": "^6.14.2",
"msw": "^2.14.6",
"msw-storybook-addon": "^2.0.7",
"postcss": "^8.5.15",
"postcss-import": "^16.1.1",
"postcss-nesting": "^14.0.0",
"rimraf": "^6.1.2",
"storybook": "^10.1.11",
"rimraf": "^6.1.3",
"storybook": "^10.4.1",
"tailwindcss": "^3.4.19",
"tinyglobby": "^0.2.15",
"typescript": "^5.9.3",
"vite": "8.0.0",
"vite-plugin-graphql-codegen": "^3.8.0",
"vitest": "^4.0.15"
"tinyglobby": "^0.2.16",
"typescript": "^6.0.3",
"vite": "8.0.14",
"vite-plugin-graphql-codegen": "^3.9.1",
"vitest": "^4.1.7"
},
"msw": {
"workerDirectory": [
@@ -22,6 +22,7 @@ describe("<OAuth2ClientDetail>", () => {
clientName: "Test Client",
clientUri: "https://client.org/logo.png",
tosUri: "https://client.org/tos",
logoUri: null,
policyUri: "https://client.org/policy",
redirectUris: ["https://client.org/"],
};
@@ -38,7 +39,7 @@ describe("<OAuth2ClientDetail>", () => {
const data = makeFragmentData(
{
...baseClient,
tosUri: undefined,
tosUri: null,
},
OAUTH2_CLIENT_FRAGMENT,
);
@@ -52,7 +53,7 @@ describe("<OAuth2ClientDetail>", () => {
const data = makeFragmentData(
{
...baseClient,
logoUri: undefined,
logoUri: null,
},
OAUTH2_CLIENT_FRAGMENT,
);
@@ -17,7 +17,11 @@ describe("<CompatSession />", () => {
id: "session-id",
deviceId: "abcd1234",
createdAt: "2023-06-29T03:35:17.451292+00:00",
finishedAt: null,
lastActiveIp: "1.2.3.4",
lastActiveAt: null,
humanName: null,
userAgent: null,
ssoLogin: {
id: "test-id",
redirectUri: "https://element.io/",
@@ -11,9 +11,9 @@ import { makeFragmentData } from "../../gql";
import Footer, { FRAGMENT } from "./Footer";
const Template: React.FC<{
tosUri?: string;
policyUri?: string;
imprint?: string;
tosUri: string | null;
policyUri: string | null;
imprint: string | null;
}> = ({ tosUri, policyUri, imprint }) => (
<Footer
siteConfig={makeFragmentData(
@@ -19,12 +19,17 @@ describe("<OAuth2Session />", () => {
scope:
"openid urn:matrix:org.matrix.msc2967.client:api:* urn:matrix:org.matrix.msc2967.client:device:abcd1234",
createdAt: "2023-06-29T03:35:17.451292+00:00",
finishedAt: null,
lastActiveIp: "1.2.3.4",
lastActiveAt: null,
userAgent: null,
humanName: null,
client: {
id: "test-id",
clientId: "test-client-id",
clientName: "Element",
clientUri: "https://element.io",
logoUri: null,
applicationType: "WEB" as Oauth2ApplicationType,
},
};
@@ -22,6 +22,7 @@ describe("<CompatSessionDetail>", () => {
lastActiveIp: "1.2.3.4",
lastActiveAt: "2023-07-29T03:35:17.451292+00:00",
userAgent: null,
humanName: null,
ssoLogin: {
id: "test-id",
redirectUri: "https://element.io",
@@ -23,6 +23,7 @@ describe("<OAuth2SessionDetail>", () => {
lastActiveAt: "2023-07-29T03:35:17.451292+00:00",
lastActiveIp: "1.2.3.4",
userAgent: null,
humanName: null,
client: {
id: "test-id",
clientId: "test-client-id",
@@ -12,7 +12,7 @@ import UserGreeting, { CONFIG_FRAGMENT, FRAGMENT } from "./UserGreeting";
const queryClient = new QueryClient();
const Template: React.FC<{
displayName?: string;
displayName: string | null;
mxid: string;
displayNameChangeAllowed: boolean;
}> = ({ displayName, mxid, displayNameChangeAllowed }) => {
+127 -1663
View File
File diff suppressed because it is too large Load Diff
-156
View File
@@ -8,8 +8,6 @@
// You should NOT make any changes in this file as it will be overwritten.
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
import type { CreateFileRoute, FileRoutesByPath } from '@tanstack/react-router'
import { Route as rootRouteImport } from './routes/__root'
import { Route as ResetCrossSigningRouteImport } from './routes/reset-cross-signing'
import { Route as AccountRouteImport } from './routes/_account'
@@ -365,160 +363,6 @@ declare module '@tanstack/react-router' {
}
}
declare module './routes/_account' {
const createFileRoute: CreateFileRoute<
'/_account',
FileRoutesByPath['/_account']['parentRoute'],
FileRoutesByPath['/_account']['id'],
FileRoutesByPath['/_account']['path'],
FileRoutesByPath['/_account']['fullPath']
>
}
declare module './routes/reset-cross-signing' {
const createFileRoute: CreateFileRoute<
'/reset-cross-signing',
FileRoutesByPath['/reset-cross-signing']['parentRoute'],
FileRoutesByPath['/reset-cross-signing']['id'],
FileRoutesByPath['/reset-cross-signing']['path'],
FileRoutesByPath['/reset-cross-signing']['fullPath']
>
}
declare module './routes/clients.$id' {
const createFileRoute: CreateFileRoute<
'/clients/$id',
FileRoutesByPath['/clients/$id']['parentRoute'],
FileRoutesByPath['/clients/$id']['id'],
FileRoutesByPath['/clients/$id']['path'],
FileRoutesByPath['/clients/$id']['fullPath']
>
}
declare module './routes/devices.$' {
const createFileRoute: CreateFileRoute<
'/devices/$',
FileRoutesByPath['/devices/$']['parentRoute'],
FileRoutesByPath['/devices/$']['id'],
FileRoutesByPath['/devices/$']['path'],
FileRoutesByPath['/devices/$']['fullPath']
>
}
declare module './routes/reset-cross-signing.cancelled' {
const createFileRoute: CreateFileRoute<
'/reset-cross-signing/cancelled',
FileRoutesByPath['/reset-cross-signing/cancelled']['parentRoute'],
FileRoutesByPath['/reset-cross-signing/cancelled']['id'],
FileRoutesByPath['/reset-cross-signing/cancelled']['path'],
FileRoutesByPath['/reset-cross-signing/cancelled']['fullPath']
>
}
declare module './routes/reset-cross-signing.success' {
const createFileRoute: CreateFileRoute<
'/reset-cross-signing/success',
FileRoutesByPath['/reset-cross-signing/success']['parentRoute'],
FileRoutesByPath['/reset-cross-signing/success']['id'],
FileRoutesByPath['/reset-cross-signing/success']['path'],
FileRoutesByPath['/reset-cross-signing/success']['fullPath']
>
}
declare module './routes/sessions.$id' {
const createFileRoute: CreateFileRoute<
'/sessions/$id',
FileRoutesByPath['/sessions/$id']['parentRoute'],
FileRoutesByPath['/sessions/$id']['id'],
FileRoutesByPath['/sessions/$id']['path'],
FileRoutesByPath['/sessions/$id']['fullPath']
>
}
declare module './routes/_account.index' {
const createFileRoute: CreateFileRoute<
'/_account/',
FileRoutesByPath['/_account/']['parentRoute'],
FileRoutesByPath['/_account/']['id'],
FileRoutesByPath['/_account/']['path'],
FileRoutesByPath['/_account/']['fullPath']
>
}
declare module './routes/reset-cross-signing.index' {
const createFileRoute: CreateFileRoute<
'/reset-cross-signing/',
FileRoutesByPath['/reset-cross-signing/']['parentRoute'],
FileRoutesByPath['/reset-cross-signing/']['id'],
FileRoutesByPath['/reset-cross-signing/']['path'],
FileRoutesByPath['/reset-cross-signing/']['fullPath']
>
}
declare module './routes/_account.sessions.browsers' {
const createFileRoute: CreateFileRoute<
'/_account/sessions/browsers',
FileRoutesByPath['/_account/sessions/browsers']['parentRoute'],
FileRoutesByPath['/_account/sessions/browsers']['id'],
FileRoutesByPath['/_account/sessions/browsers']['path'],
FileRoutesByPath['/_account/sessions/browsers']['fullPath']
>
}
declare module './routes/emails.$id.in-use' {
const createFileRoute: CreateFileRoute<
'/emails/$id/in-use',
FileRoutesByPath['/emails/$id/in-use']['parentRoute'],
FileRoutesByPath['/emails/$id/in-use']['id'],
FileRoutesByPath['/emails/$id/in-use']['path'],
FileRoutesByPath['/emails/$id/in-use']['fullPath']
>
}
declare module './routes/emails.$id.verify' {
const createFileRoute: CreateFileRoute<
'/emails/$id/verify',
FileRoutesByPath['/emails/$id/verify']['parentRoute'],
FileRoutesByPath['/emails/$id/verify']['id'],
FileRoutesByPath['/emails/$id/verify']['path'],
FileRoutesByPath['/emails/$id/verify']['fullPath']
>
}
declare module './routes/password.change.success' {
const createFileRoute: CreateFileRoute<
'/password/change/success',
FileRoutesByPath['/password/change/success']['parentRoute'],
FileRoutesByPath['/password/change/success']['id'],
FileRoutesByPath['/password/change/success']['path'],
FileRoutesByPath['/password/change/success']['fullPath']
>
}
declare module './routes/_account.plan.index' {
const createFileRoute: CreateFileRoute<
'/_account/plan/',
FileRoutesByPath['/_account/plan/']['parentRoute'],
FileRoutesByPath['/_account/plan/']['id'],
FileRoutesByPath['/_account/plan/']['path'],
FileRoutesByPath['/_account/plan/']['fullPath']
>
}
declare module './routes/_account.sessions.index' {
const createFileRoute: CreateFileRoute<
'/_account/sessions/',
FileRoutesByPath['/_account/sessions/']['parentRoute'],
FileRoutesByPath['/_account/sessions/']['id'],
FileRoutesByPath['/_account/sessions/']['path'],
FileRoutesByPath['/_account/sessions/']['fullPath']
>
}
declare module './routes/password.change.index' {
const createFileRoute: CreateFileRoute<
'/password/change/',
FileRoutesByPath['/password/change/']['parentRoute'],
FileRoutesByPath['/password/change/']['id'],
FileRoutesByPath['/password/change/']['path'],
FileRoutesByPath['/password/change/']['fullPath']
>
}
declare module './routes/password.recovery.index' {
const createFileRoute: CreateFileRoute<
'/password/recovery/',
FileRoutesByPath['/password/recovery/']['parentRoute'],
FileRoutesByPath['/password/recovery/']['id'],
FileRoutesByPath['/password/recovery/']['path'],
FileRoutesByPath['/password/recovery/']['fullPath']
>
}
interface AccountRouteChildren {
AccountIndexRoute: typeof AccountIndexRoute
AccountSessionsBrowsersRoute: typeof AccountSessionsBrowsersRoute
+2 -2
View File
@@ -40,8 +40,8 @@ export const Route = createRootRouteWithContext<{
</>
),
loader({ context }) {
context.queryClient.ensureQueryData(query);
async loader({ context }) {
await context.queryClient.prefetchQuery(query);
},
errorComponent: ErrorComponent,
+7 -2
View File
@@ -5,7 +5,12 @@
// Please see LICENSE files in the repository root for full details.
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
import { notFound, redirect, useNavigate } from "@tanstack/react-router";
import {
createFileRoute,
notFound,
redirect,
useNavigate,
} from "@tanstack/react-router";
import IconSignOut from "@vector-im/compound-design-tokens/assets/web/icons/sign-out";
import { Button, Text } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
@@ -100,7 +105,7 @@ const actionSchema = v.variant("action", [
),
]);
export const Route = createFileRoute({
export const Route = createFileRoute("/_account/")({
validateSearch: actionSchema,
beforeLoad({ search }) {
+2 -2
View File
@@ -4,7 +4,7 @@
// Please see LICENSE files in the repository root for full details.
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
import { Navigate, redirect } from "@tanstack/react-router";
import { createFileRoute, Navigate, redirect } from "@tanstack/react-router";
import { useCallback, useEffect, useMemo, useRef } from "react";
import { preload } from "react-dom";
import { graphql } from "../gql";
@@ -23,7 +23,7 @@ export const query = queryOptions({
queryFn: ({ signal }) => graphqlRequest({ query: QUERY, signal }),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/_account/plan/")({
loader: async ({ context }) => {
const {
siteConfig: { planManagementIframeUri },
@@ -5,7 +5,7 @@
// Please see LICENSE files in the repository root for full details.
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
import { notFound } from "@tanstack/react-router";
import { createFileRoute, notFound } from "@tanstack/react-router";
import { H5 } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
import * as v from "valibot";
@@ -93,7 +93,7 @@ const searchSchema = v.intersect([
anyPaginationSchema,
]);
export const Route = createFileRoute({
export const Route = createFileRoute("/_account/sessions/browsers")({
validateSearch: searchSchema,
loaderDeps: ({ search: { inactive, ...pagination } }) => ({
@@ -5,7 +5,7 @@
// Please see LICENSE files in the repository root for full details.
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
import { notFound } from "@tanstack/react-router";
import { createFileRoute, notFound } from "@tanstack/react-router";
import IconInfo from "@vector-im/compound-design-tokens/assets/web/icons/info";
import { Alert, H3, H4, Tooltip } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
@@ -122,7 +122,7 @@ const searchSchema = v.intersect([
anyPaginationSchema,
]);
export const Route = createFileRoute({
export const Route = createFileRoute("/_account/sessions/")({
validateSearch: searchSchema,
loaderDeps: ({ search: { inactive, ...pagination } }) => ({
+2 -2
View File
@@ -5,7 +5,7 @@
// Please see LICENSE files in the repository root for full details.
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
import { notFound, Outlet } from "@tanstack/react-router";
import { createFileRoute, notFound, Outlet } from "@tanstack/react-router";
import { Heading, Tooltip } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
import Layout from "../components/Layout";
@@ -44,7 +44,7 @@ const query = queryOptions({
queryFn: ({ signal }) => graphqlRequest({ query: QUERY, signal }),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/_account")({
loader: ({ context }) => context.queryClient.ensureQueryData(query),
component: Account,
});
+2 -2
View File
@@ -5,7 +5,7 @@
// Please see LICENSE files in the repository root for full details.
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
import { notFound } from "@tanstack/react-router";
import { createFileRoute, notFound } from "@tanstack/react-router";
import OAuth2ClientDetail from "../components/Client/OAuth2ClientDetail";
import Layout from "../components/Layout";
import { graphql } from "../gql";
@@ -26,7 +26,7 @@ const query = (id: string) =>
graphqlRequest({ query: QUERY, variables: { id }, signal }),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/clients/$id")({
loader: ({ context, params }) =>
context.queryClient.ensureQueryData(query(params.id)),
component: ClientDetail,
+2 -2
View File
@@ -5,7 +5,7 @@
// Please see LICENSE files in the repository root for full details.
import { queryOptions } from "@tanstack/react-query";
import { notFound, redirect } from "@tanstack/react-router";
import { createFileRoute, notFound, redirect } from "@tanstack/react-router";
import { Alert } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
import Layout from "../components/Layout";
@@ -55,7 +55,7 @@ const query = (deviceId: string, userId: string) =>
}),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/devices/$")({
async loader({ context, params }) {
const data = await context.queryClient.fetchQuery(currentViewerQuery);
if (data.viewer.__typename !== "User")
+2 -2
View File
@@ -4,7 +4,7 @@
// Please see LICENSE files in the repository root for full details.
import { useSuspenseQuery } from "@tanstack/react-query";
import { notFound, redirect } from "@tanstack/react-router";
import { createFileRoute, notFound, redirect } from "@tanstack/react-router";
import IconArrowLeft from "@vector-im/compound-design-tokens/assets/web/icons/arrow-left";
import IconErrorSolid from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
import { useTranslation } from "react-i18next";
@@ -13,7 +13,7 @@ import Layout from "../components/Layout";
import PageHeading from "../components/PageHeading";
import { query } from "./emails.$id.verify";
export const Route = createFileRoute({
export const Route = createFileRoute("/emails/$id/in-use")({
async loader({ context, params }): Promise<void> {
const data = await context.queryClient.ensureQueryData(query(params.id));
if (!data.userEmailAuthentication) {
+7 -2
View File
@@ -10,7 +10,12 @@ import {
useQueryClient,
useSuspenseQuery,
} from "@tanstack/react-query";
import { notFound, redirect, useNavigate } from "@tanstack/react-router";
import {
createFileRoute,
notFound,
redirect,
useNavigate,
} from "@tanstack/react-router";
import IconArrowLeft from "@vector-im/compound-design-tokens/assets/web/icons/arrow-left";
import IconSend from "@vector-im/compound-design-tokens/assets/web/icons/send-solid";
import { Alert, Button, Form } from "@vector-im/compound-web";
@@ -56,7 +61,7 @@ export const query = (id: string) =>
graphqlRequest({ query: QUERY, signal, variables: { id } }),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/emails/$id/verify")({
async loader({ context, params }): Promise<void> {
const data = await context.queryClient.ensureQueryData(query(params.id));
if (!data.userEmailAuthentication) {
@@ -9,7 +9,7 @@ import {
useMutation,
useSuspenseQuery,
} from "@tanstack/react-query";
import { notFound, useRouter } from "@tanstack/react-router";
import { createFileRoute, notFound, useRouter } from "@tanstack/react-router";
import IconLockSolid from "@vector-im/compound-design-tokens/assets/web/icons/lock-solid";
import { Alert, Form } from "@vector-im/compound-web";
import { type FormEvent, useRef } from "react";
@@ -62,7 +62,7 @@ const query = queryOptions({
queryFn: ({ signal }) => graphqlRequest({ query: QUERY, signal }),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/password/change/")({
loader: ({ context }) => context.queryClient.ensureQueryData(query),
component: ChangePassword,
});
@@ -4,13 +4,14 @@
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
import { createFileRoute } from "@tanstack/react-router";
import IconCheckCircle from "@vector-im/compound-design-tokens/assets/web/icons/check-circle-solid";
import { useTranslation } from "react-i18next";
import { ButtonLink } from "../components/ButtonLink";
import Layout from "../components/Layout";
import PageHeading from "../components/PageHeading";
export const Route = createFileRoute({
export const Route = createFileRoute("/password/change/success")({
component: ChangePasswordSuccess,
});
@@ -9,7 +9,12 @@ import {
useMutation,
useSuspenseQuery,
} from "@tanstack/react-query";
import { notFound, useNavigate, useSearch } from "@tanstack/react-router";
import {
createFileRoute,
notFound,
useNavigate,
useSearch,
} from "@tanstack/react-router";
import IconErrorSolid from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
import IconLockSolid from "@vector-im/compound-design-tokens/assets/web/icons/lock-solid";
import { Alert, Button, Form } from "@vector-im/compound-web";
@@ -81,7 +86,7 @@ const schema = v.object({
ticket: v.string(),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/password/recovery/")({
validateSearch: schema,
loaderDeps: ({ search: { ticket } }) => ({ ticket }),
@@ -3,12 +3,13 @@
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
import { createFileRoute } from "@tanstack/react-router";
import IconKeyOffSolid from "@vector-im/compound-design-tokens/assets/web/icons/key-off-solid";
import { Text } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
import PageHeading from "../components/PageHeading";
export const Route = createFileRoute({
export const Route = createFileRoute("/reset-cross-signing/cancelled")({
component: () => {
const { t } = useTranslation();
return (
@@ -9,7 +9,7 @@ import {
useMutation,
useSuspenseQuery,
} from "@tanstack/react-query";
import { notFound } from "@tanstack/react-router";
import { createFileRoute, notFound } from "@tanstack/react-router";
import IconCheck from "@vector-im/compound-design-tokens/assets/web/icons/check";
import IconErrorSolid from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
import IconInfo from "@vector-im/compound-design-tokens/assets/web/icons/info";
@@ -46,7 +46,7 @@ const currentViewerQuery = queryOptions({
}),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/reset-cross-signing/")({
loader: ({ context }) =>
context.queryClient.ensureQueryData(currentViewerQuery),
@@ -3,6 +3,7 @@
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
import { createFileRoute } from "@tanstack/react-router";
import IconCheckCircleSolid from "@vector-im/compound-design-tokens/assets/web/icons/check-circle-solid";
import { Text } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
@@ -12,7 +13,7 @@ import PageHeading from "../components/PageHeading";
// https://github.com/element-hq/synapse/blob/34b758644611721911a223814a7b35d8e14067e6/synapse/rest/admin/users.py#L1335
const CROSS_SIGNING_REPLACEMENT_PERIOD_MS = 10 * 60 * 1000; // 10 minutes
export const Route = createFileRoute({
export const Route = createFileRoute("/reset-cross-signing/success")({
component: () => {
const { t } = useTranslation();
return (
+6 -2
View File
@@ -3,7 +3,11 @@
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
import { type ErrorComponentProps, Outlet } from "@tanstack/react-router";
import {
createFileRoute,
type ErrorComponentProps,
Outlet,
} from "@tanstack/react-router";
import IconErrorSolid from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
import { Button, Text } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
@@ -15,7 +19,7 @@ const searchSchema = v.object({
deepLink: v.optional(v.boolean()),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/reset-cross-signing")({
validateSearch: searchSchema,
component: () => (
<Layout>
+2 -2
View File
@@ -5,7 +5,7 @@
// Please see LICENSE files in the repository root for full details.
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
import { notFound } from "@tanstack/react-router";
import { createFileRoute, notFound } from "@tanstack/react-router";
import { Alert } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
import Layout from "../components/Layout";
@@ -41,7 +41,7 @@ const query = (id: string) =>
graphqlRequest({ query: QUERY, signal, variables: { id } }),
});
export const Route = createFileRoute({
export const Route = createFileRoute("/sessions/$id")({
loader: ({ context, params }) =>
context.queryClient.ensureQueryData(query(params.id)),
notFoundComponent: NotFound,
+1 -1
View File
@@ -28,7 +28,7 @@
.cpd-text-control:focus,
/* This is set to auto by tailwind, we need to reset this */
.cpd-text-control:focus-visible {
.cpd-text-control:focus-visible {
outline: 2px solid var(--cpd-color-border-focused);
border-color: transparent;
}
+10 -6
View File
@@ -82,12 +82,16 @@ export const handlers = [
),
),
siteConfig: makeFragmentData(
{
displayNameChangeAllowed: true,
},
USER_GREETING_CONFIG_FRAGMENT,
),
siteConfig: {
planManagementIframeUri: null,
sessionLimit: null,
...makeFragmentData(
{
displayNameChangeAllowed: true,
},
USER_GREETING_CONFIG_FRAGMENT,
),
},
},
}),
),
@@ -556,6 +556,43 @@ exports[`Reset cross signing > renders the success page 1`] = `
>
The identity reset has been approved for the next 10 minutes. You can close this window and go back to the app to continue.
</p>
<footer
class="_legalFooter_acfd2c"
>
<nav>
<a
class="_link_1v5rz_8"
data-kind="primary"
data-size="medium"
href="https://matrix.org/policy"
rel="noreferrer noopener"
title="Link to the service privacy policy"
>
Privacy Policy
</a>
<div
aria-hidden="true"
class="_separator_acfd2c"
>
</div>
<a
class="_link_1v5rz_8"
data-kind="primary"
data-size="medium"
href="https://matrix.org/tos"
rel="noreferrer noopener"
title="Link to the service terms and conditions"
>
Terms & Conditions
</a>
</nav>
<p
class="_imprint_acfd2c"
>
All Rights Reserved. The Super Chat name, logo and device are registered trade marks of BigCorp Ltd.
</p>
</footer>
</div>
</DocumentFragment>
`;
@@ -598,6 +635,43 @@ exports[`Reset cross signing > renders the success page 2`] = `
>
The identity reset has been approved for the next 10 minutes. You can close this window and go back to the app to continue.
</p>
<footer
class="_legalFooter_acfd2c"
>
<nav>
<a
class="_link_1v5rz_8"
data-kind="primary"
data-size="medium"
href="https://matrix.org/policy"
rel="noreferrer noopener"
title="Link to the service privacy policy"
>
Privacy Policy
</a>
<div
aria-hidden="true"
class="_separator_acfd2c"
>
</div>
<a
class="_link_1v5rz_8"
data-kind="primary"
data-size="medium"
href="https://matrix.org/tos"
rel="noreferrer noopener"
title="Link to the service terms and conditions"
>
Terms & Conditions
</a>
</nav>
<p
class="_imprint_acfd2c"
>
All Rights Reserved. The Super Chat name, logo and device are registered trade marks of BigCorp Ltd.
</p>
</footer>
</div>
</DocumentFragment>
`;
@@ -37,7 +37,6 @@ describe("Account home page", () => {
return HttpResponse.json({
data: {
setDisplayName: {
__typename: "SetDisplayNamePayload",
status: "SET",
},
},
@@ -105,7 +104,6 @@ describe("Account home page", () => {
HttpResponse.json({
data: {
setDisplayName: {
__typename: "SetDisplayNamePayload",
status: "INVALID",
},
},
-1
View File
@@ -6,7 +6,6 @@
"types": ["vite/client", "vitest/importMeta"],
"allowJs": false,
"skipLibCheck": true,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
+2 -2
View File
@@ -1,9 +1,9 @@
{
"name": "matrix-authentication-service",
"private": true,
"packageManager": "pnpm@11.1.0+sha512.0c44e842e5686b2c061a81adda8b2258bd8818e9704b2cf2c63d56b931a7b2e910092e085027003b96ca3911ab56a07f6df5abaed2be9925034cdd686a535b14",
"packageManager": "pnpm@11.3.0+sha512.2c403d6594527287672b1f7056343a1f7c3634036a67ffabfcc2b3d7595d843768f8787148d1b57cf7956c90606bbd192857c363af19e96d2d0ec9ec5741d215",
"devDependencies": {
"@localazy/cli": "^2.0.10",
"semver": "^7.8.0"
"semver": "^7.8.1"
}
}
+2557 -2233
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -22,6 +22,10 @@ trustPolicyExclude:
# @actions/github-script bundles @actions/http-client which pulls in
# undici@5.29.0 — older 5.x releases were published with provenance.
- "undici@5.29.0"
# They switched to npm staged publishing, which for some reason npm flags
# from being a release with a trusted publisher (GH actions) and provenance
# to one with only provenance.
- "tinyexec@1.2.2"
# Fail the install if any dependency has a build script that isn't explicitly
# allowed. Add entries to `allowBuilds` (package name pattern -> bool) to