diff --git a/crates/hyperlog-tui/src/components/graph_explorer.rs b/crates/hyperlog-tui/src/components/graph_explorer.rs index e9538f8..6076647 100644 --- a/crates/hyperlog-tui/src/components/graph_explorer.rs +++ b/crates/hyperlog-tui/src/components/graph_explorer.rs @@ -7,8 +7,10 @@ use crate::{ state::SharedState, }; -use super::movement_graph::{MovementGraph, MovementGraphItem}; -use super::render_graph::RenderGraph; +use super::{ + movement_graph::{MovementGraph, MovementGraphItem}, + render_graph::summarize::SummarizeRenderGraph, +}; pub struct GraphExplorer<'a> { state: SharedState, diff --git a/crates/hyperlog-tui/src/components/render_graph.rs b/crates/hyperlog-tui/src/components/render_graph.rs index 1ba8ffb..da2f149 100644 --- a/crates/hyperlog-tui/src/components/render_graph.rs +++ b/crates/hyperlog-tui/src/components/render_graph.rs @@ -1,8 +1,4 @@ use ratatui::prelude::*; -pub trait RenderGraph { - fn render_graph(&self, items: &[usize]) -> Vec; - fn render_graph_spans(&self, items: &[usize]) -> Vec>; -} - pub mod classic; +pub mod summarize; diff --git a/crates/hyperlog-tui/src/components/render_graph/classic.rs b/crates/hyperlog-tui/src/components/render_graph/classic.rs index 1832327..680d9e6 100644 --- a/crates/hyperlog-tui/src/components/render_graph/classic.rs +++ b/crates/hyperlog-tui/src/components/render_graph/classic.rs @@ -1,10 +1,13 @@ use ratatui::prelude::*; -use crate::components::movement_graph::{GraphItemType, MovementGraph}; +use crate::components::movement_graph::{GraphItemType, MovementGraph, MovementGraphItem}; -use super::RenderGraph; +pub trait ClassicRenderGraph { + fn render_graph(&self, items: &[usize]) -> Vec; + fn render_graph_spans(&self, items: &[usize]) -> Vec>; +} -impl RenderGraph for MovementGraph { +impl ClassicRenderGraph for MovementGraph { /// render_graph takes each level of items, renders them, and finally renders a strongly set selector for the current item the user is on /// This is done from buttom up, and composed via. string padding fn render_graph(&self, items: &[usize]) -> Vec { diff --git a/crates/hyperlog-tui/src/components/render_graph/summarize.rs b/crates/hyperlog-tui/src/components/render_graph/summarize.rs new file mode 100644 index 0000000..a9638fb --- /dev/null +++ b/crates/hyperlog-tui/src/components/render_graph/summarize.rs @@ -0,0 +1,172 @@ +use crate::components::movement_graph::{GraphItemType, MovementGraph, MovementGraphItem}; +use itertools::Itertools; +use ratatui::prelude::*; + +pub trait Summarize { + fn heading(&self) -> Vec; + fn brief(&self) -> Vec>; + fn full(&self, selected: bool) -> Vec>; +} + +impl Summarize for MovementGraphItem { + fn heading(&self) -> Vec { + let name = Span::from(self.name.clone()); + + match self.item_type { + GraphItemType::Section => { + let items = self.values.items.len(); + + vec![ + name, + Span::from(" ~ "), + Span::from(format!("(items: {})", items)), + ] + } + GraphItemType::Item { done } => { + vec![Span::from(if done { "- [x] " } else { "- [ ] " }), name] + } + } + } + + fn brief(&self) -> Vec> { + let heading = self.heading(); + + let items = &self.values.items; + + let items = if items.len() > 2 { + vec![items.first().unwrap(), items.last().unwrap()] + } else { + items.iter().collect() + }; + + let mut output = vec![heading]; + + for item in items { + let mut heading = item.heading(); + heading.insert(0, Span::from(" ".repeat(4))); + output.push(heading); + } + + output + } + + fn full(&self, selected: bool) -> Vec> { + let heading = self + .heading() + .into_iter() + .map(|h| if selected { h.bold() } else { h }) + .collect_vec(); + + let items = &self.values.items; + + let mut output = vec![heading]; + + for item in items { + for mut brief in item.brief() { + brief.insert(0, Span::from(" ".repeat(4))); + output.push(brief); + } + } + + output + } +} +pub trait SummarizeRenderGraph { + fn render_graph(&self, items: &[usize]) -> Vec; + fn render_graph_spans(&self, items: &[usize], depth: usize) + -> Vec>; +} + +impl SummarizeRenderGraph for MovementGraph { + fn render_graph(&self, items: &[usize]) -> Vec { + self.render_graph_spans(items, 0).to_lines() + } + + fn render_graph_spans( + &self, + items: &[usize], + depth: usize, + ) -> Vec> { + match items.split_first() { + Some((first, rest)) => match rest.is_empty() { + true => match self.items.get(*first) { + Some(item) => { + let mut output = Vec::new(); + + if *first > 0 { + if let Some(sibling) = self.items.get(*first - 1) { + output.append(&mut sibling.brief()) + } + } + + output.append(&mut item.full(true)); + + if *first < self.items.len() { + if let Some(sibling) = self.items.get(*first + 1) { + output.append(&mut sibling.brief()) + } + } + + output + } + None => vec![], + }, + false => { + if rest.len() > 1 { + let mut output = Vec::new(); + // TODO: add heading for the current item, and shift lines by one + if let Some(item) = self.items.get(*first) { + output.push(item.heading()) + } + for mut line in self.render_graph_spans(rest, 0) { + line.insert(0, Span::from("~".repeat(4))); + + output.push(line); + } + + output + } else { + match self.items.get(*first) { + Some(item) => match item.values.items.get(*rest.first().unwrap()) { + Some(actual_item) => { + let mut output = Vec::new(); + + if *first > 0 { + if let Some(sibling) = self.items.get(*first - 1) { + output.append(&mut sibling.brief()) + } + } + + output.append(&mut actual_item.full(true)); + + if *first < self.items.len() { + if let Some(sibling) = self.items.get(*first + 1) { + output.append(&mut sibling.brief()) + } + } + + output + } + None => vec![], + }, + None => vec![], + } + } + } + }, + None => self.items.iter().flat_map(|i| i.brief()).collect_vec(), + } + } +} + +pub trait ToLine<'a> { + fn to_lines(&self) -> Vec>; +} + +impl<'a> ToLine<'a> for Vec>> { + fn to_lines(&self) -> Vec> { + self.iter() + .map(|i| Line::from(i.to_vec())) + .collect::>() + } +} diff --git a/demo.cast b/demo.cast index 1630fa3..36319f5 100644 --- a/demo.cast +++ b/demo.cast @@ -1,270 +1,62 @@ -{"version": 2, "width": 209, "height": 37, "timestamp": 1715275908, "env": {"SHELL": "/usr/bin/zsh", "TERM": "alacritty"}} -[0.068021, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] -[0.116188, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[38;2;255;153;102mhyperlog\u001b[0m \u001b[90mmain\u001b[0m\u001b[38;2;255;153;102m \u001b[0m\u001b[38;2;255;153;102m≡ \u001b[0m\u001b[1;31mrs \u001b[0m\r\n\u001b[38;2;255;153;102m❯\u001b[0m \u001b[K"] -[0.116811, "o", "\u001b[6 q"] -[0.117407, "o", "\u001b[6 q"] -[0.117474, "o", "\u001b[?2004h"] -[1.422226, "o", "c"] -[1.424015, "o", "\b\u001b[32mc\u001b[39m"] -[1.443117, "o", "\b\u001b[32mc\u001b[39m\u001b[90margo run\u001b[39m\u001b[8D"] -[1.524895, "o", "\b\u001b[32mc\u001b[32ma\u001b[39m"] -[1.530521, "o", "\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"] -[1.584427, "o", "\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31ma\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"] -[1.764701, "o", "\b\u001b[1m\u001b[31mr\u001b[1m\u001b[31mg\u001b[0m\u001b[39m"] -[1.867961, "o", "\b\u001b[1m\u001b[31mg\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"] -[1.869689, "o", "\b\b\b\b\b\u001b[0m\u001b[32mc\u001b[0m\u001b[32ma\u001b[0m\u001b[32mr\u001b[0m\u001b[32mg\u001b[0m\u001b[32mo\u001b[39m"] -[1.945386, "o", "\b\u001b[32mo\u001b[32m \u001b[39m"] -[1.946701, "o", "\b\b\u001b[32mo\u001b[39m\u001b[39m "] -[2.048502, "o", "\u001b[39mr"] -[2.050856, "o", "\b\u001b[4mr\u001b[24m"] -[2.155029, "o", "\b\u001b[4mr\u001b[39m\u001b[4mu\u001b[24m"] -[2.156838, "o", "\b\b\u001b[24mr\u001b[24mu"] -[2.317861, "o", "\u001b[39mn"] -[2.381304, "o", "\u001b[0 q"] -[2.381438, "o", "\u001b[?2004l\r\r\n"] -[2.553891, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `EditMsg`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/app/dialog/create_item.rs:4:21\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse crate::models::{EditMsg, Msg};\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_imports)]` on by default\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `EditMsg`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/app/dialog/edit_item.rs:5:21\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m5\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse crate::models::{EditMsg, Msg};\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `itertools::Itertools`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/app/dialog.rs:1:5\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse itertools::Itertools;\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: call to `.deref()` on a reference in this situation does nothing\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/components.rs:514:47\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m514\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m item_type: match value.deref() {\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: the type `GraphItem` does not implement `Deref`, so calling `deref` on `&GraphItem` copies the reference, which does not do anything and can be removed\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(noop_method_call)]` on by default\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;14mhelp\u001b[0m\u001b[0m: remove this redundant call\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m514\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[38;5;9m- \u001b[0m\u001b[0m item_type: match value\u001b[0m\u001b[0m\u001b[38;5;9m.deref()\u001b[0m\u001b[0m {\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m514\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[38;5;10m+ \u001b[0m\u001b[0m item_type: match value {\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;14mhelp\u001b[0m\u001b[0m: if you meant to clone `GraphItem`, implement `Clone` for it\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0m/home/kjuulh/git/git.front.kjuulh.io/kjuulh/hyperlog/crates/hyperlog-core/src/log.rs:24:1\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m24\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[38;5;10m+ #[derive(Clone)]\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m25\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mpub enum GraphItem {\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\r\n"] -[2.553991, "o", "\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m:\u001b[0m `hyperlog-tui` (lib) generated 4 warnings (run `cargo fix --lib -p hyperlog-tui` to apply 3 suggestions)\r\n\u001b[1m\u001b[32m Finished\u001b[0m \u001b]8;;https://doc.rust-lang.org/cargo/reference/profiles.html#default-profiles\u001b\\`dev` profile [unoptimized + debuginfo]\u001b]8;;\u001b\\ target(s) in 0.10s\r\n"] -[2.561394, "o", "\u001b[1m\u001b[32m Running\u001b[0m `target/debug/hyperlog`\r\n"] -[2.571775, "o", "\u001b[?1049h"] -[2.576415, "o", "\u001b[1;1H\u001b[38;5;2mhyperlog\u001b[2;1H\u001b[39m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[3;1H\u001b[38;5;8m- other\u001b[5;5H- other\u001b[7;9H- other\u001b[9;13H- [x] basdfasdfasdfasdf\u001b[11;13H- [x] sdlfkasldjflsdaslkdjfalkjsdfl\u001b[13;9H- [x] some\u001b[15;9H- something\u001b[17;13H- something-else\u001b[19;17H- [x] another-real-item-man\u001b[21;17H- [x] arealitembaby\u001b[23;9H- [ ] whatever\u001b[25;1H- some\u001b[27;1H- something\u001b[29;5H- else\u001b[31;5H- third\u001b[33;1H- with-something\u001b[37;2H\u001b[39m--\u001b[37;5HVIEW\u001b[37;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[2.830216, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[3.083824, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[3.312323, "o", "\u001b[3;1H\u001b[1m\u001b[38;5;15m- other\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[3.448917, "o", "\u001b[3;1H\u001b[38;5;8m- other\u001b[5;5H\u001b[1m\u001b[38;5;15m- other\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[3.613553, "o", "\u001b[5;5H\u001b[38;5;8m- other\u001b[7;9H\u001b[1m\u001b[38;5;15m- other\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[3.870231, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[3.882483, "o", "\u001b[1;10H~\u001b[1;12Hcreate\u001b[1;19Hitem\u001b[3;1H\u001b[38;5;8mpath: kjuulh.other.other.other \u001b[4;1H \u001b[5;1H\u001b[39m┌title──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"] -[3.88257, "o", "────────────────────────┐\u001b[6;1H│\u001b[38;5;0m\u001b[48;5;5m \u001b[6;209H\u001b[39m\u001b[49m│\u001b[7;1H└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[8;1H\u001b[38;5;8m┌description───────────────────────────────────────────────────────────────────────────────"] -[3.882597, "o", "─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[9;1H│ \u001b[9;15H \u001b[9;19H │\u001b[10;1H└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"] -[3.882674, "o", "────────────────────────────────────────────────────────────────┘\u001b[11;13H\u001b[39m \u001b[13;9H \u001b[15;9H \u001b[17;13H \u001b[19;17H \u001b[21;17H \u001b[23;9H \u001b[25;1H \u001b[27;1H \u001b[29;5H \u001b[31;5H \u001b[33;1H \u001b[37;5HEDIT\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[4.13608, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[4.388789, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[4.425751, "o", "\u001b[6;2Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[4.527752, "o", "\u001b[6;3Ho\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[4.678825, "o", "\u001b[6;4Hm\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[4.756198, "o", "\u001b[6;5He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[4.845317, "o", "\u001b[6;6Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[4.931464, "o", "\u001b[6;7Hh\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[5.084899, "o", "\u001b[6;8Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[5.188535, "o", "\u001b[6;9Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[5.339409, "o", "\u001b[6;10Hg\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[5.458766, "o", "\u001b[6;11H \u001b[37;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[5.711976, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[5.787803, "o", "\u001b[37;1H: \u001b[37;5H \u001b[37;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[5.909531, "o", "\u001b[37;2Hw\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[5.985516, "o", "\u001b[37;3Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[6.120986, "o", "\u001b[1;10H \u001b[1;12H \u001b[1;19H \u001b[3;1H\u001b[38;5;8m- other\u001b[39m \u001b[4;1H \u001b[5;1H \u001b[38;5;8m- other\u001b[39m \u001b[6;1H \u001b[6;209H \u001b[7;1H \u001b[1m\u001b[38;5;15m- other\u001b[22m\u001b[39m \u001b[8;1H "] -[6.121104, "o", " \u001b[9;1H \u001b[38;5;8m-\u001b[9;15H[x]\u001b[9;19Hbasdfasdfasdfasdf\u001b[39m \u001b[10;1H \u001b[11;13H\u001b[38;5;8m- [x] sdlfkasldjflsdaslkdjfalkjsdfl\u001b[13;13H- [ ] something\u001b[15;9H- [x] some\u001b[17;9H- something\u001b[19;13H- something-else\u001b[21;17H- [x] another-real-item-man\u001b[23;17H- [x] arealitembaby\u001b[25;9H- [ ] whatever\u001b[27;1H- some\u001b[29;1H- something\u001b[31;5H- else\u001b[33;5H- third\u001b[35;1H- with-something\u001b[37;1H\u001b[39m --\u001b[37;5HVIEW\u001b[37;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[6.376468, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[6.631583, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[6.886855, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[7.049312, "o", "\u001b[7;9H\u001b[38;5;8m- other\u001b[9;13H\u001b[1m\u001b[38;5;15m- [x] basdfasdfasdfasdf\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[7.303165, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[7.42526, "o", "\u001b[9;13H\u001b[38;5;8m- [x] basdfasdfasdfasdf\u001b[11;13H\u001b[1m\u001b[38;5;15m- [x] sdlfkasldjflsdaslkdjfalkjsdfl\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[7.605653, "o", "\u001b[11;13H\u001b[38;5;8m- [x] sdlfkasldjflsdaslkdjfalkjsdfl\u001b[13;13H\u001b[1m\u001b[38;5;15m- [ ] something\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[7.861055, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[8.008956, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[8.262789, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[8.445994, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[8.699737, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[8.9533, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[9.045631, "o", "\u001b[13;16H\u001b[1m\u001b[38;5;15mx\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[9.299403, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[9.553163, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[9.735068, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[9.988954, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[10.242337, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[10.486221, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[10.741395, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[10.815189, "o", "\u001b[37;1H: \u001b[37;5H \u001b[37;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[10.917172, "o", "\u001b[37;2He\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[11.085181, "o", "\u001b[37;3Hd\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[11.1735, "o", "\u001b[37;4Hi\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[11.279168, "o", "\u001b[37;5Ht\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[11.369147, "o", "\u001b[1;10H~\u001b[1;12Hedit\u001b[1;17Hitem\u001b[3;1H\u001b[38;5;8mpath: kjuulh.other.other.other.something \u001b[4;1H \u001b[5;1H\u001b[39m┌title──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"] -[11.369227, "o", "────────────────────────┐\u001b[6;1H│something\u001b[38;5;0m\u001b[48;5;5m \u001b[6;209H\u001b[39m\u001b[49m│\u001b[7;1H└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[8;1H\u001b[38;5;8m┌description────────────────────────────────────────────────────────────────────────────"] -[11.369285, "o", "────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[9;1H│ \u001b[9;15H \u001b[9;19H │\u001b[10;1H└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"] -[11.369321, "o", "───────────────────────────────────────────────────────────────────┘\u001b[11;13H\u001b[39m \u001b[13;13H \u001b[15;9H \u001b[17;9H \u001b[19;13H \u001b[21;17H \u001b[23;17H \u001b[25;9H \u001b[27;1H \u001b[29;1H \u001b[31;5H \u001b[33;5H \u001b[35;1H \u001b[37;1H -- EDIT\u001b[37;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[11.622591, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[11.876231, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[12.129645, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[12.382542, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[12.636292, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[12.705196, "o", "\u001b[6;11Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[12.958571, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[13.10767, "o", "\u001b[6;11H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[13.274155, "o", "\u001b[6;10H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[13.437362, "o", "\u001b[6;9H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[13.603346, "o", "\u001b[6;8H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[13.797662, "o", "\u001b[6;7H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[13.964183, "o", "\u001b[6;6H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[14.128346, "o", "\u001b[6;5H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[14.277769, "o", "\u001b[6;4H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[14.444215, "o", "\u001b[6;3H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[14.607996, "o", "\u001b[6;2H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[14.817381, "o", "\u001b[6;2HI\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[14.938407, "o", "\u001b[6;3H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[15.105005, "o", "\u001b[6;4Hc\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[15.177103, "o", "\u001b[6;5Ha\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[15.237734, "o", "\u001b[6;6Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[15.314055, "o", "\u001b[6;7H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[15.50905, "o", "\u001b[6;8He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[15.688487, "o", "\u001b[6;9Hd\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[15.778225, "o", "\u001b[6;10Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[15.884484, "o", "\u001b[6;11Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[15.927584, "o", "\u001b[6;12H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[16.064325, "o", "\u001b[6;13Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[16.137399, "o", "\u001b[6;14Hh\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[16.274067, "o", "\u001b[6;15Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[16.334342, "o", "\u001b[6;16Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[16.544224, "o", "\u001b[6;17H \u001b[37;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[16.784735, "o", "\u001b[5;1H\u001b[38;5;8m┌title──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[6;1H│I can edit this │\u001b[7;1H└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[8;1H\u001b[39m┌description───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"] -[16.784907, "o", "─────────────────┐\u001b[9;1H│ │\u001b[10;1H└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[17.039025, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[17.187426, "o", "\u001b[9;2H\u001b[38;5;0m\u001b[48;5;5m \u001b[37;5H\u001b[39m\u001b[49mEDIT\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[17.441615, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[17.696128, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[17.950481, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[17.954099, "o", "\u001b[9;2HA\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[18.074522, "o", "\u001b[9;3Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[18.147127, "o", "\u001b[9;4Hd\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[18.26807, "o", "\u001b[9;5H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[18.357652, "o", "\u001b[9;6Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[18.434358, "o", "\u001b[9;7Hh\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[18.58746, "o", "\u001b[9;8Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[18.704545, "o", "\u001b[9;9Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[18.884595, "o", "\u001b[9;10H \u001b[37;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[19.137767, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[19.214049, "o", "\u001b[37;1H: \u001b[37;5H \u001b[37;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[19.333851, "o", "\u001b[37;2Hw\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[19.40729, "o", "\u001b[37;3Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[19.545185, "o", "\u001b[1;10H \u001b[1;12H \u001b[1;17H \u001b[3;1H\u001b[38;5;8m- other\u001b[39m \u001b[4;1H \u001b[5;1H \u001b[38;5;8m- other\u001b[39m \u001b[6;1H \u001b[7;1H \u001b[38;5;8m- other\u001b[39m "] -[19.545334, "o", " \u001b[8;1H \u001b[9;1H \u001b[9;6H \u001b[9;13H\u001b[38;5;8m- [x] I can edit this\u001b[9;209H\u001b[39m \u001b[10;1H \u001b[11;13H\u001b[38;5;8m- [x] basdfasdfasdfasdf\u001b[13;13H\u001b[1m\u001b[38;5;15m- [x] sdlfkasldjflsdaslkdjfalkjsdfl\u001b[15;9H\u001b[22m\u001b[38;5;8m- [x] some\u001b[17;9H- something\u001b[19;13H- something-else\u001b[21;17H- [x] another-real-item-man\u001b[23;17H- [x] arealitembaby\u001b[25;9H- [ ] whatever\u001b[27;1H- some\u001b[29;1H- something\u001b[31;5H- else\u001b[33;5H- third\u001b[35;1H- with-something\u001b[37;1H\u001b[39m --\u001b[37;5HVIEW\u001b[37;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[19.799162, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[20.054028, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[20.307998, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[20.561729, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[20.566624, "o", "\u001b[11;13H\u001b[1m\u001b[38;5;15m- [x] basdfasdfasdfasdf\u001b[13;13H\u001b[22m\u001b[38;5;8m- [x] sdlfkasldjflsdaslkdjfalkjsdfl\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[20.702313, "o", "\u001b[9;13H\u001b[1m\u001b[38;5;15m- [x] I can edit this\u001b[11;13H\u001b[22m\u001b[38;5;8m- [x] basdfasdfasdfasdf\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[20.908298, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[21.162091, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[21.37516, "o", "\u001b[9;16H\u001b[1m\u001b[38;5;15m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[21.629428, "o", "\u001b[9;16H\u001b[1m\u001b[38;5;15mx\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[21.88325, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[21.959451, "o", "\u001b[9;16H\u001b[1m\u001b[38;5;15m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[22.155088, "o", "\u001b[9;16H\u001b[1m\u001b[38;5;15mx\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[22.348094, "o", "\u001b[9;16H\u001b[1m\u001b[38;5;15m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[22.528582, "o", "\u001b[9;16H\u001b[1m\u001b[38;5;15mx\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[22.782211, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[23.035832, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[23.248605, "o", "\u001b[9;13H\u001b[38;5;8m- [x] I can edit this\u001b[11;13H\u001b[1m\u001b[38;5;15m- [x] basdfasdfasdfasdf\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[23.445613, "o", "\u001b[9;13H\u001b[1m\u001b[38;5;15m- [x] I can edit this\u001b[11;13H\u001b[22m\u001b[38;5;8m- [x] basdfasdfasdfasdf\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[23.654844, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[23.908641, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[24.162166, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[24.415538, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[24.669106, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[24.915592, "o", "\u001b[37;1H: \u001b[37;5H \u001b[37;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[25.038078, "o", "\u001b[37;2He\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[25.2292, "o", "\u001b[37;3Hd\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[25.318513, "o", "\u001b[37;4Hi\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[25.455016, "o", "\u001b[37;5Ht\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[25.544807, "o", "\u001b[1;10H~\u001b[1;12Hedit\u001b[1;17Hitem\u001b[3;1H\u001b[38;5;8mpath: kjuulh.other.other.other.I can edit this \u001b[4;1H \u001b[5;1H\u001b[39m┌title──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"] -[25.54489, "o", "────────────────────────┐\u001b[6;1H│I\u001b[6;4Hcan\u001b[6;8Hedit\u001b[6;13Hthis\u001b[38;5;0m\u001b[48;5;5m \u001b[6;209H\u001b[39m\u001b[49m│\u001b[7;1H└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[8;1H\u001b[38;5;8m┌description─────────────────────────────────────────────────────────────────────"] -[25.544988, "o", "───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[9;1H│And this │\u001b[10;1H└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"] -[25.545068, "o", "──────────────────────────────────────────────────────────────────────┘\u001b[11;13H\u001b[39m \u001b[13;13H \u001b[15;9H \u001b[17;9H \u001b[19;13H \u001b[21;17H \u001b[23;17H \u001b[25;9H \u001b[27;1H \u001b[29;1H \u001b[31;5H \u001b[33;5H \u001b[35;1H \u001b[37;1H -- EDIT\u001b[37;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[25.799349, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[26.052485, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[26.23418, "o", "\u001b[6;17Hj\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[26.488909, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[26.742022, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[26.94057, "o", "\u001b[6;17H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[27.117303, "o", "\u001b[6;17H \u001b[37;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[27.370323, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[27.38653, "o", "\u001b[5;1H\u001b[38;5;8m┌title──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[6;1H│I can edit this │\u001b[7;1H└──────────────────────────────────────────────────────"] -[27.386567, "o", "─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[8;1H\u001b[39m┌description───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"] -[27.386677, "o", "─────────────────┐\u001b[9;1H│And this │\u001b[10;1H└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[27.639588, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[27.717352, "o", "\u001b[9;2H\u001b[38;5;0m\u001b[48;5;5mA\u001b[37;5H\u001b[39m\u001b[49mEDIT\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[27.970564, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[28.223691, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[28.467566, "o", "\u001b[9;2HA\u001b[37;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[28.72076, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[28.874563, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[29.127769, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[29.33782, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[29.534369, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[29.787555, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[29.984355, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[30.134543, "o", "\u001b[9;2H\u001b[38;5;0m\u001b[48;5;5mA\u001b[37;5H\u001b[39m\u001b[49mEDIT\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[30.388285, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[30.478184, "o", "\u001b[9;2HA\u001b[38;5;0m\u001b[48;5;5mn\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[30.658079, "o", "\u001b[9;3Hn\u001b[38;5;0m\u001b[48;5;5md\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[30.795066, "o", "\u001b[9;4Hd\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[30.943548, "o", "\u001b[9;5H \u001b[38;5;0m\u001b[48;5;5mt\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[31.106805, "o", "\u001b[9;6Ht\u001b[38;5;0m\u001b[48;5;5mh\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[31.243172, "o", "\u001b[9;7Hh\u001b[38;5;0m\u001b[48;5;5mi\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[31.394761, "o", "\u001b[9;8Hi\u001b[38;5;0m\u001b[48;5;5ms\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[31.543508, "o", "\u001b[9;9Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[31.797651, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[31.814543, "o", "\u001b[9;10H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[32.067544, "o", "\u001b[9;11HI\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[32.113144, "o", "\u001b[9;12H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[32.365934, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[32.397063, "o", "\u001b[9;13Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[32.650068, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[32.713855, "o", "\u001b[9;14Hh\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[32.877214, "o", "\u001b[9;15Ho\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[33.026953, "o", "\u001b[9;16Hu\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[33.193541, "o", "\u001b[9;17Hl\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[33.270848, "o", "\u001b[9;18Hd\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[33.327636, "o", "\u001b[9;19H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[33.433825, "o", "\u001b[9;20Hg\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[33.567382, "o", "\u001b[9;21He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[33.643795, "o", "\u001b[9;22Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[33.687125, "o", "\u001b[9;23H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[33.940622, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[34.064137, "o", "\u001b[9;24Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[34.167239, "o", "\u001b[9;25Ho\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[34.227022, "o", "\u001b[9;26Hr\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[34.423997, "o", "\u001b[9;27Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[34.514008, "o", "\u001b[9;28Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[34.677124, "o", "\u001b[9;29Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[34.707248, "o", "\u001b[9;30Hg\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[34.843905, "o", "\u001b[9;31H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[35.007343, "o", "\u001b[9;32Hf\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[35.097998, "o", "\u001b[9;33Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[35.234791, "o", "\u001b[9;34Hx\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[35.398271, "o", "\u001b[9;35He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[35.534597, "o", "\u001b[9;36Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[35.746795, "o", "\u001b[9;37H \u001b[37;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[36.000798, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[36.058291, "o", "\u001b[37;1H: \u001b[37;5H \u001b[37;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[36.147303, "o", "\u001b[37;2Hw\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[36.22354, "o", "\u001b[37;3Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[36.37499, "o", "\u001b[1;10H \u001b[1;12H \u001b[1;17H \u001b[3;1H\u001b[38;5;8m- other\u001b[39m \u001b[4;1H \u001b[5;1H \u001b[38;5;8m- other\u001b[39m \u001b[6;1H \u001b[7;1H \u001b[38;5;8m- other\u001b[39m "] -[36.375133, "o", " \u001b[8;1H \u001b[9;1H \u001b[9;6H \u001b[9;11H \u001b[9;13H\u001b[38;5;8m- [x] I can edit this\u001b[39m \u001b[9;209H \u001b[10;1H \u001b[11;13H\u001b[1m\u001b[38;5;15m- [x] basdfasdfasdfasdf\u001b[13;13H\u001b[22m\u001b[38;5;8m- [x] sdlfkasldjflsdaslkdjfalkjsdfl\u001b[15;9H- [x] some\u001b[17;9H- something\u001b[19;13H- something-else\u001b[21;17H- [x] another-real-item-man\u001b[23;17H- [x] arealitembaby\u001b[25;9H- [ ] whatever\u001b[27;1H- some\u001b[29;1H- something\u001b[31;5H- else\u001b[33;5H- third\u001b[35;1H- with-something\u001b[37;1H\u001b[39m --\u001b[37;5HVIEW\u001b[37;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[36.62897, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[36.883979, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[37.048337, "o", "\u001b[9;13H\u001b[1m\u001b[38;5;15m- [x] I can edit this\u001b[11;13H\u001b[22m\u001b[38;5;8m- [x] basdfasdfasdfasdf\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[37.301888, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[37.556956, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[37.810594, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[38.064062, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[38.320665, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[38.574308, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[38.828028, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[39.081369, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[39.298179, "o", "\u001b[37;1H: \u001b[37;5H \u001b[37;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[39.524441, "o", "\u001b[37;2Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[39.68854, "o", "\u001b[37;1H --\u001b[37;5HVIEW\u001b[37;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[39.942362, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[40.196662, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[40.450474, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] -[40.691621, "o", "\u001b[?1049l\u001b[?25h"] -[40.693631, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] -[40.718274, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[38;2;255;153;102mhyperlog\u001b[0m \u001b[90mmain\u001b[0m\u001b[38;2;255;153;102m \u001b[0m\u001b[38;2;255;153;102m≡ \u001b[0m\u001b[1;31mrs \u001b[0m\u001b[33m38s\u001b[0m \r\n\u001b[38;2;255;153;102m❯\u001b[0m \u001b[K"] -[40.719012, "o", "\u001b[6 q"] -[40.719517, "o", "\u001b[6 q"] -[40.719593, "o", "\u001b[?2004h"] -[42.251381, "o", "\u001b[?2004l\r\r\n"] +{"version": 2, "width": 105, "height": 39, "timestamp": 1715340853, "env": {"SHELL": "/usr/bin/zsh", "TERM": "alacritty"}} +[0.065225, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[0.112127, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[38;2;255;153;102mhyperlog\u001b[0m \u001b[90mmain\u001b[0m\u001b[38;2;255;153;102m \u001b[0m\u001b[38;2;255;153;102m≡ \u001b[0m\u001b[1;31mrs \u001b[0m\r\n\u001b[38;2;255;153;102m❯\u001b[0m \u001b[K"] +[0.1128, "o", "\u001b[6 q"] +[0.113363, "o", "\u001b[6 q"] +[0.113422, "o", "\u001b[?2004h"] +[1.450765, "o", "a"] +[1.456624, "o", "\b\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"] +[1.46532, "o", "\b\u001b[1m\u001b[31ma\u001b[0m\u001b[39m\u001b[90msciinema rec demo.cast --overwrite\u001b[39m\u001b[34D"] +[1.736304, "o", "\b\u001b[0m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[35D"] +[1.839923, "o", "c"] +[1.841146, "o", "\b\u001b[32mc\u001b[39m"] +[1.864659, "o", "\b\u001b[32mc\u001b[39m\u001b[90margo run\u001b[39m\u001b[8D"] +[1.915579, "o", "\b\u001b[32mc\u001b[32ma\u001b[39m"] +[1.918, "o", "\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"] +[1.989176, "o", "\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31ma\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"] +[2.156295, "o", "\b\u001b[1m\u001b[31mr\u001b[1m\u001b[31mg\u001b[0m\u001b[39m"] +[2.229595, "o", "\b\u001b[1m\u001b[31mg\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"] +[2.231137, "o", "\b\b\b\b\b\u001b[0m\u001b[32mc\u001b[0m\u001b[32ma\u001b[0m\u001b[32mr\u001b[0m\u001b[32mg\u001b[0m\u001b[32mo\u001b[39m"] +[2.306455, "o", "\b\u001b[32mo\u001b[32m \u001b[39m"] +[2.307463, "o", "\b\b\u001b[32mo\u001b[39m\u001b[39m "] +[2.439823, "o", "\u001b[39mr"] +[2.441994, "o", "\b\u001b[4mr\u001b[24m"] +[2.529761, "o", "\b\u001b[4mr\u001b[39m\u001b[4mu\u001b[24m"] +[2.531544, "o", "\b\b\u001b[24mr\u001b[24mu"] +[2.665739, "o", "\u001b[39mn"] +[2.863115, "o", "\u001b[0 q"] +[2.863297, "o", "\u001b[?2004l\r\r\n"] +[3.026194, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `ratatui::prelude::*`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/components/render_graph.rs:1:5\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse ratatui::prelude::*;\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_imports)]` on by default\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `MovementGraphItem`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/components/render_graph/classic.rs:3:71\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m3\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse crate::components::movement_graph::{GraphItemType, MovementGraph, MovementGraphItem};\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `items`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/components/render_graph/summarize.rs:116:9\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m116\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m items: &[usize],\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_items`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `depth`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/components/render_graph/summarize.rs:117:9\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m117\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m depth: usize,\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_depth`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: method `render_graph` is never used\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/components/render_graph/classic.rs:6:8\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m5\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub trait ClassicRenderGraph {\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m------------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mmethod in this trait\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn render_graph(&self, items: &[usize]) -> Vec;\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: method `render_graph_spans` is never used\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/components/render_graph/summarize.rs:72:8\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m70\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub trait SummarizeRenderGraph {\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--------------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mmethod in this trait\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m71\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn render_graph(&self, items: &[usize]) -> Vec;\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m72\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn render_graph_spans(&self, items: &[usize], depth: usize)\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\r\n"] +[3.026243, "o", "\r\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m:\u001b[0m `hyperlog-tui` (lib) generated 6 warnings (run `cargo fix --lib -p hyperlog-tui` to apply 2 suggestions)\r\n\u001b[1m\u001b[32m Finished\u001b[0m \u001b]8;;https://doc.rust-lang.org/cargo/reference/profiles.html#default-profiles\u001b\\`dev` profile [unoptimized + debuginfo]\u001b]8;;\u001b\\ target(s) in 0.09s\r\n"] +[3.03314, "o", "\u001b[1m\u001b[32m Running\u001b[0m `target/debug/hyperlog`\r\n"] +[3.042745, "o", "\u001b[?1049h"] +[3.045803, "o", "\u001b[1;1H\u001b[38;5;2mhyperlog\u001b[2;1H\u001b[39m─────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[3;1Hother\u001b[3;7H~\u001b[3;9H(items:\u001b[3;17H1)\u001b[4;5Hother\u001b[4;11H~\u001b[4;13H(items:\u001b[4;21H4)\u001b[5;1Hsome\u001b[5;6H~\u001b[5;8H(items:\u001b[5;16H0)\u001b[6;1Hsomething\u001b[6;11H~\u001b[6;13H(items:\u001b[6;21H2)\u001b[7;5Helse\u001b[7;10H~\u001b[7;12H(items:\u001b[7;20H0)\u001b[8;5Hthird\u001b[8;11H~\u001b[8;13H(items:\u001b[8;21H0)\u001b[9;1Hwith-something\u001b[9;16H~\u001b[9;18H(items:\u001b[9;26H0)\u001b[39;2H--\u001b[39;5HVIEW\u001b[39;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.298574, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.551223, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.80331, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.003331, "o", "\u001b[5;1H \u001b[5;6H \u001b[5;8H o\u001b[5;11Hher ~ (items:\u001b[5;25H3)\u001b[6;1H - [ ] whatever\u001b[7;5H \u001b[7;10H \u001b[7;12H \u001b[7;20H \u001b[8;5H \u001b[8;11H \u001b[8;13H \u001b[8;21H \u001b[9;1H \u001b[9;16H \u001b[9;18H \u001b[9;26H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.257492, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.511815, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.572094, "o", "\u001b[3;17H4\u001b[4;21H3\u001b[5;9H- [x]\u001b[5;15HI\u001b[5;17Hcan edit this\u001b[5;31Hand\u001b[5;35Hthis\u001b[5;40Hand\u001b[5;44Hthis\u001b[6;9H- [x] sdlfkasldjflsdaslkdjfalkjsdfl\u001b[7;5H-\u001b[7;7H[x]\u001b[7;11Hsome\u001b[8;5Hsomething\u001b[8;15H~\u001b[8;17H(items:\u001b[8;25H1)\u001b[9;9Hsomething-else\u001b[9;24H~\u001b[9;26H(items:\u001b[9;34H2)\u001b[10;6H-\u001b[10;8H[\u001b[10;10H]\u001b[10;12Hwhatever\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.825195, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.079088, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.332155, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.579252, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.832311, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.086202, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.23899, "o", "\u001b[3;17H1\u001b[4;21H4\u001b[5;9Hother\u001b[5;15H~\u001b[5;17H(items: 3) \u001b[5;31H \u001b[5;35H \u001b[5;40H \u001b[5;44H \u001b[6;9H - [ ] whatever \u001b[7;5H \u001b[7;7H \u001b[7;11H \u001b[8;5H \u001b[8;15H \u001b[8;17H \u001b[8;25H \u001b[9;9H \u001b[9;24H \u001b[9;26H \u001b[9;34H \u001b[10;6H \u001b[10;8H \u001b[10;10H \u001b[10;12H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.492769, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.659079, "o", "\u001b[5;1Hsome\u001b[5;6H~\u001b[5;8H(i\u001b[5;11Hems: 0) \u001b[5;25H \u001b[6;1Hsomething ~ (items: 2) \u001b[7;5Helse\u001b[7;10H~\u001b[7;12H(items:\u001b[7;20H0)\u001b[8;5Hthird\u001b[8;11H~\u001b[8;13H(items:\u001b[8;21H0)\u001b[9;1Hwith-something\u001b[9;16H~\u001b[9;18H(items:\u001b[9;26H0)\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.912093, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.165847, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.419294, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.67258, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.859958, "o", "\u001b[39;1H: \u001b[39;5H \u001b[39;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.992475, "o", "\u001b[39;2Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.095791, "o", "\u001b[?1049l\u001b[?25h"] +[8.097473, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[8.122907, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[38;2;255;153;102mhyperlog\u001b[0m \u001b[90mmain\u001b[0m\u001b[38;2;255;153;102m \u001b[0m\u001b[38;2;255;153;102m≡ \u001b[0m\u001b[1;31mrs \u001b[0m\u001b[33m5s\u001b[0m \r\n\u001b[38;2;255;153;102m❯\u001b[0m \u001b[K"] +[8.123656, "o", "\u001b[6 q"] +[8.124303, "o", "\u001b[6 q"] +[8.124397, "o", "\u001b[?2004h"] +[9.325871, "o", "\u001b[?2004l\r\r\n"]