<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Release on fedtail</title><link>https://fedtail.dmesg.online/en/tags/release/</link><description>Recent content in Release on fedtail</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://fedtail.dmesg.online/en/tags/release/index.xml" rel="self" type="application/rss+xml"/><item><title>Changelog</title><link>https://fedtail.dmesg.online/en/docs/changelog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/en/docs/changelog/</guid><description>&lt;!-- generated by tools/sync.py from the fedtail repo; do not edit --&gt;&#10;&lt;p&gt;Every release, newest first. The files of each one are on the &lt;a href="https://github.com/eugene-vereshchagin/fedtail/releases" rel="noopener"&gt;releases page&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="0160--2026-10-19"&gt;0.16.0 — 2026-10-19&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Faster reading deep into big lanes: stored posts are paged from where the last page&#10;ended instead of skipping the newer ones again each time, and text is pulled out of a&#10;post&amp;rsquo;s HTML with patterns compiled once. Ctrl+F &amp;ldquo;in every lane&amp;rdquo; goes through lanes that&#10;share a source together, each post parsed and matched once — on 20 000 stored posts&#10;it takes 0.4 s instead of 0.9 s; &amp;ldquo;Deeper&amp;rdquo; and long lanes gain the same way.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;A click on the time slider of a video or an audio jumps right there; it used to move&#10;only one step towards the click, and only dragging the handle really seeked.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Sending no longer gives up after 30 seconds on a slow server: it waits &lt;code&gt;post.send_timeout&lt;/code&gt;&#10;(90 s). When the answer still doesn&amp;rsquo;t come, fedtail looks among your latest posts first —&#10;the post was usually made, only the answer lost — and treats it as sent if it&amp;rsquo;s there.&#10;If it can&amp;rsquo;t tell, the message says &amp;ldquo;maybe sent: look before retrying&amp;rdquo; instead of a raw&#10;&amp;ldquo;Read timed out&amp;rdquo;. Each post carries an Idempotency-Key: Mastodon gives back the post&#10;already made instead of a double when the same text is sent again.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Ctrl+F &amp;ldquo;In every lane&amp;rdquo;: a tick in the find bar searches everything stored in every lane&#10;at once; the counter says which lane the match is in, and the next match opens its lane&#10;and loads it down to the post. Ctrl+F pressed again in the find bar goes to the next&#10;match, as in a browser (Enter, ↓ and F3 still do too).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The &lt;code&gt;point&lt;/code&gt; theme closer to point.im: square avatars, the name bold in dark blue with&#10;@address · date under it, the post&amp;rsquo;s #id under the text on the left with the number of&#10;replies (&lt;code&gt;#a3f | 4&lt;/code&gt;), the buttons on the right, a hatched grey band behind the lane&amp;rsquo;s&#10;and the new post&amp;rsquo;s title, solid and clearer lines between posts, a dark &amp;ldquo;Create&amp;rdquo;&#10;button. New theme keys for any theme: &lt;code&gt;shape.avatar_shape&lt;/code&gt; (circle,&#10;square, rounded), &lt;code&gt;shape.card_header = &amp;quot;stacked&amp;quot;&lt;/code&gt;, &lt;code&gt;shape.short_id&lt;/code&gt; (header, footer),&#10;&lt;code&gt;shape.actions_align&lt;/code&gt; (left, right), &lt;code&gt;shape.rule&lt;/code&gt; (solid, dashed), &lt;code&gt;shape.header_stripes&lt;/code&gt;,&#10;&lt;code&gt;shape.header_bar&lt;/code&gt; (a band above the title strip, point.im&amp;rsquo;s dark top bar),&#10;&lt;code&gt;colors.primary&lt;/code&gt; / &lt;code&gt;on_primary&lt;/code&gt;, &lt;code&gt;colors.header&lt;/code&gt;, &lt;code&gt;colors.header_bar&lt;/code&gt;, &lt;code&gt;colors.name&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The lane&amp;rsquo;s and the new post&amp;rsquo;s title strip is tinted with the theme&amp;rsquo;s accent in every&#10;theme (&lt;code&gt;colors.header&lt;/code&gt; left at &amp;ldquo;auto&amp;rdquo;), with a 3 px band of the accent above it&#10;(&lt;code&gt;shape.header_bar&lt;/code&gt;, 0 turns it off); bnw and contrast keep a white strip under the band.&#10;Lines between posts in &amp;ldquo;rule&amp;rdquo; style are solid by default (&lt;code&gt;terminal&lt;/code&gt; keeps its dashes).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&amp;ldquo;Add to list&amp;rdquo; for someone you don&amp;rsquo;t follow: the lists are dead now, not just greyed —&#10;a click on them does nothing at all (it used to send a request the server refused and&#10;stall the window). While fedtail is still asking the server whether you follow them,&#10;the lists are dead too, with &amp;ldquo;Checking…&amp;rdquo; above them, instead of looking clickable.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Video is decoded by the processor by default (&lt;code&gt;ui.video_decode = &amp;quot;software&amp;quot;&lt;/code&gt;): on some&#10;cards Qt&amp;rsquo;s hardware decoding fails (&amp;ldquo;CUDA_ERROR_INVALID_VALUE&amp;rdquo;, &amp;ldquo;more than 32 decode&#10;surfaces&amp;rdquo;) and the video stutters or stalls. &lt;code&gt;&amp;quot;hardware&amp;quot;&lt;/code&gt; brings the old way back.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The opossum is gone from the icon and About: it comes from an official Telegram sticker&#10;pack, and its artist says the rights are Telegram&amp;rsquo;s, not theirs to give. The drawn&#10;thread bubble is the icon again (in the theme&amp;rsquo;s colours with &lt;code&gt;ui.themed_icon&lt;/code&gt;);&#10;&lt;code&gt;ui.app_icon&lt;/code&gt; is gone with it.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&amp;ldquo;Activity&amp;rdquo; counts as seen what came on screen, like the other lanes, checked when you&#10;scroll or come back to the window. It used to mark everything once, on opening — rows&#10;far off screen too — and a window in the background at that moment left the newest&#10;unread for good.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The &lt;code&gt;debug&lt;/code&gt; theme: for finding what&amp;rsquo;s wrong, not for reading. Each state of a post in a&#10;loud frame of its own — unread, &amp;ldquo;on screen but not all of it yet&amp;rdquo; (not counted read&#10;yet), the j/k cursor, what Ctrl+F found, the post you came to — plus the keyboard focus&#10;and disabled buttons. &lt;code&gt;shape.debug = true&lt;/code&gt; turns the same on in any theme of your own.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&amp;ldquo;Copy handle&amp;rdquo;: a button in a profile, &amp;ldquo;Copy handle @…&amp;rdquo; in a post&amp;rsquo;s ⋯ menu (the author,&#10;and the booster of a boost) and on the &amp;ldquo;boosted by&amp;rdquo; line. Always the full &lt;code&gt;@user@server&lt;/code&gt;&#10;— people of your own server come as a bare &lt;code&gt;user&lt;/code&gt;, your server&amp;rsquo;s name is added.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;⋯ → &amp;ldquo;Call into the thread…&amp;rdquo;: a reply to that post with only &amp;ldquo;@&amp;rdquo; in it and the people list&#10;open — pick who, add a word, send. They get a notification and open the thread at home;&#10;no links with service ids. The thread&amp;rsquo;s others aren&amp;rsquo;t mentioned; the call has its own&#10;draft. &lt;code&gt;post.invite = false&lt;/code&gt; hides the item.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;≡ → Debug → &amp;ldquo;Federation status&amp;rdquo;: how your server is doing — what it runs, how many answers&#10;and how fast, polls and the live stream — and what keeps failing that isn&amp;rsquo;t the client&amp;rsquo;s&#10;doing: what the server can&amp;rsquo;t do, who waits to go into a list, and every request that&#10;keeps getting 404/410/401/timeouts, on your server and on other servers, grouped (ids&#10;folded), counted, with when it last happened and what it most likely means. Live while&#10;open; &amp;ldquo;Copy&amp;rdquo; as text for an issue; &amp;ldquo;Count anew&amp;rdquo;. Only what this run saw: nothing is asked&#10;of the network for it, no queries or tokens are kept.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Federation status: who waits to go into a list is named (my server is asked who an id&#10;is when no post of theirs is here), linked to their profile in a tab, with why they&#10;wait — a follow request unanswered, not followed (refused or withdrawn), or followed and&#10;going in with the next refresh.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;A slow answer about direct conversations no longer fails the whole poll (&amp;ldquo;Read timed&#10;out&amp;rdquo; on screen, the lanes not fetched): it is only a nicety, skipped till next time.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Someone waiting to go into a list is tried only once they&amp;rsquo;re followed; while the follow&#10;request waits nothing is asked, and once it&amp;rsquo;s refused or withdrawn they&amp;rsquo;re let go. (A&#10;refused follow was retried with a 404 every ten minutes, for a month.)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;What the server hasn&amp;rsquo;t got — blocked domains on GoToSocial, the notification policy —&#10;is asked once a run, not on every silence refresh. Muted and blocked lists no longer&#10;ask for an empty second page.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;A post&amp;rsquo;s ⋯ menu is built when it opens, not with every card: two dozen actions and&#10;submenus per card were most of a lane&amp;rsquo;s widgets and of its drawing time; what it shows&#10;(unread, subscribed, pinned) is how things are at that moment.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The log&amp;rsquo;s trend line gives the rate over the whole session beside start → now (and the&#10;last minutes apart): 245 → 763 MB over a night read &amp;ldquo;+1950/h&amp;rdquo;, the rate of three minutes.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item></channel></rss>