feat: session rename — double-click or pencil icon to set custom session names

- Double-click session name in sidebar to rename inline
- Pencil icon on hover for discoverability
- Custom names persisted in localStorage
- Enter to confirm, Escape to cancel, blur to save
- Clear name to revert to auto-generated display name
- Search filter respects custom names
- i18n for all 8 languages
This commit is contained in:
Nicolas Varrot
2026-02-15 14:03:10 +00:00
parent eea9fadaf5
commit 7890d34583
4 changed files with 103 additions and 7 deletions

View File

@@ -63,6 +63,7 @@ const en = {
'sidebar.unpin': 'Unpin session',
'sidebar.pinned': 'Pinned',
'sidebar.delete': 'Delete session',
'sidebar.rename': 'Rename session',
'sidebar.deleteConfirm': 'Delete this session? This cannot be undone.',
'sidebar.deleteCancel': 'Cancel',
'sidebar.openSplit': 'Open in split view',
@@ -235,6 +236,7 @@ const fr: Record<keyof typeof en, string> = {
'sidebar.unpin': 'Désépingler la session',
'sidebar.pinned': 'Épinglées',
'sidebar.delete': 'Supprimer la session',
'sidebar.rename': 'Renommer la session',
'sidebar.deleteConfirm': 'Supprimer cette session ? Cette action est irréversible.',
'sidebar.deleteCancel': 'Annuler',
'sidebar.openSplit': 'Ouvrir en vue scindée',
@@ -395,6 +397,7 @@ const es: Record<keyof typeof en, string> = {
'sidebar.unpin': 'Desfijar sesión',
'sidebar.pinned': 'Fijadas',
'sidebar.delete': 'Eliminar sesión',
'sidebar.rename': 'Renombrar sesión',
'sidebar.deleteConfirm': '¿Eliminar esta sesión? Esta acción no se puede deshacer.',
'sidebar.deleteCancel': 'Cancelar',
'sidebar.openSplit': 'Abrir en vista dividida',
@@ -557,6 +560,7 @@ const de: Record<keyof typeof en, string> = {
'sidebar.unpin': 'Sitzung lösen',
'sidebar.pinned': 'Angeheftet',
'sidebar.delete': 'Sitzung löschen',
'sidebar.rename': 'Sitzung umbenennen',
'sidebar.deleteConfirm': 'Diese Sitzung löschen? Dies kann nicht rückgängig gemacht werden.',
'sidebar.deleteCancel': 'Abbrechen',
'sidebar.openSplit': 'In geteilter Ansicht öffnen',
@@ -717,6 +721,7 @@ const ja: Record<keyof typeof en, string> = {
'sidebar.unpin': 'ピン留めを解除',
'sidebar.pinned': 'ピン留め',
'sidebar.delete': 'セッションを削除',
'sidebar.rename': 'セッション名変更',
'sidebar.deleteConfirm': 'このセッションを削除しますか?元に戻せません。',
'sidebar.deleteCancel': 'キャンセル',
'sidebar.openSplit': '分割ビューで開く',
@@ -877,6 +882,7 @@ const pt: Record<keyof typeof en, string> = {
'sidebar.unpin': 'Desafixar sessão',
'sidebar.pinned': 'Fixada',
'sidebar.delete': 'Excluir sessão',
'sidebar.rename': 'Renomear sessão',
'sidebar.deleteConfirm': 'Excluir esta sessão? Esta ação não pode ser desfeita.',
'sidebar.deleteCancel': 'Cancelar',
'sidebar.openSplit': 'Abrir em visualização dividida',
@@ -1037,6 +1043,7 @@ const zh: Record<keyof typeof en, string> = {
'sidebar.unpin': '取消置顶',
'sidebar.pinned': '已置顶',
'sidebar.delete': '删除会话',
'sidebar.rename': '重命名会话',
'sidebar.deleteConfirm': '删除此会话?此操作无法撤消。',
'sidebar.deleteCancel': '取消',
'sidebar.openSplit': '在分屏中打开',
@@ -1197,6 +1204,7 @@ const it: Record<keyof typeof en, string> = {
'sidebar.unpin': 'Sgancia sessione',
'sidebar.pinned': 'Fissate',
'sidebar.delete': 'Elimina sessione',
'sidebar.rename': 'Rinomina sessione',
'sidebar.deleteConfirm': 'Eliminare questa sessione? L\'azione è irreversibile.',
'sidebar.deleteCancel': 'Annulla',
'sidebar.openSplit': 'Apri in vista divisa',