All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
v1.0.0 (unreleased)
Breaking changes
- 
Dependency changes 
- 
Support for legacy QtWebKit (before 5.212 which is 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. 
- 
(TODO) New dependency on ruamel.yaml; dropped PyYAML dependency. 
- 
New dependency on the QtSql module and Qt sqlite support. 
- 
New dependency on the attrsPython module.
- 
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. 
- 
(TODO) The QtWebEngine backend is now used by default if available. 
- 
New config system which ignores the old config file. 
- 
Various documentation files got moved to the doc/ subfolder, qutebrowser.desktopgot moved to misc/.
- 
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 --harfbuzzand--relaxed-configcommandline arguments got dropped.
- 
:setnow doesn’t support toggling/cycling values anymore, that functionality got moved to:config-cycle.
- 
:scroll-percgot renamed to:scroll-to-perc.
Major changes
- 
New completion engine based on sqlite, which allows to complete the entire browsing history. 
- 
Completely rewritten configuration system. 
Added
- 
New back/forward indicator in the statusbar 
- 
New bindings.key_mappingssetting to map keys to other keys
- 
New qt_argssetting to pass additional arguments to Qt/Chromium
- 
New backendsetting to select the backend to use (auto/webengine/webkit). Together with the previous setting, this should make wrapper scripts unnecessary.
- 
Proxy authentication is now supported with the QtWebEngine backend. 
- 
New config commands: 
- 
:config-cycleto cycle an option between multiple values.
- 
:config-unsetto remove a configured option
- 
:config-clearto remove all configured options
- 
:config-sourceto (re-)read aconfig.pyfile
- 
:config-editto open theconfig.pyfile in an editor
- 
:config-write-pyto write aconfig.pytemplate file
- 
New :versioncommand which opensqute://version.
Changed
- 
Using :downloadnow uses the page’s title as filename.
- 
Using :backor:forwardwith a count now skips intermediate pages.
- 
When there are multiple messages shown, the timeout is increased. 
- 
:searchnow 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.pinnedsetting got removed.
- 
:set-cmd-textnow has a--run-on-countargument to run the underlying command directly if a count was given.
Fixes
- 
Exiting fullscreen via :fullscreenor buttons on a page now restores the correct previous window state (maximized/fullscreen).
- 
When input.insert_mode.auto_loadis set, background tabs now don’t enter insert mode anymore.
- 
The keybinding help widget now works correctly when using keybindings with a count. 
v0.11.1 (unreleased)
Fixes
- 
Fixed empty space being shown after tabs in the tabbar in some cases. 
- 
Fixed :restartin 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.QtOpenGLif 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 PyOpenGLif QtWebEngine is used.
Added
- 
Private browsing is now implemented for QtWebEngine, and changed its behavior: The general -> private-browsingsetting now only applies to newly opened windows, and you can use the-pflag to:opento open a private window.
- 
New "pinned tabs" feature, with a new :tab-pincommand (bound to<Ctrl-p>by default).
- 
(QtWebEngine) Implemented :follow-selected.
- 
New :clear-messagescommand to clear shown messages.
- 
New ui -> keyhint-delaysetting to configure the delay until the keyhint overlay pops up.
- 
New -soption for:opento force a HTTPS scheme.
- 
:debug-log-filternow acceptsnoneas an argument to clear any log filters.
- 
New --debug-flagargument which replaces--debug-exitand--pdb-postmortem.
- 
New tabs -> favicon-scaleoption to scale up/down favicons.
- 
colors -> statusbar.bg/fg.privateand.command.privateto customize statusbar colors for private windows.
- 
New {private}field displaying[Private Mode]forui -> window-title-formatandtabs -> 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://historypage (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-timeoutis 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-cloneand:navigate --tabnow don’t open the tab as "explicit" anymore, i.e. (with the default settings) open it next to the active tab.
- 
qute:*pages now usequte://*instead (e.g.qute://versioninstead ofqute:version), but the old versions are automatically redirected.
- 
Texts in prompts are now selectable. 
- 
The default level for :messagesis nowinfo, noterror
- 
Trying to focus the currently focused tab with :tab-focusnow focuses the last viewed tab.
- 
(QtWebEngine) With Qt 5.9, content -> cookies-storecan 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 :downloadon 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-filterwhen--filterwasn’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 qt5ctnow 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.userAgentis 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-pagewith--bottom-navigatenow 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-argand--qt-flagcan 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_TEXTenvironment variable, containing the current commandline contents
- 
New ripbanguserscript to create a searchengine from a duckduckgo bang
- 
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-backgroundsoption with Qt >= 5.8
- 
The content -> cookies-storeoption
- 
The storage -> cache-sizeoption
- 
The colors -> webpage.bgoption
- 
The HTML5 fullscreen API (e.g. youtube videos) with QtWebEngine 
- 
:download --mhtml
 
- 
- 
New qute:historyURL and:historycommand to show the browsing history
- 
Open tabs are now auto-saved on each successful load and restored in case of a crash 
- 
:jsevalnow has a--fileflag so you can pass a javascript file
- 
:session-savenow has a--only-active-windowflag 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-dividercan now be 0 to disable zooming by mouse wheel
- 
network -> proxycan also be set topac+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 intostorage -> 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-modenow 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 --mhtmlnow 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/nextnow detectsrelattributes on<a>elements, and handles multiplerelattributes correctly
- 
Fixed a crash when hinting with target userscriptand 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-wordcommand which does what:rl-unix-word-ruboutdid before v0.8.0.
- 
New :rl-unix-filename-ruboutcommand which is similar to readline’sunix-filename-rubout.
- 
New fonts -> completion.categorysetting to customize the font used for completion category headers.
- 
New :debug-log-capacitycommand to adjust how many lines are logged into RAM (to report bugs which are difficult to reproduce).
- 
New hide-unmatched-rapid-hintsoption to not hide hint unmatched hint labels in rapid mode.
- 
New {clipboard}and{primary}replacements for the commandline which replace the:pastecommand.
- 
New :insert-textcommand to insert a given text into a field on the page, which replaces:paste-primarytogether with the{primary}replacement.
- 
New :window-onlycommand to close all other windows.
- 
New prev-categoryandnext-categoryarguments to:completion-item-focusto focus the previous/next category in the completion (bound to<Ctrl-Tab>and<Ctrl-Shift-Tab>by default).
- 
New :click-elementcommand to fake a click on a element.
- 
New :debug-log-filtercommand to change console log filtering on-the-fly.
- 
New :debug-log-levelcommand to change the console loglevel on-the-fly.
- 
New general -> yank-ignored-url-parametersoption to configure which URL parameters (likeutm_sourceetc.) to strip off when yanking an URL.
- 
Support for the HTML5 page visibility API 
- 
New readabilityuserscript which shows a readable version of a page (using thereadability-lxmlpython package)
- 
New castuserscript to show a video on a Google Chromecast
- 
New :run-with-countcommand which replaces the (undocumented):count:commandsyntax.
- 
New :record-macro(q) and:run-macro(@) commands for keyboard macros.
- 
New ui -> hide-scrollbarsetting to hide the scrollbar independently of theuser-stylesheetsetting.
- 
New general -> default-open-dispatchersetting to configure what to open downloads with (instead of e.g.xdg-openon 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 -> opacitysetting does not exist anymore, but you can usergba(r, g, b, alpha)colors instead forcolors -> hints.bg.
- 
The hints -> fontsetting is not affected byfonts -> web-family-fixedanymore. Thus, a transformer got added to changeMonospaceto${_monospace}.
- 
Gradients in hint colors can now be configured by using qlineargradientand 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 qutehintelements inuser-stylesheetwas never officially supported and does not work anymore.
- 
Hints are now not affected by the page’s stylesheet or zoom anymore. 
 
- 
- 
:bookmark-addnow has a--toggleflag which deletes the bookmark if it already exists.
- 
:bookmark-loadnow has a--deleteflag which deletes the bookmark after loading it.
- 
:opennow also accepts quickmark names instead of URLs
- 
:tab-movenow optionally takes an index for absolute moving.
- 
Commands taking either an argument or a count (like :zoomor:tab-focus) now prefer the count instead of showing an error message.
- 
:opennow has an--implicitargument 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-openand:prompt-open-downloadnow have an optionalcmdlineargument to pass a commandline to open the download with.
- 
:yanknow 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,:repeatand:bind) now don’t immediately evaluate variables.
- 
Tab titles in the :buffercompletion now update correctly when a page’s title is changed via javascript.
- 
:hintnow has a--mode <mode>flag to override the hint mode configured using thehints -> modesetting.
- 
With new-instance-open-targetset 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 newnew-instance-open-target.windowsetting. It can also be set tolast-visibleto show the pages in the most recently visible window, orfirst-openedto use the first (oldest) available window.
- 
Word hints now are more clever about getting the element text from some elements. 
- 
Completions for :helpand:bindnow also show hidden commands
- 
The :buffercompletion now also filters using the first column (id).
- 
:undohas been improved to reopen tabs at the position they were closed.
- 
:navigatenow takes a count forup/increment/decrement.
- 
The hints -> auto-followsetting now can be set toalways/full-match/unique-match/neverto 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-formatnow treats an empty string as valid.
- 
Bindings for :,/and?are now configured explicitly and not hardcoded anymore.
- 
The completion -> showsetting can now be set toalways,autoornever.
- 
:open-editorcan 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-windowsgot renamed tojavascript-can-open-windows-automatically.
- 
:prompt-acceptnow optionally accepts a value which overrides the one entered in the input box.yesandnocan be used as values for yes/no questions.
- 
The new --qt-argand--qt-flagarguments 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 fromstatusbar.fg.error)
- 
colors -> messages.bg.error(renamed fromstatusbar.bg.error)
- 
colors -> messages.border.error
- 
colors -> messages.fg.warning(renamed fromstatusbar.fg.warning)
- 
colors -> messages.bg.warning(renamed fromstatusbar.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:settingspage now also shows option descriptions.
- 
qute:versionandqutebrowser --versionnow 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/previousarguments now takeprev/next/last-usedto remove ambiguity.
- 
The ui -> user-stylesheetsetting now only takes filenames, not CSS snippets
- 
ui -> window-title-formatnow has a new `xhtml11 ` replacement
- 
:hinthas a new--add-historyargument to add the URL to the history for yank/spawn targets.
- 
:setnow cycles through values if more than one argument is given.
- 
:opennow opensdefault-pagewithout an URL even without-t/-b/-wgiven.
Deprecated
- 
The :pastecommand got deprecated as:openwith{clipboard}and{primary}can be used instead.
- 
The :paste-primarycommand got deprecated as:insert-text {primary}can be used instead.
- 
The :prompt-yesand:prompt-nocommands got deprecated as:prompt-accept yesand:prompt-accept nocan be used instead.
Removed
- 
The :yank-selectedcommand got merged into:yankas:yank selectionand thus removed.
- 
The :completion-item-prevand:completion-item-nextcommands got merged into a new:completion-focus {prev,next}command and thus removed.
- 
The ui -> hide-mouse-cursorsetting since it was completely broken and nobody seemed to care.
- 
The hints -> opacitysetting - see the "Changed" section for details.
- 
The completion -> auto-opensetting got merged intocompletion -> showand thus removed.
- 
All --qt-*arguments got replaced by--qt-argand--qt-flagand thus removed.
- 
The -c/--confdir,--datadirand--cachedirarguments got removed, as--basedirshould be sufficient.
Fixed
- 
:undonow doesn’t undo tabs "closed" by:tab-detachanymore.
- 
Fixed an issue with hint chars not being cleared correctly when leaving hint mode. 
- 
:tab-detachnow 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-intervalto 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 
- 
:bindcan now be used to bind to an alias (binding by editingkeys.confalready worked before)
- 
The command completion now updates correctly when changing aliases 
- 
The tabbar now displays correctly with the Adwaita Qt theme 
- 
The default skkeybinding now sets the commandline to:bindcorrectly
- 
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-browsingnot 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 ;oand;Obindings
- 
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-downloadwith 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 :restartdeleting 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-commandcommand (mapped to.) to repeat the last command. Note that two former default bundings conflict with that binding, unbinding them via:unbind .iand:unbind .ois recommended.
- 
New qute:bookmarkspage which displays all bookmarks and quickmarks.
- 
New :prompt-open-download(bound toCtrl-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 ;tfor:hint input.
- 
New variables $QUTE_CONFIG_DIR,$QUTE_DATA_DIRand$QUTE_DOWNLOAD_DIRavailable for userscripts.
- 
New option ui→status-positionto configure the position of the status bar (top/bottom).
- 
New --pdf <filename>argument for:printWHICH can be used to generate a PDF without a dialog.
Changed
- 
:scroll-percnow prefers a count over the argument given to it, which meansggcan be used with a count.
- 
Aliases can now use ;;to have an alias which executed multiple commands.
- 
:edit-urlnow does nothing if the URL isn’t changed in the spawned editor.
- 
:bookmark-addcan now be passed a URL and title to add that as a bookmark rather than the current page.
- 
New taskadduserscript to add a taskwarrior task annotated with the current URL.
- 
:bookmark-deland:quickmark-delnow 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-messagessetting.
- 
The general -> wrap-searchsetting as searches now always wrap. According to a quick straw poll and prior crash logs, almost nobody is usingwrap-search = false, and turning off wrapping is not possible with QtWebEngine.
- 
:edit-urlnow 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-urlcommand to edit the URL in an external editor.
- 
New network -> custom-headerssetting 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-markcommand to jump to a mark, bound to'
- 
New :set-markcommand 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-colorargument to force colored logging even if stdout is not a terminal
- 
New :messagescommand 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-timeoutsetting to ignore keypresses after following a hint when filtering in number mode.
- 
New :history-clearcommand to clear the entire history
- 
New hints -> find-implementationto select which implementation (JS/Python) should be used to find hints on a page. Thejavascriptimplementation is better, but slower.
- 
New inputsgroup for:hintto hint text input fields.
Changed
- 
qutebrowser got a new (slightly updated) logo 
- 
:tab-focuscan now take a negative index to focus the nth tab counted from the right.
- 
:yankcan now yank the pretty/decoded URL by adding--pretty
- 
:navigatenow clears the URL fragment
- 
:completion-item-del(Ctrl-D) can now be used in:buffercompletion 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-windowsset.
- 
:bind <key>without a command now shows the existing binding
- 
The optional colorlogdependency 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 normalhint target, which can be useful with javascript click handlers or checkboxes which don’t actually open a new page.
- 
:zoom-inor: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 -> scatteris 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 -rsuffix to the timestamp field.
Fixed
- 
Fixed using :hint links spawnwith flags - you can now use things like the-vargument for:spawnor 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-consolewith PyQt 5.6
- 
Fixed qutebrowser not starting when sys.stderrisNone
- 
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 FileNotFoundErrorwhen starting in some cases on old Qt versions
- 
Fixed sharing of cookies between tabs when private-browsingis enabled
- 
Toggling values with :setnow 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 withlast-closeset toclose.
- 
Fixed crash when doing :undoin a new instance withtabs -> last-closeset todefault-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 :buffercommand to easily switch tabs by name. This is not bound to a key by default for existing users due to a conflict with thegt/gTbindings (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 --quietargument for the:debug-pyevalcommand to not open a tab with the results. Note:debug-pyevalis still only intended for debugging.
- 
The completion now matches each entered word separately. 
- 
A new command :paste-primarygot added to paste the primary selection, and<Shift-Insert>got added as a binding so it pastes primary rather than clipboard.
- 
New mode wordforhints -> modewhich uses a dictionary and link-texts for hints instead of single characters.
- 
New --allargument for:download-cancelto cancel all running downloads.
- 
New password_filluserscript to fill passwords using thepassexecutable.
- 
New currenthinting mode which forces opening hints in the current tab (even withtarget="_blank")
Changed
- 
Pasting multiple lines via :pastenow opens each line in a new tab.
- 
:navigate increment/decrementnow preserves leading zeroes in URLs.
- 
general -> editorcan now also handle{}inside another argument (e.g. to openvimviatermite)
- 
Improved performance when scrolling with many tabs open. 
- 
Shift-Insert now also pastes primary selection for prompts. 
- 
:download-remove --allgot 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-hostsfile 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-downloadssetting.
- 
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/gTbindings (luakit-like alternatives toJ/K) were removed (except for existing configs) to make room for thegtbinding 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-enabledsetting.
- 
New setting ui -> hide-wayland-decorationto hide the window decoration when using wayland.
- 
New userscripts in misc/userscripts:
- 
open_downloadto easily open a file in your downloads folder.
- 
view_in_mpvto open a video in mpv and remove it from the page.
- 
qutedmenuanddmenu_qutebrowserto select URLs via dmenu
- 
New setting content -> host-blocking-whitelistto whitelist certain domains from the adblocker.
- 
{scroll_pos}can now be used inui -> window-title-formatandtabs -> title-format.
- 
New setting general -> url-incdec-segmentsto configure which segments of the URL should be affected by:navigate increment/decrement.
- 
New --targetargument to specify how URLs should be opened in an existing instance.
- 
New setting statusbar.url.fg.success.httpsto 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 nonefor 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-retryto retry a failed download.
- 
New command :download-clearwhich replaces:download-remove --all.
- 
:set-cmd-texthas a new--appendargument to append to the current statusbar text.
- 
qutebrowser now uses ~/.netrcif available to authenticate via HTTP.
- 
New :fake-keycommand to send a fake keypress to a website or to qutebrowser.
- 
New --mhtmlargument for:downloadto download a page including all ressources as MHTML file.
- 
New option tabs -> title-alignmentto change the alignment of tab titles.
Changed
- 
The colors -> tabs.bg/fg.selectedoption got split intotabs.bg/fg.selected.odd/even.
- 
:spawn --userscriptand:hintwith theuserscripttarget now look up relative paths in~/.local/share/qutebrowser/userscriptsor$XDG_DATA_DIR. Using a binary in$PATHwon’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-downloadsoption 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-hintcommand now optionally takes the keystring of a hint to follow.
- 
:scroll-pxnow doesn’t take floats anymore, which made little sense.
- 
Updated the user agent list for the :set network user-agentcompletion.
- 
Starting with --debugdoesn’t logVDEBUGmessages anymore (add--loglevel VDEBUGto get them).
- 
:debug-consolenow hides the console if it’s already shown.
- 
:yank-selectednow doesn’t log the selected text anymore.
- 
general -> log-javascript-consolegot changed from a boolean to an option taking a loglevel (none,info,debug).
- 
:tab-move +/-now wraps around iftabs -> wrapistrue.
- 
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 --allis now deprecated and:download-clearshould be used instead.
- 
:download <url> <destination>is now deprecated and:download --dest <destination> <url>should be used instead.
Removed
- 
:scrollwith two pixel-arguments (deprecated in v0.3.0)
- 
The :run-userscriptcommand (deprecated in v0.2.0)
- 
The rapidandrapid-wintargets for:hint(deprecated in v0.2.0)
- 
The :cancel-downloadcommand (deprecated in v0.2.0)
- 
The :download-pagecommand (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-itemsis 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-directorywas unset.
- 
Fixed crash when using :follow-hintoutside 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-keysset toauto.
- 
Fixed restarting after a crash is reported. 
- 
Removed .pycfiles 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-itemssetting 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 PendingDeprecationWarningsshown with Python 3.5.
v0.4.0
Added
- 
New bookmark functionality (similar to quickmarks without a name). - 
New command :bookmark-addto bookmark the current page (bound toM).
- 
New command :bookmark-loadto load a bookmark (bound togb/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 -> paddingandtabs -> indicator-tabbingto control the size/padding of the tabbar.
- 
New setting ui -> statusbar-paddingto control the size/padding of the status bar.
- 
New setting network -> referer-headerto configure when the referer should be sent (by default it’s only sent while on the same domain).
- 
New setting tabs -> showwhich supersedes the oldtabs -> hide-*options and has an additionalswitchingoption which shows tab while switching them. There’s also a newshow-switchingoption to configure the timeout.
- 
New setting storage -> remember-download-directoryto remember the last used download directory.
- 
New setting storage -> prompt-download-directoryto 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-selectedcommand now works in all modes instead of just caret mode and is not hidden anymore.
- 
minimal_webkit_testbrowser.pynow has a--webengineswitch 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 -> positionandui -> downloads-positiongot changed fromnorth/south/west/`easttotop/bottom/left/right. Existing configs should be adjusted automatically.
- 
:tab-focus/gtnow behaves like:tab-nextif 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.pynow 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 :setwith-pand!(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-spacesetting got removed as the new padding settings should be used instead.
- 
The tabs -> hide-alwaysandtabs -> hide-autosettings got merged into the newtabs -> showsetting.
v0.3.0
Added
- 
New commands :message-info,:message-errorand:message-warningto show messages in the statusbar, e.g. from a userscript.
- 
New command :scroll-pxwhich replaces:scrollfor pixel-exact scrolling.
- 
New command :jsevalto run a javascript snippet on the current page.
- 
New (hidden) command :follow-selected(bound toEnter/Ctrl-Enterby default) to follow the link which is currently selected (e.g. after searching via/).
- 
New (hidden) command :clear-keychainto clear a partially entered keychain (bound to<Escape>by default, in addition to clearing search).
- 
New setting ui -> smooth-scrolling.
- 
New setting content -> webglto enable/disable WebGL.
- 
New setting content -> css-regionsto enable/disable support for CSS Regions.
- 
New setting content -> hyperlink-auditingto enable/disable support for hyperlink auditing.
- 
New setting tabs -> mousewheel-tab-switchingto control mousewheel behavior on the tab bar.
- 
New arguments --datadirand--cachedirto set the data/cache location.
- 
New arguments --basedirand--temp-basedir(intended for debugging) to set a different base directory for all data, which allows multiple invocations.
- 
New argument --no-err-windowsto suppress all error windows.
- 
New arguments --top-navigateand--bottom-navigate(-t/-b) for:scroll-pageto specify a navigation action (e.g. automatically go to the next page when arriving at the bottom).
- 
New flag -d/--detachfor:spawnto detach the spawned process so it’s not closed when qutebrowser is.
- 
New flag -v/--verbosefor:spawnto print informations when the process started/exited successfully.
- 
Many new color settings (foreground setting for every background setting). 
- 
New setting ui -> modal-js-dialogto use the standard modal dialogs for javascript questions instead of using the statusbar.
- 
New setting colors -> webpage.bgto set the background color to use for websites which don’t set one.
- 
New setting completion -> auto-opento 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_HTMLandQUTE_TEXTfor userscripts now don’t store the contents directly, and instead contain a filename.
- 
The content -> geolocationandnotificationssettings now support atruevalue 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 tabandFnow respect thebackground-tabssetting. To enforce a foreground tab (whatFdid before), use:hint tab-fgor;f.
- 
:scrollnow 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-stylesheetsetting now also takes file paths relative to the config directory.
- 
The content -> cookies-acceptsetting now has newno-3rdparty(default) andno-unknown-3rdpartyvalues to block third-party cookies. Thedefaultvalue got renamed toall.
- 
Improved startup time by reading the webpage history while qutebrowser is open. 
- 
The way :spawnsplits its commandline has been changed slightly to allow commands with flags.
- 
The default for the new-instance-open-targetsetting has been changed totab.
- 
Sessions now store zoom/scroll-position separately for each entry. 
Deprecated
- 
:scrollwith two pixel-arguments is now deprecated -:scroll-pxshould be used instead.
Removed
- 
The --no-crash-dialogargument which was intended for debugging only was removed as it’s replaced by--no-err-windowswhich 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 hjkldidn’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 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 :setas argument.
- 
Fixed horrible completion performance when the shrinkoption was set.
- 
Sessions now store zoom/scroll-position correctly. 
v0.2.1
Fixed
- 
Added missing manpage (doc/qutebrowser.1.asciidoc) to archive. 
v0.2.0
Added
- 
Session support - 
new command :session-loadto load a session.
- 
new command :session-saveto save a session.
- 
new command :session-deleteto delete a session.
- 
new setting general -> save-sessionto always save the session on quit.
- 
new setting general -> session-default-nameto configure the session name to use if none is given.
- 
new argument -r/--restoreto specify a session to load.
- 
new argument -R/--override-restoreto not load a session even if one was saved.
 
- 
- 
New commands to manage downloads: - 
:downloadto download a URL or the current page.
- 
:download-cancelto cancel a download.
- 
:download-deleteto delete a download from disk.
- 
:download-opento open a finished download.
- 
:download-removeto remove a download from the list.:download-remove --allor the new cd keybinding can be used to clear all finished downloads.
 
- 
- 
History completion - 
New option completion -> timestamp-formatto set the format used to display the history timestamps.
- 
New option completion -> web-history-max-itemsto configure how many history items to show in the completion.
- 
The option completion -> history-lengthfor the command history got renamed tocmd-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-intervaloption).
 
- 
- 
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 -foption for:reloadto 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 --userscriptoption to:spawn(which deprecates:run-userscript).
- 
Ability to toggle a value to :setby appending a!to the value.
- 
New options to hide the tab-/statusbar: - 
tabs -> hide-alwaysfor the tabbar
- 
ui -> hide-statusbarfor the statusbar
 
- 
- 
New options to configure how the tab/window titles should look: - 
tabs -> title-formatfor the tabbar
- 
ui -> window-title-formatfor the window title
 
- 
- 
HTML5 Geolocation/Notification support: - 
New option content -> geolocationto permanently turn the geolocation off.
- 
New option content -> notificationsto permanently turn notifications off.
 
- 
- 
New options to disable javascript prompts/alerts: - 
content -> ignore-javascript-promptto turn off prompts.
- 
content -> ignore-javascript-alertsto turn off alerts.
 
- 
- 
Two new options to customize the behavior of hints: - 
hints -> min-charsto set minimum number of chars in hints.
- 
hints -> scatterwhich 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-pageto set the page to be opened when doing that.
 
- 
- 
New input -> partial-timeoutoption to clear partial keystrings.
- 
New option completion -> download-path-suggestionto 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-unfocusedto disable this behavior.
 
- 
- 
New --relaxed-configargument which ignores unknown options.
- 
New :tab-detachcommand to open the current tab in a new window.
- 
Zooming via Ctrl-Mousewheel. - 
New option input -> mouse-zoom-dividerto 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-silentfornew-instance-open-targetto open a background tab.
- 
New ui -> downloads-positionsetting to move the downloads to the bottom.
- 
New ui -> hide-mouse-cursoroption to hide the mouse cursor inside qutebrowser.
- 
New argument -sfor qutebrowser to set a temporary config option.
- 
New argument -pfor the:setcommand to print the new value.
- 
New --rapidoption to:hint. Therapid/rapid-wintargets are now deprecated, and--rapidcan be used as well with the targets run/hover/userscript/spawn as well.
- 
New -fargument to:bindto overwrite the old binding.
- 
New --qt-nameargument to qutebrowser which is passed to Qt to setWM_CLASS.
- 
Alternating row colors in completion. This adds a new colors -> completion.alternate-bgoption.
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 :searchwithout arguments is given. (:search ""will now search for the literal text"")
- 
Add -s/--spaceargument 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 :searchcommand in addition to/fooso 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/gTkeybindings 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-pagevalues totabs -> 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.pyandrun_checks.pyhave been replaced by tox. Install tox and runtox -e mkvenvinstead.
- 
The tests now use pytest 
- 
Many new tests added 
- 
Mac Mini buildbot to run the tests on macOS. 
- 
Coverage recording via coverage.py. 
- 
New --pdb-postmortem argumentto drop into the pdb debugger on exceptions.
- 
Use hunter for line tracing instead of a selfmade solution. 
 
- 
Deprecated
- 
The :run-userscriptcommand - use:spawn --userscriptinstead.
- 
The rapidandrapid-wintargets for:hint- use the--rapidargument to:hintinstead.
- 
The :cancel-downloadcommand - use:download-cancelinstead.
- 
The :download-pagecommand - use:downloadinstead.
Removed
- 
init_venv.pyandrun_checks.pyhave been replaced by tox. Install tox and runtox -e mkvenvinstead..
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-textwith an empty argument.
- 
Add a timeout to pastebin HTTP replies. 
- 
Various other fixes for small/rare bugs. 
v0.1.4
Changed
- 
The Windows builds come with Qt 5.4.1 which has some related bugfixes. 
- 
Improvements to CPU usage when idle. 
- 
Ensure there’s no size for font-familysettings.
- 
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 faulthandlerlogs.
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*inutils.fake_ioon exceptions.
- 
Allow font names with integers in them. 
- 
Fix QIODevicewarnings when closing tabs.
- 
Set the QSettingspath 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. 
v0.1.3
Changed
- 
Various small logging improvements. 
- 
Don’t open relative files in fuzzy_urlwith: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 NetworkManagerafter 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 IPCErrorsproperly.
- 
Handle another webelem.IsNullErrorwith hints.
- 
Handle UnicodeDecodeErrorwhen reading configs.
Security
- 
Fix for HTTP passwords accidentally being written to debug log. 
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 !importantto hint CSS so websites don’t override the hint look
- 
Make init_venv.pywork with multiple sip.sofiles.
- 
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 ShellCommandconfig values.
- 
Replace unencodable chars 
- 
Fix user-stylesheet setting with an empty value. 
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-requestsoption.
- 
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 :restartcorrectly with Python eggs.
- 
Handle an invalid cwd properly. 
- 
Fix popping of a dead question in prompter. 
- 
Fix AttributeErroron config changes on Ubuntu.
- 
Don’t treat things like "31c3" as IP address. 
- 
Handle category being Nonein Qt message handler.
- 
Force-include pygments in freeze.py.
- 
Fix scroll percentage not updating on some pages like twitter. 
- 
Encode Content-Dispositionheader name properly.
- 
Fix item sorting in NeighborList.
- 
Handle data being Nonein download read timer.
- 
Stop download read timer when reply has finished. 
- 
Fix handling of small/big fuzzyval's inNeighborList.
- 
Fix crashes when entering invalid values in qute:settings.
- 
Abort questions in NetworkManagerwhen 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.
v0.1
Initial release.