feat(tui): tambah command /todo dan /usage untuk buka overlay

Overlay Todo dan Usage sebelumnya tidak punya trigger sama sekali di
jalur interaksi normal (cuma bisa lewat restore snapshot sesi) --
sekarang mengikuti pola /workflow yang sudah ada.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
asepharyana
2026-07-14 23:41:53 +07:00
co-authored by Claude Sonnet 5
parent 2f1a4d85a1
commit aa2b6acb95
4 changed files with 29 additions and 0 deletions
+6
View File
@@ -69,6 +69,12 @@ pub fn apply_command(command: Command) -> Vec<Action> {
Command::WorkflowRun { script } => {
vec![Action::RunWorkflow { script }]
}
Command::TodoOpen => {
vec![Action::OpenOverlay(Overlay::Todo)]
}
Command::UsageOpen => {
vec![Action::OpenOverlay(Overlay::Usage)]
}
Command::Unknown(cmd) => {
vec![Action::SystemNote {
kind: "error".to_string(),
+2
View File
@@ -90,6 +90,8 @@ const COMMANDS: &[&str] = &[
"/model add",
"/workflow",
"/workflow run",
"/todo",
"/usage",
"/compact",
];
+19
View File
@@ -22,6 +22,8 @@ pub enum Command {
WorkflowRun {
script: String,
},
TodoOpen,
UsageOpen,
Unknown(String),
}
@@ -75,6 +77,23 @@ pub fn parse_command(text: &str) -> Command {
"/workflow" => Command::WorkflowRun {
script: arg1.to_string(),
},
"/todo" => Command::TodoOpen,
"/usage" => Command::UsageOpen,
_ => Command::Unknown(cmd.to_string()),
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn parses_todo_open() {
assert_eq!(parse_command("/todo"), Command::TodoOpen);
}
#[test]
fn parses_usage_open() {
assert_eq!(parse_command("/usage"), Command::UsageOpen);
}
}
+2
View File
@@ -36,6 +36,8 @@ Input:
/workflow Open workflow panel
/workflow run <p> Run a workflow with prompt <p>
/mode workflow Open workflow panel
/todo Open task list
/usage Open usage details
/compact Compact conversation history
/exit Exit application