No description
Find a file
Shautvast b6ef2b4508 Fix selection reset on refresh and off-by-one body after delete
Refresh regression:
- refresh() only loads the latest 50 emails, so if the user scrolled
  further via FetchMore their selected email was not in the new list and
  selection fell back to index 0. Now preserve emails older than the
  refresh batch (previously fetched via FetchMore) by merging them back.
- Also cancel pending debounce on refresh so stale pending fetches can't
  overwrite the correct body after selection changes.
- Up-arrow now uses debounce consistently with Down-arrow.

Delete off-by-one:
- IMAP expunge renumbers all messages with seq > deleted seq. The app
  was still holding pre-delete sequence numbers, so the next FetchBody
  after a delete would retrieve the wrong message. After removing an
  email, decrement the seq of every remaining email with seq > deleted.

Cleanup: remove now-unused Inbox.oldest_seq and Inbox.has_older() since
oldest_seq/has_older are now computed from the merged emails list.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 16:12:43 +01:00
src Fix selection reset on refresh and off-by-one body after delete 2026-02-18 16:12:43 +01:00
.gitignore basic gui and login to imap 2026-02-17 17:24:35 +01:00
Cargo.lock Replace html2text with fast_html2md + tui-markdown for styled email preview 2026-02-18 13:39:14 +01:00
Cargo.toml Replace html2text with fast_html2md + tui-markdown for styled email preview 2026-02-18 13:39:14 +01:00
CLAUDE.md Update CLAUDE.md for skim project 2026-02-17 21:34:46 +01:00
config.toml.example basic gui and login to imap 2026-02-17 17:24:35 +01:00
docker-compose.yml basic gui and login to imap 2026-02-17 17:24:35 +01:00
MAIL_SERVER_SETUP.md Reorganize mail setup docs with Gmail instructions first 2026-02-17 21:00:43 +01:00