- The sample configs repository is `rickub.com/turbo-editors/configs`; its git address is `git.rickub.com`, which `configrepo` tries second. A wrong first candidate costs one `ls-remote`, not the load.
17
17
- The editor refuses when `.turbo-python` already exists (`configrepo.ErrExists`); there is deliberately no `--force`.
18
+
19
+## Also
20
+
21
+`release.env` is committed from now on (`!release.env` in `.gitignore`). `01-release.tag.sh` does `git add .`, so the next release commits it by itself.
22
+
23
+## Update, end of session
24
+
25
+turbo-core v1.0.3 is published and `go.mod` pins it (done from the host, with a commit, during the session). Step 1 of "Next steps" is done; the two release-script tests are expected green again — see the history entry for the run that confirmed it.
26
+
@@ -15,3 +15,12 @@
15
15
16
- The sample configs repository is `rickub.com/turbo-editors/configs`; its git address is `git.rickub.com`, which `configrepo` tries second. A wrong first candidate costs one `ls-remote`, not the load.
16
- The sample configs repository is `rickub.com/turbo-editors/configs`; its git address is `git.rickub.com`, which `configrepo` tries second. A wrong first candidate costs one `ls-remote`, not the load.
17
- The editor refuses when `.turbo-python` already exists (`configrepo.ErrExists`); there is deliberately no `--force`.
17
- The editor refuses when `.turbo-python` already exists (`configrepo.ErrExists`); there is deliberately no `--force`.
18
+
19
+## Also
20
+
21
+`release.env` is committed from now on (`!release.env` in `.gitignore`). `01-release.tag.sh` does `git add .`, so the next release commits it by itself.
22
+
23
+## Update, end of session
24
+
25
+turbo-core v1.0.3 is published and `go.mod` pins it (done from the host, with a commit, during the session). Step 1 of "Next steps" is done; the two release-script tests are expected green again — see the history entry for the run that confirmed it.
26
+
modified.memory/history.md+2-0
@@ -110,4 +110,6 @@ One dated entry per session, appended. Never rewritten.
110
110
- **Depends on turbo-core v1.0.3**, not yet tagged: `go.mod` still pins v1.0.2, so this builds only under the umbrella `go.work` (`turbo-editors/README.md` explains) until `go get rickub.com/turbo-editors/turbo-core@v1.0.3 && go mod tidy`. Verified with `make check` under that workspace.
111
111
- **Not done**: not committed; go.mod not re-pinned; not run against a real terminal.
112
112
- **Correction, same session**: under the workspace everything passes **except `TestTheTagScriptTagsAndPushesForReal` and `TestTheTagScriptRefusesATagItAlreadyPublished`** — they copy the module elsewhere and run `make check` there, outside the workspace, where turbo-core v1.0.2 from the proxy has no `configrepo`. They go green the moment `go.mod` is re-pinned to v1.0.3. The package diagram (`docs/diagrams/packages.drawio`, where the module has one) gained a `configrepo` box and a `main → configrepo` arrow, which its own test demanded.
113
+- **Later, same session**: `release.env` is now **committed** — `.gitignore` gained `!release.env` under `*.env`, with a comment; `*.token.env` files stay ignored (verified with `git check-ignore` in every repository). The comments that said it was ignored were reworded to match: `02-build-releases.sh`, `.github/workflows/release.yml`, the release how-to (EN+FR), and this summary. Asked by the user so the version and its description travel with the repository.
114
+- **End of session**: turbo-core v1.0.3 having been published and `go.mod` re-pinned to it from the host, `GOWORK=off go test ./... -count=1` is entirely green here, the two release-script tests included.
113
115
@@ -110,4 +110,6 @@ One dated entry per session, appended. Never rewritten.
110
- **Depends on turbo-core v1.0.3**, not yet tagged: `go.mod` still pins v1.0.2, so this builds only under the umbrella `go.work` (`turbo-editors/README.md` explains) until `go get rickub.com/turbo-editors/turbo-core@v1.0.3 && go mod tidy`. Verified with `make check` under that workspace.
110
- **Depends on turbo-core v1.0.3**, not yet tagged: `go.mod` still pins v1.0.2, so this builds only under the umbrella `go.work` (`turbo-editors/README.md` explains) until `go get rickub.com/turbo-editors/turbo-core@v1.0.3 && go mod tidy`. Verified with `make check` under that workspace.
111
- **Not done**: not committed; go.mod not re-pinned; not run against a real terminal.
111
- **Not done**: not committed; go.mod not re-pinned; not run against a real terminal.
112
- **Correction, same session**: under the workspace everything passes **except `TestTheTagScriptTagsAndPushesForReal` and `TestTheTagScriptRefusesATagItAlreadyPublished`** — they copy the module elsewhere and run `make check` there, outside the workspace, where turbo-core v1.0.2 from the proxy has no `configrepo`. They go green the moment `go.mod` is re-pinned to v1.0.3. The package diagram (`docs/diagrams/packages.drawio`, where the module has one) gained a `configrepo` box and a `main → configrepo` arrow, which its own test demanded.
112
- **Correction, same session**: under the workspace everything passes **except `TestTheTagScriptTagsAndPushesForReal` and `TestTheTagScriptRefusesATagItAlreadyPublished`** — they copy the module elsewhere and run `make check` there, outside the workspace, where turbo-core v1.0.2 from the proxy has no `configrepo`. They go green the moment `go.mod` is re-pinned to v1.0.3. The package diagram (`docs/diagrams/packages.drawio`, where the module has one) gained a `configrepo` box and a `main → configrepo` arrow, which its own test demanded.
113
+- **Later, same session**: `release.env` is now **committed** — `.gitignore` gained `!release.env` under `*.env`, with a comment; `*.token.env` files stay ignored (verified with `git check-ignore` in every repository). The comments that said it was ignored were reworded to match: `02-build-releases.sh`, `.github/workflows/release.yml`, the release how-to (EN+FR), and this summary. Asked by the user so the version and its description travel with the repository.
114
+- **End of session**: turbo-core v1.0.3 having been published and `go.mod` re-pinned to it from the host, `GOWORK=off go test ./... -count=1` is entirely green here, the two release-script tests included.
113
115
modified.memory/summary.md+1-1
@@ -144,5 +144,5 @@ while testing the published library instead of your changes, so run that second
144
144
145
145
## State as of 2026-09-20
146
146
147
-- **`-load-config <url>` is wired** (`main.go`: `loadConfig`, `describeLoad`), on top of turbo-core's `configrepo`. It needs **turbo-core v1.0.3**, which is not tagged yet; `go.mod` pins v1.0.2, so the editor builds only under the umbrella `go.work` until re-pinned. A project with a `.turbo-python` already is refused, not overwritten.
147
+- **`-load-config <url>` is wired** (`main.go`: `loadConfig`, `describeLoad`), on top of turbo-core's `configrepo`. `go.mod` pins **turbo-core v1.0.3**, which is published (re-pinned from the host on 2026-09-20), so it builds on its own again. A project with a `.turbo-python` already is refused, not overwritten.
148
148
@@ -144,5 +144,5 @@ while testing the published library instead of your changes, so run that second
144
144
145
## State as of 2026-09-20
145
## State as of 2026-09-20
146
146
147
-- **`-load-config <url>` is wired** (`main.go`: `loadConfig`, `describeLoad`), on top of turbo-core's `configrepo`. It needs **turbo-core v1.0.3**, which is not tagged yet; `go.mod` pins v1.0.2, so the editor builds only under the umbrella `go.work` until re-pinned. A project with a `.turbo-python` already is refused, not overwritten.
147
+- **`-load-config <url>` is wired** (`main.go`: `loadConfig`, `describeLoad`), on top of turbo-core's `configrepo`. `go.mod` pins **turbo-core v1.0.3**, which is published (re-pinned from the host on 2026-09-20), so it builds on its own again. A project with a `.turbo-python` already is refused, not overwritten.
148
148
modified02-build-releases.sh+5-4
@@ -23,10 +23,11 @@ COMMENT
23
23
set -euo pipefail
24
24
25
25
# release.env carries TAG ("v1.0.0") and ABOUT (the one-line description). It
26
-# is git-ignored (*.env), so a CI job does not have it: there the tag comes
27
-# from the command line and ABOUT from the environment, or defaults to the
28
-# tag. A tag given on the command line always wins, so a test build never
29
-# edits the file.
26
+# is committed — the one .env that is — so a CI job has it too and reads ABOUT
27
+# from it; there the tag still comes from the command line, the tag that was
28
+# pushed, so the file cannot make a build disagree with the tag it is on. With
29
+# no ABOUT anywhere it defaults to the tag. A tag given on the command line
30
+# always wins, so a test build never edits the file.
30
31
if[ -f release.env ];then
31
32
# shellcheck source=/dev/null
32
33
source release.env
@@ -23,10 +23,11 @@ COMMENT
23
set -euo pipefail
23
set -euo pipefail
24
24
25
# release.env carries TAG ("v1.0.0") and ABOUT (the one-line description). It
25
# release.env carries TAG ("v1.0.0") and ABOUT (the one-line description). It
26
-# is git-ignored (*.env), so a CI job does not have it: there the tag comes
26
+# is committed — the one .env that is — so a CI job has it too and reads ABOUT
27
-# from the command line and ABOUT from the environment, or defaults to the
27
+# from it; there the tag still comes from the command line, the tag that was
28
-# tag. A tag given on the command line always wins, so a test build never
28
+# pushed, so the file cannot make a build disagree with the tag it is on. With
29
-# edits the file.
29
+# no ABOUT anywhere it defaults to the tag. A tag given on the command line
30
+# always wins, so a test build never edits the file.
30
if[ -f release.env ];then
31
if[ -f release.env ];then
31
# shellcheck source=/dev/null
32
# shellcheck source=/dev/null
32
source release.env
33
source release.env
modifieddocs/en/how-to/make-a-release.md+1-1
@@ -53,7 +53,7 @@ Theme: Turbo Classic
53
53
54
54
## Or use the scripts and let the workflow publish
55
55
56
-That is the way a release is actually cut. Put the version and its one-line description in `release.env` — it is gitignored, so CI never sees it:
56
+That is the way a release is actually cut. Put the version and its one-line description in `release.env` — it is committed with the release, and CI takes the tag from the push rather than from it:
57
57
58
58
```sh
59
59
TAG="v1.0.0"
@@ -53,7 +53,7 @@ Theme: Turbo Classic
53
53
54
## Or use the scripts and let the workflow publish
54
## Or use the scripts and let the workflow publish
55
55
56
-That is the way a release is actually cut. Put the version and its one-line description in `release.env` — it is gitignored, so CI never sees it:
56
+That is the way a release is actually cut. Put the version and its one-line description in `release.env` — it is committed with the release, and CI takes the tag from the push rather than from it:
57
57
58
```sh
58
```sh
59
TAG="v1.0.0"
59
TAG="v1.0.0"
modifieddocs/fr/how-to/make-a-release.md+1-1
@@ -53,7 +53,7 @@ Theme: Turbo Classic
53
53
54
54
## Ou utiliser les scripts et laisser le workflow publier
55
55
56
-C'est ainsi qu'une release est réellement faite. Mettez la version et sa description d'une ligne dans `release.env` — il est ignoré par git, donc la CI ne le voit jamais :
56
+C'est ainsi qu'une release est réellement faite. Mettez la version et sa description d'une ligne dans `release.env` — il est versionné avec la release, et la CI prend le tag du push plutôt que dans ce fichier :
57
57
58
58
```sh
59
59
TAG="v1.0.0"
@@ -53,7 +53,7 @@ Theme: Turbo Classic
53
53
54
## Ou utiliser les scripts et laisser le workflow publier
54
## Ou utiliser les scripts et laisser le workflow publier
55
55
56
-C'est ainsi qu'une release est réellement faite. Mettez la version et sa description d'une ligne dans `release.env` — il est ignoré par git, donc la CI ne le voit jamais :
56
+C'est ainsi qu'une release est réellement faite. Mettez la version et sa description d'une ligne dans `release.env` — il est versionné avec la release, et la CI prend le tag du push plutôt que dans ce fichier :
57
57
58
```sh
58
```sh
59
TAG="v1.0.0"
59
TAG="v1.0.0"
addedrelease.env+10-0
new file mode 100644
@@ -0,0 +1,10 @@
1
+# Edited before every release, then:
2
+# ./01-release.tag.sh make check, commit, push, tag, push the tag
3
+# (pushing the tag starts .github/workflows/release.yml, which builds the
4
+# binaries with ./02-build-releases.sh and publishes the release with them —
5
+# no personal token is needed, and nothing else has to be run)
6
+#
7
+# ./02-build-releases.sh v1.0.0 to build the binaries by hand and see what
8
+# the CI will publish, without publishing anything
9
+TAG="v1.0.3"
10
+ABOUT="Turbo Python"
new file mode 100644
@@ -0,0 +1,10 @@
1
+# Edited before every release, then:
2
+# ./01-release.tag.sh make check, commit, push, tag, push the tag
3
+# (pushing the tag starts .github/workflows/release.yml, which builds the
4
+# binaries with ./02-build-releases.sh and publishes the release with them —
5
+# no personal token is needed, and nothing else has to be run)
6
+#
7
+# ./02-build-releases.sh v1.0.0 to build the binaries by hand and see what
8
+# the CI will publish, without publishing anything