Commit graph

132 commits

Author SHA1 Message Date
Michael Mayer
c7a292e5a0 Backend: Update Go deps in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-07-09 17:13:11 +02:00
Michael Mayer
138075fc0a Dependencies: Upgrade klauspost, geo, x/text & x/tools Go modules
- github.com/klauspost/compress v1.18.6 => v1.19.0
- github.com/klauspost/cpuid/v2 v2.3.0 => v2.4.0
- github.com/golang/geo => 20260706204034
- golang.org/x/text v0.38.0 => v0.39.0
- golang.org/x/tools v0.45.0 => v0.47.0 (indirect)

Run go mod tidy and regenerate NOTICE.
2026-07-07 23:57:52 +00:00
Michael Mayer
063f3c1245 Backend: Update Go deps in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-06-27 13:41:03 +02:00
Michael Mayer
7654e676b7 Frontend: Remove unused babel-plugin-istanbul and dead Karma config #5659
The babel-plugin-istanbul coverage plugin was only wired into the retired karma.conf.js; Vitest measures coverage via @vitest/coverage-v8 (.babelrc has no plugins). Dropping it removes the orphaned @istanbuljs/load-nyc-config -> js-yaml@3 subtree and clears the GHSA-h67p-54hq-rp68 DoS advisory; npm audit now reports 0 vulnerabilities.
2026-06-25 16:29:40 +00:00
Michael Mayer
8b0cf318b0 Backend: Update deps in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-06-22 21:47:20 +02:00
Michael Mayer
f894157191 Docs: Update LICENSE notice files #352 #4718 #5623 2026-06-17 03:38:36 +02:00
Ömer Duran
3ea547a564
Lightbox: Add support for 360° photos and videos #352 #4718 #5623
* Lightbox: Add 360° photo and video sphere viewer support

Wires Photo Sphere Viewer v5 into the lightbox for equirectangular
media. Backend detects UsePanoramaViewer and IsPhotosphere markers
alongside ProjectionType, and exposes Panorama + Projection in the
viewer / search result DTOs so the frontend can dispatch on the
projection type. The renderer (ThreeJS + PSV core + video plugin +
equirectangular video adapter) is lazy-loaded into a dedicated
webpack chunk so the base bundle is unchanged for users with no
360° media. PhotoPrism's existing lightbox controls drive the
underlying HTMLVideoElement that the PSV adapter creates for 360°
videos. Includes Vitest coverage for the sphere helper and the
lightbox dispatch, plus a TestCafe smoke spec and three new
ExifTool metadata fixtures.

* Lightbox: Fix 360° controls leak, hide zoom button, add sidebar icon

* Lightbox: Fix 360° touch panning and navigation arrows

* Lightbox: Fix fast swipe switching photos on 360° slides

Suppress PhotoSwipe swipe/drag navigation at its source via the dispatched pointer hook while a sphere slide is active, since the per-element gesture trap is outrun by a fast swipe whose pointer leaves the sphere container (touch-capable Windows). UI controls stay excluded so buttons and arrows still navigate.

* Lightbox: Route only equirectangular media to the 360° viewer

Routing was based on the loose photo_panorama flag for videos, which is also
true for cubemap and merely-wide (aspect > 1.9) videos, so non-equirectangular
media wrongly opened, distorted, in the sphere viewer. Route strictly on the
equirectangular projection for both photos and videos. Surface the video file's
projection in the viewer DTO via Photo.MediaProjection() (the primary search row
is a poster JPEG with no projection). Add an MP4 metadata-detection test.

* Lightbox: Open tagless 2:1 360° videos in the sphere viewer

Many 360° videos carry no projection tag PhotoPrism can read, so strict
equirectangular-projection routing left them in the flat player. Fall back to
equirectangular's defining 2:1 frame for panorama-flagged videos without a
projection, via is360Equirectangular() in common/sphere.js, while cubemap and
ultrawide (~2.35:1) clips stay flat.

* Tests: Make the 360° sphere video test assert instead of skipping
2026-06-17 03:26:25 +02:00
Michael Mayer
a2e708e7ab Meta: Update go-mp4, regenerate NOTICE, fix XMP doc spelling #2260 #5563
Bump abema/go-mp4 to v1.7.1 (only outdated direct dependency) and tidy
go.sum, pruning stale checksums left by the XMP sidecar merge. Regenerate
the license NOTICE for the updated dependency.

Use US-English spelling in the new XMP sidecar comments and tests, and
drop a specs/ reference from internal/meta/README.md so the public package
doc has no link into the private subrepo. Regenerate dialect_mysql.go from
SQL.
2026-06-17 00:14:33 +00:00
Ömer Duran
86efc1c982
Index: Improve support for metadata in XMP sidecar files #2260 #2828 #5563
* Meta: Add XMP sidecar fixture corpus for reader rewrite #2260
* Meta: Replace XMP sidecar reader with antchfx/xmlquery #2260
* Meta: Add XMP sidecar reader test suite #2260
* Meta: Assert XMP GPS extraction on Apple/Adobe sidecars #2828
* Meta: Apply XMP sidecar metadata to photo and primary file #2260
* Meta: Resolve XMP sidecar time zone via shared helper #2260
* Meta: Derive panorama & caption keywords on XMP sidecar reads #2260
* Meta: Assert XMP sidecar GPS override and malformed-file handling #2260
* Meta: Tidy XMP sidecar reader comments and reuse logName local #2260
* Meta: Fix XMP sidecar capture-time priority OffsetTime handling #2260
* Meta: Address XMP sidecar review feedback #2260
2026-06-17 01:53:28 +02:00
Michael Mayer
0e79cf9eca Backend: Update golang/geo and refresh NOTICE
Bump golang/geo to 20260612074446 (same module license). go mod tidy also drops a stale golang.org/x/net v0.55.0 checksum.
2026-06-15 10:23:07 +00:00
Michael Mayer
b24e84f5f5 Frontend: Upgrade Vitest to v4 and Vite to v8 to drop esbuild #5659 2026-06-14 16:15:51 +00:00
Michael Mayer
1ca21007b3 Build: Update Go toolchain to 1.26.4 and refresh x/net and x/sys
Bumps the go.mod toolchain directive and the dummy OIDC fixture to
go1.26.4, clearing the GO-2026-5037/5038/5039 stdlib advisories. Updates
golang.org/x/net to v0.56.0 (NOTICE regenerated) and the fixture's
golang.org/x/sys to v0.46.0. osv-scanner --recursive returns zero
advisories and the full Go suite passes.
2026-06-10 18:06:19 +00:00
Michael Mayer
a4310674cd NOTICE: Regenerate after dependency updates 2026-06-10 03:24:26 +00:00
Michael Mayer
25d86c9c50 Backend: Update deps in go.mod, go.sum, and license NOTICE file
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-05-31 04:24:34 +02:00
Michael Mayer
f9a364d713 Go: Update deps in go.mod, go.sum, and license NOTICE file 2026-05-26 16:25:13 +00:00
Michael Mayer
9540931a16 Go: Update indirect deps in go.mod, go.sum, and license NOTICE file 2026-05-20 11:35:47 +00:00
Michael Mayer
c9722af97e Go: Update deps in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-05-20 13:16:46 +02:00
Michael Mayer
7ba4dc1bf6 Frontend: Tune lightbox theme for face markers, retire ESLint-Prettier glue #4966
- Refactor `meta.css` face-marker palette to consume theme tokens (Path A):
  default rect → `on-surface`; named-marker stroke → `primary`; draft →
  `accent`; hover → `primary-darken-1`; handle → `primary-darken-1` fill +
  `primary` stroke; Confirm pill → `primary-darken-2`; Cancel pill →
  `highlight-lighten-1`; Remove pill → `remove`; Back button → `surface`.
- Retune the `lightbox` theme block to support the rebind: `primary
  #F2F3F3 → #9E8FC9` (muted purple), `accent #2D2E2E → #BDAFE4` (lavender),
  `surface #151515 → #181818`, `surface-bright → #1c1c1c`, `button →
  #242424`, `highlight #424041 → #3c3c3c`, `remove → #cd4645`. Effectively
  reverts the `surface-variant ↔ on-surface-variant` swap and re-introduces
  an explicit `.v-tooltip.v-theme--lightbox` override in `lightbox.css`.
- Bump `variations.darken` to 2 so `--v-theme-primary-darken-2` resolves.
- Swap the in-template button order in `markers.vue` to Cancel-left /
  Confirm-right for both the pending-add and remove-confirm popovers.
- Add inline comments to the `default.add` and updated `lightbox`
  entries so each color's purpose stays documented at the source.
- Drop `eslint-plugin-prettier` (its `prettier/prettier` rule was already
  `"off"`, making the plugin inert). Replace `plugin:prettier/recommended`
  with a direct `eslint-config-prettier` extend; keep ESLint's own
  `indent` / `quotes` / `brace-style` rules as the JS formatter.
- Tell ESLint to ignore `*.{css,scss,sass}` so Prettier owns CSS
  unambiguously; wire `npm run fmt-css` / `npm run lint-css` Prettier
  passes into `npm run fmt` / `npm run lint` so `make fmt-js` and
  `make lint-js` cover stylesheets too.
- Drop `eslint-plugin-prettier` from the dev-container global install
  list and the `frontend/tests/README.md` dependency table; regenerate
  `NOTICE` files.
2026-05-19 09:56:09 +00:00
Michael Mayer
7ed0fc44d3 Frontend: Drop unused "escape-string-regexp" dep, refresh tooling
Removes the top-level "escape-string-regexp" dependency, which has no
direct consumer in our source. The v4 line lives on as a transitive
dep of "eslint" and "sanitize-html"; "webpack-bundle-analyzer" keeps
its nested v5 copy. Net dep-tree shape is unchanged.

Also bumps "@vue/language-server" to ^3.3.0, adds "vuln" and "tools"
phony aliases in the Makefile, and aligns the frontend "audit" target
with the root one (--no-fund --no-audit).

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-05-19 01:04:49 +00:00
Michael Mayer
218600cc66 Go: Update deps in go.mod, go.sum, and license NOTICE file
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-05-18 11:28:08 +02:00
Michael Mayer
29efda150c Frontend: Remove floating-vue and consolidate on Vuetify tooltips #4966 2026-05-17 11:06:28 +00:00
Michael Mayer
f6a5dc8412 Go: Update deps in go.mod, go.sum, and license NOTICE file
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-05-15 08:25:31 +02:00
Michael Mayer
8713e6b1ff Go: Update go-sqlite3 to v1.14.44 to fix GCC 15 warnings #5543 2026-05-10 10:02:28 +00:00
Michael Mayer
1f21aea628 Go: Update deps in go.mod, go.sum, and license NOTICE file
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-05-09 17:54:56 +02:00
Michael Mayer
aa4d51bed1 Docs: Update license NOTICE file
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-05-06 10:33:28 +02:00
Michael Mayer
4410269cc2 Frontend: Drop unused @testing-library/react and vite-tsconfig-paths
Both were added during the Vitest framework integration (#4990) but
never referenced in any source file or test config — npm ls confirms
zero transitive consumers. PhotoPrism is Vue, so the React testing
library is not applicable; @testing-library/jest-dom (the actually
used helper) stays. The TS-paths resolver was speculatively added
when the Vite config was first stubbed and was never wired up.

README's "Known Unused" table is replaced with a short "Auditing for
Orphaned Dependencies" section so the sweep pattern (rg + npm ls)
is documented for future cleanups.
2026-05-05 10:07:55 +00:00
Michael Mayer
8339ed1b26 Frontend: Drop orphaned cheerio dependency from package.json
Cheerio was originally pulled in alongside easygettext@2.17.0 in May
2022 (commit d600d5faf), where easygettext declared cheerio@^1.0.0-rc.3
as a runtime dep for HTML parsing in the gettext-extract flow. When
easygettext was replaced by vue3-gettext / vue-gettext-extract in
October 2025 (commit ab9a0a969 / #1152), cheerio was overlooked and
left as a top-level dep with no consumers.

The exact pin to 1.0.0-rc.12 was set in September 2024 (commit
ab9e156c9, bundled into an unrelated UX commit) after an August 2024
bump to ^1.0.0 broke easygettext's ^1.0.0-rc.3 peer constraint. That
rationale evaporated when easygettext was removed; the lockfile
reverse-search confirms zero current consumers.

npm ls cheerio --all returns only the direct top-level entry; no
source files import it. make audit, make build-js, make test-js
(1055 passed / 13 skipped) all stay clean after removal.
2026-05-05 09:59:09 +00:00
Michael Mayer
a2dce2b06c Frontend: Drop unused postcss-url and @vitejs/plugin-react
Removes two stale dependencies that have no code references in any
frontend/, plus/frontend/, pro/frontend/, or portal/frontend/ tree.
postcss-url was a 2019 leftover and is the only consumer of the
unpatched minimatch <=3.1.3 ReDoS chain (GHSA-3ppc-4f35-3m26,
GHSA-7r86-cg39-jmmj, GHSA-23c5-xmqv-rm74); npm audit now reports
zero vulnerabilities.
2026-05-05 09:22:20 +00:00
Michael Mayer
2ad8c40023 Go: Upgrade mysql, mcp-go-sdk, and onnxruntime_go modules #5555
Bumps:
- github.com/go-sql-driver/mysql v1.9.3 -> v1.10.0
- github.com/modelcontextprotocol/go-sdk v1.5.0 -> v1.6.0
- github.com/yalue/onnxruntime_go v1.28.0 -> v1.30.0

go-sdk v1.6.0 dropped the implicit default that previously rejected
cross-origin requests when StreamableHTTPOptions.CrossOriginProtection
was nil (modelcontextprotocol/go-sdk#906). internal/api/mcp.go now
sets the field explicitly so that /api/v1/mcp keeps verifying the
Origin header on the streamable HTTP transport.

onnxruntime_go v1.30.0 stays at ORT_API_VERSION 25, so the bundled
native runtime does not need to change for this bump alone.
2026-05-04 11:48:46 +00:00
Michael Mayer
083d437ec4 Server: Add zstd compression support #5550
Negotiates zstd alongside gzip via PHOTOPRISM_HTTP_COMPRESSION as a
comma-separated preference list (e.g. "zstd,gzip"); legacy "gzip",
"none", and the empty string keep behaving as before. Bypasses
Connection: Upgrade, predicate-excluded paths, HEAD (with Vary kept),
4xx/5xx, 206, 204, and 304. Weakens strong ETags on the encoding path
so caches don't reuse a compressed body for a different coding.
2026-05-03 10:10:33 +00:00
Michael Mayer
551e5fa29c Backend: Update deps in go.mod and go.sum; update license NOTICE #5505
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-28 09:07:04 +02:00
Michael Mayer
036d67b58f Backend: Upgrade Go deps in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-27 11:23:23 +02:00
Michael Mayer
c46deb6129 Go: Upgrade "govips" to v2.18.0 (requires libvips 8.14 or later)
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-15 15:09:23 +02:00
Michael Mayer
edb6f2f2b1 Go: Upgrade dependencies (gocron, oidc, mcp-sdk, x/*, sqlite3, otel)
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-15 14:58:05 +02:00
Ömer Duran
e2f8474309
MCP: Add read-only Model Context Protocol prototype #5024 #5519
* MCP: Add internal read-only prototype #5024

* MCP: Fix edition detection, section assignment, and input validation #5024

* MCP: Add authenticated HTTP endpoint with ACL and experimental gate #5024

* MCP: Document client compatibility and config examples #502

* MCP: Refine ACL grants and finalize prototype polish #5024 #5519

Signed-off-by: Michael Mayer <michael@photoprism.app>

* MCP: Update go.sum #5024 #5519

Signed-off-by: Michael Mayer <michael@photoprism.app>

* MCP: Update license NOTICE files #5024 #5519

Signed-off-by: Michael Mayer <michael@photoprism.app>

---------

Signed-off-by: Michael Mayer <michael@photoprism.app>
Co-authored-by: Michael Mayer <michael@photoprism.app>
2026-04-10 12:51:11 +02:00
Michael Mayer
812faccae6 Clean-up: Drop imaging and pigo library integrations #5353 #5508 #668
Also drops github.com/esimov/pigo since it requires the imaging lib.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-01 13:47:42 +02:00
Michael Mayer
9a7fdc4cdc Backend: Update Go deps in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-31 08:50:35 +02:00
Michael Mayer
d32e9d754e Backend: Update Go deps in go.mod/go.sum, align server gzip 404 test
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-28 12:19:12 +01:00
Michael Mayer
e052fd3eaf Frontend: Update deps in package.json and package-lock.json
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-09 11:49:28 +01:00
Michael Mayer
c8b4d8f4f3 Backend: Update license NOTICE file
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-08 15:37:45 +01:00
Michael Mayer
a80953e8f3 Docs: Update license NOTICE file
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-06 18:48:07 +01:00
Michael Mayer
82e6d294ba Backend: Update github.com/zitadel/oidc/v3 and github.com/golang/geo
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-03 11:48:08 +01:00
Michael Mayer
9e722dfc7d Thumbs: Update github.com/davidbyttow/govips/v2 version in NOTICE file
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-03 09:25:34 +01:00
Michael Mayer
eb81069210 Backend: Update github.com/gin-gonic/gin to v1.12.0 in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-01 14:06:53 +01:00
Michael Mayer
267fabffa9 Backend: Update filippo.io/edwards25519 from v1.1.0 to v1.2.0
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-22 16:53:14 +01:00
Michael Mayer
a09f8fc5aa Backend: Upgrade Go dependencies in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-20 15:25:55 +01:00
Michael Mayer
273aa53ad0 Backend: Upgrade github.com/yalue/onnxruntime_go from v1.25.0 to v1.26.0
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-20 02:38:48 +01:00
Michael Mayer
ef7eb1367f Backend: Update github.com/dustinkirkland/golang-petname in go.mod & sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-20 02:19:46 +01:00
Michael Mayer
1e9d9ecb23 Backend: Update Go deps in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-10 14:54:59 +01:00
Michael Mayer
93304987de Backend: Update github.com/zitadel/oidc/v3 in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-09 14:14:11 +01:00