Changes 12/7/2025 (v2.3.7)
release(v2.3.7): hover snippets, inline folder drag, OnlyOffice & CSP polish
- Add
/api/file/snippet.php+FileController::snippet()to return short, ACL-aware text snippets for hover previews (txt/code, CSV, and Office docs). UsesFileModel::getDownloadInfo()for path safety, enforces byte caps viaOFFICE_SNIPPET_MAX_BYTES, and normalizes to UTF-8 with atruncatedflag. - Extend hover snippets in
fileListView.js:- Text preview cap set to 512 KB, with caching keyed by
folder::file. - New Office snippet support (DOC/DOCX, XLS/XLSX, PPT/PPTX) via the backend endpoint instead of downloading whole files.
- Hover preview auto-disabled on touch / coarse-pointer devices, and can be dismissed via
Esc. - Hover preview is hidden when changing folders / reloading the file list to avoid stale overlays.
- Text preview cap set to 512 KB, with caching keyed by
- Add lightweight video previews in the hover panel + gallery:
- Inline
<video>thumbnail for common formats (mp4, mkv, webm, mov, ogv, mov) usingpreload="metadata"and a quick seek, with a graceful text fallback if the video cannot load. - New movie icon in the gallery view for video files.
- Inline
- Allow dragging inline folder rows into the folder tree / drop targets:
- New
folderRowDragStartHandler()and JSON drag payload (dragType: 'folder') wired fromfileListView.js. - Shared
syncTreeAfterFolderMove(sourceFolder, destination)helper infolderManager.jskeeps the tree, expansion state,currentFolder,lastOpenedFolder, chevrons, icons, and peek caches in sync after any folder move (tree→tree, inline→tree, quick-move).
- New
- Improve drag-and-drop UX for both files and folders:
- New pill-style drag ghosts for files (
fileDragDrop.js) and folders (folderManager.js+ inline folders) that respect light/dark mode, use rounded pills, and avoid the grey square halo. - Folder and file moves now emit a
folderStatsInvalidatedevent so folder stats/peek caches stay in sync for both source and destination parents.
- New pill-style drag ghosts for files (
- OnlyOffice integration polish in
fileEditor.js:- Warm overlay (
.oo-warm-overlay) now haspointer-events: noneso CSV / options dialogs are clickable. onRequestClose,onAppReady, andonDocumentReadyfrom PHP config are preserved and chained instead of being overwritten; the warm overlay is cleared as soon as OnlyOffice signals the UI is ready.
- Warm overlay (
- Admin OnlyOffice CSP helper update in
adminOnlyOffice.js:- Generated nginx snippet now explicitly hides upstream
X-Frame-OptionsandContent-Security-Policyheaders and replaces them with a single OnlyOffice-aware CSP for the configured Docs origin (script/connect/frame/media/worker rules included).
- Generated nginx snippet now explicitly hides upstream
- Add
OFFICE_SNIPPET_MAX_BYTESconstant (default 5 MiB) inconfig.phpto cap Office snippet parsing. - Minor UX copy tweak: “No files or folders to display.” → “No files or folders.” in
i18n.js.
v2.3.7
Full Changelog
SHA-256 (zip)
17ccc40ae20faf5193e3a9e3646f277eed0641c5b677bfee529a3f4cb15e0ffb FileRise-v2.3.7.zip