Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
51cd6e7
(feat) add a persistent top banner for showing messages to the user
shehab299 Mar 25, 2026
3d9bcb9
(feat) Upgrades to banner
shehab299 Mar 25, 2026
0541d90
(feat) upgrade banner
shehab299 Mar 25, 2026
a7de61f
(feat) Add stlying options for banners
shehab299 Mar 26, 2026
25ebed1
(feat) Show the system init banner immediately at startup
shehab299 Mar 26, 2026
2435e45
(fix) run fmt and linter
shehab299 Mar 26, 2026
54e91f8
Highligh slash commands on banner and make them clickable
shehab299 Mar 26, 2026
4317803
Collapse the banner after clicking one slash commands
shehab299 Mar 26, 2026
1b80c56
iterate on the system init banner text
shehab299 Mar 27, 2026
3e3656b
(refactor) extract input_state (TextArea + helpers + file_search)
shehab299 Mar 27, 2026
fbb6b23
(refactor) extract loading_state into its own struct
shehab299 Mar 27, 2026
38f3f8e
(refactor) extract shell popup state
shehab299 Mar 27, 2026
130e35f
(refactor) extract tool_call_state into its own struct
shehab299 Mar 27, 2026
efa7b59
(refactor) extract dialog and apporval state into its own struct
shehab299 Mar 27, 2026
be83d05
(refactor) extract session_state, session_tool_call_state, profile_sw…
shehab299 Mar 27, 2026
66bcfcf
refactor(tui): extract plan and ask-user state structs
shehab299 Mar 27, 2026
85933c5
refactor(tui): extract messages and scrolling state
shehab299 Mar 27, 2026
6138e38
refactor(tui): extract side panel state
shehab299 Mar 27, 2026
2ecb1ed
refactor(tui): extract message interaction state
shehab299 Mar 27, 2026
5f413ec
refactor(tui): extract configuration state
shehab299 Mar 27, 2026
63171cf
refactor(tui) extract banner state
shehab299 Mar 27, 2026
704623e
refactor(tui): split misc app state into logical structs
shehab299 Mar 27, 2026
c5414ed
refactor(tui): regroup app state queue revert and selection
shehab299 Mar 27, 2026
11eae2c
(fix) run fmt and clippy
shehab299 Mar 27, 2026
edb05aa
refactor(tui) rename extracted substructs member to remove the common…
shehab299 Mar 27, 2026
b964b7e
refactor(tui): remove shell popup compatibility aliases
shehab299 Mar 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions cli/src/commands/agent/run/mode_interactive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,20 @@ pub async fn run_interactive(
};

let send_init_prompt_on_start = config.send_init_prompt_on_start;

let banner_message = if agent_context
.as_ref()
.map(|ctx| ctx.apps_md.is_none())
.unwrap_or(true)
{
Some(stakpak_tui::BannerMessage::new(
"❕ System not scanned - /init to generate an APPS.md file with your context",
stakpak_tui::BannerStyle::Info,
))
} else {
None
};

let tui_handle = tokio::spawn(async move {
let latest_version = get_latest_cli_version().await;
stakpak_tui::run_tui(
Expand All @@ -310,6 +324,7 @@ pub async fn run_interactive(
init_prompt_content_for_tui,
send_init_prompt_on_start,
recent_models_for_tui,
banner_message,
)
.await
.map_err(|e| e.to_string())
Expand Down
810 changes: 168 additions & 642 deletions tui/src/app.rs

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions tui/src/app/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use stakpak_shared::models::{
use uuid::Uuid;

use crate::app::{ExistingPlanPrompt, LoadingOperation, SessionInfo};
use crate::services::banner::BannerStyle;
use crate::services::board_tasks::FetchTasksResult;

#[derive(Debug)]
Expand All @@ -31,6 +32,7 @@ pub enum InputEvent {
BillingInfoLoaded(stakpak_shared::models::billing::BillingResponse),
Error(String),
SetSessions(Vec<SessionInfo>),
SetBannerMessage(String, BannerStyle),
InputBackspace,
InputChangedNewline,
InputSubmitted,
Expand Down Expand Up @@ -253,6 +255,7 @@ impl InputEvent {
| InputEvent::ShowAskUserPopup(_, _)
| InputEvent::ExistingPlanFound(_)
| InputEvent::SetSessions(_)
| InputEvent::SetBannerMessage(_, _)
| InputEvent::GetStatus(_)
| InputEvent::BillingInfoLoaded(_)
| InputEvent::TotalUsage(_)
Expand Down
Loading
Loading