v1.20.14

Wilfred/difftasticv1.20.14Apr 24, 2026by 9001

AI Summary

An update focused on localization, UI improvements, audio player enhancements, and configuration flexibility via environment variables.

Key Highlights

  • Added `--glang` option for automatic UI translation based on browser language
  • Added auto-switching between grid and list views depending on folder contents
  • Added support for Nintendo 3DS/Wii audio formats (bcstm, bfstm, brstm)
  • Introduced environment variable expansion in config files

Breaking Changes

  • Old environment variable syntax `$VAR` is no longer supported by default; configurations using it will crash unless `--env-expand 1` is used.

New Features

  • Option `--glang` to autoselect UI-translation
  • Option to automatically switch between list-view and grid-view
  • Audioplayer can now play bcstm / bfstm / brstm files
  • Add 1000-based filesize-units
  • Option `--rlo` to change the logrotate-counter
  • Option `--certkey` to specify certificate and key as separate files
  • Config-files can now use OS environment-variables anywhere in the config section

Full Release Notes

<img src="https://github.com/9001/copyparty/raw/hovudstraum/docs/logo.svg" width="250" align="right"/>

* read-only demo server at https://a.ocv.me/pub/demo/
* [docker image](https://github.com/9001/copyparty/tree/hovudstraum/scripts/docker) β•± [similar software](https://github.com/9001/copyparty/blob/hovudstraum/docs/versus.md) β•± [client testbed](https://cd.ocv.me/b/)

there is a [discord server](https://discord.gg/25J8CdTT6G) with an `@everyone` in case of future important updates, such as [vulnerabilities](https://github.com/9001/copyparty/security) (most recently 2026-03-08)

## recent important news

* [v1.20.9 (2026-02-25)](https://github.com/9001/copyparty/releases/tag/v1.20.9) fixed [CVE-2026-27948](https://github.com/9001/copyparty/security/advisories/GHSA-62cr-6wp5-q43h) (XSS)

## πŸ§ͺ new features

* #1410 #376 #1224 new option `--glang` to autoselect UI-translation based on webbrowser's language (thx @stackxp!) ec3e0e7e
* #1407 #1384 option to automatically switch between list-view and grid-view depending on folder contents (thx @icxes!) 822fa718 660ed7a9 961a2737
* #1447 audioplayer can now play bcstm / bfstm / brstm files (nintendo 3ds/wii bgm) 3a9ff67a 
* #1389 add 1000-based filesize-units in addition to 1024-based 43773f2c
* #1395 [reloc-by-wark](https://github.com/9001/copyparty/tree/hovudstraum/bin/hooks#more-upload-stuff), a pair of hooks to rename incoming uploads to a hash of the file contents 1e7de5d1
* option [--rlo](https://copyparty.eu/cli/#rlo-help-page) to change the logrotate-counter for [-lo](https://copyparty.eu/cli/#g-lo) 8b986888
* add `--certkey` to specify certificate and key as separate files 8c7cdf85
  * but the built-in HTTPS server should [still not be trusted](https://github.com/9001/copyparty/#https)
* config-files can now use OS environment-variables anywhere in the `[global]` config section cbd82b65 e52bbed8
  * by default, only the syntax `${VAR}` is supported, not `$VAR` or `%VAR%`
  * previously, a small handful of global-options already supported this (`c lo hist dbpath ssl_log`), but they also supported the `$VAR` syntax, which is no longer the case
  * if the old `$VAR` syntax is detected, copyparty will crash on startup, suggesting the following remedies (choose one!) in the log:
    1. update the config-value to the new `${VAR}` syntax (recommended)
    2. allow the old syntax with global-option `--env-expand 1` (risky)
    3. ignore the old syntax and only expand the new syntax with global-option `--env-expand 2`
    4. disable all environment-variable expansions with `PRTY_NO_ENVEXPAND=1`

## 🩹 bugfixes

* #1437 webdav clients can now PROPFIND a file with `depth: infinite` which at least [webdav4](https://github.com/skshetry/webdav4) does e00f2b46
* #1392 navigating into a subfolder using a `dks` [dirkey](https://github.com/9001/copyparty/#dirkeys) (default-disabled) could fail 228c3dfa
* #1446 #1330 #1362 fix some small edgecases with the rightclick-menu (thx @icxes!) 874e0e7a
* #1403 #1396 audioplayer: fix ui-crash when folder contains an m3u-file and sort-order is changed during playback (thx @icxes!) 198f631a
* #1428 #1427 when `--magic` was enabled, nameless uploads of textfiles would get the file-extension `.ssa` instead of `.txt` (thx @Scotsguy!) ed516ddc
* #1449 on some filesystems, the tail/follow function would spam the log with `reopened at byte XXX` 81730189
* #1401 on windows, a spec-violating basic-upload could delay that upload by a few seconds 6fb1287e
* on macOS, u2c would clear the terminal on exit, even with `-ns` 238887c7
* audio-files in a videofile trenchcoat did not thumbnail correctly 1066dc39

## πŸ”§ other changes

* #1387 added gentoo packaging (thx @mid-kid!) fb5384f4
* #1425 improved FreeBSD / OpenBSD support (thx @chilledfrogs!) f5613187 745d82fa
* #1352 new handler: [fail2ban](https://github.com/9001/copyparty/blob/hovudstraum/bin/handlers/404-to-fail2ban.py) (thx @Lomaiin!) 26e663d1
* improve errormessage when the server's OS-HDD blips out of existence d1517d0c
* #1439 improve IPv6 autoban IP-range (thx @SnowSquire!) f6dc1e29
* ensure opus transcodes will at most have 2 audio channels (stereo) b31f2902
* #1417 smb-server: probably add IPv6 support a5d859d2
* `--list-nics` and `--list-ips` to show autodetected network-adapters and IPs 8d4363d1
* docs:
  * nixos module-override example (thx @Scotsguy!) 0b16e875
  * make it even more obvious that `--allow-csrf` is a bad idea 9a724b01
  * mention `--urlform get` to disable message-to-serverlog ac05b4f1
  * readme: improve [shadowing](https://github.com/9001/copyparty#shadowing) phrasing 003c68d0
  * [devnotes](https://github.com/9001/copyparty/blob/hovudstraum/docs/devnotes.md#dependencies): explain the vendored dependencies 971f8ef9

## 🌠 fun facts

* this release includes [code](https://github.com/9001/copyparty/commit/cbd82b65) written at [abs(unit)](https://a.ocv.me/pub/g/nerd-stuff/abs-unit.jpg)
  * btw that pdp had an IPv6 lease and browsed the internet :^)
    * hasn't connected to copyparty though (yet...)
* this release was powered by [一体い぀から (TaKo Hardcore bootleg)](https://soundcloud.com/takomusiccc/tako-hardcore-bootleg) followed by [Fighting My Way (YUPPUN Hardcore Remix)](https://soundcloud.com/yuppun/fightingmyway) (shd is a good dj)

----

# πŸ’Ύ what to download?
| download link | is it good? | description |
| -- | -- | -- |
| **[copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py)** | βœ… the best πŸ‘ | runs anywhere! only needs python |
| [copyparty-en.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-en.py) | βœ… also good | same but english-only, no i18n |
| [a docker image](https://github.com/9001/copyparty/blob/hovudstraum/scripts/docker/README.md) | it's ok | good if you prefer docker πŸ‹ |
| [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) |  ⚠️ [acceptable](https://github.com/9001/copyparty#copypartyexe) | for [win8](https://user-images.githubusercontent.com/241032/221445946-1e328e56-8c5b-44a9-8b9f-dee84d942535.png) or later; built-in thumbnailer |
| [u2c.exe](https://github.com/9001/copyparty/releases/download/v1.20.2/u2c.exe) | ⚠️ acceptable | [CLI uploader](https://github.com/9001/copyparty/blob/hovudstraum/bin/u2c.py) as a win7+ exe ([video](https://a.ocv.me/pub/demo/pics-vids/u2cli.webm)) |
| [copyparty.pyz](https://github.com/9001/copyparty/releases/latest/download/copyparty.pyz) | ⚠️ acceptable | similar to the regular sfx, [mostly worse](https://github.com/9001/copyparty#zipapp) |
| [copyparty-en.pyz](https://github.com/9001/copyparty/releases/latest/download/copyparty-en.pyz) | ⚠️ acceptable | english-only, no smb-server |
| [copyparty32.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty32.exe) | ⛔️ [dangerous](https://github.com/9001/copyparty#copypartyexe) | for [win7](https://user-images.githubusercontent.com/241032/221445944-ae85d1f4-d351-4837-b130-82cab57d6cca.png) -- never expose to the internet! |
| [cpp-winpe64.exe](https://github.com/9001/copyparty/releases/download/v1.16.5/copyparty-winpe64.exe) | ⛔️ dangerous | runs on [64bit WinPE](https://user-images.githubusercontent.com/241032/205454984-e6b550df-3c49-486d-9267-1614078dd0dd.png), otherwise useless |
| [bootable usb](https://a.ocv.me/pub/stuff/edcd001/enterprise-edition/) | ┐(οΎŸβˆ€οΎŸ)β”Œ | a surprisingly useful joke (x86_64) |

* except for [u2c.exe](https://github.com/9001/copyparty/releases/download/v1.20.2/u2c.exe), all of the options above are mostly equivalent
* the zip and tar.gz files below are just source code
* python packages are available at [PyPI](https://pypi.org/project/copyparty/#files)