From df0231ea32a2f5661173be52575bf48115f95218 Mon Sep 17 00:00:00 2001 From: Gabeahz Date: Tue, 2 Dec 2025 13:52:01 -0800 Subject: [PATCH 1/5] Menu now filters and sorts using priority, improving UX. --- archinstall/tui/menu_item.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/archinstall/tui/menu_item.py b/archinstall/tui/menu_item.py index 741e447d35..6293256c22 100644 --- a/archinstall/tui/menu_item.py +++ b/archinstall/tui/menu_item.py @@ -231,9 +231,18 @@ def set_action_for_all(self, action: Callable[[Any], Any]) -> None: def items(self) -> list[MenuItem]: pattern = self._filter_pattern.lower() items = filter(lambda item: item.is_empty() or pattern in item.text.lower(), self._menu_items) - l_items = list(items) + l_items = sorted(items, key=self._items_score) return l_items + def _items_score(self, item: MenuItem) -> int: + pattern = self._filter_pattern.lower() + if pattern in item.text.lower(): + if item.text.lower().startswith(pattern): + return 0 + else: + return 1 + return 2 + @property def filter_pattern(self) -> str: return self._filter_pattern From 8a97fe2e15ac2f7a2f8156328286971d1a2860c6 Mon Sep 17 00:00:00 2001 From: Gabeahz Date: Tue, 2 Dec 2025 14:33:55 -0800 Subject: [PATCH 2/5] Refactor: improve logic, removed redundancy --- archinstall/tui/menu_item.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/archinstall/tui/menu_item.py b/archinstall/tui/menu_item.py index 6293256c22..88986abb20 100644 --- a/archinstall/tui/menu_item.py +++ b/archinstall/tui/menu_item.py @@ -236,12 +236,10 @@ def items(self) -> list[MenuItem]: def _items_score(self, item: MenuItem) -> int: pattern = self._filter_pattern.lower() - if pattern in item.text.lower(): - if item.text.lower().startswith(pattern): - return 0 - else: - return 1 - return 2 + if item.text.lower().startswith(pattern): + return 0 + else: + return 1 @property def filter_pattern(self) -> str: From 0a57cc29e349c7ebb50c46be2c15d8b204e19a6e Mon Sep 17 00:00:00 2001 From: Gabeahz Date: Tue, 2 Dec 2025 14:35:04 -0800 Subject: [PATCH 3/5] Refactor: improve logic, removed redundancy --- archinstall/tui/menu_item.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/archinstall/tui/menu_item.py b/archinstall/tui/menu_item.py index 88986abb20..fbe47ab6a3 100644 --- a/archinstall/tui/menu_item.py +++ b/archinstall/tui/menu_item.py @@ -238,8 +238,7 @@ def _items_score(self, item: MenuItem) -> int: pattern = self._filter_pattern.lower() if item.text.lower().startswith(pattern): return 0 - else: - return 1 + return 1 @property def filter_pattern(self) -> str: From 6c7692b7f222b5b96e7f89b30980abd57c65a231 Mon Sep 17 00:00:00 2001 From: Gabeahz Date: Thu, 4 Dec 2025 15:02:12 -0800 Subject: [PATCH 4/5] Improved logic when getting view items in menuItems --- archinstall/tui/menu_item.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/archinstall/tui/menu_item.py b/archinstall/tui/menu_item.py index fbe47ab6a3..1d4713a279 100644 --- a/archinstall/tui/menu_item.py +++ b/archinstall/tui/menu_item.py @@ -250,17 +250,17 @@ def has_filter(self) -> bool: def set_filter_pattern(self, pattern: str) -> None: self._filter_pattern = pattern delattr(self, 'items') # resetting the cache - self._reload_focus_item() + self.focus_first() def append_filter(self, pattern: str) -> None: self._filter_pattern += pattern delattr(self, 'items') # resetting the cache - self._reload_focus_item() + self.focus_first() def reduce_filter(self) -> None: self._filter_pattern = self._filter_pattern[:-1] delattr(self, 'items') # resetting the cache - self._reload_focus_item() + self.focus_first() def _reload_focus_item(self) -> None: if len(self.items) > 0: @@ -417,9 +417,7 @@ def get_view_items(self) -> list[list[MenuItem]]: if focus_row_idx is None: return [] - start, end = 0, 0 - - if len(self._view_items) == 0 or self._prev_row_idx == -1 or self._item_group.has_filter(): # initial setup or filter + if len(self._view_items) == 0 or self._prev_row_idx == -1 or focus_row_idx == 0: # initial setup or filter if focus_row_idx < self._total_rows: start = 0 end = self._total_rows From cd140ab98bfd9d7909745ac83679baf9040dfada Mon Sep 17 00:00:00 2001 From: Gabeahz Date: Thu, 4 Dec 2025 15:37:26 -0800 Subject: [PATCH 5/5] Improved logic when getting view items in menuItems --- archinstall/tui/menu_item.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/archinstall/tui/menu_item.py b/archinstall/tui/menu_item.py index 1d4713a279..829b648612 100644 --- a/archinstall/tui/menu_item.py +++ b/archinstall/tui/menu_item.py @@ -417,7 +417,9 @@ def get_view_items(self) -> list[list[MenuItem]]: if focus_row_idx is None: return [] - if len(self._view_items) == 0 or self._prev_row_idx == -1 or focus_row_idx == 0: # initial setup or filter + start, end = 0, 0 + + if len(self._view_items) == 0 or self._prev_row_idx == -1 or focus_row_idx == 0: # initial setup if focus_row_idx < self._total_rows: start = 0 end = self._total_rows