feat - updating icons and glyphs, added claude code subscription integration

This commit is contained in:
2026-10-04 18:20:58 -05:00
parent 188489c890
commit b29882d56c
49 changed files with 2374 additions and 288 deletions
+9 -7
View File
@@ -1096,16 +1096,18 @@ impl BlockListElement {
.finish(),
);
let snackbar_toggle_icon;
let rounded_corners;
if self.snackbar_header_state.show_snackbar {
let (snackbar_toggle_icon, rounded_corners) = if self.snackbar_header_state.show_snackbar {
// Snackbar expanded. Show collapse button attached to bottom of snackbar.
snackbar_toggle_icon = UIIcon::Icon::ChevronUp;
rounded_corners = CornerRadius::with_top(Radius::Pixels(8.));
(
UIIcon::Icon::ChevronUp,
CornerRadius::with_top(Radius::Pixels(8.)),
)
} else {
// Snackbar collapsed. Show expand button attached to top of blocklist.
snackbar_toggle_icon = UIIcon::Icon::ChevronDown;
rounded_corners = CornerRadius::with_bottom(Radius::Pixels(8.));
(
UIIcon::Icon::ChevronDown,
CornerRadius::with_bottom(Radius::Pixels(8.)),
)
};
let icon = Container::new(
ConstrainedBox::new(Icon::new(snackbar_toggle_icon.into(), icon_color).finish())
+4 -5
View File
@@ -7231,8 +7231,7 @@ impl Input {
.active_block_mut()
.set_nld_overridden(nld_overridden);
let did_execute: bool;
if self
let did_execute = if self
.model
.lock()
.block_list()
@@ -7311,14 +7310,14 @@ impl Input {
}
self.start_block_and_write_command_to_pty(command, source, ctx);
did_execute = true;
true
} else {
// We don't want to submit the command if precmd has not
// been received. Instead, we want the user to be aware
// that the prompt might not be up to date.
send_telemetry_from_ctx!(TelemetryEvent::TriedToExecuteBeforePrecmd, ctx);
did_execute = false;
}
false
};
// Close the workflows info box if it was open.
self.clear_selected_workflow(ctx);
@@ -129,7 +129,9 @@ pub fn test_append_to_row_translation_empty_displayed_rows() {
};
// Append displayed rows 0..=1.
displayed_output.append_to_row_translation(make_displayed_rows_from_ranges(vec![0..=1]).iter());
displayed_output.append_to_row_translation(
make_displayed_rows_from_ranges(std::iter::once(0..=1).collect::<Vec<_>>()).iter(),
);
let expected_bimap = create_bimap_with_insertions(&[(0, 0), (1, 1)]);
assert_eq!(displayed_output.row_translation_map, expected_bimap.into());
@@ -146,7 +148,9 @@ pub fn test_append_to_row_translation() {
};
// Append displayed rows 6..7.
displayed_output.append_to_row_translation(make_displayed_rows_from_ranges(vec![6..=7]).iter());
displayed_output.append_to_row_translation(
make_displayed_rows_from_ranges(std::iter::once(6..=7).collect::<Vec<_>>()).iter(),
);
bimap.insert(6, 4);
bimap.insert(7, 5);
@@ -163,7 +167,8 @@ pub fn test_prepend_to_row_translation_empty_displayed_rows() {
};
// Prepend displayed rows 0..=1.
let new_line_ranges = make_displayed_rows_from_ranges(vec![0..=1]);
let new_line_ranges =
make_displayed_rows_from_ranges(std::iter::once(0..=1).collect::<Vec<_>>());
displayed_output
.displayed_rows
.splice(0..0, new_line_ranges);
@@ -186,7 +191,8 @@ pub fn test_prepend_to_row_translation() {
};
// Prepend displayed rows 0..=1.
let new_line_ranges = make_displayed_rows_from_ranges(vec![0..=1]);
let new_line_ranges =
make_displayed_rows_from_ranges(std::iter::once(0..=1).collect::<Vec<_>>());
displayed_output
.displayed_rows
.splice(0..0, new_line_ranges);
@@ -209,7 +215,8 @@ pub fn test_replace_rows_from_row_translation() {
// Replace displayed row 2 with displayed row 3.
let replace_range = 1..2;
let new_line_ranges = make_displayed_rows_from_ranges(vec![3..=3]);
let new_line_ranges =
make_displayed_rows_from_ranges(std::iter::once(3..=3).collect::<Vec<_>>());
displayed_output
.displayed_rows
.splice(replace_range.clone(), new_line_ranges);
@@ -231,7 +238,8 @@ pub fn test_replace_rows_from_row_translation_from_middle_to_end() {
// Replace displayed rows 2, 4 with displayed row 3..=5.
let replace_range = 1..3;
let new_line_ranges = make_displayed_rows_from_ranges(vec![3..=5]);
let new_line_ranges =
make_displayed_rows_from_ranges(std::iter::once(3..=5).collect::<Vec<_>>());
displayed_output
.displayed_rows
.splice(replace_range.clone(), new_line_ranges);
@@ -253,7 +261,8 @@ pub fn test_replace_rows_from_row_translation_from_beginning_to_middle() {
// Replace displayed rows 0, 2 with displayed row 0..=1.
let replace_range = 0..2;
let new_line_ranges = make_displayed_rows_from_ranges(vec![0..=1]);
let new_line_ranges =
make_displayed_rows_from_ranges(std::iter::once(0..=1).collect::<Vec<_>>());
displayed_output
.displayed_rows
.splice(replace_range.clone(), new_line_ranges);
@@ -268,7 +277,7 @@ pub fn test_replace_rows_from_row_translation_replace_beginning_row() {
// Start with displayed rows 0.
let bimap = create_bimap_with_insertions(&[(0, 0)]);
let mut displayed_output = DisplayedOutput {
displayed_rows: make_displayed_rows_from_ranges(vec![0..=0]),
displayed_rows: make_displayed_rows_from_ranges(std::iter::once(0..=0).collect::<Vec<_>>()),
height: 1,
row_translation_map: bimap.into(),
};
@@ -276,7 +285,8 @@ pub fn test_replace_rows_from_row_translation_replace_beginning_row() {
// Replace displayed rows 0 with displayed row 0.
// This is intended to simulate what happens if we process dirty bytes multiple times.
let replace_range = 0..1;
let new_line_ranges = make_displayed_rows_from_ranges(vec![0..=0]);
let new_line_ranges =
make_displayed_rows_from_ranges(std::iter::once(0..=0).collect::<Vec<_>>());
displayed_output
.displayed_rows
.splice(replace_range.clone(), new_line_ranges);
@@ -298,7 +308,8 @@ pub fn test_replace_rows_from_row_translation_break_range() {
// Replace displayed rows 2..=3 with displayed row 2.
let replace_range = 1..2;
let new_line_ranges = make_displayed_rows_from_ranges(vec![2..=2]);
let new_line_ranges =
make_displayed_rows_from_ranges(std::iter::once(2..=2).collect::<Vec<_>>());
displayed_output
.displayed_rows
.splice(replace_range.clone(), new_line_ranges);
@@ -329,7 +340,8 @@ fn test_replace_rows_from_row_translation_no_removed_entries() {
// Insert displayed rows 3..=4.
let replace_range = 1..1;
let new_line_ranges = make_displayed_rows_from_ranges(vec![3..=4]);
let new_line_ranges =
make_displayed_rows_from_ranges(std::iter::once(3..=4).collect::<Vec<_>>());
displayed_output
.displayed_rows
.splice(replace_range.clone(), new_line_ranges);
@@ -537,7 +549,8 @@ fn test_new_from_displayed_lines() {
#[test]
fn test_extend_displayed_lines() {
let displayed_rows = make_displayed_rows_from_ranges(vec![1..=3]);
let displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(1..=3).collect::<Vec<_>>());
let mut displayed_output = DisplayedOutput::new_from_displayed_lines(displayed_rows.clone());
displayed_output.extend_displayed_lines(make_displayed_rows_from_ranges(vec![7..=7, 14..=18]));
@@ -561,7 +574,8 @@ fn test_extend_displayed_lines() {
#[test]
fn test_prepend_displayed_lines() {
let displayed_rows = make_displayed_rows_from_ranges(vec![14..=18]);
let displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(14..=18).collect::<Vec<_>>());
let mut displayed_output = DisplayedOutput::new_from_displayed_lines(displayed_rows.clone());
displayed_output.prepend_displayed_lines(make_displayed_rows_from_ranges(vec![1..=3, 7..=7]));
@@ -626,7 +640,8 @@ fn test_splice_displayed_lines_nothing_replaced() {
let displayed_rows = make_displayed_rows_from_ranges(vec![0..=1, 4..=5, 14..=16, 19..=19]);
let mut displayed_output = DisplayedOutput::new_from_displayed_lines(displayed_rows.clone());
let new_displayed_rows = make_displayed_rows_from_ranges(vec![8..=9]);
let new_displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(8..=9).collect::<Vec<_>>());
displayed_output.splice_displayed_lines(2..2, new_displayed_rows);
let expected_displayed_rows =
+23 -14
View File
@@ -818,11 +818,11 @@ pub fn test_add_context_lines_at_grid_bounds() {
line\r\n\
line\r\n",
);
let line_ranges = [2..=2];
let line_range = 2..=2;
let displayed_rows = blockgrid
.grid_handler()
.add_context_lines(line_ranges.iter(), 5);
.add_context_lines(std::iter::once(&line_range), 5);
assert_eq!(
displayed_rows,
vec![
@@ -845,11 +845,11 @@ pub fn test_add_context_lines_at_grid_bounds() {
#[test]
pub fn test_add_context_lines_no_context() {
let blockgrid = mock_blockgrid("match");
let line_ranges = [0..=0];
let line_range = 0..=0;
let displayed_rows = blockgrid
.grid_handler()
.add_context_lines(line_ranges.iter(), 5);
.add_context_lines(std::iter::once(&line_range), 5);
assert_eq!(
displayed_rows,
vec![DisplayedRows {
@@ -949,7 +949,8 @@ pub fn test_update_filtered_dirty_lines() {
grid.grid_handler_mut()
.set_displayed_output(displayed_output);
let new_displayed_rows = make_displayed_rows_from_ranges(vec![5..=5]);
let new_displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(5..=5).collect::<Vec<_>>());
grid.grid_handler_mut()
.update_filtered_dirty_lines(5..=17, new_displayed_rows, 0);
@@ -968,7 +969,8 @@ pub fn test_update_filtered_dirty_lines_at_range_borders() {
grid.grid_handler_mut()
.set_displayed_output(displayed_output);
let new_displayed_rows = make_displayed_rows_from_ranges(vec![11..=12]);
let new_displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(11..=12).collect::<Vec<_>>());
grid.grid_handler_mut()
.update_filtered_dirty_lines(6..=15, new_displayed_rows, 0);
@@ -983,7 +985,8 @@ pub fn test_update_filtered_dirty_lines_at_range_borders() {
grid.grid_handler_mut()
.set_displayed_output(displayed_output);
let new_displayed_rows = make_displayed_rows_from_ranges(vec![11..=12]);
let new_displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(11..=12).collect::<Vec<_>>());
grid.grid_handler_mut()
.update_filtered_dirty_lines(10..=13, new_displayed_rows, 0);
@@ -1040,7 +1043,8 @@ pub fn test_update_filtered_dirty_lines_replace_one_line() {
grid.grid_handler_mut()
.set_displayed_output(displayed_output);
let new_displayed_rows = make_displayed_rows_from_ranges(vec![7..=7]);
let new_displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(7..=7).collect::<Vec<_>>());
grid.grid_handler_mut()
.update_filtered_dirty_lines(6..=10, new_displayed_rows, 0);
@@ -1059,7 +1063,8 @@ pub fn test_update_filtered_dirty_lines_replace_single_row_line() {
grid.grid_handler_mut()
.set_displayed_output(displayed_output);
let new_displayed_rows = make_displayed_rows_from_ranges(vec![6..=8]);
let new_displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(6..=8).collect::<Vec<_>>());
grid.grid_handler_mut()
.update_filtered_dirty_lines(7..=7, new_displayed_rows, 0);
@@ -1078,7 +1083,8 @@ pub fn test_update_filtered_dirty_lines_replace_at_start() {
grid.grid_handler_mut()
.set_displayed_output(displayed_output);
let new_displayed_rows = make_displayed_rows_from_ranges(vec![3..=5]);
let new_displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(3..=5).collect::<Vec<_>>());
grid.grid_handler_mut()
.update_filtered_dirty_lines(1..=11, new_displayed_rows, 0);
@@ -1097,7 +1103,8 @@ pub fn test_update_filtered_dirty_lines_replace_at_end() {
grid.grid_handler_mut()
.set_displayed_output(displayed_output);
let new_displayed_rows = make_displayed_rows_from_ranges(vec![16..=18]);
let new_displayed_rows =
make_displayed_rows_from_ranges(std::iter::once(16..=18).collect::<Vec<_>>());
grid.grid_handler_mut()
.update_filtered_dirty_lines(12..=16, new_displayed_rows, 0);
@@ -1830,7 +1837,9 @@ fn test_truncate_cursor_updates_displayed_output() {
grid[4][0].c = 'e';
// Initialize displayed output with all rows in the grid.
grid_handler.displayed_output = Some(DisplayedOutput::new_for_test(vec![0..=4]));
grid_handler.displayed_output = Some(DisplayedOutput::new_for_test(
std::iter::once(0..=4).collect::<Vec<_>>(),
));
// Set the cursor to the middle of the grid
grid_handler.set_cursor_point(2, 0);
@@ -2064,7 +2073,7 @@ pub fn test_find_non_matching_lines_all_returned() {
",
);
let expected_non_matching_lines = vec![0..=10];
let expected_non_matching_lines = std::iter::once(0..=10).collect::<Vec<_>>();
let dfas = RegexDFAs::new("match").unwrap();
let non_matching_lines = blockgrid.grid_handler().find_non_matching_lines(&dfas);
@@ -2095,7 +2104,7 @@ pub fn test_find_non_matching_lines_in_range_all_returned() {
",
);
let expected_non_matching_lines = vec![2..=12];
let expected_non_matching_lines = std::iter::once(2..=12).collect::<Vec<_>>();
let dfas = RegexDFAs::new("match").unwrap();
let non_matching_lines = blockgrid.grid_handler().find_non_matching_lines_in_range(