Skip to content

Commit 076270f

Browse files
committed
release: v2.2.1
- Bump version to 2.2.1 (app + frontend + README)\n- Remove Restore Account Only end-to-end (Sessions UI, Wails bindings, backend API)\n- Remove beep-on-completion setting + toast beep behavior\n- Remove Settings > Management section (Import/Export/Reset UI)\n- Update VSCode preset backup items to core Roaming/Code layout and mark all as required\n- Additional Folders hint now app-relevant (~/.vscode / ~/.codeium / ~/.antigravity)\n- Sessions: New Backup flow supports kill-and-continue when app is running; backup size recalculates by type\n- Modals: Esc closes dialogs reliably; ConfirmModal stops immediate propagation to avoid double-close\n- Backend: backup.Session created/modified now RFC3339 strings (bindings clean; no time.Time warning)\n- Process killer timeouts tuned for faster retries\n- Changelog rewritten with meaningful 2.2.1 vs 2.2.0 summary\n\nFiles: CHANGELOG.md, README.md, frontend/src/lib/*, internal/*, docs/vscode-backup-report.md
1 parent e956e05 commit 076270f

20 files changed

Lines changed: 483 additions & 669 deletions

CHANGELOG.md

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,31 @@
22

33
All notable changes to SurfManager will be documented in this file.
44

5+
## [2.2.1] - 2026-02-05
6+
7+
### Summary (vs 2.2.0)
8+
9+
This release focuses on simplifying the product surface area and making backup/restore flows clearer.
10+
11+
### 🗑️ Removed Features
12+
13+
- Removed "Restore Account Only" (Sessions UI + backend API)
14+
- Removed "Beep on completion" setting
15+
- Removed Settings > Management section (Import/Export/Reset UI)
16+
17+
### ✨ Improvements
18+
19+
**Sessions**
20+
- Create New Backup: when the app is running, the primary action becomes "Kill and Continue Create Backup"
21+
- Backup size now recalculates based on selected Backup Type (Full vs Addon Only)
22+
- Running warning text updated to match the new kill-and-continue flow
23+
- Sessions context menu simplified (removed account-only restore)
24+
25+
**Config**
26+
- Add Application modal refined (more compact layout, reduced scrolling)
27+
- VSCode preset backup items updated to core data layout (Roaming/Code) and marked as required
28+
- Additional Folders hint example is now app-relevant (e.g., ~/.vscode)
29+
530
## [2.2.0] - 2026-02-05
631

732
### ✨ New Features
@@ -12,7 +37,6 @@ All notable changes to SurfManager will be documented in this file.
1237
- Corrupted backup detection now surfaces a badge in Sessions and a count in Reset tab stats
1338

1439
**Configuration & Platform Help**
15-
- Added process name mapping in Config tab to improve running-app detection
1640
- Added platform-aware data path hints for Windows/macOS/Linux in Config and Reset tabs
1741

1842
**Observability**
@@ -22,7 +46,7 @@ All notable changes to SurfManager will be documented in this file.
2246
**Settings & Behavior**
2347
- Settings can be exported/imported per section with a preview of incoming keys
2448
- Startup actions: remember last tab and auto-refresh Sessions on launch; defaults updated for smoother startup
25-
- Notification controls: mute non-critical toasts, toggle toast sound, and beep on completion
49+
- Notification controls: mute non-critical toasts, toggle toast sound
2650

2751
### 🗑️ Removed Features
2852

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# SurfManager v2.2.0
1+
# SurfManager v2.2.1
22

33
> **Advanced Session & Data Manager for Development Tools**
44
5-
[![Version](https://img.shields.io/badge/version-2.2.0-brightgreen.svg)](https://github.com/risunCode/SurfManager)
5+
[![Version](https://img.shields.io/badge/version-2.2.1-brightgreen.svg)](https://github.com/risunCode/SurfManager)
66
[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-blue.svg)](https://github.com/risunCode/SurfManager)
77
[![Go](https://img.shields.io/badge/go-1.22+-00ADD8.svg)](https://golang.org/)
88
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
@@ -14,7 +14,7 @@
1414
**SurfManager** is a modern solution for managing session data of development tools like VS Code, Cursor, Windsurf, and similar applications. Built with Go + Wails + Svelte for blazing fast performance and a beautiful native UI.
1515

1616
Perfect for developers who need to:
17-
- 🔄 Switch between multiple accounts/profiles effortlessly
17+
- 🔄 Switch between multiple sessions/profiles effortlessly
1818
- 💾 Backup workspace settings before experimenting
1919
- 🚀 Maintain organized development workflows
2020
- 🛡️ Have a safety net for important configurations
@@ -45,7 +45,7 @@ Perfect for developers who need to:
4545
| Feature | Description |
4646
|---------|-------------|
4747
| **📱 Session Management** | Backup, restore, and manage multiple app sessions |
48-
| **🔄 Account Switching** | Switch between different accounts in seconds |
48+
| **🔄 Profile Switching** | Switch between different sessions/profiles in seconds |
4949
| **🛠️ Smart App Close** | Auto-close running apps before operations (optional) |
5050
| **📊 Progress Tracking** | Real-time progress bars for all operations |
5151
| **🔍 Search & Filter** | Quick search through sessions and auto-backups |
@@ -108,7 +108,7 @@ SurfManager manages app data stored in platform-specific locations:
108108

109109
**Step 3: Switch Between Accounts**
110110
1. Go to Sessions tab
111-
2. Right-click session → Restore
111+
2. Restore the session
112112
3. Launch your IDE - you're logged in! 🎉
113113

114114
### Tips

app.go

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -784,63 +784,6 @@ func (a *App) RestoreBackup(appKey, sessionName string, skipClose bool) error {
784784
return err
785785
}
786786

787-
// RestoreAccountOnly restores only the auth state file (state.vscdb) for quick account switch
788-
func (a *App) RestoreAccountOnly(appKey, sessionName string) error {
789-
cfg := a.GetApp(appKey)
790-
if cfg == nil {
791-
return fmt.Errorf("app not found: %s", appKey)
792-
}
793-
794-
dataPath := a.GetAppDataPath(appKey)
795-
if dataPath == "" {
796-
if len(cfg.Paths.DataPaths) > 0 {
797-
dataPath = cfg.Paths.DataPaths[0]
798-
} else {
799-
return fmt.Errorf("no data path configured for %s", cfg.DisplayName)
800-
}
801-
}
802-
803-
// Always close the app first (required for file lock release)
804-
processNames := a.collectProcessNames(cfg)
805-
806-
if len(processNames) > 0 {
807-
wailsRuntime.EventsEmit(a.ctx, "progress", map[string]interface{}{
808-
"percent": 10,
809-
"message": fmt.Sprintf("Closing %s...", cfg.DisplayName),
810-
})
811-
if err := a.process.SmartClose(cfg.DisplayName, processNames); err != nil {
812-
return fmt.Errorf("failed to close %s: %w", cfg.DisplayName, err)
813-
}
814-
}
815-
816-
// Restore only the auth state file
817-
wailsRuntime.EventsEmit(a.ctx, "progress", map[string]interface{}{
818-
"percent": 50,
819-
"message": "Switching account...",
820-
})
821-
822-
err := a.backup.RestoreAccountOnly(appKey, sessionName, dataPath, func(p backup.BackupProgress) {
823-
wailsRuntime.EventsEmit(a.ctx, "progress", map[string]interface{}{
824-
"percent": p.Percent,
825-
"message": p.Message,
826-
})
827-
})
828-
829-
if err == nil {
830-
// Set as active session after successful restore
831-
a.backup.SetActiveSession(appKey, sessionName)
832-
833-
// Generate new IDs after successful restore
834-
count, _ := a.GenerateNewID(appKey)
835-
wailsRuntime.EventsEmit(a.ctx, "progress", map[string]interface{}{
836-
"percent": 100,
837-
"message": fmt.Sprintf("Account switched! Updated %d ID(s)", count),
838-
})
839-
}
840-
841-
return err
842-
}
843-
844787
// DeleteSession deletes a backup session
845788
func (a *App) DeleteSession(appKey, sessionName string) error {
846789
return a.backup.DeleteSession(appKey, sessionName)

docs/vscode-backup-report.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
C:\Users\xxxx\AppData\Roaming\Code
2+
│ DIPS
3+
│ languagepacks.json
4+
│ Local State
5+
│ machineid
6+
│ Preferences
7+
8+
├───Network
9+
│ Cookies
10+
│ Cookies-journal
11+
│ Network Persistent State
12+
│ NetworkDataMigrated
13+
│ TransportSecurity
14+
│ Trust Tokens
15+
│ Trust Tokens-journal
16+
17+
└───User
18+
│ settings.json
19+
20+
└───globalStorage
21+
state.vscdb
22+
state.vscdb.backup
23+
storage.json

frontend/package-lock.json

Lines changed: 2 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "frontend",
33
"private": true,
4-
"version": "2.2.0",
4+
"version": "2.2.1",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",

frontend/package.json.md5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
53f22497a396d833a6583545b3f5cbbd
1+
0880540a82c9d48ae6d1b07e74b7df9b

0 commit comments

Comments
 (0)