summaryrefslogtreecommitdiff
path: root/qutebrowser
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-01-27 16:22:42 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-01-27 17:10:32 +0100
commit5ee28105ad972dd635fcdc0ea56e5f82de478fb1 (patch)
tree9f9c7fa42ecde3563ef78d1fbd9df308d8248bc2 /qutebrowser
parent7ee0236184e063825d48113a851181b4c8356f9f (diff)
downloadqutebrowser-5ee28105ad972dd635fcdc0ea56e5f82de478fb1.tar.gz
qutebrowser-5ee28105ad972dd635fcdc0ea56e5f82de478fb1.zip
Show changelog after upgrades
Diffstat (limited to 'qutebrowser')
-rw-r--r--qutebrowser/app.py22
-rw-r--r--qutebrowser/config/configdata.yml5
-rw-r--r--qutebrowser/config/configfiles.py5
3 files changed, 32 insertions, 0 deletions
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: