Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
451 commits
Select commit Hold shift + click to select a range
cf1ceaf
Test the public DB API after minification (#1928)
KyleAMathews Sep 29, 2026
23ae52d
Fix continuation after overlapping window failure (#1934)
KyleAMathews Sep 29, 2026
63362dc
fix(db): publish held row moves after value reversions (#1933)
KyleAMathews Sep 29, 2026
63244b6
test: protect draft Set and Map iteration order (#1922)
KyleAMathews Sep 29, 2026
144c6b1
fix: settle paced queue overflow and trailing throttle (#1930)
KyleAMathews Sep 29, 2026
b44a50a
Fix Collection collation in ordered reads (#1920)
KyleAMathews Sep 29, 2026
bf21602
fix(db-ivm): preserve Temporal group key identity (#1919)
KyleAMathews Sep 29, 2026
29ded66
test(db): cover ordered Effect updates during startup (#1931)
KyleAMathews Sep 29, 2026
96b9360
test(db): cover paced mutation error names after minification (#1937)
KyleAMathews Sep 29, 2026
3eb5b2b
fix(db): stop old notification holds from affecting restarted sync (#…
KyleAMathews Sep 29, 2026
7917ef9
fix(db): preserve aggregates when filtering wrapped subqueries (#1923)
KyleAMathews Sep 29, 2026
19dd9a2
fix(db): keep built-in index resolver names stable (#1927)
KyleAMathews Sep 29, 2026
9351f46
test(db): specify per-key change message order (#1932)
KyleAMathews Sep 29, 2026
04a1a81
fix: stop released subscription snapshots (#1925)
KyleAMathews Sep 29, 2026
ae2eb3f
test: guard equality identity agreement across query values (#1929)
KyleAMathews Sep 29, 2026
62b9192
fix(query-db-collection, trailbase-db-collection): add electric path …
leeguooooo Sep 30, 2026
5b7d52b
ci: Version Packages (#1838)
github-actions[bot] Sep 30, 2026
b5d92ce
refactor(db): trim vendored BTree to the operations BTreeIndex uses (…
KyleAMathews Sep 30, 2026
f7c0afe
Keep Query collection errors visible until retry succeeds (#1940)
KyleAMathews Sep 30, 2026
fb509ef
Keep Collection GC deadlines on a monotonic clock (#1941)
KyleAMathews Sep 30, 2026
dc4b4e0
fix(db): suggest indexes when manual indexing needs one (#1942)
KyleAMathews Sep 30, 2026
89d7231
fix(vue-db): publish coherent live query data snapshots (#1943)
KyleAMathews Sep 30, 2026
adee459
fix(angular-db): defer live-query status for required inputs (#1944)
KyleAMathews Sep 30, 2026
bef12e2
fix(offline-transactions): allow replay in visible web tabs (#1879)
jdpt0 Sep 30, 2026
8283f2e
refactor(db-ivm): share one MultiSet consolidation loop (−1 KB min) (…
KyleAMathews Sep 30, 2026
f7d96f7
perf(db): defer ordering for bulk Collection sync (#1953)
KyleAMathews Sep 30, 2026
f158258
fix(db): keep NaN-ranked live windows congruent (#1952)
KyleAMathews Sep 30, 2026
9c62ac3
feat(db): add network-first initial rendering for persisted collectio…
KyleAMathews Sep 30, 2026
0122da8
fix(db): reject invalid BTree comparator results (#1949)
jiuyueQ Sep 30, 2026
1b317d2
refactor(db-ivm): share one type dispatch for hashing and equality (−…
KyleAMathews Sep 30, 2026
d5e4732
docs: clarify recovery with dependent live queries (#1957)
KyleAMathews Sep 30, 2026
eecbf4f
perf(offline-transactions): bound bulk replay lookup work (#1958)
KyleAMathews Sep 30, 2026
9125dab
perf(db-ivm): skip idle operators during graph runs (#1959)
KyleAMathews Sep 30, 2026
c879ba6
fix: render persisted data in Suspense after client stream errors (#1…
KyleAMathews Sep 30, 2026
c0d123b
docs: add browser-first SQLite and offline transaction guides (#1938)
KyleAMathews Sep 30, 2026
e21195e
ci: Version Packages (#1947)
github-actions[bot] Sep 30, 2026
31c99b6
docs: regenerate API documentation (#1970)
github-actions[bot] Sep 30, 2026
d2690bf
perf(db): speed up many small filtered live queries (#1956)
KyleAMathews Oct 1, 2026
7ca38db
perf(db): rename private members in the published build (−2.9 KB gzip…
KyleAMathews Oct 1, 2026
84b828c
fix(offline): reject transactions lost before admission (#1966)
KyleAMathews Oct 1, 2026
5edc27f
fix(query-db-collection): keep request options out of SSR payloads (#…
KyleAMathews Oct 1, 2026
e075689
fix(db-ivm): preserve keyed MultiSet identity (#1967)
KyleAMathews Oct 1, 2026
18abcee
Audit oracle portfolio and gate offline success on outbox deletion (#…
KyleAMathews Oct 1, 2026
a18f63d
feat(db): add explicit local write and transaction settlement APIs (#…
KyleAMathews Oct 1, 2026
5b85af0
fix(db): keep source identity across query scopes (#1981)
KyleAMathews Oct 1, 2026
3463cf8
chore: refresh Start example dependencies (#1983)
tannerlinsley Oct 1, 2026
e706483
feat(db): expose authoritative base rows through collection.base (#1982)
KyleAMathews Oct 1, 2026
1dbf5f9
fix(db): keep residual clauses residual when combining WHERE clauses …
Jaime02 Oct 1, 2026
62f813d
Expose applied receipts for Query Collection writes (#1984)
KyleAMathews Oct 1, 2026
be59d2e
ci: skip the Electric E2E suites while the Electric image cannot be p…
KyleAMathews Oct 1, 2026
f2f92c5
refactor(db): simplify the draft proxy and fix lost draft writes (#1980)
KyleAMathews Oct 1, 2026
7ab48d8
fix(db): own a direct mutation before its handler runs (#1986)
KyleAMathews Oct 2, 2026
ef1e6a4
ci: Version Packages (#1971)
github-actions[bot] Oct 2, 2026
7595a2d
fix(db): send insert, not update, for a key subscribers saw removed (…
KyleAMathews Oct 2, 2026
4ce1f9b
test(db): close state-stack gaps found by a mutation round (#1996)
KyleAMathews Oct 2, 2026
2b98f1f
docs: regenerate API documentation (#1989)
github-actions[bot] Oct 2, 2026
8be6705
fix(db): reject in-place sync row changes without previousValue in de…
KyleAMathews Oct 2, 2026
201220b
test(db): cover a delete then reinsert of one key in one transaction …
KyleAMathews Oct 2, 2026
dac687d
perf: pool eq-filtered live queries to match Redux speed (#1987)
KyleAMathews Oct 2, 2026
06cab6f
fix(db): insert each key once after a sync truncate (#2005)
KyleAMathews Oct 2, 2026
998eda7
ci: Version Packages (#1998)
github-actions[bot] Oct 2, 2026
b940a36
ci: Version Packages (#2006)
github-actions[bot] Oct 2, 2026
95c3f9e
docs: regenerate API documentation (#2007)
github-actions[bot] Oct 2, 2026
f2d323e
chore(deps): update dependency vite to v7.3.5 [security] (#2022)
renovate[bot] Oct 5, 2026
d8bb696
docs: restore literate oracle requirements (#2024)
KyleAMathews Oct 5, 2026
5c675a7
chore(deps): update dependency @angular/compiler to v20.3.28 [securit…
renovate[bot] Oct 5, 2026
b3dd1f3
chore(deps): update dependency @babel/core to v7.29.6 [security] (#2014)
renovate[bot] Oct 5, 2026
7734e3c
chore(deps): update dependency postcss to v8.5.23 [security] (#2016)
renovate[bot] Oct 5, 2026
f9c5b52
chore(deps): update dependency better-auth to v1.6.22 [security] (#2019)
renovate[bot] Oct 5, 2026
7777b1e
chore(deps): update dependency uuid to v13.0.1 [security] (#2018)
renovate[bot] Oct 5, 2026
4832241
test: align oracle terminology and filenames with glossary (#2009)
KyleAMathews Oct 5, 2026
ab85829
chore(deps): update dependency seroval to v1.5.3 [security] (#2017)
renovate[bot] Oct 5, 2026
47c7811
chore(deps): update dependency @angular/core to v20.3.28 [security] (…
renovate[bot] Oct 5, 2026
a21f4a4
refactor(db): shrink the collection state stack (#2004)
KyleAMathews Oct 5, 2026
a3c7097
chore(deps): update dependency svelte to v5.55.7 [security] (#1480)
renovate[bot] Oct 5, 2026
ef1ef18
chore(deps): update dependency next to v16.3.6 [security] (#2015)
renovate[bot] Oct 5, 2026
1b25827
chore(deps): update dependency esbuild to v0.28.1 [security] (#2020)
renovate[bot] Oct 5, 2026
9b7af54
chore(deps): update dependency electron to v41 [security] (#2021)
renovate[bot] Oct 5, 2026
e5a3d0e
fix(react-db): reject same-ID source replacement in mounted queries (…
KyleAMathews Oct 5, 2026
b3fa374
docs(query-db-collection): clarify query key identity (#2028)
KyleAMathews Oct 5, 2026
987f6ca
test(db): cover source deletes for keys the source never held (#2008)
KyleAMathews Oct 5, 2026
84f5e0a
ci: parallelize PR tests and end-to-end suites (#2025)
KyleAMathews Oct 5, 2026
4070864
chore: enforce pnpm 11 (#1545)
Sheraff Oct 5, 2026
a022535
docs(react-db): add CRITICAL common mistakes to skill (#1474)
balegas Oct 5, 2026
2dbd6d7
chore(deps): update dependency @angular/router to v20.3.32 [security]…
renovate[bot] Oct 5, 2026
b1e73c8
Update RxDB to the latest version (#1482)
pubkey Oct 5, 2026
dbffea1
Batch ordinary SQLite persistence writes and metadata (#1999)
KyleAMathews Oct 5, 2026
931e834
chore: add codeowners (#1528)
crutchcorn Oct 5, 2026
b6c8540
fix(sqlite): bound subset query parameters by host limit (#2000)
KyleAMathews Oct 5, 2026
02a0a14
Enhance documentation on Zod codecs (#1080)
mwalkersigma Oct 5, 2026
84dc899
fix(examples): align Angular todos packages at 20.3.32 (#2031)
KyleAMathews Oct 5, 2026
e21c280
fix: preserve persisted Query writes across overlapping refetches (#2…
KyleAMathews Oct 5, 2026
4b83aa7
fix(sqlite): compile boolean predicates with safe prefiltering (#1997)
KyleAMathews Oct 5, 2026
7c516ce
Add development-only collection configuration diagnostics (#1278)
KyleAMathews Oct 5, 2026
2806da0
feat: support compound join conditions with and() (issue #593) (#861)
lousydropout Oct 5, 2026
dc19a4f
feat: add react action-enforcement example with custom lint rule (#1296)
hugiex Oct 5, 2026
81bc768
Revert "fix: preserve persisted Query writes across overlapping refet…
KyleAMathews Oct 5, 2026
182d41d
test(db): close state-stack gaps from mutation round 3 (#2032)
KyleAMathews Oct 5, 2026
cfb03f2
fix(db): publish a ready truncate batch before ready effects run (#2033)
KyleAMathews Oct 5, 2026
eac6e8b
fix(db): drop optimistic state at settlement and remove begin({ immed…
KyleAMathews Oct 5, 2026
49abb32
ci: Version Packages (#2041)
github-actions[bot] Oct 5, 2026
482196e
docs: regenerate API documentation (#2042)
github-actions[bot] Oct 5, 2026
c3a4e4a
perf: build a live query result's state map only when code reads it (…
KyleAMathews Oct 6, 2026
4777d20
fix: preserve accepted sync transactions across persisted reads (#2037)
alec-watts Oct 6, 2026
de8d0f1
fix(db): defer ready callback errors from a sync-entry truncate (#2040)
KyleAMathews Oct 6, 2026
65992aa
ci: benchmark PRs against main with the incremental update suite (#1650)
kevin-dp Oct 6, 2026
a37e69a
fix: preserve native Temporal values in SQLite persistence (#2039)
KyleAMathews Oct 6, 2026
aa1b58e
perf(db): evaluate inArray over a constant list with a Set (#2045)
KyleAMathews Oct 6, 2026
2376eb5
fix(db): keep last-write-wins row metadata when a nested sync transac…
KyleAMathews Oct 6, 2026
4806598
ci: restore non-mutating lint checks before release (#2050)
KyleAMathews Oct 6, 2026
5b9d434
fix(sqlite): preserve scoped durability during hydration (#2049)
KyleAMathews Oct 6, 2026
e118deb
fix(ci): restore release comments on PRs and issues (#2053)
KyleAMathews Oct 6, 2026
90f0d5c
fix(query-db-collection): validate direct writes after earlier sync c…
KyleAMathews Oct 6, 2026
d029833
Add IndexedDB-backed collection for TanStack DB (#1179)
sonnes Oct 6, 2026
f43a165
fix: unblock release lint for the Query Collection oracle (#2054)
KyleAMathews Oct 6, 2026
3825ac3
ci: Version Packages (#2051)
github-actions[bot] Oct 6, 2026
c3fd760
test(db): close the gaps from state mutation round 4 (#2052)
KyleAMathews Oct 6, 2026
043c9b1
refactor(db): share duplicated mutation, index, and optimizer code (#…
KyleAMathews Oct 6, 2026
9e8ed99
fix(react-db, svelte-db): show infinite-query data on the first rende…
KyleAMathews Oct 6, 2026
0dfade1
docs: add instruments for oracle law discovery and review (#2059)
KyleAMathews Oct 7, 2026
e753bc7
fix(db): serialize paced writes and restore failed optimistic callbac…
KyleAMathews Oct 7, 2026
25201da
perf(db): refill an eager indexed ordered window in bounded work (#2055)
KyleAMathews Oct 7, 2026
487c5a6
fix(db): start no network work for a live query until it has a subscr…
KyleAMathews Oct 7, 2026
c657994
ci: Version Packages (#2061)
github-actions[bot] Oct 7, 2026
ea51b67
ci: Version Packages (#2070)
github-actions[bot] Oct 7, 2026
2ab7f3e
fix(db): make initial full-source ordered loads ready synchronously (…
KyleAMathews Oct 7, 2026
2c98b49
Move IndexedDB Collections into @tanstack/db (#2073)
KyleAMathews Oct 7, 2026
07ffcfe
ci: restore Electric E2E tests (#2076)
KyleAMathews Oct 8, 2026
559a5a2
security: stricter pnpm config blockExoticSubdeps & trustPolicy (#1530)
Sheraff Oct 8, 2026
f6d65ea
feat(db): ship coded error messages in production builds (#2067)
KyleAMathews Oct 8, 2026
faa3de6
fix(db): never run toJSON when a production error shows an array (#2082)
KyleAMathews Oct 8, 2026
fe284cc
feat(db): drop developer hints and code failure logs in production (#…
KyleAMathews Oct 8, 2026
f6aba31
fix(db): scope truncate origin and test refused persisted inserts (#2…
KyleAMathews Oct 8, 2026
fa36267
fix(db): make LocalStorage persistence and restore consistent (#2074)
KyleAMathews Oct 8, 2026
8ef6505
test(db): restore source rows when an open sync batch aborts in the o…
KyleAMathews Oct 9, 2026
bcb2af6
perf(db): consolidate group contributions so a count change does not …
KyleAMathews Oct 9, 2026
f87c1c3
feat(offline-transactions): add shouldRetry decision hook (#1592)
TomasGonzalez Oct 9, 2026
4bd66cf
fix(db): stop tracking a transaction after it fails or rolls back (#2…
KyleAMathews Oct 9, 2026
86f00ea
perf(db): copy only the include facades a flush writes before it can …
KyleAMathews Oct 9, 2026
db7ff28
test(db): permit false positives in draft revert reporting (#2089)
KyleAMathews Oct 9, 2026
8b0e1de
fix(persistence): reconcile source commits after leader close (#2088)
KyleAMathews Oct 9, 2026
f7ac2c6
fix(db): support lexical alias shadowing in nested queries (#2079)
KyleAMathews Oct 9, 2026
5712308
test(sqlite): prevent release CI timeout in reconciliation oracle (#2…
KyleAMathews Oct 10, 2026
7e7c37b
ci: Version Packages (#2075)
github-actions[bot] Oct 10, 2026
a10a868
docs: regenerate API documentation (#2099)
github-actions[bot] Oct 10, 2026
6c28094
test: clarify oracle ownership and repair hash checks (#2098)
KyleAMathews Oct 10, 2026
f84387c
fix(db): preserve lexical bindings through outer joins (#2095)
KyleAMathews Oct 11, 2026
cda9d6a
fix(persistence): rotate invalid on-demand caches and reload subsets …
KyleAMathews Oct 11, 2026
fd13e3c
fix: bind standalone descriptor queries to receiving clients (#2077)
KyleAMathews Oct 11, 2026
9b17253
fix(offline-transactions): use the core auto-commit, which does not l…
KyleAMathews Oct 12, 2026
1a65c2c
fix(db): don't leak an unhandled rejection when an empty transaction …
KyleAMathews Oct 12, 2026
01b9e1a
test(db-ivm): pin what min and max promise after a delete (#2093)
KyleAMathews Oct 12, 2026
bbe9327
fix(db): one select rule for aggregate queries, with and without grou…
KyleAMathews Oct 12, 2026
1b4ee8d
fix(db): decide facade writes from the adapter's own row record (#2092)
KyleAMathews Oct 12, 2026
dfec42e
fix(db): roll back a direct write whose subscriber throws (#2091)
KyleAMathews Oct 12, 2026
d83b6cd
fix(offline-transactions): settle the completion waiter of an empty t…
KyleAMathews Oct 12, 2026
cd63c6c
fix(offline-transactions): reject a waiter for a transaction already …
KyleAMathews Oct 12, 2026
0919b5b
test(sqlite-persistence-core): fix the Release type error and a CI ti…
KyleAMathews Oct 12, 2026
f6857fe
ci: run release tests in isolated groups (#2107)
KyleAMathews Oct 12, 2026
6fa60aa
Fix SQLite persistence ownership and on-demand peer reloads (#2096)
KyleAMathews Oct 12, 2026
d0dfcda
fix(query-db): stop direct writes from refetching active subsets (#2065)
KyleAMathews Oct 12, 2026
b34a579
fix(db): separate snapshot selection from provider pagination (#2086)
KyleAMathews Oct 12, 2026
cf07eec
fix(db-ivm): hash equal objects the same when keys tie under collatio…
KyleAMathews Oct 12, 2026
0dc696a
perf(db): key include rows held in D2 state so the index skips hashin…
KyleAMathews Oct 12, 2026
be4a3d6
perf(db-ivm): merge equal groupBy contributions by identity, not hash…
KyleAMathews Oct 13, 2026
bc6f30e
fix(db): ready a live query once its on-demand subset settles (#2115)
KyleAMathews Oct 13, 2026
b112d88
fix: restore type assertions a merge commit's lint fix removed (#2125)
KyleAMathews Oct 13, 2026
fade2e2
fix(db): publish a retired replay's rows instead of keeping stale one…
KyleAMathews Oct 13, 2026
7f72ba6
docs: strengthen oracle review and transfer guidance (#2119)
KyleAMathews Oct 13, 2026
8b6b21d
perf(db-ivm): cheaper Index.get and reduce bookkeeping (#2114)
KyleAMathews Oct 13, 2026
bbbf017
fix(db): count only window rows the loaded prefix proves (#2122)
KyleAMathews Oct 13, 2026
477afa4
fix(trailbase): wait for the change subscription before an on-demand …
KyleAMathews Oct 13, 2026
a920d02
fix(electric): a stream error that onError retries does not fail wait…
KyleAMathews Oct 13, 2026
2f928e6
refactor(db): retire legacy tests with oracle-backed index fixes (#2116)
KyleAMathews Oct 13, 2026
cd92156
chore: remove dead code from db-ivm and four packages (#2133)
KyleAMathews Oct 13, 2026
5d2a4b0
fix(persistence): settle a follower's load after it applies the leade…
KyleAMathews Oct 14, 2026
16a34c9
fix(query-db): reuse active full-source results for narrower demands …
KyleAMathews Oct 14, 2026
6f07c64
test(offline-transactions): fix interruption-settlement oracle determ…
KyleAMathews Oct 14, 2026
cf1fb07
fix(db-ivm): repair structural-identity oracle model (#2145)
KyleAMathews Oct 14, 2026
93a4727
ci: Version Packages (#2110)
github-actions[bot] Oct 14, 2026
87bc073
test(query-db): start the old retention scan after readiness on a con…
KyleAMathews Oct 14, 2026
91cefa2
docs: regenerate API documentation (#2149)
github-actions[bot] Oct 14, 2026
8660cc0
fix(db): reach on-demand, full-join and multiplicity cases in the ord…
KyleAMathews Oct 14, 2026
3a98e00
fix(db): load includes only for the rows a windowed query shows (#2156)
KyleAMathews Oct 14, 2026
93882f9
ci: Version Packages (#2157)
github-actions[bot] Oct 15, 2026
ce0b4a9
docs: regenerate API documentation (#2161)
github-actions[bot] Oct 15, 2026
a09ba67
fix(db): publish initial ordered fallback synchronously (#2159)
KyleAMathews Oct 15, 2026
fcd539a
fix(frameworks): retire adapter-owned live queries (#2172)
KyleAMathews Oct 15, 2026
edbf4e4
fix(react-db): keep paced callbacks tied to committed renders (#2170)
zanmlakar Oct 15, 2026
3c481f6
fix(db): settle eager preloads after collection restart (#2173)
KyleAMathews Oct 15, 2026
92b11b0
fix(query-db-collection): keep served ordered prefixes whole on refet…
KyleAMathews Oct 16, 2026
2c83fdc
test(db): characterize optimistic ordered-window departures (#2177)
KyleAMathews Oct 16, 2026
7d8f340
test: repair structural identity oracle normal form (#2153)
KyleAMathews Oct 16, 2026
0132750
docs: require applicable oracle coverage (#2195)
KyleAMathews Oct 16, 2026
468db85
fix(db): explain orderBy index fallback causes (#2196)
KyleAMathews Oct 16, 2026
d10f41a
ci: Version Packages (#2175)
github-actions[bot] Oct 16, 2026
7d60818
docs: Rename oracle guide to Oracle Testing Rubric (#2197)
KyleAMathews Oct 16, 2026
db0ac81
fix(query-db): compose accepted ownership before publication (#2198)
KyleAMathews Oct 18, 2026
31dad2d
ci: Version Packages (#2199)
github-actions[bot] Oct 18, 2026
1467b6b
fix(query-db): keep a reacquired Query's rows across an older release…
KyleAMathews Oct 21, 2026
9aecbab
fix(db): reject row values that persisted collections cannot store (#…
KyleAMathews Oct 21, 2026
5a1b286
fix(db): keep settled optimistic rows while their server row waits be…
KyleAMathews Oct 21, 2026
bd10e56
ci: Version Packages (#2212)
github-actions[bot] Oct 21, 2026
b052e91
fix(browser-sqlite): reject pending requests on OPFS close (#2213)
vincentdchn Oct 21, 2026
e290b45
chore: measure code weight in shipped bytes with pnpm size:compare (#…
KyleAMathews Oct 21, 2026
bab7ed9
docs: regenerate API documentation (#2200)
github-actions[bot] Oct 21, 2026
28f21dd
docs(oracles): treat environments as production drivers of one oracle…
KyleAMathews Oct 21, 2026
501b481
test(browser-sqlite): share the fairness comparison across drivers (#…
KyleAMathews Oct 22, 2026
30175be
fix(db): keep overlapping ordered requests loading and release what t…
KyleAMathews Oct 22, 2026
205ab71
fix(sqlite-persistence): keep reloads free of repeated setup and earl…
KyleAMathews Oct 22, 2026
3920346
fix(react-db): drop development warnings from production bundles (#2227)
KyleAMathews Oct 22, 2026
dc45f5c
chore: measure tree-shaken app scenarios in size:compare (#2225)
KyleAMathews Oct 22, 2026
37b8fc2
perf(db): ship the persisted initial-render wait only with persistenc…
KyleAMathews Oct 22, 2026
65d9ada
docs(oracles): score oracle-first work and add declared reach (#2233)
KyleAMathews Oct 23, 2026
427a7c3
feat(oracles): lint oracle files and return reports to coding agents …
KyleAMathews Oct 23, 2026
d2935d0
chore(deps): update dependency next to v16.4.1 [security] (#2246)
renovate[bot] Oct 25, 2026
5649a07
feat: add @tanstack/preact-db and share adapter identity and window b…
KyleAMathews Oct 26, 2026
45c3329
fix: preserve persisted option contracts (#2259)
jp-knj Oct 26, 2026
6c1ca8f
feat(db)!: make grouping, includes, and pooling opt-in (#2232)
KyleAMathews Oct 26, 2026
1640de8
fix(db): preserve deferred demand and prepare SSR snapshots (#2229)
KyleAMathews Oct 26, 2026
7538afd
fix(db): keep a collection from garbage collection while its transact…
Nabil372 Oct 26, 2026
b8d8ee0
fix(electric): release the shape stream's visibility listener on clea…
Nabil372 Oct 26, 2026
7e46f81
feat(oracles): select every oracle replay through shared helpers (#2237)
KyleAMathews Oct 27, 2026
367ea7c
fix(db)!: keep Collection keys in the key type and merge large sync r…
KyleAMathews Oct 27, 2026
f140d96
fix(browser-sqlite): load the wa-sqlite WASM as a separate asset (#2103)
KyleAMathews Oct 27, 2026
7d9ed02
feat(db): split Collection status from sync errors; add reload() and …
KyleAMathews Oct 28, 2026
db476b8
feat: add Convex collections with local live queries and transactions…
tannerlinsley Oct 28, 2026
00f07db
feat(oracles): require every oracle test to reach a declared part (#2…
KyleAMathews Oct 28, 2026
4c39add
fix(persistence): keep reserved sync commits across persisted hydrati…
KyleAMathews Oct 28, 2026
45eeef8
fix(db): let a sync source read its own held writes in commit order (…
KyleAMathews Oct 28, 2026
6bf0e86
feat(persistence): settle covered on-demand demands from SQLite under…
KyleAMathews Oct 28, 2026
93a31a4
chore(deps): update dependency seroval to v1.6.3 [security] (#2247)
renovate[bot] Oct 28, 2026
96dabdc
chore(deps): update dependency electron to v42 [security] (#2248)
renovate[bot] Oct 28, 2026
b305fb2
fix(scripts): lint the agent's checkout in the oracle lint hooks (#2282)
KyleAMathews Oct 28, 2026
f89a464
docs(persistence): remove stale on-demand initialRender restriction (…
KyleAMathews Oct 28, 2026
a07cd73
fix(db): keep a live query running when a lazy demand fails during a …
KyleAMathews Oct 28, 2026
88d912b
chore(deps): update dependency trailbase>uuid to v13.0.2 [security] (…
renovate[bot] Oct 28, 2026
2dc655f
chore(deps): align Angular packages on v20.3.34 [security] (#2252)
renovate[bot] Oct 28, 2026
bc77952
chore(deps): update dependency vite to v7.3.7 [security] (#2249)
renovate[bot] Oct 28, 2026
685e364
chore(deps): update Zod to patched v4.6.7 [security] (#2251)
renovate[bot] Oct 28, 2026
e7bf648
chore(deps): migrate Vitest tooling to patched v4.1.12 [security] (#2…
renovate[bot] Oct 28, 2026
95460bc
docs(persistence): document networkTimeoutMs: 0 for cache-first rende…
KyleAMathews Oct 28, 2026
43d4ef6
Prepare first TanStack DB 1.0 release candidate (#2171)
KyleAMathews Oct 29, 2026
82c5f99
fix(solid): cap solid-js peer range at ^1 (#2286)
ryansolid Oct 29, 2026
71bf598
ci: Version Packages (#2217)
github-actions[bot] Oct 29, 2026
07bfc0e
docs: anchor RC migration guidance to DB 0.9.2 (#2295)
KyleAMathews Oct 29, 2026
6726848
ci: temporarily unblock staged RC publication (#2297)
KyleAMathews Oct 29, 2026
3937a73
ci: restore release tests and public package publishing (#2299)
KyleAMathews Oct 29, 2026
bea84cd
ci: publish release candidates under latest (#2300)
KyleAMathews Oct 29, 2026
9cfa11f
fix(persistence): recover Electric rows after interleaved source comm…
KyleAMathews Oct 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
98 changes: 98 additions & 0 deletions .agents/skills/oracle-authoring/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
---
name: oracle-authoring
description: Discover and articulate subsystem laws, then create or edit independent oracle tests and generated histories in TanStack DB. Use for new oracle coverage, oracle repairs, or changes to a reference model.
---

# Author an oracle

Start by making the law clear enough that someone could predict an observation
without reading production. The hard part is deciding what is owed, to whom,
under which conditions, and when. An executable model enacts that account.

Use this skill whenever an oracle changes, or the production driver, history
grammar, or comparison that it uses. This includes a change made while you fix
a bug, fix a review finding, or evaluate review findings.

Read [how oracle work is scored](../../../AGENTS.md#how-oracle-work-is-scored)
first. Auditors check the order of your work and penalize shortcuts.

Work in this order when a production change is part of the task:

1. State the law and its authority.
2. Inventory the materially affected public receiving paths and their promised
observation cuts. Include required real-host receiving witnesses in this
pre-edit gate; a controlled core witness does not supply their evidence.
3. Extend the history grammar, driver, or observation until generated
histories reach the state where the law matters. Declare that state with
`createOracleReach` (ORC-015) for each required receiving path.
4. Run those comparisons on unchanged production. Record the defect's RED
result and the neighboring guarantees' results. A setup failure or missing
required witness blocks production edits; repair the test path first.
5. Change production, with the oracle running after each attempt.
6. Record the GREEN result and a hostile mutant that fails.

Do not change production before step 4. Retrospective runs or a documented
process gap do not satisfy this gate. If a model rule disagrees with
production, find its authority before you edit either one. A rule that you
change only so that it matches production output is model hacking.

Read [the oracle guide](../../../docs/contributing/oracle-rubric.md) and
[the glossary](../../../docs/contributing/glossary.md) in full, then read the
relevant owner and limits in
[the coverage map](../../../docs/contributing/oracle-coverage.md).

After a handoff or compaction, reopen required sources whose relevant contents
are absent from the current context. A prior agent's statement that it read
them does not supply their definitions. Apply the glossary's model alignment
rule before naming or renaming a state, action, boundary, or observation. Use
canonical terms and declare abstractions that combine or split production
concepts. Delegated agents must do the reading relevant to their own scope.

Follow the subsystem reading requirements in AGENTS.md.

Keep unit tests and standalone concrete type assertions out of oracle files
(ORC-016). Fixed regressions are inputs to the same model, driver, and
comparison as the broader campaign, without their own expected answers.
Compile-time oracles generate legal TypeScript inputs and compare public
types with a reusable independent law; a matrix of fixed assertions does not
satisfy this requirement. Supplemental examples belong in ordinary test files.

Use the [instrument library](../../../docs/contributing/instruments/index.md)
when there is a material uncertainty. Select cards within the authorized task;
there is no required sequence or instrument quota.

- When the promised behavior is unclear, use **Law discovery**. Separate the
established contract, observations of current behavior, and proposed design.
- When changing an established model, write old and proposed predictions for a
distinguishing case before editing expectations. **Adversarial review** can
expose a shared mistake in production and the model.
- When obligations collide, use **Tension scan**. When laws overlap or their
concepts seem wrong, use **Law restructuring** to propose and check a better
organization.
- When an oracle is green but may accept a plausible wrong implementation,
use **Mutant gap hunt** to design a semantic edit and classify any survivor.

Keep the chosen law and its authority visible beside the independent model.
A counterexample can indict production, the model, the history grammar, the
observation checkpoint, or the proposed law. Determine which before repairing
it. A convenient encoding or a stronger assertion is not automatically a better
account of the contract.

Develop the executable evidence using the oracle guide: legal histories,
production entry point, public observations, and a comparison that rejects a
plausible wrong design. Explain why each model distinction changes an allowed
next action or promised observation. Preserve freedom where the contract leaves
scheduling, representation, or implementation choices open.

For a law-design request, return candidate laws, source authority, rival
predictions, and the experiment that could discriminate them. Implement tests
when requested by the task. A proposal with unresolved authority can be explored
in a scratch model; do not silently make it a product expectation.

At closeout, write the evidence block from AGENTS.md (law, reach, RED, GREEN,
mutant, limits). Connect the law to the evidence actually obtained: which histories
and paths ran, which wrong behavior was rejected, and what remains untested.
Use concise prose suited to the change; no particular report template is
required. When changing repository coverage, update the existing owner and
coverage map to reflect the changed scope. A scratch law-design experiment
retains its proposals and limits without claiming new repository coverage.
89 changes: 89 additions & 0 deletions .agents/skills/oracle-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
name: oracle-review
description: Review TanStack DB oracles and generated-history tests by challenging enforcement, model independence, law formulation, law suitability, and relationships among laws. Use for oracle reviews and proposed oracle contract changes.
---

# Review an oracle

Ask both whether the oracle enforces its stated law and whether that is the
right law to promise. A passing test can coexist with a wrong theory; a failing
test can coexist with correct production.

Read [the oracle guide](../../../docs/contributing/oracle-rubric.md) and
[the glossary](../../../docs/contributing/glossary.md) in full, then read the
relevant owner and limits in
[the coverage map](../../../docs/contributing/oracle-coverage.md).

After a handoff or compaction, reopen required sources whose relevant contents
are absent from the current context. A prior agent's statement that it read
them does not supply their definitions. Apply the glossary's model alignment
rule before naming or renaming a state, action, boundary, or observation. Use
canonical terms and declare abstractions that combine or split production
concepts. Delegated agents must do the reading relevant to their own scope.

Follow the subsystem reading requirements in AGENTS.md. Guide conformance is
judged by its ORC requirements, not by use of these instruments or headings.

Follow the oracle's authority claim to the nearest public contract source and
inspect neighboring promises within the review scope. The oracle's own summary
can omit the very obligation it should check.

Reconstruct one promised observation from the contract independently of the
implementation. Trace the actual model, legal histories, production path,
recorder, and comparison that purport to check it. Then select a useful attack
from the [instrument library](../../../docs/contributing/instruments/index.md):

- **Adversarial review** examines enforcement, formulation, suitability, and
underlying concepts. Name the level each attack addresses.
- **Law discovery** helps when the claim has no clear authority or two plausible
interpretations predict different behavior.
- **Tension scan** examines demands that collide under a concrete condition.
- **Law restructuring** tests whether merging, splitting, replacing, or removing
laws gives a better account while preserving necessary obligations.
- **Mutant gap hunt** tests whether a plausible wrong implementation can pass
the owner and traces survivors to a missing distinction, a contract-permitted
difference, a scoped equivalence argument, or a baseline product bug.

Choose attacks for the actual uncertainty; do not run every card or require a
finding at every level. Use a fresh reviewer for an independent challenge when
delegation is available and authorized. Give it the artifact, sources, and task,
without the author's desired verdict. Label a self-review as such.

For each finding, give the challenged claim, source or authority, smallest
legal witness or concrete design consequence, evidence status, and repair or
next experiment. For a confirmed bug, explain why the existing oracle missed
it and identify the smallest general improvement. Distinguish executed results
from source inspection and proposed experiments. A setup error or timeout is
not evidence that a mutant was rejected at the comparison.

Keep defects under accepted contracts separate from proposals to change those
contracts. Criticism may recommend different, safer, or more conventional
behavior, but must name the external standard or engineering reason, its
applicability, and migration cost. Existing behavior does not establish its own
correctness; a preference does not establish a contract violation.

Audit the change for the shortcuts that
[the scoring section](../../../AGENTS.md#how-oracle-work-is-scored) penalizes.
Report each one as a finding:

- A production change without a RED result from the extended oracle on the
parent commit.
- Required public receiving paths tested only after the production repair,
or aggregate reach that hides an unexercised receiving path. Check the
pre-edit inventory, actual comparison results, and their order. Retrospective
evidence or documentation of a gap does not satisfy the pre-edit gate.
- A model rule that changed to match production output without an authority.
- A claim about a state that no declared reach shows generated histories enter.
- A skipped, narrowed, or relaxed comparison without a coverage-map entry and a
maintainer decision.
- A pinned example where the law needs a generator dimension.
- A counterexample labeled as older than the change and then left without a
fix, a coverage-map record, or a maintainer decision.
- A closure claim without a hostile mutant that fails the oracle.

Report supported findings and remaining uncertainty. Do not invent findings,
retire laws, or rewrite expectations to make a review come out decisive.

If the review leads to oracle edits, load
[oracle-authoring](../oracle-authoring/SKILL.md) before you edit. This also
applies when you fix a finding during the same task.
6 changes: 6 additions & 0 deletions .changeset/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.github/ @TanStack/tanstack-core
.nx/ @TanStack/tanstack-core
nx.json @TanStack/tanstack-core
.changeset/config.json @TanStack/tanstack-core
scripts/ @TanStack/tanstack-core
.npmrc @TanStack/tanstack-core
7 changes: 7 additions & 0 deletions .changeset/bright-cups-infer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@tanstack/db-sqlite-persistence-core': patch
---

Fix type inference for schema-free collection options wrapped with persistedCollectionOptions and passed to createCollection.

Reject caller utilities that use the reserved local persistence names acceptMutations, getLeadershipState, or forceReloadSubset, instead of silently replacing them.
5 changes: 5 additions & 0 deletions .changeset/browser-sqlite-separate-wasm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@tanstack/browser-db-sqlite-persistence': patch
---

Ship wa-sqlite WebAssembly as a separate asset that the browser loads automatically, instead of inlining it in the OPFS worker. In Vite development, the package finds its assets without configuration; production builds drop that lookup. An install that Vite cannot resolve by package name, or a worker from another installed version of the package, now reports `PersistenceUnavailableError`, and excluding the package from pre-bundling fixes it.
8 changes: 8 additions & 0 deletions .changeset/convex-collection.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@tanstack/convex-db-collection': minor
'@tanstack/offline-transactions': minor
---

Add a Convex collection adapter with typed query subscriptions, full-row sync, automatic reactive pagination with on-demand windows for a fixed ordered query, durable offline mutation replay, optimistic mutation handlers, and support for both Convex JavaScript and React clients.

Add opt-in mutation codecs to the durable outbox while preserving the default wire format and retaining unreadable codec records for recovery.
9 changes: 9 additions & 0 deletions .changeset/db-query-identity-laws.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@tanstack/db': minor
---

Collect the helpers the framework adapters share into one adapter layer, exported from `@tanstack/db` and marked unstable for external use. It adds `identifyLiveQuery`, which checks a prepared query's identity and source Collection IDs for a hook that compares query identity, and `bindLiveQueryWindow`, the window binding every `useLiveInfiniteQuery` now uses. The window helpers that binding replaces are no longer exported.

Add `SourceCollectionIdReuseError`, which a mounted hook that compares query identity throws when a different source Collection appears under a Collection ID it already read.

Add `rejectLiveQueryInput` and `releaseDeferredOnReclaim` for framework hooks. The first releases the sync starts a rejected query deferred and rethrows the rejection. The second releases a render's deferred sync starts when garbage collection reclaims the live query it built, so a render that never commits, because a sibling threw or it suspended, does not keep its sources deferred. Each released source follows its own start policy, so `startSyncImmediate()` or another hook can still start it.
10 changes: 10 additions & 0 deletions .changeset/defer-term-behind-queued-reads.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@tanstack/db-sqlite-persistence-core': minor
'@tanstack/electron-db-sqlite-persistence': patch
---

Reloaded persisted collections now read their rows before they write a leader election term. A collection still takes its leader lock when it subscribes, but it reserves its durable term only after the database work already queued on the shared scheduler has settled, or as soon as something needs a leader during that election: a local write, a follower request, a sync commit during startup, or `ensureLeadership`. A need that an earlier leader already served does not let a later takeover skip the wait. A tab that takes over treats the departed leader's route as gone, so a sync commit queued behind one of its reads goes to the new leader and settles without waiting out an RPC timeout. The Electron renderer applies the same rule to its own hydrations. The renderer now has a hydration scope, so its startup runs as one hydration, as a Browser tab's does, and a restart keeps its metadata and row reads in one scope, so a term cannot run between them.

`ensureLeadership` now resolves when this node becomes leader, keeps its place in the Web Locks queue instead of replacing its lock request, and rejects if the coordinator is disposed.

Migration for custom persistence adapters: `runInRegularScope` is now a `RegularScope`, which must also provide `afterQueuedWork()`. It resolves once every operation queued or running on the adapter's scheduler at the call has settled. An adapter without a scheduler can return a promise that settles with its running hydrations. A coordinator now rejects an adapter whose `runInRegularScope` lacks `afterQueuedWork` with `InvalidPersistenceAdapterError`.
5 changes: 5 additions & 0 deletions .changeset/electric-cleanup-stream-listeners.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@tanstack/electric-db-collection': patch
---

Release the shape stream's visibility listener when a sync run is cleaned up. The Electric client registers a `visibilitychange` listener for each `ShapeStream` (an `AppState` subscription on React Native, from `@electric-sql/client` 1.5.23) and removes it only in `unsubscribeAll()`, so aborting the stream left the listener behind, and the listener kept the stream reachable. An app that cleans up and recreates collections, or whose on-demand cache rotates its provider session, gained one retained stream each time.
39 changes: 39 additions & 0 deletions .changeset/first-rc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
'@tanstack/angular-db': major
'@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
'@tanstack/electric-db-collection': major
'@tanstack/electron-db-sqlite-persistence': major
'@tanstack/expo-db-sqlite-persistence': major
'@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
'@tanstack/tauri-db-sqlite-persistence': major
'@tanstack/trailbase-db-collection': major
'@tanstack/vue-db': major
---

Release the first 1.0 candidate. Remove deprecated pre-1.0 APIs and give
published row metadata precedence over colliding selected fields. Structured
source spreads and direct source-row returns keep source attribution; new
functional objects and other projections receive output Collection metadata.
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.

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.
5 changes: 5 additions & 0 deletions .changeset/gc-waits-for-persisting-transactions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@tanstack/db': patch
---

Garbage collection no longer cleans up a collection while a transaction that touches it is persisting. Cleaning it up dropped the transaction's optimistic rows while its mutation handler still ran, and rejected waits such as Electric's `awaitTxId`, so a write could fail after the screen that made it unmounted. The `gcTime` delay now starts again when the last such transaction completes or fails, cancels obsolete queued idle cleanup, and preserves the remaining startup grace. Rolling back a manual transaction that stayed pending preserves the existing deadline. Explicit `cleanup()` still starts immediately; a transaction that settles afterward no longer restores another transaction's cleared optimistic rows.
11 changes: 11 additions & 0 deletions .changeset/keep-live-query-through-failed-replay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
'@tanstack/db': patch
---

A query that joins and includes the same source has two subscriptions to it. Their truncate replays now share one barrier, so neither publishes while the other still loads. When a lazy demand of either fails while a failed replay of the source holds the query's results, the query keeps its last complete result until a later replay of that source succeeds. Before, retiring the other replay's failed demand could publish the window without that demand's rows.

Some sources refetch and then report that their pages shifted. An ordered window over such a source no longer skips a row tied with the refetched first page's new end. When the report shows that the page's end moved, the window repairs its first page. It no longer trusts a row that an older tie request installed.

A window move made while a truncate replay holds a live query's results now applies after that replay, even when a newer truncate discards it. Before, the move could reject, and an older move's window stayed. A reload of the query or of a source still ends the move.

An ordered, limited query over a source without an order index can read too few rows to fill its window. A join that drops rows can cause this. It no longer reads the whole source then. It reads a prefix twice as long instead. It grows again while that adds rows, so every request stays bounded.
Loading
Loading