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,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.31307 14.6996C3.4791 14.3201 3.92132 14.147 4.3008 14.3131L9.3008 16.5006C9.68029 16.6666 9.85333 17.1088 9.68731 17.4883C9.52128 17.8678 9.07906 18.0408 8.69957 17.8748L3.69958 15.6873C3.32009 15.5213 3.14705 15.0791 3.31307 14.6996ZM20.6873 14.6996C20.8533 15.0791 20.6803 15.5213 20.3008 15.6873L4.3008 22.6873C3.92132 22.8533 3.4791 22.6803 3.31307 22.3008C3.14705 21.9213 3.32009 21.4791 3.69958 21.3131L19.6996 14.3131C20.0791 14.147 20.5213 14.3201 20.6873 14.6996ZM13.8131 19.2933C13.9791 18.9138 14.4213 18.7408 14.8008 18.9068L20.3008 21.3131C20.6803 21.4791 20.8533 21.9213 20.6873 22.3008C20.5213 22.6803 20.0791 22.8533 19.6996 22.6873L14.1996 20.2811C13.8201 20.115 13.647 19.6728 13.8131 19.2933Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.6 15C13.7333 15 18 13.7615 18 8.80745C18 5.776 16.1512 3.5774 14.4009 2.2646C13.503 1.59108 12.3529 2.28965 12.3529 3.38896C12.3529 4.13169 12.1424 5.36614 11.5596 6.27998C10.8777 7.34944 9.75127 6.421 9.57296 5.17624C9.48354 4.55201 8.79638 4.29388 8.26099 4.65274C7.20839 5.35826 6 6.71017 6 8.80745C6 13.7615 9.73333 15 11.6 15ZM15.2155 9.28163C15.6123 9.40065 15.8374 9.81877 15.7184 10.2155C15.4495 11.1119 14.3344 12.75 12 12.75C11.5858 12.75 11.25 12.4142 11.25 12C11.25 11.5858 11.5858 11.25 12 11.25C13.5056 11.25 14.1505 10.2215 14.2816 9.78449C14.4007 9.38774 14.8188 9.16261 15.2155 9.28163Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 21C16.4183 21 20 17.6439 20 13.504C20 9.76257 17.9654 6.83811 16.562 5.44436C16.3017 5.18584 15.8683 5.30006 15.7212 5.63288C14.9742 7.3229 13.4178 9.75607 11.4286 9.75607C10.1975 9.92086 8.31688 8.86844 9.83483 3.64868C9.97151 3.17868 9.46972 2.80113 9.08645 3.11539C6.9046 4.90436 4 8.51143 4 13.504C4 17.6439 7.58172 21 12 21Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 462 B

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.46447 3.46447C2 4.92893 2 7.28595 2 12C2 16.714 2 19.0711 3.46447 20.5355C4.92893 22 7.28595 22 12 22C16.714 22 19.0711 22 20.5355 20.5355C22 19.0711 22 16.714 22 12C22 7.28595 22 4.92893 20.5355 3.46447C19.0711 2 16.714 2 12 2C7.28595 2 4.92893 2 3.46447 3.46447ZM17 12.6667C17 16.9333 13.4444 18 11.6667 18C10.1111 18 7 16.9333 7 12.6667C7 10.8109 8.06292 9.63275 8.95593 9.03974C9.36421 8.76863 9.87201 8.94191 9.89841 9.4313C9.95616 10.5021 10.7814 11.3622 11.4205 10.5011C12.0054 9.71298 12.2941 8.64272 12.2941 8C12.2941 7.05322 13.2525 6.45158 14.0008 7.03165C15.4593 8.1623 17 10.0558 17 12.6667Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 776 B

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.8324 21.8013C15.9583 21.1747 20 18.926 20 13.1112C20 7.8196 16.1267 4.29593 13.3415 2.67685C12.7235 2.31757 12 2.79006 12 3.50492V5.3334C12 6.77526 11.3938 9.40711 9.70932 10.5018C8.84932 11.0607 7.92052 10.2242 7.816 9.20388L7.73017 8.36604C7.6304 7.39203 6.63841 6.80075 5.85996 7.3946C4.46147 8.46144 3 10.3296 3 13.1112C3 20.2223 8.28889 22.0001 10.9333 22.0001C11.0871 22.0001 11.2488 21.9955 11.4171 21.9858C10.1113 21.8742 8 21.064 8 18.4442C8 16.3949 9.49507 15.0085 10.631 14.3346C10.9365 14.1533 11.2941 14.3887 11.2941 14.7439V15.3331C11.2941 15.784 11.4685 16.4889 11.8836 16.9714C12.3534 17.5174 13.0429 16.9454 13.0985 16.2273C13.1161 16.0008 13.3439 15.8564 13.5401 15.9711C14.1814 16.3459 15 17.1465 15 18.4442C15 20.4922 13.871 21.4343 12.8324 21.8013Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 902 B

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 15.0002C20 19.2547 17.3819 21.1216 15.3588 21.7512C14.9274 21.8854 14.6438 21.3825 14.9019 21.0116C15.7823 19.7464 16.8 17.8161 16.8 16.0002C16.8 14.0496 15.1559 11.7467 13.8721 10.3263C13.5786 10.0016 13.0667 10.2164 13.0507 10.6539C12.9976 12.1031 12.7689 14.042 11.7828 15.5616C11.6241 15.8062 11.2872 15.8264 11.1063 15.5977C10.7982 15.208 10.4901 14.7267 10.182 14.3464C10.016 14.1416 9.71604 14.1388 9.52461 14.32C8.77825 15.0267 7.73333 16.1288 7.73333 17.5002C7.73333 18.4301 8.0936 19.405 8.50007 20.1893C8.72368 20.6208 8.32607 21.1402 7.89573 20.9144C6.11307 19.9789 4 18.0838 4 15.0002C4 11.8538 8.31029 7.49503 9.95605 3.37712C10.2157 2.72733 11.0161 2.42199 11.5727 2.84603C14.9439 5.41409 20 10.3783 20 15.0002Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 859 B

@@ -0,0 +1,7 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.25 2.08252C11.0066 2.13678 10.7675 2.21776 10.5371 2.32548C6.55332 4.18752 4 9.39446 4 13.8566C4 18.0966 7.18341 21.5797 11.25 21.9646V2.08252Z" fill="black"/>
<path d="M12.75 21.9646C16.8166 21.5797 20 18.0966 20 13.8566C20 13.4506 19.9789 13.0384 19.9374 12.6232L12.75 19.8106V21.9646Z" fill="black"/>
<path d="M18.2597 7.17958C17.8707 6.45476 17.4222 5.76809 16.92 5.14062L12.75 9.31059V12.6893L18.2597 7.17958Z" fill="black"/>
<path d="M15.9084 4.03082C15.1732 3.32559 14.3538 2.74189 13.4629 2.32548C13.2325 2.21776 12.9934 2.13678 12.75 2.08252V7.18927L15.9084 4.03082Z" fill="black"/>
<path d="M18.9364 8.62415L12.75 14.8106V17.6893L19.5 10.9393L19.6319 10.8073C19.458 10.0697 19.2246 9.33627 18.9364 8.62415Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 849 B

@@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.052 1.25H11.948C11.0495 1.24997 10.3003 1.24995 9.70552 1.32991C9.07773 1.41432 8.51093 1.59999 8.05546 2.05546C7.59999 2.51093 7.41432 3.07773 7.32991 3.70552C7.24995 4.3003 7.24997 5.04951 7.25 5.94799V6.02572C5.22882 6.09185 4.01511 6.32803 3.17157 7.17157C2.47737 7.86577 2.19451 8.81067 2.07926 10.25H21.9207C21.8055 8.81067 21.5226 7.86577 20.8284 7.17157C19.9849 6.32803 18.7712 6.09185 16.75 6.02572V5.94801C16.75 5.04954 16.7501 4.3003 16.6701 3.70552C16.5857 3.07773 16.4 2.51093 15.9445 2.05546C15.4891 1.59999 14.9223 1.41432 14.2945 1.32991C13.6997 1.24995 12.9505 1.24997 12.052 1.25ZM15.25 6.00189V6C15.25 5.03599 15.2484 4.38843 15.1835 3.9054C15.1214 3.44393 15.0142 3.24644 14.8839 3.11612C14.7536 2.9858 14.5561 2.87858 14.0946 2.81654C13.6116 2.7516 12.964 2.75 12 2.75C11.036 2.75 10.3884 2.7516 9.90539 2.81654C9.44393 2.87858 9.24644 2.9858 9.11612 3.11612C8.9858 3.24644 8.87858 3.44393 8.81654 3.9054C8.7516 4.38843 8.75 5.03599 8.75 6V6.00189C9.14203 6 9.55807 6 10 6H14C14.4419 6 14.858 6 15.25 6.00189Z" fill="black"/>
<path d="M2 14C2 13.161 2 12.4153 2.0129 11.75H21.9871C22 12.4153 22 13.161 22 14C22 14.839 22 15.5847 21.9871 16.25L2.0129 16.25C2 15.5847 2 14.839 2 14Z" fill="black"/>
<path d="M2.07926 17.75C2.19451 19.1893 2.47737 20.1342 3.17157 20.8284C4.34315 22 6.22876 22 10 22H14C17.7712 22 19.6569 22 20.8284 20.8284C21.5226 20.1342 21.8055 19.1893 21.9207 17.75H2.07926Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,6 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.052 1.25H11.948C11.0495 1.24997 10.3003 1.24995 9.70552 1.32991C9.07773 1.41432 8.51093 1.59999 8.05546 2.05546C7.59999 2.51093 7.41432 3.07773 7.32991 3.70552C7.24995 4.3003 7.24997 5.04951 7.25 5.94799V6.02572C7.07755 6.03136 6.91097 6.03824 6.75 6.04663V14.25L10.0345 14.25C10.2396 14.2499 10.4614 14.2498 10.6486 14.275C10.8679 14.3045 11.1481 14.3803 11.3839 14.6161C11.6197 14.8519 11.6955 15.1321 11.725 15.3514C11.7502 15.5387 11.7501 15.7605 11.75 15.9656V17.0345C11.7501 17.2396 11.7502 17.4614 11.725 17.6486C11.6955 17.8679 11.6197 18.1481 11.3839 18.3839C11.1481 18.6197 10.8679 18.6955 10.6486 18.725C10.4614 18.7502 10.2396 18.7501 10.0345 18.75L6.75 18.75V21.9534C7.64461 22 8.7124 22 10 22H14C15.2876 22 16.3554 22 17.25 21.9534V6.04663C17.089 6.03824 16.9225 6.03136 16.75 6.02572V5.94801C16.75 5.04954 16.7501 4.3003 16.6701 3.70552C16.5857 3.07773 16.4 2.51093 15.9445 2.05546C15.4891 1.59999 14.9223 1.41432 14.2945 1.32991C13.6997 1.24995 12.9505 1.24997 12.052 1.25ZM15.25 6.00189V6C15.25 5.03599 15.2484 4.38843 15.1835 3.9054C15.1214 3.44393 15.0142 3.24644 14.8839 3.11612C14.7536 2.9858 14.5561 2.87858 14.0946 2.81654C13.6116 2.7516 12.964 2.75 12 2.75C11.036 2.75 10.3884 2.7516 9.90539 2.81654C9.44393 2.87858 9.24644 2.9858 9.11612 3.11612C8.9858 3.24644 8.87858 3.44393 8.81654 3.9054C8.7516 4.38843 8.75 5.03599 8.75 6V6.00189C9.14203 6 9.55807 6 10 6H14C14.4419 6 14.858 6 15.25 6.00189Z" fill="black"/>
<path d="M20.8284 20.8284C20.3096 21.3473 19.6507 21.6363 18.75 21.7974V6.20261C19.6507 6.36366 20.3096 6.65273 20.8284 7.17157C22 8.34315 22 10.2288 22 14C22 17.7712 22 19.6569 20.8284 20.8284Z" fill="black"/>
<path d="M3.17157 7.17157C3.69042 6.65273 4.34931 6.36366 5.25 6.20261V14.2916C5.04984 14.3306 4.8169 14.4154 4.61613 14.6161C4.38033 14.8519 4.3045 15.1321 4.27501 15.3514C4.24984 15.5387 4.24993 15.7605 4.25001 15.9656V17.0345C4.24993 17.2396 4.24984 17.4614 4.27501 17.6486C4.3045 17.8679 4.38033 18.1481 4.61613 18.3839C4.8169 18.5847 5.04984 18.6695 5.25 18.7084V21.7974C4.34931 21.6363 3.69042 21.3473 3.17157 20.8284C2 19.6569 2 17.7712 2 14C2 10.2288 2 8.34315 3.17157 7.17157Z" fill="black"/>
<path d="M5.75117 15.7512C5.75005 15.8206 5.75002 15.9009 5.75002 16V17C5.75002 17.0991 5.75005 17.1794 5.75117 17.2489C5.82063 17.25 5.90094 17.25 6.00002 17.25H10C10.0991 17.25 10.1794 17.25 10.2489 17.2489C10.25 17.1794 10.25 17.0991 10.25 17V16C10.25 15.9009 10.25 15.8206 10.2489 15.7512C10.1794 15.7501 10.0991 15.75 10 15.75H6.00002C5.90094 15.75 5.82063 15.7501 5.75117 15.7512Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.052 1.25H11.948C11.0495 1.24997 10.3003 1.24995 9.70552 1.32991C9.07773 1.41432 8.51093 1.59999 8.05546 2.05546C7.59999 2.51093 7.41432 3.07773 7.32991 3.70552C7.24995 4.3003 7.24997 5.04951 7.25 5.94799V6.02572C5.22882 6.09185 4.01511 6.32803 3.17157 7.17157C2 8.34315 2 10.2288 2 14C2 17.7712 2 19.6569 3.17157 20.8284C4.34315 22 6.22876 22 10 22H14C17.7712 22 19.6569 22 20.8284 20.8284C22 19.6569 22 17.7712 22 14C22 10.2288 22 8.34315 20.8284 7.17157C19.9849 6.32803 18.7712 6.09185 16.75 6.02572V5.94801C16.75 5.04954 16.7501 4.3003 16.6701 3.70552C16.5857 3.07773 16.4 2.51093 15.9445 2.05546C15.4891 1.59999 14.9223 1.41432 14.2945 1.32991C13.6997 1.24995 12.9505 1.24997 12.052 1.25ZM15.25 6.00189V6C15.25 5.03599 15.2484 4.38843 15.1835 3.9054C15.1214 3.44393 15.0142 3.24644 14.8839 3.11612C14.7536 2.9858 14.5561 2.87858 14.0946 2.81654C13.6116 2.7516 12.964 2.75 12 2.75C11.036 2.75 10.3884 2.7516 9.90539 2.81654C9.44393 2.87858 9.24644 2.9858 9.11612 3.11612C8.9858 3.24644 8.87858 3.44393 8.81654 3.9054C8.7516 4.38843 8.75 5.03599 8.75 6V6.00189C9.14203 6 9.55807 6 10 6H14C14.4419 6 14.858 6 15.25 6.00189ZM17 9C17 9.55229 16.5523 10 16 10C15.4477 10 15 9.55229 15 9C15 8.44772 15.4477 8 16 8C16.5523 8 17 8.44772 17 9ZM8 10C8.55228 10 9 9.55229 9 9C9 8.44772 8.55228 8 8 8C7.44772 8 7 8.44772 7 9C7 9.55229 7.44772 10 8 10Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB