tink-harness 1.9.15 → 1.9.16

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tink",
3
3
  "description": "A small harness layer for Claude Code and Codex.",
4
- "version": "1.9.15",
4
+ "version": "1.9.16",
5
5
  "author": {
6
6
  "name": "dotori"
7
7
  }
package/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ All notable changes to Tink are tracked here.
6
6
 
7
7
  No unreleased changes yet.
8
8
 
9
+ ## [1.9.16] - 2026-06-11
10
+
11
+ ### Fixed
12
+
13
+ - `update` now runs in the language you previously chose: it reads `language` from the installed `.tink/config.json` (repo first, then home for global installs). An explicit `--lang` flag still wins, and the stored language applies to both interactive and `--yes` updates. Added a regression test covering install-then-update language persistence and flag override.
14
+
9
15
  ## [1.9.15] - 2026-06-11
10
16
 
11
17
  ### Changed
package/README.ko.md CHANGED
@@ -8,7 +8,7 @@ Claude Code와 Codex를 위한 작은 하네스 레이어입니다.
8
8
 
9
9
  Tink는 지금 작업에 맞는 하네스를 고르고, 실행 상태를 보이게 만들고, 실제 사용 중 생긴 실패와 피드백으로 하네스 세트를 개선합니다.
10
10
 
11
- **최신 패키지:** v1.9.15 — 로컬 건강 리포트가 탭형 대시보드로 바뀌었습니다. 3D 하네스 지도, 쉬운 말 건강 요약, Claude Code와 Codex 양쪽 복사-붙여넣기 명령이 포함된 다음 행동 제안을 제공합니다. 전체 변경 이력은 [CHANGELOG](CHANGELOG.md)를 확인하세요.
11
+ **최신 패키지:** v1.9.16 — 로컬 건강 리포트가 탭형 대시보드로 바뀌었습니다. 3D 하네스 지도, 쉬운 말 건강 요약, Claude Code와 Codex 양쪽 복사-붙여넣기 명령이 포함된 다음 행동 제안을 제공합니다. 전체 변경 이력은 [CHANGELOG](CHANGELOG.md)를 확인하세요.
12
12
 
13
13
  [English](README.md) · **한국어** · [변경 이력](CHANGELOG.md)
14
14
 
package/README.md CHANGED
@@ -17,14 +17,14 @@
17
17
  </p>
18
18
 
19
19
  <p>
20
- <a href="https://github.com/dotoricode/tink-harness/releases/tag/v1.9.15"><img src="https://img.shields.io/github/v/release/dotoricode/tink-harness?label=release&color=2ea44f" alt="GitHub release"></a>
20
+ <a href="https://github.com/dotoricode/tink-harness/releases/tag/v1.9.16"><img src="https://img.shields.io/github/v/release/dotoricode/tink-harness?label=release&color=2ea44f" alt="GitHub release"></a>
21
21
  <a href="https://www.npmjs.com/package/tink-harness"><img src="https://img.shields.io/npm/v/tink-harness?label=npm&color=cb3837" alt="npm version"></a>
22
22
  <a href="https://github.com/dotoricode/tink-harness/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/dotoricode/tink-harness/ci.yml?branch=main&label=ci" alt="CI"></a>
23
23
  <a href="https://github.com/dotoricode/tink-harness/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dotoricode/tink-harness" alt="License"></a>
24
24
  <a href="https://github.com/dotoricode/tink-harness/stargazers"><img src="https://img.shields.io/github/stars/dotoricode/tink-harness?style=social" alt="GitHub stars"></a>
25
25
  </p>
26
26
 
27
- <p><strong>Latest package:</strong> v1.9.15 - The local health report is now a tabbed dashboard with a 3D harness map, plain-language health summaries, and next-action suggestions with copy-paste commands for both Claude Code and Codex. See <a href="CHANGELOG.md">CHANGELOG</a> for release history.</p>
27
+ <p><strong>Latest package:</strong> v1.9.16 - The local health report is now a tabbed dashboard with a 3D harness map, plain-language health summaries, and next-action suggestions with copy-paste commands for both Claude Code and Codex. See <a href="CHANGELOG.md">CHANGELOG</a> for release history.</p>
28
28
 
29
29
  **English** · [한국어](README.ko.md) · [Changelog](CHANGELOG.md)
30
30
 
package/VERSIONING.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Versioning
2
2
 
3
- Current version: `1.9.15`
3
+ Current version: `1.9.16`
4
4
 
5
5
  Tink follows semver from `1.0.0` onward.
6
6
 
package/bin/install.js CHANGED
@@ -384,12 +384,19 @@ function shortList(items, emptyText = '- none') {
384
384
  }
385
385
 
386
386
  function detectInstalledLanguage() {
387
- try {
388
- const config = JSON.parse(fs.readFileSync(path.join(process.cwd(), '.tink/config.json'), 'utf8'));
389
- return ['en', 'ko', 'zh'].includes(config.language) ? config.language : null;
390
- } catch {
391
- return null;
387
+ const candidates = [
388
+ path.join(process.cwd(), '.tink/config.json'),
389
+ path.join(os.homedir(), '.tink/config.json')
390
+ ];
391
+ for (const configPath of candidates) {
392
+ try {
393
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
394
+ if (['en', 'ko', 'zh'].includes(config.language)) return config.language;
395
+ } catch {
396
+ // keep looking
397
+ }
392
398
  }
399
+ return null;
393
400
  }
394
401
 
395
402
  function isAlwaysUpdatePath(src) {
@@ -794,6 +801,13 @@ async function resolveChoices() {
794
801
  let gitPolicy = 'harnesses';
795
802
  let hookScope = 'off';
796
803
 
804
+ const explicitLanguage = Boolean(argValue('--lang') || argValue('--language'));
805
+ if (isUpdate && !explicitLanguage) {
806
+ language = detectInstalledLanguage() || language;
807
+ components = defaultComponentValues(agent, language);
808
+ if (includesClaude(agent) && args.includes('--with-hook')) components.push('hook');
809
+ }
810
+
797
811
  if (!interactive) {
798
812
  scope = scope || 'repo';
799
813
  if (components.includes('hook')) hookScope = scope;
@@ -801,7 +815,6 @@ async function resolveChoices() {
801
815
  }
802
816
 
803
817
  if (isUpdate) {
804
- language = detectInstalledLanguage() || language;
805
818
  const copy = COPY[language];
806
819
  printBanner();
807
820
  intro(pc.bgBlue(pc.white(copy.intro)));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tink-harness",
3
- "version": "1.9.15",
3
+ "version": "1.9.16",
4
4
  "description": "Self-growing harnesses for Claude Code and Codex.",
5
5
  "license": "MIT",
6
6
  "type": "module",