Release 2.3.0
A share can now hold a private text (a password, a key, a short note) with its files or on its own. The upload page's new "Private text" card takes up to 100 KB; the browser encrypts the text and sends it through the same chunk pipeline as a file, flagged is_text on share_files, so it gets the share's password, expiry, download limit and cleanup. The recipient sees the text only after pressing "Show text", which counts as their download, so a messenger link preview cannot use up a share limited to one download. The text is left out of the file list, the ZIP and the file counts; the admin dashboard marks shares that hold one with "Text". The website gains a Private text feature card and a fifth phone screenshot; every screenshot is retaken. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
202813a1e6
commit
f9a7839ad3
@@ -59,7 +59,9 @@ class AdminDashboard extends Component
|
||||
// Shares whose files are still being uploaded are not shares yet; their bytes do count as used space.
|
||||
$shares = Share::query()
|
||||
->whereNotNull('completed_at')
|
||||
->withCount('files')
|
||||
// A share's private text is not one of its files.
|
||||
->withCount(['files' => fn ($query) => $query->where('is_text', false)])
|
||||
->withExists('textFile')
|
||||
// Shares that never expire come after every share that does, whichever way expiry is sorted.
|
||||
->when($column === 'expires_at', fn ($query) => $query->orderByRaw('expires_at is null'))
|
||||
->orderBy($column, $direction)
|
||||
@@ -74,7 +76,7 @@ class AdminDashboard extends Component
|
||||
})->where(function ($q) {
|
||||
$q->whereNull('max_downloads')->orWhereColumn('download_count', '<', 'max_downloads');
|
||||
})->count(),
|
||||
'totalFiles' => ShareFile::query()->whereHas('share', fn ($query) => $query->whereNotNull('completed_at'))->count(),
|
||||
'totalFiles' => ShareFile::query()->where('is_text', false)->whereHas('share', fn ($query) => $query->whereNotNull('completed_at'))->count(),
|
||||
'usedSpace' => $shareService->getTotalUsedSpace(),
|
||||
'maxQuota' => $shareService->getMaxStorageQuota(),
|
||||
'version' => config('app.version'),
|
||||
|
||||
Reference in New Issue
Block a user