claude-token-saver 3.11.0 β†’ 3.11.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/README.en.md CHANGED
@@ -302,7 +302,7 @@ Also update `statusLine.command` in `~/.claude/settings.json` to `claude-token-s
302
302
  ## Release notes
303
303
 
304
304
  ### v3.11.0 (2026-08-21)
305
- - **Delegation savings chip in the statusline** β€” `πŸ”€ Delegated $3.2`. The existing `πŸ’° Cache saved` covers the prompt cache; this one is what running work on a cheaper tier saved. Zero or missing data hides the chip entirely, so nothing changes for direct-API users. The statusline only reads `model-rules.json` β€” it never triggers a scan (it re-renders every few seconds). Segment name: `delegated`.
305
+ - **Delegation savings chip in the statusline** β€” `πŸ”€ Delegation saved $3.2`. The existing `πŸ’° Cache saved` covers the prompt cache; this one is what running work on a cheaper tier saved. Zero or missing data hides the chip entirely, so nothing changes for direct-API users. The statusline only reads `model-rules.json` β€” it never triggers a scan (it re-renders every few seconds). Segment name: `delegated`.
306
306
  - **Role-learning mis-classification fixed** β€” subagent records sometimes land in the parent transcript without an `isSidechain` flag, and that circumstantial evidence could outvote stated evidence, confirming a haiku profile as the session model (measured: 16 against 1, agreement exactly at the 80% line). Stated evidence (`Task(model:)` parameters, agent-definition frontmatter) and inferred evidence are now tallied separately, and an inference is not adopted when stated evidence contradicts it. Undecided ids stay `unknown` and leave the aggregate.
307
307
 
308
308
  ### v3.10.0 (2026-08-20)
package/README.md CHANGED
@@ -258,7 +258,7 @@ npm uninstall -g claude-cache-monitor && npm i -g claude-token-saver
258
258
  ## 릴리슀 λ…ΈνŠΈ
259
259
 
260
260
  ### v3.11.0 (2026-08-21)
261
- - **statusline에 μœ„μž„ 절감 μΉ© μΆ”κ°€** β€” `πŸ”€ Delegated $3.2`. κΈ°μ‘΄ `πŸ’° Cache saved`λŠ” ν”„λ‘¬ν”„νŠΈ μΊμ‹œ 절감이고, μƒˆ 칩은 **더 μ‹Ό ν‹°μ–΄λ‘œ λ‚΄λ €μ„œ μ•„λ‚€ κΈˆμ•‘**μž…λ‹ˆλ‹€. 값이 0μ΄κ±°λ‚˜ 데이터가 μ—†μœΌλ©΄ 칩을 μ•„μ˜ˆ 그리지 μ•Šμ•„ 직접 API μ‚¬μš©μžμ—κ²ŒλŠ” 아무것도 λŠ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. statusline은 `model-rules.json`을 읽기만 ν•˜λ©° μŠ€μΊ”μ„ λŒλ¦¬μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(5μ΄ˆλ§ˆλ‹€ ν˜ΈμΆœλ˜λŠ” μžλ¦¬μž…λ‹ˆλ‹€). μ„Έκ·Έλ¨ΌνŠΈ 이름은 `delegated`μž…λ‹ˆλ‹€.
261
+ - **statusline에 μœ„μž„ 절감 μΉ© μΆ”κ°€** β€” `πŸ”€ Delegation saved $3.2`. κΈ°μ‘΄ `πŸ’° Cache saved`λŠ” ν”„λ‘¬ν”„νŠΈ μΊμ‹œ 절감이고, μƒˆ 칩은 **더 μ‹Ό ν‹°μ–΄λ‘œ λ‚΄λ €μ„œ μ•„λ‚€ κΈˆμ•‘**μž…λ‹ˆλ‹€. 값이 0μ΄κ±°λ‚˜ 데이터가 μ—†μœΌλ©΄ 칩을 μ•„μ˜ˆ 그리지 μ•Šμ•„ 직접 API μ‚¬μš©μžμ—κ²ŒλŠ” 아무것도 λŠ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. statusline은 `model-rules.json`을 읽기만 ν•˜λ©° μŠ€μΊ”μ„ λŒλ¦¬μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(5μ΄ˆλ§ˆλ‹€ ν˜ΈμΆœλ˜λŠ” μžλ¦¬μž…λ‹ˆλ‹€). μ„Έκ·Έλ¨ΌνŠΈ 이름은 `delegated`μž…λ‹ˆλ‹€.
262
262
  - **μ—­ν•  ν•™μŠ΅μ˜ μ˜€λΆ„λ₯˜ μˆ˜μ •** β€” μ„œλΈŒμ—μ΄μ „νŠΈ λ ˆμ½”λ“œκ°€ λΆ€λͺ¨ νŠΈλžœμŠ€ν¬λ¦½νŠΈμ— `isSidechain` 없이 μ„žμ—¬ λ“€μ–΄μ˜€λŠ” κ²½μš°κ°€ μžˆμ–΄, κ·Έ μ •ν™© 증거가 λͺ…μ‹œ 증거λ₯Ό 이겨 haiku ν”„λ‘œνŒŒμΌμ΄ μ„Έμ…˜ λͺ¨λΈλ‘œ ν™•μ •λ˜κ³€ ν–ˆμŠ΅λ‹ˆλ‹€(μ‹€μΈ‘ 16건 λŒ€ 1건, ν•©μ˜μœ¨ μ •ν™•νžˆ 80%). 이제 **λͺ…μ‹œ 증거(`Task(model:)` νŒŒλΌλ―Έν„°Β·μ—μ΄μ „νŠΈ μ •μ˜ frontmatter)와 μ •ν™© 증거(sidechain ν”Œλž˜κ·Έ λΆ€μž¬)λ₯Ό 뢄리해 집계**ν•˜κ³ , λͺ…μ‹œ 증거가 이λ₯Ό λ°˜λ°•ν•˜λ©΄ μ •ν™© 좔둠을 μ±„νƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 확정이 μ•ˆ 되면 `unknown`으둜 남아 μ§‘κ³„μ—μ„œ λΉ μ§‘λ‹ˆλ‹€.
263
263
 
264
264
  ### v3.10.0 (2026-08-20)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-token-saver",
3
- "version": "3.11.0",
3
+ "version": "3.11.1",
4
4
  "description": "Route the easy work your expensive Claude model keeps repeating down to haiku/sonnet β€” post-hoc session analysis, no realtime router, no extra LLM calls.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -260,12 +260,14 @@ export function formatReport(data, { color = true, verbose = false, timer = true
260
260
  // tier saved, summed from the rule registry route-scan maintains. Hidden
261
261
  // when zero or absent: a permanent "$0" is noise for direct-API users and
262
262
  // for anyone who has not delegated yet.
263
- // text: "Delegated $3.2" | same in verbose
264
- // icon: "πŸ”€ $3.2" | verbose: "πŸ”€ Delegated $3.2"
263
+ // The label mirrors "Cache saved" on purpose: two savings figures reading in
264
+ // the same shape is what makes the second one legible at a glance.
265
+ // text: "Delegation saved $3.2" | same in verbose
266
+ // icon: "πŸ”€ $3.2" | verbose: "πŸ”€ Delegation saved $3.2"
265
267
  const delegationSaved = Number(data.delegationSaved) || 0;
266
268
  const delegateLabel = isIcon
267
- ? (verbose ? 'πŸ”€ Delegated' : 'πŸ”€')
268
- : 'Delegated';
269
+ ? (verbose ? 'πŸ”€ Delegation saved' : 'πŸ”€')
270
+ : 'Delegation saved';
269
271
  const delegateSeg = delegationSaved > 0
270
272
  ? `${c(GREEN)}${delegateLabel}${c(RESET)} ${formatMoney(delegationSaved)}`
271
273
  : null;