I’ll be happy to provide the specifics of my environment if that’ll help with testing. As I said, I’m using the macOS version of tonfotos (1.13.8) on macOS Sequoia 15.6.1, and browsing a Ubuntu server (running 24.04.3 LTS) via SMB over my home LAN. The SMB share I’m accessing is configured simply in /etc/samba/smb.conf:
[photoprism]
comment = opt directory on photoprism server
path = /opt
read only = no
browseable = yes
The server is also running photoprism ( https://www.photoprism.app ) in Docker, and my photos directory is used by both the photoprism Docker instance (via a Docker volume) and shared via smbd.
The files showing up in tonfotos Folder tab as “broken image” icons are metadata files used by macOS to store attributes of files located on network shares (like SMB), and have the same filename as the file they’re describing, with “dot underscore” ._ in front. So, for an image file called filename.jpg , there would be a corresponding ._filename.jpg file. As you know, the dot character in front of the filename is macOS’ convention for “hidden” files, which are not ordinarily displayed in the Finder, like the .tonfotos.ini file that tonfotos uses. But these “dot underscore” files don’t even show up in the Finder if you press Command + Shift + . to display hidden files, unlike tonfotos’ ini file.
As an example, if I use macOS’s Terminal.app to look at my network volume /Volumes/photoprism/photoprism/originals/1994 , and use ls -al , I can see both the dot underscore files, and the files they’re describing listed.
:uname@Mac 1994 % ls -al
total 1288
drwx—— 1 uname staff 16384 Sep 22 04:52 .
-rwx—— 1 uname staff 4096 Sep 22 04:52 ..tonfotos.ini
-rwx—— 1 uname staff 4096 Sep 20 16:38 .20120224_135359_1D3B1030.jpg
-rwx—— 1 uname staff 4096 Sep 20 16:38 .20120224_135359_5B8EF6E6.jpg
-rwx—— 1 uname staff 4096 Sep 20 16:38 .20120224_135359_E12E0F8A.jpg
-rwx—— 1 uname staff 4096 Sep 22 04:26 ._20161115_104028_5CC6E68F.jpg
drwx—— 1 uname staff 16384 Sep 21 19:41 ..
-rwx——@ 1 uname staff 449 Sep 22 04:52 .tonfotos.ini
-rwx——@ 1 uname staff 189395 Sep 20 16:38 20120224_135359_1D3B1030.jpg
-rwx——@ 1 uname staff 197219 Sep 20 16:38 20120224_135359_5B8EF6E6.jpg
-rwx——@ 1 uname staff 142489 Sep 20 16:38 20120224_135359_E12E0F8A.jpg
-rwx——@ 1 uname staff 64881 Sep 22 04:26 20161115_104028_5CC6E68F.jpg
What’s confusing to tonfotos is that the dot underscore files and the actual image files both have .jpg extensions, so tonfotos tries to display them, and reads them as “corrupted”. As a test, I created a new directory on the SMB server ( /Volumes/photoprism/photoprism/originals/1996 ), and created a test .jpg file in my image editor (a 800×600 JPEG filled with 50% gray). Once I saved my 50gray.jpg to the network share, ls -al looks like this:
uname@Mac 1996 % ls -al
total 96
drwx—— 1 uname staff 16384 Sep 22 05:59 .
-rwx—— 1 uname staff 4096 Sep 22 05:59 ._50gray.jpg
drwx—— 1 uname staff 16384 Sep 22 05:53 ..
-rwx——@ 1 uname staff 9703 Sep 22 05:59 50gray.jpg
So it’s clearly macOS creating these dot underscore files on the share.