From cf2cc9f8edb5f78540685765a27783e74171f4ce Mon Sep 17 00:00:00 2001 From: mysticmomba Date: Fri, 9 Oct 2026 09:46:32 -0400 Subject: [PATCH 1/6] Added build script --- build.sh | 6 ++++++ src-tauri/src/commands/actions.rs | 2 +- src-tauri/src/commands/changelog.rs | 9 ++++----- src-tauri/src/commands/export.rs | 5 ++--- src-tauri/src/commands/scan.rs | 11 ++++++++++- src-tauri/src/models/host.rs | 8 ++++---- src-tauri/src/models/mod.rs | 2 +- src-tauri/src/net/dns.rs | 6 ++---- src-tauri/src/net/mod.rs | 2 +- src-tauri/src/net/range.rs | 2 +- src-tauri/src/scanner/mod.rs | 2 +- src-tauri/src/scanner/ping.rs | 3 +-- src-tauri/src/scanner/ports.rs | 27 ++++++++++++++++----------- 13 files changed, 50 insertions(+), 35 deletions(-) create mode 100755 build.sh diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..561b590 --- /dev/null +++ b/build.sh @@ -0,0 +1,6 @@ +#!/bin/bash +cd src-tauri && cargo clean +cargo clippy --fix --all-targets --allow-dirty +cargo fmt +cargo tauri build +cargo tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc \ No newline at end of file diff --git a/src-tauri/src/commands/actions.rs b/src-tauri/src/commands/actions.rs index d5d3d7a..47a3852 100644 --- a/src-tauri/src/commands/actions.rs +++ b/src-tauri/src/commands/actions.rs @@ -16,4 +16,4 @@ pub async fn check_privileges() -> Result { // On Windows, check if running as administrator Ok(is_elevated::is_elevated()) } -} \ No newline at end of file +} diff --git a/src-tauri/src/commands/changelog.rs b/src-tauri/src/commands/changelog.rs index cc7df29..bcc1cf8 100644 --- a/src-tauri/src/commands/changelog.rs +++ b/src-tauri/src/commands/changelog.rs @@ -1,16 +1,15 @@ -use pulldown_cmark::{Options, Parser, html}; +use pulldown_cmark::{html, Options, Parser}; const CHANGELOG_MD: &str = include_str!("../../../CHANGELOG.md"); #[tauri::command] pub async fn get_changelog() -> Result { - let options = Options::ENABLE_HEADING_ATTRIBUTES - | Options::ENABLE_STRIKETHROUGH - | Options::ENABLE_TABLES; + let options = + Options::ENABLE_HEADING_ATTRIBUTES | Options::ENABLE_STRIKETHROUGH | Options::ENABLE_TABLES; let parser = Parser::new_ext(CHANGELOG_MD, options); let mut html_output = String::new(); html::push_html(&mut html_output, parser); Ok(html_output) -} \ No newline at end of file +} diff --git a/src-tauri/src/commands/export.rs b/src-tauri/src/commands/export.rs index 2889710..b3a0a24 100644 --- a/src-tauri/src/commands/export.rs +++ b/src-tauri/src/commands/export.rs @@ -11,8 +11,7 @@ pub struct ExportRequest { #[tauri::command] pub async fn export_csv(request: ExportRequest) -> Result<(), String> { - let file = File::create(&request.path) - .map_err(|e| format!("Failed to create file: {}", e))?; + let file = File::create(&request.path).map_err(|e| format!("Failed to create file: {}", e))?; let mut writer = csv::Writer::from_writer(file); @@ -43,4 +42,4 @@ pub async fn export_csv(request: ExportRequest) -> Result<(), String> { tracing::info!("Exported {} hosts to {}", request.hosts.len(), request.path); Ok(()) -} \ No newline at end of file +} diff --git a/src-tauri/src/commands/scan.rs b/src-tauri/src/commands/scan.rs index 5a68808..12a24ba 100644 --- a/src-tauri/src/commands/scan.rs +++ b/src-tauri/src/commands/scan.rs @@ -40,7 +40,16 @@ pub async fn start_scan(app: AppHandle, config: ScanConfig) -> Result<(), String let port_timeout_ms = config.port_timeout_ms.unwrap_or(1000); tokio::spawn(async move { - ping_sweep(&app, &ips, timeout_ms, cancel, port_scan, ports, port_timeout_ms).await; + ping_sweep( + &app, + &ips, + timeout_ms, + cancel, + port_scan, + ports, + port_timeout_ms, + ) + .await; }); Ok(()) } diff --git a/src-tauri/src/models/host.rs b/src-tauri/src/models/host.rs index 9f95250..9a860d2 100644 --- a/src-tauri/src/models/host.rs +++ b/src-tauri/src/models/host.rs @@ -6,7 +6,7 @@ pub enum HostStatus { Up, Down, Filtered, - Unknown + Unknown, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -42,7 +42,7 @@ pub struct PortResult { pub struct NetbiosInfo { pub computer_name: Option, pub workgroup: Option, - pub mac_from_netbios: Option + pub mac_from_netbios: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -79,7 +79,7 @@ impl HostResult { updated_at: now_ms(), } } - + pub fn down(ip: IpAddr) -> Self { Self { ip, @@ -93,4 +93,4 @@ impl HostResult { updated_at: now_ms(), } } -} \ No newline at end of file +} diff --git a/src-tauri/src/models/mod.rs b/src-tauri/src/models/mod.rs index c2de673..45d0516 100644 --- a/src-tauri/src/models/mod.rs +++ b/src-tauri/src/models/mod.rs @@ -1,2 +1,2 @@ pub mod host; -pub mod monitor; \ No newline at end of file +pub mod monitor; diff --git a/src-tauri/src/net/dns.rs b/src-tauri/src/net/dns.rs index 29e0169..985c5ec 100644 --- a/src-tauri/src/net/dns.rs +++ b/src-tauri/src/net/dns.rs @@ -3,9 +3,7 @@ use std::net::IpAddr; /// Perform reverse DNS lookup on a single IP. /// Returns the hostname if found, None otherwise. pub async fn reverse_lookup(ip: IpAddr) -> Option { - let result = tokio::task::spawn_blocking(move || { - dns_lookup::lookup_addr(&ip) - }).await; + let result = tokio::task::spawn_blocking(move || dns_lookup::lookup_addr(&ip)).await; match result { Ok(Ok(hostname)) => { @@ -17,4 +15,4 @@ pub async fn reverse_lookup(ip: IpAddr) -> Option { } _ => None, } -} \ No newline at end of file +} diff --git a/src-tauri/src/net/mod.rs b/src-tauri/src/net/mod.rs index 130c0c1..9d9093e 100644 --- a/src-tauri/src/net/mod.rs +++ b/src-tauri/src/net/mod.rs @@ -1,2 +1,2 @@ +pub mod dns; pub mod range; -pub mod dns; \ No newline at end of file diff --git a/src-tauri/src/net/range.rs b/src-tauri/src/net/range.rs index 6838684..d014e8e 100644 --- a/src-tauri/src/net/range.rs +++ b/src-tauri/src/net/range.rs @@ -140,4 +140,4 @@ mod tests { fn test_reversed_range() { assert!(parse_ip_range("192.168.1.10-192.168.1.1").is_err()); } -} \ No newline at end of file +} diff --git a/src-tauri/src/scanner/mod.rs b/src-tauri/src/scanner/mod.rs index 9387623..54b5b02 100644 --- a/src-tauri/src/scanner/mod.rs +++ b/src-tauri/src/scanner/mod.rs @@ -1,3 +1,3 @@ +pub mod netbios; pub mod ping; pub mod ports; -pub mod netbios; \ No newline at end of file diff --git a/src-tauri/src/scanner/ping.rs b/src-tauri/src/scanner/ping.rs index ab3d3e2..0401d2f 100644 --- a/src-tauri/src/scanner/ping.rs +++ b/src-tauri/src/scanner/ping.rs @@ -91,8 +91,7 @@ pub async fn ping_sweep( let nb_fut = query_netbios(enriched.ip, 500); if port_scan { - let scan_ports = ports2 - .unwrap_or_else(|| DEFAULT_PORTS.to_vec()); + let scan_ports = ports2.unwrap_or_else(|| DEFAULT_PORTS.to_vec()); let (nb_result, port_results) = tokio::join!( nb_fut, scan_host_ports(enriched.ip, &scan_ports, port_timeout_ms) diff --git a/src-tauri/src/scanner/ports.rs b/src-tauri/src/scanner/ports.rs index 35dc177..98318df 100644 --- a/src-tauri/src/scanner/ports.rs +++ b/src-tauri/src/scanner/ports.rs @@ -42,8 +42,7 @@ fn service_name(port: u16) -> Option { } pub const DEFAULT_PORTS: &[u16] = &[ - 21, 22, 23, 25, 53, 80, 110, 111, 135, 139, 143, - 443, 445, 993, 995, 1433, 1521, 3306, 3389, + 21, 22, 23, 25, 53, 80, 110, 111, 135, 139, 143, 443, 445, 993, 995, 1433, 1521, 3306, 3389, 5432, 5900, 5985, 5986, 8080, 8088, 8443, ]; @@ -96,7 +95,10 @@ async fn grab_banner(mut stream: TcpStream, port: u16) -> Option { }; if let Some(data) = probe { - if timeout(banner_timeout, stream.write_all(data)).await.is_err() { + if timeout(banner_timeout, stream.write_all(data)) + .await + .is_err() + { return None; } } @@ -107,8 +109,15 @@ async fn grab_banner(mut stream: TcpStream, port: u16) -> Option { Ok(Ok(n)) if n > 0 => { buf.truncate(n); // Strip to printable ASCII, replace control chars - let banner: String = buf.iter() - .map(|&b| if b >= 0x20 && b < 0x7f { b as char } else { ' ' }) + let banner: String = buf + .iter() + .map(|&b| { + if (0x20..0x7f).contains(&b) { + b as char + } else { + ' ' + } + }) .collect(); let banner = banner.trim().to_string(); if banner.is_empty() { @@ -124,11 +133,7 @@ async fn grab_banner(mut stream: TcpStream, port: u16) -> Option { const MAX_PORT_CONCURRENT: usize = 64; -pub async fn scan_host_ports( - ip: IpAddr, - ports: &[u16], - timeout_ms: u64, -) -> Vec { +pub async fn scan_host_ports(ip: IpAddr, ports: &[u16], timeout_ms: u64) -> Vec { let mut results = Vec::with_capacity(ports.len()); for chunk in ports.chunks(MAX_PORT_CONCURRENT) { @@ -148,4 +153,4 @@ pub async fn scan_host_ports( results.sort_by_key(|p| p.port); results -} \ No newline at end of file +} From 8f8e77242b801c884208e7d4f20f21ae6132b167 Mon Sep 17 00:00:00 2001 From: mysticmomba Date: Fri, 9 Oct 2026 10:38:37 -0400 Subject: [PATCH 2/6] feat: Added Minimize to System Tray While Monitor Is Running. Closes #6. --- CHANGELOG.md | 5 + src-tauri/Cargo.lock | 372 ++++++++++++++-------------- src-tauri/Cargo.toml | 4 +- src-tauri/capabilities/default.json | 3 +- src-tauri/src/commands/monitor.rs | 5 + src-tauri/src/lib.rs | 62 ++++- 6 files changed, 260 insertions(+), 191 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c73be8..0c09218 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## [unreleased] + +### πŸš€ Features + +- Added more themes ## [0.3.0] - 2026-10-08 ### πŸš€ Features diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 1f4f06a..519edd5 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -19,15 +19,15 @@ dependencies = [ [[package]] name = "alloc-no-stdlib" -version = "2.0.4" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" +checksum = "c2fb6cfd47bf496ff64095c20eaba0c201404ee38714d4142fcfa1dc334fcc7a" [[package]] name = "alloc-stdlib" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" +checksum = "0b5c1865780388bfa186411ab5f247819487fc4864c6e9c3106611fa347586e1" dependencies = [ "alloc-no-stdlib", ] @@ -66,7 +66,9 @@ dependencies = [ "tauri", "tauri-build", "tauri-plugin-dialog", + "tauri-plugin-notification", "tauri-plugin-opener", + "tauri-plugin-single-instance", "tokio", "tracing", "tracing-subscriber", @@ -319,9 +321,9 @@ dependencies = [ [[package]] name = "brotli" -version = "8.0.4" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3" +checksum = "f8b851b75c23ca7873623d612fe49bd1989aeb03d08fb9432187eb253d3d4c6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -330,9 +332,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "5.0.3" +version = "6.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" +checksum = "941cd9bd4ddab83cb46fa5a2d428f1c857b24ac78cb876cf7beb710840934bd7" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -433,12 +435,13 @@ dependencies = [ [[package]] name = "cargo_toml" -version = "0.22.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +checksum = "82f4b26e751e711a5302649417f2da046dce6391b2ea30a4820f37462314f0b9" dependencies = [ + "semver", "serde", - "toml 0.9.12+spec-1.1.0", + "toml 1.1.6+spec-1.1.0", ] [[package]] @@ -459,13 +462,13 @@ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cfb" -version = "0.7.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +checksum = "a347dcabdae9c31b0825fd6a8bed285ec9c2acb89c47827126d52fa4f59cece3" dependencies = [ - "byteorder", "fnv", "uuid", + "web-time", ] [[package]] @@ -626,9 +629,9 @@ dependencies = [ [[package]] name = "cssparser" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" +checksum = "8c9cdaae01d5ed7882b04d795e7f752f46ff52d2fa3b50a20d28c464510bba98" dependencies = [ "cssparser-macros", "dtoa-short", @@ -639,12 +642,12 @@ dependencies = [ [[package]] name = "cssparser-macros" -version = "0.6.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +checksum = "d045de693cb712d0b22c6a64be5b953f67b3ce00ab5ad3dd5d8b441886ab8e1a" dependencies = [ "quote", - "syn 2.0.119", + "syn 3.0.6", ] [[package]] @@ -670,19 +673,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.8.0" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" -dependencies = [ - "ctor-proc-macro", - "dtor", -] - -[[package]] -name = "ctor-proc-macro" -version = "0.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" +checksum = "914a755b7c2d4af2bdcff7ce1739e2db9a1b81a9b07123d8015786ae03c0980d" [[package]] name = "darling" @@ -802,9 +795,9 @@ dependencies = [ [[package]] name = "dirs" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +checksum = "8d57d423b3c82e89b9a24ca3091fee61f456a26edbd28d26c65906f4bc1dcd8f" dependencies = [ "dirs-sys", ] @@ -881,9 +874,9 @@ dependencies = [ [[package]] name = "dom_query" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" +checksum = "fac5fca71e65e94cc718a6e2af65d6e0f9c6027751c2aa562fbb5087fda639bc" dependencies = [ "bit-set", "cssparser", @@ -918,21 +911,6 @@ dependencies = [ "dtoa", ] -[[package]] -name = "dtor" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" -dependencies = [ - "dtor-proc-macro", -] - -[[package]] -name = "dtor-proc-macro" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" - [[package]] name = "dunce" version = "1.0.5" @@ -1617,9 +1595,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "html5ever" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" +checksum = "46a1761807faccc9a19e86944bbf40610014066306f96edcdedc2fb714bcb7b8" dependencies = [ "log", "markup5ever", @@ -1910,9 +1888,9 @@ dependencies = [ [[package]] name = "infer" -version = "0.19.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +checksum = "f4200d433cbd5178df7797c9c2e75b348b728e39631cf14520d1e2fc424201f4" dependencies = [ "cfb", ] @@ -2100,21 +2078,21 @@ dependencies = [ [[package]] name = "json-patch" -version = "3.0.1" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +checksum = "7421438de105a0827e44fadd05377727847d717c80ce29a229f85fd04c427b72" dependencies = [ "jsonptr", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.20", ] [[package]] name = "jsonptr" -version = "0.6.3" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +checksum = "a5a3cc660ba5d72bce0b3bb295bf20847ccbb40fd423f3f05b61273672e561fe" dependencies = [ "serde", "serde_json", @@ -2122,13 +2100,12 @@ dependencies = [ [[package]] name = "keyboard-types" -version = "0.7.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ "bitflags 2.13.2", "serde", - "unicode-segmentation", ] [[package]] @@ -2223,10 +2200,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] -name = "markup5ever" -version = "0.38.0" +name = "mac-notification-sys" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" +checksum = "fd604973958ddcc11b561193c0fb96ba146506ef2f231ef2e7c35fd2cbc9beca" +dependencies = [ + "cc", + "log", + "objc2", + "objc2-foundation", + "time", + "uuid", +] + +[[package]] +name = "markup5ever" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7122d987ec5f704ee56f6e5b41a7d93722e9aae27ae07cafa4036c4d3f9757de" dependencies = [ "log", "tendril", @@ -2296,9 +2287,9 @@ dependencies = [ [[package]] name = "muda" -version = "0.19.3" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878" +checksum = "cca139e57da4383727f189e43e66e84fa372347027fc996f9f1a007ec0a37996" dependencies = [ "crossbeam-channel", "dpi", @@ -2374,6 +2365,12 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + [[package]] name = "ndk-sys" version = "0.6.0+11769913" @@ -2389,6 +2386,20 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "notify-rust" +version = "4.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4587364a9a0074333429b3df75a30a205340c56a536ca3eb6ca0e59b87bbf8af" +dependencies = [ + "futures-lite", + "log", + "mac-notification-sys", + "serde", + "tauri-winrt-notification", + "zbus", +] + [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -2456,6 +2467,7 @@ dependencies = [ "objc2", "objc2-core-foundation", "objc2-foundation", + "objc2-quartz-core", ] [[package]] @@ -3454,9 +3466,9 @@ dependencies = [ [[package]] name = "selectors" -version = "0.36.1" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +checksum = "8adfa1c298912827b8a28b223b3b874357397ae706e6190acd9bf28cee99114d" dependencies = [ "bitflags 2.13.2", "cssparser", @@ -3923,9 +3935,9 @@ dependencies = [ [[package]] name = "tao" -version = "0.35.3" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c93047acf68669466a34690ac58cca7010bd1b201e1ec86f1fd0a75d3dd4a9" +checksum = "f37f381f4e048e6cdf038b5705f8cf14ad108279d46eb968140a7b291aba9400" dependencies = [ "bitflags 2.13.2", "block2", @@ -3943,20 +3955,20 @@ dependencies = [ "libc", "log", "ndk", + "ndk-context", "ndk-sys", "objc2", "objc2-app-kit", "objc2-foundation", "objc2-ui-kit", - "once_cell", "parking_lot", "percent-encoding", "raw-window-handle", "tao-macros", "unicode-segmentation", "url", - "windows 0.61.3", - "windows-core 0.61.2", + "windows 0.62.2", + "windows-core 0.62.2", "windows-version", "x11-dl", ] @@ -3980,9 +3992,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tauri" -version = "2.11.6" +version = "2.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa5bacdb9bbad5954af3d1bd6cf6ae9192cab1b2e270f4a07f904610b9e85f4" +checksum = "d061d042ccd2df9c9f1508c1e63d835278c0a4c8801eb41764080e51f2eaaf34" dependencies = [ "anyhow", "bytes", @@ -4026,14 +4038,14 @@ dependencies = [ "webkit2gtk", "webview2-com", "window-vibrancy", - "windows 0.61.3", + "windows 0.62.2", ] [[package]] name = "tauri-build" -version = "2.6.3" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9ce40b16101cb6ea63d3e221567affd1c3a9205f95d7bc574941a10636b632" +checksum = "59563ca5b331fd97f27ee9672ec8d36d33bb3c9e2c9f6710a1a5687256052e45" dependencies = [ "anyhow", "cargo_toml", @@ -4052,16 +4064,16 @@ dependencies = [ [[package]] name = "tauri-codegen" -version = "2.6.3" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08279169ff42f8fc45a1dbc9dcae888893ba95288142e5880c59b93a26d2cfc5" +checksum = "e50213e463086ecc283d7e9f51c30cc0fd304ad457425158018be26dbf0d0a80" dependencies = [ "base64 0.22.1", "brotli", "ico", "json-patch", "plist", - "png 0.17.16", + "png 0.18.1", "proc-macro2", "quote", "semver", @@ -4079,9 +4091,9 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.6.3" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b394794f399a421811d06966343e7933fcae92d59f5180b9388d1174497a45" +checksum = "8129fb43bb6e0d6b73ad3315cd172beaab17cd28899c594b1b32c80edbbfd99c" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -4093,9 +4105,9 @@ dependencies = [ [[package]] name = "tauri-plugin" -version = "2.6.3" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74be5dd4bed9afbd145e5716b5fa2ec28cbc29c34ffa61c258c9273d896c8020" +checksum = "1140cf34a3b3b836a13103dcab17f18831d5cc3534cbd435dc01a5c6daa65aa2" dependencies = [ "anyhow", "glob", @@ -4149,6 +4161,25 @@ dependencies = [ "url", ] +[[package]] +name = "tauri-plugin-notification" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533770889abb60a0407d5a32096182f0e6463f5a3dfaa675be94580aa14070e1" +dependencies = [ + "log", + "notify-rust", + "rand", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "thiserror 2.0.20", + "time", + "url", +] + [[package]] name = "tauri-plugin-opener" version = "2.5.5" @@ -4172,10 +4203,26 @@ dependencies = [ ] [[package]] -name = "tauri-runtime" -version = "2.11.3" +name = "tauri-plugin-single-instance" +version = "2.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b4bc95aed361b0019067d189a1174a603d460d0f6c72606512d59fc9c12ec8" +checksum = "db817fe9295e19b7d8357e900af31edb93703dd9fb6de524b007b47b6afc63b0" +dependencies = [ + "serde", + "serde_json", + "tauri", + "thiserror 2.0.20", + "tokio", + "tracing", + "windows-sys 0.60.2", + "zbus", +] + +[[package]] +name = "tauri-runtime" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a57a2a9b8c8b7fc00d35b510fe808ded7f9f1b44fc1cdda6aee38632ea5413" dependencies = [ "cookie", "dpi", @@ -4193,14 +4240,14 @@ dependencies = [ "url", "webkit2gtk", "webview2-com", - "windows 0.61.3", + "windows 0.62.2", ] [[package]] name = "tauri-runtime-wry" -version = "2.11.4" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e6fac707727b7a2f48e4ded90976324267371073edbb415ffb73bb0458d203f" +checksum = "7f9e7e0c9f80a5130773cfabb6df4dc924518fb1b2c923726966804634b57d22" dependencies = [ "gtk", "http", @@ -4218,15 +4265,15 @@ dependencies = [ "url", "webkit2gtk", "webview2-com", - "windows 0.61.3", + "windows 0.62.2", "wry", ] [[package]] name = "tauri-utils" -version = "2.9.3" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887" +checksum = "2ff55a614843b9a3f010f211df637c94df2607175b8d0f6e0f4a7c19e18621ee" dependencies = [ "anyhow", "brotli", @@ -4271,6 +4318,17 @@ dependencies = [ "toml 1.1.6+spec-1.1.0", ] +[[package]] +name = "tauri-winrt-notification" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f37a6c354fd28fc9e322ed9bd47e3959576dad28c9d58ea1cf888cce1c7ccb36" +dependencies = [ + "thiserror 2.0.20", + "windows 0.62.2", + "windows-version", +] + [[package]] name = "tempfile" version = "3.27.0" @@ -4462,21 +4520,6 @@ dependencies = [ "toml_edit 0.20.2", ] -[[package]] -name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "indexmap 2.14.2", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 0.7.15", -] - [[package]] name = "toml" version = "1.1.6+spec-1.1.0" @@ -4501,15 +4544,6 @@ dependencies = [ "serde", ] -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - [[package]] name = "toml_datetime" version = "1.1.1+spec-1.1.0" @@ -4678,9 +4712,9 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045979e3f037cd18ad1cb2a419dfda133c5c29c9f3453370079f2255d46c257e" +checksum = "b2b9c52859a94554803ccd4a24b98f74148ebc73b90676d783f3490b1bff9d72" dependencies = [ "crossbeam-channel", "dirs", @@ -4727,47 +4761,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-ucd-ident" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - [[package]] name = "unicase" version = "2.9.0" @@ -4813,13 +4806,13 @@ dependencies = [ [[package]] name = "urlpattern" -version = "0.3.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +checksum = "df16f50ef4cc145211879a3867ba757076b25dfee812040dcb0658bd9ae7904b" dependencies = [ + "icu_properties", "regex", "serde", - "unic-ucd-ident", "url", ] @@ -4997,6 +4990,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "web_atoms" version = "0.2.6" @@ -5055,16 +5058,14 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.38.2" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" +checksum = "3f89fca7a704cee10dcb3654c1dbb8941d1783132f1917358af75bec37a7d7e6" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.61.3", - "windows-core 0.61.2", - "windows-implement", - "windows-interface", + "windows 0.62.2", + "windows-core 0.62.2", ] [[package]] @@ -5080,13 +5081,13 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.38.2" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" +checksum = "b3a07132775117d6065853d9d1178157b8c90e228de47129d6bce2c7edebedfb" dependencies = [ "thiserror 2.0.20", - "windows 0.61.3", - "windows-core 0.61.2", + "windows 0.62.2", + "windows-core 0.62.2", ] [[package]] @@ -5122,16 +5123,17 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window-vibrancy" -version = "0.6.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +checksum = "111e51caca442cafd9bab396628ac4d814880eaea4e63dfd76a12e9f342b5580" dependencies = [ "objc2", "objc2-app-kit", "objc2-core-foundation", "objc2-foundation", + "objc2-quartz-core", "raw-window-handle", - "windows-sys 0.59.0", + "windows-sys 0.61.2", "windows-version", ] @@ -5594,12 +5596,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" - [[package]] name = "winnow" version = "1.0.4" @@ -5633,9 +5629,9 @@ checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" [[package]] name = "wry" -version = "0.55.1" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514" +checksum = "a819957a01b3119af85e638a38d242af76dbc87d130dca67bfd0441072e21ff0" dependencies = [ "base64 0.22.1", "block2", @@ -5669,8 +5665,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.61.3", - "windows-core 0.61.2", + "windows 0.62.2", + "windows-core 0.62.2", "windows-version", "x11-dl", ] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a904673..4a494c0 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -18,7 +18,8 @@ crate-type = ["staticlib", "cdylib", "rlib"] tauri-build = { version = "2", features = [] } [dependencies] -tauri = { version = "2", features = [] } +tauri = { version = "2", features = ["tray-icon"] } +tauri-plugin-single-instance = "2" tauri-plugin-opener = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" @@ -35,6 +36,7 @@ reqwest = { version = "0.12", features = ["json"] } libc = "0.2.189" pulldown-cmark = { version = "0.13.4", features = ["html"] } semver = "1.0.28" +tauri-plugin-notification = "2.5.1" [target.'cfg(windows)'.dependencies] is_elevated = "0.1" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index 5b8f97a..c3f99b5 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -7,6 +7,7 @@ "core:default", "opener:default", "dialog:default", - "core:window:allow-set-always-on-top" + "core:window:allow-set-always-on-top", + "notification:default" ] } diff --git a/src-tauri/src/commands/monitor.rs b/src-tauri/src/commands/monitor.rs index 3b3b022..df0703f 100644 --- a/src-tauri/src/commands/monitor.rs +++ b/src-tauri/src/commands/monitor.rs @@ -196,3 +196,8 @@ pub async fn monitor_resolve_host(ip: String) -> Result, String> let parsed: IpAddr = ip.parse().map_err(|e| format!("Invalid IP: {}", e))?; Ok(crate::net::dns::reverse_lookup(parsed).await) } +pub fn is_monitor_running() -> bool { + let state = get_monitor(); + let guard = state.blocking_lock(); + guard.running +} \ No newline at end of file diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 43bb668..828f0e4 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -3,6 +3,10 @@ mod models; mod net; mod scanner; +use tauri::Manager; +use tauri::menu::{Menu, MenuItem}; +use tauri::tray::TrayIconBuilder; + #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tracing_subscriber::fmt() @@ -13,8 +17,64 @@ pub fn run() { .init(); tauri::Builder::default() + .plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| { + if let Some(window) = app.get_webview_window("main") { + let _ = window.show(); + let _ = window.set_focus(); + } + })) .plugin(tauri_plugin_opener::init()) .plugin(tauri_plugin_dialog::init()) + .plugin(tauri_plugin_notification::init()) + .setup(|app| { + let show = MenuItem::with_id(app, "show", "Show Argus", true, None::<&str>)?; + let quit = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?; + let menu = Menu::with_items(app, &[&show, &quit])?; + + let _tray = TrayIconBuilder::new() + .icon(app.default_window_icon().unwrap().clone()) + .tooltip("Argus - Network Scanner") + .menu(&menu) + .show_menu_on_left_click(false) + .on_menu_event(|app, event| match event.id.as_ref() { + "show" => { + if let Some(window) = app.get_webview_window("main") { + let _ = window.show(); + let _ = window.set_focus(); + } + } + "quit" => { + app.exit(0); + } + _ => {} + }) + .on_tray_icon_event(|tray, event| { + if let tauri::tray::TrayIconEvent::DoubleClick { .. } = event { + if let Some(window) = tray.app_handle().get_webview_window("main") { + let _ = window.show(); + let _ = window.set_focus(); + } + } + }) + .build(app)?; + + // Hide to tray when monitor is running + let app_handle = app.handle().clone(); + if let Some(window) = app.get_webview_window("main") { + window.on_window_event(move |event| { + if let tauri::WindowEvent::CloseRequested { api, .. } = event { + if commands::monitor::is_monitor_running() { + api.prevent_close(); + if let Some(win) = app_handle.get_webview_window("main") { + let _ = win.hide(); + } + } + } + }); + } + + Ok(()) + }) .invoke_handler(tauri::generate_handler![ commands::scan::start_scan, commands::scan::stop_scan, @@ -37,4 +97,4 @@ pub fn run() { ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); -} +} \ No newline at end of file From 2ce736e10fede0ca87f86e7a3197608717c19fe7 Mon Sep 17 00:00:00 2001 From: mysticmomba Date: Fri, 9 Oct 2026 11:44:39 -0400 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20Added=20Desktop=20Notifications=20W?= =?UTF-8?q?hile=20Minimized.=20This=20Will=20Send=20Notifications=20to=20t?= =?UTF-8?q?he=20Desktop=20if=20a=20Host=20Status=20Changes=20While=20It?= =?UTF-8?q?=E2=80=99s=20Minimized=20to=20the=20System=20Tray.=20Closes=20#?= =?UTF-8?q?12.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + src-tauri/capabilities/default.json | 3 +- src-tauri/src/commands/traceroute.rs | 1 + src/main.js | 41 ++++++++++++++++++++++++++-- 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c09218..9e40196 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### πŸš€ Features - Added more themes +- Added Minimize to System Tray While Monitor Is Running. Closes #6. ## [0.3.0] - 2026-10-08 ### πŸš€ Features diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index c3f99b5..f591173 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -8,6 +8,7 @@ "opener:default", "dialog:default", "core:window:allow-set-always-on-top", - "notification:default" + "notification:default", + "core:window:allow-is-visible" ] } diff --git a/src-tauri/src/commands/traceroute.rs b/src-tauri/src/commands/traceroute.rs index dd43d7f..e08cf11 100644 --- a/src-tauri/src/commands/traceroute.rs +++ b/src-tauri/src/commands/traceroute.rs @@ -60,3 +60,4 @@ pub async fn run_traceroute(app: AppHandle, ip: String) -> Result<(), String> { Ok(()) } + diff --git a/src/main.js b/src/main.js index 864a02c..f4ef6d7 100644 --- a/src/main.js +++ b/src/main.js @@ -976,7 +976,6 @@ const monitorTab = (() => { let running = false; let entries = {}; var editingLabel = false; - var els = { input: () => document.getElementById('monitor-input'), interval: () => document.getElementById('monitor-interval'), @@ -987,6 +986,26 @@ const monitorTab = (() => { body: () => document.getElementById('monitor-body'), }; + var reminderInterval = null; + + async function notify(title, body) { + try { + var current = window.__TAURI__.window.getCurrentWindow(); + var visible = await current.isVisible(); + if (visible) return; + + var notif = window.__TAURI__.notification; + var granted = await notif.isPermissionGranted(); + if (!granted) { + var perm = await notif.requestPermission(); + if (perm !== 'granted') return; + } + notif.sendNotification({ title: title, body: body }); + } catch (e) { + console.log('Notification error:', e); + } + } + function setRunning(active) { running = active; els.btnStart().disabled = active; @@ -1083,6 +1102,14 @@ const monitorTab = (() => { try { await invoke('monitor_start', { intervalMs: interval }); + + // Start 15-minute reminder + if (reminderInterval) clearInterval(reminderInterval); + reminderInterval = setInterval(function () { + var count = Object.keys(entries).length; + notify('Argus Monitor Active', + 'The monitor is still running with ' + count + ' hosts. Close the monitor to stop pinging.'); + }, 15 * 60 * 1000); } catch (err) { console.error('Monitor start error:', err); setRunning(false); @@ -1095,6 +1122,10 @@ const monitorTab = (() => { } catch (err) { console.error('Monitor stop error:', err); } + if (reminderInterval) { + clearInterval(reminderInterval); + reminderInterval = null; + } setRunning(false); } @@ -1138,7 +1169,13 @@ const monitorTab = (() => { await listen('monitor:state-change', function (e) { var data = e.payload; - console.log('State change:', data.ip, data.old, '->', data.new); + console.log('State change:', data.ip, data.old, '->', data['new']); + var label = entries[data.ip] ? (entries[data.ip].label || data.ip) : data.ip; + if (data['new'] === 'Down') { + notify('Host Down', label + ' (' + data.ip + ') is no longer responding'); + } else if (data['new'] === 'Up' && data.old === 'Down') { + notify('Host Recovered', label + ' (' + data.ip + ') is back online'); + } }); } From 08eca1aac469f8eb999ecee066cf93cc73587151 Mon Sep 17 00:00:00 2001 From: mysticmomba Date: Fri, 9 Oct 2026 11:47:14 -0400 Subject: [PATCH 4/6] Updated Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e40196..8a55820 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Added more themes - Added Minimize to System Tray While Monitor Is Running. Closes #6. +- Added Desktop Notifications While Minimized. This Will Send Notifications to the Desktop if a Host Status Changes While It’s Minimized to the System Tray. Closes #12. ## [0.3.0] - 2026-10-08 ### πŸš€ Features From 20b5c6e798a2580120e8c34c5fae8ea139bfbf83 Mon Sep 17 00:00:00 2001 From: mysticmomba Date: Fri, 9 Oct 2026 11:47:53 -0400 Subject: [PATCH 5/6] Updated change log to reflect version --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a55820..39b463a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## [unreleased] +## [0.4.0] - 2026-10-09 ### πŸš€ Features From a6558576ab94a323a8c0fdc7ca0ddbe88239322d Mon Sep 17 00:00:00 2001 From: mysticmomba Date: Fri, 9 Oct 2026 11:49:52 -0400 Subject: [PATCH 6/6] Updated version number in code --- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 519edd5..8c01aec 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -49,7 +49,7 @@ checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "argus" -version = "0.3.0" +version = "0.4.0" dependencies = [ "csv", "dns-lookup", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 4a494c0..1d8bafb 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "argus" -version = "0.3.0" +version = "0.4.0" description = "An All in One Network Utility" authors = ["James Brotosky