feat: comprehensive Wino Mail updates

- ReaderView: complete rewrite with CSS styling, headers, attachments, zoom, find, dark mode, image blocking
- Categories: DAO + UI tree widget with colors, nested categories, assignment
- Rules engine: DAO + evaluation + actions (move, mark read, flag, delete, category, forward)
- Templates: DAO + editor + manager with variables support
- Signatures: DAO + manager + auto-per-account + manual selector in compose
- ComposeView: signature combo, template selector, auto-signature on new email
- MainWindow: frameless with rounded corners, 1px border, resize from edges, no status bar
- Database: new tables (Category, MailCategory, Rule, Template, Signature) with indexes
This commit is contained in:
2026-08-23 14:49:58 +02:00
parent 5fcedfa129
commit 0bb8738607
7399 changed files with 44711 additions and 209 deletions
@@ -0,0 +1,11 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 22L2 22" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17 22V6C17 4.11438 17 3.17157 16.4142 2.58579C15.8284 2 14.8856 2 13 2H11C9.11438 2 8.17157 2 7.58579 2.58579C7 3.17157 7 4.11438 7 6V22" stroke="#1C274C" stroke-width="1.5"/>
<path d="M21 22V11.5C21 10.0955 21 9.39331 20.6629 8.88886C20.517 8.67048 20.3295 8.48298 20.1111 8.33706C19.6067 8 18.9045 8 17.5 8" stroke="#1C274C" stroke-width="1.5"/>
<path d="M3 22V11.5C3 10.0955 3 9.39331 3.33706 8.88886C3.48298 8.67048 3.67048 8.48298 3.88886 8.33706C4.39331 8 5.09554 8 6.5 8" stroke="#1C274C" stroke-width="1.5"/>
<path d="M12 22V19" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 5H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 8H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 11H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 14H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,16 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 22L2 22" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17 22V6C17 4.11438 17 3.17157 16.4142 2.58579C15.8284 2 14.8856 2 13 2H11C9.11438 2 8.17157 2 7.58579 2.58579C7 3.17157 7 4.11438 7 6V22" stroke="#1C274C" stroke-width="1.5"/>
<path d="M21 22V8.5C21 7.09554 21 6.39331 20.6629 5.88886C20.517 5.67048 20.3295 5.48298 20.1111 5.33706C19.6067 5 18.9045 5 17.5 5" stroke="#1C274C" stroke-width="1.5"/>
<path d="M3 22V8.5C3 7.09554 3 6.39331 3.33706 5.88886C3.48298 5.67048 3.67048 5.48298 3.88886 5.33706C4.39331 5 5.09554 5 6.5 5" stroke="#1C274C" stroke-width="1.5"/>
<path d="M12 22V19" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 12H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5.5 11H7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5.5 14H7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17 11H18.5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17 14H18.5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5.5 8H7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17 8H18.5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 15H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<circle cx="12" cy="7" r="2" stroke="#1C274C" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,9 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 22L2 22" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M21 22V6C21 4.11438 21 3.17157 20.4143 2.58579C19.8285 2 18.8857 2 17 2H15C13.1144 2 12.1716 2 11.5858 2.58579C11.1143 3.05733 11.0223 3.76022 11.0044 5" stroke="#1C274C" stroke-width="1.5"/>
<path d="M15 22V9C15 7.11438 15 6.17157 14.4142 5.58579C13.8284 5 12.8856 5 11 5H7C5.11438 5 4.17157 5 3.58579 5.58579C3 6.17157 3 7.11438 3 9V22" stroke="#1C274C" stroke-width="1.5"/>
<path d="M9 22V19" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M6 8H12" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M6 11H12" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M6 14H12" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 891 B

@@ -0,0 +1,10 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 22V12C3 10.1144 3 9.17157 3.58579 8.58579C4.17157 8 5.11438 8 7 8C8.88562 8 9.82843 8 10.4142 8.58579C11 9.17157 11 10.1144 11 12" stroke="#1C274C" stroke-width="1.5"/>
<path d="M17 22V16C17 14.1144 17 13.1716 16.4142 12.5858C15.8284 12 14.8856 12 13 12H11C9.11438 12 8.17157 12 7.58579 12.5858C7 13.1716 7 14.1144 7 16V22" stroke="#1C274C" stroke-width="1.5"/>
<path d="M21 21.9999V7.77195C21 6.4311 21 5.76068 20.6439 5.24676C20.2877 4.73283 19.66 4.49743 18.4045 4.02663C15.9492 3.10591 14.7216 2.64555 13.8608 3.2421C13 3.83864 13 5.14974 13 7.77195V11.9999" stroke="#1C274C" stroke-width="1.5"/>
<path d="M4 8V6.5C4 5.55719 4 5.08579 4.29289 4.79289C4.58579 4.5 5.05719 4.5 6 4.5H8C8.94281 4.5 9.41421 4.5 9.70711 4.79289C10 5.08579 10 5.55719 10 6.5V8" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M7 4V2" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M22 22L2 22" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 15H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 18H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,8 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 22L2 22" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M3 22.0001V11.3472C3 10.4903 3.36644 9.67432 4.00691 9.10502L10.0069 3.77169C11.1436 2.76133 12.8564 2.76133 13.9931 3.77169L19.9931 9.10502C20.6336 9.67432 21 10.4903 21 11.3472V22.0001" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 9H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M9 15.5H15" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M9 18.5H15" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M18 22V16C18 14.1144 18 13.1716 17.4142 12.5858C16.8284 12 15.8856 12 14 12H10C8.11438 12 7.17157 12 6.58579 12.5858C6 13.1716 6 14.1144 6 16V22" stroke="#1C274C" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 881 B

@@ -0,0 +1,9 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 22L2 22" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M2 11L10.1259 4.49931C11.2216 3.62279 12.7784 3.62279 13.8741 4.49931L22 11" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M15.5 5.5V3.5C15.5 3.22386 15.7239 3 16 3H18.5C18.7761 3 19 3.22386 19 3.5V8.5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M4 22V9.5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M20 22V9.5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M15 22V17C15 15.5858 15 14.8787 14.5607 14.4393C14.1213 14 13.4142 14 12 14C10.5858 14 9.87868 14 9.43934 14.4393C9 14.8787 9 15.5858 9 17V22" stroke="#1C274C" stroke-width="1.5"/>
<path d="M14 9.5C14 10.6046 13.1046 11.5 12 11.5C10.8954 11.5 10 10.6046 10 9.5C10 8.39543 10.8954 7.5 12 7.5C13.1046 7.5 14 8.39543 14 9.5Z" stroke="#1C274C" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 1016 B

@@ -0,0 +1,17 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 22L2 22" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17 22V6C17 4.11438 17 3.17157 16.4142 2.58579C15.8284 2 14.8856 2 13 2H11C9.11438 2 8.17157 2 7.58579 2.58579C7 3.17157 7 4.11438 7 6V22" stroke="#1C274C" stroke-width="1.5"/>
<path d="M21 22V8.5C21 7.09554 21 6.39331 20.6629 5.88886C20.517 5.67048 20.3295 5.48298 20.1111 5.33706C19.6067 5 18.9045 5 17.5 5" stroke="#1C274C" stroke-width="1.5"/>
<path d="M3 22V8.5C3 7.09554 3 6.39331 3.33706 5.88886C3.48298 5.67048 3.67048 5.48298 3.88886 5.33706C4.39331 5 5.09554 5 6.5 5" stroke="#1C274C" stroke-width="1.5"/>
<path d="M12 22V19" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 12H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5.5 11H7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5.5 14H7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17 11H18.5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17 14H18.5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5.5 8H7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17 8H18.5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M10 15H14" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M12 9V5" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14 7L10 7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB