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
15 changes: 14 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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`.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
29 changes: 15 additions & 14 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Release notes — @tanstack/db parity

Version: **v0.1.0**
Version: **v0.1.1**

Compatibility: 294/294 exports ✅

Expand All @@ -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

Expand Down Expand Up @@ -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
Comment thread
coderabbitai[bot] marked this conversation as resolved.
```

If any gate fails, do not tag. Fix the gap, regenerate `COMPATIBILITY.md` if the
Expand Down
22 changes: 13 additions & 9 deletions docs/RELEASING.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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`.
Expand All @@ -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:
Expand All @@ -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.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
16 changes: 8 additions & 8 deletions tests/release-readiness.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -90,7 +90,7 @@ describe('v0.1.0 release management', () => {
scripts: Record<string, string>;
};

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({
Expand Down Expand Up @@ -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');
});
});
Loading