Skip to content

Commit f415432

Browse files
Merge pull request #6 from Commanderx-code/release/0.7.0
Release 0.7.0: backup file history
2 parents 7555bec + f0b722c commit f415432

20 files changed

Lines changed: 382 additions & 39 deletions

‎CHANGELOG.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
Release downloads and full notes are available on [GitHub Releases](https://github.com/Commanderx-code/command-center/releases).
44

5+
## [0.7.0](https://github.com/Commanderx-code/command-center/releases/tag/v0.7.0) — 2026-09-24
6+
7+
- Added **Backup file history**: search every Restic snapshot for a file name, path or pattern, see each saved copy with its snapshot time, size and modification time, spot the versions that changed or a file that was deleted, and restore a chosen version into a new folder.
8+
- Added a [Wiki user guide](https://github.com/Commanderx-code/command-center/wiki) covering every page and feature, linked from the README.
9+
510
## [0.6.0](https://github.com/Commanderx-code/command-center/releases/tag/v0.6.0) — 2026-09-24
611

712
- Command Center is now licensed under the MIT License. Packages include the license and third-party notices.

‎README.md‎

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
<p align="center">
2222
<a href="https://github.com/Commanderx-code/command-center/releases/latest">Download</a> ·
23+
<a href="https://github.com/Commanderx-code/command-center/wiki">Wiki guide</a> ·
2324
<a href="docs/installation.md">Installation</a> ·
2425
<a href="docs/user-guide.md">User guide</a> ·
2526
<a href="CONTRIBUTING.md">Contributing</a> ·
@@ -46,6 +47,12 @@ Command Center brings [Commander Toolbox](https://github.com/Commanderx-code/com
4647

4748
The app runs as your normal user. Commands are reviewed before execution; Toolbox scripts retain their own privilege checks and confirmations. Integration paths are editable in **Settings**. See the [user guide](docs/user-guide.md) for exact behavior and limitations.
4849

50+
## New in 0.7.0
51+
52+
- **Backup file history:** search every backup snapshot for a file, see each saved version with its date, size and whether it changed, spot files that were deleted, and restore the version you want into a new folder.
53+
54+
Read [Backup file history](docs/user-guide.md#backup-file-history) in the user guide.
55+
4956
## New in 0.6.0
5057

5158
- Setup imports can merge with this machine's setup, and an import interrupted by a crash or power loss is rolled back automatically on the next launch.
@@ -79,13 +86,13 @@ Read [Workflows, profiles, and recovery verification](docs/operations.md) for se
7986

8087
**[Get the latest release →](https://github.com/Commanderx-code/command-center/releases/latest)**
8188

82-
| Package | Download v0.6.0 | Install the downloaded file |
89+
| Package | Download v0.7.0 | Install the downloaded file |
8390
| --------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
84-
| Debian / Ubuntu | [`.deb` · amd64](https://github.com/Commanderx-code/command-center/releases/download/v0.6.0/command-center_0.6.0_amd64.deb) | `sudo apt install ./command-center_0.6.0_amd64.deb` |
85-
| Fedora / RPM | [`.rpm` · x86_64](https://github.com/Commanderx-code/command-center/releases/download/v0.6.0/command-center-0.6.0-1.x86_64.rpm) | `sudo dnf install ./command-center-0.6.0-1.x86_64.rpm` |
86-
| Arch / Garuda | [`.pkg.tar.zst` · x86_64](https://github.com/Commanderx-code/command-center/releases/download/v0.6.0/command-center-0.6.0-1-x86_64.pkg.tar.zst) | `sudo pacman -U ./command-center-0.6.0-1-x86_64.pkg.tar.zst` |
91+
| Debian / Ubuntu | [`.deb` · amd64](https://github.com/Commanderx-code/command-center/releases/download/v0.7.0/command-center_0.7.0_amd64.deb) | `sudo apt install ./command-center_0.7.0_amd64.deb` |
92+
| Fedora / RPM | [`.rpm` · x86_64](https://github.com/Commanderx-code/command-center/releases/download/v0.7.0/command-center-0.7.0-1.x86_64.rpm) | `sudo dnf install ./command-center-0.7.0-1.x86_64.rpm` |
93+
| Arch / Garuda | [`.pkg.tar.zst` · x86_64](https://github.com/Commanderx-code/command-center/releases/download/v0.7.0/command-center-0.7.0-1-x86_64.pkg.tar.zst) | `sudo pacman -U ./command-center-0.7.0-1-x86_64.pkg.tar.zst` |
8794

88-
Version 0.6.0 packages require **Linux x86_64, glibc 2.35+, GTK 3, and WebKitGTK 4.1**. They are install-tested on Ubuntu 22.04 and 24.04, Debian 12, and Fedora 43, and the Arch package on current Arch; the release notes link the workflow run. Release assets include `SHA256SUMS` for verification.
95+
Version 0.7.0 packages require **Linux x86_64, glibc 2.35+, GTK 3, and WebKitGTK 4.1**. They are install-tested on Ubuntu 22.04 and 24.04, Debian 12, and Fedora 43, and the Arch package on current Arch; the release notes link the workflow run. Release assets include `SHA256SUMS` for verification.
8996

9097
Arch/Garuda users can also build the same package with `makepkg -si` from `packaging/aur/`, or develop from source using the [installation guide](docs/installation.md#from-source-on-archgaruda).
9198

@@ -113,6 +120,7 @@ Open `http://127.0.0.1:4173` for a browser preview with sample data. Desktop ope
113120

114121
## Documentation
115122

123+
- **[Wiki: how to use Command Center](https://github.com/Commanderx-code/command-center/wiki)**: a step-by-step guide to every page and feature, plus troubleshooting.
116124
- [Installation](docs/installation.md) — packages, requirements, checksums, and source builds.
117125
- [User guide](docs/user-guide.md) — features, integrations, command behavior, and local data.
118126
- [Development](docs/development.md) — repository layout, checks, and Toolbox updates.

‎docs/installation.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@ Each downloaded package must report `OK`. The `--ignore-missing` option lets you
1919
On a compatible Debian/Ubuntu system:
2020

2121
```bash
22-
sudo apt install ./command-center_0.6.0_amd64.deb
22+
sudo apt install ./command-center_0.7.0_amd64.deb
2323
```
2424

2525
On a compatible Fedora/RPM system:
2626

2727
```bash
28-
sudo dnf install ./command-center-0.6.0-1.x86_64.rpm
28+
sudo dnf install ./command-center-0.7.0-1.x86_64.rpm
2929
```
3030

3131
On Arch or an Arch-based system such as Garuda (0.6.0 and later):
3232

3333
```bash
34-
sudo pacman -U ./command-center-0.6.0-1-x86_64.pkg.tar.zst
34+
sudo pacman -U ./command-center-0.7.0-1-x86_64.pkg.tar.zst
3535
```
3636

3737
The Arch package is built from the release tag with `packaging/aur/PKGBUILD` in a clean Arch container and tracks current Arch libraries; update your system before installing it. To build it yourself instead, run `makepkg -si` from a copy of `packaging/aur/`.

‎docs/release-notes.md‎

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,33 @@
1-
Command Center 0.6.0 makes setup imports safer, runs independent jobs side by side, and brings the packages to older distributions.
1+
Command Center 0.7.0 adds backup file history: find every saved version of a file across your backups and restore the one you want.
22

33
### What's new
44

5-
- **Merge setup imports:** choose **Merge** (the default) to keep this machine's preferences and saved definitions and add the bundle's new workflows, machine profiles, personal tools, quick actions, workspace profiles, scan folders, and Toolbox favorites. Empty integration paths are filled; different items whose IDs already exist here are kept and listed in the preview. **Replace** works as before.
6-
- **Interrupted imports recover automatically:** imports now keep a journal. If the app or computer stops mid-import, the next launch restores every file from the pre-import backup before the interface opens and tells you on the dashboard.
7-
- **Run several jobs:** repository actions and project tasks in different repositories run at the same time, alongside one workstation task such as a backup, installer, or Home Manager switch. Jobs in the same folder, and embedded-terminal sessions, still take turns; a waiting job names the job it is waiting for. Stop each job from Activity.
8-
- **Wider distribution support:** packages now require glibc 2.35+ instead of 2.39, adding Ubuntu 22.04 and Debian 12. Every package is install- and launch-tested on Ubuntu 22.04, Debian 12, Ubuntu 24.04, and Fedora 43, and the Arch recipe is built, linted, and launched in a clean Arch container.
9-
- **MIT licensed:** Command Center is now released under the MIT License. The `.deb`, `.rpm`, and Arch packages include the license and the bundled third-party notices.
10-
- **Favorites saved with your data:** Toolbox favorites move from webview storage into the app's data folder on first launch and are included transactionally in setup imports.
5+
- **Backup file history:** in **Backup & Restore → File history**, search all Restic snapshots for a file name (for example `notes.md`, matched in any folder), an exact path (`~/Documents/report.odt`), or a pattern (`*.kdbx`), with optional **Ignore case**.
6+
- **See how a file changed over time:** results are grouped by path, newest first. Each saved copy shows when it was backed up, the snapshot and host, and the file's modification time and size, marked **First saved**, **Changed** or **Same as previous**. **Show only versions that changed** hides identical copies.
7+
- **Find deleted files:** if newer snapshots of the same machine and backup path no longer contain a file, the result says it may have been deleted or moved, and when it was last saved.
8+
- **Restore a chosen version:** **Restore this version** fills the restore form with that snapshot and the file's exact path. Pick a new destination folder and review. Restores still never overwrite existing files and are verified as they're written.
9+
- **Wiki user guide:** a step-by-step guide to every page and feature, now linked from the README: https://github.com/Commanderx-code/command-center/wiki
1110

1211
### Behavior to know
1312

14-
- Merge never changes preferences such as theme, editor, or terminal, and never replaces a non-empty integration path. Use **Replace** to adopt another machine's setup wholesale.
15-
- The backup health helper, password-file, and wallet settings always stay local, as in 0.5.1.
16-
- Automatic recovery only restores the files an import writes. If it cannot finish, the dashboard shows the reason and the manual steps in the [setup guide](https://github.com/Commanderx-code/command-center/blob/v0.6.0/docs/setup-and-workspaces.md).
17-
- Two jobs never share a working directory, so a project task and a Git action in the same repository still run one after the other.
13+
- Searching is a reviewed, read-only job. It lists snapshots, then searches all of them, so it can take a while on large repositories and may ask KWallet to unlock. Nothing is restored until you review a restore.
14+
- "Changed" compares size and modification time between copies. It doesn't compare file contents.
15+
- A search matching a huge number of files can't be displayed. Search a more specific path instead.
16+
- Restic treats `*`, `?` and `[` in paths as pattern characters. For file names containing them, check the include path before restoring.
1817

1918
### Linux downloads
2019

21-
The `.deb` and `.rpm` assets target **x86_64** and require **glibc 2.35+, GTK 3, WebKitGTK 4.1, and the platform's AppIndicator library**. Notifications additionally use `notify-send`. File restores require Restic 0.17+.
20+
The `.deb` and `.rpm` assets target **x86_64** and require **glibc 2.35+, GTK 3, WebKitGTK 4.1, and the platform's AppIndicator library**. Notifications additionally use `notify-send`. File restores and file history require Restic 0.17+.
2221

2322
```sh
2423
# Debian / Ubuntu
25-
sudo apt install ./command-center_0.6.0_amd64.deb
24+
sudo apt install ./command-center_0.7.0_amd64.deb
2625

2726
# Fedora / RPM
28-
sudo dnf install ./command-center-0.6.0-1.x86_64.rpm
27+
sudo dnf install ./command-center-0.7.0-1.x86_64.rpm
2928

3029
# Arch / Garuda (built against current Arch libraries)
31-
sudo pacman -U ./command-center-0.6.0-1-x86_64.pkg.tar.zst
30+
sudo pacman -U ./command-center-0.7.0-1-x86_64.pkg.tar.zst
3231
```
3332

3433
Download `SHA256SUMS` beside the package and run:

‎docs/releases.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
Open Settings → About & updates. Check for releases, read the notes, then export the source updater. Close Command Center and run the displayed command, for example:
66

77
```sh
8-
bash ~/Downloads/update-desktop.sh v0.6.0
8+
bash ~/Downloads/update-desktop.sh v0.7.0
99
```
1010

1111
The helper requires Linux build dependencies, Git, Node/npm, and Rust/Cargo. Run as your normal user, without sudo. It asks you to type the tag, downloads that tag into a temporary checkout, checks its package version, installs dependencies, runs JavaScript and Rust tests, then builds and installs the desktop app. A failed check stops installation. It does not modify your project checkout or app settings. The GitHub tag must already exist; the release checker only advertises published stable releases. Offline/API errors are shown without claiming that the installed version is current. GitHub is contacted only when you request a release check or open its release page.
@@ -25,9 +25,9 @@ This rolls back the binary only, not settings or user data. It applies to the no
2525
Keep package.json, package-lock.json, Cargo.toml, Cargo.lock, and tauri.conf.json versions aligned. Update docs/release-notes.md and CHANGELOG.md. Commit and push the reviewed source, then create and push an annotated tag matching the version:
2626

2727
```sh
28-
git tag -a v0.6.0 -m 'Command Center v0.6.0'
29-
git push origin v0.6.0
30-
npm run release:draft -- v0.6.0
28+
git tag -a v0.7.0 -m 'Command Center v0.7.0'
29+
git push origin v0.7.0
30+
npm run release:draft -- v0.7.0
3131
```
3232

3333
The draft command requires an authenticated GitHub CLI (`gh`). It checks for a clean working tree and a matching local/remote tag and runs the checks and tests. It then finds the successful **Linux packages** run for the tagged commit, downloads that run's `packages` and `arch-package` artifacts, verifies their checksums, writes one `SHA256SUMS` covering the `.deb`, `.rpm`, and Arch package, and creates an **unpublished** GitHub release. The release notes are docs/release-notes.md plus a build-and-validation section linking the workflow run. If CI has not passed for the tag, no draft is created. The command never builds release packages locally: a build on a newer distribution such as Garuda would require a newer glibc than the packages declare. It does not push tags or publish the draft. Download and verify the hosted assets and test the app on your machine before publishing.

‎docs/user-guide.md‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
- **Launch profiles:** save a documentation URL and choose whether a project opens its editor, terminal, and documentation together.
1212
- **Activity:** preview each command before starting, stream output, stop background jobs, and inspect the last 100 results across app restarts. Operations that use different resources can run at the same time (see [Running several jobs](#running-several-jobs)). Background output is capped at 2 MB per job, and truncation is explicit. Failed jobs can be marked reviewed.
1313
- **System Sync:** inspect dotfiles changes, compare Ghostty/Fastfetch sources with their live files, view Home Manager generations, fetch/pull the config repository, build, and apply Home Manager.
14-
- **Backup & Restore:** run your personal backup helper, run the full recovery helper in a terminal for encryption prompts, load recent Restic snapshots, browse directories, check repository metadata, and restore a snapshot or selected path/pattern into a new folder beneath your home directory.
14+
- **Backup & Restore:** run your personal backup helper, run the full recovery helper in a terminal for encryption prompts, load recent Restic snapshots, browse directories, check repository metadata, and restore a snapshot or selected path/pattern into a new folder beneath your home directory, and search a file's history across all snapshots to restore a chosen version.
1515
- **Configuration:** Ghostty font, theme, padding, opacity, and cursor controls; Fastfetch logo/separator controls and module add/remove/reordering. Both include a source editor and illustrative preview. Ghostty uses its installed validator. Fastfetch validates JSONC syntax and module structure; it does not execute command modules or claim full runtime/schema validation.
1616
- **System Health:** filesystem usage, failed user/system services, battery information, cached Arch package updates, installed tools, and locally recorded backup freshness.
1717
- **Needs attention:** changed/unpushed/behind repositories, unreviewed failed jobs, overdue or unavailable backup records, disks at least 90% full, and failed services.
@@ -112,6 +112,16 @@ Every run previews the command and working folder and uses the existing job life
112112

113113
Backup & Restore shows the location status reported by your backup-health helper, the exact last successful backup time when available, and the next setup step. A missing report is **unknown**, not proof that a drive is disconnected. Remote Restic locations are labeled as not connection-tested. Personal/full backup buttons require an executable configured helper and are disabled while checking health or when the helper explicitly reports a configured local drive disconnected. Refresh after attaching a drive. Helpers retain their own checks and prompts.
114114

115+
## Backup file history
116+
117+
**Backup & Restore → File history** finds every saved copy of a file across all snapshots in the configured Restic repository, so you can pick the right version to restore. Enter a file name (`notes.md` matches it in any folder), an exact path starting with `/` or `~/`, or a pattern with `*` and `?`. Select **Ignore case** if needed, then **Search backups**.
118+
119+
The search is a reviewed, read-only job. It lists snapshots, then runs `restic find` over all of them, so it can take a while on large repositories and may ask KWallet to unlock. Nothing is restored.
120+
121+
Results are grouped by path, newest first. Each saved copy shows the snapshot time, snapshot ID, host, file modification time and size, and whether it is the **first saved** copy, **changed** from the previous copy (different size or modification time), or the **same as previous**. **Show only versions that changed** hides identical copies. If newer snapshots of the same host and backup path no longer contain the file, the result says it may have been deleted or moved.
122+
123+
**Restore this version** selects that snapshot and the file's exact path in the restore form. Choose a new destination folder and **Review restore**: restores never overwrite existing files. Searches that match a very large number of files cannot be read; search a more specific path instead. File names containing `*`, `?` or `[` are treated as patterns by Restic, so check the include path before restoring such a file.
124+
115125
## Services and backup timers
116126

117127
**Services** lists installed and loaded units, filters by name/description/state, and displays properties plus the latest 100 journal entries. User services support reviewed start, stop, and restart operations. System services are view-only; available logs depend on your existing journal permissions. Template units without an instance are omitted. A systemd action can continue in the service manager after its command-line client is stopped; inspect the service state before retrying.

‎package-lock.json‎

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

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "command-center",
3-
"version": "0.6.0",
3+
"version": "0.7.0",
44
"private": true,
55
"type": "module",
66
"description": "A Linux control deck for repositories, configuration, backup, and recovery.",

‎packaging/aur/.SRCINFO‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
pkgbase = command-center
22
pkgdesc = Local Linux workstation dashboard for repositories, backups, configuration and Toolbox
3-
pkgver = 0.6.0
3+
pkgver = 0.7.0
44
pkgrel = 1
55
url = https://github.com/Commanderx-code/command-center
66
arch = x86_64
@@ -25,7 +25,7 @@ pkgbase = command-center
2525
optdepends = restic: backup recovery
2626
optdepends = fish: Fish custom actions
2727
options = !lto
28-
source = git+https://github.com/Commanderx-code/command-center.git#tag=v0.6.0
28+
source = git+https://github.com/Commanderx-code/command-center.git#tag=v0.7.0
2929
sha256sums = SKIP
3030

3131
pkgname = command-center

0 commit comments

Comments
 (0)