[BUG] Hidden people marked as "shown" in "Show & hide people" #5689

Open
opened 2026-02-05 11:39:36 +03:00 by OVERLORD · 5 comments
Owner

Originally created by @gaetanboulard on GitHub (Mar 27, 2025).

I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.

  • Yes

The bug

In "Show & hide people", hidden faces should be grayed out with an barred-eye icon.
This does not happen if they are loaded after scrolling down.

The OS that Immich Server is running on

Truenas 24.10

Version of Immich Server

v1.130.1

Version of Immich Mobile App

N.A.

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

default truenas app

Your .env content

default truenas app

Reproduction steps

Setup:

  1. Create more than 500 people (pagination for GET /people seems to be set at 500)
  2. Hide some people.

See error:

  1. Login to the website
  2. Go to Explore -> People -> View all -> "Show & hide people"
  3. Scroll down until page has to load new people
    4 All newly loaded faces are marked as visible, even those that should be marked as hidden

Relevant log output


Additional information

No response

Originally created by @gaetanboulard on GitHub (Mar 27, 2025). ### I have searched the existing issues, both open and closed, to make sure this is not a duplicate report. - [x] Yes ### The bug In "Show & hide people", hidden faces should be grayed out with an barred-eye icon. This does not happen if they are loaded after scrolling down. ### The OS that Immich Server is running on Truenas 24.10 ### Version of Immich Server v1.130.1 ### Version of Immich Mobile App N.A. ### Platform with the issue - [ ] Server - [x] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML default truenas app ``` ### Your .env content ```Shell default truenas app ``` ### Reproduction steps Setup: 1. Create more than 500 people (pagination for GET /people seems to be set at 500) 2. Hide some people. See error: 1. Login to the website 2. Go to Explore -> People -> View all -> "Show & hide people" 3. Scroll down until page has to load new people 4 All newly loaded faces are marked as visible, even those that should be marked as hidden ### Relevant log output ```shell ``` ### Additional information _No response_
OVERLORD added the 🖥️web label 2026-02-05 11:39:36 +03:00
Author
Owner

@Alfenstein8 commented on GitHub (Jun 10, 2025):

I can confirm that this is also an issue on immich v1.134.0.
When hiding a person that is in many photos, the person is placed last in "Show & hide people". Which triggers this bug if you have a lot of people.
But pressing the "done" button does not unhide the "hidden" person, so it seems like it's just a UI issue. You have to first hide and then unhide the person to actually unhide the person.

@Alfenstein8 commented on GitHub (Jun 10, 2025): I can confirm that this is also an issue on immich [v1.134.0](https://github.com/immich-app/immich/releases/tag/v1.134.0). When hiding a person that is in many photos, the person is placed last in "Show & hide people". Which triggers this bug if you have a lot of people. But pressing the "done" button does not unhide the "hidden" person, so it seems like it's just a UI issue. You have to first hide and then unhide the person to actually unhide the person.
Author
Owner

@ptr727 commented on GitHub (Dec 27, 2025):

Same here, was just very confused why hidden people show up again, this is with 2.4.1, page says Show & hide people (3,184)

@ptr727 commented on GitHub (Dec 27, 2025): Same here, was just very confused why hidden people show up again, this is with 2.4.1, page says `Show & hide people (3,184)`
Author
Owner

@bigstusexy commented on GitHub (Jan 19, 2026):

I'm adding to this, I'm not sure if I'm having the same issue or not.
I named some people, then immediately hid them. I thought in some ways maybe they'd always show or at least I could add to them while hidden but I cannot.
I went to show hide people and I cannot find them. I searched for the name and by the browser and it will seek to a certain row but they aren't listed.

There is no way I can go to the end of all face, I have over 26k faces, only some named.
Ver 2.4.1
Web

@bigstusexy commented on GitHub (Jan 19, 2026): I'm adding to this, I'm not sure if I'm having the same issue or not. I named some people, then immediately hid them. I thought in some ways maybe they'd always show or at least I could add to them while hidden but I cannot. I went to show hide people and I cannot find them. I searched for the name and by the browser and it will seek to a certain row but they aren't listed. There is no way I can go to the end of all face, I have over 26k faces, only some named. Ver 2.4.1 Web
Author
Owner

@bigstusexy commented on GitHub (Jan 19, 2026):

A one by one work around:
Find an image with the person in it. Look at the information, you'll see a list of people and there will be an 'eye' icon, click it and it'll show then, from there you can go into the person, three dots and unhide them.

@bigstusexy commented on GitHub (Jan 19, 2026): A one by one work around: Find an image with the person in it. Look at the information, you'll see a list of people and there will be an 'eye' icon, click it and it'll show then, from there you can go into the person, three dots and unhide them.
Author
Owner

@nicosemp commented on GitHub (Jan 21, 2026):

I believe the issue is in this file at line 90 https://github.com/immich-app/immich/blob/main/web/src/lib/components/faces-page/manage-people-visibility.svelte#L90

let personIsHidden = $state(getPersonIsHidden(people)); // this is not recomputed when the infinite scroll loads the next page.

The solution could be to define it at the beginning like so:

let personIsHidden = $state<Record<string, boolean>>({});

and replacing line 90 with an effect like this:

$effect(() => {
  for (const person of people) {
    if (!(person.id in personIsHidden)) {
      personIsHidden[person.id] = person.isHidden;
    }
  }
});

If that's correct I could create a PR but I don't have the local environment setup right now, plus I can't verify the fix without uploading hundreds of dummy images and running facial recognition. I guess we need a maintainer to take a look at this.

@nicosemp commented on GitHub (Jan 21, 2026): I believe the issue is in this file at line 90 https://github.com/immich-app/immich/blob/main/web/src/lib/components/faces-page/manage-people-visibility.svelte#L90 ```ts let personIsHidden = $state(getPersonIsHidden(people)); // this is not recomputed when the infinite scroll loads the next page. ``` The solution could be to define it at the beginning like so: ```ts let personIsHidden = $state<Record<string, boolean>>({}); ``` and replacing line 90 with an effect like this: ```ts $effect(() => { for (const person of people) { if (!(person.id in personIsHidden)) { personIsHidden[person.id] = person.isHidden; } } }); ``` If that's correct I could create a PR but I don't have the local environment setup right now, plus I can't verify the fix without uploading hundreds of dummy images and running facial recognition. I guess we need a maintainer to take a look at this.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#5689