This sets up ComfyUI Zluda for AMD devices without a system Python installation, venvs or magic scripts.
It assumes you're using up to date Windows development tools and know your way around a terminal
- Enable "Developer Mode" in Windows
This sets up ComfyUI Zluda for AMD devices without a system Python installation, venvs or magic scripts.
It assumes you're using up to date Windows development tools and know your way around a terminal
| const MAX = Number.MAX_SAFE_INTEGER | |
| const BRACKETS = { | |
| AU_2025: [ | |
| [ 0, 18200, 0.00 ], | |
| [ 18201, 45000, 0.16 ], | |
| [ 45001, 135000, 0.30 ], | |
| [ 135001, 190000, 0.37 ], | |
| [ 190001, MAX, 0.45 ], | |
| ], | |
| AU_2024: [ |
| function echo(value) { | |
| Deno.core.print("called with " + value) | |
| } | |
| Deno.core.ops.op_register_func(echo) |
| set -ev | |
| rm -rf $HOME/.local/zenith | |
| mkdir -p $HOME/.local/zenith/bin | |
| wget https://github.com/bvaisvil/zenith/releases/latest/download/zenith.x86_64-unknown-linux-musl.tgz -O $HOME/.local/zenith/bin/zenith.tgz | |
| tar -C $HOME/.local/zenith/bin -xzf $HOME/.local/zenith/bin/zenith.tgz | |
| rm -rf $HOME/.local/zenith/bin/zenith.tgz | |
| chmod +x $HOME/.local/zenith/bin/zenith |
| (() => { | |
| // Styles to apply | |
| const styles = { | |
| fontSize: '30px', | |
| fontFamily: '"Noto Serif Thai", serif', | |
| } | |
| // Add fonts if they don't exist | |
| const font_url = "https://fonts.googleapis.com/css2?family=Noto+Serif+Thai&display=swap"; | |
| if (!document.head.querySelector(`link[href="${font_url}"]`)) { |
| { | |
| "compilerOptions": { | |
| // Resolution (adjust to use case) | |
| "target": "ESNext", | |
| "module": "CommonJS", | |
| "moduleResolution": "Node16", | |
| "lib": ["ESNext"], | |
| "types": ["node"], | |
| // Super strict |
Used to recursively dynamically generate an object where the properties are jest.fn() functions.
Behind the scenes it uses a JavaScript Proxy to detect if a property on the created object is being
accessed or being invoked. If it's being invoked it generates a jest.fn() and uses that, if it's
being accessed it creates a new mock proxy. This allows for mocks to be generated for objects
dynamically and deeply.
| // Source of https://www.npmjs.com/package/physical-cpu-count | |
| 'use strict' | |
| const os = require('os') | |
| const childProcess = require('child_process') | |
| function exec (command) { | |
| const output = childProcess.execSync(command, {encoding: 'utf8'}) | |
| return output |
| class LocalStorageAsync { | |
| static DatabaseKey = 'LocalStorageAsync.DatabaseKey' | |
| static DatabaseStoreKey = 'LocalStorageAsync.DatabaseStoreKey' | |
| #hasLoaded | |
| constructor() { | |
| this.#hasLoaded = new Promise((resolve, reject) => { | |
| let dRequest = indexedDB.deleteDatabase(LocalStorageAsync.DatabaseKey) | |
| dRequest.onerror = function() { |