Results 29 issues of François

Under certain condition, inside value of ListField(EnumField) don't get casted to the proper Enum. This patches fixes that.

Only triggering `_mark_as_changed` on DictField if the value is actually changed. Limit the number of field accumulated in `_changed_fields`.

It's complicated to share only sub-part of my image collection. Would it be possible to share (like with the share link feature) the result of a keyword (or face) search...

enhancement

After launching GTG from flatpak I got an ill formatted error (showing `%s` instead of the proper values). It's due to a `raise ValueError` in `GTG/core/config.py`. After looking at that...

maintainability

closes #135

### improve non-splited mode - [x] set scroll to article top when on non-splited display - [ ] remove expand icon, replace with bigger mark as read icon - [...

user experience

Add dark mode, store user pref in local storage

new feature
user experience