1Change Log 2=========== 3 4// https://keepachangelog.com/ 5 6All notable changes to this project will be documented in this file. 7This project adheres to https://semver.org/[Semantic Versioning], though minor 8breaking changes (such as renamed commands) can happen in minor releases. 9 10// tags: 11// `Added` for new features. 12// `Changed` for changes in existing functionality. 13// `Deprecated` for once-stable features removed in upcoming releases. 14// `Removed` for deprecated features removed in this release. 15// `Fixed` for any bug fixes. 16// `Security` to invite users to upgrade in case of vulnerabilities. 17 18[[v2.4.0]] 19v2.4.0 (2021-10-21) 20------------------- 21 22Security 23~~~~~~~~ 24 25- **CVE-2021-41146**: Fix arbitrary command execution on Windows via URL handler 26 argument injection. See the 27 https://github.com/qutebrowser/qutebrowser/security/advisories/GHSA-vw27-fwjf-5qxm[security advisory] 28 for details. 29 30Added 31~~~~~ 32 33- New `content.blocking.hosts.block_subdomains` setting which can be used to 34 disable the subdomain blocking for the hosts-based adblocker introduced in 35 v2.3.0. 36- New `downloads.prevent_mixed_content` setting to prevent insecure 37 mixed-content downloads (true by default). 38- New `--private` flag for `:tab-clone`, which clones a tab into a new private 39 window, mirroring the same flags for `:open` and `:tab-give`. 40 41Fixed 42~~~~~ 43 44- Switching tabs via mouse wheel scrolling now works properly on macOS. Set 45 `tabs.mousewheel_switching` to false if you prefer the previous behavior. 46- Speculative fix for a crash when closing qutebrowser while a systray 47 notification is shown. 48 49Changed 50~~~~~~~ 51 52- Typing in the filename prompt now filters matching directories. 53- When opening a file qutebrowser can't handle from a `file:///` directory 54 listing, qutebrowser now opens it with the default application rather than 55 displaying a download prompt. 56- In Greasemonkey scripts, using "overrideMimeType" with GM_xmlhttpRequest is 57 now supported. 58- `:hint --rapid` is now supported for the `tab` hinting target no matter what 59 `tabs.background` is set to, as there are various scenarios where tabs can 60 open in the background. 61- New flags for the `qute-pass` userscript: 62 * `--unfiltered` to show all secrets, not just the one matching the current 63 URL. 64 * `--always-show-selection` to confirm the password to be entered even if 65 there's only a single match. 66- In insert mode, `<Shift-Escape>` is now bound to `fake-key <Escape>` by 67 default, i.e., sends an Escape keypress to the website. 68- Using `GM_setClipboard` in Greasemonkey scripts is now supported. 69 70[[v2.3.1]] 71v2.3.1 (2021-07-28) 72------------------- 73 74Fixed 75~~~~~ 76 77- Updated the workaround for Google Account log in claiming that this browser 78 isn't secure. For an equivalent workaround on older versions, run: 79 `:set -u https://accounts.google.com/* content.headers.user_agent "Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0"` 80- Corrupt cache file exceptions with `adblock` 0.5.0+ are now handled properly. 81- Crash when entering unicode surrogates into the filename prompt. 82- `UnboundLocalError` in `qute-keepass` when the database couldn't be opened. 83 84[[v2.3.0]] 85v2.3.0 (2021-06-28) 86------------------- 87 88Added 89~~~~~ 90 91- New `content.prefers_reduced_motion` setting to request websites to reduce 92 non-essential motion/animations. 93- New `colors.prompts.selected.fg` setting to customize the text color for 94 selected items in filename prompts. 95 96Changed 97~~~~~~~ 98 99- The hosts-based adblocker (using `content.blocking.hosts.lists`) now also 100 blocks all requests to any subdomains of blocked hosts. 101- The `fonts.web.*` settings now support URL patterns. 102- The `:greasemonkey-reload` command now shows a list of loaded scripts and has 103 a new `--quiet` switch to suppress that message. 104- When launching a userscript via hints, a new `QUTE_CURRENT_URL` environment 105 variable now points to the current page (rather than the URL of the selected 106 element, where `QUTE_URL` points to). 107 108Fixed 109~~~~~ 110 111- Crash on macOS 10.14+ when logging into Google accounts -- the previous fix 112 was incomplete due wrong information in Apple's documentation. 113- Crash when two Greasemonkey scripts have the same name (usually happening 114 because the same file is in both the data and the config directory). 115- Deprecation warnings when using the `link_pyqt.py` script on Python 3.10 116 (e.g. via `tox` or `mkvenv.py`). 117 118[[v2.2.3]] 119v2.2.3 (2021-06-01) 120------------------- 121 122Fixed 123~~~~~ 124 125- Logging into Google accounts or sharing the camera on macOS 10.14+ crashed, 126 which is now fixed. 127- The Windows installer now correctly aborts the installation on Windows 7 128 (rather than attempting an install which won't work, since Windows 7 is 129 unsupported since the v2.0.0 release). 130- Using `--json-logging` without `--debug` caused qutebrowser to crash since the 131 v1.13.0 release. It now works correctly again. 132- Mixing Qt 5.14+ with QtWebEngine 5.12 caused a crash related to qutebrowser's 133 notification support, which is now fixed. 134- The documentation now points to the new IRC channels on irc.libera.chat 135 instead of the defunct Freenode channels (due to a hostile takeover by 136 Freenode staff). 137- Setting `content.headers.user_agent` or `.accept_language` to a value 138 containing non-ascii characters was permitted by qutebrowser, but resulted in 139 a crash when loading a page. Such values are now rejected properly. 140- When quitting qutebrowser on the `qute://settings` page, a crash could happen, which is now fixed. 141- When `:edit-text` is used, but the existing text in the input isn't 142 representable in the configured encoding (`editor.encoding`), qutebrowser would 143 crash. It now shows a proper error instead. 144- The testsuite should now work properly on aarch64. 145- When QtWebEngine is in a "stuck" state while `:selection-follow` was used, 146 this could cause a crash in qutebrowser. This is now fixed (speculatively, due 147 to lack of a reproducer). 148- When the brave adblock data (`adblock-cache.dat`) got corrupted, qutebrowser 149 would crash when trying to load it. It now displays an error instead. 150- Combining `/S` (silent) and `/allusers` when uninstalling via the Windows 151 installer now works properly. 152 153[[v2.2.2]] 154v2.2.2 (2021-05-20) 155------------------- 156 157Fixed 158~~~~~ 159 160- When awesomewm's "naughty" notification daemon was used with a development 161 version of AwesomeWM and an unknown version number, qutebrowser would crash 162 when trying to parse the version string. This is now fixed. 163- Due to a bug with QtWebEngine 5.15.4, old Service Worker data could cause 164 renderer process crashes. This is now worked around by qutebrowser. 165- When an (broken) binding to `set-cmd-text` without any argument existed, 166 using `:` would crash, which is now fixed. 167- New site-specific quirk (again) working around not being able to type 168 accented/composed characters on Google Docs. 169- When running with `python -OO` (which is not recommended), a notification 170 being shown would result in a crash, which is now fixed. 171 172[[v2.2.1]] 173v2.2.1 (2021-04-29) 174------------------- 175 176Changed 177~~~~~~~ 178 179- When an error occurs in a notification presenter, qutebrowser now shows that 180 error in the statusbar instead of just logging it. 181- New site-specific-quirk for Discord logging users out when using vertical 182 tabs (yes, really) 183 184Fixed 185~~~~~ 186 187- Certain errors from notification daemons are now displayed as non-fatal 188 errors instead of qutebrowser crashing: 189 * With the legacy GNOME Flashback notification daemon (not GNOME Shell), when 190 more than 20 notifications are currently shown. 191 * With the KDE Plasma notification daemon, when the same notification is 192 shown twice (with <1s delay). 193- The `mkvenv.py` script now works when `ldconfig -p` is failing. 194- Running `:spawn -u -o` broke in v2.2.0 and now works properly again. 195- Fixes in userscripts: 196 * The `qute-bitwarden` userscript now still consumes returned data if the 197 Bitwarden CLI showed a warning but exited with a 0 (successful) exit code. 198 * The `qute-pass` userscript now doesn't try to match a username with 199 `--password-only`, and error messages with invalid patterns are improved. 200 * The `qute-pass` userscript now avoids running `pass` twice when `--otp-only` 201 is used. 202 203[[v2.2.0]] 204v2.2.0 (2021-04-13) 205------------------- 206 207Deprecated 208~~~~~~~~~~ 209 210- Running qutebrowser with Qt 5.12.0 is now unsupported and logs a warning. It 211 should still work - however, a workaround for issues with the Nvidia graphic 212 driver was dropped. Newer Qt 5.12.x versions are still fully supported. 213- The `--force` argument for `:tab-only` is deprecated, use `--pinned close` 214 instead. 215- Using `:tab-focus` without an argument or count is now deprecated, use 216 `:tab-next` instead. 217 218Added 219~~~~~ 220 221- New dependency on the `QtDBus` module. If this requirement is an issue for you 222 or your distribution, please open an issue! Note that a DBus connection at 223 runtime is still optional. 224- New `input.media_keys` setting which can be used to disable Chromium's 225 handling of media keys. 226- New `:process` command (and associated `qute://process` pages) which can be 227 used to view and terminate/kill external processes spawned by qutebrowser. 228- New `content.site_specific_quirks.skip` setting which can be used to disable 229 individual site-specific quirks. 230- New `--pinned` argument for `:tab-only`, which replaces `--force` (with 231 `--pinned close`), but also can take `--pinned keep` to keep pinned tabs 232 without prompting. 233- New `fileselect.folder.command` which can be used with 234 `fileselect.handler = external` to customize the command to use to upload 235 directories (`<input type="file" webkitdirectory />` elements, which are 236 non-standard but in wide use). 237- New `content.notifications.presenter` setting with various new ways to show 238 web notifications: 239 * `auto` (default): Automatically detect the best available option 240 * `qt`: Use Qt's built-in mechanism (like before this release) 241 * `libnotify`: Use a libnotify-compatible notification server (i.e. native 242 notifications on Linux) 243 * `systray`: Use a systray icon (very similar to `qt` but without some of 244 its drawbacks) 245 * `messages`: Use qutebrowser messages 246 * `herbe`: Use https://github.com/dudik/herbe[herbe] 247- New `content.notifications.show_origin` setting, which can be used to decide 248 for which notifications to show the origin (the URL the notification was sent 249 from). 250 251Changed 252~~~~~~~ 253 254- The `content.ssl_strict` setting got renamed to 255 `content.tls.certificate_errors`, with new values: 256 * `ask`: Prompt on overridable certificate errors (`ssl_strict = 'ask'`) 257 * `ask-block-thirdparty`: See below 258 * `block`: Block the page load (`ssl_strict = True`) 259 * `load-insecurely`: Load the page despite the error (`ssl_strict = False`) 260- The new `content.tls.certificate_errors` setting now also understands the 261 value `ask-block-thirdparty`, which asks for page loads but automatically blocks 262 resource loads on TLS errors. This behavior is consistent with what other 263 browsers do. 264- The prompt text shown on certificate errors has been improved to make it 265 clearer what kind of error occurred exactly. 266- The `content.site_specific_quirks` setting got renamed to 267 `content.site_specific_quirks.enabled`. 268- The `content.notifications` option got renamed to 269 `content.notifications.enabled`. 270- The completion now also shows bindings starting with `set-cmd-text` in its 271 third column, such as `o` for `:open`. 272- When `:spawn` is used with the `-m` / `--output-messages` flag, the output now 273 appears live, while the process is running. 274- When a shown message replaces an existing related one (e.g. for zoom levels), 275 the replacing now also works even if a different message was shown in between. 276- The `.redirect(...)` method on interceptors now supports an 277 `ignore_unsupported=True` argument which supresses exceptions if a request could 278 not be redirected. Note, however, that it is still not public API. 279- When the `--config-py` argument is used, no warning about a missing 280 `config.load_autoconfig` is shown anymore, as the argument is typically used 281 for temporarily testing a config. 282- The internal `_autosave` session used for crash recovery is now only saved 283 once per minute, since saving it for every page load is a noticable performance 284 issue. 285- The `readability-js` userscript now displays a small header with page 286 information. 287- When an external file selector is used, some additional validation is done on 288 the picked files now, so that errors are shown if e.g. a directory is selected 289 when a file was expected. 290- The default binding for `T` (`:tab-focus`) got changed so that it fills the 291 command line with `:tab-focus` if used without a count (instead of being 292 equivalent to `:tab-next` in that case). 293- The `:config-unset` command now understands the `--pattern` (`-u`) flag to 294 unset options customized for a given URL pattern (such as after answering a 295 prompt with "always"/"never"). 296- The `:config-unset` command now shows an error when used on an option which is 297 valid, but was never customized. 298- The `statusbar.widgets` setting now understands `text:...` entries which 299 allows adding a hard-coded text to the statusbar. 300- The polyfill for `String.replaceAll` (required for Nextcloud Calendar < 2.2.0 301 with QtWebEngine < 5.15.3) is now disabled by default, as it's not fully 302 compliant to the ECMAScript spec and might cause issues on other websites. 303 If you still need it (e.g. if you're still on an old Nextcloud Calendar 304 version), remove `js-string-replaceall` from 305 `content.site_specific_quirks.skip`. 306 307Fixed 308~~~~~ 309 310- When an editor exits with a != 0 exit status, the temporary editor file is now 311 persisted. This already was the case when the editor crashed. 312- When a nonexistent file gets passed to `--config-py`, qutebrowser now 313 complains instead of silently not loading it. 314- With some (rare) setups, opening the report dialog or using a PAC proxy with 315 QtWebKit could result in qutebrowser hanging due to a PyQt bug. There's now a 316 workaround which prevents the hang. 317- QtWebEngine version detection (influencing things like dark mode settings or 318 certain workarounds) now works correctly on OpenBSD. 319- Certain version number formats in `/etc/os-release` caused qutebrowser to 320 crash. Those are now handled correctly. 321- The macOS releases now properly support Dark Mode for UI elements by setting 322 `NSRequiresAquaSystemAppearance` to false. 323 324Removed 325~~~~~~~ 326 327- The `qute://spawn-output` page used by `:spawn -o` is now removed, as it's 328 replaced by the new `qute://process` pages. 329 330[[v2.1.1]] 331v2.1.1 (2021-04-01) 332------------------- 333 334Added 335~~~~~ 336 337- Site-specific quirk for krunker.io, which shows a "Socket Error" with 338 qutebrowser's default Accept-Language header. The workaround is equivalent to 339 doing `:set -u matchmaker.krunker.io content.headers.accept_language ""`. 340 341Changed 342~~~~~~~ 343 344- Clicking the 'x' in the devtools window to hide it now also leaves insert 345 mode. 346 347Fixed 348~~~~~ 349 350- The workaround for black on (almost) black formula images in dark mode now 351 also works with Qt 5.12 and 5.13. 352- When running in Flatpak or with the Windows/macOS releases, the QtWebEngine 353 version is now detected properly. Before, a wrong version was assumed, breaking 354 dark mode and certain workarounds (resulting in crashes on websites like 355 LinkedIn or TradingView). 356- When the metainfo in the completion database doesn't have the expected 357 structure, qutebrowser now tries to gracefully recover from the situation 358 instead of crashing. 359- When qutebrowser displays an error during initialization, opening a second 360 instance would lead to a crash. Instead, qutebrowser now ignores the attempt 361 to open a new page as long as it's not fully initialized yet. 362- When the Brave adblock cache folder was unreadable, qutebrowser crashed. It 363 now displays an error instead. 364- Fixes in the `qute-pass` userscript for `gopass`: 365 * Generating OTP tokens now works correctly. 366 * Storing the username as part of the secret broke in v2.0.0 and now works 367 again. 368- When using `bindings.key_mappings` to map a key to multiple other keys, 369 qutebrowser would crash. This is now handled correctly - however, note that 370 it's usually better to map keys to commands instead. 371- When a minimized window is selected via `:tab-select`, it's now un-minimized 372 properly. 373- When a format string in the config (e.g. `tabs.title_format`) used a value 374 like `{current_url.host}` (instead of `{current_url:host}`), qutebrowser 375 would crash. It now correctly reports an invalid config value instead. 376- In rare circumstances, sending URLs/commands to existing instances would 377 result in a crash, which is now fixed. 378- Running the testsuite should now fully work without internet access again. 379- The `--asciidoc` script for `mkvenv.py` broke with v1.14.0. It now works 380 correctly again. 381- Various other fixes for running in Flatpak (backported in the Flatpak release 382 even before this qutebrowser release). 383- We are the Knights Who Say... ':Ni!' 384 385[[v2.1.0]] 386v2.1.0 (2021-03-12) 387------------------- 388 389Removed 390~~~~~~~ 391 392- The following command aliases were deprecated in v2.0.0 and are now removed: 393 * `run-macro` -> `macro-run` 394 * `record-macro` -> `macro-record` 395 * `buffer` -> `tab-select` 396 * `open-editor` -> `edit-text` 397 * `toggle-selection` -> `selection-toggle` 398 * `drop-selection` -> `selection-drop` 399 * `reverse-selection` -> `selection-reverse` 400 * `follow-selected` -> `selection-follow` 401 * `follow-hint` -> `hint-follow` 402 * `enter-mode` -> `mode-enter` 403 * `leave-mode` -> `mode-leave` 404 405Added 406~~~~~ 407 408- New `:screenshot` command which can be used to screenshot the visible part of 409 the page. 410- New optional dependency on the `importlib_metadata` project on Python 3.7 and 411 below. This is only relevant when PyQtWebEngine is installed via pip - thus, 412 this dependency usually isn't relevant for packagers. 413- New `qute-keepassxc` userscript integrating with the KeePassXC browser API. 414 415Changed 416~~~~~~~ 417 418- Initial support for QtWebEngine 5.15.3 and PyQt 5.15.3/.4 419- The `colors.webpage.prefers_color_scheme_dark` setting got renamed to 420 `colors.webpage.preferred_color_scheme` and now takes the values `auto`, `light` 421 and `dark` (instead of being `True` for dark and `False` for auto). 422 Note that the `light` value is only supported with Qt 5.15.2+, falling back to 423 the same behavior as `auto` on older versions. 424- On Linux, qutebrowser now tries harder to find details about the installed 425 QtWebEngine version by inspecting the QtWebEngine binary. This should reduce 426 issues with dark mode (and some workarounds) not working when using differing 427 versions of QtWebEngine/PyQtWebEngine/Qt. 428 This change also prepares qutebrowser for QtWebEngine 5.15.3, which will get 429 released without an updated Qt. 430- When PyQtWebEngine >= 5.15.3 is installed via `pip` (as is e.g. the case with 431 `mkvenv.py`), qutebrowser now queries the associated metadata to find out the 432 QtWebEngine version. 433- When doing `:hint links yank --rapid`, the messages shown now replace each 434 other, thus being less noisy. 435- Newlines in JavaScript messages (`confirm`, `prompt` and `alert`) are now 436 preserved. 437- Messages in prompts are now word-wrapped rather than displaying them in one 438 long line. 439- If a command stats with space (e.g. `: open ...`, it's now not saved to 440 command history anymore (similar to how some shells work). 441- When a tab is pinned, running `:open` will now open a new tab instead of 442 displaying an error. 443- The `fileselect.*.command` settings now support file selectors writing the 444 selected paths to stdout, which is used if no `{}` placeholder is contained in 445 the configured command. 446- The `--debug-flag` argument now understands a new `log-sensitive-keys` value 447 which logs all keypresses (including those in insert/passthrough/prompt/... 448 mode) for debugging. 449- The `readability` and `readability-js` userscripts now add a 450 `qute-readability` CSS class to the page, so that it can be styled easily via 451 a user stylesheet. 452 453Fixed 454~~~~~ 455 456- With QtWebEngine 5.15.3 and some locales, Chromium can't start its 457 subprocesses. As a result, qutebrowser only shows a blank page and logs 458 "Network service crashed, restarting service.". This release adds a 459 `qt.workarounds.locale` setting working around the issue. It is disabled by 460 default since distributions shipping 5.15.3 will probably have a proper patch 461 for it backported very soon. 462- The `colors.webpage.preferred_color_scheme` and `colors.webpage.darkmode.*` 463 settings now work correctly with QtWebEngine 5.15.3 (and Gentoo, which at the 464 time of writing packages 5.15.3 disguised as 5.15.2). 465- When dark mode settings were set, existing `blink-features` arguments in 466 `qt.args` (or `--qt-flag`) were overridden. They are now combined properly. 467- On QtWebEngine 5.15.2, auto detection for the `prefers-color-scheme` media 468 query is broken and always returns `no-preference`, which was removed from the 469 CSS WG Specification. This release contains a workaround to always return 470 `light` instead (as per the spec). 471- When an external file selector deletes the temporary file (like `nnn` does 472 when quitting the terminal), qutebrowser would crash. It now displays an 473 error instead. The same applies if the temporary file is unreadable for any 474 other reason. 475- On macOS, a change in v2.0.x caused certain shortcuts to not work with Cmd 476 anymore, using Ctrl instead. They now work correctly using Cmd (like usual on 477 macOS) again. 478- On macOS, using `F` (`hint all tab`) sometimes would open a context menu 479 instead of following a link. This is now fixed. 480- The quirk added for a missing `String.replaceAll` did not handle special 481 regexp characters correctly, thus breaking some sites. It now handles them 482 properly. 483- The "try again" button on error pages now works correctly with JavaScript 484 disabled. 485- If a GreaseMonkey script doesn't have a "@run-at" comment, qutebrowser 486 accidentally treated that as "@run-at document-idle". However, other 487 GreaseMonkey implementations default to "@run-at document-end" instead, which 488 is what qutebrowser now does, too. 489- The `hist_importer.py` script didn't work correctly after qutebrowser v2.0.0 490 and resulted in a history database qutebrowser couldn't read properly. It now 491 works properly again. 492- With certain QtWebEngine versions (5.15.0 based on Chromium 80 and 5.15.3 493 based on Chromium 87), Chromium's dark mode doesn't invert certain SVG images, 494 even with `colors.wegpage.darkmode.policy.images` set to `smart`. 495 Most notably, this causes formulae on Wikipedia to display black on (almost) 496 black. If `content.site_specific_quirks` is enabled, qutebrowser now injects 497 some CSS as a workaround, which inverts all math formula images on Wikipedia 498 (and potentially other sites, if they use the same CSS class). 499- When a hint label text started with an apostrophe, it would show an escaped 500 text until the hints first character has been pressed. It now shows up 501 correctly. 502 503[[v2.0.2]] 504v2.0.2 (2021-02-04) 505------------------- 506 507Fixed 508~~~~~ 509 510- When right-clicking an empty part of the downloads bar, qutebrowser v2.0.x 511 would crash. This is now fixed. 512- Setting `content.cookies.store` to `false` only worked properly when this was 513 done after qutebrowser was already started due to a regression in v2.0.0. It now 514 works as expected again. 515- If qutebrowser was installed as a Python egg with Python 3.8 or 3.9, 516 requesting unavailable resource files (such as PDF.js not being bundled, or a 517 missing changelog file) caused in a crash due to an inconsistent behavior in 518 those versions of Python. This is now handled properly by qutebrowser. 519- In v2.0.0, support for importing the `sip` dependency as `sip` rather than 520 `PyQt5.sip` was dropped, since upstream claims it should be used as `PyQt5.sip` 521 ever since PyQt 5.11. However, some distributions still package sip as a global 522 `sip` package. Thus, support for a global `sip` package is now reintroduced. 523- The changelog for v2.0.0 claimed that `hints.leave_on_load` was set to `true` 524 by default. However, the `input.insert_mode.leave_on_load` setting was instead 525 set to `true` accidentally. This is now fixed by actually setting 526 `hints.leave_on_load` to `true`, and reversing the change to 527 `input.insert_mode.leave_on_load` so it is set to `false` by default again. 528- When the `importlib_resources` package is required but was missing, users 529 would get a Python stacktrace rather than a proper error message. This is now 530 fixed. 531- Site-specific quirk JavaScript files were loaded lazily rather than preloaded 532 at the start of qutebrowser, causing a crash when e.g. switching between 533 versions while qutebrowser is open. Now they are preloaded at the start of 534 qutebrowser again. 535- The link to the keybinding cheatsheet on the internal `:help` page wasn't 536 displayed correctly. This is now fixed. 537- When the completion rebuilding process was interrupted, qutebrowser did not 538 detect this condition on the next start, thus resulting in a completion with 539 inconsistent data. This is now fixed, with another rebuild being forced with 540 this update, to ensure the data is consistent for all users. 541- In certain scenarios, qutebrowser v2.0.x warned about 542 `config.load_autoconfig(...)` being missing when loading a secondary config 543 (e.g. via `config.source(...)`). It now only shows those warnings for the main 544 `config.py` file. 545- The `--enable-webengine-inspector` flag is now accepted again, however it's 546 unused and undocumented. It purely exists to make it possible to use `:restart` 547 between pre-v2.0.x and v2.0.2+ versions. 548- When `hints.dictionary` pointed to a file not encoded as UTF-8, this resulted 549 in a crash (also in versions before v2.0.0). It now properly displays an error 550 instead. 551- When running qutebrowser with a single empty commandline argument, such as 552 done by `open_url_in_instance.sh`, this would result in a partially initialized 553 window. Interacting with that window results in a crash (also in versions before 554 v2.0.0). Instead, the startpage is now shown properly. 555 556[[v2.0.1]] 557v2.0.1 (2021-01-28) 558------------------- 559 560Fixed 561~~~~~ 562 563- If qutebrowser was installed as a Python egg (similar to a .zip file, via 564 `setup.py install` under certain conditions), a change in v2.0.0 caused it to 565 not start properly. This is now fixed. 566- If qutebrowser was set up (or packaged) in an unclean environment, this could 567 result in a stale `qutebrowser/components/adblock.py` file being picked up. That 568 file is not part of the release anymore, but if an old version is still around, 569 causes qutebrowser to crash. It's now explicitly blocked inside qutebrowser so 570 it gets ignored even if it still exists. 571- When the adblocking method was switched using `:set`, and the `adblock` 572 dependency was unavailable when qutebrowser started (but was installed while 573 qutebrowser was open), this resulted in a crash. Now a warning prompting for a 574 restart of qutebrowser is shown instead. 575 576Changed 577~~~~~~~ 578 579- The `format_json` userscript now uses sh instead of bash again. 580- The `add-nextcloud-bookmarks`, `add-nextcloud-cookbook`, `readability` and 581 `ripbang` userscripts now use a `python3` rather than plain `python` shebang. 582- When `QTWEBENGINE_CHROMIUM_FLAGS` is set in the environment, this causes flag 583 handling (including workarounds for QtWebEngine crashes) inside qutebrowser to 584 break. This will be handled properly in a future version, but this release now 585 shows a warning on standard output if this is the case. 586- The config completion for `fileselect.*.command` now also includes the "nnn" 587 terminal file manager. 588 589[[v2.0.0]] 590v2.0.0 (2021-01-28) 591------------------- 592 593Major changes 594~~~~~~~~~~~~~ 595 596- If the Python `adblock` library is available, it is now used to 597 integrate Brave's Rust adblocker library for improved adblocking based on 598 ABP-like filter lists (such as EasyList). 599 If it is unavailable, qutebrowser falls back to host-blocking, i.e. the same 600 blocking technique it used before this release. As part of this, various 601 settings got renamed, see "Changed" below. 602 **Note: If the `adblock` dependency is available, qutebrowser will ignore 603 custom host blocking** via the `blocked-hosts` config file or `file:///` URLs 604 supplied as host blocking lists. You will need to either migrate those to 605 ABP-like lists, or set `content.blocking.method` to `both`. 606- Various dependency upgrades - a quick checklist for packagers (see "Changed" 607 below for details): 608 * Ensure you're providing at least Python 3.6.1. 609 * Ensure you're providing at least Qt 5.12 and PyQt 5.12. 610 * Add a new optional dependency on the Python `adblock` library (if packaged - 611 if not, consider packaging it, albeit optional it's very useful for users). 612 * Remove the `cssutils` optional dependency (if present). 613 * Remove the `attrs` (`attr`) dependency. 614 * Remove the `pypeg2` dependency (and perhaps consider dropping the package 615 if not used elsewhere - it's https://fdik.org/pyPEG2/[inactive upstream] 616 and the repository was removed by Bitbucket). 617 * Move the `pygments` dependency from required to optional. 618 * Move the `setuptools` dependency from runtime (for `pkg_resources`) to 619 build-time. 620 * For Python 3.6, 3.7 or 3.8, add a dependency on the `importlib_resources` 621 backport. 622 * For Python 3.6 only, add a dependency on the `dataclasses` backport. 623- Dropped support for old OS versions in binary releases: 624 * Support for Windows 7 is dropped in the Windows binaries, the minimum 625 required Windows version is now Windows 8.1. 626 * Support for macOS 10.13 High Sierra is dropped in the macOS binaries, the 627 minimum required macOS version is now macOS 10.14 Mojave. 628- Various renamed settings and commands, see "Deprecated" and "Changed" below. 629 630Removed 631~~~~~~~ 632 633- The `--enable-webengine-inspector` flag (which was only needed for Qt 5.10 and 634 below) is now dropped. With Qt 5.11 and newer, the inspector/devtools are 635 enabled unconditionally. 636- Support for moving qutebrowser data from versions before v1.0.0 has been 637 removed. 638- The `--old` flag for `:config-diff` has been removed. It used to show 639 customized options for the old pre-v1.0 config files (in order to aid 640 migration to v1.0). 641- The `:inspector` command which was deprecated in v1.13.0 (in favor of 642 `:devtools`) is now removed. 643 644Deprecated 645~~~~~~~~~~ 646 647- Several commands have been renamed for consistency and/or easier grouping of 648 related commands. Their old names are still available, but deprecated and will 649 be removed in qutebrowser v2.1.0. 650 * `run-macro` -> `macro-run` 651 * `record-macro` -> `macro-record` 652 * `buffer` -> `tab-select` 653 * `open-editor` -> `edit-text` 654 * `toggle-selection` -> `selection-toggle` 655 * `drop-selection` -> `selection-drop` 656 * `reverse-selection` -> `selection-reverse` 657 * `follow-selected` -> `selection-follow` 658 * `follow-hint` -> `hint-follow` 659 * `enter-mode` -> `mode-enter` 660 * `leave-mode` -> `mode-leave` 661 662Added 663~~~~~ 664 665- New settings for the ABP-based adblocker: 666 * `content.blocking.method` to decide which blocker(s) should be used. 667 * `content.blocking.adblock.lists` to configure ABP-like lists to use. 668- New `qt.environ` setting which makes it easier to set/unset environment 669 variables for qutebrowser. 670- New settings to use an external file picker (such as ranger or vifm): 671 * `fileselect.handler` (`default` or `external`) 672 * `fileselect.multiple_files.command` 673 * `fileselect.single_file.command` 674- When QtWebEngine has been updated but PyQtWebEngine hasn't yet, the dark mode 675 settings might stop working. As a (currently undocumented) escape hatch, this 676 version adds a `QUTE_DARKMODE_VARIANT=qt_515_2` environment variable which can 677 be set to get the correct behavior in (transitive) situations like this. 678- New `--desktop-file-name` commandline argument, which can be used to customize 679 the desktop filename passed to Qt (which is used to set the `app_id` on 680 Wayland). 681- The `:open` completion now also completes local file paths and `file://` URLs, 682 via a new `filesystem` entry in `completion.open_categories`. Also, a new 683 `completion.favorite_paths` setting was added which can be used to add paths to 684 show when `:open` is used without any input. 685- New `QUTE_VERSION` variable for userscripts, which can be used to read 686 qutebrowser's version. 687- New "Copy URL" entry in the context menu for downloads. 688- New `:bookmark-list` command which lists all bookmarks/quickmarks. The 689 corresponding `qute://bookmarks` URL already existed since v0.8.0, but it was 690 never exposed as a command. 691- New `qt.workarounds.remove_service_workers` setting which can be used to 692 remove the "Service Workers" directory on every start. Usage of this option is 693 generally discouraged, except in situations where the underlying QtWebEngine bug 694 is a known cause for crashes. 695- Changelogs are now shown after qutebrowser was upgraded. By default, the 696 changelog is only shown after minor upgrades (feature releases) but not patch 697 releases. This can be adjusted (or disabled entirely) via a new 698 `changelog_after_upgrade` setting. 699- New userscripts: 700 * `kodi` to play videos in Kodi 701 * `qr` to generate a QR code of the current URL 702 * `add-nextcloud-bookmarks` to create bookmarks in Nextcloud's Bookmarks app 703 * `add-nextcloud-cookbook` to add recipes to Nextcloud's Cookbook app 704 705Changed 706~~~~~~~ 707 708- `config.py` files now are required to have either 709 `config.load_autoconfig(False)` (don't load `autoconfig.yml`) or 710 `config.load_autoconfig()` (do load `autoconfig.yml`) in them. 711- Various host-blocking settings have been renamed to accomodate the new ABP-like 712 adblocker: 713 * `content.host_blocking.enabled` -> `content.blocking.enabled` (controlling both blockers) 714 * `content.host_blocking.whitelist` -> `content.blocking.whitelist` (controlling both blockers) 715 * `content.host_blocking.lists` -> `content.blocking.hosts.lists` 716- Changes to default settings: 717 * `tabs.background` is now `true` by default, so that new tabs get opened in the 718 background. 719 * `input.partial_timeout` is now set to 0 by default, so that partially typed 720 key strings are never cleared. 721 * `hints.leave_on_load` is now `false` by default, so that hint mode doesn't get 722 left when a page finishes loading. This can lead to stale hints persisting in 723 rare circumstances, but is better than leaving hint mode when the user entered 724 it before loading was completed. 725 * The default for `tabs.width` (tab bar width if vertical) is now 15% of the 726 window width rather than 20%. 727 * The default bindings for moving tabs (`tab-move -` and `tab-move +`) were 728 changed from `gl` and `gr` to `gK` and `gJ`, to be consistent with the tab 729 switching bindings. 730 * The text color for warning messages is now black instead of white, for increased contrast and thus readability. 731 * The default timeout for messages is now raised from 2s to 3s. 732- On the first start, the history completion database is regenerated to remove 733 a few problematic entries (such as long `qute://pdfjs` URLs). This might take 734 a couple of minutes, but is a one-time operation. This should result in a 735 performance improvement for the completion for affected users. 736- qutebrowser now shows an error if its history database version is newer than 737 expected. This currently should never happen, but allows for potentially 738 backwards-incompatible changes in future versions. 739- At least Python 3.6.1 is now required to run qutebrowser, support for Python 740 3.5 (and 3.6.0) is dropped. Note that Python 3.5 is 741 https://www.python.org/downloads/release/python-3510/[no longer supported 742 upstream] since September 2020. 743- At least Qt/PyQt 5.12 is now required to run qutebrowser, support for 5.7 to 744 5.11 (inclusive) is dropped. While Debian Buster ships Qt 5.11, it's based on a 745 Chromium version from 2018 with 746 https://www.debian.org/releases/buster/amd64/release-notes/ch-information.en.html#browser-security[no Debian security support] 747 and unsupported upstream since May 2019. 748 It also has compatibility issues with various websites (GitHub, Twitch, Android 749 Developer documentation, YouTube, ...). Since no newer Debian Stable is released 750 at the time of writing, it's recommended to 751 https://github.com/qutebrowser/qutebrowser/blob/master/doc/install.asciidoc#installing-qutebrowser-with-virtualenv[install qutebrowser in a virtualenv] 752 with a newer version of Qt/PyQt. 753- New optional dependency on the Python `adblock` library (see above for details). 754- The (formerly optional) `cssutils` dependency is now removed. It was only 755 needed for improved behavior in corner cases when using `:download --mhtml` 756 with the (non-default) QtWebKit backend, and as such it's unlikely anyone is 757 still relying on it. The `cssutils` project is also dead upstream, with its 758 repository being gone after Bitbucket 759 https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket[removed Mercurial support]. 760- The (formerly required) `pygments` dependency is now optional. It is only 761 used when using `:view-source` with QtWebKit, or when forcing it via 762 `:view-source --pygments` on QtWebEngine. If it is unavailable, an 763 unhighlighted fallback version of the page's source is shown. 764- The former runtime dependency on the `pkg_resources` module (part of the 765 `setuptools` project) got dropped. Note that `setuptools` is still required 766 to run `setup.py`. 767- A new dependency on the `importlib_resources` module got introduced for 768 Python versions up to and including 3.8. Note that the stdlib 769 `importlib.resources` module for Python 3.7 and 3.8 is missing the needed APIs, 770 thus requiring the backports for those versions as well. 771- The former dependency on the `attrs`/`attr` package is now dropped in favour 772 of `dataclasses` in the Python standard library. On Python 3.6, a new 773 dependency on the `dataclasses` backport is now required. 774- The former dependency on the `pypeg2` package is now dropped. This might cause 775 some changes for certain corner-cases for suggested filenames when downloading 776 files with the QtWebKit backend. 777- Windows and macOS releases now ship Python 3.9 rather than 3.7. 778- The `colors.webpage.darkmode.*` settings are now also supported with older Qt 779 versions (Qt 5.12 and 5.13) rather than just with Qt 5.14 and above. 780- For regexes in the config (`hints.{prev,next}_regexes`), certain patterns 781 which will change meanings in future Python versions are now disallowed. This is 782 the case for character sets starting with a literal `[` or containing literal 783 character sequences `--`, `&&`, `~~`, or `||`. To avoid a warning, remove the 784 duplicate characters or escape them with a backslash. 785- If `prompt(..., "default")` is used via JS, the default text is now 786 pre-selected in the prompt shown by qutebrowser. 787- URLs such as `::1/foo` are now handled as a search term or local file rather 788 than IPv6. Use `[::1]/foo` to force parsing as IPv6 instead. 789- The `mkvenv.py` script now runs a "smoke test" after setting up the virtual 790 environment to ensure it's working as expected. If necessary, the test can be 791 skipped via a new `--skip-smoke-test` flag. 792- Both qutebrowser userscripts and Greasemonkey scripts are now additionally 793 picked up from qutebrowser's config directory (the `userscripts` and 794 `greasemonkey` subdirectories of e.g. `~/.config/qutebrowser/`) rather than only 795 the data directory (the same subdirectories of e.g. 796 `~/.local/share/qutebrowser/`). 797- The `:later` command now understands a time specification like `5m` or 798 `1h5m2s`, rather than just taking milliseconds. 799- The `importer.py` script doesn't use a browser argument anymore; instead its 800 `--input-format` switch can be used to configure the input format. The help also 801 was expanded to explain how to use it properly. 802- If `tabs.tabs_are_windows` is set, the `tabs.last_close` setting is now 803 ignored and the window is always closed when using `:close` (`d`). 804- With the (default) QtWebEngine backend, if a custom `accept` header is set via 805 `content.headers.custom`, the custom value is now ignored for XHR 806 (`XMLHttpRequest`) requests. Instead, the sent value is now `*/*` or the header 807 set from JavaScript, as it would be if `content.headers.custom` wasn't set. 808- The `:tab-select` completion now shows the underlying renderer process PID if 809 doing so is supported (on QtWebEngine 5.15). 810- If `tabs.favicons.show` is set to `never`, favicons aren't unnecessarily 811 downloaded anymore. Thus, disabling favicons can help with a possible 812 https://www.ghacks.net/2021/01/22/favicons-may-be-used-to-track-users/[fingerprinting vector]. 813- "Super" is now understood as a modifier (i.e. as alias to "Meta"). 814- Initial support for Python 3.10 (currently in Alpha stage). 815- Various performance improvements, including for the startup time. 816 817Fixed 818~~~~~ 819 820- With interpolated color settings (`colors.tabs.indicator.*` and 821 `colors.downloads.*`), the alpha channel is now handled correctly. 822- Fixes to userscripts: 823 * `format_json` now uses `env` in its shebang, making it work 824 correctly on systems where `bash` isn't located in `/bin`. 825 * `qute-pass` now handles the MIME output format introduced in gopass 1.10.0. 826 * `qute-lastpass` now types multiple `<` or `>` characters correctly. 827- The `:undo` completion now sorts its entries correctly (by the numerical index 828 rather than lexicographically). 829- The `completion.web_history.ignore` setting now works properly when set in 830 `config.py` (rather than via `:set`). Additionally, a `:config-source` will not 831 result in a history rebuild if the value wasn't actually changed. 832- When downloading a `data:` URL, the suggested filename is now improved and 833 contains a proper extension. Before this fix, qutebrowser would use the URL's 834 data contents as filename with QtWebEngine; or "binary blob" with the Qt network 835 stack. 836- When `:tab-only` is run before a tab is available, an error is now shown 837 instead of crashing. 838- A couple of long URLs (such as `qute://pdfjs` URLs) are now not added to the 839 history database anymore. 840- A bug in QtWebEngine 5.15.2 causes "renderer process killed" errors on 841 websites like LinkedIn and TradingView. There is now a workaround in qutebrowser 842 to prevent this from happening. 843- Nextcloud Calendars started using `String.replaceAll` which was only added to 844 Chromium recently (Chrome 85), so won't work with current QtWebEngine 845 versions. This release includes a workaround (a polyfill as a 846 site-specific-quirk). 847 848[[v1.14.1]] 849v1.14.1 (2020-12-04) 850-------------------- 851 852Added 853~~~~~ 854 855- With v1.14.0, qutebrowser configures the main window to be transparent, so 856 that it's possible to configure a translucent tab- or statusbar. However, that 857 change introduced various issues, such as performance degradation on some 858 systems or breaking dmenu window embedding with its `-w` option. To avoid those 859 issues for people who are not using transparency, the default behavior is 860 reverted to versions before v1.14.0 in this release. A new `window.transparent` 861 setting can be set to `true` to restore the behavior of v1.14.0. 862 863Changed 864~~~~~~~ 865 866- Windows and macOS releases now ship Qt 5.15.2, which is based on 867 Chromium 83.0.4103.122 with security fixes up to 86.0.4240.183. This includes 868 CVE-2020-15999 in the bundled freetype library, which is known to be exploited 869 in the wild. It also includes various other bugfixes/features compared to 870 Qt 5.15.0 included in qutebrowser v1.14.0, such as: 871 * Correct handling of AltGr on Windows 872 * Fix for `content.cookies.accept` not working properly 873 * Fixes for screen sharing (some websites are still broken until an upcoming Qt 874 5.15.3) 875 * Support for FIDO U2F / WebAuth 876 * Fix for the unwanted creation of directories such as `databases-incognito` in 877 the home directory 878 * Proper autocompletion in the devtools console 879 * Proper signalisation of a tab's audible status (`[A]`) 880 * Fix for a hang when opening the context menu on macOS Big Sur (11.0) 881 * Hardware accelerated graphics on macOS 882 883Fixed 884~~~~~ 885 886- Setting the `content.headers.referer` setting to `same-domain` (the default) 887 was supposed to truncate referers to only the host with QtWebEngine. 888 Unfortunately, this functionality broke in Qt 5.14. It works properly again 889 with this release, including a test so this won't happen again. 890- With QtWebEngine 5.15, setting the `content.headers.referer` setting to 891 `never` did still send referers. This is now fixed as well. 892- In v1.14.0, a regression was introduced, causing a crash when qutebrowser was 893 closed after opening a download with PDF.js. This is now fixed. 894- With Qt 5.12, the `Object.fromEntries` JavaScript API is unavailable (it was 895 introduced in Chromium 73, while Qt 5.12 is based on 69). This caused 896 https://www.vr.fi/en and possibly other websites to break when accessed with Qt 897 5.12. A suitable polyfill is now included with qutebrowser if 898 `content.site_specific_quirks` is enabled (which is the default). 899- While XDG startup notifications (e.g. launch feedback via the bouncy cursor 900 in KDE Plasma) were supported ever since Qt 5.1, qutebrowser's desktop file 901 accidentally declared that it wasn't supported. This is now fixed. 902- The `dmenu_qutebrowser` and `qutedmenu` userscripts now correctly read the 903 qutebrowser sqlite history which has been in use since v1.0.0. 904- With Python 3.8+ and vertical tabs, a deprecation warning for an implicit int 905 conversion was shown. This is now fixed. 906- Ever since Qt 5.11, fetching more completion data when that data is loaded 907 lazily (such as with history) and the last visible item is selected was broken. 908 The exact reason is currently unknown, but this release adds a tenative fix. 909- When PgUp/PgDown were used to go beyond the last visible item, the above issue 910 caused a crash, which is now also fixed. 911- As a workaround for an overzealous Microsoft Defender false-positive detecting 912 a "trojan" in the (unprocessed) adblock list, `:adblock-update` now doesn't 913 cache the HTTP response anymore. 914- With the QtWebKit backend and `content.headers` set to `same-domain` (the 915 default), origins with the same domain but different schemes or ports were 916 treated as the same domain. They now are correctly treated as different domains. 917- When a URL path uses percent escapes (such as 918 `https://example.com/embedded%2Fpath`), using `:navigate up` would treat the 919 `%2F` as a path separator and replace any remaining percent escapes by their 920 unescaped equivalents. Those are now handled correctly. 921- On macOS 11.0 (Big Sur), the default monospace font name caused a parsing error, thus 922 resulting in broken styling for the completion, hints, and other UI components. 923 They now look properly again. 924- Due to a Qt bug, installing Qt/PyQt from prebuilt binaries on systems with a 925 very old `libxcb-utils` version (notably, Debian Stable, but not Ubuntu since 926 16.04 LTS) results in a setup which fails to start. This also affects the 927 `mkvenv.py` script, which now includes a workaround for this case. 928- The `open_url_instance.sh` userscript now complains when `socat` is not 929 installed, rather than silencing the error. 930- The example AppArmor profile in `misc/` was outdated and written for the 931 older QtWebKit backend. It is now updated to serve as an useful starting 932 point with QtWebEngine. 933- When running `:devtools` on Fedora without the needed (optional) dependency 934 installed, it was suggested to install `qt5-webengine-devtools`, which does 935 not, in fact, exist. It's now correctly suggested to install 936 `qt5-qtwebengine-devtools` instead. 937- With Qt 5.15.2, lines/borders coming from the `readability-js` userscript 938 were invisible. This is now fixed by changing the border color to grey (with all 939 Qt versions). 940- Due to changes in the underlying Chromium, the 941 `colors.webpage.prefers_color_scheme_dark` setting broke with Qt 5.15.2. It now 942 works properly again. 943- A bug in the `pkg_resources` module used by qutebrowser caused deprecation 944 warnings to appear on start with Python 3.9 on some setups. Those are now 945 hidden. 946- Minor performance improvements. 947- Fix for various functionality breaking in private windows with v1.14.0, 948 after the last private window is closed. This includes: 949 * Ad blocking 950 * Downloads 951 * Site-specific quirks (e.g. for Google login) 952 * Certain settings such as `content.javascript.enabled` 953 954[[v1.14.0]] 955v1.14.0 (2020-10-15) 956-------------------- 957 958Note: The QtWebEngine version bundled with the Windows/macOS 959releases is still based on Qt 5.15.0 (like with qutebrowser v1.12.0 and 960v1.13.0) rather than Qt 5.15.1 because of a 961https://bugreports.qt.io/browse/QTBUG-86752[Qt bug] causing 962frequent renderer process crashes. When Qt 5.15.2 is released 963(planned for November 3rd, 2020), a qutebrowser v1.14.x patch 964release with an updated QtWebEngine will be released. 965 966Furthermore, this release still only contains partial session support for QtWebEngine 9675.15. It's still recommended to run against Qt 5.15 due to the security patches 968contained in it -- for most users, the added workarounds seem to work out fine. A 969rewritten session support will be part of qutebrowser v2.0.0, tentatively planned for the 970end of the year or early 2021. 971 972Changed 973~~~~~~~ 974 975- The `content.media_capture` setting got split up into three more fine-grained 976 settings, `content.media.audio_capture`, `.video_capture` and 977 `.audio_video_capture`. Before this change, answering "always" to a prompt 978 about e.g. audio capturing would set the `content.media_capture` setting, 979 which would also allow the same website to capture video on a future visit. 980 Now every prompt will set the appropriate setting, though existing 981 `content.media_capture` settings in `autoconfig.yml` will be migrated to set 982 all three settings. To review/change previously granted permissions, use 983 `:config-diff` and e.g. 984 `:config-unset -u example.org content.media.video_capture`. 985- The main window's (invisible) background color is now set to transparent. 986 This allows using the alpha channel in statusbar/tabbar colors to get a 987 partially transparent qutebrowser window on a setup which supports doing so. 988- If QtWebEngine is compiled with PipeWire support and libpipewire is 989 installed, qutebrowser will now support screen sharing on Wayland. Note that 990 QtWebEngine 5.15.1 is needed. 991- When `:undo` is used with a count, it now reopens the count-th to last tab 992 instead of the last one. The depth can instead be passed as an argument, 993 which is also completed. 994- The default `completion.timestamp_format` now also shows the time. 995- `:back` and `:forward` now take an optional index which is completed using 996 the current tab's history. 997- The time a website in a tab was visited is now saved/restored in sessions. 998- When attempting to download a file to a location for which there's already a 999 still-running download, a confirmation prompt is now displayed. 1000- `:completion-item-focus` now understands `next-page` and `prev-page` with 1001 corresponding `<PgDown>` / `<PgUp>` default bindings. 1002- When the last private window is closed, all private browsing data is now cleared. 1003- When `config.source(...)` is used with a `--config-py` argument given, 1004 qutebrowser used to search relative files in the config basedir, leading to them 1005 not being found when using a shared `config.py` for different basedirs. Instead, 1006 they are now searched relative to the given `config.py` file. 1007- `navigate prev` (`[[`) and `navigate next` (`]]`) now recognize links with 1008 `nav-prev` and `nav-next` classes, such as those used by the Hugo static site 1009 generator. 1010- When `tabs.favicons` is disabled but `tabs.tabs_are_windows` is set, the 1011 window icon is still set to the page's favicon now. 1012- The `--asciidoc` argument to `src2asciidoc.py` and `build_release.py` now 1013 only takes the path to `asciidoc.py`, using the current Python interpreter by 1014 default. To configure the Python interpreter as well, use 1015 `--asciidoc-python path/to/python --asciidoc path/to/asciidoc.py` 1016 instead of the former 1017 `--asciidoc path/to/python path/to/asciidoc.py`. 1018- Dark mode (`colors.webpage.darkmode.*`) is now supported with Qt 5.15.2 (which 1019 is not released yet). 1020- The default for the darkmode `policy.images` setting is now set to `smart` 1021 which fixes issues with e.g. formulas on Wikipedia. 1022- The `readability-js` userscript now adds some CSS to improve the reader mode 1023 styling in various scenarios: 1024 * Images are now shrinked to the page width, similarly to what Firefox' reader 1025 mode does. 1026 * Some images ore now displayed as block (rather than inline) which is what 1027 Firefox' reader mode does as well. 1028 * Blockquotes are now styled more distinctively, again based on the Firefox 1029 reader mode. 1030 * Code blocks are now easier to distinguish from text and tables have visible 1031 cell margins. 1032- The `readability-js` userscript now supports hint userscript mode. 1033 1034Added 1035~~~~~ 1036 1037- New argument `strip` for `:navigate` which removes queries and 1038 fragments from the current URL. 1039- `:undo` now has a new `-w` / `--window` argument, which can be used to 1040 restore closed windows (rather than tabs). This is bound to `U` by default. 1041- `:jseval` can now take `javascript:...` URLs via a new `--url` flag. 1042- New replacement `{aligned_index}` for `tabs.title.format` and `format_pinned` 1043 which behaves like `{index}`, but space-pads the index based on the total 1044 numbers of tabs. This can be used to get aligned tab texts with vertical 1045 tabs. 1046- New command `:devtools-focus` (bound to `wIf`) to toggle keyboard focus 1047 between the devtools and web page. 1048- The `--target` argument to qutebrowser now understands a new `private-window` 1049 value, which can be used to open a private window in an existing instance 1050 from the commandline. 1051- The `:download-open` command now has a new `--dir` flag, which can be used to 1052 open the directory containing the downloaded file. An entry to do the same 1053 was also added to the context menu. 1054- Messages are now wrapped when they are too long to be displayed on a single line. 1055- New possible `--debug-flag` values: 1056 * `wait-renderer-process` waits for a `SIGUSR1` in the renderer process so a 1057 debugger can be attached. 1058 * `avoid-chromium-init` allows using `--version` without needing a working 1059 QtWebEngine/Chromium. 1060 1061Fixed 1062~~~~~ 1063 1064- A URL pattern with a `*.` host was considered valid and matched all hosts. 1065 Due to keybindings like `tsH` toggling scripts for `*://*.{url:host}/*`, 1066 invoking them on pages without a host (e.g. `about:blank`) could result in 1067 accidentally allowing/blocking JavaScript for all pages. Such patterns are 1068 now considered invalid, with existing patterns being automatically removed 1069 from `autoconfig.yml`. 1070- When `scrolling.bar` was set to `overlay` (the default), qutebrowser would 1071 internally override any `enable-features=...` flags passed via `qt.args` or 1072 `--qt-flag`. It now correctly combines existing `enable-feature` flags with 1073 internal ones. 1074- Elements with an inherited `contenteditable` attribute now trigger insert 1075 mode and get hints assigned correctly. 1076- When checkmarks, radio buttons and some other elements are styled via the 1077 Bootstrap CSS framework, they now get hints correctly. 1078- When the session file isn't writable when qutebrowser exits, an error is now 1079 logged instead of crashing. 1080- When using `-m` with the `qute-lastpass` userscript, it accidentally matched 1081 URLs containing the match as substring. This is now fixed. 1082- When a filename is derived from a page's title, it's now shortened to the 1083 maximum filename length permitted by the filesystem. 1084- `:enter-mode register` crashed since v1.13.0, it now displays an error 1085 instead. 1086- With the QtWebKit backend, webpage resources loading certain invalid URLs 1087 could cause a crash, which is now fixed. 1088- When `:config-edit` is used but no `config.py` exists yet, the file is now 1089 created (and watched for changes properly) before spawning the external 1090 editor. 1091- When hint mode was entered from outside normal mode, the status bar was empty 1092 instead of displaying the proper text. This is now fixed. 1093- When entering different modes too quickly (e.g. pressing `fV`), the statusbar 1094 could end up in a confusing state. This is now fixed. 1095- When qutebrowser quits, running downloads are now cancelled properly. 1096- The site-specific quirk for `web.whatsapp.com` has been updated to work after recent 1097 changes in WhatsApp. 1098- Highlighting in the completion now works properly when UTF-16 surrogate pairs (such as 1099 emoji) are involved. 1100- When a windowed inspector is clicked, insert mode now isn't entered anymore. 1101- When `:undo` is used to re-open a tab, but `tabs.tabs_are_windows` was set between 1102 closing and undoing the close, qutebrowser crashed. This is now fixed. 1103- With QtWebEngine 5.15.0, setting the darkmode image policy to `smart` leads to 1104 renderer process crashes. The offending setting value is now ignored with a 1105 warning. 1106- Fixes for the `qute-pass` userscript: 1107 * With newer `gopass` versions, a deprecation notice was copied as 1108 password due to `qute-pass` using it in a deprecated way. 1109 * The `--password-store` argument didn't actually set 1110 `PASSWORD_STORE_DIR` for `pass`, resulting in `qute-pass` finding matches but the 1111 underlying `pass` not finding matching passwords. 1112 1113[[v1.13.1]] 1114v1.13.1 (2020-07-17) 1115-------------------- 1116 1117Fixed 1118~~~~~ 1119 1120- With Qt 5.14, shared workers are now disabled. This works around a crash in 1121 QtWebEngine on certain sites (like the Epic Games Store or the Unreal Engine 1122 page). On older versions, you can get the same effect by doing 1123 `:set qt.args "['disable-shared-workers']"` and `:restart` (or set the 1124 setting in your `config.py`). 1125- When a window is closed, the tab it contains are now correctly shut down 1126 (closing e.g. any dialogs which are still open for those tabs). 1127- The Qt 5.15 session workaround now loads the correct (rather than the last) 1128 page when `:back` was used before saving a session. 1129- In certain situations on Windows, qutebrowser fails to find the username of 1130 the user launching qutebrowser (most likely due to a bug in the application 1131 launching it). When this happens, an error is now displayed instead of 1132 crashing. 1133- Certain `autoconfig.yml` with an invalid structure could lead to crashes, 1134 which are now fixed. 1135- Generating docs with `asciidoc2html.py` (e.g. via `mkvenv.py`) now works 1136 correctly without Pygments being installed system-wide. 1137- Ever since Qt 5.9, when `input.mouse.rocker_gestures` was enabled, the 1138 context menu still was shown when clicking the right mouse button, thus 1139 preventing the rocker gestures. This is now fixed. 1140- Clicking the inspector switched from existing modes (such as passthrough) to 1141 normal mode since v1.13.0. Now insert mode is only entered when the inspector 1142 is clicked in normal mode. 1143- Pulseaudio now shows qutebrowser's audio streams as qutebrowser correctly, 1144 rather than showing them as Chromium with some Qt versions. 1145- If `:help` was called with a deprecated command (e.g. `:help :inspector`), 1146 the help page would show despite deprecated commands not being documented. 1147 This now shows an error instead. 1148- The `qute-lastpass` userscript now filters out duplicate entries with 1149 `--merge-candidates`. 1150 1151[[v1.13.0]] 1152v1.13.0 (2020-06-26) 1153-------------------- 1154 1155Deprecated 1156~~~~~~~~~~ 1157 1158- The `:inspector` command is deprecated and has been replaced by a new 1159 `:devtools` command (see below). 1160 1161Removed 1162~~~~~~~ 1163 1164- The `:debug-log-level` command was removed as it's replaced by the new 1165 `logging.level.console` setting. 1166- The `qute://plainlog` special page got replaced by `qute://log?plain` - the 1167 names of those pages is considered an implementation detail, and 1168 `:messages --plain` should be used instead. 1169 1170Changed 1171~~~~~~~ 1172 1173- Changes to commands: 1174 * `:config-write-py` now adds a note about `config.py` files being targeted at 1175 advanced users. 1176 * `:report` now takes two optional arguments for bug/contact information, so 1177 that it can be used without the report window popping up. 1178 * `:message` now takes a `--logfilter` / `-f` argument, which is a list of 1179 logging categories to show. 1180 * `:debug-log-filter` now understands the full logfilter syntax. 1181- Changes to settings: 1182 * `fonts.tabs` has been split into `fonts.tabs.{selected,unselected}` (see 1183 below). 1184 * `statusbar.hide` has been renamed to `statusbar.show` with the possible 1185 values being `always` (`hide = False`), `never` (`hide = True`) or 1186 `in-mode` (new, only show statusbar outside of normal mode. 1187 * The `QtFont` config type formerly used for `fonts.tabs` and 1188 `fonts.debug_console` is now removed and entirely replaced by `Font`. The 1189 former distinction was mainly an implementation detail, and the accepted 1190 values shouldn't have changed. 1191 * `input.rocker_gestures` has been renamed to `input.mouse.rocker_gestures`. 1192 * `content.dns_prefetch` is now enabled by default again, since the crashes 1193 it caused are now fixed (Qt 5.15) or worked around. 1194 * `scrolling.bar` supports a new `overlay` value to show an overlay 1195 scrollbar, which is now the default. On unsupported configurations (on Qt < 1196 5.11, with QtWebKit or on macOS), the value falls back to `when-searching` 1197 or `never` (QtWebKit). 1198 * `url.auto_search` supports a new `schemeless` value which always opens a 1199 search unless the given URL includes an explicit scheme. 1200- New handling of bindings in hint mode which fixes various bugs and allows for 1201 single-letter keybindings in hint mode. 1202- The statusbar now shows partial keychains in all modes (e.g. while hinting). 1203- New `t[Cc][Hh]` default bindings which work similarly to the `t[Ss][Hh]` 1204 bindings for JavaScript but toggle cookie permissions. 1205- The `tor_identity` userscript now takes the password via a `-p` flag and has 1206 a new `-c` flag to customize the Tor control port. 1207- Small performance improvements. 1208 1209Added 1210~~~~~ 1211 1212- New settings: 1213 * `logging.level.ram` and `logging.level.console` to configure the default 1214 logging levels via the config. 1215 * `fonts.tabs.selected` and `fonts.tabs.unselected` to set the font of the 1216 selected tab independently from unselected tabs (e.g. to make it bold). 1217 * `input.mouse.back_forward_buttons` which can be set to `false` to disable 1218 back/forward mouse buttons. 1219- New `:devtools` command (replacing `:inspector`) with various improved 1220 functionality: 1221 * The devtools can now be docked to the main window, by running 1222 `:devtools left` (`wIh`), `bottom` (`wIj`), `top` (`wIk`) or `right` 1223 (`wIl`). To show them in a new window, use `:devtools window` (`wIw`). 1224 Using `:devtools` (`wi`) will open them at the last used position. 1225 * The devtool window now has a "qutebrowser developer tools" window title. 1226 * When a resource is opened from the devtools, it now opens in a proper 1227 qutebrowser tab. 1228 * On Fedora, when the `qt5-webengine-devtools` package is missing, an error 1229 is now shown instead of a blank inspector window. 1230 * If opened as a window, the devtools are now closed properly when the 1231 associated tab is closed. 1232 * When the devtools are clicked, insert mode is entered automatically. 1233 1234Fixed 1235~~~~~ 1236 1237- Crash when `tabs.focus_stack_size` is set to -1. 1238- Crash when a `pdf.js` file for PDF.js exists, but `viewer.html` does not. 1239- Crash when `:completion-item-yank --sel` is used on a platform without 1240 primary selection support (e.g. Windows/macOS). 1241- Crash when there's a feature permission request from Qt with an invalid URL 1242 (which happens due to a Qt bug with Qt 5.15 in private browsing mode). 1243- Crash in rare cases where QtWebKit/QtWebEngine imports fail in unexpected 1244 ways. 1245- Crash when something removed qutebrowser's IPC socket file and it's been 1246 running for 6 hours. 1247- `:config-write-py` now works with paths starting with `~/...` again. 1248- New site-specific quirk for a missing `globalThis` in Qt <= 5.12 on Reddit 1249 and Spotify. 1250- When `;` is added to `hints.chars`, using hint labels containing `;;` now 1251 works properly. 1252- Hint letters outside of ASCII should now work. 1253- When `bindings.key_mappings` is used with hints, it now works properly with 1254 letters outside of ASCII as well. 1255- With Qt 5.15, the audible/muted indicators are not updated properly due to a 1256 Qt bug. This release adds a workaround so that at least the muted indicator 1257 is shown properly. 1258- As a workaround for crashes with QtWebEngine versions between 5.12 and 5.14 1259 (inclusive), changing the user agent (`content.headers.user_agent`) exposed 1260 to JS now requires a restart. The corresponding HTTP header is not affected. 1261 1262[[v1.12.0]] 1263v1.12.0 (2020-06-01) 1264-------------------- 1265 1266Removed 1267~~~~~~~ 1268 1269- `tox -e mkvenv` which was deprecated in qutebrowser v1.10.0 is now 1270 removed. Use the `mkvenv.py` script instead. 1271- Support for using `config.bind(key, None)` in `config.py` to unbind a 1272 key was deprecated in v1.8.2 and is now removed. Use 1273 `config.unbind(key)` instead. 1274- `:yank markdown` was deprecated in v1.7.0 and is now removed. Use 1275 `:yank inline [{title}]({url})` instead. 1276 1277Added 1278~~~~~ 1279 1280- New `:debug-keytester` command, which shows a "key tester" widget. 1281 Previously, that was only available as a separate application via `python3 -m 1282 scripts.keytester`. 1283- New `:config-diff` command which opens the `qute://configdiff` page. 1284- New `--debug-flag log-cookies` to log cookies to the debug log. 1285- New `colors.contextmenu.disabled.{fg,bg}` settings to customize colors for 1286 disabled items in the context menu. 1287- New line selection mode (`:toggle-selection --line`), bound to `Shift-V` in caret mode. 1288- New `colors.webpage.darkmode.*` settings to control Chromium's dark mode. 1289 Note that those settings only work with QtWebEngine on Qt >= 5.14 and require 1290 a restart of qutebrowser. 1291 1292Changed 1293~~~~~~~ 1294 1295- Windows and macOS releases now ship Qt 5.15, which is based on Chromium 1296 80.0.3987.163 with security fixes up to 81.0.4044.138. 1297- The `content.cookies.accept` setting now accepts URL patterns. 1298- Tests are now included in release tarballs. Note that only running them with 1299 the exact dependencies listed in 1300 `misc/requirements/requirements-tests.txt{,-raw}` is supported. 1301- The `:tab-focus` command now has completion for tabs in the current window. 1302- The `bindings.key_mappings` setting now maps `<Ctrl+I>` to the tab key by default. 1303- `:tab-give --private` now detaches a tab into a new private window. 1304 1305Fixed 1306~~~~~ 1307 1308- Using `:open -s` now only rewrites `http://` in URLs to `https://`, not other 1309 schemes like `qute://`. 1310- When an unhandled exception happens in certain parts of the code (outside of 1311 the main thread), qutebrowser did crash or freeze when trying to show its 1312 exception handler. This is now fixed. 1313- `:inspector` now works correctly when cookies are disabled globally. 1314- Added workaround for a (Gentoo?) PyQt/packaging issue related to the 1315 `QWebEngineFindTextResult` handling added in v1.11.0. 1316- When entering caret selection mode (`v, v`) very early before a page is 1317 loaded, an error is now shown instead of a crash happening. 1318- The workaround for session loading with Qt 5.15 now handles 1319 `sessions.lazy_restore` so that the saved page is loaded instead of the 1320 "stub" page with no possibility to get to the web page. 1321- A site specific quirk to allow typing accented characters on Google 1322 Docs was active for docs.google.com, but not drive.google.com. It is 1323 now applied for both subdomains. 1324- With older graphics hardware (OpenGL < 4.3) with Qt 5.14 on Wayland, WebGL 1325 causes segfaults. Now qutebrowser detects that combination and suggests to 1326 disable WebGL or use XWayland. 1327 1328[[v1.11.1]] 1329v1.11.1 (2020-05-07) 1330-------------------- 1331 1332Security 1333~~~~~~~~ 1334 1335- CVE-2020-11054: After a certificate error was overridden by the user, 1336 qutebrowser displays the URL as yellow (`colors.statusbar.url.warn.fg`). 1337 However, when the affected website was subsequently loaded again, the URL was 1338 mistakenly displayed as green (`colors.statusbar.url.success_https`). While 1339 the user already has seen a certificate error prompt at this point (or set 1340 `content.ssl_strict` to `false` which is not recommended), this could still 1341 provide a false sense of security. This is now fixed. 1342 1343[[v1.11.0]] 1344v1.11.0 (2020-04-27) 1345-------------------- 1346 1347Added 1348~~~~~ 1349 1350- New settings: 1351 * `search.wrap` which can be set to false to prevent wrapping around the page 1352 when searching. With QtWebEngine, Qt 5.14 or newer is required. 1353 * `content.unknown_url_scheme_policy` which allows controlling when an 1354 external application is opened for external links (never, from user 1355 interaction, always). 1356 * `content.fullscreen.overlay_timeout` to configure how long the fullscreen 1357 overlay should be displayed. If set to `0`, no overlay is displayed. 1358 * `hints.padding` to add additional padding for hints. 1359 * `hints.radius` to set a border radius for hints (set to `3` by default). 1360- New placeholders for `url.searchengines` values: 1361 * `{unquoted}` inserts the search term without any quoting. 1362 * `{semiquoted}` (same as `{}`) quotes most special characters, but slashes 1363 remain unquoted. 1364 * `{quoted}` (same as `{}` in earlier releases) also quotes slashes. 1365 1366Changed 1367~~~~~~~ 1368 1369- First adaptions to Qt 5.15, including a stop-gap measure for session loading 1370 not working properly with it. 1371- Searching now wraps around the page by default with QtWebKit (where it didn't 1372 before). Set `search.wrap` to `false` to restore the old behavior. 1373- The `{}` placeholder for search engines (the `url.searchengines` setting) now 1374 does not quote slashes anymore, but other characters typically encoded in 1375 URLs still get encoded. This matches the behavior of search engines in 1376 Chromium. To revert to the old behavior, use `{quoted}` instead. 1377- The `content.windowed_fullscreen` setting got renamed to 1378 `content.fullscreen.window`. 1379- Mouse-wheel scrolling is now prevented while hints are active. 1380- Changes to userscripts: 1381 * `qute-bitwarden` now has an optional `--totp` flag which can be used 1382 to copy TOTP codes to clipboard (requires the `pyperclip` module). 1383 * `readability-js` now opens readability tabs next to the original 1384 tab (using the `:open --related` flag). 1385 * `readability-js` now displays a favicon for readability tabs. 1386 * `password_fill` now triggers a `change` JavaScript event after filling the 1387 data. 1388- The `dictcli.py` script now shows better error messages. 1389- Various improvements to the `mkvenv.py` script (mainly useful for development). 1390- Minor performance improvements. 1391 1392Deprecated 1393~~~~~~~~~~ 1394 1395- A warning about old Qt versions is now also shown with Qt 5.9 and 5.10, as 1396 support for Qt < 5.11 will be dropped in qutebrowser v2.0. 1397 1398Fixed 1399~~~~~ 1400 1401- `unsafeWindow` is now defined for Greasemonkey scripts with QtWebKit. 1402- The proxied `window` global is now shared between different 1403 Greasemonkey scripts (but still separate from the page's `window`), to 1404 match the original Greasemonkey implementation. 1405- The `--output-messages` (`-m`) flag added in v1.9.0 now also works correctly 1406 when using `:spawn --userscript`. 1407- `:version` and `--version` now don't crash if there's an (invalid) 1408 `/etc/os-release` file which has non-comment lines without a `=` character. 1409- Scripts in `scripts/` now report errors to `stderr` correctly, instead of 1410 using `stdout`. 1411 1412[[v1.10.2]] 1413v1.10.2 (2020-04-17) 1414-------------------- 1415 1416Changed 1417~~~~~~~ 1418 1419- Windows and macOS releases now bundle Qt 5.14.2, including security fixes up 1420 to Chromium 80.0.3987.132. 1421 1422Fixed 1423~~~~~ 1424 1425- The WhatsApp workaround now also works when using WhatsApp in languages other 1426 than English. 1427- The `mkvenv.py` script now also works properly on Windows. 1428 1429[[v1.10.1]] 1430v1.10.1 (2020-02-15) 1431-------------------- 1432 1433Fixed 1434~~~~~ 1435 1436- Crash when saving data fails during shutdown (which was a regression 1437 introduced in v1.9.0). 1438- Error while reading config.py when `fonts.tabs` or `fonts.debug_console` is 1439 set to a value including `default_size`. 1440- When a `state` file contains invalid UTF-8 data, a proper error is now 1441 displayed. 1442 1443Changed 1444~~~~~~~ 1445 1446- When the Qt version changes (and also on the first start of v1.10.1 on Qt 1447 5.14), service workers registered by websites are now deleted. This is done 1448 as a workaround for QtWebEngine issues causing crashes when visiting pages 1449 using service workers (such as Google Mail/Drive). No persistent data should 1450 be affected as websites can re-register their service workers, but a (single) 1451 backup is kept at `webengine/Service Worker-bak` in qutebrowser's data 1452 directory. 1453- Better output on stdout when config errors occur. 1454- The `mkvenv.py` now ensures the latest versions of `setuptools` and `wheel` 1455 are installed in the virtual environment, which should speed up installation 1456 and fix install issues. 1457- The default for `colors.statusbar.command.private.bg` has been changed to a 1458 slightly different gray, as a workaround for a Qt issue where the cursor was 1459 invisible in that case. 1460 1461[[v1.10.0]] 1462v1.10.0 (2020-02-02) 1463-------------------- 1464 1465Added 1466~~~~~ 1467 1468- New `colors.webpage.prefers_color_scheme_dark` setting which allows forcing 1469 `prefers-color-scheme: dark` colors for websites (QtWebEngine with Qt 5.14 or 1470 newer). 1471- New `fonts.default_size` setting which can be used to set a bigger font size 1472 for all UI fonts. 1473 1474Changed 1475~~~~~~~ 1476 1477- The `fonts.monospace` setting has been removed and replaced by 1478 `fonts.default_family`. The new `default_family` setting is improved in 1479 various ways: 1480 * It accepts a list of font families (or a single font family) rather than a 1481 comma-separated string. As an example, instead of 1482 `fonts.monospace = "Courier, Monaco"`, use 1483 `fonts.default_family = ["Courier", "Monaco"]`. 1484 * Since a list is now accepted as value, no quoting of font names with spaces 1485 is required anymore. As an example, instead of 1486 `fonts.monospace = '"xos4 Terminus"'`, use 1487 `fonts.default_family = 'xos4 Terminus'`. 1488 * It is now empty by default rather than having a long list of font names in 1489 the default config. When the value is empty, the system's default 1490 monospaced font is used. 1491- If `monospace` is now used in a font value, it's used literally and not 1492 replaced anymore. Instead, `default_family` is replaced as explained above. 1493- The default `content.headers.accept_language` value now adds a `;q=0.9` 1494 classifier which should make the value sent more in-line with what other 1495 browsers do. 1496- The `qute-pass` userscript now has a new `--mode gopass` switch which uses 1497 gopass rather than pass. 1498- The `tox -e mkvenv` (or `mkvenv-pypi`) way of installing qutebrowser is now 1499 replaced by a `mkvenv.py` script. See the updated 1500 link:install{outfilesuffix}#tox[install instructions] for details. 1501- macOS and Windows releases now ship with Qt/QtWebEngine 5.14.1 1502 * Based on Chromium 77.0.3865.129 with security fixes up to Chromium 79.0.3945.117. 1503 * Sandboxing is now enabled on Windows. 1504 * Monospace fonts are now used when a website requests them on macOS 10.15. 1505 * Web notifications are now supported. 1506 1507Fixed 1508~~~~~ 1509 1510- When quitting qutebrowser, components are now cleaned up differently. This 1511 should fix certain (rare) segmentation faults and exceptions when quitting, 1512 especially with the new exit scheme introduced in in PyQt5 5.13.1. 1513- Added a workaround for per-domain settings (e.g. a JavaScript whitelist) not 1514 being applied in some scenarios with Qt 5.13 and above. 1515- Added additional site-specific quirk for WhatsApp Web. 1516- The `qute-pass` userscript now works correctly when a `PASSWORD_STORE_DIR` 1517 ending with a trailing slash is given. 1518 1519[[v1.9.0]] 1520v1.9.0 (2020-01-08) 1521------------------- 1522 1523Added 1524~~~~~ 1525 1526- Initial support for Qt 5.14. 1527- New `content.site_specific_quirks` setting which enables workarounds for 1528 websites with broken user agent parsing (enabled by default, see the "Fixed" 1529 section for fixed websites). 1530- New `qt.force_platformtheme` setting to force Qt to use a given platform 1531 theme. 1532- New `tabs.tooltips` setting which can be used to disable hover tooltips for 1533 tabs. 1534- New settings to configure the appearance of context menus: 1535 * `fonts.contextmenu` 1536 * `colors.contextmenu.menu.bg` 1537 * `colors.contextmenu.menu.fg` 1538 * `colors.contextmenu.selected.bg` 1539 * `colors.contextmenu.selected.fg` 1540 1541Changed 1542~~~~~~~ 1543 1544- The macOS binaries now require macOS 10.13 High Sierra or newer. Support for 1545 macOS 10.12 Sierra has been dropped. 1546- The `content.headers.user_agent` setting now is a format string with the 1547 default value resembling the behavior of it being set to null before. 1548 This slightly changes the sent user agent for QtWebKit: Instead of mentioning 1549 qutebrowser and its version it now mentions the Qt version. 1550- The `qute-pass` userscript now has a new `--extra-url-suffixes` (`-s`) 1551 argument which passes extra URL suffixes to the tldextract library. 1552- A stack is now used for `:tab-focus last` rather than just saving one tab. 1553 Additionally, `:tab-focus` now understands `stack-prev` and `stack-next` 1554 arguments to traverse that stack. 1555- `:hint` now has a new `right-click` target which allows right-clicking 1556 elements via hints. 1557- The Terminus font has been removed from the default monospace fonts since it 1558 caused trouble with HighDPI setups. To get it back, add either 1559 `"xos4 Terminus"` or `Terminus` (depending on fontconfig version) to the 1560 beginning of the `fonts.monospace` setting. 1561- As a workaround for a Qt bug causing a segfault, desktop sharing is now 1562 automatically rejected on Qt versions before 5.13.2. Note that screen sharing 1563 still won't work on Linux before Qt 5.14. 1564- Comment lines in quickmarks/bookmarks files are now ignored. However, note that 1565 qutebrowser will overwrite those files if bookmark/quickmark commands are used. 1566- Reopening PDF.js pages from e.g. a session file will now re-download and 1567 display those PDFs. 1568- Improved behavior when using `:open-download` in a sandboxed environment (KDE 1569 Flatpak). 1570- qutebrowser now enables the new PyQt exit scheme, which should result in 1571 things being cleaned up more properly (e.g. cookies being saved even without 1572 a timeout) on PyQt 5.13.1 and newer. 1573- The `:spawn` command has a new `-m` / `--output-messages` argument which 1574 shows qutebrowser messages based on a command's standard output/error. 1575- Improved insert mode detection for some CodeMirror usages (e.g. in 1576 JupyterLab and Jupyter Notebook). 1577- If JavaScript is disabled globally, `file://*` now doesn't automatically have 1578 it enabled anymore. Run `:set -u file://* content.javascript.enabled true` to 1579 restore the previous behavior. 1580- Settings with URL patterns can now be used to affect the behavior of the 1581 QtWebEngine inspector. Note that the underlying URL is `chrome-devtools://*` 1582 from Qt 5.11 to Qt 5.13, but `devtools://*` with Qt 5.14. 1583- Improvements when `tabs.tabs_are_windows` is set: 1584 * Using `:tab-take` and `:tab-give` now shows an error, as the effect of 1585 doing so would be equal to `:tab-clone`. 1586 * The `:buffer` completion doesn't show any window sections anymore, only a 1587 flat list of tabs. 1588- Improved parsing in some corner cases for the `QtFont` type (used for 1589 `fonts.tabs` and `fonts.debug_console`). 1590- Performance improvements for the following areas: 1591 * Adding settings with URL patterns 1592 * Matching of settings using URL patterns 1593 1594Fixed 1595~~~~~ 1596 1597- Downloads (e.g. via `:download`) now see the same user agent header as 1598 webpages, which fixes cases where overly restrictive servers/WAFs closed the 1599 connection before. 1600- `dictcli.py` now works correctly on Windows again. 1601- The logic for `:restart` has been revisited, which should fix issues with 1602 relative basedirs. 1603- Remaining issues related to Python 3.8 are now fixed (mostly warnings, 1604 especially on QtWebKit). 1605- Workaround for a Qt bug where a page never finishes loading with a 1606 non-overridable TLS error (e.g. due to HSTS). 1607- The `qute://configdiff` page now doesn't show built-in settings (e.g. 1608 javascript being enabled for `qute://` and `chrome://` pages) anymore. 1609- The `qute-lastpass` userscript now stops prompting for passwords when 1610 cancelling the password input. 1611- The tab hover text now shows ampersands (&) correctly. 1612- With QtWebEngine and Qt >= 5.11, the inspector now shows its icons correctly 1613 even if loading of images is disabled via the `content.images` setting. 1614- Entering a very long string (over 50k characters) in the completion used to 1615 crash, now it shows an error message instead. 1616- Various improvements for URL/searchengine detection: 1617 * Strings with a dot but with characters not allowed in a URL (e.g. an 1618 underscore) are now not treated as URL anymore. 1619 * Strings like "5/8" are now not treated as IP anymore. 1620 * URLs with an explicit scheme and a space (%20) are correctly treated as 1621 URLs. 1622 * Mail addresses are now treated as search terms. 1623 * With `url.open_base_url` set, searching for a search engine name now works. 1624 * `url.open_base_url = True` together with `url.auto_search = 'never'` is now 1625 handled correctly. 1626 * Fixed crash when a search engine URL turns out to be invalid. 1627- New "site specific quirks", which work around some broken websites: 1628 * WhatsApp Web 1629 * Google Accounts 1630 * Slack (with older QtWebEngine versions) 1631 * Dell.com support pages (with Qt 5.7) 1632 * Google Docs (fixes broken IME/compose key) 1633 1634[[v1.8.3]] 1635v1.8.3 (2019-12-05) 1636------------------- 1637 1638Fixed 1639~~~~~ 1640 1641- Segmentation fault introduced in v1.8.2 when a tab gets closed immediately 1642 after it has finished loading (e.g. with certain login flows). 1643 1644[[v1.8.2]] 1645v1.8.2 (2019-11-22) 1646------------------- 1647 1648Changed 1649~~~~~~~ 1650 1651- Windows/macOS releases now ship with Qt 5.12.6. This includes security fixes 1652 up to Chromium 77.0.3865.120 plus a security fix for CVE-2019-13720 from 1653 Chromium 78. 1654 1655Fixed 1656~~~~~ 1657 1658- Unbinding keys via `config.bind(key, None)` accidentally worked in 1659 v1.7.0 but raises an exception in v1.8.0. It now works again, but is 1660 deprecated and shows an error. Note that `:config-py-write` did write 1661 such invalid lines before v1.8.0, so existing config files might need 1662 adjustments. 1663- The `readability-js` userscript now handles encodings correctly (which it 1664 didn't before for some websites). 1665- <Shift-Insert> can now be used to paste text starting with a hyphen. 1666- Following hints via the number keypad now works properly again. 1667- Errors while reading the state file are now displayed instead of causing a 1668 crash. 1669- Crash when using `:debug-log-level` without a console attached. 1670- Downloads are now hidden properly when the browser is in fullscreen mode. 1671- Crash when setting `colors.webpage.bg` to an empty value with QtWebKit. 1672- Crash when the history database file is not a proper sqlite database. 1673- Workaround for missing/broken error pages on Debian. 1674- A deprecation warning (caused by pywin32) about the imp module on Windows is 1675 now hidden. 1676 1677[[v1.8.1]] 1678v1.8.1 (2019-09-27) 1679------------------- 1680 1681Changed 1682~~~~~~~ 1683 1684- No code changes - this release only repackages the Windows/macOS 1685 releases due to issues with the v1.8.0 release. 1686- Updated dependencies for Windows/macOS releases: 1687 * macOS and Windows releases now ship with Qt/QtWebEngine 5.12.5. Those 1688 are based on Chromium 69.0.3497.128 with security fixes up to Chromium 1689 76.0.3809.87. 1690 * Qt 5.13 couldn't be used yet due to various bugs in Qt 5.13.0 and .1. 1691 1692[[v1.8.0]] 1693v1.8.0 (2019-09-25) 1694------------------- 1695 1696Added 1697~~~~~ 1698 1699- New userscripts: 1700 * `readability-js` which uses Mozilla's node.js readability library. 1701 * `qute-bitwarden` which integrates the Bitwarden CLI. 1702 1703Changed 1704~~~~~~~ 1705 1706- The statusbar text for passthrough mode now shows all configured bindings to 1707 leave the mode, not only one. 1708- When `:config-source` is used with a relative filename, the file is now 1709 searched in the config directory instead of the current working directory. 1710- HTML5 inputs with date/time types now enter insert mode when selected. 1711- `dictcli.py` now shows where dictionaries are installed to and complains when 1712 running it as root if doing so would result in a wrong installation path. 1713- The Makefile now can also run `setup.py build` when invoked without a target. 1714- Changes to userscripts: 1715 * qute-pass: Don't run `pass` if only a username is requested. 1716 * qute-pass: Support private domains like `myrouter.local`. 1717 * readability: Improved CSS styling. 1718- Performance improvements in various areas: 1719 * Loading config files 1720 * Typing without any completion matches 1721 * General keyboard handling 1722 * Scrolling 1723- `:version` now shows details about the loaded autoconfig.yml/config.py. 1724- Hosts are now additionally looked up including their ports in netrc files. 1725- With Qt 5.10 or newer, qutebrowser now doesn't force software rendering with 1726 Nouveau drivers anymore. However, QtWebEngine/Chromium still do so. 1727- The XSS Auditor is now disabled by default (`content.xss_auditing` = 1728 `false`). This reflects a similar change in Chromium, see 1729 their https://www.chromium.org/developers/design-documents/xss-auditor[XSS 1730 Auditor Design Document] for details. 1731 1732Fixed 1733~~~~~ 1734 1735- `:config-write-py` now correctly writes `config.unbind(...)` lines (instead 1736 of `config.bind(..., None)`) when unbinding a default keybinding. 1737- Prevent repeat keyup events for JavaScript when a key is held down. 1738- The Makefile now rebuilds the manpage correctly. 1739- `~/.config/qutebrowser/blocked-hosts` can now also contain /etc/hosts-like 1740 lines, not just simple hostnames. 1741- Restored compatibility with Jinja2 2.8 (e.g. used on Debian Stretch or Ubuntu 1742 16.04 LTS). 1743- Fixed implicit type conversion warning with Python 3.8. 1744- The desktop file now sets `StartupWMClass` correctly, so the qutebrowser icon 1745 is no longer shown twice in the Gnome dock when pinned. 1746- Bindings involving keys which need the AltGr key now work properly. 1747- Fixed crash (caused by a Qt bug) when typing characters above the Unicode BMP 1748 (such as certain emoji or CJK characters). 1749- `dictcli.py` now works properly again. 1750- Shift can now be used while typing hint keystrings, which e.g. allows typing 1751 number hints on French keyboards. 1752- With rapid hinting in number mode, backspace now edits the filter text after 1753 following a hint. 1754- A certain type of error ("locking protocol") while initializing sqlite now 1755 isn't handled as crash anymore. 1756- Crash when showing a permission request in certain scenarios. 1757 1758Removed 1759~~~~~~~ 1760 1761- At least Python 3.5.2 is now required to run qutebrowser, support for 3.5.0 1762 and 3.5.1 was dropped. 1763 1764 1765[[v1.7.0]] 1766v1.7.0 (2019-07-18) 1767------------------- 1768 1769Added 1770~~~~~ 1771 1772- New settings: 1773 * `colors.tabs.pinned.*` to control colors of pinned tabs. 1774 * `hints.leave_on_load` which allows disabling leaving of hint mode when a 1775 new page is loaded. 1776 * `colors.completion.item.selected.match.fg` which allows configuring the 1777 text color for the matching text in the currently selected completion item. 1778 * `tabs.undo_stack_size` to limit how many undo entries are kept for closed tabs. 1779- New commands: 1780 * `:reverse-selection` (`o` in caret mode) to swap the stationary/moving ends 1781 of a selection. 1782- New commandline replacements: 1783 * `{url:domain}`, `{url:auth}`, `{url:scheme}`, `{url:username}`, 1784 `{url:password}`, `{url:host}`, `{url:port}`, `{url:path}`, `{url:query}` 1785 for the respective parts of the current URL. 1786 * `{title}` for the current page title. 1787- The `{title}` field in `tabs.title.format`, `tabs.title.format_pinned` and 1788 `window.title_format` got renamed to `{current_title}` (mirroring 1789 `{current_url}`) in order to not conflict with the new `{title}` commandline 1790 replacement. 1791- New `delete` target for `:hint` which removes the hinted element from 1792 the DOM. 1793- New `--config-py` commandline argument to use a custom `config.py` file. 1794- Qt 5.13: Support for notifications (shown via system tray). 1795 1796Changed 1797~~~~~~~ 1798 1799- Updated dependencies for Windows/macOS releases: 1800 - PyQt5 5.12.3 / PyQtWebEngine 5.12.1 1801 - Qt 5.12.4, which includes security fixes up to Chromium 74.0.3729.157 1802 - Python 3.7.4 1803 - OpenSSL 1.1.1 1804 - Note: This release includes Qt 5.12.4 instead of Qt 5.13.0 due to 1805 https://bugreports.qt.io/browse/QTBUG-76913[QTBUG-76913] causing frequent 1806 segfaults with Qt 5.13. After Qt 5.13.1 is released, qutebrowser v1.8.0 1807 will be released with an updated Qt. 1808- Completely revamped Windows installer which allows installing without admin 1809 permissions and allows setting qutebrowser as default browser. 1810- The desktop file `qutebrowser.desktop` is now renamed to 1811 `org.qutebrowser.qutebrowser.desktop`. 1812- Pinned tabs now always show a favicon (even if the site doesn't provide one) 1813 when shrinking. 1814- Setting `downloads.location.directory` now changes the directory displayed in 1815 the download prompt even if `downloads.location.remember` is set. 1816- The `yank` command gained a new `inline` argument, which allows to e.g. use 1817 `:yank inline [{title}]({url})`. 1818- Duplicate consecutive history entries with the same URL are now ignored. 1819- More detailed error messages when spawning a process failed. 1820- The `content.pdfjs` setting now supports domain patterns. 1821- Improved process status output with `:spawn -o`. 1822- The `colors.tabs.bar.bg` setting is now of type `QssColor` and thus supports 1823 gradients. 1824- The `:fullscreen` command now understands a new `--enter` flag which 1825 causes it to always enter fullscreen instead of toggling the current 1826 state. 1827- `--debug-flag stack` is now needed to show stack traces on renderer process 1828 crashes. 1829- `--debug-flag chromium` can be used to easily turn on verbose Chromium logging. 1830- For runtime data (such as the IPC socket), a proper runtime path is now used 1831 on BSD; only macOS/Windows continue to use the temporary directory. 1832- PDF.js is now also searched in `/app/share/pdf.js/` (for Flatpak) 1833- Permission prompts can now be answered with `Y` (`:prompt-accept --save yes`) 1834 and `N` (`:prompt-accept --save no`) to save the answer as a per-domain 1835 setting. 1836- `content.dns_prefetch` is now turned off by default, as it causes crashes 1837 inside QtWebEngine. 1838- The (still unofficial) interceptor plugin API now contains `resource_type` 1839 for a request and allows redirecting requests. 1840- `:bookmark-remove` now shows a message for consistency with `:bookmark-add`. 1841- Very early segfaults are now also caught by the crash handler. 1842- The appdata XML now contains proper release information and an (empty) OARS 1843 content rating. 1844- Improved Linux distribution detection. 1845- Qt 5.13: Request filtering now happens in the UI rather than IO thread. 1846- Qt 5.13: Support for PDFium (Chromium's PDF viewer) is disabled for now so 1847 that PDFs can still be downloaded (or shown with PDF.js) properly. 1848- Various performance improvements (e.g. for showing hints or the :open 1849 completion). 1850 1851Deprecated 1852~~~~~~~~~~ 1853 1854- `:yank markdown` got deprecated, as `:yank inline [{title}]({url})` can now 1855 be used instead. 1856 1857Fixed 1858~~~~~ 1859 1860- Various QtWebEngine load signals are now handled differently, which should 1861 fix issues with insert mode being left while typing on sites like Google 1862 Translate. 1863- Race condition causing a colored statusbar in normal mode when 1864 entering/exiting caret mode quickly. 1865- Using `100%` for a hue in a `hsv(...)` config value now corresponds to 359 1866 (rather than 255), matching the fixed behavior in Qt 5.13. 1867- Chaining commands with `;;` used to abort with some failing commands. It now 1868 runs the second command no matter whether the first one succeeded or not. 1869- Handling of profiles and private windows (and resulting crashes with Qt 1870 5.12.2). 1871- Fixes for corner-cases when using `:navigate increment/decrement`. 1872- The type for the `colors.hints.match.fg` setting was changed to `QtColor`. 1873 Gradients were never supported for this setting, and with this change, values 1874 like `rgb(0, 0, 0)` now work as well. 1875- Permission prompts now show a properly normalized URL with QtWebKit. 1876- Crash on start when PyQt was built without SSL support with Qt >= 5.12. 1877- Minor memory leaks. 1878 1879[[v1.6.3]] 1880v1.6.3 (2019-06-18) 1881------------------- 1882 1883Fixed 1884~~~~~ 1885 1886- Crash when hinting and changing/closing the tab before hints are displayed. 1887- Crash on redirects with Qt 5.13. 1888- Hide bogus `AA_ShareOpenGLContexts` warning with Qt 5.12.4. 1889- Workaround for renderer process crashes with Qt 5.12.4. 1890 If you're unable to update, you can remove `~/.cache/qutebrowser` for the 1891 same result. 1892 1893[[v1.6.2]] 1894v1.6.2 (2019-05-06) 1895------------------- 1896 1897Changed 1898~~~~~~~ 1899 1900- Windows/macOS releases now ship with Qt 5.12.3, which includes security fixes 1901 up to Chromium 73.0.3683.75. 1902 1903Fixed 1904~~~~~ 1905 1906- Crash when SQL errors occur while using the completion. 1907- Crash when cancelling a download prompt started in an already closed window. 1908- Crash when many prompts are opened at the same time. 1909- Running without Qt installed now displays a proper error again. 1910- High CPU usage when using the keyhint widget with a low delay. 1911- Crash with Qt >= 5.14 on redirects. 1912 1913[[v1.6.1]] 1914v1.6.1 (2019-03-20) 1915------------------- 1916 1917Changed 1918~~~~~~~ 1919 1920- Windows/macOS releases now ship with Qt 5.12.2, which includes 1921 security fixes up to Chromium 72.0.3626.121 (including CVE-2019-5786 1922 which is known to be exploited in the wild). 1923 1924Fixed 1925~~~~~ 1926 1927- Crash when using `:config-{dict,list}-{add,remove}` with an invalid setting. 1928- Functionality like hinting on pages with an element with ID `_qutebrowser` (such as qutebrowser.org) on Qt 5.12. 1929- The .desktop file in v1.6.0 was missing the "Actions" key, which is now fixed. 1930- The SVG icon now has a size of 256x256px set to comply with freedesktop standards. 1931- Setting `colors.statusbar.*.bg` to a gradient now has the expected effect of 1932 the gradient spanning the entire statusbar. 1933 1934[[v1.6.0]] 1935v1.6.0 (2019-02-25) 1936------------------- 1937 1938Added 1939~~~~~ 1940 1941- New settings: 1942 * `tabs.new_position.stacking` which controls whether new tabs opened from a 1943 page should stack on each other or not. 1944 * `completion.open_categories` which allows to configure which categories are 1945 shown in the `:open` completion, and how they are ordered. 1946 * `tabs.pinned.frozen` to allow/deny navigating in pinned tabs. 1947 * `hints.selectors` which allows to configure what CSS selectors are used for 1948 hints, and also allows adding custom hint groups. 1949 * `input.insert_mode.leave_on_load` to turn off leaving insert mode when a 1950 new page is loaded. 1951- New config manipulation commands: 1952 * `:config-dict-add` and `:config-list-add` to a new element to a dict/list 1953 setting. 1954 * `:config-dict-remove` and `:config-list-remove` to remove an element from a 1955 dict/list setting. 1956- New `:yank markdown` feature which yanks the current URL and title in 1957 markdown format. 1958- Support for new QtWebEngine features in Qt 5.12: 1959 * Basic support for client certificates. Selecting the certificate to use 1960 when there are multiple matching certificates isn't implemented yet. 1961 * Support for DNS prefetching (plus new `content.dns_prefetch` setting). 1962 1963Changed 1964~~~~~~~ 1965 1966- Various changes to the Windows and macOS builds: 1967 * Bundling Qt 5.12.1, based on Chromium 69.0.3497.128 with security fixes up 1968 to 71.0.3578.94. 1969 * Windows: A 32-bit build is available again. 1970 * Windows: The builds now bundle the Universal CRT DLLs, causing them to work 1971 on earlier versions of Windows 10. 1972 * macOS: Support for OS X 10.11 El Capitan was dropped, requiring macOS 10.12 1973 Sierra or newer. 1974 * macOS: The IPC socket path used to communicate with existing instances 1975 changed due to changes in Qt 5.12. Please make sure to quit qutebrowser 1976 before upgrading. 1977- `:q` now closes the current window instead of quitting qutebrowser completely 1978 (`:close`), while `:qa` quits (`:quit`). The behavior of `:wq` remains 1979 unchanged (`:quit --save`), as closing a window while saving the session 1980 doesn't make sense. 1981- Completion highlighting is now done differently (using `QSyntaxHighlighter`), 1982 which should fix some highlighting corner-cases. 1983- The `QtColor` config type now also understands colors like `rgb(...)`. 1984- `:yank` now has a `--quiet` option which causes it to not display a message. 1985- The `:open` completion now also shows search engines by default. 1986- The `content.host_blocking.enabled` setting now supports URL patterns, so the 1987 adblocker can be disabled on a given page. 1988- Elements with a `tabindex` attribute now also get hints by default. 1989- Various small performance improvements for hints and the completion. 1990- The Wayland check for QtWebEngine is now disabled on Qt >= 5.11.2, as those 1991 versions should work without any issues. 1992- The JavaScript `console` object is now available in PAC files. 1993- PAC proxies currently don't work properly on QtWebEngine (and never did), so 1994 an error is now shown when trying to configure a PAC proxy. 1995- The metainfo file `qutebrowser.appdata.xml` is now renamed to 1996 `org.qutebrowser.qutebrowser.appdata.xml`. 1997- The `qute-pass` userscript now understands domains in gpg filenames 1998 in addition to directory names. 1999- The autocompletion for `content.headers.user_agent` got updated to only 2000 include the default and Chrome, as setting the UA to Firefox has various 2001 bad side-effects. 2002- Combining Qt 5.12 with an older PyQt can lead to issues, so a warning is 2003 now shown when starting qutebrowser with that combination. 2004 2005Fixed 2006~~~~~ 2007 2008- Invalid world IDs now get rejected for `:jseval` and GreaseMonkey scripts. 2009- When websites suggest download filenames with invalid characters, those are 2010 now correctly replaced. 2011- Invalid hint length calculation in certain rare cases. 2012- Dragging tabs in the tab bar (which was broken in v1.5.0) 2013- Using Shift-Home in command mode now works properly. 2014- Workaround for a Qt bug which prevented 2015 `content.cookies.accept = no-3rdparty` from working properly on some pages 2016 like GMail. However, the default for `content.cookies.accept` is still `all` 2017 to be in line with what other browsers do. 2018- `:navigate` not incrementing in anchors or queries. 2019- Crash when trying to use a proxy requiring authentication with QtWebKit. 2020- Slashes in search terms are now percent-escaped. 2021- When `scrolling.bar = True` was set in versions before v1.5.0, this now 2022 correctly gets migrated to `always` instead of `when-searching`. 2023- Completion highlighting now works again on Qt 5.11.3 and 5.12.1. 2024- The non-standard header `X-Do-Not-Track` is no longer sent. 2025- PAC proxies were never correctly supported with QtWebEngine, but are now 2026 explicitly disallowed. 2027- macOS: Context menus for download items now show in the correct macOS style. 2028- Issues with fullscreen handling when exiting a video player. 2029- Various fixes for Qt 5.12 issues: 2030 * A javascript error on page load was fixed. 2031 * `window.print()` works with Qt 5.12 now. 2032 * Fixed handling of duplicate download filenames. 2033 * Fixed broken `qute://history` page. 2034 * Fixed PDF.js not working properly. 2035 * The download button in PDF.js now works (it's not possible to make 2036 it work with earlier Qt versions). 2037 * Since Greasemonkey scripts modifying the DOM fail when being run at 2038 document-start, some known-broken scripts (Iridium, userstyles.org) are now 2039 forced to run at document-end. 2040 2041[[v1.5.2]] 2042v1.5.2 (2018-10-26) 2043------------------- 2044 2045Changed 2046~~~~~~~ 2047 2048- The `content.cookies.accept` setting is now set to `all` instead of 2049 `no-3rdparty` by default, as `no-3rdparty` breaks various pages such as 2050 GMail. 2051 2052[[v1.5.1]] 2053v1.5.1 (2018-10-10) 2054------------------- 2055 2056Fixed 2057~~~~~ 2058 2059- Flickering when opening/closing tabs (as soon as more than 10 are open) on 2060 some pages. 2061- PDF.js is now bundled again with the macOS/Windows release. 2062- PDF.js is now searched in the correct path (if not installed system-wide) 2063 instead of hardcoding `~/.local/share/qutebrowser`. 2064- Improved logging for PDF.js resources which fail to load. 2065- Crash when closing a tab after doing a search. 2066- Tabs appearing when hidden after e.g. closing tabs. 2067 2068[[v1.5.0]] 2069v1.5.0 (2018-10-03) 2070------------------- 2071 2072Added 2073~~~~~ 2074 2075- Rewritten PDF.js support: 2076 * PDF.js support and the `content.pdfjs` setting are now also available with 2077 QtWebEngine. 2078 * Opening a PDF file now doesn't start a second request anymore. 2079 * Opening PDFs on https:// sites now works properly. 2080 * New `--pdfjs` flag for `prompt-open-download`, so PDFs can be opened in 2081 PDF.js with `<Ctrl-P>` in the download prompt. 2082- New settings: 2083 * `content.mouse_lock` to handle HTML5 pointer locking. 2084 * `completion.web_history.exclude` which hides a list of URL patterns from 2085 the completion. 2086 * `qt.process_model` which can be used to change Chromium's process model. 2087 * `qt.low_end_device_mode` which turns on Chromium's low-end device mode. 2088 This mode uses less RAM, but the expense of performance. 2089 * `content.webrtc_ip_handling_policy`, which allows more 2090 fine-grained/restrictive control about which IPs are exposed via WebRTC. 2091 * `tabs.max_width` which allows to have a more "normal" look for tabs. 2092 * `content.mute` which allows to mute pages (or all tabs) by default. 2093- Running qutebrowser with QtWebKit or Qt < 5.9 now shows a warning (only 2094 once), as support for those is going to be removed in a future release. 2095- New t[iI][hHu] default bindings (similar to `tsh` etc.) to toggle images. 2096- The qute-pass userscript now has optional OTP support. 2097- When `:spawn --userscript` is called with a count, that count is now 2098 passed to userscripts as `$QUTE_COUNT`. 2099 2100Changed 2101~~~~~~~ 2102 2103- Windows and macOS releases now bundle Python 3.7, PyQt 5.11.3 and Qt 5.11.2. 2104 QtWebEngine includes security fixes up to Chromium 68.0.3440.75 and 2105 https://code.qt.io/cgit/qt/qtwebengine.git/tree/dist/changes-5.11.2/?h=v5.11.2[various other fixes]. 2106- Various performance improvements when many tabs are opened. 2107- The `content.headers.referer` setting now works on QtWebEngine. 2108- The `:repeat` command now takes a count which is multiplied with the given 2109 "times" argument. 2110- The default keybinding to leave passthrough mode was changed from `<Ctrl-V>` 2111 to `<Shift-Escape>`, which makes pasting from the clipboard easier in 2112 passthrough mode and is also unlikely to conflict with webpage bindings. 2113- The `app_id` is now set to `qutebrowser` for Wayland. 2114- `Command` or `Cmd` can now be used (instead of `Meta`) to map the Command key 2115 on macOS. 2116- Using `:set option` now shows the value of the setting (like `:set option?` 2117 already did). 2118- The `completion.web_history_max_items` setting got renamed to 2119 `completion.web_history.max_items`. 2120- The Makefile shipped with qutebrowser now supports overriding variables 2121 `DATADIR` and `MANDIR`. 2122- Regenerating completion history now shows a progress dialog. 2123- The `content.autoplay` setting now supports URL patterns on Qt >= 5.11. 2124- The `content.host_blocking.whitelist` setting now takes a list of URL 2125 patterns instead of globs. 2126- In passthrough mode, Ctrl + Mousewheel now also gets passed through to the 2127 page instead of zooming. 2128- Editing text in an external editor now simulates a JS "input" event, which 2129 improves compatibility with websites reacting via JS to input. 2130- The `qute://settings` page is now properly sorted on Python 3.5. 2131- `:zoom`, `:zoom-in` and `:zoom-out` now have a `--quiet` switch which causes 2132 them to not display a message. 2133- The `scrolling.bar` setting now takes three values instead of being a 2134 boolean: `always`, `never`, and `when-searching` (which only displays it 2135 while a search is active). 2136- '@@' now repeats the last run macro. 2137- The `content.host_blocking.lists` setting now accepts a `file://` URL to a 2138 directory, and reads all files in that directory. 2139- The `:tab-give` and `:tab-take` command now have a new flag `--keep` which 2140 causes them to keep the old tab around. 2141- `:navigate` now clears the URL query. 2142 2143Fixed 2144~~~~~ 2145 2146- `qute://` pages now work properly on Qt 5.11.2 2147- Error when passing a substring with spaces to `:tab-take`. 2148- Greasemonkey scripts which start with a UTF-8 BOM are now handled correctly. 2149- When no documentation has been generated, the plaintext documentation now can 2150 be shown for more files such as `qute://help/userscripts.html`. 2151- Crash when doing initial run on Wayland without XWayland. 2152- Crash when trying to load an empty session file. 2153- `:hint` with an invalid `--mode=` value now shows a proper error. 2154- Rare crash on Qt 5.11.2 when clicking on `<select>` elements. 2155- Rare crash related to the completion. 2156 2157Removed 2158~~~~~~~ 2159 2160- Support for importing pre-v1.0.0 history files has been removed. 2161- The `content.webrtc_public_interfaces_only` setting has been removed and 2162 replaced by `content.webrtc_ip_handling_policy`. 2163 2164[[v1.4.2]] 2165v1.4.2 (2018-09-02) 2166------------------- 2167 2168Changed 2169~~~~~~~ 2170 2171- The `content.xss_auditing` setting is now enabled by default, to mirror 2172 Chromium's rather than Qt's default behavior. 2173- Long URLs in the statusbar are now elided at the end rather than in the 2174 middle, to make sure the hostname is completely visible whenever possible. 2175 2176Fixed 2177~~~~~ 2178 2179- Crash in Qt 5.7.1 when a website uses `window.print()`. 2180- The workaround for Nouveau graphic drivers now works properly again. 2181- Crash when using `:follow-selected` with a link which is outside of the view. 2182- Workaround for windows not showing as urgent with some window managers 2183 (like i3). 2184- Crash when opening URLs with some unicode characters (IDNA 2008). Those URLs 2185 still won't open though, due to missing support in Qt. 2186- Crash when a download directory which can't be created is configured. 2187- Crash in the `importer.py` script when importing Chrome bookmarks from newer Chrome versions. 2188- The `content.webrtc_public_interfaces_only` option didn't work on Qt 5.11 previously (it now does). 2189 Note it still does not work on Qt 5.10 (due to a Qt bug) and Qt < 5.9.2. 2190- Repeated escaping of entries in `qute://log` when refreshing page. 2191- The host blocker doesn't block 0.0.0.0 anymore. 2192- Crash when using :// as URL pattern. 2193- The `:buffer` completion now sorts tabs with indices >= 10 correctly again. 2194 2195[[v1.4.1]] 2196v1.4.1 (2018-07-11) 2197------------------- 2198 2199Security 2200~~~~~~~~ 2201 2202- CVE-2018-10895: Fix CSRF issue on the qute://settings page, leading to 2203 possible arbitrary code execution. See the related GitHub issue for details: 2204 https://github.com/qutebrowser/qutebrowser/issues/4060 2205 2206Fixed 2207~~~~~ 2208 2209- Rare crash when an error occurs in downloads. 2210- Newlines are now stripped from the :version pastebin URL. 2211- There's a new `mkvenv-pypi-old` environment in `tox.ini` which installs an 2212 older Qt, which is needed on Ubuntu 16.04. 2213- Worked around a Qt issue which redirects to a `chrome-error://` page when 2214 trying to use U2F. 2215- The `link_pyqt.py` script now works correctly with PyQt 5.11. 2216- The Windows installer now uninstalls the old version before installing the 2217 new one, fixing issues with qutebrowser not starting after installing v1.4.0 2218 over v1.3.3. 2219 2220[[v1.4.0]] 2221v1.4.0 (2018-07-03) 2222------------------- 2223 2224Added 2225~~~~~ 2226 2227- Support for the bundled `sip` module in PyQt 5.11 and other changes in 2228 Qt/PyQt 5.11.x. 2229- New `--debug-flag log-requests` to log requests to the debug log for 2230 debugging. 2231- New `--first` flag for `:hint` (bound to `gi` for inputs) which automatically 2232 selects the first hint. 2233- New `input.escape_quits_reporter` setting which can be used to avoid 2234 accidentally quitting the crash reporter when pressing escape. 2235- New `qute-lastpass` userscript which uses the LastPass CLI to fill passwords. 2236- The Makefile now installs a `/usr/share/metainfo/qutebrowser.appdata.xml` file. 2237- QtWebEngine: Support for printing from webpages via `window.print`. 2238- QtWebEngine: Support for muting tabs: 2239 * New `{audio}` field for `window.title_format` and `tabs.title.format` which 2240 displays `[M]`/`[A]` for muted/recently audible tabs. 2241 * New `:tab-mute` command (bound to `<Alt-m>`) to mute/unmute a tab. 2242- QtWebEngine: Support for `content.cookies.accept` with third-party cookies 2243 blocked by default (requires Qt 5.11). 2244- QtWebEngine: New settings: 2245 * Support for requesting persistent storage via 2246 `navigator.webkitPersistentStorage.requestQuota` with a new 2247 `content.persistent_storage` setting (requires Qt 5.11). 2248 This setting also supports URL patterns. 2249 * Support for registering custom protocol handlers via 2250 `navigator.registerProtocolHandler` with a new 2251 `content.register_protocol_handler` setting (requires Qt 5.11). 2252 This setting also supports URL patterns. 2253 * Support for WebRTC screen sharing with a new `content.desktop_capture` 2254 setting (requires Qt 5.10). 2255 This setting also supports URL patterns. 2256 * New `content.autoplay` setting to enable/disable automatic video playback 2257 (requires Qt 5.10). 2258 * New `content.webrtc_public_interfaces_only` setting to only expose public 2259 interfaces over WebRTC (requires Qt 5.9.2 or 5.11). 2260 * New `content.canvas_reading` setting to disable reading from canvas 2261 elements. 2262 2263Changed 2264~~~~~~~ 2265 2266- The following settings now support URL patterns: 2267 * `content.headers.do_not_track` 2268 * `content.headers.custom` 2269 * `content.headers.accept_language` 2270 * `content.headers.user_agent` 2271 * `content.ssl_strict` 2272 * `content.geolocation` 2273 * `content.notifications` 2274 * `content.media_capture` 2275- The Windows/macOS releases now bundle Qt 5.11.1 which is based on 2276 Chromium 65.0.3325.151 with security fixes up to Chromium 67.0.3396.87. 2277- New short flags for commandline arguments: `-B` and `-T` for `--basedir` and 2278 `--temp-basedir`; `-d` and `-D` for `--debug` and `--debug-flag`. 2279- Deleting history items via `:history-clear` or `:completion-item-del` now 2280 also removes that URL from QtWebEngine's visited links. 2281- There's now completion for commands taking a variable count of arguments 2282 (like `:config-cycle`). 2283- QtWebEngine: On Qt 5.11.1, no reloads are needed anymore when switching 2284 between pages with changed settings (e.g. `content.javascript.enabled`). 2285- The `qt.force_software_rendering` setting changed from a boolean to taking 2286 different values (`software-opengl`, `qt-quick` and `chromium`) for different 2287 kinds of software rendering workarounds. 2288- On Qt 5.11, using wayland with QtWebEngine is now possible when using 2289 software rendering. 2290- GreaseMonkey scripts now get their own global scope (based on the page's 2291 one), which allows scripts like OneeChan to work. 2292- Rapid hinting is now supported with the `yank` and `yank-primary` targets, 2293 copying newline-separated links. 2294- QtWebEngine: On Qt 5.11, the developer tools (inspector) can now be used 2295 securely and without requiring the `--enable-webengine-inspector` option. 2296- The `<Enter>` key (`:follow-selected`) now follows the currently focused 2297 element if there's no selection. 2298- The `--logfilter` argument now can be prepended with an exclamation mark 2299 (e.g. `--logfilter '!init,destroy'`) to invert the filter. 2300- `:view-source` now has a `--pygments` flag which uses the "old" way of 2301 rendering sources even with QtWebEngine. 2302- Improved error messages when a setting needs a newer Qt version. 2303- QtWebEngine: Various improvements to make the cursor more visible in caret 2304 browsing. 2305- When a prompt is opened in insert/passthrough mode, the mode is restored 2306 after closing the prompt. 2307- On Qt 5.10 or newer, dictionaries are now read from the qutebrowser data 2308 directory (e.g. `~/.local/share/qutebrowser`) instead of `/usr/share/qt`. 2309 Existing dictionaries are copied over. 2310- If an error while parsing `~/.netrc` occurs, the cause of the error is now 2311 logged. 2312- On Qt 5.9 or newer, certificate errors now show Chromium's detailed error 2313 page. 2314- Greasemonkey scripts now support a "@qute-js-world" tag to run them in a 2315 different JavaScript context. 2316 2317Fixed 2318~~~~~ 2319 2320- Various subtle keyboard focus issues. 2321- The security fix in v1.3.3 caused URLs with ampersands 2322 (`www.example.com?one=1&two=2`) to send the wrong arguments when clicked on 2323 the `qute://history` page. 2324- Crash when opening a PDF page with PDF.js enabled (on QtWebKit), but no 2325 PDF.js installed. 2326- Crash when closing a tab shortly after opening it. 2327 2328Removed 2329~~~~~~~ 2330 2331- No prebuilt binaries for 32-bit Windows are supplied anymore. This is due to 2332 Qt removing QtWebEngine support for those upstream. It might be possible to 2333 distribute 32-bit binaries again with Qt 5.12 in December, but that will only 2334 happen if it turns out enough people actually need 32-bit support. 2335- `:tab-detach` which has been deprecated in v1.1.0 has been removed. 2336- The `content.developer_extras` setting got removed. On QtWebKit, developer 2337 extras are now automatically enabled when opening the inspector. 2338 2339[[v1.3.3]] 2340v1.3.3 (2018-06-21) 2341------------------- 2342 2343Security 2344~~~~~~~~ 2345 2346- CVE-2018-1000559: An XSS vulnerability on the `qute://history` page allowed 2347 websites to inject HTML into the page via a crafted title tag. This could 2348 allow them to steal your browsing history. If you're currently unable to 2349 upgrade, avoid using `:history`. See the related GitHub issue for details: 2350 https://github.com/qutebrowser/qutebrowser/issues/4011. 2351 2352Fixed 2353~~~~~ 2354 2355- Crash in a workaround for a Qt 5.11 bug in rare circumstances. 2356- Workaround for a Qt bug which preserves searches between page loads. 2357- In v1.3.2 a dependency on the `PyQt5.QtQuickWidgets` module was accidentally 2358 introduced. Since that module isn't packaged everywhere, it's been removed 2359 again. 2360 2361[[v1.3.2]] 2362v1.3.2 (2018-06-10) 2363------------------- 2364 2365Fixed 2366~~~~~ 2367 2368- QtWebEngine: Improved workaround for a bug in Qt 5.11 where only the 2369 top/bottom half of the window is used. 2370- QtWebEngine: Work around a bug in Qt 5.11 where an endless loading-loop is 2371 triggered when clicking a link with an unknown scheme. 2372- QtWebEngine: When switching between pages with changed settings, less 2373 unnecessary reloads are done now. 2374- QtWebEngine: It's now possible to open external links such as `magnet://` or 2375 `mailto:` via hints. 2376 2377[[v1.3.1]] 2378v1.3.1 (2018-05-29) 2379------------------- 2380 2381Fixed 2382~~~~~ 2383 2384- Work around a bug in Qt 5.11 where only the top/bottom half of the window is used. 2385 This workaround is incomplete, but fixes the majority of the cases where this happens. 2386- Work around keyboard focus issues with Qt 5.11. 2387- Work around an issue in Qt 5.11 where e.g. activating JavaScript per-domain 2388 needed a manual reload in some cases. 2389- Don't crash when a ² key is pressed (e.g. on AZERTY keyboards). 2390- Don't crash when a tab is opened and quickly closed again. 2391 2392 2393[[v1.3.0]] 2394v1.3.0 (2018-05-03) 2395------------------- 2396 2397Added 2398~~~~~ 2399 2400- New `:scroll-to-anchor` command to scroll to an anchor in the document. 2401- New `url.open_base_url` option to open the base URL of a searchengine when no 2402 search term is given. 2403- New `tabs.min_width` setting to configure the minimal width for tabs. 2404- New userscripts: 2405 * `getbib` to download bibtex information for DOIs on a page. 2406 * `qute-keepass` to get passwords from KeePassX. 2407 2408Changed 2409~~~~~~~ 2410 2411- QtWebEngine: Support for JavaScript Shared Web Workers have been disabled on 2412 Qt versions older than 5.11 because of security issues in in Chromium. 2413 You can get the same effect in earlier versions via 2414 `:set qt.args ['disable-shared-workers']`. An equivalent workaround is also 2415 contained in Qt 5.9.5 and 5.10.1. 2416- The file dialog for downloads now has basic tab completion based on the 2417 entered text. 2418- `:version` now shows OS information for POSIX OS other than Linux/macOS. 2419- When there's an error inserting the text from an external editor, a backup 2420 file is now saved. 2421- The `window.hide_wayland_decoration` setting got renamed to 2422 `window.hide_decoration` and now also works outside of wayland. 2423- The `tabs.favicons.show` setting now can take three values: `'always'` (was 2424 `True`), `'never'` (was `False`) and `'pinned'` (to only show favicons for 2425 pinned tabs). 2426- Hover tooltips on tabs now always show the webpage's title. 2427- The default value for `content.host_blocking.lists` was changed to only 2428 include https://github.com/StevenBlack/hosts[Steven Black's hosts-list] which 2429 combines various sources. 2430- Error messages when trying to wrap when `tabs.wrap` is `False` are now logged 2431 to debug instead of messages. 2432 2433Fixed 2434~~~~~ 2435 2436- Using hints before a page is fully loaded is now possible again. 2437- Selecting hints with the number keypad now works again. 2438- Tab titles for tabs loaded from sessions should now really be correct instead 2439 of showing the URL. 2440- Loading URLs with customized settings from a session now avoids an additional 2441 reload. 2442- The window icon and title now get set correctly again. 2443- The `tabs.switching_delay` setting now has a correct maximum value limit set. 2444- The `taskadd` script now works properly when there's multi-line output. 2445- QtWebEngine: Worked around issues with GreaseMonkey/stylesheets not being 2446 loaded correctly in some situations. 2447- The statusbar now more closely reflects the caret mode state. 2448- The icon on Windows should now be displayed in a higher resolution. 2449- The QtWebEngine development tools (inspector) now also work when JavaScript is 2450 disabled globally. 2451- Building `.exe` files now works when `upx` is installed on the system. 2452- The keyhint widget now shows the correct text for chained modifiers. 2453- Loading GreaseMonkey scripts now also works with Jinja2 2.8 (e.g. on Debian 2454 Stable). 2455- Adding styles with GreaseMonkey on fast sites now works properly. 2456- Window ID 0 is now excluded properly from `:tab-take` completion. 2457- A rare crash when cancelling a download has been fixed. 2458- The Makefile (intended for packagers) now supports `PREFIX` properly. 2459- The workaround for a black window with Nvidia graphics is now enabled on 2460 non-Linux systems (like FreeBSD) as well. 2461- Initial support for Qt 5.11. 2462- Checking for a new version after sending a crash report now works properly 2463 again. 2464- `@match` in Greasemonkey scripts now more closely matches the proper pattern 2465 syntax. 2466- Searching via `/` or `?` now doesn't handle any characters in a special way. 2467- Fixed crash when trying to retry some failed downloads on QtWebEngine. 2468- An invalid spellcheck dictionary filename now doesn't crash anymore. 2469- When no spellcheck dictionaries are configured, it's now disabled internally. 2470 This works around an issue with entering special characters on Facebook 2471 messenger. 2472- The macOS release now should work again on macOS 10.11 and newer. 2473 2474[[v1.2.1]] 2475v1.2.1 (2018-03-14) 2476------------------- 2477 2478Fixed 2479~~~~~ 2480 2481- qutebrowser now starts properly when the PyQt5 QOpenGLFunctions package wasn't 2482 found. 2483- The keybinding cheatsheet on the quickstart page is now loaded from a local 2484 `qute://` URL again. 2485- With "tox -e mkvenv-pypi", PyQt 5.10.0 is used again instead of Qt 5.10.1, 2486 because of an issue with Qt 5.10.1 which causes qutebrowser to fail to start 2487 ("Could not find QtWebEngineProcess"). 2488- Unbinding keys which were bound in older qutebrowser versions now doesn't 2489 crash anymore. 2490- Fixed a crash when reloading a page which wasn't fully loaded with v1.2.0 2491- Keys on the numeric keypad now fall back to the same bindings without `Num+` 2492 if no `Num+` binding was found. 2493- Fixed hinting on some pages with Qt < 5.10. 2494- Titles are now displayed correctly again for tabs which are cloned or loaded 2495 from sessions. 2496- Shortcuts now correctly use `Ctrl` instead of `Command` on macOS again. 2497 2498[[v1.2.0]] 2499v1.2.0 (2018-03-09) 2500------------------- 2501 2502Added 2503~~~~~ 2504 2505- Initial implementation of per-domain settings: 2506 * `:set` and `:config-cycle` now have a `-u`/`--pattern` argument taking a 2507 https://developer.chrome.com/extensions/match_patterns[URL match pattern] 2508 for supported settings. 2509 * `config.set` in `config.py` now takes a third argument which is the pattern. 2510 * New `with config.pattern('...') as p:` context manager for `config.py` to 2511 use the shorthand syntax with a pattern. 2512 * New `tsh` keybinding to toggle scripts for the current host. With a capital 2513 `S`, the toggle is saved. With a capital `H`, subdomains are included. With 2514 `u` instead of `h`, the exact current URL is used. 2515 * New `tph` keybinding to toggle plugins, with the same additional binding 2516 described above. 2517- New QtWebEngine features: 2518 * Caret/visual mode 2519 * Authentication via ~/.netrc 2520 * Retrying downloads with Qt 5.10 or newer 2521 * Hinting and other features inside same-origin frames 2522- New flags for existing commands: 2523 * `:session-load` has a new `--delete` flag which deletes the 2524 session after loading it. 2525 * New `--no-last` flag for `:tab-focus` to not focus the last tab when focusing 2526 the currently focused one. 2527 * New `--edit` flag for `:view-source` to open the source in an external editor. 2528 * New `--select` flag for `:follow-hint` which acts like the given string was entered but doesn't necessary follow the hint. 2529- New special pages: 2530 * `qute://bindings` (opened via `:bind`) which shows all keybindings. 2531 * `qute://tabs` (opened via `:buffer`) which lists all tabs. 2532- New settings: 2533 * `statusbar.widgets` to configure which widgets should be shown in which 2534 order in the statusbar. 2535 * `tabs.mode_on_change` which replaces `tabs.persist_mode_on_change`. It can 2536 now be set to `restore` which remembers input modes (input/passthrough) 2537 per tab. 2538 * `input.insert_mode.auto_enter` which makes it possible to disable entering 2539 insert mode automatically when an editable element was clicked. Together 2540 with `input.forward_unbound_keys`, this should allow for emacs-like 2541 "modeless" keybindings. 2542- New `:prompt-yank` command (bound to `Alt-y` by default) to yank URLs 2543 referenced in prompts. 2544- The `hostblock_blame` script which was removed in v1.0 was updated for the new 2545 config and re-added. 2546- New `cycle-inputs.js` script in `scripts/` which can be used with `:jseval -f` 2547 to cycle through inputs. 2548 2549Changed 2550~~~~~~~ 2551 2552- Complete refactoring of key input handling, with various effects: 2553 * emacs-like keychains such as `<Ctrl-X><Ctrl-C>` can now be bound. 2554 * Key chains can now be bound in any mode (this allows binding unused keys in 2555 hint mode). 2556 * Yes/no prompts don't use keybindings from the `prompt` section anymore, they 2557 have their own `yesno` section instead. 2558 * Trying to bind invalid keys now shows an error. 2559 * The `bindings.default` setting can now only be set in a `config.py`, and 2560 existing values in `autoconfig.yml` are ignored. 2561- Improvements for GreaseMonkey support: 2562 * `@include` and `@exclude` now support regex matches. With QtWebEngine and Qt 2563 5.8 and newer, Qt handles the matching, but similar functionality will be 2564 added in Qt 5.11. 2565 * Support for `@requires` 2566 * Support for the GreaseMonkey 4.0 API 2567- The sqlite history now uses write-ahead logging which should be 2568 a performance and stability improvement. 2569- When an editor is spawned with `:open-editor` and `:config-edit`, the changes 2570 are now applied as soon as the file is saved in the editor. 2571- The `hist_importer.py` script now only imports URL schemes qutebrowser can 2572 handle. 2573- Deleting a prefix (`:`, `/` or `?`) via backspace now leaves command mode. 2574- Angular 1 elements and `<summary>`/`<details>` now get hints assigned. 2575- `:tab-only` with pinned tabs now still closes unpinned tabs. 2576- The `url.incdec_segments` option now also can take `port` as possible segment. 2577- QtWebEngine: `:view-source` now uses Chromium's `view-source:` scheme. 2578- Tabs now show their full title as tooltip. 2579- When there are multiple unknown keys in a autoconfig.yml, they now all get 2580 reported in one error. 2581- More performance improvements when opening/closing many tabs. 2582- The `:version` page now has a button to pastebin the information. 2583- Replacements like `{url}` can now be escaped as `{{url}}`. 2584 2585Fixed 2586~~~~~ 2587 2588- QtWebEngine bugfixes: 2589 * Improved fullscreen handling with Qt 5.10. 2590 * Hinting and scrolling now works properly on special `view-source:` pages. 2591 * Scroll positions are now restored correctly from sessions. 2592 * `:follow-selected` should now work in more cases with Qt > 5.10. 2593 * Incremental search now flickers less and doesn't move to the second result 2594 when pressing Enter. 2595 * Keys like `Ctrl-V` or `Shift-Insert` are now correctly handled/filtered with 2596 Qt 5.10. 2597 * Fixed hangs/segfaults on exit with Qt 5.10.1. 2598 * Fixed favicons sometimes getting cleared with Qt 5.10. 2599 * Qt download objects are now cleaned up properly when a download is removed. 2600 * JavaScript messages are now not double-HTML escaped anymore on Qt < 5.11 2601- QtWebKit bugfixes: 2602 * Fixed GreaseMonkey-related crashes. 2603 * `:view-source` now displays a valid URL. 2604- URLs containing ampersands and other special chars are now shown correctly 2605 when filtering them in the completion. 2606- `:bookmark-add "" foo` can now be used to save the current URL with a custom 2607 title. 2608- `:spawn -o` now waits until the process has finished before trying to show the 2609 output. Previously, it incorrectly showed the previous output immediately. 2610- Suspended pages now should always load the correct page when being un-suspended. 2611- Exception types are now shown properly with `:config-source` and `:config-edit`. 2612- When using `:bookmark-add --toggle`, bookmarks are now saved properly. 2613- Crash when opening an invalid URL from an application on macOS. 2614- Crash with an empty `completion.timestamp_format`. 2615- Crash when `completion.min_chars` is set in some cases. 2616- HTML/JS resource files are now read into RAM on start to avoid crashes when 2617 changing qutebrowser versions while it's open. 2618- Setting `bindings.key_mappings` to an empty value is now allowed. 2619- Bindings to an empty commands are now ignored rather than crashing. 2620 2621Removed 2622~~~~~~~ 2623 2624- `QUTE_SELECTED_HTML` is now not set for userscripts anymore except when called 2625 via hints. 2626- The `qutebrowser_viewsource` userscript has been removed as 2627 `:view-source --edit` can now be used. 2628- The `tabs.persist_mode_on_change` setting has been removed and replaced by 2629 `tabs.mode_on_change`. 2630 2631[[v1.1.2]] 2632v1.1.2 (2018-03-01) 2633------------------- 2634 2635Changed 2636~~~~~~~ 2637 2638- Windows/macOS releases now bundle Qt 5.10.1 which includes security fixes from 2639 Chromium up to version 64.0.3282.140. 2640 2641Fixed 2642~~~~~ 2643 2644- QtWebEngine: Crash with Qt 5.10.1 when using :undo on some tabs. 2645- Compatibility with Python 3.7 2646 2647[[v1.1.1]] 2648v1.1.1 (2018-01-20) 2649------------------- 2650 2651Fixed 2652~~~~~ 2653 2654- The Makefile now actually works. 2655- Fixed crashes with Qt 5.10 when closing a tab before it finished loading. 2656 2657[[v1.1.0]] 2658v1.1.0 (2018-01-15) 2659------------------- 2660 2661Added 2662~~~~~ 2663 2664- Initial support for Greasemonkey scripts. There are still some rough edges, 2665 but many scripts should already work. 2666- There's now a `misc/Makefile` file in releases, which should help 2667 distributions which package qutebrowser, as they can run something like 2668 `make -f misc/Makefile DESTDIR="$pkgdir" install` now. 2669- New fields for `window.title_format` and `tabs.title.format`: 2670 * `{current_url}` 2671 * `{protocol}` 2672- New settings: 2673 * `colors.statusbar.passthrough.fg`/`.bg` 2674 * `completion.delay` and `completion.min_chars` to update the completion less 2675 often. 2676 * `completion.use_best_match` to automatically use the best-matching 2677 command in the completion. 2678 * `keyhint.radius` to configure the edge rounding for the key hint widget. 2679 * `qt.highdpi` to turn on Qt's High-DPI scaling. 2680 * `tabs.pinned.shrink` (`true` by default) to make it possible 2681 for pinned tabs and normal tabs to have the same size. 2682 * `content.windowed_fullscreen` to show e.g. a fullscreened video in the 2683 window without fullscreening that window. 2684 * `tabs.persist_mode_on_change` to keep the current mode when 2685 switching tabs. 2686 * `session.lazy_restore` which allows to not load pages immediately 2687 when restoring a session. 2688- New commands: 2689 * `:tab-give` and `:tab-take`, to give tabs to another window, or take them 2690 from another window. 2691 * `:completion-item-yank` (bound to `<Ctrl-C>`) to yank the current 2692 completion item text. 2693 * `:edit-command` to edit the commandline in an editor. 2694 * `search.incremental` for incremental text search. 2695- New flags for existing commands: 2696 * `-o` flag for `:spawn` to show stdout/stderr in a new tab. 2697 * `--rapid` flag for `:command-accept` (bound to `Ctrl-Enter` by default), 2698 which allows executing a command in the completion without closing it. 2699 * `--private` and `--related` flags for `:edit-url`, which have the 2700 same effect they have with `:open`. 2701 * `--history` for `:completion-item-focus` which causes it to go 2702 through the command history when no text was entered. The default bindings for 2703 cursor keys in the completion changed to use that, so that they can be used 2704 again to navigate through completion items when a text was entered. 2705 * `--file` for `:debug-pyeval` which makes it take a filename instead of a 2706 line of code. 2707- New `config.source(...)` method for `config.py` to source another file. 2708- New `{line}` and `{column}` replacements for `editor.command` to position the 2709 cursor correctly. 2710- New `qute-pass` userscript as alternative to `password_fill` which allows 2711 selecting accounts via rofi or any other dmenu-compatile application. 2712- New `hist_importer.py` script to import history from Firefox/Chromium. 2713 2714Changed 2715~~~~~~~ 2716 2717- Some settings got renamed: 2718 * `tabs.width.bar` -> `tabs.width` 2719 * `tabs.width.indicator` -> `tabs.indicator.width` 2720 * `tabs.indicator_padding` -> `tabs.indicator.padding` 2721 * `session_default_name` -> `session.default_name` 2722 * `ignore_case` -> `search.ignore_case` 2723- Much improved user stylesheet handling for QtWebEngine which reduces 2724 flickering and updates immediately after setting a stylesheet. 2725- High-DPI favicons are now used when available. 2726- The `asciidoc2html.py` script now uses Pygments (which is already a dependency 2727 of qutebrowser) instead of `source-highlight` for syntax highlighting. 2728- The `:buffer` command now doesn't require quoting anymore, similar to `:open`. 2729- The `importer.py` script was largely rewritten and now also supports importing 2730 from Firefox' `places.sqlite` file and Chrome/Chromium profiles. 2731- Various internal refactorings to use Python 3.5 and ECMAscript 6 features. 2732- If the `window.hide_wayland_decoration` setting is False, but 2733 `QT_WAYLAND_DISABLE_WINDOWDECORATION` is set in the environment, 2734 the decorations are still hidden. 2735- The `install_dict.py` script for QtWebEngine was renamed to `dictcli.py` and 2736 can now also upgrade dictionaries correctly. 2737- `:undo` now can re-open multiple tabs after `:tab-only` was used. 2738- `:config-write-py` with a relative path now puts the file into the config 2739 directory. 2740- The `qute://version` page now also shows the uptime of qutebrowser. 2741- qutebrowser now prompts to create a non-existing directory when starting a 2742 download. 2743- `:jseval --file` now searches relative paths in a `js/` subdir in 2744 qutebrowser's data dir, e.g. `~/.local/share/qutebrowser/js`. 2745- The current/default bindings are now shown in the ``:bind` completion. 2746- Empty categories are now hidden in the `:open` completion. 2747- Search terms for URLs and titles can now be mixed when filtering the 2748 completion. 2749- The default font size for the UI got bumped up from 8pt to 10pt. 2750- Improved matching in the completion: The words entered are now matched in any 2751 order, and mixed matches on URL/tite are possible. 2752- The system's default encoding (rather than UTF-8) is now used to decode 2753 subprocess output. 2754- qutebrowser now ensures it's focused again after an external editor is closed. 2755- The `colors.completion.fg` setting can now be a list, allowing to specify 2756 different colors for the three completion columns. 2757 2758Fixed 2759~~~~~ 2760 2761- More consistent sizing for favicons with vertical tabs. 2762- Using `:home` on pinned tabs is now prevented. 2763- Fix crash with unknown file types loaded via `qute://help`. 2764- Scrolling performance improvements. 2765- Sites like `qute://help` now redirect to `qute://help/` to make sure links 2766 work properly. 2767- Fixes for the size calculation of pinned tabs in the tab bar. 2768- Worked around a crash with PyQt 5.9.1 compiled against Qt < 5.9.1 when using 2769 `:yank` or `qute://` URLs. 2770- Fixed crash when opening `qute://help/img`. 2771- Fixed `gU` (`:navigate up`) on `qute://help` and webservers not handling `..` 2772 in a URL. 2773- Using e.g. `-s backend webkit` to set the backend now works correctly. 2774- Fixed crash when closing the tab an external editor was opened in. 2775- When using `:search-next` before a search is finished, no warning about no 2776 results being found is shown anymore. 2777- Fix `:click-element` with an ID containing non-alphanumeric characters. 2778- Fix crash when a subprocess outputs data which is not decodable as UTF-8. 2779- Fix crash when closing a tab immediately after hinting. 2780- Worked around issues in Qt 5.10 with loading progress never being finished. 2781- Fixed a crash when writing a flag before a command (e.g. `:-w open `). 2782- Fixed a crash when clicking certain form elements with QtWebEngine. 2783 2784Deprecated 2785~~~~~~~~~~ 2786 2787- `:tab-detach` has been deprecated, as `:tab-give` without argument can be used 2788 instead. 2789 2790Removed 2791~~~~~~~ 2792 2793- The long-deprecated `:prompt-yes`, `:prompt-no`, `:paste-primary` and `:paste` 2794 commands have been removed. 2795- The invocation `:download <url> <dest>` which was deprecated in v0.5.0 was 2796 removed, use `:download --dest <dest> <url>` instead. 2797- The `messages.unfocused` option which wasn't used anymore was removed. 2798- The `x[xtb]` default bindings got removed again as many users accidentally 2799 triggered them. 2800 2801[[v1.0.4]] 2802v1.0.4 (2017-11-28) 2803------------------- 2804 2805Fixed 2806~~~~~ 2807 2808- The `qute://gpl` page now works correctly again. 2809- Trying to bind an empty command now doesn't crash anymore. 2810- Fixed crash when `:config-write-py` fails to write to the given path. 2811- Fixed crash for some users when selecting a file with Qt 5.9.3 2812- Improved handling for various SQL errors 2813- Fix crash when setting content.cache.size to a big value (> 2 GB) 2814 2815[[v1.0.3]] 2816v1.0.3 (2017-11-04) 2817------------------- 2818 2819Changed 2820~~~~~~~ 2821 2822- macOS and Windows builds are now built with PyQt 5.9.1 and Qt 5.9.2, including 2823 various bugfixes, as well as security fixes from Chromium up to version 2824 61.0.3163.79. 2825- Performance improvements for tab rendering. 2826- The :open-editor command is now not hidden anymore as it's also usable in 2827 normal mode. 2828 2829Fixed 2830~~~~~ 2831 2832- Handle accessing a locked sqlite database gracefully 2833- Abort pinned tab dialogs properly when a tab is closed e.g. by closing a 2834 window 2835- Unbinding a default keybinding twice now doesn't bind it again 2836- Completions are now sorted correctly again when filtered 2837 2838[[v1.0.2]] 2839v1.0.2 (2017-10-17) 2840------------------- 2841 2842Fixed 2843~~~~~ 2844 2845- Fix workaround for black screens or crashes with Nvidia cards 2846- Handle a filesystem going read-only gracefully 2847- Fix crash when setting `fonts.monospace` 2848- Fix list options not being modifyable via `.append()` in `config.py` 2849- Mark the content.notifications setting as QtWebKit only correctly 2850- Fix wrong rendering of keys like `<back>` in the completion 2851 2852Changed 2853~~~~~~~ 2854 2855- Nicer error messages and other minor improvements 2856 2857[[v1.0.1]] 2858v1.0.1 (2017-10-13) 2859------------------- 2860 2861Fixed 2862~~~~~ 2863 2864- Fixed starting after customizing `fonts.tabs` or `fonts.debug_console`. 2865- Fixed starting with old PyQt versions compiled against newer Qt versions. 2866- Fixed check for PyQt version to correctly enforce 5.7 (not 5.2). 2867 2868[[v1.0.0]] 2869v1.0.0 (2017-10-12) 2870------------------- 2871 2872Major changes 2873~~~~~~~~~~~~~ 2874 2875- Dependency changes: 2876 * Support for legacy QtWebKit (before 5.212 which is 2877 https://github.com/annulen/webkit/wiki[distributed independently from Qt]) 2878 is dropped. 2879 * Support for Python 3.4 is dropped. 2880 * Support for Qt before 5.7.1 and PyQt before 5.7 is dropped. 2881 * New dependency on the QtSql module and Qt sqlite support. 2882 * New dependency on the https://www.attrs.org/[attrs] project (packaged as 2883 `python-attr` in some distributions). 2884 * The depedency on PyOpenGL (when using QtWebEngine) got removed. Note 2885 that PyQt5.QtOpenGL is still a dependency. 2886 * PyQt5.QtOpenGL is now always required, even with QtWebKit. 2887- The QtWebEngine backend is now used by default. Note this means that 2888 QtWebEngine now should be a required dependency, and QtWebKit (if new enough) 2889 should be changed to an optional dependency. 2890- Completely rewritten configuration system which ignores the old config file. 2891 See link:qute://help/configuring.html[] for details. 2892- Various documentation files got moved to the doc/ subfolder; 2893 `qutebrowser.desktop` got moved to misc/. 2894- `:set` now doesn't support toggling/cycling values anymore, that functionality 2895 got moved to `:config-cycle`. 2896- New completion engine based on sqlite, which allows to complete 2897 the entire browsing history. The default for 2898 `completion.web_history_max_items` got changed to `-1` (unlimited). If the 2899 completion is too slow on your machine, try setting it to a few 1000 items. 2900- Up/Down now navigates through the command history instead of selecting 2901 completion items. Either use Tab to cycle through the completion, or 2902 https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#migrating-older-configurations[restore the old behavior]. 2903 2904Added 2905~~~~~ 2906 2907- QtWebEngine: Spell checking support, see the `spellcheck.languages` setting. 2908- New `qt.args` setting to pass additional arguments to Qt/Chromium. 2909- New `backend` setting to select the backend to use. 2910 Together with the previous setting, this should make most wrapper scripts 2911 unnecessary. 2912- qutebrowser can now be set as the default browser on macOS. 2913- New config commands: 2914 * `:config-cycle` to cycle an option between multiple values. 2915 * `:config-unset` to remove a configured option. 2916 * `:config-clear` to remove all configured options. 2917 * `:config-source` to (re-)read a `config.py` file. 2918 * `:config-edit` to open the `config.py` file in an editor. 2919 * `:config-write-py` to write a `config.py` template file. 2920- New `:version` command which opens `qute://version`. 2921- New back/forward indicator in the statusbar. 2922- New `bindings.key_mappings` setting to map keys to other keys. 2923- QtWebEngine: Support for proxy authentication. 2924 2925Changed 2926~~~~~~~ 2927 2928- Using `:download` now uses the page's title as filename. 2929- Using `:back` or `:forward` with a count now skips intermediate pages. 2930- When there are multiple messages shown, the timeout is increased. 2931- `:search` now only clears the search if one was displayed before, so pressing 2932 `<Escape>` doesn't un-focus inputs anymore. 2933- Pinned tabs now adjust to their text's width, so the `tabs.width.pinned` 2934 setting got removed. 2935- `:set-cmd-text` now has a `--run-on-count` argument to run the underlying 2936 command directly if a count was given. 2937- `:scroll-perc` got renamed to `:scroll-to-perc`. 2938 2939Removed 2940~~~~~~~ 2941 2942- Migrating QtWebEngine data written by versions before 2016-11-15 (before 2943 v0.9.0) is now not supported anymore. 2944- Upgrading qutebrowser with a version older than v0.4.0 still running now won't 2945 work properly anymore. 2946- The `--harfbuzz` and `--relaxed-config` commandline arguments got dropped. 2947 2948Fixes 2949~~~~~ 2950 2951- Exiting fullscreen via `:fullscreen` or buttons on a page now 2952 restores the correct previous window state (maximized/fullscreen). 2953- When `input.insert_mode.auto_load` is set, background tabs now don't enter 2954 insert mode anymore. 2955- The keybinding help widget now works correctly when using keybindings with a 2956 count. 2957- The `window.hide_wayland_decoration` setting now works correctly again. 2958 2959[[v0.11.1]] 2960v0.11.1 (2017-10-09) 2961-------------------- 2962 2963Fixes 2964~~~~~ 2965 2966- Fixed empty space being shown after tabs in the tabbar in some cases. 2967- Fixed `:restart` in private browsing mode. 2968- Fixed printing on macOS. 2969- Closing a pinned tab via mouse now also prompts for confirmation. 2970- The "try again" button on error pages works correctly again. 2971- :spawn -u -d is now disallowed. 2972- :spawn -d shows error messages correctly now. 2973 2974[[v0.11.0]] 2975v0.11.0 (2017-07-04) 2976-------------------- 2977 2978New dependencies 2979~~~~~~~~~~~~~~~~ 2980 2981- New dependency on `PyQt5.QtOpenGL` if QtWebEngine is used. QtWebEngine depends 2982 on QtOpenGL already, but on distributions packaging split PyQt5 wrappers, the 2983 wrappers for QtOpenGL are now required. 2984- New dependency on `PyOpenGL` if QtWebEngine is used. 2985 2986Added 2987~~~~~ 2988 2989- Private browsing is now implemented for QtWebEngine, *and changed its 2990 behavior*: The `general -> private-browsing` setting now only applies to newly 2991 opened windows, and you can use the `-p` flag to `:open` to open a private 2992 window. 2993- New "pinned tabs" feature, with a new `:tab-pin` command (bound 2994 to `<Ctrl-p>` by default). 2995- (QtWebEngine) Implemented `:follow-selected`. 2996- New `:clear-messages` command to clear shown messages. 2997- New `ui -> keyhint-delay` setting to configure the delay until 2998 the keyhint overlay pops up. 2999- New `-s` option for `:open` to force a HTTPS scheme. 3000- `:debug-log-filter` now accepts `none` as an argument to clear any log 3001 filters. 3002- New `--debug-flag` argument which replaces `--debug-exit` and 3003 `--pdb-postmortem`. 3004- New `tabs -> favicon-scale` option to scale up/down favicons. 3005- `colors -> statusbar.bg/fg.private` and `.command.private` to 3006 customize statusbar colors for private windows. 3007- New `{private}` field displaying `[Private Mode]` for 3008 `ui -> window-title-format` and `tabs -> title-format`. 3009- (QtWebEngine) Proxy support with Qt 5.7.1 (already was supported for 5.8 and 3010 newer) 3011 3012Changed 3013~~~~~~~ 3014 3015- To prevent elaborate phishing attacks, the Punycode version (`xn--*`) is now 3016 shown in addition to the decoded version for international domain names 3017 (IDN). 3018- Starting with legacy QtWebKit now shows a warning message. 3019 *With the next release, support for it will be removed.* 3020- The Windows releases are redone from scratch, which means: 3021 * They now use the new QtWebEngine backend 3022 * The bundled Qt is updated from 5.5 to 5.9 3023 * The bundled Python is updated from 3.4 to 3.6 3024 * They are now generated with PyInstaller instead of cx_Freeze 3025 * The installer is now generated using NSIS instead of being a MSI 3026- Improved `qute://history` page (with lazy loading) 3027- Crash reports are not public anymore. 3028- Paths like `C:` are now treated as absolute paths on Windows for downloads, 3029 and invalid paths are handled properly. 3030- Comments in the config file are now placed before the individual options 3031 instead of being before sections. 3032- Messages are now hidden when clicked. 3033- stdin is now closed immediately for processes spawned from qutebrowser. 3034- When `ui -> message-timeout` is set to 0, messages are now never cleared. 3035- Middle/right-clicking the blank parts of the tab bar (when vertical) now 3036 closes the current tab. 3037- The adblocker now also blocks non-GET requests (e.g. POST). 3038- `javascript:` links can now be hinted. 3039- `:view-source`, `:tab-clone` and `:navigate --tab` now don't open the tab as 3040 "explicit" anymore, i.e. (with the default settings) open it next to the 3041 active tab. 3042- `qute:*` pages now use `qute://*` instead (e.g. `qute://version` instead of 3043 `qute:version`), but the old versions are automatically redirected. 3044- Texts in prompts are now selectable. 3045- The default level for `:messages` is now `info`, not `error` 3046- Trying to focus the currently focused tab with `:tab-focus` now focuses the 3047 last viewed tab. 3048- (QtWebEngine) With Qt 5.9, `content -> cookies-store` can now be set without 3049 a restart. 3050- (QtWebEngine) With Qt 5.9, better error messages are now shown for failed 3051 downloads. 3052- (QtWebEngine) The underlying Chromium version is now shown in the version 3053 info. 3054- (QtWebKit) Renderer process crashes now show an error page on Qt 5.9 or newer. 3055- (QtWebKit) storage -> offline-web-application-storage` got renamed to `...-cache` 3056- (QtWebKit) PAC now supports SOCKS5 as type. 3057 3058Fixed 3059~~~~~ 3060 3061- The macOS .dmg is now built against Qt 5.9 which fixes various 3062 important issues (such as not being able to type dead keys). 3063- Fixed crash with `:download` on PyQt 5.9. 3064- Cloning a page without history doesn't crash anymore. 3065- When a download results in a HTTP error, it now shows the error correctly 3066 instead of crashing. 3067- Pressing ctrl-c while a config error is shown works as intended now. 3068- When the key config isn't writable, we now show an error instead of crashing. 3069- Fixed crash when unbinding an unbound key in the key config. 3070- Fixed crash when using `:debug-log-filter` when `--filter` wasn't given on startup. 3071- Fixed crash with some invalid setting values. 3072- Continuing a search after clearing it now works correctly. 3073- The tabbar and completion should now be more consistently and correctly 3074 styled with various system styles. 3075- Applying styiles in `qt5ct` now shouldn't crash anymore. 3076- The validation for colors in stylesheets is now less strict, 3077 allowing for all valid Qt values. 3078- `data:` URLs now aren't added to the history anymore. 3079- Accidentally starting with Python 2 now shows a proper error message again. 3080- For some people, running some userscripts crashed - this should now be fixed. 3081- Various other rare crashes should now be fixed. 3082- The settings documentation was truncated with v0.10.1 which should now be 3083 fixed. 3084- Scrolling to an anchor in a background tab now works correctly, and javascript 3085 gets the correct window size for background tabs. 3086- (QtWebEngine) Added a workaround for a black screen with some setups 3087- (QtWebEngine) Starting with Nouveau graphics now shows an error message 3088 instead of crashing in Qt. 3089- (QtWebEngine) Retrying downloads now shows an error instead of crashing. 3090- (QtWebEngine) Cloning a view-source tab now doesn't crash anymore. 3091- (QtWebEngine) `window.navigator.userAgent` is now set correctly when 3092 customizing the user agent. 3093- (QtWebEngine) HTML fullscreen is now tracked for each tab separately, which 3094 means it's not possible anymore to accidentally get stuck in fullscreen state 3095 by closing a tab with a fullscreen video. 3096- (QtWebEngine) `:scroll-page` with `--bottom-navigate` now works correctly. 3097- (QtWebKit) The HTTP cache is disabled on Qt 5.7.1 and 5.8 now as it leads to 3098 frequent crashes due to a Qt bug. 3099- (QtWebKit) Fixed Crash when a PAC file returns an invalid value. 3100 3101[[v0.10.1]] 3102v0.10.1 (2017-03-08) 3103-------------------- 3104 3105Changed 3106~~~~~~~ 3107 3108- `--qt-arg` and `--qt-flag` can now also be used to pass arguments to Chromium when using QtWebEngine. 3109 3110Fixed 3111~~~~~ 3112 3113- URLs are now redacted properly (username/password, and path/query for HTTPS) when using Proxy Autoconfig with QtWebKit 3114- Crash when updating adblock lists with invalid UTF8-chars in them 3115- Fixed the web inspector with QtWebEngine 3116- Version checks when starting qutebrowser now also take the Qt version PyQt was compiled against into account 3117- Hinting a input now doesn't select existing text anymore with QtWebKit 3118- The cursor now moves to the end when input elements are selected with QtWebEngine 3119- Download suffixes like (1) are now correctly stripped with QtWebEngine 3120- Crash when trying to print a tab which was closed in the meantime 3121- Crash when trying to open a file twice on Windows 3122 3123[[v0.10.0]] 3124v0.10.0 (2017-02-25) 3125-------------------- 3126 3127Added 3128~~~~~ 3129 3130- Userscripts now have a new `$QUTE_COMMANDLINE_TEXT` environment variable, containing the current commandline contents 3131- New `ripbang` userscript to create a searchengine from a duckduckgo bang 3132- link:https://github.com/annulen/webkit/wiki[QtWebKit Reloaded] (also called QtWebKit-NG) is now fully supported 3133- Various new functionality with the QtWebEngine backend: 3134 * Printing support with Qt >= 5.8 3135 * Proxy support with Qt >= 5.8 3136 * The `general -> print-element-backgrounds` option with Qt >= 5.8 3137 * The `content -> cookies-store` option 3138 * The `storage -> cache-size` option 3139 * The `colors -> webpage.bg` option 3140 * The HTML5 fullscreen API (e.g. youtube videos) with QtWebEngine 3141 * `:download --mhtml` 3142- New `qute:history` URL and `:history` command to show the browsing history 3143- Open tabs are now auto-saved on each successful load and restored in case of a crash 3144- `:jseval` now has a `--file` flag so you can pass a javascript file 3145- `:session-save` now has a `--only-active-window` flag to only save the active window 3146- macOS builds are back, and built with QtWebEngine 3147 3148Changed 3149~~~~~~~ 3150 3151- PyQt 5.7/Qt 5.7.1 is now required for the QtWebEngine backend 3152- Scrolling with the scrollwheel while holding shift now scrolls sideways 3153- New way of clicking hints which solves various small issues 3154- When yanking a mailto: link via hints, the mailto: prefix is now stripped 3155- Zoom level messages are now not stacked on top of each other anymore 3156- qutebrowser now automatically uses QtWebEngine if QtWebKit is unavailable 3157- :history-clear now asks for a confirmation, unless it's run with --force. 3158- `input -> mouse-zoom-divider` can now be 0 to disable zooming by mouse wheel 3159- `network -> proxy` can also be set to `pac+file://...` now to 3160 use a local proxy autoconfig file (on QtWebKit) 3161 3162Removed 3163~~~~~~~ 3164 3165- (QtWebKit) Various rarely customized settings were removed: 3166 * `ui -> css-media-type` (defaults to desktop) 3167 * `general -> site-specific-quirks` (now always turned on) 3168 * `storage -> offline-storage-default-quota` (defaults to 5MB) 3169 * `storage -> offline-web-application-cache-quota` (defaults to no quota) 3170 * `storage -> object-cache-capacities` (default depends on disk space) 3171 * `content -> css-regions` (now always turned off) 3172 * `storage -> offline-storage-database` (merged into `storage -> local-storage`) 3173 3174Fixed 3175~~~~~ 3176 3177- Various bugs with Qt 5.8 and QtWebEngine: 3178 * Segfault when closing a window 3179 * Segfault when closing a tab with a search active 3180 * Fixed various mouse actions (like automatically entering insert mode) not working 3181 * Fixed hints sometimes not working 3182 * Segfault when opening a URL after a QtWebEngine renderer process crash 3183- Other QtWebEngine fixes: 3184 * Insert mode now gets entered correctly with a non-100% zoom 3185 * Crash reports are now re-enabled when using QtWebEngine 3186 * Fixed crashes when closing tabs while hinting 3187 * Using :undo or :tab-clone with a view-source:// or chrome:// tab is now prevented, as it segfaults 3188- `:enter-mode` now refuses to enter modes which can't be entered manually (which caused crashes) 3189- `:record-macro` (`q`) now doesn't try to record macros for special keys without a text 3190- Fixed PAC (proxy autoconfig) not working with QtWebKit 3191- `:download --mhtml` now uses the new file dialog 3192- Word hints are now upper-cased correctly when hints -> uppercase is true 3193- Font validation is now more permissive in the config, allowing e.g. "Terminus 3194 (TTF)" as font name 3195- Fixed starting on newer PyQt/sip versions with LibreSSL 3196- When downloading files with QtWebKit, a User-Agent header is set when possible 3197- Fixed showing of keybindings in the :help completion 3198- `:navigate prev/next` now detects `rel` attributes on `<a>` elements, and 3199 handles multiple `rel` attributes correctly 3200- Fixed a crash when hinting with target `userscript` and spawning a non-existing script 3201- Lines in Jupyter notebook now trigger insert mode 3202 3203[[v0.9.1]] 3204v0.9.1 (2017-01-13) 3205------------------- 3206 3207Fixed 3208~~~~~ 3209 3210- Prevent websites from downloading files to a location outside of the download 3211 folder with QtWebEngine. 3212 3213[[v0.9.0]] 3214v0.9.0 (2016-12-28) 3215------------------- 3216 3217Added 3218~~~~~ 3219 3220- *New dependency:* qutebrowser now depends on the Qt QML module, which is 3221 packaged separately in some distributions (as Qt Declarative/QML/Quick). 3222- New `:rl-backward-kill-word` command which does what `:rl-unix-word-rubout` 3223 did before v0.8.0. 3224- New `:rl-unix-filename-rubout` command which is similar to readline's 3225 `unix-filename-rubout`. 3226- New `fonts -> completion.category` setting to customize the font used for 3227 completion category headers. 3228- New `:debug-log-capacity` command to adjust how many lines are logged into RAM 3229 (to report bugs which are difficult to reproduce). 3230- New `hide-unmatched-rapid-hints` option to not hide hint unmatched hint labels 3231 in rapid mode. 3232- New `{clipboard}` and `{primary}` replacements for the commandline which 3233 replace the `:paste` command. 3234- New `:insert-text` command to insert a given text into a field on the page, 3235 which replaces `:paste-primary` together with the `{primary}` replacement. 3236- New `:window-only` command to close all other windows. 3237- New `prev-category` and `next-category` arguments to `:completion-item-focus` 3238 to focus the previous/next category in the completion (bound to `<Ctrl-Tab>` 3239 and `<Ctrl-Shift-Tab>` by default). 3240- New `:click-element` command to fake a click on a element. 3241- New `:debug-log-filter` command to change console log filtering on-the-fly. 3242- New `:debug-log-level` command to change the console loglevel on-the-fly. 3243- New `general -> yank-ignored-url-parameters` option to configure which URL 3244 parameters (like `utm_source` etc.) to strip off when yanking a URL. 3245- Support for the 3246 https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API[HTML5 page visibility API] 3247- New `readability` userscript which shows a readable version of a page (using 3248 the `readability-lxml` python package) 3249- New `cast` userscript to show a video on a Google Chromecast 3250- New `:run-with-count` command which replaces the (undocumented) `:count:command` syntax. 3251- New `:record-macro` (`q`) and `:run-macro` (`@`) commands for keyboard macros. 3252- New `ui -> hide-scrollbar` setting to hide the scrollbar independently of the 3253 `user-stylesheet` setting. 3254- New `general -> default-open-dispatcher` setting to configure what to open 3255 downloads with (instead of e.g. `xdg-open` on Linux). 3256- Support for PAC (proxy autoconfig) with QtWebKit 3257 3258Changed 3259~~~~~~~ 3260 3261- Hints are now drawn natively in Qt instead of using web elements. This has a 3262 few implications for users: 3263 * The `hints -> opacity` setting does not exist anymore, but you can use 3264 `rgba(r, g, b, alpha)` colors instead for `colors -> hints.bg`. 3265 * The `hints -> font` setting is not affected by 3266 `fonts -> web-family-fixed` anymore. Thus, a transformer got added to 3267 change `Monospace` to `${_monospace}`. 3268 * Gradients in hint colors can now be configured by using `qlineargradient` 3269 and friends instead of `-webkit-gradient`. The most common cases get 3270 migrated automatically, but if you drastically changed the defaults, 3271 you'll need to manually adjust your config. 3272 * Styling hints by styling `qutehint` elements in `user-stylesheet` was 3273 never officially supported and does not work anymore. 3274 * Hints are now not affected by the page's stylesheet or zoom anymore. 3275- `:bookmark-add` now has a `--toggle` flag which deletes the bookmark if it 3276 already exists. 3277- `:bookmark-load` now has a `--delete` flag which deletes the bookmark after 3278 loading it. 3279- `:open` now also accepts quickmark names instead of URLs 3280- `:tab-move` now optionally takes an index for absolute moving. 3281- Commands taking either an argument or a count (like `:zoom` or `:tab-focus`) 3282 now prefer the count instead of showing an error message. 3283- `:open` now has an `--implicit` argument to treat the opened tab as implicit 3284 (i.e. to open it at the position it would be opened if it was a clicked link) 3285- `:download-open` and `:prompt-open-download` now have an optional `cmdline` 3286 argument to pass a commandline to open the download with. 3287- `:yank` now has a position argument to select what to yank instead of using 3288 flags. 3289- Replacements like `{url}` can now also be used in the middle of an argument. 3290 Consequently, commands taking another command (`:later`, `:repeat` and 3291 `:bind`) now don't immediately evaluate variables. 3292- Tab titles in the `:buffer` completion now update correctly when a page's 3293 title is changed via javascript. 3294- `:hint` now has a `--mode <mode>` flag to override the hint mode configured 3295 using the `hints -> mode` setting. 3296- With `new-instance-open-target` set to a tab option, the tab is now opened in 3297 the most recently focused (instead of the last opened) window. This can be 3298 configured with the new `new-instance-open-target.window` setting. 3299 It can also be set to `last-visible` to show the pages in the most recently 3300 visible window, or `first-opened` to use the first (oldest) available window. 3301- Word hints now are more clever about getting the element text from some elements. 3302- Completions for `:help` and `:bind` now also show hidden commands 3303- The `:buffer` completion now also filters using the first column (id). 3304- `:undo` has been improved to reopen tabs at the position they were closed. 3305- `:navigate` now takes a count for `up`/`increment`/`decrement`. 3306- The `hints -> auto-follow` setting now can be set to 3307 `always`/`full-match`/`unique-match`/`never` to more precisely control when 3308 hints should be followed automatically. 3309- Counts can now be used with special keybindings (e.g. with modifiers). 3310 This was already implemented for v0.7.0 originally, but got reverted because 3311 it caused some issues and then never re-applied. 3312- Sending a command to an existing instance (via "qutebrowser :reload") now 3313 doesn't mark it as urgent anymore. 3314- `tabs -> title-format` now treats an empty string as valid. 3315- Bindings for `:`, `/` and `?` are now configured explicitly and not hardcoded 3316 anymore. 3317- The `completion -> show` setting can now be set to `always`, `auto` or 3318 `never`. 3319- `:open-editor` can now be used in any mode. 3320- Lots of improvements to and bugfixes for the QtWebEngine backend, such as 3321 working hints. However, using qutebrowser directly from git is still advised 3322 when using `--backend webengine`. 3323- `content -> javascript-can-open-windows` got renamed to 3324 `javascript-can-open-windows-automatically`. 3325- `:prompt-accept` now optionally accepts a value which overrides the one 3326 entered in the input box. `yes` and `no` can be used as values for yes/no 3327 questions. 3328- The new `--qt-arg` and `--qt-flag` arguments can be used to pass 3329 arguments/flags to Qt's commandline. 3330- Error/warning/info messages are now shown stacked above the statusbar. 3331 This also added various new settings: 3332 * `colors -> messages.fg.error` (renamed from `statusbar.fg.error`) 3333 * `colors -> messages.bg.error` (renamed from `statusbar.bg.error`) 3334 * `colors -> messages.border.error` 3335 * `colors -> messages.fg.warning` (renamed from `statusbar.fg.warning`) 3336 * `colors -> messages.bg.warning` (renamed from `statusbar.bg.warning`) 3337 * `colors -> messages.border.warning` 3338 * `colors -> messages.fg.info` 3339 * `colors -> messages.bg.info` 3340 * `colors -> messages.border.info` 3341 * `fonts -> messages.error` 3342 * `fonts -> messages.warning` 3343 * `fonts -> messages.info` 3344- The `qute:settings` page now also shows option descriptions. 3345- `qute:version` and `qutebrowser --version` now show various important paths 3346- `:spawn`/userscripts now show a nicer error when a script wasn't found 3347- Various functionality now works when javascript is disabled with QtWebKit 3348- Various commands/settings taking `left`/`right`/`previous` arguments now take 3349 `prev`/`next`/`last-used` to remove ambiguity. 3350- The `ui -> user-stylesheet` setting now only takes filenames, not CSS snippets 3351- `ui -> window-title-format` now has a new `{backend} ` replacement 3352- `:hint` has a new `--add-history` argument to add the URL to the history for 3353 yank/spawn targets. 3354- `:set` now cycles through values if more than one argument is given. 3355- `:open` now opens `default-page` without a URL even without `-t`/`-b`/`-w` given. 3356 3357Deprecated 3358~~~~~~~~~~ 3359 3360- The `:paste` command got deprecated as `:open` with `{clipboard}` and 3361 `{primary}` can be used instead. 3362- The `:paste-primary` command got deprecated as `:insert-text {primary}` can 3363 be used instead. 3364- The `:prompt-yes` and `:prompt-no` commands got deprecated as 3365 `:prompt-accept yes` and `:prompt-accept no` can be used instead. 3366 3367Removed 3368~~~~~~~ 3369 3370- The `:yank-selected` command got merged into `:yank` as `:yank selection` 3371 and thus removed. 3372- The `:completion-item-prev` and `:completion-item-next` commands got merged 3373 into a new `:completion-focus {prev,next}` command and thus removed. 3374- The `ui -> hide-mouse-cursor` setting since it was completely broken and 3375 nobody seemed to care. 3376- The `hints -> opacity` setting - see the "Changed" section for details. 3377- The `completion -> auto-open` setting got merged into `completion -> show` and 3378 thus removed. 3379- All `--qt-*` arguments got replaced by `--qt-arg` and `--qt-flag` and thus 3380 removed. 3381- The `-c`/`--confdir`, `--datadir` and `--cachedir` arguments got removed, as 3382 `--basedir` should be sufficient. 3383 3384Fixed 3385~~~~~ 3386 3387- `:undo` now doesn't undo tabs "closed" by `:tab-detach` anymore. 3388- Fixed an issue with hint chars not being cleared correctly when leaving hint 3389 mode. 3390- `:tab-detach` now fails correctly when there's only one tab open. 3391- Various small issues with the command completion 3392- Fixed hang when using multiple spaces in a row with the URL completion 3393- qutebrowser now still starts with an incorrectly configured 3394 `$XDG_RUNTIME_DIR`. 3395- Fixed crash when a userscript writes invalid unicode data to the FIFO 3396- Fixed crash when a included HTML was not found 3397 3398[[v0.8.3]] 3399v0.8.3 (2016-11-05) 3400------------------- 3401 3402Fixed 3403~~~~~ 3404 3405- Fixed crash when doing `:<space><enter>`, another corner-case introduced in v0.8.0 3406- Fixed `:open-editor` (`<Ctrl-e>`) on Windows 3407- Fixed crash when setting `general -> auto-save-interval` to a too big value. 3408- Fixed crash when using hints on Void Linux. 3409- Fixed compatibility with Python 3.5.2+ on Debian unstable 3410- Compatibility with pdfjs v1.6.210 3411- `:bind` can now be used to bind to an alias (binding by editing `keys.conf` 3412 already worked before) 3413- The command completion now updates correctly when changing aliases 3414- The tabbar now displays correctly with the Adwaita Qt theme 3415- The default `sk` keybinding now sets the commandline to `:bind` correctly 3416- Fixed crash when closing a window without focusing it 3417- Userscripts now can access QUTE_FIFO correctly on Windows 3418 3419[[v0.8.2]] 3420v0.8.2 (2016-08-02) 3421------------------- 3422 3423Fixed 3424~~~~~ 3425 3426- Fixed `general -> private-browsing` not being set correctly until a restart 3427 (which caused e.g. local storage to be enabled). 3428- When hinting input fields (`:t`), also consider input elements without a type. 3429- Fixed crash when opening an invalid URL with a percent-encoded and a real @ in it 3430- Fixed default `;o` and `;O` bindings 3431- Fixed local storage not working (and possible other bugs) when using a 3432 relative path with `--basedir`. 3433- Fixed crash when deleting a quickmark with Ctrl-D 3434- Fixed HTML5 video playback on Windows 3435- Fixed crash when using `:prompt-open-download` with a file with chars not 3436 encodable with the OS' filesystem encoding (e.g. with `LC_ALL=C`) 3437- Fixed `:prompt-open-download` with a too long filename (> 255 bytes) 3438- Fixed crash when cancelling a download after doing `:prompt-open-download` 3439- Fixed crash when writing a download to disk fails with 3440 `:prompt-open-download`. 3441- Fixed `:restart` deleting the basedir when it was given with `--basedir`. 3442 3443[[v0.8.1]] 3444v0.8.1 (2016-07-27) 3445------------------- 3446 3447Fixed 3448~~~~~ 3449 3450- Fix crash when pressing enter without a command 3451- Adjust error message to point out QtWebEngine is unsupported with the OS 3452 X .app currently. 3453- Hide Harfbuzz warning with the macOS .app 3454 3455[[v0.8.0]] 3456v0.8.0 (2016-07-26) 3457------------------- 3458 3459Added 3460~~~~~ 3461 3462- New `:repeat-command` command (mapped to `.`) to repeat the last command. 3463 Note that two former default bundings conflict with that binding, unbinding 3464 them via `:unbind .i` and `:unbind .o` is recommended. 3465- New `qute:bookmarks` page which displays all bookmarks and quickmarks. 3466- New `:prompt-open-download` (bound to `Ctrl-X`) which can be used to open a 3467 download directly when getting the filename prompt. 3468- New `{host}` replacement for tab- and window titles which evaluates 3469 to the current host. 3470- New default binding `;t` for `:hint input`. 3471- New variables `$QUTE_CONFIG_DIR`, `$QUTE_DATA_DIR` and 3472 `$QUTE_DOWNLOAD_DIR` available for userscripts. 3473- New option `ui` -> `status-position` to configure the position of the 3474 status bar (top/bottom). 3475- New `--pdf <filename>` argument for `:print` WHICH can be used to generate a 3476 PDF without a dialog. 3477 3478Changed 3479~~~~~~~ 3480 3481- `:scroll-perc` now prefers a count over the argument given to it, which means 3482 `gg` can be used with a count. 3483- Aliases can now use `;;` to have an alias which executed multiple commands. 3484- `:edit-url` now does nothing if the URL isn't changed in the spawned editor. 3485- `:bookmark-add` can now be passed a URL and title to add that as a bookmark 3486 rather than the current page. 3487- New `taskadd` userscript to add a taskwarrior task annotated with the 3488 current URL. 3489- `:bookmark-del` and `:quickmark-del` now delete the current page's URL if none 3490 is given. 3491 3492Fixed 3493~~~~~ 3494 3495- Compatibility with PyQt 5.7 3496- Fixed some configuration values being lost when a config option gets removed 3497 from qutebrowser's code. 3498- Fix crash when downloading with a full disk 3499- Using `:jump-mark` (e.g. `''`) when the current URL is invalid doesn't crash 3500 anymore. 3501 3502Removed 3503~~~~~~~ 3504 3505- The ability to display status messages from webpages, as well as the related 3506 `ui -> display-statusbar-messages` setting. 3507- The `general -> wrap-search` setting as searches now always wrap. 3508 According to a quick straw poll and prior crash logs, almost nobody is using 3509 `wrap-search = false`, and turning off wrapping is not possible with 3510 QtWebEngine. 3511- `:edit-url` now doesn't accept a count anymore as its behavior was confusing 3512 and it doesn't make much sense to add a count. 3513 3514[[v0.7.0]] 3515v0.7.0 (2016-06-10) 3516------------------- 3517 3518Added 3519~~~~~ 3520 3521- New `:edit-url` command to edit the URL in an external editor. 3522- New `network -> custom-headers` setting to send custom headers with every request. 3523- New `{url:pretty}` commandline replacement which gets replaced by the decoded URL. 3524- New marks to remember a scroll position: 3525 - New `:jump-mark` command to jump to a mark, bound to `'` 3526 - New `:set-mark` command to set a mark, bound to ```(backtick) 3527 - The `'` mark gets set when moving away (hinting link with anchor, searching, etc.) so you can move back with `''` 3528- New `--force-color` argument to force colored logging even if stdout is not a 3529 terminal 3530- New `:messages` command to show error messages 3531- New pop-up showing possible keybinding when the first key of a keychain is 3532 pressed. This can be turned off using `:set ui keyhint-blacklist *`. 3533- New `hints -> auto-follow-timeout` setting to ignore keypresses after 3534 following a hint when filtering in number mode. 3535- New `:history-clear` command to clear the entire history 3536- New `hints -> find-implementation` to select which implementation (JS/Python) 3537 should be used to find hints on a page. The `javascript` implementation is 3538 better, but slower. 3539- New `inputs` group for `:hint` to hint text input fields. 3540 3541Changed 3542~~~~~~~ 3543 3544- qutebrowser got a new (slightly updated) logo 3545- `:tab-focus` can now take a negative index to focus the nth tab counted from 3546 the right. 3547- `:yank` can now yank the pretty/decoded URL by adding `--pretty` 3548- `:navigate` now clears the URL fragment 3549- `:completion-item-del` (`Ctrl-D`) can now be used in `:buffer` completion to 3550 close a tab 3551- Various SSL ciphers are now disabled by default. With recent Qt/OpenSSL 3552 versions those already all are disabled, but with older versions they might 3553 not be. 3554- Show favicons as window icon with `tabs-are-windows` set. 3555- `:bind <key>` without a command now shows the existing binding 3556- The optional `colorlog` dependency got removed, as qutebrowser now displays 3557 colored logs without it. 3558- URLs are now shown decoded when hovering. 3559- Keybindings are now shown in the command completion 3560- Improved behavior when pasting multiple lines 3561- Rapid hints can now also be used for the `normal` hint target, which can be 3562 useful with javascript click handlers or checkboxes which don't actually open 3563 a new page. 3564- `:zoom-in` or `:zoom-out` (`+`/`-`) with a too large count now zooms to the 3565 smallest/largest zoom instead of doing nothing. 3566- The commandline now accepts partially typed commands if they're unique. 3567- Number hints are now kept filtered after following a hint in rapid mode. 3568- Number hints are now renumbered after filtering 3569- Number hints can now be filtered with multiple space-separated search terms 3570- `hints -> scatter` is now ignored for number hints 3571- Better history implementation which also stores titles. 3572 As a consequence, URLs which redirect to another URL are now added to the 3573 history too, marked with a `-r` suffix to the timestamp field. 3574 3575Fixed 3576~~~~~ 3577 3578- Fixed using `:hint links spawn` with flags - you can now use things like the 3579 `-v` argument for `:spawn` or pass flags to the spawned commands. 3580- Various fixes for hinting corner-cases where following a link didn't work or 3581 the hint was drawn at the wrong position. 3582- Fixed crash when downloading from a URL with SSL errors 3583- Close file handles correctly when a download failed 3584- Fixed crash when using `;Y` (`:hint links yank-primary`) on a system without 3585 primary selection 3586- Don't display quit confirmation with finished downloads 3587- Fixed updating the tab index in the statusbar when opening a background tab 3588- Fixed a crash when entering `:-- ` in the commandline 3589- Fixed `:debug-console` with PyQt 5.6 3590- Fixed qutebrowser not starting when `sys.stderr` is `None` 3591- Fixed crash when cancelling a download which belongs to an MHTML download 3592- Fixed rebinding of keybindings being case-sensitive 3593- Fix for tab indicators getting lost when moving tabs 3594- Fixed handling of backspace in number hinting mode 3595- Fixed `FileNotFoundError` when starting in some cases on old Qt versions 3596- Fixed sharing of cookies between tabs when `private-browsing` is enabled 3597- Toggling values with `:set` now uses lower-case values 3598- Hints now work with (non-standard) links with spaces around the URL 3599- Strip off trailing spaces for history entries with no title 3600 3601[[v0.6.2]] 3602v0.6.2 (2016-04-30) 3603------------------- 3604 3605Fixed 3606~~~~~ 3607 3608- Fixed crash when using `:tab-{prev,next,focus}` right after closing the last 3609 tab with `last-close` set to `close`. 3610- Fixed crash when doing `:undo` in a new instance with `tabs -> last-close` set 3611 to `default-page`. 3612- Fixed crash when starting with --cachedir="" 3613- Fixed crash in some circumstances when using dictionary hints 3614- Fixed various crashes related to PyQt 5.6 3615 3616[[v0.6.1]] 3617v0.6.1 (2016-04-10) 3618------------------- 3619 3620Fixed 3621~~~~~~ 3622 3623- Fixed broken cheatsheet image which was missing from package 3624- Fixed occasional crash when switching/disconnecting monitors 3625- Fixed crash when downloading non-ascii files with a broken locale (`LC_ALL=C`) 3626- Added workaround for a Qt/PyQt bug which is too weird to describe here 3627 3628[[v0.6.0]] 3629v0.6.0 (2016-04-04) 3630------------------- 3631 3632Added 3633~~~~~ 3634 3635- New `:buffer` command to easily switch tabs by name. This is not bound to a 3636 key by default for existing users due to a conflict with the `gt`/`gT` 3637 bindings (which are now removed from the default bindings). 3638 You can bind it by hand by running `:bind -f gt set-cmd-text -s :buffer`. 3639- New `--quiet` argument for the `:debug-pyeval` command to not open a tab with 3640 the results. Note `:debug-pyeval` is still only intended for debugging. 3641- The completion now matches each entered word separately. 3642- A new command `:paste-primary` got added to paste the primary selection, and 3643 `<Shift-Insert>` got added as a binding so it pastes primary rather than 3644 clipboard. 3645- New mode `word` for `hints -> mode` which uses a dictionary and link-texts 3646 for hints instead of single characters. 3647- New `--all` argument for `:download-cancel` to cancel all running downloads. 3648- New `password_fill` userscript to fill passwords using the `pass` executable. 3649- New `current` hinting mode which forces opening hints in the current tab 3650 (even with `target="_blank"`) 3651 3652Changed 3653~~~~~~~ 3654 3655- Pasting multiple lines via `:paste` now opens each line in a new tab. 3656- `:navigate increment/decrement` now preserves leading zeroes in URLs. 3657- `general -> editor` can now also handle `{}` inside another argument (e.g. to open `vim` via `termite`) 3658- Improved performance when scrolling with many tabs open. 3659- Shift-Insert now also pastes primary selection for prompts. 3660- `:download-remove --all` got un-deprecated to provide symmetry with 3661 `:download-cancel --all`. It does the same as `:download-clear`. 3662- Improved detection of URLs/search terms when pasting multiple lines. 3663- Don't remove `qutebrowser-editor-*` temporary file if editor subprocess crashed 3664- Userscripts are also searched in `/usr/share/qutebrowser/userscripts`. 3665- Blocked hosts are now also read from a `blocked-hosts` file in the config dir 3666 (e.g. `~/.config/qutebrowser/blocked-hosts`). 3667 3668Fixed 3669~~~~~ 3670 3671- Fixed starting with -c "". 3672- Fixed crash when a tab is closed twice via javascript (e.g. Dropbox 3673 authentication dialogs) 3674- Fixed crash when a notification/geolocation prompt is answered after closing 3675 the tab it belongs to. 3676- Fixed crash when downloading a file without any path information (e.g a 3677 magnet link). 3678- Fixed crashes when opening an empty URL (e.g. via pasting). 3679- Fixed validation of duplicate values in `hints -> chars`. 3680- Fixed crash when PDF.js was partially installed. 3681- Fixed crash when XDG_DOWNLOAD_DIR was not an absolute path. 3682- Fixed very long filenames when downloading `data://`-URLs. 3683- Fixed ugly UI fonts on Windows when Liberation Mono is installed 3684- Fixed crash when unbinding key from a section which doesn't exist in the config 3685- Fixed report window after a segfault 3686- Fixed some directory browser issues on Windows 3687- Fixed crash when closing a window with a finished download and delayed 3688 `remove-finished-downloads` setting. 3689- Fixed crash when hitting `<Tab>` then `<Ctrl-C>` on pages without keyboard 3690 focus. 3691- Fixed "Frame load interrupted by policy change" error showing up when 3692 downloading files with Qt 5.6. 3693 3694Removed 3695~~~~~~~ 3696 3697- The `gt`/`gT` bindings (luakit-like alternatives to `J`/`K`) were removed 3698 (except for existing configs) to make room for the `gt` binding to show 3699 buffers. 3700 3701[[v0.5.1]] 3702v0.5.1 (2016-01-18) 3703------------------- 3704 3705Fixed 3706~~~~~ 3707 3708- Fixed completion for various config values when using `:set`. 3709- Fixed config validation for various config values. 3710- Prevented an error being logged when a website with HTTP authentication was 3711 opened on Windows. 3712 3713[[v0.5.0]] 3714v0.5.0 (2016-01-05) 3715------------------- 3716 3717Added 3718~~~~~ 3719 3720- Ability to preview PDFs using pdf.js in the browser if it's installed. This 3721 is disabled by default and can be enabled using the 3722 `content -> pdfjs-enabled` setting. 3723- New setting `ui -> hide-wayland-decoration` to hide the window decoration 3724 when using wayland. 3725- New userscripts in `misc/userscripts`: 3726 - `open_download` to easily open a file in your downloads folder. 3727 - `view_in_mpv` to open a video in mpv and remove it from the page. 3728 - `qutedmenu` and `dmenu_qutebrowser` to select URLs via dmenu 3729- New setting `content -> host-blocking-whitelist` to whitelist certain domains 3730 from the adblocker. 3731- `{scroll_pos}` can now be used in `ui -> window-title-format` and 3732 `tabs -> title-format`. 3733- New setting `general -> url-incdec-segments` to configure which segments of 3734 the URL should be affected by `:navigate increment/decrement`. 3735- New `--target` argument to specify how URLs should be opened in an existing 3736 instance. 3737- New setting `statusbar.url.fg.success.https` to set the foreground color for 3738 the URL when a page was loaded via HTTPS. 3739- The scrollbar in the completion is now styled, and the following new options 3740 got added: 3741 * `completion -> scrollbar-width` 3742 * `completion -> scrollbar-padding` 3743 * `colors -> completion.scrollbar.fg` 3744 * `colors -> completion.scrollbar.bg` 3745- New value `none` for options taking a color system so they don't display a 3746 gradient: 3747 * `colors -> tabs.indicator.system` 3748 * `colors -> downloads.fg.system` 3749 * `colors -> downloads.bg.system` 3750- New command `:download-retry` to retry a failed download. 3751- New command `:download-clear` which replaces `:download-remove --all`. 3752- `:set-cmd-text` has a new `--append` argument to append to the current 3753 statusbar text. 3754- qutebrowser now uses `~/.netrc` if available to authenticate via HTTP. 3755- New `:fake-key` command to send a fake keypress to a website or to 3756 qutebrowser. 3757- New `--mhtml` argument for `:download` to download a page including all 3758 resources as MHTML file. 3759- New option `tabs -> title-alignment` to change the alignment of tab titles. 3760 3761Changed 3762~~~~~~~ 3763 3764- The `colors -> tabs.bg/fg.selected` option got split into 3765 `tabs.bg/fg.selected.odd/even`. 3766- `:spawn --userscript` and `:hint` with the `userscript` target now look up 3767 relative paths in `~/.local/share/qutebrowser/userscripts` or 3768 `$XDG_DATA_HOME`. Using a binary in `$PATH` won't work anymore with 3769 `--userscript`. 3770- New design for error pages 3771- Link filtering for hints now checks if the text is contained anywhere in 3772 the link, and matches case-insensitively. 3773- The `ui -> remove-finished-downloads` option got changed to an integer and 3774 now takes a time (in milliseconds) to keep the download around after it's 3775 finished. When set to `-1`, downloads are never removed. 3776- The `:follow-hint` command now optionally takes the keystring of a hint to 3777 follow. 3778- `:scroll-px` now doesn't take floats anymore, which made little sense. 3779- Updated the user agent list for the `:set network user-agent` completion. 3780- Starting with `--debug` doesn't log `VDEBUG` messages anymore (add 3781 `--loglevel VDEBUG` to get them). 3782- `:debug-console` now hides the console if it's already shown. 3783- `:yank-selected` now doesn't log the selected text anymore. 3784- `general -> log-javascript-console` got changed from a boolean to an option 3785 taking a loglevel (`none`, `info`, `debug`). 3786- `:tab-move +/-` now wraps around if `tabs -> wrap` is `true`. 3787- When a subprocess (like launched by `:spawn`) fails, its stdout/stderr is now 3788 logged to the console. 3789- A search engine name can now contain any non-space character, like dashes. 3790 3791Deprecated 3792~~~~~~~~~~ 3793 3794- `:download-remove --all` is now deprecated and `:download-clear` should be 3795 used instead. 3796- `:download <url> <destination>` is now deprecated and 3797 `:download --dest <destination> <url>` should be used instead. 3798 3799Removed 3800~~~~~~~ 3801 3802- `:scroll` with two pixel-arguments (deprecated in v0.3.0) 3803- The `:run-userscript` command (deprecated in v0.2.0) 3804- The `rapid` and `rapid-win` targets for `:hint` (deprecated in v0.2.0) 3805- The `:cancel-download` command (deprecated in v0.2.0) 3806- The `:download-page` command (deprecated in v0.2.0) 3807 3808Fixed 3809~~~~~ 3810 3811- Fixed retrying of downloads which were started in a now closed tab. 3812- Fixed displaying of web history if `web-history-max-items` is set to -1. 3813- Cloned tabs now don't display favicons anymore if show-favicons is False. 3814- Fixed a crash when clicking a bookmark name and pressing `Ctrl-D`. 3815- Fixed a crash when a website presents a very small favicon. 3816- Fixed prompting for download directory when 3817 `storage -> prompt-download-directory` was unset. 3818- Fixed crash when using `:follow-hint` outside of hint mode. 3819- Fixed crash when using `:set foo bar?` with invalid section/option. 3820- Fixed scrolling to the very left/right with `:scroll-perc`. 3821- Using an external editor should now work correctly with some funny chars 3822 (U+2028/U+2029/BOM). 3823- Movements in caret mode now should work correctly on macOS and Windows. 3824- Fixed upgrade from earlier config versions. 3825- Fixed crash when killing a running userscript. 3826- Fixed characters being passed through when shifted with 3827 `forward-unbound-keys` set to `auto`. 3828- Fixed restarting after a crash is reported. 3829- Removed `.pyc` files accidentally contained in source releases. 3830 3831[[v0.4.1]] 3832v0.4.1 (2015-09-30) 3833------------------- 3834 3835Fixed 3836~~~~~ 3837 3838- Adjusted AppArmor config for the IPC changes in v0.4.0. 3839- Fixed atime update frequency for IPC file. 3840- Worked around a Qt issue where middle-clicking caused scrolling with a 3841 touchpad to restart at the beginning of the page. 3842- The `completion -> web-history-max-items` setting is now also respected for 3843 items added after starting qutebrowser. 3844- Search terms are now shared between different tabs again 3845- Tests (a reduced subset of them) now run correctly again when DISPLAY is not 3846 set. 3847- Fixed an issue causing qutebrowser to crash with Python 3.5 as soon as an ad 3848 was blocked. 3849- Fixed an issue causing qutebrowser to not start with more recent Python 3.4 3850 versions (e.g. on Debian experimental). 3851- Fixed various `PendingDeprecationWarnings` shown with Python 3.5. 3852 3853[[v0.4.0]] 3854v0.4.0 (2015-09-11) 3855------------------- 3856 3857Added 3858~~~~~ 3859 3860- New bookmark functionality (similar to quickmarks without a name). 3861 * New command `:bookmark-add` to bookmark the current page (bound to `M`). 3862 * New command `:bookmark-load` to load a bookmark (bound to `gb`/`gB`/`wB`). 3863- New (hidden) command `:completion-item-del` (bound to `<Ctrl-D>`) to delete 3864 the current item in the completion (for quickmarks/bookmarks). 3865- New settings `tabs -> padding` and `tabs -> indicator-tabbing` to control the 3866 size/padding of the tabbar. 3867- New setting `ui -> statusbar-padding` to control the size/padding of the 3868 status bar. 3869- New setting `network -> referer-header` to configure when the referer should 3870 be sent (by default it's only sent while on the same domain). 3871- New setting `tabs -> show` which supersedes the old `tabs -> hide-*` options 3872 and has an additional `switching` option which shows tab while switching 3873 them. There's also a new `show-switching` option to configure the timeout. 3874- New setting `storage -> remember-download-directory` to remember the last 3875 used download directory. 3876- New setting `storage -> prompt-download-directory` to download all downloads 3877 without asking. 3878- Rapid hinting is now also possible for downloads. 3879- Directory browsing via `file://` is now supported. 3880 3881Changed 3882~~~~~~~ 3883 3884- Some developer scripts got moved to `scripts/dev/` 3885- When downloading to a FIFO or special file, a confirmation is displayed as 3886 this might cause qutebrowser to hang. 3887- The `:yank-selected` command now works in all modes instead of just caret 3888 mode and is not hidden anymore. 3889- `minimal_webkit_testbrowser.py` now has a `--webengine` switch to test 3890 QtWebEngine if it's installed. 3891- The column width percentages for the completion view now depend on the 3892 completion model. 3893- The values for `tabs -> position` and `ui -> downloads-position` got changed 3894 from `north`/`south`/`west/`east` to `top`/`bottom`/`left`/`right`. Existing 3895 configs should be adjusted automatically. 3896- `:tab-focus`/`gt` now behaves like `:tab-next` if no count/index is given. 3897- The completion widget doesn't show a border anymore. 3898- The tabbar doesn't display ugly arrows anymore if there isn't enough space 3899 for all tabs. 3900- Some insignificant Qt warnings which were printed on macOS are now hidden. 3901- Better support for Qt 5.5 and Python 3.5. 3902 3903Fixed 3904~~~~~ 3905 3906- Fixed a bug where cookies were saved despite qutebrowser being started in 3907 private browsing mode. 3908- The local socket used for inter-process communication (opening new instances) 3909 is now ensured to only be accessible by the user on all operating systems. 3910- Various corner cases for inter-process communication issues got fixed. 3911- `link_pyqt.py` now should work better on untested distributions. 3912- Fixed various corner-cases with crashes when reading invalid config values 3913 and the history file. 3914- Fixed various corner-cases when setting text via an external editor. 3915- Fixed potential crash when hinting a text field. 3916- Fixed entering of insert mode when certain disabled text fields were clicked. 3917- Fixed a crash when using `:set` with `-p` and `!` (invert value) 3918- Downloads with unknown size are now handled correctly. 3919- `:navigate increment/decrement` (`<Ctrl-A>`/`<Ctrl-X>`) now handles some 3920 corner-cases better. 3921- Fixed a bug where the completion got affected by another window's completion 3922 if it was open in both windows. 3923- Fixed a performance issue with large histories when opening previously 3924 unvisited websites. 3925- The progress bar now doesn't cause the statusbar to change it's height 3926 anymore. 3927- `~` is now always expanded when spawning a script. 3928- Fixed various corner cases when opening links in an existing instance. 3929- Fixed a race-condition causing an exception when starting qutebrowser. 3930 3931Removed 3932~~~~~~~ 3933 3934- The `tabs -> indicator-space` setting got removed as the new padding settings 3935 should be used instead. 3936- The `tabs -> hide-always` and `tabs -> hide-auto` settings got merged into 3937 the new `tabs -> show` setting. 3938 3939[[v0.3.0]] 3940v0.3.0 (2015-06-28) 3941------------------- 3942 3943Added 3944~~~~~ 3945 3946- New commands `:message-info`, `:message-error` and `:message-warning` to show messages in the statusbar, e.g. from a userscript. 3947- New command `:scroll-px` which replaces `:scroll` for pixel-exact scrolling. 3948- New command `:jseval` to run a javascript snippet on the current page. 3949- 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 `/`). 3950- New (hidden) command `:clear-keychain` to clear a partially entered keychain (bound to `<Escape>` by default, in addition to clearing search). 3951- New setting `ui -> smooth-scrolling`. 3952- New setting `content -> webgl` to enable/disable https://www.khronos.org/webgl/[WebGL]. 3953- New setting `content -> css-regions` to enable/disable support for https://dev.w3.org/csswg/css-regions/[CSS Regions]. 3954- New setting `content -> hyperlink-auditing` to enable/disable support for https://html.spec.whatwg.org/multipage/semantics.html#hyperlink-auditing[hyperlink auditing]. 3955- New setting `tabs -> mousewheel-tab-switching` to control mousewheel behavior on the tab bar. 3956- New arguments `--datadir` and `--cachedir` to set the data/cache location. 3957- New arguments `--basedir` and `--temp-basedir` (intended for debugging) to set a different base directory for all data, which allows multiple invocations. 3958- New argument `--no-err-windows` to suppress all error windows. 3959- 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). 3960- New flag `-d`/`--detach` for `:spawn` to detach the spawned process so it's not closed when qutebrowser is. 3961- New flag `-v`/`--verbose` for `:spawn` to print information when the process started/exited successfully. 3962- Many new color settings (foreground setting for every background setting). 3963- New setting `ui -> modal-js-dialog` to use the standard modal dialogs for javascript questions instead of using the statusbar. 3964- New setting `colors -> webpage.bg` to set the background color to use for websites which don't set one. 3965- New setting `completion -> auto-open` to only open the completion when tab is pressed (if set to false). 3966- New visual/caret mode (bound to `v`) to select text by keyboard. 3967- There are now some example userscripts in `misc/userscripts`. 3968- Support for Qt 5.5 and tox 2.0 3969 3970Changed 3971~~~~~~~ 3972 3973- *Breaking change for userscripts:* `QUTE_HTML` and `QUTE_TEXT` for userscripts now don't store the contents directly, and instead contain a filename. 3974- The `content -> geolocation` and `notifications` settings now support a `true` value to always allow those. However, this is *not recommended*. 3975- New bindings `<Ctrl-R>` (rapid), `<Ctrl-F>` (foreground) and `<Ctrl-B>` (background) to switch hint modes while hinting. 3976- `<Ctrl-M>` and numpad-enter are now bound by default for bindings where `<Return>` was bound. 3977- `: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`. 3978- `: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. 3979- The `ui -> user-stylesheet` setting now also takes file paths relative to the config directory. 3980- 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`. 3981- Improved startup time by reading the webpage history while qutebrowser is open. 3982- The way `:spawn` splits its commandline has been changed slightly to allow commands with flags. 3983- The default for the `new-instance-open-target` setting has been changed to `tab`. 3984- Sessions now store zoom/scroll-position separately for each entry. 3985 3986Deprecated 3987~~~~~~~~~~ 3988 3989- `:scroll` with two pixel-arguments is now deprecated - `:scroll-px` should be used instead. 3990 3991Removed 3992~~~~~~~ 3993 3994- 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. 3995- Support for Qt installations without SSL support was dropped. 3996 3997Fixed 3998~~~~~ 3999 4000- Scrolling should now work more reliably on some pages where arrow keys worked but `hjkl` didn't. 4001- Small improvements when checking if an input is a URL or not. 4002- Fixed wrong cursor position when completing the first item in the completion. 4003- Fixed exception when using search engines with {foo} in their name. 4004- Fixed a bug where the same title was shown for all tabs on some systems. 4005- Don't install the scripts package when installing qutebrowser. 4006- Fixed searching for terms starting with a hyphen (e.g. `/-foo`) 4007- Proxy authentication credentials are now remembered between different tabs. 4008- Fixed updating of the tab title on pages without title. 4009- Fixed AssertionError when closing many windows quickly. 4010- Various fixes for deprecated key bindings and auto-migrations. 4011- Workaround for qutebrowser not starting when there are NUL-bytes in the history (because of a currently unknown bug). 4012- Fixed handling of keybindings containing Ctrl/Meta on macOS. 4013- Fixed crash when downloading a URL without filename (e.g. magnet links) via "Save as...". 4014- Fixed exception when starting qutebrowser with `:set` as argument. 4015- Fixed horrible completion performance when the `shrink` option was set. 4016- Sessions now store zoom/scroll-position correctly. 4017 4018[[v0.2.1]] 4019v0.2.1 (2015-04-19) 4020------------------- 4021 4022Fixed 4023~~~~~ 4024 4025- Added missing manpage (doc/qutebrowser.1.asciidoc) to archive. 4026 4027[[v0.2.0]] 4028v0.2.0 (2015-04-19) 4029------------------- 4030 4031Added 4032~~~~~ 4033 4034- Session support 4035 * new command `:session-load` to load a session. 4036 * new command `:session-save` to save a session. 4037 * new command `:session-delete` to delete a session. 4038 * new setting `general -> save-session` to always save the session on quit. 4039 * new setting `general -> session-default-name` to configure the session name to use if none is given. 4040 * new argument `-r`/`--restore` to specify a session to load. 4041 * new argument `-R`/`--override-restore` to not load a session even if one was saved. 4042- New commands to manage downloads: 4043 * `:download` to download a URL or the current page. 4044 * `:download-cancel` to cancel a download. 4045 * `:download-delete` to delete a download from disk. 4046 * `:download-open` to open a finished download. 4047 * `: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. 4048- History completion 4049 * New option `completion -> timestamp-format` to set the format used to display the history timestamps. 4050 * New option `completion -> web-history-max-items` to configure how many history items to show in the completion. 4051 * The option `completion -> history-length` for the command history got renamed to `cmd-history-max-items`. 4052- Better save logic for the config/state: 4053 * 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). 4054 * Save things (cookies, config, quickmarks, ...) periodically all 15 seconds (time can be changed with the `general -> auto-save-interval` option). 4055- Opera-like mouse rocker gestures 4056 * 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. 4057- New `-f` option for `:reload` to reload and bypass the cache. 4058- Pass more information (`QUTE_MODE`, `QUTE_SELECTED_TEXT`, `QUTE_SELECTED_HTML`, `QUTE_USER_AGENT`, `QUTE_HTML`, `QUTE_TEXT`) to userscripts. 4059- New `--userscript` option to `:spawn` (which deprecates `:run-userscript`). 4060- Ability to toggle a value to `:set` by appending a `!` to the value. 4061- New options to hide the tab-/statusbar: 4062 * `tabs -> hide-always` for the tabbar 4063 * `ui -> hide-statusbar` for the statusbar 4064- New options to configure how the tab/window titles should look: 4065 * `tabs -> title-format` for the tabbar 4066 * `ui -> window-title-format` for the window title 4067- HTML5 Geolocation/Notification support: 4068 * New option `content -> geolocation` to permanently turn the geolocation off. 4069 * New option `content -> notifications` to permanently turn notifications off. 4070- New options to disable javascript prompts/alerts: 4071 * `content -> ignore-javascript-prompt` to turn off prompts. 4072 * `content -> ignore-javascript-alerts` to turn off alerts. 4073- Two new options to customize the behavior of hints: 4074 * `hints -> min-chars` to set minimum number of chars in hints. 4075 * `hints -> scatter` which when turned off distributes the hints sequentially (like dwb) instead of scattering their positions (like Vimium). 4076- Make it possible to use `:open -[twb]` without url. 4077 * New option `general -> default-page` to set the page to be opened when doing that. 4078- New `input -> partial-timeout` option to clear partial keystrings. 4079- New option `completion -> download-path-suggestion` to configure what to show in the completion for downloads. 4080- Queue messages shown in unfocused windows and show them when the window is focused. 4081 * New option `ui -> message-unfocused` to disable this behavior. 4082- New `--relaxed-config` argument which ignores unknown options. 4083- New `:tab-detach` command to open the current tab in a new window. 4084- Zooming via Ctrl-Mousewheel. 4085 * New option `input -> mouse-zoom-divider` to control how much the page is zoomed when rotating the wheel. 4086- New option (`content -> host-blocking-enabled`) to enable/disable host blocking. 4087- New values `tab-bg`/`tab-bg-silent` for `new-instance-open-target` to open a background tab. 4088- New `ui -> downloads-position` setting to move the downloads to the bottom. 4089- New `ui -> hide-mouse-cursor` option to hide the mouse cursor inside qutebrowser. 4090- New argument `-s` for qutebrowser to set a temporary config option. 4091- New argument `-p` for the `:set` command to print the new value. 4092- 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. 4093- New `-f` argument to `:bind` to overwrite the old binding. 4094- New `--qt-name` argument to qutebrowser which is passed to Qt to set `WM_CLASS`. 4095- Alternating row colors in completion. This adds a new `colors -> completion.alternate-bg` option. 4096 4097Changed 4098~~~~~~~ 4099 4100- 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: 4101 * Clear search when `:search` without arguments is given. (`:search ""` will now search for the literal text `""`) 4102 * Add `-s`/`--space` argument to `:set-cmd-text` (as `:set-cmd-text "foo "` will now set the literal text `"foo "`) 4103- Ignore `;;` for splitting with some commands like `:bind`. 4104- Add unbound (new) default keybindings to config. This also adds a new `<unbound>` special command. 4105 * 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. 4106- If an SSL error is raised multiple times with the same error/certificate/host/scheme/port, the user is only asked once. 4107- Jump to last instead of first item when pressing Shift-Tab the first time in the completion. 4108- Add a fullscreen keybinding. 4109- Add a `:search` command in addition to `/foo` so it's more visible and can be used from scripts. 4110- Various improvements to documentation, logging, and the crash reporter. 4111- Expand `~` to the users home directory with `:run-userscript`. 4112- Improve the userscript runner on Linux/macOS by using `QSocketNotifier`. 4113- Add luakit-like `gt`/`gT` keybindings to cycle through tabs. 4114- Show default value for config values in the completion. 4115- Clone tab icon, tab text and zoom level when cloning tabs. 4116- Don't open relative file paths with `:open`, only with commandline arguments. 4117- Expand environment variables in config settings which take a file path. 4118- Add a list of common user agents to the user agent setting completion. 4119- Move cursor to end of textboxes when hinting. 4120- Don't start searches on invalid URLs for quickmarks/startpage. 4121- Various performance improvements for the completion. 4122- Always open URLs given as argument in the foreground. 4123- Improve various error messages. 4124- Add `startpage`/`default-page` values to `tabs -> last-close`. 4125- Various improvements to `:restart` - it should be more robust now and uses sessions so all state (focused tab, scroll position, etc.) gets remembered. 4126- Add tab index display to the statusbar. 4127- Keep progress bar height fixed when the statusbar is multiline. 4128- Many improvements to tests and related infrastructure: 4129 * `init_venv.py` and `run_checks.py` have been replaced by https://tox.readthedocs.org/[tox]. Install tox and run `tox -e mkvenv` instead. 4130 * The tests now use https://pytest.org/[pytest] 4131 * Many new tests added 4132 * Mac Mini buildbot to run the tests on macOS. 4133 * Coverage recording via https://coverage.readthedocs.io/[coverage.py]. 4134 * New `--pdb-postmortem argument` to drop into the pdb debugger on exceptions. 4135 * Use https://github.com/ionelmc/python-hunter[hunter] for line tracing instead of a selfmade solution. 4136 4137Deprecated 4138~~~~~~~~~~ 4139 4140- The `:run-userscript` command - use `:spawn --userscript` instead. 4141- The `rapid` and `rapid-win` targets for `:hint` - use the `--rapid` argument to `:hint` instead. 4142- The `:cancel-download` command - use `:download-cancel` instead. 4143- The `:download-page` command - use `:download` instead. 4144 4145Removed 4146~~~~~~~ 4147 4148- `init_venv.py` and `run_checks.py` have been replaced by https://tox.readthedocs.org/[tox]. Install tox and run `tox -e mkvenv` instead.. 4149 4150Fixed 4151~~~~~ 4152 4153- Fix for cache never being used. 4154- Fixed handling of key release events (e.g. for javascript) when holding a key and pressing a second one. 4155- Fix handling of commands using `;;` at various places (key config, command parser, `:bind`) 4156- Fix splitting of flags with arguments (`:bind -m`/`--mode`). 4157- Fix bindings of special keys with lower-case modifiers (e.g. `<ctrl-x>`) 4158- Fix for weird search highlights when changing tabs while search is active. 4159- Fix starting with `-c ""`. 4160- Fix removing of partial downloads when a download is cancelled via context menu. 4161- Fix retrying of downloads which were started in a now closed tab. 4162- Highlight text case-insensitively in completion. 4163- Scroll completion to top when showing it. 4164- Handle unencodable file paths in config types correctly. 4165- Fix for crash when executing a delayed command (because of a shadowed keybinding) and then unfocusing the window. 4166- Fix for crash when hinting on a page which doesn't have a URL yet. 4167- Fix exception when using `:set-cmd-text` with an empty argument. 4168- Add a timeout to pastebin HTTP replies. 4169- Various other fixes for small/rare bugs. 4170 4171[[v0.1.4]] 4172v0.1.4 (2015-03-19) 4173------------------- 4174 4175Changed 4176~~~~~~~ 4177 4178* The Windows builds come with Qt 5.4.1 which has some https://lists.schokokeks.org/pipermail/qutebrowser/2015-March/000054.html[related bugfixes]. 4179* Improvements to CPU usage when idle. 4180* Ensure there's no size for `font-family` settings. 4181* Handle URLs with double-colon as search strings. 4182* Adjust prompt size hint based on content. 4183* Refactor websettings and save/restore defaults. 4184* Various small improvements to logging. 4185* Various improvements for hinting. 4186* Improve parsing of `faulthandler` logs. 4187 4188Removed 4189~~~~~~~ 4190 4191* Remove default search engines. 4192* Remove debug console completing completely. 4193 4194Fixed 4195~~~~~ 4196 4197* Ignore RuntimeError in `mouserelease_insertmode`. 4198* Hide Qt warning when aborting download reply. 4199* Hide "Error while shutting down tabs" message. 4200* Clear open target in `acceptNavigationRequest`. 4201* Fix handling of signals with deleted tabs. 4202* Restore `sys.std*` in `utils.fake_io` on exceptions. 4203* Allow font names with integers in them. 4204* Fix `QIODevice` warnings when closing tabs. 4205* Set the `QSettings` path to a config-subdirectory. 4206* Add workaround for adblock-message without window. 4207* Fix searching for terms starting with a slash. 4208* Ignore tab key presses if they'd switch focus. 4209 4210Security 4211~~~~~~~~ 4212 4213* Stop the icon database from being created when private-browsing is set to true. 4214* Disable insecure SSL ciphers. 4215 4216[[v0.1.3]] 4217v0.1.3 (2015-02-12) 4218------------------- 4219 4220Changed 4221~~~~~~~ 4222 4223* Various small logging improvements. 4224* Don't open relative files in `fuzzy_url` with `:open` 4225* Various crashdialog improvements. 4226* Hide adblocked iframes. 4227 4228Fixed 4229~~~~~ 4230 4231* Handle shutdown of page with prompt correctly. 4232* fuzzy_url: handle invalid URLs with autosearch off 4233* Handle explicit searches with `auto-search=false`. 4234* Abort download override question on error/cancel. 4235* Set a higher z-index for hint labels. 4236* Close contextmenu when closing tab to avoid crash. 4237* Fix statusbar quickly popping up as window. 4238* Clean up `NetworkManager` after downloads finished. 4239* Fix restoring of cmd widget after an error. 4240* Fix retrying of downloads after the tab is closed. 4241* Fix `check_libraries()` output for Arch Linux. 4242* Handle all `IPCErrors` properly. 4243* Handle another `webelem.IsNullError` with hints. 4244* Handle `UnicodeDecodeError` when reading configs. 4245 4246Security 4247~~~~~~~~ 4248 4249* Fix for HTTP passwords accidentally being written to debug log. 4250 4251[[v0.1.2]] 4252v0.1.2 (2015-01-09) 4253------------------- 4254 4255Changed 4256~~~~~~~ 4257 4258* Uncheck sending of debug log by default when private browsing is on. 4259* Add SSL info to version info. 4260 4261Removed 4262~~~~~~~ 4263 4264* Remove hosts-file.net from blocker default lists. 4265 4266Fixed 4267~~~~~ 4268 4269* Fix rare exception when a key is pressed shortly after opening a window 4270* Fix exception with certain invalid URLs like `http:foo:0` 4271* Work around Qt bug which renders checkboxes on macOS unusable 4272* Fix exception when a local files can't be read in `:adblock-update` 4273* Hide 2 more Qt warnings. 4274* Add `!important` to hint CSS so websites don't override the hint look 4275* Make `init_venv.py` work with multiple sip `.so` files. 4276* Fix splitting with certain commands with an empty argument 4277* Fix uppercase hints. 4278* Fix segfaults if another page is loaded while a prompt is open 4279* Fix exception with invalid `ShellCommand` config values. 4280* Replace unencodable chars 4281* Fix user-stylesheet setting with an empty value. 4282 4283 4284[[v0.1.1]] 4285v0.1.1 (2014-12-28) 4286------------------- 4287 4288Added 4289~~~~~ 4290 4291* Set window icon and add a qutebrowser.ico file for Windows. 4292* Ask the user when downloading to an already existing file. 4293* Add a `network -> proxy-dns-requests` option. 4294* Add "Remove finished" to the download context menu 4295* Open and remove clicked downloads. 4296 4297Changes 4298~~~~~~~ 4299 4300* Windows releases are now built with Qt 5.4 which brings many improvements and bugfixes. 4301* Add a troubleshooting section to the FAQ. 4302* Display IPC errors to the user. 4303* Rewrite keymode handling to use only one mode which also fixes various bugs. 4304* Save version to state config. 4305* Set zoom to default instead of 100% with `:zoom`/`=`. 4306* Adjust page zoom if default zoom changed. 4307* Force tabs to be focused on `:undo`. 4308* Replace manual installation instructions on macOS with homebrew/macports. 4309* Allow min-/maximizing of print preview on Windows. 4310* Various documentation improvements. 4311* Various other small improvements and cleanups. 4312 4313Removed 4314~~~~~~~ 4315 4316* Clean up and temporarily disable alias completion. 4317 4318Fixed 4319~~~~~ 4320 4321* Fix setting of `QWebSettings` (e.g. web fonts) with empty strings. 4322* Re-focus web view when leaving prompt/yesno mode. 4323* Handle `:restart` correctly with Python eggs. 4324* Handle an invalid cwd properly. 4325* Fix popping of a dead question in prompter. 4326* Fix `AttributeError` on config changes on Ubuntu. 4327* Don't treat things like "31c3" as IP address. 4328* Handle category being `None` in Qt message handler. 4329* Force-include pygments in `freeze.py`. 4330* Fix scroll percentage not updating on some pages like twitter. 4331* Encode `Content-Disposition` header name properly. 4332* Fix item sorting in `NeighborList`. 4333* Handle data being `None` in download read timer. 4334* Stop download read timer when reply has finished. 4335* Fix handling of small/big `fuzzyval`'s in `NeighborList`. 4336* Fix crashes when entering invalid values in `qute:settings`. 4337* Abort questions in `NetworkManager` when destroyed. 4338* Fix height calculation of download view. 4339* Always auto-remove adblock downloads when done. 4340* Ensure the docs get included in `freeze.py`. 4341* Fix crash with `:zoom`. 4342 4343[[v0.1]] 4344v0.1 (2014-12-14) 4345----------------- 4346 4347Initial release. 4348