12791 Commits

Author SHA1 Message Date
Cathie Integra 989227097a Docs: Clarify NPM_CONFIG_IGNORE_SCRIPTS default and rebuild override 2026-04-21 07:56:17 +02:00
Michael Mayer 7d39b2d9fe API: Extend check-api-request-limits.sh for ServeHTTP and direct reads
- Flag <name>.ServeHTTP(<writer>, c.Request) calls without a nearby
  LimitRequestBodyBytes so SDK-delegated handlers (MCP today, future
  SDKs tomorrow) are held to the same body-cap contract as BindJSON.
- Also flag direct reads via io.ReadAll, io.LimitReader,
  json.NewDecoder, xml.NewDecoder, and yaml.NewDecoder on c.Request.Body

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-20 13:55:29 +02:00
Michael Mayer a61d284134 MCP: Cap /api/v1/mcp body size and shorten session idle timeout #5024
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-20 13:54:07 +02:00
Cathie Integra 543d43ab6a Docker: Raise BuildKit step log size/speed limits in buildx-multi.sh
Set BUILDKIT_STEP_LOG_MAX_SIZE=5 MiB and BUILDKIT_STEP_LOG_MAX_SPEED=10 MiB/s
on both the local and remote ssh://arm multibuilder nodes so long apt-get
transcripts on unstable Ubuntu bases aren't truncated during preview builds.
2026-04-18 11:45:28 +02:00
Michael Mayer c37fdf51a7 Translations: Update frontend/src/locales/json/*.json #5536
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-18 11:37:10 +02:00
Weblate d53f8f0fd2 Weblate: Update frontend translations 2026-04-18 11:35:06 +02:00
Michael Mayer 4599cc07ce MCP: Expose DisableMCP via ClientConfig for frontend gating #5024 #5536
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-18 11:31:31 +02:00
Michael Mayer 0cf372af79 Config: Add PHOTOPRISM_DISABLE_MCP to compose.yaml & charts #5024 #5536
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-18 11:09:52 +02:00
Michael Mayer da224d309e MCP: Add "DisableMCP" option to disable /api/v1/mcp #5024 #5536
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-18 11:08:58 +02:00
Michael Mayer d529f7fe4a Docs: Document heading style as Chicago-style title case
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-18 09:41:11 +02:00
Michael Mayer ac9c9cf27b MCP: Remove experimental gate test and update documentation #5024
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-18 08:08:29 +02:00
Michael Mayer 825b8049cf MCP: Remove experimental gate from /api/v1/mcp registration #5024
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-18 07:51:57 +02:00
Michael Mayer 51976b7f5c Search: Add NOT & AND operators to label filter #5535
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-17 17:25:18 +02:00
Michael Mayer 15036786bc Claude: Auto-accept file edits in project settings.json
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-17 12:45:07 +02:00
Michael Mayer 1ced5cbf1e Backend: Update github.com/zitadel/oidc/v3 in go.mod and go.sum
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-17 11:57:35 +02:00
Michael Mayer 55edaeae57 Claude: Add project settings.json with shared team defaults
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-17 11:51:48 +02:00
Michael Mayer 85ca9dfb19 Develop: Upgrade base image from 260413-questing to 260417-questing
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-17 09:44:52 +02:00
Cathie Integra 8e5ece95a3 Scripts: Install Mermaid CLI and Chromium for ARM64 in dev images 2026-04-17 09:38:37 +02:00
Cathie Integra 7e6773e94e Claude: Compact repo rules to reduce context size 2026-04-17 08:16:17 +02:00
Michael Mayer 79b3f569a8 API: Fix incorrect Swagger response schemas and "Fore more" typos
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-15 15:56:13 +02:00
Michael Mayer be98c04d0d Docker: Document directory layout and legacy image policy in README.md
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-15 15:20:53 +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
Michael Mayer 7db82af193 API: Document "GET /api/v1/photos/view" in swagger.json
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-15 14:01:19 +02:00
Cathie Integra fcbfbfd8be Docs: Disable Co-Authored-By: Claude trailer in CLAUDE.md 2026-04-14 10:40:34 +02:00
Cathie Integra ee6ff221a0 Docs: Note "--ignore-scripts" for npm outside the dev image
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 15:11:51 +02:00
Michael Mayer 1beb83b554 Develop: Upgrade base image from 260331-questing to 260413-questing
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-13 14:06:20 +02:00
Michael Mayer 6d29459aca Build: Add Codex skill bundles and auto-link target to Makefile
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-13 13:00:49 +02:00
Michael Mayer 26a5c06762 Claude: Run "claude update" if already installed and add render-pdf deps
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-13 12:49:04 +02:00
Michael Mayer 0c226fafcf Header: Add ContentTypeEventStream and reuse in MCP code #5024
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-13 09:18:40 +02:00
Michael Mayer 6704b217d8 MCP: Document constants and vars, export ToolNames/ResourceURIs #5024
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-13 09:09:12 +02:00
Michael Mayer fdfe46c7b3 MCP: Add stdio smoke test and mcpAppMetadata coverage #5024 #5519
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-13 08:57:46 +02:00
Michael Mayer 342b03e317 MCP: Drop "internalmcp" alias and use "mcp" package name directly #5024
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-13 08:48:52 +02:00
Michael Mayer 4f14ed90c0 MCP: Remove "prototype" wording for production-readiness #5024 #5519
- Rewrite package doc, struct comments, log line, and route-registration
  comment so they describe the MCP server as a first-class feature
  rather than a pre-release prototype. The "Usage" strings on
  MCPCommands / MCPServeCommand were updated separately and stay
  unchanged.
- Drop "in this prototype" from the edition-advisory warning emitted by
  list_config_keys; the message now reads "edition filtering is
  advisory; results come from the current <edition> build metadata".
- Rewrite internal/mcp/README.md: new "Scope" section with
  in-scope/out-of-scope invariants, corrected authorization summary
  (admin + API client roles + manager in Pro/Portal, anonymous in
  public mode for the registered read-only tools), and a clearer
  "Current Capabilities" block.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-13 08:46:07 +02:00
Michael Mayer 16fc758f54 MCP: Allow anonymous access in public mode for demo deployments #5024
- Drop the public-mode 403 short-circuit in internal/api/mcp.go. In
  public mode api.Session() returns the default public session, so
  Auth(c, acl.ResourceMCP, acl.ActionView) + s.Abort(c) authorize
  anonymous callers naturally. This enables the prototype to run on
  demo.photoprism.app and similar showcase installations without
  loosening the auth path or adding another toggle.
- The exemption is only safe because every currently registered tool
  returns static reference metadata derived from config.Flags and
  form.Report(&form.SearchPhotos{}) — no database access, no per-user
  state, no secrets, no mutations. A handler-level comment captures
  that contract so a future tool that does not fit cannot slip in
  unnoticed.
- Flip the public-mode test case (ForbiddenPublicMode ->
  AllowedPublicMode) in internal/api/mcp_test.go to a full anonymous
  initialize + notifications/initialized + tools/call round-trip
  against both registered tools, so any future tightening of the
  policy regresses loudly.
- Update internal/mcp/README.md: the Authorization bullets now
  describe the public-mode path, the Rate Limiting note reflects that
  CE/Plus have no generic throttle in public mode, and a new
  "Extending the Tool Surface" section documents the contract every
  new tool must uphold plus the three supported extension paths
  (two-server factory, per-tool context checks, SDK middleware).

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-13 08:19:29 +02:00
Michael Mayer df13ea9e02 MCP: Refine auth flow, JWT scope, and find_search_filters #5024 #5519
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-10 13:40:22 +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 32f8bd9896 Claude: Align rules with AGENTS.md and fix test coverage placement
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-09 19:52:49 +02:00
Michael Mayer 8640dee635 Docs: Split AGENTS guides into a hierarchical structure
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-09 19:28:14 +02:00
Michael Mayer 997ca175be Claude: Add rules files and update CLAUDE.md
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-09 18:22:16 +02:00
Michael Mayer f0f3ce400f Docs: Update AGENTS.md
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-08 09:34:07 +02:00
Michael Mayer a8ec6f9cbb Develop: Refactor project configuration directory structure
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-08 09:25:48 +02:00
Michael Mayer 0759dfc946 Frontend: Use monospaced font for .p-log-message in logs.css
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-01 15:28:52 +02:00
Michael Mayer e0333cb43b Frontend: Update deps in package.json and package-lock.json
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-01 15:26:06 +02:00
Michael Mayer cbcebe8de4 Frontend: Update src/locales/json/*.json after translation removals
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-01 15:25:44 +02:00
Michael Mayer 568432df88 Images: Prefer native HEIF and AVIF conversion via libvips #5509
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-01 15:18:21 +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
graciousgrey defb003db3 Tests: Adapt tests to frontend changes 2026-03-31 16:57:29 +02:00
Michael Mayer e313f0e0bc Thumb: Bound TIFF image decodes to file size
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-31 15:16:23 +02:00
Michael Mayer 4b18fe1a45 Develop: Add bubblewrap package to base images
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-31 15:01:20 +02:00