<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Internals on fedtail</title><link>https://fedtail.dmesg.online/ru/tags/internals/</link><description>Recent content in Internals on fedtail</description><generator>Hugo</generator><language>ru-RU</language><atom:link href="https://fedtail.dmesg.online/ru/tags/internals/index.xml" rel="self" type="application/rss+xml"/><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></channel></rss>