diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index 2115bdfc..86dbfef4 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -3331,6 +3331,10 @@ class HttpCli(object): for x in vfs_virt: if x != excl: + try: + bos.stat(vn.nodes[x].realpath) + except: + x += "\n" dirs.append(x) ret["a"] = dirs diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 4dc56634..9820a673 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -867,8 +867,11 @@ class Up2k(object): if not HAVE_SQLITE3 or "e2d" not in flags or "d2d" in flags: return None - if bos.makedirs(histpath): - hidedir(histpath) + try: + if bos.makedirs(histpath): + hidedir(histpath) + except: + return None try: cur = self._open_db(db_path) diff --git a/copyparty/web/browser.css b/copyparty/web/browser.css index 49579358..91b26814 100644 --- a/copyparty/web/browser.css +++ b/copyparty/web/browser.css @@ -1620,6 +1620,12 @@ html.cz .tgl.btn.on { list-style: none; border-top: 1px solid var(--bg-u5); } +#tree li.offline>a:first-child:before { + content: '❌'; + position: absolute; + margin-left: -.25em; + z-index: 3; +} #tree ul a.sel { background: #000; background: var(--bg-d3); diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index f3458dce..5781b6e4 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -6028,7 +6028,8 @@ var treectl = (function () { for (var a = 0; a < keys.length; a++) { var kk = keys[a], ks = kk.slice(1), - k = uricom_sdec(ks), + ded = ks.endsWith('\n'), + k = uricom_sdec(ded ? ks.replace(/\n$/, '') : ks), hek = esc(k[0]), uek = k[1] ? uricom_enc(k[0], true) : k[0], url = '/' + (top ? top + uek : uek) + '/', @@ -6041,7 +6042,7 @@ var treectl = (function () { ret += '
  • ' + link + '\n
  • \n'; } else { - ret += '
  • ' + link + '
  • \n'; + ret += (ded ? '
  • ' : '
  • ') + link + '
  • \n'; } } return ret;