<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Документация fedtail on fedtail</title><link>https://fedtail.dmesg.online/ru/docs/</link><description>Recent content in Документация fedtail on fedtail</description><generator>Hugo</generator><language>ru-RU</language><atom:link href="https://fedtail.dmesg.online/ru/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Быстрый старт</title><link>https://fedtail.dmesg.online/ru/docs/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/docs/getting-started/</guid><description>&lt;img src="https://fedtail.dmesg.online/images/fedtail.png" alt="fedtail: опоссум, обнявший свой хвост" 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;В каждом &lt;a href="https://github.com/eugene-vereshchagin/fedtail/releases" rel="noopener"&gt;релизе fedtail&lt;/a&gt; приложение собрано одним исполняемым файлом (внутри уже упакованы Python и библиотеки Qt) — ничего дополнительно ставить не нужно.&lt;/p&gt;&#10;&lt;h2 id="способ-1-одним-файлом-без-установки-рекомендуется"&gt;Способ 1. Одним файлом без установки (рекомендуется)&lt;/h2&gt;&#10;&lt;h3 id="linux-x86_64"&gt;Linux (x86_64)&lt;/h3&gt;&#10;&lt;p&gt;Debian 12 и новее, Ubuntu 22.04 и новее и тому подобное. Команды — для последнего релиза, 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;# Скачать и сделать исполняемым:&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;# добавить в меню с иконкой (и выйти), потом запускать&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;Примечание&lt;/p&gt;&#10; &lt;p&gt;При первом запуске файл распаковывает себя во временный каталог, поэтому главное окно появляется через пару секунд.&lt;/p&gt;&#10; &lt;/aside&gt;</description></item><item><title>Возможности fedtail</title><link>https://fedtail.dmesg.online/ru/docs/features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/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;Примечание&lt;/p&gt;&#10; &lt;p&gt;В релизе 0.16.0 документации в этом виде ещё нет, поэтому здесь — состояние версии в разработке (0.17.0.dev0). Что появится только в ней, видно по столбцу «С версии».&lt;/p&gt;&#10; &lt;/aside&gt;&lt;p&gt;Состояние на версию &lt;strong&gt;0.17.0 (в работе)&lt;/strong&gt;. Это полный перечень возможностей fedtail: что делает&#10;каждая, чем включается и выключается, с какой версии есть, на каком API или протоколе стоит и&#10;как то же самое сделано у других клиентов. Здесь же — планы и то, от чего отказались, с&#10;причинами.&lt;/p&gt;</description></item><item><title>Справочник настроек</title><link>https://fedtail.dmesg.online/ru/docs/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/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;Примечание&lt;/p&gt;&#10; &lt;p&gt;В релизе 0.16.0 документации в этом виде ещё нет, поэтому здесь — состояние версии в разработке (0.17.0.dev0). Что появится только в ней, видно по столбцу «С версии».&lt;/p&gt;&#10; &lt;/aside&gt;&lt;p&gt;Справочник по всем ключам конфига, таблицами по главам.&lt;/p&gt;&#10;&lt;p&gt;Что за возможность стоит за ключом и как это у других клиентов —&#10;&lt;a href="https://fedtail.dmesg.online/ru/docs/features"&gt;список возможностей&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="как-устроен-конфиг"&gt;Как устроен конфиг&lt;/h2&gt;&#10;&lt;p&gt;Здесь все настройки — со значениями по умолчанию и пояснениями. Поменяй, что нужно, и перезапусти fedtail. Программа этот файл только читает и никогда не перезаписывает.&lt;/p&gt;</description></item><item><title>fedtail и другие клиенты</title><link>https://fedtail.dmesg.online/ru/docs/comparison/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/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;Примечание&lt;/p&gt;&#10; &lt;p&gt;В релизе 0.16.0 документации в этом виде ещё нет, поэтому здесь — состояние версии в разработке (0.17.0.dev0). Что появится только в ней, видно по столбцу «С версии».&lt;/p&gt;&#10; &lt;/aside&gt;&lt;p&gt;Те же возможности, что в &lt;a href="https://fedtail.dmesg.online/ru/docs/features"&gt;полном списке&lt;/a&gt;, — одной матрицей на главу: есть ли такое у других клиентов. ✓ — есть, пусто — нет или неизвестно. Сведения — из README и заметок к релизам (осень 2026 года) и общих знаний, без проверки каждого вживую; подробности и оговорки — в столбце «У других» полного списка.&lt;/p&gt;</description></item><item><title>Альфа-тестирование и багрепорты</title><link>https://fedtail.dmesg.online/ru/docs/testing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/docs/testing/</guid><description>&lt;p&gt;Спасибо, что пробуете fedtail! Программа находится в стадии активной разработки, поэтому нам очень важна обратная связь от пользователей.&lt;/p&gt;&#10;&lt;h2 id="что-посмотреть-в-первую-очередь"&gt;Что посмотреть в первую очередь&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Треды деревом.&lt;/strong&gt; Откройте любое обсуждение (кнопка «Тред» или клик по времени поста): оно отображается древовидной структурой, с номерами комментариев &lt;code&gt;/1 /2 …&lt;/code&gt;, целиком — ответы, которые ваш сервер не получал, подтягиваются напрямую с сервера автора по ActivityPub через пару секунд.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ничего не теряется.&lt;/strong&gt; Закройте ленты клавишей &lt;code&gt;Esc&lt;/code&gt;, оставьте программу на ночь: утром слева появятся счётчики новых постов, новое ждёт непрочитанным, а лента откроется ровно там, где вы остановились.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ответы мне и подписки на треды&lt;/strong&gt; (кнопка «Подписаться» над тредом или команда &lt;code&gt;S #abc&lt;/code&gt; в командной строке): ответы в отслеживаемых тредах приходят, даже если вас прямо не упомянули.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Уведомления&lt;/strong&gt;: проверьте через меню ≡ → «Отладка» → «Проверить уведомление».&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Командная строка&lt;/strong&gt; внизу окна (&lt;code&gt;Ctrl+L&lt;/code&gt;, введите &lt;code&gt;?&lt;/code&gt; для справки) — привычный интерфейс для пользователей Point.im.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Несколько аккаунтов&lt;/strong&gt;: правый клик по своей аватарке позволяет переключать профили.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Темы оформления&lt;/strong&gt;: ключ &lt;code&gt;ui.theme&lt;/code&gt; в конфиге (меню ≡ → «Открыть конфиг»).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Суточный прогон без перезапуска.&lt;/strong&gt; Оставьте окно открытым на длительное время. В логе пишутся строки &lt;code&gt;trend&lt;/code&gt; и &lt;code&gt;possible leak&lt;/code&gt;, помогающие отслеживать утечки памяти.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="как-сообщить-о-проблеме"&gt;Как сообщить о проблеме&lt;/h2&gt;&#10;&lt;p&gt;Если что-то пошло не так:&lt;/p&gt;</description></item><item><title>История изменений</title><link>https://fedtail.dmesg.online/ru/docs/changelog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/docs/changelog/</guid><description>&lt;!-- generated by tools/sync.py from the fedtail repo; do not edit --&gt;&#10;&lt;p&gt;Все релизы, свежие сверху. Журнал ведётся по-английски — так он лежит в репозитории. Файлы каждого релиза — на &lt;a href="https://github.com/eugene-vereshchagin/fedtail/releases" rel="noopener"&gt;странице релизов&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>Архитектура и дизайн</title><link>https://fedtail.dmesg.online/ru/docs/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/docs/architecture/</guid><description>&lt;p&gt;fedtail спроектирован для тех, кто помнит Juick и Point.im и устал от хаотичной ленты с обрывками чужих разговоров в современных микроблогах.&lt;/p&gt;&#10;&lt;h2 id="ключевые-архитектурные-принципы"&gt;Ключевые архитектурные принципы&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Ничего не дёргается.&lt;/strong&gt; Открыл ленту — стоишь на первом непрочитанном. Пришло новое — позиция не меняется, просто растёт счётчик. Читаешь строго по хронологии, как RSS.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Каждый ответ знает, на что он отвечает.&lt;/strong&gt; Над ответом — полоска с началом исходного поста, клик открывает весь тред деревом.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ленты строго разделены.&lt;/strong&gt; Люди отдельно, боты отдельно, ответы мне отдельно от прочих упоминаний.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Приватно по умолчанию.&lt;/strong&gt; Новый пост — только подписчикам. Ответ никогда не может быть публичнее исходного.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Любое поведение — ключ в конфиге.&lt;/strong&gt; Окна настроек нет и не будет. По умолчанию поведение настроено продуманно; привычный режим «как у всех» включается простым флагом.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;К чужим серверам — без вашего токена.&lt;/strong&gt; Всё, что fedtail подтягивает с сервера автора напрямую по ActivityPub, запрашивается анонимно: удаленный сервер видит только IP-адрес.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ядро не зависит от GUI.&lt;/strong&gt; Интерфейсы — подключаемые плагины: классическое окно на Qt, терминальный TUI, браузерный веб-интерфейс.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Один профиль — один аккаунт.&lt;/strong&gt; Второй аккаунт — второй профиль (&lt;code&gt;--profile&lt;/code&gt;); при необходимости несколько профилей объединяются в одном окне (&lt;code&gt;ui.merge&lt;/code&gt;).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Взрослые разбираются сами (режим arts).&lt;/strong&gt; Режим в честь @arts, создателя Point.im: контент отображается без навязчивой внешней опеки.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="устройство-ядра-и-компонентов"&gt;Устройство ядра и компонентов&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Ядро (&lt;code&gt;fedtail/core&lt;/code&gt;)&lt;/strong&gt;: полностью изолировано от графического интерфейса. Общается с фронтендами асинхронно через события (events) и futures.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Хранилище данных&lt;/strong&gt;: локальная реляционная база данных SQLite (&lt;code&gt;~/.local/share/fedtail/&amp;lt;профиль&amp;gt;/&lt;/code&gt;). В ней хранятся закэшированные посты, связи тредов, состояние прочитанности и подписки на треды.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Цикл опроса (Polling)&lt;/strong&gt;: периодический сбор обновлений с инстанса по Mastodon API с защитой от дубликатов и сохранением курсоров.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Сборка тредов (Thread Reassembly)&lt;/strong&gt;: если в треде отсутствуют промежуточные комментарии (потому что ваш домашний сервер их не зафедерировал), fedtail анонимно запрашивает недостающие ActivityPub-объекты непосредственно у сервера автора.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Фронтенды (&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; — основной десктопный интерфейс на PySide6 (Qt).&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;tui&lt;/code&gt; — легковесный текстовый консольный интерфейс.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;web&lt;/code&gt; — локальный HTTP-сервер со встроенным веб-интерфейсом.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;cli&lt;/code&gt; — утилиты командной строки (&lt;code&gt;fedtail lanes&lt;/code&gt;, &lt;code&gt;fedtail show&lt;/code&gt;, &lt;code&gt;fedtail tail&lt;/code&gt;, &lt;code&gt;fedtail post&lt;/code&gt;).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Что будет в 0.17.0</title><link>https://fedtail.dmesg.online/ru/docs/next/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/docs/next/</guid><description>&lt;!-- generated by tools/sync.py from the fedtail repo; do not edit --&gt;&#10;&lt;p&gt;Это ещё не вышло: так выглядит раздел 0.17.0 в журнале изменений на сегодня. Последний релиз — 0.16.0. Журнал по-английски, как в репозитории; до выхода что-то может поменяться.&lt;/p&gt;&#10;&lt;ul&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;The &lt;code&gt;paper&lt;/code&gt; theme comes with its fonts: PT Serif and PT Mono (ParaType, SIL OFL 1.1) are&#10;in fedtail, nothing to install.&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;The font over the theme&amp;rsquo;s and the system&amp;rsquo;s: &lt;code&gt;ui.font&lt;/code&gt; (a list works: the first one&#10;installed), &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>