Skip to content

Commit a6caa12

Browse files
authored
release(v3.7.0): AI chat admin workspace, public share/portal copilots, PDF previews, and WebDAV read-stream hardening
- pro(ai): add core AI API wrappers, admin AI workspace hooks, and public share/portal copilot integration seams - files(pdf): add opt-in local PDF thumbnails and inline PDF preview support - mcp(core): extend scoped operation catalog for AI file/folder actions and metadata discovery - automation(core): expose AI watched-rule and approval actions through ProAutomationApiService - storage(webdav): switch remote reads to curl-backed streaming with low-speed timeout handling - security: keep public AI explicitly opt-in per share/portal and preserve scoped public guards
1 parent 415beec commit a6caa12

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+7296
-161
lines changed

CHANGELOG.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,101 @@
11
# Changelog
22

3+
## Changes 03/08/2026 (v3.7.0)
4+
5+
**Demo videos**
6+
7+
- [FileRise Pro AI Chat: Organize Files By Type](https://youtu.be/zoM7LudY934)
8+
- [FileRise Pro AI Chat: Extract Invoice Fields to JSON and CSV](https://youtu.be/HhY__X695KM)
9+
10+
`release(v3.7.0): AI chat admin workspace, public share/portal copilots, PDF previews, and WebDAV read-stream hardening`
11+
12+
**Commit message**
13+
14+
```text
15+
release(v3.7.0): AI chat admin workspace, public share/portal copilots, PDF previews, and WebDAV read-stream hardening
16+
17+
- pro(ai): add core AI API wrappers, admin AI workspace hooks, and public share/portal copilot integration seams
18+
- files(pdf): add opt-in local PDF thumbnails and inline PDF preview support
19+
- mcp(core): extend scoped operation catalog for AI file/folder actions and metadata discovery
20+
- automation(core): expose AI watched-rule and approval actions through ProAutomationApiService
21+
- storage(webdav): switch remote reads to curl-backed streaming with low-speed timeout handling
22+
- security: keep public AI explicitly opt-in per share/portal and preserve scoped public guards
23+
```
24+
25+
**Added**
26+
27+
- **Core AI API surface for Pro integration**
28+
- Added AI endpoint wrappers under:
29+
- `/api/pro/ai/chat.php`
30+
- `/api/pro/ai/config/{get,save,public}.php`
31+
- `/api/pro/ai/share/chat.php`
32+
- `/api/pro/ai/portal/chat.php`
33+
- `/api/pro/ai/agents/{list,save,delete}.php`
34+
- `/api/pro/ai/recipes/{list,save,delete}.php`
35+
- `/api/pro/ai/jobs/queue.php`
36+
- **Automation AI workflow endpoints**
37+
- Added endpoint wrappers under:
38+
- `/api/pro/automation/ai-rules/{list,save,delete}.php`
39+
- `/api/pro/automation/approvals/{list,decide}.php`
40+
- `/api/pro/automation/agent/inbound.php`
41+
- `/api/pro/automation/jobs/output.php`
42+
- **Admin AI workspace UI**
43+
- Added the in-app AI chat/admin shell and AI-specific admin controls in:
44+
- `public/js/aiChat.js`
45+
- `public/js/adminAutomation.js`
46+
47+
**Changed**
48+
49+
- **Public share + portal AI UX**
50+
- Shared-folder and portal public views now expose scoped AI copilot entrypoints, prompt examples, and dedicated styling for public AI interactions.
51+
- Share and portal admin/settings flows now support per-link or per-portal AI enablement controls.
52+
- **PDF preview support**
53+
- Gallery cards and desktop hover previews can now show rasterized first-page thumbnails for local PDF files.
54+
- Added a Core admin toggle under `Appearance, UI & Indexing` so PDF thumbnails remain opt-in and can be disabled to restore the old icon/no-preview behavior.
55+
- PDF files can now open inline in the existing file preview modal when the feature is enabled.
56+
- **Core MCP operation seam for AI**
57+
- Extended `src/FileRise/Domain/McpCoreOpsService.php` with additional scoped operations used by AI flows:
58+
- `read_file`
59+
- `create_file`
60+
- `create_folder`
61+
- `copy_files`
62+
- `rename_file`
63+
- Added operation metadata/catalog helpers so AI/admin surfaces can describe allowed operations without duplicating rules.
64+
- **Automation API service coverage**
65+
- Extended `src/FileRise/Domain/ProAutomationApiService.php` to expose AI watched-rule and approval actions through the existing core service seam.
66+
- **Share/portal metadata**
67+
- Shared-folder and portal records now carry `aiEnabled` metadata so public AI can be explicitly enabled or disabled per surface.
68+
- **Runtime image**
69+
- Updated `Dockerfile` for the AI-enabled runtime prerequisites used by this release branch, including `poppler-utils` for local PDF thumbnailing and AI document workflows.
70+
71+
**Fixed**
72+
73+
- **Public AI share default regression**
74+
- Fixed newly created shares defaulting to `aiEnabled=0` when older or hidden UI paths omitted the field.
75+
- The share modal now only sends `aiEnabled` when the control is visible, preserving backward-compatible defaults.
76+
- **Public AI config endpoint guard**
77+
- Fixed `/api/pro/ai/config/public.php` using the authenticated AI guard instead of the public guard, which could block unauthenticated share/portal pages from loading AI availability correctly.
78+
- **PDF preview regressions**
79+
- Fixed authenticated PDF inline viewing so PDFs no longer download instead of rendering in the preview modal.
80+
- Fixed the PDF thumbnail toggle save path and disabled-state behavior so the old outside-the-modal PDF behavior is restored when the toggle is off.
81+
- **WebDAV source streaming**
82+
- Updated the WebDAV adapter read path to use the curl-backed read stream helper with clearer low-speed timeout handling and better read-stream failure reporting.
83+
84+
**Security**
85+
86+
- **Scoped public AI enforcement**
87+
- Public share and portal AI routes stay bounded to the current share/portal scope, reuse existing access checks, and continue sending `Cache-Control: no-store` plus `X-Content-Type-Options: nosniff`.
88+
- **External provider disclosure**
89+
- Admin AI Settings and the in-app AI Chat now warn when enabled providers are external, so operators are explicitly reminded that prompts and visible file excerpts may leave the instance.
90+
- **Admin/API guard consistency**
91+
- New authenticated AI and automation wrappers use centralized bootstrap/guard helpers instead of duplicating auth/admin/CSRF logic across endpoints.
92+
93+
**Docs**
94+
95+
- Added wiki coverage for Pro AI chat/admin features and linked it in the docs sidebar.
96+
97+
---
98+
399
## Changes 03/05/2026 (v3.6.1)
4100

5101
`release(v3.6.1): iPad hover preview pointer compatibility + configurable hover delay (refs #105)`

Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ ARG INSTALL_CLAMAV=1
3737
ARG INSTALL_7ZIP=1
3838
ARG INSTALL_UNAR=1
3939
ARG INSTALL_SMBCLIENT=1
40+
ARG INSTALL_POPPLER=1
4041

4142
# Install Apache, PHP, and required extensions
4243
RUN if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then \
@@ -50,6 +51,7 @@ RUN if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then \
5051
if [ "${INSTALL_7ZIP}" = "1" ]; then extra_pkgs="${extra_pkgs} 7zip"; fi; \
5152
if [ "${INSTALL_UNAR}" = "1" ]; then extra_pkgs="${extra_pkgs} unar"; fi; \
5253
if [ "${INSTALL_SMBCLIENT}" = "1" ]; then extra_pkgs="${extra_pkgs} smbclient"; fi; \
54+
if [ "${INSTALL_POPPLER}" = "1" ]; then extra_pkgs="${extra_pkgs} poppler-utils"; fi; \
5355
apt-get install -y --no-install-recommends \
5456
apache2 \
5557
php php-json php-curl php-zip php-mbstring php-gd php-xml \

README.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@ Drag & drop uploads, OnlyOffice integration, and **optional folder-level encrypt
1414

1515
Quick links: [Website](https://filerise.net)[Docs](https://filerise.net/docs/)[Live demo](https://demo.filerise.net)[Install](#install-docker--recommended)[FileRise Pro](https://filerise.net/pro/)
1616

17-
- **Built for:** anyone who wants a fast, self-hosted file manager / storage hub
18-
- **Core (MIT):** full open-source FileRise feature set (ACLs, sharing, uploads, tags/search, and more), plus multiple local roots and WebDAV sources for storage-hub workflows.
19-
- **Pro:** adds user groups, client portals, automation, additional source adapters, gateway shares, and search everywhere/audit tooling.
17+
- **Built for:** anyone who wants a fast, self-hosted file manager, storage hub, client portal, and AI workflow workspace on their own infrastructure.
18+
- **Core (MIT):** full open-source FileRise feature set (ACLs, folder and file sharing, uploads, tags/search, PDF previews, and more), plus multiple local roots and WebDAV sources for storage-hub workflows.
19+
- **Pro:** adds user groups, client portals, automation, additional source adapters, gateway shares, search everywhere/audit tooling, and a permissions-aware AI workspace for structured extraction, organization, approvals, and scoped copilots.
20+
21+
- [FileRise Pro AI Chat: Organize Files By Type](https://youtu.be/zoM7LudY934)
22+
- [FileRise Pro AI Chat: Extract Invoice Fields to JSON and CSV](https://youtu.be/HhY__X695KM)
2023

2124
[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-❤-red)](https://github.com/sponsors/error311)
2225
[![Support on Ko-fi](https://img.shields.io/badge/Ko--fi-Buy%20me%20a%20coffee-orange)](https://ko-fi.com/error311)
@@ -46,7 +49,9 @@ Quick links: [Website](https://filerise.net) • [Docs](https://filerise.net/doc
4649
- 💾 **Self-hosted “cloud drive”** – Runs anywhere with PHP (or via Docker). No external database required.
4750
- 🔐 **Granular per-folder ACLs** – Manage View (all/own), Upload, Create, Edit, Rename, Move, Copy, Delete, Extract, Share, and more — all enforced consistently across the UI, API, and WebDAV.
4851
- 🔗 **Link File (authenticated deep links)** – Generate internal links to specific files, require login + ACL checks, and open directly to the target in the app.
52+
- 🤝 **Folder and file sharing** – Share folders for browsing or upload-only file requests, protect links with passwords/expiration, and share individual files with generated links.
4953
- 📥 **File Request links (upload-only)** – Share upload-only links so external users can submit files into a folder without browsing existing files.
54+
- 📄 **PDF viewing + optional local PDF thumbnails** – View PDFs inline in the preview modal, and optionally enable first-page PDF thumbnails for gallery cards and hover previews using `pdftoppm`.
5055
- 🔐 **Folder-level encryption at rest (optional)** – Encrypt entire folders (and all descendants) on disk using modern authenticated encryption.
5156
- Opt-in per folder with inherited protection for subfolders
5257
- Files are stored encrypted on disk and transparently decrypted on download
@@ -77,6 +82,8 @@ Quick links: [Website](https://filerise.net) • [Docs](https://filerise.net/doc
7782
Group-based ACLs, brandable client upload portals, **ACL-aware global search across files, folders, users, and permissions**, an ncdu-style storage explorer for identifying large folders/files and reclaiming disk space directly from the UI, and **Pro Audit Logs** (configurable activity logging with filters + CSV export for tracking key actions across web, WebDAV, shares, and portals).
7883
- ⚙️ **Pro: Automation (Webhooks + Jobs)**
7984
Send FileRise events to other apps/services using managed webhook endpoints with async delivery, retries, queue visibility, and job history from Admin.
85+
- 🤖 **Pro: AI workflows + workspace**
86+
Use a permissions-aware AI workspace for structured extraction, folder organization, watched-folder workflows, approval-gated bulk actions, and scoped share/portal copilots with cited answers and admin controls.
8087
- 🌐 **Sources (Core + Pro adapters)**
8188
Turn FileRise into a storage hub by connecting multiple backends and switching between them in the UI:
8289
- **Core:** Multiple local roots (additional local paths)

THIRD_PARTY.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ Additional system packages bundled in the Docker image:
6363
**Source:** Linux distribution package repositories.
6464
**Note:** Installed for video thumbnail generation.
6565

66+
- **Poppler utils (`pdftoppm`)** — GPL-2.0-or-later
67+
**Home:** <https://poppler.freedesktop.org/>
68+
**Source:** Linux distribution package repositories.
69+
**Note:** Installed for optional local PDF thumbnail generation and AI document rasterization workflows.
70+
6671
- **7-Zip (p7zip)** — LGPL-2.1+ with unRAR restriction
6772
**Home:** <https://www.7-zip.org/>
6873
**Source:** Linux distribution package repositories.

config/config.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,16 @@ function fr_mcp_core_ops_dispatch(string $operation, array $payload = [], array
624624
}
625625
}
626626

627+
if (!function_exists('fr_mcp_core_ops_describe')) {
628+
function fr_mcp_core_ops_describe(): array
629+
{
630+
if (!class_exists(\FileRise\Domain\McpCoreOpsService::class)) {
631+
return [];
632+
}
633+
return \FileRise\Domain\McpCoreOpsService::describeOperations();
634+
}
635+
}
636+
627637
// ------------------------------------------------------------
628638
// Early Pro/Core API-level guards for bootstrap-time calls
629639
// ------------------------------------------------------------
@@ -647,7 +657,6 @@ function fr_pro_api_level_at_least(int $required): bool
647657
}
648658
}
649659

650-
// Try to load Pro bootstrap if enabled + present
651660
$proBootstrap = FR_PRO_BUNDLE_DIR . '/bootstrap_pro.php';
652661
if (@is_file($proBootstrap)) {
653662
require_once $proBootstrap;

0 commit comments

Comments
 (0)