Closes#4695
Master and PR builds were tagging every Docker image with the App.php
version (e.g. 3.4.2-master-<sha>), flooding Docker Hub with tags for
versions that were never released.
Docker tags are now scoped to the ref:
- master → master, <sha>
- branch → <branch>-<sha>
- semver tag → <version>, latest
Additional hardening:
- Release tag trigger restricted to three-component semver (N.N.N) so
non-semver tags (e.g. 3.preview) no longer publish a `latest` image
- Branch names sanitized: chars outside [a-zA-Z0-9_.-] replaced with _,
total tag truncated to stay within Docker's 128-char limit, leading
`.` or `-` prevented
- Fixed README.md claim that master builds push a `latest` tag
- Convert Travis CI configuration to GitHub Actions workflows
- Add multi-arch Docker builds (amd64/arm64)
- Implement initial schema migration for fresh database installs
- Add multi-attribute search with AND logic and sort by attribute columns
- Address various PR review feedback and formatting fixes