Commit graph

8477 commits

Author SHA1 Message Date
Mashiro
dc86d814d9 [Glitch] add mouse scroll lock in image expand view
Port f645dad661 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-11-04 12:24:40 +01:00
Mashiro
40af1cf65b [Glitch] Add expand/compress image button on image view box
Port 6a2db10f76 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-11-04 12:24:40 +01:00
mayaeh
f5df3d1ae2 [Glitch] Fix width of content text fluctuating over time
Port 2ae751f19d to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-11-04 12:24:40 +01:00
Mélanie Chauvel
078744f210 [Glitch] Make visibility icon clickable as part of the time of a toot
Port 1d07f51039 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-11-04 12:24:40 +01:00
Mélanie Chauvel
578e757d09 [Glitch] Make click area of video/audio player buttons bigger in WebUI
Port a5afbb62d2 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-11-03 17:42:40 +01:00
ThibG
adfaf9551c [Glitch] Fix some account media gallery items having empty labels
Port 9d023ed4f6 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-11-03 17:38:50 +01:00
fuyu
37dfb9dddc [Glitch] Fix wrong seek bar width on media player
Port 8d7fbe7dd9 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-11-03 17:37:53 +01:00
Mélanie Chauvel
3b96141633 [Glitch] Make “Mark media as sensitive” properly translatable
Port c5704e75ae to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-11-03 17:36:54 +01:00
Thibaut Girka
cd675fbe18 Merge branch 'master' into glitch-soc/merge-upstream 2020-11-03 17:28:54 +01:00
Mashiro
f645dad661
add mouse scroll lock in image expand view (#15088)
* add mouse scroll lock in image expand view

* enhancement
2020-11-03 06:06:45 +01:00
Mashiro
6a2db10f76
Add expand/compress image button on image view box (#15068)
* add zoom image button

* enhance zoom algorithm & add translation

* code structure

* code structure

* code structure

* enhance grab performance

* rm useless state

* fix behavior on Firefox & scroll lock & horizontal scroll with mousewheel

* remove scroll lock on MouseWheelEvent

* code structure

* enhance algorithm and code structure

* rm Gemfile.lock from tree

* codeclimate

* fix a stupid mistake
2020-11-02 21:16:38 +01:00
ThibG
fa929d8b81
Tweak signature verification (#15069)
* Add more specific error message when request body digest is invalid

This may help other implementors debug their implementation.

* Relax Host parameter requirement to GET requests

The only POST requests processed by Mastodon need objects/actors (including
their host) to be explicitly mentioned in the request's body, so replaying
a legitimate request to another host should not be a security issue.

* Support Digest headers using multiple algorithms or lowercase alogirthm names
2020-11-01 23:38:31 +01:00
ThibG
9d023ed4f6
Fix some account media gallery items having empty labels (#15073)
Remove the labels entirely for images instead of putting an empty label.
2020-11-01 18:31:39 +01:00
Thibaut Girka
b8e790c3c2 Fix crash when viewing a profile with a filtered out pinned toot 2020-11-01 16:53:03 +01:00
ThibG
c49805efb1
Fix poll ending notifications being created for each vote (#15071)
On a poll ending, notifications were created for each vote instead
of for each voter.
2020-11-01 06:34:43 +01:00
Darius Kazemi
f1f0400adc
Show announcements in reverse chronological order (#15065) 2020-10-30 13:09:51 +01:00
fuyu
8d7fbe7dd9
Fix wrong seek bar width on media player (#15060) 2020-10-30 13:09:20 +01:00
Thibaut Girka
5a41704f89 Fix IP blocks in admin panel
It was broken due to discrepancies between upstream and glitch-soc's
theming system.
2020-10-28 23:55:41 +01:00
mayaeh
2ae751f19d
Fix width of content text fluctuating over time (#15055) 2020-10-27 13:34:02 +01:00
Thibaut Girka
a81bb14abe Add option to hide notification markers 2020-10-27 11:20:11 +01:00
Mélanie Chauvel
c5704e75ae
Make “Mark media as sensitive” properly translatable (#15051) 2020-10-27 03:05:50 +01:00
Mélanie Chauvel
1d07f51039
Make visibility icon clickable as part of the time of a toot (#15053)
- Makes permalink to a toot more easily clickable
- Fix clicking between icon and time in fact clicking the display name
- Fix clicking slightly under time in fact clicking the display name
2020-10-27 03:00:47 +01:00
Mélanie Chauvel
0a8ab822e2
Sort filters by “keyword or phrase” in Settings (#15050) 2020-10-27 03:00:06 +01:00
Mélanie Chauvel
a5afbb62d2
Make click area of video/audio player buttons bigger in WebUI (#15049) 2020-10-27 02:58:47 +01:00
Thibaut Girka
49ee69f75f Add local setting for pop-in player position 2020-10-26 20:51:28 +01:00
Thibaut Girka
ea5298ab9b Add setting to disable the pop-in player 2020-10-26 20:31:54 +01:00
Thibaut Girka
5ee2b860f9 Respect glitch-soc's reply counter setting in the pop-in player 2020-10-26 20:31:54 +01:00
Eugen Rochko
47edac871c [Glitch] Fix regressions in icon buttons in web UI
Port a549415868 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-26 19:51:09 +01:00
Eugen Rochko
8f950e540b [Glitch] Add pop-out player for audio/video in web UI
port d88a79b456 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-26 19:51:09 +01:00
ThibG
ddbb9f0ec4 [Glitch] Fix follow request notifications
Port 3678b10823 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-26 15:50:48 +01:00
Thibaut Girka
9c34090db8 Merge branch 'master' into glitch-soc/merge-upstream
Conflicts:
- `app/services/process_mentions_service.rb`:
  glitch-soc local-only handling, ported upstream changes
2020-10-26 15:48:16 +01:00
ThibG
3678b10823
Fix follow request notifications (#15048) 2020-10-26 15:41:28 +01:00
ThibG
1f945e7390
Fix followers synchronization mechanism not being triggered on mentions (#15026)
e.g. if someone on an instance that previously had followers gets mentioned
in a private toot, before this PR, they would not receive a
Collection-Synchronization header and may show the toot to the former followers
in addition to the mentioned person.
2020-10-23 14:22:16 +02:00
ThibG
fb586584f2
Fix account processing failing because of large collections (#15027)
Fixes #15025
2020-10-23 14:21:31 +02:00
mayaeh
5c60f7eaed [Glitch] Fix strings that could not be translated
Port fb5f3be18f to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-21 21:49:46 +02:00
Eugen Rochko
4ae4b03974 [Glitch] Change how missing desktop notifications permission is displayed
Port a69ca29473 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-21 21:49:46 +02:00
Thibaut Girka
dca05c79a9 Move columns-related CSS rules into the appropriate files 2020-10-21 21:28:47 +02:00
ThibG
b5927301cf [Glitch] Fix browser notification permission request logic
Port f54ca3d08e to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-21 21:28:47 +02:00
OSAMU SATO
78ad04420c [Glitch] Add duration parameter to muting.
Port 96761752ec to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-21 21:28:47 +02:00
ThibG
813c84cd6c [Glitch] Change how CDN_HOST is passed down to make assets build reproducible
Port 4c45b43cb8 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-21 21:28:47 +02:00
ThibG
842c048c6b [Glitch] Fix unread notification marker not updating when mounting column
Port dac3e362fd to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-21 19:36:41 +02:00
ThibG
f7306c7b7c [Glitch] Ignore alt-key hotkeys in text fields
Port 63770d3aac to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-21 19:34:44 +02:00
Takeshi Umeda
8071613dd7 [Glitch] Fix mark as read in notifications to be saved immediately
Port bec8b12bb5 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-21 19:33:20 +02:00
ThibG
c3d82027cf [Glitch] Fix bell button causing a brief “Cancel follow request” on locked accounts
Port 82951920f7 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-10-21 19:24:32 +02:00
Thibaut Girka
ec49aa8175 Merge branch 'master' into glitch-soc/merge-upstream
Conflicts:
- `.github/dependabot.yml`:
  Updated upstream, we deleted it to not be flooded by Depandabot.
  Kept deleted.
- `Gemfile.lock`:
  Puma updated on both sides, went for the most recent version.
- `app/controllers/api/v1/mutes_controller.rb`:
  Upstream updated the serializer to support timed mutes, while
  glitch-soc added a custom API ages ago to get information that
  is already available elsewhere.
  Dropped the glitch-soc-specific API, went with upstream changes.
- `app/javascript/core/admin.js`:
  Conflict due to changing how assets are loaded. Went with upstream.
- `app/javascript/packs/public.js`:
  Conflict due to changing how assets are loaded. Went with upstream.
- `app/models/mute.rb`:
  🤷
- `app/models/user.rb`:
  New user setting added upstream while we have glitch-soc-specific
  user settings. Added upstream's user setting.
- `config/settings.yml`:
  Upstream added a new user setting close to a user setting we had
  changed the defaults for. Added the new upstream setting.
- `package.json`:
  Upstream dependency updated “too close” to a glitch-soc-specific
  dependency. No real conflict. Updated the dependency.
2020-10-21 19:10:50 +02:00
ThibG
ca56527140
Add follower synchronization mechanism (#14510)
* Add support for followers synchronization on the receiving end

Check the `collectionSynchronization` attribute on `Create` and `Announce`
activities and synchronize followers from provided collection if possible.

* Add tests for followers synchronization on the receiving end

* Add support for follower synchronization on the sender's end

* Add tests for the sending end

* Switch from AS attributes to HTTP header

Replace the custom `collectionSynchronization` ActivityStreams attribute by
an HTTP header (`X-AS-Collection-Synchronization`) with the same syntax as
the `Signature` header and the following fields:
- `collectionId` to specify which collection to synchronize
- `digest` for the SHA256 hex-digest of the list of followers known on the
   receiving instance (where “receiving instance” is determined by accounts
   sharing the same host name for their ActivityPub actor `id`)
- `url` of a collection that should be fetched by the instance actor

Internally, move away from the webfinger-based `domain` attribute and use
account `uri` prefix to group accounts.

* Add environment variable to disable followers synchronization

Since the whole mechanism relies on some new preconditions that, in some
extremely rare cases, might not be met, add an environment variable
(DISABLE_FOLLOWERS_SYNCHRONIZATION) to disable the mechanism altogether and
avoid followers being incorrectly removed.

The current conditions are:
1. all managed accounts' actor `id` and inbox URL have the same URI scheme and
   netloc.
2. all accounts whose actor `id` or inbox URL share the same URI scheme and
   netloc as a managed account must be managed by the same Mastodon instance
   as well.

As far as Mastodon is concerned, breaking those preconditions require extensive
configuration changes in the reverse proxy and might also cause other issues.

Therefore, this environment variable provides a way out for people with highly
unusual configurations, and can be safely ignored for the overwhelming majority
of Mastodon administrators.

* Only set follower synchronization header on non-public statuses

This is to avoid unnecessary computations and allow Follow-related
activities to be handled by the usual codepath instead of going through
the synchronization mechanism (otherwise, any Follow/Undo/Accept activity
would trigger the synchronization mechanism even if processing the activity
itself would be enough to re-introduce synchronization)

* Change how ActivityPub::SynchronizeFollowersService handles follow requests

If the remote lists a local follower which we only know has sent a follow
request, consider the follow request as accepted instead of sending an Undo.

* Integrate review feeback

- rename X-AS-Collection-Synchronization to Collection-Synchronization
- various minor refactoring and code style changes

* Only select required fields when computing followers_hash

* Use actor URI rather than webfinger domain in synchronization endpoint

* Change hash computation to be a XOR of individual hashes

Makes it much easier to be memory-efficient, and avoid sorting discrepancy issues.

* Marginally improve followers_hash computation speed

* Further improve hash computation performances by using pluck_each
2020-10-21 18:04:09 +02:00
abcang
9649ca0fbe
Removed disabling comments for Style/MethodMissingSuper (#15014)
* Removed disabling comments for Style/MethodMissingSuper

* Update rubocop for codeclimate
2020-10-20 09:13:39 +02:00
otrapersona
29870d2be6
Glitchsoc translation to 'es' language (#1439)
glitch-soc-specific translation to 'es' language
2020-10-19 22:17:29 +02:00
Josh Leeb-du Toit
0c24f4dce2
Add support for Gemini urls (#15013)
This PR updates the `valid_url` regex and sanitizer allowlist to provide
support for Gemini urls.

Closes #14991
2020-10-19 17:02:13 +02:00
mayaeh
4130aef29c
Fix translation string (#14986) 2020-10-16 21:41:43 +02:00
mayaeh
fb5f3be18f
Fix strings that could not be translated (#14980) 2020-10-15 21:24:58 +02:00
Eugen Rochko
a69ca29473
Change how missing desktop notifications permission is displayed (#14985)
Add missing controls for new notification type
2020-10-15 16:24:47 +02:00
Takeshi Umeda
b4c4af18dc
Fix a bear check when the activity object is nil (#14981) 2020-10-13 22:41:00 +02:00
Thibaut Girka
311f457430 Fix crash when autolinking an invalid URI in Markdown 2020-10-13 14:35:07 +02:00
ThibG
4c45b43cb8
Change how CDN_HOST is passed down to make assets build reproducible (#14381)
* Change how CDN_HOST is passed down to make assets build reproducible

* Change webpacker/webpack configuration to dynamically load publicPath based on meta header

* Fix embedded layout missing the cdn-host meta header
2020-10-13 01:19:35 +02:00
OSAMU SATO
96761752ec
Add duration parameter to muting. (#13831)
* Adding duration to muting.

* Remove useless checks
2020-10-13 01:01:14 +02:00
ThibG
f54ca3d08e
Fix browser notification permission request logic (#13543)
* Add notification permission handling code

* Request notification permission when enabling any notification setting

* Add badge to notification settings when permissions insufficient

* Disable alerts by default, requesting permission and enable them on onboarding
2020-10-13 00:37:21 +02:00
Eugen Rochko
5e1364c448
Add IP-based rules (#14963) 2020-10-12 16:33:49 +02:00
ThibG
dc52a778e1
Fix issue checking for last unread notification when there are gaps (#14960) 2020-10-09 17:12:52 +02:00
Thibaut Girka
cd861c051c Fix issue checking for last unread notification when there are gaps 2020-10-08 22:44:30 +02:00
ThibG
dac3e362fd
Fix unread notification marker not updating when mounting column (#14954) 2020-10-08 00:35:27 +02:00
Eugen Rochko
7d985f2aac
Remove dependency on goldfinger gem (#14919)
There are edge cases where requests to certain hosts timeout when
using the vanilla HTTP.rb gem, which the goldfinger gem uses. Now
that we no longer need to support OStatus servers, webfinger logic
is so simple that there is no point encapsulating it in a gem, so
we can just use our own Request class. With that, we benefit from
more robust timeout code and IPv4/IPv6 resolution.

Fix #14091
2020-10-08 00:34:57 +02:00
ThibG
63770d3aac
Ignore alt-key hotkeys in text fields (#14942)
Fixes #14862

This used to be the case until #13987, which introduced a hotkey to toggle
the Content Warning field.

Unfortunately, MacOS relies on the “alt” key for many things, including
composing text (see #14862), therefore, even if that makes the CW toggle
hotkey significantly less useful, it makes sense to not interfere with
composing toots.
2020-10-05 22:04:06 +02:00
mayaeh
5a9ad221bf
Update translation files (#14920) 2020-10-05 02:57:38 +02:00
Eugen Rochko
a549415868
Fix regressions in icon buttons in web UI (#14915) 2020-10-04 15:02:36 +02:00
Takeshi Umeda
bec8b12bb5
Fix mark as read in notifications to be saved immediately (#14907)
* Fix mark as read in notifications to be saved immediately

* fix code style
2020-10-01 04:17:46 +02:00
ThibG
65136600e3
Fix logging out on mobile (#14901)
Fixes #14900
2020-09-30 19:31:17 +02:00
ThibG
78e45a5285
Add option to disable swiping motions across the WebUI (#13885)
Fixes #13882
2020-09-30 19:31:03 +02:00
Takeshi Umeda
f5d08f2417
Fix unread notification markers (#14897) 2020-09-29 15:30:56 +02:00
Thibaut Girka
b5edf30160 Fix boost icon not being displayed in boost notifications 2020-09-29 11:05:05 +02:00
ThibG
82951920f7
Fix bell button causing a brief “Cancel follow request” on locked accounts (#14896) 2020-09-28 21:44:29 +02:00
Thibaut Girka
ccfc2b6dce Make explicit in glitch-soc's WebUI when an account is suspended 2020-09-28 18:00:49 +02:00
Thibaut Girka
e3f822ac1b Do not filter out temporarily-suspended accounts from relationships API 2020-09-28 17:56:16 +02:00
Eugen Rochko
dadec533ce [Glitch] Fix unreadable placeholder text color in high contrast theme in web UI (#14803)
Port bbcbf12215 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-09-28 17:56:16 +02:00
Thibaut Girka
6dde075425 Fix actions being performed before the redux state is set up 2020-09-28 17:49:55 +02:00
ThibG
f8205b7b4a [Glitch] Add paragraph about browser add-ons when encountering some errors
Port b67caf9be4 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-09-28 17:49:55 +02:00
Eugen Rochko
14869ee656 [Glitch] Add option to be notified when a followed user posts
Port 974b1b79ce to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-09-28 17:49:55 +02:00
Eugen Rochko
0a069bffd9 [Glitch] Optimize the process of following someone
Port front-end changes from 6d59dfa15d to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-09-28 17:49:55 +02:00
Eugen Rochko
6775de3fc9 [Glitch] Change web UI to show empty profile for suspended accounts
Port fcb9350ff8 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-09-28 17:49:55 +02:00
ThibG
572d1a1bf8 [Glitch] Fix home TL marker code mishandling gaps
Port eaea2311aa to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-09-28 15:00:19 +02:00
ThibG
4586202448 [Glitch] Fix notification filter bar incorrectly filtering gaps
Port aab867b0e8 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-09-28 14:59:10 +02:00
ThibG
d31792a2a6 [Glitch] Add border around 🕺 emoji
Port 91eecd1b3c to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
2020-09-28 14:58:25 +02:00
Thibaut Girka
a7aedebc31 Merge branch 'master' into glitch-soc/merge-upstream
Conflicts:
- `Gemfile.lock`:
  Not a real conflict, upstream updated dependencies that were too close to
  glitch-soc-only ones in the file.
- `app/controllers/oauth/authorized_applications_controller.rb`:
  Upstream changed the logic surrounding suspended accounts.
  Minor conflict due to glitch-soc's theming system.
  Ported upstream changes.
- `app/controllers/settings/base_controller.rb`:
  Upstream refactored and changed the logic surrounding suspended accounts.
  Minor conflict due to glitch-soc's theming system.
  Ported upstream changes.
- `app/controllers/settings/sessions_controller.rb`:
  Upstream refactored and changed the logic surrounding suspended accounts.
  Minor conflict due to glitch-soc's theming system.
  Ported upstream changes.
- `app/models/user.rb`:
  Upstream refactored and changed the logic surrounding suspended accounts.
  Minor conflict due to glitch-soc not preventing moved accounts from logging
  in.
  Ported upstream changes while keeping the ability for moved accounts to log
  in.
- `app/policies/status_policy.rb`:
  Upstream refactored and changed the logic surrounding suspended accounts.
  Minor conflict due to glitch-soc's local-only toots.
  Ported upstream changes.
- `app/serializers/rest/account_serializer.rb`:
  Upstream refactored and changed the logic surrounding suspended accounts.
  Minor conflict due to glitch-soc's ability  to hide followers count.
  Ported upstream changes.
- `app/services/process_mentions_service.rb`:
  Upstream refactored and changed the logic surrounding suspended accounts.
  Minor conflict due to glitch-soc's local-only toots.
  Ported upstream changes.
- `package.json`:
  Not a real conflict, upstream updated dependencies that were too close to
  glitch-soc-only ones in the file.
2020-09-28 14:13:30 +02:00
Eugen Rochko
d88a79b456
Add pop-out player for audio/video in web UI (#14870)
Fix #11160
2020-09-28 13:29:43 +02:00
ThibG
d60290044e
Add environment variable to allow requests to some private addresses (#14722) 2020-09-26 20:57:39 +02:00
ThibG
ff89025979
Add unread notification markers (#14818)
* Add unread notification markers

Fixes #14804

* Allow IntersectionObserverArticle's children to be updated
2020-09-26 20:57:07 +02:00
Jeremy Rose
03b6b034b9
add og:published_time to opengraph meta tags (#14865) 2020-09-24 23:32:13 +02:00
Takeshi Umeda
b655a7f88f
Fix a slow query for TagFeed (#14861)
* Fix a slow query for TagFeed

* rename tags to tag_ids
2020-09-23 16:01:54 +02:00
Takeshi Umeda
070026e634
Fix method of the DELETE DATA button (#14855) 2020-09-21 20:37:19 +02:00
Eugen Rochko
8c8bf0289f
Fix not being able to enable status notifications in Web Push API (#14822) 2020-09-21 17:48:55 +02:00
Thibaut Girka
787d5d7289 Fix minor bugs 2020-09-19 15:01:46 +02:00
Thibaut Girka
312c936d51 Minor refactoring and fixups 2020-09-19 14:15:28 +02:00
Thibaut Girka
85b9086e6b Filter out mounted lists from “getting started” column 2020-09-18 20:07:25 +02:00
Eugen Rochko
974b1b79ce
Add option to be notified when a followed user posts (#13546)
* Add bell button

Fix #4890

* Remove duplicate type from post-deployment migration

* Fix legacy class type mappings

* Improve query performance with better index

* Fix validation

* Remove redundant index from notifications
2020-09-18 17:26:45 +02:00
Thibaut Girka
a681980307 Submit timeline markers closer to the moment they change 2020-09-17 15:22:56 +02:00
Thibaut Girka
60eebc6cc4 Fix crashes when connection drops 2020-09-17 15:22:56 +02:00
Thibaut Girka
f1c0cf9806 Add button to manually mark all notifications as read 2020-09-17 15:22:56 +02:00
Thibaut Girka
94c290d7d2 Only update read marker when giving focus/mounting column 2020-09-17 15:22:56 +02:00
Thibaut Girka
145ed37978 Refactor and change logic to only update marker if we reached the last
read notification.
2020-09-17 15:22:56 +02:00
Thibaut Girka
66e9a77e36 Display unread marker for notifications 2020-09-17 15:22:56 +02:00