diff --git a/CHANGELOG.md b/CHANGELOG.md index b7fcf9d..4465abd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,21 @@ # Changelog +## 0.1.1 + +First public npm release. + +- Publishes six verified ESM entry points with declarations and provenance. +- Ships the all-green 294/294 compatibility catalog against + `@tanstack/db@0.6.16`. +- Adds columnar incremental live queries, spatial indexing, GeoArrow IPC, + persistence, cross-tab sync, and React bindings. +- Adds the hosted City Ops playground and correctness-gated benchmark suite. +- Hardens release automation, package contents, contribution guidance, and + private vulnerability reporting. + ## 0.1.0 -Initial managed release for the @tanstack/db parity milestone. +GitHub-only managed release for the @tanstack/db parity milestone. - Ships the all-green 294/294 export compatibility catalog against `@tanstack/db@0.6.16`. diff --git a/README.md b/README.md index 3000c21..67194e0 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ buffers. It keeps the TanStack DB mental model—collections, transactions, live queries, persistence, and React hooks—while adding vectorized filters, spatial indexes, Arrow IPC, snapshots, and cross-tab sync. -**v0.1.0 release candidate:** the compatibility catalog is 294/294 green +**v0.1.1:** the compatibility catalog is 294/294 green against `@tanstack/db@0.6.16`. Exact public-export and operator-manifest tests guard that surface. Pre-1.0 means the API can still evolve between minor versions; documented tolerances cover fixed capacity, safe-integer key diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 8e27fe5..adece2f 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,6 +1,6 @@ # Release notes — @tanstack/db parity -Version: **v0.1.0** +Version: **v0.1.1** Compatibility: 294/294 exports ✅ @@ -13,13 +13,15 @@ now show side-by-side replacements for common TanStack DB usage. ## Highlights -- `README.md` now states the release positioning and links the parity docs. -- `MIGRATING.md` covers local-only collections, transactions, query builders, - local storage, and tolerance notes. -- `COMPATIBILITY.md` is regenerated as the source of truth for the 289-export - audit. -- `bench/vs-tanstack.ts` adds a published head-to-head benchmark entry point. -- `GOAL.md` contains the final acceptance ritual for release validation. +- Publishes six verified ESM entry points with TypeScript declarations and npm + provenance: `arrowbase`, `tanstack`, `react`, `arrow`, `idb`, and `broadcast`. +- Ships the 294/294 compatibility catalog against `@tanstack/db@0.6.16`, plus + exact public-export, operator-manifest, differential, and golden tests. +- Adds columnar incremental live-query backends, spatial indexes, GeoArrow IPC, + optimistic transactions, persistence, and cross-tab synchronization. +- Hosts the correctness-gated City Ops playground on GitHub Pages, with desktop + and mobile end-to-end coverage. +- Keeps the published tarball focused on runtime output and consumer docs. ## Migration @@ -54,13 +56,12 @@ for ArrowBase, with ArrowBase at 0.15× the measured memory footprint. Before tagging: ```sh -pnpm typecheck -pnpm test -pnpm test:differential -pnpm test:golden -pnpm bench -pnpm bench:vs-tanstack +pnpm release:verify +pnpm check +pnpm playground:check +pnpm playground:e2e pnpm build +pnpm verify:package-exports ``` If any gate fails, do not tag. Fix the gap, regenerate `COMPATIBILITY.md` if the diff --git a/docs/RELEASING.md b/docs/RELEASING.md index bcace56..21a3ed7 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -1,7 +1,8 @@ # Releasing ArrowBase ArrowBase uses a tag-driven GitHub release workflow plus an optional npm publish -step. The first managed release is **v0.1.0**. +step. The existing **v0.1.0** tag is GitHub-only; the first npm release is +**v0.1.1**. ## One-time setup @@ -42,6 +43,8 @@ Run from a clean `master` worktree: ```sh pnpm release:verify pnpm check +pnpm playground:check +pnpm playground:e2e pnpm build pnpm verify:package-exports rm -rf .release @@ -51,19 +54,19 @@ pnpm release:pack Inspect the generated tarball if needed: ```sh -tar -tf .release/arrowbase-0.1.0.tgz | sort | less +tar -tf .release/arrowbase-0.1.1.tgz | sort | less ``` -## Create v0.1.0 +## Create v0.1.1 ```sh git status --short pnpm release:verify -git tag v0.1.0 -git push origin v0.1.0 +git tag v0.1.1 +git push origin v0.1.1 ``` -Pushing `v0.1.0` triggers `.github/workflows/release.yml`, which validates the +Pushing `v0.1.1` triggers `.github/workflows/release.yml`, which validates the release metadata, runs `pnpm check`, builds, verifies every published entry point, packs, uploads the tarball artifact, and creates the GitHub release from `RELEASE_NOTES.md`. @@ -73,7 +76,7 @@ point, packs, uploads the tarball artifact, and creates the GitHub release from After `NPM_TOKEN` exists for the bootstrap—or after trusted publishing is configured—run the `Release` workflow manually: -- `version`: `0.1.0` +- `version`: `0.1.1` - `publish_npm`: `true` The workflow runs the same validation and then executes: @@ -86,8 +89,9 @@ npm publish --provenance --access public - Do not move an existing release tag silently. If a release tag points at the wrong commit, delete the GitHub release and tag explicitly, then recreate. -- If `pnpm release:verify`, `pnpm check`, `pnpm build`, or - `pnpm verify:package-exports` fails, fix the repo and commit before tagging. +- If `pnpm release:verify`, `pnpm check`, `pnpm playground:check`, + `pnpm playground:e2e`, `pnpm build`, or `pnpm verify:package-exports` fails, + fix the repo and commit before tagging. - If npm publish cannot authenticate, verify the trusted-publisher workflow and environment names; use `NPM_TOKEN` only for the first publish or emergency fallback. Do not publish from a laptop unless GitHub Actions is unavailable. diff --git a/package.json b/package.json index 2cb11de..317f4ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "arrowbase", - "version": "0.1.0", + "version": "0.1.1", "private": false, "description": "Columnar Arrow store with an @tanstack/db-compatible API.", "keywords": [ diff --git a/tests/release-readiness.test.ts b/tests/release-readiness.test.ts index a5f6460..bbbe587 100644 --- a/tests/release-readiness.test.ts +++ b/tests/release-readiness.test.ts @@ -77,8 +77,8 @@ describe('Layer I release readiness docs', () => { }); }); -describe('v0.1.0 release management', () => { - it('marks the package publishable as version 0.1.0', () => { +describe('v0.1.1 release management', () => { + it('marks the package publishable as version 0.1.1', () => { const pkg = JSON.parse(readProjectFile('package.json')) as { version: string; private?: boolean; @@ -90,7 +90,7 @@ describe('v0.1.0 release management', () => { scripts: Record; }; - expect(pkg.version).toBe('0.1.0'); + expect(pkg.version).toBe('0.1.1'); expect(pkg.private).toBe(false); expect(pkg.license).toBe('MIT'); expect(pkg.repository).toEqual({ @@ -127,18 +127,18 @@ describe('v0.1.0 release management', () => { expect(existsSync(guideUrl)).toBe(true); const guide = readFileSync(guideUrl, 'utf8'); - expect(guide).toContain('v0.1.0'); + expect(guide).toContain('v0.1.1'); expect(guide).toContain('pnpm release:verify'); - expect(guide).toContain('git tag v0.1.0'); + expect(guide).toContain('git tag v0.1.1'); expect(guide).toContain('NPM_TOKEN'); }); - it('pins 0.1.0 in release notes and changelog', () => { + it('pins 0.1.1 in release notes and changelog', () => { const notes = readProjectFile('RELEASE_NOTES.md'); - expect(notes).toContain('v0.1.0'); + expect(notes).toContain('v0.1.1'); const changelogUrl = new URL('../CHANGELOG.md', import.meta.url); expect(existsSync(changelogUrl)).toBe(true); - expect(readFileSync(changelogUrl, 'utf8')).toContain('## 0.1.0'); + expect(readFileSync(changelogUrl, 'utf8')).toContain('## 0.1.1'); }); });