Compare commits
No commits in common. "a373410b894a66c8ea977f674c5c3febf2937bf9" and "0ae0f8bb7dd53d39d31587248a455506bc5f9f8e" have entirely different histories.
a373410b89
...
0ae0f8bb7d
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "twitch-vod-manager",
|
"name": "twitch-vod-manager",
|
||||||
"version": "4.6.34",
|
"version": "4.6.33",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "twitch-vod-manager",
|
"name": "twitch-vod-manager",
|
||||||
"version": "4.6.34",
|
"version": "4.6.33",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.6.0",
|
"axios": "^1.6.0",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "twitch-vod-manager",
|
"name": "twitch-vod-manager",
|
||||||
"version": "4.6.34",
|
"version": "4.6.33",
|
||||||
"description": "Twitch VOD Manager - Download Twitch VODs easily",
|
"description": "Twitch VOD Manager - Download Twitch VODs easily",
|
||||||
"main": "dist/main.js",
|
"main": "dist/main.js",
|
||||||
"author": "xRangerDE",
|
"author": "xRangerDE",
|
||||||
|
|||||||
@ -115,24 +115,24 @@
|
|||||||
|
|
||||||
<!-- Events Viewer Modal -->
|
<!-- Events Viewer Modal -->
|
||||||
<div class="modal-overlay" id="eventsViewerModal" role="dialog" aria-modal="true" aria-labelledby="eventsViewerTitle">
|
<div class="modal-overlay" id="eventsViewerModal" role="dialog" aria-modal="true" aria-labelledby="eventsViewerTitle">
|
||||||
<div class="modal viewer-modal viewer-modal-events">
|
<div class="modal" style="max-width: 700px; max-height: 80vh; display:flex; flex-direction:column;">
|
||||||
<button class="modal-close modal-close-localizable" aria-label="Close" onclick="closeEventsViewer()">x</button>
|
<button class="modal-close modal-close-localizable" aria-label="Close" onclick="closeEventsViewer()">x</button>
|
||||||
<h2 id="eventsViewerTitle" class="viewer-modal-title"></h2>
|
<h2 id="eventsViewerTitle" style="margin-top:0;"></h2>
|
||||||
<div id="eventsViewerStatus" class="viewer-modal-status"></div>
|
<div id="eventsViewerStatus" style="color:var(--text-secondary); font-size:12px; margin-bottom:8px;"></div>
|
||||||
<div id="eventsViewerList" class="viewer-modal-list"></div>
|
<div id="eventsViewerList" style="flex:1; overflow-y:auto; background: var(--bg-main); border:1px solid var(--border-soft); border-radius:6px; padding:8px;"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Chat Replay Viewer Modal -->
|
<!-- Chat Replay Viewer Modal -->
|
||||||
<div class="modal-overlay" id="chatViewerModal" role="dialog" aria-modal="true" aria-labelledby="chatViewerTitle">
|
<div class="modal-overlay" id="chatViewerModal" role="dialog" aria-modal="true" aria-labelledby="chatViewerTitle">
|
||||||
<div class="modal viewer-modal viewer-modal-chat">
|
<div class="modal" style="max-width: 800px; height: 80vh; display:flex; flex-direction:column;">
|
||||||
<button class="modal-close modal-close-localizable" aria-label="Close" onclick="closeChatViewer()">x</button>
|
<button class="modal-close modal-close-localizable" aria-label="Close" onclick="closeChatViewer()">x</button>
|
||||||
<h2 id="chatViewerTitle" class="viewer-modal-title"></h2>
|
<h2 id="chatViewerTitle" style="margin-top:0;"></h2>
|
||||||
<div class="viewer-modal-filter-row">
|
<div class="form-row" style="margin-bottom:8px; gap:8px; flex-wrap:wrap; align-items:center;">
|
||||||
<input type="text" id="chatViewerFilter" class="viewer-modal-filter-input" placeholder="Filter..." oninput="onChatViewerFilterChange()">
|
<input type="text" id="chatViewerFilter" placeholder="Filter..." oninput="onChatViewerFilterChange()" style="flex:1; min-width:160px; background: var(--bg-card); border:1px solid var(--border-soft); border-radius:6px; padding:6px 10px; color:var(--text); font-size:13px;">
|
||||||
<span id="chatViewerStatus" class="viewer-modal-status viewer-modal-status-inline"></span>
|
<span id="chatViewerStatus" style="color:var(--text-secondary); font-size:12px;"></span>
|
||||||
</div>
|
</div>
|
||||||
<div id="chatViewerList" class="viewer-modal-list viewer-modal-list-chat"></div>
|
<div id="chatViewerList" style="flex:1; overflow-y:auto; background: var(--bg-main); border:1px solid var(--border-soft); border-radius:6px; padding:8px; font-family: 'Consolas', monospace; font-size: 12px;"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
let lastArchiveStatsScannedAt = '';
|
||||||
|
|
||||||
// Trivial property-access wrapper. The codebase's renderer relies on
|
// Trivial property-access wrapper. The codebase's renderer relies on
|
||||||
// HTML-string rendering throughout (queue items, settings cards, etc.),
|
// HTML-string rendering throughout (queue items, settings cards, etc.),
|
||||||
// and all dynamic inputs are passed through escapeStatsHtml below — no
|
// and all dynamic inputs are passed through escapeStatsHtml below — no
|
||||||
@ -18,6 +20,7 @@ async function refreshArchiveStats(): Promise<void> {
|
|||||||
try {
|
try {
|
||||||
const stats = await window.api.getArchiveStats();
|
const stats = await window.api.getArchiveStats();
|
||||||
renderArchiveStats(stats);
|
renderArchiveStats(stats);
|
||||||
|
lastArchiveStatsScannedAt = stats.scannedAt;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
const summary = document.getElementById('statsSummaryGrid');
|
const summary = document.getElementById('statsSummaryGrid');
|
||||||
if (summary) summary.textContent = `Fehler: ${String(e)}`;
|
if (summary) summary.textContent = `Fehler: ${String(e)}`;
|
||||||
|
|||||||
@ -324,74 +324,6 @@ body {
|
|||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ============================================
|
|
||||||
EVENTS / CHAT VIEWER MODALS — shared structure
|
|
||||||
============================================
|
|
||||||
Both viewers used to roll their own inline-styled list container
|
|
||||||
+ status row. Extracted into a small shared family so the look
|
|
||||||
stays consistent if either one is touched independently later. */
|
|
||||||
.viewer-modal {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer-modal-events {
|
|
||||||
max-width: 700px;
|
|
||||||
max-height: 80vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer-modal-chat {
|
|
||||||
max-width: 800px;
|
|
||||||
height: 80vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer-modal-title {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer-modal-status {
|
|
||||||
color: var(--text-secondary);
|
|
||||||
font-size: 12px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer-modal-status-inline {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer-modal-list {
|
|
||||||
flex: 1;
|
|
||||||
overflow-y: auto;
|
|
||||||
background: var(--bg-main);
|
|
||||||
border: 1px solid var(--border-soft);
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer-modal-list-chat {
|
|
||||||
font-family: 'Consolas', 'Segoe UI Mono', monospace;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer-modal-filter-row {
|
|
||||||
display: flex;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
gap: 8px;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer-modal-filter-input {
|
|
||||||
flex: 1;
|
|
||||||
min-width: 160px;
|
|
||||||
background: var(--bg-card);
|
|
||||||
border: 1px solid var(--border-soft);
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 6px 10px;
|
|
||||||
color: var(--text);
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.streamer-item .remove {
|
.streamer-item .remove {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user