summaryrefslogtreecommitdiff
path: root/doc/changelog.asciidoc
blob: 86380bc432bc75d6344e472819572e1000ef9ba2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
Change Log
===========

// http://keepachangelog.com/

All notable changes to this project will be documented in this file.
This project adheres to http://semver.org/[Semantic Versioning], though minor
breaking changes (such as renamed commands) can happen in minor releases.

// tags:
// `Added` for new features.
// `Changed` for changes in existing functionality.
// `Deprecated` for once-stable features removed in upcoming releases.
// `Removed` for deprecated features removed in this release.
// `Fixed` for any bug fixes.
// `Security` to invite users to upgrade in case of vulnerabilities.

v1.1.2
------

Changed
~~~~~~~

- Windows/macOS releases now bundle Qt 5.10.1 which includes security fixes from
  Chromium up to version 64.0.3282.140.

Fixed
~~~~~

- QtWebEngine: Crash with Qt 5.10.1 when using :undo on some tabs.
- Compatibility with Python 3.7

v1.1.1
------

Fixed
~~~~~

- The Makefile now actually works.
- Fixed crashes with Qt 5.10 when closing a tab before it finished loading.

v1.1.0
------

Added
~~~~~

- Initial support for Greasemonkey scripts. There are still some rough edges,
  but many scripts should already work.
- There's now a `misc/Makefile` file in releases, which should help
  distributions which package qutebrowser, as they can run something like
  `make -f misc/Makefile DESTDIR="$pkgdir" install` now.
- New fields for `window.title_format` and `tabs.title.format`:
  * `{current_url}`
  * `{protocol}`
- New settings:
  * `colors.statusbar.passthrough.fg`/`.bg`
  * `completion.delay` and `completion.min_chars` to update the completion less
    often.
  * `completion.use_best_match` to automatically use the best-matching
    command in the completion.
  * `keyhint.radius` to configure the edge rounding for the key hint widget.
  * `qt.highdpi` to turn on Qt's High-DPI scaling.
  * `tabs.pinned.shrink` (`true` by default) to make it possible
    for pinned tabs and normal tabs to have the same size.
  * `content.windowed_fullscreen` to show e.g. a fullscreened video in the
    window without fullscreening that window.
  * `tabs.persist_mode_on_change` to keep the current mode when
    switching tabs.
  * `session.lazy_restore` which allows to not load pages immediately
    when restoring a session.
- New commands:
  * `:tab-give` and `:tab-take`, to give tabs to another window, or take them
    from another window.
  * `:completion-item-yank` (bound to `<Ctrl-C>`) to yank the current
    completion item text.
  * `:edit-command` to edit the commandline in an editor.
  * `search.incremental` for incremental text search.
- New flags for existing commands:
  * `-o` flag for `:spawn` to show stdout/stderr in a new tab.
  * `--rapid` flag for `:command-accept` (bound to `Ctrl-Enter` by default),
    which allows executing a command in the completion without closing it.
  * `--private` and `--related` flags for `:edit-url`, which have the
    same effect they have with `:open`.
  * `--history` for `:completion-item-focus` which causes it to go
    through the command history when no text was entered. The default bindings for
    cursor keys in the completion changed to use that, so that they can be used
    again to navigate through completion items when a text was entered.
  * `--file` for `:debug-pyeval` which makes it take a filename instead of a
    line of code.
- New `config.source(...)` method for `config.py` to source another file.
- New `{line}` and `{column}` replacements for `editor.command` to position the
  cursor correctly.
- New `qute-pass` userscript as alternative to `password_fill` which allows
  selecting accounts via rofi or any other dmenu-compatile application.
- New `hist_importer.py` script to import history from Firefox/Chromium.

Changed
~~~~~~~

- Some settings got renamed:
  * `tabs.width.bar` -> `tabs.width`
  * `tabs.width.indicator` -> `tabs.indicator.width`
  * `tabs.indicator_padding` -> `tabs.indicator.padding`
  * `session_default_name` -> `session.default_name`
  * `ignore_case` -> `search.ignore_case`
- Much improved user stylesheet handling for QtWebEngine which reduces
  flickering and updates immediately after setting a stylesheet.
- High-DPI favicons are now used when available.
- The `asciidoc2html.py` script now uses Pygments (which is already a dependency
  of qutebrowser) instead of `source-highlight` for syntax highlighting.
- The `:buffer` command now doesn't require quoting anymore, similar to `:open`.
- The `importer.py` script was largely rewritten and now also supports importing
  from Firefox' `places.sqlite` file and Chrome/Chromium profiles.
- Various internal refactorings to use Python 3.5 and ECMAscript 6 features.
- If the `window.hide_wayland_decoration` setting is False, but
  `QT_WAYLAND_DISABLE_WINDOWDECORATION` is set in the environment,
  the decorations are still hidden.
- The `install_dict.py` script for QtWebEngine was renamed to `dictcli.py` and
  can now also upgrade dictionaries correctly.
- `:undo` now can re-open multiple tabs after `:tab-only` was used.
- `:config-write-py` with a relative path now puts the file into the config
  directory.
- The `qute://version` page now also shows the uptime of qutebrowser.
- qutebrowser now prompts to create a non-existing directory when starting a
  download.
- `:jseval --file` now searches relative paths in a `js/` subdir in
  qutebrowser's data dir, e.g. `~/.local/share/qutebrowser/js`.
- The current/default bindings are now shown in the ``:bind` completion.
- Empty categories are now hidden in the `:open` completion.
- Search terms for URLs and titles can now be mixed when filtering the
  completion.
- The default font size for the UI got bumped up from 8pt to 10pt.
- Improved matching in the completion: The words entered are now matched in any
  order, and mixed matches on URL/tite are possible.
- The system's default encoding (rather than UTF-8) is now used to decode
  subprocess output.
- qutebrowser now ensures it's focused again after an external editor is closed.
- The `colors.completion.fg` setting can now be a list, allowing to specify
  different colors for the three completion columns.

Fixed
~~~~~

- More consistent sizing for favicons with vertical tabs.
- Using `:home` on pinned tabs is now prevented.
- Fix crash with unknown file types loaded via `qute://help`.
- Scrolling performance improvements.
- Sites like `qute://help` now redirect to `qute://help/` to make sure links
  work properly.
- Fixes for the size calculation of pinned tabs in the tab bar.
- Worked around a crash with PyQt 5.9.1 compiled against Qt < 5.9.1 when using
  `:yank` or `qute://` URLs.
- Fixed crash when opening `qute://help/img`.
- Fixed `gU` (`:navigate up`) on `qute://help` and webservers not handling `..`
  in a URL.
- Using e.g. `-s backend webkit` to set the backend now works correctly.
- Fixed crash when closing the tab an external editor was opened in.
- When using `:search-next` before a search is finished, no warning about no
  results being found is shown anymore.
- Fix `:click-element` with an ID containing non-alphanumeric characters.
- Fix crash when a subprocess outputs data which is not decodable as UTF-8.
- Fix crash when closing a tab immediately after hinting.
- Worked around issues in Qt 5.10 with loading progress never being finished.
- Fixed a crash when writing a flag before a command (e.g. `:-w open `).
- Fixed a crash when clicking certain form elements with QtWebEngine.

Deprecated
~~~~~~~~~~

- `:tab-detach` has been deprecated, as `:tab-give` without argument can be used
  instead.

Removed
~~~~~~~

- The long-deprecated `:prompt-yes`, `:prompt-no`, `:paste-primary` and `:paste`
  commands have been removed.
- The invocation `:download <url> <dest>` which was deprecated in v0.5.0 was
  removed, use `:download --dest <dest> <url>` instead.
- The `messages.unfocused` option which wasn't used anymore was removed.
- The `x[xtb]` default bindings got removed again as many users accidentally
  triggered them.

v1.0.4
------

Fixed
~~~~~

- The `qute://gpl` page now works correctly again.
- Trying to bind an empty command now doesn't crash anymore.
- Fixed crash when `:config-write-py` fails to write to the given path.
- Fixed crash for some users when selecting a file with Qt 5.9.3
- Improved handling for various SQL errors
- Fix crash when setting content.cache.size to a big value (> 2 GB)

v1.0.3
------

Changed
~~~~~~~

- macOS and Windows builds are now built with PyQt 5.9.1 and Qt 5.9.2, including
  various bugfixes, as well as security fixes from Chromium up to version
  61.0.3163.79.
- Performance improvements for tab rendering.
- The :open-editor command is now not hidden anymore as it's also usable in
  normal mode.

Fixed
~~~~~

- Handle accessing a locked sqlite database gracefully
- Abort pinned tab dialogs properly when a tab is closed e.g. by closing a
  window
- Unbinding a default keybinding twice now doesn't bind it again
- Completions are now sorted correctly again when filtered

v1.0.2
------

Fixed
~~~~~

- Fix workaround for black screens or crashes with Nvidia cards
- Handle a filesystem going read-only gracefully
- Fix crash when setting `fonts.monospace`
- Fix list options not being modifyable via `.append()` in `config.py`
- Mark the content.notifications setting as QtWebKit only correctly
- Fix wrong rendering of keys like `<back>` in the completion

Changed
~~~~~~~

- Nicer error messages and other minor improvements

v1.0.1
------

Fixed
~~~~~

- Fixed starting after customizing `fonts.tabs` or `fonts.debug_console`.
- Fixed starting with old PyQt versions compiled against newer Qt versions.
- Fixed check for PyQt version to correctly enforce 5.7 (not 5.2).

v1.0.0
------

Major changes
~~~~~~~~~~~~~

- Dependency changes:
  * Support for legacy QtWebKit (before 5.212 which is
    https://github.com/annulen/webkit/wiki[distributed independently from Qt])
    is dropped.
  * Support for Python 3.4 is dropped.
  * Support for Qt before 5.7.1 and PyQt before 5.7 is dropped.
  * New dependency on the QtSql module and Qt sqlite support.
  * New dependency on the http://www.attrs.org/[attrs] project (packaged as
    `python-attr` in some distributions).
  * The depedency on PyOpenGL (when using QtWebEngine) got removed. Note
    that PyQt5.QtOpenGL is still a dependency.
  * PyQt5.QtOpenGL is now always required, even with QtWebKit.
- The QtWebEngine backend is now used by default. Note this means that
  QtWebEngine now should be a required dependency, and QtWebKit (if new enough)
  should be changed to an optional dependency.
- Completely rewritten configuration system which ignores the old config file.
  See link:qute://help/configuring.html[] for details.
- Various documentation files got moved to the doc/ subfolder;
 `qutebrowser.desktop` got moved to misc/.
- `:set` now doesn't support toggling/cycling values anymore, that functionality
  got moved to `:config-cycle`.
- New completion engine based on sqlite, which allows to complete
  the entire browsing history. The default for
  `completion.web_history_max_items` got changed to `-1` (unlimited). If the
  completion is too slow on your machine, try setting it to a few 1000 items.
- Up/Down now navigates through the command history instead of selecting
  completion items. Either use Tab to cycle through the completion, or
  https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#migrating-older-configurations[restore the old behavior].

Added
~~~~~

- QtWebEngine: Spell checking support, see the `spellcheck.languages` setting.
- New `qt.args` setting to pass additional arguments to Qt/Chromium.
- New `backend` setting to select the backend to use.
  Together with the previous setting, this should make most wrapper scripts
  unnecessary.
- qutebrowser can now be set as the default browser on macOS.
- New config commands:
  * `:config-cycle` to cycle an option between multiple values.
  * `:config-unset` to remove a configured option.
  * `:config-clear` to remove all configured options.
  * `:config-source` to (re-)read a `config.py` file.
  * `:config-edit` to open the `config.py` file in an editor.
  * `:config-write-py` to write a `config.py` template file.
- New `:version` command which opens `qute://version`.
- New back/forward indicator in the statusbar.
- New `bindings.key_mappings` setting to map keys to other keys.
- QtWebEngine: Support for proxy authentication.

Changed
~~~~~~~

- Using `:download` now uses the page's title as filename.
- Using `:back` or `:forward` with a count now skips intermediate pages.
- When there are multiple messages shown, the timeout is increased.
- `:search` now only clears the search if one was displayed before, so pressing
  `<Escape>` doesn't un-focus inputs anymore.
- Pinned tabs now adjust to their text's width, so the `tabs.width.pinned`
  setting got removed.
- `:set-cmd-text` now has a `--run-on-count` argument to run the underlying
  command directly if a count was given.
- `:scroll-perc` got renamed to `:scroll-to-perc`.

Removed
~~~~~~~

- Migrating QtWebEngine data written by versions before 2016-11-15 (before
  v0.9.0) is now not supported anymore.
- Upgrading qutebrowser with a version older than v0.4.0 still running now won't
  work properly anymore.
- The `--harfbuzz` and `--relaxed-config` commandline arguments got dropped.

Fixes
~~~~~

- Exiting fullscreen via `:fullscreen` or buttons on a page now
  restores the correct previous window state (maximized/fullscreen).
- When `input.insert_mode.auto_load` is set, background tabs now don't enter
  insert mode anymore.
- The keybinding help widget now works correctly when using keybindings with a
  count.
- The `window.hide_wayland_decoration` setting now works correctly again.

v0.11.1
-------

Fixes
~~~~~

- Fixed empty space being shown after tabs in the tabbar in some cases.
- Fixed `:restart` in private browsing mode.
- Fixed printing on macOS.
- Closing a pinned tab via mouse now also prompts for confirmation.
- The "try again" button on error pages works correctly again.
- :spawn -u -d is now disallowed.
- :spawn -d shows error messages correctly now.

v0.11.0
-------

New dependencies
~~~~~~~~~~~~~~~~

- New dependency on `PyQt5.QtOpenGL` if QtWebEngine is used. QtWebEngine depends
  on QtOpenGL already, but on distributions packaging split PyQt5 wrappers, the
  wrappers for QtOpenGL are now required.
- New dependency on `PyOpenGL` if QtWebEngine is used.

Added
~~~~~

- Private browsing is now implemented for QtWebEngine, *and changed its
  behavior*: The `general -> private-browsing` setting now only applies to newly
  opened windows, and you can use the `-p` flag to `:open` to open a private
  window.
- New "pinned tabs" feature, with a new `:tab-pin` command (bound
  to `<Ctrl-p>` by default).
- (QtWebEngine) Implemented `:follow-selected`.
- New `:clear-messages` command to clear shown messages.
- New `ui -> keyhint-delay` setting to configure the delay until
  the keyhint overlay pops up.
- New `-s` option for `:open` to force a HTTPS scheme.
- `:debug-log-filter` now accepts `none` as an argument to clear any log
  filters.
- New `--debug-flag` argument which replaces `--debug-exit` and
  `--pdb-postmortem`.
- New `tabs -> favicon-scale` option to scale up/down favicons.
- `colors -> statusbar.bg/fg.private` and `.command.private` to
  customize statusbar colors for private windows.
- New `{private}` field displaying `[Private Mode]` for
  `ui -> window-title-format` and `tabs -> title-format`.
- (QtWebEngine) Proxy support with Qt 5.7.1 (already was supported for 5.8 and
  newer)

Changed
~~~~~~~

- To prevent elaborate phishing attacks, the Punycode version (`xn--*`) is now
  shown in addition to the decoded version for international domain names
  (IDN).
- Starting with legacy QtWebKit now shows a warning message.
  *With the next release, support for it will be removed.*
- The Windows releases are redone from scratch, which means:
  * They now use the new QtWebEngine backend
  * The bundled Qt is updated from 5.5 to 5.9
  * The bundled Python is updated from 3.4 to 3.6
  * They are now generated with PyInstaller instead of cx_Freeze
  * The installer is now generated using NSIS instead of being a MSI
- Improved `qute://history` page (with lazy loading)
- Crash reports are not public anymore.
- Paths like `C:` are now treated as absolute paths on Windows for downloads,
  and invalid paths are handled properly.
- Comments in the config file are now placed before the individual options
  instead of being before sections.
- Messages are now hidden when clicked.
- stdin is now closed immediately for processes spawned from qutebrowser.
- When `ui -> message-timeout` is set to 0, messages are now never cleared.
- Middle/right-clicking the blank parts of the tab bar (when vertical) now
  closes the current tab.
- The adblocker now also blocks non-GET requests (e.g. POST).
- `javascript:` links can now be hinted.
- `:view-source`, `:tab-clone` and `:navigate --tab` now don't open the tab as
  "explicit" anymore, i.e. (with the default settings) open it next to the
  active tab.
- `qute:*` pages now use `qute://*` instead (e.g. `qute://version` instead of
  `qute:version`), but the old versions are automatically redirected.
- Texts in prompts are now selectable.
- The default level for `:messages` is now `info`, not `error`
- Trying to focus the currently focused tab with `:tab-focus` now focuses the
  last viewed tab.
- (QtWebEngine) With Qt 5.9, `content -> cookies-store` can now be set without
  a restart.
- (QtWebEngine) With Qt 5.9, better error messages are now shown for failed
  downloads.
- (QtWebEngine) The underlying Chromium version is now shown in the version
  info.
- (QtWebKit) Renderer process crashes now show an error page on Qt 5.9 or newer.
- (QtWebKit) storage -> offline-web-application-storage` got renamed to `...-cache`
- (QtWebKit) PAC now supports SOCKS5 as type.

Fixed
~~~~~

- The macOS .dmg is now built against Qt 5.9 which fixes various
  important issues (such as not being able to type dead keys).
- Fixed crash with `:download` on PyQt 5.9.
- Cloning a page without history doesn't crash anymore.
- When a download results in a HTTP error, it now shows the error correctly
  instead of crashing.
- Pressing ctrl-c while a config error is shown works as intended now.
- When the key config isn't writable, we now show an error instead of crashing.
- Fixed crash when unbinding an unbound key in the key config.
- Fixed crash when using `:debug-log-filter` when `--filter` wasn't given on startup.
- Fixed crash with some invalid setting values.
- Continuing a search after clearing it now works correctly.
- The tabbar and completion should now be more consistently and correctly
  styled with various system styles.
- Applying styiles in `qt5ct` now shouldn't crash anymore.
- The validation for colors in stylesheets is now less strict,
  allowing for all valid Qt values.
- `data:` URLs now aren't added to the history anymore.
- Accidentally starting with Python 2 now shows a proper error message again.
- For some people, running some userscripts crashed - this should now be fixed.
- Various other rare crashes should now be fixed.
- The settings documentation was truncated with v0.10.1 which should now be
  fixed.
- Scrolling to an anchor in a background tab now works correctly, and javascript
  gets the correct window size for background tabs.
- (QtWebEngine) Added a workaround for a black screen with some setups
- (QtWebEngine) Starting with Nouveau graphics now shows an error message
  instead of crashing in Qt.
- (QtWebEngine) Retrying downloads now shows an error instead of crashing.
- (QtWebEngine) Cloning a view-source tab now doesn't crash anymore.
- (QtWebEngine) `window.navigator.userAgent` is now set correctly when
  customizing the user agent.
- (QtWebEngine) HTML fullscreen is now tracked for each tab separately, which
  means it's not possible anymore to accidentally get stuck in fullscreen state
  by closing a tab with a fullscreen video.
- (QtWebEngine) `:scroll-page` with `--bottom-navigate` now works correctly.
- (QtWebKit) The HTTP cache is disabled on Qt 5.7.1 and 5.8 now as it leads to
  frequent crashes due to a Qt bug.
- (QtWebKit) Fixed Crash when a PAC file returns an invalid value.

v0.10.1
-------

Changed
~~~~~~~

- `--qt-arg` and `--qt-flag` can now also be used to pass arguments to Chromium when using QtWebEngine.

Fixed
~~~~~

- URLs are now redacted properly (username/password, and path/query for HTTPS) when using Proxy Autoconfig with QtWebKit
- Crash when updating adblock lists with invalid UTF8-chars in them
- Fixed the web inspector with QtWebEngine
- Version checks when starting qutebrowser now also take the Qt version PyQt was compiled against into account
- Hinting a input now doesn't select existing text anymore with QtWebKit
- The cursor now moves to the end when input elements are selected with QtWebEngine
- Download suffixes like (1) are now correctly stripped with QtWebEngine
- Crash when trying to print a tab which was closed in the meantime
- Crash when trying to open a file twice on Windows

v0.10.0
-------

Added
~~~~~

- Userscripts now have a new `$QUTE_COMMANDLINE_TEXT` environment variable, containing the current commandline contents
- New `ripbang` userscript to create a searchengine from a duckduckgo bang
- link:https://github.com/annulen/webkit/wiki[QtWebKit Reloaded] (also called QtWebKit-NG) is now fully supported
- Various new functionality with the QtWebEngine backend:
    * Printing support with Qt >= 5.8
    * Proxy support with Qt >= 5.8
    * The `general -> print-element-backgrounds` option with Qt >= 5.8
    * The `content -> cookies-store` option
    * The `storage -> cache-size` option
    * The `colors -> webpage.bg` option
    * The HTML5 fullscreen API (e.g. youtube videos) with QtWebEngine
    * `:download --mhtml`
- New `qute:history` URL and `:history` command to show the browsing history
- Open tabs are now auto-saved on each successful load and restored in case of a crash
- `:jseval` now has a `--file` flag so you can pass a javascript file
- `:session-save` now has a `--only-active-window` flag to only save the active window
- macOS builds are back, and built with QtWebEngine

Changed
~~~~~~~

- PyQt 5.7/Qt 5.7.1 is now required for the QtWebEngine backend
- Scrolling with the scrollwheel while holding shift now scrolls sideways
- New way of clicking hints which solves various small issues
- When yanking a mailto: link via hints, the mailto: prefix is now stripped
- Zoom level messages are now not stacked on top of each other anymore
- qutebrowser now automatically uses QtWebEngine if QtWebKit is unavailable
- :history-clear now asks for a confirmation, unless it's run with --force.
- `input -> mouse-zoom-divider` can now be 0 to disable zooming by mouse wheel
- `network -> proxy` can also be set to `pac+file://...` now to
  use a local proxy autoconfig file (on QtWebKit)

Removed
~~~~~~~

- (QtWebKit) Various rarely customized settings were removed:
  * `ui -> css-media-type` (defaults to desktop)
  * `general -> site-specific-quirks` (now always turned on)
  * `storage -> offline-storage-default-quota` (defaults to 5MB)
  * `storage -> offline-web-application-cache-quota` (defaults to no quota)
  * `storage -> object-cache-capacities` (default depends on disk space)
  * `content -> css-regions` (now always turned off)
  * `storage -> offline-storage-database` (merged into `storage -> local-storage`)

Fixed
~~~~~

- Various bugs with Qt 5.8 and QtWebEngine:
    * Segfault when closing a window
    * Segfault when closing a tab with a search active
    * Fixed various mouse actions (like automatically entering insert mode) not working
    * Fixed hints sometimes not working
    * Segfault when opening a URL after a QtWebEngine renderer process crash
- Other QtWebEngine fixes:
    * Insert mode now gets entered correctly with a non-100% zoom
    * Crash reports are now re-enabled when using QtWebEngine
    * Fixed crashes when closing tabs while hinting
    * Using :undo or :tab-clone with a view-source:// or chrome:// tab is now prevented, as it segfaults
- `:enter-mode` now refuses to enter modes which can't be entered manually (which caused crashes)
- `:record-macro` (`q`) now doesn't try to record macros for special keys without a text
- Fixed PAC (proxy autoconfig) not working with QtWebKit
- `:download --mhtml` now uses the new file dialog
- Word hints are now upper-cased correctly when hints -> uppercase is true
- Font validation is now more permissive in the config, allowing e.g. "Terminus
  (TTF)" as font name
- Fixed starting on newer PyQt/sip versions with LibreSSL
- When downloading files with QtWebKit, a User-Agent header is set when possible
- Fixed showing of keybindings in the :help completion
- `:navigate prev/next` now detects `rel` attributes on `<a>` elements, and
  handles multiple `rel` attributes correctly
- Fixed a crash when hinting with target `userscript` and spawning a non-existing script
- Lines in Jupyter notebook now trigger insert mode

v0.9.1
------

Fixed
~~~~~

- Prevent websites from downloading files to a location outside of the download
  folder with QtWebEngine.

v0.9.0
------

Added
~~~~~

- *New dependency:* qutebrowser now depends on the Qt QML module, which is
   packaged separately in some distributions (as Qt Declarative/QML/Quick).
- New `:rl-backward-kill-word` command which does what `:rl-unix-word-rubout`
  did before v0.8.0.
- New `:rl-unix-filename-rubout` command which is similar to readline's
  `unix-filename-rubout`.
- New `fonts -> completion.category` setting to customize the font used for
  completion category headers.
- New `:debug-log-capacity` command to adjust how many lines are logged into RAM
  (to report bugs which are difficult to reproduce).
- New `hide-unmatched-rapid-hints` option to not hide hint unmatched hint labels
  in rapid mode.
- New `{clipboard}` and `{primary}` replacements for the commandline which
  replace the `:paste` command.
- New `:insert-text` command to insert a given text into a field on the page,
  which replaces `:paste-primary` together with the `{primary}` replacement.
- New `:window-only` command to close all other windows.
- New `prev-category` and `next-category` arguments to `:completion-item-focus`
  to focus the previous/next category in the completion (bound to `<Ctrl-Tab>`
  and `<Ctrl-Shift-Tab>` by default).
- New `:click-element` command to fake a click on a element.
- New `:debug-log-filter` command to change console log filtering on-the-fly.
- New `:debug-log-level` command to change the console loglevel on-the-fly.
- New `general -> yank-ignored-url-parameters` option to configure which URL
  parameters (like `utm_source` etc.) to strip off when yanking an URL.
- Support for the
  https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API[HTML5 page visibility API]
- New `readability` userscript which shows a readable version of a page (using
  the `readability-lxml` python package)
- New `cast` userscript to show a video on a Google Chromecast
- New `:run-with-count` command which replaces the (undocumented) `:count:command` syntax.
- New `:record-macro` (`q`) and `:run-macro` (`@`) commands for keyboard macros.
- New `ui -> hide-scrollbar` setting to hide the scrollbar independently of the
  `user-stylesheet` setting.
- New `general -> default-open-dispatcher` setting to configure what to open
  downloads with (instead of e.g. `xdg-open` on Linux).
- Support for PAC (proxy autoconfig) with QtWebKit

Changed
~~~~~~~

- Hints are now drawn natively in Qt instead of using web elements. This has a
  few implications for users:
    * The `hints -> opacity` setting does not exist anymore, but you can use
      `rgba(r, g, b, alpha)` colors instead for `colors -> hints.bg`.
    * The `hints -> font` setting is not affected by
      `fonts -> web-family-fixed` anymore. Thus, a transformer got added to
      change `Monospace` to `${_monospace}`.
    * Gradients in hint colors can now be configured by using `qlineargradient`
      and friends instead of `-webkit-gradient`. The most common cases get
      migrated automatically, but if you drastically changed the defaults,
      you'll need to manually adjust your config.
    * Styling hints by styling `qutehint` elements in `user-stylesheet` was
      never officially supported and does not work anymore.
    * Hints are now not affected by the page's stylesheet or zoom anymore.
- `:bookmark-add` now has a `--toggle` flag which deletes the bookmark if it
  already exists.
- `:bookmark-load` now has a `--delete` flag which deletes the bookmark after
  loading it.
- `:open` now also accepts quickmark names instead of URLs
- `:tab-move` now optionally takes an index for absolute moving.
- Commands taking either an argument or a count (like `:zoom` or `:tab-focus`)
  now prefer the count instead of showing an error message.
- `:open` now has an `--implicit` argument to treat the opened tab as implicit
  (i.e. to open it at the position it would be opened if it was a clicked link)
- `:download-open` and `:prompt-open-download` now have an optional `cmdline`
  argument to pass a commandline to open the download with.
- `:yank` now has a position argument to select what to yank instead of using
  flags.
- Replacements like `{url}` can now also be used in the middle of an argument.
  Consequently, commands taking another command (`:later`, `:repeat` and
  `:bind`) now don't immediately evaluate variables.
- Tab titles in the `:buffer` completion now update correctly when a page's
  title is changed via javascript.
- `:hint` now has a `--mode <mode>` flag to override the hint mode configured
  using the `hints -> mode` setting.
- With `new-instance-open-target` set to a tab option, the tab is now opened in
  the most recently focused (instead of the last opened) window. This can be
  configured with the new `new-instance-open-target.window` setting.
  It can also be set to `last-visible` to show the pages in the most recently
  visible window, or `first-opened` to use the first (oldest) available window.
- Word hints now are more clever about getting the element text from some elements.
- Completions for `:help` and `:bind` now also show hidden commands
- The `:buffer` completion now also filters using the first column (id).
- `:undo` has been improved to reopen tabs at the position they were closed.
- `:navigate` now takes a count for `up`/`increment`/`decrement`.
- The `hints -> auto-follow` setting now can be set to
  `always`/`full-match`/`unique-match`/`never` to more precisely control when
  hints should be followed automatically.
- Counts can now be used with special keybindings (e.g. with modifiers).
  This was already implemented for v0.7.0 originally, but got reverted because
  it caused some issues and then never re-applied.
- Sending a command to an existing instance (via "qutebrowser :reload") now
  doesn't mark it as urgent anymore.
- `tabs -> title-format` now treats an empty string as valid.
- Bindings for `:`, `/` and `?` are now configured explicitly and not hardcoded
  anymore.
- The `completion -> show` setting can now be set to `always`, `auto` or
  `never`.
- `:open-editor` can now be used in any mode.
- Lots of improvements to and bugfixes for the QtWebEngine backend, such as
  working hints. However, using qutebrowser directly from git is still advised
  when using `--backend webengine`.
- `content -> javascript-can-open-windows` got renamed to
  `javascript-can-open-windows-automatically`.
- `:prompt-accept` now optionally accepts a value which overrides the one
  entered in the input box. `yes` and `no` can be used as values for yes/no
  questions.
- The new `--qt-arg` and `--qt-flag` arguments can be used to pass
  arguments/flags to Qt's commandline.
- Error/warning/info messages are now shown stacked above the statusbar.
  This also added various new settings:
    * `colors -> messages.fg.error` (renamed from `statusbar.fg.error`)
    * `colors -> messages.bg.error` (renamed from `statusbar.bg.error`)
    * `colors -> messages.border.error`
    * `colors -> messages.fg.warning` (renamed from `statusbar.fg.warning`)
    * `colors -> messages.bg.warning` (renamed from `statusbar.bg.warning`)
    * `colors -> messages.border.warning`
    * `colors -> messages.fg.info`
    * `colors -> messages.bg.info`
    * `colors -> messages.border.info`
    * `fonts -> messages.error`
    * `fonts -> messages.warning`
    * `fonts -> messages.info`
- The `qute:settings` page now also shows option descriptions.
- `qute:version` and `qutebrowser --version` now show various important paths
- `:spawn`/userscripts now show a nicer error when a script wasn't found
- Various functionality now works when javascript is disabled with QtWebKit
- Various commands/settings taking `left`/`right`/`previous` arguments now take
  `prev`/`next`/`last-used` to remove ambiguity.
- The `ui -> user-stylesheet` setting now only takes filenames, not CSS snippets
- `ui -> window-title-format` now has a new `{backend} ` replacement
- `:hint` has a new `--add-history` argument to add the URL to the history for
  yank/spawn targets.
- `:set` now cycles through values if more than one argument is given.
- `:open` now opens `default-page` without an URL even without `-t`/`-b`/`-w` given.

Deprecated
~~~~~~~~~~

- The `:paste` command got deprecated as `:open` with `{clipboard}` and
  `{primary}` can be used instead.
- The `:paste-primary` command got deprecated as `:insert-text {primary}` can
  be used instead.
- The `:prompt-yes` and `:prompt-no` commands got deprecated as
  `:prompt-accept yes` and `:prompt-accept no` can be used instead.

Removed
~~~~~~~

- The `:yank-selected` command got merged into `:yank` as `:yank selection`
  and thus removed.
- The `:completion-item-prev` and `:completion-item-next` commands got merged
  into a new `:completion-focus {prev,next}` command and thus removed.
- The `ui -> hide-mouse-cursor` setting since it was completely broken and
  nobody seemed to care.
- The `hints -> opacity` setting - see the "Changed" section for details.
- The `completion -> auto-open` setting got merged into `completion -> show` and
  thus removed.
- All `--qt-*` arguments got replaced by `--qt-arg` and `--qt-flag` and thus
  removed.
- The `-c`/`--confdir`, `--datadir` and `--cachedir` arguments got removed, as
  `--basedir` should be sufficient.

Fixed
~~~~~

- `:undo` now doesn't undo tabs "closed" by `:tab-detach` anymore.
- Fixed an issue with hint chars not being cleared correctly when leaving hint
  mode.
- `:tab-detach` now fails correctly when there's only one tab open.
- Various small issues with the command completion
- Fixed hang when using multiple spaces in a row with the URL completion
- qutebrowser now still starts with an incorrectly configured
  `$XDG_RUNTIME_DIR`.
- Fixed crash when a userscript writes invalid unicode data to the FIFO
- Fixed crash when a included HTML was not found

v0.8.3
------

Fixed
~~~~~

- Fixed crash when doing `:<space><enter>`, another corner-case introduced in v0.8.0
- Fixed `:open-editor` (`<Ctrl-e>`) on Windows
- Fixed crash when setting `general -> auto-save-interval` to a too big value.
- Fixed crash when using hints on Void Linux.
- Fixed compatibility with Python 3.5.2+ on Debian unstable
- Compatibility with pdfjs v1.6.210
- `:bind` can now be used to bind to an alias (binding by editing `keys.conf`
  already worked before)
- The command completion now updates correctly when changing aliases
- The tabbar now displays correctly with the Adwaita Qt theme
- The default `sk` keybinding now sets the commandline to `:bind` correctly
- Fixed crash when closing a window without focusing it
- Userscripts now can access QUTE_FIFO correctly on Windows

v0.8.2
------

Fixed
~~~~~

- Fixed `general -> private-browsing` not being set correctly until a restart
  (which caused e.g. local storage to be enabled).
- When hinting input fields (`:t`), also consider input elements without a type.
- Fixed crash when opening an invalid URL with a percent-encoded and a real @ in it
- Fixed default `;o` and `;O` bindings
- Fixed local storage not working (and possible other bugs) when using a
  relative path with `--basedir`.
- Fixed crash when deleting a quickmark with Ctrl-D
- Fixed HTML5 video playback on Windows
- Fixed crash when using `:prompt-open-download` with a file with chars not
  encodable with the OS' filesystem encoding (e.g. with `LC_ALL=C`)
- Fixed `:prompt-open-download` with a too long filename (> 255 bytes)
- Fixed crash when cancelling a download after doing `:prompt-open-download`
- Fixed crash when writing a download to disk fails with
  `:prompt-open-download`.
- Fixed `:restart` deleting the basedir when it was given with `--basedir`.

v0.8.1
------

Fixed
~~~~~

- Fix crash when pressing enter without a command
- Adjust error message to point out QtWebEngine is unsupported with the OS
  X .app currently.
- Hide Harfbuzz warning with the macOS .app

v0.8.0
------

Added
~~~~~

- New `:repeat-command` command (mapped to `.`) to repeat the last command.
  Note that two former default bundings conflict with that binding, unbinding
  them via `:unbind .i` and `:unbind .o` is recommended.
- New `qute:bookmarks` page which displays all bookmarks and quickmarks.
- New `:prompt-open-download` (bound to `Ctrl-X`) which can be used to open a
  download directly when getting the filename prompt.
- New `{host}` replacement for tab- and window titles which evaluates
  to the current host.
- New default binding `;t` for `:hint input`.
- New variables `$QUTE_CONFIG_DIR`, `$QUTE_DATA_DIR` and
  `$QUTE_DOWNLOAD_DIR` available for userscripts.
- New option `ui` -> `status-position` to configure the position of the
  status bar (top/bottom).
- New `--pdf <filename>` argument for `:print` WHICH can be used to generate a
  PDF without a dialog.

Changed
~~~~~~~

- `:scroll-perc` now prefers a count over the argument given to it, which means
  `gg` can be used with a count.
- Aliases can now use `;;` to have an alias which executed multiple commands.
- `:edit-url` now does nothing if the URL isn't changed in the spawned editor.
- `:bookmark-add` can now be passed a URL and title to add that as a bookmark
  rather than the current page.
- New `taskadd` userscript to add a taskwarrior task annotated with the
  current URL.
- `:bookmark-del` and `:quickmark-del` now delete the current page's URL if none
  is given.

Fixed
-----

- Compatibility with PyQt 5.7
- Fixed some configuration values being lost when a config option gets removed
  from qutebrowser's code.
- Fix crash when downloading with a full disk
- Using `:jump-mark` (e.g. `''`) when the current URL is invalid doesn't crash
  anymore.

Removed
-------

- The ability to display status messages from webpages, as well as the related
  `ui ->  display-statusbar-messages` setting.
- The `general -> wrap-search` setting as searches now always wrap.
  According to a quick straw poll and prior crash logs, almost nobody is using
  `wrap-search = false`, and turning off wrapping is not possible with
  QtWebEngine.
- `:edit-url` now doesn't accept a count anymore as its behavior was confusing
  and it doesn't make much sense to add a count.

v0.7.0
------

Added
~~~~~

- New `:edit-url` command to edit the URL in an external editor.
- New `network -> custom-headers` setting to send custom headers with every request.
- New `{url:pretty}` commandline replacement which gets replaced by the decoded URL.
- New marks to remember a scroll position:
    - New `:jump-mark` command to jump to a mark, bound to `'`
    - New `:set-mark` command to set a mark, bound to ```(backtick)
    - The `'` mark gets set when moving away (hinting link with anchor, searching, etc.) so you can move back with `''`
- New `--force-color` argument to force colored logging even if stdout is not a
  terminal
- New `:messages` command to show error messages
- New pop-up showing possible keybinding when the first key of a keychain is
  pressed. This can be turned off using `:set ui keyhint-blacklist *`.
- New `hints -> auto-follow-timeout` setting to ignore keypresses after
  following a hint when filtering in number mode.
- New `:history-clear` command to clear the entire history
- New `hints -> find-implementation` to select which implementation (JS/Python)
  should be used to find hints on a page. The `javascript` implementation is
  better, but slower.
- New `inputs` group for `:hint` to hint text input fields.

Changed
~~~~~~~

- qutebrowser got a new (slightly updated) logo
- `:tab-focus` can now take a negative index to focus the nth tab counted from
  the right.
- `:yank` can now yank the pretty/decoded URL by adding `--pretty`
- `:navigate` now clears the URL fragment
- `:completion-item-del` (`Ctrl-D`) can now be used in `:buffer` completion to
  close a tab
- Various SSL ciphers are now disabled by default. With recent Qt/OpenSSL
  versions those already all are disabled, but with older versions they might
  not be.
- Show favicons as window icon with `tabs-are-windows` set.
- `:bind <key>` without a command now shows the existing binding
- The optional `colorlog` dependency got removed, as qutebrowser now displays
  colored logs without it.
- URLs are now shown decoded when hovering.
- Keybindings are now shown in the command completion
- Improved behavior when pasting multiple lines
- Rapid hints can now also be used for the `normal` hint target, which can be
  useful with javascript click handlers or checkboxes which don't actually open
  a new page.
- `:zoom-in` or `:zoom-out` (`+`/`-`) with a too large count now zooms to the
  smallest/largest zoom instead of doing nothing.
- The commandline now accepts partially typed commands if they're unique.
- Number hints are now kept filtered after following a hint in rapid mode.
- Number hints are now renumbered after filtering
- Number hints can now be filtered with multiple space-separated search terms
- `hints -> scatter` is now ignored for number hints
- Better history implementation which also stores titles.
  As a consequence, URLs which redirect to another URL are now added to the
  history too, marked with a `-r` suffix to the timestamp field.

Fixed
-----

- Fixed using `:hint links spawn` with flags - you can now use things like the
  `-v` argument for `:spawn` or pass flags to the spawned commands.
- Various fixes for hinting corner-cases where following a link didn't work or
  the hint was drawn at the wrong position.
- Fixed crash when downloading from a URL with SSL errors
- Close file handles correctly when a download failed
- Fixed crash when using `;Y` (`:hint links yank-primary`) on a system without
  primary selection
- Don't display quit confirmation with finished downloads
- Fixed updating the tab index in the statusbar when opening a background tab
- Fixed a crash when entering `:-- ` in the commandline
- Fixed `:debug-console` with PyQt 5.6
- Fixed qutebrowser not starting when `sys.stderr` is `None`
- Fixed crash when cancelling a download which belongs to an MHTML download
- Fixed rebinding of keybindings being case-sensitive
- Fix for tab indicators getting lost when moving tabs
- Fixed handling of backspace in number hinting mode
- Fixed `FileNotFoundError` when starting in some cases on old Qt versions
- Fixed sharing of cookies between tabs when `private-browsing` is enabled
- Toggling values with `:set` now uses lower-case values
- Hints now work with (non-standard) links with spaces around the URL
- Strip off trailing spaces for history entries with no title

v0.6.2
------

Fixed
~~~~~

- Fixed crash when using `:tab-{prev,next,focus}` right after closing the last
  tab with `last-close` set to `close`.
- Fixed crash when doing `:undo` in a new instance with `tabs -> last-close` set
  to `default-page`.
- Fixed crash when starting with --cachedir=""
- Fixed crash in some circumstances when using dictionary hints
- Fixed various crashes related to PyQt 5.6

v0.6.1
-----

Fixed
~~~~~~

- Fixed broken cheatsheet image which was missing from package
- Fixed occasional crash when switching/disconnecting monitors
- Fixed crash when downloading non-ascii files with a broken locale (`LC_ALL=C`)
- Added workaround for a Qt/PyQt bug which is too weird to describe here

v0.6.0
------

Added
~~~~~

- New `:buffer` command to easily switch tabs by name. This is not bound to a
  key by default for existing users due to a conflict with the `gt`/`gT`
  bindings (which are now removed from the default bindings).
  You can bind it by hand by running `:bind -f gt set-cmd-text -s :buffer`.
- New `--quiet` argument for the `:debug-pyeval` command to not open a tab with
  the results. Note `:debug-pyeval` is still only intended for debugging.
- The completion now matches each entered word separately.
- A new command `:paste-primary` got added to paste the primary selection, and
  `<Shift-Insert>` got added as a binding so it pastes primary rather than
  clipboard.
- New mode `word` for `hints -> mode` which uses a dictionary and link-texts
  for hints instead of single characters.
- New `--all` argument for `:download-cancel` to cancel all running downloads.
- New `password_fill` userscript to fill passwords using the `pass` executable.
- New `current` hinting mode which forces opening hints in the current tab
  (even with `target="_blank"`)

Changed
~~~~~~~

- Pasting multiple lines via `:paste` now opens each line in a new tab.
- `:navigate increment/decrement` now preserves leading zeroes in URLs.
- `general -> editor` can now also handle `{}` inside another argument (e.g. to open `vim` via `termite`)
- Improved performance when scrolling with many tabs open.
- Shift-Insert now also pastes primary selection for prompts.
- `:download-remove --all` got un-deprecated to provide symmetry with
  `:download-cancel --all`. It does the same as `:download-clear`.
- Improved detection of URLs/search terms when pasting multiple lines.
- Don't remove `qutebrowser-editor-*` temporary file if editor subprocess crashed
- Userscripts are also searched in `/usr/share/qutebrowser/userscripts`.
- Blocked hosts are now also read from a `blocked-hosts` file in the config dir
  (e.g. `~/.config/qutebrowser/blocked-hosts`).

Fixed
~~~~~

- Fixed starting with -c "".
- Fixed crash when a tab is closed twice via javascript (e.g. Dropbox
  authentication dialogs)
- Fixed crash when a notification/geolocation prompt is answered after closing
  the tab it belongs to.
- Fixed crash when downloading a file without any path information (e.g a
  magnet link).
- Fixed crashes when opening an empty URL (e.g. via pasting).
- Fixed validation of duplicate values in `hints -> chars`.
- Fixed crash when PDF.js was partially installed.
- Fixed crash when XDG_DOWNLOAD_DIR was not an absolute path.
- Fixed very long filenames when downloading `data://`-URLs.
- Fixed ugly UI fonts on Windows when Liberation Mono is installed
- Fixed crash when unbinding key from a section which doesn't exist in the config
- Fixed report window after a segfault
- Fixed some directory browser issues on Windows
- Fixed crash when closing a window with a finished download and delayed
  `remove-finished-downloads` setting.
- Fixed crash when hitting `<Tab>` then `<Ctrl-C>` on pages without keyboard
  focus.
- Fixed "Frame load interrupted by policy change" error showing up when
  downloading files with Qt 5.6.

Removed
~~~~~~~

- The `gt`/`gT` bindings (luakit-like alternatives to `J`/`K`) were removed
  (except for existing configs) to make room for the `gt` binding to show
  buffers.

v0.5.1
------

Fixed
~~~~~

- Fixed completion for various config values when using `:set`.
- Fixed config validation for various config values.
- Prevented an error being logged when a website with HTTP authentication was
  opened on Windows.

v0.5.0
------

Added
~~~~~

- Ability to preview PDFs using pdf.js in the browser if it's installed. This
  is disabled by default and can be enabled using the
  `content -> pdfjs-enabled` setting.
- New setting `ui -> hide-wayland-decoration` to hide the window decoration
  when using wayland.
- New userscripts in `misc/userscripts`:
    - `open_download` to easily open a file in your downloads folder.
    - `view_in_mpv` to open a video in mpv and remove it from the page.
    - `qutedmenu` and `dmenu_qutebrowser` to select URLs via dmenu
- New setting `content -> host-blocking-whitelist` to whitelist certain domains
  from the adblocker.
- `{scroll_pos}` can now be used in `ui -> window-title-format` and
  `tabs -> title-format`.
- New setting `general -> url-incdec-segments` to configure which segments of
  the URL should be affected by `:navigate increment/decrement`.
- New `--target` argument to specify how URLs should be opened in an existing
  instance.
- New setting `statusbar.url.fg.success.https` to set the foreground color for
  the URL when a page was loaded via HTTPS.
- The scrollbar in the completion is now styled, and the following new options
  got added:
    * `completion -> scrollbar-width`
    * `completion -> scrollbar-padding`
    * `colors -> completion.scrollbar.fg`
    * `colors -> completion.scrollbar.bg`
- New value `none` for options taking a color system so they don't display a
  gradient:
    * `colors -> tabs.indicator.system`
    * `colors -> downloads.fg.system`
    * `colors -> downloads.bg.system`
- New command `:download-retry` to retry a failed download.
- New command `:download-clear` which replaces `:download-remove --all`.
- `:set-cmd-text` has a new `--append` argument to append to the current
  statusbar text.
- qutebrowser now uses `~/.netrc` if available to authenticate via HTTP.
- New `:fake-key` command to send a fake keypress to a website or to
  qutebrowser.
- New `--mhtml` argument for `:download` to download a page including all
  resources as MHTML file.
- New option `tabs -> title-alignment` to change the alignment of tab titles.

Changed
~~~~~~~

- The `colors -> tabs.bg/fg.selected` option got split into
  `tabs.bg/fg.selected.odd/even`.
- `:spawn --userscript` and `:hint` with the `userscript` target now look up
  relative paths in `~/.local/share/qutebrowser/userscripts` or
  `$XDG_DATA_DIR`. Using a binary in `$PATH` won't work anymore with
  `--userscript`.
- New design for error pages
- Link filtering for hints now checks if the text is contained anywhere in
  the link, and matches case-insensitively.
- The `ui -> remove-finished-downloads` option got changed to an integer and
  now takes a time (in milliseconds) to keep the download around after it's
  finished. When set to `-1`, downloads are never removed.
- The `:follow-hint` command now optionally takes the keystring of a hint to
  follow.
- `:scroll-px` now doesn't take floats anymore, which made little sense.
- Updated the user agent list for the `:set network user-agent` completion.
- Starting with `--debug` doesn't log `VDEBUG` messages anymore (add
  `--loglevel VDEBUG` to get them).
- `:debug-console` now hides the console if it's already shown.
- `:yank-selected` now doesn't log the selected text anymore.
- `general -> log-javascript-console` got changed from a boolean to an option
  taking a loglevel (`none`, `info`, `debug`).
- `:tab-move +/-` now wraps around if `tabs -> wrap` is `true`.
- When a subprocess (like launched by `:spawn`) fails, its stdout/stderr is now
  logged to the console.
- A search engine name can now contain any non-space character, like dashes.

Deprecated
~~~~~~~~~~

- `:download-remove --all` is now deprecated and `:download-clear` should be
  used instead.
- `:download <url> <destination>` is now deprecated and
  `:download --dest <destination> <url>` should be used instead.

Removed
~~~~~~~

- `:scroll` with two pixel-arguments (deprecated in v0.3.0)
- The `:run-userscript` command (deprecated in v0.2.0)
- The `rapid` and `rapid-win` targets for `:hint` (deprecated in v0.2.0)
- The `:cancel-download` command (deprecated in v0.2.0)
- The `:download-page` command (deprecated in v0.2.0)

Fixed
~~~~~

- Fixed retrying of downloads which were started in a now closed tab.
- Fixed displaying of web history if `web-history-max-items` is set to -1.
- Cloned tabs now don't display favicons anymore if show-favicons is False.
- Fixed a crash when clicking a bookmark name and pressing `Ctrl-D`.
- Fixed a crash when a website presents a very small favicon.
- Fixed prompting for download directory when
  `storage -> prompt-download-directory` was unset.
- Fixed crash when using `:follow-hint` outside of hint mode.
- Fixed crash when using `:set foo bar?` with invalid section/option.
- Fixed scrolling to the very left/right with `:scroll-perc`.
- Using an external editor should now work correctly with some funny chars
  (U+2028/U+2029/BOM).
- Movements in caret mode now should work correctly on macOS and Windows.
- Fixed upgrade from earlier config versions.
- Fixed crash when killing a running userscript.
- Fixed characters being passed through when shifted with
  `forward-unbound-keys` set to `auto`.
- Fixed restarting after a crash is reported.
- Removed `.pyc` files accidentally contained in source releases.

v0.4.1
------

Fixed
~~~~~

- Adjusted AppArmor config for the IPC changes in v0.4.0.
- Fixed atime update frequency for IPC file.
- Worked around a Qt issue where middle-clicking caused scrolling with a
  touchpad to restart at the beginning of the page.
- The `completion -> web-history-max-items` setting is now also respected for
  items added after starting qutebrowser.
- Search terms are now shared between different tabs again
- Tests (a reduced subset of them) now run correctly again when DISPLAY is not
  set.
- Fixed an issue causing qutebrowser to crash with Python 3.5 as soon as an ad
  was blocked.
- Fixed an issue causing qutebrowser to not start with more recent Python 3.4
  versions (e.g. on Debian experimental).
- Fixed various `PendingDeprecationWarnings` shown with Python 3.5.

v0.4.0
------

Added
~~~~~

- New bookmark functionality (similar to quickmarks without a name).
    * New command `:bookmark-add` to bookmark the current page (bound to `M`).
    * New command `:bookmark-load` to load a bookmark (bound to `gb`/`gB`/`wB`).
- New (hidden) command `:completion-item-del` (bound to `<Ctrl-D>`) to delete
  the current item in the completion (for quickmarks/bookmarks).
- New settings `tabs -> padding` and `tabs -> indicator-tabbing` to control the
  size/padding of the tabbar.
- New setting `ui -> statusbar-padding` to control the size/padding of the
  status bar.
- New setting `network -> referer-header` to configure when the referer should
  be sent (by default it's only sent while on the same domain).
- New setting `tabs -> show` which supersedes the old `tabs -> hide-*` options
  and has an additional `switching` option which shows tab while switching
  them. There's also a new `show-switching` option to configure the timeout.
- New setting `storage -> remember-download-directory` to remember the last
  used download directory.
- New setting `storage -> prompt-download-directory` to download all downloads
  without asking.
- Rapid hinting is now also possible for downloads.
- Directory browsing via `file://` is now supported.

Changed
~~~~~~~

- Some developer scripts got moved to `scripts/dev/`
- When downloading to a FIFO or special file, a confirmation is displayed as
  this might cause qutebrowser to hang.
- The `:yank-selected` command now works in all modes instead of just caret
  mode and is not hidden anymore.
- `minimal_webkit_testbrowser.py` now has a `--webengine` switch to test
  QtWebEngine if it's installed.
- The column width percentages for the completion view now depend on the
  completion model.
- The values for `tabs -> position` and `ui -> downloads-position` got changed
  from `north`/`south`/`west/`east` to `top`/`bottom`/`left`/`right`. Existing
  configs should be adjusted automatically.
- `:tab-focus`/`gt` now behaves like `:tab-next` if no count/index is given.
- The completion widget doesn't show a border anymore.
- The tabbar doesn't display ugly arrows anymore if there isn't enough space
  for all tabs.
- Some insignificant Qt warnings which were printed on macOS are now hidden.
- Better support for Qt 5.5 and Python 3.5.

Fixed
~~~~~

- Fixed a bug where cookies were saved despite qutebrowser being started in
  private browsing mode.
- The local socket used for inter-process communication (opening new instances)
  is now ensured to only be accessible by the user on all operating systems.
- Various corner cases for inter-process communication issues got fixed.
- `link_pyqt.py` now should work better on untested distributions.
- Fixed various corner-cases with crashes when reading invalid config values
  and the history file.
- Fixed various corner-cases when setting text via an external editor.
- Fixed potential crash when hinting a text field.
- Fixed entering of insert mode when certain disabled text fields were clicked.
- Fixed a crash when using `:set` with `-p` and `!` (invert value)
- Downloads with unknown size are now handled correctly.
- `:navigate increment/decrement` (`<Ctrl-A>`/`<Ctrl-X>`) now handles some
  corner-cases better.
- Fixed a bug where the completion got affected by another window's completion
  if it was open in both windows.
- Fixed a performance issue with large histories when opening previously
  unvisited websites.
- The progress bar now doesn't cause the statusbar to change it's height
  anymore.
- `~` is now always expanded when spawning a script.
- Fixed various corner cases when opening links in an existing instance.
- Fixed a race-condition causing an exception when starting qutebrowser.

Removed
~~~~~~~

- The `tabs -> indicator-space` setting got removed as the new padding settings
  should be used instead.
- The `tabs -> hide-always` and `tabs -> hide-auto` settings got merged into
  the new `tabs -> show` setting.

v0.3.0
------

Added
~~~~~

- New commands `:message-info`, `:message-error` and `:message-warning` to show messages in the statusbar, e.g. from a userscript.
- New command `:scroll-px` which replaces `:scroll` for pixel-exact scrolling.
- New command `:jseval` to run a javascript snippet on the current page.
- New (hidden) command `:follow-selected` (bound to `Enter`/`Ctrl-Enter` by default) to follow the link which is currently selected (e.g. after searching via `/`).
- New (hidden) command `:clear-keychain` to clear a partially entered keychain (bound to `<Escape>` by default, in addition to clearing search).
- New setting `ui -> smooth-scrolling`.
- New setting `content -> webgl` to enable/disable https://www.khronos.org/webgl/[WebGL].
- New setting `content -> css-regions` to enable/disable support for http://dev.w3.org/csswg/css-regions/[CSS Regions].
- New setting `content -> hyperlink-auditing` to enable/disable support for https://html.spec.whatwg.org/multipage/semantics.html#hyperlink-auditing[hyperlink auditing].
- New setting `tabs -> mousewheel-tab-switching` to control mousewheel behavior on the tab bar.
- New arguments `--datadir` and `--cachedir` to set the data/cache location.
- New arguments `--basedir` and `--temp-basedir` (intended for debugging) to set a different base directory for all data, which allows multiple invocations.
- New argument `--no-err-windows` to suppress all error windows.
- New arguments `--top-navigate` and `--bottom-navigate` (`-t`/`-b`) for `:scroll-page` to specify a navigation action (e.g. automatically go to the next page when arriving at the bottom).
- New flag `-d`/`--detach` for `:spawn` to detach the spawned process so it's not closed when qutebrowser is.
- New flag `-v`/`--verbose` for `:spawn` to print information when the process started/exited successfully.
- Many new color settings (foreground setting for every background setting).
- New setting `ui -> modal-js-dialog` to use the standard modal dialogs for javascript questions instead of using the statusbar.
- New setting `colors -> webpage.bg` to set the background color to use for websites which don't set one.
- New setting `completion -> auto-open` to only open the completion when tab is pressed (if set to false).
- New visual/caret mode (bound to `v`) to select text by keyboard.
- There are now some example userscripts in `misc/userscripts`.
- Support for Qt 5.5 and tox 2.0

Changed
~~~~~~~

- *Breaking change for userscripts:* `QUTE_HTML` and `QUTE_TEXT` for userscripts now don't store the contents directly, and instead contain a filename.
- The `content -> geolocation` and `notifications` settings now support a `true` value to always allow those. However, this is *not recommended*.
- New bindings `<Ctrl-R>` (rapid), `<Ctrl-F>` (foreground) and `<Ctrl-B>` (background) to switch hint modes while hinting.
- `<Ctrl-M>` and numpad-enter are now bound by default for bindings where `<Return>` was bound.
- `:hint tab` and `F` now respect the `background-tabs` setting. To enforce a foreground tab (what `F` did before), use `:hint tab-fg` or `;f`.
- `:scroll` now takes a direction argument (`up`/`down`/`left`/`right`/`top`/`bottom`/`page-up`/`page-down`) instead of two pixel arguments (`dx`/`dy`). The old form still works but is deprecated.
- The `ui -> user-stylesheet` setting now also takes file paths relative to the config directory.
- The `content -> cookies-accept` setting now has new `no-3rdparty` (default) and `no-unknown-3rdparty` values to block third-party cookies. The `default` value got renamed to `all`.
- Improved startup time by reading the webpage history while qutebrowser is open.
- The way `:spawn` splits its commandline has been changed slightly to allow commands with flags.
- The default for the `new-instance-open-target` setting has been changed to `tab`.
- Sessions now store zoom/scroll-position separately for each entry.

Deprecated
~~~~~~~~~~

- `:scroll` with two pixel-arguments is now deprecated - `:scroll-px` should be used instead.

Removed
~~~~~~~

- The `--no-crash-dialog` argument which was intended for debugging only was removed as it's replaced by `--no-err-windows` which suppresses all error windows.
- Support for Qt installations without SSL support was dropped.

Fixed
~~~~~

- Scrolling should now work more reliably on some pages where arrow keys worked but `hjkl` didn't.
- Small improvements when checking if an input is a URL or not.
- Fixed wrong cursor position when completing the first item in the completion.
- Fixed exception when using search engines with {foo} in their name.
- Fixed a bug where the same title was shown for all tabs on some systems.
- Don't install the scripts package when installing qutebrowser.
- Fixed searching for terms starting with a hyphen (e.g. `/-foo`)
- Proxy authentication credentials are now remembered between different tabs.
- Fixed updating of the tab title on pages without title.
- Fixed AssertionError when closing many windows quickly.
- Various fixes for deprecated key bindings and auto-migrations.
- Workaround for qutebrowser not starting when there are NUL-bytes in the history (because of a currently unknown bug).
- Fixed handling of keybindings containing Ctrl/Meta on macOS.
- Fixed crash when downloading a URL without filename (e.g. magnet links) via "Save as...".
- Fixed exception when starting qutebrowser with `:set` as argument.
- Fixed horrible completion performance when the `shrink` option was set.
- Sessions now store zoom/scroll-position correctly.

https://github.com/qutebrowser/qutebrowser/releases/tag/v0.2.1[v0.2.1]
-----------------------------------------------------------------------

Fixed
~~~~~

- Added missing manpage (doc/qutebrowser.1.asciidoc) to archive.

https://github.com/qutebrowser/qutebrowser/releases/tag/v0.2.0[v0.2.0]
-----------------------------------------------------------------------

Added
~~~~~

- Session support
    * new command `:session-load` to load a session.
    * new command `:session-save` to save a session.
    * new command `:session-delete` to delete a session.
    * new setting `general -> save-session` to always save the session on quit.
    * new setting `general -> session-default-name` to configure the session name to use if none is given.
    * new argument `-r`/`--restore` to specify a session to load.
    * new argument `-R`/`--override-restore` to not load a session even if one was saved.
- New commands to manage downloads:
    * `:download` to download a URL or the current page.
    * `:download-cancel` to cancel a download.
    * `:download-delete` to delete a download from disk.
    * `:download-open` to open a finished download.
    * `:download-remove` to remove a download from the list. `:download-remove --all` or the new 'cd' keybinding can be used to clear all finished downloads.
- History completion
    * New option `completion -> timestamp-format` to set the format used to display the history timestamps.
    * New option `completion -> web-history-max-items` to configure how many history items to show in the completion.
    * The option `completion -> history-length` for the command history got renamed to `cmd-history-max-items`.
- Better save logic for the config/state:
    * Only save files if modified (e.g. don't overwrite the config if it was edited outside of qutebrowser and nothing was changed in qutebrowser).
    * Save things (cookies, config, quickmarks, ...) periodically all 15 seconds (time can be changed with the `general -> auto-save-interval` option).
- Opera-like mouse rocker gestures
    * New option `input -> rocker-gestures`. When turned on, the history can be navigated back/forward by holding a mouse button and pressing the other one.
- New `-f` option for `:reload` to reload and bypass the cache.
- Pass more information (`QUTE_MODE`, `QUTE_SELECTED_TEXT`, `QUTE_SELECTED_HTML`, `QUTE_USER_AGENT`, `QUTE_HTML`, `QUTE_TEXT`) to userscripts.
- New `--userscript` option to `:spawn` (which deprecates `:run-userscript`).
- Ability to toggle a value to `:set` by appending a `!` to the value.
- New options to hide the tab-/statusbar:
    * `tabs -> hide-always` for the tabbar
    * `ui -> hide-statusbar` for the statusbar
- New options to configure how the tab/window titles should look:
    * `tabs -> title-format` for the tabbar
    * `ui -> window-title-format` for the window title
- HTML5 Geolocation/Notification support:
    * New option `content -> geolocation` to permanently turn the geolocation off.
    * New option `content -> notifications` to permanently turn notifications off.
- New options to disable javascript prompts/alerts:
    * `content -> ignore-javascript-prompt` to turn off prompts.
    * `content -> ignore-javascript-alerts` to turn off alerts.
- Two new options to customize the behavior of hints:
    * `hints -> min-chars` to set minimum number of chars in hints.
    * `hints -> scatter` which when turned off distributes the hints sequentially (like dwb) instead of scattering their positions (like Vimium).
- Make it possible to use `:open -[twb]` without url.
    * New option `general -> default-page` to set the page to be opened when doing that.
- New `input -> partial-timeout` option to clear partial keystrings.
- New option `completion -> download-path-suggestion` to configure what to show in the completion for downloads.
- Queue messages shown in unfocused windows and show them when the window is focused.
    * New option `ui -> message-unfocused` to disable this behavior.
- New `--relaxed-config` argument which ignores unknown options.
- New `:tab-detach` command to open the current tab in a new window.
- Zooming via Ctrl-Mousewheel.
    * New option `input -> mouse-zoom-divider` to control how much the page is zoomed when rotating the wheel.
- New option (`content -> host-blocking-enabled`) to enable/disable host blocking.
- New values `tab-bg`/`tab-bg-silent` for `new-instance-open-target` to open a background tab.
- New `ui -> downloads-position` setting to move the downloads to the bottom.
- New `ui -> hide-mouse-cursor` option to hide the mouse cursor inside qutebrowser.
- New argument `-s` for qutebrowser to set a temporary config option.
- New argument `-p` for the `:set` command to print the new value.
- New `--rapid` option to `:hint`. The `rapid`/`rapid-win` targets are now deprecated, and `--rapid` can be used as well with the targets run/hover/userscript/spawn as well.
- New `-f` argument to `:bind` to overwrite the old binding.
- New `--qt-name` argument to qutebrowser which is passed to Qt to set `WM_CLASS`.
- Alternating row colors in completion. This adds a new `colors -> completion.alternate-bg` option.

Changed
~~~~~~~

- Ignore quotes with maxsplit-commands (`:open`, `:quickmark-load`, etc.) and don't quote arguments for those commands in the completions. This also means some commands needed adjustments:
    * Clear search when `:search` without arguments is given.  (`:search ""` will now search for the literal text `""`)
    * Add `-s`/`--space` argument to `:set-cmd-text` (as `:set-cmd-text "foo "` will now set the literal text `"foo "`)
- Ignore `;;` for splitting with some commands like `:bind`.
- Add unbound (new) default keybindings to config. This also adds a new `<unbound>` special command.
    * To unbind a command keybinding without binding it to a new key, you now have to bind it to `<unbound>` or it'll be readded automatically.
- If an SSL error is raised multiple times with the same error/certificate/host/scheme/port, the user is only asked once.
- Jump to last instead of first item when pressing Shift-Tab the first time in the completion.
- Add a fullscreen keybinding.
- Add a `:search` command in addition to `/foo` so it's more visible and can be used from scripts.
- Various improvements to documentation, logging, and the crash reporter.
- Expand `~` to the users home directory with `:run-userscript`.
- Improve the userscript runner on Linux/macOS by using `QSocketNotifier`.
- Add luakit-like `gt`/`gT` keybindings to cycle through tabs.
- Show default value for config values in the completion.
- Clone tab icon, tab text and zoom level when cloning tabs.
- Don't open relative file paths with `:open`, only with commandline arguments.
- Expand environment variables in config settings which take a file path.
- Add a list of common user agents to the user agent setting completion.
- Move cursor to end of textboxes when hinting.
- Don't start searches on invalid URLs for quickmarks/startpage.
- Various performance improvements for the completion.
- Always open URLs given as argument in the foreground.
- Improve various error messages.
- Add `startpage`/`default-page` values to `tabs -> last-close`.
- Various improvements to `:restart` - it should be more robust now and uses sessions so all state (focused tab, scroll position, etc.) gets remembered.
- Add tab index display to the statusbar.
- Keep progress bar height fixed when the statusbar is multiline.
- Many improvements to tests and related infrastructure:
    * `init_venv.py` and `run_checks.py` have been replaced by http://tox.readthedocs.org/[tox]. Install tox and run `tox -e mkvenv` instead.
    * The tests now use http://pytest.org/[pytest]
    * Many new tests added
    * Mac Mini buildbot to run the tests on macOS.
    * Coverage recording via http://nedbatchelder.com/code/coverage/[coverage.py].
    * New `--pdb-postmortem argument` to drop into the pdb debugger on exceptions.
    * Use https://github.com/ionelmc/python-hunter[hunter] for line tracing instead of a selfmade solution.

Deprecated
~~~~~~~~~~

- The `:run-userscript` command - use `:spawn --userscript` instead.
- The `rapid` and `rapid-win` targets for `:hint` - use the `--rapid` argument to `:hint` instead.
- The `:cancel-download` command - use `:download-cancel` instead.
- The `:download-page` command - use `:download` instead.

Removed
~~~~~~~

- `init_venv.py` and `run_checks.py` have been replaced by http://tox.readthedocs.org/[tox]. Install tox and run `tox -e mkvenv` instead..

Fixed
~~~~~

- Fix for cache never being used.
- Fixed handling of key release events (e.g. for javascript) when holding a key and pressing a second one.
- Fix handling of commands using `;;` at various places (key config, command parser, `:bind`)
- Fix splitting of flags with arguments (`:bind -m`/`--mode`).
- Fix bindings of special keys with lower-case modifiers (e.g.  `<ctrl-x>`)
- Fix for weird search highlights when changing tabs while search is active.
- Fix starting with `-c ""`.
- Fix removing of partial downloads when a download is cancelled via context menu.
- Fix retrying of downloads which were started in a now closed tab.
- Highlight text case-insensitively in completion.
- Scroll completion to top when showing it.
- Handle unencodable file paths in config types correctly.
- Fix for crash when executing a delayed command (because of a shadowed keybinding) and then unfocusing the window.
- Fix for crash when hinting on a page which doesn't have a URL yet.
- Fix exception when using `:set-cmd-text` with an empty argument.
- Add a timeout to pastebin HTTP replies.
- Various other fixes for small/rare bugs.

https://github.com/qutebrowser/qutebrowser/releases/tag/v0.1.4[v0.1.4]
-----------------------------------------------------------------------

Changed
~~~~~~~

* The Windows builds come with Qt 5.4.1 which has some https://lists.schokokeks.org/pipermail/qutebrowser/2015-March/000054.html[related bugfixes].
* Improvements to CPU usage when idle.
* Ensure there's no size for `font-family` settings.
* Handle URLs with double-colon as search strings.
* Adjust prompt size hint based on content.
* Refactor websettings and save/restore defaults.
* Various small improvements to logging.
* Various improvements for hinting.
* Improve parsing of `faulthandler` logs.

Removed
~~~~~~~

* Remove default search engines.
* Remove debug console completing completely.

Fixed
~~~~~

* Ignore RuntimeError in `mouserelease_insertmode`.
* Hide Qt warning when aborting download reply.
* Hide "Error while shutting down tabs" message.
* Clear open target in `acceptNavigationRequest`.
* Fix handling of signals with deleted tabs.
* Restore `sys.std*` in `utils.fake_io` on exceptions.
* Allow font names with integers in them.
* Fix `QIODevice` warnings when closing tabs.
* Set the `QSettings` path to a config-subdirectory.
* Add workaround for adblock-message without window.
* Fix searching for terms starting with a slash.
* Ignore tab key presses if they'd switch focus.

Security
~~~~~~~~

* Stop the icon database from being created when private-browsing is set to true.
* Disable insecure SSL ciphers.

https://github.com/qutebrowser/qutebrowser/releases/tag/v0.1.3[v0.1.3]
-----------------------------------------------------------------------

Changed
~~~~~~~

* Various small logging improvements.
* Don't open relative files in `fuzzy_url` with `:open`
* Various crashdialog improvements.
* Hide adblocked iframes.

Fixed
~~~~~

* Handle shutdown of page with prompt correctly.
* fuzzy_url: handle invalid URLs with autosearch off
* Handle explicit searches with `auto-search=false`.
* Abort download override question on error/cancel.
* Set a higher z-index for hint labels.
* Close contextmenu when closing tab to avoid crash.
* Fix statusbar quickly popping up as window.
* Clean up `NetworkManager` after downloads finished.
* Fix restoring of cmd widget after an error.
* Fix retrying of downloads after the tab is closed.
* Fix `check_libraries()` output for Arch Linux.
* Handle all `IPCErrors` properly.
* Handle another `webelem.IsNullError` with hints.
* Handle `UnicodeDecodeError` when reading configs.

Security
~~~~~~~~

* Fix for HTTP passwords accidentally being written to debug log.

https://github.com/qutebrowser/qutebrowser/releases/tag/v0.1.2[v0.1.2]
-----------------------------------------------------------------------

Changed
~~~~~~~

* Uncheck sending of debug log by default when private browsing is on.
* Add SSL info to version info.

Removed
~~~~~~~

* Remove hosts-file.net from blocker default lists.

Fixed
~~~~~

* Fix rare exception when a key is pressed shortly after opening a window
* Fix exception with certain invalid URLs like `http:foo:0`
* Work around Qt bug which renders checkboxes on macOS unusable
* Fix exception when a local files can't be read in `:adblock-update`
* Hide 2 more Qt warnings.
* Add `!important` to hint CSS so websites don't override the hint look
* Make `init_venv.py` work with multiple sip `.so` files.
* Fix splitting with certain commands with an empty argument
* Fix uppercase hints.
* Fix segfaults if another page is loaded while a prompt is open
* Fix exception with invalid `ShellCommand` config values.
* Replace unencodable chars
* Fix user-stylesheet setting with an empty value.


https://github.com/qutebrowser/qutebrowser/releases/tag/v0.1.1[v0.1.1]
-----------------------------------------------------------------------

Added
~~~~~

* Set window icon and add a qutebrowser.ico file for Windows.
* Ask the user when downloading to an already existing file.
* Add a `network -> proxy-dns-requests` option.
* Add "Remove finished" to the download context menu
* Open and remove clicked downloads.

Changes
~~~~~~~

* Windows releases are now built with Qt 5.4 which brings many improvements and bugfixes.
* Add a troubleshooting section to the FAQ.
* Display IPC errors to the user.
* Rewrite keymode handling to use only one mode which also fixes various bugs.
* Save version to state config.
* Set zoom to default instead of 100% with `:zoom`/`=`.
* Adjust page zoom if default zoom changed.
* Force tabs to be focused on `:undo`.
* Replace manual installation instructions on macOS with homebrew/macports.
* Allow min-/maximizing of print preview on Windows.
* Various documentation improvements.
* Various other small improvements and cleanups.

Removed
~~~~~~~

* Clean up and temporarily disable alias completion.

Fixed
~~~~~

* Fix setting of `QWebSettings` (e.g. web fonts) with empty strings.
* Re-focus web view when leaving prompt/yesno mode.
* Handle `:restart` correctly with Python eggs.
* Handle an invalid cwd properly.
* Fix popping of a dead question in prompter.
* Fix `AttributeError` on config changes on Ubuntu.
* Don't treat things like "31c3" as IP address.
* Handle category being `None` in Qt message handler.
* Force-include pygments in `freeze.py`.
* Fix scroll percentage not updating on some pages like twitter.
* Encode `Content-Disposition` header name properly.
* Fix item sorting in `NeighborList`.
* Handle data being `None` in download read timer.
* Stop download read timer when reply has finished.
* Fix handling of small/big `fuzzyval`'s in `NeighborList`.
* Fix crashes when entering invalid values in `qute:settings`.
* Abort questions in `NetworkManager` when destroyed.
* Fix height calculation of download view.
* Always auto-remove adblock downloads when done.
* Ensure the docs get included in `freeze.py`.
* Fix crash with `:zoom`.

https://github.com/qutebrowser/qutebrowser/releases/tag/v0.1[v0.1]
-------------------------------------------------------------------

Initial release.