diff --git a/CHANGELOG.md b/CHANGELOG.md
index a02c8b1..0994170 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog - project.linkedcorp.net
+## [2.8.3] - 2026-10-01
+### Fixed
+- El PIN de "Contraseñas" (acceso y cambio de PIN) ya no usa `type="password"` en el campo —
+ Chrome lo detectaba como una credencial de sitio y ofrecía "¿Quieres actualizar la contraseña?"
+ cada vez que se desbloqueaba el candado. Ahora se enmascara solo visualmente (sigue viéndose
+ como puntos) sin disparar el gestor de contraseñas del navegador.
+
## [2.8.2] - 2026-10-01
### Added
- Al aplicar una actualización desde Configuración → Actualizaciones, ahora se bloquea toda la
diff --git a/VERSION b/VERSION
index 1817afe..9f8d8a9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.8.2
+2.8.3
diff --git a/backend/package.json b/backend/package.json
index 058827e..9067b1b 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "project-linkedcorp-backend",
- "version": "2.8.2",
+ "version": "2.8.3",
"private": true,
"type": "module",
"main": "src/server.js",
diff --git a/frontend/package.json b/frontend/package.json
index 36c4127..5109a22 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "project-linkedcorp-frontend",
"private": true,
- "version": "2.8.2",
+ "version": "2.8.3",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/frontend/src/pages/Contrasenas/ContrasenasPage.jsx b/frontend/src/pages/Contrasenas/ContrasenasPage.jsx
index a52aadb..0366cdd 100644
--- a/frontend/src/pages/Contrasenas/ContrasenasPage.jsx
+++ b/frontend/src/pages/Contrasenas/ContrasenasPage.jsx
@@ -268,7 +268,8 @@ export default function ContrasenasPage() {
{!hasPinSet &&
{t('vault_create_pin_hint')}
}
setPin(e.target.value.replace(/\D/g, ''))}
onKeyDown={(e) => { if (e.key === 'Enter') submitPin(); }}
/>
@@ -276,7 +277,8 @@ export default function ContrasenasPage() {
{!hasPinSet && (
setPinConfirm(e.target.value.replace(/\D/g, ''))}
onKeyDown={(e) => { if (e.key === 'Enter') submitPin(); }}
/>
@@ -426,13 +428,13 @@ export default function ContrasenasPage() {
setChangingPin(false)} width={360} height={360}>
- setPinChangeForm((f) => ({ ...f, current: e.target.value.replace(/\D/g, '') }))} />
+ setPinChangeForm((f) => ({ ...f, current: e.target.value.replace(/\D/g, '') }))} />
- setPinChangeForm((f) => ({ ...f, next: e.target.value.replace(/\D/g, '') }))} />
+ setPinChangeForm((f) => ({ ...f, next: e.target.value.replace(/\D/g, '') }))} />
- setPinChangeForm((f) => ({ ...f, next2: e.target.value.replace(/\D/g, '') }))} />
+ setPinChangeForm((f) => ({ ...f, next2: e.target.value.replace(/\D/g, '') }))} />
{pinChangeError && {pinChangeError}
}
diff --git a/frontend/src/pages/Login/ResetVaultPinPage.jsx b/frontend/src/pages/Login/ResetVaultPinPage.jsx
index dcdc93c..a121cbb 100644
--- a/frontend/src/pages/Login/ResetVaultPinPage.jsx
+++ b/frontend/src/pages/Login/ResetVaultPinPage.jsx
@@ -51,11 +51,13 @@ export default function ResetVaultPinPage() {
) : (
<>
- setPin(e.target.value.replace(/\D/g, ''))} required />
- setConfirm(e.target.value.replace(/\D/g, ''))} required />