From 45b02a85af518fb0e962e5b451e34ea9fdd6e188 Mon Sep 17 00:00:00 2001 From: "Igor K." Date: Sat, 19 Sep 2026 12:27:11 +0300 Subject: [PATCH] fix: installer prints the name once; add CLAUDE.md with the versioning rule - install.sh said "Installed supaspin supaspin 1.1.0." because --version now includes the name; it now says "Installed supaspin 1.1.1." - CLAUDE.md: tells AI agents to read Igor's global rules first, and states the versioning rule (number in VERSION, code and README together, semantic versioning, major bumps only with Igor's yes, a git tag vX.Y.Z after every merge) - version 1.1.0 -> 1.1.1 Co-Authored-By: Claude Sonnet 5 --- CLAUDE.md | 29 +++++++++++++++++++++++++++++ README.md | 4 ++-- VERSION | 2 +- install.sh | 2 +- supaspin | 2 +- 5 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..145e60e --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,29 @@ +# supaspin - rules for AI agents + +Read and follow the global rules first. They are in Igor's global CLAUDE.md, which in turn pulls in +`~/.agents/AGENTS.md`: + +@~/.claude/CLAUDE.md + +The rules below are specific to this repository and add to the global ones. + +## Versioning + +The number is `MAJOR.MINOR.PATCH` (semantic versioning: `1.1.1` is major 1, minor 1, patch 1). + +1. **Pick the number.** A bug fix or wording fix raises PATCH (1.1.0 -> 1.1.1). A new feature raises MINOR and resets + PATCH (1.1.1 -> 1.2.0). MAJOR is Igor's decision only: never raise it, never write `!` after the commit type + (`feat!:`) and never write a `BREAKING CHANGE:` line without asking him first (see the global rules). +2. **Write it in all three places, in the same commit as the change.** The file `VERSION`, the `VERSION = "x.y.z"` + line near the top of `supaspin`, and the line `Version x.y.z` at the top of `README.md`. A unit test + (`tests/test_supaspin.py`, class `Version`) fails if they differ. `supaspin --version` prints `supaspin x.y.z`. +3. **One plan = one branch = one commit = one pull request.** The version bump is part of that one commit. +4. **Tag every release.** After the pull request is merged, create the git tag `vX.Y.Z` (for example `v1.1.1`) on + the commit on `main` that contains that number in `VERSION`. The tag name must equal `VERSION` with a `v` in + front. A version without a tag is not released. Never move or delete a tag that was already published; if a + release is wrong, ship a new PATCH instead. With the Gitea API: `POST /api/v1/repos/igor/supaspin/tags` with + `tag_name`, `target` (the commit) and `message`. +5. **Check the result.** Reinstall from the merged `main` (`sudo bash install.sh`), then run `supaspin --version` and + compare it with `VERSION` and the tag. +6. If you find a version in `VERSION` that has no tag, or a tag that does not match `VERSION`, tell Igor before doing + anything else. diff --git a/README.md b/README.md index 2593b0f..e4fdcc7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # supaspin -Version 1.1.0 +Version 1.1.1 Create, list, show and delete throwaway [Supabase](https://supabase.com) instances on a single-node [microk8s](https://microk8s.io) server, from a terminal menu. @@ -108,7 +108,7 @@ sudo supaspin push-env N TARGET [--port P] [--key FILE] [--dry-run] # see "Cop sudo supaspin delete N [--yes] sudo supaspin mail # change the saved default mail settings sudo supaspin setup # change settings -supaspin --version # prints "supaspin 1.1.0" +supaspin --version # prints "supaspin 1.1.1" ``` ### Connecting your app diff --git a/VERSION b/VERSION index 9084fa2..524cb55 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.0 +1.1.1 diff --git a/install.sh b/install.sh index 2529998..8e477ac 100755 --- a/install.sh +++ b/install.sh @@ -64,6 +64,6 @@ install -m 0644 "$src/templates/values.yaml.tpl" /usr/share/supaspin/templates/v install -m 0755 "$src/uninstall.sh" /usr/share/supaspin/uninstall.sh install -d -m 0700 /etc/supaspin /var/lib/supaspin -echo "Installed supaspin $(/usr/local/bin/supaspin --version)." +echo "Installed $(/usr/local/bin/supaspin --version)." echo "Next: run 'sudo supaspin' - the first run asks for your settings." echo "To remove it later: sudo bash /usr/share/supaspin/uninstall.sh" diff --git a/supaspin b/supaspin index eb3b7c1..6755338 100755 --- a/supaspin +++ b/supaspin @@ -32,7 +32,7 @@ import tty import yaml -VERSION = "1.1.0" +VERSION = "1.1.1" CONFIG_PATH = os.environ.get("SUPASPIN_CONFIG", "/etc/supaspin/config.yaml") STATE_DIR = os.environ.get("SUPASPIN_STATE", "/var/lib/supaspin") CHART_REPO = "https://supabase-community.github.io/supabase-kubernetes"