1) Use NFOs for metadata and save watch status in the NFO.
2) Use an external service like Trakt or Simkl. Sync your watch status to either service then sync back in.
Trakt has recently added a lot of restrictions on free accounts, so I'm not sure if that is a viable option anymore. And our Simkl plugin is pretty basic at the moment (advanced features similar to Trakt are a WIP).
NFOs might be the best route. Especially if you already use NFOs.
Jellyfin 10.11.11 (Docker)
Debian 13 w/Xanmod amd64v3 LTS kernel
AMD Ryzen 5500 w/32GB DDR4
Intel Arc A380
OS drive - SK Hynix P41 1TB
ZFS Storage pool
vdev1 - 6x WD Red Pro 6TB CMR in RAIDZ1
vdev2 - 3x WD Red Pro 18TB CMR in RAIDZ1