session-steward 0.10.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.11.0] - 2026-09-14
4
+
5
+ ### Added
6
+
7
+ - Sessions and workspaces can be marked Keep so manual and scheduled Session Steward cleanup skip them without indexing transcripts or changing provider data.
8
+
9
+ ## [0.10.3] - 2026-09-10
10
+
11
+ ### Fixed
12
+
13
+ - Deleted Codex sessions no longer linger in the ChatGPT sidebar.
14
+ - Claude cleanup now handles stale session markers, protects shared history, and removes leftover session files.
15
+
3
16
  ## [0.10.2] - 2026-09-07
4
17
 
5
18
  ### Fixed
@@ -155,6 +168,8 @@
155
168
  - Support for custom Codex home folders and a saved folder preference.
156
169
  - Streaming and bounded-memory discovery for large session collections and transcripts.
157
170
 
171
+ [0.11.0]: https://github.com/mallikcheripally/session-steward/compare/v0.10.3...v0.11.0
172
+ [0.10.3]: https://github.com/mallikcheripally/session-steward/compare/v0.10.2...v0.10.3
158
173
  [0.10.2]: https://github.com/mallikcheripally/session-steward/compare/v0.10.1...v0.10.2
159
174
  [0.10.1]: https://github.com/mallikcheripally/session-steward/compare/v0.10.0...v0.10.1
160
175
  [0.10.0]: https://github.com/mallikcheripally/session-steward/compare/v0.9.0...v0.10.0
package/README.md CHANGED
@@ -19,6 +19,7 @@ Session Steward makes session cleanup safer by finding those records, showing wh
19
19
  - See session counts and the storage used by recognized session files.
20
20
  - Find sessions inactive for 30, 60, or 90 days.
21
21
  - Filter active or archived sessions by workspace, name, or session ID.
22
+ - Mark important sessions or workspaces Keep so cleanup skips them.
22
23
  - Inspect session details and affected records before deletion.
23
24
  - Read a session timeline of what you asked, what changed, and which commands ran.
24
25
  - See how many tokens a session used, split into fresh input, cached input, cache writes, and output.
@@ -35,7 +36,11 @@ Session Steward makes session cleanup safer by finding those records, showing wh
35
36
  - Thorough cleanup is unavailable when the detected storage format is not supported.
36
37
  - Cleanup stays local and does not upload session contents.
37
38
 
38
- At startup, Session Steward may contact the public npm registry to check for a newer version.
39
+ ### Keep important sessions
40
+
41
+ Mark a session or workspace Keep and Session Steward skips it during manual and scheduled cleanup. A workspace Keep also covers descendant folders and future sessions there.
42
+
43
+ It protects against Session Steward cleanup only. Codex or Claude Code can still remove the data.
39
44
 
40
45
  ### Session Steward does not remove
41
46
 
@@ -46,6 +51,8 @@ At startup, Session Steward may contact the public npm registry to check for a n
46
51
  - Conversations stored in your ChatGPT or Claude account
47
52
  - Claude Code worktrees, branches, repositories, remote sessions, SSH sessions, or Cowork data
48
53
 
54
+ At startup, Session Steward may contact the public npm registry to check for a newer version.
55
+
49
56
  ## Install and get started
50
57
 
51
58
  Session Steward supports macOS, Linux, and Windows and requires Node.js 24.15 or newer.
@@ -192,6 +199,10 @@ workspace /path/to/project
192
199
  internals
193
200
  supporting
194
201
  tokens
202
+ keep 3
203
+ unkeep 3
204
+ keep-workspace /path/to/project
205
+ unkeep-workspace /path/to/project
195
206
  cleanup standard
196
207
  cleanup thorough
197
208
  overview
@@ -200,6 +211,9 @@ backups
200
211
 
201
212
  Run `inactive`, `archive`, or `workspace` without a value to clear that filter.
202
213
 
214
+ `keep` and `unkeep` accept session selectors. `keep-workspace` and
215
+ `unkeep-workspace` accept a full path.
216
+
203
217
  `backups` lists recovery backups retained after an interrupted or unsuccessful cleanup. Use `restore <number>` to restore one, or `delete-backup <number>` to remove it permanently. Both actions require an explicit confirmation.
204
218
 
205
219
  </details>
@@ -229,6 +243,8 @@ You can then ask things like:
229
243
  - “Find sessions I have not used in 60 days.”
230
244
  - “Show sessions from this workspace, largest first.”
231
245
  - “Delete those sessions.”
246
+ - “Keep this session from Session Steward cleanup.”
247
+ - “Keep every session in this workspace.”
232
248
  - “Every 12 days, delete sessions I have not used in 45 days.”
233
249
  - “Restore my latest backup.”
234
250
 
@@ -106,6 +106,7 @@ async function main() {
106
106
  archiveStatus: values["archive-status"],
107
107
  backups: values.backups ?? false,
108
108
  cleanup: values.cleanup,
109
+ configDirectory: settings.getConfigDirectory(),
109
110
  events: values.events ?? false,
110
111
  eventsLimit,
111
112
  help,
@@ -37,13 +37,17 @@ Options:
37
37
  "../lib/cleanup-schedules.mjs"
38
38
  );
39
39
  const { createProviderSettings } = await import("../lib/settings.mjs");
40
+ const { createSessionProtectionStore } = await import("../lib/session-protections.mjs");
40
41
  const settings = await createProviderSettings({
41
42
  configDirectory: values["config-directory"],
42
43
  });
43
44
  const scheduleStore = createCleanupScheduleStore({
44
45
  configDirectory: settings.getConfigDirectory(),
45
46
  });
46
- const results = await runDueCleanupSchedules({ scheduleStore, settings });
47
+ const protectionStore = createSessionProtectionStore({
48
+ configDirectory: settings.getConfigDirectory(),
49
+ });
50
+ const results = await runDueCleanupSchedules({ protectionStore, scheduleStore, settings });
47
51
  if (results.some((result) => ["failed", "recovery-failed"].includes(result.status))) {
48
52
  process.exitCode = 1;
49
53
  }