Commit graph

720 commits

Author SHA1 Message Date
Michael Mayer
f864348474 Translations: Restore dropped placeholders in ga, ja, ku, nl, fa 2026-07-09 11:43:01 +00:00
Cathie Integra
6a1dc7d194 Translations: Restore broken placeholder tokens in catalogs 2026-07-09 13:17:46 +02:00
Ömer Duran
6dc0acac13
Settings: Reorganize UI and add an Accessibility section #848 #799 #5429
* Frontend: Add settings for albums, favorites, folders, and media features

* Frontend: Enhance download settings for files and albums #848

* Frontend: Enhance download settings for files and albums #848

* Frontend: Update album download settings to restrict access to super admins

* Frontend: Add album sorting options to settings for super admins

* Frontend: Update download settings visibility

* Frontend: Refine download settings access control for user roles

* Tests: Add album, folder, moment, state, and month order selection options to page-model

* Frontend: Update access control for super admins in settings to include scope check

* Tests: Add new tests for download name and album order settings persistence

* Tests: Implement new tests for default album sort order persistence in settings

* Frontend: Move default album order settings

* Frontend: Add zoom accessibility option in settings #799

* Frontend: Update download name from "Share Identifier" to "Share Friendly" and refine hints for download options in settings

* Tests: Add new acceptance test for disabling album downloads while allowing file downloads in settings

* Frontend: Improve download options layout and hints

* Frontend: Refactor download options condition in settings page

* Frontend: Implement native zoom control in lightbox component

* Settings: Add Collections tab and move Services to its own page #848 #5429

- Add a super-admin Collections tab after Content holding the album
  Download and Sort Order settings; remove those cards from Content.
- Move Services from a settings tab to a dedicated page
  (page/services.vue) with a search toolbar and a Reload / Learn More
  action menu; link it from the navigation settings menu.
- Implement server-side services search (acc_name filter) with tests.
- De-duplicate the picture sort-order options into a shared
  SortOrderOptions builder in options.js.
- Update acceptance/unit tests and page models to match.

* Frontend: Regenerate translation catalogs #848 #5429

Ran `make gettext-extract` to pick up the new settings strings
(Collections, Features, Disable Downloads, and related messages) so
Weblate can translate them. Existing translations are preserved.

* Frontend: Move lightbox viewport-zoom handling into the view helper

- Move the viewport pinch-zoom lock/restore (disableNativeZoom /
  restoreNativeZoom + savedViewportContent) from lightbox.vue onto the
  View singleton in common/view.js.
- Drive it passively from View.apply() via a disableViewportZoom flag in
  the PLightbox case, alongside hideScrollbar / disableScrolling /
  disableNavigationGestures; lightbox.vue no longer references zoom.
- Make save/restore idempotent and extract the viewport constants.
- Cover the helpers and the apply() wiring in view.test.js.

* Settings: Add Accessibility section to General with Reduce Motion #848 #5429

- Move the page-zoom checkbox out of the feature-flags grid into a
  dedicated Accessibility card (super-admin only) with four toggles:
  Open on Hover, Reduce Motion, Hide Scrollbar, and Allow Page Zoom.
- Add a UI.ReduceMotion flag (defaults false) that toggles an
  html.reduce-motion class via config.setReduceMotion and suppresses map
  fly-to animations non-destructively (util.mapAnimateDuration).
- Make Open on Hover apply live by reading shouldOpenOnHover() through a
  reactive computed in the action/auth/lightbox menus; Zoom and Hide
  Scrollbar reload since they are baked into the server-rendered HTML.
- Reword two feature-grid hints to the "pictures" convention and cover
  the new helpers with Go and Vitest tests.

* Frontend: Regenerate translation catalogs #848 #5429

Ran `make gettext-extract` to pick up the new Accessibility settings
strings (Accessibility, Allow Page Zoom, Open on Hover, Hide Scrollbar,
Reduce Motion, and their hints) and the reworded feature-grid hints.
Existing translations are preserved.

---------

Co-authored-by: Michael Mayer <michael@photoprism.app>
2026-07-08 14:11:36 +02:00
Ömer Duran
4b33d3bd1a
PWA: Add maskable icons, lang/dir, and install screenshots #5696 2026-06-30 19:53:52 +02:00
Weblate
35caddae32 Weblate: Update backend translations 2026-06-28 19:14:37 +02:00
Michael Mayer
0575659c08 Frontend: Render auth error toasts in the current UI locale #5699 #5682 2026-06-27 11:34:54 +00:00
Weblate
4c86c71417 Weblate: Update backend translations 2026-06-27 12:29:16 +02:00
Michael Mayer
68a6ad24f4 Translations: Regenerate .po and .pot files from source #5699
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-06-27 12:27:09 +02:00
Michael Mayer
03c22ca66c UX: Fix 404 page logo text rendering under RTL locales 2026-06-27 08:19:00 +00:00
Michael Mayer
9a25a19824 JPEG XL: Decode natively via libvips with "djxl" fallback #5693
Route JPEG XL through the native libvips path (govips jxlload) like
HEIC/AVIF, keeping the external "djxl" decoder as an automatic fallback
for runtimes whose libvips lacks JPEG XL support.

Decouple format enablement from "djxl": DisableJpegXL now stays enabled
when either the decoder is present or libvips can decode JPEG XL natively.
The libvips capability probe (thumb.JpegXLSupported) is cached and runs
only when no decoder is present, so config introspection on standard
installs (which ship "djxl") does not start libvips.

Add a shared assets/samples/dice.jxl fixture and focused tests for the
native conversion path, the djxl fallback command, and the capability
decision table.
2026-06-25 14:31:10 +00:00
Weblate
a88264df82 Weblate: Update backend translations 2026-06-25 15:47:49 +02:00
Michael Mayer
fd8448d6de UX: Name message fields messageId/messageParams in i18n payloads #5682
Rename the i18n notification/error envelope fields from id/params to messageId/messageParams across the WS notify Data and the i18n.Response body, so they are unambiguous next to session, log, and correlation ids. Updates the frontend consumers (notify.vue, api.js), tests, swagger, and the event/locales READMEs.
2026-06-23 12:22:30 +00:00
Michael Mayer
a12d287c19 Docs: Document per-user notification localization in READMEs #5682
Describe the event *Msg structured payload and frontend per-user rendering in the event and backend-locales READMEs; fix a stale go-generate path (/internal/i18n to /pkg/i18n).
2026-06-23 09:23:31 +00:00
Michael Mayer
a930ae24d7 Assets: Normalize locales/he/default.po
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-06-23 10:20:08 +02:00
Weblate
bc20d156aa Weblate: Update backend translations 2026-06-22 21:35:55 +02:00
Michael Mayer
1854e69094 Gettext: Regenerate .po and .pot translation files
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-06-18 11:47:42 +02:00
Weblate
790181a743 Weblate: Update backend translations 2026-06-18 11:15:04 +02:00
Weblate
f88a870379 Weblate: Update backend translations 2026-06-15 11:28:47 +02:00
Michael Mayer
8422fb8ddd Locales: Regenerate backend translations for #5663 2026-06-15 09:25:44 +00:00
Michael Mayer
e88751a501 Config: Add bloom, flower, ring & shutter app icons #5662
Adds four selectable app-icon variants with optimized SVGs and full PNG size sets. bloom and ring use a round canvas like logo; flower and shutter use the rounded-square canvas. Updates the frontend icon resolver, app-icon help text, and config tests, and strips editor data-name attributes from the existing icons.
2026-06-15 06:29:43 +00:00
Michael Mayer
872af5d8fd Cluster: Add cluster OIDC, branded authorize errors, and sign-out
Implements three OIDC follow-ups from specs/portal/cluster-oidc.md:

- Zero-touch instance OIDC RP config: PHOTOPRISM_CLUSTER_OIDC derives the
  OIDC RP client_id/secret from the node client credentials and defaults
  the issuer to the instance's own origin (scheme.OriginURL), so a single
  boot reaches a working Portal login. Explicit oidc-client/secret/uri win.
- Human-friendly authorize errors: redirectable errors 302 back to the
  validated redirect_uri; non-redirectable ones content-negotiate a
  branded HTML page (oauth-error.gohtml) vs JSON via shared helpers in
  internal/api/oauth_error.go. The RP callback surfaces inbound ?error=.
- Cluster-wide Sign-Out (Tier 2): session.logoutEverywhere fans out a
  best-effort DELETE per peer session, clears their storage, then signs
  out locally; session-delete clears the OP cookie on any shared-domain
  OIDC-against-Portal node (OIDCSessionCookieClearPath).
2026-06-09 09:39:01 +00:00
Michael Mayer
257c9554fb Assets: Align .buildignore across editions 2026-05-22 06:48:32 +00:00
Michael Mayer
859e5d9b4b Frontend: Harden splash links for safer new-tab navigation
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-08 14:41:21 +01:00
Michael Mayer
04c57e2b96 Frontend: Fix OIDC session restore and logout cleanup #5476
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-08 14:27:39 +01:00
Michael Mayer
885c770eeb Auth: Add "Stay signed in on this device" login toggle #5476
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-08 11:25:40 +01:00
Michael Mayer
39ea7add37 Assets: Rename example fixtures directory to "samples"
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-06 18:47:33 +01:00
Michael Mayer
20fd49f2ac Media: Improve layered TIFF & PSD preview support #5383
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-06 18:14:48 +01:00
Michael Mayer
cd7affffeb Cleanup: Fix formatting of Markdown files
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-14 12:10:43 +01:00
Michael Mayer
733307c43f Frontend: Namespace local storage to run multiple nodes on a domain #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-08 18:35:05 +01:00
Cathie Integra
2abc9cdf4a
Weblate: Update backend translations (#5420)
Co-authored-by: Weblate <noreply@weblate.org>
2026-01-16 13:18:09 +01:00
Cathie Integra
d54e59a2b8
Weblate: Update backend translations (#5410)
Co-authored-by: Weblate <noreply@weblate.org>
2026-01-09 11:07:29 +01:00
Michael Mayer
19f083c719 Thumbs: Enhance embedding of ICC profiles based on InteropIndex #5178
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-11-23 12:56:58 +01:00
Michael Mayer
ab2ba2e72a JPEG: Embed Adobe RGB ICC profile with an InteropIndex tag #5178
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-11-23 10:07:30 +01:00
Michael Mayer
c20426c839 Assets: Regenerate locales/el/default.po
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-11-19 11:25:53 +01:00
Weblate
d32751300a Weblate: Update backend translations 2025-11-19 11:23:52 +01:00
Michael Mayer
1749bd9478 Backend: Regenerate assets/locales/el/default.po
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-11-12 17:39:37 +01:00
Weblate
0c56943bd7 Weblate: Update backend translations 2025-11-12 08:41:10 +01:00
Michael Mayer
f901759834 Translations: Regenerate frontend and backend *.po files
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-23 09:51:31 +02:00
Weblate
c5312d6eda Weblate: Update backend translations 2025-10-22 10:26:26 +02:00
Michael Mayer
4be8d08251 i18n: Update .po and .json translation files
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-21 17:24:41 +02:00
Michael Mayer
0354fad37e Demo: Improve protection against AI-generated reports #5269
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-17 19:34:39 +02:00
Michael Mayer
8b9d2e6459 Frontend: Improve browser capabilities check #5047
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-12 12:38:52 +02:00
Michael Mayer
a3c298f617 Frontend: Add browser capabilities check #5047
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-11 12:48:30 +02:00
Jarrad Whitaker
2f5cc62d45 rename adobe rgb icc profile 2025-08-30 19:25:55 +10:00
Jarrad Whitaker
ac3d5a0c58 move colors/icc into thumbs/icc + asets 2025-08-29 10:55:52 +10:00
Michael Mayer
875880110b Build: Simplify assets/.buildignore file #127
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-08-08 19:09:17 +02:00
Michael Mayer
ab0bd1c732 Config: Change default vision model assets path to assets/models/ #127
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-08-08 19:06:56 +02:00
Michael Mayer
f6d9ff8e43 Backend: Regenerate .po translation files
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-07-22 20:09:21 +02:00
Weblate
3448d1a635 Weblate: Update backend translations 2025-07-21 17:32:44 +02:00
Andres Hočevar
e24d8f532a Quickfix spanish locale 2025-07-14 20:09:42 +02:00