diff --git a/CHANGELOG.md b/CHANGELOG.md
index f465500..5f4ce59 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,472 +1,13 @@
-# v1.3.6
+# v0.1.0
+First beta release of Gupaxx.
+This version is only made for testing purposes and have feedbacks.
+
## Changes
-* [Remote Node](https://github.com/hinto-janai/gupax#remote-monero-nodes) changes:
- - Added `xmr{1,2,3}.rs.me` (thanks @SChernykh [#80](https://github.com/hinto-janai/gupax/issues/79))
- - Removed `moneronode.ddns.net` (thanks @dukethorion [#83](https://github.com/hinto-janai/gupax/issues/83))
- - Removed `bunkernet.ddns.net`
- - Removed `ru.poiuty.com`
+See [DIFFERENCES.md](DIFFERENCES.md)
## Fixes
-- Non-responding nodes not being sorted by ping speed
+See DIFFERENCES.md
## Bundled Versions
* [`P2Pool v3.10`](https://github.com/SChernykh/p2pool/releases/tag/v3.10)
* [`XMRig v6.21.1`](https://github.com/xmrig/xmrig/releases/tag/v6.21.1)
-
-
----
-
-
-# v1.3.5
-## Fixes
-* Fix flickering `0s` XMRig uptime (thanks @Tomoyukiryu & @Burner8 [#77](https://github.com/hinto-janai/gupax/pull/77))
-
-## Bundled Versions
-* [`P2Pool v3.10`](https://github.com/SChernykh/p2pool/releases/tag/v3.10)
-* [`XMRig v6.21.0`](https://github.com/xmrig/xmrig/releases/tag/v6.21.0)
-
-
----
-
-
-# v1.3.4
-## Fixes
-* Domain parsing is more relaxed, allows subdomains with longer TLDs (thanks @soupslurpr [#67](https://github.com/hinto-janai/gupax/pull/67))
-* ANSI escape sequences in Windows P2Pool/XMRig terminal output ([#71](https://github.com/hinto-janai/gupax/pull/71))
-* P2Pool appearing green (synchronized) on false-positives ([#75](https://github.com/hinto-janai/gupax/pull/75))
-
-## Bundled Versions
-* [`P2Pool v3.10`](https://github.com/SChernykh/p2pool/releases/tag/v3.10)
-* [`XMRig v6.21.0`](https://github.com/xmrig/xmrig/releases/tag/v6.21.0)
-
-
----
-
-
-# v1.3.3
-## Changes
-* Crashes will now create a file on disk with debug information ([#59](https://github.com/hinto-janai/gupax/pull/59))
- | OS | Path |
- |----------|------|
- | Windows | `C:\Users\USER\AppData\Roaming\Gupax\crash.txt` |
- | macOS | `/Users/USER/Library/Application Support/Gupax/crash.txt` |
- | Linux | `/home/USER/.local/share/gupax/crash.txt` |
-* [Remote Node](https://github.com/hinto-janai/gupax#remote-monero-nodes) changes:
- - Removed `xmr.theuplink.net`
-
-## Fixes
-* P2Pool `[Simple]`'s backup hosts option will only include green/yellow nodes (<300ms ping) ([#65](https://github.com/hinto-janai/gupax/pull/65))
-* P2Pool ping now verifies node is synchronized ([#63](https://github.com/hinto-janai/gupax/pull/63))
-* XMRig `[Simple]` tab slider overflow ([#60](https://github.com/hinto-janai/gupax/pull/60))
-* P2Pool `[Simple]` tab height overflow (https://github.com/hinto-janai/gupax/commit/b4a4e83457c8fc353e75ddf6c284bd41422f0db4)
-
-## Bundled Versions
-* [`P2Pool v3.9`](https://github.com/SChernykh/p2pool/releases/tag/v3.9)
-* [`XMRig v6.21.0`](https://github.com/xmrig/xmrig/releases/tag/v6.21.0)
-
-
----
-
-
-# v1.3.2
-## Updates
-* Added window scaling option (`0.1..2.0` pixel scaling multiplier)
-* [Remote Node](https://github.com/hinto-janai/gupax#remote-monero-nodes) changes:
- - Removed `oracle.netrix.cc`
-
-## Bundled Versions
-* [`P2Pool v3.7`](https://github.com/SChernykh/p2pool/releases/tag/v3.7)
-* [`XMRig v6.20.0`](https://github.com/xmrig/xmrig/releases/tag/v6.20.0)
-
-
----
-
-
-# v1.3.1
-## Fixes
-* Auto update issue ([#40](https://github.com/hinto-janai/gupax/issues/40))
-* macOS launch issue ([#39](https://github.com/hinto-janai/gupax/issues/39))
-
-## Bundled Versions
-* [`P2Pool v3.5`](https://github.com/SChernykh/p2pool/releases/tag/v3.5)
-* [`XMRig v6.20.0`](https://github.com/xmrig/xmrig/releases/tag/v6.20.0)
-
-
----
-
-
-# v1.3.0
-## Updates
-* Added P2Pool [backup host support](https://github.com/SChernykh/p2pool/blob/master/docs/COMMAND_LINE.MD#multiple-backup-hosts). `[Simple]` will fallback to next fastest nodes, `[Advanced]` will fallback to all other nodes in list.
-* [Remote Node](https://github.com/hinto-janai/gupax#remote-monero-nodes) changes:
- - Added `sf.xmr.support`
- - Added `node.cryptocano.de`
- - Added `bunkernet.ddns.net`
- - Added `oracle.netrix.cc`
- - Added `fbx.tranbert.com`
- - Removed `xmr.aa78i2efsewr0neeknk.xyz`
- - Removed `node.yeetin.me`
- - Removed `monero2.10z.com.ar`
- - Removed `node.moneroworld.com`
- - Removed `de.poiuty.com`
- - Removed `m1.poiuty.com`
- - Removed `reynald.ro`
- - Removed `monero.homeqloud.com`
- - Removed `xmr.foxpro.su`
- - Removed `radishfields.hopto.org`
- - Removed `node.sethforprivacy.com`
-
-## Bundled Versions
-* [`P2Pool v3.5`](https://github.com/SChernykh/p2pool/releases/tag/v3.5)
-* [`XMRig v6.20.0`](https://github.com/xmrig/xmrig/releases/tag/v6.20.0)
-
-
----
-
-
-# v1.2.3
-## Updates
-* Added ARM (Apple Silicon) macOS releases (bundle includes ARM P2Pool/XMRig)
-* [Remote Node](https://github.com/hinto-janai/gupax#remote-monero-nodes) changes:
- - Added `xmr.support`
- - Added `xmr.theuplink.net`
-
-## Fixes
-* Fixed macOS Tor+TLS issue, updates are now via Tor by default ([#28](https://github.com/hinto-janai/gupax/issues/28))
-* Fixed undisplayable ANSI codes in P2Pool's terminal ([#24](https://github.com/hinto-janai/gupax/issues/34))
-
-## Bundled Versions
-* [`P2Pool v3.4`](https://github.com/SChernykh/p2pool/releases/tag/v3.4)
-* [`XMRig v6.19.3`](https://github.com/xmrig/xmrig/releases/tag/v6.19.3)
-
-
----
-
-
-# v1.2.2
-## Updates
-* **UI:** Changed overall style (all text is monospace, darker theme, rounded corners)
-* **P2Pool:** Color status is now `ORANGE` until synchronized
-* **XMRig:** Color status is now `ORANGE` when not mining
-* [Remote Node](https://github.com/hinto-janai/gupax#remote-monero-nodes) changes:
- - Added `node.sethforprivacy.com`
- - Added `node.moneroworld.com`
- - Added `node.yeetin.me`
- - Added `xmr.foxpro.su`
-
-## Fixes
-* Fixed `[Status]` P2Pool stats overflowing sometimes
-* Added help messages on config loading issues
-* Fixed rare crash upon bad config data
-
-## Bundled Versions
-* [`P2Pool v3.3`](https://github.com/SChernykh/p2pool/releases/tag/v3.3)
-* [`XMRig v6.19.2`](https://github.com/xmrig/xmrig/releases/tag/v6.19.2)
-
-
----
-
-
-# v1.2.1
-## Fixes
-* Small internal change to be compatible with `P2Pool v3.2`
-
-## Bundled Versions
-* [`P2Pool v3.2`](https://github.com/SChernykh/p2pool/releases/tag/v3.2)
-* [`XMRig v6.19.1`](https://github.com/xmrig/xmrig/releases/tag/v6.19.1)
-
-
----
-
-
-# v1.2.0
-## Updates
-* Added [`Benchmarks`](https://github.com/hinto-janai/gupax#Status-1) submenu in `Status` tab
- - Your hashrate vs others with the same CPU
- - List of similar CPUs and their stats
- - Data source: [Here](https://github.com/hinto-janai/xmrig-benchmarks) & [here](https://xmrig.com/benchmark)
-* [Remote Node](https://github.com/hinto-janai/gupax#remote-monero-nodes) changes:
- - `+ ADD` p2pool.uk
- - `+ ADD` xmr.aa78i2efsewr0neeknk.xyz
- - `+ ADD` monero.jameswillhoite.com
- - `- REMOVE` fbx.tranbert.com
-
-## Bundled Versions
-* [`P2Pool v3.1`](https://github.com/SChernykh/p2pool/releases/tag/v3.1)
-* [`XMRig v6.19.0`](https://github.com/xmrig/xmrig/releases/tag/v6.19.0)
-
-## PGP Key Change
-Please use the new key to verify releases, [found here](https://github.com/hinto-janai/gupax/blob/main/pgp/hinto-janai.asc), [or here.](https://gupax.io/hinto)
-
-
-Verification
-
-```
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA256
-
-I'm slightly shortening my alias from
-`hinto-janaiyo` to `hinto-janai` and changing to
-this PGP key: 31C5145AAFA5A8DF1C1DB2A6D47CE05FA175A499
-
-This message is signed with the old key,
-2A8F883E016FED0380287FAFB1C5A64B80691E45
-
-Sorry for the inconvenience.
------BEGIN PGP SIGNATURE-----
-
-iHUEARYIAB0WIQQqj4g+AW/tA4Aof6+xxaZLgGkeRQUCZBTRkQAKCRCxxaZLgGke
-RWb4AP0T/n+2XlssCcUHh/6cNq67isJ0v10Hi/drmTPLKvNKjgEAqNavi6+sB1NQ
-Eh6+zWpoydVGzFdEkE5XKmnQ1dm/GQ8=
-=g9YL
------END PGP SIGNATURE-----
-```
-
-
-
----
-
-
-# v1.1.2
-## Fixes
-* **Windows:** Fixed Gupax crashing on certain CPU-based graphics (integrated + basic drivers)
-* **Windows:** Fixed P2Pool Advanced command inputs being ignored
-* **P2Pool/XMRig:** Fixed parsing of `localhost` into `127.0.0.1`
-* **P2Pool/XMRig:** Current (non-saved) text-box values are now used instead of "old" selected values for custom nodes/pools
-* **Log:** Only Gupax console logs will be printed (libraries filtered out)
-
-## Bundled Versions
-* [`P2Pool v3.0`](https://github.com/SChernykh/p2pool/releases/tag/v3.0)
-* [`XMRig v6.19.0`](https://github.com/xmrig/xmrig/releases/tag/v6.19.0)
-
-
----
-
-
-# v1.1.1
-## Updates
-* **Remote Nodes:** Replaced `[Community Monero Nodes]` with known ZMQ-enabled [Remote Nodes](https://github.com/hinto-janai/gupax#remote-monero-nodes). List is sourced from this [daily-updated list based off uptime](https://github.com/hinto-janai/monero-nodes). **This should fix most P2Pool connection related issues.**
-* **P2Pool:** Added warning in `[P2Pool Simple]` tab about privacy/practical downsides when using remote nodes; Hyperlinks to [Running a Local Monero Node](https://github.com/hinto-janai/gupax#running-a-local-monero-node).
-
-## Fixes
-* **Ping:** Fixed ping end lag; Remote node pings are as fast as the slowest ping instead of always taking 10 seconds flat
-* **UI:** Top/Bottom bars are smaller, fixes some UI overflowing or being cramped
-
-## Bundled Versions
-* [`P2Pool v3.0`](https://github.com/SChernykh/p2pool/releases/tag/v3.0)
-* [`XMRig v6.18.1`](https://github.com/xmrig/xmrig/releases/tag/v6.18.1)
-
-
----
-
-
-# v1.1.0
-## Updates
-* **Status:** [Added P2Pool submenu](https://github.com/hinto-janai/gupax#Status)
- - Total payouts across all time
- - Total XMR mined across all time
- - Formatted log lines of ALL payouts (date, amount, block) with sorting options
- - Automatic/Manual calculator for average share/block time
- - P2Pool/Monero stats for difficulty/hashrate/dominance
-* **Status:** Added more process stats
- - P2Pool
- - Current Monero node IP/RPC/ZMQ
- - Current Sidechain
- - Current Monero address
- - XMRig
- - Current Pool IP
- - Current thread usage
-* **Key Shortcut:** Added two shortcuts
- - `C | Left Submenu`
- - `V | Left Submenu`
-* **Command Line:** Added two flags
- - `--payouts Print the P2Pool payout log, payout count, and total XMR mined`
- - `--reset-payouts Reset the permanent P2Pool stats that appear in the [Status] tab`
-
-## Fixes
-* **macOS:** Added warning (and solution) if `Gupax/P2Pool/XMRig` were quarantined by [`Gatekeeper`](https://support.apple.com/en-us/HT202491)
-* **P2Pool/XMRig:** Added a red `Start` button on errors (bad PATH, invalid file, etc) and a solution in the tooltip
-* **P2Pool/XMRig:** Fixed processes sometimes not starting after entering a custom PATH
-* **P2Pool:** Fixed custom node selection sometimes using old values after save
-* Miscellaneous UI changes and fixes
-
-## Bundled Versions
-* [`P2Pool v2.7`](https://github.com/SChernykh/p2pool/releases/tag/v2.7)
-* [`XMRig v6.18.1`](https://github.com/xmrig/xmrig/releases/tag/v6.18.1)
-
-
----
-
-
-# v1.0.0
-[Download here](https://github.com/hinto-janai/gupax/releases/latest) or at https://gupax.io.
-
-[Watch a 3-minute setup guide here.](https://github.com/hinto-janai/gupax#How-To)
-
-## Changes
-* Optimized PTY output handling (less memory usage)
-* Added `Select random node`, `<- Last`, `Next ->` buttons in `P2Pool Simple`
-* Added `Debug Info` screen (`D` key on `About` tab)
-* Added Linux distro build profile
-* Added `21` unit tests
-* Misc fixes/optimizations
-
-## Bundled Versions
-* [`P2Pool v2.6`](https://github.com/SChernykh/p2pool/releases/tag/v2.6)
-* [`XMRig v6.18.1`](https://github.com/xmrig/xmrig/releases/tag/v6.18.1)
-
-
----
-
-
-# v0.9.0
-## Beta Release
-* Connected `[Start/Stop/Restart]` buttons to actual processes:
- - Current state (settings that may or may not be saved) are passed to the process when (re)starting
- - Uptime & Exit status display when process is stopped
- - Added colors for process state:
- ```
- GREEN | Process is online and healthy
- YELLOW | Process is in the middle of (re)starting/stopping
- RED | Process is offline, and failed when exiting
- GRAY | Process is offline
- ```
-* Added keyboard shortcuts:
- ```
- *--------------------------------------*
- | Key shortcuts |
- |--------------------------------------|
- | F11 | Fullscreen |
- | Escape | Quit screen |
- | Left/Right | Switch Tabs |
- | Up | Start/Restart |
- | Down | Stop |
- | S | Save |
- | R | Reset |
- *--------------------------------------*
- ```
-* Added `PTY` (actual terminals) for P2Pool/XMRig:
- - Scrollable logs up to 500k bytes (6000~ lines) before refresh
- - All STDOUT/STDERR relayed to GUI (buffered, lazily read)
- - `Advanced` tabs have input (STDIN) relayed to process (buffered, 1~sec delay)
-* Added `sudo` screen for XMRig (macOS/Linux):
- - Tests password for validity
- - Starts XMRig with `sudo` for MSR mod & hugepages
- - Wipes password memory with zeros after usage
-* Added `Status` tab:
- - Refreshes all stats once per second
- - Gupax/System stats
- - P2Pool stats via API file
- - XMRig stats via HTTP API
-* Added `Simple` XMRig tab:
- - Console
- - Thread slider
- - Pause on active slider (Windows/macOS only)
-* Added `Advanced` XMRig tab:
- - Includes all simple features
- - STDIN input
- - Manual pool database, select/add/edit/delete a custom `Name/IP/Port/RigID` (max 1000 pools), saved at:
- - Windows: `C:\Users\USER\AppData\Roaming\Gupax\pool.toml`
- - macOS: `/Users/USER/Library/Application Support/Gupax/pool.toml`
- - Linux: `/home/USER/.local/share/gupax/pool.toml`
- - Overriding command arguments
- - Manual Monero address option
- - HTTP API IP/Port option
- - TLS option
- - Keepalive option
-* Added `Simple` Gupax tab:
- - Package updater
- - `Auto-update` setting
- - `Update-via-Tor` setting
- - `Ask-before-quit` setting
- - `Save-before-quit` setting
- - `Auto-P2Pool` setting (starts P2Pool on Gupax startup)
- - `Auto-XMRig` setting (starts XMRig on Gupax startup)
-* Added `Advanced` Gupax tab:
- - Includes all simple features
- - P2Pool binary path selector
- - XMRig binary path selector
- - Gupax window width/height adjuster
- - Startup Tab selector
-* Added plowsof to community nodes:
- - Plowsof1: `IP: node.monerodevs.org, RPC: 18089, ZMQ: 18084`
- - Plowsof2: `IP: node2.monerodevs.org, RPC: 18089, ZMQ: 18084`
-* Default resolution change `1280x720, 16:9` -> `1280x960, 4:3`
-* Added fade-in/out of black when resizing resolution
-* Added more internal documentation (`src/README.md`)
-* Added many, many `info` & `debug` logs (accessible via env variable `RUST_LOG`)
-* Bunch of fixes, optimizations, etc.
-
-
----
-
-
-## v0.5.0
-## Prototype Release
-* Added `Simple` P2Pool tab:
- - Monero address input with valid address check (base58 regex)
- - [Community Monero node selector](https://github.com/hinto-janai/gupax/tree/main/README.md#community-monero-nodes)
- - Community node ping button (asynchronous `JSON-RPC` calls to all nodes)
- - Color coded list after ping:
- ```
- <300ms = GREEN
- <1000ms = YELLOW
- <5000ms = RED
- >5000ms = BLACK
- ```
- - `Auto-select` - Pick the fastest node after ping automatically
- - `Auto-ping` - Automatically ping nodes on Gupax startup
-* Added `Advanced` P2Pool tab:
- - Manual node database, select/add/edit/delete a custom `Name/IP/RPC/ZMQ` (max 1000 nodes), saved at:
- - Windows: `C:\Users\USER\AppData\Roaming\Gupax\node.toml`
- - macOS: `/Users/USER/Library/Application Support/Gupax/node.toml`
- - Linux: `/home/USER/.local/share/gupax/node.toml`
- - Overriding command arguments to P2Pool
- - P2Pool main/mini toggle
- - Out/In Peers slider
- - Log level slider
-* Added command arguments:
- ```
- --help Print this help message
- --version Print version and build info
- --state Print Gupax state
- --nodes Print the manual node list
- --no-startup Disable all auto-startup settings for this instance
- --reset-state Reset all Gupax state (your settings)
- --reset-nodes Reset the manual node list in the [P2Pool] tab
- --reset-all Reset both the state and the manual node list
- ```
-* Added fullscreen GUI error handler (Error message + UI buttons for response, Yes/No, Quit, etc)
-* Added a native `File Explorer/Finder/GTK` file selector for picking P2Pool/XMRig binary path in `Gupax` tab
-* Added detailed console log levels `RUST_LOG=(trace|debug|info|warn|error) ./gupax`
-* [Added new PGP key](https://github.com/hinto-janai/gupax/blob/main/pgp/hinto-janai.asc)
-* Created website (HTML/CSS only, no JavaScript): https://gupax.io
-
-
----
-
-
-## v0.1.0
-## Prototype Release
-* Added package updater (by default, via Tor using [`Arti`](https://blog.torproject.org/arti_100_released/))
-* Added [custom icons per OS](https://github.com/hinto-janai/gupax/tree/main/images/icons) (File Explorer, Taskbar, Finder, App header, etc)
-* Added Monero node [`JSON-RPC ping`](https://github.com/hinto-janai/gupax/blob/main/src/node.rs) system, not yet in GUI
-* Added `F11` fullscreen toggle
-* Implemented `Ask before quit`
-* Implemented `Auto-save`
-* Binaries for all platforms (Windows, macOS, Linux)
-* Added state file to save settings:
- - Windows: `C:\Users\USER\AppData\Roaming\Gupax\gupax.toml`
- - macOS: `/Users/USER/Library/Application Support/Gupax/gupax.toml`
- - Linux: `/home/USER/.local/share/gupax/gupax.toml`
-
-
----
-
-
-## v0.0.1
-## Prototype Release
-* Functional (slightly buggy) GUI external
-* Elements have state (buttons, sliders, etc)
-* No internals, no connections, no processes
-* Only binaries for x86_64 Windows/Linux for now
diff --git a/Cargo.lock b/Cargo.lock
index 7440322..c605b70 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -142,6 +142,12 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "aligned-vec"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1"
+
[[package]]
name = "allocator-api2"
version = "0.2.16"
@@ -244,6 +250,12 @@ version = "1.0.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+[[package]]
+name = "arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
+
[[package]]
name = "arboard"
version = "3.3.2"
@@ -260,6 +272,17 @@ dependencies = [
"x11rb",
]
+[[package]]
+name = "arg_enum_proc_macro"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.55",
+]
+
[[package]]
name = "arrayref"
version = "0.3.7"
@@ -349,7 +372,7 @@ dependencies = [
"async-lock 3.3.0",
"async-task",
"concurrent-queue",
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
"futures-lite 2.3.0",
"slab",
]
@@ -409,7 +432,7 @@ dependencies = [
"futures-io",
"futures-lite 2.3.0",
"parking",
- "polling 3.5.0",
+ "polling 3.6.0",
"rustix 0.38.32",
"slab",
"tracing",
@@ -496,7 +519,7 @@ checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -525,13 +548,13 @@ checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
[[package]]
name = "async-trait"
-version = "0.1.78"
+version = "0.1.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -614,6 +637,29 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+[[package]]
+name = "av1-grain"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf"
+dependencies = [
+ "anyhow",
+ "arrayvec",
+ "log",
+ "nom",
+ "num-rational",
+ "v_frame",
+]
+
+[[package]]
+name = "avif-serialize"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2"
+dependencies = [
+ "arrayvec",
+]
+
[[package]]
name = "backtrace"
version = "0.3.71"
@@ -699,6 +745,12 @@ version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+[[package]]
+name = "bitstream-io"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06c9989a51171e2e81038ab168b6ae22886fe9ded214430dbb4f41c28cf176da"
+
[[package]]
name = "block"
version = "0.1.6"
@@ -761,13 +813,19 @@ dependencies = [
"async-channel",
"async-lock 3.3.0",
"async-task",
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
"futures-io",
"futures-lite 2.3.0",
"piper",
"tracing",
]
+[[package]]
+name = "built"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d17f4d6e4dc36d1a02fbedc2753a096848e7c1b0772f7654eab8e2c927dd53"
+
[[package]]
name = "bumpalo"
version = "3.15.4"
@@ -791,7 +849,7 @@ checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -835,7 +893,7 @@ checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
dependencies = [
"bitflags 2.5.0",
"log",
- "polling 3.5.0",
+ "polling 3.6.0",
"rustix 0.38.32",
"slab",
"thiserror",
@@ -878,6 +936,16 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+[[package]]
+name = "cfg-expr"
+version = "0.15.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d"
+dependencies = [
+ "smallvec",
+ "target-lexicon",
+]
+
[[package]]
name = "cfg-if"
version = "1.0.0"
@@ -1287,7 +1355,7 @@ dependencies = [
"glow",
"glutin",
"glutin-winit",
- "image",
+ "image 0.24.9",
"js-sys",
"log",
"objc",
@@ -1365,7 +1433,7 @@ checksum = "3f4a6962241a76da5be5e64e41b851ee1c95fda11f76635522a3c82b119b5475"
dependencies = [
"egui",
"enum-map",
- "image",
+ "image 0.24.9",
"log",
"mime_guess2",
"serde",
@@ -1427,7 +1495,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -1448,7 +1516,7 @@ checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -1459,7 +1527,7 @@ checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -1623,9 +1691,9 @@ dependencies = [
[[package]]
name = "fastrand"
-version = "2.0.1"
+version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
[[package]]
name = "fdeflate"
@@ -1724,7 +1792,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -1790,7 +1858,7 @@ version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
dependencies = [
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
"futures-core",
"futures-io",
"parking",
@@ -1805,7 +1873,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -2042,7 +2110,7 @@ dependencies = [
"flate2",
"hyper",
"hyper-tls",
- "image",
+ "image 0.25.0",
"is_elevated",
"log",
"lzma-sys",
@@ -2109,6 +2177,12 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
[[package]]
name = "hermit-abi"
version = "0.1.19"
@@ -2194,7 +2268,7 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
dependencies = [
- "quick-error",
+ "quick-error 1.2.3",
]
[[package]]
@@ -2288,19 +2362,53 @@ name = "image"
version = "0.24.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "num-traits",
+ "png",
+]
+
+[[package]]
+name = "image"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9b4f005360d32e9325029b38ba47ebd7a56f3316df09249368939562d518645"
dependencies = [
"bytemuck",
"byteorder",
"color_quant",
"exr",
"gif",
- "jpeg-decoder",
+ "image-webp",
"num-traits",
"png",
"qoi",
+ "ravif",
+ "rayon",
+ "rgb",
"tiff",
+ "zune-core",
+ "zune-jpeg",
]
+[[package]]
+name = "image-webp"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a84a25dcae3ac487bc24ef280f9e20c79c9b1a3e5e32cbed3041d1c514aa87c"
+dependencies = [
+ "byteorder",
+ "thiserror",
+]
+
+[[package]]
+name = "imgref"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126"
+
[[package]]
name = "indexmap"
version = "2.2.6"
@@ -2329,6 +2437,17 @@ dependencies = [
"cfg-if",
]
+[[package]]
+name = "interpolate_name"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.55",
+]
+
[[package]]
name = "io-lifetimes"
version = "1.0.11"
@@ -2358,6 +2477,15 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itoa"
version = "1.0.10"
@@ -2400,9 +2528,6 @@ name = "jpeg-decoder"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
-dependencies = [
- "rayon",
-]
[[package]]
name = "js-sys"
@@ -2448,6 +2573,17 @@ version = "0.2.153"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+[[package]]
+name = "libfuzzer-sys"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7"
+dependencies = [
+ "arbitrary",
+ "cc",
+ "once_cell",
+]
+
[[package]]
name = "libloading"
version = "0.7.4"
@@ -2524,6 +2660,15 @@ version = "0.4.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+[[package]]
+name = "loop9"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062"
+dependencies = [
+ "imgref",
+]
+
[[package]]
name = "lzma-sys"
version = "0.1.20"
@@ -2544,6 +2689,16 @@ dependencies = [
"libc",
]
+[[package]]
+name = "maybe-rayon"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
+dependencies = [
+ "cfg-if",
+ "rayon",
+]
+
[[package]]
name = "memchr"
version = "2.7.1"
@@ -2617,6 +2772,12 @@ dependencies = [
"unicase",
]
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
[[package]]
name = "miniz_oxide"
version = "0.7.2"
@@ -2707,6 +2868,12 @@ dependencies = [
"jni-sys",
]
+[[package]]
+name = "new_debug_unreachable"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
+
[[package]]
name = "nichi"
version = "0.5.1"
@@ -2765,6 +2932,22 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "noop_proc_macro"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
+
[[package]]
name = "ntapi"
version = "0.4.1"
@@ -2774,12 +2957,34 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "num-bigint"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
[[package]]
name = "num-conv"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+[[package]]
+name = "num-derive"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.55",
+]
+
[[package]]
name = "num-format"
version = "0.4.4"
@@ -2790,6 +2995,27 @@ dependencies = [
"itoa",
]
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
[[package]]
name = "num-traits"
version = "0.2.18"
@@ -2827,7 +3053,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -2955,7 +3181,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -3114,7 +3340,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
dependencies = [
"atomic-waker",
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
"futures-io",
]
@@ -3155,12 +3381,13 @@ dependencies = [
[[package]]
name = "polling"
-version = "3.5.0"
+version = "3.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
+checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6"
dependencies = [
"cfg-if",
"concurrent-queue",
+ "hermit-abi 0.3.9",
"pin-project-lite",
"rustix 0.38.32",
"tracing",
@@ -3245,6 +3472,19 @@ name = "profiling"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58"
+dependencies = [
+ "profiling-procmacros",
+]
+
+[[package]]
+name = "profiling-procmacros"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd"
+dependencies = [
+ "quote",
+ "syn 2.0.55",
+]
[[package]]
name = "qoi"
@@ -3261,6 +3501,12 @@ version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+[[package]]
+name = "quick-error"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
+
[[package]]
name = "quick-xml"
version = "0.31.0"
@@ -3309,6 +3555,56 @@ dependencies = [
"getrandom",
]
+[[package]]
+name = "rav1e"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9"
+dependencies = [
+ "arbitrary",
+ "arg_enum_proc_macro",
+ "arrayvec",
+ "av1-grain",
+ "bitstream-io",
+ "built",
+ "cfg-if",
+ "interpolate_name",
+ "itertools",
+ "libc",
+ "libfuzzer-sys",
+ "log",
+ "maybe-rayon",
+ "new_debug_unreachable",
+ "noop_proc_macro",
+ "num-derive",
+ "num-traits",
+ "once_cell",
+ "paste",
+ "profiling",
+ "rand",
+ "rand_chacha",
+ "simd_helpers",
+ "system-deps",
+ "thiserror",
+ "v_frame",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "ravif"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234"
+dependencies = [
+ "avif-serialize",
+ "imgref",
+ "loop9",
+ "quick-error 2.0.1",
+ "rav1e",
+ "rayon",
+ "rgb",
+]
+
[[package]]
name = "raw-window-handle"
version = "0.5.2"
@@ -3323,9 +3619,9 @@ checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544"
[[package]]
name = "rayon"
-version = "1.9.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
dependencies = [
"either",
"rayon-core",
@@ -3445,6 +3741,15 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "rgb"
+version = "0.8.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8"
+dependencies = [
+ "bytemuck",
+]
+
[[package]]
name = "ring"
version = "0.17.8"
@@ -3624,7 +3929,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -3646,7 +3951,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -3753,6 +4058,15 @@ version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+[[package]]
+name = "simd_helpers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6"
+dependencies = [
+ "quote",
+]
+
[[package]]
name = "slab"
version = "0.4.9"
@@ -3922,9 +4236,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.53"
+version = "2.0.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
+checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0"
dependencies = [
"proc-macro2",
"quote",
@@ -3945,6 +4259,19 @@ dependencies = [
"windows 0.52.0",
]
+[[package]]
+name = "system-deps"
+version = "6.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
+dependencies = [
+ "cfg-expr",
+ "heck",
+ "pkg-config",
+ "toml 0.8.12",
+ "version-compare",
+]
+
[[package]]
name = "tar"
version = "0.4.40"
@@ -3956,6 +4283,12 @@ dependencies = [
"xattr",
]
+[[package]]
+name = "target-lexicon"
+version = "0.12.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
+
[[package]]
name = "tempfile"
version = "3.10.1"
@@ -3963,7 +4296,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
dependencies = [
"cfg-if",
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
"rustix 0.38.32",
"windows-sys 0.52.0",
]
@@ -4014,7 +4347,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -4175,7 +4508,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -4279,7 +4612,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -4422,12 +4755,29 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+[[package]]
+name = "v_frame"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b"
+dependencies = [
+ "aligned-vec",
+ "num-traits",
+ "wasm-bindgen",
+]
+
[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+[[package]]
+name = "version-compare"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
+
[[package]]
name = "version_check"
version = "0.9.4"
@@ -4518,7 +4868,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
"wasm-bindgen-shared",
]
@@ -4552,7 +4902,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -5461,7 +5811,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -5519,6 +5869,12 @@ dependencies = [
"pkg-config",
]
+[[package]]
+name = "zune-core"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
+
[[package]]
name = "zune-inflate"
version = "0.2.54"
@@ -5528,6 +5884,15 @@ dependencies = [
"simd-adler32",
]
+[[package]]
+name = "zune-jpeg"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec866b44a2a1fd6133d363f073ca1b179f438f99e7e5bfb1e33f7181facfe448"
+dependencies = [
+ "zune-core",
+]
+
[[package]]
name = "zvariant"
version = "3.15.1"
diff --git a/Cargo.toml b/Cargo.toml
index 64a642f..96c3584 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -28,9 +28,9 @@ default = []
distro = []
[dependencies]
-anyhow = "1.0.80"
+anyhow = "1.0.81"
benri = "0.1.12"
-bytes = "1.5.0"
+bytes = "1.6.0"
dirs = "5.0.1"
#--------------------------------------------------------------------------------
egui = "0.26.2"
@@ -56,25 +56,25 @@ eframe = { version = "0.26.2", features = ["wgpu"] }
#egui_glow = { path = "external/egui/crates/egui_glow"}
#egui_extras = { path = "external/egui/crates/egui_extras", features = ["image"] }
#--------------------------------------------------------------------------------
-env_logger = "0.11.2"
-figment = { version = "0.10.14", features = ["toml"] }
+env_logger = "0.11.3"
+figment = { version = "0.10.15", features = ["toml"] }
hyper = {version="0.14.28", features=["client", "http1"]}
hyper-tls = "0.5.0"
-image = { version = "0.24.9", features = ["png"] }
-log = "0.4.20"
+image = { version = "0.25.0", features = ["png"] }
+log = "0.4.21"
num-format = { version = "0.4.4", default-features = false }
once_cell = "1.19.0"
portable-pty = "0.8.1"
rand = "0.8.5"
-regex = { version = "1.10.3", default-features = false, features = ["perf"] }
-rfd = "0.14.0"
+regex = { version = "1.10.4", default-features = false, features = ["perf"] }
+rfd = "0.14.1"
serde = { version = "1.0.197", features = ["rc", "derive"] }
serde_json = "1.0.114"
-sysinfo = { version = "0.30.5", default-features = false }
+sysinfo = { version = "0.30.7", default-features = false }
tls-api = "0.9.0"
tokio = { version = "1.36.0", features = ["rt", "time", "macros", "process"] }
-toml = { version = "0.8.10", features = ["preserve_order"] }
-walkdir = "2.4.0"
+toml = { version = "0.8.12", features = ["preserve_order"] }
+walkdir = "2.5.0"
zeroize = "1.7.0"
strsim = "0.11.0"
strip-ansi-escapes = "0.2.0"
diff --git a/DIFFERENCES.md b/DIFFERENCES.md
new file mode 100644
index 0000000..fe76812
--- /dev/null
+++ b/DIFFERENCES.md
@@ -0,0 +1,24 @@
+# Differences with upstream [Gupax](https://github.com/hinto-janai/gupax)
+
+## Integration of the XvB Raffle
+
+A new fancy tab to apply an algorithm of distribution of HR to xmrig (see [NOTES_ALGORITHM](NOTES_ALGORITHMS)) with your token from XvB.
+This tab also includes a console output to let you track if everything is working and what are the decision of the algorithm, and show you personal stats from XvB.
+
+A new column in Status Tab to see public stats from the raffle.
+
+## Removed functionality
+
+Updates by tor. The version of the crate used was outdated, plagued with security concerns and bloated the binary.
+It was only for updates, and it is not useful for this beta release.
+This functionality will be re-added for the stable release.
+
+## Bugfixes (visuals and performances)
+
+The rendering of Tabs has been modified so that the minimum stated size of the window is capable to show everything. In Upstream middles panels often overlap on the bottom.
+
+The rendering of the benchmark table and of console outputs were calculating every line at the same time. Now it only renders what you see. It is a significant improvement for your processor, and you can feel the difference if it is not very powerful.
+
+## Security
+
+With the upgrade of dependencies, cargo audit show only one allowed warning instead of 5 vulnerabilities and 4 allowed warnings.
diff --git a/README.md b/README.md
index e8cbd40..bc15702 100644
--- a/README.md
+++ b/README.md
@@ -1,728 +1,91 @@
-
-
+![Gupax logo](assets/images/banner.png)
-Gupax is a GUI for mining [**Monero**](https://github.com/monero-project/monero) on [**P2Pool**](https://github.com/SChernykh/p2pool), using [**XMRig**](https://github.com/xmrig/xmrig).
+## Status of development
-**To see a 3-minute video guide on how to set-up Gupax: [click here.](#Guide)**
+This fork is a work in progress, trying to achieve the bounty [**A fork of GUPAX integrating the XMRvsBeast Bonus Hashrate Raffle for P2Pool Miners**](https://bounties.monero.social/posts/105).
-[![CI](https://github.com/hinto-janai/gupax/actions/workflows/ci.yml/badge.svg)](https://github.com/hinto-janai/gupax/actions/workflows/ci.yml) [![gupax.io](https://github.com/hinto-janai/gupax/actions/workflows/download.yml/badge.svg)](https://github.com/hinto-janai/gupax/actions/workflows/download.yml) [![Remote Node Ping](https://github.com/hinto-janai/gupax/actions/workflows/ping.yml/badge.svg)](https://github.com/hinto-janai/gupax/actions/workflows/ping.yml)
+It is not yet ready for stable release. It works in theory but not yet tested enough. Please feel free to test the beta release and open an issue if you encounter an anomaly.
-
+You can see the progress with [TODO](TODO_XMRvsBeast.md)
+
+## Gupaxx
+
+Gupaxx is a fork of [**Gupax**](https://github.com/hinto-janai/gupax) integrating the [XMRvsBeast Raffle](https://xmrvsbeast.com).
+
+[![CI](https://github.com/cyrix126/gupaxx/actions/workflows/ci.yml/badge.svg)](https://github.com/cyrix126/gupaxx/actions/workflows/ci.yml)
## Contents
-* [What is Monero/P2Pool/XMRig/Gupax?](#what-is-monerop2poolxmriggupax)
-* [Guide](#Guide)
-* [Simple](#Simple)
- - [Status](#Status)
- - [Gupax](#Gupax)
- - [P2Pool](#P2Pool)
- - [XMRig](#XMRig)
-* [Advanced](#Advanced)
- - [Verifying](#Verifying)
- - [Running a Local Monero Node](#running-a-local-monero-node)
- - [Command Line](#Command-Line)
- - [Key Shortcuts](#Key-Shortcuts)
- - [Resolution](#Resolution)
- - [Tor/Arti](#TorArti)
- - [Logs](#Logs)
- - [Disk](#Disk)
- - [Swapping P2Pool/XMRig](#Swapping-P2PoolXMRig)
- - [Status](#Status-1)
- - [Gupax](#Gupax-1)
- - [P2Pool](#P2Pool-1)
- - [XMRig](#XMRig-1)
-* [Connections](#Connections)
-* [Remote Monero Nodes](#remote-monero-nodes)
-* [Build](#Build)
- - [General Info](#General-Info)
- - [Linux](#Linux)
- - [Building for a distribution](#building-for-a-distribution)
- - [macOS](#macOS)
- - [Windows](#Windows)
-* [License](#License)
-* [FAQ](#FAQ)
- - [Where are updates downloaded from?](#where-are-updates-downloaded-from)
- - [P2Pool connection errors](#p2pool-connection-errors)
- - [Can I quit mid-update?](#can-i-quit-mid-update)
- - [Bundled vs Standalone](#bundled-vs-standalone)
- - [How much memory does Gupax use?](#how-much-memory-does-gupax-use)
- - [How is sudo handled? (on macOS/Linux)](#how-is-sudo-handled-on-macoslinux)
- - [Why does Gupax need to be Admin? (on Windows)](#why-does-gupax-need-to-be-admin-on-windows)
+* [What is Gupaxx/XMRvsBeast?](#what-is-gupaxx-xmrvsbeast)
+* [Guide](#Guide)
+* [XvB Tab](#XvB Tab)
+ - [Console](#Console)
+ - [Token Input](#Token Input)
+ - [Private stats](#Private stats)
+* [XvB Raffle](#XvB Raffle)
+* [Other changes](#Other changes)
+* [License](#License)
-## What is Monero/P2Pool/XMRig/Gupax?
-[**`Monero`**](https://getmonero.org) is a secure, private, and untraceable cryptocurrency.
+## What is Gupaxx/XMRvsBeast?
+[**`Gupaxx`**](https://getmonero.org) is a fork of [*Gupax*](https://github.com/hinto-janai/gupax) that integrate the [XMRvsBeast raffle](https://xmrvsbeast.com).
-[Monero GUI](https://github.com/monero-project/monero-gui) allows you to run a Monero node (among other things).
+This fork add an easy way to distribute your hashrate between P2pool and XMRvsBeast to participate in the raffle to win more xmr while supporting the p2pool network.
----
+To have a detailed explication of Gupax, see the [README](https://github.com/hinto-janai/gupax) of upstream.
-[**`P2Pool`**](https://github.com/SChernykh/p2pool) allows you to create/join decentralized peer-to-peer Monero mining pools.
-
-P2Pool as a concept was [first developed for Bitcoin](https://en.bitcoin.it/wiki/P2Pool) although [failed to stay relevant for various reasons](https://github.com/p2pool/p2pool).
-
-In late 2021, [`SChernykh`](https://github.com/SChernykh) rewrote P2Pool from scratch for Monero.
-
-P2Pool combines the best of solo mining and traditional pool mining:
-
-* **It's decentralized:** There's no central server that can be shutdown or pool admin that controls your hashrate
-* **It's permissionless:** It's peer-to-peer so there's no one to decide who can and cannot mine on the pool
-* **It's trustless:** Funds are never in custody, all pool blocks pay out to miners directly and immediately
-* **0% transaction fee, 0 payout fee, immediate ~0.0003 XMR minimum payout**
-
----
-
-[**`XMRig`**](https://github.com/xmrig/xmrig) is an optimized miner that can mine Monero.
-
-Both Monero and P2Pool have built in miners but XMRig is quite faster than both of them. Due to issues like [anti-virus flagging](https://github.com/monero-project/monero-gui/pull/3829#issuecomment-1018191461), it is not feasible to integrate XMRig directly into Monero.
-
----
-
-[**`Gupax`**](https://github.com/hinto-janai/gupax) is a GUI that helps manage P2Pool & XMRig (both originally CLI-only).
-
-
-
-**`XMRig`** mines to **`P2Pool`**
-
-**`P2Pool`** fetches blocks from a **`Monero node`**
-
-**`Monero GUI`** runs the **`Monero node`**
-
-**`Gupax`** runs **`P2Pool/XMRig`**
-
-
-
----
-
-
-
-By default, Gupax will use a [Remote Monero Node](#remote-monero-nodes) so you don't have to run [your own Monero node](#running-a-local-monero-node) to start mining on P2Pool.
-
-
## Guide
-https://user-images.githubusercontent.com/101352116/207978455-6ffdc0cc-204c-4594-9a2f-e10c505745bc.mp4
-
-1. [Download the bundled version of Gupax](https://github.com/hinto-janai/gupax/releases)
+
+1. [Download the bundled version of Gupaxx](https://github.com/Cyrix126/gupaxx/releases)
2. Extract
-3. Launch Gupax
+3. Launch Gupaxx
4. Input your Monero address in the `P2Pool` tab
-5. Select a [`Remote Monero Node`](#remote-monero-nodes) (or run your own local [Monero Node](#running-a-local-monero-node))
+5. Register your same address on [XMRvsBeast](https://xmrvsbeast.com)
+6. Input the token received in the XvB Tab
6. Start P2Pool
7. Start XMRig
+8. Start XvB
-You are now mining to your own instance of P2Pool, welcome to the world of decentralized peer-to-peer mining!
+Gupaxx will distribute your hashrate between P2Pool and XMRvsBeast as defined here by the [algorithm](NOTES_ALGORITHM).
+The algorithm will decide which quantity of HR will be directed to P2pool and to XMRvsBeast, so that you still keep a share in the [PPLNS Window](https://github.com/SChernykh/p2pool#how-payouts-work-in-p2pool). It will send by default just enough to get to the highest round or, if hero mode is enabled, everything minus minimum required to still have a share in the PPLNS Window.
-
-
-1. In the Monero GUI, go to `Settings`
-2. Go to the `Node` tab
-3. Enable `Local node`
-4. Enter `--zmq-pub=tcp://127.0.0.1:18083` into `Daemon startup flags`
-5. [(Optionally)](https://github.com/SChernykh/p2pool#windows) enter `--disable-dns-checkpoints --enable-dns-blocklist` into `Daemon startup flags`
-
-
-
-After syncing the blockchain, you will now have your own Monero node.
-
-The 4th step enables `ZMQ`, which is extra Monero node functionality that is needed for P2Pool to work correctly.
-
-The 5th step:
-
-- `--disable-dns-checkpoints` avoids periodical lag when DNS is updated (it's not needed when mining)
-- `--enable-dns-blocklist` bans known bad nodes
-
-[For more detailed information on configuring a Monero node, click here.](https://monerodocs.org)
-
----
-
-### Command Line
-By default, Gupax has `auto-update` & `auto-ping` enabled. This can only be turned off in the GUI which causes a chicken-and-egg problem.
-
-To get around this, start Gupax with `--no-startup`. This will disable all `auto` features for that instance.
-```
-USAGE: ./gupax [--flag]
-
- --help Print this help message
- --version Print version and build info
- --state Print Gupax state
- --nodes Print the manual node list
- --payouts Print the P2Pool payout log, payout count, and total XMR mined
- --no-startup Disable all auto-startup settings for this instance (auto-update, auto-ping, etc)
- --reset-state Reset all Gupax state (your settings)
- --reset-nodes Reset the manual node list in the [P2Pool] tab
- --reset-pools Reset the manual pool list in the [XMRig] tab
- --reset-payouts Reset the permanent P2Pool stats that appear in the [Status] tab
- --reset-all Reset the state, manual node list, manual pool list, and P2Pool stats
-```
-
----
-
-### Key Shortcuts
-The letter keys (Z/X/C/V/S/R) will only work if nothing is in focus, i.e, you _are not_ editing a text box.
-
-An ALT+F4 will also trigger the exit confirm screen (if enabled).
-```
-*---------------------------------------*
-| Key shortcuts |
-|---------------------------------------|
-| F11 | Fullscreen |
-| Escape | Quit screen |
-| Up | Start/Restart |
-| Down | Stop |
-| Z | Left Tab |
-| X | Right Tab |
-| C | Left Submenu |
-| V | Right Submenu |
-| S | Save |
-| R | Reset |
-*---------------------------------------*
-```
-
----
-
-### Resolution
-The default resolution of Gupax is `1280x960` which is a `4:3` aspect ratio.
-
-This can be changed by dragging the corner of the window itself or by using the resolution sliders in the `Gupax Advanced` tab. After a resolution change, Gupax will fade-in/out of black and will take a second to resize all the UI elements to scale correctly to the new resolution.
-
-If you have changed your OS's pixel scaling, you may need to resize Gupax to see all UI correctly.
-
-The minimum window size is: `640x480`
-The maximum window size is: `3840x2160`
-Fullscreen mode can also be entered by pressing `F11`.
-
----
-
-### Tor/Arti
-By default, Gupax updates via Tor. In particular, it uses [`Arti`](https://gitlab.torproject.org/tpo/core/arti), the official Rust implementation of Tor.
-
-Instead of bootstrapping onto the Tor network every time, Arti saves state/cache about the Tor network (circuits, guards, etc) for later reuse onto the disk:
-
-State:
-| OS | Data Folder |
-|----------|---------------------------------------------------------------|
-| Windows | `C:\Users\USER\AppData\Local\torproject\Arti\data` |
-| macOS | `/Users/USER/Library/Application Support/org.torproject.Arti` |
-| Linux | `/home/USER/.local/share/arti` |
-
-Cache:
-| OS | Data Folder |
-|----------|---------------------------------------------------------------|
-| Windows | `C:\Users\USER\AppData\Local\torproject\Arti\cache` |
-| macOS | `/Users/USER/Library/Caches/org.torproject.Arti` |
-| Linux | `/home/USER/.cache/arti` |
-
----
-
-### Disk
-Long-term state is saved onto the disk in the "OS data folder", using the [TOML](https://github.com/toml-lang/toml) format. If not found, default files will be created.
-
-Given a slightly corrupted `state.toml` file, Gupax will attempt to merge it with a new default one. This will most likely happen if the internal data structure of `state.toml` is changed in the future (e.g: removing an outdated setting). The node/pool database cannot be merged.
-
-If Gupax can't read/write to disk at all, or if there are any other big issues, it will show an unrecoverable error screen.
-
-| OS | Data Folder | Example |
-|----------|------------------------------------------|-------------------------------------------------|
-| Windows | `{FOLDERID_RoamingAppData}` | `C:\Users\USER\AppData\Roaming\Gupax` |
-| macOS | `$HOME`/Library/Application Support | `/Users/USER/Library/Application Support/Gupax` |
-| Linux | `$XDG_DATA_HOME` or `$HOME`/.local/share | `/home/USER/.local/share/gupax` |
-
-The current files saved to disk:
-* `state.toml` Gupax state/settings
-* `node.toml` The manual node database used for P2Pool advanced
-* `pool.toml` The manual pool database used for XMRig advanced
-* `p2pool/` The Gupax-P2Pool API files
-
----
-
-### Logs
-Gupax has console logs that show with increasing detail, what exactly it is is doing.
-
-There are multiple log filter levels but by default, `INFO` and above are enabled.
-To view more detailed console debug information, start Gupax with the environment variable `RUST_LOG` set to a log level like so:
-```bash
-RUST_LOG=(trace|debug|info|warn|error) ./gupax
-```
-For example:
-```bash
-RUST_LOG=debug ./gupax
-```
-
-In general:
-- `ERROR` means something has gone wrong and that something will probably break
-- `WARN` means something has gone wrong, but things will be fine
-- `INFO` logs are general info about what Gupax (the GUI thread) is currently doing
-- `DEBUG` logs are much more verbose and include what EVERY thread is doing (not just the main GUI thread)
-- `TRACE` logs are insanely verbose and shows very low-level logs
-
----
-
-### Swapping P2Pool/XMRig
-If you want to use your own `P2Pool/XMRig` binaries you can:
-- Edit the PATH in `Gupax Advanced` to point at the new binaries
-- Change the binary itself
-
-By default, Gupax will look for `P2Pool/XMRig` in folders next to itself:
-
-Windows:
-```
-Gupax\
-├─ Gupax.exe
-├─ P2Pool\
-│ ├─ p2pool.exe
-├─ XMRig\
- ├─ xmrig.exe
-```
-
-macOS (Gupax is packaged as an `.app` on macOS):
-```
-Gupax.app/Contents/MacOS/
-├─ gupax
-├─ p2pool/
-│ ├─ p2pool
-├─ xmrig/
- ├─ xmrig
-```
-
-Linux:
-```
-gupax/
-├─ gupax
-├─ p2pool/
-│ ├─ p2pool
-├─ xmrig/
- ├─ xmrig
-```
-
----
-
-### Status
-The `[P2Pool]` submenu in this tab reads/writes to a file-based API in a folder called `p2pool` located in the [Gupax OS data directory:](#Disk)
-
-| File | Purpose | Specific Data Type |
-|----------|---------------------------------------------------------|--------------------|
-| `log` | Formatted payout lines extracted from P2Pool | Basically a `String` that needs to be parsed correctly
-| `payout` | The total amount of payouts received via P2Pool & Gupax | `u64`
-| `xmr` | The total amount of XMR mined via P2Pool & Gupax | Atomic Units represented with a `u64`
-
-The `log` file contains formatted payout lines extracted from your P2Pool:
-```
-