release: publish Twitch VOD Manager 1.0.4

Add smooth VOD bulk-action dock entrance and exit motion, including on Windows systems with reduced animations enabled. Refresh Windows shortcut icons through persistent versioned resources, preserve pinned shortcut compatibility across upgrades, and clean the icon cache on full uninstall. Update the public documentation and release metadata for version 1.0.4.
This commit is contained in:
Sucukdeluxe
2026-08-11 01:03:44 +02:00
parent e601c3f3d5
commit 74ebcd895c
12 changed files with 114 additions and 26 deletions
+2 -2
View File
@@ -395,7 +395,7 @@
<option value="duration_asc">Shortest first</option>
</select>
</div>
<div id="vodBulkBar" class="vod-bulk-bar is-hidden">
<div id="vodBulkBar" class="vod-bulk-bar">
<span id="vodBulkCount" class="vod-bulk-count">0 selected</span>
<span class="vod-bulk-spacer"></span>
<button id="vodBulkAddBtn" class="btn-pill primary" type="button" onclick="bulkAddSelectedVodsToQueue()">+ Queue</button>
@@ -783,7 +783,7 @@
<div class="settings-card" data-settings-pane="updates" hidden>
<h3 id="updateTitle">Updates</h3>
<p id="versionInfo" class="card-intro">Version: v1.0.3</p>
<p id="versionInfo" class="card-intro">Version: v1.0.4</p>
<button type="button" class="btn-secondary" id="checkUpdateBtn" onclick="checkUpdate()">Nach Updates suchen</button>
</div>
+1 -1
View File
@@ -25,7 +25,7 @@ describe.runIf(process.platform === 'win32')('prepareWindowsDevExecutable', () =
sourcePath,
destinationPath,
iconPath,
version: '1.0.3'
version: '1.0.4'
});
const executable = ResEdit.NtExecutable.from(fs.readFileSync(destinationPath));
+1 -1
View File
@@ -1198,7 +1198,7 @@ function updateVodBulkBar(): void {
const bar = document.getElementById('vodBulkBar');
if (!bar) return;
const count = selectedVodUrls.size;
bar.classList.toggle('is-hidden', count === 0);
bar.classList.toggle('is-visible', count > 0);
const countEl = document.getElementById('vodBulkCount');
if (countEl) {
countEl.textContent = UI_TEXT.vods.bulkSelectedCount.replace('{count}', String(count));
+22 -13
View File
@@ -1577,8 +1577,20 @@ input[type="range"] {
border-radius: 10px;
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.48), 0 0 0 1px rgba(255, 255, 255, 0.04);
backdrop-filter: blur(12px);
transform: translateX(-50%);
animation: vod-bulk-dock-in 240ms cubic-bezier(0.22, 0.76, 0.22, 1);
opacity: 0;
visibility: hidden;
pointer-events: none;
transform: translate(-50%, calc(100% + 24px)) scale(0.98);
animation: none;
transition: transform 280ms cubic-bezier(0.22, 0.76, 0.22, 1), opacity 220ms ease, visibility 0s linear 280ms;
}
.vod-bulk-bar.is-visible {
opacity: 1;
visibility: visible;
pointer-events: auto;
transform: translate(-50%, 0) scale(1);
transition-delay: 0s;
}
.vod-bulk-bar .vod-bulk-count {
@@ -1623,17 +1635,6 @@ input[type="range"] {
border-color: #22c55e;
}
@keyframes vod-bulk-dock-in {
from {
opacity: 0;
transform: translate(-50%, 12px) scale(0.98);
}
to {
opacity: 1;
transform: translate(-50%, 0) scale(1);
}
}
.vod-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
@@ -2577,6 +2578,14 @@ input[type="checkbox"].vod-select-checkbox:focus-visible {
}
@media (prefers-reduced-motion: reduce) {
.vod-bulk-bar {
transition: transform 280ms cubic-bezier(0.22, 0.76, 0.22, 1), opacity 220ms ease, visibility 0s linear 280ms !important;
}
.vod-bulk-bar.is-visible {
transition-delay: 0s !important;
}
.top-nav::before {
transition: transform 420ms cubic-bezier(0.22, 0.76, 0.22, 1), width 420ms cubic-bezier(0.22, 0.76, 0.22, 1), height 420ms cubic-bezier(0.22, 0.76, 0.22, 1) !important;
}