<feed xmlns='http://www.w3.org/2005/Atom'>
<title>aerc/widgets, branch shivesh</title>
<subtitle>A pretty good email client (shivesh branch)</subtitle>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/'/>
<entry>
<title>Stylesheet colour mapping for custom IMAP flags</title>
<updated>2021-10-24T15:00:14+00:00</updated>
<author>
<name>Shivesh Mandalia</name>
<email>mail@shivesh.org</email>
</author>
<published>2021-10-24T15:00:14+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=c1c8d1ff30485019323ad87c628229f1016941ac'/>
<id>c1c8d1ff30485019323ad87c628229f1016941ac</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>widgets/compose: Generate Message ID with domain name from address</title>
<updated>2021-10-20T18:28:25+00:00</updated>
<author>
<name>j.r</name>
<email>j.r@jugendhacker.de</email>
</author>
<published>2021-09-04T13:14:42+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=57292f268a961e559618d0b5007dbda4df33f00c'/>
<id>57292f268a961e559618d0b5007dbda4df33f00c</id>
<content type='text'>
go-messages GenerateMessageID does generate the Message ID based on the
hostname of the local machine. This is ok in this context because the
lib does not know really anything of the surroundings. But aerc does
know about the sender domain and could use this instead of the hostname.
This also aligns with the recommendation of RFC4322 to use a unique
domain name, to ensure the uniqueness of the whole Message ID [1].

A side effect of this change is that it also improves the score of some
spam filters a bit, if an E-Mail has a fully qualified domain name after
the @.

This patch fixes https://todo.sr.ht/~sircmpwn/aerc2/526

[1] https://www.rfc-editor.org/rfc/rfc5322.html#section-3.6.4
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
go-messages GenerateMessageID does generate the Message ID based on the
hostname of the local machine. This is ok in this context because the
lib does not know really anything of the surroundings. But aerc does
know about the sender domain and could use this instead of the hostname.
This also aligns with the recommendation of RFC4322 to use a unique
domain name, to ensure the uniqueness of the whole Message ID [1].

A side effect of this change is that it also improves the score of some
spam filters a bit, if an E-Mail has a fully qualified domain name after
the @.

This patch fixes https://todo.sr.ht/~sircmpwn/aerc2/526

[1] https://www.rfc-editor.org/rfc/rfc5322.html#section-3.6.4
</pre>
</div>
</content>
</entry>
<entry>
<title>widgets/terminal: Only call vterm.ScreenCell.Attrs once in styleFromCell</title>
<updated>2021-04-12T23:32:45+00:00</updated>
<author>
<name>Clayton Craft</name>
<email>clayton@craftyguy.net</email>
</author>
<published>2021-04-12T23:24:35+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=98d778eeae63428721b900ca1b8c4972966d8395'/>
<id>98d778eeae63428721b900ca1b8c4972966d8395</id>
<content type='text'>
This fixes a substantial performance issue when scrolling emails with
long/complicated contents, where scrolling down a single line can take
something like hundreds of ms before the screen is updated to reflect
the scroll. It's really bad if the email has lots of columns, e.g. like
if it's an html email that was passed through a filter (w3m, etc) to
render it.

Using pprof, I found that the multiple calls to vterm.ScreenCell.Attrs()
in styleFromCell were really really expensive. This patch replaces them
with a single call.

Here's a before and after with a simple, but very manual test of opening
a large email with contents that went through a w3m filter and
continuously scrolling up and down over and over for ~30 seconds:

*** Before:

----------------------------------------------------------+-------------
      flat  flat%   sum%        cum   cum%   calls calls% + context
----------------------------------------------------------+-------------
                                            28.25s   100% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.PartSwitcher.Draw
         0     0% 99.94%     28.25s 82.31%                | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.PartViewer.Draw
                                            28.25s   100% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.Draw
----------------------------------------------------------+-------------
                                            28.25s   100% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.PartViewer.Draw
         0     0% 99.94%     28.25s 82.31%                | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.Draw
                                            19.23s 68.07% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.styleFromCell
                                             6.04s 21.38% | github.x2ecom..z2fddevault..z2fgo..z2dlibvterm.Screen.GetCellAt
                                             1.38s  4.88% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2flib..z2fui.Context.Printf
                                             0.62s  2.19% | runtime.mapassign
                                             0.43s  1.52% | runtime.mapaccess2
                                             0.20s  0.71% | runtime.newobject
                                             0.19s  0.67% | runtime.callers (inline)
                                             0.07s  0.25% | runtime.makeslice
                                             0.07s  0.25% | runtime.mallocgc
----------------------------------------------------------+-------------
                                            19.23s   100% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.Draw
         0     0% 99.94%     19.23s 56.03%                | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.styleFromCell
                                            19.21s 99.90% | github.x2ecom..z2fddevault..z2fgo..z2dlibvterm.ScreenCell.Attrs

*** After:

----------------------------------------------------------+-------------
      flat  flat%   sum%        cum   cum%   calls calls% + context
----------------------------------------------------------+-------------
                                             0.31s   100% | git.x2esr.x2eht/~sircmpwn/aerc/widgets.Terminal.Draw
         0     0% 99.87%      0.31s  1.33%                | github.x2ecom/ddevault/go-libvterm.NewPos
                                             0.25s 80.65% | runtime.callers (inline)
                                             0.04s 12.90% | runtime.gomcache (inline)
----------------------------------------------------------+-------------
                                             8.40s   100% | github.x2ecom/ddevault/go-libvterm.Screen.GetCellAt
         0     0% 99.87%      8.40s 36.11%                | github.x2ecom/ddevault/go-libvterm.Screen.GetCell
                                             7.14s 85.00% | github.x2ecom/ddevault/go-libvterm._cgoCheckPointer
                                             0.54s  6.43% | runtime.callers (inline)
                                             0.35s  4.17% | runtime.exitsyscall
                                             0.11s  1.31% | runtime.deferprocStack
                                             0.07s  0.83% | doentersyscall
                                             0.07s  0.83% | runtime.getg
                                             0.05s   0.6% | runtime.casgstatus
                                             0.03s  0.36% |   _init
                                             0.03s  0.36% | runtime.gomcache (inline)
----------------------------------------------------------+-------------
                                             8.46s   100% | git.x2esr.x2eht/~sircmpwn/aerc/widgets.Terminal.Draw
         0     0% 99.87%      8.46s 36.37%                | github.x2ecom/ddevault/go-libvterm.Screen.GetCellAt
                                             8.40s 99.29% | github.x2ecom/ddevault/go-libvterm.Screen.GetCell
                                             0.06s  0.71% | runtime.callers (inline)
----------------------------------------------------------+-------------
                                             0.31s   100% | git.x2esr.x2eht/~sircmpwn/aerc/widgets.Terminal.styleFromCell
         0     0% 99.87%      0.31s  1.33%                | github.x2ecom/ddevault/go-libvterm.ScreenCell.Attrs
)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes a substantial performance issue when scrolling emails with
long/complicated contents, where scrolling down a single line can take
something like hundreds of ms before the screen is updated to reflect
the scroll. It's really bad if the email has lots of columns, e.g. like
if it's an html email that was passed through a filter (w3m, etc) to
render it.

Using pprof, I found that the multiple calls to vterm.ScreenCell.Attrs()
in styleFromCell were really really expensive. This patch replaces them
with a single call.

Here's a before and after with a simple, but very manual test of opening
a large email with contents that went through a w3m filter and
continuously scrolling up and down over and over for ~30 seconds:

*** Before:

----------------------------------------------------------+-------------
      flat  flat%   sum%        cum   cum%   calls calls% + context
----------------------------------------------------------+-------------
                                            28.25s   100% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.PartSwitcher.Draw
         0     0% 99.94%     28.25s 82.31%                | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.PartViewer.Draw
                                            28.25s   100% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.Draw
----------------------------------------------------------+-------------
                                            28.25s   100% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.PartViewer.Draw
         0     0% 99.94%     28.25s 82.31%                | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.Draw
                                            19.23s 68.07% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.styleFromCell
                                             6.04s 21.38% | github.x2ecom..z2fddevault..z2fgo..z2dlibvterm.Screen.GetCellAt
                                             1.38s  4.88% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2flib..z2fui.Context.Printf
                                             0.62s  2.19% | runtime.mapassign
                                             0.43s  1.52% | runtime.mapaccess2
                                             0.20s  0.71% | runtime.newobject
                                             0.19s  0.67% | runtime.callers (inline)
                                             0.07s  0.25% | runtime.makeslice
                                             0.07s  0.25% | runtime.mallocgc
----------------------------------------------------------+-------------
                                            19.23s   100% | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.Draw
         0     0% 99.94%     19.23s 56.03%                | git.x2esr.x2eht..z2f..z7esircmpwn..z2faerc..z2fwidgets.Terminal.styleFromCell
                                            19.21s 99.90% | github.x2ecom..z2fddevault..z2fgo..z2dlibvterm.ScreenCell.Attrs

*** After:

----------------------------------------------------------+-------------
      flat  flat%   sum%        cum   cum%   calls calls% + context
----------------------------------------------------------+-------------
                                             0.31s   100% | git.x2esr.x2eht/~sircmpwn/aerc/widgets.Terminal.Draw
         0     0% 99.87%      0.31s  1.33%                | github.x2ecom/ddevault/go-libvterm.NewPos
                                             0.25s 80.65% | runtime.callers (inline)
                                             0.04s 12.90% | runtime.gomcache (inline)
----------------------------------------------------------+-------------
                                             8.40s   100% | github.x2ecom/ddevault/go-libvterm.Screen.GetCellAt
         0     0% 99.87%      8.40s 36.11%                | github.x2ecom/ddevault/go-libvterm.Screen.GetCell
                                             7.14s 85.00% | github.x2ecom/ddevault/go-libvterm._cgoCheckPointer
                                             0.54s  6.43% | runtime.callers (inline)
                                             0.35s  4.17% | runtime.exitsyscall
                                             0.11s  1.31% | runtime.deferprocStack
                                             0.07s  0.83% | doentersyscall
                                             0.07s  0.83% | runtime.getg
                                             0.05s   0.6% | runtime.casgstatus
                                             0.03s  0.36% |   _init
                                             0.03s  0.36% | runtime.gomcache (inline)
----------------------------------------------------------+-------------
                                             8.46s   100% | git.x2esr.x2eht/~sircmpwn/aerc/widgets.Terminal.Draw
         0     0% 99.87%      8.46s 36.37%                | github.x2ecom/ddevault/go-libvterm.Screen.GetCellAt
                                             8.40s 99.29% | github.x2ecom/ddevault/go-libvterm.Screen.GetCell
                                             0.06s  0.71% | runtime.callers (inline)
----------------------------------------------------------+-------------
                                             0.31s   100% | git.x2esr.x2eht/~sircmpwn/aerc/widgets.Terminal.styleFromCell
         0     0% 99.87%      0.31s  1.33%                | github.x2ecom/ddevault/go-libvterm.ScreenCell.Attrs
)
</pre>
</div>
</content>
</entry>
<entry>
<title>terminal: Add support for Shift+Tab</title>
<updated>2021-02-07T09:11:31+00:00</updated>
<author>
<name>Alexey Yerin</name>
<email>yyp@disroot.org</email>
</author>
<published>2021-02-06T08:14:24+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=804329970ba2bf3fa5ef03e6ca2ba7264b993c11'/>
<id>804329970ba2bf3fa5ef03e6ca2ba7264b993c11</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Get rid of the aerc.PushError(" " + $string) idiom</title>
<updated>2021-01-30T13:04:23+00:00</updated>
<author>
<name>Reto Brunner</name>
<email>reto@labrat.space</email>
</author>
<published>2021-01-30T12:51:32+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=8ea86cea41aa038a25a8fee9cd540a7336869dae'/>
<id>8ea86cea41aa038a25a8fee9cd540a7336869dae</id>
<content type='text'>
The individual callers should not be responsible for padding
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The individual callers should not be responsible for padding
</pre>
</div>
</content>
</entry>
<entry>
<title>compose: apply default style to header separator</title>
<updated>2021-01-14T05:36:09+00:00</updated>
<author>
<name>Eyal Sawady</name>
<email>ecs@d2evs.net</email>
</author>
<published>2021-01-13T07:08:09+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=d344ceecfe9892db1e836e7354a5ce25c2cb7290'/>
<id>d344ceecfe9892db1e836e7354a5ce25c2cb7290</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>trim &lt;&gt; from messageIDs when handling mailto links</title>
<updated>2021-01-12T19:22:34+00:00</updated>
<author>
<name>Reto Brunner</name>
<email>reto@labrat.space</email>
</author>
<published>2021-01-12T19:21:06+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=0e554a879d1b8de61e6eb7d2e7ef64e9ec99ce1b'/>
<id>0e554a879d1b8de61e6eb7d2e7ef64e9ec99ce1b</id>
<content type='text'>
Co-authored-by: James Walmsley &lt;james@fullfat-fs.co.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Co-authored-by: James Walmsley &lt;james@fullfat-fs.co.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Apply dirlist style to unselected directories</title>
<updated>2021-01-12T19:07:36+00:00</updated>
<author>
<name>Eyal Sawady</name>
<email>ecs@d2evs.net</email>
</author>
<published>2020-12-31T17:16:24+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=7371d91b3ceeab96afef9792c5bf151bd21f590c'/>
<id>7371d91b3ceeab96afef9792c5bf151bd21f590c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Reapply 'Fix nil pointer deref on Envelope'</title>
<updated>2021-01-03T08:08:27+00:00</updated>
<author>
<name>Shaw Vrana</name>
<email>shaw@vranix.com</email>
</author>
<published>2021-01-02T20:18:11+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=3c14c2cb3494766d39e22c852a6a8f8b965dea92'/>
<id>3c14c2cb3494766d39e22c852a6a8f8b965dea92</id>
<content type='text'>
The commit bf16ccde484ce3b6d2a4b843e7ebc04a9b2a957d appears to have been
unintentionally dropped by commit 905cb9dfd3ef197bb4b59039a1be76ce2c8e3099
(Implement style configuration).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The commit bf16ccde484ce3b6d2a4b843e7ebc04a9b2a957d appears to have been
unintentionally dropped by commit 905cb9dfd3ef197bb4b59039a1be76ce2c8e3099
(Implement style configuration).
</pre>
</div>
</content>
</entry>
<entry>
<title>add italics support</title>
<updated>2020-12-24T09:26:18+00:00</updated>
<author>
<name>y0ast</name>
<email>joost@joo.st</email>
</author>
<published>2020-12-23T17:03:33+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.shivesh.org/aerc/commit/?id=3edbe0c67ceae5f1464c07d3d7dd6673a3b98d3a'/>
<id>3edbe0c67ceae5f1464c07d3d7dd6673a3b98d3a</id>
<content type='text'>
Fixes: https://todo.sr.ht/~sircmpwn/aerc2/416

Co-authored-by: JD &lt;john1doe@ya.ru&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes: https://todo.sr.ht/~sircmpwn/aerc2/416

Co-authored-by: JD &lt;john1doe@ya.ru&gt;
</pre>
</div>
</content>
</entry>
</feed>
