<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>fedtail Documentation on fedtail</title><link>https://fedtail.dmesg.online/en/docs/</link><description>Recent content in fedtail Documentation on fedtail</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://fedtail.dmesg.online/en/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting Started</title><link>https://fedtail.dmesg.online/en/docs/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/en/docs/getting-started/</guid><description>&lt;img src="https://fedtail.dmesg.online/images/fedtail.png" alt="fedtail: an opossum holding its own tail" width="112" align="right" style="margin: 0 0 1rem 1.5rem; filter: drop-shadow(0 4px 12px rgba(34, 211, 238, 0.25));"&gt;&#10;&lt;p&gt;Every &lt;a href="https://github.com/eugene-vereshchagin/fedtail/releases" rel="noopener"&gt;fedtail release&lt;/a&gt; ships as a self-contained single file with Python and Qt bundled inside — no extra dependencies needed.&lt;/p&gt;&#10;&lt;h2 id="method-1-single-binary-no-installation-recommended"&gt;Method 1. Single Binary, No Installation (Recommended)&lt;/h2&gt;&#10;&lt;h3 id="linux-x86_64"&gt;Linux (x86_64)&lt;/h3&gt;&#10;&lt;p&gt;Debian 12 or newer, Ubuntu 22.04 or newer and the like. The commands are for the latest release, 0.16.0:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Download and make it executable:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -LO https://github.com/eugene-vereshchagin/fedtail/releases/download/v0.16.0/fedtail-0.16.0-linux-x86_64&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x fedtail-0.16.0-linux-x86_64&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# put it in the menu with its icon (and exit), then run it&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./fedtail-0.16.0-linux-x86_64 --install-desktop&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./fedtail-0.16.0-linux-x86_64&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;aside class="note"&gt;&#10; &lt;p class="note__title"&gt;Note&lt;/p&gt;&#10; &lt;p&gt;On the first start, the executable unpacks itself into a temporary directory, so the first window takes a few seconds to appear.&lt;/p&gt;&#10; &lt;/aside&gt;</description></item><item><title>fedtail features</title><link>https://fedtail.dmesg.online/en/docs/features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/en/docs/features/</guid><description>&lt;!-- generated by tools/sync.py from the fedtail repo; do not edit --&gt;&#10;&lt;aside class="note"&gt;&#10; &lt;p class="note__title"&gt;Note&lt;/p&gt;&#10; &lt;p&gt;Release 0.16.0 has no docs in this shape yet, so this page shows the development version (0.17.0.dev0). What comes only with it is in the &amp;ldquo;Since&amp;rdquo; column.&lt;/p&gt;&#10; &lt;/aside&gt;&lt;p&gt;As of version &lt;strong&gt;0.17.0 (in progress)&lt;/strong&gt;. This is the full list of fedtail&amp;rsquo;s features: what each one does,&#10;what turns it on and off, since which version it&amp;rsquo;s there, which API or protocol it stands on&#10;and how other clients do the same. The plans are here too, and what was turned down, with the&#10;reasons.&lt;/p&gt;</description></item><item><title>Configuration reference</title><link>https://fedtail.dmesg.online/en/docs/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/en/docs/config/</guid><description>&lt;!-- generated by tools/sync.py from the fedtail repo; do not edit --&gt;&#10;&lt;aside class="note"&gt;&#10; &lt;p class="note__title"&gt;Note&lt;/p&gt;&#10; &lt;p&gt;Release 0.16.0 has no docs in this shape yet, so this page shows the development version (0.17.0.dev0). What comes only with it is in the &amp;ldquo;Since&amp;rdquo; column.&lt;/p&gt;&#10; &lt;/aside&gt;&lt;p&gt;Every key of the config, in tables by chapter.&lt;/p&gt;&#10;&lt;p&gt;Which feature stands behind a key and how other clients do it —&#10;&lt;a href="https://fedtail.dmesg.online/en/docs/features"&gt;the feature list&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="how-the-config-works"&gt;How the config works&lt;/h2&gt;&#10;&lt;p&gt;Every setting is here, with its default value and an explanation. Change what you need and restart fedtail. The program only reads this file and never writes it.&lt;/p&gt;</description></item><item><title>fedtail and other clients</title><link>https://fedtail.dmesg.online/en/docs/comparison/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/en/docs/comparison/</guid><description>&lt;!-- generated by tools/sync.py from the fedtail repo; do not edit --&gt;&#10;&lt;aside class="note"&gt;&#10; &lt;p class="note__title"&gt;Note&lt;/p&gt;&#10; &lt;p&gt;Release 0.16.0 has no docs in this shape yet, so this page shows the development version (0.17.0.dev0). What comes only with it is in the &amp;ldquo;Since&amp;rdquo; column.&lt;/p&gt;&#10; &lt;/aside&gt;&lt;p&gt;The features of the &lt;a href="https://fedtail.dmesg.online/en/docs/features"&gt;full list&lt;/a&gt;, as one matrix a chapter: whether other clients have the same. ✓ they do, empty — they don&amp;rsquo;t or it&amp;rsquo;s unknown. From their READMEs and release notes (autumn 2026) and general knowledge, without trying each one live; the details and remarks are in the “Others” column of the full list.&lt;/p&gt;</description></item><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><item><title>Testing and Bug Reports</title><link>https://fedtail.dmesg.online/en/docs/testing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/en/docs/testing/</guid><description>&lt;p&gt;Thanks for trying out fedtail! It is currently in active beta, and user feedback is essential to track down edge cases and fix breakages quickly.&lt;/p&gt;&#10;&lt;h2 id="what-to-check-first"&gt;What to Check First&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Tree-view Threads.&lt;/strong&gt; Open any conversation (click the &amp;ldquo;Thread&amp;rdquo; button or click on a post timestamp): it renders as an indented tree with comment numbers &lt;code&gt;/1 /2 …&lt;/code&gt;. Responses your home instance never received are fetched directly from the author&amp;rsquo;s server via ActivityPub after a brief moment.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Nothing Lost.&lt;/strong&gt; Press &lt;code&gt;Esc&lt;/code&gt; to close lanes and leave the app running overnight. In the morning, unread badges appear on the left, and opening a lane resumes at your exact previous position.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Replies and Thread Subscriptions.&lt;/strong&gt; Click &amp;ldquo;Subscribe&amp;rdquo; above a thread or run &lt;code&gt;S #abc&lt;/code&gt; in the bottom command line: new comments in followed discussions show up even if you weren&amp;rsquo;t directly mentioned.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Notifications.&lt;/strong&gt; Test system notifications via Menu ≡ → &amp;ldquo;Debugging&amp;rdquo; → &amp;ldquo;Send a test notification&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Command Line.&lt;/strong&gt; Focus the bottom prompt with &lt;code&gt;Ctrl+L&lt;/code&gt; (enter &lt;code&gt;?&lt;/code&gt; for help) to experience Point.im-style rapid interaction.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Multiple Accounts.&lt;/strong&gt; Right-click your avatar in the status corner to switch between isolated profiles.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Themes.&lt;/strong&gt; Customize colors and appearance via the &lt;code&gt;ui.theme&lt;/code&gt; key in &lt;code&gt;config.toml&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="reporting-an-issue"&gt;Reporting an Issue&lt;/h2&gt;&#10;&lt;p&gt;If you encounter a bug or unexpected behavior:&lt;/p&gt;</description></item><item><title>Architecture &amp; Design</title><link>https://fedtail.dmesg.online/en/docs/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/en/docs/architecture/</guid><description>&lt;p&gt;fedtail is engineered for people who value conversation context, non-jumping chronological timelines, and complete discussion threads.&lt;/p&gt;&#10;&lt;h2 id="foundational-principles"&gt;Foundational Principles&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Nothing jumps.&lt;/strong&gt; Opening a lane places you at the first unread post. New arrivals never push what you are currently reading. You consume feeds in order, just like RSS.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Every reply knows its parent.&lt;/strong&gt; A quote strip above each response shows the origin post; a single click expands the entire tree.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Lanes are segregated.&lt;/strong&gt; People, bots, direct replies, and mentions are cleanly partitioned into distinct feeds.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Private by default.&lt;/strong&gt; New posts target followers only. Replies never exceed the visibility level of the parent note.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Config-driven.&lt;/strong&gt; Every behavior is governed by explicit settings in &lt;code&gt;config.toml&lt;/code&gt; rather than GUI preference dialogs.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;No client tokens sent to third-party instances.&lt;/strong&gt; Missing thread data fetched via ActivityPub is retrieved anonymously without leaking user tokens.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Headless core.&lt;/strong&gt; The application engine is fully decoupled from presentation. Frontends (Qt, TUI, Web) interact via events and futures.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;One profile per account.&lt;/strong&gt; Profiles remain isolated; multiple profiles can be switched easily or merged into a single window.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;No patronizing moderation (arts mode).&lt;/strong&gt; In tribute to @arts (founder of Point.im), content is presented as-is with full user agency.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="architectural-components"&gt;Architectural Components&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Core Engine (&lt;code&gt;fedtail/core&lt;/code&gt;)&lt;/strong&gt;: Headless orchestration of networking, storage, polling, and event dispatch.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Data Persistence&lt;/strong&gt;: Local SQLite database storing cached status entities, thread graph relationships, read markers, and subscriptions.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Thread Reassembly&lt;/strong&gt;: Fetches missing conversational branches directly from origin author instances when home servers lack federated context.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Frontends (&lt;code&gt;fedtail/frontends&lt;/code&gt;)&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;qt&lt;/code&gt;: Native desktop UI built on PySide6.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;tui&lt;/code&gt;: Terminal text-mode interface.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;web&lt;/code&gt;: Embedded lightweight browser interface.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;cli&lt;/code&gt;: Scriptable terminal commands (&lt;code&gt;fedtail tail&lt;/code&gt;, &lt;code&gt;fedtail show&lt;/code&gt;, etc.).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Coming in 0.17.0</title><link>https://fedtail.dmesg.online/en/docs/next/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/en/docs/next/</guid><description>&lt;!-- generated by tools/sync.py from the fedtail repo; do not edit --&gt;&#10;&lt;p&gt;Not released yet: this is the 0.17.0 section of the changelog as of today. The latest release is 0.16.0. Things may still change before it&amp;rsquo;s out.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;fedtail --layout single|columns|qip&lt;/code&gt; and &lt;code&gt;--theme NAME&lt;/code&gt;: the layout or the theme for&#10;one run, the config untouched.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Five themes in the spirit of messengers, for &lt;code&gt;ui.layout = &amp;quot;qip&amp;quot;&lt;/code&gt; above all: &lt;code&gt;qip-retro&lt;/code&gt;&#10;(QIP Infium&amp;rsquo;s pale blue), &lt;code&gt;qip-modern&lt;/code&gt; (QIP 2012, flat), &lt;code&gt;mra&lt;/code&gt; and &lt;code&gt;mra-blue&lt;/code&gt; (the&#10;Mail.ru Agent&amp;rsquo;s orange and blue), &lt;code&gt;psi&lt;/code&gt;. They write a post as a message: &amp;ldquo;Name (15:25:43&#10;23/06/2007)&amp;rdquo; over it, mine and the others&amp;rsquo; in colours of their own — &lt;code&gt;shape.card_header = &amp;quot;chat&amp;quot;&lt;/code&gt;, &lt;code&gt;colors.chat_me&lt;/code&gt; / &lt;code&gt;chat_them&lt;/code&gt;, &lt;code&gt;words.chat&lt;/code&gt; / &lt;code&gt;chat_date&lt;/code&gt; for any theme.&#10;Their icons and colours are fedtail&amp;rsquo;s own, not anyone&amp;rsquo;s skin.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Help gets a &amp;ldquo;Server and federation&amp;rdquo; part under its contents: About the server, What it&#10;can do (the probe) and Federation status open on its right side, as pages of the same&#10;panel — the settings-like window of Psi or QIP, only for what to read, not to set&#10;(settings stay a file).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;ui.layout = &amp;quot;qip&amp;quot;&lt;/code&gt;, the first step of a messenger-style layout (docs/LAYOUTS.md): the&#10;lanes in a narrow roster window of their own, as in QIP, Psi or the Mail.ru Agent — who&#10;I am and what&amp;rsquo;s new in Activity on top, a search line, the lanes in folding groups&#10;&amp;ldquo;▾ Personal (2/9)&amp;rdquo; (with something new / all), each with its count, a line of its&#10;newest post and its author&amp;rsquo;s face. A click opens the lane in the main window, which&#10;here is the messages window, without the sidebar. Closing the roster closes fedtail&#10;(to the tray with &lt;code&gt;ui.close_to_tray&lt;/code&gt;); &lt;code&gt;ui.roster_on_top&lt;/code&gt;. Followed threads and private&#10;talks stand there as contacts of their own (&amp;ldquo;Threads&amp;rdquo;, &amp;ldquo;Talks&amp;rdquo;, the freshest&#10;&lt;code&gt;ui.roster_threads&lt;/code&gt;): who began it and how, or who is in it.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;fedtail took GoToSocial 0.22 for Mastodon: its version says only &amp;ldquo;0.22.1+git-…&amp;rdquo;.&#10;Now it reads the instance document&amp;rsquo;s &lt;code&gt;source_url&lt;/code&gt; and GoToSocial&amp;rsquo;s own keys, and asks&#10;the server&amp;rsquo;s nodeinfo when still unsure — so × in Activity hides here instead of&#10;asking the server, and the probe says right what GoToSocial can&amp;rsquo;t. Translating is&#10;read from the newer instance document (Mastodon said &amp;ldquo;no&amp;rdquo; before when it could).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Server info → What it can do: &amp;ldquo;Copy&amp;rdquo; (a Markdown table, for a bug report or a chat),&#10;&amp;ldquo;Save…&amp;rdquo; to a file, Ctrl+C copies the selected rows.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;≡ → Server info has a &amp;ldquo;What it can do&amp;rdquo; tab: &amp;ldquo;Check&amp;rdquo; asks the server about two dozen&#10;features with harmless one-item GETs (a few seconds, in the background) and lists yes /&#10;no / closed to me / unclear, with the limits; the last check is kept. The answers also&#10;decide which buttons fedtail offers.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Help: in the comparison tables the header row stays on top while the rows scroll under&#10;it, so a ✓ always says whose it is.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Every built-in theme comes with its fonts (all SIL OFL 1.1, all with Cyrillic, nothing&#10;to install): PT Serif in &lt;code&gt;paper&lt;/code&gt;, IBM Plex Mono in &lt;code&gt;terminal&lt;/code&gt;, IBM Plex Sans in &lt;code&gt;nord&lt;/code&gt;,&#10;Source Sans 3 and Source Code Pro in &lt;code&gt;night&lt;/code&gt; and &lt;code&gt;solarized&lt;/code&gt;, Open Sans in &lt;code&gt;point&lt;/code&gt;,&#10;Arimo in &lt;code&gt;juick&lt;/code&gt;, Comfortaa and Nunito in &lt;code&gt;pink&lt;/code&gt;, PT Sans in &lt;code&gt;contrast&lt;/code&gt;, Fira Mono in&#10;&lt;code&gt;bnw&lt;/code&gt; where DejaVu is missing. &lt;code&gt;ui.fonts&lt;/code&gt; chooses whose: the theme&amp;rsquo;s (default), the&#10;system&amp;rsquo;s, or your own (&lt;code&gt;ui.font&lt;/code&gt;, &lt;code&gt;ui.mono_font&lt;/code&gt; — any of these by name too).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;× on a row of Activity on GoToSocial: the server can&amp;rsquo;t dismiss one notification (only&#10;clear them all), and fedtail used to ask it anyway — a 404 in the log, the row stayed,&#10;and &amp;ldquo;Clear&amp;rdquo; went missing until a restart. Now × hides the row here (and stays hidden&#10;after the next fetch); on Mastodon it goes from the server too. It never mutes&#10;anything: new ones of the kind come as before. The tooltip says which it is.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Fonts of your own: &lt;code&gt;ui.fonts = &amp;quot;custom&amp;quot;&lt;/code&gt; with &lt;code&gt;ui.font&lt;/code&gt; (a list works: the first one&#10;there), &lt;code&gt;ui.mono_font&lt;/code&gt; for #ids. Fonts needn&amp;rsquo;t be installed: .ttf / .otf in&#10;&lt;code&gt;~/.config/fedtail/fonts/&lt;/code&gt; are picked up at start, and a theme can bring its own&#10;(&lt;code&gt;[font] files&lt;/code&gt;, next to its .toml).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Muting a thread works on GoToSocial: the server can&amp;rsquo;t, so fedtail mutes it itself — the&#10;thread&amp;rsquo;s mentions are dropped as they come (replies there tag everyone in the thread by&#10;themselves), even replies under posts fedtail never saw, and what came before leaves&#10;the lanes. It used to say &amp;ldquo;Your server can&amp;rsquo;t do that&amp;rdquo; and hide the item; now the item&#10;is always in the ⋯ menu, and on Mastodon it asks the server as well.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Reply with quotes: ⋯ → &amp;ldquo;Reply with quote&amp;rdquo; puts the post (or what&amp;rsquo;s selected in it) into&#10;the reply as a &lt;code&gt;&amp;gt; &lt;/code&gt; quote; a right click on selected text → &amp;ldquo;Quote in reply&amp;rdquo;. With the&#10;reply already open the quote goes where the cursor is, so a long post can be answered&#10;sentence by sentence without copying. &lt;code&gt;post.quote_prefix&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Web: the ≡ menu (write, my profile, refresh, all read, help, keys, about) and a post&amp;rsquo;s&#10;⋯ menu (reply with quote, subscribe / leave / mute the thread, copy the link, delete my&#10;post); &lt;code&gt;q&lt;/code&gt; replies with a quote. A reply shows the whole post it answers: select a piece,&#10;&amp;ldquo;❝ Quote in reply&amp;rdquo; puts it at the cursor. The picture viewer goes through the post&amp;rsquo;s&#10;pictures with ← / → and the side buttons.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Terminal interface: &lt;code&gt;p&lt;/code&gt; shows the profile for real — the screen used to scroll its header&#10;away as the first post was highlighted, and what stayed looked like a lane. Lanes by&#10;keyboard: &lt;code&gt;[&lt;/code&gt; / &lt;code&gt;]&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt;…&lt;code&gt;9&lt;/code&gt;, &lt;code&gt;h&lt;/code&gt; into the lane list (&lt;code&gt;j&lt;/code&gt; / &lt;code&gt;k&lt;/code&gt; move there), &lt;code&gt;l&lt;/code&gt; back;&#10;Tab now really goes between lanes and posts. &amp;ldquo;Activity&amp;rdquo; and &amp;ldquo;Follow requests&amp;rdquo; show&#10;their rows (they were empty: they aren&amp;rsquo;t post lanes); &lt;code&gt;a&lt;/code&gt; / &lt;code&gt;d&lt;/code&gt; answer a request.&#10;Pictures drawn with half blocks: a post&amp;rsquo;s first one small in the lane&#10;(&lt;code&gt;tui.pictures&lt;/code&gt;, &lt;code&gt;tui.picture_rows&lt;/code&gt;), &lt;code&gt;v&lt;/code&gt; — all of them full screen, ← / →, &lt;code&gt;o&lt;/code&gt; — the&#10;original in the browser. Needs Pillow (&lt;code&gt;python3-pil&lt;/code&gt;).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Unsubscribing from a thread mutes its mentions too (&lt;code&gt;subs.leave_mutes&lt;/code&gt;, on): leaving&#10;used to stop &amp;ldquo;Subscriptions&amp;rdquo; only, while auto-tagged replies kept coming.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The opossum holding its own tail is back: the app&amp;rsquo;s icon (&lt;code&gt;ui.app_icon&lt;/code&gt;) and the picture&#10;in About. It is a sticker from an official Telegram sticker pack.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The config&amp;rsquo;s reference comes in English too: &lt;code&gt;config.example.en.toml&lt;/code&gt; lies next to&#10;&lt;code&gt;config.example.ru.toml&lt;/code&gt; (the old &lt;code&gt;config.example.toml&lt;/code&gt; goes). A new config is written in&#10;the desktop&amp;rsquo;s language; &lt;code&gt;--update-config&lt;/code&gt; and &lt;code&gt;--rebuild-config&lt;/code&gt; keep the language your&#10;file is in.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Help inside: ≡ → &amp;ldquo;Help&amp;rdquo; opens it as a panel over the lanes, like the compose panel —&#10;the contents on the left, search through it all, Back and Forward. Short pages, each&#10;ending in &amp;ldquo;In detail →&amp;rdquo; links into the full feature list and the settings reference,&#10;which come with it and work offline. In Russian and in English.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;≡ → &amp;ldquo;What&amp;rsquo;s this?&amp;rdquo;: point the mouse at a button and get the longer story — what it&#10;does, which config key changes it, where the help says more. For the session from the&#10;menu, or from the start with &lt;code&gt;ui.whats_this&lt;/code&gt;. Neither has a key: F1 is next to Esc.&#10;The hint is a window of its own, beside the cursor and never under it: a long Qt&#10;tooltip there was hidden and shown again round and round until the window froze.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The docs come in Russian and English, &lt;code&gt;docs/ru/&lt;/code&gt; and &lt;code&gt;docs/en/&lt;/code&gt;: the feature list now says&#10;since which version each feature is there, and fedtail next to thirteen other clients is&#10;one matrix a chapter (&lt;code&gt;comparison.md&lt;/code&gt;). All of it, the config reference and the shared&#10;pieces of the READMEs are built by &lt;code&gt;tools/docs_build.py&lt;/code&gt;; a test keeps them in step.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The database no longer grows for ever. Every &lt;code&gt;storage.gc_hours&lt;/code&gt; (6) fedtail forgets posts&#10;nothing points at any more — no lane, followed thread, activity entry or reply draft;&#10;boosted and quoted posts and parents of kept ones up the thread stay, and so do your own&#10;posts and anything stored in the last &lt;code&gt;storage.grace_hours&lt;/code&gt; (48). A forgotten post is&#10;fetched again when needed; short ids are kept for good. The file really shrinks&#10;(incremental vacuum; an older file is converted once, at the first start — it may take&#10;a moment). If it is still over &lt;code&gt;storage.max_mb&lt;/code&gt; (1 GB), lanes get shorter until it fits&#10;and grow back later. New &lt;code&gt;[storage]&lt;/code&gt; options; &lt;code&gt;storage gc:&lt;/code&gt; lines in the log.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Pictures that didn&amp;rsquo;t come no longer stay blank until a restart. When the server answered&#10;with an error twice (busy, restarting, still fetching a remote post&amp;rsquo;s media), fedtail&#10;asks again by itself in 1, 5 and 30 minutes for the cards still waiting, and a card&#10;that gave up gets the picture when it comes. The log now says the HTTP status&#10;(&amp;ldquo;HTTP 503&amp;rdquo;) instead of just &amp;ldquo;HTTPError&amp;rdquo;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The web interface, rebuilt: a &amp;ldquo;Write&amp;rdquo; button (and ✎ on a phone) opens a composer with a&#10;content warning, who sees it, the language and a character count; drafts are kept in&#10;the browser. Replies start with the right @names and never go wider than what they&#10;answer. Pictures in a grid with a viewer, video, gifs and audio; a picture that doesn&amp;rsquo;t&#10;come says so, links to the original and is tried again later. Polls with bars and&#10;voting, link cards, quotes, custom emoji, a profile&amp;rsquo;s header, fields with ✓ verified,&#10;follow / requested. &amp;ldquo;More&amp;rdquo; at the end of a lane loads older posts. The command line has&#10;a line of its own. Lanes slide in on a phone; light and dark follow the system.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Inside: the terminal, the TUI and the web interface work on fedtail&amp;rsquo;s own data model&#10;(&lt;code&gt;fedtail/model&lt;/code&gt;, &lt;code&gt;fedtail/core/view.py&lt;/code&gt;) instead of the server&amp;rsquo;s JSON — stage 2 of&#10;docs/PROTOCOLS.md; so does the Qt window, all of it. The Mastodon API itself lives in&#10;&lt;code&gt;fedtail/protocols/mastodon/&lt;/code&gt; behind a protocol interface (stage 3), and what the server&#10;can do is kept in one place (stage 4): a button the server refuses goes at once, and&#10;stays gone after a reconnect. Nothing changes in what they&#10;show, except that the web page and &lt;code&gt;fedtail post -v&lt;/code&gt; say &amp;ldquo;followers&amp;rdquo; (&lt;code&gt;private&lt;/code&gt; still&#10;works).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item></channel></rss>