Skip to content

Releases: odoo/owl

v1.0.0-alpha3

13 Nov 14:45
Compare
Choose a tag to compare
  • component: throw error if mounted on invalid target
  • store: throw error if no store found
  • doc: add a tutorial
  • hooks: set el on refs (from useRef) all the time, even if target is a component
  • fix: component concurrent rendering issue
  • fix: properly validates optional types in object props
  • component: remove renderBeforeRemount option for mount (it always renders)
  • component: expose scheduler instance

v1.0.0-alpha2

01 Nov 08:14
Compare
Choose a tag to compare

1.0.0-alpha2

The alpha1 release was a good opportunity to discuss the external component
API, and it was discovered that for various reasons, it was not optimal, and
could be improved.

Root components and environment

Root components now takes their environment from their constructor:

// Before:
owl.config.env = ...;
const app = new App();

// now
App.env = ...;
const app = new App();

Root components and props

We removed the assignation to props object from root components, since it
was not a "real" props object in the sense that it was not managed by Owl. But
it is apparent that it makes it harder to test components in the most obvious
way:

// this did not work in 1.0.0-alpha, but works now:
const myComponent = new MyComponent(null, testProps);
await myComponent.mount(fixture);
// rest of test

So, while it made sense to do that, the ease of testing components is also
very important, and it was decided to go back to the previous behaviour.

v0.24.1

28 Oct 13:59
Compare
Choose a tag to compare

v0.24.1

v0.24.0

25 Oct 15:09
Compare
Choose a tag to compare

v0.24.0

The "concurrency" release: Owl has now a brand new rendering pipeline, with a
scheduler, and a full rethink of the fiber class. This means that:

  • renderings can be (partially) cancelled
  • new renderings can remap themselves into parent renderings
  • more robust concurrency management in general
  • dom is updated every frame if necessary: less work is done in some cases

This release also brings other features:

Component

  • fix: many issues with internal template key
  • fix: do not validate props twice
  • imp: t-on directive now supports inline statements
  • imp: t-on directive now supports empty handler
  • ref: new rendering pipeline
  • fix: many subtle concurrency issues

QWeb

  • fix: properly calls directive finalizers in all cases (so, t-esc with t-if works now)
  • fix: handle variable expressions in if conditions
  • fix: do not format expression twice in t-ifs
  • rem: remove t-asyncroot directive (see AsyncRoot component)

Misc

  • add: new AsyncRoot component (to replace t-asyncroot directive)

Context

  • fix: much stronger concurrency model

Utils

  • rename loadTemplates into loadFile

v0.23.0

16 Oct 20:41
Compare
Choose a tag to compare

v0.23.0

Component

  • doc: add info on svg components
  • remove t-mounted directive (breaking change)
  • support components reduced to a slot

Hooks

  • add useSubEnv hook
  • add onWillPatch and onPatched hooks
  • fix onWillUnmount bug
  • add useContext hook
  • add onWillStart and onWillUpdateProps
  • add useStore, useDispatch and useGetters hooks

QWeb

  • remove updateEnv
  • fix issue with event modifier with arg in t-foreach
  • fix: allow combining t-esc with other directives
  • fix: properly handle t-raw in various situations
  • fix: properly handle xml comments

Misc

  • add Context class
  • remove ConnectedComponent (replaced by hooks)

Playground

  • slightly improve default text
  • save changes to local storage
  • update todoapp example

v0.22.0

01 Oct 19:14
Compare
Choose a tag to compare

0.22.0

The hooks release.

This release contains a few breaking changes necessary to improve the API. It is
actually very nice to work with hooks in Owl.

The main breaking change is that now components do not have a special state
key, which is observed. If a component needs reactive state, it has to explicitely
import the useState hook:

class C extends Component {
    state = useState({some: 'value'});
    ...
}

Changes

  • component: reorganize the rendering system with the notion of fiber
  • component: support fully dynamic t-component directives
  • component tags: allow injecting values in xml tag string
  • qweb fix: properly support svg
  • components: add hooks mechanism (breaking change)
  • hooks: implement useRef hook (breaking change)

v0.21.0

12 Sep 12:28
Compare
Choose a tag to compare

v0.21.0

Not many changes, but they will significantly improve the developer experience. The main idea is that we are getting closer to having nice single file components.

Changes

  • fix: qweb crash in some cases involving t-call, multiple sub nodes and one text node
  • component: the components key is now static (breaking change)
  • component: support dynamic root nodes (either subcomponent or dom nodes) and switching between them
  • component: add support for dynamic props with t-props
  • router: replace the t-routecomponent directive with RouterComponent (breaking change)
  • component: make the template key static (breaking change)
  • qweb: add QWeb.registerTemplate method
  • qweb: rename register method to registerComponent (breaking change)
  • tags: introduce the xml tag

v0.20.0

05 Sep 12:47
Compare
Choose a tag to compare

v0.20.0

Toward stability...

This release does not really introduce breaking changes, nor add new features. It however fixes a lot of small and not so small issues.

Changes

  • router: better support for hash mode
  • router: update app if parameterized route changes
  • router: properly react on hashchanges
  • component: solve tricky concurrency issue (with various concurrent renderings)
  • component: fix many issues with internal component reconciliation algorithm
  • router: properly handle popstate event
  • component: make t-model work with select tags (for initial non empty rendering)
  • component: make t-model work with sub state keys
  • qweb: allow recursive templates t-calls

v0.19.0

28 Aug 10:01
Compare
Choose a tag to compare

v0.19.0

This release has pretty big changes in the way the store and connected components
works.

Changes

  • QWeb: support XML documents (already parsed) as argument to the addTemplates method (in
    addition to strings)
  • ConnectedComponent: separate props into props and storeProps
  • ConnectedComponent: add dispatch method
  • Component: simplify render method signature (and rendering process)
  • Store: merge actions and mutations
  • router: add documentation
  • playground: add window management system example
  • Component: improve mount/remount behaviour, add renderBeforeRemount argument
    to mount

v0.18.0

22 Aug 13:05
Compare
Choose a tag to compare

v0.18.0

Big release, with a lot of internal refactorings, and the first release of a Router.

Changes

  • owl: move exported value around: Observer and EventBus are now in owl.core, Store and ConnectedComponent are now in owl.store
  • qweb fix: allow t-if with t-call
  • component fix: properly handle defaultProps in connected components
  • qweb: add forceUpdate method
  • component fix: solve tricky concurrency issue
  • observer: complete rewrite using Proxy
  • observer: remove set and delete methods
  • component imp: allow multiple calls to mount and unmount
  • owl router: add a first full implementation of a client router