feat: version 2.13.2 -- "Destruir" con advertencia fuerte en Contraseñas

Solo en el modulo Contraseñas (entradas y grupos): "Eliminar" pasa a decir
"Destruir", con dialogo en tono error (franja roja) y mensaje explicito de
que la destruccion es permanente e irreversible. El resto de la app
(Notas, Proyectos, etc.) sigue igual. El audit_log de borrado ya existia
(usuario/accion/fecha, sin el contenido) -- sin cambios ahi.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-10-14 17:22:59 -05:00
parent 70b601307f
commit dad73b841d
6 changed files with 28 additions and 13 deletions
+8
View File
@@ -234,6 +234,10 @@ export const messages = {
vault_share_placeholder: 'Elegir usuario',
vault_share_empty: 'No compartida con nadie.',
vault_shared_by: 'Compartida por',
vault_destroy: 'Destruir',
vault_confirm_destroy_title: 'Destrucción irreversible',
vault_confirm_destroy_entry_msg: 'Vas a DESTRUIR esta credencial de forma permanente. No hay papelera ni copia de respaldo -- una vez confirmado, no hay forma de recuperarla.',
vault_confirm_destroy_group_msg: 'Vas a DESTRUIR este grupo de forma permanente. No hay papelera ni copia de respaldo -- una vez confirmado, no hay forma de recuperarlo. Las credenciales que contiene no se destruyen, quedan sin grupo.',
notes_title: 'Notas',
notes_placeholder: 'Escribe un apunte rápido...',
notes_empty: 'No tienes notas todavía.',
@@ -589,6 +593,10 @@ export const messages = {
vault_share_placeholder: 'Choose a user',
vault_share_empty: 'Not shared with anyone.',
vault_shared_by: 'Shared by',
vault_destroy: 'Destroy',
vault_confirm_destroy_title: 'Irreversible destruction',
vault_confirm_destroy_entry_msg: 'You are about to permanently DESTROY this credential. There is no trash bin or backup copy -- once confirmed, there is no way to recover it.',
vault_confirm_destroy_group_msg: 'You are about to permanently DESTROY this group. There is no trash bin or backup copy -- once confirmed, there is no way to recover it. Its credentials are not destroyed, they stay ungrouped.',
notes_title: 'Notes',
notes_placeholder: 'Write a quick note...',
notes_empty: 'You don\'t have any notes yet.',
@@ -272,13 +272,13 @@ export default function ContrasenasPage() {
function confirmDelete(entry) {
openDialog({
tone: 'warning',
title: t('common_confirm_delete_title'),
message: t('common_confirm_delete_msg'),
tone: 'error',
title: t('vault_confirm_destroy_title'),
message: t('vault_confirm_destroy_entry_msg'),
actions: [
{ label: t('common_cancel'), variant: 'standard' },
{
label: t('common_delete'), variant: 'danger',
label: t('vault_destroy'), variant: 'danger',
onClick: () => runAction(async () => {
await deleteVaultEntry(entry.id);
await Promise.all([loadEntries(), loadGroups()]);
@@ -343,13 +343,13 @@ export default function ContrasenasPage() {
function confirmDeleteGroup(group) {
openDialog({
tone: 'warning',
title: t('common_confirm_delete_title'),
message: t('vault_group_delete_confirm_msg'),
tone: 'error',
title: t('vault_confirm_destroy_title'),
message: t('vault_confirm_destroy_group_msg'),
actions: [
{ label: t('common_cancel'), variant: 'standard' },
{
label: t('common_delete'), variant: 'danger',
label: t('vault_destroy'), variant: 'danger',
onClick: () => runAction(async () => {
await deleteVaultGroup(group.id);
if (activeGroupId === group.id) setActiveGroupId(null);
@@ -446,7 +446,7 @@ export default function ContrasenasPage() {
<button className="icon-btn row-menu-btn" onClick={onClick}><MoreVertical size={16} /></button>
)}>
<FlyoutItem icon={Pencil} onClick={() => openEditGroup(group)}>{t('common_edit')}</FlyoutItem>
<FlyoutItem icon={Trash2} danger onClick={() => confirmDeleteGroup(group)}>{t('common_delete')}</FlyoutItem>
<FlyoutItem icon={Trash2} danger onClick={() => confirmDeleteGroup(group)}>{t('vault_destroy')}</FlyoutItem>
</Flyout>
</div>
<GroupIcon iconKey={group.icon_key} />
@@ -463,7 +463,7 @@ export default function ContrasenasPage() {
<Flyout trigger={({ onClick }) => (
<button className="icon-btn row-menu-btn" onClick={onClick}><MoreVertical size={16} /></button>
)}>
<FlyoutItem icon={Trash2} danger onClick={() => confirmDelete(entry)}>{t('common_delete')}</FlyoutItem>
<FlyoutItem icon={Trash2} danger onClick={() => confirmDelete(entry)}>{t('vault_destroy')}</FlyoutItem>
</Flyout>
</div>
) : (