------------------------------------------------------------------- Sun Dec 6 08:23:53 UTC 2020 - Mia Herkt - Update to version 1.14.1 Added With v1.14.0, qutebrowser configures the main window to be transparent, so that it's possible to configure a translucent tab- or statusbar. However, that change introduced various issues, such as performance degradation on some systems or breaking dmenu window embedding with its -w option. To avoid those issues for people who are not using transparency, the default behavior is reverted to versions before v1.14.0 in this release. A new window.transparent setting can be set to true to restore the behavior of v1.14.0. Fixed * Setting the content.headers.referer setting to same-domain (the default) was supposed to truncate referers to only the host with QtWebEngine. Unfortunately, this functionality broke in Qt 5.14. It works properly again. * with this release, including a test so this won't happen again. * With QtWebEngine 5.15, setting the content.headers.referer setting to never did still send referers. This is now fixed as well. * In v1.14.0, a regression was introduced, causing a crash when qutebrowser was closed after opening a download with PDF.js. This is now fixed. * With Qt 5.12, the Object.fromEntries JavaScript API is unavailable (it was introduced in Chromium 73, while Qt 5.12 is based on 69). This caused https://www.vr.fi/en and possibly other websites to break when accessed with Qt 5.12. A suitable polyfill is now included with qutebrowser if content.site_specific_quirks is enabled (which is the default). * While XDG startup notifications (e.g. launch feedback via the bouncy cursor in KDE Plasma) were supported ever since Qt 5.1, qutebrowser's desktop file accidentally declared that it wasn't supported. This is now fixed. * The dmenu_qutebrowser and qutedmenu userscripts now correctly read the qutebrowser sqlite history which has been in use since v1.0.0. * With Python 3.8+ and vertical tabs, a deprecation warning for an implicit int conversion was shown. This is now fixed. * Ever since Qt 5.11, fetching more completion data when that data is loaded lazily (such as with history) and the last visible item is selected was broken. The exact reason is currently unknown, but this release adds a tenative fix. * When PgUp/PgDown were used to go beyond the last visible item, the above issue caused a crash, which is now also fixed. * As a workaround for an overzealous Microsoft Defender false-positive detecting a "trojan" in the (unprocessed) adblock list, :adblock-update now doesn't cache the HTTP response anymore * With the QtWebKit backend and content.headers set to same-domain (the default), origins with the same domain but different schemes or ports were treated as the same domain. They now are correctly treated as different domains. * When a URL path uses percent escapes (such as https://example.com/embedded%2Fpath), using :navigate up would treat the %2F as a path separator and replace any remaining percent escapes by their unescaped equivalents. Those are now handled correctly. * The open_url_instance.sh userscript now complains when socat is not installed, rather than silencing the error. * The example AppArmor profile in misc/ was outdated and written for the older QtWebKit backend. It is now updated to serve as a useful starting point with QtWebEngine. * With Qt 5.15.2, lines/borders coming from the readability-js userscript were invisible. This is now fixed by changing the border color to grey (with all Qt versions). * Due to changes in the underlying Chromium, the colors.webpage.prefers_color_scheme_dark setting broke with Qt 5.15.2. It now works properly again. * A bug in the pkg_resources module used by qutebrowser caused deprecation warnings to appear on start with Python 3.9 on some setups. Those are now hidden. * Minor performance improvements. * Fix for various functionality breaking in private windows with v1.14.0, after the last private window is closed. This includes: + Ad blocking + Downloads + Site-specific quirks (e.g. for Google login) + Certain settings such as content.javascript.enabled ------------------------------------------------------------------- Sun Nov 15 17:22:38 UTC 2020 - Benjamin Greiner - Change sip requirement to the PyQt5.sip package instead of deprecated python-sip ------------------------------------------------------------------- Thu Oct 15 21:57:47 UTC 2020 - Mia Herkt - Update to version 1.14.0 This release still only contains partial session support for QtWebEngine 5.15. It's still recommended to run against Qt 5.15 due to the security patches contained in it -- for most users, the added workarounds seem to work out fine. A rewritten session support will be part of qutebrowser v2.0.0, tentatively planned for the end of the year or early 2021. Changed * The content.media_capture setting got split up into three more fine-grained settings, content.media.audio_capture, .video_capture and .audio_video_capture. Before this change, answering "always" to a prompt about e.g. audio capturing would set the content.media_capture setting, which would also allow the same website to capture video on a future visit. Now every prompt will set the appropriate setting, though existing content.media_capture settings in autoconfig.yml will be migrated to set all three settings. To review/change previously granted permissions, use :config-diff and e.g. :config-unset -u example.org content.media.video_capture. * The main window's (invisible) background color is now set to transparent. This allows using the alpha channel in statusbar/tabbar colors to get a partially transparent qutebrowser window on a setup which supports doing so. * If QtWebEngine is compiled with PipeWire support and libpipewire is installed, qutebrowser will now support screen sharing on Wayland. Note that QtWebEngine 5.15.1 is needed. * When :undo is used with a count, it now reopens the count-th to last tab instead of the last one. The depth can instead be passed as an argument, which is also completed. * The default completion.timestamp_format now also shows the time. * :back and :forward now take an optional index which is completed using the current tab's history. * The time a website in a tab was visited is now saved/restored in sessions. * When attempting to download a file to a location for which there's already a still-running download, a confirmation prompt is now displayed. * :completion-item-focus now understands next-page and prev-page with corresponding / default bindings. * When the last private window is closed, all private browsing data is now cleared. * When config.source(...) is used with a --config-py argument given, qutebrowser used to search relative files in the config basedir, leading to them not being found when using a shared config.py for different basedirs. Instead, they are now searched relative to the given config.py file. * navigate prev ([[) and navigate next (]]) now recognize links with nav-prev and nav-next classes, such as those used by the Hugo static site generator. * When tabs.favicons is disabled but tabs.tabs_are_windows is set, the window icon is still set to the page's favicon now. * Dark mode (colors.webpage.darkmode.*) is now supported with Qt 5.15.2 (which is not released yet). * The default for the darkmode policy.images setting is now set to smart which fixes issues with e.g. formulas on Wikipedia. * The readability-js userscript now adds some CSS to improve the reader mode styling in various scenarios: + Images are now shrinked to the page width, similarly to what Firefox' reader mode does. + Some images ore now displayed as block (rather than inline) which is what Firefox' reader mode does as well. + Blockquotes are now styled more distinctively, again based on the Firefox reader mode. + Code blocks are now easier to distinguish from text and tables have visible cell margins. * The readability-js userscript now supports hint userscript mode. Added * New argument strip for :navigate which removes queries and fragments from the current URL. * :undo now has a new -w / --window argument, which can be used to restore closed windows (rather than tabs). This is bound to U by default. * :jseval can now take javascript:... URLs via a new --url flag. * New replacement {aligned_index} for tabs.title.format and format_pinned which behaves like {index}, but space-pads the index based on the total numbers of tabs. This can be used to get aligned tab texts with vertical tabs. * New command :devtools-focus (bound to wIf) to toggle keyboard focus between the devtools and web page. * The --target argument to qutebrowser now understands a new private-window value, which can be used to open a private window in an existing instance from the commandline. * The :download-open command now has a new --dir flag, which can be used to open the directory containing the downloaded file. An entry to do the same was also added to the context menu. * Messages are now wrapped when they are too long to be displayed on a single line. * New possible --debug-flag values: + wait-renderer-process waits for a SIGUSR1 in the renderer process so a debugger can be attached. + avoid-chromium-init allows using --version without needing a working QtWebEngine/Chromium. Fixed * A URL pattern with a *. host was considered valid and matched all hosts. Due to keybindings like tsH toggling scripts for *://*.{url:host}/*, invoking them on pages without a host (e.g. about:blank) could result in accidentally allowing/blocking JavaScript for all pages. Such patterns are now considered invalid, with existing patterns being automatically removed from autoconfig.yml. * When scrolling.bar was set to overlay (the default), qutebrowser would internally override any enable-features=... flags passed via qt.args or --qt-flag. It now correctly combines existing enable-feature flags with internal ones. * Elements with an inherited contenteditable attribute now trigger insert mode and get hints assigned correctly. * When checkmarks, radio buttons and some other elements are styled via the Bootstrap CSS framework, they now get hints correctly. * When the session file isn't writable when qutebrowser exits, an error is now logged instead of crashing. * When using -m with the qute-lastpass userscript, it accidentally matched URLs containing the match as substring. This is now fixed. * When a filename is derived from a page's title, it's now shortened to the maximum filename length permitted by the filesystem. * :enter-mode register crashed since v1.13.0, it now displays an error instead. * With the QtWebKit backend, webpage resources loading certain invalid URLs could cause a crash, which is now fixed. * When :config-edit is used but no config.py exists yet, the file is now created (and watched for changes properly) before spawning the external editor. * When hint mode was entered from outside normal mode, the status bar was empty instead of displaying the proper text. This is now fixed. * When entering different modes too quickly (e.g. pressing fV), the statusbar could end up in a confusing state. This is now fixed. * When qutebrowser quits, running downloads are now cancelled properly. * The site-specific quirk for web.whatsapp.com has been updated to work after recent changes in WhatsApp. * Highlighting in the completion now works properly when UTF-16 surrogate pairs (such as emoji) are involved. * When a windowed inspector is clicked, insert mode now isn't entered anymore. * When :undo is used to re-open a tab, but tabs.tabs_are_windows was set between closing and undoing the close, qutebrowser crashed. This is now fixed. * With QtWebEngine 5.15.0, setting the darkmode image policy to smart leads to renderer process crashes. The offending setting value is now ignored with a warning. * Fixes for the qute-pass userscript: + With newer gopass versions, a deprecation notice was copied as password due to qute-pass using it in a deprecated way. + The --password-store argument didn't actually set + PASSWORD_STORE_DIR for pass, resulting in qute-pass finding matches but the underlying pass not finding matching passwords. ------------------------------------------------------------------- Fri Jul 17 19:42:28 UTC 2020 - Mia Herkt - Update to version 1.13.1 Fixed * With Qt 5.14, shared workers are now disabled. This works around a crash in QtWebEngine on certain sites (like the Epic Games Store or the Unreal Engine page). * When a window is closed, the tab it contains are now correctly shut down (closing e.g. any dialogs which are still open for those tabs). * The Qt 5.15 session workaround now loads the correct (rather than the last) page when :back was used before saving a session. * Certain autoconfig.yml with an invalid structure could lead to crashes, which are now fixed. * Ever since Qt 5.9, when input.mouse.rocker_gestures was enabled, the context menu still was shown when clicking the right mouse button, thus preventing the rocker gestures. This is now fixed. * Clicking the inspector switched from existing modes (such as passthrough) to normal mode since v1.13.0. Now insert mode is only entered when the inspector is clicked in normal mode. * Pulseaudio now shows qutebrowser's audio streams as qutebrowser correctly, rather than showing them as Chromium with some Qt versions. * If :help was called with a deprecated command (e.g. :help :inspector), the help page would show despite deprecated commands not being documented. This now shows an error instead. * The qute-lastpass userscript now filters out duplicate entries with --merge-candidates. ------------------------------------------------------------------- Mon Jul 6 23:40:08 UTC 2020 - Mia Herkt - Update to version 1.13.0 Deprecated * The :inspector command is deprecated and has been replaced by a new :devtools command (see below). Removed * The :debug-log-level command was removed as it's replaced by the new logging.level.console setting. * The qute://plainlog special page got replaced by qute://log?plain - the names of those pages is considered an implementation detail, and :messages --plain should be used instead. Changed * Changes to commands: + :config-write-py now adds a note about config.py files being targeted at advanced users. + :report now takes two optional arguments for bug/contact information, so that it can be used without the report window popping up. + :message now takes a --logfilter / -f argument, which is a list of logging categories to show. + :debug-log-filter now understands the full logfilter syntax. * Changes to settings: + fonts.tabs has been split into fonts.tabs.{selected,unselected} (see below). + statusbar.hide has been renamed to statusbar.show with the possible values being always (hide = False), never (hide = True) or in-mode (new, only show statusbar outside of normal mode). + The QtFont config type formerly used for fonts.tabs and fonts.debug_console is now removed and entirely replaced by Font. The former distinction was mainly an implementation detail, and the accepted values shouldn't have changed. + input.rocker_gestures has been renamed to input.mouse.rocker_gestures. + content.dns_prefetch is now enabled by default again, since the crashes it caused are now fixed (Qt 5.15) or worked around. + scrolling.bar supports a new overlay value to show an overlay scrollbar, which is now the default. On unsupported configurations (on Qt < 5.11, with QtWebKit or on macOS), the value falls back to when-searching or never (QtWebKit). + url.auto_search supports a new schemeless value which always opens a search unless the given URL includes an explicit scheme. * New handling of bindings in hint mode which fixes various bugs and allows for single-letter keybindings in hint mode. * The statusbar now shows partial keychains in all modes (e.g. while hinting). * New t[Cc][Hh] default bindings which work similarly to the t[Ss][Hh] bindings for JavaScript but toggle cookie permissions * The tor_identity userscript now takes the password via a -p flag and has a new -c flag to customize the Tor control port. * Small performance improvements. Added * New settings: + logging.level.ram and logging.level.console to configure the default logging levels via the config. + fonts.tabs.selected and fonts.tabs.unselected to set the font of the selected tab independently from unselected tabs (e.g. to make it bold). + input.mouse.back_forward_buttons which can be set to false to disable back/forward mouse buttons. * New :devtools command (replacing :inspector) with various improved functionality: + The devtools can now be docked to the main window, by running :devtools left (wIh), bottom (wIj), top (wIk) or right (wIl). To show them in a new window, use :devtools window (wIw). Using :devtools (wi) will open them at the last used position + The devtool window now has a "qutebrowser developer tools" window title. + When a resource is opened from the devtools, it now opens in a proper qutebrowser tab. + If opened as a window, the devtools are now closed properly when the associated tab is closed. + When the devtools are clicked, insert mode is entered automatically. Fixed * Crash when tabs.focus_stack_size is set to -1. * Crash when a pdf.js file for PDF.js exists, but viewer.html does not. * Crash when there's a feature permission request from Qt with an invalid URL (which happens due to a Qt bug with Qt 5.15 in private browsing mode). * Crash in rare cases where QtWebKit/QtWebEngine imports fail in unexpected ways. * Crash when something removed qutebrowser's IPC socket file and it's been running for 6 hours. * :config-write-py now works with paths starting with ~/... again * New site-specific quirk for a missing globalThis in Qt <= 5.12 on Reddit and Spotify. * When ; is added to hints.chars, using hint labels containing ;; now works properly. * Hint letters outside of ASCII should now work. * When bindings.key_mappings is used with hints, it now works properly with letters outside of ASCII as well. * With Qt 5.15, the audible/muted indicators are not updated properly due to a Qt bug. This release adds a workaround so that at least the muted indicator is shown properly. * As a workaround for crashes with QtWebEngine versions between 5.12 and 5.14 (inclusive), changing the user agent (content.headers.user_agent) exposed to JS now requires a restart. The corresponding HTTP header is not affected. ------------------------------------------------------------------- Tue Jun 2 13:01:22 UTC 2020 - Mia Herkt - Update to version 1.12.0 Removed * Support for using config.bind(key, None) in config.py to unbind a key was deprecated in v1.8.2 and is now removed. Use config.unbind(key) instead. * :yank markdown was deprecated in v1.7.0 and is now removed. Use :yank inline [{title}]({url}) instead. Added * New :debug-keytester command, which shows a "key tester" widget. Previously, that was only available as a separate application via python3 -m scripts.keytester. * New :config-diff command which opens the qute://configdiff page. * New --debug-flag log-cookies to log cookies to the debug log. * New colors.contextmenu.disabled.{fg,bg} settings to customize colors for disabled items in the context menu. * New line selection mode (:toggle-selection --line), bound to Shift-V in caret mode. * New colors.webpage.darkmode.* settings to control Chromium's dark mode. Note that those settings only work with QtWebEngine on Qt >= 5.14 and require a restart of qutebrowser. Changed * The content.cookies.accept setting now accepts URL patterns. * The :tab-focus command now has completion for tabs in the current window. * The bindings.key_mappings setting now maps to the tab key by default. * :tab-give --private now detaches a tab into a new private window. Fixed * Using :open -s now only rewrites http:// in URLs to https://, not other schemes like qute://. * When an unhandled exception happens in certain parts of the code (outside of the main thread), qutebrowser did crash or freeze when trying to show its exception handler. This is now fixed. * :inspector now works correctly when cookies are disabled globally. * When entering caret selection mode (v, v) very early before a page is loaded, an error is now shown instead of a crash happening. * The workaround for session loading with Qt 5.15 now handles sessions.lazy_restore so that the saved page is loaded instead of the "stub" page with no possibility to get to the web page. * A site specific quirk to allow typing accented characters on Google Docs was active for docs.google.com, but not drive.google.com. It is now applied for both subdomains. * With older graphics hardware (OpenGL < 4.3) with Qt 5.14 on Wayland, WebGL causes segfaults. Now qutebrowser detects that combination and suggests to disable WebGL or use XWayland. ------------------------------------------------------------------- Fri May 8 08:32:56 UTC 2020 - Mia Herkt - Update to version 1.11.1 * CVE-2020-11054: After a certificate error was overridden by the user, qutebrowser displays the URL as yellow (colors.statusbar.url.warn.fg). However, when the affected website was subsequently loaded again, the URL was mistakenly displayed as green (colors.statusbar.url.success_https). While the user already has seen a certificate error prompt at this point (or set content.ssl_strict to false which is not recommended), this could still provide a false sense of security. This is now fixed. ------------------------------------------------------------------- Wed May 6 05:00:29 UTC 2020 - Mia Herkt - Update to version 1.11.0 Added * New settings: + search.wrap which can be set to false to prevent wrapping around the page when searching. With QtWebEngine, Qt 5.14 or newer is required. + content.unknown_url_scheme_policy which allows controlling when an external application is opened for external links (never, from user interaction, always). + content.fullscreen.overlay_timeout to configure how long the fullscreen overlay should be displayed. If set to 0, no overlay is displayed. + hints.padding to add additional padding for hints. + hints.radius to set a border radius for hints (set to 3 by default). * New placeholders for url.searchengines values: + {unquoted} inserts the search term without any quoting. + {semiquoted} (same as {}) quotes most special characters, but slashes remain unquoted. + {quoted} (same as {} in earlier releases) also quotes slashes Changed * First adaptions to Qt 5.15, including a stop-gap measure for session loading not working properly with it. * Searching now wraps around the page by default with QtWebKit (where it didn't before). Set search.wrap to false to restore the old behavior. * The {} placeholder for search engines (the url.searchengines setting) now does not quote slashes anymore, but other characters typically encoded in URLs still get encoded. This matches the behavior of search engines in Chromium. To revert to the old behavior, use {quoted} instead. * The content.windowed_fullscreen setting got renamed to content.fullscreen.window. * Mouse-wheel scrolling is now prevented while hints are active. * Changes to userscripts: + qute-bitwarden now has an optional --totp flag which can be used to copy TOTP codes to clipboard (requires the pyperclip module). + readability-js now opens readability tabs next to the original tab (using the :open --related flag). + readability-js now displays a favicon for readability tabs. + password_fill now triggers a change JavaScript event after filling the data. * The dictcli.py script now shows better error messages. * Minor performance improvements. Deprecated * A warning about old Qt versions is now also shown with Qt 5.9 and 5.10, as support for Qt < 5.11 will be dropped in qutebrowser v2.0. Fixed * unsafeWindow is now defined for Greasemonkey scripts with QtWebKit. * The proxied window global is now shared between different Greasemonkey scripts (but still separate from the page's window), to match the original Greasemonkey implementation. * The --output-messages (-m) flag added in v1.9.0 now also works correctly when using :spawn --userscript. * :version and --version now don't crash if there's an (invalid) /etc/os-release file which has non-comment lines without a = character. * Scripts in scripts/ now report errors to stderr correctly, instead of using stdout. ------------------------------------------------------------------- Sun Apr 19 16:08:25 UTC 2020 - Mia Herkt - Update to version 1.10.2 Fixed * The WhatsApp workaround now also works when using WhatsApp in languages other than English. ------------------------------------------------------------------- Sun Feb 16 12:38:59 UTC 2020 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.10.1 Fixed * Crash when saving data fails during shutdown (which was a regression introduced in v1.9.0). * Error while reading config.py when fonts.tabs or fonts.debug_console is set to a value including default_size. * When a state file contains invalid UTF-8 data, a proper error is now displayed. Changed * When the Qt version changes (and also on the first start of v1.10.1 on Qt 5.14), service workers registered by websites are now deleted. This is done as a workaround for QtWebEngine issues causing crashes when visiting pages using service workers (such as Google Mail/Drive). No persistent data should be affected as websites can re-register their service workers, but a (single) backup is kept at webengine/Service Worker-bak in qutebrowser's data directory. * Better output on stdout when config errors occur. * The default for colors.statusbar.command.private.bg has been changed to a slightly different gray, as a workaround for a Qt issue where the cursor was invisible in that case. ------------------------------------------------------------------- Thu Feb 13 16:14:30 UTC 2020 - Tom Warnke - replace shebangs pointing to /usr/bin/bash with /bin/bash. This removes the requirement /usr/bin/bash from the RPM. Fixes boo#1163276. ------------------------------------------------------------------- Wed Feb 5 07:18:39 UTC 2020 - Martin Rey - Update to version 1.10.0 Added * New colors.webpage.prefers_color_scheme_dark setting which allows forcing prefers-color-scheme: dark colors for websites (QtWebEngine with Qt 5.14 or newer). * New fonts.default_size setting which can be used to set a bigger font size for all UI fonts. Changed * The fonts.monospace setting has been removed and replaced by fonts.default_family. The new default_family setting is improved in various ways: + It accepts a list of font families (or a single font family) rather than a comma-separated string. As an example, instead of fonts.monospace = "Courier, Monaco", use fonts.default_family = ["Courier", "Monaco"]. + Since a list is now accepted as value, no quoting of font names with spaces is required anymore. As an example, instead of fonts.monospace = '"xos4 Terminus"', use fonts.default_family = 'xos4 Terminus'. + It is now empty by default rather than having a long list of font names in the default config. When the value is empty, the system's default monospaced font is used. * If monospace is now used in a font value, it's used literally and not replaced anymore. Instead, default_family is replaced as explained above. * The default content.headers.accept_language value now adds a ;q=0.9 classifier which should make the value sent more in-line with what other browsers do. * The qute-pass userscript now has a new --mode gopass switch which uses gopass rather than pass. * The tox -e mkvenv (or mkvenv-pypi) way of installing qutebrowser is now replaced by a mkvenv.py script. See the updated link:install{outfilesuffix}#tox[install instructions] for details. Fixed * When quitting qutebrowser, components are now cleaned up differently. This should fix certain (rare) segmentation faults and exceptions when quitting, especially with the new exit scheme introduced in in PyQt5 5.13.1. * Added a workaround for per-domain settings (e.g. a JavaScript whitelist) not being applied in some scenarios with Qt 5.13 and above. * Added additional site-specific quirk for WhatsApp Web. * The qute-pass userscript now works correctly when a PASSWORD_STORE_DIR ending with a trailing slash is given. ------------------------------------------------------------------- Thu Jan 9 22:24:07 UTC 2020 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.9.0 Added * Initial support for Qt 5.14. * New content.site_specific_quirks setting which enables workarounds for websites with broken user agent parsing (enabled by default, see the "Fixed" section for fixed websites). * New qt.force_platformtheme setting to force Qt to use a given platform theme. * New tabs.tooltips setting which can be used to disable hover tooltips for tabs. * New settings to configure the appearance of context menus: + fonts.contextmenu + colors.contextmenu.menu.bg + colors.contextmenu.menu.fg + colors.contextmenu.selected.bg + colors.contextmenu.selected.fg Changed * The content.headers.user_agent setting now is a format string with the default value resembling the behavior of it being set to null before. This slightly changes the sent user agent for QtWebKit: Instead of mentioning qutebrowser and its version it now mentions the Qt version. * The qute-pass userscript now has a new --extra-url-suffixes (-s) argument which passes extra URL suffixes to the tldextract library. * A stack is now used for :tab-focus last rather than just saving one tab. Additionally, :tab-focus now understands stack-prev and stack-next arguments to traverse that stack. * :hint now has a new right-click target which allows right-clicking elements via hints. * The Terminus font has been removed from the default monospace fonts since it caused trouble with HighDPI setups. To get it back, add either "xos4 Terminus" or Terminus (depending on fontconfig version) to the beginning of the fonts.monospace setting. * As a workaround for a Qt bug causing a segfault, desktop sharing is now automatically rejected on Qt versions before 5.13.2. Note that screen sharing still won't work on Linux before Qt 5.14. * Comment lines in quickmarks/bookmarks files are now ignored. However, note that qutebrowser will overwrite those files if bookmark/quickmark commands are used. * Reopening PDF.js pages from e.g. a session file will now re-download and display those PDFs. * Improved behavior when using :open-download in a sandboxed environment (KDE Flatpak). * qutebrowser now enables the new PyQt exit scheme, which should result in things being cleaned up more properly (e.g. cookies being saved even without a timeout) on PyQt 5.13.1 and newer. * The :spawn command has a new -m / --output-messages argument which shows qutebrowser messages based on a command's standard output/error. * Improved insert mode detection for some CodeMirror usages (e.g. in JupyterLab and Jupyter Notebook). * If JavaScript is disabled globally, file://* now doesn't automatically have it enabled anymore. Run :set -u file://* content.javascript.enabled true to restore the previous behavior. * Settings with URL patterns can now be used to affect the behavior of the QtWebEngine inspector. Note that the underlying URL is chrome-devtools://* from Qt 5.11 to Qt 5.13, but devtools://* with Qt 5.14. * Improvements when tabs.tabs_are_windows is set: + Using :tab-take and :tab-give now shows an error, as the effect of doing so would be equal to :tab-clone. + The :buffer completion doesn't show any window sections anymore, only a flat list of tabs. * Improved parsing in some corner cases for the QtFont type (used for fonts.tabs and fonts.debug_console). * Performance improvements for the following areas: + Adding settings with URL patterns + Matching of settings using URL patterns Fixed * Downloads (e.g. via :download) now see the same user agent header as webpages, which fixes cases where overly restrictive servers/WAFs closed the connection before. * The logic for :restart has been revisited, which should fix issues with relative basedirs. * Remaining issues related to Python 3.8 are now fixed (mostly warnings, especially on QtWebKit). * Workaround for a Qt bug where a page never finishes loading with a non-overridable TLS error (e.g. due to HSTS). * The qute://configdiff page now doesn't show built-in settings (e.g. javascript being enabled for qute:// and chrome:// pages) anymore. * The qute-lastpass userscript now stops prompting for passwords when cancelling the password input. * The tab hover text now shows ampersands (&) correctly. * With QtWebEngine and Qt >= 5.11, the inspector now shows its icons correctly even if loading of images is disabled via the content.images setting. * Entering a very long string (over 50k characters) in the completion used to crash, now it shows an error message instead * Various improvements for URL/searchengine detection: + Strings with a dot but with characters not allowed in a URL (e.g. an underscore) are now not treated as URL anymore. + Strings like "5/8" are now not treated as IP anymore. + URLs with an explicit scheme and a space (%20) are correctly treated as URLs. + Mail addresses are now treated as search terms. + With url.open_base_url set, searching for a search engine name now works. + url.open_base_url = True together with url.auto_search = 'never' is now handled correctly. + Fixed crash when a search engine URL turns out to be invalid. * New "site specific quirks", which work around some broken websites: + WhatsApp Web + Google Accounts + Slack (with older QtWebEngine versions) + Dell.com support pages (with Qt 5.7) + Google Docs (fixes broken IME/compose key) ------------------------------------------------------------------- Thu Dec 5 23:17:55 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.8.3 Fixed * Segmentation fault introduced in v1.8.2 when a tab gets closed immediately after it has finished loading (e.g. with certain login flows). ------------------------------------------------------------------- Tue Nov 26 04:39:55 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.8.2 Fixed * Unbinding keys via config.bind(key, None) accidentally worked in v1.7.0 but raises an exception in v1.8.0. It now works again, but is deprecated and shows an error. Note that :config-py-write did write such invalid lines before v1.8.0, so existing config files might need adjustments. * The readability-js userscript now handles encodings correctly (which it didn't before for some websites). * can now be used to paste text starting with a hyphen. * Following hints via the number keypad now works properly again. * Errors while reading the state file are now displayed instead of causing a crash. * Crash when using :debug-log-level without a console attached. * Downloads are now hidden properly when the browser is in fullscreen mode. * Crash when setting colors.webpage.bg to an empty value with QtWebKit. * Crash when the history database file is not a proper sqlite database. ------------------------------------------------------------------- Thu Oct 17 22:57:12 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.8.1 Added * New userscripts: + readability-js which uses Mozilla's node.js readability library. + qute-bitwarden which integrates the Bitwarden CLI. Changed * The statusbar text for passthrough mode now shows all configured bindings to leave the mode, not only one. * When :config-source is used with a relative filename, the file is now searched in the config directory instead of the current working directory. * HTML5 inputs with date/time types now enter insert mode when selected. * dictcli.py now shows where dictionaries are installed to and complains when running it as root if doing so would result in a wrong installation path. * Changes to userscripts: + qute-pass: Don't run pass if only a username is requested. + qute-pass: Support private domains like myrouter.local. + readability: Improved CSS styling. * Performance improvements in various areas: + Loading config files + Typing without any completion matches + General keyboard handling + Scrolling * :version now shows details about the loaded autoconfig.yml/config.py. * Hosts are now additionally looked up including their ports in netrc files. * With Qt 5.10 or newer, qutebrowser now doesn't force software rendering with Nouveau drivers anymore. However, QtWebEngine/Chromium still do so. * The XSS Auditor is now disabled by default (content.xss_auditing = false). This reflects a similar change in Chromium, see their XSS Auditor Design Document for details. Fixed * :config-write-py now correctly writes config.unbind(...) lines (instead of config.bind(..., None)) when unbinding a default keybinding. * Prevent repeat keyup events for JavaScript when a key is held down. * ~/.config/qutebrowser/blocked-hosts can now also contain /etc/hosts-like lines, not just simple hostnames. * Restored compatibility with Jinja2 2.8 * Fixed implicit type conversion warning with Python 3.8. * The desktop file now sets StartupWMClass correctly, so the qutebrowser icon is no longer shown twice in the Gnome dock when pinned. * Bindings involving keys which need the AltGr key now work properly. * Fixed crash (caused by a Qt bug) when typing characters above the Unicode BMP (such as certain emoji or CJK characters). * dictcli.py now works properly again. * Shift can now be used while typing hint keystrings, which e.g. allows typing number hints on French keyboards. * With rapid hinting in number mode, backspace now edits the filter text after following a hint. * A certain type of error ("locking protocol") while initializing sqlite now isn't handled as crash anymore. * Crash when showing a permission request in certain scenarios. Removed * At least Python 3.5.2 is now required to run qutebrowser, support for 3.5.0 and 3.5.1 was dropped. ------------------------------------------------------------------- Thu Jul 18 15:27:22 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.7.0 Added * New settings: + colors.tabs.pinned.* to control colors of pinned tabs. + hints.leave_on_load which allows disabling leaving of hint mode when a new page is loaded. + colors.completion.item.selected.match.fg which allows configuring the text color for the matching text in the currently selected completion item. + tabs.undo_stack_size to limit how many undo entries are kept for closed tabs. * New commands: + :reverse-selection (o in caret mode) to swap the stationary/moving ends of a selection. * New commandline replacements: + {url:domain}, {url:auth}, {url:scheme}, {url:username}, {url:password}, {url:host}, {url:port}, {url:path}, {url:query} for the respective parts of the current URL. + {title} for the current page title. * The {title} field in tabs.title.format, tabs.title.format_pinned and window.title_format got renamed to {current_title} (mirroring {current_url}) in order to not conflict with the new {title} commandline replacement. * New delete target for :hint which removes the hinted element from the DOM. * New --config-py commandline argument to use a custom config.py file. * Qt 5.13: Support for notifications (shown via system tray). Changed * The desktop file qutebrowser.desktop is now renamed to org.qutebrowser.qutebrowser.desktop. * Pinned tabs now always show a favicon (even if the site doesn't provide one) when shrinking. * Setting downloads.location.directory now changes the directory displayed in the download prompt even if downloads.location.remember is set. * The yank command gained a new inline argument, which allows to e.g. use :yank inline [{title}]({url}). * Duplicate consecutive history entries with the same URL are now ignored. * More detailed error messages when spawning a process failed. * The content.pdfjs setting now supports domain patterns. * Improved process status output with :spawn -o. * The colors.tabs.bar.bg setting is now of type QssColor and thus supports gradients. * The :fullscreen command now understands a new --enter flag which causes it to always enter fullscreen instead of toggling the current state. * --debug-flag stack is now needed to show stack traces on renderer process crashes. * --debug-flag chromium can be used to easily turn on verbose Chromium logging. * Permission prompts can now be answered with Y (:prompt-accept --save yes) and N (:prompt-accept --save no) to save the answer as a per-domain setting. * content.dns_prefetch is now turned off by default, as it causes crashes inside QtWebEngine. * The (still unofficial) interceptor plugin API now contains resource_type for a request and allows redirecting requests. * :bookmark-remove now shows a message for consistency with :bookmark-add. * Very early segfaults are now also caught by the crash handler. * The appdata XML now contains proper release information and an (empty) OARS content rating. * Improved Linux distribution detection. * Qt 5.13: Request filtering now happens in the UI rather than IO thread. * Qt 5.13: Support for PDFium (Chromium's PDF viewer) is disabled for now so that PDFs can still be downloaded (or shown with PDF.js) properly. * Various performance improvements (e.g. for showing hints or the :open completion). Deprecated * :yank markdown got deprecated, as :yank inline [{title}]({url}) can now be used instead. Fixed * Various QtWebEngine load signals are now handled differently, which should fix issues with insert mode being left while typing on sites like Google Translate. * Race condition causing a colored statusbar in normal mode when entering/exiting caret mode quickly. * Using 100% for a hue in a hsv(...) config value now corresponds to 359 (rather than 255), matching the fixed behavior in Qt 5.13. * Chaining commands with ;; used to abort with some failing commands. It now runs the second command no matter whether the first one succeeded or not. * Handling of profiles and private windows (and resulting crashes with Qt 5.12.2). * Fixes for corner-cases when using :navigate increment/decrement * The type for the colors.hints.match.fg setting was changed to QtColor. * Gradients were never supported for this setting, and with this change, values like rgb(0, 0, 0) now work as well. * Permission prompts now show a properly normalized URL with QtWebKit. * Crash on start when PyQt was built without SSL support with Qt >= 5.12. * Minor memory leaks. ------------------------------------------------------------------- Tue Jun 18 12:13:45 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.6.3 Fixed * Crash when hinting and changing/closing the tab before hints are displayed. * Crash on redirects with Qt 5.13. * Hide bogus AA_ShareOpenGLContexts warning with Qt 5.12.4. * Workaround for renderer process crashes with Qt 5.12.4. If you're unable to update, you can remove ~/.cache/qutebrowser for the same result. ------------------------------------------------------------------- Mon May 6 21:15:52 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.6.2 Fixed * Crash when SQL errors occur while using the completion. * Crash when cancelling a download prompt started in an already closed window. * Crash when many prompts are opened at the same time. * Running without Qt installed now displays a proper error again. * High CPU usage when using the keyhint widget with a low delay. ------------------------------------------------------------------- Mon Apr 1 19:40:27 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Force sqlite backend to be installed, otherwise qtbrowser segfaults bsc#1126269 ------------------------------------------------------------------- Wed Mar 20 06:05:39 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.6.1 Fixed * Crash when using :config-{dict,list}-{add,remove} with an invalid setting. * Functionality like hinting on pages with an element with ID _qutebrowser (such as qutebrowser.org) on Qt 5.12. * The .desktop file in v1.6.0 was missing the "Actions" key. * The SVG icon now has a size of 256x256px set to comply with freedesktop standards. * Setting colors.statusbar.*.bg to a gradient now has the expected effect of the gradient spanning the entire statusbar. ------------------------------------------------------------------- Tue Feb 26 01:48:56 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.6.0 Added * New settings: + tabs.new_position.stacking which controls whether new tabs opened from a page should stack on each other or not. + completion.open_categories which allows to configure which categories are shown in the :open completion, and how they are ordered. + tabs.pinned.frozen to allow/deny navigating in pinned tabs. + hints.selectors which allows to configure what CSS selectors are used for hints, and also allows adding custom hint groups + input.insert_mode.leave_on_load to turn off leaving insert mode when a new page is loaded. * New config manipulation commands: + :config-dict-add and :config-list-add to a new element to a dict/list setting. + :config-dict-remove and :config-list-remove to remove an element from a dict/list setting. + New :yank markdown feature which yanks the current URL and title in markdown format. + Support for new QtWebEngine features in Qt 5.12: ~ Basic support for client certificates. Selecting the certificate to use when there are multiple matching certificates isn't implemented yet. ~ Support for DNS prefetching (plus new content.dns_prefetch setting). Changed * :q now closes the current window instead of quitting qutebrowser completely (:close), while :qa quits (:quit). The behavior of :wq remains unchanged (:quit --save), as closing a window while saving the session doesn't make sense. * Completion highlighting is now done differently (using QSyntaxHighlighter), which should fix some highlighting corner-cases. * The QtColor config type now also understands colors like rgb(...). * :yank now has a --quiet option which causes it to not display a message. * The :open completion now also shows search engines by default. * The content.host_blocking.enabled setting now supports URL patterns, so the adblocker can be disabled on a given page. * Elements with a tabindex attribute now also get hints by default. * Various small performance improvements for hints and the completion. * The Wayland check for QtWebEngine is now disabled on Qt >= 5.11.2, as those versions should work without any issues. * The JavaScript console object is now available in PAC files. * PAC proxies currently don't work properly on QtWebEngine (and never did), so an error is now shown when trying to configure a PAC proxy. * The metainfo file qutebrowser.appdata.xml is now renamed to org.qutebrowser.qutebrowser.appdata.xml. * The qute-pass userscript now understands domains in gpg filenames in addition to directory names. * The autocompletion for content.headers.user_agent got updated to only include the default and Chrome, as setting the UA to Firefox has various bad side-effects. * Combining Qt 5.12 with an older PyQt can lead to issues, so a warning is now shown when starting qutebrowser with that combination. Fixed * Invalid world IDs now get rejected for :jseval and GreaseMonkey scripts. * When websites suggest download filenames with invalid characters, those are now correctly replaced. * Invalid hint length calculation in certain rare cases. * Dragging tabs in the tab bar (which was broken in v1.5.0) * Using Shift-Home in command mode now works properly. * Workaround for a Qt bug which prevented content.cookies.accept = no-3rdparty from working properly on some pages like GMail. However, the default for content.cookies.accept is still all to be in line with what other browsers do. * :navigate not incrementing in anchors or queries. * Crash when trying to use a proxy requiring authentication with QtWebKit. * Slashes in search terms are now percent-escaped. * When scrolling.bar = True was set in versions before v1.5.0, this now correctly gets migrated to always instead of when-searching. * Completion highlighting now works again on Qt 5.11.3 and 5.12.1 * The non-standard header X-Do-Not-Track is no longer sent. * PAC proxies were never correctly supported with QtWebEngine, but are now explicitly disallowed. * Issues with fullscreen handling when exiting a video player. * Various fixes for Qt 5.12 issues: + A javascript error on page load was fixed. + window.print() works with Qt 5.12 now. + Fixed handling of duplicate download filenames. + Fixed broken qute://history page. + Fixed PDF.js not working properly. + The download button in PDF.js now works (it's not possible to make it work with earlier Qt versions). + Since Greasemonkey scripts modifying the DOM fail when being run at document-start, some known-broken scripts (Iridium, userstyles.org) are now forced to run at document-end. ------------------------------------------------------------------- Sat Feb 23 19:28:37 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Require python3-qtwebengine-qt5 on TW (package split since PyQt5 5.12) ------------------------------------------------------------------- Mon Oct 29 22:23:40 UTC 2018 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.5.2: * The content.cookies.accept setting is now set to all instead of no-3rdparty by default, as no-3rdparty breaks various pages such as GMail. ------------------------------------------------------------------- Wed Oct 10 17:50:18 UTC 2018 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.5.1: Fixed: * Flickering when opening/closing tabs (as soon as more than 10 are open) on some pages. * Improved logging for PDF.js resources which fail to load. * Crash when closing a tab after doing a search. * Tabs appearing when hidden after e.g. closing tabs. ------------------------------------------------------------------- Wed Oct 3 18:23:48 UTC 2018 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.5.0: Added: * Rewritten PDF.js support: + PDF.js support and the content.pdfjs setting are now available with QtWebEngine. + Opening a PDF file now doesn't start a second request anymore. + Opening PDFs on https:// sites now works properly. + New --pdfjs flag for prompt-open-download, so PDFs can be opened in PDF.js with in the download prompt. * New settings: + content.mouse_lock to handle HTML5 pointer locking. + completion.web_history.exclude which hides a list of URL patterns from the completion. + qt.process_model which can be used to change Chromium's process model. + qt.low_end_device_mode which turns on Chromium's low-end device mode. This mode uses less RAM, but the expense of performance. + content.webrtc_ip_handling_policy, which allows more fine-grained/restrictive control about which IPs are exposed via WebRTC. + tabs.max_width which allows to have a more "normal" look for tabs. + content.mute which allows to mute pages (or all tabs) by default. * Running qutebrowser with QtWebKit or Qt < 5.9 now shows a warning (only once), as support for those is going to be removed in a future release. * New t[iI][hHu] default bindings (similar to tsh etc.) to toggle images. * The qute-pass userscript now has optional OTP support. * When :spawn --userscript is called with a count, that count is now passed to userscripts as $QUTE_COUNT. Changed: * Various performance improvements when many tabs are opened. * The content.headers.referer setting now works on QtWebEngine. * The :repeat command now takes a count which is multiplied with the given "times" argument. * The default keybinding to leave passthrough mode was changed from to , which makes pasting from the clipboard easier in passthrough mode and is also unlikely to conflict with webpage bindings. * The app_id is now set to qutebrowser for Wayland. * Using :set option now shows the value of the setting (like :set option? already did). * The completion.web_history_max_items setting got renamed to completion.web_history.max_items. * Regenerating completion history now shows a progress dialog. * The content.autoplay setting now supports URL patterns on Qt >= 5.11. * The content.host_blocking.whitelist setting now takes a list of URL patterns instead of globs. * In passthrough mode, Ctrl + Mousewheel now also gets passed through to the page instead of zooming. * Editing text in an external editor now simulates a JS "input" event, which improves compatibility with websites reacting via JS to input. * The qute://settings page is now properly sorted on Python 3.5 * :zoom, :zoom-in and :zoom-out now have a --quiet switch which causes them to not display a message. * The scrolling.bar setting now takes three values instead of being a boolean: always, never, and when-searching (which only displays it while a search is active). * '@@' now repeats the last run macro. * The content.host_blocking.lists setting now accepts a file:// URL to a directory, and reads all files in that directory. * The :tab-give and :tab-take command now have a new flag --keep which causes them to keep the old tab around. * :navigate now clears the URL query. Fixed: * qute:// pages now work properly on Qt 5.11.2 * Error when passing a substring with spaces to :tab-take. * Greasemonkey scripts which start with an UTF-8 BOM are now handled correctly. * When no documentation has been generated, the plaintext documentation now can be shown for more files such as qute://help/userscripts.html. * Crash when doing initial run on Wayland without XWayland. * Crash when trying to load an empty session file. * :hint with an invalid --mode= value now shows a proper error. * Rare crash on Qt 5.11.2 when clicking on