diff --git a/electron/updateChannel.test.ts b/electron/updateChannel.test.ts
index 149e9fba..646c65c3 100644
--- a/electron/updateChannel.test.ts
+++ b/electron/updateChannel.test.ts
@@ -1,8 +1,5 @@
import { describe, expect, it } from "vitest";
-import {
- EXPERIMENTAL_UPDATE_DESCRIPTION,
- getUpdateChannelConfiguration,
-} from "./updateChannel";
+import { EXPERIMENTAL_UPDATE_DESCRIPTION, getUpdateChannelConfiguration } from "./updateChannel";
describe("getUpdateChannelConfiguration", () => {
it("keeps regular clients on stable metadata", () => {
diff --git a/electron/updateChannel.ts b/electron/updateChannel.ts
index 0488db02..9ca9ce96 100644
--- a/electron/updateChannel.ts
+++ b/electron/updateChannel.ts
@@ -13,9 +13,7 @@ export function getUpdateChannelConfiguration(
experimentalUpdatesEnabled: boolean,
): UpdateChannelConfiguration {
return {
- channel: experimentalUpdatesEnabled
- ? EXPERIMENTAL_UPDATE_CHANNEL
- : STABLE_UPDATE_CHANNEL,
+ channel: experimentalUpdatesEnabled ? EXPERIMENTAL_UPDATE_CHANNEL : STABLE_UPDATE_CHANNEL,
allowPrerelease: experimentalUpdatesEnabled,
allowDowngrade: false,
};
diff --git a/electron/updater.ts b/electron/updater.ts
index c887e634..8fb24177 100644
--- a/electron/updater.ts
+++ b/electron/updater.ts
@@ -5,10 +5,7 @@ import { app, BrowserWindow, dialog } from "electron";
import { autoUpdater } from "electron-updater";
import { USER_DATA_PATH } from "./appPaths";
import { readAppSetting, writeAppSetting } from "./appSettingsStore";
-import {
- EXPERIMENTAL_UPDATE_DESCRIPTION,
- getUpdateChannelConfiguration,
-} from "./updateChannel";
+import { EXPERIMENTAL_UPDATE_DESCRIPTION, getUpdateChannelConfiguration } from "./updateChannel";
const UPDATE_CHECK_INTERVAL_MS = 6 * 60 * 60 * 1000;
export const UPDATE_REMINDER_DELAY_MS = 3 * 60 * 60 * 1000;
diff --git a/electron/windows.ts b/electron/windows.ts
index f45a9d97..f9a25aa1 100644
--- a/electron/windows.ts
+++ b/electron/windows.ts
@@ -209,7 +209,9 @@ function getUpdateToastBounds() {
const display = getScreen().getDisplayMatching(hudBounds);
const { workArea } = display;
const x = Math.round(workArea.x + (workArea.width - UPDATE_TOAST_WIDTH) / 2);
- const y = Math.round(workArea.y + workArea.height - UPDATE_TOAST_HEIGHT - HUD_EDGE_MARGIN_DIP);
+ const y = Math.round(
+ workArea.y + workArea.height - UPDATE_TOAST_HEIGHT - HUD_EDGE_MARGIN_DIP,
+ );
return {
x,
@@ -460,7 +462,11 @@ export function createHudOverlayWindow(): BrowserWindow {
if (hasShownHudWindow || win.isDestroyed()) {
return;
}
- if (updateToastWindow && !updateToastWindow.isDestroyed() && updateToastWindow.isVisible()) {
+ if (
+ updateToastWindow &&
+ !updateToastWindow.isDestroyed() &&
+ updateToastWindow.isVisible()
+ ) {
hudWasVisibleBeforeUpdateToast = true;
return;
}
diff --git a/src/assets/cursors/windows11/arrow__31-22.svg b/src/assets/cursors/windows11/arrow__31-22.svg
new file mode 100644
index 00000000..f17b1589
--- /dev/null
+++ b/src/assets/cursors/windows11/arrow__31-22.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/block__50-50.svg b/src/assets/cursors/windows11/block__50-50.svg
new file mode 100644
index 00000000..7e49badc
--- /dev/null
+++ b/src/assets/cursors/windows11/block__50-50.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/busy__50-50.svg b/src/assets/cursors/windows11/busy__50-50.svg
new file mode 100644
index 00000000..c47a7ae1
--- /dev/null
+++ b/src/assets/cursors/windows11/busy__50-50.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/assets/cursors/windows11/cross__50-50.svg b/src/assets/cursors/windows11/cross__50-50.svg
new file mode 100644
index 00000000..5e0d5e52
--- /dev/null
+++ b/src/assets/cursors/windows11/cross__50-50.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/grab__50-50.svg b/src/assets/cursors/windows11/grab__50-50.svg
new file mode 100644
index 00000000..7408fdfe
--- /dev/null
+++ b/src/assets/cursors/windows11/grab__50-50.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/cursors/windows11/grabbing__50-50.svg b/src/assets/cursors/windows11/grabbing__50-50.svg
new file mode 100644
index 00000000..c338b955
--- /dev/null
+++ b/src/assets/cursors/windows11/grabbing__50-50.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/cursors/windows11/help__31-22.svg b/src/assets/cursors/windows11/help__31-22.svg
new file mode 100644
index 00000000..d7a4ebb5
--- /dev/null
+++ b/src/assets/cursors/windows11/help__31-22.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/assets/cursors/windows11/move__51-51.svg b/src/assets/cursors/windows11/move__51-51.svg
new file mode 100644
index 00000000..459ebcb9
--- /dev/null
+++ b/src/assets/cursors/windows11/move__51-51.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/pen__19-19.svg b/src/assets/cursors/windows11/pen__19-19.svg
new file mode 100644
index 00000000..bc05a6a3
--- /dev/null
+++ b/src/assets/cursors/windows11/pen__19-19.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/cursors/windows11/person__50-50.svg b/src/assets/cursors/windows11/person__50-50.svg
new file mode 100644
index 00000000..f4fded61
--- /dev/null
+++ b/src/assets/cursors/windows11/person__50-50.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/assets/cursors/windows11/pin__75-97.svg b/src/assets/cursors/windows11/pin__75-97.svg
new file mode 100644
index 00000000..f7242aec
--- /dev/null
+++ b/src/assets/cursors/windows11/pin__75-97.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/assets/cursors/windows11/pointer__54-35.svg b/src/assets/cursors/windows11/pointer__54-35.svg
new file mode 100644
index 00000000..42e241f7
--- /dev/null
+++ b/src/assets/cursors/windows11/pointer__54-35.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/assets/cursors/windows11/resize-diagonal-backslash__50-50.svg b/src/assets/cursors/windows11/resize-diagonal-backslash__50-50.svg
new file mode 100644
index 00000000..2119d5fa
--- /dev/null
+++ b/src/assets/cursors/windows11/resize-diagonal-backslash__50-50.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/resize-diagonal-slash__50-50.svg b/src/assets/cursors/windows11/resize-diagonal-slash__50-50.svg
new file mode 100644
index 00000000..ebd706fc
--- /dev/null
+++ b/src/assets/cursors/windows11/resize-diagonal-slash__50-50.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/resize-horizontal__51-49.svg b/src/assets/cursors/windows11/resize-horizontal__51-49.svg
new file mode 100644
index 00000000..25cde2ee
--- /dev/null
+++ b/src/assets/cursors/windows11/resize-horizontal__51-49.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/resize-vertical__48-50.svg b/src/assets/cursors/windows11/resize-vertical__48-50.svg
new file mode 100644
index 00000000..73149d2e
--- /dev/null
+++ b/src/assets/cursors/windows11/resize-vertical__48-50.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/text__50-50.svg b/src/assets/cursors/windows11/text__50-50.svg
new file mode 100644
index 00000000..bf38ba24
--- /dev/null
+++ b/src/assets/cursors/windows11/text__50-50.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/up__49-21.svg b/src/assets/cursors/windows11/up__49-21.svg
new file mode 100644
index 00000000..f87afc9d
--- /dev/null
+++ b/src/assets/cursors/windows11/up__49-21.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/cursors/windows11/wait__50-50.svg b/src/assets/cursors/windows11/wait__50-50.svg
new file mode 100644
index 00000000..cb00c79e
--- /dev/null
+++ b/src/assets/cursors/windows11/wait__50-50.svg
@@ -0,0 +1,39 @@
+
diff --git a/src/assets/cursors/windows11/zoom-in__44-44.svg b/src/assets/cursors/windows11/zoom-in__44-44.svg
new file mode 100644
index 00000000..b0535098
--- /dev/null
+++ b/src/assets/cursors/windows11/zoom-in__44-44.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/assets/cursors/windows11/zoom-out__44-44.svg b/src/assets/cursors/windows11/zoom-out__44-44.svg
new file mode 100644
index 00000000..5bfec5cb
--- /dev/null
+++ b/src/assets/cursors/windows11/zoom-out__44-44.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/components/launch/UpdateToastWindow.tsx b/src/components/launch/UpdateToastWindow.tsx
index 13e96478..9716ed30 100644
--- a/src/components/launch/UpdateToastWindow.tsx
+++ b/src/components/launch/UpdateToastWindow.tsx
@@ -151,7 +151,9 @@ export function UpdateToastWindow() {
return (
-
+
@@ -175,7 +177,10 @@ export function UpdateToastWindow() {
{payload.phase === "downloading" ? (
{progress}%
@@ -184,10 +189,18 @@ export function UpdateToastWindow() {
) : (
-
diff --git a/src/components/video-editor/SettingsPanel.tsx b/src/components/video-editor/SettingsPanel.tsx
index de5255e3..1f998e98 100644
--- a/src/components/video-editor/SettingsPanel.tsx
+++ b/src/components/video-editor/SettingsPanel.tsx
@@ -688,6 +688,7 @@ const BUILTIN_CURSOR_STYLE_OPTIONS: CursorStyleOption[] = [
{ value: "macos", label: "macOS" },
{ value: "tahoe", label: "Tahoe" },
{ value: "tahoe-inverted", label: "Tahoe Inverted" },
+ { value: "windows11", label: "Windows 11" },
{ value: "dot", label: "Dot" },
{ value: "figma", label: "Minimal" },
];
@@ -871,13 +872,20 @@ function CursorStylePreview({
? (previewUrls.macos ?? tahoeCursorUrl)
: style === "tahoe"
? (previewUrls.tahoe ?? tahoeCursorUrl)
- : style === "figma"
- ? (previewUrls.figma ?? minimalCursorUrl)
- : style === "tahoe-inverted"
- ? (previewUrls["tahoe-inverted"] ?? tahoeCursorUrl)
- : previewUrls[style];
+ : style === "windows11"
+ ? (previewUrls.windows11 ?? tahoeCursorUrl)
+ : style === "figma"
+ ? (previewUrls.figma ?? minimalCursorUrl)
+ : style === "tahoe-inverted"
+ ? (previewUrls["tahoe-inverted"] ?? tahoeCursorUrl)
+ : previewUrls[style];
- if (style === "macos" || style === "tahoe" || style === "tahoe-inverted") {
+ if (
+ style === "macos" ||
+ style === "tahoe" ||
+ style === "tahoe-inverted" ||
+ style === "windows11"
+ ) {
const resolvedPreviewSize =
(previewSize ?? BUILTIN_CURSOR_PREVIEW_SIZE) * getCursorStyleSizeMultiplier(style);
return (
@@ -1238,6 +1246,7 @@ export function SettingsPanel({
try {
const macosPreview = cursorSetAssets.macos.arrow.url;
const tahoePreview = cursorSetAssets.tahoe.arrow.url;
+ const windows11Preview = cursorSetAssets.windows11.arrow.url;
const minimalPreview = await createTrimmedSvgPreview(minimalCursorUrl, 512);
const invertedPreview = await createInvertedPreview(tahoePreview);
@@ -1245,6 +1254,7 @@ export function SettingsPanel({
setBuiltInCursorPreviewUrls({
macos: macosPreview,
tahoe: tahoePreview,
+ windows11: windows11Preview,
figma: minimalPreview,
"tahoe-inverted": invertedPreview,
});
@@ -1254,6 +1264,7 @@ export function SettingsPanel({
setBuiltInCursorPreviewUrls({
macos: tahoeCursorUrl,
tahoe: tahoeCursorUrl,
+ windows11: tahoeCursorUrl,
figma: minimalCursorUrl,
"tahoe-inverted": tahoeCursorUrl,
});
diff --git a/src/components/video-editor/cursorMotionPresets.ts b/src/components/video-editor/cursorMotionPresets.ts
index 22f2dc67..57283c2a 100644
--- a/src/components/video-editor/cursorMotionPresets.ts
+++ b/src/components/video-editor/cursorMotionPresets.ts
@@ -33,7 +33,7 @@ const SHARED_CURSOR_PRESET_VALUES = {
cursorSize: 2.5,
cursorSmoothing: 0.67,
cursorSpringMassMultiplier: 1.29,
- cursorClickBounce: 3.5,
+ cursorClickBounce: 2,
cursorClickBounceDuration: 350,
} as const;
diff --git a/src/components/video-editor/types.ts b/src/components/video-editor/types.ts
index 253cf52f..0b75c0e4 100644
--- a/src/components/video-editor/types.ts
+++ b/src/components/video-editor/types.ts
@@ -55,7 +55,14 @@ export interface CursorVisualSettings {
style: CursorStyle;
}
-export type CursorStyle = "macos" | "tahoe" | "tahoe-inverted" | "dot" | "figma" | (string & {});
+export type CursorStyle =
+ | "macos"
+ | "tahoe"
+ | "tahoe-inverted"
+ | "windows11"
+ | "dot"
+ | "figma"
+ | (string & {});
export const DEFAULT_CURSOR_STYLE: CursorStyle = "tahoe";
export type CursorClickEffectStyle = "none" | "spotlight" | "ripple" | "echo";
@@ -148,7 +155,7 @@ export interface WebcamOverlaySettings {
export const DEFAULT_CURSOR_SIZE = 3.0;
export const DEFAULT_CURSOR_SMOOTHING = 0.67;
export const DEFAULT_CURSOR_MOTION_BLUR = 0.6;
-export const DEFAULT_CURSOR_CLICK_BOUNCE = 2.5;
+export const DEFAULT_CURSOR_CLICK_BOUNCE = 2;
export const DEFAULT_CURSOR_CLICK_BOUNCE_DURATION = 350;
export const DEFAULT_CURSOR_SWAY = 0.4;
export const DEFAULT_ZOOM_SMOOTHNESS = 0.5;
diff --git a/src/components/video-editor/videoPlayback/cursorRenderer.ts b/src/components/video-editor/videoPlayback/cursorRenderer.ts
index def88661..7988c857 100644
--- a/src/components/video-editor/videoPlayback/cursorRenderer.ts
+++ b/src/components/video-editor/videoPlayback/cursorRenderer.ts
@@ -29,7 +29,7 @@ import { cursorSetAssets, getCursorStyleSizeMultiplier } from "./uploadedCursorA
import { computeDirectionalMotionBlur } from "./zoomTransform";
type CursorAssetKey = NonNullable
;
-type StatefulCursorStyle = Extract;
+type StatefulCursorStyle = Extract;
type SingleCursorStyle = Extract;
type CursorPackStyle = Exclude;
type CursorPackVariant = "default" | "pointer";
@@ -125,6 +125,7 @@ const CURSOR_SHADOW_OFFSET_X = 0;
const CURSOR_SHADOW_OFFSET_Y = 2;
const CURSOR_SHADOW_BLUR = 3;
const CURSOR_SHADOW_PADDING = 12;
+const MIN_RASTERIZED_CURSOR_HEIGHT = 512;
const NATIVE_CURSOR_ATLAS_DRAW_HEIGHT = 256;
const NATIVE_CURSOR_ATLAS_PADDING = 2;
@@ -191,7 +192,12 @@ function buildCursorPackSourcesSignature(sources: Record {
const image = await loadImage(url);
const sourceCanvas = document.createElement("canvas");
- sourceCanvas.width = image.naturalWidth;
- sourceCanvas.height = image.naturalHeight;
+ const rasterScale =
+ image.naturalHeight > 0
+ ? Math.max(1, MIN_RASTERIZED_CURSOR_HEIGHT / image.naturalHeight)
+ : 1;
+ sourceCanvas.width = Math.max(1, Math.round(image.naturalWidth * rasterScale));
+ sourceCanvas.height = Math.max(1, Math.round(image.naturalHeight * rasterScale));
const sourceCtx = sourceCanvas.getContext("2d");
if (!sourceCtx) {
await Assets.load(url);
@@ -293,7 +304,21 @@ async function createRasterizedCursorAsset(
}
sourceCtx.clearRect(0, 0, sourceCanvas.width, sourceCanvas.height);
- sourceCtx.drawImage(image, 0, 0);
+ sourceCtx.drawImage(image, 0, 0, sourceCanvas.width, sourceCanvas.height);
+
+ if (options.preserveCanvas) {
+ const dataUrl = sourceCanvas.toDataURL("image/png");
+ await Assets.load(dataUrl);
+ const rasterizedImage = await loadImage(dataUrl);
+ const texture = configureCursorTexture(Texture.from(dataUrl));
+ return {
+ texture,
+ image: rasterizedImage,
+ aspectRatio: sourceCanvas.height > 0 ? sourceCanvas.width / sourceCanvas.height : 1,
+ anchorX: clamp(anchor.x, 0, 1),
+ anchorY: clamp(anchor.y, 0, 1),
+ };
+ }
const trimmed = trimCanvasToAlpha(sourceCanvas, {
x: sourceCanvas.width * clamp(anchor.x, 0, 1),
@@ -546,6 +571,7 @@ export async function preloadCursorAssets() {
const asset = await createRasterizedCursorAsset(
sourceAsset.url,
sourceAsset.fallbackAnchor,
+ { preserveCanvas: sourceAsset.preserveCanvas },
);
return [key, asset] as const;
@@ -564,9 +590,10 @@ export async function preloadCursorAssets() {
) as Partial>;
}
- const [macosAssets, tahoeAssets] = await Promise.all([
+ const [macosAssets, tahoeAssets, windows11Assets] = await Promise.all([
loadCursorSet("macos"),
loadCursorSet("tahoe"),
+ loadCursorSet("windows11"),
]);
const invertedEntries = await Promise.all(
@@ -578,6 +605,7 @@ export async function preloadCursorAssets() {
loadedCursorSetAssets = {
macos: macosAssets,
tahoe: tahoeAssets,
+ windows11: windows11Assets,
"tahoe-inverted": Object.fromEntries(invertedEntries) as Partial<
Record
>,
diff --git a/src/components/video-editor/videoPlayback/uploadedCursorAssets.ts b/src/components/video-editor/videoPlayback/uploadedCursorAssets.ts
index df2e55b0..b726301a 100644
--- a/src/components/video-editor/videoPlayback/uploadedCursorAssets.ts
+++ b/src/components/video-editor/videoPlayback/uploadedCursorAssets.ts
@@ -16,15 +16,26 @@ import tahoeArrowUrl from "../../../assets/cursors/tahoe/pointer-1__14-6.svg";
import tahoePointerUrl from "../../../assets/cursors/tahoe/pointinghand-1__40-10.svg";
import tahoeResizeEwUrl from "../../../assets/cursors/tahoe/resizeeastwest-1__50-50.svg";
import tahoeResizeNsUrl from "../../../assets/cursors/tahoe/resizenorthsouth-1__50-49.svg";
+import windows11ArrowUrl from "../../../assets/cursors/windows11/arrow__31-22.svg";
+import windows11ClosedHandUrl from "../../../assets/cursors/windows11/grabbing__50-50.svg";
+import windows11CrosshairUrl from "../../../assets/cursors/windows11/cross__50-50.svg";
+import windows11NotAllowedUrl from "../../../assets/cursors/windows11/block__50-50.svg";
+import windows11OpenHandUrl from "../../../assets/cursors/windows11/grab__50-50.svg";
+import windows11PointerUrl from "../../../assets/cursors/windows11/pointer__54-35.svg";
+import windows11ResizeEwUrl from "../../../assets/cursors/windows11/resize-horizontal__51-49.svg";
+import windows11ResizeNsUrl from "../../../assets/cursors/windows11/resize-vertical__48-50.svg";
+import windows11TextUrl from "../../../assets/cursors/windows11/text__50-50.svg";
import type { CursorStyle, CursorTelemetryPoint } from "../types";
type CursorAssetKey = NonNullable;
-type CursorSetStyle = Extract;
+type CursorSetStyle = Extract;
const MACOS_POINTER_ASSET_HEIGHT = 746;
const MACOS_POINTER_CONTENT_HEIGHT = 386;
const TAHOE_POINTER_ASSET_HEIGHT = 958;
const TAHOE_POINTER_CONTENT_HEIGHT = 851;
+const WINDOWS11_CURSOR_VIEWBOX_HEIGHT = 32;
+const WINDOWS11_ARROW_CONTENT_HEIGHT = 18;
// Measured from the raw pointer assets using the non-shadow pixel bounds.
const MACOS_CURSOR_STYLE_SIZE_MULTIPLIER =
@@ -38,15 +49,22 @@ export type UploadedCursorAsset = {
x: number;
y: number;
};
+ preserveCanvas?: boolean;
};
-function asset(url: string, hotspotX: number, hotspotY: number): UploadedCursorAsset {
+function asset(
+ url: string,
+ hotspotX: number,
+ hotspotY: number,
+ options: Pick = {},
+): UploadedCursorAsset {
return {
url,
fallbackAnchor: {
x: hotspotX / 100,
y: hotspotY / 100,
},
+ ...options,
};
}
@@ -76,12 +94,24 @@ export const cursorSetAssets: Record<
"resize-ns": asset(tahoeResizeNsUrl, 50, 49),
"not-allowed": asset(tahoeNotAllowedUrl, 23, 0),
},
+ windows11: {
+ arrow: asset(windows11ArrowUrl, 31, 22, { preserveCanvas: true }),
+ text: asset(windows11TextUrl, 50, 50, { preserveCanvas: true }),
+ pointer: asset(windows11PointerUrl, 54, 35, { preserveCanvas: true }),
+ crosshair: asset(windows11CrosshairUrl, 50, 50, { preserveCanvas: true }),
+ "open-hand": asset(windows11OpenHandUrl, 50, 50, { preserveCanvas: true }),
+ "closed-hand": asset(windows11ClosedHandUrl, 50, 50, { preserveCanvas: true }),
+ "resize-ew": asset(windows11ResizeEwUrl, 51, 49, { preserveCanvas: true }),
+ "resize-ns": asset(windows11ResizeNsUrl, 48, 50, { preserveCanvas: true }),
+ "not-allowed": asset(windows11NotAllowedUrl, 50, 50, { preserveCanvas: true }),
+ },
};
export const cursorStyleSizeMultipliers: Record = {
macos: MACOS_CURSOR_STYLE_SIZE_MULTIPLIER,
tahoe: 1,
"tahoe-inverted": 1,
+ windows11: WINDOWS11_CURSOR_VIEWBOX_HEIGHT / WINDOWS11_ARROW_CONTENT_HEIGHT,
};
export function getCursorStyleSizeMultiplier(style: CursorStyle) {
diff --git a/src/i18n/locales/de/settings.json b/src/i18n/locales/de/settings.json
index 485e7095..6d5bac29 100644
--- a/src/i18n/locales/de/settings.json
+++ b/src/i18n/locales/de/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe invertiert",
+ "windows11": "Windows 11",
"dot": "Punkt",
"figma": "Minimal",
"lavender": "Lavender",
diff --git a/src/i18n/locales/en/settings.json b/src/i18n/locales/en/settings.json
index 65cb98fb..31953838 100644
--- a/src/i18n/locales/en/settings.json
+++ b/src/i18n/locales/en/settings.json
@@ -41,6 +41,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe Inverted",
+ "windows11": "Windows 11",
"dot": "Dot",
"figma": "Minimal",
"lavender": "Lavender",
diff --git a/src/i18n/locales/es/settings.json b/src/i18n/locales/es/settings.json
index 2e346fc8..3690c13c 100644
--- a/src/i18n/locales/es/settings.json
+++ b/src/i18n/locales/es/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe invertido",
+ "windows11": "Windows 11",
"dot": "Punto",
"figma": "Minimal",
"lavender": "Lavender",
diff --git a/src/i18n/locales/fr/settings.json b/src/i18n/locales/fr/settings.json
index 5b957a0a..59b1e770 100644
--- a/src/i18n/locales/fr/settings.json
+++ b/src/i18n/locales/fr/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe inversé",
+ "windows11": "Windows 11",
"dot": "Point",
"figma": "Minimal",
"lavender": "Lavande",
diff --git a/src/i18n/locales/it/settings.json b/src/i18n/locales/it/settings.json
index e96a3725..4a00e1db 100644
--- a/src/i18n/locales/it/settings.json
+++ b/src/i18n/locales/it/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe invertito",
+ "windows11": "Windows 11",
"dot": "Punto",
"figma": "Minimal",
"lavender": "Lavanda",
diff --git a/src/i18n/locales/ko/settings.json b/src/i18n/locales/ko/settings.json
index ae22fe11..1c95bf2a 100644
--- a/src/i18n/locales/ko/settings.json
+++ b/src/i18n/locales/ko/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe Inverted",
+ "windows11": "Windows 11",
"dot": "Dot",
"figma": "Minimal",
"lavender": "Lavender",
diff --git a/src/i18n/locales/nl/settings.json b/src/i18n/locales/nl/settings.json
index 0dd527b4..31eeec7a 100644
--- a/src/i18n/locales/nl/settings.json
+++ b/src/i18n/locales/nl/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe omgekeerd",
+ "windows11": "Windows 11",
"dot": "Punt",
"figma": "Minimaal",
"lavender": "Lavendel",
diff --git a/src/i18n/locales/pt-BR/settings.json b/src/i18n/locales/pt-BR/settings.json
index 223c1e92..2e4bcf62 100644
--- a/src/i18n/locales/pt-BR/settings.json
+++ b/src/i18n/locales/pt-BR/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe invertido",
+ "windows11": "Windows 11",
"dot": "Dot",
"figma": "Minimal",
"lavender": "Lavender",
diff --git a/src/i18n/locales/ru/settings.json b/src/i18n/locales/ru/settings.json
index 8bb1161c..0d65dd89 100644
--- a/src/i18n/locales/ru/settings.json
+++ b/src/i18n/locales/ru/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe (инверсия)",
+ "windows11": "Windows 11",
"dot": "Точка",
"figma": "Минималистичный",
"lavender": "Лаванда",
diff --git a/src/i18n/locales/zh-CN/settings.json b/src/i18n/locales/zh-CN/settings.json
index 6282016c..e07f4cf9 100644
--- a/src/i18n/locales/zh-CN/settings.json
+++ b/src/i18n/locales/zh-CN/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe 反相",
+ "windows11": "Windows 11",
"dot": "圆点",
"figma": "Minimal",
"lavender": "Lavender",
diff --git a/src/i18n/locales/zh-TW/settings.json b/src/i18n/locales/zh-TW/settings.json
index f5028769..1e4d6e6d 100644
--- a/src/i18n/locales/zh-TW/settings.json
+++ b/src/i18n/locales/zh-TW/settings.json
@@ -35,6 +35,7 @@
"macos": "macOS",
"tahoe": "Tahoe",
"tahoe-inverted": "Tahoe 反相",
+ "windows11": "Windows 11",
"dot": "圓點",
"figma": "極簡",
"lavender": "Lavender",