@oxy.so/core 1.12.1 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/crypto/webIdentityCarrier.js +1 -1
  3. package/dist/cjs/i18n/locales/ar-SA.json +33 -88
  4. package/dist/cjs/i18n/locales/ca-ES.json +35 -90
  5. package/dist/cjs/i18n/locales/de-DE.json +33 -88
  6. package/dist/cjs/i18n/locales/en-US.json +45 -141
  7. package/dist/cjs/i18n/locales/es-ES.json +44 -140
  8. package/dist/cjs/i18n/locales/fr-FR.json +33 -88
  9. package/dist/cjs/i18n/locales/it-IT.json +33 -88
  10. package/dist/cjs/i18n/locales/ja-JP.json +33 -88
  11. package/dist/cjs/i18n/locales/ko-KR.json +33 -88
  12. package/dist/cjs/i18n/locales/locales/ar-SA.json +33 -88
  13. package/dist/cjs/i18n/locales/locales/ca-ES.json +35 -90
  14. package/dist/cjs/i18n/locales/locales/de-DE.json +33 -88
  15. package/dist/cjs/i18n/locales/locales/en-US.json +45 -141
  16. package/dist/cjs/i18n/locales/locales/es-ES.json +44 -140
  17. package/dist/cjs/i18n/locales/locales/fr-FR.json +33 -88
  18. package/dist/cjs/i18n/locales/locales/it-IT.json +33 -88
  19. package/dist/cjs/i18n/locales/locales/ja-JP.json +33 -88
  20. package/dist/cjs/i18n/locales/locales/ko-KR.json +33 -88
  21. package/dist/cjs/i18n/locales/locales/pt-PT.json +33 -88
  22. package/dist/cjs/i18n/locales/locales/zh-CN.json +34 -89
  23. package/dist/cjs/i18n/locales/pt-PT.json +33 -88
  24. package/dist/cjs/i18n/locales/zh-CN.json +34 -89
  25. package/dist/cjs/index.js +10 -7
  26. package/dist/cjs/mixins/OxyServices.utility.js +140 -0
  27. package/dist/cjs/server/securityHeaders.js +19 -1
  28. package/dist/cjs/session/accountDialogController.js +37 -142
  29. package/dist/cjs/utils/authWebUrl.js +7 -6
  30. package/dist/cjs/utils/oauthPkce.js +5 -1
  31. package/dist/esm/.tsbuildinfo +1 -1
  32. package/dist/esm/crypto/webIdentityCarrier.js +1 -1
  33. package/dist/esm/i18n/locales/ar-SA.json +33 -88
  34. package/dist/esm/i18n/locales/ca-ES.json +35 -90
  35. package/dist/esm/i18n/locales/de-DE.json +33 -88
  36. package/dist/esm/i18n/locales/en-US.json +45 -141
  37. package/dist/esm/i18n/locales/es-ES.json +44 -140
  38. package/dist/esm/i18n/locales/fr-FR.json +33 -88
  39. package/dist/esm/i18n/locales/it-IT.json +33 -88
  40. package/dist/esm/i18n/locales/ja-JP.json +33 -88
  41. package/dist/esm/i18n/locales/ko-KR.json +33 -88
  42. package/dist/esm/i18n/locales/locales/ar-SA.json +33 -88
  43. package/dist/esm/i18n/locales/locales/ca-ES.json +35 -90
  44. package/dist/esm/i18n/locales/locales/de-DE.json +33 -88
  45. package/dist/esm/i18n/locales/locales/en-US.json +45 -141
  46. package/dist/esm/i18n/locales/locales/es-ES.json +44 -140
  47. package/dist/esm/i18n/locales/locales/fr-FR.json +33 -88
  48. package/dist/esm/i18n/locales/locales/it-IT.json +33 -88
  49. package/dist/esm/i18n/locales/locales/ja-JP.json +33 -88
  50. package/dist/esm/i18n/locales/locales/ko-KR.json +33 -88
  51. package/dist/esm/i18n/locales/locales/pt-PT.json +33 -88
  52. package/dist/esm/i18n/locales/locales/zh-CN.json +34 -89
  53. package/dist/esm/i18n/locales/pt-PT.json +33 -88
  54. package/dist/esm/i18n/locales/zh-CN.json +34 -89
  55. package/dist/esm/index.js +2 -1
  56. package/dist/esm/mixins/OxyServices.utility.js +138 -0
  57. package/dist/esm/server/securityHeaders.js +19 -1
  58. package/dist/esm/session/accountDialogController.js +37 -142
  59. package/dist/esm/utils/authWebUrl.js +6 -5
  60. package/dist/esm/utils/oauthPkce.js +5 -1
  61. package/dist/types/.tsbuildinfo +1 -1
  62. package/dist/types/crypto/webIdentityCarrier.d.ts +1 -1
  63. package/dist/types/index.d.ts +5 -3
  64. package/dist/types/mixins/OxyServices.utility.d.ts +84 -1
  65. package/dist/types/server/requesterAssertion.d.ts +2 -2
  66. package/dist/types/server/securityHeaders.d.ts +9 -12
  67. package/dist/types/session/accountDialogController.d.ts +29 -98
  68. package/dist/types/utils/authWebUrl.d.ts +6 -5
  69. package/dist/types/utils/oauthPkce.d.ts +10 -0
  70. package/package.json +2 -2
  71. package/src/crypto/webIdentityCarrier.ts +1 -1
  72. package/src/i18n/locales/ar-SA.json +33 -88
  73. package/src/i18n/locales/ca-ES.json +35 -90
  74. package/src/i18n/locales/de-DE.json +33 -88
  75. package/src/i18n/locales/en-US.json +45 -141
  76. package/src/i18n/locales/es-ES.json +44 -140
  77. package/src/i18n/locales/fr-FR.json +33 -88
  78. package/src/i18n/locales/it-IT.json +33 -88
  79. package/src/i18n/locales/ja-JP.json +33 -88
  80. package/src/i18n/locales/ko-KR.json +33 -88
  81. package/src/i18n/locales/pt-PT.json +33 -88
  82. package/src/i18n/locales/zh-CN.json +34 -89
  83. package/src/index.ts +9 -3
  84. package/src/mixins/OxyServices.utility.ts +208 -0
  85. package/src/mixins/__tests__/accountEvents.test.ts +158 -0
  86. package/src/server/__tests__/securityHeaders.test.ts +17 -0
  87. package/src/server/securityHeaders.ts +29 -1
  88. package/src/session/__tests__/accountDialogController.test.ts +42 -184
  89. package/src/session/accountDialogController.ts +50 -185
  90. package/src/utils/__tests__/oauthPkce.test.ts +7 -0
  91. package/src/utils/authWebUrl.ts +6 -5
  92. package/src/utils/oauthPkce.ts +16 -1
@@ -1,66 +1,56 @@
1
1
  {
2
2
  "signin": {
3
- "title": "Sign In",
4
- "subtitle": "Sign in to continue your journey",
3
+ "title": "Sign in",
4
+ "subtitle": "Use your Oxy account",
5
5
  "chooser": {
6
6
  "title": "Choose an account",
7
7
  "subtitle": "Continue as an account below, or use another.",
8
- "signedIn": "Signed in",
9
8
  "useAnother": "Use another account",
10
- "continueAs": "Continue as {{name}}"
9
+ "continueAs": "Continue as {{name}}",
10
+ "subtitleToApp": "to continue to {{app}}"
11
11
  },
12
- "addAccountTitle": "Add Another Account",
12
+ "addAccountTitle": "Add another account",
13
13
  "addAccountSubtitle": "Sign in with another account",
14
14
  "username": {
15
15
  "label": "Username",
16
- "placeholder": "Enter your username",
17
- "helper": "3-30 characters, letters and numbers only",
18
- "required": "Please enter your username.",
19
- "minLength": "Username must be at least 3 characters."
20
- },
21
- "password": {
22
- "label": "Password",
23
- "placeholder": "Enter your password",
24
- "required": "Please enter your password.",
25
- "hint": "Enter your password to sign in"
16
+ "placeholder": "yourname",
17
+ "required": "Please enter your username."
26
18
  },
27
19
  "actions": {
28
20
  "continue": "Continue",
29
- "back": "Back",
30
- "signIn": "Sign In",
31
- "verify": "Verify",
32
- "openAccountSwitcher": "Switch to another account",
33
- "openAccountSwitcherSubtitle": "{{count}} other accounts available",
34
- "openAccountSwitcherSubtitle_singular": "1 other account available",
35
- "openAccountSwitcherSubtitle_zero": "Review your saved accounts",
36
- "manageAccounts": "Manage saved accounts",
37
- "manageAccountsSubtitle": "Review sessions, remove or sign out",
38
- "loadingOtherAccounts": "Loading other accounts…",
39
- "switchAccountFailed": "We couldn’t switch accounts. Please try again."
40
- },
41
- "forgotPrompt": "Forgot your password?",
42
- "security": {
43
- "dataSecure": "Your data is encrypted and secure"
44
- },
45
- "currentlySignedInAs": "Currently signed in as",
46
- "alreadySignedInWith": "Already signed in with",
47
- "alreadySignedIn": "Already signed in",
48
- "alreadySignedInMessage": "This account is already signed in. Continue with this account?",
49
- "continueWithAccount": "Continue",
50
- "currentAccount": "Current",
51
- "or": "or",
52
- "viewAllAccounts": "View {{count}} more",
21
+ "back": "Back"
22
+ },
53
23
  "createAccountLink": "New to Oxy? Create one",
54
24
  "status": {
55
- "accountSwitched": "Now using {{name}}",
56
25
  "signingIn": "Signing in…"
57
26
  },
58
27
  "errors": {
59
28
  "notConfigured": "Sign-in isn't available",
60
29
  "notConfiguredDescription": "{{app}} isn't set up for sign-in yet. Contact the app's developer.",
61
30
  "failed": "Couldn't start sign-in",
62
- "failedDescription": "Something went wrong. Please try again."
63
- }
31
+ "failedDescription": "Something went wrong. Please try again.",
32
+ "rateLimited": "Too many attempts. Try again in {{seconds}}s.",
33
+ "passkeyCancelled": "Passkey prompt dismissed. Try again when you're ready.",
34
+ "passkeyFailed": "Couldn't complete the passkey. Please try again."
35
+ },
36
+ "subtitleToApp": "to continue to {{app}}",
37
+ "orContinueWith": "or continue with",
38
+ "qr": {
39
+ "caption": "Scan with Commons to sign in",
40
+ "renew": "Show a new code"
41
+ },
42
+ "methods": {
43
+ "passkey": "Sign in with a passkey"
44
+ },
45
+ "terms": {
46
+ "before": "By continuing, you agree to our",
47
+ "termsLink": "Terms of Service",
48
+ "and": "and",
49
+ "privacyLink": "Privacy Policy"
50
+ },
51
+ "noAccount": "Don't have an account?",
52
+ "createAccount": "Create account",
53
+ "recoverLink": "Lost your passkey? Recover your account"
64
54
  },
65
55
  "signup": {
66
56
  "title": "Create your account",
@@ -68,59 +58,7 @@
68
58
  "createInCommons": "Create your identity in Commons",
69
59
  "createAccount": "Create account",
70
60
  "backToSignInLink": "Already have an account? Sign in",
71
- "welcome": {
72
- "title": "Welcome to Oxy!",
73
- "subtitle": "Let's create your account in just a few steps",
74
- "haveAccount": "Already have an account?",
75
- "signInCta": "Sign in"
76
- },
77
- "identity": {
78
- "title": "Who are you?",
79
- "subtitle": "Choose your username and enter your email"
80
- },
81
- "username": {
82
- "helper": "3-30 characters, letters and numbers only",
83
- "required": "Please enter a username",
84
- "minLength": "Username must be at least 3 characters"
85
- },
86
- "email": {
87
- "required": "Please enter an email address",
88
- "invalid": "Please enter a valid email address",
89
- "helper": "We'll never share your email"
90
- },
91
- "security": {
92
- "title": "Secure Your Account",
93
- "subtitle": "Create a strong password to protect your account"
94
- },
95
- "password": {
96
- "helper": "At least 8 characters",
97
- "required": "Please enter a password",
98
- "minLength": "Password must be at least 8 characters long",
99
- "confirmRequired": "Please confirm your password",
100
- "mismatch": "Passwords do not match",
101
- "confirmHint": "Re-enter your password to confirm"
102
- },
103
- "summary": {
104
- "title": "Almost There!",
105
- "subtitle": "Review your information and create your account",
106
- "sectionTitle": "Account Information",
107
- "fields": {
108
- "username": "Username",
109
- "email": "Email",
110
- "password": "Password"
111
- },
112
- "notSet": "Not set",
113
- "securityTip": "For stronger security, enable biometric authentication from Account Settings after you create your account.",
114
- "legalReminder": "By creating an account, you agree to our Terms of Service and Privacy Policy.",
115
- "sections": {
116
- "account": "Account Information",
117
- "next": "Next Steps"
118
- },
119
- "next": {
120
- "securityTitle": "Keep your account secure",
121
- "legalTitle": "You're all set"
122
- }
123
- }
61
+ "webSubtitle": "No password. Your device creates a passkey, and your account gets a recovery phrase only you keep."
124
62
  },
125
63
  "welcomeNew": {
126
64
  "navTitle": "Welcome",
@@ -358,31 +296,8 @@
358
296
  "version": "Version {{version}}"
359
297
  },
360
298
  "accountSwitcher": {
361
- "title": "Account Switcher",
362
- "sections": {
363
- "current": "Current Account",
364
- "otherWithCount": "Other Accounts ({{count}})",
365
- "deviceSessions": "Device Sessions",
366
- "sharedWithYou": "Shared with you",
367
- "thisDevice": "On this device",
368
- "yourAccounts": "Your accounts"
369
- },
370
- "currentBadge": "Current",
371
299
  "loading": "Loading accounts...",
372
300
  "toasts": {
373
- "switchSuccess": "Account switched successfully!",
374
- "switchFailed": "There was a problem switching accounts. Please try again.",
375
- "signInFailed": "Sign-in failed. Please try again.",
376
- "removeSuccess": "Account removed successfully!",
377
- "removeFailed": "There was a problem removing the account. Please try again.",
378
- "signOutAllSuccess": "All accounts signed out successfully!",
379
- "signOutAllFailed": "There was a problem signing out: {{error}}",
380
- "deviceLoadFailed": "Failed to load device sessions. Please try again.",
381
- "remoteSignOutSuccess": "Signed out from {{deviceName}} successfully!",
382
- "remoteSignOutFailed": "There was a problem signing out from the device. Please try again.",
383
- "noOtherDeviceSessions": "No other device sessions found to sign out from.",
384
- "signOutOthersSuccess": "Signed out from all other devices successfully!",
385
- "signOutOthersFailed": "There was a problem signing out from other devices. Please try again.",
386
301
  "contextRemoved": "Removed {{account}}",
387
302
  "contextRemoveFailed": "There was a problem removing that account. Please try again.",
388
303
  "principalRemoved": "Signed {{name}} out of this device",
@@ -390,29 +305,11 @@
390
305
  "activateFailed": "There was a problem switching accounts. Please try again."
391
306
  },
392
307
  "confirms": {
393
- "remove": "Are you sure you want to remove {{displayName}} from this device? You'll need to sign in again to access this account.",
394
- "logoutAll": "Are you sure you want to sign out of all accounts? This will remove all saved accounts from this device.",
395
- "remoteLogout": "Are you sure you want to sign out from \"{{deviceName}}\"? This will end the session on that device.",
396
- "logoutOthers": "Are you sure you want to sign out from all {{count}} other device(s)? This will end sessions on all other devices except this one.",
397
308
  "removeContextTitle": "Remove this account?",
398
309
  "removeContext": "Stop {{person}} acting as {{account}} on this device? Anyone else who reaches {{account}} here keeps their access.",
399
310
  "removePrincipalTitle": "Sign out of this device?",
400
311
  "removePrincipal": "Sign {{name}} out of this device? Every account they reach here is removed. Nobody else is affected."
401
312
  },
402
- "device": {
403
- "loadingTitle": "Loading device sessions...",
404
- "loadingSubtitle": "Please wait while we fetch your device sessions",
405
- "noneTitle": "No device sessions found",
406
- "noneSubtitle": "Device session management not available",
407
- "thisDevice": "This device",
408
- "lastActive": "Last active: {{date}}"
409
- },
410
- "empty": {
411
- "title": "No saved accounts",
412
- "subtitle": "Add another account to switch between them quickly"
413
- },
414
- "label": "Account switcher",
415
- "searchPlaceholder": "Search accounts",
416
313
  "scanQr": "Scan QR code",
417
314
  "qrHeadline": "Sign in with your Oxy identity",
418
315
  "signInWithOxy": "Sign in with Oxy",
@@ -452,10 +349,7 @@
452
349
  "claimFailed": "Sign-in was approved, but we couldn't finish it. Please try again.",
453
350
  "generic": "Sign-in failed. Please try again."
454
351
  },
455
- "linkOpenFailed": "Couldn't open that link. Please try again.",
456
- "continueWithPasskey": "Continue",
457
- "passkeyHint": "Use your fingerprint, face or device PIN.",
458
- "otherDeviceCommons": "Account on another device? Scan with Commons"
352
+ "linkOpenFailed": "Couldn't open that link. Please try again."
459
353
  },
460
354
  "reputation": {
461
355
  "faq": {
@@ -1934,7 +1828,17 @@
1934
1828
  "warning": "This action cannot be undone. Your account and all associated data will be permanently deleted.",
1935
1829
  "confirmLabel": "Type \"{{username}}\" to confirm",
1936
1830
  "confirm": "Delete Forever",
1937
- "error": "Failed to delete account"
1831
+ "error": "Failed to delete account",
1832
+ "handoff": {
1833
+ "commonsTitle": "Delete your account in Oxy Commons",
1834
+ "commonsMessage": "Your identity key is kept by Oxy Commons on this device, and deleting your account needs it. Commons will open on Settings > Delete account to finish.",
1835
+ "openCommons": "Open Oxy Commons",
1836
+ "commonsOpenFailed": "Couldn't open Oxy Commons. Open it yourself and go to Settings > Delete account.",
1837
+ "elsewhereTitle": "Delete your account where your identity is",
1838
+ "elsewhereMessage": "Deleting your account needs your identity key, and it isn't on this device. Open Oxy Commons on the device that holds your identity and go to Settings > Delete account, or open {{site}} in a browser that holds it.",
1839
+ "gotIt": "Got it",
1840
+ "identityUnreadable": "Couldn't read this device's identity storage. Unlock your device and try again."
1841
+ }
1938
1842
  },
1939
1843
  "manageAccount": {
1940
1844
  "title": "Manage your Oxy Account",
@@ -1,66 +1,56 @@
1
1
  {
2
2
  "signin": {
3
3
  "title": "Iniciar sesión",
4
- "subtitle": "Inicia sesión para continuar",
4
+ "subtitle": "Usa tu cuenta de Oxy",
5
5
  "chooser": {
6
6
  "title": "Elige una cuenta",
7
7
  "subtitle": "Continúa con una de tus cuentas o usa otra.",
8
- "signedIn": "Sesión activa",
9
8
  "useAnother": "Usar otra cuenta",
10
- "continueAs": "Continuar como {{name}}"
9
+ "continueAs": "Continuar como {{name}}",
10
+ "subtitleToApp": "para continuar en {{app}}"
11
11
  },
12
- "addAccountTitle": "Agregar otra cuenta",
12
+ "addAccountTitle": "Añadir otra cuenta",
13
13
  "addAccountSubtitle": "Inicia sesión con otra cuenta",
14
14
  "username": {
15
15
  "label": "Usuario",
16
- "placeholder": "Introduce tu usuario",
17
- "helper": "3-30 caracteres, solo letras y números",
18
- "required": "Por favor, introduce tu usuario.",
19
- "minLength": "El usuario debe tener al menos 3 caracteres."
20
- },
21
- "password": {
22
- "label": "Contraseña",
23
- "placeholder": "Introduce tu contraseña",
24
- "required": "Por favor, introduce tu contraseña.",
25
- "hint": "Introduce tu contraseña para iniciar sesión"
16
+ "placeholder": "tunombre",
17
+ "required": "Por favor, introduce tu usuario."
26
18
  },
27
19
  "actions": {
28
20
  "continue": "Continuar",
29
- "back": "Atrás",
30
- "signIn": "Entrar",
31
- "verify": "Verificar",
32
- "openAccountSwitcher": "Cambiar a otra cuenta",
33
- "openAccountSwitcherSubtitle": "{{count}} otras cuentas disponibles",
34
- "openAccountSwitcherSubtitle_singular": "1 otra cuenta disponible",
35
- "openAccountSwitcherSubtitle_zero": "Revisa tus cuentas guardadas",
36
- "manageAccounts": "Gestionar cuentas guardadas",
37
- "manageAccountsSubtitle": "Revisar sesiones, eliminar o cerrar sesión",
38
- "loadingOtherAccounts": "Cargando otras cuentas…",
39
- "switchAccountFailed": "No pudimos cambiar de cuenta. Inténtalo de nuevo."
40
- },
41
- "forgotPrompt": "¿Olvidaste tu contraseña?",
42
- "security": {
43
- "dataSecure": "Tus datos están cifrados y seguros"
44
- },
45
- "currentlySignedInAs": "Actualmente has iniciado sesión como",
46
- "alreadySignedInWith": "Ya has iniciado sesión con",
47
- "alreadySignedIn": "Ya has iniciado sesión",
48
- "alreadySignedInMessage": "Esta cuenta ya ha iniciado sesión. ¿Continuar con esta cuenta?",
49
- "continueWithAccount": "Continuar",
50
- "currentAccount": "Actual",
51
- "or": "o",
52
- "viewAllAccounts": "Ver {{count}} más",
21
+ "back": "Atrás"
22
+ },
53
23
  "createAccountLink": "¿Nuevo en Oxy? Crea una cuenta",
54
24
  "status": {
55
- "accountSwitched": "Ahora usando {{name}}",
56
25
  "signingIn": "Iniciando sesión…"
57
26
  },
58
27
  "errors": {
59
28
  "notConfigured": "El inicio de sesión no está disponible",
60
29
  "notConfiguredDescription": "{{app}} todavía no está configurada para iniciar sesión. Contacta con quien desarrolla la app.",
61
30
  "failed": "No se pudo iniciar sesión",
62
- "failedDescription": "Algo ha ido mal. Inténtalo de nuevo."
63
- }
31
+ "failedDescription": "Algo ha ido mal. Inténtalo de nuevo.",
32
+ "rateLimited": "Demasiados intentos. Vuelve a probar en {{seconds}} s.",
33
+ "passkeyCancelled": "Has cerrado la passkey. Vuelve a intentarlo cuando quieras.",
34
+ "passkeyFailed": "No se pudo completar la passkey. Inténtalo de nuevo."
35
+ },
36
+ "subtitleToApp": "para continuar en {{app}}",
37
+ "orContinueWith": "o continúa con",
38
+ "qr": {
39
+ "caption": "Escanea con Commons para entrar",
40
+ "renew": "Mostrar un código nuevo"
41
+ },
42
+ "methods": {
43
+ "passkey": "Entrar con una passkey"
44
+ },
45
+ "terms": {
46
+ "before": "Al continuar, aceptas nuestros",
47
+ "termsLink": "Términos del servicio",
48
+ "and": "y la",
49
+ "privacyLink": "Política de privacidad"
50
+ },
51
+ "noAccount": "¿No tienes cuenta?",
52
+ "createAccount": "Crear cuenta",
53
+ "recoverLink": "¿Has perdido tu passkey? Recupera tu cuenta"
64
54
  },
65
55
  "signup": {
66
56
  "title": "Crea tu cuenta",
@@ -68,59 +58,7 @@
68
58
  "createInCommons": "Crea tu identidad en Commons",
69
59
  "createAccount": "Crear cuenta",
70
60
  "backToSignInLink": "¿Ya tienes cuenta? Inicia sesión",
71
- "welcome": {
72
- "title": "¡Te damos la bienvenida a Oxy!",
73
- "subtitle": "Crea tu cuenta en pocos pasos",
74
- "haveAccount": "¿Ya tienes cuenta?",
75
- "signInCta": "Inicia sesión"
76
- },
77
- "identity": {
78
- "title": "¿Quién eres?",
79
- "subtitle": "Elige tu usuario e introduce tu correo"
80
- },
81
- "username": {
82
- "helper": "3-30 caracteres, solo letras y números",
83
- "required": "Por favor, introduce un usuario",
84
- "minLength": "El usuario debe tener al menos 3 caracteres"
85
- },
86
- "email": {
87
- "required": "Por favor, introduce una dirección de correo electrónico",
88
- "invalid": "Por favor, introduce una dirección de correo electrónico válida",
89
- "helper": "Nunca compartiremos tu correo"
90
- },
91
- "security": {
92
- "title": "Protege tu cuenta",
93
- "subtitle": "Crea una contraseña fuerte para proteger tu cuenta"
94
- },
95
- "password": {
96
- "helper": "Al menos 8 caracteres",
97
- "required": "Por favor, introduce una contraseña",
98
- "minLength": "La contraseña debe tener al menos 8 caracteres",
99
- "confirmRequired": "Por favor, confirma tu contraseña",
100
- "mismatch": "Las contraseñas no coinciden",
101
- "confirmHint": "Vuelve a introducir tu contraseña para confirmar"
102
- },
103
- "summary": {
104
- "title": "¡Ya casi!",
105
- "subtitle": "Revisa tu información y crea tu cuenta",
106
- "sectionTitle": "Información de la cuenta",
107
- "fields": {
108
- "username": "Usuario",
109
- "email": "Correo electrónico",
110
- "password": "Contraseña"
111
- },
112
- "notSet": "Sin definir",
113
- "securityTip": "Para mayor seguridad, habilita la autenticación biométrica en Configuración de la cuenta después de crear tu cuenta.",
114
- "legalReminder": "Al crear una cuenta, aceptas nuestros Términos de servicio y Política de privacidad.",
115
- "sections": {
116
- "account": "Información de la cuenta",
117
- "next": "Próximos pasos"
118
- },
119
- "next": {
120
- "securityTitle": "Mantén tu cuenta segura",
121
- "legalTitle": "Todo listo"
122
- }
123
- }
61
+ "webSubtitle": "Sin contraseña. Tu dispositivo crea una passkey y tu cuenta recibe una frase de recuperación que solo guardas tú."
124
62
  },
125
63
  "profile": {
126
64
  "title": "Perfil",
@@ -598,31 +536,8 @@
598
536
  "version": "Versión {{version}}"
599
537
  },
600
538
  "accountSwitcher": {
601
- "title": "Conmutador de cuentas",
602
- "sections": {
603
- "current": "Cuenta actual",
604
- "otherWithCount": "Otras cuentas ({{count}})",
605
- "deviceSessions": "Sesiones de dispositivo",
606
- "sharedWithYou": "Compartidas contigo",
607
- "thisDevice": "En este dispositivo",
608
- "yourAccounts": "Tus cuentas"
609
- },
610
- "currentBadge": "Actual",
611
539
  "loading": "Cargando cuentas...",
612
540
  "toasts": {
613
- "switchSuccess": "¡Cuenta cambiada correctamente!",
614
- "switchFailed": "Hubo un problema al cambiar de cuenta. Inténtalo de nuevo.",
615
- "signInFailed": "No se pudo iniciar sesión. Inténtalo de nuevo.",
616
- "removeSuccess": "¡Cuenta eliminada correctamente!",
617
- "removeFailed": "Hubo un problema al eliminar la cuenta. Inténtalo de nuevo.",
618
- "signOutAllSuccess": "¡Todas las cuentas cerradas correctamente!",
619
- "signOutAllFailed": "Hubo un problema al cerrar sesión: {{error}}",
620
- "deviceLoadFailed": "Error al cargar las sesiones de dispositivo. Inténtalo de nuevo.",
621
- "remoteSignOutSuccess": "¡Sesión cerrada correctamente en {{deviceName}}!",
622
- "remoteSignOutFailed": "Hubo un problema al cerrar sesión en el dispositivo. Inténtalo de nuevo.",
623
- "noOtherDeviceSessions": "No se encontraron otras sesiones de dispositivo para cerrar.",
624
- "signOutOthersSuccess": "¡Sesiones cerradas correctamente en los demás dispositivos!",
625
- "signOutOthersFailed": "Hubo un problema al cerrar sesión en otros dispositivos. Inténtalo de nuevo.",
626
541
  "contextRemoved": "Se quitó {{account}}",
627
542
  "contextRemoveFailed": "Hubo un problema al quitar esa cuenta. Inténtalo de nuevo.",
628
543
  "principalRemoved": "Se cerró la sesión de {{name}} en este dispositivo",
@@ -630,29 +545,11 @@
630
545
  "activateFailed": "Hubo un problema al cambiar de cuenta. Inténtalo de nuevo."
631
546
  },
632
547
  "confirms": {
633
- "remove": "¿Seguro que quieres eliminar a {{displayName}} de este dispositivo? Tendrás que iniciar sesión de nuevo para acceder a esta cuenta.",
634
- "logoutAll": "¿Seguro que quieres cerrar sesión en todas las cuentas? Esto eliminará todas las cuentas guardadas de este dispositivo.",
635
- "remoteLogout": "¿Seguro que quieres cerrar sesión en \"{{deviceName}}\"? Esto finalizará la sesión en ese dispositivo.",
636
- "logoutOthers": "¿Seguro que quieres cerrar sesión en los otros {{count}} dispositivo(s)? Esto finalizará las sesiones en todos los demás dispositivos excepto en este.",
637
548
  "removeContextTitle": "¿Quitar esta cuenta?",
638
549
  "removeContext": "¿Dejar de usar {{account}} como {{person}} en este dispositivo? Quien más acceda a {{account}} aquí lo conserva.",
639
550
  "removePrincipalTitle": "¿Cerrar sesión en este dispositivo?",
640
551
  "removePrincipal": "¿Cerrar la sesión de {{name}} en este dispositivo? Se quitan todas las cuentas a las que llega desde aquí. No afecta a nadie más."
641
552
  },
642
- "device": {
643
- "loadingTitle": "Cargando sesiones de dispositivo...",
644
- "loadingSubtitle": "Espera mientras obtenemos tus sesiones de dispositivo",
645
- "noneTitle": "No se encontraron sesiones de dispositivo",
646
- "noneSubtitle": "La gestión de sesiones de dispositivo no está disponible",
647
- "thisDevice": "Este dispositivo",
648
- "lastActive": "Última actividad: {{date}}"
649
- },
650
- "empty": {
651
- "title": "No hay cuentas guardadas",
652
- "subtitle": "Añade otra cuenta para cambiar rápidamente entre ellas"
653
- },
654
- "label": "Selector de cuentas",
655
- "searchPlaceholder": "Buscar cuentas",
656
553
  "scanQr": "Escanear código QR",
657
554
  "qrHeadline": "Inicia sesión con tu identidad de Oxy",
658
555
  "signInWithOxy": "Inicia sesión con Oxy",
@@ -692,10 +589,7 @@
692
589
  "claimFailed": "Se aprobó el inicio de sesión, pero no pudimos completarlo. Inténtalo de nuevo.",
693
590
  "generic": "No se pudo iniciar sesión. Inténtalo de nuevo."
694
591
  },
695
- "linkOpenFailed": "No se pudo abrir el enlace. Inténtalo de nuevo.",
696
- "continueWithPasskey": "Continuar",
697
- "passkeyHint": "Usa tu huella, tu cara o el PIN del dispositivo.",
698
- "otherDeviceCommons": "¿Tu cuenta está en otro dispositivo? Escanea con Commons"
592
+ "linkOpenFailed": "No se pudo abrir el enlace. Inténtalo de nuevo."
699
593
  },
700
594
  "feedback": {
701
595
  "type": {
@@ -1934,7 +1828,17 @@
1934
1828
  "warning": "Esta acción no se puede deshacer. Tu cuenta y todos los datos asociados se eliminarán de forma permanente.",
1935
1829
  "confirmLabel": "Escribe \"{{username}}\" para confirmar",
1936
1830
  "confirm": "Eliminar para siempre",
1937
- "error": "No se pudo eliminar la cuenta"
1831
+ "error": "No se pudo eliminar la cuenta",
1832
+ "handoff": {
1833
+ "commonsTitle": "Elimina tu cuenta en Oxy Commons",
1834
+ "commonsMessage": "Tu clave de identidad la guarda Oxy Commons en este dispositivo, y eliminar tu cuenta la necesita. Commons se abrirá en Ajustes > Eliminar cuenta para terminar.",
1835
+ "openCommons": "Abrir Oxy Commons",
1836
+ "commonsOpenFailed": "No se pudo abrir Oxy Commons. Ábrelo tú y ve a Ajustes > Eliminar cuenta.",
1837
+ "elsewhereTitle": "Elimina tu cuenta donde está tu identidad",
1838
+ "elsewhereMessage": "Eliminar tu cuenta necesita tu clave de identidad, y no está en este dispositivo. Abre Oxy Commons en el dispositivo que guarda tu identidad y ve a Ajustes > Eliminar cuenta, o abre {{site}} en un navegador que la guarde.",
1839
+ "gotIt": "Entendido",
1840
+ "identityUnreadable": "No se pudo leer el almacén de identidad de este dispositivo. Desbloquea el dispositivo e inténtalo de nuevo."
1841
+ }
1938
1842
  },
1939
1843
  "manageAccount": {
1940
1844
  "title": "Gestiona tu cuenta de Oxy",
@@ -1,53 +1,48 @@
1
1
  {
2
2
  "signin": {
3
3
  "title": "Se connecter",
4
- "subtitle": "Connectez-vous pour continuer",
4
+ "subtitle": "Utilisez votre compte Oxy",
5
5
  "addAccountTitle": "Ajouter un autre compte",
6
6
  "addAccountSubtitle": "Se connecter avec un autre compte",
7
7
  "username": {
8
8
  "label": "Nom d'utilisateur",
9
- "placeholder": "Entrez votre nom d'utilisateur",
10
- "helper": "3-30 caractères, lettres et chiffres uniquement",
11
- "required": "Veuillez entrer votre nom d'utilisateur.",
12
- "minLength": "Le nom d'utilisateur doit contenir au moins 3 caractères."
13
- },
14
- "password": {
15
- "label": "Mot de passe",
16
- "placeholder": "Entrez votre mot de passe",
17
- "required": "Veuillez entrer votre mot de passe.",
18
- "hint": "Entrez votre mot de passe pour vous connecter"
9
+ "placeholder": "votrenom",
10
+ "required": "Veuillez entrer votre nom d'utilisateur."
19
11
  },
20
12
  "actions": {
21
13
  "continue": "Continuer",
22
- "back": "Retour",
23
- "signIn": "Se connecter",
24
- "verify": "Vérifier",
25
- "openAccountSwitcher": "Changer de compte",
26
- "openAccountSwitcherSubtitle": "{{count}} autres comptes disponibles",
27
- "openAccountSwitcherSubtitle_singular": "1 autre compte disponible",
28
- "openAccountSwitcherSubtitle_zero": "Consultez vos comptes enregistrés",
29
- "manageAccounts": "Gérer les comptes enregistrés",
30
- "manageAccountsSubtitle": "Consulter les sessions, supprimer ou se déconnecter",
31
- "loadingOtherAccounts": "Chargement des autres comptes…",
32
- "switchAccountFailed": "Nous n'avons pas pu changer de compte. Veuillez réessayer."
14
+ "back": "Retour"
33
15
  },
34
- "forgotPrompt": "Mot de passe oublié ?",
35
- "security": {
36
- "dataSecure": "Vos données sont cryptées et sécurisées"
37
- },
38
- "currentlySignedInAs": "Actuellement connecté en tant que",
39
- "alreadySignedInWith": "Déjà connecté avec",
40
- "alreadySignedIn": "Déjà connecté",
41
- "alreadySignedInMessage": "Ce compte est déjà connecté. Continuer avec ce compte ?",
42
- "continueWithAccount": "Continuer",
43
- "currentAccount": "Actuel",
44
- "or": "ou",
45
- "viewAllAccounts": "Voir {{count}} de plus",
46
16
  "createAccountLink": "Nouveau sur Oxy ? Créez un compte",
47
17
  "status": {
48
- "accountSwitched": "Utilisation de {{name}}",
49
18
  "signingIn": "Connexion…"
50
- }
19
+ },
20
+ "subtitleToApp": "pour continuer vers {{app}}",
21
+ "orContinueWith": "ou continuer avec",
22
+ "qr": {
23
+ "caption": "Scannez avec Commons pour vous connecter",
24
+ "renew": "Afficher un nouveau code"
25
+ },
26
+ "methods": {
27
+ "passkey": "Se connecter avec une clé d’accès"
28
+ },
29
+ "errors": {
30
+ "rateLimited": "Trop de tentatives. Réessayez dans {{seconds}} s.",
31
+ "passkeyCancelled": "Invite de clé d’accès fermée. Réessayez quand vous voulez.",
32
+ "passkeyFailed": "Impossible de terminer la clé d’accès. Réessayez."
33
+ },
34
+ "chooser": {
35
+ "subtitleToApp": "pour continuer vers {{app}}"
36
+ },
37
+ "terms": {
38
+ "before": "En continuant, vous acceptez nos",
39
+ "termsLink": "Conditions d’utilisation",
40
+ "and": "et notre",
41
+ "privacyLink": "Politique de confidentialité"
42
+ },
43
+ "noAccount": "Pas encore de compte ?",
44
+ "createAccount": "Créer un compte",
45
+ "recoverLink": "Clé d’accès perdue ? Récupérez votre compte"
51
46
  },
52
47
  "signup": {
53
48
  "title": "Créez votre compte",
@@ -55,56 +50,9 @@
55
50
  "createInCommons": "Créez votre identité dans Commons",
56
51
  "createAccount": "Créer un compte",
57
52
  "backToSignInLink": "Vous avez déjà un compte ? Connectez-vous",
58
- "welcome": {
59
- "title": "Bienvenue sur Oxy !",
60
- "subtitle": "Créez votre compte en quelques étapes",
61
- "haveAccount": "Vous avez déjà un compte ?",
62
- "signInCta": "Se connecter"
63
- },
64
- "identity": {
65
- "title": "Qui êtes-vous ?",
66
- "subtitle": "Choisissez votre nom d'utilisateur et entrez votre email"
67
- },
68
- "username": {
69
- "helper": "3-30 caractères, lettres et chiffres uniquement",
70
- "required": "Veuillez entrer un nom d'utilisateur",
71
- "minLength": "Le nom d'utilisateur doit contenir au moins 3 caractères"
72
- },
73
- "email": {
74
- "required": "Veuillez entrer une adresse email",
75
- "invalid": "Veuillez entrer une adresse email valide",
76
- "helper": "Nous ne partagerons jamais votre email"
77
- },
78
- "security": {
79
- "title": "Sécurisez votre compte",
80
- "subtitle": "Créez un mot de passe fort pour protéger votre compte"
81
- },
82
- "password": {
83
- "helper": "Au moins 8 caractères",
84
- "required": "Veuillez entrer un mot de passe",
85
- "minLength": "Le mot de passe doit contenir au moins 8 caractères",
86
- "confirmRequired": "Veuillez confirmer votre mot de passe",
87
- "mismatch": "Les mots de passe ne correspondent pas",
88
- "confirmHint": "Ré-entrez votre mot de passe pour confirmer"
89
- },
90
- "summary": {
91
- "title": "Presque terminé !",
92
- "subtitle": "Vérifiez vos informations et créez votre compte",
93
- "sectionTitle": "Informations du compte",
94
- "fields": {
95
- "username": "Nom d'utilisateur",
96
- "email": "Email",
97
- "password": "Mot de passe"
98
- },
99
- "notSet": "Non défini",
100
- "securityTip": "Pour une sécurité renforcée, activez l'authentification biométrique dans les paramètres du compte après avoir créé votre compte.",
101
- "legalReminder": "En créant un compte, vous acceptez nos Conditions d'utilisation et notre Politique de confidentialité."
102
- }
53
+ "webSubtitle": "Pas de mot de passe. Votre appareil crée une clé d’accès et votre compte reçoit une phrase de récupération que vous seul conservez."
103
54
  },
104
55
  "accountSwitcher": {
105
- "sections": {
106
- "yourAccounts": "Vos comptes"
107
- },
108
56
  "loading": "Chargement des comptes...",
109
57
  "qrHeadline": "Connectez-vous avec votre identité Oxy",
110
58
  "signInWithOxy": "Se connecter avec Oxy",
@@ -136,10 +84,7 @@
136
84
  "claimFailed": "La connexion a été approuvée, mais nous n'avons pas pu la finaliser. Veuillez réessayer.",
137
85
  "generic": "La connexion a échoué. Veuillez réessayer."
138
86
  },
139
- "linkOpenFailed": "Impossible d'ouvrir le lien. Veuillez réessayer.",
140
- "continueWithPasskey": "Continuer",
141
- "passkeyHint": "Utilisez votre empreinte, votre visage ou le code de l'appareil.",
142
- "otherDeviceCommons": "Compte sur un autre appareil ? Scannez avec Commons"
87
+ "linkOpenFailed": "Impossible d'ouvrir le lien. Veuillez réessayer."
143
88
  },
144
89
  "common": {
145
90
  "actions": {