diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py
index 9fcfb5d22..4bf593a10 100644
--- a/plinth/modules/upgrades/__init__.py
+++ b/plinth/modules/upgrades/__init__.py
@@ -19,7 +19,9 @@ FreedomBox app for upgrades.
"""
from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ugettext_noop
+import plinth
from plinth import actions
from plinth import app as app_module
from plinth import menu
@@ -55,6 +57,37 @@ class UpgradesApp(app_module.App):
'upgrades:index', parent_url_name='system')
self.add(menu_item)
+ self._show_new_release_notification()
+
+ def _show_new_release_notification(self):
+ """When upgraded to new release, show a notification."""
+ from plinth.notification import Notification
+ try:
+ note = Notification.get('upgrades-new-release')
+ if note.data['version'] == plinth.__version__:
+ # User already has notification for update to this version. It
+ # may be dismissed or not yet dismissed
+ return
+
+ # User currently has a notification for an older version, update.
+ dismiss = False
+ except KeyError:
+ # Don't show notification for the first version user runs, create
+ # but don't show it.
+ dismiss = True
+
+ data = {
+ 'version': plinth.__version__,
+ 'app_name': 'Update',
+ 'app_icon': 'fa-refresh'
+ }
+ title = ugettext_noop('FreedomBox Updated')
+ note = Notification.update_or_create(
+ id='upgrades-new-release', app_id='upgrades', severity='info',
+ title=title, body_template='upgrades-new-release.html', data=data,
+ group='admin')
+ note.dismiss(should_dismiss=dismiss)
+
def init():
"""Initialize the module."""
diff --git a/plinth/modules/upgrades/templates/upgrades-new-release.html b/plinth/modules/upgrades/templates/upgrades-new-release.html
new file mode 100644
index 000000000..bec74ed88
--- /dev/null
+++ b/plinth/modules/upgrades/templates/upgrades-new-release.html
@@ -0,0 +1,39 @@
+{% comment %}
+#
+# This file is part of FreedomBox.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see
+ {% blocktrans trimmed with url="https://discuss.freedombox.org/c/announcements/7" %} + {{ box_name }} has been updated to version {{ version }}. See the + release announcement. + {% endblocktrans %} +
+ +