diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-01-27 16:22:42 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-01-27 17:10:32 +0100 |
commit | 5ee28105ad972dd635fcdc0ea56e5f82de478fb1 (patch) | |
tree | 9f9c7fa42ecde3563ef78d1fbd9df308d8248bc2 | |
parent | 7ee0236184e063825d48113a851181b4c8356f9f (diff) | |
download | qutebrowser-5ee28105ad972dd635fcdc0ea56e5f82de478fb1.tar.gz qutebrowser-5ee28105ad972dd635fcdc0ea56e5f82de478fb1.zip |
Show changelog after upgrades
-rw-r--r-- | doc/changelog.asciidoc | 2 | ||||
-rw-r--r-- | doc/help/settings.asciidoc | 9 | ||||
-rw-r--r-- | qutebrowser/app.py | 22 | ||||
-rw-r--r-- | qutebrowser/config/configdata.yml | 5 | ||||
-rw-r--r-- | qutebrowser/config/configfiles.py | 5 | ||||
-rw-r--r-- | tests/unit/config/test_configfiles.py | 22 |
6 files changed, 65 insertions, 0 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index e90704896..4f48d219b 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -117,6 +117,8 @@ Added remove the "Service Workers" directory on every start. Usage of this option is generally discouraged, except in situations where the underlying QtWebEngine bug is a known cause for crashes. +- Changelogs are now shown after qutebrowser was upgraded. This can be disabled + via a new `changelog_after_upgrade` setting. - New userscripts: * `kodi` to play videos in Kodi * `qr` to generate a QR code of the current URL diff --git a/doc/help/settings.asciidoc b/doc/help/settings.asciidoc index 67541c16b..8accac834 100644 --- a/doc/help/settings.asciidoc +++ b/doc/help/settings.asciidoc @@ -17,6 +17,7 @@ |<<bindings.commands,bindings.commands>>|Keybindings mapping keys to commands in different modes. |<<bindings.default,bindings.default>>|Default keybindings. If you want to add bindings, modify `bindings.commands` instead. |<<bindings.key_mappings,bindings.key_mappings>>|This setting can be used to map keys to other keys. +|<<changelog_after_upgrade,changelog_after_upgrade>>|Whether to show a changelog after qutebrowser was upgraded. |<<colors.completion.category.bg,colors.completion.category.bg>>|Background color of the completion widget category headers. |<<colors.completion.category.border.bottom,colors.completion.category.border.bottom>>|Bottom border color of the completion widget category headers. |<<colors.completion.category.border.top,colors.completion.category.border.top>>|Top border color of the completion widget category headers. @@ -791,6 +792,14 @@ Default: - +pass:[<Shift-Enter>]+: +pass:[<Return>]+ - +pass:[<Shift-Return>]+: +pass:[<Return>]+ +[[changelog_after_upgrade]] +=== changelog_after_upgrade +Whether to show a changelog after qutebrowser was upgraded. + +Type: <<types,Bool>> + +Default: +pass:[true]+ + [[colors.completion.category.bg]] === colors.completion.category.bg Background color of the completion widget category headers. diff --git a/qutebrowser/app.py b/qutebrowser/app.py index 51a5db8b7..249f8da1e 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -383,6 +383,28 @@ def _open_special_pages(args): tabbed_browser.tabopen(QUrl(url), background=False) general_sect[state] = '1' + # Show changelog on new releases + if not configfiles.state.qutebrowser_version_changed: + return + if not config.val.changelog_after_upgrade: + log.init.debug("Showing changelog is disabled") + return + + try: + changelog = utils.read_file('html/doc/changelog.html') + except OSError as e: + log.init.warning(f"Not showing changelog due to {e}") + return + + version = qutebrowser.__version__ + if f'id="v{version}"' not in changelog: + log.init.warning("Not showing changelog (anchor not found)") + return + + message.info(f"Showing changelog after upgrade to qutebrowser v{version}.") + changelog_url = f'qute://help/changelog.html#v{version}' + tabbed_browser.tabopen(QUrl(changelog_url), background=False) + def on_focus_changed(_old, new): """Register currently focused main window in the object registry.""" diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml index e39193165..96ea5ee21 100644 --- a/qutebrowser/config/configdata.yml +++ b/qutebrowser/config/configdata.yml @@ -35,6 +35,11 @@ history_gap_interval: Items with less time between them are grouped when being displayed in `:history`. Use -1 to disable separation. +changelog_after_upgrade: + type: Bool + default: true + desc: Whether to show a changelog after qutebrowser was upgraded. + ignore_case: renamed: search.ignore_case diff --git a/qutebrowser/config/configfiles.py b/qutebrowser/config/configfiles.py index dcf1c9e5a..542e66eea 100644 --- a/qutebrowser/config/configfiles.py +++ b/qutebrowser/config/configfiles.py @@ -60,14 +60,19 @@ class StateConfig(configparser.ConfigParser): self._filename = os.path.join(standarddir.data(), 'state') self.read(self._filename, encoding='utf-8') qt_version = qVersion() + # We handle this here, so we can avoid setting qt_version_changed if # the config is brand new, but can still set it when qt_version wasn't # there before... if 'general' in self: old_qt_version = self['general'].get('qt_version', None) + old_qutebrowser_version = self['general'].get('version', None) self.qt_version_changed = old_qt_version != qt_version + self.qutebrowser_version_changed = ( + old_qutebrowser_version != qutebrowser.__version__) else: self.qt_version_changed = False + self.qutebrowser_version_changed = False for sect in ['general', 'geometry', 'inspector']: try: diff --git a/tests/unit/config/test_configfiles.py b/tests/unit/config/test_configfiles.py index 8208a4d26..254ddade9 100644 --- a/tests/unit/config/test_configfiles.py +++ b/tests/unit/config/test_configfiles.py @@ -166,6 +166,28 @@ def test_qt_version_changed(data_tmpdir, monkeypatch, assert state.qt_version_changed == changed +@pytest.mark.parametrize('old_version, new_version, changed', [ + (None, '2.0.0', False), + ('1.14.1', '1.14.1', False), + ('1.14.0', '1.14.1', True), + ('1.14.1', '2.0.0', True), +]) +def test_qutebrowser_version_changed( + data_tmpdir, monkeypatch, old_version, new_version, changed): + monkeypatch.setattr(configfiles.qutebrowser, '__version__', lambda: new_version) + + statefile = data_tmpdir / 'state' + if old_version is not None: + data = ( + '[general]\n' + f'version = {old_version}' + ) + statefile.write_text(data, 'utf-8') + + state = configfiles.StateConfig() + assert state.qutebrowser_version_changed == changed + + @pytest.fixture def yaml(config_tmpdir): return configfiles.YamlConfig() |