Releases: error311/FileRise
v3.1.1
Changes 01/17/2026 (v3.1.1)
release(v3.1.1): OIDC env overrides + configurable resumable chunk size + clearer startup logs (closes #86, closes #87, closes #90)

Commit message
release(v3.1.1): OIDC env overrides + configurable resumable chunk size + clearer startup logs (closes #86, closes #87, closes #90)
- config: allow env overrides for OIDC knobs (auto-create, group claim, admin group, Pro group prefix)
- uploads: add configurable Resumable.js chunk size (Admin + siteConfig) and honor it in upload.js
- uploads: improve relative-path folder uploads and remote staging/cleanup for non-local sources
- admin: add settings search + smoother section open/close animations
- admin: restrict Pro license actions to the registered/primary admin user
- remote storage: add FR_REMOTE_DIR_MARKER to preserve empty dirs; skip Trash on Google Drive sources
- UX: clearer “FileRise startup complete” log line + better long-running delete/restore/loading feedback
Closes #86
Closes #87
Closes #90
Added
- OIDC env overrides (in addition to config defaults):
FR_OIDC_AUTO_CREATE,FR_OIDC_GROUP_CLAIM,FR_OIDC_ADMIN_GROUP,FR_OIDC_PRO_GROUP_PREFIX. - Upload tuning (Admin): “Resumable chunk size (MB)” (0.5–100 MB).
Exported via siteConfig so the frontend can size chunks dynamically. - Remote folder marker:
FR_REMOTE_DIR_MARKER(default:.filerise_keep) to preserve empty remote folders (S3-style prefix backends). - Admin settings search: quick filter for sections/settings in the Admin panel UI.
Changed
- Resumable uploads honor configured chunk size (used by file picker + drag/drop when Resumable is available).
- Upload handling for folder paths:
- validates and sanitizes
resumableRelativePath/relativePath - supports subfolder uploads more consistently
- remote sources stage chunks in meta root (
uploadtmp/) and push via adapter, then cleanup temp folders
- validates and sanitizes
- Admin Pro license visibility/actions are restricted to the primary/registered admin (first admin in
users.txtorder). - Remote deletes / Trash behavior:
- Google Drive sources skip Trash (deletes are permanent)
- remote folder “empty checks” ignore the marker file
- Docker startup log clarity:
start.shprints a “startup complete” line and clarifies that further output is Apache logs.
Fixed
- #86: OIDC behavior is now controllable via environment variables (no code/config edits required).
- #87: Resumable chunk size is now configurable to fit proxy limits (e.g., tunnels/CDNs).
- #90: Clearer startup output + better guidance for collecting logs.
- UI responsiveness / long operations
- “Deleting…” busy states for file/folder delete confirmations and Trash restore/delete actions
- “Still loading…” toast for slow remote listings, with a fallback if a folder no longer exists
Notes
FR_REMOTE_DIR_MARKERis best-effort and primarily intended for remote backends that treat directories as prefixes (e.g., S3).- Google Drive sources do not support Trash semantics in the adapter; the UI notes this and deletes are permanent.
- Some Admin Panel strings still fall back to English; translations will continue to improve over time.
v3.1.1
Full Changelog
SHA-256 (zip)
dce7c531fd4b52dd5f0cda4b74774871ce78b9685f1010aaf01f0e44a01f0faf FileRise-v3.1.1.zip
v3.1.0
Changes 01/16/2026 (v3.1.0)
release(v3.1.0): default language + portal i18n + ffmpeg path config (closes #88, closes #89)
Commit message
release(v3.1.0): default language + portal i18n + ffmpeg path config (closes #88, closes #89)
- Admin: add “Default language” setting (used when a user has not chosen a language yet)
- Admin: add optional FFmpeg binary path setting (env FR_FFMPEG_PATH overrides / locks)
- Thumbnails: resolve ffmpeg path from env first, then admin config, then PATH
- Portals: add language selector + apply defaultLanguage from siteConfig on first run
- Portals: fix button styling (accent-aware) + refresh button color (fixes #88)
- i18n: split locales into separate files and add Polish/Russian/Japanese; refresh German strings (fixes #89)
- UI: replace hardcoded upload/login alerts/toasts with i18n keys for better translation coverage
Closes #88
Closes #89
Added
- Admin setting: Default language
- New
display.defaultLanguageconfig surfaced in Admin → Header/File List/Language section. - Used automatically when a user has not chosen a language yet.
- New
- Admin setting: FFmpeg binary path (optional)
- New
ffmpegPathconfig for video thumbnail generation. FR_FFMPEG_PATHremains the source of truth when set (admin field becomes read-only).
- New
- New locales shipped
- Polish (pl), Russian (ru), Japanese (ja), plus Simplified Chinese (zh-CN) locale file.
- Portal language selector
- Added a language dropdown to both portal.html and portal-login.html.
Changed
- FFmpeg resolution order for thumbnails
FR_FFMPEG_PATH→ adminffmpegPath→ fallback toffmpegfrom PATH (and standard locations).- This keeps the Docker image lean while still supporting thumbnails when ffmpeg exists on the host/container.
- Portals now inherit default language
- If
localStorage.languageis missing, portals fetch/api/siteConfig.phpand applydisplay.defaultLanguage.
- If
- Translations architecture
- Locales are now maintained in dedicated files under
public/js/i18n/locales/lazy load instead of a giant embedded map. - Added missing i18n keys for upload flows and admin/pro toasts to reduce English-only strings.
- Locales are now maintained in dedicated files under
Fixed
- Portal button styling / colors (fixes #88)
- Portal buttons now use accent-aware classes (
portal-btn-primary/portal-btn-outline) and render correctly across themes.
- Portal buttons now use accent-aware classes (
- German translation gaps (fixes #89)
- German strings were refreshed and missing UI keys were added/normalized.
- More consistent i18n coverage
- Upload-related toasts and some boot/login alerts now use translation keys instead of hardcoded English.
Notes
- There are still parts of the Admin Panel and some edge UI strings that may fall back to English. This release fixes the reported German issues and adds new locales, but translation coverage will continue to improve over time.
- If you want video thumbnails in Docker without bundling ffmpeg, mount a host ffmpeg binary or install it in your own derived image and set
FR_FFMPEG_PATH(or set the path in Admin).
v3.1.0
Full Changelog
SHA-256 (zip)
6afcd2a6413eb6b2bfbbbea567951921123fe9f40dbd75c772352ada645ffbbe FileRise-v3.1.0.zip
v3.0.2
Changes 01/15/2026 (v3.0.2)
release(v3.0.2): ffmpeg-backed video thumbnails (Docker) + new thumbnail API (closes #79)
Commit message
release(v3.0.2): ffmpeg-backed video thumbnails (Docker) + new thumbnail API (closes #79)
- Docker: ship ffmpeg so video thumbnails work out-of-the-box in container installs
- add /api/file/thumbnail.php endpoint to generate + cache JPEG thumbnails for video files
- UI: use ffmpeg-backed thumbnails for hover previews + gallery cards (fallback to movie icon)
- harden query param parsing for file endpoints (avoid array/querystring edge cases)
- docs: add FFmpeg + archive tools to THIRD_PARTY notices
Closes #79
Added
- Video thumbnail API endpoint:
GET /api/file/thumbnail.php?folder=...&file=...
Returns a cached JPEG thumbnail for supported video files. - Server-side thumbnail generator (local sources only):
- Uses
ffmpegto extract a frame and writes it into a meta-root cache (thumb_cache/). - Cache key includes file path + mtime + size + thumb dimensions for stable reuse.
- Optional env tuning:
FR_FFMPEG_PATH(override ffmpeg path)FR_VIDEO_THUMB_MAX_W,FR_VIDEO_THUMB_MAX_H(thumbnail max size)
- Uses
- Docker image now installs
ffmpegso thumbnails work in Docker/Unraid without extra setup.
Changed
- Hover preview video thumbs now use the thumbnail API instead of
<video preload="metadata">seeking. - Gallery view video cards now render an
<img>thumbnail with a play overlay; falls back to the movie icon on error. - Thumbnail generation respects your existing “max video preview size (MB)” setting:
- If a video exceeds the configured cap, the thumbnail endpoint returns “too large”.
- Source-aware behavior (when Sources is enabled):
Security / Hardening
- Thumbnails are only generated for authenticated users and still enforce:
- ACL read rules (and read_own ownership checks where applicable)
- no thumbnails for encrypted files
- Cache responses include
X-Content-Type-Options: nosniffand a private cache policy.
Docs / Compliance
- Updated
THIRD_PARTY.mdto mention Docker-bundled system packages:- FFmpeg (LGPL-2.1+; builds may include GPL components)
- p7zip / unar (for archive handling)
v3.0.2
Full Changelog
SHA-256 (zip)
9a22cef243febf95a3579759221fcc741f2b83f7c7c4ecfb1ee98e595422bba5 FileRise-v3.0.2.zip
v3.0.1
Changes 01/14/2026 (v3.0.1 Archive update + login focus)
release(v3.0.1): archive create/extract upgrades (7z + RAR via unar) + login focus fix (closes #82)

Commit message
release(v3.0.1): archive create/extract upgrades (7z + RAR via unar) + login focus fix (closes #82)
- add 7z archive format option for multi-file downloads (worker + download streaming)
- expand extraction to support ZIP + 7z formats via 7z, with RAR preferring unar when available
- harden archive extraction against traversal, symlinks, zip-bombs, and empty/escaped outputs
- improve archive job robustness (stale job cleanup, clearer queued/worker errors, correct MIME/filenames)
- UI: archive format selector + name normalization, better “Extract Archive” handling, i18n updates
- fix login screen focus (auto-focus username when login prompt shows)
Closes #82
Added
- Archive download format selector (ZIP / 7z) in the “Download Selected Files as Archive” modal.
- 7z archive creation support in the background worker (
zip_worker.php) using7zz/7z. - RAR extraction prefers
unarwhen available (FOSS-friendly); falls back to7zwhen needed. - Archive detection helper
isArchiveFileName()supporting:.zip,.7z,.tar.*,.gz,.bz2,.xz,.rar- RAR split parts like
.r01,.r02, etc.
Changed
- “ZIP” language → “Archive” language across UI, admin notes, and translations.
- Archive job enqueue + download endpoint now supports a
formatfield (zipor7z):- download streaming sets correct extension + MIME type (
application/ziporapplication/x-7z-compressed) - filename normalization strips any existing
.zip/.7zand applies the chosen extension
- download streaming sets correct extension + MIME type (
- Archive extraction is no longer ZIP-only:
- ZIP still uses
ZipArchive - non-ZIP formats use
7zlisting (7z l -slt) + extraction of an allow-listed set - RAR parts like
.r01map to their base.rar/.part1.rarautomatically
- ZIP still uses
- Archive queue robustness
- stale queued/working jobs are cleaned up (PID checks + cmdline sanity where available)
- queued jobs that never start can surface a clearer error message (“worker did not start…”)
Fixed
- Login UX: auto-focus username field when the login prompt appears (reduces “why can’t I type?” friction).
- Extract action visibility: Extract button/menu now appears for supported archive formats (not just
.zip). - Better extraction feedback: extraction API returns optional
warningtext; UI shows success + warning separately when partial issues occur.
Security / Hardening
- Archive extraction safety controls:
- blocks absolute paths / traversal (
../) and unsupported folder names - skips dotfiles (configurable) instead of extracting hidden entries by default
- detects and skips symlinks and removes any symlinks created during extraction
- zip-bomb limits: max uncompressed bytes + max files (configurable)
- prunes empty outputs that indicate partial/broken extraction and removes any files that escape the extraction root
- blocks absolute paths / traversal (
Docker
- Image now installs 7zip + unar so archive create/extract works out-of-the-box with FOSS tooling.
- Ubuntu repo components are restricted to
main universe(avoids non-free repos by default).
v3.0.1
Full Changelog
SHA-256 (zip)
b24fc6b5775d1f78ab73d2c876795941b28575702bae1e5664957402d723852a FileRise-v3.0.1.zip
v3.0.0
Changes 1/11/2026 (V3.0.0)
release(v3.0.0): storage adapter seam + source-aware core (Sources-ready)
- Display file size for items thumbnail view (closes #85)
- add StorageAdapterInterface + LocalFsAdapter and StorageFactory/StorageRegistry
- introduce SourceContext (active source, per-source upload/meta/trash roots, read-only gating)
- make core file/folder ops source-aware (uploads, downloads, shares, trash, portals, OnlyOffice)
- add cross-source copy/move for files + folders with guardrails and audit logging
- add source selector UI + visible-sources API and propagate sourceId through UI flows
- add minimizable transfer progress UI and toast severity styling
- add Pro API-level gating + bundle installer refactor + one-click Pro bundle download/install
v3.0.0 Highlights
- Storage adapter seam landed in core, enabling FileRise to operate against different backends through a consistent interface.
- Core is now source-aware end-to-end (UI + API + backend), so Pro “Sources” can plug in cleanly while Core remains local-first by default.
- Major performance improvements for folder trees and listings (especially in remote/large-tree scenarios).
- Cross-source copy/move works for both files and folders with explicit guardrails.
- New UX polish: transfer progress card + toast severity styling.
Core architecture
Storage adapter layer
- Added a formal adapter interface and default local implementation:
StorageAdapterInterfaceLocalFsAdapter
- Added adapter orchestration:
StorageFactoryto instantiate adapters for the active sourceStorageRegistryto cache/reuse adapter instances
- Added source/session plumbing:
SourceContextto resolve active source + per-source roots (upload/meta/trash) and carry read-only stateReadOnlyAdapterwrapper to enforce read-only sources at the adapter boundary
Outcome: core file/folder operations no longer assume a single local filesystem root.
Sources support (core plumbing + UI/APIs)
UI
- Added a Sources selector manager (
public/js/sourceManager.js) and wired it into the main app bootstrap so the UI can:- load visible sources
- persist/restore active selection
- notify the rest of the UI on source changes
APIs (core-side endpoints, Pro-gated at runtime)
- Added/expanded source endpoints under
/api/pro/sources/:visible.php(what the current user can see/select)select.php(set active source)list.php,save.php,delete.php(admin management)test.php(connection test action)
Source-aware request threading
- Threaded
sourceIdthrough many UI and API flows so reads/writes execute under the correct adapter context (including inactive dual-pane reads).
File operations
Cross-source copy/move
- Implemented cross-source file copy/move (adapter → adapter) with safe fallbacks.
- Implemented cross-source folder copy/move (recursive) with explicit guardrails:
FR_XCOPY_MAX_FILESFR_XCOPY_MAX_BYTESFR_XCOPY_MAX_DEPTH
- Added safety rules:
- block writes when destination is read-only
- enforce scope/ACL/ownership rules consistently
- block operations in encrypted folders when not supported by the active backend
- Added a global, minimizable transfer progress card (
transferProgress.js)- percent + speed where size is known
- indeterminate progress where size is unknown
- hooks wired into copy/move modals + drag/drop flows
Uploads / Downloads / Streaming
Uploads
- Upload pipeline is now adapter-aware and source-aware.
- Enforces read-only sources and other capability limits server-side.
- Remote backends can be staged and written via adapter
writeStream()when applicable.
Downloads
- Download streaming is adapter-aware (local vs remote) and supports Range behavior where possible:
Accept-Ranges,Content-Range, 206/416 handling
- Shared link flows were updated to resolve files within the correct source context.
Folder tree + listing performance
Reduced fan-out and expensive probes
- Added/expanded shallow listing paths to avoid accidental deep scans for huge remote trees.
- Introduced optimizations to reduce per-entry stat calls when list results already provide enough metadata.
- Kept the “large tree” goal intact (no regressions intended for very large folder counts).
Search / Pro feature gating (core-side)
Search Everywhere integration
- Updated core wiring so Search Everywhere can operate in a source-aware manner (including “All sources” behavior when enabled).
Pro gating by API level
- Added/expanded Pro API level gating logic (
FR_PRO_API_LEVEL) so features can be enabled/disabled safely without brittle version-string comparisons.
Admin + maintenance plumbing
- Expanded admin plumbing around Pro state, license fields, and feature availability.
- Added/updated Pro bundle management wiring (including download/install paths) to support smoother Pro updates without breaking offline installs.
- Toasts now support severity/tone (success / info / warning / error) and consistent styling.
- Various UI flows updated to use the improved toast semantics.
Notes / behavioral considerations
- This release introduces a major internal architecture shift (adapter seam + source context).
- Many endpoints now accept
sourceId(optional in most cases; defaults to the current/legacy local behavior). - Remote backends may have feature limitations compared to local FS (e.g., ZIP/encryption-at-rest behaviors depending on backend support).
FileRise v3.0.0 is a major internal milestone: a new storage adapter seam + source-aware core that unlocks Pro “Sources” (multi-backend) while keeping Core local-first and fast. Expect continued iteration on adapter edge cases and remote performance tuning.
v3.0.0
Full Changelog
SHA-256 (zip)
f8c245d2a2012dd1271433f8884a212788b284653eeaa52277100707a501f7cf FileRise-v3.0.0.zip
v2.13.1
Changes 1/2/2025 (v2.13.1)
release(v2.13.1): harden Docker startup perms + explicit inline MIME mapping (see #79)
Fixes
- Prevent Docker container startup from exiting when
chown/chmodare unsupported (exFAT/NTFS/CIFS/NFS root_squash, non-root runs). Startup now logs warnings and continues. - Add non-fatal permission writeability hints for
/var/www/{uploads,users,metadata,sessions}to help diagnose mount/UID issues.
Improvements
- Serve inline-safe images/audio/video with explicit MIME mapping to avoid
nosniff+application/octet-streampreview issues (more reliable inline previews).
Docs
- Add AI disclosure section to README.
v2.13.1
Full Changelog
SHA-256 (zip)
67485803063b896a594e54f35b72982b77f8cb108c659425844954d97e61b425 FileRise-v2.13.1.zip
v2.13.0
Changes 12/30/2025 (v2.13.0)
release(v2.13.0): inline rename + video preview limits + folder tree perf (see #79)
Added
- Inline rename:
- File list inline rename (table view) + context-menu support
- Folder tree inline rename (tree context menu + Rename button)
- Keyboard shortcuts: F2 rename, plus Ctrl/Cmd+Shift+N (new folder)
- Admin Panel setting (Display): Hover preview max video size (MB)
- Applies to hover previews + Gallery video thumbnails
- Folder APIs:
GET /api/folder/getFolderList.php?counts=0to skip metadata count reads (faster on large trees)GET /api/folder/listChildren.php?probe=0to skip per-child “has subfolders / non-empty” probing (faster)
Changed
- Hover previews & Gallery video thumbs:
- Use the new video size limit setting
- Improved “no preview available” fallback when a frame can’t be decoded quickly
- File streaming:
- Improved HTTP Range support (incl. suffix ranges like
bytes=-500) - Expanded safe inline rendering to allowlisted video/audio types when requested (
inline=1)
- Improved HTTP Range support (incl. suffix ranges like
Fixed
- Context menus now position correctly using
clientX/clientY(more reliable across layouts). - Blank folder icons are repaired after drag/drop moves and dual-pane refreshes.
- Admin “Folder Access” modal help text is now collapsible (“More/Less”) for readability.
Performance
- Reduced IO for large installs by:
- Avoiding folder count reads when not needed (
counts=0) - Avoiding directory iterator probes when not needed (
probe=0)
- Avoiding folder count reads when not needed (
v2.13.0
Full Changelog
SHA-256 (zip)
698dd3cff95c30ff77c30de2e99f72d2f9b1fe3df971ae9afa3cb61906f42430 FileRise-v2.13.0.zip
v2.12.1
Changes 12/29/2025 (v2.12.1)
release(v2.12.1): folder summary depth + video thumbnails + dual-pane toggle fix
Closes #79, #80, #81
Added
- Admin Panel setting: Display → File list summary depth
Limits how deep recursive folder totals (files/folders/bytes) will traverse to keep the UI fast on huge trees. - Video thumbnails in Gallery view (best-effort frame capture with safe fallbacks for very large videos).
- Folder stats API support for depth-limited recursion (
deep=1&depth=N).
Changed
- Recursive folder counting is now depth-aware and avoids unnecessary descendant probes when depth is capped.
- Folder summary caching now keys by
(folder + depth)and invalidates correctly after moves/changes.
Fixed
- View Options dual-pane toggle now shows the active “blue” state correctly in dark mode.
- Gallery video preview initialization improved (more reliable thumb generation / preview frame selection).
v2.12.1
Full Changelog
SHA-256 (zip)
a3388bfd5aeff3381aedc6db7b47c9bd33e24c9521ea0346cd8f72805c30c634 FileRise-v2.12.1.zip
v2.12.0
Changes 12/28/2025 (v2.12.0)
release(v2.12.0): dual-pane mode + keyboard shortcuts
Added
- Dual-pane mode for the file list (left/right panes) with per-pane folder state, active-pane switching, and persisted last folders.
- Dual-pane toggle in User Panel and in the View Options popover.
- Keyboard shortcuts (ignored when a modal is open or when typing):
/focus search?show shortcuts hintDeletedelete selected (folder delete if a folder is selected)F3previewF4edit (when editable)F5copyF6moveF7new folderF8delete selected
- Folder summary pill showing folders/files/size, with optional deep totals (recursive) via
deep=1. - Modal accessibility helpers:
- Focus trap within modals
- Restore focus to opener when closing
Escapecloses the topmost visible modal
- New i18n strings for dual-pane hints + an
filerise:i18n-appliedevent to refresh UI text after locale changes.
Changed
- Folder stats endpoint now supports returning recursive totals (folders/files/bytes) when requested (
deep=1), computed ACL-aware and with a scan cap to avoid runaway traversal. - Copy/Move UX in dual-pane prefers the other pane’s folder as the default destination when applicable.
- Dual-pane layout + file list controls are now more responsive (pane width classes, improved pagination/search wrapping).
- Breadcrumb separators adjusted for clearer spacing.
Fixed
- Better correctness in multi-pane contexts:
- Folder icons/strip refresh across both panes.
- Hover preview resolves files using the correct pane’s file data.
- Folder move/file move operations invalidate folder stats and refresh the right UI surfaces.
- Secondary pane is properly hidden on logout / unauthenticated state.
Notes
- Deep folder totals are best-effort and may report as truncated for very large trees due to the scan cap (to keep the UI responsive).
v2.12.0
Full Changelog
SHA-256 (zip)
2edbeb2075cf98e4ca3202e253b63543b49b6b538822d26400962407e5742e66 FileRise-v2.12.0.zip
v2.11.4
Changes 12/26/2025 (v2.11.4)
release(v2.11.4): OIDC token auth method compatibility + authMethod logging (see #77)
Improved OIDC token auth method handling
- Add clearer debug output showing the configured token endpoint auth method (authMethod / library default).
- Apply tokenEndpointAuthMethod more robustly across Jumbojett/OpenIDConnectClient versions by attempting:
- setTokenEndpointAuthMethod()
- setTokenEndpointAuthMethodsSupported()
- and a providerConfigParam() fallback to force token_endpoint_auth_methods_supported
- Helps prevent provider token failures like “client id or secret not provided” when an explicit auth method is required.
v2.11.4
Full Changelog
SHA-256 (zip)
1d2d4c65f1871e8fce752cdd68eeb13dc00e213eb70d2a5db73142c6802e9b0c FileRise-v2.11.4.zip


