From cd7affffebf23b93ff7bd53e7ab0f41ca48ffd30 Mon Sep 17 00:00:00 2001 From: Michael Mayer Date: Sat, 14 Feb 2026 12:10:43 +0100 Subject: [PATCH] Cleanup: Fix formatting of Markdown files Signed-off-by: Michael Mayer --- assets/locales/README.md | 2 +- docker/README.md | 6 ++-- frontend/src/common/README.md | 30 ++++++++--------- frontend/src/locales/README.md | 2 +- frontend/tests/README.md | 22 ++++++------- internal/ai/face/README.md | 4 +-- internal/api/README.md | 20 ++++++------ internal/commands/README.md | 18 +++++------ internal/config/README.md | 6 ++-- internal/entity/schema/README.md | 10 +++--- internal/meta/testdata/README.md | 2 +- .../service/cluster/provisioner/README.md | 22 ++++++------- pkg/media/README.md | 6 ++-- pkg/media/video/README.md | 11 +++---- pkg/vector/alg/README.md | 10 +++--- setup/cloud/digitalocean/init/README.md | 16 ++++------ setup/pkg/linux/README.md | 32 +++++++++---------- setup/podman/README.md | 12 +++---- 18 files changed, 113 insertions(+), 118 deletions(-) diff --git a/assets/locales/README.md b/assets/locales/README.md index a066c7f64..f360d1f90 100644 --- a/assets/locales/README.md +++ b/assets/locales/README.md @@ -1,4 +1,4 @@ -# Backend Translations +## Backend Translations PhotoPrism uses [gettext](https://en.wikipedia.org/wiki/Gettext) for localizing frontend and backend. It's one of the most widely adopted standards for translating user interfaces. diff --git a/docker/README.md b/docker/README.md index 8515139d9..c3eb51c27 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,4 +1,4 @@ -# Dockerfiles for Development and Production +## Dockerfiles for Development & Production [**Dockerfiles**](https://docs.docker.com/engine/reference/builder/) are text documents that contain all commands a user could call in a terminal to assemble an application image. @@ -6,7 +6,7 @@ See our [Getting Started FAQ](https://docs.photoprism.app/getting-started/faq/#how-can-i-install-photoprism-without-docker) for alternative installation methods, for example using the [*tar.gz* packages](https://github.com/photoprism/photoprism/blob/develop/setup/pkg/linux/README.md) we provide for download at [dl.photoprism.app/pkg/linux/](https://dl.photoprism.app/pkg/linux/README.html). -## What are the benefits of using Docker? ## +### What Are the Benefits of Using Docker? **(1) Docker uses standard features of the Linux kernel.** Containers are nothing new; [Solaris Zones](https://en.wikipedia.org/wiki/Solaris_Containers) were released about 20 years ago and the chroot system call was introduced during [development of Version 7 Unix in 1979](https://en.wikipedia.org/wiki/Chroot). It is used ever since for hosting applications exposed to the public Internet. Modern Linux containers are an incremental improvement of this, based on standard functionality that is part of the kernel. @@ -16,6 +16,6 @@ See our [Getting Started FAQ](https://docs.photoprism.app/getting-started/faq/#h **(4) Running applications in containers is more secure.** Last but not least, virtually all file format parsers have vulnerabilities that just haven't been discovered yet. This is a known risk that can affect you even if your computer is not directly connected to the Internet. Running apps in a container with limited host access is an easy way to improve security without compromising performance and usability. -## Why not use virtual machines instead? ## +### Why Not Use Virtual Machines Instead? A virtual machine with a dedicated operating system environment provides even more security, but usually has side effects such as lower performance and more difficult handling. Using a VM, however, doesn't prevent you from running containerized apps to get the best of both worlds. This is essentially what happens when you install Docker on [virtual cloud servers](https://docs.photoprism.app/getting-started/cloud/digitalocean/) and operating systems other than Linux. diff --git a/frontend/src/common/README.md b/frontend/src/common/README.md index f7daac7f7..49185c4e4 100644 --- a/frontend/src/common/README.md +++ b/frontend/src/common/README.md @@ -1,8 +1,8 @@ -# View Helper Guidelines +## View Helper Guidelines -**Last Updated:** February 8, 2026 +**Last Updated:** February 14, 2026 -## Focus Management +### Focus Management PhotoPrism uses a shared view helper to maintain predictable focus across pages and dialogs: @@ -10,7 +10,7 @@ PhotoPrism uses a shared view helper to maintain predictable focus across pages This helper tracks the currently active component, applies focus when views change, and traps focus inside open dialogs, ensuring that tabbing never leaks into the page behind an overlay. The following guidelines explain how to work with the helper when building UI functionality. -### Session Storage Namespacing Notes +#### Session Storage Namespacing Notes When integrating third-party clients (for example mobile webviews) that pre-populate browser storage, keep the following behavior in mind: @@ -19,7 +19,7 @@ When integrating third-party clients (for example mobile webviews) that pre-popu - Legacy compatibility keys (`authToken` and `sessionId`) are only migrated by the startup bridge when both values are present. - Preferred integration contract for external clients is to set both `session.token` and `session.id` together. -### Tabindex Cheat Sheet +#### Tabindex Cheat Sheet | Value | When to use it | Effect | |------------|---------------------------------------------------------|------------------------------------------------------------------------------------------------| @@ -27,12 +27,12 @@ When integrating third-party clients (for example mobile webviews) that pre-popu | `-1` | Programmatic focus targets (dialog wrappers, sentinels) | Element can receive focus via script but is skipped while tabbing | | *positive* | **Avoid** | Custom tab order becomes hard to maintain; the view helper no longer knows the “first” element | -**Tips** +##### Tips - Root page containers (`
`) should use `tabindex="-1"` so the view helper can focus them when a route becomes active, then immediately move focus to the first interactive control. - Leave buttons, inputs, and links at the default `tabindex="0"` (or no attribute) so the browser controls the natural order. -### Dialog Implementation Checklist +#### Dialog Implementation Checklist Vuetify dialogs are teleported to the overlay container, so consistent refs and lifecycle hooks are essential. @@ -90,7 +90,7 @@ Vuetify dialogs are teleported to the overlay container, so consistent refs and Only add local `@focusout` handlers if a dialog needs custom behaviour. If you do, always call `ev.preventDefault()` when you redirect focus so you do not fight the global handler. -### Keyboard Event Handling +#### Keyboard Event Handling Dialogs and page shells often react to keyboard shortcuts (Escape to close, Enter to confirm, etc.). To keep those handlers compatible with text inputs and other interactive children: @@ -130,7 +130,7 @@ Example page container: Both snippets allow focused inputs to veto shortcuts by calling `event.stopPropagation()` or `event.preventDefault()` before the key reaches the container listener, keeping focus management predictable across the app. -#### Global Shortcut Forwarding +##### Global Shortcut Forwarding `common/view.js` registers a single `keydown` listener that forwards shortcut keys to the active component: @@ -156,7 +156,7 @@ onKeyDown(ev) { - Persistent dialogs that must suppress Vuetify’s rejection animation should still attach a direct `@keydown.esc.exact` handler; `onShortCut(ev)` alone does not override the built-in dialog behaviour. - Return `true` from `onShortCut(ev)` after handling a shortcut to signal `preventDefault()`. Return `false` to fall back to the browser’s native behaviour. -### Example: Delete Confirmation Dialog +#### Example: Delete Confirmation Dialog ```vue