From 0f4fdc95bf29d2faad09801703f8c7f190844c5b Mon Sep 17 00:00:00 2001
From: devswha
Date: Sat, 26 Sep 2026 19:16:32 +0900
Subject: [PATCH 1/2] =?UTF-8?q?release:=20prepare=209.1.0=20=E2=80=94=20de?=
=?UTF-8?q?ad-feature=20sweep?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- CHANGELOG 9.1.0 entry; minor by owner decision, with the removals
that strict semver would call major listed in the semver rationale
- version sync 9.0.0 -> 9.1.0 across package.json, package-lock.json,
SKILL.md, .patina.default.yaml, .claude-plugin/{plugin,marketplace}.json,
packages/patina-humanizer/package.json (version + patina-cli pin),
README{,_KR,_ZH,_JA}.md and the playground version badges
---
.claude-plugin/marketplace.json | 2 +-
.claude-plugin/plugin.json | 2 +-
.patina.default.yaml | 2 +-
CHANGELOG.md | 14 ++++++++++++++
README.md | 6 +++---
README_JA.md | 4 ++--
README_KR.md | 4 ++--
README_ZH.md | 4 ++--
SKILL.md | 2 +-
package-lock.json | 4 ++--
package.json | 2 +-
packages/patina-humanizer/package.json | 4 ++--
playground/index.html | 4 ++--
13 files changed, 34 insertions(+), 20 deletions(-)
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..9d5e6dcd 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, 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. 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 @@
Paste your own and see