diff --git a/AUTHORS b/AUTHORS
index 866c78f8423dfcae72501f3857b18b9cff61535a..bc894e9f7ade322f7685c8c6f1d3327b96fe69ea 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -68,6 +68,7 @@ Apollo Zhu
 AQNOUCH Mohammed
 areos
 Arnab Bose
+Arthur Müller
 as3boyan
 atelierbram
 AtomicPages LLC
@@ -102,6 +103,7 @@ Brett Zamir
 Brian Grinstead
 Brian Sletten
 Bruce Mitchener
+Bryan Massoth
 Caitlin Potter
 Calin Barbat
 callodacity
@@ -180,6 +182,7 @@ Enam Mijbah Noor
 Eric Allam
 Erik Welander
 eustas
+Fabien Dubosson
 Fabien O'Carroll
 Fabio Zendhi Nagao
 Faiza Alsaied
@@ -205,6 +208,7 @@ Gary Sheng
 Gautam Mehta
 Gavin Douglas
 gekkoe
+Geordie Hall
 geowarin
 Gerard Braad
 Gergely Hegykozi
@@ -302,6 +306,7 @@ Jon Malmaud
 Jon Sangster
 Joost-Wim Boekesteijn
 Joseph Pecoraro
+Josh Barnes
 Josh Cohen
 Josh Soref
 Joshua Newman
@@ -324,6 +329,7 @@ Ken Newman
 ken restivo
 Ken Rockot
 Kevin Earls
+Kevin Muret
 Kevin Sawicki
 Kevin Ushey
 Klaus Silveira
@@ -510,6 +516,7 @@ Roberto Abdelkader Martínez Pérez
 robertop23
 Robert Plummer
 Rrandom
+Rrrandom
 Ruslan Osmanov
 Ryan Prior
 sabaca
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 07ed0295e5b4e937bfa3f665c3471be304855c10..54c2578e12fec5ad00b6a9fe87ac2757a81be245 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,45 @@
+## 5.24.0 (2017-02-20)
+
+### Bug fixes
+
+A cursor directly before a line-wrapping break is now drawn before or after the line break depending on which direction you arrived from.
+
+Visual cursor motion in line-wrapped right-to-left text should be much more correct.
+
+Fix bug in handling of read-only marked text.
+
+[shell mode](http://codemirror.net/mode/shell/): Properly tokenize nested parentheses.
+
+[python mode](http://codemirror.net/mode/python/): Support underscores in number literals.
+
+[sass mode](http://codemirror.net/mode/sass/): Uses the full list of CSS properties and keywords from the CSS mode, rather than defining its own incomplete subset.
+
+[css mode](http://codemirror.net/mode/css/): Expose `lineComment` property for LESS and SCSS dialects. Recognize vendor prefixes on pseudo-elements.
+
+[julia mode](http://codemirror.net/mode/julia/): Properly indent `elseif` lines.
+
+[markdown mode](http://codemirror.net/mode/markdown/): Properly recognize the end of fenced code blocks when inside other markup.
+
+[scala mode](http://codemirror.net/mode/clike/): Improve handling of operators containing <code>#</code>, <code>@</code>, and <code>:</code> chars.
+
+[xml mode](http://codemirror.net/mode/xml/): Allow dashes in HTML tag names.
+
+[javascript mode](http://codemirror.net/mode/javascript/): Improve parsing of async methods, TypeScript-style comma-separated superclass lists.
+
+[indent-fold addon](http://codemirror.net/demo/folding.html): Ignore comment lines.
+
+### New features
+
+Positions now support a `sticky` property which determines whether they should be associated with the character before (value `"before"`) or after (value `"after"`) them.
+
+[vim bindings](http://codemirror.net/mode/demo/vim.html): Make it possible to remove built-in bindings through the API.
+
+[comment addon](http://codemirror.net/doc/manual.html#addon_comment): Support a per-mode <code>useInnerComments</code> option to optionally suppress descending to the inner modes to get comment strings.
+
+### Breaking changes
+
+The [sass mode](http://codemirror.net/mode/sass/) now depends on the [css mode](http://codemirror.net/mode/css/).
+
 ## 5.23.0 (2017-01-19)
 
 ### Bug fixes
diff --git a/doc/manual.html b/doc/manual.html
index 55f4ffa732bdd20339d0a595bd2f3963bc1ca597..912f0446e2059bfa30d3d7cca5c7eb776a83737e 100644
--- a/doc/manual.html
+++ b/doc/manual.html
@@ -69,7 +69,7 @@
 <section class=first id=overview>
     <h2 style="position: relative">
       User manual and reference guide
-      <span style="color: #888; font-size: 1rem; position: absolute; right: 0; bottom: 0">version 5.23.0</span>
+      <span style="color: #888; font-size: 1rem; position: absolute; right: 0; bottom: 0">version 5.24.0</span>
     </h2>
 
     <p>CodeMirror is a code-editor component that can be embedded in
diff --git a/doc/releases.html b/doc/releases.html
index 69c0e66b10ee28302242cd7fba6c7422aa9640b3..1404a465cd1eed3f769c6c3f9786491765640fd4 100644
--- a/doc/releases.html
+++ b/doc/releases.html
@@ -30,6 +30,27 @@
 
   <h2>Version 5.x</h2>
 
+  <p class="rel">20-02-2017: <a href="http://codemirror.net/codemirror-5.24.0.zip">Version 5.24.0</a>:</p>
+
+  <ul class=rel-note>
+    <li>Positions now support a <code>sticky</code> property which determines whether they should be associated with the character before (value <code>"before"</code>) or after (value <code>"after"</code>) them.</li>
+    <li><a href="http://codemirror.net/mode/demo/vim.html">vim bindings</a>: Make it possible to remove built-in bindings through the API.</li>
+    <li><a href="http://codemirror.net/doc/manual.html#addon_comment">comment addon</a>: Support a per-mode <code>useInnerComments</code> option to optionally suppress descending to the inner modes to get comment strings.</li>
+    <li>A cursor directly before a line-wrapping break is now drawn before or after the line break depending on which direction you arrived from.</li>
+    <li>Visual cursor motion in line-wrapped right-to-left text should be much more correct.</li>
+    <li>Fix bug in handling of read-only marked text.</li>
+    <li><a href="http://codemirror.net/mode/shell/">shell mode</a>: Properly tokenize nested parentheses.</li>
+    <li><a href="http://codemirror.net/mode/python/">python mode</a>: Support underscores in number literals.</li>
+    <li><a href="http://codemirror.net/mode/sass/">sass mode</a>: Uses the full list of CSS properties and keywords from the CSS mode, rather than defining its own incomplete subset. Now depends on the css mode.</li>
+    <li><a href="http://codemirror.net/mode/css/">css mode</a>: Expose <code>lineComment</code> property for LESS and SCSS dialects. Recognize vendor prefixes on pseudo-elements.</li>
+    <li><a href="http://codemirror.net/mode/julia/">julia mode</a>: Properly indent <code>elseif</code> lines.</li>
+    <li><a href="http://codemirror.net/mode/markdown/">markdown mode</a>: Properly recognize the end of fenced code blocks when inside other markup.</li>
+    <li><a href="http://codemirror.net/mode/clike/">scala mode</a>: Improve handling of operators containing <code>#</code>, <code>@</code>, and <code>:</code> chars.</li>
+    <li><a href="http://codemirror.net/mode/xml/">xml mode</a>: Allow dashes in HTML tag names.</li>
+    <li><a href="http://codemirror.net/mode/javascript/">javascript mode</a>: Improve parsing of async methods, TypeScript-style comma-separated superclass lists.</li>
+    <li><a href="http://codemirror.net/demo/folding.html">indent-fold addon</a>: Ignore comment lines.</li>
+  </ul>
+
   <p class="rel">19-01-2017: <a href="http://codemirror.net/codemirror-5.23.0.zip">Version 5.23.0</a>:</p>
 
   <ul class=rel-note>
diff --git a/index.html b/index.html
index df98ffd096b9edfe176fce1769d90cc533d47611..0b40b98e7b69ff599c6af173d1555bed2d67681b 100644
--- a/index.html
+++ b/index.html
@@ -96,7 +96,7 @@
       </div>
     </div>
     <div class=actionsleft>
-      Get the current version: <a href="http://codemirror.net/codemirror.zip">5.23.0</a>.<br>
+      Get the current version: <a href="http://codemirror.net/codemirror.zip">5.24.0</a>.<br>
       You can see the <a href="https://github.com/codemirror/codemirror" title="Github repository">code</a>,<br>
       read the <a href="doc/releases.html">release notes</a>,<br>
       or study the <a href="doc/manual.html">user manual</a>.
diff --git a/package.json b/package.json
index f7b617cd221aa188362bc114bb15c3015cca7d77..ad86778c6d7f00aeb674892e86721dc55a8d2df2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "codemirror",
-  "version": "5.23.0",
+  "version": "5.24.0",
   "main": "lib/codemirror.js",
   "description": "Full-featured in-browser code editor",
   "license": "MIT",
diff --git a/src/edit/main.js b/src/edit/main.js
index b6d3d488ad6da4d20f24a646528e1fa48ec048f5..15fb891589910cf95ed70fe52a5e2cc1b5c38116 100644
--- a/src/edit/main.js
+++ b/src/edit/main.js
@@ -66,4 +66,4 @@ import { addLegacyProps } from "./legacy"
 
 addLegacyProps(CodeMirror)
 
-CodeMirror.version = "5.23.0"
+CodeMirror.version = "5.24.0"