Skip to content

release: 9.1.0 - #958

Merged
devswha merged 17 commits into
mainfrom
dev
Sep 26, 2026
Merged

devswha merged 17 commits into
mainfrom
dev

Conversation

@devswha

@devswha devswha commented Sep 26, 2026

Copy link
Copy Markdown
Owner

Summary

Release 9.1.0: merge dev into main. Approved by the owner on 2026-09-26. Policy: docs/WORKFLOW.md

Included, each already merged into dev with green CI and one independent review (verdicts are on each PR):

Scope and risk

  • Merging deploys main to production through the Vercel Git integration. Pushing the tag v9.1.0 afterwards publishes patina-cli and patina-humanizer to npm (Trusted Publishing) and creates the GitHub Release from the CHANGELOG. No GHCR image is published.
  • Contract impact: see CHANGELOG 9.1.0. It removes public surfaces and is a minor release by owner decision; the deviation is stated in the semver rationale.

Verification

  • Release tree (the dev head for this PR, 31dddb3): npm run release:check → 0; npm run lint → 0 (architecture 103 modules, 0 violations); npm test → 0 (2018 tests, 2017 pass, 1 skipped); check:no-private-assets, dogfood, and benchmark:report/benchmark:compare (timestamp-only drift) → 0; scripts/release-artifacts.mjs --dry-run verified both 9.1.0 tarballs.
  • Playwright playground suite 9/9 on 849a9a4.
  • dev push CI green on every included merge commit.

Release and rollback

  • Semver impact: minor (9.0.0 → 9.1.0), by owner decision.
  • Web rollback: promote the current production deployment patina-gb0s82zka (dpl_6fiQSeZVG5pTJFa4XV9d4sdB8KR2, 9.0.0).
  • npm rollback: the owner can point latest back with npm dist-tag add patina-cli@9.0.0 latest (and the same for patina-humanizer).

dependabot Bot and others added 17 commits September 24, 2026 09:08
Bumps the devtools group with 1 update: [eslint](https://github.com/eslint/eslint).


Updates `eslint` from 10.10.0 to 10.11.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v10.10.0...v10.11.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: devtools
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
The in-place page preview (--preview, --ocr, --serve) and XLIFF
localization (--xliff, --dry-run, --max-segments) sat outside the skill
and web surfaces, carried about 3,000 lines with almost no usage signal,
and are not part of the core mission. Page preview may return in a
future desktop app; the design lives in history before a18644b.

Removed: src/preview/*, src/ocr.js, src/capped-fetch.js, src/cli/xliff.js,
their seven unit test files and tests/fixtures/xliff/. args.js drops the
six flags, the preview/serve/XLIFF validators, and the --preview-only
comma-list variant compare: --jargon and --register now take exactly one
value. run.js drops runPreviewJob/runOcrStage/runXliffMode; security.js
drops the page-derived SSRF guard; resolveBatchOutputPath loses the
XLIFF-only defaultSuffix option. Docs updated (CLI, FLAG-PARITY,
ARCHITECTURE, EXIT-CODES, DESIGN, assets/demo/README).

BREAKING CHANGE: six public CLI flags are gone; the next release is a
major. Detection, scoring, prompts, the skill and the hosted surfaces
are unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
With --ocr gone nothing passes images to a backend. Remove the `images`
parameter on every invoke, `supportsImages`, `stageCliImages`,
`selectOcrBackends`, the openai-http image rejection and doctor's
`images=yes` marker. claude-cli now always runs with `--tools ""`, so
AUTHENTICATION.md (+KR) no longer describes an OCR exception.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
`.patina.default.yaml` carried `stylometry.sentence_zoom.similarity_threshold`,
`stylometry.skip.*` and `lexicon.skip.*`; no module in src/, api/ or bin/
reads them. The analyzer hardcodes the <=2 paragraph / <=2 sentence skip
gate, and no surface implements a configurable zoom threshold, so
core/stylometry.md §7 now states the 20% threshold as a rule constant.
The parity test that pinned the yaml skip numbers to the analyzer goes
with the keys.

`.env.example` documented `PATINA_POLAR_LOCK_WAIT_MS`, which no code reads.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ompt section

--jargon existed only on the CLI and never on the /patina skill, which
broke the skill/CLI parity rule. Remove the flag, the explain/remove
directives, the `jargon` option on buildPrompt/verifyRewrite, the hosted
prompt-budget branch only a `jargon` request field could reach, and the
rewrite-ab fixture field.

The default behaviour stays: every rewrite prompt still tells the model to
copy Latin-letter technical terms as-is (`buildTerminologyConstraint`,
formerly the `--jargon keep` branch of buildTransformDirective). Prompt
snapshots change only in the section header and bullet label, which drop
the "(--jargon keep)" suffix. validateTransformRequest becomes
validateRegisterRequest since register is the only option it guards.

BREAKING CHANGE: the --jargon CLI flag is removed (exit 2, unknown option).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
8.7.0 made the H-RHETORIC edit policy the default and kept the older
similar-weight sentence behind PATINA_RHETORIC_POLICY=legacy. Nobody
needs the rollback any more, so the switch goes: resolveRhetoricPolicy,
the LEGACY_* prompt constants, and the rhetoricPolicy option on
buildPrompt, verifyRewrite and buildWebRewritePrompt. The default prompt
text is byte-identical (prompt snapshots unchanged).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
SKILL.md 4.6 and core/stylometry.md §7 told the skill to group adjacent
same-length sentences inside a hot paragraph into `P{n}.S{m}-S{k}`
sub-flags. The CLI analyzer never produced them, so the two surfaces
disagreed. Remove the rule, its meta-block entries and worked-example
lines; 5b now prioritises hot paragraphs (`«P{n} SUSPECT»`). Section
numbers are left as they were (the doc already skipped §11).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
feat!: remove --preview/--ocr/--serve and --xliff from the CLI
…tions/checkout-7

chore(deps): bump actions/checkout from 6 to 7
…ools-4ee7f9a52b

chore(deps-dev): bump eslint from 10.10.0 to 10.11.0 in the devtools group
…ic switch (#952)

chore: drop unread config keys and remove --jargon (Tier 1 cleanup)
The private pack repository has served an empty manifest since
2026-07-12, when its only pack was retired after Study 2, so the CLI
command and the endpoint delivered nothing.

`patina pack` now fails with the same "was removed" usage error as the
retired `pattern` and `aside` commands (exit 2). Hosted Pro license
validation and custom/ pattern and persona loading are unchanged.
Removes katfish-calibration (its regeneration was already retired),
qa/pattern-overlap (no entry point or doc), qa/mdx-score (oh-my-docs
loop closed), badge-json (duplicates patina-action's badge payload),
and rewrite-ab with iterative-rewrite-baseline (parked for H-4a with no
open issue; both are intact at 9108a63). None of them ship in the npm
package.
* feat!: remove the kimi-cli backend

Kimi Code takes the prose as a --prompt argv value that other local
users can read from the process list, which is why the skill helper
already refused it. `--backend kimi-cli` is now an unknown backend
(exit 2) and `--model kimi-*` stays on openai-http. The Kimi/Moonshot
HTTP presets and the hosted kimi provider stay; the research harness
drops its kimi transport with the backend.

* docs: drop Kimi CLI from the FAQ backend lists

Review follow-up for #954: the English and Korean FAQ still offered a logged-in Kimi CLI as an API-key alternative. Also renames a sample backend error in batch.test.js.
Removes the browser analytics adapter, the same-origin /api/funnel
collector, and every track() call site in the playground controller.
Nothing in the repository read the Upstash counters and the campaign
enum was still pinned to the 2026-09-07 launch. Server-side
observability for pro-monitor, checkout UTM forwarding, and audit
receipts are unchanged.
* release: prepare 9.1.0 — dead-feature sweep

- 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

* release: name the --model kimi-* fallback in the 9.1.0 semver rationale

Review follow-up for #957.
@vercel

vercel Bot commented Sep 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
patina Ready Ready Preview Sep 26, 2026 10:25am UTC

Request Review

@devswha
devswha merged commit fb3bd7e into main Sep 26, 2026
14 checks passed

This branch was successfully deployed

1 active deployment
Preview — 31dddb3a Deployed Sep 26, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant