diff --git a/README.md b/README.md index b4897187..69b9b136 100644 --- a/README.md +++ b/README.md @@ -287,6 +287,10 @@ server notes: * iPhones: the volume control doesn't work because [apple doesn't want it to](https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html#//apple_ref/doc/uid/TP40009523-CH5-SW11) * `AudioContext` will probably never be a viable workaround as apple introduces new issues faster than they fix current ones +* iPhones: the preload feature (in the media-player-options tab) can cause a tiny audio glitch 20sec before the end of each song, but disabling it may cause worse iOS bugs to appear instead + * just a hunch, but disabling preloading may cause playback to stop entirely, or possibly mess with bluetooth speakers + * tried to add a tooltip regarding this but looks like apple broke my tooltips + * Windows: folders cannot be accessed if the name ends with `.` * python or windows bug diff --git a/copyparty/__version__.py b/copyparty/__version__.py index e00ccfa0..93b2d2dc 100644 --- a/copyparty/__version__.py +++ b/copyparty/__version__.py @@ -1,8 +1,8 @@ # coding: utf-8 -VERSION = (1, 9, 3) +VERSION = (1, 9, 4) CODENAME = "prometheable" -BUILD_DT = (2023, 8, 31) +BUILD_DT = (2023, 9, 2) S_VERSION = ".".join(map(str, VERSION)) S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT) diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index 44f2f07c..2af7fa30 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -2895,12 +2895,26 @@ class HttpCli(object): logmsg = "{:4} {} ".format("", self.req) self.keepalive = False + cancmp = not self.args.no_tarcmp + if fmt == "tar": - mime = "application/x-tar" packer: Type[StreamArc] = StreamTar + if cancmp and uarg.startswith("gz"): + mime = "application/gzip" + ext = "tar.gz" + elif cancmp and uarg.startswith("bz2"): + mime = "application/x-bzip" + ext = "tar.bz2" + elif cancmp and uarg.startswith("xz"): + mime = "application/x-xz" + ext = "tar.xz" + else: + mime = "application/x-tar" + ext = "tar" else: mime = "application/zip" packer = StreamZip + ext = "zip" fn = items[0] if items and items[0] else self.vpath if fn: @@ -2925,7 +2939,7 @@ class HttpCli(object): ufn = b"".join(zbl).decode("ascii") cdis = "attachment; filename=\"{}.{}\"; filename*=UTF-8''{}.{}" - cdis = cdis.format(afn, fmt, ufn, fmt) + cdis = cdis.format(afn, ext, ufn, ext) self.log(cdis) self.send_headers(None, mime=mime, headers={"Content-Disposition": cdis}) @@ -2943,10 +2957,12 @@ class HttpCli(object): self.log("transcoding to [{}]".format(cfmt)) fgen = gfilter(fgen, self.thumbcli, self.uname, vpath, cfmt) - cmp = "" if self.args.no_tarcmp else uarg - bgen = packer( - self.log, fgen, utf8="utf" in uarg, pre_crc="crc" in uarg, cmp=cmp + self.log, + fgen, + utf8="utf" in uarg, + pre_crc="crc" in uarg, + cmp=uarg if cancmp else "", ) bsent = 0 for buf in bgen.gen(): diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index 58bd343f..897e1fc4 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -376,8 +376,8 @@ var Ls = { "fu_xe2": "404: File not found??", "fz_tar": "plain gnu-tar file (linux / mac)", - "fz_targz": "tar with gzip level 3 compression", - "fz_tarxz": "tar with xz level 1 compression", + "fz_targz": "tar with gzip level 3 compression$N$Nthis is usually very slow, so$Nuse uncompressed tar instead", + "fz_tarxz": "tar with xz level 1 compression$N$Nthis is usually very slow, so$Nuse uncompressed tar instead", "fz_zip8": "zip with utf8 filenames (maybe wonky on windows 7 and older)", "fz_zipd": "zip with traditional cp437 filenames, for really old software", "fz_zipc": "cp437 with crc32 computed early,$Nfor MS-DOS PKZIP v2.04g (october 1993)$N(takes longer to process before download can start)", @@ -842,8 +842,8 @@ var Ls = { "fu_xe2": "404: Filen finnes ikke??", "fz_tar": "ukomprimert gnu-tar arkiv, for linux og mac", - "fz_targz": "gnu-tar pakket med gzip (nivå 3)", - "fz_tarxz": "gnu-tar pakket med xz (nivå 1)", + "fz_targz": "gnu-tar pakket med gzip (nivå 3)$N$NNB: denne er veldig treg;$Nukomprimert tar er bedre", + "fz_tarxz": "gnu-tar pakket med xz (nivå 1)$N$NNB: denne er veldig treg;$Nukomprimert tar er bedre", "fz_zip8": "zip med filnavn i utf8 (noe problematisk på windows 7 og eldre)", "fz_zipd": "zip med filnavn i cp437, for høggamle maskiner", "fz_zipc": "cp437 med tidlig crc32,$Nfor MS-DOS PKZIP v2.04g (oktober 1993)$N(øker behandlingstid på server)", diff --git a/docs/changelog.md b/docs/changelog.md index 9469c28f..cd7e37cb 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,3 +1,29 @@ +▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ +# 2023-0831-2211 `v1.9.3` iOS and http fixes + +## new features +* iPhones and iPads are now able to... + * 9986136dfb2364edb35aa9fbb87410641c6d6af3 play entire albums while the screen is off without the music randomly stopping + * apple keeps breaking AudioContext in new and interesting ways; time to give up (no more equalizer) + * 1c0d978979a703edeb792e552b18d3b7695b2d90 perform search queries and execude js code + * by translating [smart-quotes](https://stackoverflow.com/questions/48678359/ios-11-safari-html-disable-smart-punctuation) into regular `'` and `"` characters +* python 3.12 support + * technically a bugfix since it was added [a year ago](https://github.com/9001/copyparty/commit/32e22dfe84d5e0b13914b4d0e15c1b8c9725a76d) way before the first py3.12 alpha was released but turns out i botched it, oh well +* filter error messages so they never include the filesystem path where copyparty's python files reside +* print more context in server logs if someone hits an unexpected permission-denied + +# bugfixes +found some iffy stuff combing over the code but, as far as I can tell, luckily none of these were dangerous: +* URL normalization was a bit funky, but it appears everything access-control-related was unaffected +* some url parameters were double-decoded, causing the unpost filtering and file renaming to fail if the values contained `%` +* clients could cause the server to return an invalid cache-control header, but newlines and control-characters got rejected correctly +* minor cosmetics / qol fixes: + * reduced flickering on page load in chrome + * fixed some console spam in search results + * markdown documents now have the same line-height in directory listings and the editor + + + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ # 2023-0826-2116 `v1.9.2` bigger hammer