Commit Graph

160 Commits

Author SHA1 Message Date
Edouard Vanbelle 6f4abfcec4 refactor(js): avoid use of window.XXX and move to import/export
- change worker: do not cache html pages (not necessary)
- remove use of window.XXX and maximize import/export,
  this will provide more clarety,
  show circular dependencies + you will benefit IDE help
2026-04-14 19:05:01 +02:00
Dionisio Pozo 65c8fc7f5e Merge pull request #288 from EdouardVanbelle/fix/frontend-search-view 2026-04-13 14:42:24 +02:00
Edouard Vanbelle 26ce794090 fix(SharedSection): hide files list header, shared view has it's own view 2026-04-13 13:25:48 +02:00
Edouard Vanbelle 28963965a1 fix(searchResult): move search result into sticky header 2026-04-13 13:24:58 +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 c512534bfa fix: session_expired after login on HTTP deployments (#241)
Three changes to fix the immediate-logout issue reported by multiple
Docker users:

1. Add explicit `credentials: 'same-origin'` to the login fetch call.
   This was the only fetch in the entire codebase missing it. While
   modern browsers default to 'same-origin', some privacy configs or
   older engines may default to 'omit', silently dropping Set-Cookie
   headers from the login response.

2. Post-login cookie verification: after a successful login, the
   frontend now checks that the CSRF cookie (non-HttpOnly, readable
   by JS) was actually stored before redirecting. If the browser
   rejected the cookies, a clear error message is shown explaining
   the OXICLOUD_COOKIE_SECURE / HTTP mismatch.

3. Server-side diagnostic: the login handler now warns in logs when
   Secure cookies are set on a request that didn't arrive via HTTPS
   (no X-Forwarded-Proto: https header), pointing admins to the
   OXICLOUD_COOKIE_SECURE=false fix.

Root cause: users who set OXICLOUD_BASE_URL=https://... (or have
OXICLOUD_COOKIE_SECURE=true) but access via plain HTTP get cookies
with the Secure flag, which browsers silently reject over HTTP.
2026-04-12 01:38:19 +02:00
Diocrafts e91dcee0ea fix: scale folder upload timeout by file size (fixes #249)
The folder upload path (uploadFolderEntries) used a flat 10s fetch
timeout for all files regardless of size. Large files like .CR2 RAW
images (~25MB) on slower networks (e.g. Raspberry Pi) exceeded this
timeout, causing the AbortController to kill the request before the
server received the full body — hence no server logs and 'unknown
error' on the frontend.

Changed to size-scaled timeout: 30s base + 2s per MB (min 10s).
A 25MB CR2 now gets ~80s instead of 10s.
2026-04-12 00:29:34 +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
Edouard Vanbelle 13aa90cf3c style(js): correct linter main warnings 2026-04-11 18:27:54 +02:00
Edouard Vanbelle c7eeb734d7 style(css+js): apply biome formatter 2026-04-11 18:20:43 +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
Dionisio Pozo d4da43ebe0 Merge pull request #273 from EdouardVanbelle/fix/photo-section 2026-04-08 14:29:01 +02:00
Andrey Tkachenko da066f47fa Music Player & Playlist Manager 2026-04-08 15:14:03 +03:00
Edouard Vanbelle 2c33eeb74c fix(section): hide list view header in photos' section 2026-04-08 13:51:25 +02:00
Edouard Vanbelle a4266a6e93 style: apply linter suggestions 2026-04-08 00:09:27 +02:00
Edouard Vanbelle 1ce29c101d style: apply biome CSS/JS format 2026-04-08 00:09:27 +02:00
Edouard Vanbelle 786a778546 fix(main.js): add missing break in swithc/case + apply linter 2026-04-08 00:09:27 +02:00
Dionisio Pozo e752f24c8c Merge pull request #268 from EdouardVanbelle/feat/file-url-history 2026-04-07 18:49:42 +02:00
Edouard Vanbelle c16e3c973e feat(url,history): add shown file in the url 2026-04-07 11:56:09 +02:00
Edouard Vanbelle 29b01529da fix(inlineViewer): stops media when viewer is closed 2026-04-07 11:40:14 +02:00
Edouard Vanbelle 72af70505d fix(icon): add missing menu bar icon, visible on small media screen 2026-04-07 00:53:46 +02:00
Dionisio Pozo 2df2789824 Merge pull request #264 from EdouardVanbelle/fix/hash-url 2026-04-05 10:09:54 +02:00
Dionisio Pozo a85bbea3d2 Merge pull request #263 from EdouardVanbelle/fix/select-all 2026-04-05 10:09:13 +02:00
Edouard Vanbelle a110d281c3 fix(url): fix historyUrl serialization 2026-04-05 02:11:43 +02:00
Edouard Vanbelle f72dec6fe1 fix(multiSelect): correct select all checkbox, correct shift click 2026-04-05 02:00:10 +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
Dionisio Pozo f0b710e5af Merge pull request #260 from EdouardVanbelle/refactor/merge-grid-and-list-builder 2026-04-04 17:25:54 +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 46d62adc55 feat(item-selection): add ctrl/meta/alt key to toggle item selection 2026-04-04 16:27:27 +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
Edouard Vanbelle db30639823 refactor: rename View into Section to keep coherence 2026-04-03 14:16:36 +02:00
Edouard Vanbelle 8d2a45c0ff feat(navigation): no change/blink section if already selected 2026-04-03 14:16:36 +02:00
Edouard Vanbelle 744d2c88fb refactor: simplify multiSelect module (remove duplicates, etc)
- remove duplicate code
- use one uniq selection bar (for both list & grid view)
2026-04-03 13:20:19 +02:00
Dionisio Pozo e8b9604729 Merge pull request #258 from justDance-everybody/clawoss/fix/pdf-wopi-view-fallback 2026-04-03 10:23:37 +02:00
titagass ea714618c5 fix(viewer): fallback to inline viewer when WOPI editor fails for PDFs 2026-04-03 05:48:20 +00:00
Edouard Vanbelle 7633f00399 feat(fileList): add action column to display context menu 2026-04-02 22:56:26 +02:00
titagass c2cb7556a5 fix(wopi): fallback to view mode for pdf files 2026-04-02 18:00:21 +00:00
Edouard Vanbelle 266fc26e16 feat(fileview) show loader only if requests take more than 100ms 2026-04-02 18:37:16 +02:00
Edouard Vanbelle fdf1184601 feat(navigation) add browser history: permits url bookmarking on current folder 2026-04-02 18:36:28 +02:00
Dionisio Pozo 128dd8a76a Merge pull request #248 from EdouardVanbelle/chore/file-mode
chore: remove all executable attributes on non bash files
2026-04-01 23:42:12 +02:00
Edouard Vanbelle badf35f08f chore: remove all executable attributes on non bash files 2026-04-01 23:14:42 +02:00
Edouard Vanbelle d6c3ca3198 fix(notification): correct bell animation + automatically close notification zone on clear 2026-04-01 23:01:39 +02:00
Dionisio Pozo 2357186f91 Merge pull request #238 from EdouardVanbelle/feat/drag-n-drop-in-breadcrumb
feat: drag 'n drop into the breadcrumb
2026-03-25 18:18:57 +01:00
Edouard Vanbelle db4535ed6a feat: capability to move a card into a breadcrumb's folder 2026-03-25 17:55:33 +01:00
Edouard Vanbelle 276b9ff04c refactor: remove duplicate code to handle home folder in bread crumb 2026-03-25 17:49:00 +01:00
Edouard Vanbelle 2a0a2e9c0c icons: add missing home icon (source: https://fontawesome.com/icons/house?f=classic&s=solid) 2026-03-25 16:28:06 +01:00
BillionClaw 5eb7b31740 fix(inline-viewer): add download progress bar for files >2GB
Add download progress tracking to createBlobUrlViewer to fix incorrect
progress display for large files. Changes:

- Add xhr.onprogress handler to track download bytes
- Use 64-bit float division to avoid 32-bit integer overflow
- Show progress bar UI for files >10MB with percentage
- Add CSS styles with dark theme support

The progress calculation now correctly handles files larger than 2GB
by using JavaScript's native double-precision floats instead of
operations that might truncate to 32-bit integers.

Fixes #82
2026-03-18 11:37:42 +08:00
Dionisio Pozo 5279e0c266 Merge pull request #218 from BillionClaw/clawoss/fix/dark-mode-and-search 2026-03-17 07:59:02 +01:00