Skip to content

docs: v1.16.0 post-tag updates (banners, integrations, pins, benchmarks, Glama sync) - #855

Merged
ajitpratap0 merged 4 commits into
mainfrom
docs/v1.16.0-post-tag
Oct 22, 2026
Merged

ajitpratap0 merged 4 commits into
mainfrom
docs/v1.16.0-post-tag

Conversation

@ajitpratap0

Copy link
Copy Markdown
Owner

Summary

Post-tag follow-ups for v1.16.0 (these fail CI before the tag exists).

  • doc.go Version History gains v1.16.0.
  • Version banners: go run ./scripts/gen-readme-metrics (README metrics block, docs/COMPARISON.md).
  • Integrations: integrations/gorm and integrations/opentelemetry require github.com/ajitpratap0/GoSQLX v1.16.0 (were v1.14.0); tidy, build and tests pass.
  • Install pins: @v1.16.0 in docs/guides/lint-sql-in-ci.md and the lint-in-CI website article.
  • Parse benchmarks re-measured (Apple M4, BenchmarkPerformanceBaseline, median of 20 runs, 2026-10-22): SELECT 349 ns, INSERT 406, CTE 644, window 631, complex 1234. Under identical conditions v1.16.0 SimpleSelect is 26% faster than v1.15.0 (345 vs 469 ns, benchstat p=0.000 n=10); the absolute figure sits above the 2026-10-13 318 ns because of ambient machine load. Updated metrics.json (runs: 20), README, llms.txt, website/src/data/metrics.ts and performance_baselines.json current_performance (CI thresholds unchanged).
  • Competitor benchmarks: results from the v1.16.0 tag's bench-compare publish run (commit e9c5db9) → benchmarks/compare/results/latest.{json,txt} and an exact copy in website/src/data/competitor-benchmarks.json.
  • Glama sync: GoReleaser publishes releases with GITHUB_TOKEN, which starts no workflows, so glama-sync.yml never ran for v1.16.0. It gains a workflow_dispatch tag input; release.yml dispatches it after GoReleaser (actions: write). Build pinned to the tag's commit; Glama build image Go 1.26.1 → 1.26.10. Note: GLAMA_SESSION_COOKIE is not set, so the Glama build trigger still skips until the maintainer adds it.
  • Dialect wording: llms.txt and CLAUDE.md say 8 dialects with dedicated grammar, and that --dialect also accepts generic, bigquery, redshift (matches README since fix: single-source core lint rules, derive CLI version, fix README dialect note #853).

Test Plan

  • go run ./scripts/gen-readme-metrics --check and --claims --about "<current About>": ok at v1.16.0
  • node website/scripts/check-metrics-drift.mjs: passed
  • go test -run TestPerformanceRegression ./pkg/sql/parser/: ok
  • integrations: go mod tidy && go build ./... && go test ./... in both modules
  • pre-commit fmt/vet/short tests; workflow YAML parses
  • After merge: gh workflow run glama-sync.yml -f tag=v1.16.0 to sync this release

Breaking Changes

None.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RkzVu3JY9Y6BRWfjesWts9

Ajit Pratap Singh and others added 3 commits October 22, 2026 17:08
…kip]

- doc.go Version History gains v1.16.0.
- gen-readme-metrics: README metrics block and docs/COMPARISON.md banner now
  track the v1.16.0 tag.
- integrations/gorm and integrations/opentelemetry require v1.16.0.
- lint-sql-in-ci guide and article pin @v1.16.0.
- Parse-stage benchmarks re-measured on Apple M4 (median of 20 runs,
  2026-10-22): SELECT 349 ns, INSERT 406, CTE 644, window 631, complex 1234.
  Same machine and load: v1.16.0 SimpleSelect is 26% faster than v1.15.0
  (345 vs 469 ns, benchstat p=0.000 n=10); the absolute figure is above the
  2026-10-13 318 ns because the machine was under ambient load (~2.8).
  Updated metrics.json, README, llms.txt, website metrics.ts and
  performance_baselines.json current_performance (CI baselines unchanged).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RkzVu3JY9Y6BRWfjesWts9
…unt [vercel skip]

- GoReleaser publishes the release with GITHUB_TOKEN, so glama-sync.yml's
  `release: published` trigger never fired (it did not run for v1.16.0).
  glama-sync gains a workflow_dispatch `tag` input and release.yml dispatches
  it after GoReleaser (actions: write). The build is pinned to the tag's
  commit; the Glama build image's Go goes from 1.26.1 to 1.26.10.
- llms.txt and CLAUDE.md: 8 dialects with dedicated grammar; --dialect also
  accepts generic, bigquery and redshift (matches README since #853).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RkzVu3JY9Y6BRWfjesWts9
From the v1.16.0 tag's Competitor Benchmarks run (39771034670, commit
e9c5db9, generatedAt 2026-10-22T11:43:59Z, GitHub ubuntu-latest, go1.26.9).
results/latest.{json,txt} and website/src/data/competitor-benchmarks.json
(exact copy). gen-readme-metrics --claims (incl. About text) and the website
metrics drift check pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RkzVu3JY9Y6BRWfjesWts9
@vercel

vercel Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated
gosqlx-website Ignored Ignored Preview Oct 22, 2026 3:33pm UTC

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Claude finished @ajitpratap0's task in 27s —— View job


Review of PR #855

Most of this is mechanical (metrics, pins, benchmark data) and looks consistent. I reviewed the workflow, go.mod, doc.go, llms.txt, CLAUDE.md, performance_baselines.json and metrics.json diffs. I did not run the tests or the generators, and I did not read the large benchmark result files.

Bug: VERSION is empty in the commit step

.github/workflows/glama-sync.yml, "Commit and push" step. VERSION is set inside the "Bump version in glama.json" step's shell. Shell variables don't carry across steps, so here it expands to an empty string. The commit message becomes chore(glama): sync version to [skip ci], and the "already at" message is blank too. Before this PR, both steps used ${GITHUB_REF_NAME#v}, which is why it worked.

Fix: either add env: RELEASE_TAG: ${{ inputs.tag || github.ref_name }} to the commit step and compute VERSION="${RELEASE_TAG#v}" there, or write echo "VERSION=$VERSION" >> "$GITHUB_ENV" in the bump step.

Other concerns (workflows)

  • Dispatch from a tag run. release.yml runs gh workflow run glama-sync.yml --ref main, and the sync job checks out main for workflow_dispatch. It then pushes the glama.json bump to main. If branch protection blocks github-actions[bot] from pushing directly, that push fails. The job is continue-on-error, so the failure would be silent. It's worth confirming this push works on a protected main.
  • Checkout vs. build commit. The glama.json bump lands on main's head, but the Docker build is pinned to the tag's commit. That is fine for your intent, but the tagged commit's glama.json will keep the old version. This matches the pre-existing design, so just be aware of it.
  • Commit lookup. gh api repos/.../commits/${RELEASE_TAG} resolves tags, but if the tag is annotated it still returns the commit SHA, so it's OK. If the lookup fails, COMMIT_SHA is empty, because the $(...) assignment isn't checked. Consider set -euo pipefail or an explicit empty check before the cookie check.
  • Token scope. actions: write is scoped to the release job, which is appropriate. The dispatch step is continue-on-error, so failures won't block the release. That's reasonable, but a failure is easy to miss.
  • Go version. The Glama build image moved from Go 1.26.1 to 1.26.10. Please confirm 1.26.10 exists on go.dev/dl at merge time, because a typo here only shows up when the build runs.

Docs and data

  • integrations/gorm/go.sum and integrations/opentelemetry/go.mod bumped to v1.16.0. The OpenTelemetry module's go.sum isn't in the changed-file list, so please check it didn't need an update. The PR says tidy passes, so this is probably fine.
  • The perf numbers are internally consistent across metrics.json, llms.txt, performance_baselines.json and the README. The 349 ns figure is higher than the earlier 318 ns, and the PR explains that as machine load. The "26% faster than v1.15.0" claim rests on a same-session comparison, which is sound. CI thresholds are unchanged, so there's no regression-test risk.
  • llms.txt and CLAUDE.md mention "11 names" for --dialect: 8 dedicated plus generic, bigquery and redshift. That adds up.
  • The doc.go v1.16.0 entry is fine.

Test plan

The final item (gh workflow run glama-sync.yml -f tag=v1.16.0) should wait until the VERSION bug above is fixed. Otherwise it will make a commit with a blank version in the message. As the PR notes, the build trigger will still skip until GLAMA_SESSION_COOKIE is set.

Each step runs in its own shell, so VERSION from the bump step was empty in
the commit message. Found by claude-review on #855.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RkzVu3JY9Y6BRWfjesWts9
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Claude encountered an error after 0s —— View job


I'll analyze this and get back to you.

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Claude finished @ajitpratap0's task in 20s —— View job


Review of PR #855

Most of this is mechanical (metrics, pins, benchmark data, version banners) and looks consistent. I read the workflow diffs in full. I did not run the tests or generators, and I did not read the large benchmark result files.

Resolved since the last review

  • VERSION in the commit step. The earlier review flagged this as empty. The latest commit (2fc7ce5) fixes it: the "Commit and push" step now sets RELEASE_TAG in env and computes VERSION="${RELEASE_TAG#v}". The commit message and the "already at" message now get the right value.

Remaining concerns (.github/workflows)

  • Push to protected main. For workflow_dispatch, the bump job checks out main and pushes the glama.json change there. If branch protection blocks github-actions[bot], the push fails. The job is continue-on-error, so you would not see it. Please check the job log after the first dispatch.
  • Unchecked commit lookup. COMMIT_SHA="$(gh api ...)" is not checked. If the lookup fails (for example a typo in tag), the SHA is empty. When the cookie is set, the Python step then fails with a KeyError or sends an empty pinnedCommitSha. An explicit check would give a clearer error: [ -n "$COMMIT_SHA" ] || { echo "::error::cannot resolve $RELEASE_TAG"; exit 1; }.
  • Dispatch step in release.yml. It is continue-on-error and uses actions: write scoped to the release job, which is appropriate. A failure there is easy to miss, so check the release run log once.
  • Pinned and tagged glama.json differ. The Docker build is pinned to the tag's commit, but the version bump lands on main. That matches the earlier design. The tagged commit's glama.json keeps the old version.
  • Go version. Please confirm that go1.26.10.linux-amd64.tar.gz exists on go.dev/dl before merging. A wrong version only shows up when the build runs.
  • GLAMA_SESSION_COOKIE. It is still unset, so the build trigger skips with a warning (as the PR notes).

Docs and data

  • The performance figures are consistent across metrics.json, llms.txt, performance_baselines.json and the README. The explanation for 349 ns versus 318 ns (machine load) is reasonable. The "26% faster than v1.15.0" claim comes from a same-session comparison, so it holds. CI thresholds are unchanged, so the regression test is not at risk.
  • The integration modules are bumped to v1.16.0. integrations/opentelemetry/go.sum is not in the changed list. Since go mod tidy, build and tests passed, this is probably fine. I did not check it myself.
  • The doc.go entry, the install pins, and the dialect wording in llms.txt and CLAUDE.md (8 dedicated dialects plus generic, bigquery and redshift) look correct.

Verdict

There are no blockers. The COMMIT_SHA check is a small hardening worth adding. After merge, run gh workflow run glama-sync.yml -f tag=v1.16.0 and look at the bump job's push result.

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Claude finished @ajitpratap0's task in 16s —— View job


Review of PR #855

I read the workflow diffs (glama-sync.yml, release.yml) against origin/main. I did not run the tests or generators, and I did not read the large benchmark data files.

The earlier VERSION bug is fixed. The "Commit and push" step now sets RELEASE_TAG in its own env: and computes VERSION="${RELEASE_TAG#v}" itself (commit 2fc7ce5). The commit message and the "already at" message will now show the real version. The [ ] test-plan item (gh workflow run glama-sync.yml -f tag=v1.16.0) is safe to run after merge.

Remaining workflow notes (non-blocking)

  • Protected main. On dispatch the job checks out main and runs git push for the glama.json bump. If branch protection blocks github-actions[bot], the push fails. Since the dispatch step in release.yml is continue-on-error, this is easy to miss. Check the first manual run's logs.
  • Empty commit SHA. COMMIT_SHA="$(gh api .../commits/${RELEASE_TAG} --jq .sha)" is not checked. If the lookup fails, the SHA is empty. Add [ -n "$COMMIT_SHA" ] || { echo "::error::could not resolve $RELEASE_TAG"; exit 1; }. The lookup also runs before the cookie check, so a transient API failure aborts the step even when the cookie is unset.
  • glama.json and the tag. The version bump lands on main's head, while the build is pinned to the tag's commit. The tagged commit's glama.json therefore keeps the old version. This is the existing design.
  • Go 1.26.10. Confirm go1.26.10.linux-amd64.tar.gz exists on go.dev/dl before merging. A bad version only shows up when the Glama build runs.
  • Permissions. Scoping actions: write to the release job is appropriate.

Docs and data

  • The perf numbers match across metrics.json, llms.txt, performance_baselines.json and the README. CI thresholds are unchanged, so there is no regression-test risk.
  • The 349 ns figure sits above the earlier 318 ns, and the PR explains this as ambient machine load. The "26% faster than v1.15.0" claim comes from a same-session comparison, which holds up.
  • go.mod bumps for the integrations and the @v1.16.0 install pins are consistent. integrations/opentelemetry/go.sum isn't in the changed-file list. The PR says tidy and tests pass, so it likely didn't need an update.
  • The doc.go entry and the dialect wording in llms.txt and CLAUDE.md (8 dedicated + generic, bigquery, redshift) look correct.

Overall this is good to merge. Only the optional SHA check above is worth adding.

@ajitpratap0
ajitpratap0 merged commit 331ee7c into main Oct 22, 2026
37 of 38 checks passed
@ajitpratap0
ajitpratap0 deleted the docs/v1.16.0-post-tag branch October 22, 2026 17:53
ajitpratap0 added a commit that referenced this pull request Oct 22, 2026
…commit SHA (#856)

- New TestVersionManifestsMatchVersion (pkg/gosqlx) fails when glama.json,
  vscode-extension/package.json, the Claude Code plugin and marketplace
  manifests, performance_baselines.json or python/pyproject.toml (lockstep,
  .postN allowed) disagree with gosqlx.Version. v1.15.0 shipped with several
  of these at 1.14.0; release.yml only checks the tag against Version. Skips
  when the files are absent (module downloads).
- glama-sync.yml: fail clearly if the release tag does not resolve to a
  40-hex commit SHA instead of posting an empty pinnedCommitSha
  (review suggestion on #855).


Claude-Session: https://claude.ai/code/session_01RkzVu3JY9Y6BRWfjesWts9

Co-authored-by: Ajit Pratap Singh <ajitpratapsingh@Ajits-Mac-mini-2655.local>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
ajitpratap0 added a commit that referenced this pull request Oct 29, 2026
gen-readme-metrics --check requires the doc.go version history and the
docs/*.md banners to match the latest tag; they move to 1.17.0 in the
post-tag follow-up, as for v1.16.0 (#855).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2
ajitpratap0 added a commit that referenced this pull request Oct 29, 2026
* docs(website): show the real-world dialect corpus on the homepage and compatibility page

- metrics.ts: add REALWORLD_CORPUS (per-dialect pass/total from
  scripts/dialect-audit at 8d8c527, totals derived, released: false) and
  the REALWORLD_STATUS qualifier.
- DialectShowcase: each dialect card shows "Real-world corpus: N/N" with an
  "on main, next release" qualifier; anchors and v1.15.0 QA badges unchanged.
- FEATURES: Multi-Dialect cites the corpus from metrics.ts; new full-width
  "Format & Transpile" card (v1.14 features, comment/hint preservation
  marked next release) with a code icon so the grid stays balanced.
- SQL_COMPATIBILITY.md: single-dialect reproduce command, the ratchet rule,
  and a table of unreleased statement syntax (multi-table UPDATE/DELETE,
  UPDATE/DELETE TOP and OUTPUT, GO [n], RETURNING INTO, ARRAY JOIN/LIMIT BY,
  MERGE with VALUES, CLONE ... AT, SEQUENCE DDL, EXPLAIN, Oracle '/', <=>
  and == gating), each example checked with ParseWithDialect.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* feat(playground): dialect-aware Format, Transpile tab and transpile example

- wasm: format() now calls gosqlx.FormatWithDialect with the selected
  dialect (TOP stays TOP in SQL Server, comments and hints are kept) and
  returns {"result"} or {"error","error_span"} (bridge.TextResponse); add a
  gosqlxTranspile(sql, from, to) export wrapping gosqlx.Transpile.
- bridge: Format and Transpile helpers with tests for dialect format,
  comment preservation, ErrUnplaceableComment, operator/quote/escape
  transpilation and transpile errors; contract fixture extended.
- website: Transpile tab (From is the editor dialect, To is selectable),
  Format tab shares a SqlOutput component, TextData in bridgeTypes and the
  contract check, loader gains transpile(); tab bar scrolls on narrow
  screens; default SQL starts with a comment.
- homepage: Transpile API example (MySQL -> PostgreSQL) and a Format
  example that keeps a comment, each with its printed output.
- regenerate src/generated/sample-ast.json (new AST quote fields).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs: document comment-preserving format, CLI additions and new API/AST surface

- format guide: replace "Comments are not preserved" with comment and hint
  handling, ErrUnplaceableComment, FormatWithDialect and the CLI's comment
  check and fully lower-case --no-uppercase
- CLI guide: add transpile, stats and watch sections, dialect aliases,
  validate --quiet/--check/--list-dialects, lint exit 1 on syntax errors,
  -o for parse/transpile; drop unsourced performance claims and link to
  /benchmarks/
- api/gosqlx.md: Format, FormatWithDialect, WithComments, Lint error
  contract, SplitStatements block and separator handling, Transpile
  operator mapping, ExtractColumns alias rule (#849)
- api/ast.md: ExplainStatement, BatchSeparator, Extras/DialectExtras/
  EnsureExtras, identifier quote style, literal introducers,
  TableReference.Modifiers, PIVOT/UNPIVOT additions, BinaryExpression.BitwiseXor;
  struct field names corrected from the Go source
- feature tour: formatting with comments, transforms, fingerprinting and
  transpilation, with outputs produced from main
- troubleshooting, usage, LSP and MCP guides: Lint error return,
  SplitStatements blocks/GO/DELIMITER/'/', LSP outline and formatting,
  MCP GO counts and alias columns
- lint-sql-in-ci: fix the link to the renamed comments section

Unreleased behaviour is marked in body text; no heading carries a version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(website): correct watch, transpile, AST and corpus wording for next release

- CLI_GUIDE: describe what gosqlx watch does today (watches, reports nothing,
  never rewrites files); drop the --mode claims pending the watch fix
- CLI_GUIDE, api/gosqlx.md: ||/ becomes CBRT() only for Snowflake and
  ClickHouse; other targets return an error
- CLI_GUIDE: remove unsourced validate latency/throughput claims
- api/ast.md: DialectExtras() returns a shallow struct copy; EnsureExtras()
  is the mutable path
- SQL_COMPATIBILITY: <=> and == accepted only in the listed dialects (none in
  v1.16.0), quote dialect-audit output exactly, qualify GO statement counts,
  call the corpus production-style
- website: production-style corpus wording, CLI guide description, playground
  intro/meta mention transpile, Transpile tab notes comments are dropped
- bridge: TextResponse doc matches WasmLoader.parseResult (throws on error)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(cli): describe watch validate/format modes and --dialect

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* chore(release): bump version surfaces to 1.17.0 [vercel skip]

Library, CLI, MCP server.json, Claude Code plugin, Glama, VS Code
extension, pygosqlx, performance baselines, website version constant
and docs headers now report 1.17.0. Adds the 1.17.0 entries to the CLI
and package version-history comments.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(release): v1.17.0 changelog, migration guide and API reference [vercel skip]

- CHANGELOG: rename [Unreleased] to [1.17.0] with a release summary;
  Behavior changes first (led by the #868 GO change), new Security and
  Performance sections, duplicates merged and PR numbers on every entry.
- MIGRATION: v1.16.0 -> v1.17.0 checklist and companion versions.
- VS Code extension changelog 1.17.0 entry.
- API reference: new formatter package page; AST container fields,
  CTE/PIVOT fields, checked formatting, linter syntax errors, security
  scanner, tokenizer dialect lexing, LSP sync key and error handling,
  MCP parse_sql dialect, CLI security merge and quiet mode.
- Generated v1-17-0 release post (split-changelog).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(release): mark the real-world corpus released and re-measure it [vercel skip]

Re-ran scripts/dialect-audit on all 8 dialects at fda9a5e: 2,813
statements (was 2,788), all passing. Updates metrics.ts (released: true,
per-dialect counts, sourceCommit), the SQL_COMPATIBILITY table and every
2,788 mention, and regenerates the v1-17-0 release post.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(release): describe merged behaviour as released in v1.17.0 [vercel skip]

Rewrite the "unreleased / on the main branch / next release" markers in
the guides and API reference now that the behaviour ships in v1.17.0, and
regenerate the homepage sample AST for the new AST fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(changelog): record transpile and parse costs of the 1.17.0 correctness work

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* fix(release): keep tag-tracked version banners at v1.16.0 until the tag

gen-readme-metrics --check requires the doc.go version history and the
docs/*.md banners to match the latest tag; they move to 1.17.0 in the
post-tag follow-up, as for v1.16.0 (#855).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* ci(lighthouse): give /playground/ its own total-size budget

The playground page now transfers 3.60 MB (CI median), 1.4 KB over the
shared 3.6 MB budget, because the GoSQLX WASM module grows with the
parser. Budget it like its script size: measured value plus ~15%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

---------

Co-authored-by: Ajit Pratap Singh <ajitpratapsingh@Ajits-Mac-mini-2655.local>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
ajitpratap0 added a commit that referenced this pull request Oct 29, 2026
* docs(website): show the real-world dialect corpus on the homepage and compatibility page

- metrics.ts: add REALWORLD_CORPUS (per-dialect pass/total from
  scripts/dialect-audit at 8d8c527, totals derived, released: false) and
  the REALWORLD_STATUS qualifier.
- DialectShowcase: each dialect card shows "Real-world corpus: N/N" with an
  "on main, next release" qualifier; anchors and v1.15.0 QA badges unchanged.
- FEATURES: Multi-Dialect cites the corpus from metrics.ts; new full-width
  "Format & Transpile" card (v1.14 features, comment/hint preservation
  marked next release) with a code icon so the grid stays balanced.
- SQL_COMPATIBILITY.md: single-dialect reproduce command, the ratchet rule,
  and a table of unreleased statement syntax (multi-table UPDATE/DELETE,
  UPDATE/DELETE TOP and OUTPUT, GO [n], RETURNING INTO, ARRAY JOIN/LIMIT BY,
  MERGE with VALUES, CLONE ... AT, SEQUENCE DDL, EXPLAIN, Oracle '/', <=>
  and == gating), each example checked with ParseWithDialect.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* feat(playground): dialect-aware Format, Transpile tab and transpile example

- wasm: format() now calls gosqlx.FormatWithDialect with the selected
  dialect (TOP stays TOP in SQL Server, comments and hints are kept) and
  returns {"result"} or {"error","error_span"} (bridge.TextResponse); add a
  gosqlxTranspile(sql, from, to) export wrapping gosqlx.Transpile.
- bridge: Format and Transpile helpers with tests for dialect format,
  comment preservation, ErrUnplaceableComment, operator/quote/escape
  transpilation and transpile errors; contract fixture extended.
- website: Transpile tab (From is the editor dialect, To is selectable),
  Format tab shares a SqlOutput component, TextData in bridgeTypes and the
  contract check, loader gains transpile(); tab bar scrolls on narrow
  screens; default SQL starts with a comment.
- homepage: Transpile API example (MySQL -> PostgreSQL) and a Format
  example that keeps a comment, each with its printed output.
- regenerate src/generated/sample-ast.json (new AST quote fields).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs: document comment-preserving format, CLI additions and new API/AST surface

- format guide: replace "Comments are not preserved" with comment and hint
  handling, ErrUnplaceableComment, FormatWithDialect and the CLI's comment
  check and fully lower-case --no-uppercase
- CLI guide: add transpile, stats and watch sections, dialect aliases,
  validate --quiet/--check/--list-dialects, lint exit 1 on syntax errors,
  -o for parse/transpile; drop unsourced performance claims and link to
  /benchmarks/
- api/gosqlx.md: Format, FormatWithDialect, WithComments, Lint error
  contract, SplitStatements block and separator handling, Transpile
  operator mapping, ExtractColumns alias rule (#849)
- api/ast.md: ExplainStatement, BatchSeparator, Extras/DialectExtras/
  EnsureExtras, identifier quote style, literal introducers,
  TableReference.Modifiers, PIVOT/UNPIVOT additions, BinaryExpression.BitwiseXor;
  struct field names corrected from the Go source
- feature tour: formatting with comments, transforms, fingerprinting and
  transpilation, with outputs produced from main
- troubleshooting, usage, LSP and MCP guides: Lint error return,
  SplitStatements blocks/GO/DELIMITER/'/', LSP outline and formatting,
  MCP GO counts and alias columns
- lint-sql-in-ci: fix the link to the renamed comments section

Unreleased behaviour is marked in body text; no heading carries a version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(website): correct watch, transpile, AST and corpus wording for next release

- CLI_GUIDE: describe what gosqlx watch does today (watches, reports nothing,
  never rewrites files); drop the --mode claims pending the watch fix
- CLI_GUIDE, api/gosqlx.md: ||/ becomes CBRT() only for Snowflake and
  ClickHouse; other targets return an error
- CLI_GUIDE: remove unsourced validate latency/throughput claims
- api/ast.md: DialectExtras() returns a shallow struct copy; EnsureExtras()
  is the mutable path
- SQL_COMPATIBILITY: <=> and == accepted only in the listed dialects (none in
  v1.16.0), quote dialect-audit output exactly, qualify GO statement counts,
  call the corpus production-style
- website: production-style corpus wording, CLI guide description, playground
  intro/meta mention transpile, Transpile tab notes comments are dropped
- bridge: TextResponse doc matches WasmLoader.parseResult (throws on error)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(cli): describe watch validate/format modes and --dialect

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* chore(release): bump version surfaces to 1.17.0 [vercel skip]

Library, CLI, MCP server.json, Claude Code plugin, Glama, VS Code
extension, pygosqlx, performance baselines, website version constant
and docs headers now report 1.17.0. Adds the 1.17.0 entries to the CLI
and package version-history comments.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(release): v1.17.0 changelog, migration guide and API reference [vercel skip]

- CHANGELOG: rename [Unreleased] to [1.17.0] with a release summary;
  Behavior changes first (led by the #868 GO change), new Security and
  Performance sections, duplicates merged and PR numbers on every entry.
- MIGRATION: v1.16.0 -> v1.17.0 checklist and companion versions.
- VS Code extension changelog 1.17.0 entry.
- API reference: new formatter package page; AST container fields,
  CTE/PIVOT fields, checked formatting, linter syntax errors, security
  scanner, tokenizer dialect lexing, LSP sync key and error handling,
  MCP parse_sql dialect, CLI security merge and quiet mode.
- Generated v1-17-0 release post (split-changelog).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(release): mark the real-world corpus released and re-measure it [vercel skip]

Re-ran scripts/dialect-audit on all 8 dialects at fda9a5e: 2,813
statements (was 2,788), all passing. Updates metrics.ts (released: true,
per-dialect counts, sourceCommit), the SQL_COMPATIBILITY table and every
2,788 mention, and regenerates the v1-17-0 release post.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(release): describe merged behaviour as released in v1.17.0 [vercel skip]

Rewrite the "unreleased / on the main branch / next release" markers in
the guides and API reference now that the behaviour ships in v1.17.0, and
regenerate the homepage sample AST for the new AST fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* docs(changelog): record transpile and parse costs of the 1.17.0 correctness work

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* fix(release): keep tag-tracked version banners at v1.16.0 until the tag

gen-readme-metrics --check requires the doc.go version history and the
docs/*.md banners to match the latest tag; they move to 1.17.0 in the
post-tag follow-up, as for v1.16.0 (#855).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* ci(lighthouse): give /playground/ its own total-size budget

The playground page now transfers 3.60 MB (CI median), 1.4 KB over the
shared 3.6 MB budget, because the GoSQLX WASM module grows with the
parser. Budget it like its script size: measured value plus ~15%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

* fix(playground): resolve the #877 review items

- Render tests for SqlOutput and TranspileTab error, success and empty
  states (react-dom/server + in-process TypeScript, no new dependencies).
- One useCopyFeedback hook for the four copy buttons: the reset timer is
  restarted on each click and cleared on unmount, and the "go get" copy
  now reports a failed clipboard write.
- Document that parse/format/lint/analyze/highlight treat an unknown
  dialect as generic while transpile returns an error (JSDoc, wasm/main.go,
  docs/HIGHLIGHTING.md).
- Drop the unused error_span from the Format/Transpile payload; Lint and
  Analyze keep parse_error_span, which the editor already marks.
- Clamp WASM download progress to 1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DnbRnTFErhoMJdAjVEeCg2

---------

Co-authored-by: Ajit Pratap Singh <ajitpratapsingh@Ajits-Mac-mini-2655.local>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-cd documentation Improvements or additions to documentation performance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant