From 86fc573d7a538539ea32fd84a1cd30c5533cacca Mon Sep 17 00:00:00 2001
From: mo8it <mo8it@proton.me>
Date: Sun, 1 Sep 2024 22:02:07 +0200
Subject: [PATCH 1/2] Remove the footer separators

---
 src/list/state.rs | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/src/list/state.rs b/src/list/state.rs
index 49b6d5d..7a2d3bf 100644
--- a/src/list/state.rs
+++ b/src/list/state.rs
@@ -43,7 +43,6 @@ pub struct ListState<'a> {
     filter: Filter,
     term_width: u16,
     term_height: u16,
-    separator_line: Vec<u8>,
     show_footer: bool,
 }
 
@@ -76,7 +75,6 @@ impl<'a> ListState<'a> {
             // Set by `set_term_size`
             term_width: 0,
             term_height: 0,
-            separator_line: Vec::new(),
             show_footer: true,
         };
 
@@ -95,14 +93,10 @@ impl<'a> ListState<'a> {
         }
 
         let header_height = 1;
-        // 2 separators, 1 progress bar, 2 footer message lines.
-        let footer_height = 5;
+        // 1 progress bar, 2 footer message lines.
+        let footer_height = 3;
         self.show_footer = height > header_height + footer_height;
 
-        if self.show_footer {
-            self.separator_line = "─".as_bytes().repeat(width as usize);
-        }
-
         self.scroll_state.set_max_n_rows_to_display(
             height.saturating_sub(header_height + u16::from(self.show_footer) * footer_height)
                 as usize,
@@ -202,9 +196,6 @@ impl<'a> ListState<'a> {
         }
 
         if self.show_footer {
-            stdout.write_all(&self.separator_line)?;
-            next_ln(stdout)?;
-
             progress_bar(
                 &mut MaxLenWriter::new(stdout, self.term_width as usize),
                 self.app_state.n_done(),
@@ -213,9 +204,6 @@ impl<'a> ListState<'a> {
             )?;
             next_ln(stdout)?;
 
-            stdout.write_all(&self.separator_line)?;
-            next_ln(stdout)?;
-
             let mut writer = MaxLenWriter::new(stdout, self.term_width as usize);
             if self.message.is_empty() {
                 // Help footer message

From a8b13f5a821d40f11e206922d990aa7b2e66801f Mon Sep 17 00:00:00 2001
From: mo8it <mo8it@proton.me>
Date: Sun, 1 Sep 2024 22:04:09 +0200
Subject: [PATCH 2/2] Remove "exercises" from the end of the progress bar

---
 src/term.rs | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/term.rs b/src/term.rs
index ee8dbf8..489d658 100644
--- a/src/term.rs
+++ b/src/term.rs
@@ -5,7 +5,7 @@ use std::{
 
 use crossterm::{
     cursor::MoveTo,
-    style::{Attribute, Color, ResetColor, SetAttribute, SetForegroundColor},
+    style::{Attribute, Color, SetAttribute, SetForegroundColor},
     terminal::{Clear, ClearType},
     Command, QueueableCommand,
 };
@@ -93,20 +93,19 @@ pub fn progress_bar<'a>(
     total: u16,
     line_width: u16,
 ) -> io::Result<()> {
+    debug_assert!(total < 1000);
     debug_assert!(progress <= total);
 
     const PREFIX: &[u8] = b"Progress: [";
     const PREFIX_WIDTH: u16 = PREFIX.len() as u16;
-    // Leaving the last char empty (_) for `total` > 99.
-    const POSTFIX_WIDTH: u16 = "] xxx/xx exercises_".len() as u16;
+    const POSTFIX_WIDTH: u16 = "] xxx/xxx".len() as u16;
     const WRAPPER_WIDTH: u16 = PREFIX_WIDTH + POSTFIX_WIDTH;
     const MIN_LINE_WIDTH: u16 = WRAPPER_WIDTH + 4;
 
     if line_width < MIN_LINE_WIDTH {
         writer.write_ascii(b"Progress: ")?;
         // Integers are in ASCII.
-        writer.write_ascii(format!("{progress}/{total}").as_bytes())?;
-        return writer.write_ascii(b" exercises");
+        return writer.write_ascii(format!("{progress}/{total}").as_bytes());
     }
 
     let stdout = writer.stdout();
@@ -133,8 +132,9 @@ pub fn progress_bar<'a>(
         }
     }
 
-    stdout.queue(ResetColor)?;
-    write!(stdout, "] {progress:>3}/{total} exercises")
+    stdout.queue(SetForegroundColor(Color::Reset))?;
+
+    write!(stdout, "] {progress:>3}/{total}")
 }
 
 pub fn clear_terminal(stdout: &mut StdoutLock) -> io::Result<()> {