dioxus/notes/CHANGELOG.md
Jonathan Kelley 8c541f66d5 wip: todos
2021-04-01 21:44:18 -04:00

3.3 KiB

Dioxus v0.1.0

Welcome to the first iteration of the Dioxus Virtual DOM! This release brings support for:

  • Web via WASM
  • Desktop via webview integration
  • Server-rendering with custom Display Impl
  • Liveview (experimental)
  • Mobile (experimental)
  • State management
  • Build CLI

Project: Initial VDOM support (TBD)

Get the initial VDom + Event System + Patching + Diffing + Component framework up and running Get a demo working using just the web

  • (Core) Migrate virtual node into new VNode type
  • (Core) Arena allocate VNodes
  • (Core) Allow VNodes to borrow arena contents
  • (Core) Introduce the VDOM and patch API for 3rd party renderers
  • (Core) Implement lifecycle
  • (Core) Implement an event system
  • (Core) Implement child nodes, scope creation
  • (Core) Implement dirty tagging and compression

Project: QOL

Make it easier to write components

  • (Macro) Tweak event syntax to not be dependent on wasm32 target (just return regular closures which get boxed/alloced)
  • (Macro) Tweak component syntax to accept a new custom element
  • (Macro) Allow components to specify their props as function args (not going to do)

Project: Hooks + Context + Subscriptions (TBD)

Implement the foundations for state management

  • Implement context object
  • Implement use_state (rewrite to use the use_reducer api like rei)
  • Implement use_ref
  • Implement use_context (only the API, not the state management solution)
  • Implement use_reducer (WIP)

Project: String Render (TBD)

Implement a light-weight string renderer with basic caching

  • (Macro) Make VText nodes automatically capture and format IE allow "Text is {blah}"
  • (SSR) Implement stateful 3rd party string renderer

Project: Web_sys renderer (TBD)

  • WebSys edit interpreter
  • Event system using async channels
  • Implement conversion of all event types into synthetic events

Project: Web-View 🤲 🍨

Proof of concept: stream render edits from server to client

  • Prove that the diffing and patching framework can support patch streaming

Project: Examples

Get all the examples

  • (Examples) Tide example with templating

Project: State management

Get some global state management installed with the hooks + context API

Project: Concurrency (TBD)

Ensure the concurrency model works well, play with lifetimes to check if it can be multithreaded + halted ?

Project: Mobile exploration

Project: Live-View 🤲 🍨

Combine the server and client into a single file :)

Project: Sanitization (TBD)

Improve code health

  • (Macro) Clippy sanity for html macro
  • (Macro) Error sanitization

Outstanding todos:

anything missed so far

  • keys on components
  • Allow paths for components
  • todo mvc
  • Make events lazy (use traits + Box)
  • attrs on elements should implement format_args
  • Beef up the dioxus CLI tool
  • Tweak macro parsing for better errors
  • make ssr follow HTML spec (ish)
  • dirty tagging, compression
  • fix keys on elements
  • miri tests
  • code health
  • all synthetic events filled out
  • doublecheck event targets and stuff
  • Documentation overhaul
  • Website

lower priorty features

  • fragments
  • node refs (postpone for future release?)
  • styling built-in (future release?)
  • key handler?
  • FC macro