feat: add restore/unarchive for archived sessions
Archived sessions had no way back to the active list: the only available action was "Delete permanently". Add restore per session (sidebar context menu, Archive page row) and in bulk (sidebar selection bar). The OpenCode server cannot clear time.archived over HTTP — session.update only applies the field for a finite number, so an omitted key is a no-op and null is silently ignored (verified against opencode 1.18.12). Restore therefore writes time.archived = 0: every client-side reader classifies archive state by truthiness, so 0 reads as active in the UI, the event reducer, and the OpenCode app/TUI. The server's time_archived IS NULL list filter still excludes such rows, so the global session cache no longer issues an archived:false request for its active list. Full and per-directory loads now fetch once with the inclusive flag and split client-side via splitGlobalSessionsByArchived, which also halves per-directory refresh requests. Directory bootstrap keeps the server filter because live child stores must not hold archived sessions; a restored session re-enters its live store through the authoritative session.updated event. unarchiveSession/unarchiveSessions follow the archiveSession contract: wait for server confirmation before reconciling stores, runtime-guard every reconciliation, preserve partial batch results, and fail loudly when the server keeps the session archived instead of toasting a successful no-op. Closes #2346
This commit is contained in:
@@ -449,6 +449,7 @@ export const dict = {
|
||||
'sessions.archivePage.deleteProject': 'Delete all archived sessions in this project',
|
||||
'sessions.archivePage.deleteProjectAria': 'Delete all archived sessions in {label}',
|
||||
'sessions.archivePage.deleteSessionAria': 'Delete {title}',
|
||||
'sessions.archivePage.restoreSessionAria': 'Restore {title}',
|
||||
'sessions.switcher.openAria': 'Open session switcher',
|
||||
'sessions.switcher.empty': 'No recent sessions',
|
||||
'sessions.switcher.draftTitle': 'New session',
|
||||
@@ -470,6 +471,11 @@ export const dict = {
|
||||
'sessions.sidebar.bulkActions.archivedPlural': 'Archived {count} sessions',
|
||||
'sessions.sidebar.bulkActions.failedArchiveSingle': 'Failed to archive {count} session',
|
||||
'sessions.sidebar.bulkActions.failedArchivePlural': 'Failed to archive {count} sessions',
|
||||
'sessions.sidebar.bulkActions.restore': 'Restore',
|
||||
'sessions.sidebar.bulkActions.restoredSingle': 'Restored {count} session',
|
||||
'sessions.sidebar.bulkActions.restoredPlural': 'Restored {count} sessions',
|
||||
'sessions.sidebar.bulkActions.failedRestoreSingle': 'Failed to restore {count} session',
|
||||
'sessions.sidebar.bulkActions.failedRestorePlural': 'Failed to restore {count} sessions',
|
||||
'sessions.sidebar.folders.none': 'No folders yet',
|
||||
'sessions.sidebar.folders.newFolderEllipsis': 'New folder...',
|
||||
'sessions.sidebar.folders.removeFromFolder': 'Remove from folder',
|
||||
@@ -573,6 +579,8 @@ export const dict = {
|
||||
'sessions.sidebar.session.delete.error': 'Failed to delete session',
|
||||
'sessions.sidebar.session.archive.success': 'Session archived',
|
||||
'sessions.sidebar.session.archive.error': 'Failed to archive session',
|
||||
'sessions.sidebar.session.restore.success': 'Session restored',
|
||||
'sessions.sidebar.session.restore.error': 'Failed to restore session',
|
||||
'sessions.sidebar.group.pr.checksPassed': '{success}/{total} checks passed',
|
||||
'sessions.sidebar.group.pr.failingCount': '{count} failing',
|
||||
'sessions.sidebar.group.pr.pendingCount': '{count} pending',
|
||||
|
||||
@@ -450,6 +450,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"sessions.archivePage.deleteProject": "Eliminar todas las sesiones archivadas de este proyecto",
|
||||
"sessions.archivePage.deleteProjectAria": "Eliminar todas las sesiones archivadas de {label}",
|
||||
"sessions.archivePage.deleteSessionAria": "Eliminar {title}",
|
||||
"sessions.archivePage.restoreSessionAria": "Restaurar {title}",
|
||||
"sessions.switcher.openAria": "Abrir selector de sesiones",
|
||||
"sessions.switcher.empty": "No hay sesiones recientes",
|
||||
"sessions.switcher.draftTitle": "Nueva sesión",
|
||||
@@ -471,6 +472,11 @@ export const dict: Record<I18nKey, string> = {
|
||||
"sessions.sidebar.bulkActions.archivedPlural": "Se archivaron {count} sesiones",
|
||||
"sessions.sidebar.bulkActions.failedArchiveSingle": "No se pudo archivar {count} sesión",
|
||||
"sessions.sidebar.bulkActions.failedArchivePlural": "No se pudo archivar {count} sesiones",
|
||||
"sessions.sidebar.bulkActions.restore": "Restaurar",
|
||||
"sessions.sidebar.bulkActions.restoredSingle": "Se restauró {count} sesión",
|
||||
"sessions.sidebar.bulkActions.restoredPlural": "Se restauraron {count} sesiones",
|
||||
"sessions.sidebar.bulkActions.failedRestoreSingle": "No se pudo restaurar {count} sesión",
|
||||
"sessions.sidebar.bulkActions.failedRestorePlural": "No se pudo restaurar {count} sesiones",
|
||||
"sessions.sidebar.folders.none": "No hay carpetas aún",
|
||||
"sessions.sidebar.folders.newFolderEllipsis": "Nueva carpeta...",
|
||||
"sessions.sidebar.folders.removeFromFolder": "Quitar de carpeta",
|
||||
@@ -574,6 +580,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
"sessions.sidebar.session.delete.error": "No se pudo eliminar la sesión",
|
||||
"sessions.sidebar.session.archive.success": "Sesión archivada",
|
||||
"sessions.sidebar.session.archive.error": "No se pudo archivar la sesión",
|
||||
"sessions.sidebar.session.restore.success": "Sesión restaurada",
|
||||
"sessions.sidebar.session.restore.error": "No se pudo restaurar la sesión",
|
||||
"sessions.sidebar.group.pr.checksPassed": "{success}/{total} comprobaciones aprobadas",
|
||||
"sessions.sidebar.group.pr.failingCount": "{count} con fallos",
|
||||
"sessions.sidebar.group.pr.pendingCount": "{count} pendientes",
|
||||
|
||||
@@ -285,6 +285,7 @@ export const dict = {
|
||||
'sessions.archivePage.deleteProject': 'Supprimer toutes les sessions archivées de ce projet',
|
||||
'sessions.archivePage.deleteProjectAria': 'Supprimer toutes les sessions archivées de {label}',
|
||||
'sessions.archivePage.deleteSessionAria': 'Supprimer {title}',
|
||||
'sessions.archivePage.restoreSessionAria': 'Restaurer {title}',
|
||||
'sessions.switcher.openAria': 'Sélecteur de session ouvert',
|
||||
'sessions.switcher.empty': 'Aucune session récente',
|
||||
'sessions.switcher.draftTitle': 'Nouvelle session',
|
||||
@@ -306,6 +307,11 @@ export const dict = {
|
||||
'sessions.sidebar.bulkActions.archivedPlural': 'Sessions {count} archivées',
|
||||
'sessions.sidebar.bulkActions.failedArchiveSingle': 'Échec de l\'archivage de la session {count}',
|
||||
'sessions.sidebar.bulkActions.failedArchivePlural': 'Échec de l\'archivage des sessions {count}',
|
||||
'sessions.sidebar.bulkActions.restore': 'Restaurer',
|
||||
'sessions.sidebar.bulkActions.restoredSingle': 'Session {count} restaurée',
|
||||
'sessions.sidebar.bulkActions.restoredPlural': 'Sessions {count} restaurées',
|
||||
'sessions.sidebar.bulkActions.failedRestoreSingle': 'Échec de la restauration de la session {count}',
|
||||
'sessions.sidebar.bulkActions.failedRestorePlural': 'Échec de la restauration des sessions {count}',
|
||||
'sessions.sidebar.folders.none': 'Aucun dossier pour l\'instant',
|
||||
'sessions.sidebar.folders.newFolderEllipsis': 'Nouveau dossier...',
|
||||
'sessions.sidebar.folders.removeFromFolder': 'Supprimer du dossier',
|
||||
@@ -409,6 +415,8 @@ export const dict = {
|
||||
'sessions.sidebar.session.delete.error': 'Échec de la suppression de la session',
|
||||
'sessions.sidebar.session.archive.success': 'Session archivée',
|
||||
'sessions.sidebar.session.archive.error': 'Échec de l\'archivage de la session',
|
||||
'sessions.sidebar.session.restore.success': 'Session restaurée',
|
||||
'sessions.sidebar.session.restore.error': 'Échec de la restauration de la session',
|
||||
'sessions.sidebar.group.pr.checksPassed': 'Contrôles {success}/{total} réussis',
|
||||
'sessions.sidebar.group.pr.failingCount': 'Échec de {count}',
|
||||
'sessions.sidebar.group.pr.pendingCount': '{count} en attente',
|
||||
|
||||
@@ -450,6 +450,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.archivePage.deleteProject': 'このプロジェクトのアーカイブ済みセッションをすべて削除',
|
||||
'sessions.archivePage.deleteProjectAria': '{label} のアーカイブ済みセッションをすべて削除',
|
||||
'sessions.archivePage.deleteSessionAria': '{title} を削除',
|
||||
'sessions.archivePage.restoreSessionAria': '{title} を復元',
|
||||
'sessions.switcher.openAria': 'セッションスイッチャーを開く',
|
||||
'sessions.switcher.empty': '最近のセッションはありません',
|
||||
'sessions.switcher.draftTitle': '新しいセッション',
|
||||
@@ -471,6 +472,11 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.bulkActions.archivedPlural': '{count}セッションをアーカイブしました',
|
||||
'sessions.sidebar.bulkActions.failedArchiveSingle': '{count}セッションのアーカイブに失敗しました',
|
||||
'sessions.sidebar.bulkActions.failedArchivePlural': '{count}セッションのアーカイブに失敗しました',
|
||||
'sessions.sidebar.bulkActions.restore': '復元',
|
||||
'sessions.sidebar.bulkActions.restoredSingle': '{count}セッションを復元しました',
|
||||
'sessions.sidebar.bulkActions.restoredPlural': '{count}セッションを復元しました',
|
||||
'sessions.sidebar.bulkActions.failedRestoreSingle': '{count}セッションの復元に失敗しました',
|
||||
'sessions.sidebar.bulkActions.failedRestorePlural': '{count}セッションの復元に失敗しました',
|
||||
'sessions.sidebar.folders.none': 'まだフォルダがありません',
|
||||
'sessions.sidebar.folders.newFolderEllipsis': '新しいフォルダ...',
|
||||
'sessions.sidebar.folders.removeFromFolder': 'フォルダから削除',
|
||||
@@ -574,6 +580,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.session.delete.error': 'セッションの削除に失敗しました',
|
||||
'sessions.sidebar.session.archive.success': 'セッションをアーカイブしました',
|
||||
'sessions.sidebar.session.archive.error': 'セッションのアーカイブに失敗しました',
|
||||
'sessions.sidebar.session.restore.success': 'セッションを復元しました',
|
||||
'sessions.sidebar.session.restore.error': 'セッションの復元に失敗しました',
|
||||
'sessions.sidebar.group.pr.checksPassed': '{success}/{total}のチェックに合格',
|
||||
'sessions.sidebar.group.pr.failingCount': '{count}件失敗',
|
||||
'sessions.sidebar.group.pr.pendingCount': '{count}件保留中',
|
||||
|
||||
@@ -450,6 +450,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.archivePage.deleteProject': '이 프로젝트의 보관된 세션 모두 삭제',
|
||||
'sessions.archivePage.deleteProjectAria': '{label}의 보관된 세션 모두 삭제',
|
||||
'sessions.archivePage.deleteSessionAria': '{title} 삭제',
|
||||
'sessions.archivePage.restoreSessionAria': '{title} 복원',
|
||||
'sessions.switcher.openAria': '세션 전환기 열기',
|
||||
'sessions.switcher.empty': '최근 세션 없음',
|
||||
'sessions.switcher.draftTitle': '새 세션',
|
||||
@@ -471,6 +472,11 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.bulkActions.archivedPlural': '세션 {count}개 보관됨',
|
||||
'sessions.sidebar.bulkActions.failedArchiveSingle': '세션 {count}개 보관 실패',
|
||||
'sessions.sidebar.bulkActions.failedArchivePlural': '세션 {count}개 보관 실패',
|
||||
'sessions.sidebar.bulkActions.restore': '복원',
|
||||
'sessions.sidebar.bulkActions.restoredSingle': '세션 {count}개 복원됨',
|
||||
'sessions.sidebar.bulkActions.restoredPlural': '세션 {count}개 복원됨',
|
||||
'sessions.sidebar.bulkActions.failedRestoreSingle': '세션 {count}개 복원 실패',
|
||||
'sessions.sidebar.bulkActions.failedRestorePlural': '세션 {count}개 복원 실패',
|
||||
'sessions.sidebar.folders.none': '아직 폴더 없음',
|
||||
'sessions.sidebar.folders.newFolderEllipsis': '새 폴더…',
|
||||
'sessions.sidebar.folders.removeFromFolder': '폴더에서 제거',
|
||||
@@ -574,6 +580,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.session.delete.error': '세션 삭제 실패',
|
||||
'sessions.sidebar.session.archive.success': '세션 보관됨',
|
||||
'sessions.sidebar.session.archive.error': '세션 보관 실패',
|
||||
'sessions.sidebar.session.restore.success': '세션 복원됨',
|
||||
'sessions.sidebar.session.restore.error': '세션 복원 실패',
|
||||
'sessions.sidebar.group.pr.checksPassed': '검사 통과: {success}/{total}',
|
||||
'sessions.sidebar.group.pr.failingCount': '실패 {count}개',
|
||||
'sessions.sidebar.group.pr.pendingCount': '{count} 대기 중',
|
||||
|
||||
@@ -266,6 +266,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.archivePage.deleteProject': 'Usuń wszystkie zarchiwizowane sesje tego projektu',
|
||||
'sessions.archivePage.deleteProjectAria': 'Usuń wszystkie zarchiwizowane sesje w {label}',
|
||||
'sessions.archivePage.deleteSessionAria': 'Usuń {title}',
|
||||
'sessions.archivePage.restoreSessionAria': 'Przywróć {title}',
|
||||
'sessions.switcher.openAria': 'Otwórz przełącznik sesji',
|
||||
'sessions.switcher.empty': 'Brak ostatnich sesji',
|
||||
'sessions.switcher.draftTitle': 'Nowa sesja',
|
||||
@@ -333,6 +334,11 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.bulkActions.archivedPlural': 'Zarchiwizowano {count} sesji',
|
||||
'sessions.sidebar.bulkActions.failedArchiveSingle': 'Nie udało się zarchiwizować {count} sesji',
|
||||
'sessions.sidebar.bulkActions.failedArchivePlural': 'Nie udało się zarchiwizować {count} sesji',
|
||||
'sessions.sidebar.bulkActions.restore': 'Przywróć',
|
||||
'sessions.sidebar.bulkActions.restoredSingle': 'Przywrócono {count} sesję',
|
||||
'sessions.sidebar.bulkActions.restoredPlural': 'Przywrócono {count} sesji',
|
||||
'sessions.sidebar.bulkActions.failedRestoreSingle': 'Nie udało się przywrócić {count} sesji',
|
||||
'sessions.sidebar.bulkActions.failedRestorePlural': 'Nie udało się przywrócić {count} sesji',
|
||||
'sessions.scheduledTasks.dialog.title': 'Zaplanowane zadania',
|
||||
'sessions.scheduledTasks.dialog.description': 'Zadania po stronie serwera, które tworzą nową sesję i wysyłają skonfigurowany prompt.',
|
||||
'sessions.scheduledTasks.dialog.project.label': 'Projekt',
|
||||
@@ -574,6 +580,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.session.delete.error': 'Nie udało się usunąć sesji',
|
||||
'sessions.sidebar.session.archive.success': 'Sesja zarchiwizowana',
|
||||
'sessions.sidebar.session.archive.error': 'Nie udało się zarchiwizować sesji',
|
||||
'sessions.sidebar.session.restore.success': 'Sesja przywrócona',
|
||||
'sessions.sidebar.session.restore.error': 'Nie udało się przywrócić sesji',
|
||||
'sessions.sidebar.group.pr.checksPassed': '{success}/{total} testów przeszło',
|
||||
'sessions.sidebar.group.pr.failingCount': '{count} niepowodzeń',
|
||||
'sessions.sidebar.group.pr.pendingCount': '{count} oczekujących',
|
||||
|
||||
@@ -450,6 +450,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"sessions.archivePage.deleteProject": "Excluir todas as sessões arquivadas deste projeto",
|
||||
"sessions.archivePage.deleteProjectAria": "Excluir todas as sessões arquivadas de {label}",
|
||||
"sessions.archivePage.deleteSessionAria": "Excluir {title}",
|
||||
"sessions.archivePage.restoreSessionAria": "Restaurar {title}",
|
||||
"sessions.switcher.openAria": "Abrir seletor de sessões",
|
||||
"sessions.switcher.empty": "Nenhuma sessão recente",
|
||||
"sessions.switcher.draftTitle": "Nova sessão",
|
||||
@@ -471,6 +472,11 @@ export const dict: Record<I18nKey, string> = {
|
||||
"sessions.sidebar.bulkActions.archivedPlural": "{count} sessões arquivadas",
|
||||
"sessions.sidebar.bulkActions.failedArchiveSingle": "Não foi possível arquivar {count} sessão",
|
||||
"sessions.sidebar.bulkActions.failedArchivePlural": "Não foi possível arquivar {count} sessões",
|
||||
"sessions.sidebar.bulkActions.restore": "Restaurar",
|
||||
"sessions.sidebar.bulkActions.restoredSingle": "{count} sessão restaurada",
|
||||
"sessions.sidebar.bulkActions.restoredPlural": "{count} sessões restauradas",
|
||||
"sessions.sidebar.bulkActions.failedRestoreSingle": "Não foi possível restaurar {count} sessão",
|
||||
"sessions.sidebar.bulkActions.failedRestorePlural": "Não foi possível restaurar {count} sessões",
|
||||
"sessions.sidebar.folders.none": "Não há pastas ainda",
|
||||
"sessions.sidebar.folders.newFolderEllipsis": "Nova pasta...",
|
||||
"sessions.sidebar.folders.removeFromFolder": "Remover da pasta",
|
||||
@@ -574,6 +580,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
"sessions.sidebar.session.delete.error": "Não foi possível excluir a sessão",
|
||||
"sessions.sidebar.session.archive.success": "Sessão archivada",
|
||||
"sessions.sidebar.session.archive.error": "Não foi possível arquivar a sessão",
|
||||
"sessions.sidebar.session.restore.success": "Sessão restaurada",
|
||||
"sessions.sidebar.session.restore.error": "Não foi possível restaurar a sessão",
|
||||
"sessions.sidebar.group.pr.checksPassed": "{success}/{total} checks pasadas",
|
||||
"sessions.sidebar.group.pr.failingCount": "{count} com fallos",
|
||||
"sessions.sidebar.group.pr.pendingCount": "{count} pendentes",
|
||||
|
||||
@@ -450,6 +450,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"sessions.archivePage.deleteProject": "Видалити всі архівні сесії цього проєкту",
|
||||
"sessions.archivePage.deleteProjectAria": "Видалити всі архівні сесії у {label}",
|
||||
"sessions.archivePage.deleteSessionAria": "Видалити {title}",
|
||||
"sessions.archivePage.restoreSessionAria": "Відновити {title}",
|
||||
"sessions.switcher.openAria": "Відкрити перемикач сесій",
|
||||
"sessions.switcher.empty": "Немає недавніх сесій",
|
||||
"sessions.switcher.draftTitle": "Нова сесія",
|
||||
@@ -471,6 +472,11 @@ export const dict: Record<I18nKey, string> = {
|
||||
"sessions.sidebar.bulkActions.archivedPlural": "Заархівовано сесій: {count}",
|
||||
"sessions.sidebar.bulkActions.failedArchiveSingle": "Не вдалося архівувати сесія {count}",
|
||||
"sessions.sidebar.bulkActions.failedArchivePlural": "Не вдалося архівувати сесії {count}",
|
||||
"sessions.sidebar.bulkActions.restore": "Відновити",
|
||||
"sessions.sidebar.bulkActions.restoredSingle": "Відновлено сесію: {count}",
|
||||
"sessions.sidebar.bulkActions.restoredPlural": "Відновлено сесій: {count}",
|
||||
"sessions.sidebar.bulkActions.failedRestoreSingle": "Не вдалося відновити сесія {count}",
|
||||
"sessions.sidebar.bulkActions.failedRestorePlural": "Не вдалося відновити сесії {count}",
|
||||
"sessions.sidebar.folders.none": "Папок ще немає",
|
||||
"sessions.sidebar.folders.newFolderEllipsis": "Нова папка...",
|
||||
"sessions.sidebar.folders.removeFromFolder": "Видалити з папки",
|
||||
@@ -574,6 +580,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
"sessions.sidebar.session.delete.error": "Не вдалося видалити сесію",
|
||||
"sessions.sidebar.session.archive.success": "Сесію заархівовано",
|
||||
"sessions.sidebar.session.archive.error": "Не вдалося заархівувати сесію",
|
||||
"sessions.sidebar.session.restore.success": "Сесію відновлено",
|
||||
"sessions.sidebar.session.restore.error": "Не вдалося відновити сесію",
|
||||
"sessions.sidebar.group.pr.checksPassed": "Перевірки {success}/{total} пройдено",
|
||||
"sessions.sidebar.group.pr.failingCount": "{count} з помилкою",
|
||||
"sessions.sidebar.group.pr.pendingCount": "{count} очікує",
|
||||
|
||||
@@ -450,6 +450,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.archivePage.deleteProject': '删除此项目的所有已归档会话',
|
||||
'sessions.archivePage.deleteProjectAria': '删除 {label} 的所有已归档会话',
|
||||
'sessions.archivePage.deleteSessionAria': '删除 {title}',
|
||||
'sessions.archivePage.restoreSessionAria': '还原 {title}',
|
||||
'sessions.switcher.openAria': '打开会话切换器',
|
||||
'sessions.switcher.empty': '没有最近会话',
|
||||
'sessions.switcher.draftTitle': '新会话',
|
||||
@@ -471,6 +472,11 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.bulkActions.archivedPlural': '已归档 {count} 个会话',
|
||||
'sessions.sidebar.bulkActions.failedArchiveSingle': '归档 {count} 个会话失败',
|
||||
'sessions.sidebar.bulkActions.failedArchivePlural': '归档 {count} 个会话失败',
|
||||
'sessions.sidebar.bulkActions.restore': '还原',
|
||||
'sessions.sidebar.bulkActions.restoredSingle': '已还原 {count} 个会话',
|
||||
'sessions.sidebar.bulkActions.restoredPlural': '已还原 {count} 个会话',
|
||||
'sessions.sidebar.bulkActions.failedRestoreSingle': '还原 {count} 个会话失败',
|
||||
'sessions.sidebar.bulkActions.failedRestorePlural': '还原 {count} 个会话失败',
|
||||
'sessions.sidebar.folders.none': '暂无文件夹',
|
||||
'sessions.sidebar.folders.newFolderEllipsis': '新建文件夹...',
|
||||
'sessions.sidebar.folders.removeFromFolder': '从文件夹中移除',
|
||||
@@ -574,6 +580,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.session.delete.error': '删除会话失败',
|
||||
'sessions.sidebar.session.archive.success': '会话已归档',
|
||||
'sessions.sidebar.session.archive.error': '归档会话失败',
|
||||
'sessions.sidebar.session.restore.success': '会话已还原',
|
||||
'sessions.sidebar.session.restore.error': '还原会话失败',
|
||||
'sessions.sidebar.group.pr.checksPassed': '{success}/{total} 项检查已通过',
|
||||
'sessions.sidebar.group.pr.failingCount': '{count} 项失败',
|
||||
'sessions.sidebar.group.pr.pendingCount': '{count} 项等待中',
|
||||
|
||||
@@ -463,6 +463,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.archivePage.deleteProject': '刪除此專案的所有已封存工作階段',
|
||||
'sessions.archivePage.deleteProjectAria': '刪除 {label} 的所有已封存工作階段',
|
||||
'sessions.archivePage.deleteSessionAria': '刪除 {title}',
|
||||
'sessions.archivePage.restoreSessionAria': '還原 {title}',
|
||||
'sessions.switcher.openAria': '開啟會話切換器',
|
||||
'sessions.switcher.empty': '沒有最近會話',
|
||||
'sessions.switcher.draftTitle': '新會話',
|
||||
@@ -484,6 +485,11 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.bulkActions.archivedPlural': '已封存 {count} 個會話',
|
||||
'sessions.sidebar.bulkActions.failedArchiveSingle': '封存 {count} 個會話失敗',
|
||||
'sessions.sidebar.bulkActions.failedArchivePlural': '封存 {count} 個會話失敗',
|
||||
'sessions.sidebar.bulkActions.restore': '還原',
|
||||
'sessions.sidebar.bulkActions.restoredSingle': '已還原 {count} 個會話',
|
||||
'sessions.sidebar.bulkActions.restoredPlural': '已還原 {count} 個會話',
|
||||
'sessions.sidebar.bulkActions.failedRestoreSingle': '還原 {count} 個會話失敗',
|
||||
'sessions.sidebar.bulkActions.failedRestorePlural': '還原 {count} 個會話失敗',
|
||||
'sessions.sidebar.folders.none': '暫無資料夾',
|
||||
'sessions.sidebar.folders.newFolderEllipsis': '新增資料夾...',
|
||||
'sessions.sidebar.folders.removeFromFolder': '從資料夾中移除',
|
||||
@@ -587,6 +593,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'sessions.sidebar.session.delete.error': '刪除會話失敗',
|
||||
'sessions.sidebar.session.archive.success': '會話已封存',
|
||||
'sessions.sidebar.session.archive.error': '封存會話失敗',
|
||||
'sessions.sidebar.session.restore.success': '會話已還原',
|
||||
'sessions.sidebar.session.restore.error': '還原會話失敗',
|
||||
'sessions.sidebar.group.pr.checksPassed': '{success}/{total} 項檢查已通過',
|
||||
'sessions.sidebar.group.pr.failingCount': '{count} 項失敗',
|
||||
'sessions.sidebar.group.pr.pendingCount': '{count} 項等待中',
|
||||
|
||||
Reference in New Issue
Block a user