v7.1.0
- PERF: DayGrid with large number of events, when
dayMaxEvents:true(limited by natural row height), only a necessary subset of events will be DOM-inserted, not all- BREAKING: As a result, a subset of events will be run through event render hooks like
eventContent
- BREAKING: As a result, a subset of events will be run through event render hooks like
- DayGrid event slicing
- FEATURE: Better event packing, including smarter positioning decisions for fewer slices
- FEATURE: Related slices have more similar y-coordinates
- FIX: Events unnecessarily going to +more link when higher-level slot would accommodate
- TimeGrid event positioning
- FIX: Events with custom ordering and
eventOrderStrict:truecan overlap withslotEventOverlap: false(#7914) - FIX: Overlapping events can have tiny width when event content not visible (#7879)
- FIX: Events with custom ordering and
- FIX: In Timeline and TimeGrid, when custom
eventOrder, DOM order respects start-time first, theneventOrder. Better for a11y and tabbing through events sequentially - FIX: React StrictMode: DayGrid events permanently invisible (#8088)
- FIX: Timeline view, smoother virtualized fast scrolling, especially with trackpad and especially while scrolling up with irregular height resource rows
- FIX: Timeline view, account for DST in timeslots (#7620)
- FIX: Resource TimeGrid/DayGrid,
filterResourcesWithEventsshould exclude columns (#6149)
- FEATURE: Print renders business-hours for print-previews that enable it
- FIX: Better page-wrapping of tall DayGrid rows with many events
- FIX: Better page-wrapping of tall Resource-Timeline rows with many events
- FIX: Events are not visible when we print using
window.print()(#8097)
- PERF: General improvements with option-changes. Users of
@fullcalendar/preactmust upgrade theirpreactpeer dependency to >=10.29.8 - FIX: Screen-reader improvement for Resource-Timeline timeline header text
v2.11.1
- A failure inside the WebAssembly codec is now reported as the error it is instead of surfacing as
RangeError: offset is out of bounds. Thedeflate_process,inflate_processandinflate9_processfunctions pack the number of bytes produced in the low 24 bits and the zlib status code in the top byte, but their two error paths returned a bare negative code, read as 16777214 bytes produced and copied out of the module heap into a 64KB buffer. Reaching it takes the codec running out of its fixed 16MB heap, which needsuseCompressionStreamanduseWebWorkersboth set tofalse, so that every entry shares one module instance, andmaxWorkersraised above the number of streams the heap holds, 42 measured when compressing at level 6 - The compress direction of the WebAssembly codec now checks the status code the codec returns, which only the decompress direction did. A failed
deflate()reports no byte produced and no byte consumed, which the loop reads as the end of the data, so the rest of the entry was dropped without an error. The status is also checked before the number of bytes produced is used, so a status code can no longer be read as a byte count whatever the codec returns
- New test asserting that the vendored WebAssembly module packs its error codes the way the codec expects. The module is vendored as a binary, so nothing else in the suite would notice it being re-vendored stale
v2.11.0
ERR_INVALID_CRC32andERR_INVALID_AUTHENTICATION_CODEnow hold distinct values,"Invalid CRC32"and"Invalid authentication code". Both were aliases ofERR_INVALID_SIGNATUREsince v2.8.44, added as aliases so the two errors could be told apart later without breaking the code comparing them at the time.ERR_INVALID_SIGNATUREis removed, the term naming a CRC-32 check and an AES authentication code, neither of which is a signature. Code comparing an error message to it must now compare to the constant naming the check that failed- The
externalFileAttributeandinternalFileAttributenames are removed, from the entry properties and from the writer options. They were renamed toexternalFileAttributesandinternalFileAttributesin January 2025 and kept as aliases since. The other names deprecated in the 2.8 releases are kept. The minified files shrink by 354 bytes
- Deflate64 entries are no longer refused when a match at least as long as the 64KB output buffer of the WebAssembly codec starts on its boundary. The codec then fills a whole buffer without consuming any input, which was read as the end of the data: the rest of the chunk was dropped, and the entry failed with a
Z_BUF_ERRORat the default chunk size, or with an invalid uncompressed size when the chunks were small enough for the loss to pass unnoticed until the end. Only Deflate64 allows such a match, its maximum length being 65538 bytes against the 258 of Deflate, and 7-Zip does not produce one, its Deflate64 encoder capping the matches at 257 bytes. The JavaScript codec was unaffected - The JavaScript codec no longer corrupts the data when a match wraps around the end of the sliding window and ends inside it. The bytes were then copied from the output buffer instead of the window, which needs more than 32KB already decompressed and a match straddling the wrapping point.
deflateandgzipreported the corruption as an invalid checksum,deflate-rawreturned the expected number of bytes with a few of them wrong. The entries of a zip file are read asdeflate-rawandcheckCrc32is not set by default, so the wrong bytes were returned with no error at all. The codec is the one theindex-nativeand legacy builds use, including to read Deflate64
- The WebAssembly codec is now built from Chromium's fork of zlib, which reads 20% faster and writes 6 to 8% faster. The compressed output is unchanged, byte for byte, at every level. The module grows by 1592 bytes. The codec is used when the
CompressionStreamAPI is unavailable or turned off with theuseCompressionStreamoption, and always when reading Deflate64 (#677)
- The
keepOrderoption no longer claims that setting it totrueimproves the use of web workers, which is the opposite of what it does. Keeping the order writes the entries one after another, so concurrent calls toadd()compress one entry at a time. The remark now says so and points tobufferedWrite, which restores the concurrency while still keeping the order
- New test covering a Deflate64 match starting on the boundary of the output buffer, in both codecs
- New test covering a match wrapping around the end of the sliding window of the JavaScript codec, in both codecs
- The test pinning the attribute names now covers the precedence of the entry options over the writer options instead of the removed aliases
- Thanks to @xqdoo00o for reporting that Chromium's fork of zlib compresses faster than the one the WebAssembly codec was built from (#677)
@tanstack/solid-query-devtools@6.0.0-rc.3
- Updated dependencies [
f41ac71]:- @tanstack/solid-query@6.0.0-rc.3
@tanstack/solid-query-persist-client@6.0.0-rc.3
- Updated dependencies [
f41ac71]:- @tanstack/solid-query@6.0.0-rc.3
@tanstack/solid-query-devtools@6.0.0-rc.3
- Updated dependencies [
f41ac71]:- @tanstack/solid-query@6.0.0-rc.3
@tanstack/solid-query@6.0.0-rc.3
- #11394
f41ac71- SweepX-Revalidatekeys in the single-flight consumer. A mutation can declare its invalidation scope with Solid'sreload/redirectrevalidateoption; the flight payload covers what the server recomputed, and whatever a declared key matches beyond it (parameterized instances only the client holds, queries no loader owns) is now invalidated client-side — active queries refetch in the background, inactive ones are marked stale. Keys match by queryKey prefix, mirroring Solid Router's consumption of the same header.