diff --git a/compose.armv7.yaml b/compose.armv7.yaml index 6680cf517..8bce338ad 100644 --- a/compose.armv7.yaml +++ b/compose.armv7.yaml @@ -62,7 +62,7 @@ services: # PHOTOPRISM_THUMB_SIZE: 4096 # Retina 4K, DCI 4K (requires more storage); 7680 for 8K Ultra HD PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680 # On-demand rendering size limit (default 7680, min 720, max 7680) PHOTOPRISM_JPEG_SIZE: 7680 # Size limit for converted image files in pixels (720-30000) - TF_CPP_MIN_LOG_LEVEL: 0 # Show TensorFlow log messages for development + TF_CPP_MIN_LOG_LEVEL: 1 # Show TensorFlow log messages for development ## Enable TensorFlow AVX2 support for modern Intel CPUs (requires starting the container as root): # PHOTOPRISM_INIT: "tensorflow-amd64-avx2" ## Hardware video transcoding config (optional): diff --git a/compose.intel.yaml b/compose.intel.yaml index 17f101b52..826f90584 100644 --- a/compose.intel.yaml +++ b/compose.intel.yaml @@ -109,7 +109,7 @@ services: PHOTOPRISM_THUMB_LIBRARY: "auto" # image processing library to be used for generating thumbnails (auto, imaging, vips) PHOTOPRISM_THUMB_FILTER: "auto" # downscaling filter (imaging best to worst: blackman, lanczos, cubic, linear, nearest) PHOTOPRISM_THUMB_UNCACHED: "true" # enables on-demand thumbnail rendering (high memory and cpu usage) - TF_CPP_MIN_LOG_LEVEL: 0 # show TensorFlow log messages for development + TF_CPP_MIN_LOG_LEVEL: 1 # show TensorFlow log messages for development ## Intel Quick Sync Video (QSV) (https://docs.photoprism.app/getting-started/advanced/transcoding/#intel-quick-sync): PHOTOPRISM_FFMPEG_ENCODER: "intel" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840) diff --git a/compose.latest.yaml b/compose.latest.yaml index 4803d3bcf..7ccbacad1 100644 --- a/compose.latest.yaml +++ b/compose.latest.yaml @@ -57,7 +57,7 @@ services: # PHOTOPRISM_THUMB_SIZE: 4096 # Retina 4K, DCI 4K (requires more storage); 7680 for 8K Ultra HD PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680 # on-demand rendering size limit (default 7680, min 720, max 7680) PHOTOPRISM_JPEG_SIZE: 7680 # size limit for converted image files in pixels (720-30000) - TF_CPP_MIN_LOG_LEVEL: 0 # show TensorFlow log messages for development + TF_CPP_MIN_LOG_LEVEL: 1 # show TensorFlow log messages for development working_dir: "/photoprism" volumes: - "./storage:/photoprism/storage" diff --git a/compose.local.yaml b/compose.local.yaml index a6933434e..1d1be8340 100644 --- a/compose.local.yaml +++ b/compose.local.yaml @@ -58,7 +58,7 @@ services: # PHOTOPRISM_THUMB_SIZE: 4096 # Retina 4K, DCI 4K (requires more storage); 7680 for 8K Ultra HD PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680 # on-demand rendering size limit (default 7680, min 720, max 7680) PHOTOPRISM_JPEG_SIZE: 7680 # size limit for converted image files in pixels (720-30000) - TF_CPP_MIN_LOG_LEVEL: 0 # show TensorFlow log messages for development + TF_CPP_MIN_LOG_LEVEL: 1 # show TensorFlow log messages for development # PHOTOPRISM_INIT: "http gpu tensorflow" # Options: "update https gpu tensorflow davfs clitools clean" PHOTOPRISM_FFMPEG_ENCODER: "nvidia" # Options: "software", "intel", "nvidia", "apple", "raspberry" PHOTOPRISM_STORAGE_PATH: "/photoprism/storage" diff --git a/compose.nvidia.yaml b/compose.nvidia.yaml index af5033dc0..5882f3860 100644 --- a/compose.nvidia.yaml +++ b/compose.nvidia.yaml @@ -111,7 +111,7 @@ services: PHOTOPRISM_THUMB_LIBRARY: "auto" # image processing library to be used for generating thumbnails (auto, imaging, vips) PHOTOPRISM_THUMB_FILTER: "auto" # downscaling filter (imaging best to worst: blackman, lanczos, cubic, linear, nearest) PHOTOPRISM_THUMB_UNCACHED: "true" # enables on-demand thumbnail rendering (high memory and cpu usage) - TF_CPP_MIN_LOG_LEVEL: 0 # show TensorFlow log messages for development + TF_CPP_MIN_LOG_LEVEL: 1 # show TensorFlow log messages for development ## Nvidia Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/#nvidia-container-toolkit): NVIDIA_VISIBLE_DEVICES: "all" NVIDIA_DRIVER_CAPABILITIES: "all" diff --git a/compose.postgres.yaml b/compose.postgres.yaml index 5e8984bbd..af84f85b2 100644 --- a/compose.postgres.yaml +++ b/compose.postgres.yaml @@ -65,7 +65,7 @@ services: # PHOTOPRISM_THUMB_SIZE: 4096 # Retina 4K, DCI 4K (requires more storage); 7680 for 8K Ultra HD PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680 # on-demand rendering size limit (default 7680, min 720, max 7680) PHOTOPRISM_JPEG_SIZE: 7680 # size limit for converted image files in pixels (720-30000) - TF_CPP_MIN_LOG_LEVEL: 0 # show TensorFlow log messages for development + TF_CPP_MIN_LOG_LEVEL: 1 # show TensorFlow log messages for development ## PostgreSQL Database Server ## Docs: https://www.postgresql.org/docs/ diff --git a/compose.preview.yaml b/compose.preview.yaml index fe39d117c..183d34c00 100644 --- a/compose.preview.yaml +++ b/compose.preview.yaml @@ -57,7 +57,7 @@ services: # PHOTOPRISM_THUMB_SIZE: 4096 # Retina 4K, DCI 4K (requires more storage); 7680 for 8K Ultra HD PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680 # on-demand rendering size limit (default 7680, min 720, max 7680) PHOTOPRISM_JPEG_SIZE: 7680 # size limit for converted image files in pixels (720-30000) - TF_CPP_MIN_LOG_LEVEL: 0 # show TensorFlow log messages for development + TF_CPP_MIN_LOG_LEVEL: 1 # show TensorFlow log messages for development working_dir: "/photoprism" volumes: - "./storage:/photoprism/storage" diff --git a/compose.yaml b/compose.yaml index 08c73354d..7b6a4e5c1 100644 --- a/compose.yaml +++ b/compose.yaml @@ -118,7 +118,7 @@ services: PHOTOPRISM_THUMB_LIBRARY: "auto" # image processing library to be used for generating thumbnails (auto, imaging, vips) PHOTOPRISM_THUMB_FILTER: "auto" # downscaling filter (imaging best to worst: blackman, lanczos, cubic, linear, nearest) PHOTOPRISM_THUMB_UNCACHED: "true" # enables on-demand thumbnail rendering (high memory and cpu usage) - TF_CPP_MIN_LOG_LEVEL: 0 # show TensorFlow log messages for development + TF_CPP_MIN_LOG_LEVEL: 1 # show TensorFlow log messages for development ## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/): # PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) # PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840) diff --git a/docker/develop/armv7/Dockerfile b/docker/develop/armv7/Dockerfile index 5c0f45830..0e081079e 100644 --- a/docker/develop/armv7/Dockerfile +++ b/docker/develop/armv7/Dockerfile @@ -31,7 +31,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ TF_VERSION=1.15.2 \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ GOBIN="/usr/local/bin" \ diff --git a/docker/develop/bookworm/Dockerfile b/docker/develop/bookworm/Dockerfile index d7313a2a8..83c581110 100644 --- a/docker/develop/bookworm/Dockerfile +++ b/docker/develop/bookworm/Dockerfile @@ -30,7 +30,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ TF_ENABLE_ONEDNN_OPTS=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ diff --git a/docker/develop/bullseye/Dockerfile b/docker/develop/bullseye/Dockerfile index 197f68367..eacb1a5ab 100644 --- a/docker/develop/bullseye/Dockerfile +++ b/docker/develop/bullseye/Dockerfile @@ -30,7 +30,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ TF_ENABLE_ONEDNN_OPTS=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ diff --git a/docker/develop/buster/Dockerfile b/docker/develop/buster/Dockerfile index d930db2b4..72a96ae2a 100644 --- a/docker/develop/buster/Dockerfile +++ b/docker/develop/buster/Dockerfile @@ -30,7 +30,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ NODE_ENV="production" \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ TF_ENABLE_ONEDNN_OPTS=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ diff --git a/docker/develop/impish/Dockerfile b/docker/develop/impish/Dockerfile index d49ed6172..0b2afe86f 100644 --- a/docker/develop/impish/Dockerfile +++ b/docker/develop/impish/Dockerfile @@ -30,7 +30,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ NODE_ENV="production" \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ TF_ENABLE_ONEDNN_OPTS=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ diff --git a/docker/develop/jammy/Dockerfile b/docker/develop/jammy/Dockerfile index 87b6c95b4..a36be7659 100644 --- a/docker/develop/jammy/Dockerfile +++ b/docker/develop/jammy/Dockerfile @@ -30,7 +30,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ TF_ENABLE_ONEDNN_OPTS=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ diff --git a/docker/develop/lunar/Dockerfile b/docker/develop/lunar/Dockerfile index 45b31d7ca..13d35bee6 100644 --- a/docker/develop/lunar/Dockerfile +++ b/docker/develop/lunar/Dockerfile @@ -30,7 +30,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ TF_ENABLE_ONEDNN_OPTS=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ diff --git a/docker/develop/mantic/Dockerfile b/docker/develop/mantic/Dockerfile index 55e3555f0..a765ca9ce 100644 --- a/docker/develop/mantic/Dockerfile +++ b/docker/develop/mantic/Dockerfile @@ -30,7 +30,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ TF_ENABLE_ONEDNN_OPTS=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ diff --git a/docker/develop/noble/Dockerfile b/docker/develop/noble/Dockerfile index 91ba4546a..1bd54b123 100644 --- a/docker/develop/noble/Dockerfile +++ b/docker/develop/noble/Dockerfile @@ -30,7 +30,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ TF_ENABLE_ONEDNN_OPTS=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ diff --git a/docker/develop/oracular/Dockerfile b/docker/develop/oracular/Dockerfile index c571bdd03..c8dee7f4b 100644 --- a/docker/develop/oracular/Dockerfile +++ b/docker/develop/oracular/Dockerfile @@ -30,7 +30,7 @@ ENV PHOTOPRISM_ARCH=$TARGETARCH \ LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ DEBIAN_FRONTEND="noninteractive" \ TMPDIR="/tmp" \ - TF_CPP_MIN_LOG_LEVEL=0 \ + TF_CPP_MIN_LOG_LEVEL=1 \ TF_ENABLE_ONEDNN_OPTS=1 \ MALLOC_ARENA_MAX=4 \ GOPATH="/go" \ diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 09552167b..93b419de7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -3795,15 +3795,15 @@ } }, "node_modules/@pkgr/core": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.2.tgz", - "integrity": "sha512-25L86MyPvnlQoX2MTIV2OiUcb6vJ6aRbFa9pbwByn95INKD5mFH2smgjDhq+fwJoqAgvgbdJLj6Tz7V9X5CFAQ==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz", + "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/pkgr" } }, "node_modules/@polka/url": { @@ -6342,9 +6342,9 @@ } }, "node_modules/cssdb": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.4.tgz", - "integrity": "sha512-3KSCVkjZJe/QxicVXnbyYSY26WsFc1YoMY7jep1ZKWMEVc7jEm6V2Xq2r+MX8WKQIuB7ofGbnr5iVI+aZpoSzg==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.5.tgz", + "integrity": "sha512-leAt8/hdTCtzql9ZZi86uYAmCLzVKpJMMdjbvOGVnXFXz/BWFpBmM1MHEHU/RqtPyRYmabVmEW1DtX3YGLuuLA==", "funding": [ { "type": "opencollective", @@ -6995,9 +6995,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.136", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.136.tgz", - "integrity": "sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==", + "version": "1.5.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz", + "integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==", "license": "ISC" }, "node_modules/emmet": { @@ -7747,9 +7747,9 @@ } }, "node_modules/eslint-webpack-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-5.0.0.tgz", - "integrity": "sha512-iDhXf2r55KO1UhMfpus8oGp93wdNF+934q5kEkwa7qn3BH9f51QEC11xQidt+8jfqRnEYYZa2/8lhac7U/vqWw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-Ur100Vi+z0uP7j4Z8Ccah0pXmNHhl3f7P2hCYZj3mZCOSc33G5c1R/vZ4KCapwWikPgRyD4dkangx6JW3KaVFQ==", "license": "MIT", "dependencies": { "@types/eslint": "^9.6.1", @@ -10709,9 +10709,9 @@ } }, "node_modules/maplibre-gl": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-5.3.0.tgz", - "integrity": "sha512-qru6B6jHlDPR4Q9/P4W1zEPbPofR4wwYbrrjiHKWI7yLtyXmpJ1/G1KaIYDr5uNdFbPZ7uiZAWdqtfdNLmIhGg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-5.3.1.tgz", + "integrity": "sha512-Ihx+oUUSsZkjMou1Cw5J6silE+5OtFFQSPslWF9+7v4yFC/XDHrpsORYO9lWE4KZI0djCEUpZQJpkpnMArAbeA==", "license": "BSD-3-Clause", "dependencies": { "@mapbox/geojson-rewind": "^0.5.2", @@ -15270,12 +15270,12 @@ } }, "node_modules/synckit": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.3.tgz", - "integrity": "sha512-szhWDqNNI9etJUvbZ1/cx1StnZx8yMmFxme48SwR4dty4ioSY50KEZlpv0qAfgc1fpRzuh9hBXEzoCpJ779dLg==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.4.tgz", + "integrity": "sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==", "license": "MIT", "dependencies": { - "@pkgr/core": "^0.2.1", + "@pkgr/core": "^0.2.3", "tslib": "^2.8.1" }, "engines": { diff --git a/frontend/src/common/config.js b/frontend/src/common/config.js index e13fe3280..cef1de4dd 100644 --- a/frontend/src/common/config.js +++ b/frontend/src/common/config.js @@ -859,6 +859,10 @@ export default class Config { } getIcon() { + if (this.theme?.variables?.icon) { + return this.theme.variables.icon; + } + switch (this.get("appIcon")) { case "crisp": case "mint": @@ -869,6 +873,15 @@ export default class Config { } } + getLoginIcon() { + const loginTheme = themes.Get("login"); + if (loginTheme?.variables?.icon) { + return loginTheme?.variables?.icon; + } + + return this.getIcon(); + } + getVersion() { return this.version; } diff --git a/frontend/src/component/auth/footer.vue b/frontend/src/component/auth/footer.vue index a965fdf2f..66cac4e0c 100644 --- a/frontend/src/component/auth/footer.vue +++ b/frontend/src/component/auth/footer.vue @@ -5,7 +5,11 @@ - + + {{ loginInfo }} + {{ loginInfo }} + + {{ legalInfo }} {{ legalInfo }} @@ -32,6 +36,7 @@ export default { caption: config.values.siteCaption ? config.values.siteCaption : config.values.siteTitle, legalUrl: config.values.legalUrl, legalInfo: config.values.legalInfo, + loginInfo: config.values.loginInfo, config: config.values, rtl: this.$isRtl, }; diff --git a/frontend/src/options/themes.js b/frontend/src/options/themes.js index 4f3c9c930..166acd4a7 100644 --- a/frontend/src/options/themes.js +++ b/frontend/src/options/themes.js @@ -934,6 +934,15 @@ export const Set = (name, theme) => { themes[name] = theme; }; +// Assign adds or replaces multiple themes at once. +export const Assign = (t) => { + for (const theme of t) { + if (theme?.name && theme?.colors) { + Set(theme.name, theme); + } + } +}; + // Remove deletes a theme by name. export const Remove = (name) => { delete themes[name]; diff --git a/frontend/src/page/auth/login.vue b/frontend/src/page/auth/login.vue index 9961be344..0ae9e53be 100644 --- a/frontend/src/page/auth/login.vue +++ b/frontend/src/page/auth/login.vue @@ -131,7 +131,7 @@