mirror of
https://github.com/codewhale-hq/Codewhale.git
synced 2026-11-08 08:04:25 -10:00
Merge pull request #6993 from Lstarsky0/ux/settings-preview-real-chips
fix(tui): use the footer's own words in the settings preview (thanks @Lstarsky0, Refs #6466) Verified before merge: PR CI on543f79fa9e20 pass, 8 skipped, 0 fail. The diff applied to current main9f25ef094c: scripts/dev-test.sh tui (config_panel, config_view, settings, footer, tideline, underwater, phase_strip filters) 349 run, 349 passed, including config_panel_golden_at_eighty_and_one_twenty; clippy -p codewhale-tui --all-targets --all-features --locked with CI flags clean; cargo fmt --check clean. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01NBKbhx19BRbZtvWK8rVKjz
This commit is contained in:
commit
69cde44caa
4 files changed
+21
-20
No files matched your search
@@ -26,7 +26,7 @@
|
||||
│ │
|
||||
│ │
|
||||
system | terminal | shoreline | shoreline-light | underwater | underwater-retro | dark | light | grayscale |…
|
||||
Preview: ● ask agent
|
||||
Preview: ● ask work
|
||||
type=filter, Up/Down=select, Enter=edit, Esc=close
|
||||
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
system | terminal | shoreline | shoreline-light | underwater |…
|
||||
Enter or click again: Enter opens choices · Theme: current terminal · saved
|
||||
terminal · applies on save
|
||||
Preview: ● ask agent
|
||||
Preview: ● ask work
|
||||
type=filter, Up/Down=select, Enter=edit, PgUp/PgDn=scroll, Esc=close
|
||||
──────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
@@ -687,7 +687,7 @@ impl ShellPhase {
|
||||
|
||||
/// Exhaustive on purpose: a new [`AppMode`] must be handed a Policy ink
|
||||
/// deliberately rather than inheriting act's by falling through a wildcard.
|
||||
fn header_mode_ink(mode: AppMode) -> ChromeInk {
|
||||
pub(crate) fn header_mode_ink(mode: AppMode) -> ChromeInk {
|
||||
match mode {
|
||||
AppMode::Plan => ChromeInk::PolicyPlan,
|
||||
AppMode::Operate => ChromeInk::PolicyOperate,
|
||||
@@ -695,7 +695,7 @@ fn header_mode_ink(mode: AppMode) -> ChromeInk {
|
||||
}
|
||||
}
|
||||
|
||||
fn header_permission_ink(mode: ApprovalMode) -> ChromeInk {
|
||||
pub(crate) fn header_permission_ink(mode: ApprovalMode) -> ChromeInk {
|
||||
match mode {
|
||||
ApprovalMode::Suggest | ApprovalMode::Never => ChromeInk::PermissionAsk,
|
||||
ApprovalMode::Auto => ChromeInk::PermissionAutoReview,
|
||||
@@ -900,7 +900,7 @@ pub(crate) fn phase_marker_with_activity(
|
||||
}
|
||||
}
|
||||
|
||||
fn mode_label(locale: Locale, mode: AppMode) -> Cow<'static, str> {
|
||||
pub(crate) fn mode_label(locale: Locale, mode: AppMode) -> Cow<'static, str> {
|
||||
match mode {
|
||||
AppMode::Agent => tr(locale, MessageId::ChipModeAct),
|
||||
AppMode::Plan => tr(locale, MessageId::ChipModePlan),
|
||||
|
||||
@@ -5300,25 +5300,26 @@ impl ConfigView {
|
||||
let context_percent = self.snapshot.context_budget.as_ref().map_or(0, |budget| {
|
||||
u8::try_from(budget.percent_basis_points / 100).unwrap_or(100)
|
||||
});
|
||||
let mode = value_of("default_mode").unwrap_or_else(|| "agent".to_string());
|
||||
let mode_ink = match mode.as_str() {
|
||||
"plan" => palette::ChromeInk::PolicyPlan,
|
||||
"operate" => palette::ChromeInk::PolicyOperate,
|
||||
_ => palette::ChromeInk::PolicyAct,
|
||||
};
|
||||
let permission = value_of("approval_mode")
|
||||
let mode = value_of("default_mode").map_or(codewhale_config::AppMode::Agent, |value| {
|
||||
codewhale_config::AppMode::from_setting(&value)
|
||||
});
|
||||
let approval = value_of("approval_mode")
|
||||
.or_else(|| value_of("permission_posture"))
|
||||
.unwrap_or_else(|| "ask".to_string());
|
||||
let permission_ink = match permission.as_str() {
|
||||
"auto-review" => palette::ChromeInk::PermissionAutoReview,
|
||||
"full-access" => palette::ChromeInk::PermissionFullAccess,
|
||||
_ => palette::ChromeInk::PermissionAsk,
|
||||
};
|
||||
.and_then(|value| codewhale_execpolicy::ApprovalMode::from_config_value(&value))
|
||||
.unwrap_or(codewhale_execpolicy::ApprovalMode::Suggest);
|
||||
let mode_label = crate::tui::underwater::mode_label(self.locale, mode);
|
||||
let permission = crate::core::authority::permission_label_for(self.locale, mode, approval);
|
||||
let footer = crate::tui::phase_strip::TidelineFooter::new(
|
||||
&theme,
|
||||
(permission.as_str(), permission_ink),
|
||||
(
|
||||
permission.as_ref(),
|
||||
crate::tui::underwater::header_permission_ink(approval),
|
||||
),
|
||||
)
|
||||
.mode_chip(Some((mode.as_str(), mode_ink)))
|
||||
.mode_chip(Some((
|
||||
mode_label.as_ref(),
|
||||
crate::tui::underwater::header_mode_ink(mode),
|
||||
)))
|
||||
.context_percent(context_percent);
|
||||
crate::tui::phase_strip::render_tideline_footer(
|
||||
Rect {
|
||||
|
||||
Reference in new issue
Block a user