Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

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

## [0.7.0](https://github.com/Commanderx-code/command-center/releases/tag/v0.7.0) — 2026-09-24

- 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.
- Added a [Wiki user guide](https://github.com/Commanderx-code/command-center/wiki) covering every page and feature, linked from the README.

## [0.6.0](https://github.com/Commanderx-code/command-center/releases/tag/v0.6.0) — 2026-09-24

- Command Center is now licensed under the MIT License. Packages include the license and third-party notices.
Expand Down
18 changes: 13 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

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

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.

## New in 0.7.0

- **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.

Read [Backup file history](docs/user-guide.md#backup-file-history) in the user guide.

## New in 0.6.0

- 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.
Expand Down Expand Up @@ -79,13 +86,13 @@ Read [Workflows, profiles, and recovery verification](docs/operations.md) for se

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

| Package | Download v0.6.0 | Install the downloaded file |
| Package | Download v0.7.0 | Install the downloaded file |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| 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` |
| 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` |
| 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` |
| 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` |
| 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` |
| 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` |

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.
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.

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).

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

## Documentation

- **[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.
- [Installation](docs/installation.md) — packages, requirements, checksums, and source builds.
- [User guide](docs/user-guide.md) — features, integrations, command behavior, and local data.
- [Development](docs/development.md) — repository layout, checks, and Toolbox updates.
Expand Down
6 changes: 3 additions & 3 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,19 @@ Each downloaded package must report `OK`. The `--ignore-missing` option lets you
On a compatible Debian/Ubuntu system:

```bash
sudo apt install ./command-center_0.6.0_amd64.deb
sudo apt install ./command-center_0.7.0_amd64.deb
```

On a compatible Fedora/RPM system:

```bash
sudo dnf install ./command-center-0.6.0-1.x86_64.rpm
sudo dnf install ./command-center-0.7.0-1.x86_64.rpm
```

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

```bash
sudo pacman -U ./command-center-0.6.0-1-x86_64.pkg.tar.zst
sudo pacman -U ./command-center-0.7.0-1-x86_64.pkg.tar.zst
```

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/`.
Expand Down
29 changes: 14 additions & 15 deletions docs/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,33 @@
Command Center 0.6.0 makes setup imports safer, runs independent jobs side by side, and brings the packages to older distributions.
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.

### What's new

- **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.
- **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.
- **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.
- **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.
- **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.
- **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.
- **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**.
- **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.
- **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.
- **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.
- **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

### Behavior to know

- 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.
- The backup health helper, password-file, and wallet settings always stay local, as in 0.5.1.
- 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).
- 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.
- 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.
- "Changed" compares size and modification time between copies. It doesn't compare file contents.
- A search matching a huge number of files can't be displayed. Search a more specific path instead.
- Restic treats `*`, `?` and `[` in paths as pattern characters. For file names containing them, check the include path before restoring.

### Linux downloads

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+.
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+.

```sh
# Debian / Ubuntu
sudo apt install ./command-center_0.6.0_amd64.deb
sudo apt install ./command-center_0.7.0_amd64.deb

# Fedora / RPM
sudo dnf install ./command-center-0.6.0-1.x86_64.rpm
sudo dnf install ./command-center-0.7.0-1.x86_64.rpm

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

Download `SHA256SUMS` beside the package and run:
Expand Down
8 changes: 4 additions & 4 deletions docs/releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
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:

```sh
bash ~/Downloads/update-desktop.sh v0.6.0
bash ~/Downloads/update-desktop.sh v0.7.0
```

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.
Expand All @@ -25,9 +25,9 @@ This rolls back the binary only, not settings or user data. It applies to the no
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:

```sh
git tag -a v0.6.0 -m 'Command Center v0.6.0'
git push origin v0.6.0
npm run release:draft -- v0.6.0
git tag -a v0.7.0 -m 'Command Center v0.7.0'
git push origin v0.7.0
npm run release:draft -- v0.7.0
```

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.
Expand Down
12 changes: 11 additions & 1 deletion docs/user-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
- **Launch profiles:** save a documentation URL and choose whether a project opens its editor, terminal, and documentation together.
- **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.
- **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.
- **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.
- **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.
- **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.
- **System Health:** filesystem usage, failed user/system services, battery information, cached Arch package updates, installed tools, and locally recorded backup freshness.
- **Needs attention:** changed/unpushed/behind repositories, unreviewed failed jobs, overdue or unavailable backup records, disks at least 90% full, and failed services.
Expand Down Expand Up @@ -112,6 +112,16 @@ Every run previews the command and working folder and uses the existing job life

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.

## Backup file history

**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**.

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.

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.

**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.

## Services and backup timers

**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.
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "command-center",
"version": "0.6.0",
"version": "0.7.0",
"private": true,
"type": "module",
"description": "A Linux control deck for repositories, configuration, backup, and recovery.",
Expand Down
4 changes: 2 additions & 2 deletions packaging/aur/.SRCINFO
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
pkgbase = command-center
pkgdesc = Local Linux workstation dashboard for repositories, backups, configuration and Toolbox
pkgver = 0.6.0
pkgver = 0.7.0
pkgrel = 1
url = https://github.com/Commanderx-code/command-center
arch = x86_64
Expand All @@ -25,7 +25,7 @@ pkgbase = command-center
optdepends = restic: backup recovery
optdepends = fish: Fish custom actions
options = !lto
source = git+https://github.com/Commanderx-code/command-center.git#tag=v0.6.0
source = git+https://github.com/Commanderx-code/command-center.git#tag=v0.7.0
sha256sums = SKIP

pkgname = command-center
Loading
Loading