From 8222ccc40bf06b7c0ba860b68179e35ac45d2cab Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 22 Jul 2024 23:23:53 +0000 Subject: [PATCH] v1.13.5 --- copyparty/__main__.py | 12 ++++++--- copyparty/__version__.py | 4 +-- copyparty/th_srv.py | 4 ++- docs/changelog.md | 51 ++++++++++++++++++++++++++++++++++++++ scripts/docker/devnotes.md | 16 ++++++++++++ 5 files changed, 81 insertions(+), 6 deletions(-) diff --git a/copyparty/__main__.py b/copyparty/__main__.py index a655c0e2..fff4ccdc 100644 --- a/copyparty/__main__.py +++ b/copyparty/__main__.py @@ -491,11 +491,17 @@ def disable_quickedit() -> None: def sfx_tpoke(top: str): - files = [os.path.join(dp, p) for dp, dd, df in os.walk(top) for p in dd + df] + files = [top] + [ + os.path.join(dp, p) for dp, dd, df in os.walk(top) for p in dd + df + ] while True: t = int(time.time()) - for f in [top] + files: - os.utime(f, (t, t)) + for f in list(files): + try: + os.utime(f, (t, t)) + except Exception as ex: + lprint(" [%s] %r" % (f, ex)) + files.remove(f) time.sleep(78123) diff --git a/copyparty/__version__.py b/copyparty/__version__.py index 37324fa3..70b6600f 100644 --- a/copyparty/__version__.py +++ b/copyparty/__version__.py @@ -1,8 +1,8 @@ # coding: utf-8 -VERSION = (1, 13, 4) +VERSION = (1, 13, 5) CODENAME = "race the beam" -BUILD_DT = (2024, 7, 16) +BUILD_DT = (2024, 7, 22) S_VERSION = ".".join(map(str, VERSION)) S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT) diff --git a/copyparty/th_srv.py b/copyparty/th_srv.py index 0f9dcf1f..2bb12239 100644 --- a/copyparty/th_srv.py +++ b/copyparty/th_srv.py @@ -309,7 +309,9 @@ class ThumbSrv(object): want_png = tpath.endswith(".png") want_au = want_mp3 or want_opus for lib in self.args.th_dec: - can_au = lib == "ff" and (ext in self.fmt_ffa or ext in self.fmt_ffv) + can_au = lib == "ff" and ( + ext in self.fmt_ffa or ext in self.fmt_ffv + ) if lib == "pil" and ext in self.fmt_pil: funs.append(self.conv_pil) diff --git a/docs/changelog.md b/docs/changelog.md index a41c7c09..285d3842 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,3 +1,54 @@ +▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ +# 2024-0716-0457 `v1.13.4` descript.ion + +## new features + +* "medialinks"; instead of the usual hotlink, the basic-uploader (as used by sharex and such) can return a link that opens the file in the media viewer c9281f89 + * enable for all uploads with volflag `medialinks`, or just for one upload by adding `?media` to the post url +* thumbnails are now fully compatible with dirkeys/filekeys 52e06226 +* `--th-covers` will respect filename order, selecting the first matching filename as the folder thumbnail 1cdb1702 +* new hook: [bittorrent downloader](https://github.com/9001/copyparty/tree/hovudstraum/bin/hooks#on-message) bd3b3863 803e1565 +* hooks: d749683d + * can be restricted to only run when user has specific permissions + * user permissions are also included in the json message to the hook + * new syntax to prepend args to the hook's command + * (all this will be better documented after some additional upcoming hook-related features, see `--help-hooks` for now) +* support `descript.ion` usenet metadata; will parse and render into directory listings when possible 927c3bce + * directory listings are now 2% slower, eh who's keeping count anyways +* tftp-server: 45259251 + * improved support for buggy clients + * improved ipv6 support, especially on macos + * improved robustness on unreliable networks +* #85 new option `--gsel` to default-enable the client setting to select files by ctrl-clicking them in the grid 9a87ee2f +* music player: set audio volume by scrollwheel 36d6d29a + +## bugfixes + +* race-the-beam (downloading an unfinished upload) could get interrupted near the end, requiring a manual resume in the browser's download manager to finish f37187a0 +* ftp-server: when accessing the root folder of servers without a root folder, it could mention inaccessible folders 84e8e1dd +* ftp-server: uploads will automatically replace existing files if user has delete perms 0a9f4c60 + * windows 2000 expects this behavior, otherwise it'll freak out and delete stuff and then not actually upload it, nice + * new option `--ftp-no-ow` restores old default behavior of rejecting upload if target filename exists +* music player: + * stop trying to recover from a corrupted file if the user already fixed it manually 55a011b9 + * support downloading the currently playing song regardless of current folder c06aa683 +* music player preloader: db6059e1 + * stop searching after 5 folders of nothing + * don't crash playback by walking into error-pages +* `--og` (rich discord embeds) was incompatible with viewing markdown docs d75a2c77 +* `--cgen` (configfile generator) much less jank d5de3f2f + +## other changes + +* mention that HTTP/2 is still usually slower than HTTP/1.1 dfe7f1d9 +* give up much sooner if a client is supposed to send a request body but isn't c549f367 +* support running copyparty as a server on windows 2000 and winXP 8c73e0cb 2fd12a83 +* updated deps 6e58514b + * copyparty.exe: python 3.12, pillow 10.4, pyinstaller 6.9 + * dompurify 3.1.6 + + + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ # 2024-0601-2324 `v1.13.3` 700+ diff --git a/scripts/docker/devnotes.md b/scripts/docker/devnotes.md index fc3abe03..d61205cd 100644 --- a/scripts/docker/devnotes.md +++ b/scripts/docker/devnotes.md @@ -17,3 +17,19 @@ but I don't really know what i'm doing here 💩 `podman login docker.io` `podman login ghcr.io -u 9001` [about gchq](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry) (takes a classic token as password) + + +## building on alpine + +```bash +apk add podman{,-docker} +rc-update add cgroups +service cgroups start +vim /etc/containers/storage.conf # driver = "btrfs" +modprobe tun +echo ed:100000:65536 >/etc/subuid +echo ed:100000:65536 >/etc/subgid +apk add qemu-openrc qemu-tools qemu-{arm,armeb,aarch64,s390x,ppc64le} +rc-update add qemu-binfmt +service qemu-binfmt start +```