From a149309ae64ea63554d84d4a75d809c821961d93 Mon Sep 17 00:00:00 2001 From: trevor-signal <131492920+trevor-signal@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:25:22 -0500 Subject: [PATCH] Align chat color gradients to backup definitions --- ts/services/backups/export.preload.ts | 7 ++++++- ts/services/backups/import.preload.ts | 11 ++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ts/services/backups/export.preload.ts b/ts/services/backups/export.preload.ts index b9b8621790..b2f0a1e6a0 100644 --- a/ts/services/backups/export.preload.ts +++ b/ts/services/backups/export.preload.ts @@ -3347,12 +3347,17 @@ export class BackupExportStream extends Readable { color.end.lightness ); + // Desktop uses a different angle convention than the backup proto. Our degrees + // rotate in the opposite direction (sadly!) and our start is shifted by 90 + // degrees + const backupAngle = 360 - ((color.deg ?? 0) + 90); + result.push({ id, gradient: { colors: [start, end], positions: [0, 1], - angle: color.deg, + angle: (backupAngle + 360) % 360, }, }); } diff --git a/ts/services/backups/import.preload.ts b/ts/services/backups/import.preload.ts index ee08b56ec5..1c75bd5db0 100644 --- a/ts/services/backups/import.preload.ts +++ b/ts/services/backups/import.preload.ts @@ -3944,16 +3944,21 @@ export class BackupImportStream extends Writable { const start = color.gradient.colors.at(0); const end = color.gradient.colors.at(-1); - const deg = color.gradient.angle; + const backupAngle = color.gradient.angle; strictAssert(start != null, 'Missing start color'); strictAssert(end != null, 'Missing end color'); - strictAssert(deg != null, 'Missing angle'); + strictAssert(backupAngle != null, 'Missing angle'); + + // Desktop uses a different angle convention than the backup proto. Our degrees + // rotate in the opposite direction (sadly!) and our start is shifted by 90 + // degrees + const desktopAngle = 360 - backupAngle - 90; value = { start: rgbIntToDesktopHSL(start), end: rgbIntToDesktopHSL(end), - deg, + deg: (desktopAngle + 360) % 360, }; } else { log.error(