Download Latest Version effectcraft-0.20.0-windows-x86.msi (59.5 MB)
Home / v0.17.0
Name Modified Size InfoDownloads / Week
Parent folder
effectcraft-web-0.17.0.zip 2026-10-25 19.5 MB
effectcraft-0.17.0-windows-x86-portable.zip 2026-10-25 64.5 MB
effectcraft-0.17.0-windows-x86.msi 2026-10-25 50.1 MB
effectcraft-cli-0.17.0-macos-universal.zip 2026-10-25 61.1 MB
effectcraft-0.17.0-macos-universal.dmg 2026-10-25 66.4 MB
effectcraft-0.17.0-windows-arm64-portable.zip 2026-10-25 62.8 MB
effectcraft-0.17.0-windows-arm64.msi 2026-10-25 45.8 MB
effectcraft-0.17.0-windows-x64-portable.zip 2026-10-25 67.9 MB
effectcraft-0.17.0-windows-x64.msi 2026-10-25 51.5 MB
effectcraft-0.17.0-linux-x86_64.tar.gz 2026-10-25 64.7 MB
effectcraft-0.17.0-linux-x86_64.flatpak 2026-10-25 42.0 MB
effectcraft-0.17.0-linux-x86_64.pkg.tar.zst 2026-10-25 45.3 MB
effectcraft-0.17.0-linux-x86_64.rpm 2026-10-25 65.8 MB
effectcraft-0.17.0-linux-x86_64.AppImage 2026-10-25 59.9 MB
effectcraft-0.17.0-linux-x86_64.AppImage.zsync 2026-10-25 205.0 kB
effectcraft-0.17.0-linux-x86_64.deb 2026-10-25 66.2 MB
effectcraft-0.17.0-linux-riscv64.tar.gz 2026-10-25 63.2 MB
effectcraft-0.17.0-linux-aarch64.rpm 2026-10-25 62.6 MB
effectcraft-0.17.0-linux-aarch64.tar.gz 2026-10-25 60.4 MB
effectcraft-0.17.0-linux-riscv64.deb 2026-10-25 64.5 MB
effectcraft-0.17.0-linux-riscv64.rpm 2026-10-25 64.4 MB
effectcraft-0.17.0-freebsd-x86_64.tar.gz 2026-10-25 64.4 MB
effectcraft-0.17.0-linux-aarch64.AppImage 2026-10-25 55.9 MB
effectcraft-0.17.0-linux-aarch64.AppImage.zsync 2026-10-25 191.5 kB
effectcraft-0.17.0-linux-aarch64.deb 2026-10-25 63.3 MB
effectcraft-0.17.0-linux-aarch64.flatpak 2026-10-25 37.0 MB
effectcraft-0.17.0-linux-aarch64.pkg.tar.zst 2026-10-25 42.8 MB
SHA256SUMS.txt 2026-10-25 2.9 kB
EffectCraft v0.17.0 source code.tar.gz 2026-10-25 12.0 MB
EffectCraft v0.17.0 source code.zip 2026-10-25 12.7 MB
README.md 2026-10-25 15.5 kB
Totals: 31 Items   1.4 GB 87

What's Changed

  • svg: bound raster surfaces and handle duplicate gradient stops by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2190
  • ui: bound queued synthetic input gestures by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2197
  • text: bound layout and variable font metadata by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2193
  • pdf: bound image sample and mask allocations by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2191
  • roto: bound frozen matte decoding and serialization by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2194
  • expr: bound rewrite expansion and preserve assignment targets by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2195
  • fix: validate the CLI path in the AE ease checker (SonarCloud jssecurity:S8705) by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2214
  • fix: put the NOSONAR marker on the spawnSync line (SonarCloud follow-up) by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2215
  • fix: document the AE checker's operator-supplied CLI path (SonarCloud) by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2217
  • fix: suppress the stat check's taint finding (SonarCloud) by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2218
  • segment: bound checkpoint tensors and pickle work by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2192
  • xtask: use unique temporary directories for bench tests by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2196
  • packaging: use [[ tests, named locals and explicit returns (SonarCloud S7688/S7679/S7682) by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2187
  • Use chrono instead of hand-rolled UTC conversion by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2023
  • CI: dev-profile gate, one test binary per crate, nextest, line tables only by @aiongg in https://github.com/storytold/effectcraft/pull/2235
  • Packaging: pin the signing client and appimagetool, and check their hashes by @aiongg in https://github.com/storytold/effectcraft/pull/1976
  • Footage, Lottie and models: resolve stored paths with craft-docpath's resolve_absolute by @aiongg in https://github.com/storytold/effectcraft/pull/1975
  • GPU tests: pass on Mesa lavapipe (boundary flips, skip the Reshape case that crashes it); cargo fmt by @aiongg in https://github.com/storytold/effectcraft/pull/2239
  • CI: shared gate workflow; FreeBSD nightly and on release by @aiongg in https://github.com/storytold/effectcraft/pull/2204
  • security: move the release workflow's write permission to the job level (SonarCloud githubactions:S8233) by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2241
  • Translations: missing strings show in English and are listed by a report, not failed by tests by @aiongg in https://github.com/storytold/effectcraft/pull/2244
  • ci(sonar): stop cancelling main-branch runs so coverage is published by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/2249
  • Integration batch 1: 18 contributor PRs (CJK fonts, timeline, preview caches, interface languages) by @aiongg in https://github.com/storytold/effectcraft/pull/2257
  • Preview: keep rendering past the cached frames after a loop or restart by @ded-achtung in https://github.com/storytold/effectcraft/pull/1920
  • Layer: replace a layer's source with Alt-drag and Ctrl+Alt+/ (#991) by @ki2pixel in https://github.com/storytold/effectcraft/pull/1929
  • Layer: Reveal Layer Source in Project from the context menus (#1809) by @ki2pixel in https://github.com/storytold/effectcraft/pull/1931
  • Timeline: the disk-cache bar checks only the visible frames by @arnav-hiwarkar in https://github.com/storytold/effectcraft/pull/2048
  • engine: split layers above the original by default (#2083) by @gmrmad1 in https://github.com/storytold/effectcraft/pull/2114
  • ui: Spacebar hand pans timeline rows vertically (#2083) by @gmrmad1 in https://github.com/storytold/effectcraft/pull/2116
  • ui: the interface prefers the platform's UI faces, rendered text keeps the print ones by @FeiLiuEM in https://github.com/storytold/effectcraft/pull/1322
  • Preview: replaced browser media gets a new disk-cache key (#1253) by @vbasky in https://github.com/storytold/effectcraft/pull/1699
  • Text: draw Faux Bold and synthetic bold (#1676) by @HEOJUNFO in https://github.com/storytold/effectcraft/pull/1837
  • i18n: tab titles, workspaces and Project/Timeline column headers reach the catalogs; web language follows ?lang= and the browser by @devius in https://github.com/storytold/effectcraft/pull/1842
  • i18n: Georgian (ka) interface language by @devius in https://github.com/storytold/effectcraft/pull/1843
  • Timeline: layer switches, labels and modes act on the whole selection (#1849) by @ki2pixel in https://github.com/storytold/effectcraft/pull/1850
  • Text Range Selector: Start, End and Offset show as counts with Units = Index (#1814) by @SBaksa in https://github.com/storytold/effectcraft/pull/1865
  • fix(text): isolate CJK fallback language and cache entries by @TimotheusG in https://github.com/storytold/effectcraft/pull/1907
  • [#1812]: stills at reduced resolution are resampled once, and their layers cached by @ded-achtung in https://github.com/storytold/effectcraft/pull/1917
  • [#1812]: workers that render a layer at once share the cached buffer by @ded-achtung in https://github.com/storytold/effectcraft/pull/1928
  • Fix incomplete system font coverage in the Chinese interface by @yuraizmailov in https://github.com/storytold/effectcraft/pull/1973
  • Preview: a zoom or resolution change evicts the other sizes' frames first by @arnav-hiwarkar in https://github.com/storytold/effectcraft/pull/2046
  • Translations report: count repeated menu entries once; list panel strings no catalog has yet by @aiongg in https://github.com/storytold/effectcraft/pull/2252
  • Integration batch 2: 18 contributor PRs (SVG, engine, colour effects, effects, settings, tests) by @aiongg in https://github.com/storytold/effectcraft/pull/2259
  • Color effects and keys render as in After Effects (Tint, Tritone, Black & White, Exposure, Levels, Brightness & Contrast, Curves, Luma Key, Extract, 4-Color Gradient, Fill) by @vangel76 in https://github.com/storytold/effectcraft/pull/1872
  • Resolve SVG font-size percentages against the parent font size by @Silvertree2010 in https://github.com/storytold/effectcraft/pull/1901
  • engine: a keyframe on the out point no longer warns (#2084) by @gmrmad1 in https://github.com/storytold/effectcraft/pull/2106
  • svg: share CSS declaration blocks and cap <style> work (#2140) by @Barzabel in <a href="https://github.com/storytold/effectcraft/pull/2159" rel="nofollow">https://github.com/storytold/effectcraft/pull/2159</a></li> <li>i18n(ja): AE says 縦横比, not アスペクト比 by @zitann2020 in <a href="https://github.com/storytold/effectcraft/pull/2166" rel="nofollow">https://github.com/storytold/effectcraft/pull/2166</a></li> <li>Project Settings: Frame Count, Start at 0 or Start at 1 by @marcoarnulfo in <a href="https://github.com/storytold/effectcraft/pull/2185" rel="nofollow">https://github.com/storytold/effectcraft/pull/2185</a></li> <li>[#2094] (adv): crisp cast shadows so diffusion only softens by @ChristopherLinnett in <a href="https://github.com/storytold/effectcraft/pull/2211" rel="nofollow">https://github.com/storytold/effectcraft/pull/2211</a></li> <li>Composition Settings: Resolution menu with the frame size and memory at that resolution by @marcoarnulfo in <a href="https://github.com/storytold/effectcraft/pull/2223" rel="nofollow">https://github.com/storytold/effectcraft/pull/2223</a></li> <li>UI: native press-and-browse menus, with edge auto-scroll by @elZanco in <a href="https://github.com/storytold/effectcraft/pull/1653" rel="nofollow">https://github.com/storytold/effectcraft/pull/1653</a></li> <li>Tests: serialise disk-cache-opening tests with the roto tests by @iannitram in <a href="https://github.com/storytold/effectcraft/pull/1833" rel="nofollow">https://github.com/storytold/effectcraft/pull/1833</a></li> <li>Cryptomatte: pick the ID under a point into the Selection (<code>effect.pickCryptomatte</code>) by @MatejKozlovsky in <a href="https://github.com/storytold/effectcraft/pull/1841" rel="nofollow">https://github.com/storytold/effectcraft/pull/1841</a></li> <li>Make Fractal Noise evolution progress linearly by @Silvertree2010 in <a href="https://github.com/storytold/effectcraft/pull/1846" rel="nofollow">https://github.com/storytold/effectcraft/pull/1846</a></li> <li>xtask bench: run on Windows (scenario commands from an args file, os error 206) by @ded-achtung in <a href="https://github.com/storytold/effectcraft/pull/1906" rel="nofollow">https://github.com/storytold/effectcraft/pull/1906</a></li> <li>test(render): make automatic backend checks independent of timing by @TimotheusG in <a href="https://github.com/storytold/effectcraft/pull/1915" rel="nofollow">https://github.com/storytold/effectcraft/pull/1915</a></li> <li>Motion Tile's Output size works on adjustment layers (#1727) by @ded-achtung in <a href="https://github.com/storytold/effectcraft/pull/2003" rel="nofollow">https://github.com/storytold/effectcraft/pull/2003</a></li> <li>3D: add a New 3D Primitive dialog to Layer &gt; New by @tylerjenningsw in <a href="https://github.com/storytold/effectcraft/pull/2050" rel="nofollow">https://github.com/storytold/effectcraft/pull/2050</a></li> <li>engine: resolve effect match-name paths in prop_ref (#2064) by @gmrmad1 in <a href="https://github.com/storytold/effectcraft/pull/2108" rel="nofollow">https://github.com/storytold/effectcraft/pull/2108</a></li> <li>Regression tests for [#354], [#382], [#979] and [#1497] by @skylartaylor in <a href="https://github.com/storytold/effectcraft/pull/2182" rel="nofollow">https://github.com/storytold/effectcraft/pull/2182</a></li> <li>Integration batch 3: 19 contributor PRs (interface, engine, effects, GPU, PDF and EPS import) by @aiongg in <a href="https://github.com/storytold/effectcraft/pull/2260" rel="nofollow">https://github.com/storytold/effectcraft/pull/2260</a></li> <li>effects: CC Radial Fast Blur grows its buffer so streaks pass the layer edge (#2095) by @mercuryVM in <a href="https://github.com/storytold/effectcraft/pull/2206" rel="nofollow">https://github.com/storytold/effectcraft/pull/2206</a></li> <li>Cryptomatte: skip the ID colours unless Colors shows them, key the layer in place, and cache each rank's last ID colour by @MatejKozlovsky in <a href="https://github.com/storytold/effectcraft/pull/1604" rel="nofollow">https://github.com/storytold/effectcraft/pull/1604</a></li> <li>Shift Channels: After Effects' Take … From menu order, so 10 is Full Off (#1797) by @Anubhav-Rai in <a href="https://github.com/storytold/effectcraft/pull/1810" rel="nofollow">https://github.com/storytold/effectcraft/pull/1810</a></li> <li>Hold position between identical auto-Bézier spatial keys by @Silvertree2010 in <a href="https://github.com/storytold/effectcraft/pull/1847" rel="nofollow">https://github.com/storytold/effectcraft/pull/1847</a></li> <li>EPS: Illustrator EPS files draw their artwork (#955) by @JWesCampbell in <a href="https://github.com/storytold/effectcraft/pull/1909" rel="nofollow">https://github.com/storytold/effectcraft/pull/1909</a></li> <li>[#1926]: an edit no longer stamps every image-sequence frame for the disk cache by @ded-achtung in <a href="https://github.com/storytold/effectcraft/pull/1946" rel="nofollow">https://github.com/storytold/effectcraft/pull/1946</a></li> <li>script: comp.width and comp.height resize the frame without moving the layers (#1942) by @Anubhav-Rai in <a href="https://github.com/storytold/effectcraft/pull/1958" rel="nofollow">https://github.com/storytold/effectcraft/pull/1958</a></li> <li>Make Gaussian Blur and Fast Box Blur continuous at small values (#1939) by @MarekSpodBiedry in <a href="https://github.com/storytold/effectcraft/pull/1968" rel="nofollow">https://github.com/storytold/effectcraft/pull/1968</a></li> <li>Fix [#1708]: calibrate CC Blobbylize from the AE oracle by @ki2pixel in <a href="https://github.com/storytold/effectcraft/pull/2027" rel="nofollow">https://github.com/storytold/effectcraft/pull/2027</a></li> <li>Fractal Noise: resolve the Blending Mode once per layer, not per pixel by @arnav-hiwarkar in <a href="https://github.com/storytold/effectcraft/pull/2040" rel="nofollow">https://github.com/storytold/effectcraft/pull/2040</a></li> <li>Save: check the file's values without reparsing it in release builds by @arnav-hiwarkar in <a href="https://github.com/storytold/effectcraft/pull/2041" rel="nofollow">https://github.com/storytold/effectcraft/pull/2041</a></li> <li>GPU: devices favour memory use, so Purge and Close give video memory back by @arnav-hiwarkar in <a href="https://github.com/storytold/effectcraft/pull/2045" rel="nofollow">https://github.com/storytold/effectcraft/pull/2045</a></li> <li>Light Settings: expose and preserve Environment lights by @tylerjenningsw in <a href="https://github.com/storytold/effectcraft/pull/2049" rel="nofollow">https://github.com/storytold/effectcraft/pull/2049</a></li> <li>Timeline: pick layer-valued properties from a layer drop-down (#2093) by @ChristopherLinnett in <a href="https://github.com/storytold/effectcraft/pull/2155" rel="nofollow">https://github.com/storytold/effectcraft/pull/2155</a></li> <li>Fix u32 overflows in PDF CID width tables and CMap ranges (#2147) by @MarekSpodBiedry in <a href="https://github.com/storytold/effectcraft/pull/2163" rel="nofollow">https://github.com/storytold/effectcraft/pull/2163</a></li> <li>engine: deleting a layer clears the references to it (#2153) by @Anubhav-Rai in <a href="https://github.com/storytold/effectcraft/pull/2177" rel="nofollow">https://github.com/storytold/effectcraft/pull/2177</a></li> <li>Reject malformed thumbnail text without crashing (#2135) by @Maokus in <a href="https://github.com/storytold/effectcraft/pull/2178" rel="nofollow">https://github.com/storytold/effectcraft/pull/2178</a></li> <li>Reload a numbered still as its own file (#2074) by @HEOJUNFO in <a href="https://github.com/storytold/effectcraft/pull/2184" rel="nofollow">https://github.com/storytold/effectcraft/pull/2184</a></li> <li>fix(ui): expose Duplicate in the Project panel context menu (#2207) by @Zaxaerith in <a href="https://github.com/storytold/effectcraft/pull/2221" rel="nofollow">https://github.com/storytold/effectcraft/pull/2221</a></li> <li>Integration batch 4: 15 contributor PRs (interface, scripting, hardening, docs) by @aiongg in <a href="https://github.com/storytold/effectcraft/pull/2264" rel="nofollow">https://github.com/storytold/effectcraft/pull/2264</a></li> <li>Reject non-hex characters such as '+' in Rgba::from_hex by @Silvertree2010 in <a href="https://github.com/storytold/effectcraft/pull/1945" rel="nofollow">https://github.com/storytold/effectcraft/pull/1945</a></li> <li>CLI: preserve template composition names when rendering by @tylerjenningsw in <a href="https://github.com/storytold/effectcraft/pull/1948" rel="nofollow">https://github.com/storytold/effectcraft/pull/1948</a></li> <li>Keep rgb_to_hsv and rgb_to_hsl hue within 0..1 by @Silvertree2010 in <a href="https://github.com/storytold/effectcraft/pull/1997" rel="nofollow">https://github.com/storytold/effectcraft/pull/1997</a></li> <li>docs: escape the backtick in the twirlSelected shortcut (#2025) by @gmrmad1 in <a href="https://github.com/storytold/effectcraft/pull/2033" rel="nofollow">https://github.com/storytold/effectcraft/pull/2033</a></li> <li>Return None from Mat4::inverse for non-finite input by @Silvertree2010 in <a href="https://github.com/storytold/effectcraft/pull/2156" rel="nofollow">https://github.com/storytold/effectcraft/pull/2156</a></li> <li>Settings: fit translated page names in the sidebar (#2034) by @Maokus in <a href="https://github.com/storytold/effectcraft/pull/2171" rel="nofollow">https://github.com/storytold/effectcraft/pull/2171</a></li> <li>End an open text edit when Deselect All runs (#2096) by @ChristopherLinnett in <a href="https://github.com/storytold/effectcraft/pull/2228" rel="nofollow">https://github.com/storytold/effectcraft/pull/2228</a></li> <li>Timeline: focus newly added expressions after Alt-click (refs [#1072]) by @tylerjenningsw in <a href="https://github.com/storytold/effectcraft/pull/1327" rel="nofollow">https://github.com/storytold/effectcraft/pull/1327</a></li> <li>Timeline: a shape group's inner Contents draws no row, as After Effects elides it by @elZanco in <a href="https://github.com/storytold/effectcraft/pull/1761" rel="nofollow">https://github.com/storytold/effectcraft/pull/1761</a></li> <li>Fix scheduled ScriptUI tasks in host sessions by @dorfee in <a href="https://github.com/storytold/effectcraft/pull/1867" rel="nofollow">https://github.com/storytold/effectcraft/pull/1867</a></li> <li>Reject non-finite numbers in CSS colour parsing by @Silvertree2010 in <a href="https://github.com/storytold/effectcraft/pull/1881" rel="nofollow">https://github.com/storytold/effectcraft/pull/1881</a></li> <li>fix(script): interrupt blocked socket writes on close by @TimotheusG in <a href="https://github.com/storytold/effectcraft/pull/1891" rel="nofollow">https://github.com/storytold/effectcraft/pull/1891</a></li> <li>Viewer: keep hidden AV layers' controls visible (#1769) by @ki2pixel in <a href="https://github.com/storytold/effectcraft/pull/1933" rel="nofollow">https://github.com/storytold/effectcraft/pull/1933</a></li> <li>Settings: list the languages alphabetically by their own name by @nikolainyegaard in <a href="https://github.com/storytold/effectcraft/pull/2016" rel="nofollow">https://github.com/storytold/effectcraft/pull/2016</a></li> <li>ui: scrub hot text from the slider range (#2097) by @gmrmad1 in <a href="https://github.com/storytold/effectcraft/pull/2110" rel="nofollow">https://github.com/storytold/effectcraft/pull/2110</a></li> <li>PDF: repin the shared reader to craft-libs 9f75d3dc (xref, object-stream, graphics-state and JBIG2 input bounds) by @aiongg in <a href="https://github.com/storytold/effectcraft/pull/2265" rel="nofollow">https://github.com/storytold/effectcraft/pull/2265</a></li> <li>Preview: an edit keeps the cached frames outside the layers it changes (#1641) by @arnav-hiwarkar in <a href="https://github.com/storytold/effectcraft/pull/1643" rel="nofollow">https://github.com/storytold/effectcraft/pull/1643</a></li> </ul> <h2 id="new-contributors">New Contributors</h2> <ul> <li>@aiongg made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/2235" rel="nofollow">https://github.com/storytold/effectcraft/pull/2235</a></li> <li>@ded-achtung made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/1920" rel="nofollow">https://github.com/storytold/effectcraft/pull/1920</a></li> <li>@ki2pixel made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/1929" rel="nofollow">https://github.com/storytold/effectcraft/pull/1929</a></li> <li>@devius made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/1842" rel="nofollow">https://github.com/storytold/effectcraft/pull/1842</a></li> <li>@SBaksa made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/1865" rel="nofollow">https://github.com/storytold/effectcraft/pull/1865</a></li> <li>@TimotheusG made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/1907" rel="nofollow">https://github.com/storytold/effectcraft/pull/1907</a></li> <li>@yuraizmailov made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/1973" rel="nofollow">https://github.com/storytold/effectcraft/pull/1973</a></li> <li>@Barzabel made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/2159" rel="nofollow">https://github.com/storytold/effectcraft/pull/2159</a></li> <li>@ChristopherLinnett made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/2211" rel="nofollow">https://github.com/storytold/effectcraft/pull/2211</a></li> <li>@mercuryVM made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/2206" rel="nofollow">https://github.com/storytold/effectcraft/pull/2206</a></li> <li>@JWesCampbell made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/1909" rel="nofollow">https://github.com/storytold/effectcraft/pull/1909</a></li> <li>@Maokus made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/2178" rel="nofollow">https://github.com/storytold/effectcraft/pull/2178</a></li> <li>@Zaxaerith made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/2221" rel="nofollow">https://github.com/storytold/effectcraft/pull/2221</a></li> <li>@dorfee made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/1867" rel="nofollow">https://github.com/storytold/effectcraft/pull/1867</a></li> <li>@nikolainyegaard made their first contribution in <a href="https://github.com/storytold/effectcraft/pull/2016" rel="nofollow">https://github.com/storytold/effectcraft/pull/2016</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/storytold/effectcraft/compare/v0.16.0...v0.17.0" rel="nofollow">https://github.com/storytold/effectcraft/compare/v0.16.0...v0.17.0</a></p>
Source: README.md, updated 2026-10-25