# Release 0.11.1

**URL:** https://discuss.prosemirror.net/t/release-0-11-1/418
**Category:** Announce
**Created:** [September 21, 2016, 2:36pm UTC](https://discuss.prosemirror.net/t/release-0-11-1/418 "2016-09-21T14:36:38Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![marijn](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/marijn/32/15_2.png) [@marijn](https://discuss.prosemirror.net/u/marijn)
#### Post date: [September 21, 2016, 2:36pm UTC](https://discuss.prosemirror.net/t/release-0-11-1/418/1 "2016-09-21T14:36:38Z")

</div>

Phew. I just uploaded versions of the new, modular ProseMirror system. The core now consist of four NPM packages (model, view, state, transform), with an additonal 8 extra packages (keymap, inputrules, history, collab, commands, schema-basic, schema-list, schema-table) being fully supported by me. You’ll probably need at least some of those to set up your editor.

The other main change in this release is a move towards a ‘linear data flow’, or ‘reactive’, or whatever you want to call it, architecture. See [this thread](https://discuss.prosemirror.net/t/what-im-working-on/365) for more background. This means that you’ll have to set up your editor a little differently, and if you’re not already using that style it might look somewhat weird, but it should be just as powerful as what we used to have, and a lot cleaner.

Some functionality (keymaps, undo history) was moved out of the core into plugins.

Moving to this release might not be immediately viable for you, as it drops a few features:

- `markRange` is temporarily gone. A revised version of this is going to be part of the next release, but I decided not to hold up this release any longer. This is my next focus—I have the new system largely designed already, and it’s going to be a lot better than `markRange`.

- The tooltip module is gone. If someone feels like maintaining a tooltip, I recommend forking the old code an putting it somewhere. I’ve realized this kind of UI stuff is too far out of my area of interest to continue maintaining it.

- The [menu functionality](https://github.com/prosemirror/prosemirror-menu), [example setup](https://github.com/prosemirror/prosemirror-example-setup), and [Markdown support](https://github.com/prosemirror/prosemirror-markdown) are still distributed by me, as I need them for my demos, but are no longer fully supported, since they aren’t the main focus of the library (which is big enough already).

Setting this all up was quite a project, and it’s not unlikely that I screwed something up. But now that the mechanisms are in place, subsequent releases should be smaller and faster again.

Here are the release notes:

## [prosemirror-model](http://prosemirror.net/version/2016.09.21.html#model) 0.11.0 (2016-09-21)

### Breaking changes

Moved into a separate module.

The JSON representation of [marks](http://prosemirror.net/version/2016.09.21.html#model.Mark) has changed from `{"_": "type", "attr1": "value"}` to `{"type": "type", "attrs": {"attr1": "value"}}`, where `attrs` may be omitted when the mark has no attributes.

Mark-related JSON methods now live on the [`Mark` class](http://prosemirror.net/version/2016.09.21.html#model.Mark%5EfromJSON).

The way node and mark types in a schema are defined was changed from defining subclasses to passing plain objects ([`NodeSpec`](http://prosemirror.net/version/2016.09.21.html#model.NodeSpec) and [`MarkSpec`](http://prosemirror.net/version/2016.09.21.html#model.MarkSpec)).

DOM serialization and parsing logic is now done through dedicated objects ([`DOMSerializer`](http://prosemirror.net/version/2016.09.21.html#model.DOMSerializer) and [`DOMParser`](http://prosemirror.net/version/2016.09.21.html#model.DOMParser)), rather than through the schema. It is now possible to define alternative parsing and serializing strategies without touching the schema.

### New features

The [`Slice`](http://prosemirror.net/version/2016.09.21.html#model.Slice) class now has an [`eq` method](http://prosemirror.net/version/2016.09.21.html#model.Slice.eq).

The [`Node.marksAt`](http://prosemirror.net/version/2016.09.21.html#model.Node.marksAt) method got a second parameter to indicate you’re interested in the marks _after_ the position.

## [prosemirror-transform](http://prosemirror.net/version/2016.09.21.html#transform) 0.11.0 (2016-09-21)

### Breaking changes

Moved into a separate module.

The `Remapping` class was renamed to `Mapping` and works differently (simpler, grows in only one direction, and has provision for mapping through only a part of it).

[`Transform`](http://prosemirror.net/version/2016.09.21.html#transform.Transform) objects now build up a `Mapping` instead of an array of maps.

`PosMap` was renamed to [`StepMap`](http://prosemirror.net/version/2016.09.21.html#transform.StepMap) to make it clearer that this applies only to a single step (as opposed to [`Mapping`](http://prosemirror.net/version/2016.09.21.html#transform.Mapping).

The arguments to [`canSplit`](http://prosemirror.net/version/2016.09.21.html#transform.canSplit) and [`split`](http://prosemirror.net/version/2016.09.21.html#transform.Transform.split) were changed to make it possible to specify multiple split-off node types for splits with a depth greater than 1.

Rename `joinable` to [`canJoin`](http://prosemirror.net/version/2016.09.21.html#transform.canJoin).

### New features

Steps can now be [merged](http://prosemirror.net/version/2016.09.21.html#transform.Step.merge) in some circumstances, which can be useful when storing a lot of them.

## [prosemirror-state](http://prosemirror.net/version/2016.09.21.html#state) 0.11.0 (2016-09-21)

### Breaking changes

New module inheriting the [`Selection`](http://prosemirror.net/version/2016.09.21.html#state.Selection) and [`EditorTransform`](http://prosemirror.net/version/2016.09.21.html#state.EditorTransform) abstraction, along with the persistent [state](http://prosemirror.net/version/2016.09.21.html#state.EditorState) value that is now separate from the display logic, and the [plugin](http://prosemirror.net/version/2016.09.21.html#state.Plugin) system.

`Selection.findAtStart`/`End` was renamed to [`Selection.atStart`](http://prosemirror.net/version/2016.09.21.html#state.Selection%5EatStart)/[`End`](http://prosemirror.net/version/2016.09.21.html#state.Selection%5EatEnd), and `Selection.findNear` to [`Selection.near`](http://prosemirror.net/version/2016.09.21.html#state.Selection%5Enear).

## [prosemirror-view](http://prosemirror.net/version/2016.09.21.html#view) 0.11.0 (2016-09-21)

### Breaking changes

Moved into a separate module from the old `edit` submodule. Completely new approach to managing the editor’s DOM representation and input.

Event handlers and options are now replaced by [props](http://prosemirror.net/version/2016.09.21.html#view.EditorProps). The view’s state is now ‘shallow’, represented entirely by a set of props, one of which holds an editor state value from the [state](http://prosemirror.net/version/2016.09.21.html#state) module.

When the user interacts with the editor, it will pass an [action](http://prosemirror.net/version/2016.09.21.html#state.Action) to its [`onAction`](http://prosemirror.net/version/2016.09.21.html#view.EditorProps.onAction) prop, which is responsible for triggering an view update.

The `markRange` system was dropped, to be replaced in the next release by a ‘decoration’ system.

There is no keymap support in the view module anymore. Use a [keymap](http://prosemirror.net/version/2016.09.21.html#keymap) plugin for that.

The undo [history](http://prosemirror.net/version/2016.09.21.html#history) is now a separate plugin.

CSS needed by the editor is no longer injected implicitly into the page. Instead, you should arrange for the `style/prosemirror.css` file to be loaded into your page.

### New features

The DOM [parser](http://prosemirror.net/version/2016.09.21.html#model.DOMParser) and [serializer](http://prosemirror.net/version/2016.09.21.html#model.DOMSerializer) used to interact with the visible DOM and the clipboard can now be customized through [props](http://prosemirror.net/version/2016.09.21.html#view.EditorProps).

You can now provide a catch-all DOM [event handler](http://prosemirror.net/version/2016.09.21.html#view.EditorProps.handleDOMEvent) to get a first chance at handling DOM events.

The [`onUnmountDOM`](http://prosemirror.net/version/2016.09.21.html#view.EditorProps.onUnmountDOM) can be used to be notified when a piece of the document DOM is thrown away (in case cleanup is needed).

## [prosemirror-keymap](http://prosemirror.net/version/2016.09.21.html#keymap) 0.11.0 (2016-09-21)

### Breaking changes

New module, takes the same role as the old built-in keymap support in the `ProseMirror` class.

## [prosemirror-inputrules](http://prosemirror.net/version/2016.09.21.html#inputrules) 0.11.0 (2016-09-21)

### Breaking changes

Moved into a separate module.

You can now add this plugin multiple times to add different sets of rules to an editor (if you want). It is not possible to change the set of rules of an existing plugin instance.

[Rules](http://prosemirror.net/version/2016.09.21.html#inputrules.InputRule) no longer take a `filter` argument.

The signature of the `handler` callback for a [rule](http://prosemirror.net/version/2016.09.21.html#inputrules.InputRule) changed.

## [prosemirror-history](http://prosemirror.net/version/2016.09.21.html#history) 0.11.0 (2016-09-21)

### Breaking changes

Moved into a separate module. Now acts as a plugin that can be omitted or replaced by a different implementation if desired.

Merging subsequent changes into a single undo ‘event’ is now done by proximity in the document (the changes must touch) rather than in time. This will probably have to be further refined.

## [prosemirror-collab](http://prosemirror.net/version/2016.09.21.html#collab) 0.11.0 (2016-09-21)

### Breaking changes

Moved into a separate module.

Interface [adjusted](http://prosemirror.net/version/2016.09.21.html#collab) to work with the new [plugin](http://prosemirror.net/version/2016.09.21.html#state.Plugin) system.

### New features

When receiving changes, the module now [generates](http://prosemirror.net/version/2016.09.21.html#collab.receiveAction) a regular [transform action](http://prosemirror.net/version/2016.09.21.html#state.TransformAction) instead of hard-setting the editor’s document. This solves problematic corner cases for code keeping track of the document by listening to transform actions.

## [prosemirror-commands](http://prosemirror.net/version/2016.09.21.html#commands) 0.11.0 (2016-09-21)

### Breaking changes

Moved into a separate module.

The interface for command functions was changed to work with the new [state](http://prosemirror.net/version/2016.09.21.html#state.EditorState)/[action](http://prosemirror.net/version/2016.09.21.html#state.Action) abstractions.

## [prosemirror-schema-basic](http://prosemirror.net/version/2016.09.21.html#schema-basic) 0.11.0 (2016-09-21)

### Breaking changes

Moved into a separate module.

No longer exports the [specs](http://prosemirror.net/version/2016.09.21.html#model.NodeSpec) for the nodes and marks separately, since they are now plain objects, not subclasses. They are still exported through [nodes](http://prosemirror.net/version/2016.09.21.html#schema-basic.nodes) and [marks](http://prosemirror.net/version/2016.09.21.html#schema-basic.marks) objects.

The list-related nodes were moved to the [schema-list](http://prosemirror.net/version/2016.09.21.html#schema-list) module.

## [prosemirror-schema-list](http://prosemirror.net/version/2016.09.21.html#schema-list) 0.11.0 (2016-09-21)

### Breaking changes

New module combining the node [specs](http://prosemirror.net/version/2016.09.21.html#model.NodeSpec) from [schema-basic](http://prosemirror.net/version/2016.09.21.html#schema-basic), and the list-related [commands](http://prosemirror.net/version/2016.09.21.html#commands) from the commands module.

## [prosemirror-schema-table](http://prosemirror.net/version/2016.09.21.html#schema-table) 0.11.0 (2016-09-21)

### Breaking changes

Moved into a separate module.

Node types adjusted to the new [node spec](http://prosemirror.net/version/2016.09.21.html#model.NodeSpec) interface.

Commands adjusted to the new [command] ([http://prosemirror.net/version/2016.09.21.html#commands](http://prosemirror.net/version/2016.09.21.html#commands)) interface.

---

<div class="post-metadata">

### Author: ![wes-r](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/wes-r/32/77_2.png) [@wes-r](https://discuss.prosemirror.net/u/wes-r)
#### Post date: [September 21, 2016, 2:58pm UTC](https://discuss.prosemirror.net/t/release-0-11-1/418/2 "2016-09-21T14:58:21Z")

</div>

Congrats on the release! The break down of different modules looks reasonable and should help simplify contributions as it makes it much easier to reason about individual aspects. I’m a bit biased, but I’m happy to hear some of the UI (menu/tooltips) will be taking more of a backseat.

I excitedly await the `markRange` replacement which I currently use for spell correction markup. Once that’s in I’ll be able to upgrade and tackle the integration of this new setup.

---

<div class="post-metadata">

### Author: ![rsaccon](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/rsaccon/32/70_2.png) [@rsaccon](https://discuss.prosemirror.net/u/rsaccon)
#### Post date: [September 21, 2016, 3:24pm UTC](https://discuss.prosemirror.net/t/release-0-11-1/418/3 "2016-09-21T15:24:02Z")

</div>

Amazing !!!

(the website demos are currently not working )

---

<div class="post-metadata">

### Author: ![marijn](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/marijn/32/15_2.png) [@marijn](https://discuss.prosemirror.net/u/marijn)
#### Post date: [September 21, 2016, 6:18pm UTC](https://discuss.prosemirror.net/t/release-0-11-1/418/4 "2016-09-21T18:18:24Z")

</div>

> [@rsaccon](#):
>
> (the website demos are currently not working )

Some of the dependencies weren’t properly compiled down to ES5, so if your browser isn’t supporting ES6 yet that might have been the problem. I’ve fixed that now. If there’s still a problem, could you tell me which browser and what you see in the console?

(Or you might have seen [this issue](https://github.com/ProseMirror/website/issues/36).)

---

<div class="post-metadata">

### Author: ![rsaccon](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/rsaccon/32/70_2.png) [@rsaccon](https://discuss.prosemirror.net/u/rsaccon)
#### Post date: [September 21, 2016, 6:30pm UTC](https://discuss.prosemirror.net/t/release-0-11-1/418/5 "2016-09-21T18:30:13Z")

</div>

Yes, but by now it seems to be fixed already !

---

<div class="post-metadata">

### Author: ![kiejo](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/kiejo/32/64_2.png) [@kiejo](https://discuss.prosemirror.net/u/kiejo)
#### Post date: [September 22, 2016, 6:44am UTC](https://discuss.prosemirror.net/t/release-0-11-1/418/6 "2016-09-22T06:44:01Z")

</div>

I was looking forward to this release! Thanks for putting in all the effort to make ProseMirror better witch each release 🙂 I’ll upgrade as soon as the `markRange` functionality is back in place as I currently depend on it.

---

<div class="post-metadata">

### Author: ![matthieubellon](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/matthieubellon/32/234_2.png) [@matthieubellon](https://discuss.prosemirror.net/u/matthieubellon)
#### Post date: [September 22, 2016, 9:02am UTC](https://discuss.prosemirror.net/t/release-0-11-1/418/7 "2016-09-22T09:02:55Z")

</div>

Great work indeed. Really excited to think all we can build on top of that. And same here, we rely heavily on markRange and wait for its come back before upgrading
