Archive and trash
Deleting a session in TabControl isn’t immediate. Everything goes to a trash state first, where it stays recoverable for a configurable retention window. If you truly want it gone, one extra click does the trick.
How delete works
Section titled “How delete works”When you click Delete on a session:
- The session is marked with a
deletedAttimestamp. - It disappears from the main sessions list.
- It appears in Trash with a “deleted N days ago” indicator.
- It still counts toward your local database, but is hidden from normal views.
Nothing has actually been removed at this point. You can bring it back with one click.
Restore from trash
Section titled “Restore from trash”- Open the TabControl app or the settings page.
- Go to Sessions → Trash.
- Find the session.
- Click Restore.
The session moves back to your main list exactly as it was — same name, same tabs, same tags, same category. Restoring from trash only brings the record back. You still have to restore the session the normal way to reopen the tabs.
Permanently delete
Section titled “Permanently delete”From the Trash view, click Delete permanently on a session. This is a one-way action: the row is removed from the local SQLite database, and on your next sync, it’s also removed from your private CloudKit database.
There is no undo after permanent delete.
Auto-purge old trashed sessions
Section titled “Auto-purge old trashed sessions”In Settings → Tab Save/Restore → Retention, you can set how long sessions stay in trash before being permanently removed. The default is 30 days.
Automatic purge runs when TabControl starts and once a day thereafter. It only removes sessions whose deletedAt is older than your retention setting. Locked sessions are never purged, even if deleted.
Empty trash
Section titled “Empty trash”If you don’t want to wait for the retention window, Settings → Sessions → Trash → Empty Trash permanently deletes every session currently in trash. There’s a confirmation step.
Locked sessions
Section titled “Locked sessions”A locked session behaves almost exactly like an unlocked one with one critical difference: the delete action is disabled. To delete a locked session you have to unlock it first (right-click → Unlock).
Lock anything you’d be annoyed to lose.
When sync is involved
Section titled “When sync is involved”Soft-deletes and restores propagate through iCloud sync:
- Deleting on one Mac: the session disappears from all your Macs’ main lists and appears in all their trash views.
- Restoring on one Mac: the session returns to all your Macs’ main lists.
- Permanent delete on one Mac: the session is gone everywhere. Next sync on each other Mac removes it.
Conflict resolution is last-write-wins on the deletedAt timestamp. If you delete a session on one Mac and rename it on another within the same sync window, both operations land — rename wins for the name, delete wins for the state.
Database maintenance
Section titled “Database maintenance”You don’t normally need to think about the underlying storage, but if you want to reclaim disk space after a big purge, the database SQLite file auto-vacuums over time. Manual compaction isn’t exposed in the UI.
- Import and export — move sessions in and out as JSON.