diff --git a/hermes_cli/session_recovery.py b/hermes_cli/session_recovery.py index 5ef53bd840..e34d7603f0 100644 --- a/hermes_cli/session_recovery.py +++ b/hermes_cli/session_recovery.py @@ -459,8 +459,7 @@ def _probe_populated_edge(source: sqlite3.Connection, table: str, *, edge: str, span *= 2 continue if row is None: # nothing beyond candidate: the synthetic domain tail is provably empty - result["bound"] = candidate - result["capped"] = True + result.update(bound=candidate, capped=True) return result position = int(row[0]) # rows exist beyond; advance. Span never resets -> O(log range) span *= 2 @@ -485,9 +484,7 @@ class _RowidRangeSalvage: self.stopped_at_query_limit = False def _keep(self, values: list[tuple[Any, ...]]) -> list[tuple[Any, ...]]: - if self.row_filter is None: - return values - return [row for row in values if self.row_filter(row, self.column_names)] + return values if self.row_filter is None else [r for r in values if self.row_filter(r, self.column_names)] def _skip(self, low: int, high: int, error: str) -> None: _append_skipped_range(self.result["skipped_rowid_ranges"], low, high, error) diff --git a/hermes_cli/sessions_cmd_browse.py b/hermes_cli/sessions_cmd_browse.py index 688d39dc42..b19f013730 100644 --- a/hermes_cli/sessions_cmd_browse.py +++ b/hermes_cli/sessions_cmd_browse.py @@ -150,16 +150,15 @@ class _CursesBrowser: c = self.curses if self.confirm_delete is not None: # y/n confirmation mode — only an explicit 'y' deletes target, self.confirm_delete = self.confirm_delete, None - if key in {ord("y"), ord("Y")}: - if self.delete_fn(target["id"]): - self.sessions[:] = [s for s in self.sessions if s["id"] != target["id"]] - self._refilter(reset_cursor=False) - self.flash = "Deleted." - if not self.sessions: - return True - else: - self.flash = "Delete failed." - return False + if key not in {ord("y"), ord("Y")}: + return False + if not self.delete_fn(target["id"]): + self.flash = "Delete failed." + return False + self.sessions[:] = [s for s in self.sessions if s["id"] != target["id"]] + self._refilter(reset_cursor=False) + self.flash = "Deleted." + return not self.sessions if key in (c.KEY_UP, c.KEY_DOWN): if self.filtered: self.cursor = (self.cursor + (1 if key == c.KEY_DOWN else -1)) % len(self.filtered) @@ -167,9 +166,9 @@ class _CursesBrowser: if self.filtered: self.result = self.filtered[self.cursor]["id"] return True - elif key == 27: # Esc: first clears the search, second exits - if not self.search: - return True + elif key == 27 and not self.search: # Esc: first clears the search, second exits + return True + elif key == 27: self.search = "" self._refilter() elif key in {c.KEY_BACKSPACE, 127, 8}: