Skip to content

[Bug]: Cannot save name using Japanese IME on the People page (/people) #32715

Open

Description

@chobi2000

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

  • Yes

The bug

Describe the bug

On the People page (https://<immich_server_url>/people), entering a name into the "Add a name" input field under an unnamed person's avatar fails when using a Japanese IME (Input Method Editor).

After typing a name in Japanese and confirming the composition (pressing Enter to commit the characters), the text is not registered/saved, leaving the person unnamed.

However, if Japanese text is copied to the clipboard and pasted directly into the field while the IME is turned off, the name is saved without issues. This suggests it is not a character encoding problem, but rather an issue handling IME composition events (such as compositionstart / compositionend / Enter key handling) in this specific input component.

Additionally, this problem does not occur on the individual person's detail page (/people/[id]); setting a Japanese name there works properly.

Steps to reproduce

  1. Navigate to the People page (/people).
  2. Locate an unnamed detected face with the "Add a name" placeholder.
  3. Turn on a Japanese IME.
  4. Type a name in Japanese and confirm the input (press Enter to finish IME composition).
  5. The name fails to save/register and the field reverts or remains unset.

Expected behavior

The Japanese name confirmed via IME should be saved properly, identical to pasting text or inputting text on the individual person's detail page.

Additional information

  • Copy-pasting pre-typed Japanese text into the field works normally.
  • Renaming directly from the individual person's page works without issue.

The OS that Immich Server is running on

26.04.1 LTS

Version of Immich Server

3.3.5

Version of Immich Mobile App

3.3.5 build26

Platform with the issue

  • Server
  • Web
  • Mobile

Device make and model

Mac mini M4 Pro

Your docker-compose.yml content

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:v3
    user: "${UID}:${GID}"
    volumes:
      # アップロード領域(/mnt/disk1/docker/immich/library 配下)
      - ./library:/data
      # 既存写真フォルダの参照(読み取り専用)
      - /mnt/disk1/hitoshi/Pictures:/mnt/external_pictures:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      TZ: Asia/Tokyo
      LANG: C.UTF-8
      LC_ALL: C.UTF-8
    # Cloudflare Tunnel / Nginx 経由でのみアクセスするため ports は削除
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false
    networks:
      - be-immich

  # immich-machine-learning:
  #   container_name: immich_machine_learning
  #   image: ghcr.io/immich-app/immich-machine-learning:v3
  #   user: "${UID}:${GID}"
  #   volumes:
  #     - model-cache:/cache
  #   environment:
  #     MACHINE_LEARNING_MODEL_REVISION: v2
  #   restart: always
  #   healthcheck:
  #     disable: false
  #   networks:
  #     - be-immich

  redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:9
    user: "${UID}:${GID}"
    healthcheck:
      test: redis-cli ping | grep -q PONG || exit 1
    restart: always
    networks:
      - be-immich

  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
      POSTGRES_DB: immich
      POSTGRES_INITDB_ARGS: --data-checksums
      DB_STORAGE_TYPE: SSD
      PUID: ${UID}
      PGID: ${GID}
    volumes:
      # 内蔵SSD上のDB領域
      - /var/lib/immich/postgres:/var/lib/postgresql/data
    shm_size: 128mb
    restart: always
    healthcheck:
      disable: false
    networks:
      - be-immich

volumes:
  model-cache:

networks:
  be-immich:
    external: true

------
immich-ML on a different machine

services:
  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:release
    environment:
      - MACHINE_LEARNING_WORKERS=4
      - MACHINE_LEARNING_MODEL_TTL=300
      - ONNX_NUM_THREADS=4
      - OMP_NUM_THREADS=4    
    volumes:
      - model-cache:/cache
    ports:
      - "3003:3003"
    restart: always

volumes:
  model-cache:

Your .env content

UID=2000
GID=2000

Reproduction steps

  1. Open /people page
  2. Select an unnamed person
  3. select the textbox beneath with a place holder "add a name"
  4. input some Japanese name with Japanese IME on.
  5. Press Enter key
    ...

Relevant log output

Additional information

No response

Activity

  1. chobi2000 commented on Oct 26, 2026

    @chobi2000
    Author

    Possible Root Cause (Technical Note)

    In the inline name input component on the /people page, the keydown event listener appears to handle the Enter key without checking event.isComposing (or event.keyCode === 229).

    When using a CJK (Japanese/Chinese/Korean) IME, pressing Enter to confirm character composition triggers the keydown handler prematurely—before compositionend updates the bound state variable (bind:value), or causes the input to blur/reset while the value is still empty.

    Adding a guard clause in the keydown handler should resolve this:

    if (event.key === 'Enter' && !event.isComposing) {
      // trigger save / submit
    }
  2. added theissue type on Oct 27, 2026
  3. moved this from To triage to Ready in Issue Trackeron Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions