-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Motivation
User-facing operations exceeding ~300ms should display status indicators via Channel::send_status() so users know what's happening. Currently only 2 of ~25 long-running operations show spinners (context compaction and summarization).
Existing Infrastructure
Channel::send_status(text)— displays spinner with message; empty string clears itChannel::send_typing()— typing indicator (Telegram)- Already used in
context.rs:276(compaction) andpersistence.rs:114(summarization)
Scope
25 operations identified across the codebase, grouped into 6 issues by subsystem:
| Issue | Subsystem | Priority | Items |
|---|---|---|---|
| #1 | LLM inference & provider warmup | P0 | 4 |
| #2 | Skills: install, registry, matcher | P0-P1 | 4 |
| #3 | Memory: init, embeddings, persistence | P0-P1 | 4 |
| #4 | MCP & external service initialization | P1 | 3 |
| #5 | Tool execution & web scraping | P2 | 4 |
| #6 | Miscellaneous: CLI, config, audio | P2 | 6 |
Implementation Pattern
let _ = self.channel.send_status("loading model...").await;
// ... long operation ...
let _ = self.channel.send_status("").await; // clearConstraints
send_statusrequires&mut Channel— some call sites may need threading changes- Status text should be lowercase, concise (e.g. "loading skills...", not "Loading the skill registry, please wait")
- Clear status (
"") after every operation to avoid stale messages - Ignore send errors (
let _ =) — status is best-effort
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request