Utilities and Siblings: sibling versions, sibling check and sibling update

This commit is contained in:
2026-11-08 10:30:20 -07:00
parent 537e1aec83
commit 5175fe0065
2 changed files with 29 additions and 9 deletions
+14 -5
View File
@@ -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 <url>`", "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 <name>`", "Deletes `~/.local/share/siblings/<name>`. 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/<name>/` 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 <url>`."
+15 -4
View File
@@ -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