From 28410b85339acd2708b864568981c83b4511da4d Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 4 Jul 2017 18:01:47 +0200 Subject: Release v0.11.0 --- CHANGELOG.asciidoc | 82 +++---- CONTRIBUTING.asciidoc | 3 +- qutebrowser/__init__.py | 2 +- .../config/old_configs/qutebrowser-v0.11.0.conf | 251 +++++++++++++++++++++ tests/unit/config/test_config.py | 2 +- 5 files changed, 296 insertions(+), 44 deletions(-) create mode 100644 tests/unit/config/old_configs/qutebrowser-v0.11.0.conf diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index ea7481030..14fd41b88 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -14,8 +14,8 @@ This project adheres to http://semver.org/[Semantic Versioning]. // `Fixed` for any bug fixes. // `Security` to invite users to upgrade in case of vulnerabilities. -v0.11.0 (unreleased) --------------------- +v0.11.0 +------- New dependencies ~~~~~~~~~~~~~~~~ @@ -28,7 +28,10 @@ New dependencies Added ~~~~~ -- New `-p` flag for `:open` to open a private window. +- Private browsing is now implemented for QtWebEngine, *and changed its + behavior*: The `general -> private-browsing` setting now only applies to newly + opened windows, and you can use the `-p` flag to `:open` to open a private + window. - New "pinned tabs" feature, with a new `:tab-pin` command (bound to `` by default). - (QtWebEngine) Implemented `:follow-selected`. @@ -45,7 +48,8 @@ Added customize statusbar colors for private windows. - New `{private}` field displaying `[Private Mode]` for `ui -> window-title-format` and `tabs -> title-format`. -- (QtWebEngine) Proxy support with Qt 5.7.1 too +- (QtWebEngine) Proxy support with Qt 5.7.1 (already was supported for 5.8 and + newer) Changed ~~~~~~~ @@ -53,62 +57,51 @@ Changed - To prevent elaborate phishing attacks, the Punycode version (`xn--*`) is now shown in addition to the decoded version for international domain names (IDN). -- Private browsing is now implemented for QtWebEngine, and changed it's - behavior: The `general -> private-browsing` setting now only applies to newly - opened windows, and you can use the `-p` flag to `:open` to open a private - window. +- Starting with legacy QtWebKit now shows a warning message. + *With the next release, support for it will be removed.* +- The Windows releases are redone from scratch, which means: + - They now use the new QtWebEngine backend + - The bundled Qt is updated from 5.5 to 5.9 + - The bundled Python is updated from 3.4 to 3.6 + - They are now generated with PyInstaller instead of cx_Freeze + - The installer is now generated using NSIS instead of being a MSI - Improved `qute://history` page (with lazy loading) -- Starting with legacy QtWebKit now shows a warning message once. - Crash reports are not public anymore. - Paths like `C:` are now treated as absolute paths on Windows for downloads, and invalid paths are handled properly. -- PAC on QtWebKit now supports SOCKS5 as type. -- Comments in the config file are now before the individual options instead of - being before sections. +- Comments in the config file are now placed before the individual options + instead of being before sections. - Messages are now hidden when clicked. - stdin is now closed immediately for processes spawned from qutebrowser. - When `ui -> message-timeout` is set to 0, messages are now never cleared. - Middle/right-clicking the blank parts of the tab bar (when vertical) now closes the current tab. -- (QtWebEngine) With Qt 5.9, `content -> cookies-store` can now be set without - a restart. -- (QtWebEngine) With Qt 5.9, better error messages are now shown for failed - downloads. - The adblocker now also blocks non-GET requests (e.g. POST). - `javascript:` links can now be hinted. - `:view-source`, `:tab-clone` and `:navigate --tab` now don't open the tab as "explicit" anymore, i.e. (with the default settings) open it next to the active tab. -- (QtWebEngine) The underlying Chromium version is now shown in the version - info. - `qute:*` pages now use `qute://*` instead (e.g. `qute://version` instead of `qute:version`), but the old versions are automatically redirected. -- The Windows releases are redone from scratch, which means: - - They now use the new QtWebEngine backend - - The bundled Qt is updated from 5.5 to 5.9 - - The bundled Python is updated from 3.4 to 3.6 - - They are now generated with PyInstaller instead of cx_Freeze - - The installer is now generated using NSIS instead of being a MSI - Texts in prompts are now selectable. -- Renderer process crashes now show an error page. -- (QtWebKit) storage -> offline-web-application-storage` got renamed to `...-cache` - The default level for `:messages` is now `info`, not `error` - Trying to focus the currently focused tab with `:tab-focus` now focuses the last viewed tab. +- (QtWebEngine) With Qt 5.9, `content -> cookies-store` can now be set without + a restart. +- (QtWebEngine) With Qt 5.9, better error messages are now shown for failed + downloads. +- (QtWebEngine) The underlying Chromium version is now shown in the version + info. +- (QtWebKit) Renderer process crashes now show an error page on Qt 5.9 or newer. +- (QtWebKit) storage -> offline-web-application-storage` got renamed to `...-cache` +- (QtWebKit) PAC now supports SOCKS5 as type. Fixed ~~~~~ - The macOS .dmg is now built against Qt 5.9 which fixes various important issues (such as not being able to type dead keys). -- (QtWebEngine) Added a workaround for a black screen with some setups - (the workaround requires PyOpenGL to be installed, but it's optional) -- (QtWebEngine) Starting with Nouveau graphics now shows an error message - instead of crashing in Qt. This adds a new dependency on `PyQt5.QtOpenGL`. -- (QtWebEngine) Retrying downloads now shows an error instead of crashing. -- (QtWebEngine) Cloning a view-source tab now doesn't crash anymore. -- (QtWebKit) The HTTP cache is disabled on Qt 5.7.1 and 5.8 now as it leads to - frequent crashes due to a Qt bug. - Fixed crash with `:download` on PyQt 5.9. - Cloning a page without history doesn't crash anymore. - When a download results in a HTTP error, it now shows the error correctly @@ -118,7 +111,6 @@ Fixed - Fixed crash when unbinding an unbound key in the key config. - Fixed crash when using `:debug-log-filter` when `--filter` wasn't given on startup. - Fixed crash with some invalid setting values. -- (QtWebKit) Fixed Crash when a PAC file returns an invalid value. - Continuing a search after clearing it now works correctly. - The tabbar and completion should now be more consistently and correctly styled with various system styles. @@ -126,19 +118,27 @@ Fixed - The validation for colors in stylesheets is now less strict, allowing for all valid Qt values. - `data:` URLs now aren't added to the history anymore. -- (QtWebEngine) `window.navigator.userAgent` is now set correctly when - customizing the user agent. - Accidentally starting with Python 2 now shows a proper error message again. -- (QtWebEngine) HTML fullscreen is now tracked for each tab separately, which - means it's not possible anymore to accidentally get stuck in fullscreen state - by closing a tab with a fullscreen video. - For some people, running some userscripts crashed - this should now be fixed. - Various other rare crashes should now be fixed. - The settings documentation was truncated with v0.10.1 which should now be fixed. - Scrolling to an anchor in a background tab now works correctly, and javascript gets the correct window size for background tabs. -- (QtWebEngine) `:scroll-page` with `--bottom-navigate` now works correctly +- (QtWebEngine) Added a workaround for a black screen with some setups +- (QtWebEngine) Starting with Nouveau graphics now shows an error message + instead of crashing in Qt. +- (QtWebEngine) Retrying downloads now shows an error instead of crashing. +- (QtWebEngine) Cloning a view-source tab now doesn't crash anymore. +- (QtWebEngine) `window.navigator.userAgent` is now set correctly when + customizing the user agent. +- (QtWebEngine) HTML fullscreen is now tracked for each tab separately, which + means it's not possible anymore to accidentally get stuck in fullscreen state + by closing a tab with a fullscreen video. +- (QtWebEngine) `:scroll-page` with `--bottom-navigate` now works correctly. +- (QtWebKit) The HTTP cache is disabled on Qt 5.7.1 and 5.8 now as it leads to + frequent crashes due to a Qt bug. +- (QtWebKit) Fixed Crash when a PAC file returns an invalid value. v0.10.1 ------- diff --git a/CONTRIBUTING.asciidoc b/CONTRIBUTING.asciidoc index d5c77f521..5a7eafd77 100644 --- a/CONTRIBUTING.asciidoc +++ b/CONTRIBUTING.asciidoc @@ -682,8 +682,9 @@ qutebrowser release * Add newest config to `tests/unit/config/old_configs` and update `test_upgrade_version` - `python -m qutebrowser --basedir conf :quit` - - `sed '/^#/d' conf/config/qutebrowser.conf > tests/unit/config/old_configs/qutebrowser-v0.x.y.conf` + - `sed '/^#/d' conf/config/qutebrowser.conf > tests/unit/config/old_configs/qutebrowser-v0.$x.$y.conf` - `rm -r conf` + - git add - commit * Adjust `__version_info__` in `qutebrowser/__init__.py`. * Update changelog (remove *(unreleased)*) diff --git a/qutebrowser/__init__.py b/qutebrowser/__init__.py index e61419c0c..cca2bf1b8 100644 --- a/qutebrowser/__init__.py +++ b/qutebrowser/__init__.py @@ -26,7 +26,7 @@ __copyright__ = "Copyright 2014-2017 Florian Bruhin (The Compiler)" __license__ = "GPL" __maintainer__ = __author__ __email__ = "mail@qutebrowser.org" -__version_info__ = (0, 10, 1) +__version_info__ = (0, 11, 0) __version__ = '.'.join(str(e) for e in __version_info__) __description__ = "A keyboard-driven, vim-like browser based on PyQt5." diff --git a/tests/unit/config/old_configs/qutebrowser-v0.11.0.conf b/tests/unit/config/old_configs/qutebrowser-v0.11.0.conf new file mode 100644 index 000000000..ba48a6ff5 --- /dev/null +++ b/tests/unit/config/old_configs/qutebrowser-v0.11.0.conf @@ -0,0 +1,251 @@ +[general] +ignore-case = smart +startpage = https://start.duckduckgo.com +yank-ignored-url-parameters = ref,utm_source,utm_medium,utm_campaign,utm_term,utm_content +default-open-dispatcher = +default-page = ${startpage} +auto-search = naive +auto-save-config = true +auto-save-interval = 15000 +editor = gvim -f "{}" +editor-encoding = utf-8 +private-browsing = false +developer-extras = false +print-element-backgrounds = true +xss-auditing = false +default-encoding = iso-8859-1 +new-instance-open-target = tab +new-instance-open-target.window = last-focused +log-javascript-console = debug +save-session = false +session-default-name = +url-incdec-segments = path,query +[ui] +history-session-interval = 30 +zoom-levels = 25%,33%,50%,67%,75%,90%,100%,110%,125%,150%,175%,200%,250%,300%,400%,500% +default-zoom = 100% +downloads-position = top +status-position = bottom +message-timeout = 2000 +message-unfocused = false +confirm-quit = never +zoom-text-only = false +frame-flattening = false +user-stylesheet = +hide-scrollbar = true +smooth-scrolling = false +remove-finished-downloads = -1 +hide-statusbar = false +statusbar-padding = 1,1,0,0 +window-title-format = {perc}{title}{title_sep}qutebrowser +modal-js-dialog = false +hide-wayland-decoration = false +keyhint-blacklist = +keyhint-delay = 500 +prompt-radius = 8 +prompt-filebrowser = true +[network] +do-not-track = true +accept-language = en-US,en +referer-header = same-domain +user-agent = +proxy = system +proxy-dns-requests = true +ssl-strict = ask +dns-prefetch = true +custom-headers = +netrc-file = +[completion] +show = always +download-path-suggestion = path +timestamp-format = %Y-%m-%d +height = 50% +cmd-history-max-items = 100 +web-history-max-items = 1000 +quick-complete = true +shrink = false +scrollbar-width = 12 +scrollbar-padding = 2 +[input] +timeout = 500 +partial-timeout = 5000 +insert-mode-on-plugins = false +auto-leave-insert-mode = true +auto-insert-mode = false +forward-unbound-keys = auto +spatial-navigation = false +links-included-in-focus-chain = true +rocker-gestures = false +mouse-zoom-divider = 512 +[tabs] +background-tabs = false +select-on-remove = next +new-tab-position = next +new-tab-position-explicit = last +last-close = ignore +show = always +show-switching-delay = 800 +wrap = true +movable = true +close-mouse-button = middle +position = top +show-favicons = true +favicon-scale = 1.0 +width = 20% +pinned-width = 43 +indicator-width = 3 +tabs-are-windows = false +title-format = {index}: {title} +title-format-pinned = {index} +title-alignment = left +mousewheel-tab-switching = true +padding = 0,0,5,5 +indicator-padding = 2,2,0,4 +[storage] +download-directory = +prompt-download-directory = true +remember-download-directory = true +maximum-pages-in-cache = 0 +offline-web-application-cache = true +local-storage = true +cache-size = +[content] +allow-images = true +allow-javascript = true +allow-plugins = false +webgl = true +hyperlink-auditing = false +geolocation = ask +notifications = ask +media-capture = ask +javascript-can-open-windows-automatically = false +javascript-can-close-windows = false +javascript-can-access-clipboard = false +ignore-javascript-prompt = false +ignore-javascript-alert = false +local-content-can-access-remote-urls = false +local-content-can-access-file-urls = true +cookies-accept = no-3rdparty +cookies-store = true +host-block-lists = https://www.malwaredomainlist.com/hostslist/hosts.txt,http://someonewhocares.org/hosts/hosts,http://winhelp2002.mvps.org/hosts.zip,http://malwaredomains.lehigh.edu/files/justdomains.zip,https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext +host-blocking-enabled = true +host-blocking-whitelist = piwik.org +enable-pdfjs = false +[hints] +border = 1px solid #E3BE23 +mode = letter +chars = asdfghjkl +min-chars = 1 +scatter = true +uppercase = false +dictionary = /usr/share/dict/words +auto-follow = unique-match +auto-follow-timeout = 0 +next-regexes = \bnext\b,\bmore\b,\bnewer\b,\b[>→≫]\b,\b(>>|»)\b,\bcontinue\b +prev-regexes = \bprev(ious)?\b,\bback\b,\bolder\b,\b[<←≪]\b,\b(<<|«)\b +find-implementation = python +hide-unmatched-rapid-hints = true +[searchengines] +DEFAULT = https://duckduckgo.com/?q={} +[aliases] +[colors] +completion.fg = white +completion.bg = #333333 +completion.alternate-bg = #444444 +completion.category.fg = white +completion.category.bg = qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #888888, stop:1 #505050) +completion.category.border.top = black +completion.category.border.bottom = ${completion.category.border.top} +completion.item.selected.fg = black +completion.item.selected.bg = #e8c000 +completion.item.selected.border.top = #bbbb00 +completion.item.selected.border.bottom = ${completion.item.selected.border.top} +completion.match.fg = #ff4444 +completion.scrollbar.fg = ${completion.fg} +completion.scrollbar.bg = ${completion.bg} +statusbar.fg = white +statusbar.bg = black +statusbar.fg.private = ${statusbar.fg} +statusbar.bg.private = #666666 +statusbar.fg.insert = ${statusbar.fg} +statusbar.bg.insert = darkgreen +statusbar.fg.command = ${statusbar.fg} +statusbar.bg.command = ${statusbar.bg} +statusbar.fg.command.private = ${statusbar.fg.private} +statusbar.bg.command.private = ${statusbar.bg.private} +statusbar.fg.caret = ${statusbar.fg} +statusbar.bg.caret = purple +statusbar.fg.caret-selection = ${statusbar.fg} +statusbar.bg.caret-selection = #a12dff +statusbar.progress.bg = white +statusbar.url.fg = ${statusbar.fg} +statusbar.url.fg.success = white +statusbar.url.fg.success.https = lime +statusbar.url.fg.error = orange +statusbar.url.fg.warn = yellow +statusbar.url.fg.hover = aqua +tabs.fg.odd = white +tabs.bg.odd = grey +tabs.fg.even = white +tabs.bg.even = darkgrey +tabs.fg.selected.odd = white +tabs.bg.selected.odd = black +tabs.fg.selected.even = ${tabs.fg.selected.odd} +tabs.bg.selected.even = ${tabs.bg.selected.odd} +tabs.bg.bar = #555555 +tabs.indicator.start = #0000aa +tabs.indicator.stop = #00aa00 +tabs.indicator.error = #ff0000 +tabs.indicator.system = rgb +hints.fg = black +hints.bg = qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 247, 133, 0.8), stop:1 rgba(255, 197, 66, 0.8)) +hints.fg.match = green +downloads.bg.bar = black +downloads.fg.start = white +downloads.bg.start = #0000aa +downloads.fg.stop = ${downloads.fg.start} +downloads.bg.stop = #00aa00 +downloads.fg.system = rgb +downloads.bg.system = rgb +downloads.fg.error = white +downloads.bg.error = red +webpage.bg = white +keyhint.fg = #FFFFFF +keyhint.fg.suffix = #FFFF00 +keyhint.bg = rgba(0, 0, 0, 80%) +messages.fg.error = white +messages.bg.error = red +messages.border.error = #bb0000 +messages.fg.warning = white +messages.bg.warning = darkorange +messages.border.warning = #d47300 +messages.fg.info = white +messages.bg.info = black +messages.border.info = #333333 +prompts.fg = white +prompts.bg = darkblue +prompts.selected.bg = #308cc6 +[fonts] +_monospace = xos4 Terminus, Terminus, Monospace, "DejaVu Sans Mono", Monaco, "Bitstream Vera Sans Mono", "Andale Mono", "Courier New", Courier, "Liberation Mono", monospace, Fixed, Consolas, Terminal +completion = 8pt ${_monospace} +completion.category = bold ${completion} +tabbar = 8pt ${_monospace} +statusbar = 8pt ${_monospace} +downloads = 8pt ${_monospace} +hints = bold 13px ${_monospace} +debug-console = 8pt ${_monospace} +web-family-standard = +web-family-fixed = +web-family-serif = +web-family-sans-serif = +web-family-cursive = +web-family-fantasy = +web-size-minimum = 0 +web-size-minimum-logical = 6 +web-size-default = 16 +web-size-default-fixed = 13 +keyhint = 8pt ${_monospace} +messages.error = 8pt ${_monospace} +messages.warning = 8pt ${_monospace} +messages.info = 8pt ${_monospace} +prompts = 8pt sans-serif diff --git a/tests/unit/config/test_config.py b/tests/unit/config/test_config.py index c897b9f16..be526dac3 100644 --- a/tests/unit/config/test_config.py +++ b/tests/unit/config/test_config.py @@ -408,7 +408,7 @@ class TestDefaultConfig: If it did change, place a new qutebrowser-vx.y.z.conf in old_configs and then increment the version. """ - assert qutebrowser.__version__ == '0.10.1' + assert qutebrowser.__version__ == '0.11.0' @pytest.mark.parametrize('filename', os.listdir(os.path.join(os.path.dirname(__file__), 'old_configs')), -- cgit v1.2.3-54-g00ecf