From fe1b520185bf6d56bd6a3762173c22679b38c669 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Tue, 11 Feb 2025 23:09:31 -0500 Subject: [PATCH 01/22] chore: dev version bump --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 93ec4e1..aa05b65 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2025,7 +2025,7 @@ checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "log_viewer" -version = "0.3.6" +version = "0.3.7-dev" dependencies = [ "anyhow", "eframe", diff --git a/Cargo.toml b/Cargo.toml index 186bf32..2e960ce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "log_viewer" -version = "0.3.6" +version = "0.3.7-dev" edition = "2021" [dependencies] From ffabef54faff1570a45b2c592fdadcb8acc45297 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 09:19:58 -0500 Subject: [PATCH 02/22] feat: set fixed size unit for rows by default --- src/app/data_display_options.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/data_display_options.rs b/src/app/data_display_options.rs index 3cc5866..1339309 100644 --- a/src/app/data_display_options.rs +++ b/src/app/data_display_options.rs @@ -168,7 +168,7 @@ impl Default for DataDisplayOptions { row_idx_field_name: Some("row#".to_string()), row_size_config: Some(RowSizeConfig { field_name: "row_size".to_string(), - units: SizeUnits::Auto, + units: SizeUnits::KB, }), row_parse_error_handling: Default::default(), level_conversion: Some(Default::default()), From 94c3195c78cce5cc6e8aeff9e62f05fc575ac7ea Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 10:12:08 -0500 Subject: [PATCH 03/22] feat: always show units and add display impl --- src/app/data_display_options.rs | 92 +++++++++++++++++++++++---------- 1 file changed, 65 insertions(+), 27 deletions(-) diff --git a/src/app/data_display_options.rs b/src/app/data_display_options.rs index 1339309..cb02fd4 100644 --- a/src/app/data_display_options.rs +++ b/src/app/data_display_options.rs @@ -1,6 +1,8 @@ -use std::collections::{BTreeMap, BTreeSet}; - -use egui::Color32; +use egui::{Color32, WidgetText}; +use std::{ + collections::{BTreeMap, BTreeSet}, + fmt::Display, +}; #[derive(serde::Deserialize, serde::Serialize, Debug, PartialEq, Eq)] #[serde(default)] // if we add new fields, give them default values when deserializing old state @@ -65,7 +67,7 @@ pub struct RowSizeConfig { pub units: SizeUnits, } -#[derive(Default, serde::Deserialize, serde::Serialize, Debug, PartialEq, Eq)] +#[derive(Default, serde::Deserialize, serde::Serialize, Debug, PartialEq, Eq, Clone, Copy)] pub enum SizeUnits { Bytes, KB, @@ -73,40 +75,64 @@ pub enum SizeUnits { GB, TB, #[default] - /// Is output as a String because it includes the unit and is the largest unit where the output value is >= 1 Auto, } + impl SizeUnits { - pub(crate) fn convert(&self, row_size_in_bytes: usize) -> serde_json::Value { - let scalar = match self { + fn to_concrete(self, row_size_in_bytes: usize) -> Self { + if !matches!(self, Self::Auto) { + // Easy case where type is specified + return self; + } + + // Determine which unit to use when using auto + let units = [Self::Bytes, Self::KB, Self::MB, Self::GB, Self::TB]; + let mut last_index = 0; + let row_size_in_bytes = row_size_in_bytes as f64; + for (i, unit) in units.iter().enumerate().skip(1) { + if (row_size_in_bytes / unit.scalar()) >= 1.0 { + last_index = i; + } else { + // Last was as correct unit + break; + } + } + units[last_index] + } + + /// Returns the scalar for that unit + /// + /// Panics: if unit is [`Self::Auto`] + fn scalar(&self) -> f64 { + match self { SizeUnits::Bytes => 1.0, SizeUnits::KB => 1024.0, SizeUnits::MB => 1024.0 * 1024.0, SizeUnits::GB => 1024.0 * 1024.0 * 1024.0, SizeUnits::TB => 1024.0 * 1024.0 * 1024.0 * 1024.0, SizeUnits::Auto => { - // TODO 5: Rewrite with shifts for performance - // Special handling see doc string for explanation - let units = ["Bytes", "KB", "MB", "GB", "TB"]; - let mut last_index = 0; - let mut scalar = 1.0f64; - let row_size_in_bytes = row_size_in_bytes as f64; - for i in 1..units.len() { - let new_scalar = scalar * 1024.0; - if (row_size_in_bytes / new_scalar) >= 1.0 { - last_index = i; - scalar = new_scalar; - } else { - // Last was as correct unit - break; - } - } - let result = row_size_in_bytes / scalar; - return format!("{result:0>9.4} {}", units[last_index]).into(); + unreachable!("precondition violated: Auto does not have a scalar") } - }; + } + } + + /// Output as a string because includes the unit + pub(crate) fn convert(&self, row_size_in_bytes: usize) -> serde_json::Value { + let concrete_unit = self.to_concrete(row_size_in_bytes); + let scalar = concrete_unit.scalar(); let result = row_size_in_bytes as f64 / scalar; - result.into() + format!("{result:0>9.4} {concrete_unit}").into() + } + + pub fn as_str(&self) -> &'static str { + match self { + SizeUnits::Bytes => "Bytes", + SizeUnits::KB => "KB", + SizeUnits::MB => "MB", + SizeUnits::GB => "GB", + SizeUnits::TB => "TB", + SizeUnits::Auto => "Auto", + } } } @@ -222,3 +248,15 @@ impl Default for LevelConversion { } } } + +impl Display for SizeUnits { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.as_str()) + } +} + +impl From for WidgetText { + fn from(value: SizeUnits) -> Self { + value.as_str().into() + } +} From 38ee93b81836dad3057f7b2b2e7022210f6d845f Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 10:25:35 -0500 Subject: [PATCH 04/22] feat: change shortcut to allow moving to start of search box --- src/app/shortcut.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/shortcut.rs b/src/app/shortcut.rs index 2c2d7fe..af229fc 100644 --- a/src/app/shortcut.rs +++ b/src/app/shortcut.rs @@ -21,8 +21,8 @@ impl Default for Shortcuts { Self { prev: KeyboardShortcut::new(Modifiers::NONE, egui::Key::ArrowUp), next: KeyboardShortcut::new(Modifiers::NONE, egui::Key::ArrowDown), - first: KeyboardShortcut::new(Modifiers::NONE, egui::Key::Home), - last: KeyboardShortcut::new(Modifiers::NONE, egui::Key::End), + first: KeyboardShortcut::new(Modifiers::CTRL, egui::Key::Home), + last: KeyboardShortcut::new(Modifiers::CTRL, egui::Key::End), unfilter: KeyboardShortcut::new(Modifiers::NONE, egui::Key::Escape), open: KeyboardShortcut::new(Modifiers::CTRL, egui::Key::O), reload: KeyboardShortcut::new(Modifiers::NONE, egui::Key::F5), From 57797279e99c95428bbac243546751ce201cfd79 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 10:25:51 -0500 Subject: [PATCH 05/22] feat: add ui to change row size units --- src/app.rs | 45 ++++++++++++++++++++++++++++++--- src/app/data_display_options.rs | 16 ++++++++---- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/app.rs b/src/app.rs index 0fc13e6..6fb2a42 100644 --- a/src/app.rs +++ b/src/app.rs @@ -2,6 +2,7 @@ use self::{data::Data, data_display_options::DataDisplayOptions}; #[cfg(not(target_arch = "wasm32"))] use anyhow::{bail, Context}; use data::filter::{Comparator, FieldSpecifier, FilterConfig, FilterOn}; +use data_display_options::SizeUnits; use egui::{ text::{CCursor, CCursorRange}, Align, KeyboardShortcut, Label, @@ -398,6 +399,45 @@ impl LogViewerApp { .radio_value(&mut self.track_item_align, None, "None (Bring into view)") .clicked(); }); + ui.horizontal(|ui| { + let mut show_row_size = self.data_display_options.row_size_config.is_some(); + ui.checkbox(&mut show_row_size, "Show row size"); + match ( + show_row_size, + self.data_display_options.row_size_config.is_some(), + ) { + (true, true) | (false, false) => {} + (true, false) => { + self.data_display_options.row_size_config = Some(Default::default()) + } + (false, true) => self.data_display_options.row_size_config = None, + } + + if let Some(row_size) = self.data_display_options.row_size_config.as_mut() { + ui.separator(); + ui.label("Field Name: "); + ui.text_edit_singleline(&mut row_size.field_name); + ui.separator(); + egui::ComboBox::from_label("Row Size Unit") + .selected_text(row_size.units) + .show_ui(ui, |ui| { + ui.selectable_value( + &mut row_size.units, + SizeUnits::Bytes, + SizeUnits::Bytes, + ); + ui.selectable_value(&mut row_size.units, SizeUnits::KB, SizeUnits::KB); + ui.selectable_value(&mut row_size.units, SizeUnits::MB, SizeUnits::MB); + ui.selectable_value(&mut row_size.units, SizeUnits::GB, SizeUnits::GB); + ui.selectable_value(&mut row_size.units, SizeUnits::TB, SizeUnits::TB); + ui.selectable_value( + &mut row_size.units, + SizeUnits::Auto, + SizeUnits::Auto, + ); + }); + } + }); }); } @@ -431,12 +471,11 @@ impl LogViewerApp { fn ui_help(&mut self, ui: &mut egui::Ui) { ui.collapsing("Help", |ui| { - ui.horizontal(|ui| { ui.label( - "Text is selectable just hover over it for a short time if you want to copy", + "- Text is selectable just hover over it for a short time if you want to copy", ); + ui.label("- Most display settings are only applied on load and will require the data to be reloaded") }); - }); } #[cfg(not(target_arch = "wasm32"))] diff --git a/src/app/data_display_options.rs b/src/app/data_display_options.rs index cb02fd4..911953b 100644 --- a/src/app/data_display_options.rs +++ b/src/app/data_display_options.rs @@ -60,7 +60,7 @@ pub struct LevelConversion { pub convert_map: BTreeMap, } -#[derive(Default, serde::Deserialize, serde::Serialize, Debug, PartialEq, Eq)] +#[derive(serde::Deserialize, serde::Serialize, Debug, PartialEq, Eq)] #[serde(default)] pub struct RowSizeConfig { pub field_name: String, @@ -192,10 +192,7 @@ impl Default for DataDisplayOptions { .collect(), emphasize_if_matching_field_idx: Some(4), row_idx_field_name: Some("row#".to_string()), - row_size_config: Some(RowSizeConfig { - field_name: "row_size".to_string(), - units: SizeUnits::KB, - }), + row_size_config: Some(Default::default()), row_parse_error_handling: Default::default(), level_conversion: Some(Default::default()), colored_fields: [( @@ -260,3 +257,12 @@ impl From for WidgetText { value.as_str().into() } } + +impl Default for RowSizeConfig { + fn default() -> Self { + Self { + field_name: "row_size".to_string(), + units: SizeUnits::KB, + } + } +} From 2a58329e44970cdf315d1e48d89a7cdf4649ccb1 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 10:55:59 -0500 Subject: [PATCH 06/22] refactor: move row_heights into Data --- src/app.rs | 13 +++---------- src/app/data.rs | 10 ++++++++++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/app.rs b/src/app.rs index 6fb2a42..90c2b79 100644 --- a/src/app.rs +++ b/src/app.rs @@ -142,16 +142,9 @@ impl LogViewerApp { if let Some(data) = &mut self.data { table.body(|body| { - // TODO 4: Figure out if calculating these values only once is worth it. - // TODO 4: Remove hard coded "msg" - let heights: Vec = data - .rows_iter() - .map(|x| { - (1f32).max(x.field_value("msg").display().lines().count() as f32) - * text_height - }) - .collect(); - body.heterogeneous_rows(heights.into_iter(), |mut row| { + let heights = data.row_heights(text_height); + + body.heterogeneous_rows(heights, |mut row| { let row_index = row.index(); let log_row = &data .rows_iter() diff --git a/src/app/data.rs b/src/app/data.rs index 7f67e8a..21805f1 100644 --- a/src/app/data.rs +++ b/src/app/data.rs @@ -311,6 +311,16 @@ impl Data { "No" }) } + + pub(crate) fn row_heights(&self, text_height: f32) -> impl Iterator { + self.rows_iter() + .map(|x| { + // TODO 4: Remove hard coded "msg" + (1f32).max(x.field_value("msg").display().lines().count() as f32) * text_height + }) + .collect::>() + .into_iter() + } } /// If the slice of fields and values matches the filter then the indices of the fields that match are returned or None if it does not match From daa53aa7b44c5169ea8aedb22a3f89ccfb0037e6 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 14:35:16 -0500 Subject: [PATCH 07/22] chore: add echo that settings were deleted --- bacon.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bacon.toml b/bacon.toml index b722551..eff4a87 100644 --- a/bacon.toml +++ b/bacon.toml @@ -4,7 +4,7 @@ command = [ "sh", "-c", - "trash ~/.local/share/logviewer/app.ron; cargo run", + "echo 'Deleting settings!!!'; trash ~/.local/share/logviewer/app.ron; cargo run", ] need_stdout = true allow_warnings = true From c3ee231b6bcf5afba731ab5792aab12ae0c62cf5 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 14:35:44 -0500 Subject: [PATCH 08/22] chore: update dependencies --- Cargo.lock | 421 +++++++++++++++++++++++++++++++---------------------- Cargo.toml | 10 +- 2 files changed, 253 insertions(+), 178 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aa05b65..9a732f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,7 +38,7 @@ dependencies = [ "accesskit_consumer", "atspi-common", "serde", - "thiserror", + "thiserror 1.0.69", "zvariant 4.2.0", ] @@ -159,7 +159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.8.0", + "bitflags 2.9.0", "cc", "cesu8", "jni", @@ -170,7 +170,7 @@ dependencies = [ "ndk-context", "ndk-sys 0.6.0+11769913", "num_enum", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -190,9 +190,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4" [[package]] name = "arboard" @@ -201,11 +201,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" dependencies = [ "clipboard-win", + "core-graphics", + "image", "log", "objc2", "objc2-app-kit", "objc2-foundation", "parking_lot", + "windows-sys 0.48.0", "x11rb", ] @@ -248,7 +251,7 @@ dependencies = [ "wayland-backend", "wayland-client", "wayland-protocols", - "zbus 5.4.0", + "zbus 5.5.0", ] [[package]] @@ -519,9 +522,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ "serde", ] @@ -633,12 +636,12 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "log", "polling", "rustix", "slab", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -655,9 +658,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.12" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "755717a7de9ec452bf7f3f1a3099085deabd7f2962b861dae91ecd7a365903d2" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ "jobserver", "libc", @@ -686,12 +689,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "cfg_aliases" version = "0.2.1" @@ -891,9 +888,9 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" dependencies = [ "litrs", ] @@ -912,9 +909,9 @@ checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" [[package]] name = "ecolor" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d72e9c39f6e11a2e922d04a34ec5e7ef522ea3f5a1acfca7a19d16ad5fe50f5" +checksum = "878e9005799dd739e5d5d89ff7480491c12d0af571d44399bcaefa1ee172dd76" dependencies = [ "bytemuck", "emath", @@ -923,9 +920,9 @@ dependencies = [ [[package]] name = "eframe" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2f2d9e7ea2d11ec9e98a8683b6eb99f9d7d0448394ef6e0d6d91bd4eb817220" +checksum = "eba4c50d905804fe9ec4e159fde06b9d38f9440228617ab64a03d7a2091ece63" dependencies = [ "ahash", "bytemuck", @@ -934,7 +931,7 @@ dependencies = [ "egui-wgpu", "egui-winit", "egui_glow", - "glow 0.16.0", + "glow", "glutin", "glutin-winit", "home", @@ -962,12 +959,13 @@ dependencies = [ [[package]] name = "egui" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "252d52224d35be1535d7fd1d6139ce071fb42c9097773e79f7665604f5596b5e" +checksum = "7d2768eaa6d5c80a6e2a008da1f0e062dff3c83eb2b28605ea2d0732d46e74d6" dependencies = [ "accesskit", "ahash", + "bitflags 2.9.0", "emath", "epaint", "log", @@ -979,9 +977,9 @@ dependencies = [ [[package]] name = "egui-wgpu" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c1e821d2d8921ef6ce98b258c7e24d9d6aab2ca1f9cdf374eca997e7f67f59" +checksum = "6d8151704bcef6271bec1806c51544d70e79ef20e8616e5eac01facfd9c8c54a" dependencies = [ "ahash", "bytemuck", @@ -990,7 +988,7 @@ dependencies = [ "epaint", "log", "profiling", - "thiserror", + "thiserror 1.0.69", "type-map", "web-time", "wgpu", @@ -999,13 +997,14 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e84c2919cd9f3a38a91e8f84ac6a245c19251fd95226ed9fae61d5ea564fce3" +checksum = "ace791b367c1f63e6044aef2f3834904509d1d1a6912fd23ebf3f6a9af92cd84" dependencies = [ "accesskit_winit", "ahash", "arboard", + "bytemuck", "egui", "log", "profiling", @@ -1019,9 +1018,9 @@ dependencies = [ [[package]] name = "egui_extras" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7a8198c088b1007108cb2d403bc99a5e370999b200db4f14559610d7330126" +checksum = "b5b5cf69510eb3d19211fc0c062fb90524f43fe8e2c012967dcf0e2d81cb040f" dependencies = [ "ahash", "egui", @@ -1033,14 +1032,14 @@ dependencies = [ [[package]] name = "egui_glow" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eaf6264cc7608e3e69a7d57a6175f438275f1b3889c1a551b418277721c95e6" +checksum = "9a53e2374a964c3c793cb0b8ead81bca631f24974bc0b747d1a5622f4e39fdd0" dependencies = [ "ahash", "bytemuck", "egui", - "glow 0.16.0", + "glow", "log", "memoffset", "profiling", @@ -1051,9 +1050,9 @@ dependencies = [ [[package]] name = "emath" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4fe73c1207b864ee40aa0b0c038d6092af1030744678c60188a05c28553515d" +checksum = "55b7b6be5ad1d247f11738b0e4699d9c20005ed366f2c29f5ec1f8e1de180bc2" dependencies = [ "bytemuck", "serde", @@ -1126,9 +1125,9 @@ dependencies = [ [[package]] name = "epaint" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5666f8d25236293c966fbb3635eac18b04ad1914e3bab55bc7d44b9980cafcac" +checksum = "275b665a7b9611d8317485187e5458750850f9e64604d3c58434bb3fc1d22915" dependencies = [ "ab_glyph", "ahash", @@ -1145,15 +1144,15 @@ dependencies = [ [[package]] name = "epaint_default_fonts" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66f6ddac3e6ac6fd4c3d48bb8b1943472f8da0f43a4303bcd8a18aa594401c80" +checksum = "9343d356d7cac894dacafc161b4654e0881301097bdf32a122ed503d97cb94b6" [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" @@ -1209,9 +1208,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.35" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" dependencies = [ "crc32fast", "miniz_oxide", @@ -1488,9 +1487,9 @@ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" dependencies = [ "aho-corasick", "bstr", @@ -1499,18 +1498,6 @@ dependencies = [ "regex-syntax 0.8.5", ] -[[package]] -name = "glow" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51fa363f025f5c111e03f13eda21162faeacb6911fe8caa0c0349f9cf0c4483" -dependencies = [ - "js-sys", - "slotmap", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "glow" version = "0.16.0" @@ -1529,8 +1516,8 @@ version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03642b8b0cce622392deb0ee3e88511f75df2daac806102597905c3ea1974848" dependencies = [ - "bitflags 2.8.0", - "cfg_aliases 0.2.1", + "bitflags 2.9.0", + "cfg_aliases", "cgl", "core-foundation 0.9.4", "dispatch", @@ -1554,7 +1541,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" dependencies = [ - "cfg_aliases 0.2.1", + "cfg_aliases", "glutin", "raw-window-handle", "winit", @@ -1606,7 +1593,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "gpu-alloc-types", ] @@ -1616,7 +1603,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -1625,7 +1612,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "gpu-descriptor-types", "hashbrown", ] @@ -1636,7 +1623,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -1848,6 +1835,7 @@ dependencies = [ "byteorder-lite", "num-traits", "png", + "tiff", ] [[package]] @@ -1903,7 +1891,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -1923,6 +1911,12 @@ dependencies = [ "libc", ] +[[package]] +name = "jpeg-decoder" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" + [[package]] name = "js-sys" version = "0.3.77" @@ -1958,9 +1952,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" [[package]] name = "libloading" @@ -1978,9 +1972,9 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "libc", - "redox_syscall 0.5.8", + "redox_syscall 0.5.9", ] [[package]] @@ -1997,9 +1991,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "litrs" @@ -2019,9 +2013,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.25" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "log_viewer" @@ -2041,7 +2035,7 @@ dependencies = [ "rstest", "serde", "serde_json", - "strum", + "strum 0.27.1", "tokio", "tracing", "tracing-subscriber", @@ -2093,11 +2087,11 @@ dependencies = [ [[package]] name = "metal" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "block", "core-graphics-types", "foreign-types", @@ -2124,9 +2118,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ "adler2", "simd-adler32", @@ -2145,22 +2139,23 @@ dependencies = [ [[package]] name = "naga" -version = "23.1.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "364f94bc34f61332abebe8cad6f6cd82a5b65cff22c828d05d0968911462ca4f" +checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.8.0", - "cfg_aliases 0.1.1", + "bitflags 2.9.0", + "cfg_aliases", "codespan-reporting", "hexf-parse", "indexmap", "log", "rustc-hash", "spirv", + "strum 0.26.3", "termcolor", - "thiserror", + "thiserror 2.0.11", "unicode-xid", ] @@ -2170,13 +2165,13 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "jni-sys", "log", "ndk-sys 0.6.0+11769913", "num_enum", "raw-window-handle", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2209,9 +2204,9 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", - "cfg_aliases 0.2.1", + "cfg_aliases", "libc", "memoffset", ] @@ -2293,7 +2288,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "block2", "libc", "objc2", @@ -2309,7 +2304,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "block2", "objc2", "objc2-core-location", @@ -2333,7 +2328,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "block2", "objc2", "objc2-foundation", @@ -2375,7 +2370,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "block2", "dispatch", "libc", @@ -2400,7 +2395,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "block2", "objc2", "objc2-foundation", @@ -2412,7 +2407,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "block2", "objc2", "objc2-foundation", @@ -2435,7 +2430,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "block2", "objc2", "objc2-cloud-kit", @@ -2467,7 +2462,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "block2", "objc2", "objc2-core-location", @@ -2498,6 +2493,15 @@ dependencies = [ "libredox", ] +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + [[package]] name = "ordered-stream" version = "0.2.0" @@ -2559,7 +2563,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.8", + "redox_syscall 0.5.9", "smallvec", "windows-targets 0.52.6", ] @@ -2784,11 +2788,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -2890,7 +2894,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.8.0", + "bitflags 2.9.0", "serde", "serde_derive", ] @@ -2952,7 +2956,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "errno", "libc", "linux-raw-sys", @@ -3000,18 +3004,18 @@ checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" dependencies = [ "proc-macro2", "quote", @@ -3020,9 +3024,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" dependencies = [ "itoa", "memchr", @@ -3117,9 +3121,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" [[package]] name = "smithay-client-toolkit" @@ -3127,7 +3131,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "calloop", "calloop-wayland-source", "cursor-icon", @@ -3135,7 +3139,7 @@ dependencies = [ "log", "memmap2", "rustix", - "thiserror", + "thiserror 1.0.69", "wayland-backend", "wayland-client", "wayland-csd-frame", @@ -3182,7 +3186,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -3203,7 +3207,16 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +dependencies = [ + "strum_macros 0.27.1", ] [[package]] @@ -3219,6 +3232,19 @@ dependencies = [ "syn", ] +[[package]] +name = "strum_macros" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + [[package]] name = "syn" version = "2.0.98" @@ -3262,9 +3288,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.16.0" +version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ "cfg-if", "fastrand", @@ -3289,7 +3315,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", ] [[package]] @@ -3303,6 +3338,17 @@ dependencies = [ "syn", ] +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -3313,6 +3359,17 @@ dependencies = [ "once_cell", ] +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -3375,9 +3432,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.23" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap", "serde", @@ -3464,9 +3521,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "uds_windows" @@ -3487,9 +3544,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" [[package]] name = "unicode-segmentation" @@ -3667,7 +3724,7 @@ version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2120de3d33638aaef5b9f4472bff75f07c56379cf76ea320bd3a3d65ecaf73f" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "rustix", "wayland-backend", "wayland-scanner", @@ -3679,7 +3736,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cursor-icon", "wayland-backend", ] @@ -3701,7 +3758,7 @@ version = "0.32.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0781cf46869b37e36928f7b432273c0995aa8aed9552c556fb18754420541efc" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -3713,7 +3770,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ccaacc76703fefd6763022ac565b590fcade92202492381c95b2edfdf7d46b3" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -3726,7 +3783,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "248a02e6f595aad796561fa82d25601bd2c8c3b145b1c7453fc8f94c1a58f8b2" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -3794,14 +3851,21 @@ dependencies = [ "web-sys", ] +[[package]] +name = "weezl" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" + [[package]] name = "wgpu" -version = "23.0.1" +version = "24.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f70000db37c469ea9d67defdc13024ddf9a5f1b89cb2941b812ad7cde1735a" +checksum = "47f55718f85c2fa756edffa0e7f0e0a60aba463d1362b57e23123c58f035e4b6" dependencies = [ "arrayvec", - "cfg_aliases 0.1.1", + "bitflags 2.9.0", + "cfg_aliases", "document-features", "js-sys", "log", @@ -3820,14 +3884,14 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "23.0.1" +version = "24.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d63c3c478de8e7e01786479919c8769f62a22eec16788d8c2ac77ce2c132778a" +checksum = "671c25545d479b47d3f0a8e373aceb2060b67c6eb841b24ac8c32348151c7a0c" dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.8.0", - "cfg_aliases 0.1.1", + "bitflags 2.9.0", + "cfg_aliases", "document-features", "indexmap", "log", @@ -3838,25 +3902,25 @@ dependencies = [ "raw-window-handle", "rustc-hash", "smallvec", - "thiserror", + "thiserror 2.0.11", "wgpu-hal", "wgpu-types", ] [[package]] name = "wgpu-hal" -version = "23.0.1" +version = "24.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89364b8a0b211adc7b16aeaf1bd5ad4a919c1154b44c9ce27838213ba05fd821" +checksum = "4317a17171dc20e6577bf606796794580accae0716a69edbc7388c86a3ec9f23" dependencies = [ "android_system_properties", "arrayvec", "ash", - "bitflags 2.8.0", + "bitflags 2.9.0", "bytemuck", - "cfg_aliases 0.1.1", + "cfg_aliases", "core-graphics-types", - "glow 0.14.2", + "glow", "glutin_wgl_sys", "gpu-alloc", "gpu-descriptor", @@ -3870,13 +3934,14 @@ dependencies = [ "ndk-sys 0.5.0+25.2.9519653", "objc", "once_cell", + "ordered-float", "parking_lot", "profiling", "raw-window-handle", "renderdoc-sys", "rustc-hash", "smallvec", - "thiserror", + "thiserror 2.0.11", "wasm-bindgen", "web-sys", "wgpu-types", @@ -3885,12 +3950,13 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "610f6ff27778148c31093f3b03abc4840f9636d58d597ca2f5977433acfe0068" +checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "js-sys", + "log", "web-sys", ] @@ -3998,6 +4064,15 @@ dependencies = [ "windows-targets 0.42.2", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -4203,11 +4278,11 @@ dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.8.0", + "bitflags 2.9.0", "block2", "bytemuck", "calloop", - "cfg_aliases 0.2.1", + "cfg_aliases", "concurrent-queue", "core-foundation 0.9.4", "core-graphics", @@ -4247,9 +4322,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" +checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" dependencies = [ "memchr", ] @@ -4260,7 +4335,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -4329,7 +4404,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "dlib", "log", "once_cell", @@ -4418,9 +4493,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.4.0" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbddd8b6cb25d5d8ec1b23277b45299a98bfb220f1761ca11e186d5c702507f8" +checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236" dependencies = [ "async-broadcast", "async-recursion", @@ -4428,7 +4503,7 @@ dependencies = [ "enumflags2", "event-listener", "futures-core", - "futures-util", + "futures-lite", "hex", "nix", "ordered-stream", @@ -4441,9 +4516,9 @@ dependencies = [ "windows-sys 0.59.0", "winnow", "xdg-home", - "zbus_macros 5.4.0", + "zbus_macros 5.5.0", "zbus_names 4.2.0", - "zvariant 5.3.0", + "zvariant 5.4.0", ] [[package]] @@ -4485,16 +4560,16 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.4.0" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac404d48b4e9cf193c8b49589f3280ceca5ff63519e7e64f55b4cf9c47ce146" +checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", "syn", "zbus_names 4.2.0", - "zvariant 5.3.0", + "zvariant 5.4.0", "zvariant_utils 3.2.0", ] @@ -4518,7 +4593,7 @@ dependencies = [ "serde", "static_assertions", "winnow", - "zvariant 5.3.0", + "zvariant 5.4.0", ] [[package]] @@ -4557,18 +4632,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", @@ -4613,9 +4688,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.3.0" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c951c21879c6e1d46ac5adfc34f698fefb465d498cf4ac87545849bd71bb5a" +checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac" dependencies = [ "endi", "enumflags2", @@ -4623,7 +4698,7 @@ dependencies = [ "static_assertions", "url", "winnow", - "zvariant_derive 5.3.0", + "zvariant_derive 5.4.0", "zvariant_utils 3.2.0", ] @@ -4642,9 +4717,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.3.0" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eeb539471af098d9e63faf428c71ac4cd4efe0b5baa3c8a6b991c5f2543b70e" +checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f" dependencies = [ "proc-macro-crate", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 2e960ce..78599f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,15 +5,15 @@ edition = "2021" [dependencies] anyhow = "1.0.95" -eframe = { version = "0.30", default-features = false, features = [ # +eframe = { version = "0.31", default-features = false, features = [ # "accesskit", # Make egui compatible with screen readers. NOTE: adds a lot of dependencies. "default_fonts", # Embed the default egui fonts. "glow", # Use the glow rendering backend. Alternative: "wgpu". "persistence", # Enable restoring app state when restarting the app. "wayland", # To support Linux (and CI) "x11",] } -egui = "0.30" -egui_extras = "0.30" +egui = "0.31" +egui_extras = "0.31" futures = "0.3.31" rfd = { version = "0.15.2", default-features = false, features = ["gtk3", "tokio"] } ron = "0.8.1" @@ -29,7 +29,7 @@ tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } # web: [target.'cfg(target_arch = "wasm32")'.dependencies] -log = "0.4.24" +log = "0.4.26" poll-promise = { version = "0.3.0", features = ["web"] } wasm-bindgen-futures = "0.4.49" web-sys = "0.3.76" @@ -48,4 +48,4 @@ insta = { version = "1.42", features = ["ron", "glob", "yaml"] } pretty_assertions = "1.4.1" ron = "0.8.1" rstest = "0.24" -strum = { version = "0.26.3", features = ["derive"] } +strum = { version = "0.27.1", features = ["derive"] } From 400431e4cb568d496708486a51d03a681b51e92d Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 15:08:32 -0500 Subject: [PATCH 09/22] feat: add puffin profiling --- .vscode/settings.json | 4 +- Cargo.lock | 86 +++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 8 +++- bacon.toml | 4 ++ src/main.rs | 30 +++++++++++++++ 5 files changed, 129 insertions(+), 3 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index dd7bbbc..d371938 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,5 +8,7 @@ "logviewer", "pkill", "xfixes" - ] + ], + + "rust-analyzer.cargo.features": ["profiling"] } diff --git a/Cargo.lock b/Cargo.lock index 9a732f7..1bd04de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -499,6 +499,15 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bit-set" version = "0.8.0" @@ -822,6 +831,15 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-channel" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -1048,6 +1066,12 @@ dependencies = [ "winit", ] +[[package]] +name = "either" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d" + [[package]] name = "emath" version = "0.31.0" @@ -1874,6 +1898,15 @@ dependencies = [ "walkdir", ] +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.14" @@ -2030,6 +2063,9 @@ dependencies = [ "log", "poll-promise", "pretty_assertions", + "profiling", + "puffin", + "puffin_http", "rfd", "ron 0.8.1", "rstest", @@ -2043,6 +2079,12 @@ dependencies = [ "web-sys", ] +[[package]] +name = "lz4_flex" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" + [[package]] name = "malloc_buf" version = "0.0.6" @@ -2712,6 +2754,50 @@ name = "profiling" version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +dependencies = [ + "profiling-procmacros", + "puffin", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "puffin" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9dae7b05c02ec1a6bc9bcf20d8bc64a7dcbf57934107902a872014899b741f" +dependencies = [ + "anyhow", + "bincode", + "byteorder", + "cfg-if", + "itertools", + "lz4_flex", + "once_cell", + "parking_lot", + "serde", +] + +[[package]] +name = "puffin_http" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "739a3c7f56604713b553d7addd7718c226e88d598979ae3450320800bd0e9810" +dependencies = [ + "anyhow", + "crossbeam-channel", + "log", + "parking_lot", + "puffin", +] [[package]] name = "quick-xml" diff --git a/Cargo.toml b/Cargo.toml index 78599f3..550510d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,9 @@ tracing = "0.1.41" poll-promise = { version = "0.3.0", features = ["tokio"] } tokio = { version = "1.43", default-features = false } # I suspect features are brought in with poll-promise (not able to separate out to see what we need) tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } +puffin = { version = "0.19", optional = true } +puffin_http = { version = "0.16", optional = true } +profiling = { version = "1", features = ["profile-with-puffin"], optional = true } # web: [target.'cfg(target_arch = "wasm32")'.dependencies] @@ -41,11 +44,12 @@ opt-level = 2 # fast and small wasm [profile.dev.package."*"] opt-level = 2 -[patch.crates-io] - [dev-dependencies] insta = { version = "1.42", features = ["ron", "glob", "yaml"] } pretty_assertions = "1.4.1" ron = "0.8.1" rstest = "0.24" strum = { version = "0.27.1", features = ["derive"] } + +[features] +profiling = ["dep:profiling", "dep:puffin_http", "dep:puffin"] diff --git a/bacon.toml b/bacon.toml index eff4a87..459b426 100644 --- a/bacon.toml +++ b/bacon.toml @@ -12,5 +12,9 @@ background = false on_change_strategy = "kill_then_restart" kill = ["pkill", "-TERM", "-P"] +[jobs.run-profiling] +command = ["cargo", "run", "--features=profiling"] + [keybindings] ctrl-d = "job:reset-settings-and-run" +ctrl-r = "job:run-profiling" diff --git a/src/main.rs b/src/main.rs index 71e5bb4..74c5290 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,6 +32,9 @@ async fn main() -> eframe::Result<()> { ), ..Default::default() }; + #[cfg(feature = "profiling")] + start_puffin_server(); + eframe::run_native( "Log Viewer", native_options, @@ -85,3 +88,30 @@ fn main() { } }); } + +#[cfg(feature = "profiling")] +fn start_puffin_server() { + puffin::set_scopes_on(true); // tell puffin to collect data + + match puffin_http::Server::new("127.0.0.1:8585") { + Ok(puffin_server) => { + tracing::info!( + "Run: cargo install puffin_viewer && puffin_viewer --url 127.0.0.1:8585" + ); + + std::process::Command::new("puffin_viewer") + .arg("--url") + .arg("127.0.0.1:8585") + .spawn() + .ok(); + + // We can store the server if we want, but in this case we just want + // it to keep running. Dropping it closes the server, so let's not drop it! + #[allow(clippy::mem_forget)] + std::mem::forget(puffin_server); + } + Err(err) => { + tracing::error!("Failed to start puffin server: {err}"); + } + }; +} From 5cfb0b590b5f10fd9adad86fbb5e68f6ef4424a9 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 15:13:13 -0500 Subject: [PATCH 10/22] test: update snapshots for Size from Auto to KB --- ...wer__app__data__tests__long.log_debug.snap | 162 +++++++++--------- ...iewer__app__data__tests__long.log_ron.snap | 162 +++++++++--------- ...ewer__app__data__tests__long.log_yaml.snap | 162 +++++++++--------- ...er__app__data__tests__short.log_debug.snap | 4 +- ...ewer__app__data__tests__short.log_ron.snap | 4 +- ...wer__app__data__tests__short.log_yaml.snap | 4 +- 6 files changed, 249 insertions(+), 249 deletions(-) diff --git a/tests/snapshots/log_viewer__app__data__tests__long.log_debug.snap b/tests/snapshots/log_viewer__app__data__tests__long.log_debug.snap index be733a8..6e81a46 100644 --- a/tests/snapshots/log_viewer__app__data__tests__long.log_debug.snap +++ b/tests/snapshots/log_viewer__app__data__tests__long.log_debug.snap @@ -17,7 +17,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(0), - "row_size": String("0229.0000 Bytes"), + "row_size": String("0000.2236 KB"), "target": String("my_server::startup"), "time": String("2024-02-10T06:02:11.961915483Z"), "v": Number(0), @@ -35,7 +35,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(1), - "row_size": String("0287.0000 Bytes"), + "row_size": String("0000.2803 KB"), "target": String("actix_server::builder"), "time": String("2024-02-10T06:02:11.962339028Z"), "v": Number(0), @@ -53,7 +53,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(2), - "row_size": String("0322.0000 Bytes"), + "row_size": String("0000.3145 KB"), "target": String("actix_server::server"), "time": String("2024-02-10T06:02:11.962427666Z"), "v": Number(0), @@ -82,7 +82,7 @@ Data { "pid": Number(201399), "request_id": String("4dd8dcd4-c5a6-400d-b6ba-b29658abe7e4"), "row#": Number(3), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:21.163518462Z"), "v": Number(0), @@ -114,7 +114,7 @@ Data { "pid": Number(201399), "request_id": String("4dd8dcd4-c5a6-400d-b6ba-b29658abe7e4"), "row#": Number(4), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:21.170432285Z"), "v": Number(0), @@ -143,7 +143,7 @@ Data { "pid": Number(201399), "request_id": String("2f3521ae-a8ea-43b6-9c6b-1a44d36845f0"), "row#": Number(5), - "row_size": String("0680.0000 Bytes"), + "row_size": String("0000.6641 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:21.224469025Z"), "v": Number(0), @@ -175,7 +175,7 @@ Data { "pid": Number(201399), "request_id": String("2f3521ae-a8ea-43b6-9c6b-1a44d36845f0"), "row#": Number(6), - "row_size": String("0750.0000 Bytes"), + "row_size": String("0000.7324 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:21.224813634Z"), "v": Number(0), @@ -204,7 +204,7 @@ Data { "pid": Number(201399), "request_id": String("51bb624d-8933-46b0-b5f3-13749cdcfb65"), "row#": Number(7), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:27.735320535Z"), "v": Number(0), @@ -236,7 +236,7 @@ Data { "pid": Number(201399), "request_id": String("51bb624d-8933-46b0-b5f3-13749cdcfb65"), "row#": Number(8), - "row_size": String("0758.0000 Bytes"), + "row_size": String("0000.7402 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:27.73652712Z"), "v": Number(0), @@ -265,7 +265,7 @@ Data { "pid": Number(201399), "request_id": String("96758627-0b02-494b-9b5a-201886e1f811"), "row#": Number(9), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:28.778516388Z"), "v": Number(0), @@ -297,7 +297,7 @@ Data { "pid": Number(201399), "request_id": String("96758627-0b02-494b-9b5a-201886e1f811"), "row#": Number(10), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:28.780296567Z"), "v": Number(0), @@ -326,7 +326,7 @@ Data { "pid": Number(201399), "request_id": String("86fb5ce6-8f6b-49cb-b834-0cfaf9ad9ed6"), "row#": Number(11), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:29.752816316Z"), "v": Number(0), @@ -358,7 +358,7 @@ Data { "pid": Number(201399), "request_id": String("86fb5ce6-8f6b-49cb-b834-0cfaf9ad9ed6"), "row#": Number(12), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:29.754506839Z"), "v": Number(0), @@ -387,7 +387,7 @@ Data { "pid": Number(201399), "request_id": String("da6a2caf-621b-4cd2-90fd-c67b0fe951b7"), "row#": Number(13), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:30.528781299Z"), "v": Number(0), @@ -419,7 +419,7 @@ Data { "pid": Number(201399), "request_id": String("da6a2caf-621b-4cd2-90fd-c67b0fe951b7"), "row#": Number(14), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:30.530387153Z"), "v": Number(0), @@ -448,7 +448,7 @@ Data { "pid": Number(201399), "request_id": String("c12cd3d3-b232-4327-9ee3-ad680ff493e2"), "row#": Number(15), - "row_size": String("0688.0000 Bytes"), + "row_size": String("0000.6719 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:31.01154897Z"), "v": Number(0), @@ -480,7 +480,7 @@ Data { "pid": Number(201399), "request_id": String("c12cd3d3-b232-4327-9ee3-ad680ff493e2"), "row#": Number(16), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:31.013404537Z"), "v": Number(0), @@ -509,7 +509,7 @@ Data { "pid": Number(201399), "request_id": String("dfb6d617-b933-4fca-8c0d-1da09d19afed"), "row#": Number(17), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:31.476792941Z"), "v": Number(0), @@ -541,7 +541,7 @@ Data { "pid": Number(201399), "request_id": String("dfb6d617-b933-4fca-8c0d-1da09d19afed"), "row#": Number(18), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:31.478740965Z"), "v": Number(0), @@ -570,7 +570,7 @@ Data { "pid": Number(201399), "request_id": String("2b96d8ce-db51-406a-9280-095e751d1ac8"), "row#": Number(19), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:31.909142641Z"), "v": Number(0), @@ -602,7 +602,7 @@ Data { "pid": Number(201399), "request_id": String("2b96d8ce-db51-406a-9280-095e751d1ac8"), "row#": Number(20), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:31.911001241Z"), "v": Number(0), @@ -631,7 +631,7 @@ Data { "pid": Number(201399), "request_id": String("952e04e8-1c0d-4b69-9ee1-63ddd390cb61"), "row#": Number(21), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:32.398038641Z"), "v": Number(0), @@ -663,7 +663,7 @@ Data { "pid": Number(201399), "request_id": String("952e04e8-1c0d-4b69-9ee1-63ddd390cb61"), "row#": Number(22), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:32.398942635Z"), "v": Number(0), @@ -692,7 +692,7 @@ Data { "pid": Number(201399), "request_id": String("8de12498-a0f2-42cf-b989-e8fd2b8728bf"), "row#": Number(23), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:32.753169442Z"), "v": Number(0), @@ -724,7 +724,7 @@ Data { "pid": Number(201399), "request_id": String("8de12498-a0f2-42cf-b989-e8fd2b8728bf"), "row#": Number(24), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:32.753910825Z"), "v": Number(0), @@ -753,7 +753,7 @@ Data { "pid": Number(201399), "request_id": String("f84020d7-1137-494b-88d5-0fae03fbd53b"), "row#": Number(25), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:33.189998435Z"), "v": Number(0), @@ -785,7 +785,7 @@ Data { "pid": Number(201399), "request_id": String("f84020d7-1137-494b-88d5-0fae03fbd53b"), "row#": Number(26), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:33.190858115Z"), "v": Number(0), @@ -814,7 +814,7 @@ Data { "pid": Number(201399), "request_id": String("862b4783-d633-40d3-8ed6-0d6fbd51b590"), "row#": Number(27), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:33.581415707Z"), "v": Number(0), @@ -846,7 +846,7 @@ Data { "pid": Number(201399), "request_id": String("862b4783-d633-40d3-8ed6-0d6fbd51b590"), "row#": Number(28), - "row_size": String("0758.0000 Bytes"), + "row_size": String("0000.7402 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:33.58330603Z"), "v": Number(0), @@ -875,7 +875,7 @@ Data { "pid": Number(201399), "request_id": String("74a2f98c-a9dc-479b-b0f8-863e7ff34d3a"), "row#": Number(29), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:33.995029867Z"), "v": Number(0), @@ -907,7 +907,7 @@ Data { "pid": Number(201399), "request_id": String("74a2f98c-a9dc-479b-b0f8-863e7ff34d3a"), "row#": Number(30), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:33.995775333Z"), "v": Number(0), @@ -936,7 +936,7 @@ Data { "pid": Number(201399), "request_id": String("198ad2b0-9b55-420a-8912-e3122170b760"), "row#": Number(31), - "row_size": String("0688.0000 Bytes"), + "row_size": String("0000.6719 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:34.49601321Z"), "v": Number(0), @@ -968,7 +968,7 @@ Data { "pid": Number(201399), "request_id": String("198ad2b0-9b55-420a-8912-e3122170b760"), "row#": Number(32), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:34.498318841Z"), "v": Number(0), @@ -997,7 +997,7 @@ Data { "pid": Number(201399), "request_id": String("9d866454-2d22-414b-aab3-e7a32d73035b"), "row#": Number(33), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:34.933587244Z"), "v": Number(0), @@ -1029,7 +1029,7 @@ Data { "pid": Number(201399), "request_id": String("9d866454-2d22-414b-aab3-e7a32d73035b"), "row#": Number(34), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:34.935651543Z"), "v": Number(0), @@ -1058,7 +1058,7 @@ Data { "pid": Number(201399), "request_id": String("25b1c7b3-75d7-4f85-bab6-920b1b3f4435"), "row#": Number(35), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:35.404631082Z"), "v": Number(0), @@ -1090,7 +1090,7 @@ Data { "pid": Number(201399), "request_id": String("25b1c7b3-75d7-4f85-bab6-920b1b3f4435"), "row#": Number(36), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:35.406396297Z"), "v": Number(0), @@ -1119,7 +1119,7 @@ Data { "pid": Number(201399), "request_id": String("bd28760e-f8be-4285-b3fa-b935de5e3cce"), "row#": Number(37), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:35.908410809Z"), "v": Number(0), @@ -1151,7 +1151,7 @@ Data { "pid": Number(201399), "request_id": String("bd28760e-f8be-4285-b3fa-b935de5e3cce"), "row#": Number(38), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:35.909930198Z"), "v": Number(0), @@ -1180,7 +1180,7 @@ Data { "pid": Number(201399), "request_id": String("d7410116-e47f-44db-8e95-65ae6d731aa3"), "row#": Number(39), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:36.406646686Z"), "v": Number(0), @@ -1212,7 +1212,7 @@ Data { "pid": Number(201399), "request_id": String("d7410116-e47f-44db-8e95-65ae6d731aa3"), "row#": Number(40), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:36.408148172Z"), "v": Number(0), @@ -1241,7 +1241,7 @@ Data { "pid": Number(201399), "request_id": String("1718b374-a08d-491c-8802-6054905141ea"), "row#": Number(41), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:36.883330358Z"), "v": Number(0), @@ -1273,7 +1273,7 @@ Data { "pid": Number(201399), "request_id": String("1718b374-a08d-491c-8802-6054905141ea"), "row#": Number(42), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:36.884516393Z"), "v": Number(0), @@ -1302,7 +1302,7 @@ Data { "pid": Number(201399), "request_id": String("52288c2d-ea91-48c5-9db9-1b7e134a3915"), "row#": Number(43), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:37.414535794Z"), "v": Number(0), @@ -1334,7 +1334,7 @@ Data { "pid": Number(201399), "request_id": String("52288c2d-ea91-48c5-9db9-1b7e134a3915"), "row#": Number(44), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:37.416158356Z"), "v": Number(0), @@ -1363,7 +1363,7 @@ Data { "pid": Number(201399), "request_id": String("b362e638-1e2a-4184-84d9-fb39c3cfa5c9"), "row#": Number(45), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:37.988422018Z"), "v": Number(0), @@ -1395,7 +1395,7 @@ Data { "pid": Number(201399), "request_id": String("b362e638-1e2a-4184-84d9-fb39c3cfa5c9"), "row#": Number(46), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:37.990135478Z"), "v": Number(0), @@ -1424,7 +1424,7 @@ Data { "pid": Number(201399), "request_id": String("fe545736-0993-4bbd-8395-b5be9fe6ccd4"), "row#": Number(47), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:38.516440225Z"), "v": Number(0), @@ -1456,7 +1456,7 @@ Data { "pid": Number(201399), "request_id": String("fe545736-0993-4bbd-8395-b5be9fe6ccd4"), "row#": Number(48), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:38.518258022Z"), "v": Number(0), @@ -1485,7 +1485,7 @@ Data { "pid": Number(201399), "request_id": String("63d31d2b-bbfc-4f01-90b3-80e53d407abe"), "row#": Number(49), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:39.063656597Z"), "v": Number(0), @@ -1517,7 +1517,7 @@ Data { "pid": Number(201399), "request_id": String("63d31d2b-bbfc-4f01-90b3-80e53d407abe"), "row#": Number(50), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:39.065560988Z"), "v": Number(0), @@ -1546,7 +1546,7 @@ Data { "pid": Number(201399), "request_id": String("ea4e5992-7566-4b3e-bd3e-39e4a6fe9db6"), "row#": Number(51), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:39.677814726Z"), "v": Number(0), @@ -1578,7 +1578,7 @@ Data { "pid": Number(201399), "request_id": String("ea4e5992-7566-4b3e-bd3e-39e4a6fe9db6"), "row#": Number(52), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:39.678891214Z"), "v": Number(0), @@ -1607,7 +1607,7 @@ Data { "pid": Number(201399), "request_id": String("4639d2b0-dfbc-404a-b51a-82aa4743972a"), "row#": Number(53), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:40.233335145Z"), "v": Number(0), @@ -1639,7 +1639,7 @@ Data { "pid": Number(201399), "request_id": String("4639d2b0-dfbc-404a-b51a-82aa4743972a"), "row#": Number(54), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:40.235457041Z"), "v": Number(0), @@ -1668,7 +1668,7 @@ Data { "pid": Number(201399), "request_id": String("521e581e-8fbc-4876-bcb6-0754c97423ef"), "row#": Number(55), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:40.809624727Z"), "v": Number(0), @@ -1700,7 +1700,7 @@ Data { "pid": Number(201399), "request_id": String("521e581e-8fbc-4876-bcb6-0754c97423ef"), "row#": Number(56), - "row_size": String("0759.0000 Bytes"), + "row_size": String("0000.7412 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:02:40.811254162Z"), "v": Number(0), @@ -1729,7 +1729,7 @@ Data { "pid": Number(201399), "request_id": String("6113381e-76af-49bb-bca8-7e07cf3b6c5c"), "row#": Number(57), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:03:06.191856068Z"), "v": Number(0), @@ -1762,7 +1762,7 @@ Data { "pid": Number(201399), "request_id": String("6113381e-76af-49bb-bca8-7e07cf3b6c5c"), "row#": Number(58), - "row_size": String("0849.0000 Bytes"), + "row_size": String("0000.8291 KB"), "target": String("log"), "time": String("2024-02-10T06:03:06.192024502Z"), "v": Number(0), @@ -1791,7 +1791,7 @@ Data { "pid": Number(201399), "request_id": String("b675eec1-4b4f-4ba1-be5f-5dfb65f1ce29"), "row#": Number(59), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:03:06.797748362Z"), "v": Number(0), @@ -1820,7 +1820,7 @@ Data { "pid": Number(201399), "request_id": String("8a19c638-9b4e-4dd6-8f00-f2d213fca243"), "row#": Number(60), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:03:07.444854732Z"), "v": Number(0), @@ -1849,7 +1849,7 @@ Data { "pid": Number(201399), "request_id": String("6113381e-76af-49bb-bca8-7e07cf3b6c5c"), "row#": Number(61), - "row_size": String("0688.0000 Bytes"), + "row_size": String("0000.6719 KB"), "target": String("my_server::routes::status"), "time": String("2024-02-10T06:03:08.193165123Z"), "v": Number(0), @@ -1881,7 +1881,7 @@ Data { "pid": Number(201399), "request_id": String("6113381e-76af-49bb-bca8-7e07cf3b6c5c"), "row#": Number(62), - "row_size": String("0761.0000 Bytes"), + "row_size": String("0000.7432 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:03:08.19338919Z"), "v": Number(0), @@ -1910,7 +1910,7 @@ Data { "pid": Number(201399), "request_id": String("b675eec1-4b4f-4ba1-be5f-5dfb65f1ce29"), "row#": Number(63), - "row_size": String("0688.0000 Bytes"), + "row_size": String("0000.6719 KB"), "target": String("my_server::routes::status"), "time": String("2024-02-10T06:03:08.799070853Z"), "v": Number(0), @@ -1942,7 +1942,7 @@ Data { "pid": Number(201399), "request_id": String("b675eec1-4b4f-4ba1-be5f-5dfb65f1ce29"), "row#": Number(64), - "row_size": String("0762.0000 Bytes"), + "row_size": String("0000.7441 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:03:08.799252303Z"), "v": Number(0), @@ -1971,7 +1971,7 @@ Data { "pid": Number(201399), "request_id": String("8a19c638-9b4e-4dd6-8f00-f2d213fca243"), "row#": Number(65), - "row_size": String("0688.0000 Bytes"), + "row_size": String("0000.6719 KB"), "target": String("my_server::routes::status"), "time": String("2024-02-10T06:03:09.446331651Z"), "v": Number(0), @@ -2003,7 +2003,7 @@ Data { "pid": Number(201399), "request_id": String("8a19c638-9b4e-4dd6-8f00-f2d213fca243"), "row#": Number(66), - "row_size": String("0762.0000 Bytes"), + "row_size": String("0000.7441 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:03:09.446655074Z"), "v": Number(0), @@ -2032,7 +2032,7 @@ Data { "pid": Number(201399), "request_id": String("d4a6f3a2-671b-4cb2-94c4-094867c46345"), "row#": Number(67), - "row_size": String("0689.0000 Bytes"), + "row_size": String("0000.6729 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:03:13.082901829Z"), "v": Number(0), @@ -2061,7 +2061,7 @@ Data { "pid": Number(201399), "request_id": String("d4a6f3a2-671b-4cb2-94c4-094867c46345"), "row#": Number(68), - "row_size": String("0688.0000 Bytes"), + "row_size": String("0000.6719 KB"), "target": String("my_server::routes::status"), "time": String("2024-02-10T06:03:15.084438959Z"), "v": Number(0), @@ -2093,7 +2093,7 @@ Data { "pid": Number(201399), "request_id": String("d4a6f3a2-671b-4cb2-94c4-094867c46345"), "row#": Number(69), - "row_size": String("0762.0000 Bytes"), + "row_size": String("0000.7441 KB"), "target": String("tracing_actix_web::root_span_builder"), "time": String("2024-02-10T06:03:15.084681044Z"), "v": Number(0), @@ -2111,7 +2111,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(70), - "row_size": String("0308.0000 Bytes"), + "row_size": String("0000.3008 KB"), "target": String("actix_server::server"), "time": String("2024-02-10T06:03:26.993587646Z"), "v": Number(0), @@ -2129,7 +2129,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(71), - "row_size": String("0288.0000 Bytes"), + "row_size": String("0000.2812 KB"), "target": String("actix_server::accept"), "time": String("2024-02-10T06:03:26.993775955Z"), "v": Number(0), @@ -2147,7 +2147,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(72), - "row_size": String("0292.0000 Bytes"), + "row_size": String("0000.2852 KB"), "target": String("actix_server::worker"), "time": String("2024-02-10T06:03:26.993775787Z"), "v": Number(0), @@ -2165,7 +2165,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(73), - "row_size": String("0292.0000 Bytes"), + "row_size": String("0000.2852 KB"), "target": String("actix_server::worker"), "time": String("2024-02-10T06:03:26.993775779Z"), "v": Number(0), @@ -2183,7 +2183,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(74), - "row_size": String("0292.0000 Bytes"), + "row_size": String("0000.2852 KB"), "target": String("actix_server::worker"), "time": String("2024-02-10T06:03:26.993775827Z"), "v": Number(0), @@ -2201,7 +2201,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(75), - "row_size": String("0292.0000 Bytes"), + "row_size": String("0000.2852 KB"), "target": String("actix_server::worker"), "time": String("2024-02-10T06:03:26.993783793Z"), "v": Number(0), @@ -2219,7 +2219,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(76), - "row_size": String("0292.0000 Bytes"), + "row_size": String("0000.2852 KB"), "target": String("actix_server::worker"), "time": String("2024-02-10T06:03:26.993808637Z"), "v": Number(0), @@ -2237,7 +2237,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(77), - "row_size": String("0292.0000 Bytes"), + "row_size": String("0000.2852 KB"), "target": String("actix_server::worker"), "time": String("2024-02-10T06:03:26.994068372Z"), "v": Number(0), @@ -2255,7 +2255,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(78), - "row_size": String("0292.0000 Bytes"), + "row_size": String("0000.2852 KB"), "target": String("actix_server::worker"), "time": String("2024-02-10T06:03:26.994080138Z"), "v": Number(0), @@ -2273,7 +2273,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(79), - "row_size": String("0292.0000 Bytes"), + "row_size": String("0000.2852 KB"), "target": String("actix_server::worker"), "time": String("2024-02-10T06:03:26.994147513Z"), "v": Number(0), @@ -2291,7 +2291,7 @@ Data { "name": String("my_server"), "pid": Number(201399), "row#": Number(80), - "row_size": String("0198.0000 Bytes"), + "row_size": String("0000.1934 KB"), "target": String("my_server"), "time": String("2024-02-10T06:03:27.295589706Z"), "v": Number(0), diff --git a/tests/snapshots/log_viewer__app__data__tests__long.log_ron.snap b/tests/snapshots/log_viewer__app__data__tests__long.log_ron.snap index 5487f32..0990991 100644 --- a/tests/snapshots/log_viewer__app__data__tests__long.log_ron.snap +++ b/tests/snapshots/log_viewer__app__data__tests__long.log_ron.snap @@ -17,7 +17,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 0, - "row_size": "0229.0000 Bytes", + "row_size": "0000.2236 KB", "target": "my_server::startup", "time": "2024-02-10T06:02:11.961915483Z", "v": 0, @@ -34,7 +34,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 1, - "row_size": "0287.0000 Bytes", + "row_size": "0000.2803 KB", "target": "actix_server::builder", "time": "2024-02-10T06:02:11.962339028Z", "v": 0, @@ -51,7 +51,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 2, - "row_size": "0322.0000 Bytes", + "row_size": "0000.3145 KB", "target": "actix_server::server", "time": "2024-02-10T06:02:11.962427666Z", "v": 0, @@ -79,7 +79,7 @@ Data( "pid": 201399, "request_id": "4dd8dcd4-c5a6-400d-b6ba-b29658abe7e4", "row#": 3, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:21.163518462Z", "v": 0, @@ -110,7 +110,7 @@ Data( "pid": 201399, "request_id": "4dd8dcd4-c5a6-400d-b6ba-b29658abe7e4", "row#": 4, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:21.170432285Z", "v": 0, @@ -138,7 +138,7 @@ Data( "pid": 201399, "request_id": "2f3521ae-a8ea-43b6-9c6b-1a44d36845f0", "row#": 5, - "row_size": "0680.0000 Bytes", + "row_size": "0000.6641 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:21.224469025Z", "v": 0, @@ -169,7 +169,7 @@ Data( "pid": 201399, "request_id": "2f3521ae-a8ea-43b6-9c6b-1a44d36845f0", "row#": 6, - "row_size": "0750.0000 Bytes", + "row_size": "0000.7324 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:21.224813634Z", "v": 0, @@ -197,7 +197,7 @@ Data( "pid": 201399, "request_id": "51bb624d-8933-46b0-b5f3-13749cdcfb65", "row#": 7, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:27.735320535Z", "v": 0, @@ -228,7 +228,7 @@ Data( "pid": 201399, "request_id": "51bb624d-8933-46b0-b5f3-13749cdcfb65", "row#": 8, - "row_size": "0758.0000 Bytes", + "row_size": "0000.7402 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:27.73652712Z", "v": 0, @@ -256,7 +256,7 @@ Data( "pid": 201399, "request_id": "96758627-0b02-494b-9b5a-201886e1f811", "row#": 9, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:28.778516388Z", "v": 0, @@ -287,7 +287,7 @@ Data( "pid": 201399, "request_id": "96758627-0b02-494b-9b5a-201886e1f811", "row#": 10, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:28.780296567Z", "v": 0, @@ -315,7 +315,7 @@ Data( "pid": 201399, "request_id": "86fb5ce6-8f6b-49cb-b834-0cfaf9ad9ed6", "row#": 11, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:29.752816316Z", "v": 0, @@ -346,7 +346,7 @@ Data( "pid": 201399, "request_id": "86fb5ce6-8f6b-49cb-b834-0cfaf9ad9ed6", "row#": 12, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:29.754506839Z", "v": 0, @@ -374,7 +374,7 @@ Data( "pid": 201399, "request_id": "da6a2caf-621b-4cd2-90fd-c67b0fe951b7", "row#": 13, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:30.528781299Z", "v": 0, @@ -405,7 +405,7 @@ Data( "pid": 201399, "request_id": "da6a2caf-621b-4cd2-90fd-c67b0fe951b7", "row#": 14, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:30.530387153Z", "v": 0, @@ -433,7 +433,7 @@ Data( "pid": 201399, "request_id": "c12cd3d3-b232-4327-9ee3-ad680ff493e2", "row#": 15, - "row_size": "0688.0000 Bytes", + "row_size": "0000.6719 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:31.01154897Z", "v": 0, @@ -464,7 +464,7 @@ Data( "pid": 201399, "request_id": "c12cd3d3-b232-4327-9ee3-ad680ff493e2", "row#": 16, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:31.013404537Z", "v": 0, @@ -492,7 +492,7 @@ Data( "pid": 201399, "request_id": "dfb6d617-b933-4fca-8c0d-1da09d19afed", "row#": 17, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:31.476792941Z", "v": 0, @@ -523,7 +523,7 @@ Data( "pid": 201399, "request_id": "dfb6d617-b933-4fca-8c0d-1da09d19afed", "row#": 18, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:31.478740965Z", "v": 0, @@ -551,7 +551,7 @@ Data( "pid": 201399, "request_id": "2b96d8ce-db51-406a-9280-095e751d1ac8", "row#": 19, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:31.909142641Z", "v": 0, @@ -582,7 +582,7 @@ Data( "pid": 201399, "request_id": "2b96d8ce-db51-406a-9280-095e751d1ac8", "row#": 20, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:31.911001241Z", "v": 0, @@ -610,7 +610,7 @@ Data( "pid": 201399, "request_id": "952e04e8-1c0d-4b69-9ee1-63ddd390cb61", "row#": 21, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:32.398038641Z", "v": 0, @@ -641,7 +641,7 @@ Data( "pid": 201399, "request_id": "952e04e8-1c0d-4b69-9ee1-63ddd390cb61", "row#": 22, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:32.398942635Z", "v": 0, @@ -669,7 +669,7 @@ Data( "pid": 201399, "request_id": "8de12498-a0f2-42cf-b989-e8fd2b8728bf", "row#": 23, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:32.753169442Z", "v": 0, @@ -700,7 +700,7 @@ Data( "pid": 201399, "request_id": "8de12498-a0f2-42cf-b989-e8fd2b8728bf", "row#": 24, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:32.753910825Z", "v": 0, @@ -728,7 +728,7 @@ Data( "pid": 201399, "request_id": "f84020d7-1137-494b-88d5-0fae03fbd53b", "row#": 25, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:33.189998435Z", "v": 0, @@ -759,7 +759,7 @@ Data( "pid": 201399, "request_id": "f84020d7-1137-494b-88d5-0fae03fbd53b", "row#": 26, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:33.190858115Z", "v": 0, @@ -787,7 +787,7 @@ Data( "pid": 201399, "request_id": "862b4783-d633-40d3-8ed6-0d6fbd51b590", "row#": 27, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:33.581415707Z", "v": 0, @@ -818,7 +818,7 @@ Data( "pid": 201399, "request_id": "862b4783-d633-40d3-8ed6-0d6fbd51b590", "row#": 28, - "row_size": "0758.0000 Bytes", + "row_size": "0000.7402 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:33.58330603Z", "v": 0, @@ -846,7 +846,7 @@ Data( "pid": 201399, "request_id": "74a2f98c-a9dc-479b-b0f8-863e7ff34d3a", "row#": 29, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:33.995029867Z", "v": 0, @@ -877,7 +877,7 @@ Data( "pid": 201399, "request_id": "74a2f98c-a9dc-479b-b0f8-863e7ff34d3a", "row#": 30, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:33.995775333Z", "v": 0, @@ -905,7 +905,7 @@ Data( "pid": 201399, "request_id": "198ad2b0-9b55-420a-8912-e3122170b760", "row#": 31, - "row_size": "0688.0000 Bytes", + "row_size": "0000.6719 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:34.49601321Z", "v": 0, @@ -936,7 +936,7 @@ Data( "pid": 201399, "request_id": "198ad2b0-9b55-420a-8912-e3122170b760", "row#": 32, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:34.498318841Z", "v": 0, @@ -964,7 +964,7 @@ Data( "pid": 201399, "request_id": "9d866454-2d22-414b-aab3-e7a32d73035b", "row#": 33, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:34.933587244Z", "v": 0, @@ -995,7 +995,7 @@ Data( "pid": 201399, "request_id": "9d866454-2d22-414b-aab3-e7a32d73035b", "row#": 34, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:34.935651543Z", "v": 0, @@ -1023,7 +1023,7 @@ Data( "pid": 201399, "request_id": "25b1c7b3-75d7-4f85-bab6-920b1b3f4435", "row#": 35, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:35.404631082Z", "v": 0, @@ -1054,7 +1054,7 @@ Data( "pid": 201399, "request_id": "25b1c7b3-75d7-4f85-bab6-920b1b3f4435", "row#": 36, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:35.406396297Z", "v": 0, @@ -1082,7 +1082,7 @@ Data( "pid": 201399, "request_id": "bd28760e-f8be-4285-b3fa-b935de5e3cce", "row#": 37, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:35.908410809Z", "v": 0, @@ -1113,7 +1113,7 @@ Data( "pid": 201399, "request_id": "bd28760e-f8be-4285-b3fa-b935de5e3cce", "row#": 38, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:35.909930198Z", "v": 0, @@ -1141,7 +1141,7 @@ Data( "pid": 201399, "request_id": "d7410116-e47f-44db-8e95-65ae6d731aa3", "row#": 39, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:36.406646686Z", "v": 0, @@ -1172,7 +1172,7 @@ Data( "pid": 201399, "request_id": "d7410116-e47f-44db-8e95-65ae6d731aa3", "row#": 40, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:36.408148172Z", "v": 0, @@ -1200,7 +1200,7 @@ Data( "pid": 201399, "request_id": "1718b374-a08d-491c-8802-6054905141ea", "row#": 41, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:36.883330358Z", "v": 0, @@ -1231,7 +1231,7 @@ Data( "pid": 201399, "request_id": "1718b374-a08d-491c-8802-6054905141ea", "row#": 42, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:36.884516393Z", "v": 0, @@ -1259,7 +1259,7 @@ Data( "pid": 201399, "request_id": "52288c2d-ea91-48c5-9db9-1b7e134a3915", "row#": 43, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:37.414535794Z", "v": 0, @@ -1290,7 +1290,7 @@ Data( "pid": 201399, "request_id": "52288c2d-ea91-48c5-9db9-1b7e134a3915", "row#": 44, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:37.416158356Z", "v": 0, @@ -1318,7 +1318,7 @@ Data( "pid": 201399, "request_id": "b362e638-1e2a-4184-84d9-fb39c3cfa5c9", "row#": 45, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:37.988422018Z", "v": 0, @@ -1349,7 +1349,7 @@ Data( "pid": 201399, "request_id": "b362e638-1e2a-4184-84d9-fb39c3cfa5c9", "row#": 46, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:37.990135478Z", "v": 0, @@ -1377,7 +1377,7 @@ Data( "pid": 201399, "request_id": "fe545736-0993-4bbd-8395-b5be9fe6ccd4", "row#": 47, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:38.516440225Z", "v": 0, @@ -1408,7 +1408,7 @@ Data( "pid": 201399, "request_id": "fe545736-0993-4bbd-8395-b5be9fe6ccd4", "row#": 48, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:38.518258022Z", "v": 0, @@ -1436,7 +1436,7 @@ Data( "pid": 201399, "request_id": "63d31d2b-bbfc-4f01-90b3-80e53d407abe", "row#": 49, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:39.063656597Z", "v": 0, @@ -1467,7 +1467,7 @@ Data( "pid": 201399, "request_id": "63d31d2b-bbfc-4f01-90b3-80e53d407abe", "row#": 50, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:39.065560988Z", "v": 0, @@ -1495,7 +1495,7 @@ Data( "pid": 201399, "request_id": "ea4e5992-7566-4b3e-bd3e-39e4a6fe9db6", "row#": 51, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:39.677814726Z", "v": 0, @@ -1526,7 +1526,7 @@ Data( "pid": 201399, "request_id": "ea4e5992-7566-4b3e-bd3e-39e4a6fe9db6", "row#": 52, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:39.678891214Z", "v": 0, @@ -1554,7 +1554,7 @@ Data( "pid": 201399, "request_id": "4639d2b0-dfbc-404a-b51a-82aa4743972a", "row#": 53, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:40.233335145Z", "v": 0, @@ -1585,7 +1585,7 @@ Data( "pid": 201399, "request_id": "4639d2b0-dfbc-404a-b51a-82aa4743972a", "row#": 54, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:40.235457041Z", "v": 0, @@ -1613,7 +1613,7 @@ Data( "pid": 201399, "request_id": "521e581e-8fbc-4876-bcb6-0754c97423ef", "row#": 55, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:40.809624727Z", "v": 0, @@ -1644,7 +1644,7 @@ Data( "pid": 201399, "request_id": "521e581e-8fbc-4876-bcb6-0754c97423ef", "row#": 56, - "row_size": "0759.0000 Bytes", + "row_size": "0000.7412 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:02:40.811254162Z", "v": 0, @@ -1672,7 +1672,7 @@ Data( "pid": 201399, "request_id": "6113381e-76af-49bb-bca8-7e07cf3b6c5c", "row#": 57, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:03:06.191856068Z", "v": 0, @@ -1704,7 +1704,7 @@ Data( "pid": 201399, "request_id": "6113381e-76af-49bb-bca8-7e07cf3b6c5c", "row#": 58, - "row_size": "0849.0000 Bytes", + "row_size": "0000.8291 KB", "target": "log", "time": "2024-02-10T06:03:06.192024502Z", "v": 0, @@ -1732,7 +1732,7 @@ Data( "pid": 201399, "request_id": "b675eec1-4b4f-4ba1-be5f-5dfb65f1ce29", "row#": 59, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:03:06.797748362Z", "v": 0, @@ -1760,7 +1760,7 @@ Data( "pid": 201399, "request_id": "8a19c638-9b4e-4dd6-8f00-f2d213fca243", "row#": 60, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:03:07.444854732Z", "v": 0, @@ -1788,7 +1788,7 @@ Data( "pid": 201399, "request_id": "6113381e-76af-49bb-bca8-7e07cf3b6c5c", "row#": 61, - "row_size": "0688.0000 Bytes", + "row_size": "0000.6719 KB", "target": "my_server::routes::status", "time": "2024-02-10T06:03:08.193165123Z", "v": 0, @@ -1819,7 +1819,7 @@ Data( "pid": 201399, "request_id": "6113381e-76af-49bb-bca8-7e07cf3b6c5c", "row#": 62, - "row_size": "0761.0000 Bytes", + "row_size": "0000.7432 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:03:08.19338919Z", "v": 0, @@ -1847,7 +1847,7 @@ Data( "pid": 201399, "request_id": "b675eec1-4b4f-4ba1-be5f-5dfb65f1ce29", "row#": 63, - "row_size": "0688.0000 Bytes", + "row_size": "0000.6719 KB", "target": "my_server::routes::status", "time": "2024-02-10T06:03:08.799070853Z", "v": 0, @@ -1878,7 +1878,7 @@ Data( "pid": 201399, "request_id": "b675eec1-4b4f-4ba1-be5f-5dfb65f1ce29", "row#": 64, - "row_size": "0762.0000 Bytes", + "row_size": "0000.7441 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:03:08.799252303Z", "v": 0, @@ -1906,7 +1906,7 @@ Data( "pid": 201399, "request_id": "8a19c638-9b4e-4dd6-8f00-f2d213fca243", "row#": 65, - "row_size": "0688.0000 Bytes", + "row_size": "0000.6719 KB", "target": "my_server::routes::status", "time": "2024-02-10T06:03:09.446331651Z", "v": 0, @@ -1937,7 +1937,7 @@ Data( "pid": 201399, "request_id": "8a19c638-9b4e-4dd6-8f00-f2d213fca243", "row#": 66, - "row_size": "0762.0000 Bytes", + "row_size": "0000.7441 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:03:09.446655074Z", "v": 0, @@ -1965,7 +1965,7 @@ Data( "pid": 201399, "request_id": "d4a6f3a2-671b-4cb2-94c4-094867c46345", "row#": 67, - "row_size": "0689.0000 Bytes", + "row_size": "0000.6729 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:03:13.082901829Z", "v": 0, @@ -1993,7 +1993,7 @@ Data( "pid": 201399, "request_id": "d4a6f3a2-671b-4cb2-94c4-094867c46345", "row#": 68, - "row_size": "0688.0000 Bytes", + "row_size": "0000.6719 KB", "target": "my_server::routes::status", "time": "2024-02-10T06:03:15.084438959Z", "v": 0, @@ -2024,7 +2024,7 @@ Data( "pid": 201399, "request_id": "d4a6f3a2-671b-4cb2-94c4-094867c46345", "row#": 69, - "row_size": "0762.0000 Bytes", + "row_size": "0000.7441 KB", "target": "tracing_actix_web::root_span_builder", "time": "2024-02-10T06:03:15.084681044Z", "v": 0, @@ -2041,7 +2041,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 70, - "row_size": "0308.0000 Bytes", + "row_size": "0000.3008 KB", "target": "actix_server::server", "time": "2024-02-10T06:03:26.993587646Z", "v": 0, @@ -2058,7 +2058,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 71, - "row_size": "0288.0000 Bytes", + "row_size": "0000.2812 KB", "target": "actix_server::accept", "time": "2024-02-10T06:03:26.993775955Z", "v": 0, @@ -2075,7 +2075,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 72, - "row_size": "0292.0000 Bytes", + "row_size": "0000.2852 KB", "target": "actix_server::worker", "time": "2024-02-10T06:03:26.993775787Z", "v": 0, @@ -2092,7 +2092,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 73, - "row_size": "0292.0000 Bytes", + "row_size": "0000.2852 KB", "target": "actix_server::worker", "time": "2024-02-10T06:03:26.993775779Z", "v": 0, @@ -2109,7 +2109,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 74, - "row_size": "0292.0000 Bytes", + "row_size": "0000.2852 KB", "target": "actix_server::worker", "time": "2024-02-10T06:03:26.993775827Z", "v": 0, @@ -2126,7 +2126,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 75, - "row_size": "0292.0000 Bytes", + "row_size": "0000.2852 KB", "target": "actix_server::worker", "time": "2024-02-10T06:03:26.993783793Z", "v": 0, @@ -2143,7 +2143,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 76, - "row_size": "0292.0000 Bytes", + "row_size": "0000.2852 KB", "target": "actix_server::worker", "time": "2024-02-10T06:03:26.993808637Z", "v": 0, @@ -2160,7 +2160,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 77, - "row_size": "0292.0000 Bytes", + "row_size": "0000.2852 KB", "target": "actix_server::worker", "time": "2024-02-10T06:03:26.994068372Z", "v": 0, @@ -2177,7 +2177,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 78, - "row_size": "0292.0000 Bytes", + "row_size": "0000.2852 KB", "target": "actix_server::worker", "time": "2024-02-10T06:03:26.994080138Z", "v": 0, @@ -2194,7 +2194,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 79, - "row_size": "0292.0000 Bytes", + "row_size": "0000.2852 KB", "target": "actix_server::worker", "time": "2024-02-10T06:03:26.994147513Z", "v": 0, @@ -2211,7 +2211,7 @@ Data( "name": "my_server", "pid": 201399, "row#": 80, - "row_size": "0198.0000 Bytes", + "row_size": "0000.1934 KB", "target": "my_server", "time": "2024-02-10T06:03:27.295589706Z", "v": 0, diff --git a/tests/snapshots/log_viewer__app__data__tests__long.log_yaml.snap b/tests/snapshots/log_viewer__app__data__tests__long.log_yaml.snap index 0824f98..2316da5 100644 --- a/tests/snapshots/log_viewer__app__data__tests__long.log_yaml.snap +++ b/tests/snapshots/log_viewer__app__data__tests__long.log_yaml.snap @@ -15,7 +15,7 @@ rows: name: my_server pid: 201399 "row#": 0 - row_size: 0229.0000 Bytes + row_size: 0000.2236 KB target: "my_server::startup" time: "2024-02-10T06:02:11.961915483Z" v: 0 @@ -29,7 +29,7 @@ rows: name: my_server pid: 201399 "row#": 1 - row_size: 0287.0000 Bytes + row_size: 0000.2803 KB target: "actix_server::builder" time: "2024-02-10T06:02:11.962339028Z" v: 0 @@ -43,7 +43,7 @@ rows: name: my_server pid: 201399 "row#": 2 - row_size: 0322.0000 Bytes + row_size: 0000.3145 KB target: "actix_server::server" time: "2024-02-10T06:02:11.962427666Z" v: 0 @@ -68,7 +68,7 @@ rows: pid: 201399 request_id: 4dd8dcd4-c5a6-400d-b6ba-b29658abe7e4 "row#": 3 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:21.163518462Z" v: 0 @@ -96,7 +96,7 @@ rows: pid: 201399 request_id: 4dd8dcd4-c5a6-400d-b6ba-b29658abe7e4 "row#": 4 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:21.170432285Z" v: 0 @@ -121,7 +121,7 @@ rows: pid: 201399 request_id: 2f3521ae-a8ea-43b6-9c6b-1a44d36845f0 "row#": 5 - row_size: 0680.0000 Bytes + row_size: 0000.6641 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:21.224469025Z" v: 0 @@ -149,7 +149,7 @@ rows: pid: 201399 request_id: 2f3521ae-a8ea-43b6-9c6b-1a44d36845f0 "row#": 6 - row_size: 0750.0000 Bytes + row_size: 0000.7324 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:21.224813634Z" v: 0 @@ -174,7 +174,7 @@ rows: pid: 201399 request_id: 51bb624d-8933-46b0-b5f3-13749cdcfb65 "row#": 7 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:27.735320535Z" v: 0 @@ -202,7 +202,7 @@ rows: pid: 201399 request_id: 51bb624d-8933-46b0-b5f3-13749cdcfb65 "row#": 8 - row_size: 0758.0000 Bytes + row_size: 0000.7402 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:27.73652712Z" v: 0 @@ -227,7 +227,7 @@ rows: pid: 201399 request_id: 96758627-0b02-494b-9b5a-201886e1f811 "row#": 9 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:28.778516388Z" v: 0 @@ -255,7 +255,7 @@ rows: pid: 201399 request_id: 96758627-0b02-494b-9b5a-201886e1f811 "row#": 10 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:28.780296567Z" v: 0 @@ -280,7 +280,7 @@ rows: pid: 201399 request_id: 86fb5ce6-8f6b-49cb-b834-0cfaf9ad9ed6 "row#": 11 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:29.752816316Z" v: 0 @@ -308,7 +308,7 @@ rows: pid: 201399 request_id: 86fb5ce6-8f6b-49cb-b834-0cfaf9ad9ed6 "row#": 12 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:29.754506839Z" v: 0 @@ -333,7 +333,7 @@ rows: pid: 201399 request_id: da6a2caf-621b-4cd2-90fd-c67b0fe951b7 "row#": 13 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:30.528781299Z" v: 0 @@ -361,7 +361,7 @@ rows: pid: 201399 request_id: da6a2caf-621b-4cd2-90fd-c67b0fe951b7 "row#": 14 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:30.530387153Z" v: 0 @@ -386,7 +386,7 @@ rows: pid: 201399 request_id: c12cd3d3-b232-4327-9ee3-ad680ff493e2 "row#": 15 - row_size: 0688.0000 Bytes + row_size: 0000.6719 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:31.01154897Z" v: 0 @@ -414,7 +414,7 @@ rows: pid: 201399 request_id: c12cd3d3-b232-4327-9ee3-ad680ff493e2 "row#": 16 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:31.013404537Z" v: 0 @@ -439,7 +439,7 @@ rows: pid: 201399 request_id: dfb6d617-b933-4fca-8c0d-1da09d19afed "row#": 17 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:31.476792941Z" v: 0 @@ -467,7 +467,7 @@ rows: pid: 201399 request_id: dfb6d617-b933-4fca-8c0d-1da09d19afed "row#": 18 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:31.478740965Z" v: 0 @@ -492,7 +492,7 @@ rows: pid: 201399 request_id: 2b96d8ce-db51-406a-9280-095e751d1ac8 "row#": 19 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:31.909142641Z" v: 0 @@ -520,7 +520,7 @@ rows: pid: 201399 request_id: 2b96d8ce-db51-406a-9280-095e751d1ac8 "row#": 20 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:31.911001241Z" v: 0 @@ -545,7 +545,7 @@ rows: pid: 201399 request_id: 952e04e8-1c0d-4b69-9ee1-63ddd390cb61 "row#": 21 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:32.398038641Z" v: 0 @@ -573,7 +573,7 @@ rows: pid: 201399 request_id: 952e04e8-1c0d-4b69-9ee1-63ddd390cb61 "row#": 22 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:32.398942635Z" v: 0 @@ -598,7 +598,7 @@ rows: pid: 201399 request_id: 8de12498-a0f2-42cf-b989-e8fd2b8728bf "row#": 23 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:32.753169442Z" v: 0 @@ -626,7 +626,7 @@ rows: pid: 201399 request_id: 8de12498-a0f2-42cf-b989-e8fd2b8728bf "row#": 24 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:32.753910825Z" v: 0 @@ -651,7 +651,7 @@ rows: pid: 201399 request_id: f84020d7-1137-494b-88d5-0fae03fbd53b "row#": 25 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:33.189998435Z" v: 0 @@ -679,7 +679,7 @@ rows: pid: 201399 request_id: f84020d7-1137-494b-88d5-0fae03fbd53b "row#": 26 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:33.190858115Z" v: 0 @@ -704,7 +704,7 @@ rows: pid: 201399 request_id: 862b4783-d633-40d3-8ed6-0d6fbd51b590 "row#": 27 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:33.581415707Z" v: 0 @@ -732,7 +732,7 @@ rows: pid: 201399 request_id: 862b4783-d633-40d3-8ed6-0d6fbd51b590 "row#": 28 - row_size: 0758.0000 Bytes + row_size: 0000.7402 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:33.58330603Z" v: 0 @@ -757,7 +757,7 @@ rows: pid: 201399 request_id: 74a2f98c-a9dc-479b-b0f8-863e7ff34d3a "row#": 29 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:33.995029867Z" v: 0 @@ -785,7 +785,7 @@ rows: pid: 201399 request_id: 74a2f98c-a9dc-479b-b0f8-863e7ff34d3a "row#": 30 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:33.995775333Z" v: 0 @@ -810,7 +810,7 @@ rows: pid: 201399 request_id: 198ad2b0-9b55-420a-8912-e3122170b760 "row#": 31 - row_size: 0688.0000 Bytes + row_size: 0000.6719 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:34.49601321Z" v: 0 @@ -838,7 +838,7 @@ rows: pid: 201399 request_id: 198ad2b0-9b55-420a-8912-e3122170b760 "row#": 32 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:34.498318841Z" v: 0 @@ -863,7 +863,7 @@ rows: pid: 201399 request_id: 9d866454-2d22-414b-aab3-e7a32d73035b "row#": 33 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:34.933587244Z" v: 0 @@ -891,7 +891,7 @@ rows: pid: 201399 request_id: 9d866454-2d22-414b-aab3-e7a32d73035b "row#": 34 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:34.935651543Z" v: 0 @@ -916,7 +916,7 @@ rows: pid: 201399 request_id: 25b1c7b3-75d7-4f85-bab6-920b1b3f4435 "row#": 35 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:35.404631082Z" v: 0 @@ -944,7 +944,7 @@ rows: pid: 201399 request_id: 25b1c7b3-75d7-4f85-bab6-920b1b3f4435 "row#": 36 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:35.406396297Z" v: 0 @@ -969,7 +969,7 @@ rows: pid: 201399 request_id: bd28760e-f8be-4285-b3fa-b935de5e3cce "row#": 37 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:35.908410809Z" v: 0 @@ -997,7 +997,7 @@ rows: pid: 201399 request_id: bd28760e-f8be-4285-b3fa-b935de5e3cce "row#": 38 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:35.909930198Z" v: 0 @@ -1022,7 +1022,7 @@ rows: pid: 201399 request_id: d7410116-e47f-44db-8e95-65ae6d731aa3 "row#": 39 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:36.406646686Z" v: 0 @@ -1050,7 +1050,7 @@ rows: pid: 201399 request_id: d7410116-e47f-44db-8e95-65ae6d731aa3 "row#": 40 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:36.408148172Z" v: 0 @@ -1075,7 +1075,7 @@ rows: pid: 201399 request_id: 1718b374-a08d-491c-8802-6054905141ea "row#": 41 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:36.883330358Z" v: 0 @@ -1103,7 +1103,7 @@ rows: pid: 201399 request_id: 1718b374-a08d-491c-8802-6054905141ea "row#": 42 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:36.884516393Z" v: 0 @@ -1128,7 +1128,7 @@ rows: pid: 201399 request_id: 52288c2d-ea91-48c5-9db9-1b7e134a3915 "row#": 43 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:37.414535794Z" v: 0 @@ -1156,7 +1156,7 @@ rows: pid: 201399 request_id: 52288c2d-ea91-48c5-9db9-1b7e134a3915 "row#": 44 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:37.416158356Z" v: 0 @@ -1181,7 +1181,7 @@ rows: pid: 201399 request_id: b362e638-1e2a-4184-84d9-fb39c3cfa5c9 "row#": 45 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:37.988422018Z" v: 0 @@ -1209,7 +1209,7 @@ rows: pid: 201399 request_id: b362e638-1e2a-4184-84d9-fb39c3cfa5c9 "row#": 46 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:37.990135478Z" v: 0 @@ -1234,7 +1234,7 @@ rows: pid: 201399 request_id: fe545736-0993-4bbd-8395-b5be9fe6ccd4 "row#": 47 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:38.516440225Z" v: 0 @@ -1262,7 +1262,7 @@ rows: pid: 201399 request_id: fe545736-0993-4bbd-8395-b5be9fe6ccd4 "row#": 48 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:38.518258022Z" v: 0 @@ -1287,7 +1287,7 @@ rows: pid: 201399 request_id: 63d31d2b-bbfc-4f01-90b3-80e53d407abe "row#": 49 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:39.063656597Z" v: 0 @@ -1315,7 +1315,7 @@ rows: pid: 201399 request_id: 63d31d2b-bbfc-4f01-90b3-80e53d407abe "row#": 50 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:39.065560988Z" v: 0 @@ -1340,7 +1340,7 @@ rows: pid: 201399 request_id: ea4e5992-7566-4b3e-bd3e-39e4a6fe9db6 "row#": 51 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:39.677814726Z" v: 0 @@ -1368,7 +1368,7 @@ rows: pid: 201399 request_id: ea4e5992-7566-4b3e-bd3e-39e4a6fe9db6 "row#": 52 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:39.678891214Z" v: 0 @@ -1393,7 +1393,7 @@ rows: pid: 201399 request_id: 4639d2b0-dfbc-404a-b51a-82aa4743972a "row#": 53 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:40.233335145Z" v: 0 @@ -1421,7 +1421,7 @@ rows: pid: 201399 request_id: 4639d2b0-dfbc-404a-b51a-82aa4743972a "row#": 54 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:40.235457041Z" v: 0 @@ -1446,7 +1446,7 @@ rows: pid: 201399 request_id: 521e581e-8fbc-4876-bcb6-0754c97423ef "row#": 55 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:40.809624727Z" v: 0 @@ -1474,7 +1474,7 @@ rows: pid: 201399 request_id: 521e581e-8fbc-4876-bcb6-0754c97423ef "row#": 56 - row_size: 0759.0000 Bytes + row_size: 0000.7412 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:02:40.811254162Z" v: 0 @@ -1499,7 +1499,7 @@ rows: pid: 201399 request_id: 6113381e-76af-49bb-bca8-7e07cf3b6c5c "row#": 57 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:03:06.191856068Z" v: 0 @@ -1528,7 +1528,7 @@ rows: pid: 201399 request_id: 6113381e-76af-49bb-bca8-7e07cf3b6c5c "row#": 58 - row_size: 0849.0000 Bytes + row_size: 0000.8291 KB target: log time: "2024-02-10T06:03:06.192024502Z" v: 0 @@ -1553,7 +1553,7 @@ rows: pid: 201399 request_id: b675eec1-4b4f-4ba1-be5f-5dfb65f1ce29 "row#": 59 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:03:06.797748362Z" v: 0 @@ -1578,7 +1578,7 @@ rows: pid: 201399 request_id: 8a19c638-9b4e-4dd6-8f00-f2d213fca243 "row#": 60 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:03:07.444854732Z" v: 0 @@ -1603,7 +1603,7 @@ rows: pid: 201399 request_id: 6113381e-76af-49bb-bca8-7e07cf3b6c5c "row#": 61 - row_size: 0688.0000 Bytes + row_size: 0000.6719 KB target: "my_server::routes::status" time: "2024-02-10T06:03:08.193165123Z" v: 0 @@ -1631,7 +1631,7 @@ rows: pid: 201399 request_id: 6113381e-76af-49bb-bca8-7e07cf3b6c5c "row#": 62 - row_size: 0761.0000 Bytes + row_size: 0000.7432 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:03:08.19338919Z" v: 0 @@ -1656,7 +1656,7 @@ rows: pid: 201399 request_id: b675eec1-4b4f-4ba1-be5f-5dfb65f1ce29 "row#": 63 - row_size: 0688.0000 Bytes + row_size: 0000.6719 KB target: "my_server::routes::status" time: "2024-02-10T06:03:08.799070853Z" v: 0 @@ -1684,7 +1684,7 @@ rows: pid: 201399 request_id: b675eec1-4b4f-4ba1-be5f-5dfb65f1ce29 "row#": 64 - row_size: 0762.0000 Bytes + row_size: 0000.7441 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:03:08.799252303Z" v: 0 @@ -1709,7 +1709,7 @@ rows: pid: 201399 request_id: 8a19c638-9b4e-4dd6-8f00-f2d213fca243 "row#": 65 - row_size: 0688.0000 Bytes + row_size: 0000.6719 KB target: "my_server::routes::status" time: "2024-02-10T06:03:09.446331651Z" v: 0 @@ -1737,7 +1737,7 @@ rows: pid: 201399 request_id: 8a19c638-9b4e-4dd6-8f00-f2d213fca243 "row#": 66 - row_size: 0762.0000 Bytes + row_size: 0000.7441 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:03:09.446655074Z" v: 0 @@ -1762,7 +1762,7 @@ rows: pid: 201399 request_id: d4a6f3a2-671b-4cb2-94c4-094867c46345 "row#": 67 - row_size: 0689.0000 Bytes + row_size: 0000.6729 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:03:13.082901829Z" v: 0 @@ -1787,7 +1787,7 @@ rows: pid: 201399 request_id: d4a6f3a2-671b-4cb2-94c4-094867c46345 "row#": 68 - row_size: 0688.0000 Bytes + row_size: 0000.6719 KB target: "my_server::routes::status" time: "2024-02-10T06:03:15.084438959Z" v: 0 @@ -1815,7 +1815,7 @@ rows: pid: 201399 request_id: d4a6f3a2-671b-4cb2-94c4-094867c46345 "row#": 69 - row_size: 0762.0000 Bytes + row_size: 0000.7441 KB target: "tracing_actix_web::root_span_builder" time: "2024-02-10T06:03:15.084681044Z" v: 0 @@ -1829,7 +1829,7 @@ rows: name: my_server pid: 201399 "row#": 70 - row_size: 0308.0000 Bytes + row_size: 0000.3008 KB target: "actix_server::server" time: "2024-02-10T06:03:26.993587646Z" v: 0 @@ -1843,7 +1843,7 @@ rows: name: my_server pid: 201399 "row#": 71 - row_size: 0288.0000 Bytes + row_size: 0000.2812 KB target: "actix_server::accept" time: "2024-02-10T06:03:26.993775955Z" v: 0 @@ -1857,7 +1857,7 @@ rows: name: my_server pid: 201399 "row#": 72 - row_size: 0292.0000 Bytes + row_size: 0000.2852 KB target: "actix_server::worker" time: "2024-02-10T06:03:26.993775787Z" v: 0 @@ -1871,7 +1871,7 @@ rows: name: my_server pid: 201399 "row#": 73 - row_size: 0292.0000 Bytes + row_size: 0000.2852 KB target: "actix_server::worker" time: "2024-02-10T06:03:26.993775779Z" v: 0 @@ -1885,7 +1885,7 @@ rows: name: my_server pid: 201399 "row#": 74 - row_size: 0292.0000 Bytes + row_size: 0000.2852 KB target: "actix_server::worker" time: "2024-02-10T06:03:26.993775827Z" v: 0 @@ -1899,7 +1899,7 @@ rows: name: my_server pid: 201399 "row#": 75 - row_size: 0292.0000 Bytes + row_size: 0000.2852 KB target: "actix_server::worker" time: "2024-02-10T06:03:26.993783793Z" v: 0 @@ -1913,7 +1913,7 @@ rows: name: my_server pid: 201399 "row#": 76 - row_size: 0292.0000 Bytes + row_size: 0000.2852 KB target: "actix_server::worker" time: "2024-02-10T06:03:26.993808637Z" v: 0 @@ -1927,7 +1927,7 @@ rows: name: my_server pid: 201399 "row#": 77 - row_size: 0292.0000 Bytes + row_size: 0000.2852 KB target: "actix_server::worker" time: "2024-02-10T06:03:26.994068372Z" v: 0 @@ -1941,7 +1941,7 @@ rows: name: my_server pid: 201399 "row#": 78 - row_size: 0292.0000 Bytes + row_size: 0000.2852 KB target: "actix_server::worker" time: "2024-02-10T06:03:26.994080138Z" v: 0 @@ -1955,7 +1955,7 @@ rows: name: my_server pid: 201399 "row#": 79 - row_size: 0292.0000 Bytes + row_size: 0000.2852 KB target: "actix_server::worker" time: "2024-02-10T06:03:26.994147513Z" v: 0 @@ -1969,7 +1969,7 @@ rows: name: my_server pid: 201399 "row#": 80 - row_size: 0198.0000 Bytes + row_size: 0000.1934 KB target: my_server time: "2024-02-10T06:03:27.295589706Z" v: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__short.log_debug.snap b/tests/snapshots/log_viewer__app__data__tests__short.log_debug.snap index e874be5..e41a0ac 100644 --- a/tests/snapshots/log_viewer__app__data__tests__short.log_debug.snap +++ b/tests/snapshots/log_viewer__app__data__tests__short.log_debug.snap @@ -17,7 +17,7 @@ Data { "name": String("my_server"), "pid": Number(50401), "row#": Number(0), - "row_size": String("0228.0000 Bytes"), + "row_size": String("0000.2227 KB"), "target": String("my_server::startup"), "time": String("2024-02-10T03:13:04.191299188Z"), "v": Number(0), @@ -35,7 +35,7 @@ Data { "name": String("my_server"), "pid": Number(50401), "row#": Number(1), - "row_size": String("0286.0000 Bytes"), + "row_size": String("0000.2793 KB"), "target": String("actix_server::builder"), "time": String("2024-02-10T03:13:04.191610465Z"), "v": Number(0), diff --git a/tests/snapshots/log_viewer__app__data__tests__short.log_ron.snap b/tests/snapshots/log_viewer__app__data__tests__short.log_ron.snap index aebd929..3a1fbfd 100644 --- a/tests/snapshots/log_viewer__app__data__tests__short.log_ron.snap +++ b/tests/snapshots/log_viewer__app__data__tests__short.log_ron.snap @@ -17,7 +17,7 @@ Data( "name": "my_server", "pid": 50401, "row#": 0, - "row_size": "0228.0000 Bytes", + "row_size": "0000.2227 KB", "target": "my_server::startup", "time": "2024-02-10T03:13:04.191299188Z", "v": 0, @@ -34,7 +34,7 @@ Data( "name": "my_server", "pid": 50401, "row#": 1, - "row_size": "0286.0000 Bytes", + "row_size": "0000.2793 KB", "target": "actix_server::builder", "time": "2024-02-10T03:13:04.191610465Z", "v": 0, diff --git a/tests/snapshots/log_viewer__app__data__tests__short.log_yaml.snap b/tests/snapshots/log_viewer__app__data__tests__short.log_yaml.snap index 59fc317..56f084e 100644 --- a/tests/snapshots/log_viewer__app__data__tests__short.log_yaml.snap +++ b/tests/snapshots/log_viewer__app__data__tests__short.log_yaml.snap @@ -15,7 +15,7 @@ rows: name: my_server pid: 50401 "row#": 0 - row_size: 0228.0000 Bytes + row_size: 0000.2227 KB target: "my_server::startup" time: "2024-02-10T03:13:04.191299188Z" v: 0 @@ -29,7 +29,7 @@ rows: name: my_server pid: 50401 "row#": 1 - row_size: 0286.0000 Bytes + row_size: 0000.2793 KB target: "actix_server::builder" time: "2024-02-10T03:13:04.191610465Z" v: 0 From c196d8bfe9b173708a38108670be938eb84c343e Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 15:32:12 -0500 Subject: [PATCH 11/22] feat: add profiling scopes --- src/app.rs | 28 ++++++++++++++++++++++++++++ src/app/data.rs | 3 +++ 2 files changed, 31 insertions(+) diff --git a/src/app.rs b/src/app.rs index 90c2b79..0dbf6f4 100644 --- a/src/app.rs +++ b/src/app.rs @@ -93,6 +93,8 @@ impl LogViewerApp { } fn show_log_lines(&mut self, ui: &mut egui::Ui) { + #[cfg(feature = "profiling")] + puffin::profile_scope!("show_log_lines"); let text_height = egui::TextStyle::Body .resolve(ui.style()) .size @@ -220,6 +222,8 @@ impl LogViewerApp { } fn show_log_details(&mut self, ui: &mut egui::Ui) { + #[cfg(feature = "profiling")] + puffin::profile_scope!("show_log_details"); let Some(data) = self.data.as_mut() else { ui.label("No data"); return; @@ -315,6 +319,8 @@ impl LogViewerApp { self.loading_status = match Data::try_from((&self.data_display_options, &data[..])) { Ok(mut data) => { + #[cfg(feature = "profiling")] + puffin::profile_scope!("swap_data_after_load"); if let Some(old_data) = self.data.as_mut() { // Preserve settings across loads of the data data.take_config(old_data, self.data_display_options.common_fields()); @@ -474,6 +480,9 @@ impl LogViewerApp { #[cfg(not(target_arch = "wasm32"))] /// Attempts to read the contents of the last loaded file and return it in a loading status otherwise returns an error loading status fn reload_file(&self) -> LoadingStatus { + #[cfg(feature = "profiling")] + puffin::profile_scope!("reload_file"); + // TODO 5: Determine if this should spawn a task to do the load let Some(folder) = self.start_open_path.lock().unwrap().clone() else { return LoadingStatus::Failed("no staring folder available".into()); }; @@ -489,6 +498,9 @@ impl LogViewerApp { #[cfg(not(target_arch = "wasm32"))] fn load_most_recent_file(&self) -> LoadingStatus { + #[cfg(feature = "profiling")] + puffin::profile_scope!("load_most_recent_file"); + // TODO 5: Determine if this should spawn a task to do the load (might be able to reuse the normal load) let Some(folder) = self.start_open_path.lock().unwrap().clone() else { return LoadingStatus::Failed("unable to find starting folder".into()); }; @@ -739,6 +751,8 @@ impl LogViewerApp { } fn is_changed_since_last_save(&mut self) -> bool { + #[cfg(feature = "profiling")] + puffin::profile_scope!("is_changed_since_last_save"); let as_ron = match ron::to_string(&self) { Ok(s) => s, Err(err_msg) => { @@ -804,8 +818,12 @@ fn execute> + 'static>( impl eframe::App for LogViewerApp { /// Called by the frame work to save state before shutdown. fn save(&mut self, storage: &mut dyn eframe::Storage) { + #[cfg(feature = "profiling")] + puffin::profile_scope!("eframe::App::save"); if self.is_changed_since_last_save() { info!("Saving data"); + #[cfg(feature = "profiling")] + puffin::profile_scope!("Saving App State"); eframe::set_value(storage, eframe::APP_KEY, self); } else { debug!("Save skipped, no change detected"); @@ -814,8 +832,12 @@ impl eframe::App for LogViewerApp { /// Called each time the UI needs repainting, which may be many times per second. fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + #[cfg(feature = "profiling")] + puffin::profile_scope!("update_loop"); egui::TopBottomPanel::top("top_panel").show(ctx, |ui| { // The top panel is often a good place for a menu bar: + #[cfg(feature = "profiling")] + puffin::profile_scope!("top_panel"); self.check_global_shortcuts(ui); @@ -837,6 +859,8 @@ impl eframe::App for LogViewerApp { egui::CentralPanel::default().show(ctx, |ui| { // The central panel the region left after adding TopPanel's and SidePanel's + #[cfg(feature = "profiling")] + puffin::profile_scope!("outer_central_panel"); static HEADING: LazyLock<&'static str> = LazyLock::new(|| format!("Log Viewer {}", env!("CARGO_PKG_VERSION")).leak()); ui.heading(*HEADING); @@ -857,6 +881,8 @@ impl eframe::App for LogViewerApp { .max_height(max_details_height) .min_height(60.) .show_inside(ui, |ui| { + #[cfg(feature = "profiling")] + puffin::profile_scope!("bottom_panel"); ui.vertical_centered(|ui| { ui.heading("Details"); }); @@ -871,6 +897,8 @@ impl eframe::App for LogViewerApp { }); egui::CentralPanel::default().show_inside(ui, |ui| { + #[cfg(feature = "profiling")] + puffin::profile_scope!("inner_central_panel"); egui::ScrollArea::horizontal() .id_salt("log lines") .show(ui, |ui| { diff --git a/src/app/data.rs b/src/app/data.rs index 21805f1..569a2b1 100644 --- a/src/app/data.rs +++ b/src/app/data.rs @@ -313,6 +313,9 @@ impl Data { } pub(crate) fn row_heights(&self, text_height: f32) -> impl Iterator { + #[cfg(feature = "profiling")] + puffin::profile_scope!("calculate row heights"); + // TODO 5: See if this is taking too long and cache value instead of recalculating each frame self.rows_iter() .map(|x| { // TODO 4: Remove hard coded "msg" From 390b012394e253e9f4bc3a019dba4a5696fa1493 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 18:51:59 -0500 Subject: [PATCH 12/22] chore: ensure puffin is killed on bacon restart --- bacon.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/bacon.toml b/bacon.toml index 459b426..16961d0 100644 --- a/bacon.toml +++ b/bacon.toml @@ -14,6 +14,7 @@ kill = ["pkill", "-TERM", "-P"] [jobs.run-profiling] command = ["cargo", "run", "--features=profiling"] +kill = ["pkill", "-TERM", "-P"] [keybindings] ctrl-d = "job:reset-settings-and-run" From f36040d6a21e98f31f211d076c76327f0d245b62 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:12:15 -0500 Subject: [PATCH 13/22] refactor: save data size as number --- src/app.rs | 2 +- src/app/data.rs | 17 +++++++---------- src/app/data_display_options.rs | 11 ++++++++--- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/app.rs b/src/app.rs index 0dbf6f4..2593ca8 100644 --- a/src/app.rs +++ b/src/app.rs @@ -725,7 +725,7 @@ impl LogViewerApp { (false, _, total_len) => as_string_with_separators(total_len), }; ui.label(format!("# Rows: {row_count_text}")); - ui.label(format!("Size: {}", data.file_size)); + ui.label(format!("Size: {}", data.file_size_display())); } }); } diff --git a/src/app/data.rs b/src/app/data.rs index 569a2b1..46ae284 100644 --- a/src/app/data.rs +++ b/src/app/data.rs @@ -25,7 +25,7 @@ pub struct Data { rows: Vec, filtered_rows: Option>, applied_filter: Option, - pub file_size: String, + pub file_size_as_bytes: usize, } #[derive(serde::Deserialize, serde::Serialize, Default, Debug, PartialEq, Eq, Clone)] @@ -136,6 +136,10 @@ impl LogRow { } impl Data { + pub fn file_size_display(&self) -> String { + SizeUnits::Auto.convert_trimmed(self.file_size_as_bytes) + } + pub fn rows_iter(&self) -> impl Iterator { DataIter::new(self) } @@ -415,7 +419,7 @@ impl TryFrom<(&DataDisplayOptions, usize, &str)> for LogRow { if let Some(config) = data_display_options.row_size_config.as_ref() { result.or_insert( config.field_name.clone(), - config.units.convert(row_size_in_bytes), + config.units.convert(row_size_in_bytes).into(), ); } Ok(result) @@ -465,15 +469,8 @@ impl TryFrom<(&DataDisplayOptions, &str)> for Data { fn try_from( (data_display_options, value): (&DataDisplayOptions, &str), ) -> Result { - let file_size = SizeUnits::Auto.convert(value.len()); - let file_size = file_size - .as_str() - .map(|x| x.to_string()) - .unwrap_or_else(|| file_size.to_string()) - .trim_matches('0') - .to_string(); let mut result = Data { - file_size, + file_size_as_bytes: value.len(), ..Default::default() }; for (i, line) in value.lines().enumerate() { diff --git a/src/app/data_display_options.rs b/src/app/data_display_options.rs index 911953b..b3a4a92 100644 --- a/src/app/data_display_options.rs +++ b/src/app/data_display_options.rs @@ -116,12 +116,17 @@ impl SizeUnits { } } - /// Output as a string because includes the unit - pub(crate) fn convert(&self, row_size_in_bytes: usize) -> serde_json::Value { + pub(crate) fn convert(&self, row_size_in_bytes: usize) -> String { let concrete_unit = self.to_concrete(row_size_in_bytes); let scalar = concrete_unit.scalar(); let result = row_size_in_bytes as f64 / scalar; - format!("{result:0>9.4} {concrete_unit}").into() + format!("{result:0>9.4} {concrete_unit}") + } + + pub fn convert_trimmed(&self, row_size_in_bytes: usize) -> String { + self.convert(row_size_in_bytes) + .trim_matches('0') + .to_string() } pub fn as_str(&self) -> &'static str { From 0c917a9a7d4ec21a0c24b0ff1dd3a72c5cfadfca Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:24:25 -0500 Subject: [PATCH 14/22] chore: show debug logs when profiling --- bacon.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/bacon.toml b/bacon.toml index 16961d0..0a4d528 100644 --- a/bacon.toml +++ b/bacon.toml @@ -15,6 +15,7 @@ kill = ["pkill", "-TERM", "-P"] [jobs.run-profiling] command = ["cargo", "run", "--features=profiling"] kill = ["pkill", "-TERM", "-P"] +env.RUST_LOG = "zbus=warn,log_viewer=debug,info" [keybindings] ctrl-d = "job:reset-settings-and-run" From a5c7a5cc67683ab205bd4f1f266d654508c7a88e Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:24:42 -0500 Subject: [PATCH 15/22] feat: prevent saving if log files is too big --- src/app.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/app.rs b/src/app.rs index 2593ca8..b0e7915 100644 --- a/src/app.rs +++ b/src/app.rs @@ -33,6 +33,8 @@ pub struct LogViewerApp { should_scroll_to_end_on_load: bool, /// Allows the user to dim the warning by clicking on it should_highlight_field_warning: bool, + /// Max size in bytes of data before saving is disabled + max_data_save_size: Option, #[serde(skip)] should_focus_search: bool, @@ -60,6 +62,7 @@ impl Default for LogViewerApp { should_scroll: Default::default(), show_last_filename: true, last_save_hash: Default::default(), + max_data_save_size: Some(2 * 1024 * 1024), // 2 MB } } } @@ -771,6 +774,20 @@ impl LogViewerApp { self.last_save_hash = Some(new_hash); true } + + fn should_save(&mut self) -> bool { + // Check if size of data allows saving + if let (Some(data), Some(max_data_size)) = + (self.data.as_ref(), self.max_data_save_size.as_ref()) + { + if &data.file_size_as_bytes > max_data_size { + return false; + } + } + + // Size of data does not prevent saving, check if there are changes to be saved + self.is_changed_since_last_save() + } } #[cfg(not(target_arch = "wasm32"))] @@ -820,13 +837,13 @@ impl eframe::App for LogViewerApp { fn save(&mut self, storage: &mut dyn eframe::Storage) { #[cfg(feature = "profiling")] puffin::profile_scope!("eframe::App::save"); - if self.is_changed_since_last_save() { + if self.should_save() { info!("Saving data"); #[cfg(feature = "profiling")] puffin::profile_scope!("Saving App State"); eframe::set_value(storage, eframe::APP_KEY, self); } else { - debug!("Save skipped, no change detected"); + debug!("Save skipped"); } } From 814879d9731fc4966bcfe7dfb397b4c040dce89a Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:03:53 -0500 Subject: [PATCH 16/22] chore: record problem observed Not important right now so ignoring --- bacon.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bacon.toml b/bacon.toml index 0a4d528..49495fe 100644 --- a/bacon.toml +++ b/bacon.toml @@ -15,7 +15,9 @@ kill = ["pkill", "-TERM", "-P"] [jobs.run-profiling] command = ["cargo", "run", "--features=profiling"] kill = ["pkill", "-TERM", "-P"] +on_change_strategy = "kill_then_restart" env.RUST_LOG = "zbus=warn,log_viewer=debug,info" +# TODO 5: Look into getting both the profiler and the app to stop [keybindings] ctrl-d = "job:reset-settings-and-run" From d83cfebd7e689e5322eee56aab4003d97e528fc2 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:18:46 -0500 Subject: [PATCH 17/22] feat: let user know when save is disabled --- src/app.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/app.rs b/src/app.rs index b0e7915..b786260 100644 --- a/src/app.rs +++ b/src/app.rs @@ -728,7 +728,13 @@ impl LogViewerApp { (false, _, total_len) => as_string_with_separators(total_len), }; ui.label(format!("# Rows: {row_count_text}")); - ui.label(format!("Size: {}", data.file_size_display())); + let size_text = format!("Size: {}", data.file_size_display()); + if self.does_data_exceeded_max_size() { + ui.colored_label(ui.visuals().warn_fg_color, size_text) + .on_hover_text("Save disabled because data size is over max set"); + } else { + ui.label(size_text); + } } }); } @@ -776,17 +782,16 @@ impl LogViewerApp { } fn should_save(&mut self) -> bool { - // Check if size of data allows saving - if let (Some(data), Some(max_data_size)) = - (self.data.as_ref(), self.max_data_save_size.as_ref()) + !self.does_data_exceeded_max_size() && self.is_changed_since_last_save() + } + + fn does_data_exceeded_max_size(&self) -> bool { + if let (Some(data), Some(max_size)) = (self.data.as_ref(), self.max_data_save_size.as_ref()) { - if &data.file_size_as_bytes > max_data_size { - return false; - } + &data.file_size_as_bytes > max_size + } else { + false } - - // Size of data does not prevent saving, check if there are changes to be saved - self.is_changed_since_last_save() } } From e3d513bd095b263ae93b28602b6ecc6a3550ab0b Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:37:29 -0500 Subject: [PATCH 18/22] feat: add ui to set max size of data to save --- src/app.rs | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/app.rs b/src/app.rs index b786260..dc1a18c 100644 --- a/src/app.rs +++ b/src/app.rs @@ -62,7 +62,7 @@ impl Default for LogViewerApp { should_scroll: Default::default(), show_last_filename: true, last_save_hash: Default::default(), - max_data_save_size: Some(2 * 1024 * 1024), // 2 MB + max_data_save_size: Some(Self::DEFAULT_MAX_DATA_SAVE_SIZE), } } } @@ -77,6 +77,8 @@ pub enum LoadingStatus { } impl LogViewerApp { + const DEFAULT_MAX_DATA_SAVE_SIZE: usize = 2 * 1024 * 1024; // 2MB + /// Called once before the first frame. pub fn new(cc: &eframe::CreationContext<'_>) -> Self { // This is also where you can customize the look and feel of egui using @@ -440,6 +442,35 @@ impl LogViewerApp { }); } }); + + ui.horizontal(|ui| { + let mut has_max_data_size_for_save = self.max_data_save_size.is_some(); + ui.checkbox( + &mut has_max_data_size_for_save, + "Enable Max Data Size To Save", + ); + match ( + has_max_data_size_for_save, + self.max_data_save_size.is_some(), + ) { + (true, true) | (false, false) => {} + (true, false) => { + self.max_data_save_size = Some(Self::DEFAULT_MAX_DATA_SAVE_SIZE) + } + (false, true) => self.max_data_save_size = None, + } + + if let Some(max_data_save_size) = self.max_data_save_size.as_mut() { + ui.label(format!( + "Allowed Size: {}", + SizeUnits::Auto.convert_trimmed(*max_data_save_size) + )); + ui.add( + egui::Slider::new(max_data_save_size, 0..=100 * 1024 * 1024) + .step_by(1024.0), + ); + } + }); }); } From 018821b1142a0ec6793430b973bf978f49cca127 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:38:26 -0500 Subject: [PATCH 19/22] test: update snapshots for field name change --- .../log_viewer__app__data__tests__comparisons_any-2.snap | 2 +- .../log_viewer__app__data__tests__comparisons_any-3.snap | 2 +- .../log_viewer__app__data__tests__comparisons_any-4.snap | 2 +- .../log_viewer__app__data__tests__comparisons_any-5.snap | 2 +- .../log_viewer__app__data__tests__comparisons_any-6.snap | 2 +- .../log_viewer__app__data__tests__comparisons_any-7.snap | 2 +- .../log_viewer__app__data__tests__comparisons_any-8.snap | 2 +- .../log_viewer__app__data__tests__comparisons_any.snap | 2 +- ..._viewer__app__data__tests__comparisons_specific_field-2.snap | 2 +- ..._viewer__app__data__tests__comparisons_specific_field-3.snap | 2 +- ..._viewer__app__data__tests__comparisons_specific_field-4.snap | 2 +- ..._viewer__app__data__tests__comparisons_specific_field-5.snap | 2 +- ..._viewer__app__data__tests__comparisons_specific_field-6.snap | 2 +- ..._viewer__app__data__tests__comparisons_specific_field-7.snap | 2 +- ..._viewer__app__data__tests__comparisons_specific_field-8.snap | 2 +- ...og_viewer__app__data__tests__comparisons_specific_field.snap | 2 +- .../snapshots/log_viewer__app__data__tests__long.log_debug.snap | 2 +- tests/snapshots/log_viewer__app__data__tests__long.log_ron.snap | 2 +- .../snapshots/log_viewer__app__data__tests__long.log_yaml.snap | 2 +- .../log_viewer__app__data__tests__short.log_debug.snap | 2 +- .../snapshots/log_viewer__app__data__tests__short.log_ron.snap | 2 +- .../snapshots/log_viewer__app__data__tests__short.log_yaml.snap | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-2.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-2.snap index 09e06b8..1d396a3 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-2.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-2.snap @@ -22,4 +22,4 @@ applied_filter: filter_on: Any is_case_sensitive: false comparator: LessThanEqual -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-3.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-3.snap index e03d2ae..315b577 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-3.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-3.snap @@ -22,4 +22,4 @@ applied_filter: filter_on: Any is_case_sensitive: false comparator: Equal -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-4.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-4.snap index befb001..84bc9ff 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-4.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-4.snap @@ -24,4 +24,4 @@ applied_filter: filter_on: Any is_case_sensitive: false comparator: GreaterThan -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-5.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-5.snap index cd87847..3a43b23 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-5.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-5.snap @@ -24,4 +24,4 @@ applied_filter: filter_on: Any is_case_sensitive: false comparator: GreaterThanEqual -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-6.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-6.snap index b5340fa..9c7680e 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-6.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-6.snap @@ -24,4 +24,4 @@ applied_filter: filter_on: Any is_case_sensitive: false comparator: NotEqual -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-7.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-7.snap index fa1ed86..cfbd81b 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-7.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-7.snap @@ -23,4 +23,4 @@ applied_filter: filter_on: Any is_case_sensitive: false comparator: Contains -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-8.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-8.snap index 99ea657..98b4d8d 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_any-8.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_any-8.snap @@ -24,4 +24,4 @@ applied_filter: filter_on: Any is_case_sensitive: false comparator: NotContains -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_any.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_any.snap index 0380743..14b6391 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_any.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_any.snap @@ -22,4 +22,4 @@ applied_filter: filter_on: Any is_case_sensitive: false comparator: LessThan -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-2.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-2.snap index c5251ca..504dd1b 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-2.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-2.snap @@ -27,4 +27,4 @@ applied_filter: name: http.status_code is_case_sensitive: false comparator: LessThanEqual -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-3.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-3.snap index c48473b..33b99e6 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-3.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-3.snap @@ -27,4 +27,4 @@ applied_filter: name: http.status_code is_case_sensitive: false comparator: Equal -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-4.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-4.snap index 243777d..b51b3c0 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-4.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-4.snap @@ -26,4 +26,4 @@ applied_filter: name: http.status_code is_case_sensitive: false comparator: GreaterThan -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-5.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-5.snap index 8db2f40..0d41884 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-5.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-5.snap @@ -27,4 +27,4 @@ applied_filter: name: http.status_code is_case_sensitive: false comparator: GreaterThanEqual -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-6.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-6.snap index 9171b72..3708474 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-6.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-6.snap @@ -26,4 +26,4 @@ applied_filter: name: http.status_code is_case_sensitive: false comparator: NotEqual -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-7.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-7.snap index e921edb..991a3dd 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-7.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-7.snap @@ -27,4 +27,4 @@ applied_filter: name: http.status_code is_case_sensitive: false comparator: Contains -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-8.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-8.snap index 9deeec3..a9279f0 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-8.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field-8.snap @@ -26,4 +26,4 @@ applied_filter: name: http.status_code is_case_sensitive: false comparator: NotContains -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field.snap b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field.snap index b2078f8..08843af 100644 --- a/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field.snap +++ b/tests/snapshots/log_viewer__app__data__tests__comparisons_specific_field.snap @@ -26,4 +26,4 @@ applied_filter: name: http.status_code is_case_sensitive: false comparator: LessThan -file_size: "" +file_size_as_bytes: 0 diff --git a/tests/snapshots/log_viewer__app__data__tests__long.log_debug.snap b/tests/snapshots/log_viewer__app__data__tests__long.log_debug.snap index 6e81a46..0bca189 100644 --- a/tests/snapshots/log_viewer__app__data__tests__long.log_debug.snap +++ b/tests/snapshots/log_viewer__app__data__tests__long.log_debug.snap @@ -2301,5 +2301,5 @@ Data { ], filtered_rows: None, applied_filter: None, - file_size: "51.2959 KB", + file_size_as_bytes: 52527, } diff --git a/tests/snapshots/log_viewer__app__data__tests__long.log_ron.snap b/tests/snapshots/log_viewer__app__data__tests__long.log_ron.snap index 0990991..f1f6801 100644 --- a/tests/snapshots/log_viewer__app__data__tests__long.log_ron.snap +++ b/tests/snapshots/log_viewer__app__data__tests__long.log_ron.snap @@ -2220,5 +2220,5 @@ Data( ], filtered_rows: None, applied_filter: None, - file_size: "51.2959 KB", + file_size_as_bytes: 52527, ) diff --git a/tests/snapshots/log_viewer__app__data__tests__long.log_yaml.snap b/tests/snapshots/log_viewer__app__data__tests__long.log_yaml.snap index 2316da5..9671971 100644 --- a/tests/snapshots/log_viewer__app__data__tests__long.log_yaml.snap +++ b/tests/snapshots/log_viewer__app__data__tests__long.log_yaml.snap @@ -1975,4 +1975,4 @@ rows: v: 0 filtered_rows: ~ applied_filter: ~ -file_size: 51.2959 KB +file_size_as_bytes: 52527 diff --git a/tests/snapshots/log_viewer__app__data__tests__short.log_debug.snap b/tests/snapshots/log_viewer__app__data__tests__short.log_debug.snap index e41a0ac..8aff777 100644 --- a/tests/snapshots/log_viewer__app__data__tests__short.log_debug.snap +++ b/tests/snapshots/log_viewer__app__data__tests__short.log_debug.snap @@ -45,5 +45,5 @@ Data { ], filtered_rows: None, applied_filter: None, - file_size: "516.0000 Bytes", + file_size_as_bytes: 516, } diff --git a/tests/snapshots/log_viewer__app__data__tests__short.log_ron.snap b/tests/snapshots/log_viewer__app__data__tests__short.log_ron.snap index 3a1fbfd..7edf033 100644 --- a/tests/snapshots/log_viewer__app__data__tests__short.log_ron.snap +++ b/tests/snapshots/log_viewer__app__data__tests__short.log_ron.snap @@ -43,5 +43,5 @@ Data( ], filtered_rows: None, applied_filter: None, - file_size: "516.0000 Bytes", + file_size_as_bytes: 516, ) diff --git a/tests/snapshots/log_viewer__app__data__tests__short.log_yaml.snap b/tests/snapshots/log_viewer__app__data__tests__short.log_yaml.snap index 56f084e..12d1b63 100644 --- a/tests/snapshots/log_viewer__app__data__tests__short.log_yaml.snap +++ b/tests/snapshots/log_viewer__app__data__tests__short.log_yaml.snap @@ -35,4 +35,4 @@ rows: v: 0 filtered_rows: ~ applied_filter: ~ -file_size: 516.0000 Bytes +file_size_as_bytes: 516 From 2ae7f5463d0ddc5194acf10680e35dcd5fcd8d54 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:39:01 -0500 Subject: [PATCH 20/22] chore: version bump 0.4.0 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1bd04de..a33c6ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2052,7 +2052,7 @@ checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "log_viewer" -version = "0.3.7-dev" +version = "0.4.0" dependencies = [ "anyhow", "eframe", diff --git a/Cargo.toml b/Cargo.toml index 550510d..0eb7719 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "log_viewer" -version = "0.3.7-dev" +version = "0.4.0" edition = "2021" [dependencies] From 277160ef095382af23357bb7d21572c2c7cba73a Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:55:33 -0500 Subject: [PATCH 21/22] fix: only run profiling on native client --- src/app.rs | 26 +++++++++++++------------- src/app/data.rs | 2 +- src/main.rs | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/app.rs b/src/app.rs index dc1a18c..cfb7838 100644 --- a/src/app.rs +++ b/src/app.rs @@ -98,7 +98,7 @@ impl LogViewerApp { } fn show_log_lines(&mut self, ui: &mut egui::Ui) { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("show_log_lines"); let text_height = egui::TextStyle::Body .resolve(ui.style()) @@ -227,7 +227,7 @@ impl LogViewerApp { } fn show_log_details(&mut self, ui: &mut egui::Ui) { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("show_log_details"); let Some(data) = self.data.as_mut() else { ui.label("No data"); @@ -324,7 +324,7 @@ impl LogViewerApp { self.loading_status = match Data::try_from((&self.data_display_options, &data[..])) { Ok(mut data) => { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("swap_data_after_load"); if let Some(old_data) = self.data.as_mut() { // Preserve settings across loads of the data @@ -514,7 +514,7 @@ impl LogViewerApp { #[cfg(not(target_arch = "wasm32"))] /// Attempts to read the contents of the last loaded file and return it in a loading status otherwise returns an error loading status fn reload_file(&self) -> LoadingStatus { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("reload_file"); // TODO 5: Determine if this should spawn a task to do the load let Some(folder) = self.start_open_path.lock().unwrap().clone() else { @@ -532,7 +532,7 @@ impl LogViewerApp { #[cfg(not(target_arch = "wasm32"))] fn load_most_recent_file(&self) -> LoadingStatus { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("load_most_recent_file"); // TODO 5: Determine if this should spawn a task to do the load (might be able to reuse the normal load) let Some(folder) = self.start_open_path.lock().unwrap().clone() else { @@ -791,7 +791,7 @@ impl LogViewerApp { } fn is_changed_since_last_save(&mut self) -> bool { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("is_changed_since_last_save"); let as_ron = match ron::to_string(&self) { Ok(s) => s, @@ -871,11 +871,11 @@ fn execute> + 'static>( impl eframe::App for LogViewerApp { /// Called by the frame work to save state before shutdown. fn save(&mut self, storage: &mut dyn eframe::Storage) { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("eframe::App::save"); if self.should_save() { info!("Saving data"); - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("Saving App State"); eframe::set_value(storage, eframe::APP_KEY, self); } else { @@ -885,11 +885,11 @@ impl eframe::App for LogViewerApp { /// Called each time the UI needs repainting, which may be many times per second. fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("update_loop"); egui::TopBottomPanel::top("top_panel").show(ctx, |ui| { // The top panel is often a good place for a menu bar: - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("top_panel"); self.check_global_shortcuts(ui); @@ -912,7 +912,7 @@ impl eframe::App for LogViewerApp { egui::CentralPanel::default().show(ctx, |ui| { // The central panel the region left after adding TopPanel's and SidePanel's - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("outer_central_panel"); static HEADING: LazyLock<&'static str> = LazyLock::new(|| format!("Log Viewer {}", env!("CARGO_PKG_VERSION")).leak()); @@ -934,7 +934,7 @@ impl eframe::App for LogViewerApp { .max_height(max_details_height) .min_height(60.) .show_inside(ui, |ui| { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("bottom_panel"); ui.vertical_centered(|ui| { ui.heading("Details"); @@ -950,7 +950,7 @@ impl eframe::App for LogViewerApp { }); egui::CentralPanel::default().show_inside(ui, |ui| { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("inner_central_panel"); egui::ScrollArea::horizontal() .id_salt("log lines") diff --git a/src/app/data.rs b/src/app/data.rs index 46ae284..6ca257f 100644 --- a/src/app/data.rs +++ b/src/app/data.rs @@ -317,7 +317,7 @@ impl Data { } pub(crate) fn row_heights(&self, text_height: f32) -> impl Iterator { - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"),feature = "profiling"))] puffin::profile_scope!("calculate row heights"); // TODO 5: See if this is taking too long and cache value instead of recalculating each frame self.rows_iter() diff --git a/src/main.rs b/src/main.rs index 74c5290..02b0efd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,7 +32,7 @@ async fn main() -> eframe::Result<()> { ), ..Default::default() }; - #[cfg(feature = "profiling")] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] start_puffin_server(); eframe::run_native( @@ -89,7 +89,7 @@ fn main() { }); } -#[cfg(feature = "profiling")] +#[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] fn start_puffin_server() { puffin::set_scopes_on(true); // tell puffin to collect data From 11b26f73a758c88472435f23b86ea46fb4c84f99 Mon Sep 17 00:00:00 2001 From: One <43485962+c-git@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:56:24 -0500 Subject: [PATCH 22/22] style: apply rustfmt --- src/app/data.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/data.rs b/src/app/data.rs index 6ca257f..740d920 100644 --- a/src/app/data.rs +++ b/src/app/data.rs @@ -317,7 +317,7 @@ impl Data { } pub(crate) fn row_heights(&self, text_height: f32) -> impl Iterator { - #[cfg(all(not(target_arch = "wasm32"),feature = "profiling"))] + #[cfg(all(not(target_arch = "wasm32"), feature = "profiling"))] puffin::profile_scope!("calculate row heights"); // TODO 5: See if this is taking too long and cache value instead of recalculating each frame self.rows_iter()