develop
Links: Use canonical trailing-slash form for website URLs
Config: Improve low storage detection #5613
ACL: Generate CLI role & auth-provider help from role tables #5667
Storage: Propagate insufficient-storage to CLI exit and index 507 #5613
CLI: Document urfave/cli v2 to v3 upgrade analysis and decision
CLI: Added JWT issuance and diagnostics sub commands #5230
Auth: Gate app passwords behind a settings feature flag #5647
CI: Apply Go linter recommendations to "internal/commands" package #5330
Cluster: Refactor request/response structs and JSON serialization
Logs: Add package pkg/log/status to provide generic outcome constants
Cluster: Rename the "tenant" node role to "instance" for accuracy
Downloads: Add signed tokens and file-level album selection #5733 #5743
CLI: Add cluster operations and management commands #98
Tests: Refactor command tests
CLI: Add RunWithTestContext function for command tests #3168
Metadata: Add Camera Make and Model updates via CLI & API #5663 #5656
CLI: Refactor "dry-run" and "yes" command flags to use helper functions
CLI: Reject flags placed after positional arguments #5604
FFmpeg: Use atomic.Pointer for thread-safe Exclude list access #5617
Auth: Add alias for RoleNone and improve unit tests coverage #98
Auth: Add cluster_admin role with admin-tier and federation helpers
Backend: Upgrade github.com/olekukonko/tablewriter from v0.0.5 to v1.0.7
Security: Improve credential handling across the cluster tooling #98
Config: Move Portal flag to ClientConfig struct
Commands: Resolve low-risk golangci-lint findings
Config: Gate node roles by edition and align tests/lint
Go: Apply go fix modernizations across backend packages
Cluster: Add a per-instance node DisplayName field
Cluster: Improve API endpoint and CLI command logs
Config: Centralize SQL driver identifiers in pkg/dsn #5588
Cluster: Add AppName, AppVersion and Theme request/response fields #98
CLI: Refactor cluster_helpers.go and cluster_theme_pull_oauth_test.go
Tests: Improve isolation and add fixes #5263
Commands: Prevent config command tests from polluting the originals directory
CLI: Standardize path validation and exit codes #5457
Video: Name the matched exclude entry and apply it to transcode #5617
CLI: Improve photoprism dl command with additional flags #5261
Commands: Count file download failures & pluralize logs
CLI: Add "photoprism dl --format-sort" flag and dl-method env variable
CLI: Refactor authentication subcommand flags
Commands: Remove unstable assertion from index_test.go
Metadata: Add Lens Make and Model updates via CLI & API #5644 #5656
MCP: Gate stdio on DisableMCP and add scope regression test #5024
AI: Add "photoprism vision" CLI subcommands #127 #1090
Security: Improve rate limit and HTTP proxy configuration #98
Auth: Extend user accounts with custom scope setting
Auth: Add "photoprism show scopes" command to list all supported scopes
CLI: Flatten config options output when using the "--json" flag #5220
Server: Add HTTP security hardening config options #5471
Config: Exclude inline non-flag fields from config-yaml report
OIDC: Surface account-collision reconcile hint and add --auth-issuer
CLI: Adjust search query used in "photoprism video" subcommands
CLI: Add "photoprism video" subcommands
Commands: Improve video failure summaries
CLI: Improve "photoprism video" subcommands
Vision: Add Normalize option for label names #5773
CLI: Ensure vision reset command and worker use same default src #5233
CLI: Add "photoprism vision reset" command to reset metadata #5233
Backend: Run "make fmt-go"
Faces: Change search to return all face markers, regardless of src #5167
CLI: Refactor "photoprism vision" subcommands #5233