This commit is contained in:
senstella
2025-10-08 15:31:39 +09:00
parent 117a4c2dc9
commit e6c6f94616
4 changed files with 47 additions and 13 deletions

1
Cargo.lock generated
View File

@@ -1705,6 +1705,7 @@ dependencies = [
"iced_core", "iced_core",
"log", "log",
"rustc-hash 2.1.1", "rustc-hash 2.1.1",
"tokio",
"wasm-bindgen-futures", "wasm-bindgen-futures",
"wasm-timer", "wasm-timer",
] ]

View File

@@ -5,7 +5,7 @@ edition = "2024"
[dependencies] [dependencies]
anyhow = "1.0.100" anyhow = "1.0.100"
iced = "0.13.1" iced = { version = "0.13.1", features = ["tokio"] }
imara-diff = "0.2.0" imara-diff = "0.2.0"
nucleo-matcher = "0.3.1" nucleo-matcher = "0.3.1"
rmcp = { version = "0.8.0", features = ["server", "macros", "transport-sse-server", "transport-io", "transport-streamable-http-server", "elicitation", "schemars"] } rmcp = { version = "0.8.0", features = ["server", "macros", "transport-sse-server", "transport-io", "transport-streamable-http-server", "elicitation", "schemars"] }

View File

@@ -0,0 +1,24 @@
use iced::{Element, widget::text_editor};
#[derive(Default)]
pub struct State {
content: text_editor::Content,
}
#[derive(Debug, Clone)]
pub enum Message {
Edit(text_editor::Action),
}
pub fn view(state: &State) -> Element<'_, Message> {
text_editor(&state.content)
.placeholder("Type something here...")
.on_action(Message::Edit)
.into()
}
pub fn update(state: &mut State, message: Message) {
match message {
Message::Edit(action) => {}
}
}

View File

@@ -1,22 +1,28 @@
use crate::mcp::FossilEditor; use crate::{
gui::{update, view},
mcp::FossilEditor,
};
use iced::Executor;
use rmcp::{ServiceExt, transport::stdio}; use rmcp::{ServiceExt, transport::stdio};
use tokio::runtime::Runtime;
use tracing_subscriber::{self, EnvFilter}; use tracing_subscriber::{self, EnvFilter};
mod fossil; mod fossil;
mod gui;
mod matcher; mod matcher;
mod mcp; mod mcp;
#[tokio::main] fn main() -> iced::Result {
async fn main() {
tracing_subscriber::fmt() tracing_subscriber::fmt()
.with_env_filter(EnvFilter::from_default_env().add_directive(tracing::Level::DEBUG.into())) .with_env_filter(EnvFilter::from_default_env().add_directive(tracing::Level::DEBUG.into()))
.with_writer(std::io::stderr) .with_writer(std::io::stderr)
.with_ansi(false) .with_ansi(false)
.init(); .init();
tracing::info!("Starting MCP server"); let rt = Runtime::new().unwrap();
let editor = FossilEditor::new(); let editor = FossilEditor::new();
rt.spawn(async {
let service = editor let service = editor
.serve(stdio()) .serve(stdio())
.await .await
@@ -26,4 +32,7 @@ async fn main() {
.unwrap(); .unwrap();
service.waiting().await.unwrap(); service.waiting().await.unwrap();
});
iced::run("A cool counter", update, view)
} }