Commit Graph

119 Commits

Author SHA1 Message Date
abnvle 8527765bf2 style(share-dialog): give share button breathing room
The Share button moved into .share-options in bdb5a6c sat flush
against the section bottom border. Adds 20px bottom padding plus
margin-top:16px and margin-left:auto on the button so it aligns
right with the Close button below.
2026-05-05 21:57:15 +02:00
Edouard Vanbelle f6cd18e5e9 feat: generate thumbnail from client is not found on server
- supported thumbnail filetype: image, pdf, video
- add play character if video's thumbnail is loaded
2026-05-04 21:04:15 +02:00
Edouard Vanbelle f5dade1551 refactor(ui): css: use of variables colors only 2026-04-26 01:16:40 +02:00
Edouard Vanbelle e148a92f5d refactor(ui): use hidden class for upload + menu 2026-04-25 21:10:04 +02:00
Edouard Vanbelle 35fc9a0619 improve(ui): share-dialog: click outside of dialog closes the window 2026-04-25 21:10:04 +02:00
Edouard Vanbelle fc8e529e7d refactor(ui): modal: use hidden class 2026-04-25 21:10:04 +02:00
Edouard Vanbelle a38bcc01de refactor(ui): normalize about modal with hidden class 2026-04-25 21:09:55 +02:00
Edouard Vanbelle 832c9ab577 improve(ui): dialog: add escape key on shared dialog + perfer hidden class 2026-04-25 21:09:41 +02:00
Edouard Vanbelle ceff552736 feat(shared): show in classic view if an item is shared 2026-04-16 23:13:08 +02:00
Edouard Vanbelle c8dbcd2409 fix(multi-select/action bar): keep large bar 2026-04-16 00:58:11 +02:00
Edouard Vanbelle 33165c6d5a feat(frontand/buttons): move multiselect into buttons = keep visible card/list selector 2026-04-15 23:49:20 +02:00
Edouard Vanbelle 6e3d87c27e style(front): correct format 2026-04-15 00:15:53 +02:00
Diocrafts cd3733b459 feat: pluggable storage backends (S3, Azure, local) with admin UI
Implement 4-phase external storage backends architecture:

Phase 1 - Foundation:
- BlobStorageBackend trait (application/ports/blob_storage_ports.rs)
- LocalBlobBackend: extracted all tokio::fs ops from DedupService
- S3BlobBackend: AWS SDK with custom endpoint support (MinIO, R2, B2)
- DedupService refactored to use Arc<dyn BlobStorageBackend>

Phase 2 - Admin Panel:
- StorageSettingsService with DB persistence + env override
- Storage tab in admin panel (backend selector, S3 form, provider presets)
- GET/PUT/POST endpoints for storage settings + connection test
- i18n keys (en/es) and BEM CSS

Phase 3 - Migration:
- MigrationBlobBackend decorator (dual-read: target-first + source fallback)
- Background migration job with parallel transfers + progress tracking
- Migration UI (progress bar, ETA, pause/resume/verify/complete)
- 6 admin API endpoints for migration lifecycle

Phase 4 - Enterprise Extras:
- CachedBlobBackend: LRU disk cache for remote backends
- EncryptedBlobBackend: AES-256-GCM at-rest encryption
- AzureBlobBackend: Azure Blob Storage support
- RetryBlobBackend: exponential backoff for transient errors
- Decorator composition in DI: retry → encryption → cache

All 223 tests passing, clippy clean, fmt verified.
2026-04-14 21:33:38 +02:00
Edouard Vanbelle 2061f8808b style(front): apply biome recos 2026-04-14 13:33:55 +02:00
Edouard Vanbelle d01b2c6ec4 refactor(css): use variable rather direct color 2026-04-14 13:33:51 +02:00
Edouard Vanbelle 2733542bce refactor(css): dark theme: remove and merge specific cases 2026-04-13 13:26:38 +02:00
Edouard Vanbelle e6a815a03c refactor(css): dark theme: merge photos 2026-04-13 13:26:38 +02:00
Edouard Vanbelle f7c7136149 refactor(css): dark theme: merge notfication + dropzone 2026-04-13 13:26:38 +02:00
Edouard Vanbelle 260eb4d4c8 refactor(css): merge context menu for dark theme 2026-04-13 13:26:38 +02:00
Edouard Vanbelle 4dff552299 refactor(css): use 1 global declaration for scrollbar 2026-04-13 13:26:38 +02:00
Edouard Vanbelle ce207ebad1 refactor(css): merge profile + admin dark style 2026-04-13 13:26:38 +02:00
Edouard Vanbelle 413832d1a2 refactor(css): remove use generic colors for language-selector + correct item selection color 2026-04-13 13:26:38 +02:00
Edouard Vanbelle 54c736a8b1 refactor(css): removed unnecessary dark theme override 2026-04-12 02:58:24 +02:00
Edouard Vanbelle 4862c17e11 refactor(css): change css grouping fileType & filesView
- fileType.css for filetype to icons representation
 - filesViews.css for grid and list view (merge of previous cards.css & fileList.css)
2026-04-12 02:53:35 +02:00
Edouard Vanbelle b95cf8dee9 refactor(css/icons): centralize icon folder to card.css 2026-04-12 02:22:57 +02:00
Diocrafts 1dbe7e4553 fix: resolve all biome ci errors and warnings
- Format all 14 locale JSON files (2-space → 4-space indent per biome config)
- Fix publicShare.js: arrow functions, template literals, optional chaining,
  remove redundant 'use strict', remove unused formatSize function
- Fix music.js: template literal, unused _trackId parameter
- Fix contextMenus.js, fileOperations.js, fileSharing.js: unused parameters
- Fix auth.js, music.css, share-public.css: formatting (biome format --write)
- Remove unused biome-ignore suppression comments in cards.css and reset.css
- Remove empty .share-state block in share-public.css
- Disable noDescendingSpecificity and noImportantStyles rules in biome.json
  (intentional CSS patterns for utility classes and theme overrides)
2026-04-12 02:13:08 +02:00
Diocrafts edf1e66989 feat: add public share page with download support (#253)
Share links now point to /s/{token} (was /api/s/{token}) and render a
proper HTML page instead of raw JSON.

Changes:
- static/share.html: standalone public share page
- static/css/views/share-public.css: share page styles
- static/js/views/public/publicShare.js: client-side logic that fetches
  share metadata via /api/s/{token}, handles password-protected shares,
  and renders file download / folder info
- build.rs: include share.html in the HTML embed pipeline
- web/mod.rs: serve /s/{token} route (unauthenticated)
- share_dto.rs: generate URLs as /s/{token} instead of /api/s/{token}
- share_handler.rs: new download_shared_file() handler that validates the
  share token and streams file content without requiring authentication
- routes.rs: mount GET /api/s/{token}/download (public, uses AppState)
2026-04-12 01:51:30 +02:00
Diocrafts f08cffc0e8 feat: add VitePress docs site, music file picker modal, Dockerfile optimization, i18n keys for 14 locales
- Add docs/ with VitePress site (19 pages): guide, config, architecture, FAQ
- Add GitHub Actions workflow for auto-deploy to GitHub Pages
- Replace music 'Add Tracks' upload picker with in-app audio file browser modal
- Add music picker CSS styles with dark theme support
- Add missing i18n keys (search_audio, no_audio_files, etc.) to all 14 locales
- Optimize Dockerfile: shared base stage, COPY --chmod, consolidated RUN, HEALTHCHECK
- Improve README: docs links, updated stats (222+ tests, 14 languages), feature status
2026-04-11 20:58:34 +02:00
Dionisio Pozo 1bb65e6448 Merge pull request #275 from EdouardVanbelle/refactor/css-variables
refactor(css): maximize usage of variables (1st part)
2026-04-11 20:49:52 +02:00
Edouard Vanbelle 8d6964a0ff POC: use FontAwesome / svg on card view to simplify code 2026-04-11 20:24:43 +02:00
Dionisio Pozo 3dc4e6a68b Merge pull request #280 from EdouardVanbelle/style/apply-biome-formatter-linter-recos
style(js/css): apply biome formatter & linter recos
2026-04-11 19:06:43 +02:00
Edouard Vanbelle 5f87dbf612 fix(device-verify): includes main.css + rename class to avoid collision 2026-04-11 18:58:38 +02:00
Edouard Vanbelle 3ab219f77d refactor(css): reduce css icons 2026-04-11 18:39:03 +02:00
Edouard Vanbelle 49c3406e4b refacor(css): reduce dependency of theme=dark 2026-04-11 18:39:03 +02:00
Edouard Vanbelle 56a067ee96 refactor(css): apply biome format on css 2026-04-11 18:39:03 +02:00
Edouard Vanbelle 94b36e41e0 refactor(css): maximize usage of variables (1st part, to simplify CSS & style)
note: there is still work to do, but has there are risks to conflict I prefer to commit this first part now
2026-04-11 18:39:03 +02:00
Edouard Vanbelle c7eeb734d7 style(css+js): apply biome formatter 2026-04-11 18:20:43 +02:00
Edouard Vanbelle 21a551b836 fix(style): correct file list display (was overlapped by header) 2026-04-11 18:10:50 +02:00
Diocrafts 57b99f962e fix(reset.css): use important on .hidden to override display styles 2026-04-11 11:18:05 +02:00
Dionisio Pozo 06cb9b7ba5 Merge pull request #278 from kabakaev/fix-blank-login-page
fix blank login page regression
2026-04-11 11:00:03 +02:00
Diocrafts 3ce8ec25d6 feat(music): complete music UI overhaul - bugs, UX, missing features & styling
- Fix dead buttons (fa-edit/fa-share → fa-pen/fa-share-alt matching icon registry)
- Fix volume icon, shuffle bias, queue removal, repeat-one CSS
- Replace native prompt/confirm/alert with Modal system
- Add click-to-select, dblclick-to-play, playback error notifications
- Add loading indicators, success toasts, close player button
- Implement remove track from playlist (DELETE endpoint)
- Implement drag & drop track reorder (PUT reorder endpoint)
- Implement manage shares dialog (GET/DELETE shares endpoints)
- Implement cover art upload & display (cover_file_id in UpdatePlaylistDto)
- Implement public/private toggle (is_public in UpdatePlaylistDto)
- Mount get_audio_metadata route in backend routes.rs
- Redesign empty state: full-width centered onboarding when 0 playlists
- Move create button into sidebar header as compact + button
- Add music.css to build.rs production CSS bundle
- Add 16+ i18n keys in en.json and es.json
- Add CSS for drag handles, track remove, cover overlay, shares dialog, public badge
2026-04-11 10:59:01 +02:00
Alexander Kabakaev cb8e74375f fix(reset.css): blank login page regression 2026-04-11 10:11:47 +02:00
Dionisio Pozo 46fbcc6f0f Merge pull request #272 from EdouardVanbelle/feat/sticky-action-bar 2026-04-08 14:28:32 +02:00
Andrey Tkachenko da066f47fa Music Player & Playlist Manager 2026-04-08 15:14:03 +03:00
Edouard Vanbelle 669623adbe feat(layout): add a sticky page header
- keep action bar, breadcrumb, dropzone visible even during scroll down
2026-04-08 10:41:42 +02:00
Edouard Vanbelle 1ce29c101d style: apply biome CSS/JS format 2026-04-08 00:09:27 +02:00
Dionisio 4c796aaf61 fix(ui): resolve hidden class vs style.display conflict, polish toggle buttons
style.display='block'. All panel show/hide now uses classList.
- Fix admin badge/panel not showing in user menu (same root cause).
- Fix profile page main-content/auth-error panels (same root cause).
- Add hidden class to admin-setup-panel in login.html for consistency.
- Remove redundant .admin-setup-panel{display:none} CSS rule.
- Polish view toggle buttons: tighter gap, smaller size, subtler shadow.
2026-04-05 00:51:17 +02:00
Edouard Vanbelle a466a6473d refactor(files): merge grid and list builder, use CSS only to switch between views 2026-04-04 17:21:44 +02:00
Edouard Vanbelle 534d4dc190 feat: improve drag & drop
* permits multiple drag & drop
 * synchronize grid & list view on selection
 * permits copy during ddrag & drop (use sift/alt key according your OS)
 * use batch move / copy on drag & drop
2026-04-03 15:06:09 +02:00
Edouard Vanbelle 5b821a7eab refactor(empty-list): simplify empty list, will now work on list view 2026-04-03 14:16:36 +02:00