Task-oriented recipes across the ecosystem. All paths assume the sibling clone layout in repositories.md.
cd ~/repos/xfetch-cli/xfetch
cargo build --release --locked
bash scripts/ci.sh
cargo audit --deny warningsMinimal binary without wasm/update:
cargo build --release --locked --no-default-featuresWindows cross-check (needs x86_64-w64-mingw32-gcc for zstd-sys):
bash scripts/ci-windows.shtmp=$(mktemp -d)
XDG_CONFIG_HOME="$tmp/config" XDG_CACHE_HOME="$tmp/cache" \
/path/to/xfetch --gen-config
XDG_CONFIG_HOME="$tmp/config" XDG_CACHE_HOME="$tmp/cache" \
/path/to/xfetchList layouts: xfetch --list-layouts. Generate with a specific layout:
xfetch --gen-config --layout tree.
cd ~/repos/xfetch-cli/xfetch
git checkout release/v1.0.2
git pull --ff-only
bash install.sh --local --yes
hash -r
xfetch --versionManual alternative:
cargo build --release --locked
install -Dm755 target/release/xfetch ~/.local/bin/xfetchCheck for stale binaries: type -a xfetch; remove
~/.cargo/bin/xfetch if it shadows ~/.local/bin/xfetch.
- Edit
src/info/mod.rs(Infofield + fill logic). - Add/update the platform function under
src/info/platform/{linux,macos,windows}/. - Add the renderer key/label handling in
src/ui/nodes.rs. - Update
docs/CONFIGURATION.md(module table/format). - Add tests next to the probe; run
scripts/ci.sh.
Repo: ~/repos/xfetch-cli/plugins.
- Add
plugins/<name>/crate withCargo.tomlandsrc/main.rs. - Use
xfetch-plugin-api 0.2.0; read one JSON request from stdin, write one JSON response. Info plugins return{"lines":[...]}; logo plugins return frames. - Add the crate to the workspace members if needed.
- Update
plugins/index.jsonwithscripts/generate_catalog.py, then run--check. - Run
bash scripts/ci.sh(fmt/clippy/test) andscripts/ci-windows.sh. - Document the plugin in
README.mdanddocs/compatibility.md. - Release via the addon
release/vX.Y.Zbranch; merge catalogs before the core release.
Install locally for testing:
xfetch plugin install ~/repos/xfetch-cli/plugins/plugins/<name>
xfetch plugin list --verboseRepo: ~/repos/xfetch-cli/effects.
- Add
effects/<name>/usingxfetch-effect-api 0.2.0. - Read
EffectRequest, returnEffectResponse { frames }; honorduration_ms/fps/style/args. - Regenerate
effects/index.json(scripts/generate_catalog.py), run--check. - Run
bash scripts/ci.sh; build the wasm target if applicable. - Document in
README.md; release with the addon branch.
Repo: ~/repos/xfetch-cli/extensions.
- Add
extensions/<name>/usingxfetch-extension-api 0.2.0. - Read the resolved config JSON from stdin, return
{"config": ...}. - Wrap work in
with_timeout;scripts/ci.shenforces this for Rustextensions/*/src/main.rs. - Regenerate
extensions/index.json, run--check. - Document, test, release with the addon branch.
Repo: ~/repos/xfetch-cli/themes.
- Add
colors/<name>.jsonc(partial config: colors, layout, palette style, logo colors; no icons). - Add the registry entry to
index.jsonwith metadata + rawsourceURL. - Run
bash scripts/ci.sh(validate.py). - Test by copying to
~/.config/xfetch/themes/or via thetheme-managerplugin.
Repo: ~/repos/xfetch-cli/logos.
- Add/replace
defaults/<category>/<id>.txt(UTF-8, ~12 rows, <=200 chars/line, no control characters). - Ensure
logos.jsonmaps the id/aliases to the file; keep colors/ansi. - Run
bash scripts/ci.sh(python3 scripts/validate.py ..). - Test before merging:
XFETCH_LOGOS_URL=https://raw.githubusercontent.com/xfetch-cli/logos/<branch> \
xfetch --gen-config --logo <id> --config /tmp/test-xfetch.jsoncKnown state: x and equis art are identical on the fix branch; the fix is
PR #4, not on main yet.
Repo: ~/repos/xfetch-cli/configs.
- Add JSONC under
xfetch/defaults/,xfetch/presets/<category>/, orplugins/<plugin>/. - Validate JSONC syntax and keep names descriptive.
- Check required plugin/effect/theme dependencies; document them in the README if non-obvious.
- Test with
xfetch --config <path>.
Repo: ~/repos/xfetch-cli/web.
- Edit
docs/<lang>/*.mdfor en/es/de; keepSUMMARY.mdordering. - Update the hardcoded version (
src/...VERSION = "1.0.1"today) anddocs/<lang>/changelog.mdper release. npm install,npm run dev,npm run lint,npm run build.- Static export/basePath only when
GITHUB_ACTIONS=true; localnpm run buildis a server build. - Deploy via the repo's Pages workflow.
Repo: ~/repos/xfetch-cli/homebrew-tap.
- Wait for the
vX.Y.ZGitHub release and assets. - Update
Formula/xfetch.rb:version, both macOS asset URLs, and SHA-256 values fromSHA256SUMS. brew audit --strict/brew install --build-from-sourcelocally if possible; commit tomain.
- Merge addon catalog PRs first (so remote
searchworks). - Merge the core
release/vX.Y.ZPR. - Tag
vX.Y.Zonmain(must matchCargo.toml). release.ymlgates on tests/audit, builds 6 targets, signs checksums, attests provenance, and publishes the release.- Close superseded Dependabot PRs.
- Bump Homebrew, AUR, web docs/version, and any catalog
catalog_version.
- Probe: run the underlying command manually (
pacman -Qn,xpm query,brew list --formula, etc.); checksrc/info/mod.rsgating andcollect_module_keys. - Addon:
xfetch plugin list --verbose,xfetch plugin info <name>,xfetch wasm inspect <file>, run the binary manually with a JSON request. - Wasm denial: inspect the installed sidecar manifest;
Policyis deny-by-default. - Catalog: verify the raw
index.jsonURL; useXFETCH_*_INDEXto point at a branch/local file. - Install: check
type -a xfetch, PATH order, and whether the binary version matches the branch.