Releases: 9001/copyparty
babel
named after that other thing, not the song
- read-only demo server at https://a.ocv.me/pub/demo/
new features
- new protocols!
- native IPv6 support, no longer requiring a reverse-proxy for that
- webdav server -- read/write-access to copyparty straight from windows explorer, macos finder, kde/gnome
- smb/cifs server -- extremely buggy and unsafe, for when there is no other choice
- zeroconf -- copyparty announces itself on the LAN, showing up in various file managers
- mdns -- macos/kde/gnome + makes copyparty available at http://hostname.local/
- ssdp -- windows
- commands to mount copyparty as a local disk are in the web-UI at control-panel -->
connect
- detect buggy / malicious clients spamming the server with idle connections
- first tries to be nice with
Connection: close
(enough to fix windows-webdav) - eventually bans the IP for
--loris
minutes (default: 1 hour)
- first tries to be nice with
- new arg
--xlink
for cross-volume detection of duplicate files on upload - new arg
--no-snap
to disable upload tracking on restart- will not create
.hist
folders unless required for thumbnails or markdown backups
- will not create
- config includes -- split your config across multiple config files
- ux improvements
- hotkey
?
shows a summary of all the hotkeys - hotkey
Y
to download selected files - position indicator when hovering over the audio scrubber
- textlabel on the volume slider
- placeholder values in textboxes
- options to hide scrollbars, compact media player, follow playing song
- phone-specific
- buttons for prev/next folder
- much better ui for hiding folder columns
- hotkey
bugfixes
- now possible to upload files larger than 697 GiB
- technically a breaking change if you wrote your own up2k client
- please let me know if you did because that's awesome
- technically a breaking change if you wrote your own up2k client
- several macos issues due to hardcoded syscall numbers
- sfx: fix python 3.12 support (forbids nullbytes in source code)
- use ctypes to discover network config -- fixes grapheneos, non-english windows
- detect firefox showing stale markdown documents in the editor
- detect+ban password bruteforcing on ftp too
- http 206 failing on empty files
- incorrect header timestamps on non-english locales
- remind ftp clients that you cannot cd into an image file -- fixes kde dolphin
- ux fixes
- uploader survives running into inaccessible folders
- middleclick documents in the textviewer sidebar to open in a new tab
- playing really long audio files (1 week or more) would spinlock the browser
other changes
- autodetect max number of clients based on OS limits
-nc
is probably no longer necessary when running behind a reverse-proxy
- allow/try playing mkv files in chrome
- markdown documents returned as plaintext unless
?v
- only compress
-lo
logfiles if filename ends with.xz
- changed sfx compression from bz2 to gz
- startup is slightly faster
- better compatibility with embedded linux
- copyparty64.exe -- 64bit edition for running inside WinPE
- which was an actual feature request, believe it or not!
- more attempts at avoiding the firefox fd leak
- if you are uploading many small files and the browser keeps crashing, use chrome instead
- or the commandline client, which is now available for download straight from copyparty
- control-panel -->
connect
-->up2k.py
- control-panel -->
- or the commandline client, which is now available for download straight from copyparty
- if you are uploading many small files and the browser keeps crashing, use chrome instead
wav2opus
- read-only demo server at https://a.ocv.me/pub/demo/
- latest gzip edition of the sfx: This version
bugfixes
- the option to transcode flac to opus while playing audio in the browser was supposed to transcode wav-files as well, instead of being extremely hazardous to mobile data plans (sorry)
--license
didn't work if copyparty was installed frompip
release-specific notes
this release includes an additional sfx build, copyparty-sfx-gz.py, which is the same as the normal copyparty-sfx.py except it's more likely to work on embedded linux devices since it uses gzip compression instead of bzip2
for future releases, you can use a script to automatically grab the latest sfx and convert it to gzip by downloading and running copyparty-repack.sh on either linux, macos, or windows-msys2 -- see sfx-repack for more info
qr-code
- read-only demo server at https://a.ocv.me/pub/demo/
- latest gzip edition of the sfx: v1.0.14
new features
- display a server qr-code (screenshot) on startup
- primarily for running copyparty on a phone and accessing it from another
- optionally specify a path or password with
--qrl lootbox/?pw=hunter2
- uses the server's exteral ip (default route) unless
--qri
specifies a domain / ip-prefix - classic cp437
▄
▀
for space efficiency; some misbehaving terminals / fonts need--qrz 2
- new permission
G
returns the filekey of uploaded files for users without read-access- when combined with permission
w
and volflagfk
, uploaded files will not be accessible unless the filekey is provided in the url, andG
provides the filekey to the uploader unlikeg
- when combined with permission
- filekeys are added to the unpost listing
bugfixes
- renaming / moving folders is now at least 120x faster
- and that's on nvme drives, so probably like 2000x on HDDs
- uploads to volumes with lifetimes could get instapurged depending on browser and browser settings
- ux fixes
- FINALLY fixed messageboxes appearing offscreen on phones (and some other layout issues)
- stop asking about folder-uploads on phones because they dont support it
- on android-firefox, default to truncating huge folders with the load-more button due to ff onscroll being buggy
- audioplayer looking funky if ffmpeg unavailable
- waveform-seekbar cache expiration (the thumbcleaner complaining about png files)
- ie11 panic when opening a folder which contains a file named
up2k
- turns out
<a name=foo>
becomeswindow.foo
unless that's already declared somewhere in js -- luckily other browsers "only" do that with IDs
- turns out
signal in the noise
- read-only demo server at https://a.ocv.me/pub/demo/
- latest gzip edition of the sfx: v1.0.14
new features
--bak-flips
saves a copy of corrupted / bitflipped up2k uploads- comparing against a good copy can help pinpoint the culprit
- also see tracking bitflips
bugfixes
- some edgecases where deleted files didn't get dropped from the db
- can reduce performance over time, hitting the filesystem more than necessary
fuhgeddaboudit
- read-only demo server at https://a.ocv.me/pub/demo/
- latest gzip edition of the sfx: v1.0.14
new features
- forget incoming uploads by deleting the name-reservation
- (the zerobyte file with the actual filename, not the .PARTIAL)
- can take 5min to kick in
bugfixes
- zfs on ubuntu 20.04 would reject files with big unicode names such as
148. Профессор Лебединский, Виктор Бондарюк, Дмитрий Нагиев - Я её хой (Я танцую пьяный на столе) (feat. Виктор Бондарюк & Дмитрий Нагиев).mp3
- usually not a problem since copyparty truncates names to fit filesystem limits, except zfs uses a nonstandard errorcode
- in the "print-message-to-serverlog" feature, a unicode message larger than one tcp-frame could decode incorrectly
fix api compat
- read-only demo server at https://a.ocv.me/pub/demo/
- latest gzip edition of the sfx: v1.0.14
bugfixes
- v1.4.0 accidentally required all clients to use the new up2k.js to continue uploading; support the old js too
mostly reliable
- read-only demo server at https://a.ocv.me/pub/demo/
- latest gzip edition of the sfx: v1.0.14
new features
- huge folders are lazily rendered for a massive speedup, #11
- also reduces the number of
?tree
requests; helps a tiny bit on server load
- also reduces the number of
- selfdestruct timer on uploaded files -- see link for howto and side-effects
- ban clients trying to bruteforce passwords
- arg
--ban-pw
, default9,60,1440
, bans for 1440min after 9 wrong passwords in 60min - clients repeatedly trying the same password (due to a bug or whatever) are not counted
- does a
/64
range-ban for IPv6 offenders - arg
--ban-404
, disabled by default, bans for excessive 404s / directory-scanning- but that breaks up2k turbo-mode and probably some other eccentric usecases
- arg
- waveform seekbar (screenshot)
- the up2k upload button can do folders recursively now
- but only a single folder can be selected at a time, making drag-drop the obvious choice still
- gridview is now less jank, #12
- togglebuttons for desktop-notifications and audio-jingle when upload completes
- stop exposing uploader IPs when avoiding filename collisions
- IPs are now HMAC'ed with urandom stored at
~/.config/copyparty/iphash
- IPs are now HMAC'ed with urandom stored at
- stop crashing chrome; generate PNGs rather than SVGs for filetype icons
- terminate connections with SHUT_WR and flush with siocoutq
- makes buggy enterprise proxies behave less buggy
- do a read-spin on windows for almost the same effect
- improved upload scheduling
- unfortunately removes the
0.0%, NaN:aN, N.aN MB/s
easteregg
- unfortunately removes the
- arg
--magic
enables filetype detection on nameless uploads based on libmagic - mtp modifiers to let tagparsers keep their stdout/stderr instead of capturing
c0
disables all capturing,c1
captures stdout only,c2
only stderr, andc3
(default) captures both
- arg
--write-uplog
enables the old default of writing upload reports on POSTs- kinda pointless and was causing issues in prisonparty
- upload modifiers for terse replies and to randomize filenames
- other optimizations
- 30% faster tag collection on directory listings
- 8x faster rendering of huge tagsets
- new mtps guestbook and guestbook-read, for example for comment-fields on uploads
- arg
--stackmon
now takes dateformat filenames to produce multiple files - arg
--mtag-vv
to debug tagparser configs - arg
--version
shows copyparty version and exits - arg
--license
shows a list of embedded dependencies + their licenses - arg
--no-forget
and volflag:c,noforget
keeps deleted files in the up2k db/index- useful if you're shuffling uploads to s3/gdrive/etc and still want deduplication
bugfixes
- upload deduplication using symlinks on windows
- increase timeouts to run better on servers with extremely overloaded HDDs
- arg
--mtag-to
(default 60 sec, was 10) can be reduced for faster tag scanning
- arg
- incorrect filekeys for files symlinked into another volume
- playback could start mid-song if skipping back and forth between songs
- use affinity mask to determine how many CPU cores are available
- restore .bin-suffix for nameless PUT/POSTs (disappeared in v1.0.11)
- fix glitch in uploader-UI when upload queue is bigger than 1 TiB
- avoid a firefox race-condition accessing the navigation history
- sfx tmpdir keepalive when flipflopping between unix users
- reject anon ftp if anon has no read/write
- improved autocorrect for poor ffmpeg builds
- patch popen on older pythons so collecting tags on windows is always possible
- misc ui/ux fixes
- filesearch layout in read-only folders
- more comfy fadein/fadeout on play/pause
- total-ETA going crazy when an overloaded server drops requests
- stop trying to play into the next folder while in search results
- improve warnings/errors in the uploader ui
- some errors which should have been warnings are now warnings
- autohide warnings/errors when they are remedied
- delay starting the audiocontext until necessary
- reduces cpu-load by 0.2% and fixes chrome claiming the tab is playing audio
copyparty.exe
now introducing copyparty.exe! only suitable for the rainiest of days ™
first thing you'll see when you run it is a warning to «please use the python-sfx instead»,
copyparty.exe
was compiled using 32bit python3.7 to support windows7, meaning it won't receive any security patchescopyparty-sfx.py
uses your system libraries instead so it'll stay safe for much longer while also having better performance
so the exe might be super useful in a pinch on a secluded LAN but otherwise Absolutely Not Recommended
you can download ffmpeg and ffprobe into the same folder if you want multimedia-info, audio-transcoding or thumbnails/spectrograms/waveforms -- those binaries were built with just enough features to cover what copyparty wants, but much like copyparty.exe itself (so due to security reasons) it is strongly recommended to instead grab a recent official build every once in a while
and finally some good news
- the chrome memory leak will be fixed in v107
- and firefox may fix the crash in v106 or so
- and the release title / this season's codename stems from a cpp instance recently being slammed with terabytes of uploads running on a struggling server mostly without breaking a sweat 👍
gc kiting
- read-only demo server at https://a.ocv.me/pub/demo/
- latest gzip edition of the sfx: v1.0.14
bugfixes
- found a janky workaround for the remaining chrome wasm gc bug
- worker-global typedarray holding on to the first and last byte of the filereader output while wasm chews on it
- overhead is small enough, slows down firefox by 2~3%
- seems to work on many chrome versions but no guarantees
- still OOM's some 93 and 97 betas, probably way more
other changes
- disable
mt
by default on https-desktop-chrome- avoids the gc bug entirely (except for plaintext-http and phones)
- chrome doesn't parallelize
crypto.subtle.digest
anyways
pls let me stop finding chrome bugs
two browser-bugs in two hours, man i just wanna play horizon
- read-only demo server at https://a.ocv.me/pub/demo/
- latest gzip edition of the sfx: v1.0.14
bugfixes
- chrome randomly running out of memory while hashing files and
mt
is enabled- the gc suddenly gives up collecting the filereaders
- fixed by reusing a pool of readers instead
- chrome failing to gc Any Buffers At All while hashing files and
mt
is enabled on plaintext http- this one's funkier, they've repeatedly fixed and broke it like 6 times between chrome 84 and 106
- looks like it just forgets about everything that's passed into wasm
- no way around it, just show a popup explaining how to disable multithreaded hashing
fix windows db
after two exciting releases, time for something boring
- read-only demo server at https://a.ocv.me/pub/demo/
- latest gzip edition of the sfx: v1.0.14
new features
- upload-info (ip and timestamp) is provided to
mtp
tagparser plugins as json - tagscanner will index
fmt
(file-format / container type) by default- and
description
can be enabled in-mte
- and
bugfixes
- v1.3.12 broke file-indexing on windows if an entire HDD was mounted as a volume