feat: with backend
All checks were successful
continuous-integration/drone/push Build is passing

Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
Kasper Juul Hermansen 2024-05-14 23:30:20 +02:00
parent 816869e6f9
commit 837caee5db
Signed by: kjuulh
GPG Key ID: 57B6E1465221F912
14 changed files with 1050 additions and 158 deletions

View File

@ -23,11 +23,10 @@ message ItemGraphItem {
} }
message GraphItem { message GraphItem {
string path = 1;
oneof contents { oneof contents {
UserGraphItem user = 2; UserGraphItem user = 1;
SectionGraphItem section = 3; SectionGraphItem section = 2;
ItemGraphItem item = 4; ItemGraphItem item = 3;
} }
} }
@ -36,6 +35,7 @@ service Graph {
rpc CreateSection(CreateSectionRequest) returns (CreateSectionResponse); rpc CreateSection(CreateSectionRequest) returns (CreateSectionResponse);
rpc CreateRoot(CreateRootRequest) returns (CreateRootResponse); rpc CreateRoot(CreateRootRequest) returns (CreateRootResponse);
rpc CreateItem(CreateItemRequest) returns (CreateItemResponse); rpc CreateItem(CreateItemRequest) returns (CreateItemResponse);
rpc UpdateItem(UpdateItemRequest) returns (UpdateItemResponse);
// Queriers // Queriers
rpc GetAvailableRoots(GetAvailableRootsRequest) returns (GetAvailableRootsResponse); rpc GetAvailableRoots(GetAvailableRootsRequest) returns (GetAvailableRootsResponse);
@ -62,6 +62,13 @@ message CreateItemRequest {
} }
message CreateItemResponse {} message CreateItemResponse {}
message UpdateItemRequest {
string root = 1;
repeated string path = 2;
ItemGraphItem item = 3;
}
message UpdateItemResponse {}
// Queries // Queries
message GetAvailableRootsRequest {} message GetAvailableRootsRequest {}
message GetAvailableRootsResponse { message GetAvailableRootsResponse {

View File

@ -5,6 +5,7 @@ use crate::{
create_item::{self, CreateItem, CreateItemExt}, create_item::{self, CreateItem, CreateItemExt},
create_root::{self, CreateRoot, CreateRootExt}, create_root::{self, CreateRoot, CreateRootExt},
create_section::{self, CreateSection, CreateSectionExt}, create_section::{self, CreateSection, CreateSectionExt},
update_item::{UpdateItem, UpdateItemExt},
}, },
state::SharedState, state::SharedState,
}; };
@ -48,6 +49,7 @@ pub struct Commander {
create_root: CreateRoot, create_root: CreateRoot,
create_section: CreateSection, create_section: CreateSection,
create_item: CreateItem, create_item: CreateItem,
update_item: UpdateItem,
} }
impl Commander { impl Commander {
@ -55,11 +57,13 @@ impl Commander {
create_root: CreateRoot, create_root: CreateRoot,
create_section: CreateSection, create_section: CreateSection,
create_item: CreateItem, create_item: CreateItem,
update_item: UpdateItem,
) -> Self { ) -> Self {
Self { Self {
create_root, create_root,
create_section, create_section,
create_item, create_item,
update_item,
} }
} }
@ -104,7 +108,19 @@ impl Commander {
title, title,
description, description,
state, state,
} => todo!(), } => {
self.update_item
.execute(crate::services::update_item::Request {
root,
path,
title,
description,
state,
})
.await?;
Ok(())
}
Command::ToggleItem { root, path } => todo!(), Command::ToggleItem { root, path } => todo!(),
Command::Move { root, src, dest } => todo!(), Command::Move { root, src, dest } => todo!(),
} }
@ -121,6 +137,7 @@ impl CommanderExt for SharedState {
self.create_root_service(), self.create_root_service(),
self.create_section_service(), self.create_section_service(),
self.create_item_service(), self.create_item_service(),
self.update_item_service(),
) )
} }
} }

View File

@ -196,26 +196,23 @@ impl Graph for Server {
tracing::trace!("get: req({:?})", msg); tracing::trace!("get: req({:?})", msg);
Ok(Response::new(GetReply { let res = self
item: Some(GraphItem { .querier
path: "kjuulh".into(), .get(&msg.root, msg.paths.clone())
contents: Some(graph_item::Contents::User(UserGraphItem { .await
items: HashMap::from([( .map_err(to_tonic_err)?;
"some".to_string(),
GraphItem { match res {
path: "some".into(), Some(item) => Ok(Response::new(GetReply {
contents: Some(graph_item::Contents::Item(ItemGraphItem { item: Some(to_native(&item).map_err(to_tonic_err)?),
title: "some-title".into(), })),
description: "some-description".into(), None => {
item_state: Some(item_graph_item::ItemState::NotDone( return Err(tonic::Status::new(
ItemStateNotDone {}, tonic::Code::NotFound,
)), "failed to find any valid roots",
})), ))
}, }
)]), }
})),
}),
}))
} }
async fn get_available_roots( async fn get_available_roots(
@ -242,6 +239,130 @@ impl Graph for Server {
Ok(Response::new(GetAvailableRootsResponse { roots })) Ok(Response::new(GetAvailableRootsResponse { roots }))
} }
async fn update_item(
&self,
request: tonic::Request<UpdateItemRequest>,
) -> std::result::Result<tonic::Response<UpdateItemResponse>, tonic::Status> {
let req = request.into_inner();
tracing::trace!("update item: req({:?})", req);
if req.root.is_empty() {
return Err(tonic::Status::new(
tonic::Code::InvalidArgument,
"root cannot be empty".to_string(),
));
}
if req.path.is_empty() {
return Err(tonic::Status::new(
tonic::Code::InvalidArgument,
"path cannot be empty".to_string(),
));
}
if req
.path
.iter()
.filter(|item| item.is_empty())
.collect::<Vec<_>>()
.first()
.is_some()
{
return Err(tonic::Status::new(
tonic::Code::InvalidArgument,
"path cannot contain empty paths".to_string(),
));
}
if req
.path
.iter()
.filter(|item| item.contains("."))
.collect::<Vec<_>>()
.first()
.is_some()
{
return Err(tonic::Status::new(
tonic::Code::InvalidArgument,
"path cannot contain `.`".to_string(),
));
}
let item = match req.item {
Some(i) => i,
None => {
return Err(tonic::Status::new(
tonic::Code::InvalidArgument,
"item cannot contain empty or null".to_string(),
));
}
};
self.commander
.execute(Command::UpdateItem {
root: req.root,
path: req.path,
title: item.title,
description: item.description,
state: match item.item_state {
Some(item_graph_item::ItemState::Done(_)) => {
hyperlog_core::log::ItemState::Done
}
Some(item_graph_item::ItemState::NotDone(_)) => {
hyperlog_core::log::ItemState::NotDone
}
None => hyperlog_core::log::ItemState::default(),
},
})
.await
.map_err(to_tonic_err)?;
Ok(Response::new(UpdateItemResponse {}))
}
}
fn to_native(from: &hyperlog_core::log::GraphItem) -> anyhow::Result<GraphItem> {
match from {
hyperlog_core::log::GraphItem::User(section)
| hyperlog_core::log::GraphItem::Section(section) => {
let mut root = HashMap::new();
for (key, value) in section.iter() {
root.insert(key.to_string(), to_native(value)?);
}
match from {
hyperlog_core::log::GraphItem::User(_) => Ok(GraphItem {
contents: Some(graph_item::Contents::User(UserGraphItem { items: root })),
}),
hyperlog_core::log::GraphItem::Section(_) => Ok(GraphItem {
contents: Some(graph_item::Contents::Section(SectionGraphItem {
items: root,
})),
}),
_ => {
todo!()
}
}
}
hyperlog_core::log::GraphItem::Item {
title,
description,
state,
} => Ok(GraphItem {
contents: Some(graph_item::Contents::Item(ItemGraphItem {
title: title.to_owned(),
description: description.to_owned(),
item_state: Some(match state {
hyperlog_core::log::ItemState::NotDone => {
item_graph_item::ItemState::NotDone(ItemStateNotDone {})
}
hyperlog_core::log::ItemState::Done => {
item_graph_item::ItemState::Done(ItemStateDone {})
}
}),
})),
}),
}
} }
// TODO: create more defined protobuf categories for errors // TODO: create more defined protobuf categories for errors

View File

@ -1,3 +1,5 @@
#![feature(map_try_insert)]
use std::{net::SocketAddr, sync::Arc}; use std::{net::SocketAddr, sync::Arc};
use crate::state::{SharedState, State}; use crate::state::{SharedState, State};

View File

@ -1,18 +1,23 @@
use hyperlog_core::log::GraphItem; use hyperlog_core::log::GraphItem;
use crate::{ use crate::{
services::get_available_roots::{self, GetAvailableRoots, GetAvailableRootsExt}, services::{
get_available_roots::{self, GetAvailableRoots, GetAvailableRootsExt},
get_graph::{GetGraph, GetGraphExt},
},
state::SharedState, state::SharedState,
}; };
pub struct Querier { pub struct Querier {
get_available_roots: GetAvailableRoots, get_available_roots: GetAvailableRoots,
get_graph: GetGraph,
} }
impl Querier { impl Querier {
pub fn new(get_available_roots: GetAvailableRoots) -> Self { pub fn new(get_available_roots: GetAvailableRoots, get_graph: GetGraph) -> Self {
Self { Self {
get_available_roots, get_available_roots,
get_graph,
} }
} }
@ -29,12 +34,20 @@ impl Querier {
Ok(Some(res.roots)) Ok(Some(res.roots))
} }
pub fn get( pub async fn get(
&self, &self,
root: &str, root: &str,
path: impl IntoIterator<Item = impl Into<String>>, path: impl IntoIterator<Item = impl Into<String>>,
) -> Option<GraphItem> { ) -> anyhow::Result<Option<GraphItem>> {
todo!() let graph = self
.get_graph
.execute(crate::services::get_graph::Request {
root: root.into(),
path: path.into_iter().map(|s| s.into()).collect(),
})
.await?;
Ok(Some(graph.item))
} }
} }
@ -44,6 +57,6 @@ pub trait QuerierExt {
impl QuerierExt for SharedState { impl QuerierExt for SharedState {
fn querier(&self) -> Querier { fn querier(&self) -> Querier {
Querier::new(self.get_available_roots_service()) Querier::new(self.get_available_roots_service(), self.get_graph_service())
} }
} }

View File

@ -1,5 +1,7 @@
pub mod create_item; pub mod create_item;
pub mod create_root; pub mod create_root;
pub mod create_section; pub mod create_section;
pub mod update_item;
pub mod get_available_roots; pub mod get_available_roots;
pub mod get_graph;

View File

@ -0,0 +1,360 @@
use std::collections::BTreeMap;
use hyperlog_core::log::{GraphItem, ItemState};
use serde::Deserialize;
use sqlx::types::Json;
use crate::state::SharedState;
use self::engine::Engine;
#[derive(Clone)]
pub struct GetGraph {
db: sqlx::PgPool,
}
pub struct Request {
pub root: String,
pub path: Vec<String>,
}
pub struct Response {
pub item: GraphItem,
}
#[derive(sqlx::FromRow)]
struct Root {
id: uuid::Uuid,
}
#[derive(Deserialize)]
struct Item {
title: String,
description: String,
state: ItemState,
}
#[derive(sqlx::FromRow, Debug)]
struct Node {
id: uuid::Uuid,
path: String,
item_type: String,
item_content: Option<Json<serde_json::Value>>,
}
impl GetGraph {
pub fn new(db: sqlx::PgPool) -> Self {
Self { db }
}
pub async fn execute(&self, req: Request) -> anyhow::Result<Response> {
let Root { id: root_id, .. } =
sqlx::query_as(r#"SELECT * FROM roots WHERE root_name = $1"#)
.bind(&req.root)
.fetch_one(&self.db)
.await?;
let nodes: Vec<Node> = sqlx::query_as(
r#"
SELECT
*
FROM
nodes
WHERE
root_id = $1
LIMIT
1000
"#,
)
.bind(root_id)
.fetch_all(&self.db)
.await?;
let item = self.build_graph(req.root, req.path, nodes)?;
Ok(Response { item })
}
fn build_graph(
&self,
root: String,
path: Vec<String>,
mut nodes: Vec<Node>,
) -> anyhow::Result<GraphItem> {
nodes.sort_by(|a, b| a.path.cmp(&b.path));
let mut engine = Engine::default();
engine.create_root(&root)?;
self.get_graph_items(&root, &mut engine, &nodes)?;
engine
.get(&root, &path.iter().map(|s| s.as_str()).collect::<Vec<_>>())
.ok_or(anyhow::anyhow!("failed to find a valid graph"))
.cloned()
}
fn get_graph_items(
&self,
root: &str,
engine: &mut Engine,
nodes: &Vec<Node>,
) -> anyhow::Result<()> {
for node in nodes {
if let Some(item) = self.get_graph_item(node) {
let path = node.path.split('.').collect::<Vec<_>>();
engine.create(root, &path, item)?;
}
}
Ok(())
}
fn get_graph_item(&self, node: &Node) -> Option<GraphItem> {
match node.item_type.as_str() {
"SECTION" => Some(GraphItem::Section(BTreeMap::default())),
"ITEM" => {
if let Some(content) = &node.item_content {
let item: Item = serde_json::from_value(content.0.clone()).ok()?;
Some(GraphItem::Item {
title: item.title,
description: item.description,
state: item.state,
})
} else {
None
}
}
_ => None,
}
}
}
pub trait GetGraphExt {
fn get_graph_service(&self) -> GetGraph;
}
impl GetGraphExt for SharedState {
fn get_graph_service(&self) -> GetGraph {
GetGraph::new(self.db.clone())
}
}
mod engine {
use std::{collections::BTreeMap, fmt::Display};
use anyhow::{anyhow, Context};
use hyperlog_core::log::{Graph, GraphItem, ItemState};
#[derive(Default)]
pub struct Engine {
graph: Graph,
}
impl Engine {
pub fn engine_from_str(input: &str) -> anyhow::Result<Self> {
let graph: Graph = serde_json::from_str(input)?;
Ok(Self { graph })
}
pub fn to_str(&self) -> anyhow::Result<String> {
serde_json::to_string_pretty(&self.graph).context("failed to serialize graph")
}
pub fn create_root(&mut self, root: &str) -> anyhow::Result<()> {
self.graph
.try_insert(root.to_string(), GraphItem::User(BTreeMap::default()))
.map_err(|_| anyhow!("entry was already found, aborting"))?;
Ok(())
}
pub fn create(&mut self, root: &str, path: &[&str], item: GraphItem) -> anyhow::Result<()> {
let graph = &mut self.graph;
let (last, items) = path.split_last().ok_or(anyhow!(
"path cannot be empty, must contain at least one item"
))?;
let root = graph
.get_mut(root)
.ok_or(anyhow!("root was missing a user, aborting"))?;
let mut current_item = root;
for section in items {
match current_item {
GraphItem::User(u) => match u.get_mut(section.to_owned()) {
Some(graph_item) => {
current_item = graph_item;
}
None => anyhow::bail!("path: {} section was not found", section),
},
GraphItem::Item { .. } => anyhow::bail!("path: {} was already found", section),
GraphItem::Section(s) => match s.get_mut(section.to_owned()) {
Some(graph_item) => {
current_item = graph_item;
}
None => anyhow::bail!("path: {} section was not found", section),
},
}
}
match current_item {
GraphItem::User(u) => {
u.insert(last.to_string(), item);
}
GraphItem::Section(s) => {
s.insert(last.to_string(), item);
}
GraphItem::Item { .. } => anyhow::bail!("cannot insert an item into an item"),
}
Ok(())
}
pub fn get(&self, root: &str, path: &[&str]) -> Option<&GraphItem> {
let root = self.graph.get(root)?;
root.get(path)
}
pub fn get_mut(&mut self, root: &str, path: &[&str]) -> Option<&mut GraphItem> {
let root = self.graph.get_mut(root)?;
root.get_mut(path)
}
pub fn take(&mut self, root: &str, path: &[&str]) -> Option<GraphItem> {
let root = self.graph.get_mut(root)?;
root.take(path)
}
pub fn section_move(
&mut self,
root: &str,
src_path: &[&str],
dest_path: &[&str],
) -> anyhow::Result<()> {
let src = self
.take(root, src_path)
.ok_or(anyhow!("failed to find source path"))?;
let dest = self
.get_mut(root, dest_path)
.ok_or(anyhow!("failed to find destination"))?;
let src_item = src_path
.last()
.ok_or(anyhow!("src path must have at least one item"))?;
match dest {
GraphItem::User(u) => {
u.try_insert(src_item.to_string(), src)
.map_err(|_e| anyhow!("key was already found, aborting: {}", src_item))?;
}
GraphItem::Section(s) => {
s.try_insert(src_item.to_string(), src)
.map_err(|_e| anyhow!("key was already found, aborting: {}", src_item))?;
}
GraphItem::Item { .. } => {
anyhow::bail!(
"failed to insert src at item, item doesn't support arbitrary items"
)
}
}
Ok(())
}
pub fn delete(&mut self, root: &str, path: &[&str]) -> anyhow::Result<()> {
self.take(root, path)
.map(|_| ())
.ok_or(anyhow!("item was not found"))
}
pub fn toggle_item(&mut self, root: &str, path: &[&str]) -> anyhow::Result<()> {
if let Some(item) = self.get_mut(root, path) {
match item {
GraphItem::Item { state, .. } => match state {
ItemState::NotDone => *state = ItemState::Done,
ItemState::Done => *state = ItemState::NotDone,
},
_ => {
anyhow::bail!("{}.{:?} is not an item", root, path)
}
}
}
Ok(())
}
pub fn update_item(
&mut self,
root: &str,
path: &[&str],
item: &GraphItem,
) -> anyhow::Result<()> {
if let Some((name, dest_last)) = path.split_last() {
if let Some(parent) = self.get_mut(root, dest_last) {
match parent {
GraphItem::User(s) | GraphItem::Section(s) => {
if let Some(mut existing) = s.remove(*name) {
match (&mut existing, item) {
(
GraphItem::Item {
title: ex_title,
description: ex_desc,
state: ex_state,
},
GraphItem::Item {
title,
description,
state,
},
) => {
ex_title.clone_from(title);
ex_desc.clone_from(description);
ex_state.clone_from(state);
let title = title.replace(".", "-");
s.insert(title, existing.clone());
}
_ => {
anyhow::bail!(
"path: {}.{} found is not an item",
root,
path.join(".")
)
}
}
}
}
GraphItem::Item { .. } => {
anyhow::bail!("cannot rename when item is placed in an item")
}
}
}
}
Ok(())
}
pub fn get_roots(&self) -> Option<Vec<String>> {
let items = self.graph.keys().cloned().collect::<Vec<_>>();
if items.is_empty() {
None
} else {
Some(items)
}
}
}
impl Display for Engine {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let output = serde_json::to_string_pretty(&self.graph).unwrap();
f.write_str(&output)
}
}
}

View File

@ -0,0 +1,107 @@
use hyperlog_core::log::ItemState;
use sqlx::types::Json;
use crate::state::SharedState;
#[derive(Clone)]
pub struct UpdateItem {
db: sqlx::PgPool,
}
pub struct Request {
pub root: String,
pub path: Vec<String>,
pub title: String,
pub description: String,
pub state: ItemState,
}
pub struct Response {}
#[derive(serde::Serialize)]
struct ItemContent {
pub title: String,
pub description: String,
pub state: ItemState,
}
#[derive(sqlx::FromRow)]
struct Root {
id: uuid::Uuid,
}
impl UpdateItem {
pub fn new(db: sqlx::PgPool) -> Self {
Self { db }
}
pub async fn execute(&self, req: Request) -> anyhow::Result<Response> {
let Root { id: root_id, .. } =
sqlx::query_as(r#"SELECT * FROM roots WHERE root_name = $1"#)
.bind(req.root)
.fetch_one(&self.db)
.await?;
let Root { id: node_id } = sqlx::query_as(
r#"
SELECT
id
FROM
nodes
WHERE
root_id = $1
AND path = $2
AND item_type = $3
"#,
)
.bind(root_id)
.bind(req.path.join("."))
.bind("ITEM")
.fetch_one(&self.db)
.await?;
let (_, rest) = req
.path
.split_last()
.ok_or(anyhow::anyhow!("expected path to have at least one item"))?;
let mut rest = rest.to_vec();
rest.push(req.title.replace(".", "-"));
let res = sqlx::query(
r#"
UPDATE
nodes
SET
item_content = $1,
path = $2
WHERE
id = $3
"#,
)
.bind(Json(ItemContent {
title: req.title,
description: req.description,
state: req.state,
}))
.bind(rest.join("."))
.bind(node_id)
.execute(&self.db)
.await?;
if res.rows_affected() != 1 {
anyhow::bail!("failed to update item");
}
Ok(Response {})
}
}
pub trait UpdateItemExt {
fn update_item_service(&self) -> UpdateItem;
}
impl UpdateItemExt for SharedState {
fn update_item_service(&self) -> UpdateItem {
UpdateItem::new(self.db.clone())
}
}

View File

@ -104,7 +104,28 @@ impl Commander {
description, description,
state, state,
} => { } => {
todo!() let channel = self.channel.clone();
let mut client = GraphClient::new(channel);
let request = tonic::Request::new(UpdateItemRequest {
root,
path,
item: Some(ItemGraphItem {
title,
description,
item_state: Some(match state {
hyperlog_core::log::ItemState::NotDone => {
item_graph_item::ItemState::NotDone(ItemStateNotDone {})
}
hyperlog_core::log::ItemState::Done => {
item_graph_item::ItemState::Done(ItemStateDone {})
}
}),
}),
});
let response = client.update_item(request).await?;
let res = response.into_inner();
// self.engine.update_item( // self.engine.update_item(
// &root, // &root,
// &path.iter().map(|p| p.as_str()).collect::<Vec<_>>(), // &path.iter().map(|p| p.as_str()).collect::<Vec<_>>(),

View File

@ -4,6 +4,7 @@ pub mod batch;
pub mod create_item; pub mod create_item;
pub mod create_section; pub mod create_section;
pub mod open_update_item_dialog;
pub mod toggle_item; pub mod toggle_item;
pub mod update_graph; pub mod update_graph;
pub mod update_item; pub mod update_item;

View File

@ -0,0 +1,61 @@
use itertools::Itertools;
use crate::{
models::{IOEvent, Msg},
querier::Querier,
state::SharedState,
};
pub struct OpenUpdateItemDialogCommand {
querier: Querier,
}
impl OpenUpdateItemDialogCommand {
pub fn new(querier: Querier) -> Self {
Self { querier }
}
pub fn command(self, root: &str, path: Vec<String>) -> super::Command {
let root = root.to_string();
super::Command::new(|dispatch| {
tokio::spawn(async move {
dispatch.send(Msg::OpenUpdateItemDialog(IOEvent::Initialized));
let item = match self.querier.get_async(&root, path).await {
Ok(item) => match item {
Some(item) => {
dispatch.send(Msg::OpenUpdateItemDialog(IOEvent::Success(())));
item
}
None => {
dispatch.send(Msg::OpenUpdateItemDialog(IOEvent::Failure(
"failed to find a valid item for path".into(),
)));
return;
}
},
Err(e) => {
dispatch.send(Msg::OpenUpdateItemDialog(IOEvent::Failure(e.to_string())));
return;
}
};
dispatch.send(Msg::OpenEditItemDialog { item });
});
None
})
}
}
pub trait OpenUpdateItemDialogCommandExt {
fn open_update_item_dialog_command(&self) -> OpenUpdateItemDialogCommand;
}
impl OpenUpdateItemDialogCommandExt for SharedState {
fn open_update_item_dialog_command(&self) -> OpenUpdateItemDialogCommand {
OpenUpdateItemDialogCommand::new(self.querier.clone())
}
}

View File

@ -7,8 +7,8 @@ use crate::{
command_parser::Commands, command_parser::Commands,
commands::{ commands::{
batch::BatchCommand, create_section::CreateSectionCommandExt, batch::BatchCommand, create_section::CreateSectionCommandExt,
toggle_item::ToggleItemCommandExt, update_graph::UpdateGraphCommandExt, Command, open_update_item_dialog::OpenUpdateItemDialogCommandExt, toggle_item::ToggleItemCommandExt,
IntoCommand, update_graph::UpdateGraphCommandExt, Command, IntoCommand,
}, },
components::movement_graph::GraphItemType, components::movement_graph::GraphItemType,
models::{IOEvent, Msg}, models::{IOEvent, Msg},
@ -272,13 +272,11 @@ impl<'a> GraphExplorer<'a> {
todo!("cannot edit section at the moment") todo!("cannot edit section at the moment")
} }
GraphItemType::Item { .. } => { GraphItemType::Item { .. } => {
if let Some(item) = self.state.querier.get(&self.inner.root, path) { batch.with(
if let GraphItem::Item { .. } = item { self.state
return Ok(Some( .open_update_item_dialog_command()
Msg::OpenEditItemDialog { item }.into_command(), .command(&self.inner.root, path),
)); );
}
}
} }
} }
} }

View File

@ -26,6 +26,8 @@ pub enum Msg {
ItemUpdated(IOEvent<()>), ItemUpdated(IOEvent<()>),
SectionCreated(IOEvent<()>), SectionCreated(IOEvent<()>),
ItemToggled(IOEvent<()>), ItemToggled(IOEvent<()>),
OpenUpdateItemDialog(IOEvent<()>),
} }
#[derive(Debug)] #[derive(Debug)]

414
demo.cast
View File

@ -1,117 +1,297 @@
{"version": 2, "width": 121, "height": 31, "timestamp": 1715516731, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}} {"version": 2, "width": 123, "height": 33, "timestamp": 1715717726, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}}
[0.397252, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] [0.289876, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
[0.473223, "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[0mis \u001b[1;38;5;208m📦 \u001b[0m\u001b[1;38;5;208mv0.1.0\u001b[0m \u001b[1;31mrs \u001b[0m\r\n\u001b[38;2;255;153;102m\u001b[0m \u001b[K"] [0.363463, "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[0mis \u001b[1;38;5;208m📦 \u001b[0m\u001b[1;38;5;208mv0.1.0\u001b[0m \u001b[1;31mrs \u001b[0m\r\n\u001b[38;2;255;153;102m\u001b[0m \u001b[K"]
[0.474257, "o", "\u001b[6 q"] [0.364423, "o", "\u001b[6 q"]
[0.475215, "o", "\u001b[6 q"] [0.365312, "o", "\u001b[6 q"]
[0.475414, "o", "\u001b[?2004h"] [0.365501, "o", "\u001b[?2004h"]
[1.022637, "o", "c"] [1.080115, "o", "c"]
[1.024869, "o", "\b\u001b[32mc\u001b[39m"] [1.082107, "o", "\b\u001b[32mc\u001b[39m"]
[1.076182, "o", "\b\u001b[32mc\u001b[39m\u001b[90margo run\u001b[39m\u001b[8D"] [1.101402, "o", "\b\u001b[32mc\u001b[39m\u001b[90margo run --release -- --backend remote\u001b[39m\u001b[38D"]
[1.154757, "o", "\b\u001b[32mc\u001b[32ma\u001b[39m"] [1.169782, "o", "\b\u001b[32mc\u001b[32ma\u001b[39m"]
[1.182149, "o", "\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"] [1.189287, "o", "\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"]
[1.226479, "o", "\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31ma\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"] [1.249073, "o", "\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31ma\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"]
[1.394047, "o", "\b\u001b[1m\u001b[31mr\u001b[1m\u001b[31mg\u001b[0m\u001b[39m"] [1.43174, "o", "\b\u001b[1m\u001b[31mr\u001b[1m\u001b[31mg\u001b[0m\u001b[39m"]
[1.459467, "o", "\b\u001b[1m\u001b[31mg\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"] [1.578255, "o", "\b\u001b[1m\u001b[31mg\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"]
[1.46169, "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.580674, "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.540599, "o", "\b\u001b[32mo\u001b[32m \u001b[39m"] [2.050954, "o", "\u001b[39m \u001b[39mr\u001b[39mu\u001b[39mn\u001b[39m \u001b[39m-\u001b[39m-\u001b[39mr\u001b[39me\u001b[39ml\u001b[39me\u001b[39ma\u001b[39ms\u001b[39me\u001b[39m \u001b[39m-\u001b[39m-\u001b[39m \u001b[39m-\u001b[39m-\u001b[39mb\u001b[39ma\u001b[39mc\u001b[39mk\u001b[39me\u001b[39mn\u001b[39md\u001b[39m \u001b[39mr\u001b[39me\u001b[39mm\u001b[39mo\u001b[39mt\u001b[39me"]
[1.542779, "o", "\b\b\u001b[32mo\u001b[39m\u001b[39m "] [2.553848, "o", "\u001b[?1l\u001b>"]
[1.672564, "o", "\u001b[39mr"] [2.554218, "o", "\u001b[?2004l"]
[1.676323, "o", "\b\u001b[4mr\u001b[24m"] [2.56397, "o", "\u001b[0 q"]
[1.755892, "o", "\b\u001b[4mr\u001b[39m\u001b[4mu\u001b[24m"] [2.564341, "o", "\r\r\n"]
[1.759768, "o", "\b\b\u001b[24mr\u001b[24mu"] [2.891881, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `std::net::SocketAddr`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog/src/cli.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 std::net::SocketAddr;\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"]
[1.917183, "o", "\u001b[39mn"] [2.892626, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `GraphItem`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_item.rs:1:26\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 hyperlog_core::log::{GraphItem, ItemState};\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"]
[2.330553, "o", "\u001b[?1l\u001b>"] [2.892638, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `hyperlog_core::log::GraphItem`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_section.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 hyperlog_core::log::GraphItem;\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"]
[2.330721, "o", "\u001b[?2004l"] [2.892645, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused imports: `GraphItem`, `ItemState`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_available_roots.rs:1:26\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 hyperlog_core::log::{GraphItem, ItemState};\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[33m^^^^^^^^^\u001b[0m\r\n\r\n"]
[2.335055, "o", "\u001b[0 q"] [2.892769, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `sqlx::types::Json`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_available_roots.rs:2: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;12m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse sqlx::types::Json;\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: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:102:17\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;12m102\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root,\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: try ignoring the field: `root: _`\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 variab"]
[2.335254, "o", "\r\r\n"] [2.892853, "o", "le: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:103:17\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;12m103\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m path,\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: try ignoring the field: `path: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `title`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:104:17\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;12m104\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m title,\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: try ignoring the field: `title: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `description`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:105:17\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;"]
[2.784648, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `super::IntoCommand`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/commands/update_graph.rs:9: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;12m9\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse super::IntoCommand;\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: `crate::shared_engine::SharedEngine`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/querier/remote.rs:8: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;12m8\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse crate::shared_engine::SharedEngine;\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"] [2.89292, "o", "12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m105\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m description,\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: try ignoring the field: `description: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `state`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:106:17\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;12m106\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m state,\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: try ignoring the field: `state: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:108:35\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;12m108\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::ToggleItem { root, p"]
[2.784687, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: struct `Querier` is never constructed\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-tui/src/querier/remote.rs:10:12\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;12m10\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct Querier {\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: associated items `new`, `get_available_roots`, and `get` are 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/querier/remote.rs:15:18\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;12m14\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mimpl Querier {\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;12massociated items in this implementation\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m15\u001b[0m\u001b[0m \u001b"] [2.892978, "o", "ath } => todo!(),\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: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:108:41\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;12m108\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::ToggleItem { root, path } => todo!(),\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: try ignoring the field: `path: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:109:29\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;12m109\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\u001b[0m\r\n\u001b[0m "]
[2.78477, "o", "[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn new() -> anyhow::Result<Self> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m23\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn get_available_roots(&self) -> Option<Vec<String>> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m28\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn get(\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"] [2.893044, "o", "\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: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `src`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:109:35\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;12m109\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\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: try ignoring the field: `src: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `dest`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:109:40\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;12m109\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m "]
[2.784848, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: function `transform_proto_to_local` 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/querier/remote.rs:63:4\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;12m63\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mfn transform_proto_to_local(input: &hyperlog_protos::hyperlog::GraphItem) -> Option<GraphItem> {\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"] [2.89314, "o", " \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: try ignoring the field: `dest: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `req`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_available_roots.rs:26:33\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;12m26\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn execute(&self, req: Request) -> anyhow::Result<Response> {\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: `_req`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: field `root_name` is never read\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_item.rs:31: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;12m29\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mstruct Root {\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[3"]
[2.785555, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `collections::HashMap`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/external_grpc.rs:1:11\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 std::{collections::HashMap, net::SocketAddr};\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: `sync::Arc`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/external_http.rs:1:28\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 std::{net::SocketAddr, sync::Arc};\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"] [2.893227, "o", "8;5;12m----\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mfield in this struct\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m30\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m id: uuid::Uuid,\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m31\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root_name: String,\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: field `id` is never read\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_item.rs:36: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;12m35\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mstruct Section {\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;12mfield in this struct\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m36\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m id: uuid::Uuid,\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0"]
[2.785608, "o", "\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `State`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/external_http.rs:6:33\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;12m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse crate::state::{SharedState, State};\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"] [2.893323, "o", "m \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: field `root_name` is never read\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_section.rs:19: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;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mstruct Root {\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;12mfield in this struct\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m id: uuid::Uuid,\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m19\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root_name: String,\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: field `id` is never read\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_graph.rs:37: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;12m36\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mstruct Node {\u001b[0m\r\n\u001b[0m \u001b"]
[2.785644, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `sync::Arc`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/internal_http.rs:1:28\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 std::{net::SocketAddr, sync::Arc};\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: `State`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/internal_http.rs:6:33\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;12m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse crate::state::{SharedState, State};\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: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:64:37\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;12m64\u001b[0m\u001b[0"] [2.893379, "o", "[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;12mfield in this struct\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m id: uuid::Uuid,\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: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: multiple associated items are never used\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_graph.rs:152:16\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;12m151\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m impl Engine {\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;12massociated items in this implementation\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m152\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b"]
[2.785682, "o", "m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn create_root(&self, root: &str) -> anyhow::Result<()> {\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: `_root`\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"] [2.893458, "o", "[0m pub fn engine_from_str(input: &str) -> anyhow::Result<Self> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m158\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn to_str(&self) -> anyhow::Result<String> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m219\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn get_mut(&mut self, root: &str, path: &[&str]) -> Option<&mut GraphItem> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m225\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn take(&mut self, root: &str, path: &[&str]) -> Option<GraphItem> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m231\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m"]
[2.786889, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:68:32\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;12m68\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn create(&self, root: &str, path: &[&str], item: GraphItem) -> anyhow::Result<()> {\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: `_root`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:68:44\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;12m68\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn create(&self, root: &str, path: &[&str], item: GraphItem) -> anyhow::Result<()> {\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"] [2.893531, "o", "\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn section_move(\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m268\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn delete(&mut self, root: &str, path: &[&str]) -> anyhow::Result<()> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m274\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn toggle_item(&mut self, root: &str, path: &[&str]) -> anyhow::Result<()> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m290\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn update_item(\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m341\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m "]
[2.786962, "o", "[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_path`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `item`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:68:59\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;12m68\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn create(&self, root: &str, path: &[&str], item: GraphItem) -> anyhow::Result<()> {\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: `_item`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:72:29\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;12m72\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn get(&self, root: &str, path: &[&str]) -> Option<GraphItem> {\u001b[0m\r\n\u001b[0m "] [2.893617, "o", " pub fn get_roots(&self) -> Option<Vec<String>> {\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"]
[2.787003, "o", " \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: `_root`\u001b[0m\r\n\r\n"] [2.894153, "o", "\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m:\u001b[0m `hyperlog` (bin \"hyperlog\") generated 1 warning (run `cargo fix --bin \"hyperlog\"` to apply 1 suggestion)\r\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m:\u001b[0m `hyperlog-server` (lib) generated 20 warnings (run `cargo fix --lib -p hyperlog-server` to apply 4 suggestions)\r\n\u001b[1m\u001b[32m Finished\u001b[0m `release` profile [optimized] target(s) in 0.28s\r\n"]
[2.787023, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:72:41\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;12m72\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn get(&self, root: &str, path: &[&str]) -> Option<GraphItem> {\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: `_path`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:78: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;12m78\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root: &str,\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: `_root`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1"] [2.903509, "o", "\u001b[1m\u001b[32m Running\u001b[0m `target/release/hyperlog --backend remote`\r\n"]
[2.787072, "o", "m: unused variable: `src_path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:79: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;12m79\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m src_path: &[&str],\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: `_src_path`\u001b[0m\r\n\r\n"] [3.072772, "o", "\u001b[?1049h"]
[2.787117, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `dest_path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:80: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;12m80\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m dest_path: &[&str],\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: `_dest_path`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:85:32\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;12m85\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn delete(&self, root: &str, path: &[&str]) -> anyhow::Result<()> {\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: `_root`\u001b[0m\r\n\r\n"] [3.088809, "o", "\u001b[1;1H\u001b[38;5;2mhyperlog\u001b[2;1H\u001b[39m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[3;1Hsomething\u001b[3;11H~\u001b[3;13H(items:\u001b[3;21H2)\u001b[4;5Hi-can-do-this\u001b[4;19H~\u001b[4;21H(items:\u001b[4;29H1)\u001b[5;5Hsomething\u001b[5;15H~\u001b[5;17H(items:\u001b[5;25H3)\u001b[33;2H--\u001b[33;5HVIEW\u001b[33;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787166, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:85:44\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;12m85\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn delete(&self, root: &str, path: &[&str]) -> anyhow::Result<()> {\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: `_path`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:91: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;12m91\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root: &str,\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: `_root`\u001b[0m\r\n\r\n"] [3.99447, "o", "\u001b[3;1H\u001b[38;2;255;165;0msomething ~ (items: 2)\u001b[5;5H\u001b[39m [ ] with-\u001b[5;23H \u001b[5;25H \u001b[6;5Hsomething\u001b[6;15H~\u001b[6;17H(items:\u001b[6;25H3)\u001b[7;9H[\u001b[7;11H]\u001b[7;13Hand-another\u001b[8;9H\u001b[38;5;8m...\u001b[9;9H\u001b[39m[\u001b[9;11H]\u001b[9;13Hitem\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787186, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:92: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;12m92\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m path: &[&str],\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: `_path`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `item`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:93: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;12m93\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m item: &GraphItem,\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: `_item`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unreachable expression\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hype"] [4.842467, "o", "\u001b[3;1Hsomething ~ (items: 2)\u001b[5;5Hsomething ~ (\u001b[5;23H:\u001b[5;25H3)\u001b[6;5H \u001b[6;15H \u001b[6;17H \u001b[6;25H \u001b[7;9H \u001b[7;11H \u001b[7;13H \u001b[8;9H \u001b[9;9H \u001b[9;11H \u001b[9;13H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787247, "o", "rlog-server/src/commands.rs:61: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;12m40\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;12m/\u001b[0m\u001b[0m \u001b[0m\u001b[0m match cmd {\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m41\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;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::CreateRoot { root } => todo!(),\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m42\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;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::CreateSection { root, path } => todo!(),\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m43\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;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::CreateItem {\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m58\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;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m59\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;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m }\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b["] [5.187689, "o", "\u001b[33;1H: \u001b[33;5H \u001b[33;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787303, "o", "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;12many code following this `match` expression is unreachable, as all arms diverge\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m60\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m61\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Ok(())\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[33munreachable expression\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(unreachable_code)]` on by default\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:41:35\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;12m41\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::CreateRoot { root } => todo!(),\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[33mh"] [5.37781, "o", "\u001b[33;2Hc\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.78736, "o", "elp: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:42:38\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;12m42\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::CreateSection { root, path } => todo!(),\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: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:42:44\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;12m42\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::CreateSection { root, path } => todo!(),\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: try ignoring the field:"] [5.583938, "o", "\u001b[33;3Hs\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787393, "o", " `path: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:44:17\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;12m44\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root,\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: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:45:17\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;12m45\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m path,\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: try ignoring the field: `path: _`\u001b[0m\r\n\r\n"] [5.744397, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787449, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `title`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:46:17\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;12m46\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m title,\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: try ignoring the field: `title: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `description`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:47:17\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;12m47\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m description,\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: try ignoring the field: `description: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `state`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-serv"] [6.118579, "o", "\u001b[33;5Hi\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787505, "o", "er/src/commands.rs:48:17\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;12m48\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m state,\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: try ignoring the field: `state: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:51:17\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;12m51\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root,\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: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:52:17\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;12m52\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pa"] [6.262015, "o", "\u001b[33;6Ht\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787558, "o", "th,\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: try ignoring the field: `path: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `title`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:53:17\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;12m53\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m title,\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: try ignoring the field: `title: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `description`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:54:17\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;12m54\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m description,\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: try ignoring t"] [7.099969, "o", "\u001b[33;7H-\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787613, "o", "he field: `description: _`\u001b[0m\r\n\r\n"] [7.211383, "o", "\u001b[33;8Hw\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787664, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `state`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:55:17\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;12m55\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m state,\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: try ignoring the field: `state: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:57:35\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;12m57\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::ToggleItem { root, path } => todo!(),\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: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b["] [7.326906, "o", "\u001b[33;9Ho\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787728, "o", "0m\u001b[0mcrates/hyperlog-server/src/commands.rs:57:41\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;12m57\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::ToggleItem { root, path } => todo!(),\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: try ignoring the field: `path: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:58:29\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;12m58\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\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: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `src`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:58:"] [7.40033, "o", "\u001b[33;10Hr\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787746, "o", "35\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;12m58\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\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: try ignoring the field: `src: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `dest`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:58:40\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;12m58\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\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: try ignoring the field: `dest: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/querier.rs:18:9\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\r\n\u001b[0"] [7.546151, "o", "\u001b[33;11Hk\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787805, "o", "m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root: &str,\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: `_root`\u001b[0m\r\n\r\n"] [7.670118, "o", "\u001b[33;12Hs\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787875, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/querier.rs:19: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;12m19\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m path: impl IntoIterator<Item = impl Into<String>>,\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: `_path`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: field `querier` is never read\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/external_grpc.rs:15: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;12m14\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct Server {\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;12mfield in this struct\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m15\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m querier: Querier,\u001b[0m\r\n\u001b[0m \u001b[0m"] [7.876666, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787915, "o", "\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: enum `Command` is never used\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:3:10\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[0mpub enum Command {\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: struct `Commander` is never constructed\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:36:12\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;12m36\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct Commander {}\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: multiple methods are never used\u001b[0m\r\n\u001b[0m \u001b"] [7.877584, "o", "\u001b[33;1H \u001b[33;5H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787946, "o", "[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:39:12\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;12m38\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mimpl Commander {\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;12mmethods in this implementation\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m39\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn execute(&self, cmd: Command) -> anyhow::Result<()> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m64\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn create_root(&self, root: &str) -> anyhow::Result<()> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m68\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn create(&self, root: &str, path: &[&str], item: GraphItem) -> anyhow::Result<()"] [7.878029, "o", "\u001b[33;2H--\u001b[33;5HVIEW\u001b[33;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.787983, "o", "> {\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[1m\u001b[38;5;12m...\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 pub async fn get(&self, root: &str, path: &[&str]) -> Option<GraphItem> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m76\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn section_move(\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m85\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn delete(&self, root: &str, path: &[&str]) -> anyhow::Result<()> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m89\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn update_item(\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m "] [7.878496, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.788022, "o", " \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: methods `get_available_roots` and `get` are never used\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/querier.rs:12:12\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;12m7\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mimpl Querier {\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;12mmethods in this implementation\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m12\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn get_available_roots(&self) -> Option<Vec<String>> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn get(\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"] [7.891922, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.788671, "o", "\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m:\u001b[0m `hyperlog-tui` (lib) generated 5 warnings (run `cargo fix --lib -p hyperlog-tui` to apply 2 suggestions)\r\n"] [7.892175, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.78869, "o", "\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m:\u001b[0m `hyperlog-server` (lib) generated 45 warnings (run `cargo fix --lib -p hyperlog-server` to apply 5 suggestions)\r\n"] [7.901476, "o", "\u001b[3;1Hit-works ~ (items: 0) \u001b[4;1Hsomething ~ (items:\u001b[4;21H2) \u001b[4;29H \u001b[5;5Hi-can-do-this ~ (items:\u001b[5;29H1)\u001b[6;5Hsomething\u001b[6;15H~\u001b[6;17H(items:\u001b[6;25H3)\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.788846, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `std::net::SocketAddr`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog/src/cli.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 std::net::SocketAddr;\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"] [7.901907, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.788885, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `state`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog/src/cli.rs:4:50\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 hyperlog_tui::{commander, core_state::State, state};\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"] [8.476726, "o", "\u001b[3;1H\u001b[38;2;255;165;0mit-works ~ (items: 0)\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.789341, "o", "\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m:\u001b[0m `hyperlog` (bin \"hyperlog\") generated 2 warnings (run `cargo fix --bin \"hyperlog\"` to apply 2 suggestions)\r\n"] [9.1102, "o", "\u001b[1;10H~\u001b[1;12Hcreate\u001b[1;19Hitem\u001b[3;1H\u001b[38;5;8mpath: kjuulh.it-works \u001b[4;1H \u001b[5;1H\u001b[39m┌title────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[6;1H│\u001b[38;5;0m\u001b[48;5;5m \u001b[6;5H\u001b[39m\u001b[49m \u001b[6;15H \u001b[6;17H \u001b[6;25H \u001b[6;123H│\u001b[7;1H└───────────────────────────────────────────────────────────────────────────────────"]
[2.789362, "o", "\u001b[1m\u001b[32m Finished\u001b[0m `dev` profile [unoptimized + debuginfo] target(s) in 0.40s\r\n"] [9.110401, "o", "──────────────────────────────────────┘\u001b[8;1H\u001b[38;5;8m┌description──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[9;1H│ │\u001b[10;1H└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[33;5H\u001b[39mEDIT\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?"]
[2.797925, "o", "\u001b[1m\u001b[32m Running\u001b[0m `target/debug/hyperlog`\r\n"] [9.110539, "o", "25l"]
[3.060545, "o", "\u001b[?1049h"] [9.875008, "o", "\u001b[6;2HI\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[3.063887, "o", "\u001b[1;1H\u001b[38;5;2mhyperlog\u001b[2;1H\u001b[39m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[3;1Hsomething\u001b[3;11H~\u001b[3;13H(items:\u001b[3;21H3)\u001b[4;5Ha\u001b[4;7H~\u001b[4;9H(items:\u001b[4;17H12)\u001b[5;5H\u001b[38;5;8m...\u001b[6;5H\u001b[39mc\u001b[6;7H~\u001b[6;9H(items:\u001b[6;17H2)\u001b[31;2H--\u001b[31;5HVIEW\u001b[31;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [9.979676, "o", "\u001b[6;3H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[3.594095, "o", "\u001b[3;1H\u001b[38;2;255;165;0msomething ~ (items: 3)\u001b[5;5H\u001b[39m \u001b[5;9H[\u001b[5;11H]\u001b[5;13H123\u001b[6;5H \u001b[6;7H \u001b[6;9H\u001b[38;5;8m...\u001b[39m \u001b[6;17H \u001b[7;9H[\u001b[7;11H]\u001b[7;13Hsomething-else\u001b[9;5Hb\u001b[9;7H~\u001b[9;9H(items:\u001b[9;17H0)\u001b[10;5Hc\u001b[10;7H~\u001b[10;9H(items:\u001b[10;17H2)\u001b[11;9H[\u001b[11;11H]\u001b[11;13Hitem\u001b[12;9H[\u001b[12;11H]\u001b[12;13Hitem-a\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [10.159581, "o", "\u001b[6;4Hc\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[3.752409, "o", "\u001b[3;1Hsomething ~ (items: 3)\u001b[4;5H\u001b[38;2;255;165;0ma ~ (items: 12)\u001b[6;9H\u001b[39m[ ]\u001b[6;13Ha\u001b[7;13Hb \u001b[8;9H[\u001b[8;11H]\u001b[8;13Hblablabla\u001b[9;5H \u001b[9;7H \u001b[9;9H[ ] c \u001b[9;17H \u001b[10;5H \u001b[10;7H \u001b[10;9H[ ] soe\u001b[10;17H \u001b[11;13Hso\u001b[11;16Hsoe\u001b[12;13Hsome \u001b[13;9H[\u001b[13;11H]\u001b[13;13Hsome-item\u001b[14;9H[\u001b[14;11H]\u001b[14;13Hsome-more\u001b[15;9H[\u001b[15;11H]\u001b[15;13Hsomething\u001b[16;9H[\u001b[16;11H]\u001b[16;13Hsomething-else\u001b[18;5Hb\u001b[18;7H~\u001b[18;9H(items:\u001b[18;17H0)\u001b[19;5Hc\u001b[19;7H~\u001b[19;9H(items:\u001b[19;17H2)\u001b[20;9H[\u001b[20;11H]\u001b[20;13Hitem\u001b[21;9H[\u001b[21;11H]\u001b[21;13Hitem-a\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [10.224824, "o", "\u001b[6;5Ha\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[4.485898, "o", "\u001b[1;10H~\u001b[1;12Hcreate\u001b[1;19Hitem\u001b[3;1H\u001b[38;5;8mpath: kjuulh.something.a \u001b[4;1H \u001b[5;1H\u001b[39m┌title──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[6;1H│\u001b[38;5;0m\u001b[48;5;5m \u001b[6;9H\u001b[39m\u001b[49m \u001b[6;11H \u001b[6;13H \u001b[6;121H│\u001b[7;1H└──────────────────────────────────────────────────────────────────────────────────────────────"] [10.344486, "o", "\u001b[6;6Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[4.486122, "o", "─────────────────────────┘\u001b[8;1H\u001b[38;5;8m┌description────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[9;1H│ │\u001b[10;1H└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[11;9H\u001b[39m \u001b[11;11H \u001b[11;13H \u001b[12;9H \u001b[12;11H \u001b[12;13H \u001b[13;9H \u001b[13;11H \u001b[13;13"] [10.424478, "o", "\u001b[6;7H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[4.486212, "o", "H \u001b[14;9H \u001b[14;11H \u001b[14;13H \u001b[15;9H \u001b[15;11H \u001b[15;13H \u001b[16;9H \u001b[16;11H \u001b[16;13H \u001b[18;5H \u001b[18;7H \u001b[18;9H \u001b[18;17H \u001b[19;5H \u001b[19;7H \u001b[19;9H \u001b[19;17H \u001b[20;9H \u001b[20;11H \u001b[20;13H \u001b[21;9H \u001b[21;11H \u001b[21;13H \u001b[31;5HEDIT\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [10.616037, "o", "\u001b[6;8Ha\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.196213, "o", "\u001b[6;2H1\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [10.717012, "o", "\u001b[6;9Hd\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.295854, "o", "\u001b[6;3H2\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [10.867539, "o", "\u001b[6;10Hd\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.388608, "o", "\u001b[6;4H3\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [10.965244, "o", "\u001b[6;11H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.57657, "o", "\u001b[6;5H4\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [11.038338, "o", "\u001b[6;12Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.766366, "o", "\u001b[6;6H \u001b[31;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [11.146079, "o", "\u001b[6;13Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.123843, "o", "\u001b[31;1H: \u001b[31;5H \u001b[31;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [11.224729, "o", "\u001b[6;14He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.240594, "o", "\u001b[31;2Hw\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [11.298028, "o", "\u001b[6;15Hm\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.311588, "o", "\u001b[31;3Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [11.493598, "o", "\u001b[6;16Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.44437, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [11.859838, "o", "\u001b[6;17H \u001b[33;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.45024, "o", "\u001b[1;10H \u001b[1;12H \u001b[1;19H \u001b[3;1Hsomething ~ (items: 3) \u001b[4;1H \u001b[38;2;255;165;0ma ~ (items: 12)\u001b[39m \u001b[5;1H [ ] 123 \u001b[6;1H \u001b[6;9H[\u001b[6;11H]\u001b[6;13Ha\u001b[6;121H \u001b[7;1H [ ] b \u001b[8;1H [ ] blablabla \u001b[9;1H [ ] c \u001b[10;1H [ ] soe \u001b[11;9H[\u001b[11;11H]\u001b[11;13Hsoesoe\u001b[12;9"] [12.18879, "o", "\u001b[33;1H: \u001b[33;5H \u001b[33;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.450339, "o", "H[\u001b[12;11H]\u001b[12;13Hsome\u001b[13;9H[\u001b[13;11H]\u001b[13;13Hsome-item\u001b[14;9H[\u001b[14;11H]\u001b[14;13Hsome-more\u001b[15;9H[\u001b[15;11H]\u001b[15;13Hsomething\u001b[16;9H[\u001b[16;11H]\u001b[16;13Hsomething-else\u001b[18;5Hb\u001b[18;7H~\u001b[18;9H(items:\u001b[18;17H0)\u001b[19;5Hc\u001b[19;7H~\u001b[19;9H(items:\u001b[19;17H2)\u001b[20;9H[\u001b[20;11H]\u001b[20;13Hitem\u001b[21;9H[\u001b[21;11H]\u001b[21;13Hitem-a\u001b[31;1H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [12.27651, "o", "\u001b[33;2Hw\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.454484, "o", "\u001b[31;2H--\u001b[31;5HVIEW\u001b[31;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [12.348568, "o", "\u001b[33;3Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.458183, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [12.518587, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.458402, "o", "\u001b[4;18H\u001b[38;2;255;165;0m3\u001b[6;13H\u001b[39m1234\u001b[7;13Ha\u001b[8;14H \u001b[9;13Hblablabla\u001b[10;13Hc \u001b[11;16H \u001b[12;15Hesoe\u001b[13;17H \u001b[14;18Hitem\u001b[15;17H-more\u001b[16;22H \u001b[17;9H[\u001b[17;11H]\u001b[17;13Hsomething-else\u001b[18;5H \u001b[18;7H \u001b[18;9H \u001b[18;17H \u001b[19;5Hb\u001b[19;17H0\u001b[20;5Hc\u001b[20;7H~\u001b[20;9H(items: 2)\u001b[21;17H \u001b[22;9H[\u001b[22;11H]\u001b[22;13Hitem-a\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [12.519161, "o", "\u001b[1;10H \u001b[1;12H \u001b[1;19H \u001b[3;1H\u001b[38;2;255;165;0mit-works ~ (items: 0)\u001b[39m \u001b[4;1Hsomething ~ (items: 2) \u001b[5;1H i-can-do-this ~ (items: 1) \u001b[6;1H \u001b[6;4H something ~ (items:\u001b[6;25H3)\u001b[6;123H \u001b[7;1H \u001b[8;1H \u001b[9;1H \u001b[10;1H \u001b[33;1H \u001b[39"]
[8.141045, "o", "\u001b[1;10H~\u001b[1;12Hcreate\u001b[1;19Hitem\u001b[3;1H\u001b[38;5;8mpath: kjuulh.something.a \u001b[4;1H \u001b[5;1H\u001b[39m┌title──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[6;1H│\u001b[38;5;0m\u001b[48;5;5m \u001b[6;9H\u001b[39m\u001b[49m \u001b[6;11H \u001b[6;13H \u001b[6;121H│\u001b[7;1H└─────────────────────────────────────────────────────────────────────────────────────────────"] [12.519414, "o", "m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.141217, "o", "──────────────────────────┘\u001b[8;1H\u001b[38;5;8m┌description────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[9;1H│ │\u001b[10;1H└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[11;9H\u001b[39m \u001b[11;11H \u001b[11;13H \u001b[12;9H \u001b[12;11H \u001b[12;13H \u001b[13;9H \u001b[13;11H \u001b[13;"] [12.51976, "o", "\u001b[33;2H--\u001b[33;5HVIEW\u001b[33;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.141268, "o", "13H \u001b[14;9H \u001b[14;11H \u001b[14;13H \u001b[15;9H \u001b[15;11H \u001b[15;13H \u001b[16;9H \u001b[16;11H \u001b[16;13H \u001b[17;9H \u001b[17;11H \u001b[17;13H \u001b[19;5H \u001b[19;7H \u001b[19;9H \u001b[19;17H \u001b[20;5H \u001b[20;7H \u001b[20;9H \u001b[20;17H \u001b[21;9H \u001b[21;11H \u001b[21;13H \u001b[22;9H \u001b[22;11H \u001b[22;13H \u001b[31;5HEDIT\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [12.520255, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.973867, "o", "\u001b[6;2H1\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [12.542732, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.061728, "o", "\u001b[6;3H2\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [12.542941, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.142519, "o", "\u001b[6;4H3\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [12.552336, "o", "\u001b[3;20H\u001b[38;2;255;165;0m1\u001b[4;1H\u001b[39m [ ] I-can-add-items\u001b[5;5H \u001b[5;19H \u001b[5;21H \u001b[5;29H \u001b[6;1Hsomething ~ (items: 2) \u001b[6;25H \u001b[7;5Hi-can-do-this\u001b[7;19H~\u001b[7;21H(items:\u001b[7;29H1)\u001b[8;5Hsomething\u001b[8;15H~\u001b[8;17H(items:\u001b[8;25H3)\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.365285, "o", "\u001b[6;5H4\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [12.552493, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.576714, "o", "\u001b[6;6H5\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [13.299017, "o", "\u001b[3;1Hit-works ~ (items: 1)\u001b[4;5H\u001b[38;2;255;165;0m[ ] I-can-add-items\u001b[6;1H\u001b[39m \u001b[6;11H \u001b[6;13H \u001b[6;21H \u001b[7;5H \u001b[7;19H \u001b[7;21H \u001b[7;29H \u001b[8;5H \u001b[8;15H \u001b[8;17H \u001b[8;25H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.835243, "o", "\u001b[6;7H \u001b[31;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [13.686285, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.143935, "o", "\u001b[31;1H: \u001b[31;5H \u001b[31;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [13.68677, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.25783, "o", "\u001b[31;2Hw\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [13.74053, "o", "\u001b[31mWell, this is embarrassing.\n\nhyperlog-tui had a problem and crashed. To help us diagnose the problem you can send us a crash report.\n\nWe have generated a report file at \"/var/folders/qp/6jwp97j95qg2ks56vrxt_l1m0000gn/T/report-1778ea7a-cf43-4c76-b260-d88c7bacebcc.toml\". Submit an issue or email with the subject of \"hyperlog-tui Crash Report\" and include the report as an attachment.\n\n\nWe take privacy seriously, and do not perform any automated error collection. In order to improve the software, we rely on people to submit reports.\n\nThank you kindly!\n\u001b[0m"]
[10.333427, "o", "\u001b[31;3Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [15.682146, "o", "\u001b[3;1H\u001b[38;2;255;165;0mit-works ~ (items: 1)\u001b[4;5H\u001b[39m[ ] I-can-add-items\u001b[6;1Hsomething\u001b[6;11H~\u001b[6;13H(items:\u001b[6;21H2)\u001b[7;5Hi-can-do-this\u001b[7;19H~\u001b[7;21H(items:\u001b[7;29H1)\u001b[8;5Hsomething\u001b[8;15H~\u001b[8;17H(items:\u001b[8;25H3)\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.449587, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [17.020829, "o", "\u001b[1;10H~\u001b[1;12Hcreate\u001b[1;19Hitem\u001b[3;1H\u001b[38;5;8mpath: kjuulh.it-works \u001b[4;1H \u001b[5;1H\u001b[39m┌title────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[6;1H│\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[6;11H \u001b[6;13H \u001b[6;21H \u001b[6;123H│\u001b[7;1H└──────────────────────────────────────────────────────────────────────────────────────"]
[10.454932, "o", "\u001b[1;10H \u001b[1;12H \u001b[1;19H \u001b[3;1Hsomething ~ (items: 3) \u001b[4;1H \u001b[38;2;255;165;0ma ~ (items: 13)\u001b[39m \u001b[5;1H [ ] 123 \u001b[6;1H \u001b[6;9H[\u001b[6;11H]\u001b[6;13H1234\u001b[6;121H \u001b[7;1H [ ] a \u001b[8;1H [ ] b \u001b[9;1H [ ] blablabla \u001b[10;1H [ ] c \u001b[11;9H[\u001b[11;11H]\u001b[11;13Hsoe\u001b[12;"] [17.020983, "o", "───────────────────────────────────┘\u001b[8;1H\u001b[38;5;8m┌description──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[9;1H│ │\u001b[10;1H└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[33;5H\u001b[39mEDIT\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.45498, "o", "9H[\u001b[12;11H]\u001b[12;13Hsoesoe\u001b[13;9H[\u001b[13;11H]\u001b[13;13Hsome\u001b[14;9H[\u001b[14;11H]\u001b[14;13Hsome-item\u001b[15;9H[\u001b[15;11H]\u001b[15;13Hsome-more\u001b[16;9H[\u001b[16;11H]\u001b[16;13Hsomething\u001b[17;9H[\u001b[17;11H]\u001b[17;13Hsomething-else\u001b[19;5Hb\u001b[19;7H~\u001b[19;9H(items:\u001b[19;17H0)\u001b[20;5Hc\u001b[20;7H~\u001b[20;9H(items:\u001b[20;17H2)\u001b[21;9H[\u001b[21;11H]\u001b[21;13Hitem\u001b[22;9H[\u001b[22;11H]\u001b[22;13Hitem-a\u001b[31;1H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [17.678389, "o", "\u001b[6;2Ho\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.458598, "o", "\u001b[31;2H--\u001b[31;5HVIEW\u001b[31;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [17.804009, "o", "\u001b[6;3Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.462247, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [17.865221, "o", "\u001b[6;4H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.460197, "o", "\u001b[4;18H\u001b[38;2;255;165;0m4\u001b[7;13H\u001b[39m12345\u001b[8;13Ha\u001b[9;14H \u001b[10;13Hblablabla\u001b[11;13Hc \u001b[12;16H \u001b[13;15Hesoe\u001b[14;17H \u001b[15;18Hitem\u001b[16;17H-more\u001b[17;22H \u001b[18;9H[\u001b[18;11H]\u001b[18;13Hsomething-else\u001b[19;5H \u001b[19;7H \u001b[19;9H \u001b[19;17H \u001b[20;5Hb\u001b[20;17H0\u001b[21;5Hc\u001b[21;7H~\u001b[21;9H(items: 2)\u001b[22;17H \u001b[23;9H[\u001b[23;11H]\u001b[23;13Hitem-a\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [17.982226, "o", "\u001b[6;5Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.990987, "o", "\u001b[31;1H: \u001b[31;5H \u001b[31;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [18.06543, "o", "\u001b[6;6Hh\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.096841, "o", "\u001b[31;2Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [18.171003, "o", "\u001b[6;7He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.248732, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [18.259035, "o", "\u001b[6;8H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.251322, "o", "\u001b[31;1H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [18.503667, "o", "\u001b[6;9Hb\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.254842, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] [18.613161, "o", "\u001b[6;10Ha\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.257319, "o", "\u001b[?1049l\u001b[?25h"] [18.683243, "o", "\u001b[6;11Hc\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.259081, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] [18.753564, "o", "\u001b[6;12Hk\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.314693, "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[0mis \u001b[1;38;5;208m📦 \u001b[0m\u001b[1;38;5;208mv0.1.0\u001b[0m \u001b[1;31mrs \u001b[0m\u001b[33m10s\u001b[0m \r\n\u001b[38;2;255;153;102m\u001b[0m \u001b[K"] [18.913502, "o", "\u001b[6;13He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.315707, "o", "\u001b[6 q"] [18.992754, "o", "\u001b[6;14Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.316644, "o", "\u001b[6 q"] [19.124873, "o", "\u001b[6;15Hd\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.316837, "o", "\u001b[?2004h"] [20.230883, "o", "\u001b[6;16H \u001b[33;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.833303, "o", "\u001b[?2004l\r\r\n"] [20.543105, "o", "\u001b[33;1H: \u001b[33;5H \u001b[33;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.627545, "o", "\u001b[33;2Hw\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.704119, "o", "\u001b[33;3Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.83678, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.837696, "o", "\u001b[1;10H \u001b[1;12H \u001b[1;19H \u001b[3;1H\u001b[38;2;255;165;0mit-works ~ (items: 1)\u001b[39m \u001b[4;1H [ ] I-can-add-items \u001b[5;1H \u001b[6;1Hs\u001b[6;3Hme\u001b[6;7Hing ~ (items:\u001b[6;21H2)\u001b[6;123H \u001b[7;1H i-can-do-this ~ (items: 1) \u001b[8;1H something ~ (items: 3) \u001b[9;1H \u001b[10;1H \u001b[33;1H \u001b[39"]
[20.837737, "o", "m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.838339, "o", "\u001b[33;2H--\u001b[33;5HVIEW\u001b[33;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.838812, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.85079, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.851148, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.855853, "o", "\u001b[3;20H\u001b[38;2;255;165;0m2\u001b[5;5H\u001b[39m[\u001b[5;7H]\u001b[5;9Hon-the-backend\u001b[6;1H \u001b[6;11H \u001b[6;13H \u001b[6;21H \u001b[7;1Hsomething ~ (items:\u001b[7;21H2) \u001b[7;29H \u001b[8;5Hi-can-do-this ~ (items:\u001b[8;29H1)\u001b[9;5Hsomething\u001b[9;15H~\u001b[9;17H(items:\u001b[9;25H3)\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[20.856076, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[21.341665, "o", "\u001b[3;1Hit-works ~ (items: 2)\u001b[6;1H\u001b[38;2;255;165;0msomething ~ (items: 2)\u001b[7;1H\u001b[39m i-can-do-this ~\u001b[7;21H(items:\u001b[7;29H1)\u001b[8;5H [ ] with-items \u001b[8;29H \u001b[10;9H[\u001b[10;11H]\u001b[10;13Hand-another\u001b[11;9H\u001b[38;5;8m...\u001b[12;9H\u001b[39m[\u001b[12;11H]\u001b[12;13Hitem\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[21.516868, "o", "\u001b[3;1H\u001b[38;2;255;165;0mit-works ~ (items: 2)\u001b[6;1H\u001b[39m \u001b[7;1Hsomething ~ (items:\u001b[7;21H2) \u001b[7;29H \u001b[8;5Hi-can-do-this ~ (items:\u001b[8;29H1)\u001b[10;9H \u001b[10;11H \u001b[10;13H \u001b[11;9H \u001b[12;9H \u001b[12;11H \u001b[12;13H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[21.734986, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[22.153707, "o", "\u001b[1;10H~\u001b[1;12Hcreate\u001b[1;19Hitem\u001b[3;1H\u001b[38;5;8mpath: kjuulh.it-works \u001b[4;1H \u001b[5;1H\u001b[39m┌title────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[6;1H│\u001b[38;5;0m\u001b[48;5;5m \u001b[6;123H\u001b[39m\u001b[49m│\u001b[7;1H└───────────────────────────────────────────────────────────────────────────────────────────────────"]
[22.153915, "o", "──────────────────────┘\u001b[8;1H\u001b[38;5;8m┌description──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\u001b[9;1H│ │\u001b[10;1H└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\u001b[33;5H\u001b[39mEDIT\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[22.83143, "o", "\u001b[6;2Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[22.930796, "o", "\u001b[6;3Ho\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.07636, "o", "\u001b[6;4Hg\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.231599, "o", "\u001b[6;5Hg\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.308648, "o", "\u001b[6;6Hl\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.420762, "o", "\u001b[6;7He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.470615, "o", "\u001b[6;8H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.62503, "o", "\u001b[6;9Hd\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.710239, "o", "\u001b[6;10Ho\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.826044, "o", "\u001b[6;11He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.935563, "o", "\u001b[6;12Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[23.94551, "o", "\u001b[6;13Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[24.15886, "o", "\u001b[6;14H'\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[24.231506, "o", "\u001b[6;15Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[24.292527, "o", "\u001b[6;16H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[24.45627, "o", "\u001b[6;17Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[24.521203, "o", "\u001b[6;18He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[24.689421, "o", "\u001b[6;19He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[24.849768, "o", "\u001b[6;20Hm\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[25.075116, "o", "\u001b[6;21H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[25.198095, "o", "\u001b[6;22Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[25.276978, "o", "\u001b[6;23Ho\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[25.372935, "o", "\u001b[6;24H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[25.782976, "o", "\u001b[6;24H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[25.934207, "o", "\u001b[6;23H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[26.081359, "o", "\u001b[6;22H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[26.223661, "o", "\u001b[6;21H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[26.367423, "o", "\u001b[6;20H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[26.515238, "o", "\u001b[6;19H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[26.659355, "o", "\u001b[6;18H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[26.803997, "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"]
[26.953345, "o", "\u001b[6;16H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[27.095016, "o", "\u001b[6;15H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[27.244151, "o", "\u001b[6;14H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[27.393007, "o", "\u001b[6;13H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[27.535424, "o", "\u001b[6;12H\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[27.683701, "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"]
[27.834869, "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"]
[27.979099, "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"]
[28.205228, "o", "\u001b[6;9Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[28.335979, "o", "\u001b[6;10Hs\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[28.402599, "o", "\u001b[6;11Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[28.557636, "o", "\u001b[6;12H'\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[28.65723, "o", "\u001b[6;13Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[28.724086, "o", "\u001b[6;14H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[28.89684, "o", "\u001b[6;15Hi\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[29.052154, "o", "\u001b[6;16Hm\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[29.168321, "o", "\u001b[6;17Hp\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[29.337871, "o", "\u001b[6;18Hl\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[29.444157, "o", "\u001b[6;19He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[29.519464, "o", "\u001b[6;20Hm\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[29.621293, "o", "\u001b[6;21He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[29.69862, "o", "\u001b[6;22Hn\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[29.783626, "o", "\u001b[6;23Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[29.865553, "o", "\u001b[6;24He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[30.065802, "o", "\u001b[6;25Hd\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[30.132494, "o", "\u001b[6;26H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[30.296093, "o", "\u001b[6;27Hy\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[30.333876, "o", "\u001b[6;28He\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[30.432812, "o", "\u001b[6;29Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[30.507427, "o", "\u001b[6;30H \u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[30.652257, "o", "\u001b[6;31Ht\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[30.693191, "o", "\u001b[6;32Hh\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[30.845259, "o", "\u001b[6;33Ho\u001b[38;5;0m\u001b[48;5;5m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[31.687752, "o", "\u001b[6;34H \u001b[33;5HVIEW\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[32.058966, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[32.119782, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[32.242868, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[33.6518, "o", "\u001b[33;1H: \u001b[33;5H \u001b[33;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[33.815445, "o", "\u001b[33;2Hw\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[33.932085, "o", "\u001b[33;3Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[34.356435, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[34.357091, "o", "\u001b[1;10H \u001b[1;12H \u001b[1;19H \u001b[3;1H\u001b[38;2;255;165;0mit-works ~ (items: 2)\u001b[39m \u001b[4;1H [ ] I-can-add-items \u001b[5;1H [ ] on-the-backend \u001b[6;1H \u001b[6;9H \u001b[6;15H \u001b[6;27H \u001b[6;31H \u001b[6;123H \u001b[7;1Hsomething ~ (items: 2) \u001b[8;1H i-can-do-this ~ (items: 1) \u001b[9;1H something ~ (items: 3) \u001b[10;1H "]
[34.357262, "o", " \u001b[33;1H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[34.357672, "o", "\u001b[33;2H--\u001b[33;5HVIEW\u001b[33;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[34.358206, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[34.386872, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[34.387286, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[34.397925, "o", "\u001b[3;20H\u001b[38;2;255;165;0m3\u001b[6;5H\u001b[39m[\u001b[6;7H]\u001b[6;9Htoggle-isn't-implemented-yet-tho\u001b[7;1H \u001b[7;11H \u001b[7;13H \u001b[7;21H \u001b[8;1Hsomething ~ (items:\u001b[8;21H2) \u001b[8;29H \u001b[9;5Hi-can-do-this ~ (items:\u001b[9;29H1)\u001b[10;5Hsomething\u001b[10;15H~\u001b[10;17H(items:\u001b[10;25H3)\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[34.398137, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[36.157515, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[36.609848, "o", "\u001b[33;1H: \u001b[33;5H \u001b[33;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[36.785846, "o", "\u001b[33;2Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[40.410158, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[40.410779, "o", "\u001b[33;1H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[40.411947, "o", "\u001b[?1049l\u001b[?25h"]
[40.417589, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
[40.471035, "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[0mis \u001b[1;38;5;208m📦 \u001b[0m\u001b[1;38;5;208mv0.1.0\u001b[0m \u001b[1;31mrs \u001b[0m\u001b[33m37s\u001b[0m \r\n\u001b[38;2;255;153;102m\u001b[0m \u001b[K"]
[40.471969, "o", "\u001b[6 q"]
[40.472835, "o", "\u001b[6 q"]
[40.473001, "o", "\u001b[?2004h"]
[41.797938, "o", "\r\r\n"]
[41.821612, "o", "\u001b[?1049h\u001b[?1000h\u001b[?1002h\u001b[?1003h\u001b[?1015h\u001b[?1006h\u001b[?2004h\u001b[>13u"]
[41.976945, "o", "\u001b[1;2H\u001b[1mAtuin v18.2.0\u001b[1;26H\u001b[22m\u001b[38;5;8m \u001b[1m<esc>\u001b[22m: exit, \u001b[1m<tab>\u001b[22m: edit, \u001b[1m<enter>\u001b[22m: run, \u001b[1m<ctrl-o>\u001b[22m: inspect history count: 23952\u001b[2;3H\u001b[1m\u001b[38;5;15m\u001b[48;5;0mSearch\u001b[2;10H\u001b[22m\u001b[39m\u001b[49m│\u001b[2;12HInspect\u001b[3;2H╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\u001b[4;2H│\u001b[4;6H\u001b[38;5;2m0s\u001b[4;13H\u001b[38;5;4m1h ago\u001b[4;20H\u001b[39mpsql\u001b[4;25H-h\u001b[4;28Hlocalhost\u001b[4;38H-p\u001b[4;41H26257\u001b[4;47H-U\u001b[4;50Hroot\u001b[4;55H-d\u001b[4;58Hdefaultdb\u001b[4;122H│\u001b[5;2H│\u001b[5;6H\u001b[38;5;1m124ms\u001b[5;13H\u001b[38;5;4m1h ago\u001b[5;20H\u001b[39mgrpcurl\u001b[5;28H-import-path\u001b[5;41Hcrates/hyperlog-protos/proto\u001b[5;70H-proto\u001b[5;77Hhyperlog.proto\u001b[5;92H-d\u001b[5;95H'{\"root\":\u001b[5;105H\"kjuulh\",\u001b[5;115H\"path\":│\u001b[6;2H│\u001b[6;6H\u001b[38;"]
[41.977026, "o", "5;1m33ms\u001b[6;13H\u001b[38;5;4m1h ago\u001b[6;20H\u001b[39mgrpcurl\u001b[6;28H-import-path\u001b[6;41Hcrates/hyperlog-protos/proto\u001b[6;70H-proto\u001b[6;77Hhyperlog.proto\u001b[6;92H-plaintext\u001b[6;103Hlocalhost:4000\u001b[6;118Hhype│\u001b[7;2H│\u001b[7;6H\u001b[38;5;1m688ms\u001b[7;13H\u001b[38;5;4m1h ago\u001b[7;20H\u001b[39mcargo\u001b[7;26Hrun\u001b[7;30H--\u001b[7;33H--backend\u001b[7;43Hremote\u001b[7;50Hcreate-root\u001b[7;122H│\u001b[8;2H│\u001b[8;6H\u001b[38;5;2m712ms\u001b[8;13H\u001b[38;5;4m1h ago\u001b[8;20H\u001b[39mcargo\u001b[8;26Hrun\u001b[8;30H--\u001b[8;33H--backend\u001b[8;43Hremote\u001b[8;50Hcreate-root\u001b[8;62H--name\u001b[8;69Hkjuulh\u001b[8;122H│\u001b[9;2H│\u001b[9;6H\u001b[38;5;1m721ms\u001b[9;13H\u001b[38;5;4m1h ago\u001b[9;20H\u001b[39mcargo\u001b[9;26Hrun\u001b[9;30H--\u001b[9;33H--backend\u001b[9;43Hremote\u001b[9;50Hcreate-section\u001b[9;65H--name\u001b[9;72Hkjuulh\u001b[9;122H│\u001b[10;2H│\u001b[10;6H\u001b[38;5;2m684ms\u001b[10;13H\u001b[38;5;4m1h ago\u001b[10;20H\u001b[39mcargo\u001b[10;26Hrun\u001b[10;30H--\u001b[10;33H--backend\u001b[10;43Hremote\u001b[10;50H-h\u001b[10;122H│\u001b[11;2H│\u001b[11;6H\u001b[38;5;1m746ms\u001b[11;13H\u001b[38;5;4m1h ago\u001b[11;20H\u001b[39mcargo\u001b[11;26Hrun\u001b[11;30H--\u001b[11;33H--backend\u001b[11;43Hremote\u001b[11;50Hexec\u001b[11;122H│\u001b[12;2H│\u001b[12;6H\u001b[38;5;1m698ms\u001b[12;13H\u001b[38;5;4m1"]
[41.977185, "o", "h ago\u001b[12;20H\u001b[39mcargo\u001b[12;26Hrun\u001b[12;30H--\u001b[12;33H--backend\u001b[12;43Hremote\u001b[12;50Hexec\u001b[12;55Hcreate-section\u001b[12;122H│\u001b[13;2H│\u001b[13;6H\u001b[38;5;1m727ms\u001b[13;13H\u001b[38;5;4m1h ago\u001b[13;20H\u001b[39mcargo\u001b[13;26Hrun\u001b[13;30H--\u001b[13;33H--backend\u001b[13;43Hremote\u001b[13;50Hexec\u001b[13;55Hcreate-section\u001b[13;70H--root\u001b[13;77Hkjuulh\u001b[13;122H│\u001b[14;2H│\u001b[14;6H\u001b[38;5;2m685ms\u001b[14;13H\u001b[38;5;4m1h ago\u001b[14;20H\u001b[39mcargo\u001b[14;26Hrun\u001b[14;30H--\u001b[14;33H--backend\u001b[14;43Hremote\u001b[14;50Hexec\u001b[14;55Hcreate-section\u001b[14;70H--root\u001b[14;77Hkjuulh\u001b[14;84H-h\u001b[14;122H│\u001b[15;2H│\u001b[15;6H\u001b[38;5;2m688ms\u001b[15;13H\u001b[38;5;4m1h ago\u001b[15;20H\u001b[39mcargo\u001b[15;26Hrun\u001b[15;30H--\u001b[15;33H--backend\u001b[15;43Hremote\u001b[15;50Hexec\u001b[15;55Hcreate-section\u001b[15;70H--root\u001b[15;77Hkjuulh\u001b[15;84H--path\u001b[15;91Hsomething\u001b[15;122H│\u001b[16;2H│\u001b[16;6H\u001b[38;5;2m742ms\u001b[16;13H\u001b[38;5;4m1h ago\u001b[16;20H\u001b[39mcargo\u001b[16;26Hrun\u001b[16;30H--\u001b[16;33H--backend\u001b[16;43Hremote\u001b[16;50Hexec\u001b[16;55Hcreate-section\u001b[16;70H--root\u001b[16;77Hkjuulh\u001b[16;84H--path\u001b[16;91Hsomething.something\u001b[16;122H│\u001b[17;2H│\u001b[17;6H\u001b[38;5;2m1s\u001b"]
[41.97723, "o", "[17;13H\u001b[38;5;4m1h ago\u001b[17;20H\u001b[39mcargo\u001b[17;26Hrun\u001b[17;30H--\u001b[17;33H--backend\u001b[17;43Hremote\u001b[17;50Hexec\u001b[17;55H-h\u001b[17;122H│\u001b[18;2H│\u001b[18;6H\u001b[38;5;2m31ms\u001b[18;13H\u001b[38;5;4m1h ago\u001b[18;20H\u001b[39mz\u001b[18;22Hhyperlog\u001b[18;122H│\u001b[19;2H│\u001b[19;6H\u001b[38;5;2m2s\u001b[19;13H\u001b[38;5;4m1h ago\u001b[19;20H\u001b[39mrm\u001b[19;23H-rf\u001b[19;27Htarget\u001b[19;122H│\u001b[20;2H│\u001b[20;6H\u001b[38;5;1m1s\u001b[20;13H\u001b[38;5;4m1h ago\u001b[20;20H\u001b[39mcargo\u001b[20;26Hrun\u001b[20;30H--\u001b[20;33H--backend\u001b[20;43Hremote\u001b[20;122H│\u001b[21;2H│\u001b[21;4H9\u001b[21;6H\u001b[38;5;2m1s\u001b[21;13H\u001b[38;5;4m1h ago\u001b[21;20H\u001b[39mgca\u001b[21;24H\"feat:\u001b[21;31Hcan\u001b[21;35Hget\u001b[21;39Hactual\u001b[21;46Havailable\u001b[21;56Hroots\"\u001b[21;122H│\u001b[22;2H│\u001b[22;4H8\u001b[22;6H\u001b[38;5;2m2s\u001b[22;13H\u001b[38;5;4m1h ago\u001b[22;20H\u001b[39mgp\u001b[22;122H│\u001b[23;2H│\u001b[23;4H7\u001b[23;6H\u001b[38;5;2m22ms\u001b[23;13H\u001b[38;5;4m1h ago\u001b[23;20H\u001b[39mclear\u001b[23;122H│\u001b[24;2H│\u001b[24;4H6\u001b[24;6H\u001b[38;5;1m86ms\u001b[24;12H\u001b[38;5;4m57m ago\u001b[24;20H\u001b[39mgrpcurl\u001b[24;28H-import-path\u001b[24;41Hcrates/hyperlog-protos/proto\u001b[24;70H-proto\u001b[24;77Hhyperlog.proto\u001b[24;92H-d\u001b[24;95H'{\"root\":\u001b[24;105H\"kjuulh\"}'\u001b["]
[41.977287, "o", "24;116H-plain│\u001b[25;2H│\u001b[25;4H5\u001b[25;6H\u001b[38;5;2m10s\u001b[25;12H\u001b[38;5;4m16m ago\u001b[25;20H\u001b[39mhyperlog\u001b[25;122H│\u001b[26;2H│\u001b[26;4H4\u001b[26;6H\u001b[38;5;2m38s\u001b[26;13H\u001b[38;5;4m3m ago\u001b[26;20H\u001b[39mcargo\u001b[26;26Hrun\u001b[26;30H--\u001b[26;33H--backend\u001b[26;43Hremote\u001b[26;122H│\u001b[27;2H│\u001b[27;4H3\u001b[27;6H\u001b[38;5;1m49s\u001b[27;13H\u001b[38;5;4m2m ago\u001b[27;20H\u001b[39mcargo\u001b[27;26Hrun\u001b[27;30H--release\u001b[27;40H--\u001b[27;43H--remote\u001b[27;52Hbackend\u001b[27;122H│\u001b[28;2H│\u001b[28;4H2\u001b[28;6H\u001b[38;5;2m42s\u001b[28;13H\u001b[38;5;4m1m ago\u001b[28;20H\u001b[39mcargo\u001b[28;26Hrun\u001b[28;30H--release\u001b[28;40H--\u001b[28;43H--backend\u001b[28;53Hremote\u001b[28;122H│\u001b[29;2H│\u001b[29;4H1\u001b[29;6H\u001b[38;5;2m0s\u001b[29;12H\u001b[38;5;4m42s ago\u001b[29;20H\u001b[39masciinema\u001b[29;30Hrec\u001b[29;34Hdemo.cast\u001b[29;44H--overwrite\u001b[29;122H│\u001b[30;2H│\u001b[30;4H>\u001b[30;6H\u001b[38;5;2m37s\u001b[30;12H\u001b[38;5;4m39s ago\u001b[1m\u001b[38;5;1m cargo run --release -- --backend remote\u001b[30;122H\u001b[22m\u001b[39m│\u001b[31;2H│───────────────────────────────────────────────────────"]
[41.97742, "o", "────────────────────────────────────────────────────────────────│\u001b[32;2H│[\u001b[32;8HGLOBAL\u001b[32;18H]\u001b[32;122H│\u001b[33;2H╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25h\u001b[32;20H"]
[42.066499, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25h\u001b[32;20H"]
[42.319608, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25h\u001b[32;20H"]
[42.571829, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25h\u001b[32;20H"]
[42.727815, "o", "\u001b[?1000h\u001b[?1002h\u001b[?1003h\u001b[?1015h\u001b[?1006h\u001b[?1006l\u001b[?1015l\u001b[?1003l\u001b[?1002l\u001b[?1000l"]
[42.728273, "o", "\u001b[<1u\u001b[?1049l\u001b[?1006l\u001b[?1015l\u001b[?1003l\u001b[?1002l\u001b[?1000l\u001b[?2004l"]
[42.802586, "o", "\u001b[A\r\u001b[A\u001b[A\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[0mis \u001b[1;38;5;208m📦 \u001b[0m\u001b[1;38;5;208mv0.1.0\u001b[0m \u001b[1;31mrs \u001b[0m\u001b[33m37s\u001b[0m \r\n\u001b[38;2;255;153;102m\u001b[0m \u001b[K"]
[42.803675, "o", "cargo run --release -- --backend remote"]
[42.809234, "o", "\u001b[39D\u001b[32mc\u001b[32ma\u001b[32mr\u001b[32mg\u001b[32mo\u001b[39m\u001b[34C"]
[42.809682, "o", "\u001b[?1l\u001b>"]
[42.809828, "o", "\u001b[?2004l"]
[42.814158, "o", "\u001b[0 q"]
[42.814414, "o", "\r\r\n"]
[43.125266, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `GraphItem`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_item.rs:1:26\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 hyperlog_core::log::{GraphItem, ItemState};\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: `hyperlog_core::log::GraphItem`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_section.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 hyperlog_core::log::GraphItem;\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 i"]
[43.125298, "o", "mports: `GraphItem`, `ItemState`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_available_roots.rs:1:26\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 hyperlog_core::log::{GraphItem, ItemState};\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[33m^^^^^^^^^\u001b[0m\r\n\r\n"]
[43.125414, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `sqlx::types::Json`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_available_roots.rs:2: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;12m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse sqlx::types::Json;\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: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:102:17\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;12m102\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root,\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: try ignoring the field: `root: _`\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 variab"]
[43.125455, "o", "le: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:103:17\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;12m103\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m path,\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: try ignoring the field: `path: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `title`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:104:17\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;12m104\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m title,\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: try ignoring the field: `title: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `description`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:105:17\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;"]
[43.125526, "o", "12m|\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m105\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m description,\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: try ignoring the field: `description: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `state`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:106:17\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;12m106\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m state,\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: try ignoring the field: `state: _`\u001b[0m\r\n\r\n"]
[43.125576, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:108:35\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;12m108\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::ToggleItem { root, path } => todo!(),\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: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `path`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:108:41\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;12m108\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::ToggleItem { root, path } => todo!(),\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: try ignoring the field: `path: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b["]
[43.125659, "o", "1m: unused variable: `root`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:109:29\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;12m109\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\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: try ignoring the field: `root: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `src`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:109:35\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;12m109\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\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: try ignoring the field: `src: _`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `dest`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0"]
[43.125748, "o", "m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/commands.rs:109:40\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;12m109\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Command::Move { root, src, dest } => todo!(),\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: try ignoring the field: `dest: _`\u001b[0m\r\n\r\n"]
[43.125824, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `req`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_available_roots.rs:26:33\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;12m26\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub async fn execute(&self, req: Request) -> anyhow::Result<Response> {\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: `_req`\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: field `root_name` is never read\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_item.rs:31: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;12m29\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mstruct Root {\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;12mfield in this struct\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m30\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12"]
[43.125897, "o", "m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m id: uuid::Uuid,\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m31\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root_name: String,\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: field `id` is never read\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_item.rs:36: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;12m35\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mstruct Section {\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;12mfield in this struct\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m36\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m id: uuid::Uuid,\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: field `root_name` is never read\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m"]
[43.126022, "o", "\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/create_section.rs:19: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;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mstruct Root {\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;12mfield in this struct\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m id: uuid::Uuid,\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m19\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m root_name: String,\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: field `id` is never read\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_graph.rs:37: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;12m36\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mstruct Node {\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;12mfield in this struct\u001b[0"]
[43.126115, "o", "m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m id: uuid::Uuid,\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: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis\u001b[0m\r\n\r\n\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: multiple associated items are never used\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog-server/src/services/get_graph.rs:152:16\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;12m151\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m impl Engine {\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;12massociated items in this implementation\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m152\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn engine_from_str(input: &str) -> anyhow::Result<Self> {\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m "]
[43.126211, "o", " \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m158\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn to_str(&self) -> anyhow::Result<String> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m219\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn get_mut(&mut self, root: &str, path: &[&str]) -> Option<&mut GraphItem> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m225\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn take(&mut self, root: &str, path: &[&str]) -> Option<GraphItem> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m231\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn section_move(\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b"]
[43.126253, "o", "[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m268\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn delete(&mut self, root: &str, path: &[&str]) -> anyhow::Result<()> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m274\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn toggle_item(&mut self, root: &str, path: &[&str]) -> anyhow::Result<()> {\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m290\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn update_item(\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[1m\u001b[38;5;12m...\u001b[0m\r\n\u001b[0m\u001b[1m\u001b[38;5;12m341\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn get_roots(&self) -> Option<Vec<String>> {\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0"]
[43.126325, "o", "m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\r\n\r\n"]
[43.126992, "o", "\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `std::net::SocketAddr`\u001b[0m\r\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mcrates/hyperlog/src/cli.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 std::net::SocketAddr;\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"]
[43.127883, "o", "\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m:\u001b[0m `hyperlog-server` (lib) generated 20 warnings (run `cargo fix --lib -p hyperlog-server` to apply 4 suggestions)\r\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m:\u001b[0m `hyperlog` (bin \"hyperlog\") generated 1 warning (run `cargo fix --bin \"hyperlog\"` to apply 1 suggestion)\r\n"]
[43.1279, "o", "\u001b[1m\u001b[32m Finished\u001b[0m `release` profile [optimized] target(s) in 0.29s\r\n"]
[43.137727, "o", "\u001b[1m\u001b[32m Running\u001b[0m `target/release/hyperlog --backend remote`\r\n"]
[43.314772, "o", "\u001b[?1049h"]
[43.323208, "o", "\u001b[1;1H\u001b[38;5;2mhyperlog\u001b[2;1H\u001b[39m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[3;1Hit-works\u001b[3;10H~\u001b[3;12H(items:\u001b[3;20H3)\u001b[4;5H[\u001b[4;7H]\u001b[4;9HI-can-add-items\u001b[5;5H\u001b[38;5;8m...\u001b[6;5H\u001b[39m[\u001b[6;7H]\u001b[6;9Htoggle-isn't-implemented-yet-tho\u001b[8;1Hsomething\u001b[8;11H~\u001b[8;13H(items:\u001b[8;21H2)\u001b[9;5Hi-can-do-this\u001b[9;19H~\u001b[9;21H(items:\u001b[9;29H1)\u001b[10;5Hsomething\u001b[10;15H~\u001b[10;17H(items:\u001b[10;25H3)\u001b[33;2H--\u001b[33;5HVIEW\u001b[33;10H--\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[43.929581, "o", "\u001b[3;1H\u001b[38;2;255;165;0mit-works ~ (items: 3)\u001b[5;5H\u001b[39m[ ]\u001b[5;9Hon-the-backend\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[44.075108, "o", "\u001b[3;1Hit-works ~ (items: 3)\u001b[4;5H\u001b[38;2;255;165;0m[ ] I-can-add-items\u001b[8;1H\u001b[39m \u001b[8;11H \u001b[8;13H \u001b[8;21H \u001b[9;5H \u001b[9;19H \u001b[9;21H \u001b[9;29H \u001b[10;5H \u001b[10;15H \u001b[10;17H \u001b[10;25H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[44.874727, "o", "\u001b[4;5H[ ] I-can-add-items\u001b[5;5H\u001b[38;2;255;165;0m[ ] on-the-backend\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[45.061332, "o", "\u001b[5;5H[ ] on-the-backend\u001b[6;5H\u001b[38;2;255;165;0m[ ] toggle-isn't-implemented-yet-tho\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[45.206712, "o", "\u001b[5;5H\u001b[38;2;255;165;0m[ ] on-the-backend\u001b[6;5H\u001b[39m[ ] toggle-isn't-implemented-yet-tho\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[45.37008, "o", "\u001b[4;5H\u001b[38;2;255;165;0m[ ] I-can-add-items\u001b[5;5H\u001b[39m[ ] on-the-backend\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[45.673509, "o", "\u001b[4;5H[ ] I-can-add-items\u001b[5;5H\u001b[38;2;255;165;0m[ ] on-the-backend\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[46.007542, "o", "\u001b[4;5H\u001b[38;2;255;165;0m[ ] I-can-add-items\u001b[5;5H\u001b[39m[ ] on-the-backend\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[46.189383, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[46.345585, "o", "\u001b[4;5H[ ] I-can-add-items\u001b[5;5H\u001b[38;2;255;165;0m[ ] on-the-backend\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[46.567759, "o", "\u001b[5;5H[ ] on-the-backend\u001b[6;5H\u001b[38;2;255;165;0m[ ] toggle-isn't-implemented-yet-tho\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[46.698547, "o", "\u001b[5;5H\u001b[38;2;255;165;0m[ ] on-the-backend\u001b[6;5H\u001b[39m[ ] toggle-isn't-implemented-yet-tho\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[47.043763, "o", "\u001b[3;1H\u001b[38;2;255;165;0mit-works ~ (items: 3)\u001b[5;5H\u001b[39m[ ] on-the-backend\u001b[8;1Hsomething\u001b[8;11H~\u001b[8;13H(items:\u001b[8;21H2)\u001b[9;5Hi-can-do-this\u001b[9;19H~\u001b[9;21H(items:\u001b[9;29H1)\u001b[10;5Hsomething\u001b[10;15H~\u001b[10;17H(items:\u001b[10;25H3)\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[47.720694, "o", "\u001b[3;1Hit-works ~ (items: 3)\u001b[5;5H\u001b[38;5;8m...\u001b[5;9H\u001b[39m \u001b[8;1H\u001b[38;2;255;165;0msomething ~ (items: 2)\u001b[10;5H\u001b[39m [ ] with-\u001b[10;23H \u001b[10;25H \u001b[11;5Hsomething\u001b[11;15H~\u001b[11;17H(items:\u001b[11;25H3)\u001b[12;9H[\u001b[12;11H]\u001b[12;13Hand-another\u001b[13;9H\u001b[38;5;8m...\u001b[14;9H\u001b[39m[\u001b[14;11H]\u001b[14;13Hitem\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[47.90605, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[48.194979, "o", "\u001b[3;1H\u001b[38;2;255;165;0mit-works ~ (items: 3)\u001b[5;5H\u001b[39m[ ]\u001b[5;9Hon-the-backend\u001b[8;1Hsomething ~ (items: 2)\u001b[10;5Hsomething ~ (\u001b[10;23H:\u001b[10;25H3)\u001b[11;5H \u001b[11;15H \u001b[11;17H \u001b[11;25H \u001b[12;9H \u001b[12;11H \u001b[12;13H \u001b[13;9H \u001b[14;9H \u001b[14;11H \u001b[14;13H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[48.367241, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[49.205066, "o", "\u001b[33;1H: \u001b[33;5H \u001b[33;10H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[49.360314, "o", "\u001b[33;2Hq\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[49.565543, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[49.567508, "o", "\u001b[33;1H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[49.568849, "o", "\u001b[?1049l\u001b[?25h"]
[49.570699, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
[49.627447, "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[0mis \u001b[1;38;5;208m📦 \u001b[0m\u001b[1;38;5;208mv0.1.0\u001b[0m \u001b[1;31mrs \u001b[0m\u001b[33m6s\u001b[0m \r\n\u001b[38;2;255;153;102m\u001b[0m \u001b[K"]
[49.628604, "o", "\u001b[6 q"]
[49.629752, "o", "\u001b[6 q"]
[49.62996, "o", "\u001b[?2004h"]
[51.218262, "o", "\u001b[2 q"]
[51.265765, "o", "\r\r\u001b[A\u001b[A\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[0mis \u001b[1;38;5;208m📦 \u001b[0m\u001b[1;38;5;208mv0.1.0\u001b[0m \u001b[1;31mrs \u001b[0m\u001b[33m6s\u001b[0m \r\n\u001b[32m\u001b[0m \u001b[K"]
[52.056217, "o", "\u001b[6 q"]
[52.095427, "o", "\r\r\u001b[A\u001b[A\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[0mis \u001b[1;38;5;208m📦 \u001b[0m\u001b[1;38;5;208mv0.1.0\u001b[0m \u001b[1;31mrs \u001b[0m\u001b[33m6s\u001b[0m \r\n\u001b[38;2;255;153;102m\u001b[0m \u001b[K"]
[52.478423, "o", "\u001b[?2004l\r\r\n"]