Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
},
"metadata": {
"description": "Content-readiness lint with an evidence-bounded SEO experiment ledger",
"version": "0.10.0"
"version": "0.11.0"
},
"plugins": [
{
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "geoptimize",
"description": "Content-readiness lint with an evidence-bounded SEO experiment ledger",
"version": "0.10.0",
"version": "0.11.0",
"author": {
"name": "Te-Shu Wang"
},
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ jobs:
with:
path: .github/fixtures/action-low
min-score: '100'
package-spec: ./geoptimize-0.10.0.tgz
package-spec: ./geoptimize-0.11.0.tgz

- name: Validate Action outputs
env:
Expand All @@ -130,7 +130,7 @@ jobs:
uses: ./
with:
path: examples/github-action-sample/site
package-spec: ./geoptimize-0.10.0.tgz
package-spec: ./geoptimize-0.11.0.tgz

- name: Validate sample outputs
env:
Expand All @@ -149,7 +149,7 @@ jobs:
path: .github/fixtures/action-low
min-score: '0'
fail-on-low-score: 'true'
package-spec: ./geoptimize-0.10.0.tgz
package-spec: ./geoptimize-0.11.0.tgz

- name: Validate blocking outputs
env:
Expand All @@ -169,7 +169,7 @@ jobs:
path: .github/fixtures/action-low
min-score: '100'
fail-on-low-score: 'true'
package-spec: ./geoptimize-0.10.0.tgz
package-spec: ./geoptimize-0.11.0.tgz

- name: Invalid choice is rejected
id: invalid-choice
Expand All @@ -178,7 +178,7 @@ jobs:
with:
path: .github/fixtures/action-low
fail-on-low-score: sometimes
package-spec: ./geoptimize-0.10.0.tgz
package-spec: ./geoptimize-0.11.0.tgz

- name: Out-of-range threshold is rejected
id: invalid-threshold
Expand All @@ -187,7 +187,7 @@ jobs:
with:
path: .github/fixtures/action-low
min-score: '101'
package-spec: ./geoptimize-0.10.0.tgz
package-spec: ./geoptimize-0.11.0.tgz

- name: Assert expected failures
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:
subject-path: ${{ runner.temp }}/release-assets/geoptimize-*.tgz
- name: Stage all assets in a draft release
run: |
gh release create "$RELEASE_TAG" --verify-tag --draft --title "geoptimize ${RELEASE_TAG#v}" --notes-file docs/release-notes-v0.10.md
gh release create "$RELEASE_TAG" --verify-tag --draft --title "geoptimize ${RELEASE_TAG#v}" --notes-file docs/release-notes-v0.11.md
gh release upload "$RELEASE_TAG" "$RUNNER_TEMP/release-assets/"*.tgz "$RUNNER_TEMP/release-assets/SHA256SUMS" "$RUNNER_TEMP/release-assets/"*.spdx.json
- name: Publish the verified tarball using npm OIDC
run: |
Expand Down
6 changes: 3 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

All notable user-visible changes will be documented here. The project follows Semantic Versioning after the v0.6 evidence baseline is released.

## Unreleased
## 0.11.0 (2026-09-13)

### Added

Expand All @@ -24,8 +24,8 @@ All notable user-visible changes will be documented here. The project follows Se

### Documentation

- Updated current-state documentation after the verified v0.10.0 publication.
- Aligned migration, maintainer-security, OpenSSF, Action sample, and plugin descriptions with the published release.
- Updated installation and migration instructions for v0.11.0 while retaining historical release evidence.
- Aligned CLI, plugin, and Action versions with v0.11.0.
- Completed both Claude Code installation steps in the English and translated guides and recorded directory submission results.
- Replaced the unsupported hosted-platform price estimate with vendor-specific pricing wording.

Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ npx geoptimize audit https://example.com --json
npx geoptimize audit-site https://example.com --max-pages 20 --json
```

The next release adds a terminal menu for scanning a target and saving an HTML report. See [the interactive CLI guide](docs/interactive-cli.md) for development-checkout usage; published `0.10.0` uses the explicit commands above.
Version 0.11.0 adds a guided terminal menu for scanning a target and saving an offline HTML report. See [the interactive CLI guide](docs/interactive-cli.md) for `npm install` and `npx` usage; explicit commands remain available for scripts and non-TTY environments.

For measured Google Search experiments, initialize the separate SEO ledger:

Expand Down Expand Up @@ -201,15 +201,15 @@ node -e "const r=require('./geoptimize-report.json'); process.exit(r.overall.tot
The [GitHub Marketplace Action](https://github.com/marketplace/actions/geoptimize-content-readiness-check) is advisory by default. It reports findings without blocking the workflow:

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```

Projects can explicitly choose blocking mode after accepting a baseline:

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
fail-on-low-score: 'true'
Expand Down Expand Up @@ -333,13 +333,13 @@ npx skills add cucuwang/geoptimize

## Project status

Version 0.10.0 is published on [npm](https://www.npmjs.com/package/geoptimize) and [GitHub](https://github.com/cucuwang/geoptimize/releases/tag/v0.10.0). It adds a separate, evidence-bounded SEO experiment ledger while retaining the existing readiness score and audit contracts. Release acceptance and rollback are documented in [docs/release-v0.10.md](docs/release-v0.10.md); longer-term adoption work remains in [ROADMAP.md](ROADMAP.md).
Version 0.11.0 adds a guided terminal menu for saving offline HTML reports, updates supported dependencies, and improves public release verification. The readiness score and existing audit contracts remain unchanged. See the [release notes](https://github.com/cucuwang/geoptimize/releases/tag/v0.11.0), [release runbook](docs/release-v0.11.md), and [roadmap](ROADMAP.md).

Contributions are welcome. Rule changes require an evidence note and positive/negative fixtures; see [CONTRIBUTING.md](CONTRIBUTING.md). Report vulnerabilities through the process in [SECURITY.md](SECURITY.md).

## Release integrity and security maintenance

The v0.10 trust-hardening and release path is documented in [the v0.10 runbook](docs/release-v0.10.md).
The v0.11 release path is documented in [the v0.11 runbook](docs/release-v0.11.md). The v0.10 runbook remains the historical record for the verified v0.10.0 release.
CI validates Node 22/24 tarballs, package contents and CLI/Action contracts; the
release preparation exports SHA-256 checksums and an SPDX production-dependency SBOM.
Repository settings and npm authorization remain explicit [maintainer gates](docs/maintainer-security-settings.md).
Expand Down
8 changes: 8 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,11 @@ Version 0.10.0 is published with npm OIDC provenance, an SSH-signed immutable ta
SHA-256 checksums, an SPDX SBOM and a GitHub artifact attestation. OpenSSF Passing
remains pending assessment. Bundled Action runtime evaluation is tracked separately
to preserve the package-spec contract. See [release-v0.10](docs/release-v0.10.md).

## v0.11 Guided terminal reports

Version 0.11.0 adds a terminal menu for choosing a scan target and saving an offline
HTML report. Explicit commands and the existing scoring and JSON contracts remain
available. The release also updates supported dependencies and adds bounded npm
visibility polling to the existing publication verifier. See the
[v0.11 release runbook](docs/release-v0.11.md).
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ triage. Configuration alone does not establish a clean scan or certification.

Automated releases use npm OIDC, tarball attestations, checksums and a locked
production SBOM. Version 0.10.0 is the first release published through this path.
Follow [release verification](docs/release-v0.10.md) and [maintainer security
Follow [release verification](docs/release-v0.11.md) and [maintainer security
settings](docs/maintainer-security-settings.md). Earlier releases are not
retroactively signed or attested. No long-lived npm credential is required.
2 changes: 1 addition & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ inputs:
package-spec:
description: npm package spec to install; keep the default outside prerelease testing
required: false
default: 'geoptimize@0.10.0'
default: 'geoptimize@0.11.0'

outputs:
score:
Expand Down
2 changes: 1 addition & 1 deletion action/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ inputs:
package-spec:
description: npm package spec to install; keep the default outside prerelease testing
required: false
default: 'geoptimize@0.10.0'
default: 'geoptimize@0.11.0'

outputs:
score:
Expand Down
11 changes: 8 additions & 3 deletions docs/interactive-cli.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
# Interactive CLI

**Unreleased development checkout.** The interactive flow described here is not included in the published `geoptimize@0.10.0` package.
The guided flow is included in `geoptimize@0.11.0`. Install the package and run the bare command:

When the CLI is run directly with no arguments, and both standard input and standard output are TTYs, it offers a short guided flow for scanning one target and writing an offline HTML report:
```bash
npm install --save-dev geoptimize@0.11.0
npx --no-install geoptimize
```

When the CLI is run directly with no arguments, and both standard input and standard output are TTYs, it offers a short guided flow for scanning one target and writing an offline HTML report. To run it from a development checkout:

```bash
npm run build
Expand All @@ -13,4 +18,4 @@ The flow lets the operator choose a website URL, a local HTML or Markdown file,

Enter `b` or `back` to return to the previous menu, or `c`, `cancel`, `q`, or `quit` to leave the flow. At any prompt, EOF or Ctrl-C leaves without creating a report. Before scanning starts, the prompt closes; Ctrl-C during the scan is then handled by the normal process interrupt. EOF after that point is no longer a prompt cancellation. A scan that returns no pages is reported as an error and cannot produce an empty success report.

Explicit commands and flags keep their existing Commander behaviour. The menu is not entered for `--help`, `--version`, or non-TTY invocation. After a release that includes this flow, all three package aliases, `geoptimize`, `geo`, and `geo-cli`, will support the same entry point. URL and directory results retain the scanner's evidence and coverage limits; the guided flow does not turn a bounded scan into a complete site audit.
Explicit commands and flags keep their existing Commander behaviour. The menu is not entered for `--help`, `--version`, or non-TTY invocation. All three package aliases, `geoptimize`, `geo`, and `geo-cli`, support the same entry point in the v0.11.0 release. URL and directory results retain the scanner's evidence and coverage limits; the guided flow does not turn a bounded scan into a complete site audit.
8 changes: 4 additions & 4 deletions docs/migrating-from-aeoptimize.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

`geoptimize` continues the same project previously published as `aeoptimize`. Version 0.7.0 was released under the old npm name; version 0.8.0 is the first release under the new name. The GitHub repository retains the project history, issues, releases, and stars.

[geoptimize on npm](https://www.npmjs.com/package/geoptimize) · [aeoptimize on npm](https://www.npmjs.com/package/aeoptimize) · [v0.7.0 release](https://github.com/cucuwang/geoptimize/releases/tag/v0.7.0) · [current release](https://github.com/cucuwang/geoptimize/releases/tag/v0.10.0)
[geoptimize on npm](https://www.npmjs.com/package/geoptimize) · [aeoptimize on npm](https://www.npmjs.com/package/aeoptimize) · [v0.7.0 release](https://github.com/cucuwang/geoptimize/releases/tag/v0.7.0) · [current release](https://github.com/cucuwang/geoptimize/releases/tag/v0.11.0)

## Update an existing project

If the old package installed a pre-commit hook, remove that hook before uninstalling the package, using the hook instructions below. For a development dependency, replace the package and update the commands and imports below. If the package is a runtime dependency, keep it in `dependencies` instead of using `--save-dev`.

```bash
npm uninstall aeoptimize
npm install --save-dev geoptimize@0.10.0
npm install --save-dev geoptimize@0.11.0
```

| Integration | aeoptimize 0.7.0 | geoptimize 0.8.0 and later |
Expand All @@ -19,7 +19,7 @@ npm install --save-dev geoptimize@0.10.0
| CLI commands | `aeoptimize`, `aeo`, `aeo-cli` | `geoptimize`, `geo`, `geo-cli` |
| Vite import | `aeoPlugin` from `aeoptimize/vite` | `geoPlugin` from `geoptimize/vite` |
| Next.js import | `withAeo` from `aeoptimize/next` | `withGeo` from `geoptimize/next` |
| GitHub Action | `cucuwang/aeoptimize@v0.7.0` | `cucuwang/geoptimize@v0.10.0` |
| GitHub Action | `cucuwang/aeoptimize@v0.7.0` | `cucuwang/geoptimize@v0.11.0` |
| Bundled skills | `aeo-scan`, `aeo-generate`, `aeo-transform` | `geo-scan`, `geo-generate`, `geo-transform` |
| Generated schema directory | `_aeo` | `_geo` |

Expand All @@ -34,7 +34,7 @@ npx --no-install geoptimize --version
npx --no-install geoptimize audit-build ./dist --json
```

The installed version should be `0.10.0`. Build the consuming project and review its output after updating Vite or Next.js imports. Deterministic scoring and audit evidence contracts are preserved across the rename.
The installed version should be `0.11.0`. Build the consuming project and review its output after updating Vite or Next.js imports. Deterministic scoring and audit evidence contracts are preserved across the rename.

## Package history and download counts

Expand Down
2 changes: 1 addition & 1 deletion docs/readme/README.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Die Daten liegen in `data/seo/queries.json`, `observations.json` und `experiment
Die GitHub Action liefert standardmäßig Hinweise. Nachdem ein Team den Ausgangswert akzeptiert hat, kann es einen Mindestwert zum Blockieren von Regressionen setzen.

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```
Expand Down
2 changes: 1 addition & 1 deletion docs/readme/README.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Los datos se guardan en `data/seo/queries.json`, `observations.json` y `experime
La GitHub Action es informativa de forma predeterminada. Después de aceptar una línea base, el equipo puede configurar una puntuación mínima para bloquear regresiones.

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```
Expand Down
2 changes: 1 addition & 1 deletion docs/readme/README.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Les données sont enregistrées dans `data/seo/queries.json`, `observations.json
La GitHub Action fournit des résultats consultatifs par défaut. Après validation d'une référence, l'équipe peut définir un score minimal pour bloquer les régressions.

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```
Expand Down
2 changes: 1 addition & 1 deletion docs/readme/README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ geo seo status .
GitHub Action は既定で助言のみを行います。チームが基準値を確認した後、最低スコアを設定して回帰をブロックできます。

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```
Expand Down
2 changes: 1 addition & 1 deletion docs/readme/README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ geo seo status .
GitHub Action은 기본적으로 권고 결과만 제공합니다. 팀에서 기준값을 승인한 뒤 최소 점수로 회귀를 차단할 수 있습니다.

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```
Expand Down
2 changes: 1 addition & 1 deletion docs/readme/README.pt-BR.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Os dados ficam em `data/seo/queries.json`, `observations.json` e `experiments.js
A GitHub Action fornece resultados consultivos por padrão. Depois que a equipe aceitar uma linha de base, ela pode definir uma pontuação mínima para bloquear regressões.

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```
Expand Down
2 changes: 1 addition & 1 deletion docs/readme/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ geo seo status .
GitHub Action 默认提供建议性检查。团队接受基准后,可以设置最低分数来阻止回归。

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```
Expand Down
2 changes: 1 addition & 1 deletion docs/readme/README.zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ geo seo status .
GitHub Action 預設提供建議性檢查。團隊接受基準後,可設定最低分數來阻擋回歸。

```yaml
- uses: cucuwang/geoptimize@v0.10.0
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```
Expand Down
31 changes: 31 additions & 0 deletions docs/release-notes-v0.11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# geoptimize 0.11.0

## Guided interactive CLI

- Run `geoptimize`, `geo`, or `geo-cli` without arguments in a TTY to open a guided flow for scanning a website URL, local HTML or Markdown file, or local directory.
- The flow runs a detailed scan and writes the same self-contained offline HTML report used by `geoptimize report`.
- Existing output files are preserved. Cancel, EOF, Ctrl-C at a prompt, scan errors, and empty scans do not create a report.
- Explicit commands, JSON output, `--help`, `--version`, and non-TTY invocation keep their existing behavior.

## Compatibility and maintenance

- Supports Node.js 22.12 and newer, with Node 24 type definitions retained.
- Updates Puppeteer Core, Chalk, Commander, and Vitest within the supported runtime range.
- Adds bounded retry for temporary npm visibility delays and verifies packages against their exact release source.
- Keeps the deterministic readiness score, existing audit JSON contracts, and composite Action scoring contracts unchanged.
- Clarifies how bundled skills handle untrusted page content, repositories, and scan reports within the approved task scope.

## Install

```bash
npm install --save-dev geoptimize@0.11.0
npx geoptimize
```

To use the Action in a workflow:

```yaml
- uses: cucuwang/geoptimize@v0.11.0
with:
path: dist
```
Loading
Loading