diff --git a/plugins/limnoria/NtrPlaylist/plugin.py b/plugins/limnoria/NtrPlaylist/plugin.py index 640fe66..ea646d4 100644 --- a/plugins/limnoria/NtrPlaylist/plugin.py +++ b/plugins/limnoria/NtrPlaylist/plugin.py @@ -224,7 +224,6 @@ class NtrPlaylist(callbacks.Plugin): def doPrivmsg(self, irc, msg): channel = msg.args[0] if msg.args else None if not channel or not irc.isChannel(channel): - super().doPrivmsg(irc, msg) return text = msg.args[1] if len(msg.args) > 1 else "" match = _NUMBER_RE.match(text) @@ -237,7 +236,6 @@ class NtrPlaylist(callbacks.Plugin): except ApiError as exc: LOGGER.warning("API error for !%s: %s", position, exc) irc.reply(exc.detail) - super().doPrivmsg(irc, msg) @wrap([optional("text")]) def song(self, irc, msg, args, text): diff --git a/src/ntr_fetcher/static/dashboard.html b/src/ntr_fetcher/static/dashboard.html index 5121e6d..ebe382d 100644 --- a/src/ntr_fetcher/static/dashboard.html +++ b/src/ntr_fetcher/static/dashboard.html @@ -18,12 +18,11 @@ .status-dot.disconnected { background: #666; } nav { display: flex; align-items: center; justify-content: space-between; padding: 1rem 0; } nav .left { display: flex; align-items: center; gap: 8px; } - .announce-btn { padding: 4px 14px; font-size: 0.85rem; cursor: pointer; } + .btn-sm { padding: 4px 14px; font-size: 0.85rem; cursor: pointer; } .announce-btn.success { background: #4caf50; border-color: #4caf50; pointer-events: none; } - .announce-btn.warning { opacity: 0.5; cursor: not-allowed; } + .copy-btn.copied { background: #666; border-color: #666; pointer-events: none; } .announce-btn:disabled { opacity: 0.5; cursor: not-allowed; } table { width: 100%; } - td a { word-break: break-all; } .toast { position: fixed; bottom: 20px; right: 20px; padding: 12px 20px; border-radius: 8px; background: #333; color: #fff; @@ -31,13 +30,43 @@ } .toast.show { display: block; } .toast.error { background: #e53935; } - details summary h3 { display: inline; cursor: pointer; } .track-num { width: 40px; text-align: center; } .client-tag { display: inline-block; padding: 2px 8px; margin: 2px 4px; border-radius: 4px; background: #2a2a2a; font-size: 0.8rem; } #client-detail { display: none; margin-top: 4px; } + .tab-bar { + display: flex; + gap: 0; + overflow-x: auto; + border-bottom: 2px solid #333; + margin-bottom: 1rem; + scrollbar-width: thin; + } + .tab-bar::-webkit-scrollbar { height: 4px; } + .tab-bar::-webkit-scrollbar-thumb { background: #555; border-radius: 2px; } + .tab { + padding: 8px 16px; + cursor: pointer; + white-space: nowrap; + border-bottom: 3px solid transparent; + color: #999; + font-size: 0.9rem; + transition: color 0.15s, border-color 0.15s; + flex-shrink: 0; + background: none; + border-top: none; + border-left: none; + border-right: none; + } + .tab:hover { color: #ddd; } + .tab.active { + color: #fff; + border-bottom-color: #4caf50; + font-weight: 600; + } + .btn-group { display: flex; gap: 4px; }
@@ -52,14 +81,13 @@ Logout -Loading...
Loading shows...
+