Commit Graph
36 Commits
Author SHA1 Message Date
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 3e337bf1f2 Use client IP (potentially proxied) in logs, handle [ipv6]. 2026-04-24 20:13:11 +00:00
Leo Vasanko 4626f1cdff Add cleaner access logging for HTTP requests and WebSockets 2026-04-23 18:06:22 +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 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 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
Leo Vasanko 3d6cf2443c Add a script to run devserver. Migrate to build and JS utils provided by fastapi-vue. Frontend directory renamed to frontend-build. Update Sanic, deprecations. 2026-01-21 23:32:04 +00:00
Leo Vasanko 3edf595983 Clean up the remaining uses of print() 2025-08-18 10:49:40 -06:00
Leo Vasanko 6aef2e1208 Use zstd rather than brotli for static file compression. 2025-08-17 16:51:46 -06:00
Leo Vasanko 33db2c01b4 Cleaner server shutdowns:
- Remove a workaround for Sanic server not always terminating cleanly
- Terminate worker threads before server stop
- Silent closing of watching WebSocket attempted to open while shutting down
2025-08-17 08:15:01 -06:00
Leo Vasanko 0cf9c254e5 Various build fixes, cleanup and details (#6)
- Major memory usage reduction in video previews
- Finally builds properly on Windows too

Reviewed-on: #6
2023-11-21 15:32:49 +00:00
Leo Vasanko 434e55f303 Video preview posters 2023-11-18 17:50:27 -08:00
Leo Vasanko 696e3ab568 Implement media preview thumbnails for Gallery 2023-11-18 11:38:25 -08:00
Leo Vasanko f8a9197474 Tidying up log, correct HTTP status for error pages. 2023-11-16 17:10:18 -08:00
Leo Vasanko b6b387d09b Code cleanup and bugfixes:
- Resolve threading deadlock when multiple watch request arrived at the same moment.
- Implement more graceful server exit.
- Reduce excessive logging.
- Fix unix socket clearing; until Sanic starts accepting Path for unix socket name.
2023-11-16 07:09:57 -08:00
Leo Vasanko c40c245ce6 CLI simplification, better diagnostic for missing wwwroot, docs. 2023-11-14 11:05:04 -08:00
Leo Vasanko 1fdd00b833 Updated installation and README 2023-11-14 08:00:21 -08:00
Leo Vasanko 9854dd01cc More efficient flat file list format and various UX improvements (#3)
This is a major upgrade with assorted things included.

- Navigation flows improved, search appears in URL history, cleared when navigating to another folder
- More efficient file list format for faster loads
- Efficient updates, never re-send full root another time (except at connection)
- Large number of watching and filelist updates (inotify issues remain)
- File size coloring
- Fixed ZIP generation random glitches (thread race condition)
- Code refactoring, cleanup, typing fixes
- More tests

Reviewed-on: #3
2023-11-12 23:20:40 +00:00
Leo Vasanko e26cb8f70a Linting, removed extra line from pyproject.toml. 2023-11-08 13:08:46 -08:00
Leo Vasanko 876d76bc1f Frontend created and rewritten a few times, with some backend fixes (#1)
The software is fully operational.

Reviewed-on: #1
2023-11-08 20:38:40 +00:00
Leo Vasanko 4a53d0b8e2 Formatting and fix Internal Server Error on upload 2023-10-26 18:59:19 +03:00
Leo Vasanko 9428cc2d9c Fix field name in session cookie; prevented logged in useds authenticating. 2023-10-24 01:47:57 +03:00
Leo Vasanko 4852212347 Cleanup, bugfixes. Added access control on files and API. 2023-10-23 04:51:39 +03:00
Leo Vasanko 93351ae86d Frontend included in repository. 2023-10-21 22:30:47 +03:00
Leo Vasanko e68a05e663 Refactoring and cleanup 2023-10-21 19:17:09 +03:00
Leo Vasanko e90174a09d Implemented control commands and tests. Rewritten error and session/flash handling. 2023-10-21 04:44:43 +03:00
Leo Vasanko f969c2ccb4 Reset flash cookie also on index page. 2023-10-19 20:24:20 +03:00
Leo Vasanko 05c6f03d20 Refactor with its own entry point and startup script cista, instead of running via sanic. Config file handling and Droppy updates. HTTP redirection/acme server added. 2023-10-19 02:06:14 +03:00
Leo Vasanko 429a7dfb16 Implemented login page and new jwt-based sessions. Watching cleanup. 2023-10-18 01:06:27 +03:00
Leo Vasanko bd680e3668 Major upgrades, much code and docs rewritten. 2023-10-17 21:33:31 +03:00
Leo Vasanko 4e3c0e2b98 Cleanup 2023-10-15 07:31:54 +03:00
Leo Vasanko f697d96c89 Restructuring as a Python package. 2023-10-15 02:42:16 +03:00