* feat(config): Add PWA manifest.json endpoint for web app installation
* fix: Update comment to English in manifest handler
* fix: fix EOL
* fix: Remove unused fmt import from manifest handler
* feat: use site settings for manifest name and icon
* fix(manifest): Move manifest.json route to static handler for proper CDN handling
* feat: move manifest.json handler to static package and improve path handling
* feat: Add custom static file handler to prevent manifest.json conflicts
* fix: Integrate manifest.json handling into static file serving routes
* fix: Simplify PWA manifest scope handling and static file serving
- Remove CDN-specific logic for PWA manifest scope and start_url
- Always use base path for PWA scope regardless of CDN configuration
- Replace manual file serving logic with http.FileServer for static assets
* fix: Ensure consistent base path handling in site configuration and manifest path construction
* fix: Refactor trailing slash handling in site configuration
* feat(static): update manifest path handling and add route for manifest.json
* Feat(offline-download): allow using thunder offline download tool in any storage
* Feat(offline-download): allow using 115 offline download tool in any storage
* Feat(offline-download): allow using pikpak offline download tool in any storage
* style(offline-download): unify offline download tool names
* feat(offline-download): show available offline download tools only
* Fix(offline-download): update unmodified tool names.
---------
Co-authored-by: Andy Hsu <i@nn.ci>
* feat: support general users view and cancel own tasks
Add a creator attribute to the upload, copy and offline download
tasks, so that a GENERAL task creator can view and cancel them.
BREAKING CHANGE:
1. A new internal package `task` including the struct `TaskWithCreator`
which embeds `tache.Base` is created, and the past dependence on
`tache.Task` will all be transferred to dependence on this package.
2. The API `/admin/task` can now also be accessed via `/task`, and the
old endpoint is retained to ensure compatibility with legacy
automation scripts.
Closes#7398
* fix(deps): update github.com/xhofe/tache to v0.1.3
* feat: support webauthn login
* manually merge
* fix: clear user cache after updating authn
* decrease db size of Authn
* change authn type to text
* simplify code structure
---------
Co-authored-by: Andy Hsu <i@nn.ci>
from this commit, if you want reverse proxy to sub-directory like `alist` with `nginx`, you need config:
```nginx
location /alist/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5244/alist/;
# the max size of file to upload
client_max_body_size 20000m;
}
```
* feat(qbittorrent): authorization and logging in support
* feat(qbittorrent/client): support `AddFromLink`
* refactor(qbittorrent/client): check authorization when getting a new client
* feat(qbittorrent/client): support `GetInfo`
* test(qbittorrent/client): update test cases
* feat(qbittorrent): init qbittorrent client on bootstrap
* feat(qbittorrent): support setting webui url via gin
* feat(qbittorrent/client): support deleting
* feat(qbittorrent/client): parse `TorrentStatus` enum when unmarshalling json in `GetInfo()`
* feat(qbittorrent/client): support getting files by id
* feat(qbittorrent): support adding qbittorrent tasks via gin
* refactor(qbittorrent/client): return a `Client` interface in `New()` instead of `*client`
* refactor: task handle
* chore: fix typo
* chore: change path
---------
Co-authored-by: Andy Hsu <i@nn.ci>
* feat: ignore AList storage on indexing
* fix: remove unused err in `walkFn`
* chore(ci): fix auto_lang trigger and run it
* feat: batch index
* feat: quit index & init index
* feat: set DocType for bleve data
* fix: build index cleanup check origin err