Keep browser sign-ins across tabs and restarts (#2089)

* feat(desktop): share persistent browser data across tabs

Keep browser sign-ins and site storage across tabs and app restarts, with a Settings action to clear the shared profile.

* fix(settings): prevent duplicate browser data clears

* fix(desktop): complete browser data cleanup

Clear legacy per-tab profiles after upgrades and localize the browser data settings in every supported language.

* fix(desktop): close browser profile cleanup races
This commit is contained in:
Mohamed Boudra
2026-07-16 00:40:24 +08:00
committed by GitHub
parent 9423b091b9
commit 328361667f
32 changed files with 1413 additions and 148 deletions
+11
View File
@@ -1488,6 +1488,17 @@ export const ar: TranslationResources = {
},
general: {
title: "عام",
browserData: {
title: "بيانات المتصفح",
siteData: "ملفات تعريف الارتباط وبيانات المواقع",
description: "تتشارك علامات تبويب المتصفح تسجيلات الدخول وبيانات المواقع عبر Paseo.",
clear: "مسح بيانات المتصفح",
clearing: "جارٍ المسح...",
confirmTitle: "هل تريد مسح بيانات المتصفح؟",
confirmMessage: "سيتم تسجيل خروجك من المواقع وإعادة تحميل علامات تبويب المتصفح المفتوحة.",
success: "تم مسح بيانات المتصفح.",
error: "تعذر مسح بيانات المتصفح.",
},
defaultSend: {
label: "إرسال افتراضي",
descriptions: {
+11
View File
@@ -1496,6 +1496,17 @@ export const en = {
},
general: {
title: "General",
browserData: {
title: "Browser data",
siteData: "Cookies and site data",
description: "Browser tabs share sign-ins and site data across Paseo.",
clear: "Clear browser data",
clearing: "Clearing...",
confirmTitle: "Clear browser data?",
confirmMessage: "Sites will be signed out and open browser tabs will reload.",
success: "Browser data cleared.",
error: "Couldn't clear browser data.",
},
defaultSend: {
label: "Default send",
descriptions: {
+13
View File
@@ -1527,6 +1527,19 @@ export const es: TranslationResources = {
},
general: {
title: "General",
browserData: {
title: "Datos del navegador",
siteData: "Cookies y datos de sitios",
description:
"Las pestañas del navegador comparten inicios de sesión y datos de sitios en Paseo.",
clear: "Borrar datos del navegador",
clearing: "Borrando...",
confirmTitle: "¿Borrar los datos del navegador?",
confirmMessage:
"Se cerrarán las sesiones de los sitios y se recargarán las pestañas abiertas del navegador.",
success: "Datos del navegador borrados.",
error: "No se pudieron borrar los datos del navegador.",
},
defaultSend: {
label: "Envío predeterminado",
descriptions: {
+12
View File
@@ -1530,6 +1530,18 @@ export const fr: TranslationResources = {
},
general: {
title: "Général",
browserData: {
title: "Données du navigateur",
siteData: "Cookies et données des sites",
description:
"Les onglets du navigateur partagent les connexions et les données des sites dans Paseo.",
clear: "Effacer les données du navigateur",
clearing: "Effacement...",
confirmTitle: "Effacer les données du navigateur ?",
confirmMessage: "Vous serez déconnecté des sites et les onglets ouverts seront rechargés.",
success: "Données du navigateur effacées.",
error: "Impossible d'effacer les données du navigateur.",
},
defaultSend: {
label: "Envoi par défaut",
descriptions: {
+11
View File
@@ -1505,6 +1505,17 @@ export const ja: TranslationResources = {
},
general: {
title: "一般",
browserData: {
title: "ブラウザーデータ",
siteData: "Cookie とサイトデータ",
description: "ブラウザータブ間でログイン情報とサイトデータが共有されます。",
clear: "ブラウザーデータを消去",
clearing: "消去中...",
confirmTitle: "ブラウザーデータを消去しますか?",
confirmMessage: "サイトからログアウトし、開いているブラウザータブを再読み込みします。",
success: "ブラウザーデータを消去しました。",
error: "ブラウザーデータを消去できませんでした。",
},
defaultSend: {
label: "デフォルトの送信",
descriptions: {
+12
View File
@@ -1513,6 +1513,18 @@ export const ptBR: TranslationResources = {
},
general: {
title: "Geral",
browserData: {
title: "Dados do navegador",
siteData: "Cookies e dados de sites",
description: "As abas do navegador compartilham logins e dados de sites no Paseo.",
clear: "Limpar dados do navegador",
clearing: "Limpando...",
confirmTitle: "Limpar dados do navegador?",
confirmMessage:
"Você será desconectado dos sites e as abas abertas do navegador serão recarregadas.",
success: "Dados do navegador limpos.",
error: "Não foi possível limpar os dados do navegador.",
},
defaultSend: {
label: "Envio padrão",
descriptions: {
+12
View File
@@ -1519,6 +1519,18 @@ export const ru: TranslationResources = {
},
general: {
title: "Общий",
browserData: {
title: "Данные браузера",
siteData: "Файлы cookie и данные сайтов",
description: "Вкладки браузера используют общие данные входа и данные сайтов в Paseo.",
clear: "Очистить данные браузера",
clearing: "Очистка...",
confirmTitle: "Очистить данные браузера?",
confirmMessage:
"На сайтах будет выполнен выход, а открытые вкладки браузера перезагрузятся.",
success: "Данные браузера очищены.",
error: "Не удалось очистить данные браузера.",
},
defaultSend: {
label: "Отправка по умолчанию",
descriptions: {
+11
View File
@@ -1472,6 +1472,17 @@ export const zhCN: TranslationResources = {
},
general: {
title: "通用",
browserData: {
title: "浏览器数据",
siteData: "Cookie 和网站数据",
description: "浏览器标签页在 Paseo 中共享登录状态和网站数据。",
clear: "清除浏览器数据",
clearing: "正在清除...",
confirmTitle: "清除浏览器数据?",
confirmMessage: "网站帐号将退出登录,打开的浏览器标签页将重新加载。",
success: "浏览器数据已清除。",
error: "无法清除浏览器数据。",
},
defaultSend: {
label: "默认发送",
descriptions: {