# Release 0.15.0

**URL:** https://discuss.prosemirror.net/t/release-0-15-0/519
**Category:** Announce
**Created:** [December 9, 2016, 11:40pm UTC](https://discuss.prosemirror.net/t/release-0-15-0/519 "2016-12-09T23:40:57Z")
**Posts on this page:** 6
**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: [December 9, 2016, 11:40pm UTC](https://discuss.prosemirror.net/t/release-0-15-0/519/1 "2016-12-09T23:40:57Z")

</div>

Only two weeks after 0.14.0! Things are really starting to feel _stable_… which I guess is about time.

The main change in this release is that a bunch more things (typing, in-textblock backspacing) are left to the browser, and ProseMirror takes care _not_ to re-render content when it doesn’t have to. Which goes exactly against the original concept of ProseMirror (‘never trust the browser, we’ll do it ourselves’), but more and more issues came up where browser or platform features, such as spell-check, long-press to type character variants on OS, double-space for a period on iOS, were broken because the browser and/or the OS didn’t realize what was going on.

So for relatively uncontroversial functionality (there’s not too much disagreement on what should happen to your document when you type a character), the editor now takes a hands-off approach. This is not without danger, and is likely going to cause some new bugs and issues, but I feel it’s a more promising route than continuing to throw up my hands and say ‘nothing I can do’ for the various broken native editing features.

# Release Notes

## [prosemirror-model](http://prosemirror.net/version/2016.12.10.html#model) 0.15.0 (2016-12-10)

### Breaking changes

`ResolvedPos.atNodeBoundary` is deprecated and will be removed in the next release. Use `textOffset > 0` instead.

### New features

Parse rules associated with a schema can now specify a [`priority`](http://prosemirror.net/version/2016.12.10.html#model.ParseRule.priority) to influence the order in which they are applied.

Resolved positions have a new getter [`textOffset`](http://prosemirror.net/version/2016.12.10.html#model.ResolvedPos.textOffset) to find their position within a text node (if any).

## [prosemirror-transform](http://prosemirror.net/version/2016.12.10.html#transform) 0.15.0 (2016-12-10)

### Bug fixes

Fix bug where pasted/inserted content would sometimes get incorrectly closed at the right side.

## [prosemirror-state](http://prosemirror.net/version/2016.12.10.html#state) 0.15.0 (2016-12-10)

### Breaking changes

Selection actions no longer scroll the new selection into view by default (they never were supposed to, but due to a bug they did). Add a `scrollIntoView` property to the action to get this behavior.

## [prosemirror-view](http://prosemirror.net/version/2016.12.10.html#view) 0.15.0 (2016-12-10)

### Breaking changes

The editor view no longer wraps its editable DOM element in a wrapper element. The `ProseMirror` CSS class now applies directly to the editable element. The `ProseMirror-content` CSS class is still present for ease of upgrading but will be dropped in the next release.

The editor view no longer draws a drop cursor when dragging content over the editor. The new [`prosemirror-dropcursor`](https://github.com/prosemirror/prosemirror-dropcursor) module implements this as a plugin.

### Bug fixes

Simple typing and backspacing now gets handled by the browser without ProseMirror redrawing the touched nodes, making spell-checking and various platform-specific input tricks (long-press on OS X, double space on iOS) work in the editor.

Improve tracking of DOM nodes that have been touched by user changes, so that [`updateState`](http://prosemirror.net/version/2016.12.10.html#view.EditorView.updateState) can reliably fix them.

Changes to the document that happen while dragging editor content no longer break moving of the content.

Adding or removing a mark directly in the DOM (for example with the bold/italic buttons in iOS’ context menu) now produces mark steps, rather than replace steps.

Pressing backspace at the start of a paragraph on Android now allows key handlers for backspace to fire.

Toggling a mark when there is no selection now works better on mobile platforms.

### New features

Introduces an [`endOfTextblock`](http://prosemirror.net/version/2016.12.10.html#view.EditorView.endOfTextblock) method on views, which can be used to find out in a bidi- and layout-aware way whether the selection is on the edge of a textblock.

## [prosemirror-commands](http://prosemirror.net/version/2016.12.10.html#commands) 0.15.0 (2016-12-10)

### Breaking changes

Drops suppport for `delete(Char|Word)(Before|After)` and `move(Back|For)ward`, since we are now letting the browser handle those natively.

### Bug fixes

The [`joinForward`](http://prosemirror.net/version/2016.12.10.html#commands.joinForward) and [`joinBackward`](http://prosemirror.net/version/2016.12.10.html#commands.joinBackward) commands can now strip out markup and nodes that aren’t allowed in the joined node.

### New features

A new command [`exitCode`](http://prosemirror.net/version/2016.12.10.html#commands.exitCode) allows a user to exit a code block by creating a new paragraph below it.

The [`joinForward`](http://prosemirror.net/version/2016.12.10.html#commands.joinForward) and [`joinBackward`](http://prosemirror.net/version/2016.12.10.html#commands.joinBackward) commands now use a bidirectional-text-aware way to determine whether the cursor is at the proper side of its parent textblock when they are passed a view.

---

<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: [December 10, 2016, 10:10am UTC](https://discuss.prosemirror.net/t/release-0-15-0/519/2 "2016-12-10T10:10:39Z")

</div>

Great release! I’m really close to finishing our transition to the latest version and am looking forward to 1.0 🙂 (in production we’re still on 0.10, but I’ve been keeping a dev branch in sync with master for some time now).

Oh, and it looks like you have pasted the release notes twice.

---

<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: [December 10, 2016, 10:27am UTC](https://discuss.prosemirror.net/t/release-0-15-0/519/3 "2016-12-10T10:27:31Z")

</div>

> [@kiejo](#):
>
> Oh, and it looks like you have pasted the release notes twice.

Woops. Doing releases late at night is asking for trouble. Fixed now.

---

<div class="post-metadata">

### Author: ![ericandrewlewis](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/ericandrewlewis/32/59_2.png) [@ericandrewlewis](https://discuss.prosemirror.net/u/ericandrewlewis)
#### Post date: [December 10, 2016, 6:17pm UTC](https://discuss.prosemirror.net/t/release-0-15-0/519/5 "2016-12-10T18:17:02Z")

</div>

Congrats on the release! 🎊

> The main change in this release is that a bunch more things (typing, in-textblock backspacing) are left to the browser, and ProseMirror takes care not to re-render content when it doesn’t have to.

Can you point to any expand on the general process here a bit more, or point to an example in code where the browser mutates content and ProseMirror updates afterwards?

---

<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: [December 10, 2016, 8:36pm UTC](https://discuss.prosemirror.net/t/release-0-15-0/519/6 "2016-12-10T20:36:00Z")

</div>

> [@ericandrewlewis](#):
>
> Can you point to any expand on the general process here a bit more, or point to an example in code where the browser mutates content and ProseMirror updates afterwards?

The editor still has its own conception of what the DOM _should_ look like for a given document. For simple text changes, that will often match what the browser did, so it doesn’t have to do anything. But if you add or remove marks, for example, it’ll end up adjusting the DOM, or if you press backspace on Android, where we can’t capture the keydown event because none is fired, you’ll get the native behavior first, which is then fixed up by ProseMirror.

---

<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: [December 13, 2016, 11:23am UTC](https://discuss.prosemirror.net/t/release-0-15-0/519/7 "2016-12-13T11:23:44Z")

</div>

@typicalprosemiruser I wasn’t able to reproduce what you describe, though I did run into another issue with drag/drop on Firefox (reported [here](https://bugzilla.mozilla.org/show_bug.cgi?id=1323170), still looking for a workaround). In general, if you run into problems, please open issues on the issue tracker.
