diff --git a/AUTHORS b/AUTHORS
index 88e625bec0ac34e5c48cbba88fcdbf5ffe275fa9..07b8fbd09e0500fce7c21b3b54a8ffe6785ba75f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -74,6 +74,7 @@ Arsène von Wyss
 Arthur Müller
 Arun Narasani
 as3boyan
+asolove
 atelierbram
 AtomicPages LLC
 Atul Bhouraskar
@@ -87,6 +88,7 @@ Bem Jones-Bey
 benbro
 Beni Cherniavsky-Paskin
 Benjamin DeCoste
+Benjamin Young
 Ben Keen
 Ben Miller
 Ben Mosher
@@ -181,6 +183,7 @@ Drew Khoury
 Drini Cami
 Dror BG
 duralog
+dwelle
 eborden
 edsharp
 ekhaled
@@ -218,6 +221,7 @@ Gautam Mehta
 Gavin Douglas
 gekkoe
 Geordie Hall
+George Stephanis
 geowarin
 Gerard Braad
 Gergely Hegykozi
@@ -340,6 +344,7 @@ Ken Newman
 ken restivo
 Ken Rockot
 Kevin Earls
+Kevin Kwok
 Kevin Muret
 Kevin Sawicki
 Kevin Ushey
@@ -434,6 +439,7 @@ Michael Grey
 Michael Kaminsky
 Michael Lehenbauer
 Michael Zhou
+Michal ÄŒihaÅ™
 Michal Dorner
 Mighty Guava
 Miguel Castillo
@@ -468,6 +474,7 @@ Nicholas Bollweg
 Nicholas Bollweg (Nick)
 Nick Kreeger
 Nick Small
+Nicolas Kick
 Nicolò Ribaudo
 Niels van Groningen
 nightwing
@@ -486,6 +493,7 @@ pablo
 pabloferz
 Pablo Zubieta
 Page
+paladox
 Panupong Pasupat
 paris
 Paris
@@ -631,6 +639,7 @@ Triangle717
 Tristan Tarrant
 TSUYUSATO Kitsune
 twifkak
+Tyler Long
 VapidWorx
 Vestimir Markov
 vf
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 62b337e7c9fcc6a46c63e9be9dd7625161450f70..2c0887ed5c2ef00c01a1171136d17028f6d943f7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,25 @@
+## 5.28.0 (2017-07-21)
+
+### Bug fixes
+
+Fix copying of, or replacing editor content with, a single dash character when copying a big selection in some corner cases.
+
+Make [`"goLineLeft"`](http://codemirror.net/doc/manual.html#command_goLineLeft)/`"goLineRight"` behave better on wrapped lines.
+
+[sql mode](http://codemirror.net/mode/sql/): Fix tokenizing of multi-dot operator and allow digits in subfield names.
+
+[searchcursor addon](http://codemirror.net/doc/manual.html#addon_searchcursor): Fix infinite loop on some composed character inputs.
+
+[markdown mode](http://codemirror.net/mode/markdown/): Make list parsing more CommonMark-compliant.
+
+[gfm mode](http://codemirror.net/mode/gfm/): Highlight colon syntax for emoji.
+
+### New features
+
+Expose [`startOperation`](http://codemirror.net/doc/manual.html#startOperation) and `endOperation` for explicit operation management.
+
+[sublime bindings](http://codemirror.net/demo/sublime.html): Add extend-selection (Ctrl-Alt- or Cmd-Shift-Up/Down).
+
 ## 5.27.4 (2017-06-29)
 
 ### Bug fixes
diff --git a/doc/manual.html b/doc/manual.html
index 8fcd5b45c0ecf7fa5c7e322916cedb0ccb6ac08a..b4500c375b02f33e010fdc72eb7a1c003ef15a34 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.27.5</span>
+      <span style="color: #888; font-size: 1rem; position: absolute; right: 0; bottom: 0">version 5.28.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 15bd24e1635161bc9838f313c618cbbdfaf6ddfe..86cadb1512248a2b9d8483f832469f3871e39664 100644
--- a/doc/releases.html
+++ b/doc/releases.html
@@ -30,22 +30,33 @@
 
   <h2>Version 5.x</h2>
 
+  <p class="rel">21-07-2017: <a href="http://codemirror.net/codemirror-5.28.0.zip">Version 5.28.0</a>:</p>
+
+  <ul class="rel-note">
+    <li>Fix copying of, or replacing editor content with, a single dash character when copying a big selection in some corner cases.</li>
+    <li>Make <a href="http://codemirror.net/doc/manual.html#command_goLineLeft"><code>&quot;goLineLeft&quot;</code></a>/<code>&quot;goLineRight&quot;</code> behave better on wrapped lines.</li>
+    <li><a href="http://codemirror.net/mode/sql/">sql mode</a>: Fix tokenizing of multi-dot operator and allow digits in subfield names.</li>
+    <li><a href="http://codemirror.net/doc/manual.html#addon_searchcursor">searchcursor addon</a>: Fix infinite loop on some composed character inputs.</li>
+    <li><a href="http://codemirror.net/mode/markdown/">markdown mode</a>: Make list parsing more CommonMark-compliant.</li>
+    <li><a href="http://codemirror.net/mode/gfm/">gfm mode</a>: Highlight colon syntax for emoji.</li>
+  </ul>
+
   <p class="rel">29-06-2017: <a href="http://codemirror.net/codemirror-5.27.4.zip">Version 5.27.4</a>:</p>
 
-  <ul>
+  <ul class="rel-note">
     <li>Fix crash when using mode lookahead.</li>
     <li><a href="http://codemirror.net/mode/markdown/">markdown mode</a>: Don't block inner mode's indentation support.</li>
   </ul>
 
   <p class="rel">22-06-2017: <a href="http://codemirror.net/codemirror-5.27.2.zip">Version 5.27.2</a>:</p>
 
-  <ul>
+  <ul class="rel-note">
     <li>Fix crash in the <a href="http://codemirror.net/demo/simplemode.html">simple mode</a> addon.</li>
   </ul>
 
   <p class="rel">22-06-2017: <a href="http://codemirror.net/codemirror-5.27.0.zip">Version 5.27.0</a>:</p>
 
-  <ul>
+  <ul class="rel-note">
     <li>Fix infinite loop in forced display update.</li>
     <li>Properly disable the hidden textarea when <code>readOnly</code> is <code>&quot;nocursor&quot;</code>.</li>
     <li>Calling the <code>Doc</code> constructor without <code>new</code> works again.</li>
diff --git a/index.html b/index.html
index baa0a33bf7567dbee9c668da1684ee95ffccc7da..c47eb6ec27816a9b9295fd9282bdf9c4b1d3b6ae 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.27.4</a>.<br>
+      Get the current version: <a href="http://codemirror.net/codemirror.zip">5.28.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 ef824b0b0a8eaea7d070d5d8a1030aa5121a160d..e413d2c57bbf29670caca7b956d08b325314a066 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "codemirror",
-  "version": "5.27.5",
+  "version": "5.28.0",
   "main": "lib/codemirror.js",
   "style": "lib/codemirror.css",
   "description": "Full-featured in-browser code editor",
diff --git a/src/edit/main.js b/src/edit/main.js
index 54a7a6e3cc0de1a4f4e3a96bda12da4a01103419..5a20c6473e5c0574bbb996667684882db3c23bf8 100644
--- a/src/edit/main.js
+++ b/src/edit/main.js
@@ -66,4 +66,4 @@ import { addLegacyProps } from "./legacy"
 
 addLegacyProps(CodeMirror)
 
-CodeMirror.version = "5.27.5"
+CodeMirror.version = "5.28.0"