From f5b5b3ce51b3037be8c4f7c15a1f36260bb57795 Mon Sep 17 00:00:00 2001 From: drew Date: Tue, 30 Jun 2026 20:46:15 +0400 Subject: [PATCH 1/2] fix: better view UI Signed-off-by: drew --- tui/email_view.go | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/tui/email_view.go b/tui/email_view.go index 7829f857..1f7e4a7d 100644 --- a/tui/email_view.go +++ b/tui/email_view.go @@ -34,7 +34,10 @@ func ClearKittyGraphics() { } var ( - emailHeaderStyle = lipgloss.NewStyle().BorderStyle(lipgloss.NormalBorder()).BorderBottom(true).Padding(0, 1) + emailHeaderStyle = lipgloss.NewStyle().Padding(1, 2).BorderStyle(lipgloss.NormalBorder()).BorderBottom(true) + emailSubjectStyle = lipgloss.NewStyle().Bold(true) + emailSenderStyle = lipgloss.NewStyle() + emailMetaStyle = lipgloss.NewStyle() attachmentBoxStyle = lipgloss.NewStyle().Border(lipgloss.NormalBorder(), false, false, false, true).PaddingLeft(2).MarginTop(1) ) @@ -327,7 +330,7 @@ func (m *EmailView) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } case tea.WindowSizeMsg: header := fmt.Sprintf("To: %s\nFrom: %s\nSubject: %s ", strings.Join(m.email.To, ", "), m.email.From, m.email.Subject) - headerHeight := lipgloss.Height(header) + 2 + headerHeight := lipgloss.Height(header) + 2 attachmentHeight := 0 if len(m.email.Attachments) > 0 { attachmentHeight = len(m.email.Attachments) + 2 @@ -384,8 +387,33 @@ func (m *EmailView) View() tea.View { } } - header := fmt.Sprintf("To: %s | From: %s | Subject: %s%s", strings.Join(m.email.To, ", "), m.email.From, m.email.Subject, cryptoStatus.String()) - styledHeader := emailHeaderStyle.Width(m.viewport.Width()).Render(header) + senderName := parseSenderName(m.email.From) + emailAddr := "" + if idx := strings.Index(m.email.From, "<"); idx > 0 { + endIdx := strings.Index(m.email.From, ">") + if endIdx > idx { + emailAddr = "(" + m.email.From[idx+1:endIdx] + ")" + } + } + dateStr := m.email.Date.Local().Format("Jan 02, 2006 3:04 PM") + + headerContent := lipgloss.JoinVertical( + lipgloss.Left, + lipgloss.JoinHorizontal( + lipgloss.Top, + emailSubjectStyle.Render(m.email.Subject+cryptoStatus.String()), + lipgloss.NewStyle().Width(m.viewport.Width()-lipgloss.Width(emailSubjectStyle.Render(m.email.Subject+cryptoStatus.String()))-lipgloss.Width(emailMetaStyle.Render(dateStr))-4).Render(""), + emailMetaStyle.Render(dateStr), + ), + lipgloss.JoinHorizontal( + lipgloss.Top, + emailSenderStyle.Render(senderName), + lipgloss.NewStyle().Padding(0, 1).Render(emailAddr), + ), + emailMetaStyle.Width(m.viewport.Width()).Render(strings.Join(m.email.To, ", ")), + ) + + styledHeader := emailHeaderStyle.Width(m.viewport.Width()).Render(headerContent) var help string if m.focusOnAttachments { From 8726cbd0a2bda7080382a75eb785c3af5837e6e0 Mon Sep 17 00:00:00 2001 From: drew Date: Tue, 30 Jun 2026 20:52:11 +0400 Subject: [PATCH 2/2] chore: fmt Signed-off-by: drew --- tui/email_view.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tui/email_view.go b/tui/email_view.go index 1f7e4a7d..0d7506bf 100644 --- a/tui/email_view.go +++ b/tui/email_view.go @@ -330,7 +330,7 @@ func (m *EmailView) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } case tea.WindowSizeMsg: header := fmt.Sprintf("To: %s\nFrom: %s\nSubject: %s ", strings.Join(m.email.To, ", "), m.email.From, m.email.Subject) - headerHeight := lipgloss.Height(header) + 2 + headerHeight := lipgloss.Height(header) + 2 attachmentHeight := 0 if len(m.email.Attachments) > 0 { attachmentHeight = len(m.email.Attachments) + 2