devrites 5.13.0 → 5.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [5.13.1](https://github.com/ViktorsBaikers/DevRites/compare/v5.13.0...v5.13.1) (2026-09-25)
6
+
7
+ ### Fixed
8
+
9
+ * **uninstall:** keep global engine binary when DEVRITES_NO_BINARY=1 ([20bcfcb](https://github.com/ViktorsBaikers/DevRites/commit/20bcfcb887fbf10944daf0f916b9fcce019deff4))
10
+
5
11
  ## [5.13.0](https://github.com/ViktorsBaikers/DevRites/compare/v5.12.0...v5.13.0) (2026-09-25)
6
12
 
7
13
  ### Added
package/README.md CHANGED
@@ -34,7 +34,7 @@ project-conventional push, tag, or PR action, and archive the workspace.
34
34
  Unattended runs may create local WIP checkpoint commits along the way, but they
35
35
  remain local unless Ship's disclosed plan includes an approved remote action.
36
36
 
37
- **Status:** [`v5.13.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v5.13.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
37
+ **Status:** [`v5.13.1`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v5.13.1): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
38
38
 
39
39
  This is the latest published release; `main` may contain unreleased work.
40
40
 
@@ -167,6 +167,10 @@ func (r *runner) removeBinary() error {
167
167
  fmt.Fprintln(r.opts.Stdout, " kept the global devrites-engine binary (--keep-binary).")
168
168
  return nil
169
169
  }
170
+ if os.Getenv("DEVRITES_NO_BINARY") == "1" {
171
+ fmt.Fprintln(r.opts.Stdout, " kept the global devrites-engine binary (DEVRITES_NO_BINARY=1).")
172
+ return nil
173
+ }
170
174
  for _, p := range binaryCandidates() {
171
175
  if p == "" || !exists(p) {
172
176
  continue
@@ -1231,6 +1231,28 @@ func runInstall(t *testing.T, target, payload string, mutate func(*Options)) {
1231
1231
  }
1232
1232
  }
1233
1233
 
1234
+ func TestUninstallNoBinaryEnvKeepsGlobalBinary(t *testing.T) {
1235
+ t.Setenv("DEVRITES_NO_BINARY", "1")
1236
+ home := t.TempDir()
1237
+ t.Setenv("HOME", home)
1238
+ t.Setenv("DEVRITES_BIN_DIR", t.TempDir())
1239
+ bin := filepath.Join(home, ".local", "bin", engineBinaryName())
1240
+ testutil.WriteFile(t, bin, "engine\n")
1241
+ target := t.TempDir()
1242
+ runInstall(t, target, testPayload(t), func(*Options) {})
1243
+
1244
+ opts := DefaultOptions(ModeUninstall)
1245
+ opts.Target = target
1246
+ opts.Stdout = &bytes.Buffer{}
1247
+ opts.Stderr = &bytes.Buffer{}
1248
+ if err := Apply(opts); err != nil {
1249
+ t.Fatal(err)
1250
+ }
1251
+ if _, err := os.Stat(bin); err != nil {
1252
+ t.Fatalf("uninstall with DEVRITES_NO_BINARY=1 removed global binary: %v", err)
1253
+ }
1254
+ }
1255
+
1234
1256
  func runUninstall(t *testing.T, target string) {
1235
1257
  t.Helper()
1236
1258
  opts := DefaultOptions(ModeUninstall)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "5.13.0",
3
+ "version": "5.13.1",
4
4
  "description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code, Codex, omp, pi, and Devin CLI",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",