Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
dde16cb
release: prepare v1.0.3 with SDK 0.3.0 and crate metadata
xscriptor Nov 3, 2026
7c2ff5e
chore: start the crate description with Fast
xscriptor Nov 3, 2026
e26c1bc
feat(update): add Windows self-update support
xscriptor Nov 5, 2026
af4a54c
refactor(update): tighten platform separation and remove dead code
xscriptor Nov 5, 2026
e15e208
docs(roadmap): record winget and Windows updater support
xscriptor Nov 5, 2026
744afb9
docs(roadmap): link Windows updater work to PR #201
xscriptor Nov 5, 2026
88d5347
ci: quote the Windows updater test filter
xscriptor Nov 5, 2026
d3958e3
Merge pull request #201 from xfetch-cli/feat/windows-self-update
xscriptor Nov 5, 2026
d149ad5
feat(addons): add install receipts, update and rollback
xscriptor Nov 6, 2026
e30dd5c
feat(ui): add right-side logo layout
xscriptor Nov 6, 2026
d8941ca
feat(cli): add diagnostics, backup, templates and structured logging
xscriptor Nov 6, 2026
1eaefbc
feat(commands): add command addon family and run command
xscriptor Nov 6, 2026
31bc87d
test(commands): cover run without loading the config
xscriptor Nov 6, 2026
7cf6122
docs(release): summarize 1.0.3 changes and add winget install
xscriptor Nov 6, 2026
1b5977c
Merge feat/massive-cli-update into release/v1.0.3
xscriptor Nov 6, 2026
f14bf05
test(cli): isolate config edit from ambient editor variables
xscriptor Nov 6, 2026
de9aa25
test(cli): make CLI tests portable across Linux and Windows
xscriptor Nov 6, 2026
214a0fe
test(help): normalize the Windows binary name in snapshots
xscriptor Nov 6, 2026
98f5991
ci(windows): install clippy in the test job
xscriptor Nov 6, 2026
9cdb6d8
fix(doctor): gate Linux-only code and drop unused Windows helper
xscriptor Nov 6, 2026
2e6347b
Merge pull request #202 from xfetch-cli/feat/massive-cli-update
xscriptor Nov 6, 2026
9dbda60
chore(deps): adopt the xfetch SDK 0.3.1
xscriptor Nov 6, 2026
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
21 changes: 21 additions & 0 deletions .github/workflows/rust-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,24 @@ jobs:

- name: Run tests
run: cargo test --locked

windows-tests:
name: cargo test (windows)
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Install stable Rust toolchain
uses: dtolnay/rust-toolchain@18f0487477426dce244608110aa2660c2893deb7 # stable
with:
components: clippy

- name: Run updater tests on Windows
run: 'cargo test --locked --no-default-features --features update --bin xfetch update::'

- name: Run all tests on Windows
run: cargo test --locked

- name: Run clippy on Windows
run: cargo clippy --all-targets -- -D warnings
107 changes: 107 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,112 @@
# Changelog

## 2026-11-06 — v1.0.3

### CLI

- Added machine output: `--json`, `--get`, `--list-modules`, `modules` and a
stable JSON schema version.
- Added runtime overrides: `--layout`, `--theme`, `--modules`/`--only`,
`--color`/`--no-color`, `--offline`, `--no-cache`, `--quiet`, `--verbose`,
`--template` and `--format`.
- Added `doctor` with platform checks, `config validate|print|get|set`,
shell completions, a man page and a unified `addon` command.
- Added JSON output to addon list/info, theme list and `update --check`.
- Added stable exit codes for config, network, addon, update and not-found
failures.
- Moved the CLI into the modular `src/cli/` tree, including platform-specific
doctor checks.
- Added CLI integration tests covering output modes, overrides, diagnostics,
exit codes, completions and offline behavior.
- Added `docs/CLI.md` with the complete command, output, JSON and exit-code
reference.
- Added config backup and restore: `--backup`, `--restore` and
`config backup|restore`. Backups include the active theme and config-roulette
routes, and restores write a pre-restore safety backup.
- Added `scripts/test-cli-sandbox.sh` for end-to-end CLI verification.
- Added JSON results for addon install, rollback and remove.
- Added `config unset`, `reset`, `edit`, `backups` and `prune`, array/index
edits and comment-preserving nested value replacement.
- Extended backup/restore with gzip compression, passphrase encryption
(Argon2id + XChaCha20-Poly1305), `--with-addons`, logo/ASCII assets, root
remapping, restored-config validation, backup listing/pruning and
timestamp-based latest selection.
- Extended templates with conditionals, loops and value filters.
- Added remote `theme search|info|install|update` and `logo list|preview`.
- Added `doctor --fix`, `schema`, `self-uninstall` and `update --rollback`.
- Added help/output snapshots and Windows CI test/clippy coverage.
- Added `paths`, `env` and `build-info` diagnostics commands.
- Added `doctor --bench` and `doctor --image`.
- Added `--log-level` and `--log-json` structured logging.
- Added complete help descriptions for every command group and subcommand,
enforced by a test.

### Command addons

- Added the `command` addon family and `xfetch run` for plain-text CLI
commands, with `--render` using the core layout and a separate command
catalog repository.
- Added command catalog search, install, update, rollback, list, info and
remove, plus JSON output for those actions.

### SDK and dependencies

- Adopted the xfetch SDK 0.3.1: `xfetch-api-common` 0.3.1 plus
`xfetch-plugin-api`, `xfetch-extension-api` and `xfetch-effect-api` 0.3.1.
The JSON wire protocol remains `1` and the WIT remains `0.1.0`.
- The matching `xfetch-guest-api` and `xfetch-command-api` 0.3.1 crates are
published for addon authors; the core does not depend on them directly.

### Packaging

- Added crates.io metadata: `repository`, `homepage`, `documentation`,
`readme`, `keywords` and `categories`.
- The crate description now starts with `Fast` instead of `A fast`.
- Documented `winget install xfetch` as a Windows installation method, with
matching update and uninstall guidance.

### Layouts

- Added `layout: "right"`: the info column stays on the left and the ASCII
or image logo is rendered on the right. Image logos use the same width and
gap settings as the classic layout.
- Fixed the `right` layout: ASCII and image logos sit flush right, the
configured gap always separates text from the logo, and the text column is
skipped when an oversized image leaves no room.

### Addon management

- Installs now write an `.install.json` receipt beside each native or wasm
addon. The receipt records the installed version, source, repository, path,
catalog reference, SDK version and artifact SHA-256.
- Added `update` and `rollback` for plugins, effects and extensions:
`--check` reports available versions, `--all` updates every installed addon,
and `--force` rebuilds even when the catalog version is not newer. Native
addons are rebuilt from their recorded source; wasm addons keep their
artifact/build flow. The previous artifact and receipt are kept as `.bak`
for rollback.
- Added `install --all` for plugins, effects and extensions to install every
catalog entry, skipping already installed addons unless `--force` is used.
- Catalogs accept optional `repo`, `ref`, `sdk_version` and
`min_xfetch_version` fields for source resolution and compatibility checks.

### Windows updater

- `xfetch update` now works on Windows. Prebuilt installs download the
`.zip` release asset, verify `SHA256SUMS`, keep `xfetch.exe.bak` and replace
the running executable with `self-replace`. winget installs are delegated to
`winget upgrade --id Xfetch-cli.Xfetch`; source builds are rebuilt from their
checkout instead of being replaced with the crates.io release.
- The PowerShell installers write `%LOCALAPPDATA%\xfetch\install.json`, so a
prebuilt install, a source build and a manually copied binary are no longer
confused even when they share a directory.

### Release

- Bumped the crate version to 1.0.3 and the installer examples to 1.0.3.
The published v1.0.2 tag and its assets remain unchanged.


## 2026-11-03 — v1.0.2

### Security
Expand Down
Loading
Loading