AI-Powered Photos App for the Decentralized Web 🌈💎✨
354 matches across 12 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .ldap.cfg | 24 | displayName = "John Doe" |
| LOW | docker/ddns/config/ddns.yml | 53 | user: "foo@bar.com" |
| LOW | frontend/tests/vitest/fixtures.js | 141 | user: { ID: 1, UID: "urjysof3b9v7lgex", Name: "test", Email: "test@test.com" }, |
| LOW | frontend/tests/vitest/fixtures.js | 155 | user: { ID: 1, UID: "urjysof3b9v7lgex", Name: "test", Email: "test@test.com" }, |
| LOW | frontend/tests/vitest/fixtures.js | 168 | user: { ID: 1, UID: "urjysof3b9v7lgex", Name: "test", Email: "test@test.com" }, |
| LOW | frontend/tests/vitest/fixtures.js | 181 | user: { ID: 1, UID: "urjysof3b9v7lgex", Name: "test", Email: "test@test.com" }, |
| LOW | frontend/tests/vitest/component/settings/webdav.test.js | 39 | const wrapper = mountWebdavDialog({ userName: "user@example.com" }); |
| LOW | frontend/tests/vitest/component/settings/webdav.test.js | 40 | const expected = `${window.location.protocol}//${encodeURIComponent("user@example.com")}@${window.location.host}/ori |
| LOW | …ntend/tests/vitest/component/meta/face/markers.test.js | 107 | { UID: "m1", Name: "Jane Doe", X: 0.1, Y: 0.1, W: 0.2, H: 0.2 }, |
| LOW | …ntend/tests/vitest/component/meta/face/markers.test.js | 117 | expect(namedTitle.textContent).toBe("Jane Doe"); |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 192 | { UID: "m1", CropID: "crop1", Name: "Jane Doe", SubjUID: "subj1", thumbnailUrl: () => "/t/thumb1/public/tile_160 |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 487 | expect(wrapper.vm.people[0].Name).toBe("Jane Doe"); |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 550 | expect(wrapper.html()).toContain("Jane Doe"); |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 838 | w.vm.onClearSubject({ UID: "m1", SubjUID: "subj1", Name: "Jane Doe" }); |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 908 | expect(w.vm.markerInputValue("m1")).toBe("Jane Doe"); |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 1302 | const marker = { UID: "m1", Name: "Jane Doe", SubjUID: "subj1", thumbnailUrl: () => "/t/x/p/tile_160" }; |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 2266 | w.vm.navigateToPerson({ UID: "m1", Name: "Jane Doe", SubjUID: "subj1" }); |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 3470 | expect(html).not.toContain("Jane Doe"); |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 3596 | namedMarker: "Jane Doe", |
| LOW | …ontend/tests/vitest/component/photo/people-tab.test.js | 18 | Name: "John Doe", |
| LOW | …ontend/tests/vitest/component/photo/people-tab.test.js | 38 | Name: "John Doe", |
| LOW | frontend/tests/vitest/common/session.test.js | 57 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/session.test.js | 100 | expect(result.Email).toBe("test@test.com"); |
| LOW | frontend/tests/vitest/common/session.test.js | 121 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/session.test.js | 128 | expect(result).toBe("test@test.com"); |
| LOW | frontend/tests/vitest/common/session.test.js | 133 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/session.test.js | 151 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/session.test.js | 167 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/session.test.js | 185 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/session.test.js | 196 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/session.test.js | 236 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/session.test.js | 254 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/session.test.js | 272 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/common/form.test.js | 134 | "user@example.com", |
| LOW | frontend/tests/vitest/common/form.test.js | 234 | expect(requiredEmail[1]("user@example.com")).toBe(true); |
| LOW | frontend/tests/vitest/model/user.test.js | 16 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 28 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 42 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 54 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 68 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 80 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 92 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 108 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 126 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 138 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 144 | expect(result2).toBe("test@test.com"); |
| LOW | frontend/tests/vitest/model/user.test.js | 191 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 215 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/user.test.js | 317 | Email: "test@test.com", |
| LOW | frontend/tests/vitest/model/subject.test.js | 49 | Name: "Jane Doe", |
| LOW | frontend/tests/vitest/model/subject.test.js | 63 | Name: "Jane Doe", |
| LOW | frontend/tests/vitest/model/subject.test.js | 83 | Name: "Jane Doe", |
| LOW | frontend/tests/vitest/model/subject.test.js | 104 | Name: "Jane Doe", |
| LOW | frontend/tests/vitest/model/subject.test.js | 120 | Name: "Jane Doe", |
| LOW | frontend/tests/vitest/model/subject.test.js | 128 | expect(result).toBe("Jane Doe"); |
| LOW | frontend/tests/vitest/model/subject.test.js | 136 | Name: "Jane Doe", |
| LOW | frontend/tests/vitest/model/subject.test.js | 152 | Name: "Jane Doe", |
| LOW | frontend/tests/vitest/model/subject.test.js | 168 | Name: "Jane Doe", |
| LOW | frontend/tests/vitest/model/subject.test.js | 186 | Name: "Jane Doe", |
| LOW | frontend/tests/vitest/model/subject.test.js | 201 | Name: "Jane Doe", |
| 101 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .golangci.yml | 61 | - nolint |
| LOW | compose.nvidia.yaml | 201 | OLLAMA_CONTEXT_LENGTH: "4096" # maximum input context length |
| LOW | compose.yaml | 321 | OLLAMA_SCHED_SPREAD: "false" # allows scheduling models across all GPUs. |
| LOW | .qdrant.yaml | 1 | log_level: INFO |
| LOW | .qdrant.yaml | 21 | snapshots_path: ./snapshots |
| LOW | .qdrant.yaml | 61 | # node_type: "Listener" |
| LOW | .qdrant.yaml | 81 | # If null - auto selection. |
| LOW | .qdrant.yaml | 101 | optimizers: |
| LOW | .qdrant.yaml | 121 | # |
| LOW | .qdrant.yaml | 141 | indexing_threshold_kb: 20000 |
| LOW | .qdrant.yaml | 161 | # flush_interval_sec: 5 |
| LOW | .qdrant.yaml | 261 | # If enabled, browsers would be allowed to query REST endpoints regardless of query origin. |
| LOW | .qdrant.yaml | 281 | # api_key: your_secret_api_key_here |
| LOW | .qdrant.yaml | 321 | # Setting this parameter to lower value will allow consensus |
| LOW | compose.armv7.yaml | 61 | PHOTOPRISM_UPLOAD_ALLOW: "" # restricts uploads to these file types (comma-separated list of EX |
| LOW | docker/demo/setup.sh | 1 | #!/usr/bin/env bash |
| LOW | docker/demo/jobs.ini | 1 | # See https://github.com/mcuadros/ofelia/blob/master/docs/jobs.md for job settings! |
| LOW | docker/ddns/config/ddns.yml | 1 | # DigitalOcean DynDNS Config |
| LOW | frontend/tests/vitest/component/lightbox.basic.test.js | 141 | expect(localStorage.getItem(captionKey)).toBeNull(); |
| LOW | frontend/tests/vitest/component/lightbox.basic.test.js | 561 | // exitFaceMarkerMode delegates to the singleton's exit() — the |
| LOW | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 41 | thumb: () => ({ src: "/t.jpg", w: 100, h: 100 }), |
| LOW | frontend/tests/vitest/common/view.test.js | 121 | // obvious (it intercepts iOS swipe-back / pull-to-refresh / horizontal- |
| LOW | frontend/tests/vitest/model/thumb.test.js | 381 | // in fixtures.js plus Mock.history for the request log. |
| LOW | frontend/tests/vitest/model/photo.test.js | 2281 | // malformed-payload guard, not a silent no-op for valid data). |
| LOW | frontend/tests/vitest/helpers/jsdom-quiet.js | 1 | // Quiet jsdom's known false-positive CSS-parser warnings on |
| LOW | frontend/tests/vitest/helpers/jsdom-quiet.js | 21 | // enough to cover Vuetify, Vuetify-derived components, and our |
| LOW | frontend/src/options/face-marker.js | 1 | // Face-marker UI state-machine values. Shared between the lightbox |
| LOW | frontend/src/component/photo/edit/labels.vue | 201 | newLabelModel: null, |
| LOW | frontend/src/common/event.js | 41 | // kept in sync with EntityCreated / EntityUpdated / EntityDeleted / |
| LOW | frontend/src/model/rest.js | 41 | // Returns a new instance of the same subclass populated with the |
| LOW | frontend/src/model/rest.js | 221 | |
| LOW | frontend/src/model/model-cache.js | 41 | } |
| LOW | setup/podman/docker-compose.yml | 1 | version: '3.5' |
| LOW | setup/podman/docker-compose.yml | 21 | # Stop | podman-compose stop |
| LOW | setup/podman/docker-compose.yml | 101 | PHOTOPRISM_INIT: "https tensorflow" # common options: update https tensorflow tensorflow-gpu intel gpu |
| LOW | setup/podman/docker-compose.yml | 141 | MARIADB_PASSWORD: "insecure" |
| LOW | setup/docker/compose.yaml | 1 | # Example Docker Compose config file for PhotoPrism (Linux / AMD64) |
| LOW | setup/docker/compose.yaml | 101 | ## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/): |
| LOW | setup/docker/compose.yaml | 121 | # "/host/folder:/photoprism/folder" # Example |
| LOW | setup/docker/compose.yaml | 161 | # MARIADB_REPLICATION_PASSWORD: "" |
| LOW | setup/docker/compose.yaml | 201 | # NVIDIA_VISIBLE_DEVICES: "all" |
| LOW | setup/docker/macos/compose.yaml | 1 | # Example Docker Compose config file for PhotoPrism (Apple macOS) |
| LOW | setup/docker/macos/compose.yaml | 121 | MARIADB_AUTO_UPGRADE: "1" |
| LOW | setup/docker/scheduler/jobs.ini | 1 | # See https://github.com/mcuadros/ofelia/blob/master/docs/jobs.md for job settings! |
| LOW | setup/docker/scheduler/compose.yaml | 1 | # Example Docker Compose config file for PhotoPrism (Linux / AMD64) |
| LOW | setup/docker/scheduler/compose.yaml | 101 | # PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbps (default: 60) |
| LOW | setup/docker/scheduler/compose.yaml | 141 | image: mcuadros/ofelia:latest |
| LOW | setup/docker/armv7/compose.yaml | 1 | # Example Docker Compose config file for PhotoPrism (ARMv7-based, 32-bit devices) |
| LOW | setup/docker/armv7/compose.yaml | 21 | # - https://docs.photoprism.app/getting-started/troubleshooting/docker/ |
| LOW | setup/docker/armv7/compose.yaml | 101 | # PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbps (default: 60) |
| LOW | setup/docker/armv7/compose.yaml | 141 | MYSQL_CHARSET: "utf8mb4" |
| LOW | setup/docker/sqlite/compose.yaml | 1 | # Example Docker Compose config file for PhotoPrism (Linux / AMD64) |
| LOW | setup/docker/sqlite/compose.yaml | 81 | PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description |
| LOW | setup/docker/sqlite/compose.yaml | 101 | volumes: |
| LOW | setup/docker/nvidia/compose.yaml | 1 | # Example Docker Compose config file for PhotoPrism (NVIDIA Container Toolkit / AMD64) |
| LOW | setup/docker/nvidia/compose.yaml | 21 | # - https://docs.photoprism.app/getting-started/troubleshooting/ |
| LOW | setup/docker/nvidia/compose.yaml | 161 | # MARIADB_REPLICATION_PASSWORD: "" |
| LOW | setup/docker/windows/compose.yaml | 1 | # Example Docker Compose config file for PhotoPrism (Windows / AMD64) |
| LOW | setup/docker/windows/compose.yaml | 21 | # - https://docs.photoprism.app/getting-started/troubleshooting/ |
| LOW | setup/docker/windows/compose.yaml | 141 | # image: nickfedor/watchtower |
| 82 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 2867 | expect(w.vm.chipState.albums.options.some((a) => a.UID === "alb-created")).toBe(true); |
| CRITICAL | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 3077 | expect(w.vm.chipState.labels.options.map((l) => l.Name)).toEqual(["apple", "Beach", "Mountain"]); |
| CRITICAL | …ontend/tests/vitest/component/lightbox/sidebar.test.js | 3094 | expect(w.vm.chipState.albums.options.map((a) => a.Title)).toEqual(["alpha", "Mango", "Zebra"]); |
| CRITICAL | …tend/tests/vitest/component/photo/edit/details.test.js | 297 | wrapper.vm.view.model.localDate.mockReturnValue(mockLocalDate); |
| CRITICAL | …tend/tests/vitest/component/photo/edit/details.test.js | 312 | wrapper.vm.view.model.localDate.mockReturnValue(mockInvalidDate); |
| CRITICAL | …tend/tests/vitest/component/photo/edit/details.test.js | 556 | wrapper.vm.view.model.localDate.mockReturnValue(mockLocalDate); |
| CRITICAL | frontend/src/page/places.vue | 940 | this.map.setLanguage(this.$config.values.settings.ui.language.split("-")[0]); |
| CRITICAL | frontend/src/common/maplibregl.js | 134 | this.setLanguage($config.values.settings.ui.language.split("-")[0] || opt_fallback || "native"); |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 101 | // ─── Rendering ──────────────────────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 129 | // ─── v-file-upload props ────────────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 178 | // ─── onFilesSelected — append / remove / dedup ──────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 225 | // ─── hasFiles computed ───────────────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 253 | // ─── Upload button enabled/disabled ─────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 274 | // ─── onUpload() guards ──────────────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 310 | // ─── onUpload() — starts upload ─────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 338 | // ─── reset() ───────────────────────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 370 | // ─── onClose() ─────────────────────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 429 | // ─── onUploadProgress() ─────────────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 457 | // ─── onUploadComplete() ─────────────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 481 | // ─── visible watcher ───────────────────────────────────────────────────── |
| MEDIUM | frontend/tests/vitest/component/upload/dialog.test.js | 500 | // ─── title computed ─────────────────────────────────────────────────────── |
| MEDIUM | setup/podman/docker-compose.yml | 19 | # -------------------------------------------------------------------------- |
| MEDIUM | setup/cloud/digitalocean/setup.sh | 4 | # ============================= |
| MEDIUM | setup/cloud/digitalocean/compose.yaml | 1 | # ======================================================================== |
| MEDIUM | setup/cloud/digitalocean/compose.yaml | 3 | # ======================================================================== |
| MEDIUM | setup/cloud/digitalocean/compose.yaml | 42 | # ------------------------------------------------------------------------ |
| MEDIUM | setup/cloud/digitalocean/compose.yaml | 53 | # ------------------------------------------------------------------------ |
| MEDIUM | setup/cloud/digitalocean/compose.yaml | 74 | # ------------------------------------------------------------------------ |
| MEDIUM | setup/cloud/digitalocean/install_photoprism.sh | 4 | # ============================ |
| MEDIUM | setup/cloud/digitalocean/traefik.yaml | 2 | # ------------------------------------------------------------------------- |
| MEDIUM | setup/cloud/digitalocean/traefik.yaml | 16 | # ------------------------------------------------------------------------- |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | frontend/src/model/label.js | 16 | // Label models user-defined keywords and AI-generated tags. |
| HIGH | internal/api/session_create.go | 65 | // Protection against AI-generated vulnerability reports. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | compose.yaml | 523 | ## Create a shared bridge network for connecting with services in other compose.yaml files. |
| MEDIUM | scripts/setup/nas/raspberry-pi/build.sh | 85 | # Create the final SD card image. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | setup/cloud/digitalocean/init/check.sh | 93 | # Check if there are log archives or log files that have not been recently cleared. |
| LOW | scripts/render/app-icon.sh | 14 | # Check if source file exists. |
| LOW | scripts/render/svg-icon.sh | 14 | # Check if source file exists. |
| LOW | scripts/render/svg-icon.sh | 31 | # Check if source file exists. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | internal/api/oidc_redirect.go | 145 | // Step 1: Create user account if it does not exist yet. |
| LOW | internal/api/oidc_redirect.go | 387 | // Step 2: Create user session. |
| LOW | internal/api/oidc_redirect.go | 438 | // Step 3: Render HTML template to set the access token in localStorage. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | frontend/src/common/albums.js | 43 | export function createAlbumSelectionWatcher(albumsProperty) { |
| LOW | frontend/src/common/view.js | 370 | export function preventNavigationTouchEvent(ev) { |
| LOW | …ns/maplibre-gl-rtl-text/v0.2.3/maplibre-gl-rtl-text.js | 5 | ;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;els |
| LOW | …ns/maplibre-gl-rtl-text/v0.2.3/maplibre-gl-rtl-text.js | 6 | ;for(var i=0,list=mergedParagraphLineBreakPoints;i<list.length;i+=1){var lineBreakPoint=list[i];var returnStringPtr=Modu |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | docker/demo/setup.sh | 5 | # Usage: |
| LOW | scripts/dav-probe.sh | 6 | # Usage: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | setup/pkg/linux/README.html | 701 | <div id='write' class=''><h2 id='photoprism®-installation-packages'><span>PhotoPrism® Installation Packages</span></h2> |
| LOW | setup/pkg/linux/README.html | 701 | <div id='write' class=''><h2 id='photoprism®-installation-packages'><span>PhotoPrism® Installation Packages</span></h2> |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | internal/commands/show_metadata.go | 68 | // Documentation links for those who want to delve deeper. |