From 418cdca44d23b6ae67a4125fa8a659c87aa84b13 Mon Sep 17 00:00:00 2001 From: fairy-root Date: Tue, 1 Jul 2025 00:02:09 +0100 Subject: [PATCH 1/3] UI Overhaul... --- README.md | 24 ++ imgs/new.png | Bin 0 -> 31099 bytes imgs/old.png | Bin 0 -> 42222 bytes panel/panel.css | 263 +++++++++++++-------- panel/panel.html | 107 +++++---- panel/panel.js | 423 +++++++++++++++++++--------------- picker/remote/filePicker.css | 60 +++++ picker/remote/filePicker.html | 28 ++- picker/remote/filePicker.js | 31 ++- picker/wvd/filePicker.css | 60 +++++ picker/wvd/filePicker.html | 28 ++- picker/wvd/filePicker.js | 31 ++- 12 files changed, 719 insertions(+), 336 deletions(-) create mode 100644 imgs/new.png create mode 100644 imgs/old.png create mode 100644 picker/remote/filePicker.css create mode 100644 picker/wvd/filePicker.css diff --git a/README.md b/README.md index 54c2542..8521cc9 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,30 @@ Modifies the challenge before it reaches the web player and retrieves the decryp + Supports Widevine Device files + Manifest V3 compliant +--- +
+ +

OLD UI

+ Old +
+ + +
+ +

NEW UI

+ New +
+ +--- + ## Widevine Devices This addon requires a Widevine Device file to work, which is not provided by this project. + Use an existing Remote CDM like [this one](https://github.com/user-attachments/files/19639399/remote.json) diff --git a/imgs/new.png b/imgs/new.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c86f5b63b000f66c42611e42ff8d5a4c777578 GIT binary patch literal 31099 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

oeKfC1sPzhOWTy9fJ*J{bZbn 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 sC85-z3y>f-B@XD2| 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 label, #settings-grid > div { + display: flex; + align-items: center; + gap: 0.5rem; } -.dark-mode button:hover, .dark-mode select:hover { - background-color: #323232; +#settings-grid > div { + flex-direction: column; + align-items: flex-start; } -.dark-mode .expandableDiv { - background-color: #1b2027; +label { + user-select: none; + font-size: 0.875rem; } -.dark-mode .text-box { - background-color: #323232; - color: #D5D5D5; +input[type="checkbox"], input[type="radio"] { + margin: 0; } -/* Switch */ .switch { position: relative; display: inline-block; - width: 40px; + width: 34px; height: 20px; - margin-left: 10px; -} -.switch input { - opacity: 0; - width: 0; - height: 0; + flex-shrink: 0; } - -/* Slider */ +.switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; @@ -67,7 +164,7 @@ select { left: 0; right: 0; bottom: 0; - background-color: #ccc; + background-color: var(--color-border); transition: 0.4s; border-radius: 20px; } @@ -80,65 +177,45 @@ select { bottom: 3px; background-color: white; border-radius: 50%; + transition: 0.4s; } -input:checked + .slider { - background-color: #2196F3; -} -input:checked + .slider:before { - transform: translateX(20px); -} - -#clear { - width: 100%; - margin-bottom: 3px; -} - -#type-select { - margin-left: auto; -} - -#settings { - display: flex; -} - -.header { - display: flex; - justify-content: center; - align-items: center; -} -.header > * { - margin: 5px; -} +input:checked + .slider { background-color: var(--color-accent); } +input:checked + .slider:before { transform: translateX(14px); } -#wvd > *, #remote > * { - margin: 5px; -} +#key-container { display: flex; flex-direction: column; gap: 0.5rem; } .log-container { display: flex; - justify-content: center; -} -.right-bound { - text-align: right; + align-items: flex-start; + gap: 0.5rem; + background-color: var(--color-bg); + border: 1px solid var(--color-border); + border-radius: var(--border-radius); + padding: 0.5rem; } -.expandableDiv { - width: 100%; - overflow: hidden; - background-color: lightblue; - padding: 0; -} -.expandableDiv.expanded { - padding: 5px; -} -.expandableDiv.collapsed { +.toggleButton { + flex-shrink: 0; + width: 24px; + height: 24px; padding: 0; + font-family: monospace; + font-size: 1rem; } -.always-visible { - display: block; +.expandableDiv { width: 100%; overflow: hidden; display: flex; flex-direction: column; gap: 0.5rem; } +.expandableDiv label { + display: grid; + grid-template-columns: 60px 1fr; + align-items: center; + gap: 0.5rem; + width: 100%; } -.expanded-only { - display: none; +.expandableDiv label > a { + color: var(--color-accent); + text-decoration: none; + cursor: pointer; + font-weight: var(--font-weight-bold); + text-align: right; + justify-self: end; } -.expandableDiv.expanded .expanded-only { - display: block; -} \ No newline at end of file +.expandableDiv label a:hover { text-decoration: underline; } +.expandableDiv.collapsed .expanded-only { display: none; } \ No newline at end of file diff --git a/panel/panel.html b/panel/panel.html index a20599a..3c930e5 100644 --- a/panel/panel.html +++ b/panel/panel.html @@ -1,71 +1,86 @@ + - + WidevineProxy + - + + +

- WidevineProxy Icon - ProxyText + WidevineProxy Icon + ProxyText
+
Settings -
- -
- - -
- -
-
+ +
+ Remote CDM +
-
- -
-
- Command options - -
- - -
- + + + +
- Keys - + Logs +
+
+ - + + \ No newline at end of file diff --git a/panel/panel.js b/panel/panel.js index 659b312..296ecc2 100644 --- a/panel/panel.js +++ b/panel/panel.js @@ -1,241 +1,298 @@ import "../protobuf.min.js"; import "../license_protocol.js"; -import {AsyncLocalStorage, base64toUint8Array, stringToUint8Array, DeviceManager, RemoteCDMManager, SettingsManager} from "../util.js"; +import { + AsyncLocalStorage, + base64toUint8Array, + stringToUint8Array, + DeviceManager, + RemoteCDMManager, + SettingsManager, +} from "../util.js"; -const key_container = document.getElementById('key-container'); +const key_container = document.getElementById("key-container"); -// ================ Main ================ -const enabled = document.getElementById('enabled'); -enabled.addEventListener('change', async function (){ - await SettingsManager.setEnabled(enabled.checked); +function updateThemeVisuals(isDarkMode) { + document.body.classList.toggle("dark-mode", isDarkMode); + const textImage = document.getElementById("textImage"); + if (textImage) { + textImage.src = isDarkMode + ? "../images/proxy_text_dark.png" + : "../images/proxy_text.png"; + } +} + +function updateDeviceFieldsetVisibility() { + const wvd_select = document.getElementById("wvd_select"); + document.getElementById("wvd").style.display = wvd_select.checked + ? "block" + : "none"; + document.getElementById("remote").style.display = wvd_select.checked + ? "none" + : "block"; +} + +const enabled = document.getElementById("enabled"); +enabled.addEventListener("change", async function () { + await SettingsManager.setEnabled(enabled.checked); }); -const toggle = document.getElementById('darkModeToggle'); -toggle.addEventListener('change', async () => { - await SettingsManager.setDarkMode(toggle.checked); - await SettingsManager.saveDarkMode(toggle.checked); +const toggle = document.getElementById("darkModeToggle"); +toggle.addEventListener("change", async () => { + await SettingsManager.saveDarkMode(toggle.checked); + updateThemeVisuals(toggle.checked); }); -const wvd_select = document.getElementById('wvd_select'); -wvd_select.addEventListener('change', async function (){ - if (wvd_select.checked) { - await SettingsManager.saveSelectedDeviceType("WVD"); - } +const wvd_select = document.getElementById("wvd_select"); +wvd_select.addEventListener("change", async function () { + if (wvd_select.checked) { + await SettingsManager.saveSelectedDeviceType("WVD"); + updateDeviceFieldsetVisibility(); + } }); -const remote_select = document.getElementById('remote_select'); -remote_select.addEventListener('change', async function (){ - if (remote_select.checked) { - await SettingsManager.saveSelectedDeviceType("REMOTE"); - } +const remote_select = document.getElementById("remote_select"); +remote_select.addEventListener("change", async function () { + if (remote_select.checked) { + await SettingsManager.saveSelectedDeviceType("REMOTE"); + updateDeviceFieldsetVisibility(); + } }); -const export_button = document.getElementById('export'); -export_button.addEventListener('click', async function() { - const logs = await AsyncLocalStorage.getStorage(null); - SettingsManager.downloadFile(stringToUint8Array(JSON.stringify(logs)), "logs.json"); +const export_button = document.getElementById("export"); +export_button.addEventListener("click", async function () { + const logs = await AsyncLocalStorage.getStorage(null); + SettingsManager.downloadFile( + stringToUint8Array(JSON.stringify(logs)), + "logs.json" + ); }); -// ====================================== -// ================ Widevine Device ================ -document.getElementById('fileInput').addEventListener('click', () => { - chrome.runtime.sendMessage({ type: "OPEN_PICKER_WVD" }); - window.close(); +document.getElementById("fileInput").addEventListener("click", () => { + chrome.runtime.sendMessage({ type: "OPEN_PICKER_WVD" }); + window.close(); }); -const remove = document.getElementById('remove'); -remove.addEventListener('click', async function() { - await DeviceManager.removeSelectedWidevineDevice(); - wvd_combobox.innerHTML = ''; - await DeviceManager.loadSetAllWidevineDevices(); - const selected_option = wvd_combobox.options[wvd_combobox.selectedIndex]; - if (selected_option) { - await DeviceManager.saveSelectedWidevineDevice(selected_option.text); - } else { - await DeviceManager.removeSelectedWidevineDeviceKey(); - } +const remove = document.getElementById("remove"); +remove.addEventListener("click", async function () { + await DeviceManager.removeSelectedWidevineDevice(); + wvd_combobox.innerHTML = ""; + await DeviceManager.loadSetAllWidevineDevices(); + const selected_option = wvd_combobox.options[wvd_combobox.selectedIndex]; + if (selected_option) { + await DeviceManager.saveSelectedWidevineDevice(selected_option.text); + } else { + await DeviceManager.removeSelectedWidevineDeviceKey(); + } }); -const download = document.getElementById('download'); -download.addEventListener('click', async function() { - const widevine_device = await DeviceManager.getSelectedWidevineDevice(); - SettingsManager.downloadFile( - base64toUint8Array(await DeviceManager.loadWidevineDevice(widevine_device)), - widevine_device + ".wvd" - ) +const download = document.getElementById("download"); +download.addEventListener("click", async function () { + const widevine_device = await DeviceManager.getSelectedWidevineDevice(); + SettingsManager.downloadFile( + base64toUint8Array(await DeviceManager.loadWidevineDevice(widevine_device)), + widevine_device + ".wvd" + ); }); -const wvd_combobox = document.getElementById('wvd-combobox'); -wvd_combobox.addEventListener('change', async function() { - await DeviceManager.saveSelectedWidevineDevice(wvd_combobox.options[wvd_combobox.selectedIndex].text); +const wvd_combobox = document.getElementById("wvd-combobox"); +wvd_combobox.addEventListener("change", async function () { + await DeviceManager.saveSelectedWidevineDevice( + wvd_combobox.options[wvd_combobox.selectedIndex].text + ); }); -// ================================================= -// ================ Remote CDM ================ -document.getElementById('remoteInput').addEventListener('click', () => { - chrome.runtime.sendMessage({ type: "OPEN_PICKER_REMOTE" }); - window.close(); +document.getElementById("remoteInput").addEventListener("click", () => { + chrome.runtime.sendMessage({ type: "OPEN_PICKER_REMOTE" }); + window.close(); }); -const remote_remove = document.getElementById('remoteRemove'); -remote_remove.addEventListener('click', async function() { - await RemoteCDMManager.removeSelectedRemoteCDM(); - remote_combobox.innerHTML = ''; - await RemoteCDMManager.loadSetAllRemoteCDMs(); - const selected_option = remote_combobox.options[remote_combobox.selectedIndex]; - if (selected_option) { - await RemoteCDMManager.saveSelectedRemoteCDM(selected_option.text); - } else { - await RemoteCDMManager.removeSelectedRemoteCDMKey(); - } +const remote_remove = document.getElementById("remoteRemove"); +remote_remove.addEventListener("click", async function () { + await RemoteCDMManager.removeSelectedRemoteCDM(); + remote_combobox.innerHTML = ""; + await RemoteCDMManager.loadSetAllRemoteCDMs(); + const selected_option = + remote_combobox.options[remote_combobox.selectedIndex]; + if (selected_option) { + await RemoteCDMManager.saveSelectedRemoteCDM(selected_option.text); + } else { + await RemoteCDMManager.removeSelectedRemoteCDMKey(); + } }); -const remote_download = document.getElementById('remoteDownload'); -remote_download.addEventListener('click', async function() { - const remote_cdm = await RemoteCDMManager.getSelectedRemoteCDM(); - SettingsManager.downloadFile( - await RemoteCDMManager.loadRemoteCDM(remote_cdm), - remote_cdm + ".json" - ) +const remote_download = document.getElementById("remoteDownload"); +remote_download.addEventListener("click", async function () { + const remote_cdm = await RemoteCDMManager.getSelectedRemoteCDM(); + SettingsManager.downloadFile( + await RemoteCDMManager.loadRemoteCDM(remote_cdm), + remote_cdm + ".json" + ); }); -const remote_combobox = document.getElementById('remote-combobox'); -remote_combobox.addEventListener('change', async function() { - await RemoteCDMManager.saveSelectedRemoteCDM(remote_combobox.options[remote_combobox.selectedIndex].text); +const remote_combobox = document.getElementById("remote-combobox"); +remote_combobox.addEventListener("change", async function () { + await RemoteCDMManager.saveSelectedRemoteCDM( + remote_combobox.options[remote_combobox.selectedIndex].text + ); }); -// ============================================ -// ================ Command Options ================ -const use_shaka = document.getElementById('use-shaka'); -use_shaka.addEventListener('change', async function (){ - await SettingsManager.saveUseShakaPackager(use_shaka.checked); +const use_shaka = document.getElementById("use-shaka"); +use_shaka.addEventListener("change", async function () { + await SettingsManager.saveUseShakaPackager(use_shaka.checked); }); -const downloader_name = document.getElementById('downloader-name'); -downloader_name.addEventListener('input', async function (event){ - console.log("input change", event); - await SettingsManager.saveExecutableName(downloader_name.value); +const downloader_name = document.getElementById("downloader-name"); +downloader_name.addEventListener("input", async function (event) { + await SettingsManager.saveExecutableName(downloader_name.value); }); -// ================================================= -// ================ Keys ================ -const clear = document.getElementById('clear'); -clear.addEventListener('click', async function() { - chrome.runtime.sendMessage({ type: "CLEAR" }); - key_container.innerHTML = ""; +const clear = document.getElementById("clear"); +clear.addEventListener("click", async function () { + chrome.runtime.sendMessage({ type: "CLEAR" }); + key_container.innerHTML = ""; }); async function createCommand(json, key_string) { - const metadata = JSON.parse(json); - const header_string = Object.entries(metadata.headers).map(([key, value]) => `-H "${key}: ${value.replace(/"/g, "'")}"`).join(' '); - return `${await SettingsManager.getExecutableName()} "${metadata.url}" ${header_string} ${key_string} ${await SettingsManager.getUseShakaPackager() ? "--use-shaka-packager " : ""}-M format=mkv`; + const metadata = JSON.parse(json); + const header_string = Object.entries(metadata.headers) + .map(([key, value]) => `-H "${key}: ${value.replace(/"/g, "'")}"`) + .join(" "); + return `${await SettingsManager.getExecutableName()} "${ + metadata.url + }" ${header_string} ${key_string} ${ + (await SettingsManager.getUseShakaPackager()) ? "--use-shaka-packager " : "" + }-M format=mkv`; } async function appendLog(result) { - const key_string = result.keys.map(key => `--key ${key.kid}:${key.k}`).join(' '); - const date = new Date(result.timestamp * 1000); - const date_string = date.toLocaleString(); + const key_string = result.keys + .map((key) => `--key ${key.kid}:${key.k}`) + .join(" "); + const date = new Date(result.timestamp * 1000); + const date_string = date.toLocaleString(); - const logContainer = document.createElement('div'); - logContainer.classList.add('log-container'); - logContainer.innerHTML = ` + const logContainer = document.createElement("div"); + logContainer.classList.add("log-container"); + logContainer.innerHTML = ` `; - const keysInput = logContainer.querySelector('.key-copy'); - keysInput.addEventListener('click', () => { - navigator.clipboard.writeText(key_string); - }); - - if (result.manifests.length > 0) { - const command = logContainer.querySelector('#command'); - - const select = logContainer.querySelector("#manifest"); - select.addEventListener('change', async () => { - command.value = await createCommand(select.value, key_string); - }); - result.manifests.forEach((manifest) => { - const option = new Option(`[${manifest.type}] ${manifest.url}`, JSON.stringify(manifest)); - select.add(option); - }); - command.value = await createCommand(select.value, key_string); - - const manifest_copy = logContainer.querySelector('.manifest-copy'); - manifest_copy.addEventListener('click', () => { - navigator.clipboard.writeText(JSON.parse(select.value).url); - }); - - const command_copy = logContainer.querySelector('.command-copy'); - command_copy.addEventListener('click', () => { - navigator.clipboard.writeText(command.value); - }); - } + logContainer.querySelector(".key-copy > a").addEventListener("click", (e) => { + e.preventDefault(); + navigator.clipboard.writeText(key_string); + }); - const toggleButtons = logContainer.querySelector('.toggleButton'); - toggleButtons.addEventListener('click', function () { - const expandableDiv = this.nextElementSibling; - if (expandableDiv.classList.contains('collapsed')) { - toggleButtons.innerHTML = "-"; - expandableDiv.classList.remove('collapsed'); - expandableDiv.classList.add('expanded'); - } else { - toggleButtons.innerHTML = "+"; - expandableDiv.classList.remove('expanded'); - expandableDiv.classList.add('collapsed'); - } + if (result.manifests.length > 0) { + const commandInput = logContainer.querySelector(".command-copy input"); + const select = logContainer.querySelector(".manifest-copy select"); + const updateCommand = async () => { + commandInput.value = await createCommand(select.value, key_string); + }; + select.addEventListener("change", updateCommand); + result.manifests.forEach((manifest) => { + const option = new Option( + `[${manifest.type}] ${manifest.url}`, + JSON.stringify(manifest) + ); + select.add(option); }); + updateCommand(); + logContainer + .querySelector(".manifest-copy > a") + .addEventListener("click", (e) => { + e.preventDefault(); + navigator.clipboard.writeText(JSON.parse(select.value).url); + }); + logContainer + .querySelector(".command-copy > a") + .addEventListener("click", (e) => { + e.preventDefault(); + navigator.clipboard.writeText(commandInput.value); + }); + } - key_container.appendChild(logContainer); + const toggleButtons = logContainer.querySelector(".toggleButton"); + toggleButtons.addEventListener("click", function () { + const expandableDiv = this.nextElementSibling; + if (expandableDiv.classList.contains("collapsed")) { + this.innerHTML = "-"; + expandableDiv.classList.remove("collapsed"); + } else { + this.innerHTML = "+"; + expandableDiv.classList.add("collapsed"); + } + }); + key_container.appendChild(logContainer); } chrome.storage.onChanged.addListener(async (changes, areaName) => { - if (areaName === 'local') { - for (const [key, values] of Object.entries(changes)) { - await appendLog(values.newValue); - } + if (areaName === "local") { + for (const [key, values] of Object.entries(changes)) { + await appendLog(values.newValue); } + } }); function checkLogs() { - chrome.runtime.sendMessage({ type: "GET_LOGS" }, (response) => { - if (response) { - response.forEach(async (result) => { - await appendLog(result); - }); - } - }); + chrome.runtime.sendMessage({ type: "GET_LOGS" }, (response) => { + if (response) { + response.forEach(async (result) => { + await appendLog(result); + }); + } + }); } -document.addEventListener('DOMContentLoaded', async function () { - enabled.checked = await SettingsManager.getEnabled(); - SettingsManager.setDarkMode(await SettingsManager.getDarkMode()); - use_shaka.checked = await SettingsManager.getUseShakaPackager(); - downloader_name.value = await SettingsManager.getExecutableName(); - await SettingsManager.setSelectedDeviceType(await SettingsManager.getSelectedDeviceType()); - await DeviceManager.loadSetAllWidevineDevices(); - await DeviceManager.selectWidevineDevice(await DeviceManager.getSelectedWidevineDevice()); - await RemoteCDMManager.loadSetAllRemoteCDMs(); - await RemoteCDMManager.selectRemoteCDM(await RemoteCDMManager.getSelectedRemoteCDM()); - checkLogs(); -}); -// ====================================== +document.addEventListener("DOMContentLoaded", async function () { + enabled.checked = await SettingsManager.getEnabled(); + const isDarkMode = await SettingsManager.getDarkMode(); + toggle.checked = isDarkMode; + use_shaka.checked = await SettingsManager.getUseShakaPackager(); + downloader_name.value = await SettingsManager.getExecutableName(); + + updateThemeVisuals(isDarkMode); + await SettingsManager.setSelectedDeviceType( + await SettingsManager.getSelectedDeviceType() + ); + updateDeviceFieldsetVisibility(); + + await DeviceManager.loadSetAllWidevineDevices(); + await DeviceManager.selectWidevineDevice( + await DeviceManager.getSelectedWidevineDevice() + ); + await RemoteCDMManager.loadSetAllRemoteCDMs(); + await RemoteCDMManager.selectRemoteCDM( + await RemoteCDMManager.getSelectedRemoteCDM() + ); + + checkLogs(); +}); diff --git a/picker/remote/filePicker.css b/picker/remote/filePicker.css new file mode 100644 index 0000000..89f16a2 --- /dev/null +++ b/picker/remote/filePicker.css @@ -0,0 +1,60 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html, +body { + height: 100%; +} + +body { + display: flex; + align-items: center; + justify-content: center; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, + Arial, sans-serif; + background-color: #121212; + color: #e0e0e0; +} + +.file-drop-zone { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 320px; + max-width: 90%; + padding: 40px; + border: 2px dashed #444; + border-radius: 12px; + cursor: pointer; + transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out; + text-align: center; +} + +.file-drop-zone:hover { + background-color: #1e1e1e; + border-color: #666; +} + +.file-drop-zone__icon { + margin-bottom: 16px; + color: #888; +} + +.file-drop-zone__text { + font-size: 1.1rem; + font-weight: 500; +} + +.file-drop-zone__format { + font-size: 0.8rem; + color: #888; + margin-top: 8px; +} + +#fileInput[hidden] { + display: none; +} diff --git a/picker/remote/filePicker.html b/picker/remote/filePicker.html index 646076d..4bee189 100644 --- a/picker/remote/filePicker.html +++ b/picker/remote/filePicker.html @@ -1,7 +1,33 @@ + + + + + Select Device File + + + - + + + + + + \ No newline at end of file diff --git a/picker/remote/filePicker.js b/picker/remote/filePicker.js index 832609b..308859b 100644 --- a/picker/remote/filePicker.js +++ b/picker/remote/filePicker.js @@ -2,9 +2,28 @@ import "../../protobuf.min.js"; import "../../license_protocol.js"; import { SettingsManager } from "../../util.js"; -document.getElementById('fileInput').addEventListener('change', async (event) => { - const file = event.target.files[0]; - await SettingsManager.loadRemoteCDM(file).then(() => { - window.close(); - }); -}); \ No newline at end of file +document + .getElementById("fileInput") + .addEventListener("change", async (event) => { + const files = event.target.files; + + if (!files || files.length === 0) { + console.log("No file selected."); + return; + } + + const file = files[0]; + + try { + console.log(`Importing: ${file.name}`); + await SettingsManager.importDevice(file); + + console.log("File imported successfully. Closing window."); + window.close(); + } catch (error) { + console.error("An error occurred during file import:", error); + alert( + `Failed to import "${file.name}". Please check the console for details.` + ); + } + }); diff --git a/picker/wvd/filePicker.css b/picker/wvd/filePicker.css new file mode 100644 index 0000000..89f16a2 --- /dev/null +++ b/picker/wvd/filePicker.css @@ -0,0 +1,60 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html, +body { + height: 100%; +} + +body { + display: flex; + align-items: center; + justify-content: center; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, + Arial, sans-serif; + background-color: #121212; + color: #e0e0e0; +} + +.file-drop-zone { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 320px; + max-width: 90%; + padding: 40px; + border: 2px dashed #444; + border-radius: 12px; + cursor: pointer; + transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out; + text-align: center; +} + +.file-drop-zone:hover { + background-color: #1e1e1e; + border-color: #666; +} + +.file-drop-zone__icon { + margin-bottom: 16px; + color: #888; +} + +.file-drop-zone__text { + font-size: 1.1rem; + font-weight: 500; +} + +.file-drop-zone__format { + font-size: 0.8rem; + color: #888; + margin-top: 8px; +} + +#fileInput[hidden] { + display: none; +} diff --git a/picker/wvd/filePicker.html b/picker/wvd/filePicker.html index 2b8de4a..2227ca9 100644 --- a/picker/wvd/filePicker.html +++ b/picker/wvd/filePicker.html @@ -1,7 +1,33 @@ + + + + + Select Device File + + + - + + + + + + \ No newline at end of file diff --git a/picker/wvd/filePicker.js b/picker/wvd/filePicker.js index 41e7af2..308859b 100644 --- a/picker/wvd/filePicker.js +++ b/picker/wvd/filePicker.js @@ -2,9 +2,28 @@ import "../../protobuf.min.js"; import "../../license_protocol.js"; import { SettingsManager } from "../../util.js"; -document.getElementById('fileInput').addEventListener('change', async (event) => { - const file = event.target.files[0]; - await SettingsManager.importDevice(file).then(() => { - window.close(); - }); -}); \ No newline at end of file +document + .getElementById("fileInput") + .addEventListener("change", async (event) => { + const files = event.target.files; + + if (!files || files.length === 0) { + console.log("No file selected."); + return; + } + + const file = files[0]; + + try { + console.log(`Importing: ${file.name}`); + await SettingsManager.importDevice(file); + + console.log("File imported successfully. Closing window."); + window.close(); + } catch (error) { + console.error("An error occurred during file import:", error); + alert( + `Failed to import "${file.name}". Please check the console for details.` + ); + } + }); From eae22100e86b17d460ed0089d5ef777344977356 Mon Sep 17 00:00:00 2001 From: fairy-root Date: Tue, 1 Jul 2025 00:03:31 +0100 Subject: [PATCH 2/3] remove styling... --- README.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/README.md b/README.md index 8521cc9..0b501e8 100644 --- a/README.md +++ b/README.md @@ -11,22 +11,12 @@ Modifies the challenge before it reaches the web player and retrieves the decryp ---
-

OLD UI

Old
-

NEW UI

New
From 3ab073d607dbf6d86848b5aeed91960e46deac5e Mon Sep 17 00:00:00 2001 From: fairy-root Date: Tue, 1 Jul 2025 00:17:09 +0100 Subject: [PATCH 3/3] updated the icon image... --- images/icon-128.png | Bin 24198 -> 15697 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/icon-128.png b/images/icon-128.png index 4938138754660c8aaea9a118beb60ded6d0bdc53..103fe8388b54fc405145fbb79a8e9695ca4f6cba 100644 GIT binary patch literal 15697 zcmbVz30RZI_WmR!tO@}kf}q48OC>-6ML>|Kpty4tF|;mOSQQ}x$|C9qh=L%9D_TUf z+FBcH5Nl~g4aiaz#id2G3K1$;w}4bYMg5W(&Ff9!yAR=?4$5MJy~FA0zxSp@qe_yv5#lNsI$?* z!bIV`x!%&a)z0FuI7zs3@@g53M##r6StgdQ3Qy!n!Xu+&eYxs$7rC71FkkMHiSzjL zWYfc=q61Uo!xyE_50<8`l6r-4{ibkylD$E|>hMG{CwX;DY=U>PFPF&mhQH(2E?f>7 zlDNv3I~6a;5zY(ZOpl8X=S+0=aFV)C@Z?PLa(4BYz<2lHaoqT>UM_r37gu*DzN@;l0p*#^74;deO`k%3{-p>eXc@iAoaFsVy;O!(^X*u(@F>pC=678REmmk<^AA4CuR{C^ezXy?rv zTI1j9vU>H<5($X`>%fdbK>qFMgy0lexXZ%ugt)cw((r(Fpr#GBM&>;|K3tp_7atrK z7xU3kK_6A-xVbq`Vz@8Yjqm2_Kzdmzgi3?N3Rw~ zhP%jOBe|R*Aibx@#l*$K!l0e|Kfj+feR@!QTtsvX{E)D4<}}W%faxBtULGD!ZqBYm z-Ffr8XT>HYieshWv;2Lz0FQHYbeMOTo9m=WQqOQFFV6^1r*QWPVNPQH1UIlHY=WoQ zL+lnFF8w&)KTf(9li=h0FqrS*<{IJQF-hzscAMnkG{Iwnhm*w1W1^FLgm{v~%`L($ z+-=gw`3vHsAqd4W|Faw%nwUM_fzb)z*ObBFSrooz@NY5E96}gxu@nb_FIS2g5FW-I zd>#F75cuyb(1=Zn3J0No!wb!@gt&;rByoKB)JQ<tJzpXBA_tZ2iy5yHE0V_54Wc|4sQp>Cz~1Y-BiO zRu}I7Zq9$l#(y#AKLy@@XAa~(j>D4Z*s!>y1jqrJN&jMu3r?sSmbv^Z0m*OwlzhRJ z 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 E039*S$^ZZW literal 24198 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 z

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