From 770005e2b98a57066c9dbcba53e349bc3022a792 Mon Sep 17 00:00:00 2001 From: Ben Senescu <44480372+bensenescu@users.noreply.github.com> Date: Wed, 24 Jun 2026 15:22:17 -0400 Subject: [PATCH] release: v0.0.21 (#293) --- .claude/skills/openseo-release-notes/SKILL.md | 14 ++++++++++---- package.json | 2 +- release-notes/v0.0.21.md | 13 +++++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 release-notes/v0.0.21.md diff --git a/.claude/skills/openseo-release-notes/SKILL.md b/.claude/skills/openseo-release-notes/SKILL.md index 5e4bfe3..638c610 100644 --- a/.claude/skills/openseo-release-notes/SKILL.md +++ b/.claude/skills/openseo-release-notes/SKILL.md @@ -22,17 +22,23 @@ Cut a release for this repo end to end. The deliverables are a version bump in ` Write `release-notes/v.md` matching the style of the 2–3 most recent files in `release-notes/`: -- One-sentence summary line at the top (no heading). +- One-sentence summary line at the top (no heading). Lead with the biggest user-facing win, stated as the outcome. - `## What's new`, `## Improved`, `## Fixed` — include a section only when it has content. - Imperative bullets ("Add…", "Improve…", "Cut…"), concise, user-facing. +- **Be punchy — lead with the impact, not the mechanism.** The top-level bullet is the outcome the user gets ("Reduce rank tracking costs by ~3x"); push the how into one brief sub-bullet beneath it. Don't open a bullet with the implementation ("Run scheduled checks through DataForSEO's task queue and…") — that buries the lead. - End with: `Full Changelog: https://github.com/every-app/open-seo/compare/v...v` Content guidelines: -- Only include changes relevant to users of the product (hosted users and self-hosters). -- Do NOT mention: marketing-website (`web/`) changes, hosted-app internals (billing infrastructure, Autumn config, directory/Smithery scores, analytics), specs/ADRs, CI, refactors. -- Include bug fixes and improvements when notable and not part of a larger refactor (fold minor fixes into the related bullet or drop them). +- Only include changes to the **product itself** — the app, the MCP tools, the SEO data/features that someone running OpenSEO actually uses. The litmus test for every bullet: **would a self-hoster running OpenSEO care about this?** If it only affects the hosted commercial offering, the marketing site, or the first-run signup experience, drop it. +- Do NOT mention: + - **Marketing-website (`web/`) changes** — landing pages, copy, positioning, blog. + - **Pricing / plans / subscription / billing** — price changes, paywalls, free-trial changes, money-back guarantees, grandfathering, Autumn config, billing-status syncs. These are hosted-commercial concerns, irrelevant to self-hosters. + - **Onboarding-flow-only changes** — the signup/onboarding chat, profiling steps, upgrade rails, email-verification UX, and other first-run-only flows. A change buried in onboarding is not a product capability the broader user base gains; leave it out even if it's a sizable feature. + - **Hosted-app internals & meta** — directory/Smithery scores, analytics, specs/ADRs, CI, refactors. +- Include bug fixes and improvements when notable, user-facing, and not part of a larger refactor (fold minor fixes into the related bullet or drop them). A fix only qualifies if it changes behavior a user would notice in the product or MCP tools — not in onboarding or billing. - Never invent features — every claim must trace to a commit. State user-visible limitations that set expectations (e.g. a feature unavailable for some countries). +- For headline numbers, quote the **conservative, typical figure**, not the cherry-picked best case. A PR's biggest number is often scoped to an ideal condition (e.g. "~83% cheaper for a page-1-ranking domain at default depth") — round down to a defensible blended claim ("~3x cheaper") so the headline never overstates the everyday result. - Name specific MCP tools/params when an umbrella phrase would over- or understate which tools support a feature. ## 4. Review and verify diff --git a/package.json b/package.json index c3ca30e..124919f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "open-seo", "private": true, "sideEffects": false, - "version": "0.0.20", + "version": "0.0.21", "type": "module", "packageManager": "pnpm@10.30.1", "scripts": { diff --git a/release-notes/v0.0.21.md b/release-notes/v0.0.21.md new file mode 100644 index 0000000..30ab0f3 --- /dev/null +++ b/release-notes/v0.0.21.md @@ -0,0 +1,13 @@ +This release cuts rank tracking costs by ~3x, plus fixes for MCP tool output and project lookups. + +## Improved + +- Reduce rank tracking costs by ~3x. + - Scheduled checks now run through DataForSEO's task queue, and every check stops crawling SERP pages once your domain is found. + +## Fixed + +- Fix MCP tool output validation so results are no longer rejected after credits are spent, and report tool errors more clearly. +- Avoid an internal error during project access lookups. + +Full Changelog: https://github.com/every-app/open-seo/compare/v0.0.20...v0.0.21