From 87950db31fdba121fb8015fbd7d3d3d417d71ea5 Mon Sep 17 00:00:00 2001 From: kev1n77 Date: Tue, 12 May 2026 17:11:23 +0800 Subject: [PATCH 1/2] fix(cli): Refine CLI migration and scope sessions to current project --- src/apps/cli/src/chat_state.rs | 5 - src/apps/cli/src/commands.rs | 12 - src/apps/cli/src/main.rs | 123 ++------- src/apps/cli/src/modes/chat.rs | 225 ----------------- src/apps/cli/src/ui/chat/popups.rs | 56 ---- src/apps/cli/src/ui/chat/render.rs | 10 - src/apps/cli/src/ui/chat/state.rs | 10 - src/apps/cli/src/ui/command_palette.rs | 13 +- src/apps/cli/src/ui/mod.rs | 2 - src/apps/cli/src/ui/rename_dialog.rs | 243 ------------------ src/apps/cli/src/ui/session_selector.rs | 36 +-- src/apps/cli/src/ui/startup.rs | 68 +---- src/apps/cli/src/ui/string_utils.rs | 37 --- src/apps/cli/src/ui/workspace_dialog.rs | 323 ------------------------ 14 files changed, 33 insertions(+), 1130 deletions(-) delete mode 100644 src/apps/cli/src/ui/rename_dialog.rs delete mode 100644 src/apps/cli/src/ui/workspace_dialog.rs diff --git a/src/apps/cli/src/chat_state.rs b/src/apps/cli/src/chat_state.rs index 250319f1d..730c48c4c 100644 --- a/src/apps/cli/src/chat_state.rs +++ b/src/apps/cli/src/chat_state.rs @@ -829,11 +829,6 @@ impl ChatState { self.metadata.total_tokens = total_tokens; } - /// Update workspace path (e.g. after cd command changes working directory) - pub fn update_workspace(&mut self, new_workspace: String) { - self.workspace = Some(new_workspace); - } - /// Add a system message (for commands like /help, /clear, etc.) pub fn add_system_message(&mut self, content: String) { self.messages.push(ChatMessage { diff --git a/src/apps/cli/src/commands.rs b/src/apps/cli/src/commands.rs index f2f4672f4..3666d6c0e 100644 --- a/src/apps/cli/src/commands.rs +++ b/src/apps/cli/src/commands.rs @@ -32,10 +32,6 @@ pub const COMMAND_SPECS: &[CommandSpec] = &[ name: "/connect", description: "Add a new AI model configuration", }, - CommandSpec { - name: "/rename", - description: "Rename session", - }, CommandSpec { name: "/new", description: "New session", @@ -52,10 +48,6 @@ pub const COMMAND_SPECS: &[CommandSpec] = &[ name: "/subagents", description: "Browse and launch subagents", }, - CommandSpec { - name: "/workspace", - description: "Switch workspace directory", - }, CommandSpec { name: "/mcps", description: "Manage MCP servers", @@ -104,10 +96,6 @@ pub const STARTUP_COMMAND_SPECS: &[CommandSpec] = &[ name: "/subagents", description: "Browse and launch subagents", }, - CommandSpec { - name: "/workspace", - description: "Switch workspace directory", - }, CommandSpec { name: "/mcps", description: "Manage MCP servers", diff --git a/src/apps/cli/src/main.rs b/src/apps/cli/src/main.rs index c3b828c82..69ef7325c 100644 --- a/src/apps/cli/src/main.rs +++ b/src/apps/cli/src/main.rs @@ -61,9 +61,6 @@ struct Cli { #[command(subcommand)] command: Option, - /// Workspace path (project directory), defaults to current directory - project: Option, - /// Enable verbose logging #[arg(short, long, global = true)] verbose: bool, @@ -76,10 +73,6 @@ enum Commands { /// Agent type #[arg(short, long, default_value = "agentic")] agent: String, - - /// Workspace path - #[arg(short, long)] - workspace: Option, }, /// Execute single command @@ -91,14 +84,6 @@ enum Commands { #[arg(short, long, default_value = "agentic")] agent: String, - /// Workspace path - #[arg(short, long)] - workspace: Option, - - /// Output in JSON format (script-friendly) - #[arg(long)] - json: bool, - /// Output git diff patch after execution (for SWE-bench evaluation) /// Without path outputs to terminal, with path saves to file /// Example: --output-patch or --output-patch ./result.patch @@ -110,13 +95,6 @@ enum Commands { confirm: bool, }, - /// Execute batch tasks - Batch { - /// Task configuration file path - #[arg(short, long)] - tasks: String, - }, - /// Session management Sessions { #[command(subcommand)] @@ -129,25 +107,11 @@ enum Commands { action: ConfigAction, }, - /// Invoke tool directly - Tool { - /// Tool name - name: String, - - /// Tool parameters (JSON) - #[arg(short, long)] - params: Option, - }, - /// Health check Health, /// Start Agent Client Protocol (ACP) server over stdio - Acp { - /// Working directory for the ACP session - #[arg(short, long)] - workspace: Option, - }, + Acp, } #[derive(Subcommand)] @@ -178,18 +142,10 @@ enum ConfigAction { // ======================== System Initialization ======================== -/// Set the workspace path and return the resolved absolute path -fn setup_workspace(ws: &str) -> Option { - use std::path::PathBuf; - - let workspace_path = if ws == "." { - std::env::current_dir().ok() - } else { - Some(PathBuf::from(ws)) - }; - +/// Return the current project path. CLI session scope is intentionally cwd-only. +fn setup_workspace() -> Option { + let workspace_path = std::env::current_dir().ok(); tracing::info!("Workspace path set: {:?}", workspace_path); - workspace_path.map(|p| p.to_string_lossy().to_string()) } @@ -293,7 +249,7 @@ async fn shutdown_mcp_servers() { async fn run_interactive( config: CliConfig, default_agent: String, - workspace_str: String, + _workspace_str: String, ) -> Result<()> { use ui::startup::{StartupPage, StartupResult}; @@ -302,7 +258,7 @@ async fn run_interactive( ui::render_loading(&mut terminal, "Initializing system, please wait...")?; // 2. Set workspace path - let workspace = setup_workspace(&workspace_str); + let workspace = setup_workspace(); // 3. Initialize core services let (agentic_system, original_skip_confirmation) = @@ -335,7 +291,7 @@ async fn run_interactive( }; let agent_type = startup_page.agent_type().to_string(); - // Use workspace from startup page (may have been changed via /workspace command) + // Use the current project workspace selected at process start. let workspace = startup_page.workspace(); let mut chat_mode = ChatMode::new(config, agent_type, workspace, &agentic_system); if let Some(session_id) = restore_session_id { @@ -419,39 +375,13 @@ async fn main() -> Result<()> { }); match cli.command { - Some(Commands::Chat { agent, workspace }) => { - if let Some(ws) = workspace { - // Direct chat mode: workspace provided, skip startup page - let workspace = setup_workspace(&ws); - - let (agentic_system, original_skip_confirmation) = - initialize_core_services(true).await?; - - println!("System initialized, starting chat interface...\n"); - std::thread::sleep(std::time::Duration::from_millis(500)); - - let mut chat_mode = ChatMode::new(config, agent, workspace, &agentic_system); - let _exit_reason = chat_mode.run(None)?; - - shutdown_mcp_servers().await; - restore_tool_confirmation(original_skip_confirmation).await; - } else { - // Interactive mode with startup page - run_interactive(config, agent, ".".to_string()).await?; - } + Some(Commands::Chat { agent }) => { + // Interactive mode with startup page, scoped to the current directory. + run_interactive(config, agent, ".".to_string()).await?; } - Some(Commands::Exec { message, agent, workspace, json: _, output_patch, confirm }) => { - let workspace_path_resolved = if let Some(ref ws) = workspace { - use std::path::PathBuf; - if ws == "." { - std::env::current_dir().ok() - } else { - Some(PathBuf::from(ws)) - } - } else { - std::env::current_dir().ok() - }; + Some(Commands::Exec { message, agent, output_patch, confirm }) => { + let workspace_path_resolved = std::env::current_dir().ok(); if let Some(ref ws_path) = workspace_path_resolved { tracing::info!("Workspace path set: {:?}", ws_path); @@ -477,12 +407,6 @@ async fn main() -> Result<()> { run_result?; } - Some(Commands::Batch { tasks }) => { - println!("Executing batch tasks..."); - println!("Tasks file: {}", tasks); - println!("\nWarning: Batch execution feature coming soon"); - } - Some(Commands::Sessions { action }) => { handle_session_action(action).await?; } @@ -491,23 +415,14 @@ async fn main() -> Result<()> { handle_config_action(action, &config)?; } - Some(Commands::Tool { name, params }) => { - println!("Invoking tool: {}", name); - if let Some(p) = params { - println!("Parameters: {}", p); - } - println!("\nWarning: Tool invocation feature coming soon"); - } - Some(Commands::Health) => { println!("BitFun CLI is running normally"); println!("Version: {}", env!("CARGO_PKG_VERSION")); println!("Config directory: {:?}", CliConfig::config_dir()?); } - Some(Commands::Acp { workspace }) => { - let workspace_str = workspace.unwrap_or_else(|| ".".to_string()); - setup_workspace(&workspace_str); + Some(Commands::Acp) => { + setup_workspace(); bitfun_core::service::config::initialize_global_config() .await @@ -530,15 +445,7 @@ async fn main() -> Result<()> { None => { // Default: interactive TUI with startup page - let workspace_str = cli.project - .map(|p| { - if p == "." { p } else { - dunce::canonicalize(&p) - .map(|abs| abs.to_string_lossy().to_string()) - .unwrap_or(p) - } - }) - .unwrap_or_else(|| ".".to_string()); + let workspace_str = ".".to_string(); let default_agent = config.behavior.default_agent.clone(); run_interactive(config, default_agent, workspace_str).await?; diff --git a/src/apps/cli/src/modes/chat.rs b/src/apps/cli/src/modes/chat.rs index 8eac515df..76579cc36 100644 --- a/src/apps/cli/src/modes/chat.rs +++ b/src/apps/cli/src/modes/chat.rs @@ -29,7 +29,6 @@ use crate::ui::model_selector::ModelItem; use crate::ui::permission::PermissionAction; use crate::ui::provider_selector::ProviderSelection; use crate::ui::question::QuestionAction; -use crate::ui::rename_dialog::RenameAction; use crate::ui::session_selector::{SessionAction, SessionItem}; use crate::ui::skill_selector::SkillItem; use crate::ui::subagent_selector::SubagentItem; @@ -38,7 +37,6 @@ use crate::ui::theme::{ Appearance, EffectiveColorScheme, Theme, }; use crate::ui::theme_selector::ThemeItem; -use crate::ui::workspace_dialog::WorkspaceAction; use crate::ui::{init_terminal, restore_terminal}; use bitfun_core::agentic::agents::{get_agent_registry, AgentInfo}; use bitfun_core::agentic::tools::implementations::skills::registry::SkillRegistry; @@ -187,18 +185,6 @@ pub struct ChatMode { pending_mcp_tasks: Vec, } -fn normalize_workspace_path(path: &str) -> String { - let buf = PathBuf::from(path); - if buf.exists() { - dunce::canonicalize(&buf) - .unwrap_or(buf) - .to_string_lossy() - .to_string() - } else { - path.to_string() - } -} - /// Map agent_type to a display name for status messages fn agent_display_name(agent_type: &str) -> &'static str { match agent_type { @@ -254,8 +240,6 @@ impl ChatMode { || chat_view.subagent_selector_visible() || chat_view.mcp_selector_visible() || chat_view.mcp_add_dialog_visible() - || chat_view.rename_dialog_visible() - || chat_view.workspace_dialog_visible() || chat_view.provider_selector_visible() || chat_view.model_config_form_visible() || chat_view.theme_selector_visible() @@ -276,8 +260,6 @@ impl ChatMode { chat_view.hide_subagent_selector(); chat_view.hide_mcp_selector(); chat_view.hide_mcp_add_dialog(); - chat_view.hide_rename_dialog(); - chat_view.hide_workspace_dialog(); chat_view.hide_provider_selector(); chat_view.hide_model_config_form(); chat_view.hide_theme_selector(); @@ -299,8 +281,6 @@ impl ChatMode { crate::ui::chat::PopupType::SubagentSelector => chat_view.hide_subagent_selector(), crate::ui::chat::PopupType::McpSelector => chat_view.hide_mcp_selector(), crate::ui::chat::PopupType::McpAddDialog => chat_view.hide_mcp_add_dialog(), - crate::ui::chat::PopupType::RenameDialog => chat_view.hide_rename_dialog(), - crate::ui::chat::PopupType::WorkspaceDialog => chat_view.hide_workspace_dialog(), crate::ui::chat::PopupType::ProviderSelector => chat_view.hide_provider_selector(), crate::ui::chat::PopupType::ModelConfigForm => chat_view.hide_model_config_form(), crate::ui::chat::PopupType::ThemeSelector => { @@ -327,10 +307,6 @@ impl ChatMode { } crate::ui::chat::PopupType::McpSelector => chat_view.reshow_mcp_selector(), crate::ui::chat::PopupType::McpAddDialog => chat_view.reshow_mcp_add_dialog(), - crate::ui::chat::PopupType::RenameDialog => chat_view.reshow_rename_dialog(), - crate::ui::chat::PopupType::WorkspaceDialog => { - chat_view.reshow_workspace_dialog() - } crate::ui::chat::PopupType::ProviderSelector => { chat_view.reshow_provider_selector() } @@ -642,37 +618,6 @@ impl ChatMode { ); continue; } - // Detect workspace change from Bash tool completion - if let bitfun_events::ToolEventData::Completed { - tool_name, result, .. - } = tool_event - { - if tool_name == "Bash" { - if let Some(new_cwd) = - result.get("working_directory").and_then(|v| v.as_str()) - { - let current_ws = chat_state.workspace.as_deref().unwrap_or(""); - if !new_cwd.is_empty() && new_cwd != current_ws { - tracing::info!( - "Workspace changed: {} -> {}", - current_ws, - new_cwd - ); - chat_state.update_workspace(new_cwd.to_string()); - - // Current core binds sessions to the workspace at creation time. - // Keep the CLI state in sync; new sessions will use this workspace. - let agent = self.agent.clone(); - let ws = PathBuf::from(new_cwd); - let _ = tokio::task::block_in_place(|| { - rt_handle.block_on(async move { - agent.set_workspace_path(Some(ws)).await; - }) - }); - } - } - } - } chat_state.handle_tool_event(tool_event); chat_view.invalidate_lines_cache(); needs_redraw = true; @@ -1114,18 +1059,6 @@ impl ChatMode { SessionAction::Delete(item) => { self.handle_session_delete(&item, chat_view, chat_state, rt_handle); } - SessionAction::Rename { - session_id, - new_name, - } => { - self.handle_session_rename( - &session_id, - &new_name, - chat_view, - chat_state, - rt_handle, - ); - } SessionAction::Close | SessionAction::None => {} } return Ok(None); @@ -1216,20 +1149,6 @@ impl ChatMode { return Ok(None); } - if chat_view.rename_dialog_visible() { - let action = chat_view.rename_dialog_handle_key(key); - match action { - RenameAction::Confirm(new_name) => { - self.do_rename_session(&new_name, chat_view, chat_state, rt_handle); - } - RenameAction::Cancel => { - chat_view.set_status(Some("Rename cancelled".to_string())); - } - RenameAction::None => {} - } - return Ok(None); - } - if chat_view.provider_selector_visible() { if let Some(selection) = chat_view.provider_selector_handle_key(key) { self.handle_provider_selection(selection, chat_view); @@ -1255,24 +1174,6 @@ impl ChatMode { return Ok(None); } - if chat_view.workspace_dialog_visible() { - let action = chat_view.workspace_dialog_handle_key(key); - match action { - WorkspaceAction::Confirm(new_path) => { - if let Some(reason) = - self.apply_workspace_switch(&new_path, chat_view, chat_state, rt_handle)? - { - return Ok(Some(reason)); - } - } - WorkspaceAction::Cancel => { - chat_view.set_status(Some("Workspace switch cancelled".to_string())); - } - WorkspaceAction::None => {} - } - return Ok(None); - } - match (key.code, key.modifiers) { // Ctrl+V: read clipboard directly (reliable paste on Windows where // bracketed paste is broken — crossterm issue #962) @@ -1698,9 +1599,6 @@ impl ChatMode { } return Ok(Some(ChatExitReason::NewSession)); } - "rename_session" => { - chat_view.show_rename_dialog(&chat_state.session_name); - } "sessions" => { if chat_state.is_processing { chat_view.set_status(Some( @@ -1808,9 +1706,6 @@ impl ChatMode { "/connect" => { chat_view.show_provider_selector(); } - "/rename" => { - chat_view.show_rename_dialog(&chat_state.session_name); - } "/new" => { if chat_state.is_processing { chat_view.set_status(Some( @@ -1831,21 +1726,6 @@ impl ChatMode { } self.show_session_selector(chat_view, chat_state, rt_handle); } - "/workspace" => { - if chat_state.is_processing { - chat_view.set_status(Some( - "Cannot switch workspace while processing. Press Ctrl+C to cancel first." - .to_string(), - )); - return Ok(None); - } - let current = chat_state - .workspace - .as_deref() - .or(self.workspace.as_deref()) - .unwrap_or(""); - chat_view.show_workspace_dialog(current); - } "/mcps" => { self.show_mcp_selector(chat_view, chat_state, rt_handle); } @@ -2887,95 +2767,6 @@ impl ChatMode { Ok(()) } - /// Execute the rename: call core coordinator and update state - fn do_rename_session( - &self, - new_name: &str, - chat_view: &mut ChatView, - chat_state: &mut ChatState, - rt_handle: &tokio::runtime::Handle, - ) { - let sid = chat_state.core_session_id.clone(); - let _ = (new_name, chat_state, rt_handle); - chat_view.set_status(Some( - "Session rename is not available in this core version".to_string(), - )); - tracing::info!("Session rename skipped by CLI adapter: {}", sid); - } - - /// Switch workspace and switch to an appropriate session. - /// - /// Behavior: - /// - If there is an existing session for the new workspace, restore the most recent one. - /// - Otherwise, create a new session for the new workspace. - fn apply_workspace_switch( - &mut self, - new_path: &str, - chat_view: &mut ChatView, - chat_state: &mut ChatState, - rt_handle: &tokio::runtime::Handle, - ) -> Result> { - let target = normalize_workspace_path(new_path); - let current = chat_state - .workspace - .as_deref() - .map(normalize_workspace_path) - .unwrap_or_default(); - - if !current.is_empty() && current == target { - chat_view.set_status(Some("Workspace unchanged".to_string())); - return Ok(None); - } - - let agent = self.agent.clone(); - let workspace_path = Some(PathBuf::from(new_path)); - tokio::task::block_in_place(|| { - rt_handle.block_on(async { - agent.set_workspace_path(workspace_path).await; - }) - }); - - // Update local state (used by create_new_session and as fallback) - self.workspace = Some(new_path.to_string()); - chat_state.workspace = Some(new_path.to_string()); - - // Find the most recent session that belongs to this workspace - let agent = self.agent.clone(); - let maybe_session_id = tokio::task::block_in_place(|| { - rt_handle.block_on(async { - let workspace_path = agent.workspace_path_buf(); - let sessions = agent.coordinator().list_sessions(&workspace_path).await.ok()?; - sessions.first().map(|s| s.session_id.clone()) - }) - }); - - if let Some(session_id) = maybe_session_id { - if session_id == chat_state.core_session_id { - chat_view.set_status(Some(format!("Workspace switched to: {}", new_path))); - tracing::info!("Workspace switched to: {}", new_path); - return Ok(None); - } - - chat_view.set_status(Some(format!( - "Workspace switched to: {} (restoring session)", - new_path - ))); - tracing::info!( - "Workspace switched to: {} (restoring session {})", - new_path, - session_id - ); - return Ok(Some(ChatExitReason::SwitchSession(session_id))); - } - - chat_view.set_status(Some(format!( - "Workspace switched to: {} (creating new session)", - new_path - ))); - tracing::info!("Workspace switched to: {} (new session)", new_path); - Ok(Some(ChatExitReason::NewSession)) - } - /// Show skill selector popup with all available skills fn show_skill_selector( &self, @@ -3194,22 +2985,6 @@ impl ChatMode { } } - /// Handle session rename from the session selector - fn handle_session_rename( - &self, - session_id: &str, - new_name: &str, - chat_view: &mut ChatView, - chat_state: &mut ChatState, - rt_handle: &tokio::runtime::Handle, - ) { - let _ = (new_name, chat_state, rt_handle); - chat_view.set_status(Some( - "Session rename is not available in this core version".to_string(), - )); - tracing::info!("Session selector rename skipped by CLI adapter: {}", session_id); - } - /// Handle provider selection result (step 1 → step 2) fn handle_provider_selection(&self, selection: ProviderSelection, chat_view: &mut ChatView) { match selection { diff --git a/src/apps/cli/src/ui/chat/popups.rs b/src/apps/cli/src/ui/chat/popups.rs index 706b9b670..ec885ebd7 100644 --- a/src/apps/cli/src/ui/chat/popups.rs +++ b/src/apps/cli/src/ui/chat/popups.rs @@ -168,58 +168,6 @@ impl ChatView { self.agent_selector.confirm_selection() } - // ============ Rename dialog methods ============ - - pub fn show_rename_dialog(&mut self, current_name: &str) { - self.rename_dialog.show(current_name); - self.popup_stack.push(PopupType::RenameDialog); - } - - pub fn rename_dialog_visible(&self) -> bool { - self.rename_dialog.is_visible() - } - - pub fn hide_rename_dialog(&mut self) { - self.rename_dialog.hide(); - } - - pub fn reshow_rename_dialog(&mut self) { - self.rename_dialog.reshow(); - } - - pub fn rename_dialog_handle_key( - &mut self, - key: crossterm::event::KeyEvent, - ) -> RenameAction { - self.rename_dialog.handle_key_event(key) - } - - // ============ Workspace dialog methods ============ - - pub fn show_workspace_dialog(&mut self, current_workspace: &str) { - self.workspace_dialog.show(current_workspace); - self.popup_stack.push(PopupType::WorkspaceDialog); - } - - pub fn workspace_dialog_visible(&self) -> bool { - self.workspace_dialog.is_visible() - } - - pub fn hide_workspace_dialog(&mut self) { - self.workspace_dialog.hide(); - } - - pub fn reshow_workspace_dialog(&mut self) { - self.workspace_dialog.reshow(); - } - - pub fn workspace_dialog_handle_key( - &mut self, - key: crossterm::event::KeyEvent, - ) -> WorkspaceAction { - self.workspace_dialog.handle_key_event(key) - } - // ============ Skill selector methods ============ pub fn show_skill_selector(&mut self, skills: Vec) { @@ -402,10 +350,6 @@ impl ChatView { self.session_selector.remove_item(session_id); } - pub fn session_selector_update_name(&mut self, session_id: &str, new_name: &str) { - self.session_selector.update_item_name(session_id, new_name); - } - // ============ Provider selector methods (add model step 1) ============ pub fn show_provider_selector(&mut self) { diff --git a/src/apps/cli/src/ui/chat/render.rs b/src/apps/cli/src/ui/chat/render.rs index 269334d44..3ec299dcc 100644 --- a/src/apps/cli/src/ui/chat/render.rs +++ b/src/apps/cli/src/ui/chat/render.rs @@ -47,8 +47,6 @@ impl ChatView { self.render_subagent_selector(frame, chunks[1]); self.render_mcp_selector(frame, chunks[1]); self.render_mcp_add_dialog(frame, chunks[1]); - self.render_workspace_dialog(frame, chunks[1]); - self.render_rename_dialog(frame, chunks[1]); self.render_provider_selector(frame, chunks[1]); self.render_model_config_form(frame, chunks[1]); self.render_theme_selector(frame, chunks[1]); @@ -840,14 +838,6 @@ impl ChatView { self.mcp_add_dialog.render(frame, area, &self.theme); } - fn render_workspace_dialog(&self, frame: &mut Frame, area: Rect) { - self.workspace_dialog.render(frame, area, &self.theme); - } - - fn render_rename_dialog(&self, frame: &mut Frame, area: Rect) { - self.rename_dialog.render(frame, area, &self.theme); - } - fn render_provider_selector(&mut self, frame: &mut Frame, area: Rect) { self.provider_selector.render(frame, area, &self.theme); } diff --git a/src/apps/cli/src/ui/chat/state.rs b/src/apps/cli/src/ui/chat/state.rs index 501bbca0f..869ba459e 100644 --- a/src/apps/cli/src/ui/chat/state.rs +++ b/src/apps/cli/src/ui/chat/state.rs @@ -20,14 +20,12 @@ use super::model_selector::{ModelItem, ModelSelectorState}; use super::permission::render_permission_overlay; use super::provider_selector::{ProviderSelection, ProviderSelectorState}; use super::question::render_question_overlay; -use super::rename_dialog::{RenameAction, RenameDialogState}; use super::session_selector::{SessionAction, SessionItem, SessionSelectorState}; use super::skill_selector::{SkillItem, SkillSelectorState}; use super::subagent_selector::{SubagentItem, SubagentSelectorState}; use super::theme::{Theme, StyleKind}; use super::theme_selector::{ThemeItem, ThemeSelectorState}; use super::widgets::Spinner; -use super::workspace_dialog::{WorkspaceAction, WorkspaceDialogState}; use crate::chat_state::{ChatMessage, ChatState, FlowItem, MessageRole}; /// Types of popups that can be shown in the ChatView @@ -41,8 +39,6 @@ pub enum PopupType { SubagentSelector, McpSelector, McpAddDialog, - RenameDialog, - WorkspaceDialog, ProviderSelector, ModelConfigForm, ThemeSelector, @@ -175,10 +171,6 @@ pub struct ChatView { mcp_selector: McpSelectorState, /// MCP add dialog state mcp_add_dialog: McpAddDialogState, - /// Rename dialog state - rename_dialog: RenameDialogState, - /// Workspace dialog state - workspace_dialog: WorkspaceDialogState, /// Provider selector popup state (step 1 of add model) provider_selector: ProviderSelectorState, /// Model config form state (step 2 of add model) @@ -283,8 +275,6 @@ impl ChatView { subagent_selector: SubagentSelectorState::new(), mcp_selector: McpSelectorState::new(), mcp_add_dialog: McpAddDialogState::new(), - rename_dialog: RenameDialogState::new(), - workspace_dialog: WorkspaceDialogState::new(), provider_selector: ProviderSelectorState::new(), model_config_form: ModelConfigFormState::new(), theme_selector: ThemeSelectorState::new(), diff --git a/src/apps/cli/src/ui/command_palette.rs b/src/apps/cli/src/ui/command_palette.rs index 16bec139b..0a3d10a79 100644 --- a/src/apps/cli/src/ui/command_palette.rs +++ b/src/apps/cli/src/ui/command_palette.rs @@ -48,12 +48,6 @@ pub fn default_palette_items() -> Vec { description: "Start a new conversation".into(), group: "Session".into(), }, - PaletteItem { - id: "rename_session".into(), - label: "Rename session".into(), - description: "Rename the current session".into(), - group: "Session".into(), - }, PaletteItem { id: "sessions".into(), label: "Sessions".into(), @@ -93,6 +87,13 @@ pub fn default_palette_items() -> Vec { description: "Switch agent mode".into(), group: "Agent".into(), }, + // MCP group + PaletteItem { + id: "mcp_servers".into(), + label: "MCP servers".into(), + description: "Manage MCP servers".into(), + group: "MCP".into(), + }, // System group PaletteItem { id: "help".into(), diff --git a/src/apps/cli/src/ui/mod.rs b/src/apps/cli/src/ui/mod.rs index de3f4669b..e4a50a711 100644 --- a/src/apps/cli/src/ui/mod.rs +++ b/src/apps/cli/src/ui/mod.rs @@ -11,13 +11,11 @@ pub mod mcp_add_dialog; pub mod mcp_selector; pub mod model_selector; pub mod provider_selector; -pub mod rename_dialog; pub mod session_selector; pub mod skill_selector; pub mod subagent_selector; pub mod theme; pub mod theme_selector; -pub mod workspace_dialog; pub mod text_input; pub mod widgets; pub mod startup; diff --git a/src/apps/cli/src/ui/rename_dialog.rs b/src/apps/cli/src/ui/rename_dialog.rs deleted file mode 100644 index df4f94001..000000000 --- a/src/apps/cli/src/ui/rename_dialog.rs +++ /dev/null @@ -1,243 +0,0 @@ -/// Rename dialog for renaming the current session -/// -/// A compact input overlay that allows the user to type a new session name. -/// Renders as a centered input box over the messages area. -use crossterm::event::{KeyCode, KeyEvent}; -use ratatui::{ - layout::Rect, - style::{Color, Modifier, Style}, - text::{Line, Span}, - widgets::{Block, Borders, Clear, Paragraph}, - Frame, -}; - -use crate::ui::theme::{StyleKind, Theme}; - -/// Action returned by the rename dialog -#[derive(Debug, Clone)] -pub enum RenameAction { - /// No action, dialog consumed the key - None, - /// User confirmed the new name - Confirm(String), - /// User cancelled the rename - Cancel, -} - -/// Rename dialog state -pub struct RenameDialogState { - visible: bool, - /// Text buffer for the new name - buffer: String, - /// Cursor position (in chars) - cursor: usize, -} - -impl RenameDialogState { - pub fn new() -> Self { - Self { - visible: false, - buffer: String::new(), - cursor: 0, - } - } - - /// Show the dialog pre-filled with the current session name - pub fn show(&mut self, current_name: &str) { - self.buffer = current_name.to_string(); - self.cursor = self.buffer.chars().count(); - self.visible = true; - } - - pub fn hide(&mut self) { - self.visible = false; - // Note: we don't clear buffer here to support back navigation - } - - /// Reshow the rename dialog (for back navigation) - pub fn reshow(&mut self) { - self.visible = true; - } - - pub fn is_visible(&self) -> bool { - self.visible - } - - /// Handle a key event, returning what action to take - pub fn handle_key_event(&mut self, key: KeyEvent) -> RenameAction { - if !self.visible { - return RenameAction::None; - } - - match key.code { - KeyCode::Enter => { - let name = self.buffer.trim().to_string(); - self.hide(); - if name.is_empty() { - RenameAction::Cancel - } else { - RenameAction::Confirm(name) - } - } - KeyCode::Esc => { - self.hide(); - RenameAction::Cancel - } - KeyCode::Char(c) => { - let byte_pos = self.char_to_byte(self.cursor); - self.buffer.insert(byte_pos, c); - self.cursor += 1; - RenameAction::None - } - KeyCode::Backspace => { - if self.cursor > 0 { - self.cursor -= 1; - let byte_pos = self.char_to_byte(self.cursor); - let next_byte = self.char_to_byte(self.cursor + 1); - self.buffer.replace_range(byte_pos..next_byte, ""); - } - RenameAction::None - } - KeyCode::Left => { - self.cursor = self.cursor.saturating_sub(1); - RenameAction::None - } - KeyCode::Right => { - let max = self.buffer.chars().count(); - self.cursor = (self.cursor + 1).min(max); - RenameAction::None - } - KeyCode::Home => { - self.cursor = 0; - RenameAction::None - } - KeyCode::End => { - self.cursor = self.buffer.chars().count(); - RenameAction::None - } - _ => RenameAction::None, - } - } - - /// Render the rename dialog as a centered overlay - pub fn render(&self, frame: &mut Frame, area: Rect, theme: &Theme) { - if !self.visible { - return; - } - - // Dialog dimensions: a compact box with title, input line, and hint - let dialog_width = area.width.saturating_sub(8).min(50); - let dialog_height: u16 = 5; // border(1) + label(1) + input(1) + hint(1) + border(1) - if dialog_width < 20 || area.height < dialog_height + 2 { - return; - } - - let dialog_x = area.x + (area.width.saturating_sub(dialog_width)) / 2; - let dialog_y = area.y + (area.height.saturating_sub(dialog_height)) / 2; - - let dialog_area = Rect { - x: dialog_x, - y: dialog_y, - width: dialog_width, - height: dialog_height, - }; - - // Clear background - frame.render_widget(Clear, dialog_area); - - // Draw border - let block = Block::default() - .borders(Borders::ALL) - .border_style(theme.style(StyleKind::Primary)) - .style(Style::default().bg(theme.background)) - .title(" Rename Session "); - - let inner = block.inner(dialog_area); - frame.render_widget(block, dialog_area); - - if inner.height < 3 || inner.width < 10 { - return; - } - - // Row 0: label - let label_area = Rect { - x: inner.x, - y: inner.y, - width: inner.width, - height: 1, - }; - let label = Paragraph::new(Line::from(Span::styled( - "Enter new session name:", - theme.style(StyleKind::Info), - ))); - frame.render_widget(label, label_area); - - // Row 1: input field with cursor - let input_area = Rect { - x: inner.x, - y: inner.y + 1, - width: inner.width, - height: 1, - }; - - let cursor_byte = self.char_to_byte(self.cursor); - let before_cursor = &self.buffer[..cursor_byte]; - let after_cursor = &self.buffer[cursor_byte..]; - - let input_line = Line::from(vec![ - Span::styled( - "> ", - theme.style(StyleKind::Primary).add_modifier(Modifier::BOLD), - ), - Span::styled(before_cursor, Style::default().fg(Color::White)), - Span::styled( - if after_cursor.is_empty() { - " " - } else { - &after_cursor[..after_cursor - .char_indices() - .nth(1) - .map(|(i, _)| i) - .unwrap_or(after_cursor.len())] - }, - Style::default().fg(Color::Black).bg(Color::White), - ), - Span::styled( - if after_cursor.is_empty() { - "" - } else { - let first_char_end = after_cursor - .char_indices() - .nth(1) - .map(|(i, _)| i) - .unwrap_or(after_cursor.len()); - &after_cursor[first_char_end..] - }, - Style::default().fg(Color::White), - ), - ]); - let input_widget = Paragraph::new(input_line); - frame.render_widget(input_widget, input_area); - - // Row 2: hint - let hint_area = Rect { - x: inner.x, - y: inner.y + 2, - width: inner.width, - height: 1, - }; - let hint = Paragraph::new(Line::from(Span::styled( - "Enter: Confirm Esc: Cancel", - theme.style(StyleKind::Muted), - ))); - frame.render_widget(hint, hint_area); - } - - fn char_to_byte(&self, char_pos: usize) -> usize { - self.buffer - .char_indices() - .nth(char_pos) - .map(|(i, _)| i) - .unwrap_or(self.buffer.len()) - } -} diff --git a/src/apps/cli/src/ui/session_selector.rs b/src/apps/cli/src/ui/session_selector.rs index aecd71c0f..79d1cf163 100644 --- a/src/apps/cli/src/ui/session_selector.rs +++ b/src/apps/cli/src/ui/session_selector.rs @@ -2,7 +2,7 @@ /// /// Overlay popup that displays all available sessions /// and allows the user to select one to switch to. -/// Supports inline rename (Ctrl+R) and delete (Ctrl+D). +/// Supports switching and deleting current-project sessions. use crossterm::event::{KeyCode, KeyEvent, KeyModifiers, MouseButton, MouseEvent, MouseEventKind}; use ratatui::{ @@ -33,8 +33,6 @@ pub enum SessionAction { Switch(SessionItem), /// User wants to delete the selected session Delete(SessionItem), - /// User finished renaming a session - Rename { session_id: String, new_name: String }, /// User cancelled / closed the popup Close, } @@ -116,13 +114,6 @@ impl SessionSelectorState { self.list_state.select(Some(clamped)); } - /// Update item name after rename - pub fn update_item_name(&mut self, session_id: &str, new_name: &str) { - if let Some(item) = self.items.iter_mut().find(|s| s.session_id == session_id) { - item.session_name = new_name.to_string(); - } - } - fn selected_item(&self) -> Option<&SessionItem> { let idx = self.list_state.selected()?; self.items.get(idx) @@ -170,35 +161,16 @@ impl SessionSelectorState { SessionAction::None } } - // Ctrl+R: start inline rename - (KeyCode::Char('r'), KeyModifiers::CONTROL) => { - if let Some(item) = self.selected_item() { - self.rename_buffer = item.session_name.clone(); - self.rename_cursor = self.rename_buffer.chars().count(); - self.rename_editing = true; - } - SessionAction::None - } _ => SessionAction::None, } } - /// Handle keys while in rename editing mode + /// Handle keys while in rename editing mode. + /// This path is unreachable while rename is disabled, but keeps stale state harmless. fn handle_rename_key(&mut self, key: KeyEvent) -> SessionAction { match key.code { KeyCode::Enter => { - let new_name = self.rename_buffer.trim().to_string(); self.rename_editing = false; - if new_name.is_empty() { - return SessionAction::None; - } - if let Some(item) = self.selected_item() { - let sid = item.session_id.clone(); - return SessionAction::Rename { - session_id: sid, - new_name, - }; - } SessionAction::None } KeyCode::Esc => { @@ -373,7 +345,7 @@ impl SessionSelectorState { let hint_text = if self.rename_editing { " Enter: Save Esc: Cancel " } else { - " ↑↓: Navigate Enter: Switch Ctrl+R: Rename Ctrl+D: Delete Esc: Close " + " Up/Down: Navigate Enter: Switch Ctrl+D: Delete Esc: Close " }; let hint = Paragraph::new(Line::from(Span::styled( hint_text, diff --git a/src/apps/cli/src/ui/startup.rs b/src/apps/cli/src/ui/startup.rs index b38157be9..7e52e9466 100644 --- a/src/apps/cli/src/ui/startup.rs +++ b/src/apps/cli/src/ui/startup.rs @@ -28,7 +28,6 @@ use super::agent_selector::{AgentItem, AgentSelectorState}; use super::session_selector::{SessionAction, SessionItem, SessionSelectorState}; use super::skill_selector::{SkillItem, SkillSelectorState}; use super::subagent_selector::{SubagentItem, SubagentSelectorState}; -use super::workspace_dialog::{WorkspaceAction, WorkspaceDialogState}; use super::theme::{ builtin_theme_json, resolve_appearance, resolve_effective_color_scheme, EffectiveColorScheme, Theme, @@ -50,7 +49,6 @@ pub enum PopupType { SessionSelector, SkillSelector, SubagentSelector, - WorkspaceDialog, ProviderSelector, ModelConfigForm, } @@ -129,7 +127,6 @@ const TIPS: &[&str] = &[ "Use /skills to browse and execute available skills", "Press Up/Down to cycle through input history", "Use /new to start a fresh conversation session", - "Use /rename to rename the current session", ]; /// Startup page @@ -153,7 +150,6 @@ pub struct StartupPage { session_selector: SessionSelectorState, skill_selector: SkillSelectorState, subagent_selector: SubagentSelectorState, - workspace_dialog: WorkspaceDialogState, provider_selector: ProviderSelectorState, model_config_form: ModelConfigFormState, @@ -225,7 +221,6 @@ impl StartupPage { session_selector: SessionSelectorState::new(), skill_selector: SkillSelectorState::new(), subagent_selector: SubagentSelectorState::new(), - workspace_dialog: WorkspaceDialogState::new(), provider_selector: ProviderSelectorState::new(), model_config_form: ModelConfigFormState::new(), coordinator, @@ -253,7 +248,7 @@ impl StartupPage { &self.agent_type } - /// Get the current workspace path (may have been changed via /workspace) + /// Get the current workspace path for this CLI process. pub fn workspace(&self) -> Option { if self.workspace_display.is_empty() { None @@ -277,7 +272,6 @@ impl StartupPage { || self.session_selector.is_visible() || self.skill_selector.is_visible() || self.subagent_selector.is_visible() - || self.workspace_dialog.is_visible() || self.provider_selector.is_visible() || self.model_config_form.is_visible() } @@ -423,7 +417,6 @@ impl StartupPage { self.session_selector.render(frame, size, &self.theme); self.skill_selector.render(frame, size, &self.theme); self.subagent_selector.render(frame, size, &self.theme); - self.workspace_dialog.render(frame, size, &self.theme); self.provider_selector.render(frame, size, &self.theme); self.model_config_form.render_mut(frame, size, &self.theme); @@ -770,9 +763,6 @@ impl StartupPage { SessionAction::Delete(item) => { self.handle_session_delete(&item); } - SessionAction::Rename { session_id, new_name } => { - self.handle_session_rename(&session_id, &new_name); - } SessionAction::Close => { self.navigate_back(); } @@ -839,21 +829,6 @@ impl StartupPage { return None; } - if self.workspace_dialog.is_visible() { - let action = self.workspace_dialog.handle_key_event(key); - match action { - WorkspaceAction::Confirm(new_path) => { - self.do_switch_workspace(&new_path); - } - WorkspaceAction::Cancel => { - self.navigate_back(); - self.status = Some("Workspace switch cancelled".to_string()); - } - WorkspaceAction::None => {} - } - return None; - } - // ── Command palette intercepts all keys when visible ── if self.command_palette.is_visible() { @@ -1002,9 +977,6 @@ impl StartupPage { "new_session" => { return Some(StartupResult::NewSession { prompt: None }); } - "rename_session" => { - self.status = Some("No active session to rename on startup page".to_string()); - } "sessions" => { self.show_session_selector(); } @@ -1027,6 +999,12 @@ impl StartupPage { "switch_agent" => { self.show_agent_selector(); } + // MCP group + "mcp_servers" => { + return Some(StartupResult::NewSession { + prompt: Some("/mcps".to_string()), + }); + } // System group "help" => { self.info_popup = Some(KEYBOARD_SHORTCUTS_HELP.to_string()); @@ -1075,10 +1053,6 @@ impl StartupPage { "/subagents" => { self.show_subagent_selector(); } - "/workspace" => { - self.push_current_popup_to_stack(); - self.workspace_dialog.show(&self.workspace_display); - } "/mcps" => { // Enter chat mode and auto-trigger /mcps command return Some(StartupResult::NewSession { @@ -1127,9 +1101,6 @@ impl StartupPage { } else if self.subagent_selector.is_visible() { self.popup_stack.push(PopupType::SubagentSelector); self.subagent_selector.hide(); - } else if self.workspace_dialog.is_visible() { - self.popup_stack.push(PopupType::WorkspaceDialog); - self.workspace_dialog.hide(); } else if self.provider_selector.is_visible() { self.popup_stack.push(PopupType::ProviderSelector); self.provider_selector.hide(); @@ -1206,14 +1177,6 @@ impl StartupPage { } } - fn handle_session_rename(&mut self, session_id: &str, new_name: &str) { - let _ = new_name; - self.status = Some( - "Session rename is not available in this core version".to_string(), - ); - tracing::info!("Startup session rename skipped by CLI adapter: {}", session_id); - } - fn show_model_selector(&mut self) { self.push_current_popup_to_stack(); @@ -1654,8 +1617,6 @@ impl StartupPage { self.skill_selector.hide(); } else if self.subagent_selector.is_visible() { self.subagent_selector.hide(); - } else if self.workspace_dialog.is_visible() { - self.workspace_dialog.hide(); } else if self.provider_selector.is_visible() { self.provider_selector.hide(); } else if self.model_config_form.is_visible() { @@ -1671,7 +1632,6 @@ impl StartupPage { PopupType::SessionSelector => self.session_selector.reshow(), PopupType::SkillSelector => self.skill_selector.reshow(), PopupType::SubagentSelector => self.subagent_selector.reshow(), - PopupType::WorkspaceDialog => self.workspace_dialog.reshow(), PopupType::ProviderSelector => self.provider_selector.reshow(), PopupType::ModelConfigForm => self.model_config_form.reshow(), } @@ -1686,7 +1646,6 @@ impl StartupPage { self.session_selector.hide(); self.skill_selector.hide(); self.subagent_selector.hide(); - self.workspace_dialog.hide(); self.provider_selector.hide(); self.model_config_form.hide(); self.popup_stack.clear(); @@ -1700,19 +1659,6 @@ impl StartupPage { modes.into_iter().filter(|mode| mode.enabled).collect() } - /// Switch workspace: update global path and display - fn do_switch_workspace(&mut self, new_path: &str) { - use std::path::PathBuf; - - let _path_buf = PathBuf::from(new_path); - - // Update display - self.workspace_display = new_path.to_string(); - - self.status = Some(format!("Workspace switched to: {}", new_path)); - tracing::info!("Workspace switched to: {}", new_path); - } - fn cycle_agent(&mut self, offset: isize) { let modes = self.get_enabled_mode_agents(); if modes.len() <= 1 { diff --git a/src/apps/cli/src/ui/string_utils.rs b/src/apps/cli/src/ui/string_utils.rs index 643ea65a8..1802b02ce 100644 --- a/src/apps/cli/src/ui/string_utils.rs +++ b/src/apps/cli/src/ui/string_utils.rs @@ -77,43 +77,6 @@ pub fn strip_ansi_codes(s: &str) -> String { result } -/// Truncate a string to fit within a given display width (columns). -/// Returns the truncated string. If truncated, appends "…". -/// Handles CJK wide characters correctly. -pub fn truncate_to_display_width(s: &str, max_width: usize) -> String { - if max_width == 0 { - return String::new(); - } - - let mut width = 0usize; - let mut result = String::new(); - let mut truncated = false; - - // Reserve 1 column for "…" if we might need to truncate - let effective_max = max_width; - - for ch in s.chars() { - let ch_width = UnicodeWidthChar::width(ch).unwrap_or(0); - if width + ch_width > effective_max { - truncated = true; - break; - } - result.push(ch); - width += ch_width; - } - - if truncated { - // Try to fit "…" by removing last char if needed - if width >= max_width { - // Pop last char to make room for "…" - result.pop(); - } - result.push('\u{2026}'); // … - } - - result -} - /// Hard-wrap a single line to fit within display width (columns). /// Preserves all characters (no truncation), splitting long lines into multiple lines. pub fn wrap_to_display_width(s: &str, max_width: usize) -> Vec { diff --git a/src/apps/cli/src/ui/workspace_dialog.rs b/src/apps/cli/src/ui/workspace_dialog.rs deleted file mode 100644 index aa773c5b3..000000000 --- a/src/apps/cli/src/ui/workspace_dialog.rs +++ /dev/null @@ -1,323 +0,0 @@ -/// Workspace dialog for switching the current workspace directory -/// -/// A compact input overlay that allows the user to type a new workspace path. -/// Renders as a centered input box over the messages area. -/// Shows the current workspace path and validates the new path exists. - -use crossterm::event::{KeyCode, KeyEvent}; -use ratatui::{ - layout::Rect, - style::{Color, Modifier, Style}, - text::{Line, Span}, - widgets::{Block, Borders, Clear, Paragraph}, - Frame, -}; - -use crate::ui::theme::{StyleKind, Theme}; - -/// Action returned by the workspace dialog -#[derive(Debug, Clone)] -pub enum WorkspaceAction { - /// No action, dialog consumed the key - None, - /// User confirmed the new workspace path - Confirm(String), - /// User cancelled the dialog - Cancel, -} - -/// Workspace dialog state -pub struct WorkspaceDialogState { - visible: bool, - /// Text buffer for the workspace path - buffer: String, - /// Cursor position (in chars) - cursor: usize, - /// Current workspace path (shown as reference) - current_workspace: String, - /// Validation error message (shown when path is invalid) - error: Option, -} - -impl WorkspaceDialogState { - pub fn new() -> Self { - Self { - visible: false, - buffer: String::new(), - cursor: 0, - current_workspace: String::new(), - error: None, - } - } - - /// Show the dialog with the current workspace path as reference - pub fn show(&mut self, current_workspace: &str) { - self.current_workspace = current_workspace.to_string(); - self.buffer = current_workspace.to_string(); - self.cursor = self.buffer.chars().count(); - self.error = None; - self.visible = true; - } - - pub fn hide(&mut self) { - self.visible = false; - // Note: we don't clear buffer here to support back navigation - } - - /// Reshow the workspace dialog (for back navigation) - pub fn reshow(&mut self) { - self.visible = true; - } - - pub fn is_visible(&self) -> bool { - self.visible - } - - /// Handle a key event, returning what action to take - pub fn handle_key_event(&mut self, key: KeyEvent) -> WorkspaceAction { - if !self.visible { - return WorkspaceAction::None; - } - - match key.code { - KeyCode::Enter => { - let path = self.buffer.trim().to_string(); - if path.is_empty() { - self.hide(); - return WorkspaceAction::Cancel; - } - - // Validate the path exists and is a directory - let resolved = if path == "." { - std::env::current_dir() - .ok() - .map(|p| p.to_string_lossy().to_string()) - .unwrap_or(path.clone()) - } else { - path.clone() - }; - - let path_buf = std::path::PathBuf::from(&resolved); - if !path_buf.exists() { - self.error = Some(format!("Path does not exist: {}", resolved)); - return WorkspaceAction::None; - } - if !path_buf.is_dir() { - self.error = Some(format!("Not a directory: {}", resolved)); - return WorkspaceAction::None; - } - - // Canonicalize the path - let canonical = dunce::canonicalize(&path_buf) - .unwrap_or(path_buf) - .to_string_lossy() - .to_string(); - - self.hide(); - WorkspaceAction::Confirm(canonical) - } - KeyCode::Esc => { - self.hide(); - WorkspaceAction::Cancel - } - KeyCode::Char(c) => { - self.error = None; - let byte_pos = self.char_to_byte(self.cursor); - self.buffer.insert(byte_pos, c); - self.cursor += 1; - WorkspaceAction::None - } - KeyCode::Backspace => { - if self.cursor > 0 { - self.error = None; - self.cursor -= 1; - let byte_pos = self.char_to_byte(self.cursor); - let next_byte = self.char_to_byte(self.cursor + 1); - self.buffer.replace_range(byte_pos..next_byte, ""); - } - WorkspaceAction::None - } - KeyCode::Left => { - self.cursor = self.cursor.saturating_sub(1); - WorkspaceAction::None - } - KeyCode::Right => { - let max = self.buffer.chars().count(); - self.cursor = (self.cursor + 1).min(max); - WorkspaceAction::None - } - KeyCode::Home => { - self.cursor = 0; - WorkspaceAction::None - } - KeyCode::End => { - self.cursor = self.buffer.chars().count(); - WorkspaceAction::None - } - _ => WorkspaceAction::None, - } - } - - /// Render the workspace dialog as a centered overlay - pub fn render(&self, frame: &mut Frame, area: Rect, theme: &Theme) { - if !self.visible { - return; - } - - // Dialog dimensions: wider than rename dialog to accommodate paths - let dialog_width = area.width.saturating_sub(4).min(80); - let has_error = self.error.is_some(); - let dialog_height: u16 = if has_error { 7 } else { 6 }; - // border(1) + current(1) + label(1) + input(1) + [error(1)] + hint(1) + border(1) - if dialog_width < 30 || area.height < dialog_height + 2 { - return; - } - - let dialog_x = area.x + (area.width.saturating_sub(dialog_width)) / 2; - let dialog_y = area.y + (area.height.saturating_sub(dialog_height)) / 2; - - let dialog_area = Rect { - x: dialog_x, - y: dialog_y, - width: dialog_width, - height: dialog_height, - }; - - // Clear background - frame.render_widget(Clear, dialog_area); - - // Draw border - let block = Block::default() - .borders(Borders::ALL) - .border_style(theme.style(StyleKind::Primary)) - .style(Style::default().bg(theme.background)) - .title(" Switch Workspace "); - - let inner = block.inner(dialog_area); - frame.render_widget(block, dialog_area); - - if inner.height < 3 || inner.width < 10 { - return; - } - - let mut row = 0; - - // Row 0: current workspace - let current_area = Rect { - x: inner.x, - y: inner.y + row, - width: inner.width, - height: 1, - }; - let current_display = if self.current_workspace.is_empty() { - "No workspace".to_string() - } else { - self.current_workspace.clone() - }; - let current_line = Line::from(vec![ - Span::styled("Current: ", theme.style(StyleKind::Muted)), - Span::styled(current_display, theme.style(StyleKind::Info)), - ]); - frame.render_widget(Paragraph::new(current_line), current_area); - row += 1; - - // Row 1: label - let label_area = Rect { - x: inner.x, - y: inner.y + row, - width: inner.width, - height: 1, - }; - let label = Paragraph::new(Line::from(Span::styled( - "Enter new workspace path:", - theme.style(StyleKind::Info), - ))); - frame.render_widget(label, label_area); - row += 1; - - // Row 2: input field with cursor - let input_area = Rect { - x: inner.x, - y: inner.y + row, - width: inner.width, - height: 1, - }; - - let cursor_byte = self.char_to_byte(self.cursor); - let before_cursor = &self.buffer[..cursor_byte]; - let after_cursor = &self.buffer[cursor_byte..]; - - let input_line = Line::from(vec![ - Span::styled( - "> ", - theme.style(StyleKind::Primary).add_modifier(Modifier::BOLD), - ), - Span::styled(before_cursor, Style::default().fg(Color::White)), - Span::styled( - if after_cursor.is_empty() { - " " - } else { - &after_cursor[..after_cursor - .char_indices() - .nth(1) - .map(|(i, _)| i) - .unwrap_or(after_cursor.len())] - }, - Style::default().fg(Color::Black).bg(Color::White), - ), - Span::styled( - if after_cursor.is_empty() { - "" - } else { - let first_char_end = after_cursor - .char_indices() - .nth(1) - .map(|(i, _)| i) - .unwrap_or(after_cursor.len()); - &after_cursor[first_char_end..] - }, - Style::default().fg(Color::White), - ), - ]); - let input_widget = Paragraph::new(input_line); - frame.render_widget(input_widget, input_area); - row += 1; - - // Row 3 (optional): error message - if let Some(ref error) = self.error { - let error_area = Rect { - x: inner.x, - y: inner.y + row, - width: inner.width, - height: 1, - }; - let error_line = Paragraph::new(Line::from(Span::styled( - error.as_str(), - Style::default().fg(Color::Red), - ))); - frame.render_widget(error_line, error_area); - row += 1; - } - - // Last row: hint - let hint_area = Rect { - x: inner.x, - y: inner.y + row, - width: inner.width, - height: 1, - }; - let hint = Paragraph::new(Line::from(Span::styled( - "Enter: Confirm Esc: Cancel", - theme.style(StyleKind::Muted), - ))); - frame.render_widget(hint, hint_area); - } - - fn char_to_byte(&self, char_pos: usize) -> usize { - self.buffer - .char_indices() - .nth(char_pos) - .map(|(i, _)| i) - .unwrap_or(self.buffer.len()) - } -} From b4817df2fa919edc1b790a12b7af0576bd475416 Mon Sep 17 00:00:00 2001 From: kev1n77 Date: Tue, 12 May 2026 18:23:07 +0800 Subject: [PATCH 2/2] chore(cli): remove redundant preset themes --- src/apps/cli/src/config.rs | 4 +- src/apps/cli/src/modes/chat.rs | 9 +- src/apps/cli/src/ui/startup.rs | 2 +- src/apps/cli/src/ui/theme.rs | 180 ------------- src/apps/cli/src/ui/theme_selector.rs | 19 +- src/apps/cli/themes/presets/aura.json | 69 ----- src/apps/cli/themes/presets/ayu.json | 80 ------ src/apps/cli/themes/presets/carbonfox.json | 248 ----------------- .../cli/themes/presets/catppuccin-frappe.json | 233 ---------------- .../themes/presets/catppuccin-macchiato.json | 233 ---------------- src/apps/cli/themes/presets/catppuccin.json | 112 -------- src/apps/cli/themes/presets/cobalt2.json | 228 ---------------- src/apps/cli/themes/presets/dracula.json | 219 --------------- src/apps/cli/themes/presets/flexoki.json | 237 ---------------- src/apps/cli/themes/presets/gruvbox.json | 242 ----------------- src/apps/cli/themes/presets/kanagawa.json | 77 ------ src/apps/cli/themes/presets/lucent-orng.json | 237 ---------------- src/apps/cli/themes/presets/material.json | 235 ---------------- src/apps/cli/themes/presets/matrix.json | 77 ------ src/apps/cli/themes/presets/mercury.json | 252 ------------------ src/apps/cli/themes/presets/monokai.json | 221 --------------- src/apps/cli/themes/presets/nightowl.json | 221 --------------- src/apps/cli/themes/presets/nord.json | 223 ---------------- src/apps/cli/themes/presets/orng.json | 249 ----------------- src/apps/cli/themes/presets/osaka-jade.json | 93 ------- src/apps/cli/themes/presets/palenight.json | 222 --------------- src/apps/cli/themes/presets/rosepine.json | 234 ---------------- src/apps/cli/themes/presets/solarized.json | 223 ---------------- src/apps/cli/themes/presets/synthwave84.json | 226 ---------------- src/apps/cli/themes/presets/vercel.json | 245 ----------------- src/apps/cli/themes/presets/vesper.json | 218 --------------- src/apps/cli/themes/presets/zenburn.json | 223 ---------------- 32 files changed, 6 insertions(+), 5585 deletions(-) delete mode 100644 src/apps/cli/themes/presets/aura.json delete mode 100644 src/apps/cli/themes/presets/ayu.json delete mode 100644 src/apps/cli/themes/presets/carbonfox.json delete mode 100644 src/apps/cli/themes/presets/catppuccin-frappe.json delete mode 100644 src/apps/cli/themes/presets/catppuccin-macchiato.json delete mode 100644 src/apps/cli/themes/presets/catppuccin.json delete mode 100644 src/apps/cli/themes/presets/cobalt2.json delete mode 100644 src/apps/cli/themes/presets/dracula.json delete mode 100644 src/apps/cli/themes/presets/flexoki.json delete mode 100644 src/apps/cli/themes/presets/gruvbox.json delete mode 100644 src/apps/cli/themes/presets/kanagawa.json delete mode 100644 src/apps/cli/themes/presets/lucent-orng.json delete mode 100644 src/apps/cli/themes/presets/material.json delete mode 100644 src/apps/cli/themes/presets/matrix.json delete mode 100644 src/apps/cli/themes/presets/mercury.json delete mode 100644 src/apps/cli/themes/presets/monokai.json delete mode 100644 src/apps/cli/themes/presets/nightowl.json delete mode 100644 src/apps/cli/themes/presets/nord.json delete mode 100644 src/apps/cli/themes/presets/orng.json delete mode 100644 src/apps/cli/themes/presets/osaka-jade.json delete mode 100644 src/apps/cli/themes/presets/palenight.json delete mode 100644 src/apps/cli/themes/presets/rosepine.json delete mode 100644 src/apps/cli/themes/presets/solarized.json delete mode 100644 src/apps/cli/themes/presets/synthwave84.json delete mode 100644 src/apps/cli/themes/presets/vercel.json delete mode 100644 src/apps/cli/themes/presets/vesper.json delete mode 100644 src/apps/cli/themes/presets/zenburn.json diff --git a/src/apps/cli/src/config.rs b/src/apps/cli/src/config.rs index 7ccbfaf8e..6fc4f51e8 100644 --- a/src/apps/cli/src/config.rs +++ b/src/apps/cli/src/config.rs @@ -28,7 +28,7 @@ pub struct CliConfig { pub struct UiConfig { /// Theme (dark, light, auto) pub theme: String, - /// Theme ID (built-in: "bitfun"; custom: filename in themes dir without ".json") + /// Theme ID (built-in preset name; custom: filename in themes dir without ".json") pub theme_id: String, /// Show tips pub show_tips: bool, @@ -73,7 +73,7 @@ impl Default for UiConfig { fn default() -> Self { Self { theme: "dark".to_string(), - theme_id: "bitfun".to_string(), + theme_id: "cursor".to_string(), show_tips: true, animation: true, color_scheme: "default".to_string(), diff --git a/src/apps/cli/src/modes/chat.rs b/src/apps/cli/src/modes/chat.rs index 76579cc36..f0a382d2e 100644 --- a/src/apps/cli/src/modes/chat.rs +++ b/src/apps/cli/src/modes/chat.rs @@ -1789,14 +1789,7 @@ impl ChatMode { fn list_available_themes(&self) -> Vec { let mut themes = Vec::new(); - themes.push(ThemeItem { - id: "bitfun".to_string(), - }); - for id in builtin_theme_ids() { - if id == "bitfun" { - continue; - } themes.push(ThemeItem { id }); } @@ -1825,7 +1818,7 @@ impl ChatMode { return Theme::monochrome(); } - if id.is_empty() || id.eq_ignore_ascii_case("bitfun") { + if id.is_empty() { return base; } diff --git a/src/apps/cli/src/ui/startup.rs b/src/apps/cli/src/ui/startup.rs index 7e52e9466..840382d28 100644 --- a/src/apps/cli/src/ui/startup.rs +++ b/src/apps/cli/src/ui/startup.rs @@ -193,7 +193,7 @@ impl StartupPage { Theme::monochrome() } else { let id = config.ui.theme_id.trim(); - if id.is_empty() || id.eq_ignore_ascii_case("bitfun") { + if id.is_empty() { base } else if let Some(json) = builtin_theme_json(id) { base.apply_opencode_theme_json(json, appearance) diff --git a/src/apps/cli/src/ui/theme.rs b/src/apps/cli/src/ui/theme.rs index 6f8f2ea31..e0750acc2 100644 --- a/src/apps/cli/src/ui/theme.rs +++ b/src/apps/cli/src/ui/theme.rs @@ -678,46 +678,6 @@ static BUILTIN_OPENCODE_THEMES: Lazy> = } HashMap::from([ - parse( - "aura", - include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/themes/presets/aura.json")), - ), - parse( - "ayu", - include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/themes/presets/ayu.json")), - ), - parse( - "carbonfox", - include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/themes/presets/carbonfox.json")), - ), - parse( - "catppuccin-frappe", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/catppuccin-frappe.json" - )), - ), - parse( - "catppuccin-macchiato", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/catppuccin-macchiato.json" - )), - ), - parse( - "catppuccin", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/catppuccin.json" - )), - ), - parse( - "cobalt2", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/cobalt2.json" - )), - ), parse( "cursor", include_str!(concat!( @@ -725,13 +685,6 @@ static BUILTIN_OPENCODE_THEMES: Lazy> = "/themes/presets/cursor.json" )), ), - parse( - "dracula", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/dracula.json" - )), - ), parse( "everforest", include_str!(concat!( @@ -739,13 +692,6 @@ static BUILTIN_OPENCODE_THEMES: Lazy> = "/themes/presets/everforest.json" )), ), - parse( - "flexoki", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/flexoki.json" - )), - ), parse( "github", include_str!(concat!( @@ -753,69 +699,6 @@ static BUILTIN_OPENCODE_THEMES: Lazy> = "/themes/presets/github.json" )), ), - parse( - "gruvbox", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/gruvbox.json" - )), - ), - parse( - "kanagawa", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/kanagawa.json" - )), - ), - parse( - "lucent-orng", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/lucent-orng.json" - )), - ), - parse( - "material", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/material.json" - )), - ), - parse( - "matrix", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/matrix.json" - )), - ), - parse( - "mercury", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/mercury.json" - )), - ), - parse( - "monokai", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/monokai.json" - )), - ), - parse( - "nightowl", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/nightowl.json" - )), - ), - parse( - "nord", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/nord.json" - )), - ), parse( "one-dark", include_str!(concat!( @@ -830,48 +713,6 @@ static BUILTIN_OPENCODE_THEMES: Lazy> = "/themes/presets/opencode.json" )), ), - parse( - "orng", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/orng.json" - )), - ), - parse( - "osaka-jade", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/osaka-jade.json" - )), - ), - parse( - "palenight", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/palenight.json" - )), - ), - parse( - "rosepine", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/rosepine.json" - )), - ), - parse( - "solarized", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/solarized.json" - )), - ), - parse( - "synthwave84", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/synthwave84.json" - )), - ), parse( "tokyonight", include_str!(concat!( @@ -879,27 +720,6 @@ static BUILTIN_OPENCODE_THEMES: Lazy> = "/themes/presets/tokyonight.json" )), ), - parse( - "vercel", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/vercel.json" - )), - ), - parse( - "vesper", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/vesper.json" - )), - ), - parse( - "zenburn", - include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), - "/themes/presets/zenburn.json" - )), - ), ]) }); diff --git a/src/apps/cli/src/ui/theme_selector.rs b/src/apps/cli/src/ui/theme_selector.rs index 6647efb2c..5feeaf38b 100644 --- a/src/apps/cli/src/ui/theme_selector.rs +++ b/src/apps/cli/src/ui/theme_selector.rs @@ -4,10 +4,10 @@ use crossterm::event::{MouseButton, MouseEvent, MouseEventKind}; use ratatui::{ - layout::{Alignment, Rect}, + layout::Rect, style::{Color, Modifier, Style}, text::{Line, Span}, - widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph}, + widgets::{Block, Borders, Clear, List, ListItem, ListState}, Frame, }; @@ -167,21 +167,6 @@ impl ThemeSelectorState { frame.render_widget(Clear, popup_area); frame.render_stateful_widget(list, popup_area, &mut self.list_state); - - let hint_area = Rect { - x: popup_area.x, - y: popup_area.y + popup_area.height, - width: popup_area.width, - height: 1.min(area.y + area.height - popup_area.y - popup_area.height), - }; - if hint_area.height > 0 { - let hint = Paragraph::new(Line::from(vec![Span::styled( - " Built-in themes (opencode-compatible) ", - theme.style(StyleKind::Info), - )])) - .alignment(Alignment::Center); - frame.render_widget(hint, hint_area); - } } pub fn captures_mouse(&self, mouse: &MouseEvent) -> bool { diff --git a/src/apps/cli/themes/presets/aura.json b/src/apps/cli/themes/presets/aura.json deleted file mode 100644 index e7798d520..000000000 --- a/src/apps/cli/themes/presets/aura.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "darkBg": "#0f0f0f", - "darkBgPanel": "#15141b", - "darkBorder": "#2d2d2d", - "darkFgMuted": "#6d6d6d", - "darkFg": "#edecee", - "purple": "#a277ff", - "pink": "#f694ff", - "blue": "#82e2ff", - "red": "#ff6767", - "orange": "#ffca85", - "cyan": "#61ffca", - "green": "#9dff65" - }, - "theme": { - "primary": "purple", - "secondary": "pink", - "accent": "purple", - "error": "red", - "warning": "orange", - "success": "cyan", - "info": "purple", - "text": "darkFg", - "textMuted": "darkFgMuted", - "background": "darkBg", - "backgroundPanel": "darkBgPanel", - "backgroundElement": "darkBgPanel", - "border": "darkBorder", - "borderActive": "darkFgMuted", - "borderSubtle": "darkBorder", - "diffAdded": "cyan", - "diffRemoved": "red", - "diffContext": "darkFgMuted", - "diffHunkHeader": "darkFgMuted", - "diffHighlightAdded": "cyan", - "diffHighlightRemoved": "red", - "diffAddedBg": "#354933", - "diffRemovedBg": "#3f191a", - "diffContextBg": "darkBgPanel", - "diffLineNumber": "darkBorder", - "diffAddedLineNumberBg": "#162620", - "diffRemovedLineNumberBg": "#26161a", - "markdownText": "darkFg", - "markdownHeading": "purple", - "markdownLink": "pink", - "markdownLinkText": "purple", - "markdownCode": "cyan", - "markdownBlockQuote": "darkFgMuted", - "markdownEmph": "orange", - "markdownStrong": "purple", - "markdownHorizontalRule": "darkFgMuted", - "markdownListItem": "purple", - "markdownListEnumeration": "purple", - "markdownImage": "pink", - "markdownImageText": "purple", - "markdownCodeBlock": "darkFg", - "syntaxComment": "darkFgMuted", - "syntaxKeyword": "pink", - "syntaxFunction": "purple", - "syntaxVariable": "purple", - "syntaxString": "cyan", - "syntaxNumber": "green", - "syntaxType": "purple", - "syntaxOperator": "pink", - "syntaxPunctuation": "darkFg" - } -} diff --git a/src/apps/cli/themes/presets/ayu.json b/src/apps/cli/themes/presets/ayu.json deleted file mode 100644 index a42fce4c4..000000000 --- a/src/apps/cli/themes/presets/ayu.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "darkBg": "#0B0E14", - "darkBgAlt": "#0D1017", - "darkLine": "#11151C", - "darkPanel": "#0F131A", - "darkFg": "#BFBDB6", - "darkFgMuted": "#565B66", - "darkGutter": "#6C7380", - "darkTag": "#39BAE6", - "darkFunc": "#FFB454", - "darkEntity": "#59C2FF", - "darkString": "#AAD94C", - "darkRegexp": "#95E6CB", - "darkMarkup": "#F07178", - "darkKeyword": "#FF8F40", - "darkSpecial": "#E6B673", - "darkComment": "#ACB6BF", - "darkConstant": "#D2A6FF", - "darkOperator": "#F29668", - "darkAdded": "#7FD962", - "darkRemoved": "#F26D78", - "darkAccent": "#E6B450", - "darkError": "#D95757", - "darkIndentActive": "#6C7380" - }, - "theme": { - "primary": "darkEntity", - "secondary": "darkConstant", - "accent": "darkAccent", - "error": "darkError", - "warning": "darkSpecial", - "success": "darkAdded", - "info": "darkTag", - "text": "darkFg", - "textMuted": "darkFgMuted", - "background": "darkBg", - "backgroundPanel": "darkPanel", - "backgroundElement": "darkBgAlt", - "border": "darkGutter", - "borderActive": "darkIndentActive", - "borderSubtle": "darkLine", - "diffAdded": "darkAdded", - "diffRemoved": "darkRemoved", - "diffContext": "darkComment", - "diffHunkHeader": "darkComment", - "diffHighlightAdded": "darkString", - "diffHighlightRemoved": "darkMarkup", - "diffAddedBg": "#20303b", - "diffRemovedBg": "#37222c", - "diffContextBg": "darkPanel", - "diffLineNumber": "darkGutter", - "diffAddedLineNumberBg": "#1b2b34", - "diffRemovedLineNumberBg": "#2d1f26", - "markdownText": "darkFg", - "markdownHeading": "darkConstant", - "markdownLink": "darkEntity", - "markdownLinkText": "darkTag", - "markdownCode": "darkString", - "markdownBlockQuote": "darkSpecial", - "markdownEmph": "darkSpecial", - "markdownStrong": "darkFunc", - "markdownHorizontalRule": "darkFgMuted", - "markdownListItem": "darkEntity", - "markdownListEnumeration": "darkTag", - "markdownImage": "darkEntity", - "markdownImageText": "darkTag", - "markdownCodeBlock": "darkFg", - "syntaxComment": "darkComment", - "syntaxKeyword": "darkKeyword", - "syntaxFunction": "darkFunc", - "syntaxVariable": "darkEntity", - "syntaxString": "darkString", - "syntaxNumber": "darkConstant", - "syntaxType": "darkSpecial", - "syntaxOperator": "darkOperator", - "syntaxPunctuation": "darkFg" - } -} diff --git a/src/apps/cli/themes/presets/carbonfox.json b/src/apps/cli/themes/presets/carbonfox.json deleted file mode 100644 index b91de1fea..000000000 --- a/src/apps/cli/themes/presets/carbonfox.json +++ /dev/null @@ -1,248 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "bg0": "#0d0d0d", - "bg1": "#161616", - "bg1a": "#1a1a1a", - "bg2": "#1e1e1e", - "bg3": "#262626", - "bg4": "#303030", - "fg0": "#ffffff", - "fg1": "#f2f4f8", - "fg2": "#a9afbc", - "fg3": "#7d848f", - "lbg0": "#ffffff", - "lbg1": "#f4f4f4", - "lbg2": "#e8e8e8", - "lbg3": "#dcdcdc", - "lfg0": "#000000", - "lfg1": "#161616", - "lfg2": "#525252", - "lfg3": "#6f6f6f", - "red": "#ee5396", - "green": "#25be6a", - "yellow": "#08bdba", - "blue": "#78a9ff", - "magenta": "#be95ff", - "cyan": "#33b1ff", - "white": "#dfdfe0", - "orange": "#3ddbd9", - "pink": "#ff7eb6", - "blueBright": "#8cb6ff", - "cyanBright": "#52c7ff", - "greenBright": "#46c880", - "redLight": "#9f1853", - "greenLight": "#198038", - "yellowLight": "#007d79", - "blueLight": "#0043ce", - "magentaLight": "#6929c4", - "cyanLight": "#0072c3", - "warning": "#f1c21b", - "diffGreen": "#50fa7b", - "diffRed": "#ff6b6b", - "diffGreenBg": "#0f2418", - "diffRedBg": "#2a1216" - }, - "theme": { - "primary": { - "dark": "cyan", - "light": "blueLight" - }, - "secondary": { - "dark": "blue", - "light": "blueLight" - }, - "accent": { - "dark": "pink", - "light": "redLight" - }, - "error": { - "dark": "red", - "light": "redLight" - }, - "warning": { - "dark": "warning", - "light": "yellowLight" - }, - "success": { - "dark": "green", - "light": "greenLight" - }, - "info": { - "dark": "blue", - "light": "blueLight" - }, - "text": { - "dark": "fg1", - "light": "lfg1" - }, - "textMuted": { - "dark": "fg3", - "light": "lfg3" - }, - "background": { - "dark": "bg1", - "light": "lbg0" - }, - "backgroundPanel": { - "dark": "bg1a", - "light": "lbg1" - }, - "backgroundElement": { - "dark": "bg2", - "light": "lbg1" - }, - "border": { - "dark": "bg4", - "light": "lbg3" - }, - "borderActive": { - "dark": "cyan", - "light": "blueLight" - }, - "borderSubtle": { - "dark": "bg3", - "light": "lbg2" - }, - "diffAdded": { - "dark": "diffGreen", - "light": "greenLight" - }, - "diffRemoved": { - "dark": "diffRed", - "light": "redLight" - }, - "diffContext": { - "dark": "fg3", - "light": "lfg3" - }, - "diffHunkHeader": { - "dark": "blue", - "light": "blueLight" - }, - "diffHighlightAdded": { - "dark": "#7dffaa", - "light": "greenLight" - }, - "diffHighlightRemoved": { - "dark": "#ff9999", - "light": "redLight" - }, - "diffAddedBg": { - "dark": "diffGreenBg", - "light": "#defbe6" - }, - "diffRemovedBg": { - "dark": "diffRedBg", - "light": "#fff1f1" - }, - "diffContextBg": { - "dark": "bg1", - "light": "lbg1" - }, - "diffLineNumber": { - "dark": "fg3", - "light": "lfg3" - }, - "diffAddedLineNumberBg": { - "dark": "diffGreenBg", - "light": "#defbe6" - }, - "diffRemovedLineNumberBg": { - "dark": "diffRedBg", - "light": "#fff1f1" - }, - "markdownText": { - "dark": "fg1", - "light": "lfg1" - }, - "markdownHeading": { - "dark": "blueBright", - "light": "blueLight" - }, - "markdownLink": { - "dark": "blue", - "light": "blueLight" - }, - "markdownLinkText": { - "dark": "cyan", - "light": "cyanLight" - }, - "markdownCode": { - "dark": "green", - "light": "greenLight" - }, - "markdownBlockQuote": { - "dark": "fg3", - "light": "lfg3" - }, - "markdownEmph": { - "dark": "magenta", - "light": "magentaLight" - }, - "markdownStrong": { - "dark": "fg0", - "light": "lfg0" - }, - "markdownHorizontalRule": { - "dark": "bg4", - "light": "lbg3" - }, - "markdownListItem": { - "dark": "cyan", - "light": "cyanLight" - }, - "markdownListEnumeration": { - "dark": "cyan", - "light": "cyanLight" - }, - "markdownImage": { - "dark": "blue", - "light": "blueLight" - }, - "markdownImageText": { - "dark": "cyan", - "light": "cyanLight" - }, - "markdownCodeBlock": { - "dark": "fg2", - "light": "lfg2" - }, - "syntaxComment": { - "dark": "fg3", - "light": "lfg3" - }, - "syntaxKeyword": { - "dark": "magenta", - "light": "magentaLight" - }, - "syntaxFunction": { - "dark": "blueBright", - "light": "blueLight" - }, - "syntaxVariable": { - "dark": "white", - "light": "lfg1" - }, - "syntaxString": { - "dark": "green", - "light": "greenLight" - }, - "syntaxNumber": { - "dark": "orange", - "light": "yellowLight" - }, - "syntaxType": { - "dark": "yellow", - "light": "yellowLight" - }, - "syntaxOperator": { - "dark": "fg2", - "light": "lfg2" - }, - "syntaxPunctuation": { - "dark": "fg2", - "light": "lfg1" - } - } -} diff --git a/src/apps/cli/themes/presets/catppuccin-frappe.json b/src/apps/cli/themes/presets/catppuccin-frappe.json deleted file mode 100644 index 79e56ee9a..000000000 --- a/src/apps/cli/themes/presets/catppuccin-frappe.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "frappeRosewater": "#f2d5cf", - "frappeFlamingo": "#eebebe", - "frappePink": "#f4b8e4", - "frappeMauve": "#ca9ee6", - "frappeRed": "#e78284", - "frappeMaroon": "#ea999c", - "frappePeach": "#ef9f76", - "frappeYellow": "#e5c890", - "frappeGreen": "#a6d189", - "frappeTeal": "#81c8be", - "frappeSky": "#99d1db", - "frappeSapphire": "#85c1dc", - "frappeBlue": "#8da4e2", - "frappeLavender": "#babbf1", - "frappeText": "#c6d0f5", - "frappeSubtext1": "#b5bfe2", - "frappeSubtext0": "#a5adce", - "frappeOverlay2": "#949cb8", - "frappeOverlay1": "#838ba7", - "frappeOverlay0": "#737994", - "frappeSurface2": "#626880", - "frappeSurface1": "#51576d", - "frappeSurface0": "#414559", - "frappeBase": "#303446", - "frappeMantle": "#292c3c", - "frappeCrust": "#232634" - }, - "theme": { - "primary": { - "dark": "frappeBlue", - "light": "frappeBlue" - }, - "secondary": { - "dark": "frappeMauve", - "light": "frappeMauve" - }, - "accent": { - "dark": "frappePink", - "light": "frappePink" - }, - "error": { - "dark": "frappeRed", - "light": "frappeRed" - }, - "warning": { - "dark": "frappeYellow", - "light": "frappeYellow" - }, - "success": { - "dark": "frappeGreen", - "light": "frappeGreen" - }, - "info": { - "dark": "frappeTeal", - "light": "frappeTeal" - }, - "text": { - "dark": "frappeText", - "light": "frappeText" - }, - "textMuted": { - "dark": "frappeSubtext1", - "light": "frappeSubtext1" - }, - "background": { - "dark": "frappeBase", - "light": "frappeBase" - }, - "backgroundPanel": { - "dark": "frappeMantle", - "light": "frappeMantle" - }, - "backgroundElement": { - "dark": "frappeCrust", - "light": "frappeCrust" - }, - "border": { - "dark": "frappeSurface0", - "light": "frappeSurface0" - }, - "borderActive": { - "dark": "frappeSurface1", - "light": "frappeSurface1" - }, - "borderSubtle": { - "dark": "frappeSurface2", - "light": "frappeSurface2" - }, - "diffAdded": { - "dark": "frappeGreen", - "light": "frappeGreen" - }, - "diffRemoved": { - "dark": "frappeRed", - "light": "frappeRed" - }, - "diffContext": { - "dark": "frappeOverlay2", - "light": "frappeOverlay2" - }, - "diffHunkHeader": { - "dark": "frappePeach", - "light": "frappePeach" - }, - "diffHighlightAdded": { - "dark": "frappeGreen", - "light": "frappeGreen" - }, - "diffHighlightRemoved": { - "dark": "frappeRed", - "light": "frappeRed" - }, - "diffAddedBg": { - "dark": "#29342b", - "light": "#29342b" - }, - "diffRemovedBg": { - "dark": "#3a2a31", - "light": "#3a2a31" - }, - "diffContextBg": { - "dark": "frappeMantle", - "light": "frappeMantle" - }, - "diffLineNumber": { - "dark": "frappeSurface1", - "light": "frappeSurface1" - }, - "diffAddedLineNumberBg": { - "dark": "#223025", - "light": "#223025" - }, - "diffRemovedLineNumberBg": { - "dark": "#2f242b", - "light": "#2f242b" - }, - "markdownText": { - "dark": "frappeText", - "light": "frappeText" - }, - "markdownHeading": { - "dark": "frappeMauve", - "light": "frappeMauve" - }, - "markdownLink": { - "dark": "frappeBlue", - "light": "frappeBlue" - }, - "markdownLinkText": { - "dark": "frappeSky", - "light": "frappeSky" - }, - "markdownCode": { - "dark": "frappeGreen", - "light": "frappeGreen" - }, - "markdownBlockQuote": { - "dark": "frappeYellow", - "light": "frappeYellow" - }, - "markdownEmph": { - "dark": "frappeYellow", - "light": "frappeYellow" - }, - "markdownStrong": { - "dark": "frappePeach", - "light": "frappePeach" - }, - "markdownHorizontalRule": { - "dark": "frappeSubtext0", - "light": "frappeSubtext0" - }, - "markdownListItem": { - "dark": "frappeBlue", - "light": "frappeBlue" - }, - "markdownListEnumeration": { - "dark": "frappeSky", - "light": "frappeSky" - }, - "markdownImage": { - "dark": "frappeBlue", - "light": "frappeBlue" - }, - "markdownImageText": { - "dark": "frappeSky", - "light": "frappeSky" - }, - "markdownCodeBlock": { - "dark": "frappeText", - "light": "frappeText" - }, - "syntaxComment": { - "dark": "frappeOverlay2", - "light": "frappeOverlay2" - }, - "syntaxKeyword": { - "dark": "frappeMauve", - "light": "frappeMauve" - }, - "syntaxFunction": { - "dark": "frappeBlue", - "light": "frappeBlue" - }, - "syntaxVariable": { - "dark": "frappeRed", - "light": "frappeRed" - }, - "syntaxString": { - "dark": "frappeGreen", - "light": "frappeGreen" - }, - "syntaxNumber": { - "dark": "frappePeach", - "light": "frappePeach" - }, - "syntaxType": { - "dark": "frappeYellow", - "light": "frappeYellow" - }, - "syntaxOperator": { - "dark": "frappeSky", - "light": "frappeSky" - }, - "syntaxPunctuation": { - "dark": "frappeText", - "light": "frappeText" - } - } -} diff --git a/src/apps/cli/themes/presets/catppuccin-macchiato.json b/src/apps/cli/themes/presets/catppuccin-macchiato.json deleted file mode 100644 index 6d9827dfe..000000000 --- a/src/apps/cli/themes/presets/catppuccin-macchiato.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "macRosewater": "#f4dbd6", - "macFlamingo": "#f0c6c6", - "macPink": "#f5bde6", - "macMauve": "#c6a0f6", - "macRed": "#ed8796", - "macMaroon": "#ee99a0", - "macPeach": "#f5a97f", - "macYellow": "#eed49f", - "macGreen": "#a6da95", - "macTeal": "#8bd5ca", - "macSky": "#91d7e3", - "macSapphire": "#7dc4e4", - "macBlue": "#8aadf4", - "macLavender": "#b7bdf8", - "macText": "#cad3f5", - "macSubtext1": "#b8c0e0", - "macSubtext0": "#a5adcb", - "macOverlay2": "#939ab7", - "macOverlay1": "#8087a2", - "macOverlay0": "#6e738d", - "macSurface2": "#5b6078", - "macSurface1": "#494d64", - "macSurface0": "#363a4f", - "macBase": "#24273a", - "macMantle": "#1e2030", - "macCrust": "#181926" - }, - "theme": { - "primary": { - "dark": "macBlue", - "light": "macBlue" - }, - "secondary": { - "dark": "macMauve", - "light": "macMauve" - }, - "accent": { - "dark": "macPink", - "light": "macPink" - }, - "error": { - "dark": "macRed", - "light": "macRed" - }, - "warning": { - "dark": "macYellow", - "light": "macYellow" - }, - "success": { - "dark": "macGreen", - "light": "macGreen" - }, - "info": { - "dark": "macTeal", - "light": "macTeal" - }, - "text": { - "dark": "macText", - "light": "macText" - }, - "textMuted": { - "dark": "macSubtext1", - "light": "macSubtext1" - }, - "background": { - "dark": "macBase", - "light": "macBase" - }, - "backgroundPanel": { - "dark": "macMantle", - "light": "macMantle" - }, - "backgroundElement": { - "dark": "macCrust", - "light": "macCrust" - }, - "border": { - "dark": "macSurface0", - "light": "macSurface0" - }, - "borderActive": { - "dark": "macSurface1", - "light": "macSurface1" - }, - "borderSubtle": { - "dark": "macSurface2", - "light": "macSurface2" - }, - "diffAdded": { - "dark": "macGreen", - "light": "macGreen" - }, - "diffRemoved": { - "dark": "macRed", - "light": "macRed" - }, - "diffContext": { - "dark": "macOverlay2", - "light": "macOverlay2" - }, - "diffHunkHeader": { - "dark": "macPeach", - "light": "macPeach" - }, - "diffHighlightAdded": { - "dark": "macGreen", - "light": "macGreen" - }, - "diffHighlightRemoved": { - "dark": "macRed", - "light": "macRed" - }, - "diffAddedBg": { - "dark": "#29342b", - "light": "#29342b" - }, - "diffRemovedBg": { - "dark": "#3a2a31", - "light": "#3a2a31" - }, - "diffContextBg": { - "dark": "macMantle", - "light": "macMantle" - }, - "diffLineNumber": { - "dark": "macSurface1", - "light": "macSurface1" - }, - "diffAddedLineNumberBg": { - "dark": "#223025", - "light": "#223025" - }, - "diffRemovedLineNumberBg": { - "dark": "#2f242b", - "light": "#2f242b" - }, - "markdownText": { - "dark": "macText", - "light": "macText" - }, - "markdownHeading": { - "dark": "macMauve", - "light": "macMauve" - }, - "markdownLink": { - "dark": "macBlue", - "light": "macBlue" - }, - "markdownLinkText": { - "dark": "macSky", - "light": "macSky" - }, - "markdownCode": { - "dark": "macGreen", - "light": "macGreen" - }, - "markdownBlockQuote": { - "dark": "macYellow", - "light": "macYellow" - }, - "markdownEmph": { - "dark": "macYellow", - "light": "macYellow" - }, - "markdownStrong": { - "dark": "macPeach", - "light": "macPeach" - }, - "markdownHorizontalRule": { - "dark": "macSubtext0", - "light": "macSubtext0" - }, - "markdownListItem": { - "dark": "macBlue", - "light": "macBlue" - }, - "markdownListEnumeration": { - "dark": "macSky", - "light": "macSky" - }, - "markdownImage": { - "dark": "macBlue", - "light": "macBlue" - }, - "markdownImageText": { - "dark": "macSky", - "light": "macSky" - }, - "markdownCodeBlock": { - "dark": "macText", - "light": "macText" - }, - "syntaxComment": { - "dark": "macOverlay2", - "light": "macOverlay2" - }, - "syntaxKeyword": { - "dark": "macMauve", - "light": "macMauve" - }, - "syntaxFunction": { - "dark": "macBlue", - "light": "macBlue" - }, - "syntaxVariable": { - "dark": "macRed", - "light": "macRed" - }, - "syntaxString": { - "dark": "macGreen", - "light": "macGreen" - }, - "syntaxNumber": { - "dark": "macPeach", - "light": "macPeach" - }, - "syntaxType": { - "dark": "macYellow", - "light": "macYellow" - }, - "syntaxOperator": { - "dark": "macSky", - "light": "macSky" - }, - "syntaxPunctuation": { - "dark": "macText", - "light": "macText" - } - } -} diff --git a/src/apps/cli/themes/presets/catppuccin.json b/src/apps/cli/themes/presets/catppuccin.json deleted file mode 100644 index d0fa6a11d..000000000 --- a/src/apps/cli/themes/presets/catppuccin.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "lightRosewater": "#dc8a78", - "lightFlamingo": "#dd7878", - "lightPink": "#ea76cb", - "lightMauve": "#8839ef", - "lightRed": "#d20f39", - "lightMaroon": "#e64553", - "lightPeach": "#fe640b", - "lightYellow": "#df8e1d", - "lightGreen": "#40a02b", - "lightTeal": "#179299", - "lightSky": "#04a5e5", - "lightSapphire": "#209fb5", - "lightBlue": "#1e66f5", - "lightLavender": "#7287fd", - "lightText": "#4c4f69", - "lightSubtext1": "#5c5f77", - "lightSubtext0": "#6c6f85", - "lightOverlay2": "#7c7f93", - "lightOverlay1": "#8c8fa1", - "lightOverlay0": "#9ca0b0", - "lightSurface2": "#acb0be", - "lightSurface1": "#bcc0cc", - "lightSurface0": "#ccd0da", - "lightBase": "#eff1f5", - "lightMantle": "#e6e9ef", - "lightCrust": "#dce0e8", - "darkRosewater": "#f5e0dc", - "darkFlamingo": "#f2cdcd", - "darkPink": "#f5c2e7", - "darkMauve": "#cba6f7", - "darkRed": "#f38ba8", - "darkMaroon": "#eba0ac", - "darkPeach": "#fab387", - "darkYellow": "#f9e2af", - "darkGreen": "#a6e3a1", - "darkTeal": "#94e2d5", - "darkSky": "#89dceb", - "darkSapphire": "#74c7ec", - "darkBlue": "#89b4fa", - "darkLavender": "#b4befe", - "darkText": "#cdd6f4", - "darkSubtext1": "#bac2de", - "darkSubtext0": "#a6adc8", - "darkOverlay2": "#9399b2", - "darkOverlay1": "#7f849c", - "darkOverlay0": "#6c7086", - "darkSurface2": "#585b70", - "darkSurface1": "#45475a", - "darkSurface0": "#313244", - "darkBase": "#1e1e2e", - "darkMantle": "#181825", - "darkCrust": "#11111b" - }, - "theme": { - "primary": { "dark": "darkBlue", "light": "lightBlue" }, - "secondary": { "dark": "darkMauve", "light": "lightMauve" }, - "accent": { "dark": "darkPink", "light": "lightPink" }, - "error": { "dark": "darkRed", "light": "lightRed" }, - "warning": { "dark": "darkYellow", "light": "lightYellow" }, - "success": { "dark": "darkGreen", "light": "lightGreen" }, - "info": { "dark": "darkTeal", "light": "lightTeal" }, - "text": { "dark": "darkText", "light": "lightText" }, - "textMuted": { "dark": "darkSubtext1", "light": "lightSubtext1" }, - "background": { "dark": "darkBase", "light": "lightBase" }, - "backgroundPanel": { "dark": "darkMantle", "light": "lightMantle" }, - "backgroundElement": { "dark": "darkCrust", "light": "lightCrust" }, - "border": { "dark": "darkSurface0", "light": "lightSurface0" }, - "borderActive": { "dark": "darkSurface1", "light": "lightSurface1" }, - "borderSubtle": { "dark": "darkSurface2", "light": "lightSurface2" }, - "diffAdded": { "dark": "darkGreen", "light": "lightGreen" }, - "diffRemoved": { "dark": "darkRed", "light": "lightRed" }, - "diffContext": { "dark": "darkOverlay2", "light": "lightOverlay2" }, - "diffHunkHeader": { "dark": "darkPeach", "light": "lightPeach" }, - "diffHighlightAdded": { "dark": "darkGreen", "light": "lightGreen" }, - "diffHighlightRemoved": { "dark": "darkRed", "light": "lightRed" }, - "diffAddedBg": { "dark": "#24312b", "light": "#d6f0d9" }, - "diffRemovedBg": { "dark": "#3c2a32", "light": "#f6dfe2" }, - "diffContextBg": { "dark": "darkMantle", "light": "lightMantle" }, - "diffLineNumber": { "dark": "darkSurface1", "light": "lightSurface1" }, - "diffAddedLineNumberBg": { "dark": "#1e2a25", "light": "#c9e3cb" }, - "diffRemovedLineNumberBg": { "dark": "#32232a", "light": "#e9d3d6" }, - "markdownText": { "dark": "darkText", "light": "lightText" }, - "markdownHeading": { "dark": "darkMauve", "light": "lightMauve" }, - "markdownLink": { "dark": "darkBlue", "light": "lightBlue" }, - "markdownLinkText": { "dark": "darkSky", "light": "lightSky" }, - "markdownCode": { "dark": "darkGreen", "light": "lightGreen" }, - "markdownBlockQuote": { "dark": "darkYellow", "light": "lightYellow" }, - "markdownEmph": { "dark": "darkYellow", "light": "lightYellow" }, - "markdownStrong": { "dark": "darkPeach", "light": "lightPeach" }, - "markdownHorizontalRule": { - "dark": "darkSubtext0", - "light": "lightSubtext0" - }, - "markdownListItem": { "dark": "darkBlue", "light": "lightBlue" }, - "markdownListEnumeration": { "dark": "darkSky", "light": "lightSky" }, - "markdownImage": { "dark": "darkBlue", "light": "lightBlue" }, - "markdownImageText": { "dark": "darkSky", "light": "lightSky" }, - "markdownCodeBlock": { "dark": "darkText", "light": "lightText" }, - "syntaxComment": { "dark": "darkOverlay2", "light": "lightOverlay2" }, - "syntaxKeyword": { "dark": "darkMauve", "light": "lightMauve" }, - "syntaxFunction": { "dark": "darkBlue", "light": "lightBlue" }, - "syntaxVariable": { "dark": "darkRed", "light": "lightRed" }, - "syntaxString": { "dark": "darkGreen", "light": "lightGreen" }, - "syntaxNumber": { "dark": "darkPeach", "light": "lightPeach" }, - "syntaxType": { "dark": "darkYellow", "light": "lightYellow" }, - "syntaxOperator": { "dark": "darkSky", "light": "lightSky" }, - "syntaxPunctuation": { "dark": "darkText", "light": "lightText" } - } -} diff --git a/src/apps/cli/themes/presets/cobalt2.json b/src/apps/cli/themes/presets/cobalt2.json deleted file mode 100644 index 2967eae58..000000000 --- a/src/apps/cli/themes/presets/cobalt2.json +++ /dev/null @@ -1,228 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "background": "#193549", - "backgroundAlt": "#122738", - "backgroundPanel": "#1f4662", - "foreground": "#ffffff", - "foregroundMuted": "#adb7c9", - "yellow": "#ffc600", - "yellowBright": "#ffe14c", - "orange": "#ff9d00", - "orangeBright": "#ffb454", - "mint": "#2affdf", - "mintBright": "#7efff5", - "blue": "#0088ff", - "blueBright": "#5cb7ff", - "pink": "#ff628c", - "pinkBright": "#ff86a5", - "green": "#9eff80", - "greenBright": "#b9ff9f", - "purple": "#9a5feb", - "purpleBright": "#b88cfd", - "red": "#ff0088", - "redBright": "#ff5fb3" - }, - "theme": { - "primary": { - "dark": "blue", - "light": "#0066cc" - }, - "secondary": { - "dark": "purple", - "light": "#7c4dff" - }, - "accent": { - "dark": "mint", - "light": "#00acc1" - }, - "error": { - "dark": "red", - "light": "#e91e63" - }, - "warning": { - "dark": "yellow", - "light": "#ff9800" - }, - "success": { - "dark": "green", - "light": "#4caf50" - }, - "info": { - "dark": "orange", - "light": "#ff5722" - }, - "text": { - "dark": "foreground", - "light": "#193549" - }, - "textMuted": { - "dark": "foregroundMuted", - "light": "#5c6b7d" - }, - "background": { - "dark": "#193549", - "light": "#ffffff" - }, - "backgroundPanel": { - "dark": "#122738", - "light": "#f5f7fa" - }, - "backgroundElement": { - "dark": "#1f4662", - "light": "#e8ecf1" - }, - "border": { - "dark": "#1f4662", - "light": "#d3dae3" - }, - "borderActive": { - "dark": "blue", - "light": "#0066cc" - }, - "borderSubtle": { - "dark": "#0e1e2e", - "light": "#e8ecf1" - }, - "diffAdded": { - "dark": "green", - "light": "#4caf50" - }, - "diffRemoved": { - "dark": "red", - "light": "#e91e63" - }, - "diffContext": { - "dark": "foregroundMuted", - "light": "#5c6b7d" - }, - "diffHunkHeader": { - "dark": "mint", - "light": "#00acc1" - }, - "diffHighlightAdded": { - "dark": "greenBright", - "light": "#4caf50" - }, - "diffHighlightRemoved": { - "dark": "redBright", - "light": "#e91e63" - }, - "diffAddedBg": { - "dark": "#1a3a2a", - "light": "#e8f5e9" - }, - "diffRemovedBg": { - "dark": "#3a1a2a", - "light": "#ffebee" - }, - "diffContextBg": { - "dark": "#122738", - "light": "#f5f7fa" - }, - "diffLineNumber": { - "dark": "#2d5a7b", - "light": "#b0bec5" - }, - "diffAddedLineNumberBg": { - "dark": "#1a3a2a", - "light": "#e8f5e9" - }, - "diffRemovedLineNumberBg": { - "dark": "#3a1a2a", - "light": "#ffebee" - }, - "markdownText": { - "dark": "foreground", - "light": "#193549" - }, - "markdownHeading": { - "dark": "yellow", - "light": "#ff9800" - }, - "markdownLink": { - "dark": "blue", - "light": "#0066cc" - }, - "markdownLinkText": { - "dark": "mint", - "light": "#00acc1" - }, - "markdownCode": { - "dark": "green", - "light": "#4caf50" - }, - "markdownBlockQuote": { - "dark": "foregroundMuted", - "light": "#5c6b7d" - }, - "markdownEmph": { - "dark": "orange", - "light": "#ff5722" - }, - "markdownStrong": { - "dark": "pink", - "light": "#e91e63" - }, - "markdownHorizontalRule": { - "dark": "#2d5a7b", - "light": "#d3dae3" - }, - "markdownListItem": { - "dark": "blue", - "light": "#0066cc" - }, - "markdownListEnumeration": { - "dark": "mint", - "light": "#00acc1" - }, - "markdownImage": { - "dark": "blue", - "light": "#0066cc" - }, - "markdownImageText": { - "dark": "mint", - "light": "#00acc1" - }, - "markdownCodeBlock": { - "dark": "foreground", - "light": "#193549" - }, - "syntaxComment": { - "dark": "#0088ff", - "light": "#5c6b7d" - }, - "syntaxKeyword": { - "dark": "orange", - "light": "#ff5722" - }, - "syntaxFunction": { - "dark": "yellow", - "light": "#ff9800" - }, - "syntaxVariable": { - "dark": "foreground", - "light": "#193549" - }, - "syntaxString": { - "dark": "green", - "light": "#4caf50" - }, - "syntaxNumber": { - "dark": "pink", - "light": "#e91e63" - }, - "syntaxType": { - "dark": "mint", - "light": "#00acc1" - }, - "syntaxOperator": { - "dark": "orange", - "light": "#ff5722" - }, - "syntaxPunctuation": { - "dark": "foreground", - "light": "#193549" - } - } -} diff --git a/src/apps/cli/themes/presets/dracula.json b/src/apps/cli/themes/presets/dracula.json deleted file mode 100644 index c837a0b58..000000000 --- a/src/apps/cli/themes/presets/dracula.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "background": "#282a36", - "currentLine": "#44475a", - "selection": "#44475a", - "foreground": "#f8f8f2", - "comment": "#6272a4", - "cyan": "#8be9fd", - "green": "#50fa7b", - "orange": "#ffb86c", - "pink": "#ff79c6", - "purple": "#bd93f9", - "red": "#ff5555", - "yellow": "#f1fa8c" - }, - "theme": { - "primary": { - "dark": "purple", - "light": "purple" - }, - "secondary": { - "dark": "pink", - "light": "pink" - }, - "accent": { - "dark": "cyan", - "light": "cyan" - }, - "error": { - "dark": "red", - "light": "red" - }, - "warning": { - "dark": "yellow", - "light": "yellow" - }, - "success": { - "dark": "green", - "light": "green" - }, - "info": { - "dark": "orange", - "light": "orange" - }, - "text": { - "dark": "foreground", - "light": "#282a36" - }, - "textMuted": { - "dark": "comment", - "light": "#6272a4" - }, - "background": { - "dark": "#282a36", - "light": "#f8f8f2" - }, - "backgroundPanel": { - "dark": "#21222c", - "light": "#e8e8e2" - }, - "backgroundElement": { - "dark": "currentLine", - "light": "#d8d8d2" - }, - "border": { - "dark": "currentLine", - "light": "#c8c8c2" - }, - "borderActive": { - "dark": "purple", - "light": "purple" - }, - "borderSubtle": { - "dark": "#191a21", - "light": "#e0e0e0" - }, - "diffAdded": { - "dark": "green", - "light": "green" - }, - "diffRemoved": { - "dark": "red", - "light": "red" - }, - "diffContext": { - "dark": "comment", - "light": "#6272a4" - }, - "diffHunkHeader": { - "dark": "comment", - "light": "#6272a4" - }, - "diffHighlightAdded": { - "dark": "green", - "light": "green" - }, - "diffHighlightRemoved": { - "dark": "red", - "light": "red" - }, - "diffAddedBg": { - "dark": "#1a3a1a", - "light": "#e0ffe0" - }, - "diffRemovedBg": { - "dark": "#3a1a1a", - "light": "#ffe0e0" - }, - "diffContextBg": { - "dark": "#21222c", - "light": "#e8e8e2" - }, - "diffLineNumber": { - "dark": "currentLine", - "light": "#c8c8c2" - }, - "diffAddedLineNumberBg": { - "dark": "#1a3a1a", - "light": "#e0ffe0" - }, - "diffRemovedLineNumberBg": { - "dark": "#3a1a1a", - "light": "#ffe0e0" - }, - "markdownText": { - "dark": "foreground", - "light": "#282a36" - }, - "markdownHeading": { - "dark": "purple", - "light": "purple" - }, - "markdownLink": { - "dark": "cyan", - "light": "cyan" - }, - "markdownLinkText": { - "dark": "pink", - "light": "pink" - }, - "markdownCode": { - "dark": "green", - "light": "green" - }, - "markdownBlockQuote": { - "dark": "comment", - "light": "#6272a4" - }, - "markdownEmph": { - "dark": "yellow", - "light": "yellow" - }, - "markdownStrong": { - "dark": "orange", - "light": "orange" - }, - "markdownHorizontalRule": { - "dark": "comment", - "light": "#6272a4" - }, - "markdownListItem": { - "dark": "purple", - "light": "purple" - }, - "markdownListEnumeration": { - "dark": "cyan", - "light": "cyan" - }, - "markdownImage": { - "dark": "cyan", - "light": "cyan" - }, - "markdownImageText": { - "dark": "pink", - "light": "pink" - }, - "markdownCodeBlock": { - "dark": "foreground", - "light": "#282a36" - }, - "syntaxComment": { - "dark": "comment", - "light": "#6272a4" - }, - "syntaxKeyword": { - "dark": "pink", - "light": "pink" - }, - "syntaxFunction": { - "dark": "green", - "light": "green" - }, - "syntaxVariable": { - "dark": "foreground", - "light": "#282a36" - }, - "syntaxString": { - "dark": "yellow", - "light": "yellow" - }, - "syntaxNumber": { - "dark": "purple", - "light": "purple" - }, - "syntaxType": { - "dark": "cyan", - "light": "cyan" - }, - "syntaxOperator": { - "dark": "pink", - "light": "pink" - }, - "syntaxPunctuation": { - "dark": "foreground", - "light": "#282a36" - } - } -} diff --git a/src/apps/cli/themes/presets/flexoki.json b/src/apps/cli/themes/presets/flexoki.json deleted file mode 100644 index e525705dd..000000000 --- a/src/apps/cli/themes/presets/flexoki.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "black": "#100F0F", - "base950": "#1C1B1A", - "base900": "#282726", - "base850": "#343331", - "base800": "#403E3C", - "base700": "#575653", - "base600": "#6F6E69", - "base500": "#878580", - "base300": "#B7B5AC", - "base200": "#CECDC3", - "base150": "#DAD8CE", - "base100": "#E6E4D9", - "base50": "#F2F0E5", - "paper": "#FFFCF0", - "red400": "#D14D41", - "red600": "#AF3029", - "orange400": "#DA702C", - "orange600": "#BC5215", - "yellow400": "#D0A215", - "yellow600": "#AD8301", - "green400": "#879A39", - "green600": "#66800B", - "cyan400": "#3AA99F", - "cyan600": "#24837B", - "blue400": "#4385BE", - "blue600": "#205EA6", - "purple400": "#8B7EC8", - "purple600": "#5E409D", - "magenta400": "#CE5D97", - "magenta600": "#A02F6F" - }, - "theme": { - "primary": { - "dark": "orange400", - "light": "blue600" - }, - "secondary": { - "dark": "blue400", - "light": "purple600" - }, - "accent": { - "dark": "purple400", - "light": "orange600" - }, - "error": { - "dark": "red400", - "light": "red600" - }, - "warning": { - "dark": "orange400", - "light": "orange600" - }, - "success": { - "dark": "green400", - "light": "green600" - }, - "info": { - "dark": "cyan400", - "light": "cyan600" - }, - "text": { - "dark": "base200", - "light": "black" - }, - "textMuted": { - "dark": "base600", - "light": "base600" - }, - "background": { - "dark": "black", - "light": "paper" - }, - "backgroundPanel": { - "dark": "base950", - "light": "base50" - }, - "backgroundElement": { - "dark": "base900", - "light": "base100" - }, - "border": { - "dark": "base700", - "light": "base300" - }, - "borderActive": { - "dark": "base600", - "light": "base500" - }, - "borderSubtle": { - "dark": "base800", - "light": "base200" - }, - "diffAdded": { - "dark": "green400", - "light": "green600" - }, - "diffRemoved": { - "dark": "red400", - "light": "red600" - }, - "diffContext": { - "dark": "base600", - "light": "base600" - }, - "diffHunkHeader": { - "dark": "blue400", - "light": "blue600" - }, - "diffHighlightAdded": { - "dark": "green400", - "light": "green600" - }, - "diffHighlightRemoved": { - "dark": "red400", - "light": "red600" - }, - "diffAddedBg": { - "dark": "#1A2D1A", - "light": "#D5E5D5" - }, - "diffRemovedBg": { - "dark": "#2D1A1A", - "light": "#F7D8DB" - }, - "diffContextBg": { - "dark": "base950", - "light": "base50" - }, - "diffLineNumber": { - "dark": "base600", - "light": "base600" - }, - "diffAddedLineNumberBg": { - "dark": "#152515", - "light": "#C5D5C5" - }, - "diffRemovedLineNumberBg": { - "dark": "#251515", - "light": "#E7C8CB" - }, - "markdownText": { - "dark": "base200", - "light": "black" - }, - "markdownHeading": { - "dark": "purple400", - "light": "purple600" - }, - "markdownLink": { - "dark": "blue400", - "light": "blue600" - }, - "markdownLinkText": { - "dark": "cyan400", - "light": "cyan600" - }, - "markdownCode": { - "dark": "cyan400", - "light": "cyan600" - }, - "markdownBlockQuote": { - "dark": "yellow400", - "light": "yellow600" - }, - "markdownEmph": { - "dark": "yellow400", - "light": "yellow600" - }, - "markdownStrong": { - "dark": "orange400", - "light": "orange600" - }, - "markdownHorizontalRule": { - "dark": "base600", - "light": "base600" - }, - "markdownListItem": { - "dark": "orange400", - "light": "orange600" - }, - "markdownListEnumeration": { - "dark": "cyan400", - "light": "cyan600" - }, - "markdownImage": { - "dark": "magenta400", - "light": "magenta600" - }, - "markdownImageText": { - "dark": "cyan400", - "light": "cyan600" - }, - "markdownCodeBlock": { - "dark": "base200", - "light": "black" - }, - "syntaxComment": { - "dark": "base600", - "light": "base600" - }, - "syntaxKeyword": { - "dark": "green400", - "light": "green600" - }, - "syntaxFunction": { - "dark": "orange400", - "light": "orange600" - }, - "syntaxVariable": { - "dark": "blue400", - "light": "blue600" - }, - "syntaxString": { - "dark": "cyan400", - "light": "cyan600" - }, - "syntaxNumber": { - "dark": "purple400", - "light": "purple600" - }, - "syntaxType": { - "dark": "yellow400", - "light": "yellow600" - }, - "syntaxOperator": { - "dark": "base300", - "light": "base600" - }, - "syntaxPunctuation": { - "dark": "base300", - "light": "base600" - } - } -} diff --git a/src/apps/cli/themes/presets/gruvbox.json b/src/apps/cli/themes/presets/gruvbox.json deleted file mode 100644 index dcae30258..000000000 --- a/src/apps/cli/themes/presets/gruvbox.json +++ /dev/null @@ -1,242 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "darkBg0": "#282828", - "darkBg1": "#3c3836", - "darkBg2": "#504945", - "darkBg3": "#665c54", - "darkFg0": "#fbf1c7", - "darkFg1": "#ebdbb2", - "darkGray": "#928374", - "darkRed": "#cc241d", - "darkGreen": "#98971a", - "darkYellow": "#d79921", - "darkBlue": "#458588", - "darkPurple": "#b16286", - "darkAqua": "#689d6a", - "darkOrange": "#d65d0e", - "darkRedBright": "#fb4934", - "darkGreenBright": "#b8bb26", - "darkYellowBright": "#fabd2f", - "darkBlueBright": "#83a598", - "darkPurpleBright": "#d3869b", - "darkAquaBright": "#8ec07c", - "darkOrangeBright": "#fe8019", - "lightBg0": "#fbf1c7", - "lightBg1": "#ebdbb2", - "lightBg2": "#d5c4a1", - "lightBg3": "#bdae93", - "lightFg0": "#282828", - "lightFg1": "#3c3836", - "lightGray": "#7c6f64", - "lightRed": "#9d0006", - "lightGreen": "#79740e", - "lightYellow": "#b57614", - "lightBlue": "#076678", - "lightPurple": "#8f3f71", - "lightAqua": "#427b58", - "lightOrange": "#af3a03" - }, - "theme": { - "primary": { - "dark": "darkBlueBright", - "light": "lightBlue" - }, - "secondary": { - "dark": "darkPurpleBright", - "light": "lightPurple" - }, - "accent": { - "dark": "darkAquaBright", - "light": "lightAqua" - }, - "error": { - "dark": "darkRedBright", - "light": "lightRed" - }, - "warning": { - "dark": "darkOrangeBright", - "light": "lightOrange" - }, - "success": { - "dark": "darkGreenBright", - "light": "lightGreen" - }, - "info": { - "dark": "darkYellowBright", - "light": "lightYellow" - }, - "text": { - "dark": "darkFg1", - "light": "lightFg1" - }, - "textMuted": { - "dark": "darkGray", - "light": "lightGray" - }, - "background": { - "dark": "darkBg0", - "light": "lightBg0" - }, - "backgroundPanel": { - "dark": "darkBg1", - "light": "lightBg1" - }, - "backgroundElement": { - "dark": "darkBg2", - "light": "lightBg2" - }, - "border": { - "dark": "darkBg3", - "light": "lightBg3" - }, - "borderActive": { - "dark": "darkFg1", - "light": "lightFg1" - }, - "borderSubtle": { - "dark": "darkBg2", - "light": "lightBg2" - }, - "diffAdded": { - "dark": "darkGreen", - "light": "lightGreen" - }, - "diffRemoved": { - "dark": "darkRed", - "light": "lightRed" - }, - "diffContext": { - "dark": "darkGray", - "light": "lightGray" - }, - "diffHunkHeader": { - "dark": "darkAqua", - "light": "lightAqua" - }, - "diffHighlightAdded": { - "dark": "darkGreenBright", - "light": "lightGreen" - }, - "diffHighlightRemoved": { - "dark": "darkRedBright", - "light": "lightRed" - }, - "diffAddedBg": { - "dark": "#32302f", - "light": "#dcd8a4" - }, - "diffRemovedBg": { - "dark": "#322929", - "light": "#e2c7c3" - }, - "diffContextBg": { - "dark": "darkBg1", - "light": "lightBg1" - }, - "diffLineNumber": { - "dark": "darkBg3", - "light": "lightBg3" - }, - "diffAddedLineNumberBg": { - "dark": "#2a2827", - "light": "#cec99e" - }, - "diffRemovedLineNumberBg": { - "dark": "#2a2222", - "light": "#d3bdb9" - }, - "markdownText": { - "dark": "darkFg1", - "light": "lightFg1" - }, - "markdownHeading": { - "dark": "darkBlueBright", - "light": "lightBlue" - }, - "markdownLink": { - "dark": "darkAquaBright", - "light": "lightAqua" - }, - "markdownLinkText": { - "dark": "darkGreenBright", - "light": "lightGreen" - }, - "markdownCode": { - "dark": "darkYellowBright", - "light": "lightYellow" - }, - "markdownBlockQuote": { - "dark": "darkGray", - "light": "lightGray" - }, - "markdownEmph": { - "dark": "darkPurpleBright", - "light": "lightPurple" - }, - "markdownStrong": { - "dark": "darkOrangeBright", - "light": "lightOrange" - }, - "markdownHorizontalRule": { - "dark": "darkGray", - "light": "lightGray" - }, - "markdownListItem": { - "dark": "darkBlueBright", - "light": "lightBlue" - }, - "markdownListEnumeration": { - "dark": "darkAquaBright", - "light": "lightAqua" - }, - "markdownImage": { - "dark": "darkAquaBright", - "light": "lightAqua" - }, - "markdownImageText": { - "dark": "darkGreenBright", - "light": "lightGreen" - }, - "markdownCodeBlock": { - "dark": "darkFg1", - "light": "lightFg1" - }, - "syntaxComment": { - "dark": "darkGray", - "light": "lightGray" - }, - "syntaxKeyword": { - "dark": "darkRedBright", - "light": "lightRed" - }, - "syntaxFunction": { - "dark": "darkGreenBright", - "light": "lightGreen" - }, - "syntaxVariable": { - "dark": "darkBlueBright", - "light": "lightBlue" - }, - "syntaxString": { - "dark": "darkYellowBright", - "light": "lightYellow" - }, - "syntaxNumber": { - "dark": "darkPurpleBright", - "light": "lightPurple" - }, - "syntaxType": { - "dark": "darkAquaBright", - "light": "lightAqua" - }, - "syntaxOperator": { - "dark": "darkOrangeBright", - "light": "lightOrange" - }, - "syntaxPunctuation": { - "dark": "darkFg1", - "light": "lightFg1" - } - } -} diff --git a/src/apps/cli/themes/presets/kanagawa.json b/src/apps/cli/themes/presets/kanagawa.json deleted file mode 100644 index 91a784014..000000000 --- a/src/apps/cli/themes/presets/kanagawa.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "sumiInk0": "#1F1F28", - "sumiInk1": "#2A2A37", - "sumiInk2": "#363646", - "sumiInk3": "#54546D", - "fujiWhite": "#DCD7BA", - "oldWhite": "#C8C093", - "fujiGray": "#727169", - "oniViolet": "#957FB8", - "crystalBlue": "#7E9CD8", - "carpYellow": "#C38D9D", - "sakuraPink": "#D27E99", - "waveAqua": "#76946A", - "roninYellow": "#D7A657", - "dragonRed": "#E82424", - "lotusGreen": "#98BB6C", - "waveBlue": "#2D4F67", - "lightBg": "#F2E9DE", - "lightPaper": "#EAE4D7", - "lightText": "#54433A", - "lightGray": "#9E9389" - }, - "theme": { - "primary": { "dark": "crystalBlue", "light": "waveBlue" }, - "secondary": { "dark": "oniViolet", "light": "oniViolet" }, - "accent": { "dark": "sakuraPink", "light": "sakuraPink" }, - "error": { "dark": "dragonRed", "light": "dragonRed" }, - "warning": { "dark": "roninYellow", "light": "roninYellow" }, - "success": { "dark": "lotusGreen", "light": "lotusGreen" }, - "info": { "dark": "waveAqua", "light": "waveAqua" }, - "text": { "dark": "fujiWhite", "light": "lightText" }, - "textMuted": { "dark": "fujiGray", "light": "lightGray" }, - "background": { "dark": "sumiInk0", "light": "lightBg" }, - "backgroundPanel": { "dark": "sumiInk1", "light": "lightPaper" }, - "backgroundElement": { "dark": "sumiInk2", "light": "#E3DCD2" }, - "border": { "dark": "sumiInk3", "light": "#D4CBBF" }, - "borderActive": { "dark": "carpYellow", "light": "carpYellow" }, - "borderSubtle": { "dark": "sumiInk2", "light": "#DCD4C9" }, - "diffAdded": { "dark": "lotusGreen", "light": "lotusGreen" }, - "diffRemoved": { "dark": "dragonRed", "light": "dragonRed" }, - "diffContext": { "dark": "fujiGray", "light": "lightGray" }, - "diffHunkHeader": { "dark": "waveBlue", "light": "waveBlue" }, - "diffHighlightAdded": { "dark": "#A9D977", "light": "#89AF5B" }, - "diffHighlightRemoved": { "dark": "#F24A4A", "light": "#D61F1F" }, - "diffAddedBg": { "dark": "#252E25", "light": "#EAF3E4" }, - "diffRemovedBg": { "dark": "#362020", "light": "#FBE6E6" }, - "diffContextBg": { "dark": "sumiInk1", "light": "lightPaper" }, - "diffLineNumber": { "dark": "sumiInk3", "light": "#C7BEB4" }, - "diffAddedLineNumberBg": { "dark": "#202820", "light": "#DDE8D6" }, - "diffRemovedLineNumberBg": { "dark": "#2D1C1C", "light": "#F2DADA" }, - "markdownText": { "dark": "fujiWhite", "light": "lightText" }, - "markdownHeading": { "dark": "oniViolet", "light": "oniViolet" }, - "markdownLink": { "dark": "crystalBlue", "light": "waveBlue" }, - "markdownLinkText": { "dark": "waveAqua", "light": "waveAqua" }, - "markdownCode": { "dark": "lotusGreen", "light": "lotusGreen" }, - "markdownBlockQuote": { "dark": "fujiGray", "light": "lightGray" }, - "markdownEmph": { "dark": "carpYellow", "light": "carpYellow" }, - "markdownStrong": { "dark": "roninYellow", "light": "roninYellow" }, - "markdownHorizontalRule": { "dark": "fujiGray", "light": "lightGray" }, - "markdownListItem": { "dark": "crystalBlue", "light": "waveBlue" }, - "markdownListEnumeration": { "dark": "waveAqua", "light": "waveAqua" }, - "markdownImage": { "dark": "crystalBlue", "light": "waveBlue" }, - "markdownImageText": { "dark": "waveAqua", "light": "waveAqua" }, - "markdownCodeBlock": { "dark": "fujiWhite", "light": "lightText" }, - "syntaxComment": { "dark": "fujiGray", "light": "lightGray" }, - "syntaxKeyword": { "dark": "oniViolet", "light": "oniViolet" }, - "syntaxFunction": { "dark": "crystalBlue", "light": "waveBlue" }, - "syntaxVariable": { "dark": "fujiWhite", "light": "lightText" }, - "syntaxString": { "dark": "lotusGreen", "light": "lotusGreen" }, - "syntaxNumber": { "dark": "roninYellow", "light": "roninYellow" }, - "syntaxType": { "dark": "carpYellow", "light": "carpYellow" }, - "syntaxOperator": { "dark": "sakuraPink", "light": "sakuraPink" }, - "syntaxPunctuation": { "dark": "fujiWhite", "light": "lightText" } - } -} diff --git a/src/apps/cli/themes/presets/lucent-orng.json b/src/apps/cli/themes/presets/lucent-orng.json deleted file mode 100644 index 036dedf2e..000000000 --- a/src/apps/cli/themes/presets/lucent-orng.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "darkStep6": "#3c3c3c", - "darkStep11": "#808080", - "darkStep12": "#eeeeee", - "darkSecondary": "#EE7948", - "darkAccent": "#FFF7F1", - "darkRed": "#e06c75", - "darkOrange": "#EC5B2B", - "darkBlue": "#6ba1e6", - "darkCyan": "#56b6c2", - "darkYellow": "#e5c07b", - "darkPanelBg": "#2a1a1599", - "lightStep6": "#d4d4d4", - "lightStep11": "#8a8a8a", - "lightStep12": "#1a1a1a", - "lightSecondary": "#EE7948", - "lightAccent": "#c94d24", - "lightRed": "#d1383d", - "lightOrange": "#EC5B2B", - "lightBlue": "#0062d1", - "lightCyan": "#318795", - "lightYellow": "#b0851f", - "lightPanelBg": "#fff5f099" - }, - "theme": { - "primary": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "secondary": { - "dark": "darkSecondary", - "light": "lightSecondary" - }, - "accent": { - "dark": "darkAccent", - "light": "lightAccent" - }, - "error": { - "dark": "darkRed", - "light": "lightRed" - }, - "warning": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "success": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "info": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "text": { - "dark": "darkStep12", - "light": "lightStep12" - }, - "textMuted": { - "dark": "darkStep11", - "light": "lightStep11" - }, - "selectedListItemText": { - "dark": "#0a0a0a", - "light": "#ffffff" - }, - "background": { - "dark": "transparent", - "light": "transparent" - }, - "backgroundPanel": { - "dark": "transparent", - "light": "transparent" - }, - "backgroundElement": { - "dark": "transparent", - "light": "transparent" - }, - "backgroundMenu": { - "dark": "darkPanelBg", - "light": "lightPanelBg" - }, - "border": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "borderActive": { - "dark": "darkSecondary", - "light": "lightAccent" - }, - "borderSubtle": { - "dark": "darkStep6", - "light": "lightStep6" - }, - "diffAdded": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "diffRemoved": { - "dark": "#c53b53", - "light": "#c53b53" - }, - "diffContext": { - "dark": "#828bb8", - "light": "#7086b5" - }, - "diffHunkHeader": { - "dark": "#828bb8", - "light": "#7086b5" - }, - "diffHighlightAdded": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "diffHighlightRemoved": { - "dark": "#e26a75", - "light": "#f52a65" - }, - "diffAddedBg": { - "dark": "transparent", - "light": "transparent" - }, - "diffRemovedBg": { - "dark": "transparent", - "light": "transparent" - }, - "diffContextBg": { - "dark": "transparent", - "light": "transparent" - }, - "diffLineNumber": { - "dark": "#666666", - "light": "#999999" - }, - "diffAddedLineNumberBg": { - "dark": "transparent", - "light": "transparent" - }, - "diffRemovedLineNumberBg": { - "dark": "transparent", - "light": "transparent" - }, - "markdownText": { - "dark": "darkStep12", - "light": "lightStep12" - }, - "markdownHeading": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "markdownLink": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "markdownLinkText": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "markdownCode": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "markdownBlockQuote": { - "dark": "darkAccent", - "light": "lightYellow" - }, - "markdownEmph": { - "dark": "darkYellow", - "light": "lightYellow" - }, - "markdownStrong": { - "dark": "darkSecondary", - "light": "lightOrange" - }, - "markdownHorizontalRule": { - "dark": "darkStep11", - "light": "lightStep11" - }, - "markdownListItem": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "markdownListEnumeration": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "markdownImage": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "markdownImageText": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "markdownCodeBlock": { - "dark": "darkStep12", - "light": "lightStep12" - }, - "syntaxComment": { - "dark": "darkStep11", - "light": "lightStep11" - }, - "syntaxKeyword": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "syntaxFunction": { - "dark": "darkSecondary", - "light": "lightAccent" - }, - "syntaxVariable": { - "dark": "darkRed", - "light": "lightRed" - }, - "syntaxString": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "syntaxNumber": { - "dark": "darkAccent", - "light": "lightOrange" - }, - "syntaxType": { - "dark": "darkYellow", - "light": "lightYellow" - }, - "syntaxOperator": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "syntaxPunctuation": { - "dark": "darkStep12", - "light": "lightStep12" - } - } -} diff --git a/src/apps/cli/themes/presets/material.json b/src/apps/cli/themes/presets/material.json deleted file mode 100644 index c3a106808..000000000 --- a/src/apps/cli/themes/presets/material.json +++ /dev/null @@ -1,235 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "darkBg": "#263238", - "darkBgAlt": "#1e272c", - "darkBgPanel": "#37474f", - "darkFg": "#eeffff", - "darkFgMuted": "#546e7a", - "darkRed": "#f07178", - "darkPink": "#f78c6c", - "darkOrange": "#ffcb6b", - "darkYellow": "#ffcb6b", - "darkGreen": "#c3e88d", - "darkCyan": "#89ddff", - "darkBlue": "#82aaff", - "darkPurple": "#c792ea", - "darkViolet": "#bb80b3", - "lightBg": "#fafafa", - "lightBgAlt": "#f5f5f5", - "lightBgPanel": "#e7e7e8", - "lightFg": "#263238", - "lightFgMuted": "#90a4ae", - "lightRed": "#e53935", - "lightPink": "#ec407a", - "lightOrange": "#f4511e", - "lightYellow": "#ffb300", - "lightGreen": "#91b859", - "lightCyan": "#39adb5", - "lightBlue": "#6182b8", - "lightPurple": "#7c4dff", - "lightViolet": "#945eb8" - }, - "theme": { - "primary": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "secondary": { - "dark": "darkPurple", - "light": "lightPurple" - }, - "accent": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "error": { - "dark": "darkRed", - "light": "lightRed" - }, - "warning": { - "dark": "darkYellow", - "light": "lightYellow" - }, - "success": { - "dark": "darkGreen", - "light": "lightGreen" - }, - "info": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "text": { - "dark": "darkFg", - "light": "lightFg" - }, - "textMuted": { - "dark": "darkFgMuted", - "light": "lightFgMuted" - }, - "background": { - "dark": "darkBg", - "light": "lightBg" - }, - "backgroundPanel": { - "dark": "darkBgAlt", - "light": "lightBgAlt" - }, - "backgroundElement": { - "dark": "darkBgPanel", - "light": "lightBgPanel" - }, - "border": { - "dark": "#37474f", - "light": "#e0e0e0" - }, - "borderActive": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "borderSubtle": { - "dark": "#1e272c", - "light": "#eeeeee" - }, - "diffAdded": { - "dark": "darkGreen", - "light": "lightGreen" - }, - "diffRemoved": { - "dark": "darkRed", - "light": "lightRed" - }, - "diffContext": { - "dark": "darkFgMuted", - "light": "lightFgMuted" - }, - "diffHunkHeader": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "diffHighlightAdded": { - "dark": "darkGreen", - "light": "lightGreen" - }, - "diffHighlightRemoved": { - "dark": "darkRed", - "light": "lightRed" - }, - "diffAddedBg": { - "dark": "#2e3c2b", - "light": "#e8f5e9" - }, - "diffRemovedBg": { - "dark": "#3c2b2b", - "light": "#ffebee" - }, - "diffContextBg": { - "dark": "darkBgAlt", - "light": "lightBgAlt" - }, - "diffLineNumber": { - "dark": "#37474f", - "light": "#cfd8dc" - }, - "diffAddedLineNumberBg": { - "dark": "#2e3c2b", - "light": "#e8f5e9" - }, - "diffRemovedLineNumberBg": { - "dark": "#3c2b2b", - "light": "#ffebee" - }, - "markdownText": { - "dark": "darkFg", - "light": "lightFg" - }, - "markdownHeading": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "markdownLink": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "markdownLinkText": { - "dark": "darkPurple", - "light": "lightPurple" - }, - "markdownCode": { - "dark": "darkGreen", - "light": "lightGreen" - }, - "markdownBlockQuote": { - "dark": "darkFgMuted", - "light": "lightFgMuted" - }, - "markdownEmph": { - "dark": "darkYellow", - "light": "lightYellow" - }, - "markdownStrong": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "markdownHorizontalRule": { - "dark": "#37474f", - "light": "#e0e0e0" - }, - "markdownListItem": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "markdownListEnumeration": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "markdownImage": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "markdownImageText": { - "dark": "darkPurple", - "light": "lightPurple" - }, - "markdownCodeBlock": { - "dark": "darkFg", - "light": "lightFg" - }, - "syntaxComment": { - "dark": "darkFgMuted", - "light": "lightFgMuted" - }, - "syntaxKeyword": { - "dark": "darkPurple", - "light": "lightPurple" - }, - "syntaxFunction": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "syntaxVariable": { - "dark": "darkFg", - "light": "lightFg" - }, - "syntaxString": { - "dark": "darkGreen", - "light": "lightGreen" - }, - "syntaxNumber": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "syntaxType": { - "dark": "darkYellow", - "light": "lightYellow" - }, - "syntaxOperator": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "syntaxPunctuation": { - "dark": "darkFg", - "light": "lightFg" - } - } -} diff --git a/src/apps/cli/themes/presets/matrix.json b/src/apps/cli/themes/presets/matrix.json deleted file mode 100644 index 354946284..000000000 --- a/src/apps/cli/themes/presets/matrix.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "matrixInk0": "#0a0e0a", - "matrixInk1": "#0e130d", - "matrixInk2": "#141c12", - "matrixInk3": "#1e2a1b", - "rainGreen": "#2eff6a", - "rainGreenDim": "#1cc24b", - "rainGreenHi": "#62ff94", - "rainCyan": "#00efff", - "rainTeal": "#24f6d9", - "rainPurple": "#c770ff", - "rainOrange": "#ffa83d", - "alertRed": "#ff4b4b", - "alertYellow": "#e6ff57", - "alertBlue": "#30b3ff", - "rainGray": "#8ca391", - "lightBg": "#eef3ea", - "lightPaper": "#e4ebe1", - "lightInk1": "#dae1d7", - "lightText": "#203022", - "lightGray": "#748476" - }, - "theme": { - "primary": { "dark": "rainGreen", "light": "rainGreenDim" }, - "secondary": { "dark": "rainCyan", "light": "rainTeal" }, - "accent": { "dark": "rainPurple", "light": "rainPurple" }, - "error": { "dark": "alertRed", "light": "alertRed" }, - "warning": { "dark": "alertYellow", "light": "alertYellow" }, - "success": { "dark": "rainGreenHi", "light": "rainGreenDim" }, - "info": { "dark": "alertBlue", "light": "alertBlue" }, - "text": { "dark": "rainGreenHi", "light": "lightText" }, - "textMuted": { "dark": "rainGray", "light": "lightGray" }, - "background": { "dark": "matrixInk0", "light": "lightBg" }, - "backgroundPanel": { "dark": "matrixInk1", "light": "lightPaper" }, - "backgroundElement": { "dark": "matrixInk2", "light": "lightInk1" }, - "border": { "dark": "matrixInk3", "light": "lightGray" }, - "borderActive": { "dark": "rainGreen", "light": "rainGreenDim" }, - "borderSubtle": { "dark": "matrixInk2", "light": "lightInk1" }, - "diffAdded": { "dark": "rainGreenDim", "light": "rainGreenDim" }, - "diffRemoved": { "dark": "alertRed", "light": "alertRed" }, - "diffContext": { "dark": "rainGray", "light": "lightGray" }, - "diffHunkHeader": { "dark": "alertBlue", "light": "alertBlue" }, - "diffHighlightAdded": { "dark": "#77ffaf", "light": "#5dac7e" }, - "diffHighlightRemoved": { "dark": "#ff7171", "light": "#d53a3a" }, - "diffAddedBg": { "dark": "#132616", "light": "#e0efde" }, - "diffRemovedBg": { "dark": "#261212", "light": "#f9e5e5" }, - "diffContextBg": { "dark": "matrixInk1", "light": "lightPaper" }, - "diffLineNumber": { "dark": "matrixInk3", "light": "lightGray" }, - "diffAddedLineNumberBg": { "dark": "#0f1b11", "light": "#d6e7d2" }, - "diffRemovedLineNumberBg": { "dark": "#1b1414", "light": "#f2d2d2" }, - "markdownText": { "dark": "rainGreenHi", "light": "lightText" }, - "markdownHeading": { "dark": "rainCyan", "light": "rainTeal" }, - "markdownLink": { "dark": "alertBlue", "light": "alertBlue" }, - "markdownLinkText": { "dark": "rainTeal", "light": "rainTeal" }, - "markdownCode": { "dark": "rainGreenDim", "light": "rainGreenDim" }, - "markdownBlockQuote": { "dark": "rainGray", "light": "lightGray" }, - "markdownEmph": { "dark": "rainOrange", "light": "rainOrange" }, - "markdownStrong": { "dark": "alertYellow", "light": "alertYellow" }, - "markdownHorizontalRule": { "dark": "rainGray", "light": "lightGray" }, - "markdownListItem": { "dark": "alertBlue", "light": "alertBlue" }, - "markdownListEnumeration": { "dark": "rainTeal", "light": "rainTeal" }, - "markdownImage": { "dark": "alertBlue", "light": "alertBlue" }, - "markdownImageText": { "dark": "rainTeal", "light": "rainTeal" }, - "markdownCodeBlock": { "dark": "rainGreenHi", "light": "lightText" }, - "syntaxComment": { "dark": "rainGray", "light": "lightGray" }, - "syntaxKeyword": { "dark": "rainPurple", "light": "rainPurple" }, - "syntaxFunction": { "dark": "alertBlue", "light": "alertBlue" }, - "syntaxVariable": { "dark": "rainGreenHi", "light": "lightText" }, - "syntaxString": { "dark": "rainGreenDim", "light": "rainGreenDim" }, - "syntaxNumber": { "dark": "rainOrange", "light": "rainOrange" }, - "syntaxType": { "dark": "alertYellow", "light": "alertYellow" }, - "syntaxOperator": { "dark": "rainTeal", "light": "rainTeal" }, - "syntaxPunctuation": { "dark": "rainGreenHi", "light": "lightText" } - } -} diff --git a/src/apps/cli/themes/presets/mercury.json b/src/apps/cli/themes/presets/mercury.json deleted file mode 100644 index dfd4f3529..000000000 --- a/src/apps/cli/themes/presets/mercury.json +++ /dev/null @@ -1,252 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "purple-800": "#3442a6", - "purple-700": "#465bd1", - "purple-600": "#5266eb", - "purple-400": "#8da4f5", - "purple-300": "#a7b6f8", - - "red-700": "#b0175f", - "red-600": "#d03275", - "red-400": "#fc92b4", - - "green-700": "#036e43", - "green-600": "#188554", - "green-400": "#77c599", - - "orange-700": "#a44200", - "orange-600": "#c45000", - "orange-400": "#fc9b6f", - - "blue-600": "#007f95", - "blue-400": "#77becf", - - "neutral-1000": "#10101a", - "neutral-950": "#171721", - "neutral-900": "#1e1e2a", - "neutral-800": "#272735", - "neutral-700": "#363644", - "neutral-600": "#535461", - "neutral-500": "#70707d", - "neutral-400": "#9d9da8", - "neutral-300": "#c3c3cc", - "neutral-200": "#dddde5", - "neutral-100": "#f4f5f9", - "neutral-050": "#fbfcfd", - "neutral-000": "#ffffff", - "neutral-150": "#ededf3", - - "border-light": "#7073931a", - "border-light-subtle": "#7073930f", - "border-dark": "#b4b7c81f", - "border-dark-subtle": "#b4b7c814", - - "diff-added-light": "#1885541a", - "diff-removed-light": "#d032751a", - "diff-added-dark": "#77c59933", - "diff-removed-dark": "#fc92b433" - }, - "theme": { - "primary": { - "light": "purple-600", - "dark": "purple-400" - }, - "secondary": { - "light": "purple-700", - "dark": "purple-300" - }, - "accent": { - "light": "purple-400", - "dark": "purple-400" - }, - "error": { - "light": "red-700", - "dark": "red-400" - }, - "warning": { - "light": "orange-700", - "dark": "orange-400" - }, - "success": { - "light": "green-700", - "dark": "green-400" - }, - "info": { - "light": "blue-600", - "dark": "blue-400" - }, - "text": { - "light": "neutral-700", - "dark": "neutral-200" - }, - "textMuted": { - "light": "neutral-500", - "dark": "neutral-400" - }, - "background": { - "light": "neutral-000", - "dark": "neutral-950" - }, - "backgroundPanel": { - "light": "neutral-050", - "dark": "neutral-1000" - }, - "backgroundElement": { - "light": "neutral-100", - "dark": "neutral-800" - }, - "border": { - "light": "border-light", - "dark": "border-dark" - }, - "borderActive": { - "light": "purple-600", - "dark": "purple-400" - }, - "borderSubtle": { - "light": "border-light-subtle", - "dark": "border-dark-subtle" - }, - "diffAdded": { - "light": "green-700", - "dark": "green-400" - }, - "diffRemoved": { - "light": "red-700", - "dark": "red-400" - }, - "diffContext": { - "light": "neutral-500", - "dark": "neutral-400" - }, - "diffHunkHeader": { - "light": "neutral-500", - "dark": "neutral-400" - }, - "diffHighlightAdded": { - "light": "green-700", - "dark": "green-400" - }, - "diffHighlightRemoved": { - "light": "red-700", - "dark": "red-400" - }, - "diffAddedBg": { - "light": "diff-added-light", - "dark": "diff-added-dark" - }, - "diffRemovedBg": { - "light": "diff-removed-light", - "dark": "diff-removed-dark" - }, - "diffContextBg": { - "light": "neutral-050", - "dark": "neutral-900" - }, - "diffLineNumber": { - "light": "neutral-600", - "dark": "neutral-300" - }, - "diffAddedLineNumberBg": { - "light": "diff-added-light", - "dark": "diff-added-dark" - }, - "diffRemovedLineNumberBg": { - "light": "diff-removed-light", - "dark": "diff-removed-dark" - }, - "markdownText": { - "light": "neutral-700", - "dark": "neutral-200" - }, - "markdownHeading": { - "light": "neutral-900", - "dark": "neutral-000" - }, - "markdownLink": { - "light": "purple-700", - "dark": "purple-400" - }, - "markdownLinkText": { - "light": "purple-600", - "dark": "purple-300" - }, - "markdownCode": { - "light": "green-700", - "dark": "green-400" - }, - "markdownBlockQuote": { - "light": "neutral-500", - "dark": "neutral-400" - }, - "markdownEmph": { - "light": "orange-700", - "dark": "orange-400" - }, - "markdownStrong": { - "light": "neutral-900", - "dark": "neutral-100" - }, - "markdownHorizontalRule": { - "light": "border-light", - "dark": "border-dark" - }, - "markdownListItem": { - "light": "neutral-900", - "dark": "neutral-000" - }, - "markdownListEnumeration": { - "light": "purple-600", - "dark": "purple-400" - }, - "markdownImage": { - "light": "purple-700", - "dark": "purple-400" - }, - "markdownImageText": { - "light": "purple-600", - "dark": "purple-300" - }, - "markdownCodeBlock": { - "light": "neutral-700", - "dark": "neutral-200" - }, - "syntaxComment": { - "light": "neutral-500", - "dark": "neutral-400" - }, - "syntaxKeyword": { - "light": "purple-700", - "dark": "purple-400" - }, - "syntaxFunction": { - "light": "purple-600", - "dark": "purple-400" - }, - "syntaxVariable": { - "light": "blue-600", - "dark": "blue-400" - }, - "syntaxString": { - "light": "green-700", - "dark": "green-400" - }, - "syntaxNumber": { - "light": "orange-700", - "dark": "orange-400" - }, - "syntaxType": { - "light": "blue-600", - "dark": "blue-400" - }, - "syntaxOperator": { - "light": "purple-700", - "dark": "purple-400" - }, - "syntaxPunctuation": { - "light": "neutral-700", - "dark": "neutral-200" - } - } -} diff --git a/src/apps/cli/themes/presets/monokai.json b/src/apps/cli/themes/presets/monokai.json deleted file mode 100644 index 09637a1e2..000000000 --- a/src/apps/cli/themes/presets/monokai.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "background": "#272822", - "backgroundAlt": "#1e1f1c", - "backgroundPanel": "#3e3d32", - "foreground": "#f8f8f2", - "comment": "#75715e", - "red": "#f92672", - "orange": "#fd971f", - "lightOrange": "#e69f66", - "yellow": "#e6db74", - "green": "#a6e22e", - "cyan": "#66d9ef", - "blue": "#66d9ef", - "purple": "#ae81ff", - "pink": "#f92672" - }, - "theme": { - "primary": { - "dark": "cyan", - "light": "blue" - }, - "secondary": { - "dark": "purple", - "light": "purple" - }, - "accent": { - "dark": "green", - "light": "green" - }, - "error": { - "dark": "red", - "light": "red" - }, - "warning": { - "dark": "yellow", - "light": "orange" - }, - "success": { - "dark": "green", - "light": "green" - }, - "info": { - "dark": "orange", - "light": "orange" - }, - "text": { - "dark": "foreground", - "light": "#272822" - }, - "textMuted": { - "dark": "comment", - "light": "#75715e" - }, - "background": { - "dark": "#272822", - "light": "#fafafa" - }, - "backgroundPanel": { - "dark": "#1e1f1c", - "light": "#f0f0f0" - }, - "backgroundElement": { - "dark": "#3e3d32", - "light": "#e0e0e0" - }, - "border": { - "dark": "#3e3d32", - "light": "#d0d0d0" - }, - "borderActive": { - "dark": "cyan", - "light": "blue" - }, - "borderSubtle": { - "dark": "#1e1f1c", - "light": "#e8e8e8" - }, - "diffAdded": { - "dark": "green", - "light": "green" - }, - "diffRemoved": { - "dark": "red", - "light": "red" - }, - "diffContext": { - "dark": "comment", - "light": "#75715e" - }, - "diffHunkHeader": { - "dark": "comment", - "light": "#75715e" - }, - "diffHighlightAdded": { - "dark": "green", - "light": "green" - }, - "diffHighlightRemoved": { - "dark": "red", - "light": "red" - }, - "diffAddedBg": { - "dark": "#1a3a1a", - "light": "#e0ffe0" - }, - "diffRemovedBg": { - "dark": "#3a1a1a", - "light": "#ffe0e0" - }, - "diffContextBg": { - "dark": "#1e1f1c", - "light": "#f0f0f0" - }, - "diffLineNumber": { - "dark": "#3e3d32", - "light": "#d0d0d0" - }, - "diffAddedLineNumberBg": { - "dark": "#1a3a1a", - "light": "#e0ffe0" - }, - "diffRemovedLineNumberBg": { - "dark": "#3a1a1a", - "light": "#ffe0e0" - }, - "markdownText": { - "dark": "foreground", - "light": "#272822" - }, - "markdownHeading": { - "dark": "pink", - "light": "pink" - }, - "markdownLink": { - "dark": "cyan", - "light": "blue" - }, - "markdownLinkText": { - "dark": "purple", - "light": "purple" - }, - "markdownCode": { - "dark": "green", - "light": "green" - }, - "markdownBlockQuote": { - "dark": "comment", - "light": "#75715e" - }, - "markdownEmph": { - "dark": "yellow", - "light": "orange" - }, - "markdownStrong": { - "dark": "orange", - "light": "orange" - }, - "markdownHorizontalRule": { - "dark": "comment", - "light": "#75715e" - }, - "markdownListItem": { - "dark": "cyan", - "light": "blue" - }, - "markdownListEnumeration": { - "dark": "purple", - "light": "purple" - }, - "markdownImage": { - "dark": "cyan", - "light": "blue" - }, - "markdownImageText": { - "dark": "purple", - "light": "purple" - }, - "markdownCodeBlock": { - "dark": "foreground", - "light": "#272822" - }, - "syntaxComment": { - "dark": "comment", - "light": "#75715e" - }, - "syntaxKeyword": { - "dark": "pink", - "light": "pink" - }, - "syntaxFunction": { - "dark": "green", - "light": "green" - }, - "syntaxVariable": { - "dark": "foreground", - "light": "#272822" - }, - "syntaxString": { - "dark": "yellow", - "light": "orange" - }, - "syntaxNumber": { - "dark": "purple", - "light": "purple" - }, - "syntaxType": { - "dark": "cyan", - "light": "blue" - }, - "syntaxOperator": { - "dark": "pink", - "light": "pink" - }, - "syntaxPunctuation": { - "dark": "foreground", - "light": "#272822" - } - } -} diff --git a/src/apps/cli/themes/presets/nightowl.json b/src/apps/cli/themes/presets/nightowl.json deleted file mode 100644 index 24c74733d..000000000 --- a/src/apps/cli/themes/presets/nightowl.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "nightOwlBg": "#011627", - "nightOwlFg": "#d6deeb", - "nightOwlBlue": "#82AAFF", - "nightOwlCyan": "#7fdbca", - "nightOwlGreen": "#c5e478", - "nightOwlYellow": "#ecc48d", - "nightOwlOrange": "#F78C6C", - "nightOwlRed": "#EF5350", - "nightOwlPink": "#ff5874", - "nightOwlPurple": "#c792ea", - "nightOwlMuted": "#5f7e97", - "nightOwlGray": "#637777", - "nightOwlLightGray": "#89a4bb", - "nightOwlPanel": "#0b253a" - }, - "theme": { - "primary": { - "dark": "nightOwlBlue", - "light": "nightOwlBlue" - }, - "secondary": { - "dark": "nightOwlCyan", - "light": "nightOwlCyan" - }, - "accent": { - "dark": "nightOwlPurple", - "light": "nightOwlPurple" - }, - "error": { - "dark": "nightOwlRed", - "light": "nightOwlRed" - }, - "warning": { - "dark": "nightOwlYellow", - "light": "nightOwlYellow" - }, - "success": { - "dark": "nightOwlGreen", - "light": "nightOwlGreen" - }, - "info": { - "dark": "nightOwlBlue", - "light": "nightOwlBlue" - }, - "text": { - "dark": "nightOwlFg", - "light": "nightOwlFg" - }, - "textMuted": { - "dark": "nightOwlMuted", - "light": "nightOwlMuted" - }, - "background": { - "dark": "nightOwlBg", - "light": "nightOwlBg" - }, - "backgroundPanel": { - "dark": "nightOwlPanel", - "light": "nightOwlPanel" - }, - "backgroundElement": { - "dark": "nightOwlPanel", - "light": "nightOwlPanel" - }, - "border": { - "dark": "nightOwlMuted", - "light": "nightOwlMuted" - }, - "borderActive": { - "dark": "nightOwlBlue", - "light": "nightOwlBlue" - }, - "borderSubtle": { - "dark": "nightOwlMuted", - "light": "nightOwlMuted" - }, - "diffAdded": { - "dark": "nightOwlGreen", - "light": "nightOwlGreen" - }, - "diffRemoved": { - "dark": "nightOwlRed", - "light": "nightOwlRed" - }, - "diffContext": { - "dark": "nightOwlMuted", - "light": "nightOwlMuted" - }, - "diffHunkHeader": { - "dark": "nightOwlMuted", - "light": "nightOwlMuted" - }, - "diffHighlightAdded": { - "dark": "nightOwlGreen", - "light": "nightOwlGreen" - }, - "diffHighlightRemoved": { - "dark": "nightOwlRed", - "light": "nightOwlRed" - }, - "diffAddedBg": { - "dark": "#0a2e1a", - "light": "#0a2e1a" - }, - "diffRemovedBg": { - "dark": "#2d1b1b", - "light": "#2d1b1b" - }, - "diffContextBg": { - "dark": "nightOwlPanel", - "light": "nightOwlPanel" - }, - "diffLineNumber": { - "dark": "nightOwlMuted", - "light": "nightOwlMuted" - }, - "diffAddedLineNumberBg": { - "dark": "#0a2e1a", - "light": "#0a2e1a" - }, - "diffRemovedLineNumberBg": { - "dark": "#2d1b1b", - "light": "#2d1b1b" - }, - "markdownText": { - "dark": "nightOwlFg", - "light": "nightOwlFg" - }, - "markdownHeading": { - "dark": "nightOwlBlue", - "light": "nightOwlBlue" - }, - "markdownLink": { - "dark": "nightOwlCyan", - "light": "nightOwlCyan" - }, - "markdownLinkText": { - "dark": "nightOwlBlue", - "light": "nightOwlBlue" - }, - "markdownCode": { - "dark": "nightOwlGreen", - "light": "nightOwlGreen" - }, - "markdownBlockQuote": { - "dark": "nightOwlMuted", - "light": "nightOwlMuted" - }, - "markdownEmph": { - "dark": "nightOwlPurple", - "light": "nightOwlPurple" - }, - "markdownStrong": { - "dark": "nightOwlYellow", - "light": "nightOwlYellow" - }, - "markdownHorizontalRule": { - "dark": "nightOwlMuted", - "light": "nightOwlMuted" - }, - "markdownListItem": { - "dark": "nightOwlBlue", - "light": "nightOwlBlue" - }, - "markdownListEnumeration": { - "dark": "nightOwlCyan", - "light": "nightOwlCyan" - }, - "markdownImage": { - "dark": "nightOwlCyan", - "light": "nightOwlCyan" - }, - "markdownImageText": { - "dark": "nightOwlBlue", - "light": "nightOwlBlue" - }, - "markdownCodeBlock": { - "dark": "nightOwlFg", - "light": "nightOwlFg" - }, - "syntaxComment": { - "dark": "nightOwlGray", - "light": "nightOwlGray" - }, - "syntaxKeyword": { - "dark": "nightOwlPurple", - "light": "nightOwlPurple" - }, - "syntaxFunction": { - "dark": "nightOwlBlue", - "light": "nightOwlBlue" - }, - "syntaxVariable": { - "dark": "nightOwlFg", - "light": "nightOwlFg" - }, - "syntaxString": { - "dark": "nightOwlYellow", - "light": "nightOwlYellow" - }, - "syntaxNumber": { - "dark": "nightOwlOrange", - "light": "nightOwlOrange" - }, - "syntaxType": { - "dark": "nightOwlGreen", - "light": "nightOwlGreen" - }, - "syntaxOperator": { - "dark": "nightOwlCyan", - "light": "nightOwlCyan" - }, - "syntaxPunctuation": { - "dark": "nightOwlFg", - "light": "nightOwlFg" - } - } -} diff --git a/src/apps/cli/themes/presets/nord.json b/src/apps/cli/themes/presets/nord.json deleted file mode 100644 index 4a525382a..000000000 --- a/src/apps/cli/themes/presets/nord.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "nord0": "#2E3440", - "nord1": "#3B4252", - "nord2": "#434C5E", - "nord3": "#4C566A", - "nord4": "#D8DEE9", - "nord5": "#E5E9F0", - "nord6": "#ECEFF4", - "nord7": "#8FBCBB", - "nord8": "#88C0D0", - "nord9": "#81A1C1", - "nord10": "#5E81AC", - "nord11": "#BF616A", - "nord12": "#D08770", - "nord13": "#EBCB8B", - "nord14": "#A3BE8C", - "nord15": "#B48EAD" - }, - "theme": { - "primary": { - "dark": "nord8", - "light": "nord10" - }, - "secondary": { - "dark": "nord9", - "light": "nord9" - }, - "accent": { - "dark": "nord7", - "light": "nord7" - }, - "error": { - "dark": "nord11", - "light": "nord11" - }, - "warning": { - "dark": "nord12", - "light": "nord12" - }, - "success": { - "dark": "nord14", - "light": "nord14" - }, - "info": { - "dark": "nord8", - "light": "nord10" - }, - "text": { - "dark": "nord6", - "light": "nord0" - }, - "textMuted": { - "dark": "#8B95A7", - "light": "nord1" - }, - "background": { - "dark": "nord0", - "light": "nord6" - }, - "backgroundPanel": { - "dark": "nord1", - "light": "nord5" - }, - "backgroundElement": { - "dark": "nord2", - "light": "nord4" - }, - "border": { - "dark": "nord2", - "light": "nord3" - }, - "borderActive": { - "dark": "nord3", - "light": "nord2" - }, - "borderSubtle": { - "dark": "nord2", - "light": "nord3" - }, - "diffAdded": { - "dark": "nord14", - "light": "nord14" - }, - "diffRemoved": { - "dark": "nord11", - "light": "nord11" - }, - "diffContext": { - "dark": "#8B95A7", - "light": "nord3" - }, - "diffHunkHeader": { - "dark": "#8B95A7", - "light": "nord3" - }, - "diffHighlightAdded": { - "dark": "nord14", - "light": "nord14" - }, - "diffHighlightRemoved": { - "dark": "nord11", - "light": "nord11" - }, - "diffAddedBg": { - "dark": "#3B4252", - "light": "#E5E9F0" - }, - "diffRemovedBg": { - "dark": "#3B4252", - "light": "#E5E9F0" - }, - "diffContextBg": { - "dark": "nord1", - "light": "nord5" - }, - "diffLineNumber": { - "dark": "nord2", - "light": "nord4" - }, - "diffAddedLineNumberBg": { - "dark": "#3B4252", - "light": "#E5E9F0" - }, - "diffRemovedLineNumberBg": { - "dark": "#3B4252", - "light": "#E5E9F0" - }, - "markdownText": { - "dark": "nord4", - "light": "nord0" - }, - "markdownHeading": { - "dark": "nord8", - "light": "nord10" - }, - "markdownLink": { - "dark": "nord9", - "light": "nord9" - }, - "markdownLinkText": { - "dark": "nord7", - "light": "nord7" - }, - "markdownCode": { - "dark": "nord14", - "light": "nord14" - }, - "markdownBlockQuote": { - "dark": "#8B95A7", - "light": "nord3" - }, - "markdownEmph": { - "dark": "nord12", - "light": "nord12" - }, - "markdownStrong": { - "dark": "nord13", - "light": "nord13" - }, - "markdownHorizontalRule": { - "dark": "#8B95A7", - "light": "nord3" - }, - "markdownListItem": { - "dark": "nord8", - "light": "nord10" - }, - "markdownListEnumeration": { - "dark": "nord7", - "light": "nord7" - }, - "markdownImage": { - "dark": "nord9", - "light": "nord9" - }, - "markdownImageText": { - "dark": "nord7", - "light": "nord7" - }, - "markdownCodeBlock": { - "dark": "nord4", - "light": "nord0" - }, - "syntaxComment": { - "dark": "#8B95A7", - "light": "nord3" - }, - "syntaxKeyword": { - "dark": "nord9", - "light": "nord9" - }, - "syntaxFunction": { - "dark": "nord8", - "light": "nord8" - }, - "syntaxVariable": { - "dark": "nord7", - "light": "nord7" - }, - "syntaxString": { - "dark": "nord14", - "light": "nord14" - }, - "syntaxNumber": { - "dark": "nord15", - "light": "nord15" - }, - "syntaxType": { - "dark": "nord7", - "light": "nord7" - }, - "syntaxOperator": { - "dark": "nord9", - "light": "nord9" - }, - "syntaxPunctuation": { - "dark": "nord4", - "light": "nord0" - } - } -} diff --git a/src/apps/cli/themes/presets/orng.json b/src/apps/cli/themes/presets/orng.json deleted file mode 100644 index 1fc602f2c..000000000 --- a/src/apps/cli/themes/presets/orng.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "darkStep1": "#0a0a0a", - "darkStep2": "#141414", - "darkStep3": "#1e1e1e", - "darkStep4": "#282828", - "darkStep5": "#323232", - "darkStep6": "#3c3c3c", - "darkStep7": "#484848", - "darkStep8": "#606060", - "darkStep9": "#EC5B2B", - "darkStep10": "#EE7948", - "darkStep11": "#808080", - "darkStep12": "#eeeeee", - "darkSecondary": "#EE7948", - "darkAccent": "#FFF7F1", - "darkRed": "#e06c75", - "darkOrange": "#EC5B2B", - "darkBlue": "#6ba1e6", - "darkCyan": "#56b6c2", - "darkYellow": "#e5c07b", - "lightStep1": "#ffffff", - "lightStep2": "#FFF7F1", - "lightStep3": "#f5f0eb", - "lightStep4": "#ebebeb", - "lightStep5": "#e1e1e1", - "lightStep6": "#d4d4d4", - "lightStep7": "#b8b8b8", - "lightStep8": "#a0a0a0", - "lightStep9": "#EC5B2B", - "lightStep10": "#c94d24", - "lightStep11": "#8a8a8a", - "lightStep12": "#1a1a1a", - "lightSecondary": "#EE7948", - "lightAccent": "#c94d24", - "lightRed": "#d1383d", - "lightOrange": "#EC5B2B", - "lightBlue": "#0062d1", - "lightCyan": "#318795", - "lightYellow": "#b0851f" - }, - "theme": { - "primary": { - "dark": "darkStep9", - "light": "lightStep9" - }, - "secondary": { - "dark": "darkSecondary", - "light": "lightSecondary" - }, - "accent": { - "dark": "darkAccent", - "light": "lightAccent" - }, - "error": { - "dark": "darkRed", - "light": "lightRed" - }, - "warning": { - "dark": "darkOrange", - "light": "lightOrange" - }, - "success": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "info": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "text": { - "dark": "darkStep12", - "light": "lightStep12" - }, - "textMuted": { - "dark": "darkStep11", - "light": "lightStep11" - }, - "selectedListItemText": { - "dark": "#0a0a0a", - "light": "#ffffff" - }, - "background": { - "dark": "darkStep1", - "light": "lightStep1" - }, - "backgroundPanel": { - "dark": "darkStep2", - "light": "lightStep2" - }, - "backgroundElement": { - "dark": "darkStep3", - "light": "lightStep3" - }, - "border": { - "dark": "#EC5B2B", - "light": "#EC5B2B" - }, - "borderActive": { - "dark": "#EE7948", - "light": "#c94d24" - }, - "borderSubtle": { - "dark": "darkStep6", - "light": "lightStep6" - }, - "diffAdded": { - "dark": "#6ba1e6", - "light": "#0062d1" - }, - "diffRemoved": { - "dark": "#c53b53", - "light": "#c53b53" - }, - "diffContext": { - "dark": "#828bb8", - "light": "#7086b5" - }, - "diffHunkHeader": { - "dark": "#828bb8", - "light": "#7086b5" - }, - "diffHighlightAdded": { - "dark": "#6ba1e6", - "light": "#0062d1" - }, - "diffHighlightRemoved": { - "dark": "#e26a75", - "light": "#f52a65" - }, - "diffAddedBg": { - "dark": "#1a2a3d", - "light": "#e0edfa" - }, - "diffRemovedBg": { - "dark": "#37222c", - "light": "#f7d8db" - }, - "diffContextBg": { - "dark": "darkStep2", - "light": "lightStep2" - }, - "diffLineNumber": { - "dark": "darkStep3", - "light": "lightStep3" - }, - "diffAddedLineNumberBg": { - "dark": "#162535", - "light": "#d0e5f5" - }, - "diffRemovedLineNumberBg": { - "dark": "#2d1f26", - "light": "#e7c8cb" - }, - "markdownText": { - "dark": "darkStep12", - "light": "lightStep12" - }, - "markdownHeading": { - "dark": "#EC5B2B", - "light": "#EC5B2B" - }, - "markdownLink": { - "dark": "darkStep9", - "light": "lightStep9" - }, - "markdownLinkText": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "markdownCode": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "markdownBlockQuote": { - "dark": "#FFF7F1", - "light": "lightYellow" - }, - "markdownEmph": { - "dark": "darkYellow", - "light": "lightYellow" - }, - "markdownStrong": { - "dark": "#EE7948", - "light": "#EC5B2B" - }, - "markdownHorizontalRule": { - "dark": "darkStep11", - "light": "lightStep11" - }, - "markdownListItem": { - "dark": "darkStep9", - "light": "lightStep9" - }, - "markdownListEnumeration": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "markdownImage": { - "dark": "darkStep9", - "light": "lightStep9" - }, - "markdownImageText": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "markdownCodeBlock": { - "dark": "darkStep12", - "light": "lightStep12" - }, - "syntaxComment": { - "dark": "darkStep11", - "light": "lightStep11" - }, - "syntaxKeyword": { - "dark": "#EC5B2B", - "light": "#EC5B2B" - }, - "syntaxFunction": { - "dark": "#EE7948", - "light": "#c94d24" - }, - "syntaxVariable": { - "dark": "darkRed", - "light": "lightRed" - }, - "syntaxString": { - "dark": "darkBlue", - "light": "lightBlue" - }, - "syntaxNumber": { - "dark": "#FFF7F1", - "light": "#EC5B2B" - }, - "syntaxType": { - "dark": "darkYellow", - "light": "lightYellow" - }, - "syntaxOperator": { - "dark": "darkCyan", - "light": "lightCyan" - }, - "syntaxPunctuation": { - "dark": "darkStep12", - "light": "lightStep12" - } - } -} diff --git a/src/apps/cli/themes/presets/osaka-jade.json b/src/apps/cli/themes/presets/osaka-jade.json deleted file mode 100644 index 1c9de92af..000000000 --- a/src/apps/cli/themes/presets/osaka-jade.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "darkBg0": "#111c18", - "darkBg1": "#1a2520", - "darkBg2": "#23372B", - "darkBg3": "#3d4a44", - "darkFg0": "#C1C497", - "darkFg1": "#9aa88a", - "darkGray": "#53685B", - "darkRed": "#FF5345", - "darkGreen": "#549e6a", - "darkYellow": "#459451", - "darkBlue": "#509475", - "darkMagenta": "#D2689C", - "darkCyan": "#2DD5B7", - "darkWhite": "#F6F5DD", - "darkRedBright": "#db9f9c", - "darkGreenBright": "#63b07a", - "darkYellowBright": "#E5C736", - "darkBlueBright": "#ACD4CF", - "darkMagentaBright": "#75bbb3", - "darkCyanBright": "#8CD3CB", - "lightBg0": "#F6F5DD", - "lightBg1": "#E8E7CC", - "lightBg2": "#D5D4B8", - "lightBg3": "#A8A78C", - "lightFg0": "#111c18", - "lightFg1": "#1a2520", - "lightGray": "#53685B", - "lightRed": "#c7392d", - "lightGreen": "#3d7a52", - "lightYellow": "#b5a020", - "lightBlue": "#3d7560", - "lightMagenta": "#a8527a", - "lightCyan": "#1faa90" - }, - "theme": { - "primary": { "dark": "darkCyan", "light": "lightCyan" }, - "secondary": { "dark": "darkMagenta", "light": "lightMagenta" }, - "accent": { "dark": "darkGreen", "light": "lightGreen" }, - "error": { "dark": "darkRed", "light": "lightRed" }, - "warning": { "dark": "darkYellowBright", "light": "lightYellow" }, - "success": { "dark": "darkGreen", "light": "lightGreen" }, - "info": { "dark": "darkCyan", "light": "lightCyan" }, - "text": { "dark": "darkFg0", "light": "lightFg0" }, - "textMuted": { "dark": "darkGray", "light": "lightGray" }, - "background": { "dark": "darkBg0", "light": "lightBg0" }, - "backgroundPanel": { "dark": "darkBg1", "light": "lightBg1" }, - "backgroundElement": { "dark": "darkBg2", "light": "lightBg2" }, - "border": { "dark": "darkBg3", "light": "lightBg3" }, - "borderActive": { "dark": "darkCyan", "light": "lightCyan" }, - "borderSubtle": { "dark": "darkBg2", "light": "lightBg2" }, - "diffAdded": { "dark": "darkGreen", "light": "lightGreen" }, - "diffRemoved": { "dark": "darkRed", "light": "lightRed" }, - "diffContext": { "dark": "darkGray", "light": "lightGray" }, - "diffHunkHeader": { "dark": "darkCyan", "light": "lightCyan" }, - "diffHighlightAdded": { "dark": "darkGreenBright", "light": "lightGreen" }, - "diffHighlightRemoved": { "dark": "darkRedBright", "light": "lightRed" }, - "diffAddedBg": { "dark": "#15241c", "light": "#e0eee5" }, - "diffRemovedBg": { "dark": "#241515", "light": "#eee0e0" }, - "diffContextBg": { "dark": "darkBg1", "light": "lightBg1" }, - "diffLineNumber": { "dark": "darkBg3", "light": "lightBg3" }, - "diffAddedLineNumberBg": { "dark": "#121f18", "light": "#d5e5da" }, - "diffRemovedLineNumberBg": { "dark": "#1f1212", "light": "#e5d5d5" }, - "markdownText": { "dark": "darkFg0", "light": "lightFg0" }, - "markdownHeading": { "dark": "darkCyan", "light": "lightCyan" }, - "markdownLink": { "dark": "darkCyanBright", "light": "lightCyan" }, - "markdownLinkText": { "dark": "darkGreen", "light": "lightGreen" }, - "markdownCode": { "dark": "darkGreenBright", "light": "lightGreen" }, - "markdownBlockQuote": { "dark": "darkGray", "light": "lightGray" }, - "markdownEmph": { "dark": "darkMagenta", "light": "lightMagenta" }, - "markdownStrong": { "dark": "darkFg0", "light": "lightFg0" }, - "markdownHorizontalRule": { "dark": "darkGray", "light": "lightGray" }, - "markdownListItem": { "dark": "darkCyan", "light": "lightCyan" }, - "markdownListEnumeration": { - "dark": "darkCyanBright", - "light": "lightCyan" - }, - "markdownImage": { "dark": "darkCyanBright", "light": "lightCyan" }, - "markdownImageText": { "dark": "darkGreen", "light": "lightGreen" }, - "markdownCodeBlock": { "dark": "darkFg0", "light": "lightFg0" }, - "syntaxComment": { "dark": "darkGray", "light": "lightGray" }, - "syntaxKeyword": { "dark": "darkCyan", "light": "lightCyan" }, - "syntaxFunction": { "dark": "darkBlue", "light": "lightBlue" }, - "syntaxVariable": { "dark": "darkFg0", "light": "lightFg0" }, - "syntaxString": { "dark": "darkGreenBright", "light": "lightGreen" }, - "syntaxNumber": { "dark": "darkMagenta", "light": "lightMagenta" }, - "syntaxType": { "dark": "darkGreen", "light": "lightGreen" }, - "syntaxOperator": { "dark": "darkYellow", "light": "lightYellow" }, - "syntaxPunctuation": { "dark": "darkFg0", "light": "lightFg0" } - } -} diff --git a/src/apps/cli/themes/presets/palenight.json b/src/apps/cli/themes/presets/palenight.json deleted file mode 100644 index 79f7c59e8..000000000 --- a/src/apps/cli/themes/presets/palenight.json +++ /dev/null @@ -1,222 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "background": "#292d3e", - "backgroundAlt": "#1e2132", - "backgroundPanel": "#32364a", - "foreground": "#a6accd", - "foregroundBright": "#bfc7d5", - "comment": "#676e95", - "red": "#f07178", - "orange": "#f78c6c", - "yellow": "#ffcb6b", - "green": "#c3e88d", - "cyan": "#89ddff", - "blue": "#82aaff", - "purple": "#c792ea", - "magenta": "#ff5370", - "pink": "#f07178" - }, - "theme": { - "primary": { - "dark": "blue", - "light": "#4976eb" - }, - "secondary": { - "dark": "purple", - "light": "#a854f2" - }, - "accent": { - "dark": "cyan", - "light": "#00acc1" - }, - "error": { - "dark": "red", - "light": "#e53935" - }, - "warning": { - "dark": "yellow", - "light": "#ffb300" - }, - "success": { - "dark": "green", - "light": "#91b859" - }, - "info": { - "dark": "orange", - "light": "#f4511e" - }, - "text": { - "dark": "foreground", - "light": "#292d3e" - }, - "textMuted": { - "dark": "comment", - "light": "#8796b0" - }, - "background": { - "dark": "#292d3e", - "light": "#fafafa" - }, - "backgroundPanel": { - "dark": "#1e2132", - "light": "#f5f5f5" - }, - "backgroundElement": { - "dark": "#32364a", - "light": "#e7e7e8" - }, - "border": { - "dark": "#32364a", - "light": "#e0e0e0" - }, - "borderActive": { - "dark": "blue", - "light": "#4976eb" - }, - "borderSubtle": { - "dark": "#1e2132", - "light": "#eeeeee" - }, - "diffAdded": { - "dark": "green", - "light": "#91b859" - }, - "diffRemoved": { - "dark": "red", - "light": "#e53935" - }, - "diffContext": { - "dark": "comment", - "light": "#8796b0" - }, - "diffHunkHeader": { - "dark": "cyan", - "light": "#00acc1" - }, - "diffHighlightAdded": { - "dark": "green", - "light": "#91b859" - }, - "diffHighlightRemoved": { - "dark": "red", - "light": "#e53935" - }, - "diffAddedBg": { - "dark": "#2e3c2b", - "light": "#e8f5e9" - }, - "diffRemovedBg": { - "dark": "#3c2b2b", - "light": "#ffebee" - }, - "diffContextBg": { - "dark": "#1e2132", - "light": "#f5f5f5" - }, - "diffLineNumber": { - "dark": "#444760", - "light": "#cfd8dc" - }, - "diffAddedLineNumberBg": { - "dark": "#2e3c2b", - "light": "#e8f5e9" - }, - "diffRemovedLineNumberBg": { - "dark": "#3c2b2b", - "light": "#ffebee" - }, - "markdownText": { - "dark": "foreground", - "light": "#292d3e" - }, - "markdownHeading": { - "dark": "purple", - "light": "#a854f2" - }, - "markdownLink": { - "dark": "blue", - "light": "#4976eb" - }, - "markdownLinkText": { - "dark": "cyan", - "light": "#00acc1" - }, - "markdownCode": { - "dark": "green", - "light": "#91b859" - }, - "markdownBlockQuote": { - "dark": "comment", - "light": "#8796b0" - }, - "markdownEmph": { - "dark": "yellow", - "light": "#ffb300" - }, - "markdownStrong": { - "dark": "orange", - "light": "#f4511e" - }, - "markdownHorizontalRule": { - "dark": "comment", - "light": "#8796b0" - }, - "markdownListItem": { - "dark": "blue", - "light": "#4976eb" - }, - "markdownListEnumeration": { - "dark": "cyan", - "light": "#00acc1" - }, - "markdownImage": { - "dark": "blue", - "light": "#4976eb" - }, - "markdownImageText": { - "dark": "cyan", - "light": "#00acc1" - }, - "markdownCodeBlock": { - "dark": "foreground", - "light": "#292d3e" - }, - "syntaxComment": { - "dark": "comment", - "light": "#8796b0" - }, - "syntaxKeyword": { - "dark": "purple", - "light": "#a854f2" - }, - "syntaxFunction": { - "dark": "blue", - "light": "#4976eb" - }, - "syntaxVariable": { - "dark": "foreground", - "light": "#292d3e" - }, - "syntaxString": { - "dark": "green", - "light": "#91b859" - }, - "syntaxNumber": { - "dark": "orange", - "light": "#f4511e" - }, - "syntaxType": { - "dark": "yellow", - "light": "#ffb300" - }, - "syntaxOperator": { - "dark": "cyan", - "light": "#00acc1" - }, - "syntaxPunctuation": { - "dark": "foreground", - "light": "#292d3e" - } - } -} diff --git a/src/apps/cli/themes/presets/rosepine.json b/src/apps/cli/themes/presets/rosepine.json deleted file mode 100644 index 444cdbd13..000000000 --- a/src/apps/cli/themes/presets/rosepine.json +++ /dev/null @@ -1,234 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "base": "#191724", - "surface": "#1f1d2e", - "overlay": "#26233a", - "muted": "#6e6a86", - "subtle": "#908caa", - "text": "#e0def4", - "love": "#eb6f92", - "gold": "#f6c177", - "rose": "#ebbcba", - "pine": "#31748f", - "foam": "#9ccfd8", - "iris": "#c4a7e7", - "highlightLow": "#21202e", - "highlightMed": "#403d52", - "highlightHigh": "#524f67", - "moonBase": "#232136", - "moonSurface": "#2a273f", - "moonOverlay": "#393552", - "moonMuted": "#6e6a86", - "moonSubtle": "#908caa", - "moonText": "#e0def4", - "dawnBase": "#faf4ed", - "dawnSurface": "#fffaf3", - "dawnOverlay": "#f2e9e1", - "dawnMuted": "#9893a5", - "dawnSubtle": "#797593", - "dawnText": "#575279" - }, - "theme": { - "primary": { - "dark": "foam", - "light": "pine" - }, - "secondary": { - "dark": "iris", - "light": "#907aa9" - }, - "accent": { - "dark": "rose", - "light": "#d7827e" - }, - "error": { - "dark": "love", - "light": "#b4637a" - }, - "warning": { - "dark": "gold", - "light": "#ea9d34" - }, - "success": { - "dark": "pine", - "light": "#286983" - }, - "info": { - "dark": "foam", - "light": "#56949f" - }, - "text": { - "dark": "#e0def4", - "light": "#575279" - }, - "textMuted": { - "dark": "muted", - "light": "dawnMuted" - }, - "background": { - "dark": "base", - "light": "dawnBase" - }, - "backgroundPanel": { - "dark": "surface", - "light": "dawnSurface" - }, - "backgroundElement": { - "dark": "overlay", - "light": "dawnOverlay" - }, - "border": { - "dark": "highlightMed", - "light": "#dfdad9" - }, - "borderActive": { - "dark": "foam", - "light": "pine" - }, - "borderSubtle": { - "dark": "highlightLow", - "light": "#f4ede8" - }, - "diffAdded": { - "dark": "pine", - "light": "#286983" - }, - "diffRemoved": { - "dark": "love", - "light": "#b4637a" - }, - "diffContext": { - "dark": "muted", - "light": "dawnMuted" - }, - "diffHunkHeader": { - "dark": "iris", - "light": "#907aa9" - }, - "diffHighlightAdded": { - "dark": "pine", - "light": "#286983" - }, - "diffHighlightRemoved": { - "dark": "love", - "light": "#b4637a" - }, - "diffAddedBg": { - "dark": "#1f2d3a", - "light": "#e5f2f3" - }, - "diffRemovedBg": { - "dark": "#3a1f2d", - "light": "#fce5e8" - }, - "diffContextBg": { - "dark": "surface", - "light": "dawnSurface" - }, - "diffLineNumber": { - "dark": "muted", - "light": "dawnMuted" - }, - "diffAddedLineNumberBg": { - "dark": "#1f2d3a", - "light": "#e5f2f3" - }, - "diffRemovedLineNumberBg": { - "dark": "#3a1f2d", - "light": "#fce5e8" - }, - "markdownText": { - "dark": "#e0def4", - "light": "#575279" - }, - "markdownHeading": { - "dark": "iris", - "light": "#907aa9" - }, - "markdownLink": { - "dark": "foam", - "light": "pine" - }, - "markdownLinkText": { - "dark": "rose", - "light": "#d7827e" - }, - "markdownCode": { - "dark": "pine", - "light": "#286983" - }, - "markdownBlockQuote": { - "dark": "muted", - "light": "dawnMuted" - }, - "markdownEmph": { - "dark": "gold", - "light": "#ea9d34" - }, - "markdownStrong": { - "dark": "love", - "light": "#b4637a" - }, - "markdownHorizontalRule": { - "dark": "highlightMed", - "light": "#dfdad9" - }, - "markdownListItem": { - "dark": "foam", - "light": "pine" - }, - "markdownListEnumeration": { - "dark": "rose", - "light": "#d7827e" - }, - "markdownImage": { - "dark": "foam", - "light": "pine" - }, - "markdownImageText": { - "dark": "rose", - "light": "#d7827e" - }, - "markdownCodeBlock": { - "dark": "#e0def4", - "light": "#575279" - }, - "syntaxComment": { - "dark": "muted", - "light": "dawnMuted" - }, - "syntaxKeyword": { - "dark": "pine", - "light": "#286983" - }, - "syntaxFunction": { - "dark": "rose", - "light": "#d7827e" - }, - "syntaxVariable": { - "dark": "#e0def4", - "light": "#575279" - }, - "syntaxString": { - "dark": "gold", - "light": "#ea9d34" - }, - "syntaxNumber": { - "dark": "iris", - "light": "#907aa9" - }, - "syntaxType": { - "dark": "foam", - "light": "#56949f" - }, - "syntaxOperator": { - "dark": "subtle", - "light": "dawnSubtle" - }, - "syntaxPunctuation": { - "dark": "subtle", - "light": "dawnSubtle" - } - } -} diff --git a/src/apps/cli/themes/presets/solarized.json b/src/apps/cli/themes/presets/solarized.json deleted file mode 100644 index e4de11367..000000000 --- a/src/apps/cli/themes/presets/solarized.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "base03": "#002b36", - "base02": "#073642", - "base01": "#586e75", - "base00": "#657b83", - "base0": "#839496", - "base1": "#93a1a1", - "base2": "#eee8d5", - "base3": "#fdf6e3", - "yellow": "#b58900", - "orange": "#cb4b16", - "red": "#dc322f", - "magenta": "#d33682", - "violet": "#6c71c4", - "blue": "#268bd2", - "cyan": "#2aa198", - "green": "#859900" - }, - "theme": { - "primary": { - "dark": "blue", - "light": "blue" - }, - "secondary": { - "dark": "violet", - "light": "violet" - }, - "accent": { - "dark": "cyan", - "light": "cyan" - }, - "error": { - "dark": "red", - "light": "red" - }, - "warning": { - "dark": "yellow", - "light": "yellow" - }, - "success": { - "dark": "green", - "light": "green" - }, - "info": { - "dark": "orange", - "light": "orange" - }, - "text": { - "dark": "base0", - "light": "base00" - }, - "textMuted": { - "dark": "base01", - "light": "base1" - }, - "background": { - "dark": "base03", - "light": "base3" - }, - "backgroundPanel": { - "dark": "base02", - "light": "base2" - }, - "backgroundElement": { - "dark": "#073642", - "light": "#eee8d5" - }, - "border": { - "dark": "base02", - "light": "base2" - }, - "borderActive": { - "dark": "base01", - "light": "base1" - }, - "borderSubtle": { - "dark": "#073642", - "light": "#eee8d5" - }, - "diffAdded": { - "dark": "green", - "light": "green" - }, - "diffRemoved": { - "dark": "red", - "light": "red" - }, - "diffContext": { - "dark": "base01", - "light": "base1" - }, - "diffHunkHeader": { - "dark": "base01", - "light": "base1" - }, - "diffHighlightAdded": { - "dark": "green", - "light": "green" - }, - "diffHighlightRemoved": { - "dark": "red", - "light": "red" - }, - "diffAddedBg": { - "dark": "#073642", - "light": "#eee8d5" - }, - "diffRemovedBg": { - "dark": "#073642", - "light": "#eee8d5" - }, - "diffContextBg": { - "dark": "base02", - "light": "base2" - }, - "diffLineNumber": { - "dark": "base01", - "light": "base1" - }, - "diffAddedLineNumberBg": { - "dark": "#073642", - "light": "#eee8d5" - }, - "diffRemovedLineNumberBg": { - "dark": "#073642", - "light": "#eee8d5" - }, - "markdownText": { - "dark": "base0", - "light": "base00" - }, - "markdownHeading": { - "dark": "blue", - "light": "blue" - }, - "markdownLink": { - "dark": "cyan", - "light": "cyan" - }, - "markdownLinkText": { - "dark": "violet", - "light": "violet" - }, - "markdownCode": { - "dark": "green", - "light": "green" - }, - "markdownBlockQuote": { - "dark": "base01", - "light": "base1" - }, - "markdownEmph": { - "dark": "yellow", - "light": "yellow" - }, - "markdownStrong": { - "dark": "orange", - "light": "orange" - }, - "markdownHorizontalRule": { - "dark": "base01", - "light": "base1" - }, - "markdownListItem": { - "dark": "blue", - "light": "blue" - }, - "markdownListEnumeration": { - "dark": "cyan", - "light": "cyan" - }, - "markdownImage": { - "dark": "cyan", - "light": "cyan" - }, - "markdownImageText": { - "dark": "violet", - "light": "violet" - }, - "markdownCodeBlock": { - "dark": "base0", - "light": "base00" - }, - "syntaxComment": { - "dark": "base01", - "light": "base1" - }, - "syntaxKeyword": { - "dark": "green", - "light": "green" - }, - "syntaxFunction": { - "dark": "blue", - "light": "blue" - }, - "syntaxVariable": { - "dark": "cyan", - "light": "cyan" - }, - "syntaxString": { - "dark": "cyan", - "light": "cyan" - }, - "syntaxNumber": { - "dark": "magenta", - "light": "magenta" - }, - "syntaxType": { - "dark": "yellow", - "light": "yellow" - }, - "syntaxOperator": { - "dark": "green", - "light": "green" - }, - "syntaxPunctuation": { - "dark": "base0", - "light": "base00" - } - } -} diff --git a/src/apps/cli/themes/presets/synthwave84.json b/src/apps/cli/themes/presets/synthwave84.json deleted file mode 100644 index d25bf3b49..000000000 --- a/src/apps/cli/themes/presets/synthwave84.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "background": "#262335", - "backgroundAlt": "#1e1a29", - "backgroundPanel": "#2a2139", - "foreground": "#ffffff", - "foregroundMuted": "#848bbd", - "pink": "#ff7edb", - "pinkBright": "#ff92df", - "cyan": "#36f9f6", - "cyanBright": "#72f1f8", - "yellow": "#fede5d", - "yellowBright": "#fff95d", - "orange": "#ff8b39", - "orangeBright": "#ff9f43", - "purple": "#b084eb", - "purpleBright": "#c792ea", - "red": "#fe4450", - "redBright": "#ff5e5b", - "green": "#72f1b8", - "greenBright": "#97f1d8" - }, - "theme": { - "primary": { - "dark": "cyan", - "light": "#00bcd4" - }, - "secondary": { - "dark": "pink", - "light": "#e91e63" - }, - "accent": { - "dark": "purple", - "light": "#9c27b0" - }, - "error": { - "dark": "red", - "light": "#f44336" - }, - "warning": { - "dark": "yellow", - "light": "#ff9800" - }, - "success": { - "dark": "green", - "light": "#4caf50" - }, - "info": { - "dark": "orange", - "light": "#ff5722" - }, - "text": { - "dark": "foreground", - "light": "#262335" - }, - "textMuted": { - "dark": "foregroundMuted", - "light": "#5c5c8a" - }, - "background": { - "dark": "#262335", - "light": "#fafafa" - }, - "backgroundPanel": { - "dark": "#1e1a29", - "light": "#f5f5f5" - }, - "backgroundElement": { - "dark": "#2a2139", - "light": "#eeeeee" - }, - "border": { - "dark": "#495495", - "light": "#e0e0e0" - }, - "borderActive": { - "dark": "cyan", - "light": "#00bcd4" - }, - "borderSubtle": { - "dark": "#241b2f", - "light": "#f0f0f0" - }, - "diffAdded": { - "dark": "green", - "light": "#4caf50" - }, - "diffRemoved": { - "dark": "red", - "light": "#f44336" - }, - "diffContext": { - "dark": "foregroundMuted", - "light": "#5c5c8a" - }, - "diffHunkHeader": { - "dark": "purple", - "light": "#9c27b0" - }, - "diffHighlightAdded": { - "dark": "greenBright", - "light": "#4caf50" - }, - "diffHighlightRemoved": { - "dark": "redBright", - "light": "#f44336" - }, - "diffAddedBg": { - "dark": "#1a3a2a", - "light": "#e8f5e9" - }, - "diffRemovedBg": { - "dark": "#3a1a2a", - "light": "#ffebee" - }, - "diffContextBg": { - "dark": "#1e1a29", - "light": "#f5f5f5" - }, - "diffLineNumber": { - "dark": "#495495", - "light": "#b0b0b0" - }, - "diffAddedLineNumberBg": { - "dark": "#1a3a2a", - "light": "#e8f5e9" - }, - "diffRemovedLineNumberBg": { - "dark": "#3a1a2a", - "light": "#ffebee" - }, - "markdownText": { - "dark": "foreground", - "light": "#262335" - }, - "markdownHeading": { - "dark": "pink", - "light": "#e91e63" - }, - "markdownLink": { - "dark": "cyan", - "light": "#00bcd4" - }, - "markdownLinkText": { - "dark": "purple", - "light": "#9c27b0" - }, - "markdownCode": { - "dark": "green", - "light": "#4caf50" - }, - "markdownBlockQuote": { - "dark": "foregroundMuted", - "light": "#5c5c8a" - }, - "markdownEmph": { - "dark": "yellow", - "light": "#ff9800" - }, - "markdownStrong": { - "dark": "orange", - "light": "#ff5722" - }, - "markdownHorizontalRule": { - "dark": "#495495", - "light": "#e0e0e0" - }, - "markdownListItem": { - "dark": "cyan", - "light": "#00bcd4" - }, - "markdownListEnumeration": { - "dark": "purple", - "light": "#9c27b0" - }, - "markdownImage": { - "dark": "cyan", - "light": "#00bcd4" - }, - "markdownImageText": { - "dark": "purple", - "light": "#9c27b0" - }, - "markdownCodeBlock": { - "dark": "foreground", - "light": "#262335" - }, - "syntaxComment": { - "dark": "foregroundMuted", - "light": "#5c5c8a" - }, - "syntaxKeyword": { - "dark": "pink", - "light": "#e91e63" - }, - "syntaxFunction": { - "dark": "orange", - "light": "#ff5722" - }, - "syntaxVariable": { - "dark": "foreground", - "light": "#262335" - }, - "syntaxString": { - "dark": "yellow", - "light": "#ff9800" - }, - "syntaxNumber": { - "dark": "purple", - "light": "#9c27b0" - }, - "syntaxType": { - "dark": "cyan", - "light": "#00bcd4" - }, - "syntaxOperator": { - "dark": "pink", - "light": "#e91e63" - }, - "syntaxPunctuation": { - "dark": "foreground", - "light": "#262335" - } - } -} diff --git a/src/apps/cli/themes/presets/vercel.json b/src/apps/cli/themes/presets/vercel.json deleted file mode 100644 index 86b965b10..000000000 --- a/src/apps/cli/themes/presets/vercel.json +++ /dev/null @@ -1,245 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "background100": "#0A0A0A", - "background200": "#000000", - "gray100": "#1A1A1A", - "gray200": "#1F1F1F", - "gray300": "#292929", - "gray400": "#2E2E2E", - "gray500": "#454545", - "gray600": "#878787", - "gray700": "#8F8F8F", - "gray900": "#A1A1A1", - "gray1000": "#EDEDED", - "blue600": "#0099FF", - "blue700": "#0070F3", - "blue900": "#52A8FF", - "blue1000": "#EBF8FF", - "red700": "#E5484D", - "red900": "#FF6166", - "red1000": "#FDECED", - "amber700": "#FFB224", - "amber900": "#F2A700", - "amber1000": "#FDF4DC", - "green700": "#46A758", - "green900": "#63C46D", - "green1000": "#E6F9E9", - "teal700": "#12A594", - "teal900": "#0AC7AC", - "purple700": "#8E4EC6", - "purple900": "#BF7AF0", - "pink700": "#E93D82", - "pink900": "#F75590", - "highlightPink": "#FF0080", - "highlightPurple": "#F81CE5", - "cyan": "#50E3C2", - "lightBackground": "#FFFFFF", - "lightGray100": "#FAFAFA", - "lightGray200": "#EAEAEA", - "lightGray600": "#666666", - "lightGray1000": "#171717" - }, - "theme": { - "primary": { - "dark": "blue700", - "light": "blue700" - }, - "secondary": { - "dark": "blue900", - "light": "#0062D1" - }, - "accent": { - "dark": "purple700", - "light": "purple700" - }, - "error": { - "dark": "red700", - "light": "#DC3545" - }, - "warning": { - "dark": "amber700", - "light": "#FF9500" - }, - "success": { - "dark": "green700", - "light": "#388E3C" - }, - "info": { - "dark": "blue900", - "light": "blue700" - }, - "text": { - "dark": "gray1000", - "light": "lightGray1000" - }, - "textMuted": { - "dark": "gray600", - "light": "lightGray600" - }, - "background": { - "dark": "background200", - "light": "lightBackground" - }, - "backgroundPanel": { - "dark": "gray100", - "light": "lightGray100" - }, - "backgroundElement": { - "dark": "gray300", - "light": "lightGray200" - }, - "border": { - "dark": "gray200", - "light": "lightGray200" - }, - "borderActive": { - "dark": "gray500", - "light": "#999999" - }, - "borderSubtle": { - "dark": "gray100", - "light": "#EAEAEA" - }, - "diffAdded": { - "dark": "green900", - "light": "green700" - }, - "diffRemoved": { - "dark": "red900", - "light": "red700" - }, - "diffContext": { - "dark": "gray600", - "light": "lightGray600" - }, - "diffHunkHeader": { - "dark": "gray600", - "light": "lightGray600" - }, - "diffHighlightAdded": { - "dark": "green900", - "light": "green700" - }, - "diffHighlightRemoved": { - "dark": "red900", - "light": "red700" - }, - "diffAddedBg": { - "dark": "#0B1D0F", - "light": "#E6F9E9" - }, - "diffRemovedBg": { - "dark": "#2A1314", - "light": "#FDECED" - }, - "diffContextBg": { - "dark": "background200", - "light": "lightBackground" - }, - "diffLineNumber": { - "dark": "gray600", - "light": "lightGray600" - }, - "diffAddedLineNumberBg": { - "dark": "#0F2613", - "light": "#D6F5D6" - }, - "diffRemovedLineNumberBg": { - "dark": "#3C1618", - "light": "#FFE5E5" - }, - "markdownText": { - "dark": "gray1000", - "light": "lightGray1000" - }, - "markdownHeading": { - "dark": "purple900", - "light": "purple700" - }, - "markdownLink": { - "dark": "blue900", - "light": "blue700" - }, - "markdownLinkText": { - "dark": "teal900", - "light": "teal700" - }, - "markdownCode": { - "dark": "green900", - "light": "green700" - }, - "markdownBlockQuote": { - "dark": "gray600", - "light": "lightGray600" - }, - "markdownEmph": { - "dark": "amber900", - "light": "amber700" - }, - "markdownStrong": { - "dark": "pink900", - "light": "pink700" - }, - "markdownHorizontalRule": { - "dark": "gray500", - "light": "#999999" - }, - "markdownListItem": { - "dark": "gray1000", - "light": "lightGray1000" - }, - "markdownListEnumeration": { - "dark": "blue900", - "light": "blue700" - }, - "markdownImage": { - "dark": "teal900", - "light": "teal700" - }, - "markdownImageText": { - "dark": "cyan", - "light": "teal700" - }, - "markdownCodeBlock": { - "dark": "gray1000", - "light": "lightGray1000" - }, - "syntaxComment": { - "dark": "gray600", - "light": "#888888" - }, - "syntaxKeyword": { - "dark": "pink900", - "light": "pink700" - }, - "syntaxFunction": { - "dark": "purple900", - "light": "purple700" - }, - "syntaxVariable": { - "dark": "blue900", - "light": "blue700" - }, - "syntaxString": { - "dark": "green900", - "light": "green700" - }, - "syntaxNumber": { - "dark": "amber900", - "light": "amber700" - }, - "syntaxType": { - "dark": "teal900", - "light": "teal700" - }, - "syntaxOperator": { - "dark": "pink900", - "light": "pink700" - }, - "syntaxPunctuation": { - "dark": "gray1000", - "light": "lightGray1000" - } - } -} diff --git a/src/apps/cli/themes/presets/vesper.json b/src/apps/cli/themes/presets/vesper.json deleted file mode 100644 index 758c8f20c..000000000 --- a/src/apps/cli/themes/presets/vesper.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "vesperBg": "#101010", - "vesperFg": "#FFF", - "vesperComment": "#8b8b8b", - "vesperKeyword": "#A0A0A0", - "vesperFunction": "#FFC799", - "vesperString": "#99FFE4", - "vesperNumber": "#FFC799", - "vesperError": "#FF8080", - "vesperWarning": "#FFC799", - "vesperSuccess": "#99FFE4", - "vesperMuted": "#A0A0A0" - }, - "theme": { - "primary": { - "dark": "#FFC799", - "light": "#FFC799" - }, - "secondary": { - "dark": "#99FFE4", - "light": "#99FFE4" - }, - "accent": { - "dark": "#FFC799", - "light": "#FFC799" - }, - "error": { - "dark": "vesperError", - "light": "vesperError" - }, - "warning": { - "dark": "vesperWarning", - "light": "vesperWarning" - }, - "success": { - "dark": "vesperSuccess", - "light": "vesperSuccess" - }, - "info": { - "dark": "#FFC799", - "light": "#FFC799" - }, - "text": { - "dark": "vesperFg", - "light": "vesperBg" - }, - "textMuted": { - "dark": "vesperMuted", - "light": "vesperMuted" - }, - "background": { - "dark": "vesperBg", - "light": "#FFF" - }, - "backgroundPanel": { - "dark": "vesperBg", - "light": "#F0F0F0" - }, - "backgroundElement": { - "dark": "vesperBg", - "light": "#E0E0E0" - }, - "border": { - "dark": "#282828", - "light": "#D0D0D0" - }, - "borderActive": { - "dark": "#FFC799", - "light": "#FFC799" - }, - "borderSubtle": { - "dark": "#1C1C1C", - "light": "#E8E8E8" - }, - "diffAdded": { - "dark": "vesperSuccess", - "light": "vesperSuccess" - }, - "diffRemoved": { - "dark": "vesperError", - "light": "vesperError" - }, - "diffContext": { - "dark": "vesperMuted", - "light": "vesperMuted" - }, - "diffHunkHeader": { - "dark": "vesperMuted", - "light": "vesperMuted" - }, - "diffHighlightAdded": { - "dark": "vesperSuccess", - "light": "vesperSuccess" - }, - "diffHighlightRemoved": { - "dark": "vesperError", - "light": "vesperError" - }, - "diffAddedBg": { - "dark": "#0d2818", - "light": "#e8f5e8" - }, - "diffRemovedBg": { - "dark": "#281a1a", - "light": "#f5e8e8" - }, - "diffContextBg": { - "dark": "vesperBg", - "light": "#F8F8F8" - }, - "diffLineNumber": { - "dark": "#505050", - "light": "#808080" - }, - "diffAddedLineNumberBg": { - "dark": "#0d2818", - "light": "#e8f5e8" - }, - "diffRemovedLineNumberBg": { - "dark": "#281a1a", - "light": "#f5e8e8" - }, - "markdownText": { - "dark": "vesperFg", - "light": "vesperBg" - }, - "markdownHeading": { - "dark": "#FFC799", - "light": "#FFC799" - }, - "markdownLink": { - "dark": "#FFC799", - "light": "#FFC799" - }, - "markdownLinkText": { - "dark": "vesperMuted", - "light": "vesperMuted" - }, - "markdownCode": { - "dark": "vesperMuted", - "light": "vesperMuted" - }, - "markdownBlockQuote": { - "dark": "vesperFg", - "light": "vesperBg" - }, - "markdownEmph": { - "dark": "vesperFg", - "light": "vesperBg" - }, - "markdownStrong": { - "dark": "vesperFg", - "light": "vesperBg" - }, - "markdownHorizontalRule": { - "dark": "#65737E", - "light": "#65737E" - }, - "markdownListItem": { - "dark": "vesperFg", - "light": "vesperBg" - }, - "markdownListEnumeration": { - "dark": "vesperFg", - "light": "vesperBg" - }, - "markdownImage": { - "dark": "#FFC799", - "light": "#FFC799" - }, - "markdownImageText": { - "dark": "vesperMuted", - "light": "vesperMuted" - }, - "markdownCodeBlock": { - "dark": "vesperFg", - "light": "vesperBg" - }, - "syntaxComment": { - "dark": "vesperComment", - "light": "vesperComment" - }, - "syntaxKeyword": { - "dark": "vesperKeyword", - "light": "vesperKeyword" - }, - "syntaxFunction": { - "dark": "vesperFunction", - "light": "vesperFunction" - }, - "syntaxVariable": { - "dark": "vesperFg", - "light": "vesperBg" - }, - "syntaxString": { - "dark": "vesperString", - "light": "vesperString" - }, - "syntaxNumber": { - "dark": "vesperNumber", - "light": "vesperNumber" - }, - "syntaxType": { - "dark": "vesperFunction", - "light": "vesperFunction" - }, - "syntaxOperator": { - "dark": "vesperKeyword", - "light": "vesperKeyword" - }, - "syntaxPunctuation": { - "dark": "vesperFg", - "light": "vesperBg" - } - } -} diff --git a/src/apps/cli/themes/presets/zenburn.json b/src/apps/cli/themes/presets/zenburn.json deleted file mode 100644 index c4475923b..000000000 --- a/src/apps/cli/themes/presets/zenburn.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "$schema": "https://opencode.ai/theme.json", - "defs": { - "bg": "#3f3f3f", - "bgAlt": "#4f4f4f", - "bgPanel": "#5f5f5f", - "fg": "#dcdccc", - "fgMuted": "#9f9f9f", - "red": "#cc9393", - "redBright": "#dca3a3", - "green": "#7f9f7f", - "greenBright": "#8fb28f", - "yellow": "#f0dfaf", - "yellowDim": "#e0cf9f", - "blue": "#8cd0d3", - "blueDim": "#7cb8bb", - "magenta": "#dc8cc3", - "cyan": "#93e0e3", - "orange": "#dfaf8f" - }, - "theme": { - "primary": { - "dark": "blue", - "light": "#5f7f8f" - }, - "secondary": { - "dark": "magenta", - "light": "#8f5f8f" - }, - "accent": { - "dark": "cyan", - "light": "#5f8f8f" - }, - "error": { - "dark": "red", - "light": "#8f5f5f" - }, - "warning": { - "dark": "yellow", - "light": "#8f8f5f" - }, - "success": { - "dark": "green", - "light": "#5f8f5f" - }, - "info": { - "dark": "orange", - "light": "#8f7f5f" - }, - "text": { - "dark": "fg", - "light": "#3f3f3f" - }, - "textMuted": { - "dark": "fgMuted", - "light": "#6f6f6f" - }, - "background": { - "dark": "bg", - "light": "#ffffef" - }, - "backgroundPanel": { - "dark": "bgAlt", - "light": "#f5f5e5" - }, - "backgroundElement": { - "dark": "bgPanel", - "light": "#ebebdb" - }, - "border": { - "dark": "#5f5f5f", - "light": "#d0d0c0" - }, - "borderActive": { - "dark": "blue", - "light": "#5f7f8f" - }, - "borderSubtle": { - "dark": "#4f4f4f", - "light": "#e0e0d0" - }, - "diffAdded": { - "dark": "green", - "light": "#5f8f5f" - }, - "diffRemoved": { - "dark": "red", - "light": "#8f5f5f" - }, - "diffContext": { - "dark": "fgMuted", - "light": "#6f6f6f" - }, - "diffHunkHeader": { - "dark": "cyan", - "light": "#5f8f8f" - }, - "diffHighlightAdded": { - "dark": "greenBright", - "light": "#5f8f5f" - }, - "diffHighlightRemoved": { - "dark": "redBright", - "light": "#8f5f5f" - }, - "diffAddedBg": { - "dark": "#4f5f4f", - "light": "#efffef" - }, - "diffRemovedBg": { - "dark": "#5f4f4f", - "light": "#ffefef" - }, - "diffContextBg": { - "dark": "bgAlt", - "light": "#f5f5e5" - }, - "diffLineNumber": { - "dark": "#6f6f6f", - "light": "#b0b0a0" - }, - "diffAddedLineNumberBg": { - "dark": "#4f5f4f", - "light": "#efffef" - }, - "diffRemovedLineNumberBg": { - "dark": "#5f4f4f", - "light": "#ffefef" - }, - "markdownText": { - "dark": "fg", - "light": "#3f3f3f" - }, - "markdownHeading": { - "dark": "yellow", - "light": "#8f8f5f" - }, - "markdownLink": { - "dark": "blue", - "light": "#5f7f8f" - }, - "markdownLinkText": { - "dark": "cyan", - "light": "#5f8f8f" - }, - "markdownCode": { - "dark": "green", - "light": "#5f8f5f" - }, - "markdownBlockQuote": { - "dark": "fgMuted", - "light": "#6f6f6f" - }, - "markdownEmph": { - "dark": "yellowDim", - "light": "#8f8f5f" - }, - "markdownStrong": { - "dark": "orange", - "light": "#8f7f5f" - }, - "markdownHorizontalRule": { - "dark": "fgMuted", - "light": "#6f6f6f" - }, - "markdownListItem": { - "dark": "blue", - "light": "#5f7f8f" - }, - "markdownListEnumeration": { - "dark": "cyan", - "light": "#5f8f8f" - }, - "markdownImage": { - "dark": "blue", - "light": "#5f7f8f" - }, - "markdownImageText": { - "dark": "cyan", - "light": "#5f8f8f" - }, - "markdownCodeBlock": { - "dark": "fg", - "light": "#3f3f3f" - }, - "syntaxComment": { - "dark": "#7f9f7f", - "light": "#5f7f5f" - }, - "syntaxKeyword": { - "dark": "yellow", - "light": "#8f8f5f" - }, - "syntaxFunction": { - "dark": "blue", - "light": "#5f7f8f" - }, - "syntaxVariable": { - "dark": "fg", - "light": "#3f3f3f" - }, - "syntaxString": { - "dark": "red", - "light": "#8f5f5f" - }, - "syntaxNumber": { - "dark": "greenBright", - "light": "#5f8f5f" - }, - "syntaxType": { - "dark": "cyan", - "light": "#5f8f8f" - }, - "syntaxOperator": { - "dark": "yellow", - "light": "#8f8f5f" - }, - "syntaxPunctuation": { - "dark": "fg", - "light": "#3f3f3f" - } - } -}