diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json
index 408fec7a..ce0c3458 100644
--- a/.claude-plugin/marketplace.json
+++ b/.claude-plugin/marketplace.json
@@ -10,7 +10,7 @@
{
"name": "patina",
"source": "./",
- "version": "9.0.0",
+ "version": "9.1.0",
"description": "Strip the AI packaging, keep the meaning. Detect and rewrite AI writing patterns across KO/EN/ZH/JA with MPS/fidelity checks. Runs the root SKILL.md as the /patina skill.",
"homepage": "https://github.com/devswha/patina",
"repository": "https://github.com/devswha/patina",
diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json
index d2965cd2..c7458e58 100644
--- a/.claude-plugin/plugin.json
+++ b/.claude-plugin/plugin.json
@@ -1,7 +1,7 @@
{
"$schema": "https://www.schemastore.org/claude-code-plugin-manifest.json",
"name": "patina",
- "version": "9.0.0",
+ "version": "9.1.0",
"description": "Detect and rewrite AI writing patterns in Korean, English, Chinese, and Japanese so text reads as if a human wrote it. Meaning-preservation (MPS) verified, audit-friendly. The root SKILL.md is loaded as the /patina skill.",
"author": {
"name": "devswha",
diff --git a/.patina.default.yaml b/.patina.default.yaml
index bf4df5e3..ee87da88 100644
--- a/.patina.default.yaml
+++ b/.patina.default.yaml
@@ -1,4 +1,4 @@
-version: "9.0.0"
+version: "9.1.0"
language: ko # Korean (default) -- auto-loads all ko-*.md patterns
# language: en -- English -- auto-loads all en-*.md patterns
# language: zh -- Chinese -- auto-loads all zh-*.md patterns
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c89421b6..06844b50 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,20 @@
All notable changes to patina. Dates are release dates (YYYY-MM-DD).
+## 9.1.0 — 2026-09-26
+
+**Dead-feature sweep: page preview, XLIFF, `--jargon`, Pro packs, the `kimi-cli` backend and playground analytics are gone; detection is unchanged.**
+
+Semver rationale: minor by owner decision. Strict semver would make this 10.0.0, because it removes public surfaces that 9.0.0 shipped: the CLI flags `--preview`, `--ocr`, `--serve`, `--xliff`, `--dry-run`, `--max-segments` and `--jargon`, the `patina pack` subcommand and its `/api/packs` endpoint, the `kimi-cli` backend (including the `--model kimi-*` route to it), and the `PATINA_RHETORIC_POLICY=legacy` switch. 9.0.0 shipped earlier the same day, and the owner chose not to spend another major number on a same-day cleanup release. Every removed flag and command fails with exit 2 instead of being reinterpreted; the one exception is `--model kimi-*`, which now runs on the HTTP default. Detection and the benchmark are unchanged; the default rewrite prompt differs from 9.0.0 only in the terminology section's header and bullet label.
+
+- **Breaking — page preview and XLIFF are removed from the CLI** (#951). `--preview`, `--ocr`, `--serve`, `--xliff`, `--dry-run` and `--max-segments` are now unknown options (exit 2); 9.0.0 is the last release that carries them. `--register` takes exactly one value, so a comma list is an input error. The OCR-only image plumbing left the backends.
+- **Breaking — `--jargon` and the legacy rhetoric switch are removed** (#952). Rewrites still keep Latin-letter terms as-is through a fixed prompt section; only its `(--jargon keep)` label is gone. `PATINA_RHETORIC_POLICY=legacy` no longer exists, so the H-RHETORIC text is the only rhetoric guidance. The skill drops the Sentence Zoom rule, which the CLI never implemented, and `.patina.default.yaml` drops keys nothing read (`stylometry.sentence_zoom.*`, `stylometry.skip.*`, `lexicon.skip.*`).
+- **Breaking — Pro pack delivery is removed** (#953). The pack repository has published no packs since 2026-07-12. `patina pack …` exits 2 with a removal message. `/api/packs`, `docs/PRO-PACKS.md`, the CLI variables `PATINA_LICENSE_KEY` and `PATINA_PACKS_URL`, and the server variables `PATINA_PACKS_*` are gone; the `license-key` and `packs-url` config keys are ignored. Hosted Pro license validation is unchanged.
+- **Breaking — the `kimi-cli` backend is removed** (#954). Kimi Code received the text as a `--prompt` argument visible in the process list, which is why the skill helper already refused it. `--backend kimi-cli` exits 2 and `--model kimi-*` stays on the HTTP default; `--provider kimi` and `--provider moonshot` are unchanged.
+- **The playground no longer sends analytics** (#956). The funnel events and the internal `/api/funnel` endpoint are removed. Pro monitoring, checkout links and audit receipts are unchanged.
+- **Repository tooling** (#955): removed the retired KatFish calibration runner, `qa/pattern-overlap`, `npm run qa:mdx`, `npm run badge` (patina-action publishes the same badge) and the parked `quality:rewrite-ab` harness with `iterative-rewrite-baseline`. None of these shipped in the npm package.
+- **Dependencies** (#933, #934): `actions/checkout` 7 and the eslint devtools group.
+
## 9.0.0 — 2026-09-26
**Leaner patina: three unused integrations removed, a runtime-only npm package, and a repo-wide cleanup with unchanged detection and prompts.**
diff --git a/README.md b/README.md
index 611262ff..c5eb03ca 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@
-
+
@@ -49,7 +49,7 @@ patina is a deterministic, pattern-based humanizer for Korean, English, Chinese, ## Quick Start -**Version: 9.0.0.** npm publication is a separate, explicitly authorized step. See [release channels](docs/integrations/release.md). +**Version: 9.1.0.** npm publication is a separate, explicitly authorized step. See [release channels](docs/integrations/release.md). **Browser — nothing to install.** Open **[patina.vibetip.help](https://patina.vibetip.help/?lang=en&utm_source=github&utm_campaign=multilingual-20260907)** and paste text. Rewrites run server-side with the MPS/fidelity gates; API mode forwards your own key per request (never stored or logged). @@ -114,7 +114,7 @@ Model evidence: [writing/scoring guide (Korean)](docs/research/model-guide-20260 Project config lives in `.patina.yaml`: ```yaml -version: "9.0.0" +version: "9.1.0" language: ko # ko | en | zh | ja document-type: default # genre/purpose + pattern policy persona: # optional reusable voice; omit to preserve source diff --git a/README_JA.md b/README_JA.md index ce92a78a..06d80a15 100644 --- a/README_JA.md +++ b/README_JA.md @@ -6,7 +6,7 @@ [](https://opensource.org/licenses/MIT) [](#クイックスタート) [](https://github.com/devswha/patina) -[](CHANGELOG.md) +[](CHANGELOG.md) > **AIっぽさだけを落として、意味はそのまま。** @@ -104,7 +104,7 @@ patina --batch docs/*.md --outdir cleaned/ ```yaml # .patina.default.yaml -version: "9.0.0" +version: "9.1.0" language: ko # ko | en | zh | ja document-type: default # ジャンル/用途 + パターン方針 persona: # 任意。省略時は原文ボイスを保持 diff --git a/README_KR.md b/README_KR.md index 0340b278..79b59dcb 100644 --- a/README_KR.md +++ b/README_KR.md @@ -6,7 +6,7 @@ [](https://opensource.org/licenses/MIT) [](#빠른-시작) [](https://github.com/devswha/patina) -[](CHANGELOG.md) +[](CHANGELOG.md)
브라우저에서 바로 써보기 — 설치 없음 @@ -110,7 +110,7 @@ patina --batch docs/*.md --outdir cleaned/ ```yaml # .patina.default.yaml -version: "9.0.0" +version: "9.1.0" language: ko # ko | en | zh | ja document-type: default # 장르·용도 + 패턴 정책 persona: # 선택 사항; 생략하면 원문 보이스 보존 diff --git a/README_ZH.md b/README_ZH.md index 6d9671a5..42b8b121 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -6,7 +6,7 @@ [](https://opensource.org/licenses/MIT) [](#快速开始) [](https://github.com/devswha/patina) -[](CHANGELOG.md) +[](CHANGELOG.md)
去掉 AI 味,保留原意。 @@ -106,7 +106,7 @@ patina --batch docs/*.md --outdir cleaned/ ```yaml # .patina.default.yaml -version: "9.0.0" +version: "9.1.0" language: ko # ko | en | zh | ja document-type: default # 体裁/用途 + 模式策略 persona: # 可选;省略时保留原文声音 diff --git a/SKILL.md b/SKILL.md index 1629b6d0..f2cfc86f 100644 --- a/SKILL.md +++ b/SKILL.md @@ -1,6 +1,6 @@ --- name: patina -version: "9.0.0" +version: "9.1.0" description: Detect and rewrite AI writing patterns in Korean, English, Chinese, and Japanese text so it reads as if a human wrote it. Meaning-preservation (MPS) verified. allowed-tools: - Read diff --git a/package-lock.json b/package-lock.json index de8389b7..a2ba889c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "patina-cli", - "version": "9.0.0", + "version": "9.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "patina-cli", - "version": "9.0.0", + "version": "9.1.0", "license": "MIT", "dependencies": { "js-yaml": "^4.1.0" diff --git a/package.json b/package.json index 0bd0cb68..59d31b9e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "patina-cli", - "version": "9.0.0", + "version": "9.1.0", "description": "AI text humanizer CLI — detects and removes AI writing patterns", "type": "module", "main": "src/cli.js", diff --git a/packages/patina-humanizer/package.json b/packages/patina-humanizer/package.json index 10328fee..3c473aa5 100644 --- a/packages/patina-humanizer/package.json +++ b/packages/patina-humanizer/package.json @@ -1,13 +1,13 @@ { "name": "patina-humanizer", - "version": "9.0.0", + "version": "9.1.0", "description": "SEO-friendly alias for patina-cli", "type": "module", "bin": { "patina-humanizer": "bin/patina-humanizer.js" }, "dependencies": { - "patina-cli": "9.0.0" + "patina-cli": "9.1.0" }, "license": "MIT", "repository": { diff --git a/playground/index.html b/playground/index.html index b956fc56..1aaf8f73 100644 --- a/playground/index.html +++ b/playground/index.html @@ -246,7 +246,7 @@