Skip to content

docs: add VPS.Town as sponsor to all README#1842

Merged
elysia-best merged 1 commit intoOpenListTeam:mainfrom
XZB-1248:main
Dec 21, 2025
Merged

docs: add VPS.Town as sponsor to all README#1842
elysia-best merged 1 commit intoOpenListTeam:mainfrom
XZB-1248:main

Conversation

@XZB-1248
Copy link
Contributor

Description / 描述

Added VPS.Town as a sponsor

Motivation and Context / 背景

How Has This Been Tested? / 测试

No test needed

Checklist / 检查清单

  • I have read the CONTRIBUTING document.
    我已阅读 CONTRIBUTING 文档。
  • I have formatted my code with go fmt or prettier.
    我已使用 go fmtprettier 格式化提交的代码。
  • I have added appropriate labels to this PR (or mentioned needed labels in the description if lacking permissions).
    我已为此 PR 添加了适当的标签(如无权限或需要的标签不存在,请在描述中说明,管理员将后续处理)。
  • I have requested review from relevant code authors using the "Request review" feature when applicable.
    我已在适当情况下使用"Request review"功能请求相关代码作者进行审查。
  • I have updated the repository accordingly (If it’s needed).
    我已相应更新了相关仓库(若适用)。

Copy link
Member

@elysia-best elysia-best left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@elysia-best elysia-best merged commit 216f071 into OpenListTeam:main Dec 21, 2025
13 of 14 checks passed
handazao pushed a commit to handazao/OpenList that referenced this pull request Feb 27, 2026
Wodlie added a commit to Wodlie/openlist_123 that referenced this pull request Feb 28, 2026
* fix(drivers): free space underflow if used larger than total space (OpenListTeam#1407)

* fix(189pc/189tv): `request` panic when login failed (OpenListTeam#1428)

* fix(ilanzou): wrong total capacity (OpenListTeam#1433)

* feat(pikpak): support disk usage (OpenListTeam#1426)

* feat(pikpak): support disk usage

* fix(alias): cannot list with details

* refactor: rename `NewDiskUsageFromUsedAndTotal`

* fix(disk-usage): get details of storages that is not initialized

* feat(offline_download): add 123 open (OpenListTeam#1427)

* feat(http3|quic): add http3|quic support (OpenListTeam#1466)

* feat(http3|quic): add http3|quic support

* revert(ai): fix ai error

* fix(shutdown): shutdown was using close

* feat(http3|quic): add config if needs h3

* feat(http3|quic): add Alt-Svc to expose h3

* chore(frontend): optimize user operations (OpenListTeam#1449)

* feat(drivers): add halalcloud_open driver (OpenListTeam#1430)

* 新增清真云Open驱动,支持最新的轻量SDK

* Change Go version in go.mod

Downgrade Go version from 1.24.2 to 1.23.4

Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>

* Apply suggestions from code review

* Removed unnecessary comments
* Downgraded the Go version to 1.23.4.
* Not sure whether FileStream supports concurrent read and write operations, so currently using single-threaded upload to ensure safety.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>

* feat(halalcloud_open): support disk usage

* Set useSingleUpload to true for upload safety

Not sure whether FileStream supports concurrent read and write operations, so currently using single-threaded upload to ensure safety.

Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>

* Update meta.go

Change required for RefreshToken, If using a personal API approach, the RefreshToken is not required.

Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>

* remove debug logs

* bump halalcloud SDK version

* fix unnecessary params

* Update drivers/halalcloud_open/driver_init.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>

* Fixed spelling errors; changed hardcoded retry parameters to constants.

* remove pointer in get link function in utils.go

---------

Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: KirCute <951206789@qq.com>

* feat(http3|quic): Set Alt-Svc header only for HTTPS requests (OpenListTeam#1469)

* feat(local): move deleted files to corresponding locations (OpenListTeam#1281)

* fix(fs):fix retry task after restart (OpenListTeam#1467)

* fix retry task after restart

* fix: initialize SrcStorage and DstStorage in tasks to prevent nil pointer dereference

* feat: implement storage load signal mechanism for improved synchronization

* fix:  update StoragesLoaded logic

* refactor: reorganize storage loading logic and improve synchronization handling

---------

Co-authored-by: j2rong4cn <j2rong@qq.com>

* feat(cache): improve cache management (OpenListTeam#1339)

* feat(cache): improve cache management

* feat(disk-usage): add cache

* feat(disk-usage): add refresh

* fix(disk-usage): cache with ttl

* feat(cache): implement KeyedCache and TypedCache for improved caching mechanism

* fix(copy): update object retrieval to use Get instead of GetUnwrap

* refactor(cache): simplify DirectoryCache structure and improve object management

* fix(cache): correct cache entry initialization and key deletion logic in TypedCache

* refactor(driver): remove GetObjInfo interface and simplify Link function logic
https://github.com/OpenListTeam/OpenList/pull/888/files#r2430925783

* fix(link): optimize link retrieval and caching logic

* refactor(cache): consolidate cache management and improve directory cache handling

* fix(cache): add cache control based on storage configuration in List function

* .

* refactor: replace fmt.Sprintf with strconv for integer conversions

* refactor(cache): enhance cache entry management with Expirable interface

* fix(cache): improve link reference acquisition logic to handle expiration

* refactor: replace OnlyLinkMFile with NoLinkSF in driver configurations and logic

* refactor(link): enhance link caching logic with dynamic type keys based on IP and User-Agent

* feat(drivers): add LinkCacheType to driver configurations for enhanced caching

* refactor(cache): streamline directory object management in cache operations

* refactor(cache): remove unnecessary 'dirty' field from CacheEntry structure

* refactor(cache): replace 'dirty' field with bitwise flags

* refactor(io): 调高SyncClosers.AcquireReference的优先级

* refactor(link): 优化链接获取逻辑,增加重

* refactor(link): 添加RequireReference字段以增强链接管理

* refactor(link): 移除MFile字段,改用RangeReader

* refactor: 移除不必要的NoLinkSF字段

* refactor(cache): 修改目录缓存的脏标志定义和更新逻辑

* feat(cache): add expiration gc

---------

Co-authored-by: KirCute <951206789@qq.com>
Co-authored-by: KirCute <kircute@foxmail.com>
Co-authored-by: j2rong4cn <j2rong@qq.com>

* feat(onedrive): add ref support (OpenListTeam#1435)

* feat(onedrive): add ref support

* fix(onedrive): remove redundant token assignment from reference

---------

Co-authored-by: j2rong4cn <j2rong@qq.com>

* feat(drivers): add ProtonDrive driver (OpenListTeam#1368)

* feat(drivers): add ProtonDrive driver

- Implement complete ProtonDrive storage driver with end-to-end encryption support
- Add authentication via username/password with credential caching and reusable login
- Support all core operations: List, Link, Put, Copy, Move, Remove, Rename, MakeDir
- Include encrypted file operations with PGP key management and node passphrase handling
- Add temporary HTTP server for secure file downloads with range request support
- Support media streaming using temp server range requests
- Implement progress tracking for uploads and downloads
- Support directory operations with circular move detection
- Add proper error handling and panic recovery for external library integration
- Support buffered upload for specific sequential and encrypted, but optimized transmission.

* Update drivers/proton_drive/util.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>

* chore

* feat(drivers): enhance ProtonDrive temp server

- Implement separate listen and public port configuration for complex network deployments
- Add intelligent port detection with 8080 as preferred default, fallback to auto-assignment
- Support Container/NAT/VM environments through configurable external host and port mapping
- Add port availability validation with graceful fallback to listen port
- Enable users to specify external domain/IP for client connections (e.g., 192.168.1.5)
- Follow FTP server configuration patterns for network flexibility
- Maintain localhost development simplicity while supporting production deployments

* feat(proton_drive): refactor directory handling and improve link retrieval

* fix(proton_drive): add NoLinkURL configuration option

* fix(proton_drive): update file size retrieval and enforce TwoFACode requirement

* feat(proton_drive): add expiration to link response

* fix(proton_drive): handle empty RootFolderID in Init method

* fix(proton_drive): update credential handling to use email and reusable login

* fix(proton_drive): update credential handling to use reusableCredential variable

* fix(proton_drive): update DirectRename to use GetLink for source object retrieval

* fix(proton_drive): refactor uploadFile to return model.Obj and handle errors correctly

* fix(proton_drive): refactor DirectMove to use getLink for source retrieval and simplify destination handling

* fix(proton_drive): simplify Copy method by removing temporary file creation and directly using FileStream

* refactor(proton_drive): remove unused temporary server and related code

* chore

* fix(proton_drive): fix driver

- Handle fresh login if ProtonDrive rejects AccessToken or RefreshToken
- Update stored credentials

* fix(proton_drive): simplify reusable login handling in Init method

* fix(proton_drive): fix driver

- Update stored credentials, now is failing

* feat(proton_drive): improve authentication handling and remove unused variables

* fix(proton_drive): fix driver

- Update stored credentials, now is failing

* fix(proton_drive): improve authentication handling

* refactor(proton_drive): move client initialization to initClient method

* feat(proton_drive): move addrs and addrKRs

* feat(proton_drive): optimize upload threads

- Change ConcurrentBlockUploadCount to user configured upload threads number
- Comment ConcurrentFileCryptoCount, default is runtime.GOMAXPROCS(0)

---------

Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: KirCute <951206789@qq.com>
Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: KirCute <kircute@foxmail.com>

* feat(openlist): add PassIPToUpsteam to driver (OpenListTeam#1498)

* fix(share): remove share when user delete (OpenListTeam#1493)

* fix(aliyundrive_open): use safe disk usage calculation (OpenListTeam#1510)

* feat(command): add --config flag to set custom config path (OpenListTeam#1479)

* fix(alias): nil panic in `ResolveLinkCacheMode` (OpenListTeam#1527)

* fix(alias): Check the driver path during initialization

* fix(alias): Don't check the driver path during initialization anymore.

* feat(123): allow modification of the platform header (OpenListTeam#1542)

* feat(drivers/123): Allow modification of the platform field

* feat(drivers/123): Set login platfrom as web

* fix(drivers/123): update platform field help value

* feat(strm): strm local file (OpenListTeam#1127)

* feat(strm): strm local file

* feat: 代码优化

* feat: 访问被strm挂载路径时也更新

* fix: 路径最后带/判断缺失

* fix: 路径最后带/判断缺失

* refactor

* refactor

* fix: close seekable-stream in `generateStrm`

* refactor: lazy create local file

* 优化路径判断

---------

Co-authored-by: KirCute <kircute@foxmail.com>

* feat(thunder): allow setting space (OpenListTeam#1219)

allows access to files on remote devices via Thunder's tunneling service.

* feat(net): support proxy configuration via config file (OpenListTeam#1359)

* support proxy

* debug

* debug2

* del debug

* add proxy configuration with env var fallback

* comments to en

* refactor(env): fallback env

---------

Co-authored-by: jyxjjj <773933146@qq.com>

* fix(google_driver): fix google link file display size (OpenListTeam#1335)

* fix file link display size

* fix performance and field

* cn to en notes

---------

Co-authored-by: ShenLin <773933146@qq.com>

* chore(strm): Built-in file types support modification (OpenListTeam#1483)

* fix(baidu_netdisk): support resuming uploads when an error occurs (OpenListTeam#1279)

support resuming uploads when an error occurs

* feat(stream): enhance GetRangeReaderFromLink rate limiting (OpenListTeam#1528)

* feat(stream): enhance GetRangeReaderFromLink rate limiting

* refactor(stream): update GetRangeReaderFromMFile to return *model.FileRangeReader

* refactor(stream): simplify context error handling in RateLimitReader, RateLimitWriter, and RateLimitFile

* refactor(net): replace custom LimitedReadCloser with readers.NewLimitedReadCloser

* fix(model): update Link.ContentLength JSON tag for correct serialization

* docs(model): add clarification to FileRangeReader usage comment

* fix(backup-restore): add shares (OpenListTeam#1500)

* perf(stream): optimize CacheFullAndWriter for better memory management (OpenListTeam#1584)

* perf(stream): optimize CacheFullAndWriter for better memory management

* fix(stream): ensure proper seek handling in CacheFullAndWriter for improved data integrity

* fix(baidu_netdisk): improve upload experience (OpenListTeam#1562)

* fix(baidu_netdisk): improve upload experience

* fix(typo): URL should be uppercase, apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>

* fix(typo): URL should be uppercase, apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>

* fix(baidu_netdisk): use "UploadAPI" as a fallback when using dynamic upload api

* fix(baidu_netdisk): all uploads share the same upload url cache

* fix(drivers/baidu_netdisk): defer uploadUrlMu unlock

* update driver.go to main

---------

Signed-off-by: ShenLin <773933146@qq.com>
Signed-off-by: jenfonro <799170122@qq.com>
Co-authored-by: ShenLin <773933146@qq.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: jenfonro <799170122@qq.com>

* feat(github_release): support Source code (zip/tar.gz) (OpenListTeam#1581)

* support Github Release Source code (zip/tar.gz)

* fix TarballUrl and ZipballUrl

* fix show source code by allversion

---------

Co-authored-by: nibazshab <44338441+nibazshab@users.noreply.github.com>

* fix(189): disk-usage unmarshal failed when used capacity overflow (OpenListTeam#1577)

* refactor(stream): simplify code (OpenListTeam#1590)

* refactor(stream): simplify Close method and update SeekableStream to use RangeReader interface

* refactor(stream):  improve RangeRead comments for clarity

* fix(strm): non-specified type generates strm (OpenListTeam#1585)

* fix(strm): non-specified type generates strm

* fix(strm): only insert to strmTrie if SaveStrmToLocal is enabled

* fix(strm): update suffix handling in convert2strmObjs function

* fix(strm): refactor generateStrm to use range reader

---------

Co-authored-by: j2rong4cn <j2rong@qq.com>

* feat(onedrive): support frontend direct upload (OpenListTeam#1532)

* OneDrive添加直连上传

* refactor

* fix: duplicate root path join

---------

Co-authored-by: KirCute <951206789@qq.com>

* refactor(fs): implement immediate retry within task execution cycle (OpenListTeam#1575)

* fix(baidu_netdisk): Fix Baidu Netdisk resume uploads sticking to the same upload host (OpenListTeam#1609)

Fix Baidu Netdisk resume uploads sticking to the same upload host

* Initial plan

* Initial plan for qihoo360 driver implementation

Co-authored-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* Implement qihoo360 driver with basic file operations

Co-authored-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* Remove OpenList binary from repository

Co-authored-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* Fix security issue: remove sensitive data from debug logs

Co-authored-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* Clean up: remove binary and update gitignore

Co-authored-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* fix(terabox): wrong return code used (OpenListTeam#1547)

fix(terabox): rename, delete, copy operations sometimes failed

Signed-off-by: yuyamionini <46483865+yuyamionini@users.noreply.github.com>

* fix(archive/zip): user specific encoding for non-EFS zips (OpenListTeam#1599)

* fix(archive/zip): user specific encoding for non-EFS zips

* fix(stream): simplify head cache initialization and improve reader retrieval logic

* fix: support multipart zips (.z01)

* chore(deps): update github.com/KirCute/zip to v1.0.1

---------

Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>

* feat(doubao): Add rate limiting (OpenListTeam#1618)

* chore(issue templates): require logs (OpenListTeam#1626)

* Fix infinite loop in authentication flow

Move auth check inside method validation to prevent infinite recursion when getAuth() calls request(). Now request() only checks authentication when method is not empty, breaking the circular dependency.

Co-authored-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* feat(s3): support frontend direct upload (OpenListTeam#1631)

* feat(s3): support frontend direct upload

* feat(s3): support custom direct upload host

* fix: apply suggestions of Copilot

* fix(link): correct link cache mode bitwise comparison (OpenListTeam#1635)

* fix(link): correct link cache mode bitwise comparison

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* refactor(link): use explicit flag equality for link cache mode bitmask checks

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* feat(upload): add optional system file filtering for uploads (OpenListTeam#1634)

* fix(driver/123): initialize Platform field (OpenListTeam#1644)

* fix(driver/123): initialization the Platform field

Signed-off-by: MoYan <1561515308@qq.com>

* Fix formatting of Platform field in Pan123

Signed-off-by: MoYan <1561515308@qq.com>

---------

Signed-off-by: MoYan <1561515308@qq.com>

* fix(openlist_driver): ensure UA is correctly propagated (OpenListTeam#1679)

* feat(fs): support manually trigger objs update hook (OpenListTeam#1620)

* feat(fs): support manually trigger objs update hook

* fix: support driver internal copy & move case

* fix

* fix: apply suggestions of Copilot

* fix(misskey): folderId format validation and root directory handling (OpenListTeam#1647)

fix(misskey): Fix folderId format validation and root directory handling

* fix(strm): fix the name and type issue (OpenListTeam#1630)

* fix(strm): fix the name and type issue

* fix(strm): update version

* feat(strm): custom path prefixes (OpenListTeam#1697)

fix(strm): custom path prefixes

Signed-off-by: ShenLin <773933146@qq.com>
Co-authored-by: ShenLin <773933146@qq.com>

* feat(baidu_netdisk): Add shard upload timeout setting (OpenListTeam#1682)

add timeout

* fix(local): assign non-CoW copy requests to the task module (OpenListTeam#1669)

* fix(local): assign non-CoW copy requests to the task module

* fix build

* fix cross device

* feat(fs): Add skipExisting option to move and copy, merge option to copy (OpenListTeam#1556)

* fix(fs): Add skipExisting option to move and copy.

* feat(fs): Add merge option to copy.

* feat(fs): Code smell.

* feat(fs): Code smell.

* feat(archive): support non-overwrite decompress (OpenListTeam#1701)

* feat(search): Add task queue for Meilisearch to prevent race conditions (OpenListTeam#1423)

* Add task queue for Meilisearch to prevent race conditions

- Implement TaskQueueManager for async index operations
- Queue update tasks and process them in batches every 30 seconds
- Check pending task status before executing new operations
- Optimize batch indexing and deletion logic
- Fix type assertion bug in buildSearchDocumentFromResults

* fix(search): re-enqueue skipped tasks to prevent task loss

When tasks are skipped due to pending dependencies, they are now
re-enqueued if not already in queue. This prevents task loss while
avoiding overwriting newer snapshots for the same parent.

* fix(copilot-comment): Invoke Stop() & err of SliceConvert

---------

Co-authored-by: ImoutoHeaven <noreply@imoutoheaven.org>
Co-authored-by: jyxjjj <773933146@qq.com>

* fix(search): fix duplicated variable init (OpenListTeam#1703)

* chore(archive): fix struct literal uses unkeyed fields (OpenListTeam#1704)

* chore(pkg/aria2): simplify context cancellation handling in RPC calls (OpenListTeam#1705)

* fix(pkg/aria2): use pointer receivers for Call methods (OpenListTeam#1706)

* feat(strm): keep local download file (OpenListTeam#1707)

* fix(onedrive_shareurl): Reduce temporary file errors (OpenListTeam#1686)

* fix onedrive_shareurl

* .

* chore(strm): avoid generating empty folders (OpenListTeam#1720)

chore(strm): empty folders are not generated locally

* refactor:  improve upload handling (OpenListTeam#1455)

* fix(quark): refactor upPart to use http.NewRequest

* fix(quark): improved upload handling

* fix(quark_open): improved upload handling

* fix: add retry context to multiple upload functions

* fix: optimize hash calculation in multipart upload to avoid blocking

* fix: update error handling in lifecycle functions for better clarity

* fix: update upload progress calculation to improve accuracy

* fix: simplify error handling in lifecycle functions for improved readability

* fix: remove unnecessary mutex for part uploads to simplify code

* fix(stream): simplify file handling in NewStreamSectionReader and improve error messages

* fix(terabox): optimize chunk count calculation in Put method

* perf(chaoxing): 表单上传文件0拷贝

* fix(cnb_releases): improve file upload progress tracking

* fix(baidu_netdisk): improve upload handling

* fix(upload): optimize buffer initialization for file uploads

* fix(baidu_netdisk): add retry condition to skip ErrUploadIDExpired in upload loop

* fix(drivers/crypt): remove hard dependency on RemotePath (OpenListTeam#1713)

* fix(mediafire): enable automatic session token acquisition and fix gzip parsing (OpenListTeam#1661)

* fix(mediafire): enable automatic session token acquisition and fix gzip parsing

- Fix Init() method to allow automatic session token retrieval from cookie
- Change SessionToken from required to optional in configuration
- Add proper gzip decompression support for API responses
- Improve error handling for session token acquisition failures
- Update help text to clarify authentication requirements

Resolves initialization failure and JSON parsing errors when session token
can be automatically obtained from browser cookie.

* fix(mediafire): ensure driver files end with newline

* chore: gofmt drivers/mediafire/*.go

* refactor(op): remove automatic Path assignment (OpenListTeam#1734)

* refactor: 移除 ObjResp 中的 Id 和 Path 字段

* 移除op.List的自动设置Path
Path和Id只在驱动内使用,不应由op.List设置Path

* cnb_releases:将 Addition 结构体中的 RootPath 字段为 RootID
当List方法加载二级目录时,若使用的是Id,应对使用driver.RootID

* doubao_share: 添加潜在bug注释

* 添加 GetRootPath 方法到多个驱动

* refactor!(userAgent): merge most userAgent into base (OpenListTeam#1722)

refactor!(userAgent): merge all userAgent into base

1. change var to const
2. remove duplicated ua definetion after original Resty R
3. upgrade Chrome and OS versions

* feat(fs): Support customizing the cache time for a specific path (OpenListTeam#1533)

* feat(fs): Support customizing the cache time for a specific path

* feat(fs): Get the cache rule for driver information.

* feat(fs): Support globbing.

* feat(fs): Add log.

---------

Signed-off-by: ShenLin <773933146@qq.com>
Co-authored-by: ShenLin <773933146@qq.com>

* feat(driver): add AList v3 (OpenListTeam#1721)

* feat(driver/openlist): compatible with AList v3

* Revert "feat(driver/openlist): compatible with AList v3"

This reverts commit 90f3f80.

* feat(driver): add AList v3

* Revert "feat(patch): add migration from Alist V3 driver to OpenList (OpenListTeam#919)"

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>

* feat(utils): add support for ignoring '@eadir' system files (OpenListTeam#1779)

* fix(task): tasks keep being cancelled (OpenListTeam#1745)

* fix_cancel

* update(go.mod): update tache version

* tache v0.2.2

---------

Co-authored-by: j2rong4cn <j2rong@qq.com>

* feat(model): add object mask support and enhance cache/task handling (OpenListTeam#1743)

* fix(ilanzou): parse vip size (OpenListTeam#1792)

* fix(halalcloud_open): halal-cloud upload issues (OpenListTeam#1800)

fix halal-cloud upload issues

* refactor(bootstrap): move booting logic to bootstrap package (OpenListTeam#1773)

* refactor(bootstrap): move booting to bootstrap package

* chore(log): reduce level of some callings of `utils.Log.Fatal`

* fix(s3): no shutdown after SIGTERM received

* fix: add handle hook

* fix(openlist): disable status check for openlist driver (OpenListTeam#1757)

* fix(openlist): disable status check to avoid network stability issues

* fix(alist_v3): disable status check to avoid network stability issues

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* feat(ldap): support webdav, ftp and sftp login (OpenListTeam#1746)

* feat(ldap): support webdav, ftp and sftp login

* fix: apply suggestions of Copilot

* feat(ldap) support ftp, sftp and webdav auto-register

* feat(drivers/139): user authentication and file batch operations (OpenListTeam#1534)

* feat(139): Enhance 139 driver with password login and root path handling

- Added support for password-based login in the 139 driver.
- Introduced RootPath field to store the root directory path.
- Updated Init method to handle family and group types more effectively.
- Implemented new methods for handling file operations in family and group contexts.
- Enhanced error handling and logging for better debugging.
- Added new request and response structures for batch operations and document modifications.
- Improved encryption and decryption methods for secure communication.

* Update drivers/139/util.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>

* Update drivers/139/util.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>

* Update drivers/139/util.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>

* Update drivers/139/util.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>

* Update drivers/139/util.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>

---------

Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix(139): disk-usage unmarshal failed when used capacity overflow (OpenListTeam#1718)

Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>

* feat(driver): add personal / business wps drive support (OpenListTeam#1802)

* feat(driver): add wps drive support

* feat(driver): add wps drive support

* fix(wps): update personal mode string to English

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(wps): remove trailing slash from drive origin URL

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(wps): correct order of options in mode selection

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(wps): enable local sort and upload overwrite

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(wps): resolve put bugs, fix file op problems and optimize list logic

- Fix uploading bugs. Support all uploading methods based on 8825.85d3c864.js
- Fix issues in delete/copy/move while opearting big folders.
- Use cache to optimize performance of list, especially in a deep path.

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>

* feat(cloudreve_v4): add ks3 support (OpenListTeam#1828)

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(strm): support generate strm with sign (OpenListTeam#1832)

* feat(115_open): support custom pagesize (OpenListTeam#1822)

* docs: add VPS.Town as sponsor to all README (OpenListTeam#1842)

Co-authored-by: XZB-1248 <i@1248.ink>

* fix(s3): incorrect copy key with plus sign (OpenListTeam#1820)

* docs: update README for zh-CN (OpenListTeam#1844)

* fix(weiyun): update sdk and support getDetails (OpenListTeam#1845)

* feat(strm): add save local mode (OpenListTeam#1814)

* feat(strm): add KeepSameNameOnly logic

* chore(strm): skip update strm file when keepLocalDownloadFile

* feat(strm): add save local mode

* docs(readme): add demo site (OpenListTeam#1850)

Last Sync: 2025-12-22 12:39

* refactor(bootstrap): fix OpenList-Mobile compile failed (OpenListTeam#1857)

* feat(alias): support load balance (OpenListTeam#1767)

* feat(alias): support load balance

* feat(alias): support storage match for load balance

* feat(patch): add alias addition upgrade patch

* fix bugs

* fix(op/balance): optimize compatibility

* chore: change default read conflict policy

* feat(alias): refactor Alias initialization and enhance path handling

* feat(alias): enhance object masking and add support for operation restrictions

* feat(alias): enhance object masking

* feat(fs): add permission checks

* improve parsing

* update object masks

* feat(fs): enhance virtual file handling

* feat(storage): enhance virtual file retrieval and path handling

* refactor(alias): rename path handling functions for clarity and consistency

* fix(alias): update path handling in Other method to use balanced path

* fix bug

* feat(alias): add file size validation

* feat(alias): add hash consistency check

* 移除哈希合并,

* fix(alias): wrong behavior for all_strict/deterministic_or_all

* Revert "fix(alias): wrong behavior for all_strict/deterministic_or_all"

This reverts commit f001f2d.

* fix(alias): wrong behavior for all_strict/deterministic_or_all

* feat(alias): support part-based read load balance

* fix(alias): list panic when leak conflict path

* fix(alias): remove Other load balance

* fix(alias): 修复 Link 方法中 resultLink 的返回类型和内容复制问题

* fix(alias): 更好的下载并发?

* chore(alias): all tips

* fix(alias): moving paths mismatch

---------

Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: ShenLin <773933146@qq.com>

* fix(s3): use current time as default modified time (OpenListTeam#1860)

* fix(driver): fix file copy failure to 123pan due to incorrect etag (OpenListTeam#1874)

* ci(lang): sync only new fields (OpenListTeam#1881)

* fix(123_open): infinite recursive call (OpenListTeam#1854)

fix(123_open): token refresh logic

Fix token handling logic to avoid deadlock. Token method took reference of Alist's implementation.

* feat(qihoo360): fix bugs made by copliot

* fix(doubao_share): use new download info (OpenListTeam#1890)

fix(doubao_share): update file URL retrieval to use new download info structure

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* feat(qihoo360): implement file upload functionality and enhance request handling

* fix(qihoo360): update user-agent

* feat(qihoo360): add User-Agent header for Sync.getVerifiedDownLoadUrl request

* feat(drivers/mega): support getting disk usage (OpenListTeam#1903)

* feat(drivers/mega): support getting disk usage

* fix

* feat(qihoo360): implement GetDetails and user detail retrieval functions

* feat(drivers/mega): support permanently deleting files (OpenListTeam#1913)

* feat(123pan): add offline download (OpenListTeam#1911)

* feat(123网盘): 添加123网盘离线下载功能

- 新增123网盘离线下载实现
- 添加相关API接口和常量配置
- 在路由和工具集中集成123网盘支持

* refactor(offline_download): 重构123网盘离线下载状态处理和类型定义

- 将离线下载相关类型定义从util.go移至types.go
- 更新状态获取api

* 移除了备选方案(/offline_download/task/status)

* feat(qihoo360): enhance GetDetails function and update UserDetailResp structure

* chore(strm): remove redundant param (OpenListTeam#1929)

* feat(drivers): support getting disk usage of some drivers (OpenListTeam#1905)

* feat(drivers): support getting disk usage of some drivers

* feat(drivers/degoo): implement GetDetails

* fix(fs/storage-details): fill used space rather than free space

* fix mega

* fix bsize type

* fix(cloudreve): Manually set path to avoid empty path (OpenListTeam#1933)

* fix(drivers/alist_v3): failed to unmarshal MeResp (OpenListTeam#1931)

* feat(drivers/webdav): add support for 302 redirects (OpenListTeam#1952)

* Remove the `OnlyProxy` restriction and obtain the redirected link to support 302

* Add `driver.Config` `PreferProxy` to recommend user to enable the proxy by default

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(fs): panic when failed to get storage details (OpenListTeam#1964)

* chore(.github): update issue templates [no ci] (OpenListTeam#1976)

chore(.github): update issue templates

* fix(drivers/ftp): failed to get objs (OpenListTeam#1948)

fix(drivers/ftp): failed get objs

* feat(drivers/cloudreve_v4): implement Getter interface (OpenListTeam#1937)

feat(cloudreve_v4): implement Getter interface

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(drivers/github): failed to get objs (OpenListTeam#1915)

fix(drivers/github): failed get objs

* fix(drivers/strm): delete extra local directories in sync mode (OpenListTeam#1980)

* fix(ci): change unchecked regex (OpenListTeam#1993)

fix(ci/issue): change unchecked regex

Signed-off-by: KirCute <951206789@qq.com>

* feat(drivers): add autoindex driver (OpenListTeam#1978)

* feat(drivers): add autoindex driver

* fix

* add NoUpload

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* add TestParseSize

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* go mod tidy

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* use base.RestyClient

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix: support evaluate size and modified time

* fix apache

* perf

* feat: support ignore size and modified time

* rename driver

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(fs): handle non-existent destination directory in file transfer (OpenListTeam#1898)

* fix(FileTransferTask): skip copying if destination directory does not exist

* pass only object not found error

---------

Co-authored-by: cyk <dr_arc@163.com>
Co-authored-by: KirCute <951206789@qq.com>

* feat(drivers/cloudreve): implement GetDetails (OpenListTeam#1960)

* fix(driver/quark_uc): Fix display of non-compliant filenames (OpenListTeam#2000)

* fix(webdav/move): fix source file still exist after moving file by webdav (OpenListTeam#1979)

* perf(baidu_netdisk): reduce the number of file listing requests (OpenListTeam#2016)

* 本优化减少了百度网盘驱动下文件列表的请求次数,能加快文件浏览速度。此前只要文件夹下有至少一个文件,都会至少发出2次列表请求。

Signed-off-by: hcrgm <hcrgm@qq.com>

* fix(drivers/seafile): object not found when RootFolderPath != "/" (OpenListTeam#2010)

* fix(driver/seafile): object not found when RootFolderPath != "/"

* refactor(seafile): restructure Seafile driver for improved library handling and error management

* add IsDir method to LibraryInfo type

* improve initialization

* add repoID to RepoItemResp and update List method to set repoID

---------

Co-authored-by: Khoray <hhkorm@gmail.com>
Co-authored-by: j2rong4cn <j2rong@qq.com>

* fix(drivers/alias): default sort & substitute link (OpenListTeam#1917)

* fix(drivers/alias): default sort & substitute link

* fix

* fix

* fix(drivers/cloudreve_v4): add IsFolder attribute to Getter response (OpenListTeam#2035)

* fix(drivers/cloudreve_v4): add IsFolder attribute to Getter response

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* refactor(drivers/cloudreve_v4): implement File.fileToObject method

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(drivers/cloudreve_v4): implement 404 not found for getter

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix(drivers/quark): apply html escaping in quark (OpenListTeam#2046)

* fix(drivers/quark): apply html escaping in quark

* fix(api/remove): add validation for empty items in delete file list (OpenListTeam#1617)

* fix(FsRemove): add validation for empty items in delete file list

If Req.Names contains an empty string item, the whole directory will be removed. As a result we need add a simple guard to prevent such cases.

Signed-off-by: huyuantao <huyuantao@ultrarisc.com>

* fix(FsRemove): enhance validation to prevent unintended directory deletion

1. Use `utils.FixAndCleanPath` to correctly identify and block invalid names.
2. Change error handling from `return` to `continue`.

Signed-off-by: huyuantao <huyuantao@ultrarisc.com>

---------

Signed-off-by: huyuantao <huyuantao@ultrarisc.com>
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>

* Merge commit from fork

Co-authored-by: KirCute <951206789@qq.com>

* Merge commit from fork

Co-authored-by: KirCute <951206789@qq.com>

* fix(drivers/teldrive): enhance file listing and upload functionality with pagination and random chunk naming (OpenListTeam#2034)

* fix(drivers/teldrive): enhance file listing and upload functionality with pagination and random chunk naming

* fix(drivers/teldrive): optimize file listing by removing unnecessary mutex and restructuring data handling

* Update drivers/teldrive/meta.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Chaloemchai <chaloemchai.yy@gmail.com>

---------

Signed-off-by: Chaloemchai <chaloemchai.yy@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix(115_share): adjust 115 share driver for official API update (OpenListTeam#2068)

* fix(115_share): add user agent support and update driver dependency

* fix(115): fix download error

* feat: add thumbnail support for 115 driver and 115 share

- Add Thumb() method to FileObj in 115 driver to return thumbnail URL
- Add ThumbURL field to FileObj struct in 115 share utility
- Update 115driver dependency from v1.2.2 to v1.2.3 to support thumbnail functionality
- Implement Thumb() method for 115 share FileObj to return thumbnail URL

* chore(ci): add breaking change guideline to PR title check (OpenListTeam#2087)

* feat(ci): add PR title validation for breaking changes

Updated regex to allow '!' for breaking changes in PR titles.

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* chore(pr): Update PR template

Add bilingual instructions for PR title formatting.

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* feat(drivers/123open): support sha1 reuse api (OpenListTeam#2089)

* feat(drivers/123open): support sha1 reuse api

* fix(drivers/123open): fix typos

* fix(deps): update go4.org digest to a507140 (OpenListTeam#2095)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(‎drivers/quark_uc_tv) : Update error code judgment (OpenListTeam#2080)

* fix error code

* add ErrorInfo check

* chore(typo): fix typo in UpdateFileReq field name (OpenListTeam#2133)

Fix typo in UpdateFileReq field name

ref: OpenListTeam/115-sdk-go#3

Signed-off-by: LXY <767763591@qq.com>

* fix(driver/wps): fetch all files via multiple API invocations (OpenListTeam#2139)

fix(driver/wps): wps list all files in one request

* feat(security): add SECURITY.md (OpenListTeam#2147)

[skip ci]

Add SECURITY.md

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* chore(handles/auth): improve error response (OpenListTeam#2148)

* chore(handles/auth): improve error response

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* Apply suggestion from @xrgzs

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* feat(drivers/thunder*): implement GetDetails (OpenListTeam#2113)

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* Fix critical auth bug: treat access_token_expire as absolute timestamp

The API returns access_token_expire as an absolute Unix timestamp, not a duration. The old code was adding it to current time, causing tokens to "expire" in year 2082. This meant tokens appeared valid even after actual expiration (1 hour), causing all API calls to fail after the program ran for some time.

Also added retry limit protection to prevent infinite recursion in error handling.

Co-authored-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

---------

Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>
Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>
Signed-off-by: jenfonro <799170122@qq.com>
Signed-off-by: yuyamionini <46483865+yuyamionini@users.noreply.github.com>
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
Signed-off-by: MoYan <1561515308@qq.com>
Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>
Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>
Signed-off-by: KirCute <951206789@qq.com>
Signed-off-by: hcrgm <hcrgm@qq.com>
Signed-off-by: huyuantao <huyuantao@ultrarisc.com>
Signed-off-by: Chaloemchai <chaloemchai.yy@gmail.com>
Signed-off-by: LXY <767763591@qq.com>
Co-authored-by: NewbieOrange <NewbieOrange@users.noreply.github.com>
Co-authored-by: KirCute <951206789@qq.com>
Co-authored-by: ShenLin <773933146@qq.com>
Co-authored-by: zzzhr1990 <zzzhr@hotmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Tursom K. Ulefits <33368546+tursom@users.noreply.github.com>
Co-authored-by: jenfonro <799170122@qq.com>
Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: ILoveScratch <ilovescratch@foxmail.com>
Co-authored-by: KirCute <kircute@foxmail.com>
Co-authored-by: jerrita <je5r1ta@icloud.com>
Co-authored-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>
Co-authored-by: walloo <51254954+varg1714@users.noreply.github.com>
Co-authored-by: MoYan <1561515308@qq.com>
Co-authored-by: Seven <53081179+Seven66677731@users.noreply.github.com>
Co-authored-by: ex-hentai <96158157+ex-hentai@users.noreply.github.com>
Co-authored-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
Co-authored-by: hcrgm <hcrgm@qq.com>
Co-authored-by: nibazshab <44338441+nibazshab@users.noreply.github.com>
Co-authored-by: ASLant <77436463+Y-ASLant@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Wodlie <86234536+Wodlie@users.noreply.github.com>
Co-authored-by: yuyamionini <46483865+yuyamionini@users.noreply.github.com>
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
Co-authored-by: VXTLS <187420201+vxtls@users.noreply.github.com>
Co-authored-by: ImoutoHeaven <github_main@imoutoheaven.org>
Co-authored-by: ImoutoHeaven <noreply@imoutoheaven.org>
Co-authored-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>
Co-authored-by: wongz <wongz@users.noreply.github.com>
Co-authored-by: Mako (XSpy) <127767602+x-spy@users.noreply.github.com>
Co-authored-by: hshpy <hshpy.pengyu@gmail.com>
Co-authored-by: XZB-1248 <28593573+XZB-1248@users.noreply.github.com>
Co-authored-by: XZB-1248 <i@1248.ink>
Co-authored-by: TwoOnefour <lys214412@gmail.com>
Co-authored-by: foxxorcat <95907542+foxxorcat@users.noreply.github.com>
Co-authored-by: Seven <53081179+sevxn007@users.noreply.github.com>
Co-authored-by: 绎泽 <yize@tencent.to>
Co-authored-by: 我怎么就不是一只猫呢? <26274059+dezhishen@users.noreply.github.com>
Co-authored-by: Tron <ironboxplus@gmail.com>
Co-authored-by: Edward <73746306+WangEdward@users.noreply.github.com>
Co-authored-by: mcxiedidi <113833419+mcxiedidi@users.noreply.github.com>
Co-authored-by: Ljcbaby <46277145+ljcbaby@users.noreply.github.com>
Co-authored-by: cyk <dr_arc@163.com>
Co-authored-by: Cp0204 <Cp0204@qq.com>
Co-authored-by: mkitsdts <136291922+mkitsdts@users.noreply.github.com>
Co-authored-by: Rui Huang <1251433731@qq.com>
Co-authored-by: Khoray <hhkorm@gmail.com>
Co-authored-by: Hu Yuantao <130338111+datao2001@users.noreply.github.com>
Co-authored-by: Chaloemchai <chaloemchai.yy@gmail.com>
Co-authored-by: Shelton Zhu <498220739@qq.com>
Co-authored-by: gdm257 <gdm@disroot.org>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: LXY <767763591@qq.com>
Wodlie added a commit to Wodlie/openlist_123 that referenced this pull request Feb 28, 2026
* fix(drivers): free space underflow if used larger than total space (OpenListTeam#1407)

* fix(189pc/189tv): `request` panic when login failed (OpenListTeam#1428)

* fix(ilanzou): wrong total capacity (OpenListTeam#1433)

* feat(pikpak): support disk usage (OpenListTeam#1426)

* feat(pikpak): support disk usage

* fix(alias): cannot list with details

* refactor: rename `NewDiskUsageFromUsedAndTotal`

* fix(disk-usage): get details of storages that is not initialized

* feat(offline_download): add 123 open (OpenListTeam#1427)

* feat(http3|quic): add http3|quic support (OpenListTeam#1466)

* feat(http3|quic): add http3|quic support

* revert(ai): fix ai error

* fix(shutdown): shutdown was using close

* feat(http3|quic): add config if needs h3

* feat(http3|quic): add Alt-Svc to expose h3

* chore(frontend): optimize user operations (OpenListTeam#1449)

* feat(drivers): add halalcloud_open driver (OpenListTeam#1430)

* 新增清真云Open驱动,支持最新的轻量SDK

* Change Go version in go.mod

Downgrade Go version from 1.24.2 to 1.23.4



* Apply suggestions from code review

* Removed unnecessary comments
* Downgraded the Go version to 1.23.4.
* Not sure whether FileStream supports concurrent read and write operations, so currently using single-threaded upload to ensure safety.




* feat(halalcloud_open): support disk usage

* Set useSingleUpload to true for upload safety

Not sure whether FileStream supports concurrent read and write operations, so currently using single-threaded upload to ensure safety.



* Update meta.go

Change required for RefreshToken, If using a personal API approach, the RefreshToken is not required.



* remove debug logs

* bump halalcloud SDK version

* fix unnecessary params

* Update drivers/halalcloud_open/driver_init.go




* Fixed spelling errors; changed hardcoded retry parameters to constants.

* remove pointer in get link function in utils.go

---------





* feat(http3|quic): Set Alt-Svc header only for HTTPS requests (OpenListTeam#1469)

* feat(local): move deleted files to corresponding locations (OpenListTeam#1281)

* fix(fs):fix retry task after restart (OpenListTeam#1467)

* fix retry task after restart

* fix: initialize SrcStorage and DstStorage in tasks to prevent nil pointer dereference

* feat: implement storage load signal mechanism for improved synchronization

* fix:  update StoragesLoaded logic

* refactor: reorganize storage loading logic and improve synchronization handling

---------



* feat(cache): improve cache management (OpenListTeam#1339)

* feat(cache): improve cache management

* feat(disk-usage): add cache

* feat(disk-usage): add refresh

* fix(disk-usage): cache with ttl

* feat(cache): implement KeyedCache and TypedCache for improved caching mechanism

* fix(copy): update object retrieval to use Get instead of GetUnwrap

* refactor(cache): simplify DirectoryCache structure and improve object management

* fix(cache): correct cache entry initialization and key deletion logic in TypedCache

* refactor(driver): remove GetObjInfo interface and simplify Link function logic
https://github.com/OpenListTeam/OpenList/pull/888/files#r2430925783

* fix(link): optimize link retrieval and caching logic

* refactor(cache): consolidate cache management and improve directory cache handling

* fix(cache): add cache control based on storage configuration in List function

* .

* refactor: replace fmt.Sprintf with strconv for integer conversions

* refactor(cache): enhance cache entry management with Expirable interface

* fix(cache): improve link reference acquisition logic to handle expiration

* refactor: replace OnlyLinkMFile with NoLinkSF in driver configurations and logic

* refactor(link): enhance link caching logic with dynamic type keys based on IP and User-Agent

* feat(drivers): add LinkCacheType to driver configurations for enhanced caching

* refactor(cache): streamline directory object management in cache operations

* refactor(cache): remove unnecessary 'dirty' field from CacheEntry structure

* refactor(cache): replace 'dirty' field with bitwise flags

* refactor(io): 调高SyncClosers.AcquireReference的优先级

* refactor(link): 优化链接获取逻辑,增加重

* refactor(link): 添加RequireReference字段以增强链接管理

* refactor(link): 移除MFile字段,改用RangeReader

* refactor: 移除不必要的NoLinkSF字段

* refactor(cache): 修改目录缓存的脏标志定义和更新逻辑

* feat(cache): add expiration gc

---------





* feat(onedrive): add ref support (OpenListTeam#1435)

* feat(onedrive): add ref support

* fix(onedrive): remove redundant token assignment from reference

---------



* feat(drivers): add ProtonDrive driver (OpenListTeam#1368)

* feat(drivers): add ProtonDrive driver

- Implement complete ProtonDrive storage driver with end-to-end encryption support
- Add authentication via username/password with credential caching and reusable login
- Support all core operations: List, Link, Put, Copy, Move, Remove, Rename, MakeDir
- Include encrypted file operations with PGP key management and node passphrase handling
- Add temporary HTTP server for secure file downloads with range request support
- Support media streaming using temp server range requests
- Implement progress tracking for uploads and downloads
- Support directory operations with circular move detection
- Add proper error handling and panic recovery for external library integration
- Support buffered upload for specific sequential and encrypted, but optimized transmission.

* Update drivers/proton_drive/util.go




* chore

* feat(drivers): enhance ProtonDrive temp server

- Implement separate listen and public port configuration for complex network deployments
- Add intelligent port detection with 8080 as preferred default, fallback to auto-assignment
- Support Container/NAT/VM environments through configurable external host and port mapping
- Add port availability validation with graceful fallback to listen port
- Enable users to specify external domain/IP for client connections (e.g., 192.168.1.5)
- Follow FTP server configuration patterns for network flexibility
- Maintain localhost development simplicity while supporting production deployments

* feat(proton_drive): refactor directory handling and improve link retrieval

* fix(proton_drive): add NoLinkURL configuration option

* fix(proton_drive): update file size retrieval and enforce TwoFACode requirement

* feat(proton_drive): add expiration to link response

* fix(proton_drive): handle empty RootFolderID in Init method

* fix(proton_drive): update credential handling to use email and reusable login

* fix(proton_drive): update credential handling to use reusableCredential variable

* fix(proton_drive): update DirectRename to use GetLink for source object retrieval

* fix(proton_drive): refactor uploadFile to return model.Obj and handle errors correctly

* fix(proton_drive): refactor DirectMove to use getLink for source retrieval and simplify destination handling

* fix(proton_drive): simplify Copy method by removing temporary file creation and directly using FileStream

* refactor(proton_drive): remove unused temporary server and related code

* chore

* fix(proton_drive): fix driver

- Handle fresh login if ProtonDrive rejects AccessToken or RefreshToken
- Update stored credentials

* fix(proton_drive): simplify reusable login handling in Init method

* fix(proton_drive): fix driver

- Update stored credentials, now is failing

* feat(proton_drive): improve authentication handling and remove unused variables

* fix(proton_drive): fix driver

- Update stored credentials, now is failing

* fix(proton_drive): improve authentication handling

* refactor(proton_drive): move client initialization to initClient method

* feat(proton_drive): move addrs and addrKRs

* feat(proton_drive): optimize upload threads

- Change ConcurrentBlockUploadCount to user configured upload threads number
- Comment ConcurrentFileCryptoCount, default is runtime.GOMAXPROCS(0)

---------







* feat(openlist): add PassIPToUpsteam to driver (OpenListTeam#1498)

* fix(share): remove share when user delete (OpenListTeam#1493)

* fix(aliyundrive_open): use safe disk usage calculation (OpenListTeam#1510)

* feat(command): add --config flag to set custom config path (OpenListTeam#1479)

* fix(alias): nil panic in `ResolveLinkCacheMode` (OpenListTeam#1527)

* fix(alias): Check the driver path during initialization

* fix(alias): Don't check the driver path during initialization anymore.

* feat(123): allow modification of the platform header (OpenListTeam#1542)

* feat(drivers/123): Allow modification of the platform field

* feat(drivers/123): Set login platfrom as web

* fix(drivers/123): update platform field help value

* feat(strm): strm local file (OpenListTeam#1127)

* feat(strm): strm local file

* feat: 代码优化

* feat: 访问被strm挂载路径时也更新

* fix: 路径最后带/判断缺失

* fix: 路径最后带/判断缺失

* refactor

* refactor

* fix: close seekable-stream in `generateStrm`

* refactor: lazy create local file

* 优化路径判断

---------



* feat(thunder): allow setting space (OpenListTeam#1219)

allows access to files on remote devices via Thunder's tunneling service.

* feat(net): support proxy configuration via config file (OpenListTeam#1359)

* support proxy

* debug

* debug2

* del debug

* add proxy configuration with env var fallback

* comments to en

* refactor(env): fallback env

---------



* fix(google_driver): fix google link file display size (OpenListTeam#1335)

* fix file link display size

* fix performance and field

* cn to en notes

---------



* chore(strm): Built-in file types support modification (OpenListTeam#1483)

* fix(baidu_netdisk): support resuming uploads when an error occurs (OpenListTeam#1279)

support resuming uploads when an error occurs

* feat(stream): enhance GetRangeReaderFromLink rate limiting (OpenListTeam#1528)

* feat(stream): enhance GetRangeReaderFromLink rate limiting

* refactor(stream): update GetRangeReaderFromMFile to return *model.FileRangeReader

* refactor(stream): simplify context error handling in RateLimitReader, RateLimitWriter, and RateLimitFile

* refactor(net): replace custom LimitedReadCloser with readers.NewLimitedReadCloser

* fix(model): update Link.ContentLength JSON tag for correct serialization

* docs(model): add clarification to FileRangeReader usage comment

* fix(backup-restore): add shares (OpenListTeam#1500)

* perf(stream): optimize CacheFullAndWriter for better memory management (OpenListTeam#1584)

* perf(stream): optimize CacheFullAndWriter for better memory management

* fix(stream): ensure proper seek handling in CacheFullAndWriter for improved data integrity

* fix(baidu_netdisk): improve upload experience (OpenListTeam#1562)

* fix(baidu_netdisk): improve upload experience

* fix(typo): URL should be uppercase, apply suggestion from @Copilot




* fix(typo): URL should be uppercase, apply suggestion from @Copilot




* fix(baidu_netdisk): use "UploadAPI" as a fallback when using dynamic upload api

* fix(baidu_netdisk): all uploads share the same upload url cache

* fix(drivers/baidu_netdisk): defer uploadUrlMu unlock

* update driver.go to main

---------







* feat(github_release): support Source code (zip/tar.gz) (OpenListTeam#1581)

* support Github Release Source code (zip/tar.gz)

* fix TarballUrl and ZipballUrl

* fix show source code by allversion

---------



* fix(189): disk-usage unmarshal failed when used capacity overflow (OpenListTeam#1577)

* refactor(stream): simplify code (OpenListTeam#1590)

* refactor(stream): simplify Close method and update SeekableStream to use RangeReader interface

* refactor(stream):  improve RangeRead comments for clarity

* fix(strm): non-specified type generates strm (OpenListTeam#1585)

* fix(strm): non-specified type generates strm

* fix(strm): only insert to strmTrie if SaveStrmToLocal is enabled

* fix(strm): update suffix handling in convert2strmObjs function

* fix(strm): refactor generateStrm to use range reader

---------



* feat(onedrive): support frontend direct upload (OpenListTeam#1532)

* OneDrive添加直连上传

* refactor

* fix: duplicate root path join

---------



* refactor(fs): implement immediate retry within task execution cycle (OpenListTeam#1575)

* fix(baidu_netdisk): Fix Baidu Netdisk resume uploads sticking to the same upload host (OpenListTeam#1609)

Fix Baidu Netdisk resume uploads sticking to the same upload host

* Initial plan

* Initial plan for qihoo360 driver implementation



* Implement qihoo360 driver with basic file operations



* Remove OpenList binary from repository



* Fix security issue: remove sensitive data from debug logs



* Clean up: remove binary and update gitignore



* fix(terabox): wrong return code used (OpenListTeam#1547)

fix(terabox): rename, delete, copy operations sometimes failed



* fix(archive/zip): user specific encoding for non-EFS zips (OpenListTeam#1599)

* fix(archive/zip): user specific encoding for non-EFS zips

* fix(stream): simplify head cache initialization and improve reader retrieval logic

* fix: support multipart zips (.z01)

* chore(deps): update github.com/KirCute/zip to v1.0.1

---------




* feat(doubao): Add rate limiting (OpenListTeam#1618)

* chore(issue templates): require logs (OpenListTeam#1626)

* Fix infinite loop in authentication flow

Move auth check inside method validation to prevent infinite recursion when getAuth() calls request(). Now request() only checks authentication when method is not empty, breaking the circular dependency.



* feat(s3): support frontend direct upload (OpenListTeam#1631)

* feat(s3): support frontend direct upload

* feat(s3): support custom direct upload host

* fix: apply suggestions of Copilot

* fix(link): correct link cache mode bitwise comparison (OpenListTeam#1635)

* fix(link): correct link cache mode bitwise comparison



* refactor(link): use explicit flag equality for link cache mode bitmask checks



---------



* feat(upload): add optional system file filtering for uploads (OpenListTeam#1634)

* fix(driver/123): initialize Platform field (OpenListTeam#1644)

* fix(driver/123): initialization the Platform field



* Fix formatting of Platform field in Pan123



---------



* fix(openlist_driver): ensure UA is correctly propagated (OpenListTeam#1679)

* feat(fs): support manually trigger objs update hook (OpenListTeam#1620)

* feat(fs): support manually trigger objs update hook

* fix: support driver internal copy & move case

* fix

* fix: apply suggestions of Copilot

* fix(misskey): folderId format validation and root directory handling (OpenListTeam#1647)

fix(misskey): Fix folderId format validation and root directory handling

* fix(strm): fix the name and type issue (OpenListTeam#1630)

* fix(strm): fix the name and type issue

* fix(strm): update version

* feat(strm): custom path prefixes (OpenListTeam#1697)

fix(strm): custom path prefixes




* feat(baidu_netdisk): Add shard upload timeout setting (OpenListTeam#1682)

add timeout

* fix(local): assign non-CoW copy requests to the task module (OpenListTeam#1669)

* fix(local): assign non-CoW copy requests to the task module

* fix build

* fix cross device

* feat(fs): Add skipExisting option to move and copy, merge option to copy (OpenListTeam#1556)

* fix(fs): Add skipExisting option to move and copy.

* feat(fs): Add merge option to copy.

* feat(fs): Code smell.

* feat(fs): Code smell.

* feat(archive): support non-overwrite decompress (OpenListTeam#1701)

* feat(search): Add task queue for Meilisearch to prevent race conditions (OpenListTeam#1423)

* Add task queue for Meilisearch to prevent race conditions

- Implement TaskQueueManager for async index operations
- Queue update tasks and process them in batches every 30 seconds
- Check pending task status before executing new operations
- Optimize batch indexing and deletion logic
- Fix type assertion bug in buildSearchDocumentFromResults

* fix(search): re-enqueue skipped tasks to prevent task loss

When tasks are skipped due to pending dependencies, they are now
re-enqueued if not already in queue. This prevents task loss while
avoiding overwriting newer snapshots for the same parent.

* fix(copilot-comment): Invoke Stop() & err of SliceConvert

---------




* fix(search): fix duplicated variable init (OpenListTeam#1703)

* chore(archive): fix struct literal uses unkeyed fields (OpenListTeam#1704)

* chore(pkg/aria2): simplify context cancellation handling in RPC calls (OpenListTeam#1705)

* fix(pkg/aria2): use pointer receivers for Call methods (OpenListTeam#1706)

* feat(strm): keep local download file (OpenListTeam#1707)

* fix(onedrive_shareurl): Reduce temporary file errors (OpenListTeam#1686)

* fix onedrive_shareurl

* .

* chore(strm): avoid generating empty folders (OpenListTeam#1720)

chore(strm): empty folders are not generated locally

* refactor:  improve upload handling (OpenListTeam#1455)

* fix(quark): refactor upPart to use http.NewRequest

* fix(quark): improved upload handling

* fix(quark_open): improved upload handling

* fix: add retry context to multiple upload functions

* fix: optimize hash calculation in multipart upload to avoid blocking

* fix: update error handling in lifecycle functions for better clarity

* fix: update upload progress calculation to improve accuracy

* fix: simplify error handling in lifecycle functions for improved readability

* fix: remove unnecessary mutex for part uploads to simplify code

* fix(stream): simplify file handling in NewStreamSectionReader and improve error messages

* fix(terabox): optimize chunk count calculation in Put method

* perf(chaoxing): 表单上传文件0拷贝

* fix(cnb_releases): improve file upload progress tracking

* fix(baidu_netdisk): improve upload handling

* fix(upload): optimize buffer initialization for file uploads

* fix(baidu_netdisk): add retry condition to skip ErrUploadIDExpired in upload loop

* fix(drivers/crypt): remove hard dependency on RemotePath (OpenListTeam#1713)

* fix(mediafire): enable automatic session token acquisition and fix gzip parsing (OpenListTeam#1661)

* fix(mediafire): enable automatic session token acquisition and fix gzip parsing

- Fix Init() method to allow automatic session token retrieval from cookie
- Change SessionToken from required to optional in configuration
- Add proper gzip decompression support for API responses
- Improve error handling for session token acquisition failures
- Update help text to clarify authentication requirements

Resolves initialization failure and JSON parsing errors when session token
can be automatically obtained from browser cookie.

* fix(mediafire): ensure driver files end with newline

* chore: gofmt drivers/mediafire/*.go

* refactor(op): remove automatic Path assignment (OpenListTeam#1734)

* refactor: 移除 ObjResp 中的 Id 和 Path 字段

* 移除op.List的自动设置Path
Path和Id只在驱动内使用,不应由op.List设置Path

* cnb_releases:将 Addition 结构体中的 RootPath 字段为 RootID
当List方法加载二级目录时,若使用的是Id,应对使用driver.RootID

* doubao_share: 添加潜在bug注释

* 添加 GetRootPath 方法到多个驱动

* refactor!(userAgent): merge most userAgent into base (OpenListTeam#1722)

refactor!(userAgent): merge all userAgent into base

1. change var to const
2. remove duplicated ua definetion after original Resty R
3. upgrade Chrome and OS versions

* feat(fs): Support customizing the cache time for a specific path (OpenListTeam#1533)

* feat(fs): Support customizing the cache time for a specific path

* feat(fs): Get the cache rule for driver information.

* feat(fs): Support globbing.

* feat(fs): Add log.

---------




* feat(driver): add AList v3 (OpenListTeam#1721)

* feat(driver/openlist): compatible with AList v3

* Revert "feat(driver/openlist): compatible with AList v3"

This reverts commit 90f3f80.

* feat(driver): add AList v3

* Revert "feat(patch): add migration from Alist V3 driver to OpenList (OpenListTeam#919)"



---------




* feat(utils): add support for ignoring '@eadir' system files (OpenListTeam#1779)

* fix(task): tasks keep being cancelled (OpenListTeam#1745)

* fix_cancel

* update(go.mod): update tache version

* tache v0.2.2

---------



* feat(model): add object mask support and enhance cache/task handling (OpenListTeam#1743)

* fix(ilanzou): parse vip size (OpenListTeam#1792)

* fix(halalcloud_open): halal-cloud upload issues (OpenListTeam#1800)

fix halal-cloud upload issues

* refactor(bootstrap): move booting logic to bootstrap package (OpenListTeam#1773)

* refactor(bootstrap): move booting to bootstrap package

* chore(log): reduce level of some callings of `utils.Log.Fatal`

* fix(s3): no shutdown after SIGTERM received

* fix: add handle hook

* fix(openlist): disable status check for openlist driver (OpenListTeam#1757)

* fix(openlist): disable status check to avoid network stability issues

* fix(alist_v3): disable status check to avoid network stability issues



---------



* feat(ldap): support webdav, ftp and sftp login (OpenListTeam#1746)

* feat(ldap): support webdav, ftp and sftp login

* fix: apply suggestions of Copilot

* feat(ldap) support ftp, sftp and webdav auto-register

* feat(drivers/139): user authentication and file batch operations (OpenListTeam#1534)

* feat(139): Enhance 139 driver with password login and root path handling

- Added support for password-based login in the 139 driver.
- Introduced RootPath field to store the root directory path.
- Updated Init method to handle family and group types more effectively.
- Implemented new methods for handling file operations in family and group contexts.
- Enhanced error handling and logging for better debugging.
- Added new request and response structures for batch operations and document modifications.
- Improved encryption and decryption methods for secure communication.

* Update drivers/139/util.go




* Update drivers/139/util.go




* Update drivers/139/util.go




* Update drivers/139/util.go




* Update drivers/139/util.go




---------




* fix(139): disk-usage unmarshal failed when used capacity overflow (OpenListTeam#1718)



* feat(driver): add personal / business wps drive support (OpenListTeam#1802)

* feat(driver): add wps drive support

* feat(driver): add wps drive support

* fix(wps): update personal mode string to English



* fix(wps): remove trailing slash from drive origin URL



* fix(wps): correct order of options in mode selection



* fix(wps): enable local sort and upload overwrite



* fix(wps): resolve put bugs, fix file op problems and optimize list logic

- Fix uploading bugs. Support all uploading methods based on 8825.85d3c864.js
- Fix issues in delete/copy/move while opearting big folders.
- Use cache to optimize performance of list, especially in a deep path.

---------




* feat(cloudreve_v4): add ks3 support (OpenListTeam#1828)



* fix(strm): support generate strm with sign (OpenListTeam#1832)

* feat(115_open): support custom pagesize (OpenListTeam#1822)

* docs: add VPS.Town as sponsor to all README (OpenListTeam#1842)



* fix(s3): incorrect copy key with plus sign (OpenListTeam#1820)

* docs: update README for zh-CN (OpenListTeam#1844)

* fix(weiyun): update sdk and support getDetails (OpenListTeam#1845)

* feat(strm): add save local mode (OpenListTeam#1814)

* feat(strm): add KeepSameNameOnly logic

* chore(strm): skip update strm file when keepLocalDownloadFile

* feat(strm): add save local mode

* docs(readme): add demo site (OpenListTeam#1850)

Last Sync: 2025-12-22 12:39

* refactor(bootstrap): fix OpenList-Mobile compile failed (OpenListTeam#1857)

* feat(alias): support load balance (OpenListTeam#1767)

* feat(alias): support load balance

* feat(alias): support storage match for load balance

* feat(patch): add alias addition upgrade patch

* fix bugs

* fix(op/balance): optimize compatibility

* chore: change default read conflict policy

* feat(alias): refactor Alias initialization and enhance path handling

* feat(alias): enhance object masking and add support for operation restrictions

* feat(alias): enhance object masking

* feat(fs): add permission checks

* improve parsing

* update object masks

* feat(fs): enhance virtual file handling

* feat(storage): enhance virtual file retrieval and path handling

* refactor(alias): rename path handling functions for clarity and consistency

* fix(alias): update path handling in Other method to use balanced path

* fix bug

* feat(alias): add file size validation

* feat(alias): add hash consistency check

* 移除哈希合并,

* fix(alias): wrong behavior for all_strict/deterministic_or_all

* Revert "fix(alias): wrong behavior for all_strict/deterministic_or_all"

This reverts commit f001f2d.

* fix(alias): wrong behavior for all_strict/deterministic_or_all

* feat(alias): support part-based read load balance

* fix(alias): list panic when leak conflict path

* fix(alias): remove Other load balance

* fix(alias): 修复 Link 方法中 resultLink 的返回类型和内容复制问题

* fix(alias): 更好的下载并发?

* chore(alias): all tips

* fix(alias): moving paths mismatch

---------




* fix(s3): use current time as default modified time (OpenListTeam#1860)

* fix(driver): fix file copy failure to 123pan due to incorrect etag (OpenListTeam#1874)

* ci(lang): sync only new fields (OpenListTeam#1881)

* fix(123_open): infinite recursive call (OpenListTeam#1854)

fix(123_open): token refresh logic

Fix token handling logic to avoid deadlock. Token method took reference of Alist's implementation.

* feat(qihoo360): fix bugs made by copliot

* fix(doubao_share): use new download info (OpenListTeam#1890)

fix(doubao_share): update file URL retrieval to use new download info structure



* feat(qihoo360): implement file upload functionality and enhance request handling

* fix(qihoo360): update user-agent

* feat(qihoo360): add User-Agent header for Sync.getVerifiedDownLoadUrl request

* feat(drivers/mega): support getting disk usage (OpenListTeam#1903)

* feat(drivers/mega): support getting disk usage

* fix

* feat(qihoo360): implement GetDetails and user detail retrieval functions

* feat(drivers/mega): support permanently deleting files (OpenListTeam#1913)

* feat(123pan): add offline download (OpenListTeam#1911)

* feat(123网盘): 添加123网盘离线下载功能

- 新增123网盘离线下载实现
- 添加相关API接口和常量配置
- 在路由和工具集中集成123网盘支持

* refactor(offline_download): 重构123网盘离线下载状态处理和类型定义

- 将离线下载相关类型定义从util.go移至types.go
- 更新状态获取api

* 移除了备选方案(/offline_download/task/status)

* feat(qihoo360): enhance GetDetails function and update UserDetailResp structure

* chore(strm): remove redundant param (OpenListTeam#1929)

* feat(drivers): support getting disk usage of some drivers (OpenListTeam#1905)

* feat(drivers): support getting disk usage of some drivers

* feat(drivers/degoo): implement GetDetails

* fix(fs/storage-details): fill used space rather than free space

* fix mega

* fix bsize type

* fix(cloudreve): Manually set path to avoid empty path (OpenListTeam#1933)

* fix(drivers/alist_v3): failed to unmarshal MeResp (OpenListTeam#1931)

* feat(drivers/webdav): add support for 302 redirects (OpenListTeam#1952)

* Remove the `OnlyProxy` restriction and obtain the redirected link to support 302

* Add `driver.Config` `PreferProxy` to recommend user to enable the proxy by default

---------



* fix(fs): panic when failed to get storage details (OpenListTeam#1964)

* chore(.github): update issue templates [no ci] (OpenListTeam#1976)

chore(.github): update issue templates

* fix(drivers/ftp): failed to get objs (OpenListTeam#1948)

fix(drivers/ftp): failed get objs

* feat(drivers/cloudreve_v4): implement Getter interface (OpenListTeam#1937)

feat(cloudreve_v4): implement Getter interface



* fix(drivers/github): failed to get objs (OpenListTeam#1915)

fix(drivers/github): failed get objs

* fix(drivers/strm): delete extra local directories in sync mode (OpenListTeam#1980)

* fix(ci): change unchecked regex (OpenListTeam#1993)

fix(ci/issue): change unchecked regex



* feat(drivers): add autoindex driver (OpenListTeam#1978)

* feat(drivers): add autoindex driver

* fix

* add NoUpload



* add TestParseSize



* go mod tidy



* use base.RestyClient



* fix: support evaluate size and modified time

* fix apache

* perf

* feat: support ignore size and modified time

* rename driver

---------




* fix(fs): handle non-existent destination directory in file transfer (OpenListTeam#1898)

* fix(FileTransferTask): skip copying if destination directory does not exist

* pass only object not found error

---------




* feat(drivers/cloudreve): implement GetDetails (OpenListTeam#1960)

* fix(driver/quark_uc): Fix display of non-compliant filenames (OpenListTeam#2000)

* fix(webdav/move): fix source file still exist after moving file by webdav (OpenListTeam#1979)

* perf(baidu_netdisk): reduce the number of file listing requests (OpenListTeam#2016)

* 本优化减少了百度网盘驱动下文件列表的请求次数,能加快文件浏览速度。此前只要文件夹下有至少一个文件,都会至少发出2次列表请求。



* fix(drivers/seafile): object not found when RootFolderPath != "/" (OpenListTeam#2010)

* fix(driver/seafile): object not found when RootFolderPath != "/"

* refactor(seafile): restructure Seafile driver for improved library handling and error management

* add IsDir method to LibraryInfo type

* improve initialization

* add repoID to RepoItemResp and update List method to set repoID

---------




* fix(drivers/alias): default sort & substitute link (OpenListTeam#1917)

* fix(drivers/alias): default sort & substitute link

* fix

* fix

* fix(drivers/cloudreve_v4): add IsFolder attribute to Getter response (OpenListTeam#2035)

* fix(drivers/cloudreve_v4): add IsFolder attribute to Getter response



* refactor(drivers/cloudreve_v4): implement File.fileToObject method



* fix(drivers/cloudreve_v4): implement 404 not found for getter



---------



* fix(drivers/quark): apply html escaping in quark (OpenListTeam#2046)

* fix(drivers/quark): apply html escaping in quark

* fix(api/remove): add validation for empty items in delete file list (OpenListTeam#1617)

* fix(FsRemove): add validation for empty items in delete file list

If Req.Names contains an empty string item, the whole directory will be removed. As a result we need add a simple guard to prevent such cases.



* fix(FsRemove): enhance validation to prevent unintended directory deletion

1. Use `utils.FixAndCleanPath` to correctly identify and block invalid names.
2. Change error handling from `return` to `continue`.



---------




* Merge commit from fork



* Merge commit from fork



* fix(drivers/teldrive): enhance file listing and upload functionality with pagination and random chunk naming (OpenListTeam#2034)

* fix(drivers/teldrive): enhance file listing and upload functionality with pagination and random chunk naming

* fix(drivers/teldrive): optimize file listing by removing unnecessary mutex and restructuring data handling

* Update drivers/teldrive/meta.go




---------




* fix(115_share): adjust 115 share driver for official API update (OpenListTeam#2068)

* fix(115_share): add user agent support and update driver dependency

* fix(115): fix download error

* feat: add thumbnail support for 115 driver and 115 share

- Add Thumb() method to FileObj in 115 driver to return thumbnail URL
- Add ThumbURL field to FileObj struct in 115 share utility
- Update 115driver dependency from v1.2.2 to v1.2.3 to support thumbnail functionality
- Implement Thumb() method for 115 share FileObj to return thumbnail URL

* chore(ci): add breaking change guideline to PR title check (OpenListTeam#2087)

* feat(ci): add PR title validation for breaking changes

Updated regex to allow '!' for breaking changes in PR titles.



* chore(pr): Update PR template

Add bilingual instructions for PR title formatting.



---------



* feat(drivers/123open): support sha1 reuse api (OpenListTeam#2089)

* feat(drivers/123open): support sha1 reuse api

* fix(drivers/123open): fix typos

* fix(deps): update go4.org digest to a507140 (OpenListTeam#2095)



* fix(‎drivers/quark_uc_tv) : Update error code judgment (OpenListTeam#2080)

* fix error code

* add ErrorInfo check

* chore(typo): fix typo in UpdateFileReq field name (OpenListTeam#2133)

Fix typo in UpdateFileReq field name

ref: OpenListTeam/115-sdk-go#3



* fix(driver/wps): fetch all files via multiple API invocations (OpenListTeam#2139)

fix(driver/wps): wps list all files in one request

* feat(security): add SECURITY.md (OpenListTeam#2147)

[skip ci]

Add SECURITY.md



* chore(handles/auth): improve error response (OpenListTeam#2148)

* chore(handles/auth): improve error response



* Apply suggestion from @xrgzs



---------



* feat(drivers/thunder*): implement GetDetails (OpenListTeam#2113)



* Fix critical auth bug: treat access_token_expire as absolute timestamp

The API returns access_token_expire as an absolute Unix timestamp, not a duration. The old code was adding it to current time, causing tokens to "expire" in year 2082. This meant tokens appeared valid even after actual expiration (1 hour), causing all API calls to fail after the program ran for some time.

Also added retry limit protection to prevent infinite recursion in error handling.



---------

Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>
Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>
Signed-off-by: jenfonro <799170122@qq.com>
Signed-off-by: yuyamionini <46483865+yuyamionini@users.noreply.github.com>
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
Signed-off-by: MoYan <1561515308@qq.com>
Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>
Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>
Signed-off-by: KirCute <951206789@qq.com>
Signed-off-by: hcrgm <hcrgm@qq.com>
Signed-off-by: huyuantao <huyuantao@ultrarisc.com>
Signed-off-by: Chaloemchai <chaloemchai.yy@gmail.com>
Signed-off-by: LXY <767763591@qq.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NewbieOrange <NewbieOrange@users.noreply.github.com>
Co-authored-by: KirCute <951206789@qq.com>
Co-authored-by: ShenLin <773933146@qq.com>
Co-authored-by: zzzhr1990 <zzzhr@hotmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Tursom K. Ulefits <33368546+tursom@users.noreply.github.com>
Co-authored-by: jenfonro <799170122@qq.com>
Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: ILoveScratch <ilovescratch@foxmail.com>
Co-authored-by: KirCute <kircute@foxmail.com>
Co-authored-by: jerrita <je5r1ta@icloud.com>
Co-authored-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>
Co-authored-by: walloo <51254954+varg1714@users.noreply.github.com>
Co-authored-by: MoYan <1561515308@qq.com>
Co-authored-by: Seven <53081179+Seven66677731@users.noreply.github.com>
Co-authored-by: ex-hentai <96158157+ex-hentai@users.noreply.github.com>
Co-authored-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
Co-authored-by: hcrgm <hcrgm@qq.com>
Co-authored-by: nibazshab <44338441+nibazshab@users.noreply.github.com>
Co-authored-by: ASLant <77436463+Y-ASLant@users.noreply.github.com>
Co-authored-by: yuyamionini <46483865+yuyamionini@users.noreply.github.com>
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
Co-authored-by: VXTLS <187420201+vxtls@users.noreply.github.com>
Co-authored-by: ImoutoHeaven <github_main@imoutoheaven.org>
Co-authored-by: ImoutoHeaven <noreply@imoutoheaven.org>
Co-authored-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>
Co-authored-by: wongz <wongz@users.noreply.github.com>
Co-authored-by: Mako (XSpy) <127767602+x-spy@users.noreply.github.com>
Co-authored-by: hshpy <hshpy.pengyu@gmail.com>
Co-authored-by: XZB-1248 <28593573+XZB-1248@users.noreply.github.com>
Co-authored-by: XZB-1248 <i@1248.ink>
Co-authored-by: TwoOnefour <lys214412@gmail.com>
Co-authored-by: foxxorcat <95907542+foxxorcat@users.noreply.github.com>
Co-authored-by: Seven <53081179+sevxn007@users.noreply.github.com>
Co-authored-by: 绎泽 <yize@tencent.to>
Co-authored-by: 我怎么就不是一只猫呢? <26274059+dezhishen@users.noreply.github.com>
Co-authored-by: Tron <ironboxplus@gmail.com>
Co-authored-by: Edward <73746306+WangEdward@users.noreply.github.com>
Co-authored-by: mcxiedidi <113833419+mcxiedidi@users.noreply.github.com>
Co-authored-by: Ljcbaby <46277145+ljcbaby@users.noreply.github.com>
Co-authored-by: cyk <dr_arc@163.com>
Co-authored-by: Cp0204 <Cp0204@qq.com>
Co-authored-by: mkitsdts <136291922+mkitsdts@users.noreply.github.com>
Co-authored-by: Rui Huang <1251433731@qq.com>
Co-authored-by: Khoray <hhkorm@gmail.com>
Co-authored-by: Hu Yuantao <130338111+datao2001@users.noreply.github.com>
Co-authored-by: Chaloemchai <chaloemchai.yy@gmail.com>
Co-authored-by: Shelton Zhu <498220739@qq.com>
Co-authored-by: gdm257 <gdm@disroot.org>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: LXY <767763591@qq.com>
Wodlie added a commit to Wodlie/openlist_123 that referenced this pull request Feb 28, 2026
* chore: 删除不再使用的工作流文件并更新相关配置

* Revert

Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* chore:fixed ci build

* chore: clean up workflow files by removing unused release configurations

* refactor(workflows): clean up Docker release workflows and remove obsolete files

* revert

Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* revert

Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* feat(ci): enhance Docker release workflow with manual tagging options and lite builds

* Delete .github/workflows/test_docker.yml

Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* Delete .github/workflows/sync_repo.yml

Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* Delete .github/workflows/sync_repo.yml

Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* Delete .github/workflows/test_docker.yml

Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>

* feat(onedrive): add TenantID field and update token refresh logic

* feat(qihoo360)!: add qihoo360 driver (#14)

* fix(drivers): free space underflow if used larger than total space (OpenListTeam#1407)

* fix(189pc/189tv): `request` panic when login failed (OpenListTeam#1428)

* fix(ilanzou): wrong total capacity (OpenListTeam#1433)

* feat(pikpak): support disk usage (OpenListTeam#1426)

* feat(pikpak): support disk usage

* fix(alias): cannot list with details

* refactor: rename `NewDiskUsageFromUsedAndTotal`

* fix(disk-usage): get details of storages that is not initialized

* feat(offline_download): add 123 open (OpenListTeam#1427)

* feat(http3|quic): add http3|quic support (OpenListTeam#1466)

* feat(http3|quic): add http3|quic support

* revert(ai): fix ai error

* fix(shutdown): shutdown was using close

* feat(http3|quic): add config if needs h3

* feat(http3|quic): add Alt-Svc to expose h3

* chore(frontend): optimize user operations (OpenListTeam#1449)

* feat(drivers): add halalcloud_open driver (OpenListTeam#1430)

* 新增清真云Open驱动,支持最新的轻量SDK

* Change Go version in go.mod

Downgrade Go version from 1.24.2 to 1.23.4



* Apply suggestions from code review

* Removed unnecessary comments
* Downgraded the Go version to 1.23.4.
* Not sure whether FileStream supports concurrent read and write operations, so currently using single-threaded upload to ensure safety.




* feat(halalcloud_open): support disk usage

* Set useSingleUpload to true for upload safety

Not sure whether FileStream supports concurrent read and write operations, so currently using single-threaded upload to ensure safety.



* Update meta.go

Change required for RefreshToken, If using a personal API approach, the RefreshToken is not required.



* remove debug logs

* bump halalcloud SDK version

* fix unnecessary params

* Update drivers/halalcloud_open/driver_init.go




* Fixed spelling errors; changed hardcoded retry parameters to constants.

* remove pointer in get link function in utils.go

---------





* feat(http3|quic): Set Alt-Svc header only for HTTPS requests (OpenListTeam#1469)

* feat(local): move deleted files to corresponding locations (OpenListTeam#1281)

* fix(fs):fix retry task after restart (OpenListTeam#1467)

* fix retry task after restart

* fix: initialize SrcStorage and DstStorage in tasks to prevent nil pointer dereference

* feat: implement storage load signal mechanism for improved synchronization

* fix:  update StoragesLoaded logic

* refactor: reorganize storage loading logic and improve synchronization handling

---------



* feat(cache): improve cache management (OpenListTeam#1339)

* feat(cache): improve cache management

* feat(disk-usage): add cache

* feat(disk-usage): add refresh

* fix(disk-usage): cache with ttl

* feat(cache): implement KeyedCache and TypedCache for improved caching mechanism

* fix(copy): update object retrieval to use Get instead of GetUnwrap

* refactor(cache): simplify DirectoryCache structure and improve object management

* fix(cache): correct cache entry initialization and key deletion logic in TypedCache

* refactor(driver): remove GetObjInfo interface and simplify Link function logic
https://github.com/OpenListTeam/OpenList/pull/888/files#r2430925783

* fix(link): optimize link retrieval and caching logic

* refactor(cache): consolidate cache management and improve directory cache handling

* fix(cache): add cache control based on storage configuration in List function

* .

* refactor: replace fmt.Sprintf with strconv for integer conversions

* refactor(cache): enhance cache entry management with Expirable interface

* fix(cache): improve link reference acquisition logic to handle expiration

* refactor: replace OnlyLinkMFile with NoLinkSF in driver configurations and logic

* refactor(link): enhance link caching logic with dynamic type keys based on IP and User-Agent

* feat(drivers): add LinkCacheType to driver configurations for enhanced caching

* refactor(cache): streamline directory object management in cache operations

* refactor(cache): remove unnecessary 'dirty' field from CacheEntry structure

* refactor(cache): replace 'dirty' field with bitwise flags

* refactor(io): 调高SyncClosers.AcquireReference的优先级

* refactor(link): 优化链接获取逻辑,增加重

* refactor(link): 添加RequireReference字段以增强链接管理

* refactor(link): 移除MFile字段,改用RangeReader

* refactor: 移除不必要的NoLinkSF字段

* refactor(cache): 修改目录缓存的脏标志定义和更新逻辑

* feat(cache): add expiration gc

---------





* feat(onedrive): add ref support (OpenListTeam#1435)

* feat(onedrive): add ref support

* fix(onedrive): remove redundant token assignment from reference

---------



* feat(drivers): add ProtonDrive driver (OpenListTeam#1368)

* feat(drivers): add ProtonDrive driver

- Implement complete ProtonDrive storage driver with end-to-end encryption support
- Add authentication via username/password with credential caching and reusable login
- Support all core operations: List, Link, Put, Copy, Move, Remove, Rename, MakeDir
- Include encrypted file operations with PGP key management and node passphrase handling
- Add temporary HTTP server for secure file downloads with range request support
- Support media streaming using temp server range requests
- Implement progress tracking for uploads and downloads
- Support directory operations with circular move detection
- Add proper error handling and panic recovery for external library integration
- Support buffered upload for specific sequential and encrypted, but optimized transmission.

* Update drivers/proton_drive/util.go




* chore

* feat(drivers): enhance ProtonDrive temp server

- Implement separate listen and public port configuration for complex network deployments
- Add intelligent port detection with 8080 as preferred default, fallback to auto-assignment
- Support Container/NAT/VM environments through configurable external host and port mapping
- Add port availability validation with graceful fallback to listen port
- Enable users to specify external domain/IP for client connections (e.g., 192.168.1.5)
- Follow FTP server configuration patterns for network flexibility
- Maintain localhost development simplicity while supporting production deployments

* feat(proton_drive): refactor directory handling and improve link retrieval

* fix(proton_drive): add NoLinkURL configuration option

* fix(proton_drive): update file size retrieval and enforce TwoFACode requirement

* feat(proton_drive): add expiration to link response

* fix(proton_drive): handle empty RootFolderID in Init method

* fix(proton_drive): update credential handling to use email and reusable login

* fix(proton_drive): update credential handling to use reusableCredential variable

* fix(proton_drive): update DirectRename to use GetLink for source object retrieval

* fix(proton_drive): refactor uploadFile to return model.Obj and handle errors correctly

* fix(proton_drive): refactor DirectMove to use getLink for source retrieval and simplify destination handling

* fix(proton_drive): simplify Copy method by removing temporary file creation and directly using FileStream

* refactor(proton_drive): remove unused temporary server and related code

* chore

* fix(proton_drive): fix driver

- Handle fresh login if ProtonDrive rejects AccessToken or RefreshToken
- Update stored credentials

* fix(proton_drive): simplify reusable login handling in Init method

* fix(proton_drive): fix driver

- Update stored credentials, now is failing

* feat(proton_drive): improve authentication handling and remove unused variables

* fix(proton_drive): fix driver

- Update stored credentials, now is failing

* fix(proton_drive): improve authentication handling

* refactor(proton_drive): move client initialization to initClient method

* feat(proton_drive): move addrs and addrKRs

* feat(proton_drive): optimize upload threads

- Change ConcurrentBlockUploadCount to user configured upload threads number
- Comment ConcurrentFileCryptoCount, default is runtime.GOMAXPROCS(0)

---------







* feat(openlist): add PassIPToUpsteam to driver (OpenListTeam#1498)

* fix(share): remove share when user delete (OpenListTeam#1493)

* fix(aliyundrive_open): use safe disk usage calculation (OpenListTeam#1510)

* feat(command): add --config flag to set custom config path (OpenListTeam#1479)

* fix(alias): nil panic in `ResolveLinkCacheMode` (OpenListTeam#1527)

* fix(alias): Check the driver path during initialization

* fix(alias): Don't check the driver path during initialization anymore.

* feat(123): allow modification of the platform header (OpenListTeam#1542)

* feat(drivers/123): Allow modification of the platform field

* feat(drivers/123): Set login platfrom as web

* fix(drivers/123): update platform field help value

* feat(strm): strm local file (OpenListTeam#1127)

* feat(strm): strm local file

* feat: 代码优化

* feat: 访问被strm挂载路径时也更新

* fix: 路径最后带/判断缺失

* fix: 路径最后带/判断缺失

* refactor

* refactor

* fix: close seekable-stream in `generateStrm`

* refactor: lazy create local file

* 优化路径判断

---------



* feat(thunder): allow setting space (OpenListTeam#1219)

allows access to files on remote devices via Thunder's tunneling service.

* feat(net): support proxy configuration via config file (OpenListTeam#1359)

* support proxy

* debug

* debug2

* del debug

* add proxy configuration with env var fallback

* comments to en

* refactor(env): fallback env

---------



* fix(google_driver): fix google link file display size (OpenListTeam#1335)

* fix file link display size

* fix performance and field

* cn to en notes

---------



* chore(strm): Built-in file types support modification (OpenListTeam#1483)

* fix(baidu_netdisk): support resuming uploads when an error occurs (OpenListTeam#1279)

support resuming uploads when an error occurs

* feat(stream): enhance GetRangeReaderFromLink rate limiting (OpenListTeam#1528)

* feat(stream): enhance GetRangeReaderFromLink rate limiting

* refactor(stream): update GetRangeReaderFromMFile to return *model.FileRangeReader

* refactor(stream): simplify context error handling in RateLimitReader, RateLimitWriter, and RateLimitFile

* refactor(net): replace custom LimitedReadCloser with readers.NewLimitedReadCloser

* fix(model): update Link.ContentLength JSON tag for correct serialization

* docs(model): add clarification to FileRangeReader usage comment

* fix(backup-restore): add shares (OpenListTeam#1500)

* perf(stream): optimize CacheFullAndWriter for better memory management (OpenListTeam#1584)

* perf(stream): optimize CacheFullAndWriter for better memory management

* fix(stream): ensure proper seek handling in CacheFullAndWriter for improved data integrity

* fix(baidu_netdisk): improve upload experience (OpenListTeam#1562)

* fix(baidu_netdisk): improve upload experience

* fix(typo): URL should be uppercase, apply suggestion from @Copilot




* fix(typo): URL should be uppercase, apply suggestion from @Copilot




* fix(baidu_netdisk): use "UploadAPI" as a fallback when using dynamic upload api

* fix(baidu_netdisk): all uploads share the same upload url cache

* fix(drivers/baidu_netdisk): defer uploadUrlMu unlock

* update driver.go to main

---------







* feat(github_release): support Source code (zip/tar.gz) (OpenListTeam#1581)

* support Github Release Source code (zip/tar.gz)

* fix TarballUrl and ZipballUrl

* fix show source code by allversion

---------



* fix(189): disk-usage unmarshal failed when used capacity overflow (OpenListTeam#1577)

* refactor(stream): simplify code (OpenListTeam#1590)

* refactor(stream): simplify Close method and update SeekableStream to use RangeReader interface

* refactor(stream):  improve RangeRead comments for clarity

* fix(strm): non-specified type generates strm (OpenListTeam#1585)

* fix(strm): non-specified type generates strm

* fix(strm): only insert to strmTrie if SaveStrmToLocal is enabled

* fix(strm): update suffix handling in convert2strmObjs function

* fix(strm): refactor generateStrm to use range reader

---------



* feat(onedrive): support frontend direct upload (OpenListTeam#1532)

* OneDrive添加直连上传

* refactor

* fix: duplicate root path join

---------



* refactor(fs): implement immediate retry within task execution cycle (OpenListTeam#1575)

* fix(baidu_netdisk): Fix Baidu Netdisk resume uploads sticking to the same upload host (OpenListTeam#1609)

Fix Baidu Netdisk resume uploads sticking to the same upload host

* Initial plan

* Initial plan for qihoo360 driver implementation



* Implement qihoo360 driver with basic file operations



* Remove OpenList binary from repository



* Fix security issue: remove sensitive data from debug logs



* Clean up: remove binary and update gitignore



* fix(terabox): wrong return code used (OpenListTeam#1547)

fix(terabox): rename, delete, copy operations sometimes failed



* fix(archive/zip): user specific encoding for non-EFS zips (OpenListTeam#1599)

* fix(archive/zip): user specific encoding for non-EFS zips

* fix(stream): simplify head cache initialization and improve reader retrieval logic

* fix: support multipart zips (.z01)

* chore(deps): update github.com/KirCute/zip to v1.0.1

---------




* feat(doubao): Add rate limiting (OpenListTeam#1618)

* chore(issue templates): require logs (OpenListTeam#1626)

* Fix infinite loop in authentication flow

Move auth check inside method validation to prevent infinite recursion when getAuth() calls request(). Now request() only checks authentication when method is not empty, breaking the circular dependency.



* feat(s3): support frontend direct upload (OpenListTeam#1631)

* feat(s3): support frontend direct upload

* feat(s3): support custom direct upload host

* fix: apply suggestions of Copilot

* fix(link): correct link cache mode bitwise comparison (OpenListTeam#1635)

* fix(link): correct link cache mode bitwise comparison



* refactor(link): use explicit flag equality for link cache mode bitmask checks



---------



* feat(upload): add optional system file filtering for uploads (OpenListTeam#1634)

* fix(driver/123): initialize Platform field (OpenListTeam#1644)

* fix(driver/123): initialization the Platform field



* Fix formatting of Platform field in Pan123



---------



* fix(openlist_driver): ensure UA is correctly propagated (OpenListTeam#1679)

* feat(fs): support manually trigger objs update hook (OpenListTeam#1620)

* feat(fs): support manually trigger objs update hook

* fix: support driver internal copy & move case

* fix

* fix: apply suggestions of Copilot

* fix(misskey): folderId format validation and root directory handling (OpenListTeam#1647)

fix(misskey): Fix folderId format validation and root directory handling

* fix(strm): fix the name and type issue (OpenListTeam#1630)

* fix(strm): fix the name and type issue

* fix(strm): update version

* feat(strm): custom path prefixes (OpenListTeam#1697)

fix(strm): custom path prefixes




* feat(baidu_netdisk): Add shard upload timeout setting (OpenListTeam#1682)

add timeout

* fix(local): assign non-CoW copy requests to the task module (OpenListTeam#1669)

* fix(local): assign non-CoW copy requests to the task module

* fix build

* fix cross device

* feat(fs): Add skipExisting option to move and copy, merge option to copy (OpenListTeam#1556)

* fix(fs): Add skipExisting option to move and copy.

* feat(fs): Add merge option to copy.

* feat(fs): Code smell.

* feat(fs): Code smell.

* feat(archive): support non-overwrite decompress (OpenListTeam#1701)

* feat(search): Add task queue for Meilisearch to prevent race conditions (OpenListTeam#1423)

* Add task queue for Meilisearch to prevent race conditions

- Implement TaskQueueManager for async index operations
- Queue update tasks and process them in batches every 30 seconds
- Check pending task status before executing new operations
- Optimize batch indexing and deletion logic
- Fix type assertion bug in buildSearchDocumentFromResults

* fix(search): re-enqueue skipped tasks to prevent task loss

When tasks are skipped due to pending dependencies, they are now
re-enqueued if not already in queue. This prevents task loss while
avoiding overwriting newer snapshots for the same parent.

* fix(copilot-comment): Invoke Stop() & err of SliceConvert

---------




* fix(search): fix duplicated variable init (OpenListTeam#1703)

* chore(archive): fix struct literal uses unkeyed fields (OpenListTeam#1704)

* chore(pkg/aria2): simplify context cancellation handling in RPC calls (OpenListTeam#1705)

* fix(pkg/aria2): use pointer receivers for Call methods (OpenListTeam#1706)

* feat(strm): keep local download file (OpenListTeam#1707)

* fix(onedrive_shareurl): Reduce temporary file errors (OpenListTeam#1686)

* fix onedrive_shareurl

* .

* chore(strm): avoid generating empty folders (OpenListTeam#1720)

chore(strm): empty folders are not generated locally

* refactor:  improve upload handling (OpenListTeam#1455)

* fix(quark): refactor upPart to use http.NewRequest

* fix(quark): improved upload handling

* fix(quark_open): improved upload handling

* fix: add retry context to multiple upload functions

* fix: optimize hash calculation in multipart upload to avoid blocking

* fix: update error handling in lifecycle functions for better clarity

* fix: update upload progress calculation to improve accuracy

* fix: simplify error handling in lifecycle functions for improved readability

* fix: remove unnecessary mutex for part uploads to simplify code

* fix(stream): simplify file handling in NewStreamSectionReader and improve error messages

* fix(terabox): optimize chunk count calculation in Put method

* perf(chaoxing): 表单上传文件0拷贝

* fix(cnb_releases): improve file upload progress tracking

* fix(baidu_netdisk): improve upload handling

* fix(upload): optimize buffer initialization for file uploads

* fix(baidu_netdisk): add retry condition to skip ErrUploadIDExpired in upload loop

* fix(drivers/crypt): remove hard dependency on RemotePath (OpenListTeam#1713)

* fix(mediafire): enable automatic session token acquisition and fix gzip parsing (OpenListTeam#1661)

* fix(mediafire): enable automatic session token acquisition and fix gzip parsing

- Fix Init() method to allow automatic session token retrieval from cookie
- Change SessionToken from required to optional in configuration
- Add proper gzip decompression support for API responses
- Improve error handling for session token acquisition failures
- Update help text to clarify authentication requirements

Resolves initialization failure and JSON parsing errors when session token
can be automatically obtained from browser cookie.

* fix(mediafire): ensure driver files end with newline

* chore: gofmt drivers/mediafire/*.go

* refactor(op): remove automatic Path assignment (OpenListTeam#1734)

* refactor: 移除 ObjResp 中的 Id 和 Path 字段

* 移除op.List的自动设置Path
Path和Id只在驱动内使用,不应由op.List设置Path

* cnb_releases:将 Addition 结构体中的 RootPath 字段为 RootID
当List方法加载二级目录时,若使用的是Id,应对使用driver.RootID

* doubao_share: 添加潜在bug注释

* 添加 GetRootPath 方法到多个驱动

* refactor!(userAgent): merge most userAgent into base (OpenListTeam#1722)

refactor!(userAgent): merge all userAgent into base

1. change var to const
2. remove duplicated ua definetion after original Resty R
3. upgrade Chrome and OS versions

* feat(fs): Support customizing the cache time for a specific path (OpenListTeam#1533)

* feat(fs): Support customizing the cache time for a specific path

* feat(fs): Get the cache rule for driver information.

* feat(fs): Support globbing.

* feat(fs): Add log.

---------




* feat(driver): add AList v3 (OpenListTeam#1721)

* feat(driver/openlist): compatible with AList v3

* Revert "feat(driver/openlist): compatible with AList v3"

This reverts commit 90f3f80.

* feat(driver): add AList v3

* Revert "feat(patch): add migration from Alist V3 driver to OpenList (OpenListTeam#919)"



---------




* feat(utils): add support for ignoring '@eadir' system files (OpenListTeam#1779)

* fix(task): tasks keep being cancelled (OpenListTeam#1745)

* fix_cancel

* update(go.mod): update tache version

* tache v0.2.2

---------



* feat(model): add object mask support and enhance cache/task handling (OpenListTeam#1743)

* fix(ilanzou): parse vip size (OpenListTeam#1792)

* fix(halalcloud_open): halal-cloud upload issues (OpenListTeam#1800)

fix halal-cloud upload issues

* refactor(bootstrap): move booting logic to bootstrap package (OpenListTeam#1773)

* refactor(bootstrap): move booting to bootstrap package

* chore(log): reduce level of some callings of `utils.Log.Fatal`

* fix(s3): no shutdown after SIGTERM received

* fix: add handle hook

* fix(openlist): disable status check for openlist driver (OpenListTeam#1757)

* fix(openlist): disable status check to avoid network stability issues

* fix(alist_v3): disable status check to avoid network stability issues



---------



* feat(ldap): support webdav, ftp and sftp login (OpenListTeam#1746)

* feat(ldap): support webdav, ftp and sftp login

* fix: apply suggestions of Copilot

* feat(ldap) support ftp, sftp and webdav auto-register

* feat(drivers/139): user authentication and file batch operations (OpenListTeam#1534)

* feat(139): Enhance 139 driver with password login and root path handling

- Added support for password-based login in the 139 driver.
- Introduced RootPath field to store the root directory path.
- Updated Init method to handle family and group types more effectively.
- Implemented new methods for handling file operations in family and group contexts.
- Enhanced error handling and logging for better debugging.
- Added new request and response structures for batch operations and document modifications.
- Improved encryption and decryption methods for secure communication.

* Update drivers/139/util.go




* Update drivers/139/util.go




* Update drivers/139/util.go




* Update drivers/139/util.go




* Update drivers/139/util.go




---------




* fix(139): disk-usage unmarshal failed when used capacity overflow (OpenListTeam#1718)



* feat(driver): add personal / business wps drive support (OpenListTeam#1802)

* feat(driver): add wps drive support

* feat(driver): add wps drive support

* fix(wps): update personal mode string to English



* fix(wps): remove trailing slash from drive origin URL



* fix(wps): correct order of options in mode selection



* fix(wps): enable local sort and upload overwrite



* fix(wps): resolve put bugs, fix file op problems and optimize list logic

- Fix uploading bugs. Support all uploading methods based on 8825.85d3c864.js
- Fix issues in delete/copy/move while opearting big folders.
- Use cache to optimize performance of list, especially in a deep path.

---------




* feat(cloudreve_v4): add ks3 support (OpenListTeam#1828)



* fix(strm): support generate strm with sign (OpenListTeam#1832)

* feat(115_open): support custom pagesize (OpenListTeam#1822)

* docs: add VPS.Town as sponsor to all README (OpenListTeam#1842)



* fix(s3): incorrect copy key with plus sign (OpenListTeam#1820)

* docs: update README for zh-CN (OpenListTeam#1844)

* fix(weiyun): update sdk and support getDetails (OpenListTeam#1845)

* feat(strm): add save local mode (OpenListTeam#1814)

* feat(strm): add KeepSameNameOnly logic

* chore(strm): skip update strm file when keepLocalDownloadFile

* feat(strm): add save local mode

* docs(readme): add demo site (OpenListTeam#1850)

Last Sync: 2025-12-22 12:39

* refactor(bootstrap): fix OpenList-Mobile compile failed (OpenListTeam#1857)

* feat(alias): support load balance (OpenListTeam#1767)

* feat(alias): support load balance

* feat(alias): support storage match for load balance

* feat(patch): add alias addition upgrade patch

* fix bugs

* fix(op/balance): optimize compatibility

* chore: change default read conflict policy

* feat(alias): refactor Alias initialization and enhance path handling

* feat(alias): enhance object masking and add support for operation restrictions

* feat(alias): enhance object masking

* feat(fs): add permission checks

* improve parsing

* update object masks

* feat(fs): enhance virtual file handling

* feat(storage): enhance virtual file retrieval and path handling

* refactor(alias): rename path handling functions for clarity and consistency

* fix(alias): update path handling in Other method to use balanced path

* fix bug

* feat(alias): add file size validation

* feat(alias): add hash consistency check

* 移除哈希合并,

* fix(alias): wrong behavior for all_strict/deterministic_or_all

* Revert "fix(alias): wrong behavior for all_strict/deterministic_or_all"

This reverts commit f001f2d.

* fix(alias): wrong behavior for all_strict/deterministic_or_all

* feat(alias): support part-based read load balance

* fix(alias): list panic when leak conflict path

* fix(alias): remove Other load balance

* fix(alias): 修复 Link 方法中 resultLink 的返回类型和内容复制问题

* fix(alias): 更好的下载并发?

* chore(alias): all tips

* fix(alias): moving paths mismatch

---------




* fix(s3): use current time as default modified time (OpenListTeam#1860)

* fix(driver): fix file copy failure to 123pan due to incorrect etag (OpenListTeam#1874)

* ci(lang): sync only new fields (OpenListTeam#1881)

* fix(123_open): infinite recursive call (OpenListTeam#1854)

fix(123_open): token refresh logic

Fix token handling logic to avoid deadlock. Token method took reference of Alist's implementation.

* feat(qihoo360): fix bugs made by copliot

* fix(doubao_share): use new download info (OpenListTeam#1890)

fix(doubao_share): update file URL retrieval to use new download info structure



* feat(qihoo360): implement file upload functionality and enhance request handling

* fix(qihoo360): update user-agent

* feat(qihoo360): add User-Agent header for Sync.getVerifiedDownLoadUrl request

* feat(drivers/mega): support getting disk usage (OpenListTeam#1903)

* feat(drivers/mega): support getting disk usage

* fix

* feat(qihoo360): implement GetDetails and user detail retrieval functions

* feat(drivers/mega): support permanently deleting files (OpenListTeam#1913)

* feat(123pan): add offline download (OpenListTeam#1911)

* feat(123网盘): 添加123网盘离线下载功能

- 新增123网盘离线下载实现
- 添加相关API接口和常量配置
- 在路由和工具集中集成123网盘支持

* refactor(offline_download): 重构123网盘离线下载状态处理和类型定义

- 将离线下载相关类型定义从util.go移至types.go
- 更新状态获取api

* 移除了备选方案(/offline_download/task/status)

* feat(qihoo360): enhance GetDetails function and update UserDetailResp structure

* chore(strm): remove redundant param (OpenListTeam#1929)

* feat(drivers): support getting disk usage of some drivers (OpenListTeam#1905)

* feat(drivers): support getting disk usage of some drivers

* feat(drivers/degoo): implement GetDetails

* fix(fs/storage-details): fill used space rather than free space

* fix mega

* fix bsize type

* fix(cloudreve): Manually set path to avoid empty path (OpenListTeam#1933)

* fix(drivers/alist_v3): failed to unmarshal MeResp (OpenListTeam#1931)

* feat(drivers/webdav): add support for 302 redirects (OpenListTeam#1952)

* Remove the `OnlyProxy` restriction and obtain the redirected link to support 302

* Add `driver.Config` `PreferProxy` to recommend user to enable the proxy by default

---------



* fix(fs): panic when failed to get storage details (OpenListTeam#1964)

* chore(.github): update issue templates [no ci] (OpenListTeam#1976)

chore(.github): update issue templates

* fix(drivers/ftp): failed to get objs (OpenListTeam#1948)

fix(drivers/ftp): failed get objs

* feat(drivers/cloudreve_v4): implement Getter interface (OpenListTeam#1937)

feat(cloudreve_v4): implement Getter interface



* fix(drivers/github): failed to get objs (OpenListTeam#1915)

fix(drivers/github): failed get objs

* fix(drivers/strm): delete extra local directories in sync mode (OpenListTeam#1980)

* fix(ci): change unchecked regex (OpenListTeam#1993)

fix(ci/issue): change unchecked regex



* feat(drivers): add autoindex driver (OpenListTeam#1978)

* feat(drivers): add autoindex driver

* fix

* add NoUpload



* add TestParseSize



* go mod tidy



* use base.RestyClient



* fix: support evaluate size and modified time

* fix apache

* perf

* feat: support ignore size and modified time

* rename driver

---------




* fix(fs): handle non-existent destination directory in file transfer (OpenListTeam#1898)

* fix(FileTransferTask): skip copying if destination directory does not exist

* pass only object not found error

---------




* feat(drivers/cloudreve): implement GetDetails (OpenListTeam#1960)

* fix(driver/quark_uc): Fix display of non-compliant filenames (OpenListTeam#2000)

* fix(webdav/move): fix source file still exist after moving file by webdav (OpenListTeam#1979)

* perf(baidu_netdisk): reduce the number of file listing requests (OpenListTeam#2016)

* 本优化减少了百度网盘驱动下文件列表的请求次数,能加快文件浏览速度。此前只要文件夹下有至少一个文件,都会至少发出2次列表请求。



* fix(drivers/seafile): object not found when RootFolderPath != "/" (OpenListTeam#2010)

* fix(driver/seafile): object not found when RootFolderPath != "/"

* refactor(seafile): restructure Seafile driver for improved library handling and error management

* add IsDir method to LibraryInfo type

* improve initialization

* add repoID to RepoItemResp and update List method to set repoID

---------




* fix(drivers/alias): default sort & substitute link (OpenListTeam#1917)

* fix(drivers/alias): default sort & substitute link

* fix

* fix

* fix(drivers/cloudreve_v4): add IsFolder attribute to Getter response (OpenListTeam#2035)

* fix(drivers/cloudreve_v4): add IsFolder attribute to Getter response



* refactor(drivers/cloudreve_v4): implement File.fileToObject method



* fix(drivers/cloudreve_v4): implement 404 not found for getter



---------



* fix(drivers/quark): apply html escaping in quark (OpenListTeam#2046)

* fix(drivers/quark): apply html escaping in quark

* fix(api/remove): add validation for empty items in delete file list (OpenListTeam#1617)

* fix(FsRemove): add validation for empty items in delete file list

If Req.Names contains an empty string item, the whole directory will be removed. As a result we need add a simple guard to prevent such cases.



* fix(FsRemove): enhance validation to prevent unintended directory deletion

1. Use `utils.FixAndCleanPath` to correctly identify and block invalid names.
2. Change error handling from `return` to `continue`.



---------




* Merge commit from fork



* Merge commit from fork



* fix(drivers/teldrive): enhance file listing and upload functionality with pagination and random chunk naming (OpenListTeam#2034)

* fix(drivers/teldrive): enhance file listing and upload functionality with pagination and random chunk naming

* fix(drivers/teldrive): optimize file listing by removing unnecessary mutex and restructuring data handling

* Update drivers/teldrive/meta.go




---------




* fix(115_share): adjust 115 share driver for official API update (OpenListTeam#2068)

* fix(115_share): add user agent support and update driver dependency

* fix(115): fix download error

* feat: add thumbnail support for 115 driver and 115 share

- Add Thumb() method to FileObj in 115 driver to return thumbnail URL
- Add ThumbURL field to FileObj struct in 115 share utility
- Update 115driver dependency from v1.2.2 to v1.2.3 to support thumbnail functionality
- Implement Thumb() method for 115 share FileObj to return thumbnail URL

* chore(ci): add breaking change guideline to PR title check (OpenListTeam#2087)

* feat(ci): add PR title validation for breaking changes

Updated regex to allow '!' for breaking changes in PR titles.



* chore(pr): Update PR template

Add bilingual instructions for PR title formatting.



---------



* feat(drivers/123open): support sha1 reuse api (OpenListTeam#2089)

* feat(drivers/123open): support sha1 reuse api

* fix(drivers/123open): fix typos

* fix(deps): update go4.org digest to a507140 (OpenListTeam#2095)



* fix(‎drivers/quark_uc_tv) : Update error code judgment (OpenListTeam#2080)

* fix error code

* add ErrorInfo check

* chore(typo): fix typo in UpdateFileReq field name (OpenListTeam#2133)

Fix typo in UpdateFileReq field name

ref: OpenListTeam/115-sdk-go#3



* fix(driver/wps): fetch all files via multiple API invocations (OpenListTeam#2139)

fix(driver/wps): wps list all files in one request

* feat(security): add SECURITY.md (OpenListTeam#2147)

[skip ci]

Add SECURITY.md



* chore(handles/auth): improve error response (OpenListTeam#2148)

* chore(handles/auth): improve error response



* Apply suggestion from @xrgzs



---------



* feat(drivers/thunder*): implement GetDetails (OpenListTeam#2113)



* Fix critical auth bug: treat access_token_expire as absolute timestamp

The API returns access_token_expire as an absolute Unix timestamp, not a duration. The old code was adding it to current time, causing tokens to "expire" in year 2082. This meant tokens appeared valid even after actual expiration (1 hour), causing all API calls to fail after the program ran for some time.

Also added retry limit protection to prevent infinite recursion in error handling.



---------

Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>
Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>
Signed-off-by: jenfonro <799170122@qq.com>
Signed-off-by: yuyamionini <46483865+yuyamionini@users.noreply.github.com>
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
Signed-off-by: MoYan <1561515308@qq.com>
Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>
Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>
Signed-off-by: KirCute <951206789@qq.com>
Signed-off-by: hcrgm <hcrgm@qq.com>
Signed-off-by: huyuantao <huyuantao@ultrarisc.com>
Signed-off-by: Chaloemchai <chaloemchai.yy@gmail.com>
Signed-off-by: LXY <767763591@qq.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NewbieOrange <NewbieOrange@users.noreply.github.com>
Co-authored-by: KirCute <951206789@qq.com>
Co-authored-by: ShenLin <773933146@qq.com>
Co-authored-by: zzzhr1990 <zzzhr@hotmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Tursom K. Ulefits <33368546+tursom@users.noreply.github.com>
Co-authored-by: jenfonro <799170122@qq.com>
Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: ILoveScratch <ilovescratch@foxmail.com>
Co-authored-by: KirCute <kircute@foxmail.com>
Co-authored-by: jerrita <je5r1ta@icloud.com>
Co-authored-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>
Co-authored-by: walloo <51254954+varg1714@users.noreply.github.com>
Co-authored-by: MoYan <1561515308@qq.com>
Co-authored-by: Seven <53081179+Seven66677731@users.noreply.github.com>
Co-authored-by: ex-hentai <96158157+ex-hentai@users.noreply.github.com>
Co-authored-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
Co-authored-by: hcrgm <hcrgm@qq.com>
Co-authored-by: nibazshab <44338441+nibazshab@users.noreply.github.com>
Co-authored-by: ASLant <77436463+Y-ASLant@users.noreply.github.com>
Co-authored-by: yuyamionini <46483865+yuyamionini@users.noreply.github.com>
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
Co-authored-by: VXTLS <187420201+vxtls@users.noreply.github.com>
Co-authored-by: ImoutoHeaven <github_main@imoutoheaven.org>
Co-authored-by: ImoutoHeaven <noreply@imoutoheaven.org>
Co-authored-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>
Co-authored-by: wongz <wongz@users.noreply.github.com>
Co-authored-by: Mako (XSpy) <127767602+x-spy@users.noreply.github.com>
Co-authored-by: hshpy <hshpy.pengyu@gmail.com>
Co-authored-by: XZB-1248 <28593573+XZB-1248@users.noreply.github.com>
Co-authored-by: XZB-1248 <i@1248.ink>
Co-authored-by: TwoOnefour <lys214412@gmail.com>
Co-authored-by: foxxorcat <95907542+foxxorcat@users.noreply.github.com>
Co-authored-by: Seven <53081179+sevxn007@users.noreply.github.com>
Co-authored-by: 绎泽 <yize@tencent.to>
Co-authored-by: 我怎么就不是一只猫呢? <26274059+dezhishen@users.noreply.github.com>
Co-authored-by: Tron <ironboxplus@gmail.com>
Co-authored-by: Edward <73746306+WangEdward@users.noreply.github.com>
Co-authored-by: mcxiedidi <113833419+mcxiedidi@users.noreply.github.com>
Co-authored-by: Ljcbaby <46277145+ljcbaby@users.noreply.github.com>
Co-authored-by: cyk <dr_arc@163.com>
Co-authored-by: Cp0204 <Cp0204@qq.com>
Co-authored-by: mkitsdts <136291922+mkitsdts@users.noreply.github.com>
Co-authored-by: Rui Huang <1251433731@qq.com>
Co-authored-by: Khoray <hhkorm@gmail.com>
Co-authored-by: Hu Yuantao <130338111+datao2001@users.noreply.github.com>
Co-authored-by: Chaloemchai <chaloemchai.yy@gmail.com>
Co-authored-by: Shelton Zhu <498220739@qq.com>
Co-authored-by: gdm257 <gdm@disroot.org>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: LXY <767763591@qq.com>

---------

Signed-off-by: Wodlie <86234536+Wodlie@users.noreply.github.com>
Signed-off-by: zzzhr1990 <zzzhr@hotmail.com>
Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>
Signed-off-by: jenfonro <799170122@qq.com>
Signed-off-by: yuyamionini <46483865+yuyamionini@users.noreply.github.com>
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
Signed-off-by: MoYan <1561515308@qq.com>
Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>
Signed-off-by: KirCute <951206789@qq.com>
Signed-off-by: hcrgm <hcrgm@qq.com>
Signed-off-by: huyuantao <huyuantao@ultrarisc.com>
Signed-off-by: Chaloemchai <chaloemchai.yy@gmail.com>
Signed-off-by: LXY <767763591@qq.com>
Co-authored-by: Suyunmeng <sumengjing@outlook.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NewbieOrange <NewbieOrange@users.noreply.github.com>
Co-authored-by: KirCute <951206789@qq.com>
Co-authored-by: ShenLin <773933146@qq.com>
Co-authored-by: zzzhr1990 <zzzhr@hotmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Tursom K. Ulefits <33368546+tursom@users.noreply.github.com>
Co-authored-by: jenfonro <799170122@qq.com>
Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: ILoveScratch <ilovescratch@foxmail.com>
Co-authored-by: KirCute <kircute@foxmail.com>
Co-authored-by: jerrita <je5r1ta@icloud.com>
Co-authored-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>
Co-authored-by: walloo <51254954+varg1714@users.noreply.github.com>
Co-authored-by: MoYan <1561515308@qq.com>
Co-authored-by: Seven <53081179+Seven66677731@users.noreply.github.com>
Co-authored-by: ex-hentai <96158157+ex-hentai@users.noreply.github.com>
Co-authored-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
Co-authored-by: hcrgm <hcrgm@qq.com>
Co-authored-by: nibazshab <44338441+nibazshab@users.noreply.github.com>
Co-authored-by: ASLant <77436463+Y-ASLant@users.noreply.github.com>
Co-authored-by: yuyamionini <46483865+yuyamionini@users.noreply.github.com>
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
Co-authored-by: VXTLS <187420201+vxtls@users.noreply.github.com>
Co-authored-by: ImoutoHeaven <github_main@imoutoheaven.org>
Co-authored-by: ImoutoHeaven <noreply@imoutoheaven.org>
Co-authored-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com>
Co-authored-by: wongz <wongz@users.noreply.github.com>
Co-authored-by: Mako (XSpy) <127767602+x-spy@users.noreply.github.com>
Co-authored-by: hshpy <hshpy.pengyu@gmail.com>
Co-authored-by: XZB-1248 <28593573+XZB-1248@users.noreply.github.com>
Co-authored-by: XZB-1248 <i@1248.ink>
Co-authored-by: TwoOnefour <lys214412@gmail.com>
Co-authored-by: foxxorcat <95907542+foxxorcat@users.noreply.github.com>
Co-authored-by: Seven <53081179+sevxn007@users.noreply.github.com>
Co-authored-by: 绎泽 <yize@tencent.to>
Co-authored-by: 我怎么就不是一只猫呢? <26274059+dezhishen@users.noreply.github.com>
Co-authored-by: Tron <ironboxplus@gmail.com>
Co-authored-by: Edward <73746306+WangEdward@users.noreply.github.com>
Co-authored-by: mcxiedidi <113833419+mcxiedidi@users.noreply.github.com>
Co-authored-by: Ljcbaby <46277145+ljcbaby@users.noreply.github.com>
Co-authored-by: cyk <dr_arc@163.com>
Co-authored-by: Cp0204 <Cp0204@qq.com>
Co-authored-by: mkitsdts <136291922+mkitsdts@users.noreply.github.com>
Co-authored-by: Rui Huang <1251433731@qq.com>
Co-authored-by: Khoray <hhkorm@gmail.com>
Co-authored-by: Hu Yuantao <130338111+datao2001@users.noreply.github.com>
Co-authored-by: Chaloemchai <chaloemchai.yy@gmail.com>
Co-authored-by: Shelton Zhu <498220739@qq.com>
Co-authored-by: gdm257 <gdm@disroot.org>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: LXY <767763591@qq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants