diff --git a/CHANGELOG.md b/CHANGELOG.md index 13ee4a5..6079391 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to ClaudePortable are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Fixed + +- **Discovery no longer shows a permanently-empty `coworkSessions` row.** + The `%USERPROFILE%\.cowork` candidate was an unverified Spec 1.1 guess that + does not exist on the Store-app Claude Desktop, so its read-only EXISTS box + always rendered unchecked and looked like a broken toggle. Removed the + vestigial entry from `WindowsPathDiscovery` and its `cowork/sessions` + archive-prefix mapping. Cowork data is unaffected: session state under + `%APPDATA%\Claude\local-agent-mode-sessions` is already covered by the + Claude Desktop AppData path, and project folders are captured by + `CoworkProjectDiscovery` under `cowork-projects/`. The Discovery + caption now explains that EXISTS is a status indicator, not a toggle. The + restore-side legacy mapping for `cowork/sessions` is retained so older ZIPs + still restore correctly. + ## [0.3.0] - 2026-05-29 ### Added diff --git a/src/ClaudePortable.App/Ui/Views/MainWindow.xaml b/src/ClaudePortable.App/Ui/Views/MainWindow.xaml index 63060c6..eb1d66f 100644 --- a/src/ClaudePortable.App/Ui/Views/MainWindow.xaml +++ b/src/ClaudePortable.App/Ui/Views/MainWindow.xaml @@ -224,7 +224,7 @@ - + What ClaudePortable found on this machine. The EXISTS column is a read-only status indicator, not a toggle - paths that do not exist are skipped during backup. Cowork is not listed as its own row: session state lives under AppData\Roaming\Claude\local-agent-mode-sessions (already covered by the Claude Desktop AppData row), and the project folders you opened in Cowork are auto-discovered and backed up separately. diff --git a/src/ClaudePortable.Core/Backup/BackupEngine.cs b/src/ClaudePortable.Core/Backup/BackupEngine.cs index ed659a9..b697187 100644 --- a/src/ClaudePortable.Core/Backup/BackupEngine.cs +++ b/src/ClaudePortable.Core/Backup/BackupEngine.cs @@ -173,7 +173,6 @@ private static string BuildFilename(DateTimeOffset timestamp, RetentionTier tier "claudeDesktopAppData" => "claude-desktop/appdata", "claudeDesktopLocalAppData" => "claude-desktop/localappdata", "claudeCodeUserProfile" => "claude-code/dotclaude", - "coworkSessions" => "cowork/sessions", _ => key, }; diff --git a/src/ClaudePortable.Core/Discovery/WindowsPathDiscovery.cs b/src/ClaudePortable.Core/Discovery/WindowsPathDiscovery.cs index 2b8e28c..9d3eb5b 100644 --- a/src/ClaudePortable.Core/Discovery/WindowsPathDiscovery.cs +++ b/src/ClaudePortable.Core/Discovery/WindowsPathDiscovery.cs @@ -29,11 +29,18 @@ private static readonly (string Key, string[] Candidates, string Source)[] Known new[] { @"%USERPROFILE%\.claude" }, "Spec 1.1 + verified 2026-04-22" ), - ( - "coworkSessions", - new[] { @"%USERPROFILE%\.cowork" }, - "Spec 1.1 (assumed, ProcMon pending)" - ), + // NOTE: there is intentionally no "coworkSessions" entry here. + // The original Spec 1.1 guess of %USERPROFILE%\.cowork was never + // verified and does not exist on the Store-app Claude Desktop. + // Phase-0 verification (docs/discovered-paths.md, 2026-04-23) + // established that Cowork session state actually lives under + // %APPDATA%\Claude\local-agent-mode-sessions\\..., which is a + // subfolder of "claudeDesktopAppData" above and is therefore already + // backed up. The user-selected project roots referenced by those + // sessions are captured separately by CoworkProjectDiscovery under + // the "cowork-projects/" archive prefix. A standalone .cowork + // row would only ever show EXISTS = false and would duplicate the + // local-agent-mode-sessions subtree in the ZIP if repointed. ( "claudeDesktopLocalAppData", new[]