feat: add Apple Liquid Glass templates, image security settings, and automated releases

## New Features
- Apple Liquid Glass CSS template with iOS 26-inspired design
- Liquid Glass Dark theme with neon accents
- Image Security settings tab with per-event protection levels
- Release Please automation for versioning and changelog

## Improvements
- Update CSS template migration with final working templates
- Add search placeholder visibility fix for glass themes
- Update README roadmap (Download Protection, Gallery Templates, Filtering & Export now implemented)

## Infrastructure
- Add release-please.yml workflow for automated releases
- Add release-please-config.json and manifest
- Update docker-build.yml with Release Please integration comments
- Add comprehensive CHANGELOG.md

## Cleanup
- Add working/planning docs to .gitignore (CLAUDE.md, test-*.md, feature-*.md, etc.)
- Remove internal planning documents from git tracking (kept locally)

## Files Added
- .github/workflows/release-please.yml
- .release-please-manifest.json
- release-please-config.json
- CHANGELOG.md
- frontend/src/features/settings/tabs/ImageSecurityTab.tsx
This commit is contained in:
Paul Nothaft
2026-01-03 23:35:23 +01:00
parent f3c2cee362
commit 6033461be1
44 changed files with 1978 additions and 9443 deletions
+9 -3
View File
@@ -34,6 +34,13 @@ export interface Event {
unique_visitors?: number;
source_mode?: 'managed' | 'reference' | string;
external_path?: string | null;
// Download protection fields
allow_downloads?: boolean;
protection_level?: 'basic' | 'standard' | 'enhanced' | 'maximum';
disable_right_click?: boolean;
watermark_downloads?: boolean;
enable_devtools_protection?: boolean;
use_canvas_rendering?: boolean;
}
export interface GalleryInfo {
@@ -56,15 +63,13 @@ export interface Photo {
download_url_template?: string;
requires_token?: boolean;
type: 'collage' | 'individual' | 'video';
media_type?: 'photo' | 'video';
mime_type?: string;
category_id?: number | string | null;
category_name?: string;
category_slug?: string;
size: number;
uploaded_at: string;
// Media type fields
media_type?: 'image' | 'video';
media_type?: 'photo' | 'video' | 'image';
mime_type?: string;
duration?: number; // Duration in seconds for videos
video_codec?: string;
@@ -107,6 +112,7 @@ export interface GalleryData {
protection_level?: 'basic' | 'standard' | 'enhanced' | 'maximum';
image_quality?: number;
use_canvas_rendering?: boolean;
enable_devtools_protection?: boolean;
fragmentation_level?: number;
overlay_protection?: boolean;
};