feat(p10): archivage automatique des sessions terminées (rétention configurable)
- DB: migration #10 (sessions.archived_at + index), helpers archive/unarchive/archiveExpired (soft-archive, jamais de DELETE) - core/retention-settings.ts: session_retention_days (défaut 30, 0=jamais, 1-3650) + session_purge_days (off) - core/session-archive.ts: scheduler start/stop/sweep (calqué DiscoveryService), câblé dans runDaemon - pty-manager.list({includeArchived}) + SessionSummary.archived + emitHistoricalUpdate - routes: GET /sessions?includeArchived, POST/DELETE /sessions/:id/archive, POST /sessions/archive-now - protocole additif: message WS session_archived (relayé par la gateway, abonnés 'sessions') - settings: retentionDays/purgeDays exposés et validés dans PATCH /settings - web: store sessions (showArchived + archive/unarchive), SessionsListView (toggle/badge/actions), SettingsView (slider rétention), i18n EN+FR - tests: retention-settings + session-archive (vitest) + settings-routes étendu ; acceptance-p10.mjs (sweep, event WS, resume d'une session archivée → 201, rétention=0)
This commit is contained in:
@@ -47,6 +47,11 @@ export default {
|
||||
hideDiscovered: 'Hide external history',
|
||||
showHidden: 'Show hidden',
|
||||
hideHidden: 'Hide hidden',
|
||||
archive: 'Archive',
|
||||
unarchive: 'Unarchive',
|
||||
archivedBadge: 'archived',
|
||||
showArchived: 'Show archived',
|
||||
hideArchived: 'Hide archived',
|
||||
clients: 'no client | 1 client | {n} clients',
|
||||
exitCode: 'exit code {code}',
|
||||
statusLabel: {
|
||||
@@ -342,6 +347,8 @@ export default {
|
||||
sessionHidden: 'Session hidden',
|
||||
sessionUnhidden: 'Session shown',
|
||||
sessionsHidden: 'no session hidden | 1 session hidden | {n} sessions hidden',
|
||||
sessionArchived: 'Session archived',
|
||||
sessionUnarchived: 'Session unarchived',
|
||||
repoAdded: 'Repository added',
|
||||
repoRemoved: 'Repository removed',
|
||||
worktreeCreated: 'Worktree created',
|
||||
@@ -413,6 +420,11 @@ export default {
|
||||
removeRoot: 'Remove',
|
||||
scanInterval: 'Re-scan interval (minutes)',
|
||||
scanIntervalHint: '0 disables periodic scanning. Changes apply on the next daemon restart.',
|
||||
// Sessions (rétention / archivage auto)
|
||||
sessions: 'Sessions',
|
||||
sessionsHint: 'Finished sessions older than the retention window are automatically archived (hidden from the list by default). Nothing is deleted — archived sessions stay resumable and forkable.',
|
||||
retentionDays: 'Auto-archive after (days)',
|
||||
retentionDaysHint: '0 never archives. Archived sessions are hidden by default; toggle "Show archived" in the sessions list to see them.',
|
||||
// Claude CLI
|
||||
claudeCli: 'Claude CLI',
|
||||
claudeCliHint: 'Where Arboretum finds the `claude` binary and its data. Handy when the daemon runs as a service with a minimal PATH that does not include ~/.local/bin.',
|
||||
|
||||
Reference in New Issue
Block a user