Skip to content

Command Center 0.6.0: merge imports, crash recovery, concurrent jobs, wider distro support - #1

Merged
Commanderx-code merged 11 commits into
mainfrom
feature/0.6.0
Sep 24, 2026
Merged

Commanderx-code merged 11 commits into
mainfrom
feature/0.6.0

Conversation

@Commanderx-code

Copy link
Copy Markdown
Owner

Summary

  • Merge setup imports (new default): keep local preferences and definitions, add new items, fill empty integration paths, and list differing items that were kept. Replace still works and reads only settings, so it can still overwrite an unreadable collection.
  • Automatic recovery of interrupted imports: imports write a journal naming the pre-import backup. On launch, an unfinished import is rolled back before the UI opens and the dashboard reports it. Recovery restores only files an import writes. atomic_write now syncs the parent directory.
  • Concurrent jobs: resource locks replace the app-wide one-job limit. Each job holds its working directory, non-repository actions also hold a workstation lock, and embedded sessions hold the terminal. Cancellation and tray status are per job.
  • Wider distro support: build once in ubuntu:22.04 and lower the glibc floor 2.39 → 2.35. verify-packages.py now checks the binary's real glibc requirement. The same packages are install- and launch-tested on Ubuntu 22.04/24.04, Debian 12 and Fedora 43. The Arch recipe is built, namcap-linted, installed and launched in a clean archlinux container.
  • Release tooling: release:draft publishes the CI-built packages artifact for the tagged commit instead of building locally, and links the workflow run in the notes.
  • Cleanup: Toolbox favorites move from webview storage to app data (migrated on first launch). The configuration editor is split out of features.js (1,139 → 880 lines). Removed the stale v0.1.0 tarball.

Verification

  • Locally: npm run check, npm test (73 pass), npm run test:rust (66 pass), clippy -D warnings, npm run build.
  • New tests: journal recovery after a simulated crash, refusal to restore unexpected paths, merge semantics and limits, lock conflicts, per-job cancellation, favorites migration, merge/replace dialog flow, recovery notice, and per-repository button locking.
  • Built packaging/aur/PKGBUILD locally with makepkg (Garuda, not a clean chroot): the package contents are correct and no libraries are missing.
  • Not yet verified: this is the first run of the new container jobs (Ubuntu 22.04 build, Debian 12, Arch). The new import dialog and concurrency behavior haven't been checked by hand in the desktop app.

Open item

The AUR requires a license field, and the repository has no LICENSE file yet.

🤖 Generated with Claude Code

Commanderx-code and others added 11 commits September 24, 2026 01:31
Release archives are published through GitHub Releases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Setup bundles can now be merged: local preferences and definitions are
  kept, new items are added, empty integration paths are filled, and
  differing items with existing IDs are listed as kept.
- Imports record a journal naming the pre-import backup. On launch, an
  unfinished import is rolled back from that backup before the interface
  opens and the dashboard reports it. Recovery only restores files an
  import writes.
- atomic_write now syncs the parent directory so renames survive power loss.
- Toolbox favorites move from webview storage to app data (migrated on
  first launch) so imports write them transactionally with other files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the app-wide one-job limit with resource locks. Each job holds
its working directory; non-repository actions also hold the workstation
lock; embedded interactive sessions hold the terminal. Repository jobs
and project tasks in different repositories can now run alongside each
other and alongside one workstation task. Cancellation and tray status
are per job, and a job that must wait names the job it waits for.

Repository controls now lock only while that repository has a running
job, including when Details is first opened.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ghostty/Fastfetch editing, preview, validation, saving and history now
live in configuration-editor.js, and shared markup helpers in ui.js.
features.js drops from 1,139 to 880 lines. No behavior change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Build .deb and .rpm once in an ubuntu:22.04 container and lower the
  declared glibc floor from 2.39 to 2.35.
- verify-packages.py now derives the binary's highest required glibc
  symbol version and fails if the declared floor does not cover it.
- Install and launch the same packages as a normal user on Ubuntu 22.04,
  Debian 12, Ubuntu 24.04 and Fedora 43.
- Build the Arch recipe from the pushed commit in a clean archlinux
  container, lint it with namcap, install and launch it.
- PKGBUILD: disable makepkg LTO for the Rust link, keep npm/cargo caches
  in $srcdir, fetch for the host target, depend on hicolor-icon-theme.
- Rust tests and clippy keep running as a normal user outside containers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
release:draft no longer builds packages locally. It downloads the
packages artifact from the successful Linux packages run for the tag,
verifies its checksums, and links that run in the draft notes. Document
the CI jobs, the glibc floor check, and AUR submission steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace can then still overwrite an unreadable operations, workspace or
favorites file, as in 0.5.x. Merge still reads every collection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
namcap found these linked libraries satisfied only implicitly. Keep
libappindicator-gtk3: the tray loads it at runtime.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add LICENSE and declare MIT in npm, Cargo, Tauri bundle and Arch
metadata. The Arch package installs the license text, and the README
links it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Install LICENSE as /usr/share/doc/command-center/copyright (deb) and
/usr/share/licenses/command-center/LICENSE (rpm), plus THIRD_PARTY.md in
both. verify-packages.py fails if either is missing or differs, or if the
rpm License tag is not MIT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Commanderx-code
Commanderx-code merged commit ffa813a into main Sep 24, 2026
7 checks passed
@Commanderx-code
Commanderx-code deleted the feature/0.6.0 branch September 24, 2026 06:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant