Skip to content

feat(export): add EML email export - #1746

Merged
andrinoff merged 3 commits into
floatpane:masterfrom
ishaan-jindal:feature/export-eml
Oct 31, 2026
Merged

andrinoff merged 3 commits into
floatpane:masterfrom
ishaan-jindal:feature/export-eml

Conversation

@ishaan-jindal

Copy link
Copy Markdown
Contributor

What?

Adds "Export as EML" to the email palette. The focused message is saved verbatim as raw RFC822 (.eml) through the existing save-file-picker path, alongside the HTML/Markdown options.

Why?

Closes #1537 — there was no quick way to save a single message as a standard .eml file without manually copying raw source.

@ishaan-jindal
ishaan-jindal requested a review from a team as a code owner October 19, 2026 10:31
@floatpanebot floatpanebot added enhancement New feature or request area/tui Terminal UI / view layer area/docs Docs site / README size/S Diff: 11–50 lines labels Oct 19, 2026
@floatpanebot

floatpanebot commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Benchmark report — no significant change

Metrics worse: 0 · better: 0 (threshold: ±3%).

benchstat output
goos: linux
goarch: amd64
pkg: github.com/floatpane/matcha/backend
cpu: AMD EPYC 9V74 80-Core Processor                
                           │   old.txt    │               new.txt               │
                           │    sec/op    │    sec/op      vs base              │
ParseSearchQuery_Simple-4    2.843µ ± 38%   2.764µ ± 261%       ~ (p=0.965 n=6)
ParseSearchQuery_Complex-4   7.772µ ± 98%   8.748µ ±  75%       ~ (p=0.589 n=6)
TokenizeSearchQuery-4        4.514µ ± 29%   4.727µ ±  37%       ~ (p=0.513 n=6)
geomean                      4.637µ         4.853µ         +4.66%

                           │  old.txt   │               new.txt               │
                           │    B/op    │    B/op      vs base                │
ParseSearchQuery_Simple-4    26.00 ± 0%   26.00 ± 23%       ~ (p=1.000 n=6)
ParseSearchQuery_Complex-4   762.0 ± 0%   762.0 ±  0%       ~ (p=1.000 n=6) ¹
TokenizeSearchQuery-4        176.0 ± 0%   176.0 ±  0%       ~ (p=1.000 n=6) ¹
geomean                      151.6        151.6        +0.00%
¹ all samples are equal

                           │  old.txt   │              new.txt               │
                           │ allocs/op  │ allocs/op   vs base                │
ParseSearchQuery_Simple-4    2.000 ± 0%   2.000 ± 0%       ~ (p=1.000 n=6) ¹
ParseSearchQuery_Complex-4   23.00 ± 0%   23.00 ± 0%       ~ (p=1.000 n=6) ¹
TokenizeSearchQuery-4        9.000 ± 0%   9.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                      7.453        7.453       +0.00%
¹ all samples are equal

pkg: github.com/floatpane/matcha/tui
                    │   old.txt    │               new.txt               │
                    │    sec/op    │    sec/op      vs base              │
LogPanelView-4        169.7µ ± 32%    169.0µ ± 15%       ~ (p=0.818 n=6)
SearchOverlayView-4   180.2µ ± 22%    175.3µ ±  8%       ~ (p=0.240 n=6)
InboxConstruction-4   959.5µ ± 14%   1026.6µ ± 13%       ~ (p=0.699 n=6)
geomean               308.4µ          312.1µ        +1.20%

                    │    old.txt    │               new.txt                │
                    │     B/op      │     B/op       vs base               │
LogPanelView-4        33.23Ki ± 34%   44.67Ki ± 51%        ~ (p=0.545 n=6)
SearchOverlayView-4   56.15Ki ± 41%   56.16Ki ±  0%        ~ (p=0.136 n=6)
InboxConstruction-4   874.5Ki ±  0%   874.5Ki ±  0%        ~ (p=0.223 n=6)
geomean               117.7Ki         129.9Ki        +10.37%

                    │   old.txt   │              new.txt              │
                    │  allocs/op  │  allocs/op   vs base              │
LogPanelView-4         713.0 ± 0%    714.0 ± 0%       ~ (p=0.545 n=6)
SearchOverlayView-4    926.0 ± 0%    926.0 ± 0%       ~ (p=0.273 n=6)
InboxConstruction-4   3.483k ± 0%   3.483k ± 0%       ~ (p=0.374 n=6)
geomean               1.320k        1.321k       +0.04%

auto-generated by benchmarks.yml

@andrinoff

Copy link
Copy Markdown
Member

Maybe we can have here also refactoring?

Option "Save as..." which opens and shows all three of the file formats

@ishaan-jindal

Copy link
Copy Markdown
Contributor Author

Yeah, that would be nice. Instead of the 3 flat options right now.

@ishaan-jindal

Copy link
Copy Markdown
Contributor Author
image image Much better?

@floatpanebot floatpanebot added the size/M Diff: 51–200 lines label Oct 19, 2026
@andrinoff

Copy link
Copy Markdown
Member

thank you! will review thoroughly on the weekend

@floatpanebot floatpanebot added dependencies Dependency updates ci CI / build pipeline labels Oct 26, 2026
@ishaan-jindal
ishaan-jindal force-pushed the feature/export-eml branch 2 times, most recently from 7796f6a to 166b399 Compare October 26, 2026 18:48
Signed-off-by: Ishaan Jindal <ishaanjindal2006@gmail.com>
Signed-off-by: Ishaan Jindal <ishaanjindal2006@gmail.com>
@ishaan-jindal

Copy link
Copy Markdown
Contributor Author

hey @andrinoff still waiting on that review!

Signed-off-by: drew <me@andrinoff.com>

@andrinoff andrinoff left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thank you

@andrinoff
andrinoff added this pull request to the merge queue Oct 31, 2026
Merged via the queue into floatpane:master with commit 0f99bc6 Oct 31, 2026
29 checks passed
@ishaan-jindal
ishaan-jindal deleted the feature/export-eml branch October 31, 2026 09:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/docs Docs site / README area/tui Terminal UI / view layer ci CI / build pipeline dependencies Dependency updates enhancement New feature or request size/M Diff: 51–200 lines size/S Diff: 11–50 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FEAT: Export a single email to .eml file

3 participants