bdo-cli 0.44.12 → 0.45.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
@@ -5,6 +5,89 @@ All notable changes to Bushido (bdo) will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.45.1] (2026-09-05)
9
+
10
+ The `bdo` binary is unchanged from 0.45.0 — this release fixes the installer
11
+ and the CI guard around it.
12
+
13
+ ### Fixes
14
+
15
+ - **`install.sh` could never install anything.** It requested
16
+ `bdo-<target>.tar.gz`, but releases publish `bushido-<target>.tar.xz` — the
17
+ archive is named after the crate, not the binary, and compressed with xz, so
18
+ every download 404'd. Adding checksum verification in 0.45.0 didn't reveal
19
+ this because the failure happens a step earlier. Alongside the name: the
20
+ explicit `-z` is gone (GNU tar applies a compression flag literally and fails
21
+ on a valid archive; both tars auto-detect), and the binary is now taken from
22
+ the `<crate>-<target>/` directory the archive actually contains rather than
23
+ the archive root.
24
+ - **The installer reported the wrong binary.** `verify()` resolved `bdo`
25
+ through `PATH`, so another copy shadowing the install directory printed its
26
+ version — making a good install read as a failed upgrade. It now reports the
27
+ binary it just installed, by path, and warns when something else on `PATH`
28
+ will run instead.
29
+ - **`scripts/check-release-hardening.sh` passed mutable action refs.** It
30
+ blocklisted `@v<digit>` instead of requiring a 40-char commit SHA, so
31
+ `@main`, `@latest` and `@1.2.3` all reported "hardening intact" — false
32
+ assurance about the workflow that holds the publish tokens. It now asserts
33
+ the allowed shape.
34
+
35
+ ## [0.45.0] (2026-08-16)
36
+
37
+ A security release. Two changes alter behavior you may notice — see
38
+ **Breaking** below.
39
+
40
+ ### Breaking
41
+
42
+ - **Copilot no longer inherits Claude's allow rules.** Copilot rewrites were
43
+ evaluated against `permissions::Host::Claude`, so a command you allow-listed
44
+ in Claude Code was auto-approved in Copilot — which never granted it.
45
+ Copilot now keeps its own confirmation boundary, meaning commands that used
46
+ to run unprompted there will ask.
47
+ - **The legacy Cursor shell hook no longer emits `"permission": "allow"`**,
48
+ restoring Cursor's native confirmation for the same reason.
49
+ - **`bdo cc-economics` no longer falls back to `npx --yes ccusage`.** Fetching
50
+ and executing a mutable registry package as a side effect of an analytics
51
+ report is not something a report should do. Install `ccusage` explicitly
52
+ (pinned) to keep using economics reports.
53
+
54
+ ### Security
55
+
56
+ - **Installer integrity**: `install.sh` now downloads the release's SHA-256
57
+ sidecar and verifies the archive before extracting. Previously a tampered
58
+ or truncated download was installed unchecked.
59
+ - **Release workflow**: every action is pinned to a commit SHA, and both
60
+ pipe-to-shell installs (cargo-dist, rustup) are gone — replaced by
61
+ `cargo install --locked` and a pinned, checksum-verified `rustup-init`.
62
+ - **Tee files** are created with `O_EXCL` and a random nonce in the filename.
63
+ A pre-planted path — symlink or hardlink included — can no longer be
64
+ written through, nor left at permissions bdo doesn't own.
65
+ - **Tracking database**: the path is rejected if any component is a symlink,
66
+ or if an overridden parent directory is group/other-writable. Permission
67
+ tightening is enforced rather than best-effort.
68
+ - **Hook audit log** opens `O_NOFOLLOW` at 0600 and redacts secrets, matching
69
+ the protection the tracking DB and tee files already had.
70
+ - **Child output capture** is bounded per stream instead of buffered without
71
+ limit.
72
+
73
+ ### Fixes
74
+
75
+ - **The documented one-line install was broken**, and had been since the repo
76
+ rename: every copy pointed at `refs/heads/master`, but the default branch is
77
+ `main`. Because `curl -f` yields an empty body on 404, piping to `sh` was a
78
+ silent no-op rather than a visible error. Fixed in all 7 places.
79
+ - `tracking.enabled` and `tracking.history_days` from the config file are now
80
+ honored; tracking previously recorded unconditionally on a hardcoded 90-day
81
+ retention.
82
+
83
+ ### Chores
84
+
85
+ - CI guards the release workflow's hardening (`scripts/check-release-hardening.sh`)
86
+ and the installer's checksum check. `release.yml` is cargo-dist-generated, so
87
+ `dist generate` reverts its hardening wholesale — and the workflow keeps
88
+ working afterward, just unpinned, which is exactly the kind of regression
89
+ that otherwise surfaces at the next release.
90
+
8
91
  ## [0.44.12] (2026-08-16)
9
92
 
10
93
  ### Fixes
package/README.md CHANGED
@@ -59,7 +59,7 @@ brew tap tedorigawa001/tap && brew install bdo
59
59
  ### Quick Install (Linux/macOS)
60
60
 
61
61
  ```bash
62
- curl -fsSL https://raw.githubusercontent.com/tedorigawa001/TokenReductionTool/refs/heads/master/install.sh | sh
62
+ curl -fsSL https://raw.githubusercontent.com/tedorigawa001/TokenReductionTool-BDO/refs/heads/main/install.sh | sh
63
63
  ```
64
64
 
65
65
  > Installs to `~/.local/bin`. Add to PATH if needed:
@@ -76,16 +76,19 @@ cargo install --git https://github.com/tedorigawa001/TokenReductionTool
76
76
  ### Pre-built Binaries
77
77
 
78
78
  Download from [releases](https://github.com/tedorigawa001/TokenReductionTool/releases):
79
- - macOS: `bdo-x86_64-apple-darwin.tar.gz` / `bdo-aarch64-apple-darwin.tar.gz`
80
- - Linux: `bdo-x86_64-unknown-linux-musl.tar.gz` / `bdo-aarch64-unknown-linux-gnu.tar.gz`
81
- - Windows: `bdo-x86_64-pc-windows-msvc.zip`
79
+ Archives are named after the crate (`bushido`); the binary inside is `bdo`.
80
+ Each has a `.sha256` sidecar — verify before extracting.
81
+
82
+ - macOS: `bushido-x86_64-apple-darwin.tar.xz` / `bushido-aarch64-apple-darwin.tar.xz`
83
+ - Linux: `bushido-x86_64-unknown-linux-gnu.tar.xz` / `bushido-aarch64-unknown-linux-gnu.tar.xz`
84
+ - Windows: `bushido-x86_64-pc-windows-msvc.zip`
82
85
 
83
86
  > **Windows users**: Extract the zip and place `bdo.exe` somewhere in your PATH (e.g. `C:\Users\<you>\.local\bin`). Run Bushido from **Command Prompt**, **PowerShell**, or **Windows Terminal** — do not double-click the `.exe` (it will flash and close). For the best experience, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) where the full hook system works natively. See [Windows setup](#windows) below for details.
84
87
 
85
88
  ### Verify Installation
86
89
 
87
90
  ```bash
88
- bdo --version # Should show "bdo 0.44.11"
91
+ bdo --version # Should show "bdo 0.45.1"
89
92
  bdo gain # Should show token savings stats
90
93
  ```
91
94
 
@@ -448,7 +451,7 @@ For the best experience, use [WSL](https://learn.microsoft.com/en-us/windows/wsl
448
451
 
449
452
  ```bash
450
453
  # Inside WSL
451
- curl -fsSL https://raw.githubusercontent.com/tedorigawa001/TokenReductionTool/refs/heads/master/install.sh | sh
454
+ curl -fsSL https://raw.githubusercontent.com/tedorigawa001/TokenReductionTool-BDO/refs/heads/main/install.sh | sh
452
455
  bdo init -g
453
456
  ```
454
457
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/tedorigawa001/TokenReductionTool-BDO/releases/download/v0.44.12"
3
+ "https://github.com/tedorigawa001/TokenReductionTool-BDO/releases/download/v0.45.1"
4
4
  ],
5
5
  "author": "Patrick Szymkowiak",
6
6
  "bin": {
@@ -91,7 +91,7 @@
91
91
  "zipExt": ".tar.xz"
92
92
  }
93
93
  },
94
- "version": "0.44.12",
94
+ "version": "0.45.1",
95
95
  "volta": {
96
96
  "node": "18.14.1",
97
97
  "npm": "9.5.0"