Commit graph

22 commits

Author SHA1 Message Date
Shautvast
d0df411c57 Render HTML emails as plain text using html2text
Fall back to html2text when no text/plain part is available,
converting HTML emails to readable terminal output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 21:45:44 +01:00
Shautvast
3a2ce88ebf Extract plain text from emails using mailparse
Fetch full raw email and parse MIME structure to find the
text/plain part, removing MIME headers and boundaries from
the preview pane.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 21:38:46 +01:00
Shautvast
bdb6dce672 Update CLAUDE.md for skim project
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 21:34:46 +01:00
Shautvast
328a5fa5d2 Rename project to skim
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 21:33:37 +01:00
Shautvast
2aacac82be Preserve selection across inbox refresh by matching sequence number
After refresh, find the previously selected email by its IMAP
sequence number and keep the highlight on it. Falls back to the
first email if the selected one was deleted.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 21:32:09 +01:00
Shautvast
174a1b1030 Add focus switching and scrollable preview pane
Tab toggles focus between inbox list and preview. Focused pane
gets a cyan border. When preview is focused, up/down scrolls the
email body instead of navigating the list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 21:29:13 +01:00
Shautvast
b781b0fa08 show mail contents 2026-02-17 21:23:19 +01:00
Shautvast
df9f9f0b2f Move IMAP operations to background thread for responsive UI
Spawn a worker thread that owns the IMAP session and processes
fetch commands via channels. The UI thread polls for results
non-blockingly, keeping the app responsive during network operations.
Shows loading indicator while fetching.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 21:13:42 +01:00
Shautvast
2f23ea7686 Reorganize mail setup docs with Gmail instructions first
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 21:00:43 +01:00
Shautvast
df112755ec Fetch older emails on scroll with lazy loading
Introduce Inbox struct to track the oldest fetched sequence number.
When scrolling past the last email, automatically fetch the next
batch of 50 older messages and append them to the list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 20:58:12 +01:00
Shautvast
fd1b087f76 timezone correction 2026-02-17 20:52:24 +01:00
Shautvast
904f89f1b4 timezone correction 2026-02-17 20:52:15 +01:00
Shautvast
fe396a394b sort descending 2026-02-17 20:47:10 +01:00
Shautvast
ddb2c314d0 geen timezone 2026-02-17 20:45:21 +01:00
Shautvast
1412ecfbb8 refactor 2026-02-17 20:36:24 +01:00
Shautvast
96e170f1c9 google settings 2026-02-17 20:26:12 +01:00
Shautvast
cc7eeba7f8 Add TLS support and limit inbox fetch to last 50 messages
Support both plain and TLS IMAP connections via an ImapSession enum,
enabling use with Gmail and other TLS-only servers. Limit fetch range
to the most recent 50 messages to avoid hanging on large mailboxes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 20:25:37 +01:00
Shautvast
7bb8aaec32 highlight bar 2026-02-17 20:11:54 +01:00
Shautvast
2cd6446d13 keep existing session 2026-02-17 20:03:20 +01:00
Shautvast
05aa47d723 manual refactoring 2026-02-17 19:58:04 +01:00
Shautvast
9bbfad554e Fetch and display inbox emails with periodic polling
Replace simple IMAP login with full inbox fetch that displays
Subject, From, and Date for each message. Auto-refreshes every
30 seconds and supports manual refresh with 'r' key.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 17:31:37 +01:00
Shautvast
78f5c4655c basic gui and login to imap 2026-02-17 17:24:35 +01:00