Releases: odoo/owl
v1.0.0-alpha3
- component: throw error if mounted on invalid target
- store: throw error if no store found
- doc: add a tutorial
- hooks: set
el
on refs (fromuseRef
) 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 formount
(it always renders) - component: expose scheduler instance
v1.0.0-alpha2
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
v0.24.0
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
witht-if
works now) - fix: handle variable expressions in if conditions
- fix: do not format expression twice in
t-ifs
- rem: remove
t-asyncroot
directive (seeAsyncRoot
component)
Misc
- add: new
AsyncRoot
component (to replacet-asyncroot
directive)
Context
- fix: much stronger concurrency model
Utils
- rename
loadTemplates
intoloadFile
v0.23.0
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
andonPatched
hooks - fix
onWillUnmount
bug - add
useContext
hook - add
onWillStart
andonWillUpdateProps
- add
useStore
,useDispatch
anduseGetters
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
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
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 withRouterComponent
(breaking change) - component: make the
template
key static (breaking change) - qweb: add
QWeb.registerTemplate
method - qweb: rename
register
method toregisterComponent
(breaking change) - tags: introduce the
xml
tag
v0.20.0
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 withselect
tags (for initial non empty rendering) - component: make
t-model
work with sub state keys - qweb: allow recursive templates t-calls
v0.19.0
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
intoprops
andstoreProps
- ConnectedComponent: add
dispatch
method - Component: simplify
render
method signature (and rendering process) - Store: merge
actions
andmutations
- router: add documentation
- playground: add window management system example
- Component: improve mount/remount behaviour, add
renderBeforeRemount
argument
tomount
v0.18.0
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
andEventBus
are now inowl.core
,Store
andConnectedComponent
are now inowl.store
- qweb fix: allow
t-if
witht-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
anddelete
methods - component imp: allow multiple calls to
mount
andunmount
- owl router: add a first full implementation of a client router