Skip to content

1.13.0

Latest

Choose a tag to compare

@dmjio dmjio released this 30 Aug 22:18
· 1 commit to master since this release
53cfebf

🍜 1.13.0

See the new website.

πŸ“± LynxJS support

Alpha support for LynxJS.

✨ Special thanks

✨ Highlights

  • Native mobile backend. miso can now target iOS/Android by driving the Lynx dual-thread runtime instead of the browser DOM β€” new Miso.Native module tree, gated behind -fnative. See sample-app-native for a worked example. This is still considered in alpha / beta.
  • App-global context. miso's analogue of React Context β€” one value shared by every Component, seeded via startAppWithContext, read via getContext/view, updated via modifyContext/putContext.
  • Miso.Cookie β€” Cookie Store API bindings (cookieGet, cookieSet, cookieDelete, cookieChangeSub, …).
  • canvasSub β€” drives a <canvas> in a tight requestAnimationFrame loop outside the VDOM diff cycle.
  • Miso.Trace β€” a browser-console Debug.Trace analogue (trace, traceShow, traceWarn*, traceError*, …) for pure code.
  • Synchronous Miso.Fetch variants (getJSON_, postJSON_, …) plus cross-thread effects runOnBG / runOnMain for the native runtime.
  • Static components β€” mountStatic / vcomp survive the dual-thread boundary via StaticPtr.
  • New cabal flags: -faeson (define Miso.JSON in terms of Data.Aeson) and -ftext (use Data.Text for MisoString on WASM).
  • ⚠️ Breaking: View/Attribute gained type parameters, Sub gained a model parameter, Miso.Binding and parent/ROOT were removed in favor of context, Miso.Types.keyed was removed, autocomplete_ now takes MisoString. See the changelog for full migration notes.
  • Perf: eager JSVal freeing on WASM (GC pause reduction), StableName dirty-checking extended to context/props, direct main-thread event dispatch.
  • Many other fixes below, etc.

What's Changed

  • fix: Make MisoString take and length functions consistent with Data.Text by @Zer0- in #1552
  • feat: Add CookieStore API support by @dmjio in #1551
  • fix: Ensure -fssr compiles with native build by @dmjio in #1553
  • docs: note that scripts and styles are for development mode only by @dmjio in #1555
  • feat: add Lynx thread detection (onBTS / onMTS) by @dmjio in #1556
  • docs: clarify props documentation in Miso.hs by @dmjio in #1557
  • feat: Add synchronous API variants to Miso.Fetch by @dmjio in #1554
  • perf: Cache thread environment (mts/bts/web) by @dmjio in #1558
  • docs: note that stable keys preserve DOMRef by @dmjio in #1559
  • Add await to miso DSL by @Zer0- in #1560
  • Fix Miso.Fetch FFI tests: replace httpbin.org with local CORS echo server by @dmjio with @Copilot in #1561
  • Add React Context. Parameterizes Component on context. by @dmjio in #1563
  • fix: Derive Exception for JSException. by @dmjio in #1564
  • ci: Build exe:component-tests in CI. by @dmjio in #1565
  • feat: Add read-only context access within Effect by @dmjio in #1566
  • fix: drop dead code related to SSR. by @dmjio in #1567
  • feat: Generalise Miso.Util.Parser.endOfInput by @ners in #1571
  • ci: build and cache ghcNative ghc by @dmjio in #1572
  • fix: autocomplete, autocorrect, spellcheck attributes by @ners in #1575
  • fix: remove redundant import by @ners in #1576
  • feat: upstream miso-lynx into miso as Miso.Native (dual-thread) by @dmjio in #1562
  • [native] isolate bundle provenance and add a conformance fixture by @Huxpro in #1577
  • docs: warn against startApp/miso/prerender under the native flag by @dmjio in #1587
  • fix: runtime listener/doc/type cleanups from pre-1.13 review by @dmjio in #1588
  • fix: reset pendingStaticKey/pendingMainThread before plain On handlers by @dmjio in #1589
  • fix: gate key-based model recovery on liveMode by @dmjio in #1590
  • refactor: drop unused ToJSON/FromJSON context constraints by @dmjio in #1591
  • fix: error on missing domRef in MOUNT instead of synthesizing a fake parent node by @dmjio in #1592
  • docs: add VCompStatic haddock section by @dmjio in #1593
  • perf: dispatch main-thread events directly, no scratch-node/JS round-trip by @dmjio in #1594
  • feat: add misoWithContext / prerenderWithContext (context-seeding hydration entry points) by @dmjio in #1595
  • fix: Incorporate cancelAnimationFrame into rAFSub by @dmjio in #1596
  • perf: extend StableName dirty-checking to context and props by @dmjio in #1597
  • chore: prepare 1.13.0.0 release by @dmjio in #1599
  • docs: fix t' namespace prefixes that Haddock renders as literal text by @dmjio in #1600
  • Drop Miso.String.QQ by @dmjio in #1601
  • feat: Add -faeson cabal flag: define Miso.JSON in terms of Data.Aeson by @dmjio in #1602
  • Document Miso.String.QQ removal and aeson flag in 1.13 changelog by @dmjio in #1603
  • feat: Eagerly free short-lived JSVal handles in the WASM runtime by @dmjio in #1605
  • fix: register non-bubbling media events in the capture phase by @dmjio in #1609
  • docs: move VCompStatic section under VComp, link both like VNode by @dmjio in #1607
  • fix: no-op cookieStore change listener when CookieStore API is unavailable by @dmjio in #1608
  • Document #1605, #1608, #1609 in the 1.13 changelog by @dmjio in #1610
  • feat: add Miso.Trace by @ners in #1606
  • docs: document Miso.Trace in the 1.13 changelog by @dmjio in #1611
  • native: fix consumeSlideEvent_ shape; bind the layout event's real name by @dmjio in #1612
  • feat: Parameterize Sub by model, add canvasSub by @dmjio in #1613
  • wasm: add text/aeson cabal-flag support and CI coverage by @dmjio in #1614
  • docs: document #1612 native fixes in the 1.13 changelog by @dmjio in #1615
  • fix: nextSibling parity on mts / bts. by @dmjio in #1616
  • fix: fetchCore no longer double-fires the success callback when responseType is "none" by @dmjio in #1617
  • fix: native removeAttribute actually removes the attribute by @dmjio in #1619
  • fix: register mouseleave/pointerleave listeners in the capture phase by @dmjio in #1621
  • docs: fix vcomp misused as a component synonym in Miso.hs examples by @dmjio in #1623
  • fix: make MisoString drop code-point-aware on WASM, matching take/length by @dmjio in #1624
  • fix: parseInt (-ftext) mis-parses negative hex, e.g. "-0x1A" as 0 by @dmjio in #1622
  • docs: add changelog entries for recently merged fixes by @dmjio in #1626
  • fix: native BTS insertBefore crashes when the anchor is null by @dmjio in #1628
  • Fall back to Date.now() when performance is unavailable by @nanofuxion in #1627
  • fix: native decoder/method wire-shape and default-value bugs by @dmjio in #1625
  • fix: freeLifecycleHooks reads mount / unmount off the wrong VTree object by @dmjio in #1629
  • fix: native virtualization state leaked on nested removal by @dmjio in #1631
  • fix: eventJSON crashes when a decoder path resolves to null/undefined by @dmjio in #1630

New Contributors

Full Changelog: 1.12.0...1.13.0