From 5175fe0065cfed9ad43b4d185b678fdcde21130e Mon Sep 17 00:00:00 2001 From: David Young Date: Sun, 8 Nov 2026 10:30:20 -0700 Subject: [PATCH] Utilities and Siblings: sibling versions, sibling check and sibling update --- content/siblings.md | 19 ++++++++++++++----- content/utilities.md | 19 +++++++++++++++---- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/content/siblings.md b/content/siblings.md index e18a159..3bd01d3 100644 --- a/content/siblings.md +++ b/content/siblings.md @@ -4,7 +4,7 @@ description: "Sibling projects are git repositories that build on Federated Core sections: - type: hero compact: true - eyebrow: "sibling · sibling add · sibling list · sibling remove" + eyebrow: "sibling · sibling add · sibling list · sibling check · sibling update · sibling remove" title: "Build your own layer on top." subhead: "A sibling project is a git repository that builds on CoreDesktop. Install one with a single command, and every `update` keeps it current along with everything else." ctas: @@ -25,7 +25,7 @@ sections: - tag: "Bin" text: "Installed ~/.local/bin/my-tools" - done: true - text: "my-tools installed. update keeps it current." + text: "my-tools v1.0.0 installed. update keeps it current." - type: text kicker: "What's a sibling?" @@ -37,6 +37,8 @@ sections: A repository needs no special files to be installable. Without the scripts, `update` just keeps the clone up to date. + `version` lists the siblings you've installed with their versions, and offers to update any that have a newer one. + - type: command id: install-a-sibling kicker: "Install one" @@ -52,7 +54,9 @@ sections: rows: - ["`sibling`", "Asks for a git URL, then installs that project"] - ["`sibling add `", "The same, without the prompt. Run it again to repair an install"] - - ["`sibling list`", "Shows the installed siblings, their URLs and current commits"] + - ["`sibling list`", "Shows the installed siblings, their versions and URLs"] + - ["`sibling check`", "Shows which siblings have a newer version"] + - ["`sibling update [name...]`", "Updates the named siblings now, or all of them, the way `update` does"] - ["`sibling remove `", "Deletes `~/.local/share/siblings/`. Anything its install.sh set up elsewhere stays"] - type: siblings @@ -113,6 +117,8 @@ sections: body: "`update` pulls with `--ff-only` and never merges or resets. Never force-push the default branch, and never write into tracked files: put generated files and per-machine state in `~/.config//` or in paths listed in `.gitignore`." - label: "sudo works as normal" body: "`sudo` prompts for a password as usual. CoreDesktop doesn't give siblings passwordless sudo." + - label: "Versions come from git tags" + body: "Your project's version is its latest tag, such as `v1.4.0`, or `v1.4.0+3` three commits later. Without tags it's the latest commit's date and id. To release, tag the default branch and push the tag: `git tag v1.5.0 && git push origin v1.5.0`. Never move a tag once it's pushed. `update` always installs the newest commit, tagged or not." - type: table kicker: "Helpers" @@ -194,8 +200,10 @@ sections: # Install bash "$HOME/.local/share/coredesktop/sibling" add /path/to/sibling-repo - # Commit a change in /path/to/sibling-repo, then run the update hook the way update does - ( source "$HOME/.local/share/coredesktop/updates.d/71-siblings.sh"; is_installed && run_update ) + # Commit a change in /path/to/sibling-repo, check that it's seen as newer, + # then update the way update does + bash "$HOME/.local/share/coredesktop/sibling" check + bash "$HOME/.local/share/coredesktop/sibling" update # Re-run the install to check it's safe to repeat bash "$HOME/.local/share/coredesktop/sibling" add /path/to/sibling-repo @@ -227,6 +235,7 @@ sections: - "`update.sh` (optional) is at the top level, idempotent, doesn't prompt, and prints what it's doing." - "Scripts find their own files relative to the script and set `COREDESKTOP=\"$HOME/.local/share/coredesktop\"` themselves." - "Nothing writes to tracked files in the clone, and the default branch is never force-pushed." + - "Releases are tagged on the default branch (optional), and pushed tags are never moved." - "The project doesn't also copy a hook into CoreDesktop's `updates.d/`." - "The README tells users to install with `sibling add `." diff --git a/content/utilities.md b/content/utilities.md index dc50977..b9921a5 100644 --- a/content/utilities.md +++ b/content/utilities.md @@ -41,7 +41,7 @@ sections: linktext: "About refresh" - label: "version" title: "Know what you're running" - body: "Shows your CoreDesktop version, kernel and last update, and whether something newer is waiting." + body: "Shows your CoreDesktop version, kernel, sibling projects and last update, and whether something newer is waiting." link: "/utilities/#version" linktext: "About version" - label: "audit" @@ -102,16 +102,27 @@ sections: $ version CoreDesktop 2026.10.22 (c5f0651) Kernel 7.2.11-arch1-1 + Video driver Mesa 26.2.6 Last update 2026-10-22 13:43 + + Sibling projects + HamPack 2026.10.22 (52f043d), 2026.11.05 (b2c3d4e) is available + coredesktop-dev v1.2.0 + + Update HamPack to 2026.11.05 (b2c3d4e)? [y/N] ``` - The kernel comes from Arch, so it's shown separately. version also tells you: + The kernel and video driver come from Arch, so they're shown separately. version also tells you: - - if a newer version of CoreDesktop is available + - if a newer version of CoreDesktop, the kernel or the video driver is available - if a newer kernel is installed and waiting for a reboot - if your copy of CoreDesktop has local changes (it says "modified") - In a script, `version --check` prints the newer version if there is one. + ### Sibling projects + + If you've installed [sibling projects](/siblings/), version lists each one with its version: its latest release tag, such as `v1.2.0`, or, if it has none, the date and id of its latest change, like CoreDesktop's. For each one with a newer version, it asks whether to update it now. Answer `y` to update just that project without running a full update; update still keeps them all current. + + In a script, `version --check` prints the newer version of CoreDesktop if there is one. It doesn't look at sibling projects; `sibling check` does. ### You don't have to check by hand