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
7 changes: 3 additions & 4 deletions .changeset/first-rc.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
'@tanstack/browser-db-sqlite-persistence': major
'@tanstack/capacitor-db-sqlite-persistence': major
'@tanstack/cloudflare-durable-objects-db-sqlite-persistence': major
'@tanstack/convex-db-collection': major
'@tanstack/db': major
'@tanstack/db-ivm': major
'@tanstack/db-sqlite-persistence-core': major
Expand All @@ -12,9 +13,11 @@
'@tanstack/node-db-sqlite-persistence': major
'@tanstack/offline-transactions': minor
'@tanstack/powersync-db-collection': major
'@tanstack/preact-db': major
'@tanstack/query-db-collection': minor
'@tanstack/react-db': major
'@tanstack/react-native-db-sqlite-persistence': major
'@tanstack/react-router-with-db': major
'@tanstack/rxdb-db-collection': major
'@tanstack/solid-db': major
'@tanstack/svelte-db': major
Expand All @@ -31,10 +34,6 @@ Keep the two packages accidentally released as stable 1.x on their stable
release lines. Both stable minor releases require `@tanstack/db@^1.0.0-rc.0`
for the RC health and restoration settlement APIs; upgrade DB with them.

Convex Collection, Preact DB, and React Router with DB are temporarily private
while their initial npm publication and publishing permissions are arranged.
Restore their public manifests and release entries when they can be published.

Remove Query Collection’s automatic refetch after mutation handlers. Handlers
return `Promise<void>` and must await `collection.utils.refetch()` or write
confirmed data with the `write*` utilities; `{ refetch: false }` is removed.
71 changes: 68 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,68 @@ jobs:
- name: Check release versioning
run: pnpm run test:release

# Temporarily rely on PR test jobs during the staged RC publication.
# Restore the release test matrices and DB report merge after npm bootstrap.
test-db:
name: Test (${{ matrix.group }})
if: github.repository_owner == 'TanStack'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
group: [db-1, db-2, db-replay]
env:
TEST_GROUP: ${{ matrix.group }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Setup Tools
uses: tanstack/config/.github/setup@e4b48f16568324f76f467aa4c2aac2f05db632c3
- name: Build dependencies
run: node scripts/ci-tests.mjs build "$TEST_GROUP"
- name: Run tests
run: node scripts/ci-tests.mjs test "$TEST_GROUP"
- name: Upload DB report
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: db-report-${{ matrix.group }}
path: packages/db/.vitest-reports/*.json
include-hidden-files: true
if-no-files-found: error
retention-days: 1

test-packages:
name: Test (${{ matrix.group }})
if: github.repository_owner == 'TanStack'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
group:
[ivm-offline, sqlite-core, sqlite-adapters, frameworks, collections]
env:
TEST_GROUP: ${{ matrix.group }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Setup Tools
uses: tanstack/config/.github/setup@e4b48f16568324f76f467aa4c2aac2f05db632c3
- name: Build dependencies
run: node scripts/ci-tests.mjs build "$TEST_GROUP"
- name: Typecheck Test Sources
if: matrix.group == 'ivm-offline'
run: pnpm run typecheck:tests
- name: Run tests
run: node scripts/ci-tests.mjs test "$TEST_GROUP"
- name: Check dependency versions
if: matrix.group == 'ivm-offline'
run: pnpm run test:sherif

release:
name: Release
needs: [lint]
needs: [lint, test-db, test-packages]
if: github.repository_owner == 'TanStack'
runs-on: ubuntu-latest
permissions:
Expand All @@ -51,6 +108,14 @@ jobs:
persist-credentials: true # release job pushes version/docs changes
- name: Setup Tools
uses: tanstack/config/.github/setup@e4b48f16568324f76f467aa4c2aac2f05db632c3
- name: Download DB reports
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
pattern: db-report-*
path: packages/db/.vitest-reports
merge-multiple: true
- name: Merge DB coverage and test reports
run: pnpm --dir packages/db exec vitest --mergeReports .vitest-reports
- name: Build packages
run: pnpm run build
- name: Run Changesets (version or publish)
Expand Down
16 changes: 10 additions & 6 deletions docs/contributing/oracle-coverage.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,16 @@ type campaigns remain active.

For the staged RC publication, the maintainer temporarily removed the duplicate
test matrices and DB report merge from the Release workflow on 2026-10-29.
The PR workflow retains its test gates; Release retains lint and release-script
checks. Restore the release test matrices and report merge after the initial
npm publications and permissions for Convex Collection, Preact DB, and React
Router with DB are arranged. Those three package manifests are temporarily
private, so Changesets excludes them from publication. This gate deferral does
not close the counterexamples in [#2294](https://github.com/TanStack/db/issues/2294),
Release run [40910451885](https://github.com/TanStack/db/actions/runs/40910451885)
succeeded and reported all 20 included RC versions and the two stable versions
already published on npm. The release test matrices and report merge are now
restored. At the maintainer's request, Convex Collection, Preact DB, and React
Router with DB have their public manifests and consumed first-RC release entries
restored too. Their initial manual publications and npm trusted publisher setup
still require verification; restoring publication eligibility does not establish
npm access.
The successful release does not close the counterexamples in
[#2294](https://github.com/TanStack/db/issues/2294),
[#2281](https://github.com/TanStack/db/issues/2281), or
[#2296](https://github.com/TanStack/db/issues/2296), or the reach gap in
[#2287](https://github.com/TanStack/db/issues/2287).
Expand Down
1 change: 0 additions & 1 deletion packages/convex-db-collection/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"name": "@tanstack/convex-db-collection",
"private": true,
"version": "1.0.0-rc.1",
"description": "Convex collection for TanStack DB",
"author": "Tanner Linsley",
Expand Down
1 change: 0 additions & 1 deletion packages/preact-db/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"name": "@tanstack/preact-db",
"private": true,
"version": "1.0.0-rc.1",
"description": "Preact integration for @tanstack/db",
"author": "Kyle Mathews",
Expand Down
1 change: 0 additions & 1 deletion packages/react-router-with-db/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"name": "@tanstack/react-router-with-db",
"private": true,
"version": "1.0.0-rc.1",
"description": "TanStack Router SSR integration for TanStack DB",
"author": "Kyle Mathews",
Expand Down
10 changes: 3 additions & 7 deletions scripts/check-doc-snippets.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,9 @@ const declaresTypes = (target) =>
for (const pkg of readdirSync(join(root, `packages`))) {
const manifest = join(root, `packages`, pkg, `package.json`)
if (!existsSync(manifest)) continue
const {
name,
private: unpublished,
exports = {},
} = JSON.parse(readFileSync(manifest, `utf8`))
// Examples document published packages only.
if (unpublished) continue
const { name, exports = {} } = JSON.parse(readFileSync(manifest, `utf8`))
// Publication can be deferred while a package's documented API still needs
// source types. Keep private workspace packages in the same export mapping.
for (const [subpath, target] of Object.entries(exports)) {
// A typed snippet can import only an export that declares types. Untyped
// exports, such as package.json, a WASM file, or a worker script, are
Expand Down
Loading