Closed oblomow closed 2 years ago
Hi, Sorry for the break :(
Is there any way you can send us the dump of your database so we can figure out what is wrong ?
Yes, I can send the database. Is it possible to create some kind of 'trace' for you while I rerun the update?
I assume you did the migration via the UI, if so there is no possible trace.
However, if you have access to command line, you may want to try to run the update manually via:
php artisan migrate
This should also produce some kind of trace.
Yes, I have command line access. (oh before I forget: no worries about the breaking. I really like Lychee, and these things can happen)
This is also why this is only released on master and not an official release zip yet. :)
See more of the change log here: https://lycheeorg.github.io/docs/releases.html#master-branch
sudo -u www php artisan migrate
Nothing to migrate.
O.o
This does not match with your diagnostics: version: 040400
while it should be : https://github.com/LycheeOrg/Lychee/blob/32c374db4505bb44bf5b357ee952034ad271515c/database/migrations/2022_01_13_183131_bump_version040500.php#L15
I have rolled back to a working system. But I guess you know that.
diagnostics still says:
Diagnostics
-------
Info: Latest version of PHP is 8.1
System Information
--------------
Lychee Version (git): master (a7de020) - Up to date (14 hours ago).
DB Version: 4.4.0
composer install: --no-dev
APP_ENV: local
APP_DEBUG: false
System: FreeBSD
PHP Version: 8
PHP User agent: Lychee/4 (https://lycheeorg.github.io/)
Max uploaded file size: 100M
Max post size: 100M
Max execution time: 200
MySQL Version: 8.0.27
Imagick: 1
Imagick Active: 1
Imagick Version: 1692
GD Version: 2.3.1
hummmm. Not normal.
if I run the update from the webinterface I get;
Diagnostics
-------
Error: User Admin not found in database. Please run: "php artisan lychee:reset_admin"
Info: Latest version of PHP is 8.1
an if I press upgrade I get a 500| SERVER ERROR
If I now run the command, I get:
sudo -u www php artisan migrate
Migrating: 2021_12_04_181200_refactor_models
In Connection.php line 705:
SQLSTATE[42S02]: Base table or view not found: 1051 Unknown table 'lychee.symlinks' (SQL: drop table `sym links`)
In Connection.php line 494:
SQLSTATE[42S02]: Base table or view not found: 1051 Unknown table 'lychee.sym_links'
Error: User Admin not found in database. Please run: "php artisan lychee:reset_admin"
That is definitively NOT normal.
in 4.4 there should be admin in the database.
should there be a 'admin' user in the users-table?
there are 2 users there. id 0, wih a 'hashed' username and id 1 (a guest user)
user with id 0 with hashed username is the admin user. That's why I don't understand why it is saying there is no admin.
Is there anything else I can try or run to give you more insight? I am no php-programmer, but am familiar with bash and mysql.
@nagmat84 :/
Honestly, I hate that whole "update from the webinterface" thing; if it works, it works, but if it fails, who knows why? Since you have the commandline access, can you do all of it that way please and send us the logs? That will be much more useful...
Basically, revert the Lychee tree to the last working state (I assume that's commit a7de020 for you; check with git log --oneline -1
) with a corresponding working version of the database in place). I'm assuming your Lychee tree is clean (check with git status
). Then run git pull --rebase
and let's see the output of that...
sudo -u www git log --oneline -1 a7de020 (HEAD -> master) Remove PHP7 leftovers (#1173)
sudo -u www git status Refresh index: 100% (650/650), done. On branch master Your branch is ahead of 'origin/master' by 69 commits. (use "git push" to publish your local commits)
Untracked files:
(use "git add
nothing added to commit but untracked files present (use "git add" to track)
git pull --rebase remote: Enumerating objects: 5297, done. remote: Counting objects: 100% (5296/5296), done. remote: Compressing objects: 100% (1249/1249), done. remote: Total 5297 (delta 4050), reused 5162 (delta 3980), pack-reused 1 Receiving objects: 100% (5297/5297), 1.47 MiB | 8.27 MiB/s, done. Resolving deltas: 100% (4050/4050), completed with 151 local objects. From https://github.com/LycheeOrg/Lychee 376f8c7..32c374d master -> origin/master
Illuminate\Foundation\ComposerScripts::postAutoloadDump @php artisan package:discover
Discovered Package: bepsvpt/secure-headers Discovered Package: darkghosthunter/larapass Discovered Package: fideloper/proxy Discovered Package: graham-campbell/markdown Discovered Package: livewire/livewire Discovered Package: lychee-org/nestedset Discovered Package: nesbot/carbon Discovered Package: spatie/laravel-feed Discovered Package: spatie/laravel-image-optimizer Package manifest generated successfully.
sh scripts/install_files.sh \n\033[38;5;011mcreating file for css personalization\033[0m touch public/dist/user.css \n\033[38;5;011mcreating default sqlite database\033[0m touch database/database.sqlite \n\033[38;5;011msetting up hooks for git pull and git commits\033[0m cp scripts/pre-commit .git/hooks/ cp scripts/post-merge .git/hooks/ \n\033[38;5;214mTo disable the call of composer and migration on pull add\033[0m \033[38;5;214ma file named '.NO_AUTO_COMPOSER_MIGRATE' in this directory.\033[0m\n 74 packages you are using are looking for funding. Use the
composer fund
command to find out more! php artisan migrate --force
Migrating: 2021_12_04_181200_refactor_models Info: Renaming existing tables Info: Creating new tables Info: Start copying ... Table 'users' 2/2 [============================] 100% Error: Model ID 2 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Error: Model ID 3 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Error: Model ID 9 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Error: Model ID 11 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Error: Model ID 17 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Table 'albums' 145/145 [============================] 100% Table 'user_base_album' 1/137 [>---------------------------] 0%
In 2021_12_04_181200_refactor_models.php line 1116:
Undefined array key 15023691398618
\n\033[38;5;010mpost merge hook finish\033[0m\n
after previous action :
resulting in:
In 2021_12_04_181200_refactor_models.php line 1116:
Undefined array key 15023691398618
That is bad. That part there, that's why it is crashing.
I might have an idea, why it fails, but it is a guess. Please follow the following steps again (sorry for your taking your time).
git pull
. (Don't run the migration yet)../artisan optimize:clear && ./artisan config:cache && ./artisan optimize
. This is extremely important.
Background: We had some configuration changes in #1172 which ensure that the MySQL DB connection behaves deterministic regarding numeric IDs. Otherwise funny things might happen with a) a 32bit installation of MySQL on a 64bit platform and b) with 0
as an integer ID which is used by our admin user and which MySQL does not like by default. For efficiency reasons, Laravel compiles a shadow copy of all configuration options merged together. So after any upgrade which might change a configuration you must run ./artisan optimize:clear && ./artisan config:cache && ./artisan optimize
otherwise you use an old configuration.composer install --no-dev
.
Background: We had to switch to our own fork of Nested Sets from lazychaser/laravel-nestedset
to LycheeOrg/laravel-nestedset
, because the original has some bugs regarding zero/null IDs.artisan migrate
If it still fails, then please provide me with a copy of your database. I am happy to help out. But I assume, that the problem stems from a missing step 5 or 6. An ID-related problem smells like that.
@ildyria Does the web installer ensures step 5 and 6? I am not sure about that.
@ildyria Does the web installer ensures step 5 and 6? I am not sure about that.
Isn't this only important if somebody ran the artisan optimize
in the first place? Do we recommend anywhere in the docs that people do?
We run it in the post-merge hook:
composer install --no-dev --prefer-dist --no-suggest
@oblomow Can you check if you have an album with id 15023691398618
in your database at all (in the albums
table)? Based on some of the preceding messages it looks like you've modified things manually in the past so it could be that your database is simply inconsistent. If that's the case, you may need to remove the offending entry from user_album
table prior to update (it will be the one with album_id = 15023691398618
).
Isn't this only important if somebody ran the artisan optimize in the first place? Do we recommend anywhere in the docs that people do?
No, it isn't. artisan optimize
only primes the cache. If you don't do it manually, Laravel will do it per request on a as-needed basis. artisan optimize
only helps to mitigate some delay during the first couple of request until the cache is built. But then the cache is there. After an upgrade you need to clear it.
The important part is actually ./artisan optimize:clear && ./artisan config:clear
. The third part is optional.
@kamil4 select * from albums where id=15023691398618 \G Empty set (0.00 sec)
@oblomow As I suspected. So now do this (on a DB instance before updating to the latest version):
delete from user_album where album_id = 15023691398618;
Hopefully that's the only such offender, but if not, you may need to do it repeatedly for the album IDs that fail...
sudo -u www git pull remote: Enumerating objects: 5297, done. remote: Counting objects: 100% (5296/5296), done. remote: Compressing objects: 100% (1249/1249), done. remote: Total 5297 (delta 4050), reused 5162 (delta 3980), pack-reused 1 Receiving objects: 100% (5297/5297), 1.47 MiB | 12.65 MiB/s, done. Resolving deltas: 100% (4050/4050), completed with 151 local objects. From https://github.com/LycheeOrg/Lychee 376f8c7..32c374d master -> origin/master
Illuminate\Foundation\ComposerScripts::postAutoloadDump @php artisan package:discover
Discovered Package: bepsvpt/secure-headers Discovered Package: darkghosthunter/larapass Discovered Package: fideloper/proxy Discovered Package: graham-campbell/markdown Discovered Package: livewire/livewire Discovered Package: lychee-org/nestedset Discovered Package: nesbot/carbon Discovered Package: spatie/laravel-feed Discovered Package: spatie/laravel-image-optimizer Package manifest generated successfully.
sh scripts/install_files.sh \n\033[38;5;011mcreating file for css personalization\033[0m touch public/dist/user.css \n\033[38;5;011mcreating default sqlite database\033[0m touch database/database.sqlite \n\033[38;5;011msetting up hooks for git pull and git commits\033[0m cp scripts/pre-commit .git/hooks/ cp scripts/post-merge .git/hooks/ \n\033[38;5;214mTo disable the call of composer and migration on pull add\033[0m \033[38;5;214ma file named '.NO_AUTO_COMPOSER_MIGRATE' in this directory.\033[0m\n 74 packages you are using are looking for funding. Use the
composer fund
command to find out more! php artisan migrate --force
Migrating: 2021_12_04_181200_refactor_models Info: Renaming existing tables Info: Creating new tables Info: Start copying ... Table 'users' 2/2 [============================] 100% Error: Model ID 2 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Error: Model ID 3 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Error: Model ID 9 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Error: Model ID 11 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Error: Model ID 17 - OutOfBoundsException - ID-based creation time is out of reasonable bounds Table 'albums' 145/145 [============================] 100% Table 'user_base_album' 83/137 [================>-----------] 60%
In 2021_12_04_181200_refactor_models.php line 1116:
Undefined array key 15023691398618
\n\033[38;5;010mpost merge hook finish\033[0m\n
@oblomow As I suspected. So now do this (on a DB instance before updating to the latest version):
delete from user_album where album_id = 15023691398618;
Hopefully that's the only such offender, but if not, you may need to do it repeatedly for the album IDs that fail...
will do that. I will first restore the working situation.
OK! If it fails again, you can post just the last few lines of the log at this point (starting with Migrating: 2021_12_04_181200_refactor_models
).
Hopefully that's the only such offender, but if not, you may need to do it repeatedly for the album IDs that fail...
In order to avoid repeating the migration several times, you could also run a SQL query like this within your SQL console:
SELECT * FROM user_album WHERE album_id NOT IN (SELECT id FROM albums);
This will give you all orphaned sharing entries between users and albums for albums which do not exist. To be on the safe side you may also check
SELECT * FROM user_album WHERE user_id NOT IN (SELECT id FROM users);
SELECT * FROM albums WHERE cover_id NOT IN (SELECT id FROM photos);
SELECT * FROM photos WHERE album_id NOT IN (SELECT id FROM albums);
SELECT * FROM albums WHERE owner_id NOT IN (SELECT id FROM users);
SELECT * FROM photos WHERE owner_id NOT IN (SELECT id FROM users);
That are all foreign key constraints I remember.
It seems that there are more users than I expected which fiddled with their database manually and - as we had no foreign constraints until now - broke it. Given my previous post, I start working on an improved version of the migration which first checks, whether there are any inconsistencies and which will terminate the migration with an error if it finds inconsistencies.
@nagmat84 It makes me wonder if we should add such sanity check to the DB migration file and either delete the offenders or bail out early before leaving the DB in an (even more) inconsistent state?
@kamil4 this should be added in the Diagnostic page.
It seems that there are more users than I expected which fiddled with their database manually and - as we had no foreign constraints until now - broke it. Given my previous post, I start working on an improved version of the migration which first checks, whether there are any inconsistencies and which will terminate the migration with an error if it finds inconsistencies.
I never fiddled with my database. However I am a long term Lychee user, enduring many updates, upgrades and migrations. Perhaps migrating to the 'new' Lychee introduced an error.
@nagmat84 It makes me wonder if we should add such sanity check to the DB migration file and either delete the offenders or bail out early before leaving the DB in an (even more) inconsistent state?
I assume our posts were written simultaneously. See here. I am already on it. Give me 15min.
SELECT * FROM user_album WHERE album_id NOT IN (SELECT id FROM albums); +----+----------------+---------+ | id | album_id | user_id | +----+----------------+---------+ | 91 | 15023691398618 | 1 | +----+----------------+---------+ 1 row in set (0.00 sec)
No, but it is quite possible you shared album with id 15023691398618 to user 1, and then deleted said album and the database did not update.
the last update didn't crash it. Thanks guys for all your quick support! If you're in the neighbourhood and the pubs are open again I will you buy you a beer!
Diagnostics
-------
Info: Latest version of PHP is 8.1
System Information
--------------
Lychee Version (git): master (32c374d) - Probably more than 30 commits behind master
DB Version: 4.5.0
composer install: --no-dev
APP_ENV: local
APP_DEBUG: false
System: FreeBSD
PHP Version: 8
PHP User agent: Lychee/4 (https://lycheeorg.github.io/)
Max uploaded file size: 100M
Max post size: 100M
Max execution time: 200
MySQL Version: 8.0.27
Imagick: 1
Imagick Active: 1
Imagick Version: 1692
GD Version: 2.3.1
I think @ildyria is in Nijmegen. The rest of us are all over the world :smiley:.
Glad to hear it worked!
HA! That's easy. I'm in Nijmegen as well.
@oblomow Out of curiousity how old is your DB instance? I'm wondering about those album IDs like 2
, 3
, etc. I've seen them like that on screenshots from early versions of Lychee but I've never experienced them myself (and I started with a 3.x version).
@ildyria Don't we have some DB magic in place that deletes said records form user_album
when either the user or the album are deleted?
@kamil4 I don't know. Quite old. That's for sure. If you really want to know, I can start digging.
@ildyria Don't we have some DB magic in place that deletes said records form
user_album
when either the user or the album are deleted?
I am not ildyria, but no, we had not. This was also fixed with my huge PR. Before that there was a comment which said basically something like "oh, oh, I wonder what happens with the albums owned by this user" above the line which deleted a user.
I think, we know the answer.
@oblomow No worries, don't bother. I simply thought at first that you generated those short IDs while manually editing the database but when you denied I remembered that I've seen such short album IDs before -- on our home page no less!
We really should regenerate our screenshots -- what we have there is museum-grade at this point :wink:. They are pretty pictures though...
@oblomow then you should know that there bar and restaurants are still closed. :'D
@ildyria " If you're in the neighbourhood and the pubs are open again I will you buy you a beer!"
read too fast.
Sorry to rain on you parade, but I have the exact same problem while trying to update today. I'm comming from the exact same git revision. I read this whole thread, but have no orphaned album entries.
My install is also very old, comming from before the fork (version 2.x maybe ?) and switch to laravel.
The query SELECT * FROM user_album WHERE album_id NOT IN (SELECT id FROM albums);
gives no result.
Here are my diagnostic, and git pull output.
`
Diagnostics
-------
Warning: Dropbox import not working. dropbox_key is empty.
Warning: lossless_optimization set to 1 but cwebp not found!
Warning: lossless_optimization set to 1 but svgo not found!
Warning: You may experience problems when uploading a photo of large size or handling many/large albums. Take a look in the FAQ for details.
Info: Latest version of PHP is 8.1
System Information
--------------
Lychee Version (git): master (a7de020) - Data not in Cache
DB Version: 4.4.0
composer install: --no-dev
APP_ENV: local
APP_DEBUG: false
System: Linux
PHP Version: 8
PHP User agent: Lychee/4 (https://lycheeorg.github.io/)
Max uploaded file size: 100M
Max post size: 100M
Max execution time: 60
MySQL Version: 10.3.31-MariaDB-0+deb10u1-log
Imagick: 1
Imagick Active: 1
Imagick Version: 1690
GD Version: 2.2.5
Config Information
--------------
version: 040400
check_for_updates: 0
sorting_Photos_col: title
sorting_Photos_order: ASC
sorting_Albums_col: title
sorting_Albums_order: ASC
imagick: 1
skip_duplicates: 1
small_max_width: 0
small_max_height: 360
medium_max_width: 1920
medium_max_height: 1080
lang: fr
layout: 0
image_overlay_type: none
default_license: none
compression_quality: 90
full_photo: 1
delete_imported: 0
Mod_Frame: 1
Mod_Frame_refresh: 30
thumb_2x: 1
small_2x: 1
medium_2x: 1
landing_page_enable: 0
landing_owner:
landing_title:
landing_subtitle:
landing_facebook:
landing_flickr:
landing_twitter:
landing_instagram:
landing_youtube:
landing_background:
site_title: BakaGamer - Screenshots
site_copyright_enable: 0
site_copyright_begin: 2010
site_copyright_end: 2021
additional_footer_text:
display_social_in_gallery: 0
public_search: 0
SL_enable: 0
SL_for_admin: 0
public_recent: 0
recent_age: 1
public_starred: 0
downloadable: 0
photos_wraparound: 1
map_display: 0
zip64: 1
map_display_public: 0
map_provider: Wikimedia
force_32bit_ids: 0
map_include_subalbums: 0
update_check_every_days: 3
has_exiftool: 0
share_button_visible: 0
import_via_symlink: 0
has_ffmpeg: 1
location_decoding: 0
location_decoding_timeout: 30
location_show: 0
location_show_public: 0
rss_enable: 0
rss_recent_days: 7
rss_max_items: 100
prefer_available_xmp_metadata: 0
editor_enabled: 1
lossless_optimization: 1
swipe_tolerance_x: 150
swipe_tolerance_y: 250
local_takestamp_video_formats: .avi|.mov
log_max_num_line: 1000
unlock_password_photos_with_url_param: 0
nsfw_visible: 1
nsfw_blur: 0
nsfw_warning: 1
nsfw_warning_admin: 0
map_display_direction: 1
album_subtitle_type: oldstyle
upload_processing_limit: 3
public_photos_hidden: 1
new_photos_notification: 0`
`git pull --rebase warning: redirecting to https://github.com/LycheeOrg/Lychee.git/ remote: Enumerating objects: 599, done. remote: Counting objects: 100% (599/599), done. remote: Compressing objects: 100% (188/188), done. remote: Total 599 (delta 437), reused 545 (delta 407), pack-reused 0 Receiving objects: 100% (599/599), 433.65 KiB | 5.49 MiB/s, done. Resolving deltas: 100% (437/437), completed with 126 local objects. From https://www.github.com/LycheeOrg/Lychee a7de0208..49fd7691 master -> origin/master de78bd70..633b4c65 consistent_json_api -> origin/consistent_json_api
post merge hook start
--no-dev mode detected
composer install --no-dev --prefer-dist --no-suggest PHP Deprecated: Required parameter $path follows optional parameter $schema in /usr/share/php/JsonSchema/Constraints/UndefinedConstraint.php on line 62
Deprecated: Required parameter $path follows optional parameter $schema in /usr/share/php/JsonSchema/Constraints/UndefinedConstraint.php on line 62 PHP Deprecated: Required parameter $path follows optional parameter $schema in /usr/share/php/JsonSchema/Constraints/UndefinedConstraint.php on line 108
Deprecated: Required parameter $path follows optional parameter $schema in /usr/share/php/JsonSchema/Constraints/UndefinedConstraint.php on line 108 Deprecation Notice: Method ReflectionParameter::getClass() is deprecated in /usr/share/php/Composer/Repository/RepositoryManager.php:130 Deprecation Notice: Method ReflectionParameter::getClass() is deprecated in /usr/share/php/Composer/Repository/RepositoryManager.php:130 Deprecation Notice: Method ReflectionParameter::getClass() is deprecated in /usr/share/php/Composer/Repository/RepositoryManager.php:130 Do not run Composer as root/super user! See https://getcomposer.org/root for details Loading composer repositories with package information Installing dependencies from lock file PHP Fatal error: Uncaught ArgumentCountError: array_merge() does not accept unknown named parameters in /usr/share/php/Composer/DependencyResolver/DefaultPolicy.php:84 Stack trace:
thrown in /usr/share/php/Composer/DependencyResolver/DefaultPolicy.php on line 84
Fatal error: Uncaught ArgumentCountError: array_merge() does not accept unknown named parameters in /usr/share/php/Composer/DependencyResolver/DefaultPolicy.php:84 Stack trace:
thrown in /usr/share/php/Composer/DependencyResolver/DefaultPolicy.php on line 84 php artisan migrate --force
In 2021_12_04_181200_refactor_models.php line 2076:
Interface "Kalnoy\Nestedset\Node" not found
post merge hook finish
Current branch master is up to date.`
Detailed description of the problem
Updating breaks Lychee. ( thank $deity for backups and databasedumps)
Steps to reproduce the issue
Steps to reproduce the behavior:
Screenshots If applicable, add screenshots to help explain your problem.
Output of the diagnostics
Diagnostics
Info: Latest version of PHP is 8.1
System Information
Lychee Version (git): master (a7de020) - Up to date (13 hours ago). DB Version: 4.4.0
composer install: --no-dev APP_ENV: local APP_DEBUG: false
System: FreeBSD PHP Version: 8 PHP User agent: Lychee/4 (https://lycheeorg.github.io/) Max uploaded file size: 100M Max post size: 100M Max execution time: 0 MySQL Version: 8.0.27
Imagick: 1 Imagick Active: 1 Imagick Version: 1692 GD Version: 2.3.1
Config Information
version: 040400 check_for_updates: 1 sorting_Photos_col: taken_at sorting_Photos_order: ASC sorting_Albums_col: title sorting_Albums_order: DESC imagick: 1 skip_duplicates: 0 small_max_width: 0 small_max_height: 360 medium_max_width: 1920 medium_max_height: 1080 lang: en layout: 1 image_overlay_type: date default_license: none compression_quality: 90 full_photo: 1 delete_imported: 0 Mod_Frame: 1 Mod_Frame_refresh: 30 thumb_2x: 1 small_2x: 1 medium_2x: 1 landing_page_enable: 1 landing_owner: Marc landing_title: Marc landing_subtitle: Why stop now? landing_facebook: landing_flickr: landing_twitter: landing_instagram: landing_youtube: landing_background: dist/finland.jpg site_title: fotos site_copyright_enable: 1 site_copyright_begin: 1984 site_copyright_end: 2021 additional_footer_text:
display_social_in_gallery: 0 public_search: 0 SL_enable: 0 SL_for_admin: 0 public_recent: 0 recent_age: 1 public_starred: 0 downloadable: 0 photos_wraparound: 1 map_display: 0 zip64: 1 map_display_public: 0 map_provider: OpenStreetMap.org force_32bit_ids: 0 map_include_subalbums: 0 update_check_every_days: 3 has_exiftool: 1 share_button_visible: 0 import_via_symlink: 0 has_ffmpeg: 0 location_decoding: 0 location_decoding_timeout: 30 location_show: 0 location_show_public: 0 rss_enable: 0 rss_recent_days: 7 rss_max_items: 100 prefer_available_xmp_metadata: 0 editor_enabled: 1 lossless_optimization: 0 swipe_tolerance_x: 150 swipe_tolerance_y: 250 local_takestamp_video_formats: .avi|.mov log_max_num_line: 1000 unlock_password_photos_with_url_param: 0 nsfw_visible: 1 nsfw_blur: 0 nsfw_warning: 0 nsfw_warning_admin: 0 map_display_direction: 1 album_subtitle_type: oldstyle upload_processing_limit: 4 public_photos_hidden: 1 new_photos_notification: 0
Browser and system
Browser: Firefox 96.0