Leo Vasanko
1e75763f77
Add share token support with virtual filesystem and selection toolbar button
2026-04-26 07:46:14 +00:00
Leo Vasanko
fb0ddd20e0
Add OnlyOffice-based preview for office documents
...
Replace Aspose.Words with OnlyOffice Document Server for generating
bitmap previews of office documents (Word, Excel, PowerPoint, etc.).
Backend:
- Add cista/onlyoffice.py conversion client
- Convert office docs directly to PNG via OnlyOffice, then AVIF via pyvips
- Make office previews optional based on OnlyOffice availability
- Remove Aspose.Words dependency and all related code
- Add spreadsheet and presentation format support
Frontend:
- Mark office files as previewable in Document.ts
- Add office extensions to MediaPreview.vue preview list
- Fix pre-existing @ts-ignore in HeaderMain.vue
Tests:
- Fix test_lrucache.py parameter name (open -> opener)
Also run ruff format across the codebase to satisfy linter checks.
2026-04-26 06:59:01 +00:00
Leo Vasanko
3767fb0cec
lint: apply manual ruff cleanup (non-preview files)
2026-04-26 06:16:42 +00:00
Leo Vasanko
9321961a11
sso: use /auth/api/check for token permission checks
2026-04-26 05:46:09 +00:00
LeoVasanko
123cb45daa
WebDAV sync support, access tokens, REST control endpoints ( #10 )
...
Implement complete WebDAV file serving compatible with various clients from Windows File Explorer to more specialized sync tools. The old control WebSocket has been updated to part-DAV, part REST API instead. Implemented user:pass BASIC auth. Added UI and backend for creating tokens that avoid the need to use actual username and password for requests from CLI or DAV.
Reviewed-on: #10
2026-04-26 06:22:52 +01:00
LeoVasanko
91e07d61b6
Uploads by PUT range requests rather than WS, remove dead code WS handlers ( #9 )
...
Increases block size to 16 MiB and adjusts progress display to work smoothly with that. Also removes download WS that was already unused. Provides faster upload speed than over WS.
Reviewed-on: #9
2026-04-25 03:55:52 +01:00
Leo Vasanko
a88a22571a
Remove CISTA_PIL and Pillow preview mode
2026-04-25 02:06:40 +00:00
Leo Vasanko
d58748439a
Adjust emoji log spacing
2026-04-25 02:05:20 +00:00
Leo Vasanko
c51701c252
Improve preview worker error propagation and logging
2026-04-25 01:51:49 +00:00
Leo Vasanko
88a032acfe
Preview: add pdf+pyvips encode path and simplify timings
2026-04-25 00:20:19 +00:00
Leo Vasanko
bbb73be07e
Preview: simplify pyvips timing to single processing ms + req total.
2026-04-25 00:06:35 +00:00
Leo Vasanko
fc2f357470
Preview: persistent worker pool, fast AVIF encode, access-log timing
...
- Add preview_worker.py: long-lived subprocess; JSONL request / framed binary
response protocol (BLAKE3 checksum + LE uint32 sizes + msgspec JSON + payload)
- Add _PreviewWorkerPool: asyncio queue-based pool; kill+replace workers on timeout,
checksum error, or protocol error; PREVIEW_TIMEOUT=3s, PREVIEW_WORKERS=cpu-scaled
- Use pyvips effort=0,strip=True for fast AVIF thumbnails; CISTA_PIL=1 env forces Pillow
- Report load/process/save ms in PreviewResponse; inject into access log via req.ctx._log_extra
- Wire start/shutdown_preview_workers into Sanic lifecycle hooks (app.py)
- Call configure_main_logging() after Sanic() to install emoji formatter
- Silence worker stderr (DEVNULL)
2026-04-24 23:53:23 +00:00
Leo Vasanko
e579dbc61f
Logging: emoji formatter and access-log extra field
2026-04-24 23:52:34 +00:00
Leo Vasanko
3e337bf1f2
Use client IP (potentially proxied) in logs, handle [ipv6].
2026-04-24 20:13:11 +00:00
Leo Vasanko
522dd49f3f
Avoid useless check.
2026-04-24 00:04:58 +00:00
Leo Vasanko
7b3252c588
Handle missing preview files with silent 404
2026-04-23 19:02:54 +00:00
Leo Vasanko
4626f1cdff
Add cleaner access logging for HTTP requests and WebSockets
2026-04-23 18:06:22 +00:00
Leo Vasanko
1795506090
Faster image previews by pyvips.
2026-04-23 17:19:24 +00:00
Leo Vasanko
e490cbe0fe
Set avif=1 flag for SVT-AV1 when encoding a single image, for increased efficiency and less memory usage.
2026-04-23 16:57:27 +00:00
Leo Vasanko
2c74779102
Consistent forwarding of host/origin/ua over HTTP and WS to Paskia.
2026-02-10 23:56:42 +00:00
Leo Vasanko
b65404beba
Cleanup
2026-02-10 23:52:07 +00:00
Leo Vasanko
67d1fa65fb
Cleaner WebSocket/Paskia proxying.
2026-02-10 23:42:13 +00:00
Leo Vasanko
6b009dea40
Attempt to get allocated size on Windows which needs WINAPI. Fallback to file size if not possible.
2026-02-05 20:31:46 +00:00
Leo Vasanko
7b19739875
Fix --listen docopt parsing (only -l was working).
2026-02-05 20:01:26 +00:00
Leo Vasanko
362a9f47c9
Remove invalid Sanic kwarg when binding to all interfaces (not needed anyway).
2026-02-05 19:56:54 +00:00
Leo Vasanko
7b3a39a58e
Better proxy header processing, pass original user-agent without httpx overriding it.
2026-02-05 17:53:52 +00:00
Leo Vasanko
204a308396
Pass the new allocated field through search filtering. Fixes issue where 0 allocated was reported in search results.
2026-02-04 23:55:05 +00:00
Leo Vasanko
82062d1d7a
Cache previews in server RAM for much faster access (they are about 70kB each).
2026-02-04 20:56:16 +00:00
Leo Vasanko
ad37a48df9
Brighter low free space colors.
2026-02-04 20:40:59 +00:00
Leo Vasanko
84d80518a6
Auth restricted endpoint is picky about the trailing slash, use it consistently.
2026-02-04 20:35:29 +00:00
Leo Vasanko
e520d9361c
Auth mode indication on startupbox
2026-02-04 20:24:21 +00:00
Leo Vasanko
5b4be95ace
Correctly handle customized server name in admin settings dialog.
2026-02-04 20:15:56 +00:00
Leo Vasanko
b3df715e25
Fix free/used disk space handling. Implement file disk usage tracking. Display indicators on FileExplorer for incomplete files (sparse allocation, upload in progress).
2026-02-04 19:15:09 +00:00
Leo Vasanko
0656a027f4
Implement server name config to override the default of using share folder name.
2026-02-04 18:00:21 +00:00
Leo Vasanko
3a86fe26a7
Remove refresh wwwroot support and static files serving, only using vite to serve frontend in dev mode (avoid accidentally using stale builds).
2026-02-01 06:14:35 +00:00
Leo Vasanko
5c530652fa
Change default port to 8989 like Droppy. Using 8999 for backend in dev mode.
2026-02-01 06:09:56 +00:00
Leo Vasanko
1e207b38b7
Use fastapi-vue parse_endpoint instead of our own logic.
2026-02-01 06:00:30 +00:00
Leo Vasanko
80453e98ab
Unified watcher that *may* receive events from inotify and other sources. Added change notify messages from control and upload WebSockets. Cleanup debug printouts.
2026-02-01 02:44:52 +00:00
Leo Vasanko
add9d7ac82
New inotify watcher with efficient algorithms.
2026-01-31 23:46:43 +00:00
Leo Vasanko
7e4b56d9ae
Performance profile file change watching.
2026-01-31 22:53:17 +00:00
Leo Vasanko
79875d3190
Simplified startup box unix socket formatting.
2026-01-31 22:09:57 +00:00
Leo Vasanko
5590a756ca
Better error logging on preview generation errors.
2026-01-31 22:00:26 +00:00
Leo Vasanko
bb0c4075d0
Basic details in startup box.
2026-01-31 21:55:08 +00:00
Leo Vasanko
40fb7bf398
Implement background worker to make search response faster and avoid hanging the UI when there are a lot of files. Implement better toast messages for transitional events that automatically disappear.
2026-01-31 21:02:16 +00:00
Leo Vasanko
9879eea7c4
More robust zip download processing; don't let aborted requests hang threads, use a larger threadpool separate of preview generation.
2026-01-31 19:43:23 +00:00
Leo Vasanko
61e59c9b45
Fixes for public mode authentication flows.
2026-01-31 04:48:44 +00:00
Leo Vasanko
9c173ff0bf
Finalize Paskia integration and built-in authentication.
2026-01-31 00:48:02 +00:00
Leo Vasanko
1dab7f0fd1
Bundle icons into a single file.
2026-01-30 19:12:27 +00:00
Leo Vasanko
938ece90fe
Update scripts with latest fastapi-vue-setup.
2026-01-30 18:52:54 +00:00
Leo Vasanko
14f2177514
Consistent dialog styling widgets and using Paskia's shared backdrop. Internal password auth mimics Paskia. API paths changed (/auth goes to internal or paskia depending on config). All API calls and previews get access checks.
2026-01-30 18:28:26 +00:00